@sebgroup/green-angular 10.0.3 → 10.0.4

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 (469) hide show
  1. package/fesm2022/sebgroup-green-angular-src-lib-accordion.mjs +10 -10
  2. package/fesm2022/sebgroup-green-angular-src-lib-accordion.mjs.map +1 -1
  3. package/fesm2022/sebgroup-green-angular-src-lib-badge.mjs +7 -7
  4. package/fesm2022/sebgroup-green-angular-src-lib-badge.mjs.map +1 -1
  5. package/fesm2022/sebgroup-green-angular-src-lib-button.mjs +7 -7
  6. package/fesm2022/sebgroup-green-angular-src-lib-button.mjs.map +1 -1
  7. package/fesm2022/sebgroup-green-angular-src-lib-cell-table.mjs +23 -23
  8. package/fesm2022/sebgroup-green-angular-src-lib-cell-table.mjs.map +1 -1
  9. package/fesm2022/sebgroup-green-angular-src-lib-context-menu.mjs +11 -11
  10. package/fesm2022/sebgroup-green-angular-src-lib-context-menu.mjs.map +1 -1
  11. package/fesm2022/sebgroup-green-angular-src-lib-datepicker.mjs +11 -11
  12. package/fesm2022/sebgroup-green-angular-src-lib-datepicker.mjs.map +1 -1
  13. package/fesm2022/sebgroup-green-angular-src-lib-dropdown.mjs +24 -27
  14. package/fesm2022/sebgroup-green-angular-src-lib-dropdown.mjs.map +1 -1
  15. package/fesm2022/sebgroup-green-angular-src-lib-in-page-wizard.mjs +7 -7
  16. package/fesm2022/sebgroup-green-angular-src-lib-in-page-wizard.mjs.map +1 -1
  17. package/fesm2022/sebgroup-green-angular-src-lib-modal.mjs +45 -46
  18. package/fesm2022/sebgroup-green-angular-src-lib-modal.mjs.map +1 -1
  19. package/fesm2022/sebgroup-green-angular-src-lib-pagination.mjs +7 -7
  20. package/fesm2022/sebgroup-green-angular-src-lib-pagination.mjs.map +1 -1
  21. package/fesm2022/sebgroup-green-angular-src-lib-progress-circle.mjs +7 -7
  22. package/fesm2022/sebgroup-green-angular-src-lib-progress-circle.mjs.map +1 -1
  23. package/fesm2022/sebgroup-green-angular-src-lib-segmented-control.mjs +7 -7
  24. package/fesm2022/sebgroup-green-angular-src-lib-segmented-control.mjs.map +1 -1
  25. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs +41 -41
  26. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs.map +1 -1
  27. package/fesm2022/sebgroup-green-angular-src-lib-slider.mjs +7 -7
  28. package/fesm2022/sebgroup-green-angular-src-lib-slider.mjs.map +1 -1
  29. package/fesm2022/sebgroup-green-angular-src-lib-sortable-list.mjs +7 -7
  30. package/fesm2022/sebgroup-green-angular-src-lib-sortable-list.mjs.map +1 -1
  31. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs +7 -7
  32. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs.map +1 -1
  33. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs +8 -8
  34. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs.map +1 -1
  35. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +8 -8
  36. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  37. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +8 -8
  38. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
  39. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +8 -8
  40. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  41. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +8 -8
  42. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
  43. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +7 -7
  44. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  45. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +8 -8
  46. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
  47. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +3 -3
  48. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  49. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +37 -37
  50. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -1
  51. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs +13 -13
  52. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs.map +1 -1
  53. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +29 -29
  54. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  55. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +7 -7
  56. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -1
  57. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +14 -14
  58. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -1
  59. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +7 -7
  60. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  61. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +10 -10
  62. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  63. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +8 -8
  64. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  65. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +19 -19
  66. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  67. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs +7 -7
  68. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs.map +1 -1
  69. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +14 -14
  70. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
  71. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +7 -7
  72. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -1
  73. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +23 -23
  74. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -1
  75. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs +11 -11
  76. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs.map +1 -1
  77. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +8 -8
  78. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  79. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs +10 -10
  80. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs.map +1 -1
  81. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +7 -7
  82. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  83. package/fesm2022/sebgroup-green-angular-v-angular.mjs +300 -300
  84. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
  85. package/fesm2022/sebgroup-green-angular.mjs +222 -226
  86. package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
  87. package/index.d.ts +1021 -17
  88. package/package.json +10 -10
  89. package/src/lib/accordion/index.d.ts +51 -3
  90. package/src/lib/badge/index.d.ts +46 -2
  91. package/src/lib/button/index.d.ts +20 -2
  92. package/src/lib/cell-table/index.d.ts +105 -3
  93. package/src/lib/context-menu/index.d.ts +63 -2
  94. package/src/lib/datepicker/index.d.ts +80 -2
  95. package/src/lib/dropdown/index.d.ts +114 -4
  96. package/src/lib/in-page-wizard/index.d.ts +30 -2
  97. package/src/lib/modal/index.d.ts +96 -4
  98. package/src/lib/pagination/index.d.ts +66 -2
  99. package/src/lib/progress-circle/index.d.ts +24 -2
  100. package/src/lib/segmented-control/index.d.ts +29 -2
  101. package/src/lib/shared/index.d.ts +223 -7
  102. package/src/lib/slider/index.d.ts +48 -2
  103. package/src/lib/sortable-list/index.d.ts +105 -2
  104. package/src/v-angular/account-number/index.d.ts +43 -2
  105. package/src/v-angular/alert/index.d.ts +44 -3
  106. package/src/v-angular/base-control-value-accessor/index.d.ts +143 -2
  107. package/src/v-angular/breadcrumbs/index.d.ts +29 -2
  108. package/src/v-angular/button/index.d.ts +75 -2
  109. package/src/v-angular/card/index.d.ts +15 -2
  110. package/src/v-angular/character-countdown/index.d.ts +27 -2
  111. package/src/v-angular/checkbox/index.d.ts +47 -2
  112. package/src/v-angular/core/index.d.ts +40 -2
  113. package/src/v-angular/datepicker/index.d.ts +577 -13
  114. package/src/v-angular/drag-drop/index.d.ts +233 -4
  115. package/src/v-angular/dropdown/index.d.ts +474 -5
  116. package/src/v-angular/external-link/index.d.ts +27 -2
  117. package/src/v-angular/i18n/index.d.ts +44 -2
  118. package/src/v-angular/info-circle/index.d.ts +27 -2
  119. package/src/v-angular/input/index.d.ts +127 -2
  120. package/src/v-angular/input-mask/index.d.ts +81 -5
  121. package/src/v-angular/modal/index.d.ts +243 -5
  122. package/src/v-angular/pagination/index.d.ts +75 -2
  123. package/src/v-angular/radio/index.d.ts +111 -3
  124. package/src/v-angular/slug/index.d.ts +22 -2
  125. package/src/v-angular/table/index.d.ts +379 -5
  126. package/src/v-angular/tabs/index.d.ts +138 -4
  127. package/src/v-angular/textarea/index.d.ts +69 -2
  128. package/src/v-angular/toast/index.d.ts +65 -4
  129. package/src/v-angular/tooltip/index.d.ts +118 -2
  130. package/v-angular/index.d.ts +3088 -28
  131. package/lib/accordion/accordion-list-item.component.d.ts +0 -16
  132. package/lib/accordion/accordion.component.d.ts +0 -21
  133. package/lib/accordion/accordion.module.d.ts +0 -14
  134. package/lib/accordion/index.d.ts +0 -3
  135. package/lib/badge/badge.component.d.ts +0 -30
  136. package/lib/badge/badge.module.d.ts +0 -13
  137. package/lib/badge/index.d.ts +0 -2
  138. package/lib/button/button.component.d.ts +0 -11
  139. package/lib/button/button.module.d.ts +0 -8
  140. package/lib/button/index.d.ts +0 -2
  141. package/lib/cell-table/cell-table-item.component.d.ts +0 -14
  142. package/lib/cell-table/cell-table.component.d.ts +0 -44
  143. package/lib/cell-table/cell-table.module.d.ts +0 -10
  144. package/lib/cell-table/cell-table.types.d.ts +0 -34
  145. package/lib/cell-table/cell-underline.directive.d.ts +0 -14
  146. package/lib/cell-table/index.d.ts +0 -3
  147. package/lib/context-menu/context-menu.component.d.ts +0 -48
  148. package/lib/context-menu/context-menu.module.d.ts +0 -14
  149. package/lib/context-menu/index.d.ts +0 -2
  150. package/lib/datepicker/datepicker.component.d.ts +0 -63
  151. package/lib/datepicker/datepicker.module.d.ts +0 -14
  152. package/lib/datepicker/index.d.ts +0 -2
  153. package/lib/dropdown/dropdown-button.directive.d.ts +0 -8
  154. package/lib/dropdown/dropdown-option.directive.d.ts +0 -8
  155. package/lib/dropdown/dropdown.component.d.ts +0 -87
  156. package/lib/dropdown/dropdown.module.d.ts +0 -16
  157. package/lib/dropdown/index.d.ts +0 -4
  158. package/lib/green-angular.module.d.ts +0 -21
  159. package/lib/in-page-wizard/in-page-wizard-step-card.component.d.ts +0 -19
  160. package/lib/in-page-wizard/in-page-wizard.module.d.ts +0 -9
  161. package/lib/in-page-wizard/index.d.ts +0 -2
  162. package/lib/modal/index.d.ts +0 -4
  163. package/lib/modal/modal-footer.directive.d.ts +0 -8
  164. package/lib/modal/modal-header.directive.d.ts +0 -8
  165. package/lib/modal/modal.component.d.ts +0 -74
  166. package/lib/modal/modal.module.d.ts +0 -14
  167. package/lib/pagination/index.d.ts +0 -2
  168. package/lib/pagination/pagination.component.d.ts +0 -56
  169. package/lib/pagination/pagination.module.d.ts +0 -8
  170. package/lib/progress-circle/index.d.ts +0 -2
  171. package/lib/progress-circle/progress-circle.component.d.ts +0 -15
  172. package/lib/progress-circle/progress-circle.module.d.ts +0 -8
  173. package/lib/segmented-control/index.d.ts +0 -2
  174. package/lib/segmented-control/segmented-control.component.d.ts +0 -14
  175. package/lib/segmented-control/segmented-control.module.d.ts +0 -12
  176. package/lib/shared/core-control/core-checkbox.directive.d.ts +0 -10
  177. package/lib/shared/core-control/core-control.directive.d.ts +0 -19
  178. package/lib/shared/core-control/core-control.module.d.ts +0 -10
  179. package/lib/shared/core-control/index.d.ts +0 -3
  180. package/lib/shared/core-element/core-element.directive.d.ts +0 -17
  181. package/lib/shared/core-element/core-element.module.d.ts +0 -11
  182. package/lib/shared/core-element/index.d.ts +0 -2
  183. package/lib/shared/core-renderer/core-renderer.d.ts +0 -111
  184. package/lib/shared/core-renderer/index.d.ts +0 -1
  185. package/lib/shared/core-router-link/core-router-link.directive.d.ts +0 -19
  186. package/lib/shared/core-router-link/core-router-link.module.d.ts +0 -10
  187. package/lib/shared/core-router-link/index.d.ts +0 -2
  188. package/lib/shared/id.d.ts +0 -1
  189. package/lib/shared/index.d.ts +0 -7
  190. package/lib/shared/on-scroll.directive.d.ts +0 -14
  191. package/lib/shared/scope-resolver.d.ts +0 -5
  192. package/lib/shared/shared.module.d.ts +0 -9
  193. package/lib/slider/index.d.ts +0 -2
  194. package/lib/slider/slider.component.d.ts +0 -38
  195. package/lib/slider/slider.module.d.ts +0 -9
  196. package/lib/sortable-list/index.d.ts +0 -2
  197. package/lib/sortable-list/sortable-list.component.d.ts +0 -92
  198. package/lib/sortable-list/sortable-list.module.d.ts +0 -11
  199. package/src/lib/accordion/accordion-list-item.component.d.ts +0 -16
  200. package/src/lib/accordion/accordion.component.d.ts +0 -21
  201. package/src/lib/accordion/accordion.module.d.ts +0 -14
  202. package/src/lib/badge/badge.component.d.ts +0 -30
  203. package/src/lib/badge/badge.module.d.ts +0 -13
  204. package/src/lib/button/button.component.d.ts +0 -11
  205. package/src/lib/button/button.module.d.ts +0 -8
  206. package/src/lib/cell-table/cell-table-item.component.d.ts +0 -14
  207. package/src/lib/cell-table/cell-table.component.d.ts +0 -44
  208. package/src/lib/cell-table/cell-table.module.d.ts +0 -10
  209. package/src/lib/cell-table/cell-table.types.d.ts +0 -34
  210. package/src/lib/cell-table/cell-underline.directive.d.ts +0 -14
  211. package/src/lib/context-menu/context-menu.component.d.ts +0 -48
  212. package/src/lib/context-menu/context-menu.module.d.ts +0 -14
  213. package/src/lib/datepicker/datepicker.component.d.ts +0 -63
  214. package/src/lib/datepicker/datepicker.module.d.ts +0 -14
  215. package/src/lib/dropdown/dropdown-button.directive.d.ts +0 -8
  216. package/src/lib/dropdown/dropdown-option.directive.d.ts +0 -8
  217. package/src/lib/dropdown/dropdown.component.d.ts +0 -87
  218. package/src/lib/dropdown/dropdown.module.d.ts +0 -16
  219. package/src/lib/in-page-wizard/in-page-wizard-step-card.component.d.ts +0 -19
  220. package/src/lib/in-page-wizard/in-page-wizard.module.d.ts +0 -9
  221. package/src/lib/modal/modal-footer.directive.d.ts +0 -8
  222. package/src/lib/modal/modal-header.directive.d.ts +0 -8
  223. package/src/lib/modal/modal.component.d.ts +0 -74
  224. package/src/lib/modal/modal.module.d.ts +0 -14
  225. package/src/lib/pagination/pagination.component.d.ts +0 -56
  226. package/src/lib/pagination/pagination.module.d.ts +0 -8
  227. package/src/lib/progress-circle/progress-circle.component.d.ts +0 -15
  228. package/src/lib/progress-circle/progress-circle.module.d.ts +0 -8
  229. package/src/lib/segmented-control/segmented-control.component.d.ts +0 -14
  230. package/src/lib/segmented-control/segmented-control.module.d.ts +0 -12
  231. package/src/lib/shared/core-control/core-checkbox.directive.d.ts +0 -10
  232. package/src/lib/shared/core-control/core-control.directive.d.ts +0 -19
  233. package/src/lib/shared/core-control/core-control.module.d.ts +0 -10
  234. package/src/lib/shared/core-control/index.d.ts +0 -3
  235. package/src/lib/shared/core-element/core-element.directive.d.ts +0 -17
  236. package/src/lib/shared/core-element/core-element.module.d.ts +0 -11
  237. package/src/lib/shared/core-element/index.d.ts +0 -2
  238. package/src/lib/shared/core-renderer/core-renderer.d.ts +0 -111
  239. package/src/lib/shared/core-renderer/index.d.ts +0 -1
  240. package/src/lib/shared/core-router-link/core-router-link.directive.d.ts +0 -19
  241. package/src/lib/shared/core-router-link/core-router-link.module.d.ts +0 -10
  242. package/src/lib/shared/core-router-link/index.d.ts +0 -2
  243. package/src/lib/shared/id.d.ts +0 -1
  244. package/src/lib/shared/on-scroll.directive.d.ts +0 -14
  245. package/src/lib/shared/scope-resolver.d.ts +0 -5
  246. package/src/lib/shared/shared.module.d.ts +0 -9
  247. package/src/lib/slider/slider.component.d.ts +0 -38
  248. package/src/lib/slider/slider.module.d.ts +0 -9
  249. package/src/lib/sortable-list/sortable-list.component.d.ts +0 -92
  250. package/src/lib/sortable-list/sortable-list.module.d.ts +0 -11
  251. package/src/v-angular/account-number/account-number.module.d.ts +0 -8
  252. package/src/v-angular/account-number/account-number.pipe.d.ts +0 -32
  253. package/src/v-angular/alert/alert.component.d.ts +0 -20
  254. package/src/v-angular/alert/alert.models.d.ts +0 -13
  255. package/src/v-angular/alert/alert.module.d.ts +0 -8
  256. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +0 -134
  257. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +0 -7
  258. package/src/v-angular/breadcrumbs/breadcrumbs.component.d.ts +0 -18
  259. package/src/v-angular/breadcrumbs/breadcrumbs.module.d.ts +0 -10
  260. package/src/v-angular/button/button.component.d.ts +0 -62
  261. package/src/v-angular/button/button.module.d.ts +0 -10
  262. package/src/v-angular/card/card.component.d.ts +0 -5
  263. package/src/v-angular/card/card.module.d.ts +0 -8
  264. package/src/v-angular/character-countdown/character-countdown.directive.d.ts +0 -17
  265. package/src/v-angular/character-countdown/character-countdown.module.d.ts +0 -8
  266. package/src/v-angular/checkbox/checkbox.component.d.ts +0 -36
  267. package/src/v-angular/checkbox/checkbox.module.d.ts +0 -10
  268. package/src/v-angular/core/core.globals.d.ts +0 -13
  269. package/src/v-angular/core/core.utils.d.ts +0 -23
  270. package/src/v-angular/datepicker/components/calendar/calendar.component.d.ts +0 -36
  271. package/src/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +0 -30
  272. package/src/v-angular/datepicker/components/date-input/date-input.component.d.ts +0 -113
  273. package/src/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +0 -76
  274. package/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +0 -169
  275. package/src/v-angular/datepicker/datepicker.globals.d.ts +0 -13
  276. package/src/v-angular/datepicker/datepicker.models.d.ts +0 -50
  277. package/src/v-angular/datepicker/datepicker.module.d.ts +0 -19
  278. package/src/v-angular/datepicker/datepicker.utils.d.ts +0 -46
  279. package/src/v-angular/datepicker/directives/calendar-date.directive.d.ts +0 -21
  280. package/src/v-angular/datepicker/models/dates.d.ts +0 -15
  281. package/src/v-angular/datepicker/pipes/date-thook.pipe.d.ts +0 -8
  282. package/src/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +0 -8
  283. package/src/v-angular/datepicker/pipes/matches.pipe.d.ts +0 -7
  284. package/src/v-angular/drag-drop/drag-drop.component.d.ts +0 -131
  285. package/src/v-angular/drag-drop/drag-drop.models.d.ts +0 -49
  286. package/src/v-angular/drag-drop/drag-drop.module.d.ts +0 -13
  287. package/src/v-angular/drag-drop/drag-drop.pipes.d.ts +0 -40
  288. package/src/v-angular/drag-drop/drag-drop.utils.d.ts +0 -33
  289. package/src/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +0 -135
  290. package/src/v-angular/dropdown/dropdown-list/index.d.ts +0 -1
  291. package/src/v-angular/dropdown/dropdown.component.d.ts +0 -129
  292. package/src/v-angular/dropdown/dropdown.module.d.ts +0 -13
  293. package/src/v-angular/dropdown/typeahead/index.d.ts +0 -5
  294. package/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +0 -40
  295. package/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +0 -34
  296. package/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +0 -61
  297. package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +0 -78
  298. package/src/v-angular/dropdown/typeahead/typeahead.module.d.ts +0 -11
  299. package/src/v-angular/external-link/external-link.directive.d.ts +0 -17
  300. package/src/v-angular/external-link/external-link.module.d.ts +0 -8
  301. package/src/v-angular/i18n/i18n.module.d.ts +0 -15
  302. package/src/v-angular/i18n/i18n.test.module.d.ts +0 -27
  303. package/src/v-angular/info-circle/info-circle.component.d.ts +0 -16
  304. package/src/v-angular/info-circle/info-circle.module.d.ts +0 -10
  305. package/src/v-angular/input/input.component.d.ts +0 -112
  306. package/src/v-angular/input/input.module.d.ts +0 -13
  307. package/src/v-angular/input-mask/config.d.ts +0 -6
  308. package/src/v-angular/input-mask/constants.d.ts +0 -2
  309. package/src/v-angular/input-mask/input-mask-format.pipe.d.ts +0 -8
  310. package/src/v-angular/input-mask/input-mask.directive.d.ts +0 -39
  311. package/src/v-angular/input-mask/input-mask.module.d.ts +0 -11
  312. package/src/v-angular/input-mask/input-mask.types.d.ts +0 -20
  313. package/src/v-angular/modal/dialog/dialog.component.d.ts +0 -72
  314. package/src/v-angular/modal/fold-out/fold-out.component.d.ts +0 -51
  315. package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +0 -6
  316. package/src/v-angular/modal/fold-out/keyboard-key.enum.d.ts +0 -8
  317. package/src/v-angular/modal/modal.globals.d.ts +0 -13
  318. package/src/v-angular/modal/modal.module.d.ts +0 -15
  319. package/src/v-angular/modal/modal.types.d.ts +0 -6
  320. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +0 -85
  321. package/src/v-angular/pagination/pagination.component.d.ts +0 -64
  322. package/src/v-angular/pagination/pagination.module.d.ts +0 -12
  323. package/src/v-angular/radio/radio-group/radio-group.component.d.ts +0 -42
  324. package/src/v-angular/radio/radio.component.d.ts +0 -63
  325. package/src/v-angular/radio/radio.module.d.ts +0 -11
  326. package/src/v-angular/slug/slug.module.d.ts +0 -8
  327. package/src/v-angular/slug/slug.pipe.d.ts +0 -12
  328. package/src/v-angular/table/table.component.d.ts +0 -248
  329. package/src/v-angular/table/table.directive.d.ts +0 -36
  330. package/src/v-angular/table/table.models.d.ts +0 -78
  331. package/src/v-angular/table/table.module.d.ts +0 -12
  332. package/src/v-angular/table/table.tools.d.ts +0 -5
  333. package/src/v-angular/table/tr-thook.pipe.d.ts +0 -7
  334. package/src/v-angular/tabs/tab.directive.d.ts +0 -37
  335. package/src/v-angular/tabs/tabs.component.d.ts +0 -65
  336. package/src/v-angular/tabs/tabs.models.d.ts +0 -25
  337. package/src/v-angular/tabs/tabs.module.d.ts +0 -11
  338. package/src/v-angular/textarea/textarea.component.d.ts +0 -57
  339. package/src/v-angular/textarea/textarea.module.d.ts +0 -12
  340. package/src/v-angular/toast/toast-message.service.d.ts +0 -19
  341. package/src/v-angular/toast/toast.component.d.ts +0 -20
  342. package/src/v-angular/toast/toast.models.d.ts +0 -18
  343. package/src/v-angular/toast/toast.module.d.ts +0 -10
  344. package/src/v-angular/tooltip/tooltip.directive.d.ts +0 -108
  345. package/src/v-angular/tooltip/tooltip.module.d.ts +0 -8
  346. package/src/v-angular/tooltip/tooltip.styles.d.ts +0 -11
  347. package/v-angular/account-number/account-number.module.d.ts +0 -8
  348. package/v-angular/account-number/account-number.pipe.d.ts +0 -32
  349. package/v-angular/account-number/index.d.ts +0 -2
  350. package/v-angular/alert/alert.component.d.ts +0 -20
  351. package/v-angular/alert/alert.models.d.ts +0 -13
  352. package/v-angular/alert/alert.module.d.ts +0 -8
  353. package/v-angular/alert/index.d.ts +0 -3
  354. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +0 -134
  355. package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +0 -7
  356. package/v-angular/base-control-value-accessor/index.d.ts +0 -2
  357. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +0 -18
  358. package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +0 -10
  359. package/v-angular/breadcrumbs/index.d.ts +0 -2
  360. package/v-angular/button/button.component.d.ts +0 -62
  361. package/v-angular/button/button.module.d.ts +0 -10
  362. package/v-angular/button/index.d.ts +0 -2
  363. package/v-angular/card/card.component.d.ts +0 -5
  364. package/v-angular/card/card.module.d.ts +0 -8
  365. package/v-angular/card/index.d.ts +0 -2
  366. package/v-angular/character-countdown/character-countdown.directive.d.ts +0 -17
  367. package/v-angular/character-countdown/character-countdown.module.d.ts +0 -8
  368. package/v-angular/character-countdown/index.d.ts +0 -2
  369. package/v-angular/checkbox/checkbox.component.d.ts +0 -36
  370. package/v-angular/checkbox/checkbox.module.d.ts +0 -10
  371. package/v-angular/checkbox/index.d.ts +0 -2
  372. package/v-angular/core/core.globals.d.ts +0 -13
  373. package/v-angular/core/core.utils.d.ts +0 -23
  374. package/v-angular/core/index.d.ts +0 -2
  375. package/v-angular/datepicker/components/calendar/calendar.component.d.ts +0 -36
  376. package/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +0 -30
  377. package/v-angular/datepicker/components/date-input/date-input.component.d.ts +0 -113
  378. package/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +0 -76
  379. package/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +0 -169
  380. package/v-angular/datepicker/datepicker.globals.d.ts +0 -13
  381. package/v-angular/datepicker/datepicker.models.d.ts +0 -50
  382. package/v-angular/datepicker/datepicker.module.d.ts +0 -19
  383. package/v-angular/datepicker/datepicker.utils.d.ts +0 -46
  384. package/v-angular/datepicker/directives/calendar-date.directive.d.ts +0 -21
  385. package/v-angular/datepicker/index.d.ts +0 -13
  386. package/v-angular/datepicker/models/dates.d.ts +0 -15
  387. package/v-angular/datepicker/pipes/date-thook.pipe.d.ts +0 -8
  388. package/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +0 -8
  389. package/v-angular/datepicker/pipes/matches.pipe.d.ts +0 -7
  390. package/v-angular/drag-drop/drag-drop.component.d.ts +0 -131
  391. package/v-angular/drag-drop/drag-drop.models.d.ts +0 -49
  392. package/v-angular/drag-drop/drag-drop.module.d.ts +0 -13
  393. package/v-angular/drag-drop/drag-drop.pipes.d.ts +0 -40
  394. package/v-angular/drag-drop/drag-drop.utils.d.ts +0 -33
  395. package/v-angular/drag-drop/index.d.ts +0 -4
  396. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +0 -135
  397. package/v-angular/dropdown/dropdown-list/index.d.ts +0 -1
  398. package/v-angular/dropdown/dropdown.component.d.ts +0 -129
  399. package/v-angular/dropdown/dropdown.module.d.ts +0 -13
  400. package/v-angular/dropdown/index.d.ts +0 -5
  401. package/v-angular/dropdown/typeahead/index.d.ts +0 -5
  402. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +0 -40
  403. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +0 -34
  404. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +0 -61
  405. package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +0 -78
  406. package/v-angular/dropdown/typeahead/typeahead.module.d.ts +0 -11
  407. package/v-angular/external-link/external-link.directive.d.ts +0 -17
  408. package/v-angular/external-link/external-link.module.d.ts +0 -8
  409. package/v-angular/external-link/index.d.ts +0 -2
  410. package/v-angular/i18n/i18n.module.d.ts +0 -15
  411. package/v-angular/i18n/i18n.test.module.d.ts +0 -27
  412. package/v-angular/i18n/index.d.ts +0 -2
  413. package/v-angular/info-circle/index.d.ts +0 -2
  414. package/v-angular/info-circle/info-circle.component.d.ts +0 -16
  415. package/v-angular/info-circle/info-circle.module.d.ts +0 -10
  416. package/v-angular/input/index.d.ts +0 -2
  417. package/v-angular/input/input.component.d.ts +0 -112
  418. package/v-angular/input/input.module.d.ts +0 -13
  419. package/v-angular/input-mask/config.d.ts +0 -6
  420. package/v-angular/input-mask/constants.d.ts +0 -2
  421. package/v-angular/input-mask/index.d.ts +0 -5
  422. package/v-angular/input-mask/input-mask-format.pipe.d.ts +0 -8
  423. package/v-angular/input-mask/input-mask.directive.d.ts +0 -39
  424. package/v-angular/input-mask/input-mask.module.d.ts +0 -11
  425. package/v-angular/input-mask/input-mask.types.d.ts +0 -20
  426. package/v-angular/modal/dialog/dialog.component.d.ts +0 -72
  427. package/v-angular/modal/fold-out/fold-out.component.d.ts +0 -51
  428. package/v-angular/modal/fold-out/fold-out.directive.d.ts +0 -6
  429. package/v-angular/modal/fold-out/keyboard-key.enum.d.ts +0 -8
  430. package/v-angular/modal/index.d.ts +0 -5
  431. package/v-angular/modal/modal.globals.d.ts +0 -13
  432. package/v-angular/modal/modal.module.d.ts +0 -15
  433. package/v-angular/modal/modal.types.d.ts +0 -6
  434. package/v-angular/modal/slide-out/slide-out.component.d.ts +0 -85
  435. package/v-angular/pagination/index.d.ts +0 -2
  436. package/v-angular/pagination/pagination.component.d.ts +0 -64
  437. package/v-angular/pagination/pagination.module.d.ts +0 -12
  438. package/v-angular/radio/index.d.ts +0 -3
  439. package/v-angular/radio/radio-group/radio-group.component.d.ts +0 -42
  440. package/v-angular/radio/radio.component.d.ts +0 -63
  441. package/v-angular/radio/radio.module.d.ts +0 -11
  442. package/v-angular/slug/index.d.ts +0 -2
  443. package/v-angular/slug/slug.module.d.ts +0 -8
  444. package/v-angular/slug/slug.pipe.d.ts +0 -12
  445. package/v-angular/table/index.d.ts +0 -5
  446. package/v-angular/table/table.component.d.ts +0 -248
  447. package/v-angular/table/table.directive.d.ts +0 -36
  448. package/v-angular/table/table.models.d.ts +0 -78
  449. package/v-angular/table/table.module.d.ts +0 -12
  450. package/v-angular/table/table.tools.d.ts +0 -5
  451. package/v-angular/table/tr-thook.pipe.d.ts +0 -7
  452. package/v-angular/tabs/index.d.ts +0 -4
  453. package/v-angular/tabs/tab.directive.d.ts +0 -37
  454. package/v-angular/tabs/tabs.component.d.ts +0 -65
  455. package/v-angular/tabs/tabs.models.d.ts +0 -25
  456. package/v-angular/tabs/tabs.module.d.ts +0 -11
  457. package/v-angular/textarea/index.d.ts +0 -2
  458. package/v-angular/textarea/textarea.component.d.ts +0 -57
  459. package/v-angular/textarea/textarea.module.d.ts +0 -12
  460. package/v-angular/toast/index.d.ts +0 -4
  461. package/v-angular/toast/toast-message.service.d.ts +0 -19
  462. package/v-angular/toast/toast.component.d.ts +0 -20
  463. package/v-angular/toast/toast.models.d.ts +0 -18
  464. package/v-angular/toast/toast.module.d.ts +0 -10
  465. package/v-angular/tooltip/index.d.ts +0 -2
  466. package/v-angular/tooltip/tooltip.directive.d.ts +0 -108
  467. package/v-angular/tooltip/tooltip.module.d.ts +0 -8
  468. package/v-angular/tooltip/tooltip.styles.d.ts +0 -11
  469. package/v-angular/v-angular.module.d.ts +0 -33
@@ -1 +1 @@
1
- {"version":3,"file":"sebgroup-green-angular-src-v-angular-datepicker.mjs","sources":["../../../../libs/angular/src/v-angular/datepicker/datepicker.utils.ts","../../../../libs/angular/src/v-angular/datepicker/models/dates.ts","../../../../libs/angular/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.ts","../../../../libs/angular/src/v-angular/datepicker/directives/calendar-date.directive.ts","../../../../libs/angular/src/v-angular/datepicker/pipes/is-disabled.pipe.ts","../../../../libs/angular/src/v-angular/datepicker/pipes/date-thook.pipe.ts","../../../../libs/angular/src/v-angular/datepicker/pipes/matches.pipe.ts","../../../../libs/angular/src/v-angular/datepicker/components/calendar/calendar.component.ts","../../../../libs/angular/src/v-angular/datepicker/components/calendar/calendar.component.html","../../../../libs/angular/src/v-angular/datepicker/datepicker.models.ts","../../../../libs/angular/src/v-angular/datepicker/components/calendar-control/calendar-control.component.ts","../../../../libs/angular/src/v-angular/datepicker/components/calendar-control/calendar-control.component.html","../../../../libs/angular/src/v-angular/datepicker/datepicker.globals.ts","../../../../libs/angular/src/v-angular/datepicker/components/datepicker/datepicker.component.ts","../../../../libs/angular/src/v-angular/datepicker/components/datepicker/datepicker.component.html","../../../../libs/angular/src/v-angular/datepicker/components/date-input/date-input.component.ts","../../../../libs/angular/src/v-angular/datepicker/components/date-input/date-input.component.html","../../../../libs/angular/src/v-angular/datepicker/datepicker.module.ts","../../../../libs/angular/src/v-angular/datepicker/index.ts","../../../../libs/angular/src/v-angular/datepicker/sebgroup-green-angular-src-v-angular-datepicker.ts"],"sourcesContent":["import { WeekDay } from '@angular/common'\n\nconst weekdays: WeekDay[] = [\n WeekDay.Monday,\n WeekDay.Tuesday,\n WeekDay.Wednesday,\n WeekDay.Thursday,\n WeekDay.Friday,\n WeekDay.Saturday,\n WeekDay.Sunday,\n]\n\nexport const sortWeekDays = (firstDayOfWeek: WeekDay): WeekDay[] => {\n const firstDayIndex = weekdays.indexOf(firstDayOfWeek)\n const weekStart = weekdays.slice(firstDayIndex)\n const weekEnd = weekdays.slice(0, firstDayIndex)\n return weekStart.concat(weekEnd)\n}\n\n/**\n * Safely converts a value to a Date object, handling timezone issues.\n * If the value is already a Date, returns it as-is.\n * If it's a string in ISO format (YYYY-MM-DD), parses it in local timezone.\n * Otherwise, uses standard Date constructor.\n */\nexport const toLocalDate = (value: Date | string): Date => {\n // If already a Date object, use it directly to avoid timezone issues\n if (value instanceof Date) {\n return value\n }\n \n // If string is in ISO format (YYYY-MM-DD), parse in local timezone\n const dateMatch = String(value).match(/^(\\d{4})-(\\d{2})-(\\d{2})/)\n if (dateMatch) {\n const [, year, month, day] = dateMatch\n return new Date(parseInt(year), parseInt(month) - 1, parseInt(day))\n }\n \n // Otherwise use standard Date constructor\n return new Date(value)\n}\n\n/** Sets labels and sort weekday arrays based off of first day of week. */\nexport const getSortedWeekDays = (\n firstDayOfWeek: WeekDay,\n startDate?: Date,\n): Date[] => {\n if (startDate === undefined) startDate = new Date()\n\n // sort weekdays according to firstDayOfWeek\n const sortedWeekdays: WeekDay[] = sortWeekDays(firstDayOfWeek)\n\n // get the date object for the first day of week\n const startDayIndex = sortedWeekdays.indexOf(startDate.getDay())\n const firstOfWeek = new Date(startDate)\n firstOfWeek.setDate(startDate.getDate() - startDayIndex)\n\n // map each day in array to a date object\n return sortedWeekdays.map((_: WeekDay, offset: number) => {\n // set appropriate date\n const weekdayDate = new Date(firstOfWeek)\n weekdayDate.setDate(weekdayDate.getDate() + offset)\n\n // and return value\n return weekdayDate\n })\n}\n\n/** Generate a matrix of dates used to visualize a calendar month. */\nexport const generateDateMatrix = (\n month: number,\n year: number,\n minWeeks = 5,\n firstDayOfWeek: WeekDay,\n): Date[][] => {\n // generate a new matrix with 5 or 6 rows (depending on number of days in that month)\n const matrix: Date[][] = new Array<Date[]>(minWeeks)\n matrix.fill([])\n\n const date = new Date(year, month, 1)\n const firstDate = firstCalendarDate(date, firstDayOfWeek)\n\n // for each week in that month\n const dateMatrix = matrix.map((_: Date[], weekOffset: number) => {\n const offset = weekOffset * 7\n // update the date with the offset for that week\n const firstOfWeek = new Date(firstDate)\n firstOfWeek.setDate(firstDate.getDate() + offset)\n return getSortedWeekDays(firstDayOfWeek, firstOfWeek)\n })\n\n // check if another row needs to be added (if last dates of month are missing)\n const lastAdded = dateMatrix.slice(-1)[0].slice(-1)[0]\n const lastOfMonth = new Date(lastAdded)\n lastOfMonth.setMonth(month + 1)\n lastOfMonth.setDate(0)\n\n if (isBefore(lastAdded, lastOfMonth)) {\n // add another week row\n const firstOfWeek = new Date(lastAdded)\n firstOfWeek.setDate(lastAdded.getDate() + 1)\n dateMatrix.push(getSortedWeekDays(firstDayOfWeek, firstOfWeek))\n }\n // return final datematrix\n return dateMatrix\n}\n\n/** Returns the first date used in the calendars first button. */\nexport const firstCalendarDate = (\n date: Date,\n firstDayOfWeek: WeekDay,\n): Date => {\n // sort weekdays according to firstDayOfWeek\n const sortedWeekdays: WeekDay[] = sortWeekDays(firstDayOfWeek)\n\n // set date to the first of month\n const firstOfMonth = new Date(date)\n firstOfMonth.setDate(1)\n\n // get the offset\n const offset = sortedWeekdays.indexOf(firstOfMonth.getDay())\n const firstOfWeek = new Date(firstOfMonth)\n // use offset to set date\n firstOfWeek.setDate(1 - offset)\n return firstOfWeek\n}\n\nexport const getDayOffset = (\n from: WeekDay,\n to: WeekDay,\n firstDayOfWeek: WeekDay,\n direction?: 'forward' | 'back',\n): number => {\n const sortedWeekdays: WeekDay[] = sortWeekDays(firstDayOfWeek)\n\n const fromIndex = sortedWeekdays.indexOf(from)\n const toIndex = sortedWeekdays.indexOf(to)\n\n const offset = toIndex - fromIndex\n\n if (direction === 'forward' && offset < 0) return offset + 6\n if (direction === 'back' && offset > 0) return offset - 6\n return offset\n}\n\n/** Returns an array of Dates for each of month. */\nexport const getMonthArray = (): Date[] => {\n const firstDayOfYear = new Date()\n firstDayOfYear.setMonth(0)\n firstDayOfYear.setDate(1)\n\n // create a new array of length 12,\n // and fill it with date objects of 1:st of january\n const monthArray: Date[] = new Array(12).fill(firstDayOfYear)\n\n // map through the array,\n // and create a new instance of the date,\n // changing the month based on index (0 - 11)\n return monthArray.map((d: Date, index: number) => {\n const date = new Date(d)\n date.setMonth(index)\n return date\n })\n}\n\n/** Returns an array of Dates for the current year and the next. */\nexport const getYearArray = (): Date[] => {\n const currentYear = new Date()\n currentYear.setMonth(0)\n currentYear.setDate(1)\n const nextYear = new Date(currentYear)\n nextYear.setFullYear(currentYear.getFullYear() + 1)\n return [currentYear, nextYear]\n}\n\n/** Returns true if the two dates have the same year, month and date values. */\nexport const match = (a: Date | undefined, b: Date | undefined): boolean => {\n if (!a || !b) return false\n if (a.getDate() !== b.getDate()) return false\n if (a.getMonth() !== b.getMonth()) return false\n if (a.getFullYear() !== b.getFullYear()) return false\n return true\n}\n\nexport const afterClosingHours = (closingHours: Date | undefined): boolean => {\n if (!closingHours) return false\n return Date.now() >= closingHours.getTime()\n}\n\n/**\n * Checks if a date is before control date, regardless of time.\n *\n * @param date - comparison date\n * @param controlDate - date to compare against\n * @returns - true if the comparison date is before the control date\n */\nexport const isBefore = (date: Date, controlDate: Date): boolean => {\n // if year values are dissimilar\n if (date.getFullYear() !== controlDate.getFullYear()) {\n return date.getFullYear() < controlDate.getFullYear()\n }\n // if month values are dissimilar\n if (date.getMonth() !== controlDate.getMonth()) {\n return date.getMonth() < controlDate.getMonth()\n }\n // if year and month are equal, check the date\n return date.getDate() < controlDate.getDate()\n}\n\n/**\n * Checks if a date is after control date, regardless of time.\n *\n * @param date - comparison date\n * @param controlDate - date to compare against\n * @returns - true if the comparison date is before the control date\n */\nexport const isAfter = (date: Date, controlDate: Date): boolean => {\n // if year values are dissimilar\n if (date.getFullYear() !== controlDate.getFullYear()) {\n return date.getFullYear() > controlDate.getFullYear()\n }\n // if month values are dissimilar\n if (date.getMonth() !== controlDate.getMonth()) {\n return date.getMonth() > controlDate.getMonth()\n }\n // if year and month are equal, check the date\n return date.getDate() > controlDate.getDate()\n}\n\n/**\n * Checks if a value can be used to initiate a new Date object.\n *\n * @param value any value\n * @returns - true if value can be coersed to a Date.\n */\nexport const isValid = (value: any): boolean => {\n // if value is type of string and can be parsed to a Date\n const date =\n value && typeof value === 'string' && !isNaN(Date.parse(value))\n ? new Date(value)\n : null\n\n switch (true) {\n // if date or value is a valid date object - return valid\n case typeof value?.getMonth === 'function':\n case typeof date?.getMonth === 'function':\n return true\n // if date or value is not a valid date object - return invalid\n case value == null:\n case date?.toString() === 'Invalid Date':\n return false\n default:\n return false\n }\n}\n","import {\n createMask,\n InputmaskOptions,\n} from '@sebgroup/green-angular/src/v-angular/input-mask'\n\n/**\n * Helper function to generate InputmaskOptions by requested locale.\n * @param locale - requested locale. If not given, it'll use the browsers locale\n * @returns InputmaskOptions with date settings\n */\nexport const getLocaleDateMask = (\n dateCharacters?: DateCharacters,\n locale?: string,\n): InputmaskOptions<Date> => {\n // If no locale has been passed, use browser language\n if (!locale) locale = navigator.language\n\n const format = getLocaleDateString(locale).toLowerCase()\n\n return getFormatDateMask(format, dateCharacters)\n}\n\nexport const getLocaleDateString = (locale?: string) =>\n locale && dateFormats[locale] ? dateFormats[locale] : 'yyyy-MM-dd'\nconst dateFormats: Record<string, string> = {\n 'af-ZA': 'yyyy/MM/dd',\n 'am-ET': 'dd/MM/yyyy',\n 'ar-AE': 'dd/MM/yyyy',\n 'ar-BH': 'dd/MM/yyyy',\n 'ar-DZ': 'dd-MM-yyyy',\n 'ar-EG': 'dd/MM/yyyy',\n 'ar-IQ': 'dd/MM/yyyy',\n 'ar-JO': 'dd/MM/yyyy',\n 'ar-KW': 'dd/MM/yyyy',\n 'ar-LB': 'dd/MM/yyyy',\n 'ar-LY': 'dd/MM/yyyy',\n 'ar-MA': 'dd-MM-yyyy',\n 'ar-OM': 'dd/MM/yyyy',\n 'ar-QA': 'dd/MM/yyyy',\n 'ar-SA': 'dd/MM/yyyy',\n 'ar-SY': 'dd/MM/yyyy',\n 'ar-TN': 'dd-MM-yyyy',\n 'ar-YE': 'dd/MM/yyyy',\n 'arn-CL': 'dd-MM-yyyy',\n 'as-IN': 'dd-MM-yyyy',\n 'az-Cyrl-AZ': 'dd.MM.yyyy',\n 'az-Latn-AZ': 'dd.MM.yyyy',\n 'ba-RU': 'dd.MM.yyyy',\n 'be-BY': 'dd.MM.yyyy',\n 'bg-BG': 'dd.MM.yyyy',\n 'bn-BD': 'dd-MM-yyyy',\n 'bn-IN': 'dd-MM-yyyy',\n 'bo-CN': 'yyyy/MM/dd',\n 'br-FR': 'dd/MM/yyyy',\n 'bs-Cyrl-BA': 'dd.MM.yyyy',\n 'bs-Latn-BA': 'dd.MM.yyyy',\n 'ca-ES': 'dd/MM/yyyy',\n 'co-FR': 'dd/MM/yyyy',\n 'cs-CZ': 'dd.MM.yyyy',\n 'cy-GB': 'dd/MM/yyyy',\n 'da-DK': 'dd.MM.yyyy',\n 'de-AT': 'dd.MM.yyyy',\n 'de-CH': 'dd.MM.yyyy',\n 'de-DE': 'dd.MM.yyyy',\n 'de-LI': 'dd.MM.yyyy',\n 'de-LU': 'dd.MM.yyyy',\n 'dsb-DE': 'dd.MM.yyyy',\n 'dv-MV': 'dd/MM/yyyy',\n 'el-GR': 'dd/MM/yyyy',\n en: 'MM/dd/yyyy',\n 'en-029': 'MM/dd/yyyy',\n 'en-AU': 'dd/MM/yyyy',\n 'en-BZ': 'dd/MM/yyyy',\n 'en-CA': 'dd/MM/yyyy',\n 'en-GB': 'dd/MM/yyyy',\n 'en-IE': 'dd/MM/yyyy',\n 'en-IN': 'dd-MM-yyyy',\n 'en-JM': 'dd/MM/yyyy',\n 'en-MY': 'dd/MM/yyyy',\n 'en-NZ': 'dd/MM/yyyy',\n 'en-PH': 'MM/dd/yyyy',\n 'en-SG': 'dd/MM/yyyy',\n 'en-TT': 'dd/MM/yyyy',\n 'en-US': 'MM/dd/yyyy',\n 'en-ZA': 'yyyy/MM/dd',\n 'en-ZW': 'MM/dd/yyyy',\n 'es-AR': 'dd/MM/yyyy',\n 'es-BO': 'dd/MM/yyyy',\n 'es-CL': 'dd-MM-yyyy',\n 'es-CO': 'dd/MM/yyyy',\n 'es-CR': 'dd/MM/yyyy',\n 'es-DO': 'dd/MM/yyyy',\n 'es-EC': 'dd/MM/yyyy',\n 'es-ES': 'dd/MM/yyyy',\n 'es-GT': 'dd/MM/yyyy',\n 'es-HN': 'dd/MM/yyyy',\n 'es-MX': 'dd/MM/yyyy',\n 'es-NI': 'dd/MM/yyyy',\n 'es-PA': 'MM/dd/yyyy',\n 'es-PE': 'dd/MM/yyyy',\n 'es-PR': 'dd/MM/yyyy',\n 'es-PY': 'dd/MM/yyyy',\n 'es-SV': 'dd/MM/yyyy',\n 'es-US': 'MM/dd/yyyy',\n 'es-UY': 'dd/MM/yyyy',\n 'es-VE': 'dd/MM/yyyy',\n 'et-EE': 'dd.MM.yyyy',\n 'eu-ES': 'yyyy/MM/dd',\n 'fa-IR': 'MM/dd/yyyy',\n 'fi-FI': 'dd.MM.yyyy',\n 'fil-PH': 'MM/dd/yyyy',\n 'fo-FO': 'dd-MM-yyyy',\n 'fr-BE': 'dd/MM/yyyy',\n 'fr-CA': 'yyyy-MM-dd',\n 'fr-CH': 'dd.MM.yyyy',\n 'fr-FR': 'dd/MM/yyyy',\n 'fr-LU': 'dd/MM/yyyy',\n 'fr-MC': 'dd/MM/yyyy',\n 'fy-NL': 'dd-MM-yyyy',\n 'ga-IE': 'dd/MM/yyyy',\n 'gd-GB': 'dd/MM/yyyy',\n 'gl-ES': 'dd/MM/yyyy',\n 'gsw-FR': 'dd/MM/yyyy',\n 'gu-IN': 'dd-MM-yyyy',\n 'ha-Latn-NG': 'dd/MM/yyyy',\n 'he-IL': 'dd/MM/yyyy',\n 'hi-IN': 'dd-MM-yyyy',\n 'hr-BA': 'dd.MM.yyyy.',\n 'hr-HR': 'dd.MM.yyyy',\n 'hsb-DE': 'dd.MM.yyyy',\n 'hu-HU': 'yyyy.MM.dd.',\n 'hy-AM': 'dd.MM.yyyy',\n 'id-ID': 'dd/MM/yyyy',\n 'ig-NG': 'dd/MM/yyyy',\n 'ii-CN': 'yyyy/MM/dd',\n 'is-IS': 'dd.MM.yyyy',\n 'it-CH': 'dd.MM.yyyy',\n 'it-IT': 'dd/MM/yyyy',\n 'iu-Cans-CA': 'dd/MM/yyyy',\n 'iu-Latn-CA': 'dd/MM/yyyy',\n 'ja-JP': 'yyyy/MM/dd',\n 'ka-GE': 'dd.MM.yyyy',\n 'kk-KZ': 'dd.MM.yyyy',\n 'kl-GL': 'dd-MM-yyyy',\n 'km-KH': 'yyyy-MM-dd',\n 'kn-IN': 'dd-MM-yyyy',\n 'ko-KR': 'yyyy.MM.dd',\n 'kok-IN': 'dd-MM-yyyy',\n 'ky-KG': 'dd.MM.yyyy',\n 'lb-LU': 'dd/MM/yyyy',\n 'lo-LA': 'dd/MM/yyyy',\n 'lt-LT': 'yyyy.MM.dd',\n 'lv-LV': 'yyyy.MM.dd.',\n 'mi-NZ': 'dd/MM/yyyy',\n 'mk-MK': 'dd.MM.yyyy',\n 'ml-IN': 'dd-MM-yyyy',\n 'mn-MN': 'yyyy.MM.dd',\n 'mn-Mong-CN': 'yyyy/MM/dd',\n 'moh-CA': 'MM/dd/yyyy',\n 'mr-IN': 'dd-MM-yyyy',\n 'ms-BN': 'dd/MM/yyyy',\n 'ms-MY': 'dd/MM/yyyy',\n 'mt-MT': 'dd/MM/yyyy',\n 'nb-NO': 'dd.MM.yyyy',\n 'ne-NP': 'MM/dd/yyyy',\n 'nl-BE': 'dd/MM/yyyy',\n 'nl-NL': 'dd-MM-yyyy',\n 'nn-NO': 'dd.MM.yyyy',\n 'nso-ZA': 'yyyy/MM/dd',\n 'oc-FR': 'dd/MM/yyyy',\n 'or-IN': 'dd-MM-yyyy',\n 'pa-IN': 'dd-MM-yyyy',\n 'pl-PL': 'dd.MM.yyyy',\n 'prs-AF': 'dd/MM/yyyy',\n 'ps-AF': 'dd/MM/yyyy',\n 'pt-BR': 'dd/MM/yyyy',\n 'pt-PT': 'dd-MM-yyyy',\n 'qut-GT': 'dd/MM/yyyy',\n 'quz-BO': 'dd/MM/yyyy',\n 'quz-EC': 'dd/MM/yyyy',\n 'quz-PE': 'dd/MM/yyyy',\n 'rm-CH': 'dd/MM/yyyy',\n 'ro-RO': 'dd.MM.yyyy',\n 'ru-RU': 'dd.MM.yyyy',\n 'rw-RW': 'MM/dd/yyyy',\n 'sa-IN': 'dd-MM-yyyy',\n 'sah-RU': 'MM.dd.yyyy',\n se: 'yyyy-MM-dd',\n 'se-FI': 'dd.MM.yyyy',\n 'se-NO': 'dd.MM.yyyy',\n 'se-SE': 'yyyy-MM-dd',\n 'si-LK': 'yyyy-MM-dd',\n 'sk-SK': 'dd.MM.yyyy',\n 'sl-SI': 'dd.MM.yyyy',\n 'sma-NO': 'dd.MM.yyyy',\n 'sma-SE': 'yyyy-MM-dd',\n 'smj-NO': 'dd.MM.yyyy',\n 'smj-SE': 'yyyy-MM-dd',\n 'smn-FI': 'dd.MM.yyyy',\n 'sms-FI': 'dd.MM.yyyy',\n 'sq-AL': 'yyyy-MM-dd',\n 'sr-Cyrl-BA': 'dd.MM.yyyy',\n 'sr-Cyrl-CS': 'dd.MM.yyyy',\n 'sr-Cyrl-ME': 'dd.MM.yyyy',\n 'sr-Cyrl-RS': 'dd.MM.yyyy',\n 'sr-Latn-BA': 'dd.MM.yyyy',\n 'sr-Latn-CS': 'dd.MM.yyyy',\n 'sr-Latn-ME': 'dd.MM.yyyy',\n 'sr-Latn-RS': 'dd.MM.yyyy',\n sv: 'yyyy-MM-dd',\n 'sv-FI': 'dd.MM.yyyy',\n 'sv-SE': 'yyyy-MM-dd',\n 'sw-KE': 'MM/dd/yyyy',\n 'syr-SY': 'dd/MM/yyyy',\n 'ta-IN': 'dd-MM-yyyy',\n 'te-IN': 'dd-MM-yyyy',\n 'tg-Cyrl-TJ': 'dd.MM.yyyy',\n 'th-TH': 'dd/MM/yyyy',\n 'tk-TM': 'dd.MM.yyyy',\n 'tn-ZA': 'yyyy/MM/dd',\n 'tr-TR': 'dd.MM.yyyy',\n 'tt-RU': 'dd.MM.yyyy',\n 'tzm-Latn-DZ': 'dd-MM-yyyy',\n 'ug-CN': 'yyyy-MM-dd',\n 'uk-UA': 'dd.MM.yyyy',\n 'ur-PK': 'dd/MM/yyyy',\n 'uz-Cyrl-UZ': 'dd.MM.yyyy',\n 'uz-Latn-UZ': 'dd/MM yyyy',\n 'vi-VN': 'dd/MM/yyyy',\n 'wo-SN': 'dd/MM/yyyy',\n 'xh-ZA': 'yyyy/MM/dd',\n 'yo-NG': 'dd/MM/yyyy',\n 'zh-CN': 'yyyy/MM/dd',\n 'zh-HK': 'dd/MM/yyyy',\n 'zh-MO': 'dd/MM/yyyy',\n 'zh-SG': 'dd/MM/yyyy',\n 'zh-TW': 'yyyy/MM/dd',\n 'zu-ZA': 'yyyy/MM/dd',\n}\nexport const getFormatDateMask = (\n format: string,\n dateCharacters?: DateCharacters,\n) => {\n const separators = [' ', '.', '-', '/']\n const separator =\n separators.find((operator) => format.indexOf(operator) > -1) ?? '-'\n const dateObjects = format.split(separator)\n const year: { key: string; index: number } = { key: 'year', index: 0 },\n month: { key: string; index: number } = { key: 'month', index: 1 },\n day: { key: string; index: number } = { key: 'day', index: 2 }\n\n dateObjects.forEach((dateObject, index) => {\n switch (dateObject[0]) {\n case 'y':\n year.index = index\n break\n case 'm':\n month.index = index\n break\n case 'd':\n day.index = index\n break\n }\n })\n const placeholder = setDateFormatCharacters(format, dateCharacters)\n\n return createMask<Date>({\n alias: 'datetime',\n inputFormat: format,\n placeholder,\n parser: (value: string) => {\n const values = value.split(separator)\n const y = +values[year.index]\n const m = +values[month.index] - 1\n const d = +values[day.index]\n return new Date(y, m, d)\n },\n onBeforeMask(initialValue: string) {\n if (!initialValue || typeof initialValue !== 'string') return ''\n // If initialValues is in dateTime format, remove seconds that present after the \"T\"\n if (initialValue.includes('T')) initialValue = initialValue.split('T')[0]\n // initialValue should always be in yyyy-mm-dd no matter if set from control, via datepicker or manually with keyboard\n const values = initialValue.split('-')\n const datePartsInOrder = [year, month, day].sort(\n (a, b) => a.index - b.index,\n )\n // \"Insert\" correct values for the year/month/day, then join to string with separator\n return datePartsInOrder\n .map(({ key }) => {\n const [yearValue, monthValue, dateValue] = values\n if (key === 'year') return yearValue\n if (key === 'month') return monthValue\n return dateValue\n })\n .join(separator)\n },\n })\n}\n\nexport interface DateCharacters {\n year: string\n month: string\n day: string\n}\nexport const setDateFormatCharacters = (\n format: string,\n dateCharacters?: DateCharacters,\n) => {\n if (!dateCharacters) return format\n format = format.replace(/y/g, dateCharacters.year)\n format = format.replace(/m/g, dateCharacters.month)\n format = format.replace(/d/g, dateCharacters.day)\n return format\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Self,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport {\n AbstractControl,\n ControlValueAccessor,\n NgControl,\n ValidationErrors,\n Validator,\n Validators,\n} from '@angular/forms'\n\nimport {\n Observable,\n Subject,\n} from 'rxjs'\nimport { takeUntil } from 'rxjs/operators'\n\nimport {\n TRANSLOCO_SCOPE,\n TranslocoScope,\n TranslocoService,\n} from '@jsverse/transloco'\nimport type {\n InputmaskOptions,\n} from '@sebgroup/green-angular/src/v-angular/input-mask'\n\nimport { toLocalDate } from '../datepicker.utils'\nimport {\n DateCharacters,\n getFormatDateMask,\n getLocaleDateMask,\n getLocaleDateString,\n setDateFormatCharacters,\n} from '../models/dates'\n\n@Directive() // Required with Angular ivy compiler\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport abstract class DateControlValueAccessorComponent\n implements\n AfterViewInit,\n OnInit,\n OnChanges,\n OnDestroy,\n ControlValueAccessor,\n Validator\n{\n /** Custom template for displaying the content of the label.\n * Specified by nesting an `<ng-template #labelTpl>Custom Label</ng-template>`.\n */\n @ContentChild('labelTpl', { read: TemplateRef })\n labelContentTpl?: TemplateRef<undefined>\n\n /** Custom template for displaying value when the input is locked.\n * Specified by nesting an `<ng-template #lockedTpl let-selectedDate>Custom locked content date: {{ selectedDate }}</ng-template>`.\n */\n @ContentChild('lockedTpl', { read: TemplateRef })\n lockedTpl?: TemplateRef<undefined>\n\n /** Reference to the native child input element. */\n @ViewChild('input', { read: ElementRef }) inputRef?: ElementRef\n\n /* ATTRIBUTES */\n\n /** Id of the host element and is accessible by the children, automatically generated if not provided. */\n @HostBinding('attr.id') @Input() id = (window as any).ngv?.nextId(\n 'datepicker',\n )\n /** Name of the child input element. */\n @Input() name?: string\n /** Label of the child input element using the default template.\n * Can be overwritten by specifying an `<ng-template #labelTpl>Custom Label</ng-template>`.\n */\n @Input() label?: string\n /** Text shown before input has a written value. Default current date format by locale of transloco */\n @Input() set placeholder(value: string | undefined) {\n this._placeholder = value\n ? setDateFormatCharacters(value, this.dateCharacters)\n : value\n this.defaultPlaceholder = value\n ? setDateFormatCharacters(value, this.dateCharacters)\n : value\n }\n get placeholder() {\n return this._placeholder\n }\n private _placeholder: string | undefined\n defaultPlaceholder?: string\n /** What characters to use in date placeholder, e.g. {year: 'Y', month: 'M', day: 'D'} */\n @Input() dateCharacters?: DateCharacters\n /** Role of the child input element. https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles */\n @Input() role?: string\n /** Value of the child input element. Mostly used in conjunction with radio and checkboxes. */\n @Input() value: any\n /** An error string to be shown under invalid inputs. Overwrites any form errors. */\n @Input() error?: string\n /** A list of errors string to be shown under invalid inputs. Overwrites any form errors. */\n @Input() errorList?: string[]\n /** Adds an icon before each error message. */\n @Input() withErrorIcon?: boolean = false\n /** Description of the child input element. Both visibly and as `aria-label`. */\n @Input() description?: string\n /** If set to true, the browser will try to automatically set focus to the child input element. */\n @Input() autofocus = false\n /** Default value of the child input element. */\n @Input() defaultValue?: any\n /** If passed, the component will listen for updates and will reset its value. */\n @Input() reset?: Observable<any>\n /** Adds (Optional) to input label. */\n @Input() optional?: boolean | null | undefined\n /**\n * Settings for input mask for dates based on locale\n * @see {@link getLocaleDateMask} use this tool to generate settings for `dateInputMask`\n */\n @Input() set dateInputMask(dateMask: InputmaskOptions<Date>) {\n // Hide input field\n this.showInputDateSrc.next(false)\n this.cdr.detectChanges()\n this._dateInputMask = dateMask\n\n // Show input field to reload input-mask settings upon update\n setTimeout(() => {\n this.showInputDateSrc.next(true)\n this.cdr.detectChanges()\n }, 200)\n }\n get dateInputMask(): InputmaskOptions<Date> {\n return this._dateInputMask\n }\n private _dateInputMask!: InputmaskOptions<Date>\n\n private _locked: boolean | null | undefined = undefined\n /** Hides the input borders and displays current value as a text. */\n @Input() set locked(value: boolean | null | undefined) {\n this._locked = value\n this.cdr.detectChanges()\n }\n get locked(): boolean | null | undefined {\n return this._locked\n }\n /** If set to true, using a controls disabled state will display input as locked. */\n @Input() displayDisabledAsLocked?: boolean | null | undefined\n\n /* STATES */\n\n private _required: boolean | null | undefined = undefined\n /** Override the required flag of the component. */\n @Input() set required(value: boolean | null | undefined) {\n this._required = value\n }\n /** Child input element is considered required and changes default label template accordingly. */\n get required(): boolean | null | undefined {\n // if required is set => return required\n if (this._required !== undefined) return this._required\n\n // if required can be determined from the control => return control.required\n if (this.ngControl?.control?.validator) {\n const validator = this.ngControl?.control?.validator(\n {} as AbstractControl,\n )\n return validator && validator.required\n }\n\n return\n }\n\n private _invalid: boolean | undefined = undefined\n /** Override the invalid state of the component. */\n @Input() set invalid(value: boolean) {\n this._invalid = value\n }\n /** The component has the invalid state, usually decorating the elements red and shows the first error. */\n get invalid(): boolean {\n if (this._invalid === true || this._invalid === false) return this._invalid\n return (\n !!this.ngControl?.control?.invalid && this.ngControl?.control?.touched\n )\n }\n\n private _valid: boolean | undefined = undefined\n /** Override the valid state of the component. */\n @Input() set valid(value: boolean) {\n this._valid = value\n }\n /** The component has the valid state, usually decorating the elements green. */\n get valid(): boolean {\n if (this._valid === true || this._valid === false) return this._valid\n return !!this.ngControl?.control?.valid && this.ngControl?.control?.touched\n }\n\n /** The component has the focused state, updated by the child input element's focus state. */\n @Input() focused = false\n /** The component has the disabled state, usually muting the colors and removes interaction. */\n @Input() disabled = false\n /** Locale for using correct language in the datepicker. */\n @Input() locale: string | undefined\n /** Date format used for placeholder and input mask. Should be in lower case {year: 'y', month: 'm', day: 'd'} */\n @Input() dateFormat: string | undefined\n /** Date locale used for placeholder and input mask. */\n @Input() dateLocale: string | undefined\n\n /** Toggler for showing or hiding the input field */\n protected showInputDateSrc = new Subject<boolean>()\n\n /* TRIGGERS */\n\n /** Emits focus events triggered by the child elements. */\n @Output() readonly ngvFocus = new EventEmitter()\n /** Emits focus events triggered by the child elements. */\n @Output() readonly ngvBlur = new EventEmitter()\n\n /* VALUE HANDLERS */\n /** @internal */\n protected onChange = (_: any): void => {} // eslint-disable-line @typescript-eslint/no-empty-function\n /** @internal */\n protected onTouched = (): void => {} // eslint-disable-line @typescript-eslint/no-empty-function\n /** @internal */\n protected onValidatorChange: () => void = () => null\n private _state: any = null\n\n /* OTHER VARIABLES */\n scope: string | undefined\n /** @internal */\n // warningIcon = faTriangleExclamation;\n\n /* LIFE CYCLE VARIABLES */\n private _onDestroy$ = new Subject<true>()\n\n /**\n * Creates a new BaseControlValueAccessorComponent.\n * @param ngControl optional FormControl provided when component is used in a form, through dependency injection.\n */\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n @Optional()\n @Inject(TRANSLOCO_SCOPE)\n protected translocoScope: TranslocoScope,\n protected elementRef: ElementRef,\n protected cdr: ChangeDetectorRef,\n private _transloco: TranslocoService,\n ) {\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this\n }\n\n if (this.translocoScope) this.scope = this.translocoScope.toString()\n }\n\n static parseDateLike(value: any): null | undefined | string {\n try {\n // if value is type of string,\n if (value && typeof value === 'string') value = toLocalDate(value)\n switch (true) {\n // remove instances where the value will not correctly be parsed to a date string\n case value == null:\n case value?.toString() === 'Invalid Date':\n return null\n // if value-as-date is a valid date object, parse the value to YYYY-MM-DD format\n case typeof value?.getMonth === 'function':\n return new Intl.DateTimeFormat('sv-SE').format(value)\n default:\n return value as string\n }\n } catch (_e) {\n return\n }\n }\n\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n ngOnInit(): void {\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.setValidators(\n Validators.compose([this.ngControl.control.validator, this.validate]),\n )\n }\n\n this._transloco.langChanges$.pipe(takeUntil(this._onDestroy$)).subscribe({\n next: () => {\n if (!this.locale && !this.dateFormat) {\n return this.updatePlaceholderAndMask()\n }\n },\n })\n\n // if reset observable has been passed, subscribe after updates\n this.reset?.pipe(takeUntil(this._onDestroy$)).subscribe({\n next: () => {\n // reset value of controller\n this.updateValue('')\n },\n })\n }\n\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n ngAfterViewInit(): void {\n // if default value is set, then don't alter it. Otherwise, use\n // current value of controller after initiation as default value\n this.defaultValue = this.defaultValue ?? this.ngControl?.value\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.defaultValue?.currentValue) {\n this.updateValue(changes.defaultValue.currentValue)\n }\n\n if (\n changes.locale?.currentValue &&\n !this.dateFormat &&\n !changes.dateFormat?.currentValue\n ) {\n this.updatePlaceholderAndMask()\n }\n\n if (changes.dateFormat?.currentValue) {\n this.updateFormat()\n }\n\n if (changes.dateCharacters?.currentValue) {\n if (this.dateFormat) {\n this.updateFormat()\n } else {\n this.updatePlaceholderAndMask()\n }\n }\n\n if (!!changes.dateLocale?.currentValue && !this.dateFormat) {\n this.updatePlaceholderAndMask()\n }\n }\n\n ngOnDestroy(): void {\n this._onDestroy$.next(true)\n this._onDestroy$.complete()\n }\n\n /** @internal */\n onFocus(event: Event) {\n event.stopPropagation\n ? event.stopPropagation()\n : (event.cancelBubble = true)\n this.focused = true\n this.ngvFocus.emit(event)\n }\n\n /** @internal */\n onBlur(event: Event) {\n event.stopPropagation\n ? event.stopPropagation()\n : (event.cancelBubble = true)\n this.onTouched()\n this.focused = false\n this.ngvBlur.emit(event)\n }\n\n detectChanges(): void {\n this.cdr.detectChanges()\n }\n\n /** Sets the focus on the actual input element. */\n setFocus() {\n if (this.inputRef) this.inputRef.nativeElement.focus()\n }\n\n /**\n * @internal\n * Update placeholder and input mask to match locale.\n * Order if choice for locale:\n * 1. dateLocale - Used for specifying which locale to be used for formatting date\n * 2. locale - Unless dateLocale is not provided, use locale form current translation\n * 3. transloco.getActiveLang - as last resort, get active language form trnasloco\n * If locale is undefined, transloco.activeLang will be used instead.\n */\n updatePlaceholderAndMask() {\n const locale =\n this.dateLocale ?? this.locale ?? this._transloco.getActiveLang()\n\n this._placeholder = this.defaultPlaceholder\n ? setDateFormatCharacters(this.defaultPlaceholder, this.dateCharacters)\n : setDateFormatCharacters(\n getLocaleDateString(locale).toLowerCase(),\n this.dateCharacters,\n )\n this.dateInputMask = getLocaleDateMask(this.dateCharacters, locale)\n }\n\n updateFormat() {\n if (this.dateFormat) {\n this._placeholder = this.defaultPlaceholder\n ? setDateFormatCharacters(this.defaultPlaceholder, this.dateCharacters)\n : setDateFormatCharacters(\n this.dateFormat.toLowerCase(),\n this.dateCharacters,\n )\n this.dateInputMask = getFormatDateMask(\n this.dateFormat,\n this.dateCharacters,\n )\n }\n }\n\n // ----------------------------------------------------------------------------\n // CONTROL VALUE ACCESSOR\n // ----------------------------------------------------------------------------\n\n /** Internal state/value that the native input element has. */\n get state() {\n return this._state\n }\n\n /**\n * Internal state/value that the native input element has.\n */\n set state(value) {\n this._state = value\n }\n\n /** Writes a new value to the child input element. */\n writeValue(value: any): void {\n this.state = value\n this.onChange(this.state)\n }\n\n /** Registers a callback function that is called when the child input element's value changes. */\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = (value) => {\n // ensure emitted value is a string | null | undefined\n const emitValue = DateControlValueAccessorComponent.parseDateLike(value)\n fn(emitValue)\n }\n }\n\n /** Registers a callback function that is called when the child input element triggers on blur. */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn\n }\n\n /** Function that is called by the forms API when the control status changes to or from 'DISABLED'. */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled\n\n // if displayDisabledAsLocked is enabled - update locked state based on disabled state\n if (this.displayDisabledAsLocked) {\n this.locked = isDisabled\n }\n }\n\n // ----------------------------------------------------------------------------\n // VALIDATORS\n // ----------------------------------------------------------------------------\n\n /** Method that performs synchronous validation against the provided control. Used for internal validation. */\n validate(_control: AbstractControl): { [name: string]: any } | null {\n return null\n }\n\n /** Registers a callback function to call when the validator inputs change. */\n registerOnValidatorChange(fn: () => void): void {\n this.onValidatorChange = fn\n }\n\n // ----------------------------------------------------------------------------\n // HELPERS\n // ----------------------------------------------------------------------------\n\n /** Returns the first entry in an error object. */\n get firstError(): { code: string; params: Record<string, any> } | null {\n const errors: ValidationErrors | null = this.ngControl.errors\n if (!errors) return null\n const code = Object.keys(errors)[0]\n return { code, params: errors[code] }\n }\n\n private updateValue(value = this.defaultValue) {\n this.state = value\n this.onChange(this.state)\n this.cdr.detectChanges()\n }\n}\n","import {\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core'\n\nimport { match } from '../datepicker.utils'\n\nexport const enum DateCss {\n notWithinMonth = 'not-within-month',\n selected = 'selected',\n today = 'today',\n}\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[calendarDate]',\n standalone: false,\n})\nexport class CalendarDateDirective implements OnInit, OnChanges {\n @Input() calendarDate!: Date\n @HostBinding('class.' + DateCss.selected) @Input() selected!: boolean\n @HostBinding('class.' + DateCss.notWithinMonth)\n @Input()\n notWithinMonth!: boolean\n @HostBinding('class.' + DateCss.today) isToday = false\n @Input() disabled!: boolean\n\n get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement\n }\n\n constructor(private elementRef: ElementRef) {}\n\n ngOnInit() {\n this.isToday = match(new Date(), this.calendarDate)\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.disabled?.currentValue) {\n ;(this.nativeElement as HTMLButtonElement).disabled = this.disabled\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core'\n\nimport { DisableDateConfig } from '../datepicker.models'\nimport {\n afterClosingHours,\n isAfter,\n isBefore,\n match,\n} from '../datepicker.utils'\n\nconst TODAY = new Date()\n\n@Pipe({\n name: 'isDisabled',\n standalone: false\n})\nexport class IsDisabledPipe implements PipeTransform {\n // transform(value: Date, firstValid: Date | undefined, lastValid: Date | undefined, excludeDates: Date[] | undefined, excludeDays: WeekDay[] | undefined): boolean {\n transform(value: Date, config: DisableDateConfig = {}): boolean {\n const { fromDate, toDate, excludeDates, excludeDays, closingTime } = config\n\n // if closingHours was provided and the date matches today - check closingHours (including timezone)\n if (closingTime && match(value, TODAY) && afterClosingHours(closingTime))\n return true\n\n // if fromDate was provided and the date occurs before fromDate date\n if (fromDate && !match(value, fromDate) && isBefore(value, fromDate))\n return true\n\n // if toDate was provided and the date occurs after toDate date\n if (toDate && !match(value, toDate) && isAfter(value, toDate)) return true\n\n // if a list of disallowed days is provided and value matches\n if (\n excludeDays &&\n excludeDays.length &&\n excludeDays.indexOf(value.getDay()) !== -1\n )\n return true\n\n // if a list of disallowed dates is provided\n if (excludeDates && excludeDates.length) {\n return !!excludeDates.find((d: Date) => match(value, d))\n }\n\n // otherwise show date as not disabled\n return false\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'dateThook',\n standalone: false\n})\nexport class DateThookPipe implements PipeTransform {\n get today(): Date {\n const tmp = new Date()\n const today = new Date(tmp.setHours(0, 0, 0, 0))\n return today\n }\n\n transform(date: Date, isDisabled: boolean): string {\n if (!!date && !isDisabled) {\n // Reset time for target date\n const dateTmp = new Date(date.setHours(0, 0, 0, 0))\n\n // To calculate the time difference of two dates\n const differenceInTime = dateTmp.getTime() - this.today.getTime()\n\n // To calculate the no. of days between two dates\n const differenceInDays = differenceInTime / (1000 * 3600 * 24)\n const absoluteDifferenceInDays = Math.abs(differenceInDays)\n\n const differentiator =\n differenceInDays < 0 ? '-' : differenceInDays === 0 ? '' : '+'\n\n return `today${differentiator}${absoluteDifferenceInDays === 0 ? '' : absoluteDifferenceInDays}`\n }\n\n return 'disabled-date'\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core'\n\nimport { match } from '../datepicker.utils'\n\n@Pipe({\n name: 'matches',\n standalone: false\n})\nexport class MatchesPipe implements PipeTransform {\n transform(value: Date, selected: Date | undefined): boolean {\n return match(value, selected)\n }\n}\n","import { WeekDay } from '@angular/common'\nimport {\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren,\n} from '@angular/core'\n\nimport type {\n CalendarType,\n DisableDateConfig,\n} from '../../datepicker.models'\nimport {\n generateDateMatrix,\n getDayOffset,\n sortWeekDays,\n toLocalDate,\n} from '../../datepicker.utils'\nimport { CalendarDateDirective } from '../../directives/calendar-date.directive'\n\n@Component({\n selector: 'nggv-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n standalone: false,\n})\nexport class CalendarComponent implements OnChanges {\n @Output() dateClick = new EventEmitter<Date>()\n\n @ViewChildren(CalendarDateDirective)\n dateButtonRefs!: QueryList<CalendarDateDirective>\n\n @Input() year!: number\n @Input() month!: number\n @Input() selected: Date | undefined\n\n // inputs that configure display behaviour\n @Input() locale: string | undefined\n @Input() minCalendarRows = 5\n @Input() firstDayOfWeek: WeekDay = WeekDay.Monday\n @Input() type: CalendarType = 'normal'\n\n // inputs that affects which dates in the calendar should be grayed out\n @Input() set disableDates(value: Date[] | undefined) {\n this.updateDisableDateConfig({ excludeDates: value ?? [] })\n }\n @Input() set disableWeekDays(value: WeekDay[] | undefined) {\n this.updateDisableDateConfig({ excludeDays: value })\n }\n @Input() set firstValid(value: Date | undefined) {\n this.updateDisableDateConfig({ fromDate: value })\n }\n @Input() set lastValid(value: Date | undefined) {\n this.updateDisableDateConfig({ toDate: value })\n }\n @Input() set closingTime(value: Date | undefined) {\n this.updateDisableDateConfig({ closingTime: value })\n }\n\n dateMatrix: Date[][] = [[]]\n disableDateConfig: DisableDateConfig = {}\n\n private lastDayOfWeek: WeekDay = WeekDay.Sunday\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.selected?.currentValue) {\n this.selected = toLocalDate(changes.selected.currentValue)\n }\n\n if (changes.firstDayOfWeek?.currentValue) {\n this.lastDayOfWeek = sortWeekDays(\n changes.firstDayOfWeek.currentValue,\n ).pop() as WeekDay\n }\n\n if (\n (changes.month?.currentValue !== undefined &&\n changes.month?.currentValue !== null) ||\n !!changes.year?.currentValue ||\n !!changes.firstDayOfWeek?.currentValue ||\n !!changes.minCalendarRows?.currentValue\n ) {\n this.dateMatrix = generateDateMatrix(\n this.month,\n this.year,\n this.minCalendarRows,\n this.firstDayOfWeek,\n )\n }\n }\n\n clickDate(date: Date): void {\n this.dateClick.emit(date)\n }\n\n @HostListener('keydown', ['$event'])\n keyNavigation(event: KeyboardEvent): void {\n let activeElement: HTMLElement | undefined\n if (event.key !== 'Tab')\n activeElement = document.activeElement as HTMLElement\n if (event.key === 'ArrowRight') {\n const nextFocusable = this.getNextFocusable(activeElement)\n if (nextFocusable) nextFocusable.focus()\n }\n\n if (event.key === 'ArrowLeft') {\n const nextFocusable = this.getPreviousFocusable(activeElement)\n if (nextFocusable) nextFocusable.focus()\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n const nextFocusable = this.getElementWithOffset(activeElement, -7)\n if (nextFocusable) nextFocusable.focus()\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n const nextFocusable = this.getElementWithOffset(activeElement, 7)\n if (nextFocusable) nextFocusable.focus()\n }\n\n if (event.key === 'Enter' || event.key === 'Space') {\n if (activeElement) {\n const dateRef = this.dateButtonRefs.find(\n (ref) => ref.nativeElement === activeElement,\n )\n if (!dateRef?.disabled) {\n this.dateClick.emit(dateRef?.calendarDate)\n }\n }\n }\n\n if (event.key === 'Home') {\n event.preventDefault()\n const nextFocusable = this.firstDayOfWeekElement()\n if (nextFocusable) nextFocusable.focus()\n }\n\n if (event.key === 'End') {\n event.preventDefault()\n const nextFocusable = this.lastDayOfWeekElement()\n if (nextFocusable) nextFocusable.focus()\n }\n }\n\n getElementWithOffset(\n fromElement: HTMLElement | undefined,\n offsetDays: number,\n returnOnlyEnabled = true,\n ): HTMLElement | undefined {\n if (!fromElement) return\n const fromIndex = this.dateButtonRefs\n .toArray()\n .map((ref) => ref.nativeElement)\n .indexOf(fromElement)\n const next = this.dateButtonRefs.get(fromIndex + offsetDays)\n if (!next) return\n if (returnOnlyEnabled && next.disabled)\n return this.getElementWithOffset(next.nativeElement, offsetDays)\n return next.nativeElement\n }\n\n getNextFocusable(\n fromElement: HTMLElement | undefined,\n ): HTMLElement | undefined {\n if (!fromElement) return\n return this.getElementWithOffset(fromElement, 1)\n }\n\n getPreviousFocusable(\n fromElement: HTMLElement | undefined,\n ): HTMLElement | undefined {\n if (!fromElement) return\n return this.getElementWithOffset(fromElement, -1)\n }\n\n firstDayOfWeekElement(): HTMLElement | undefined {\n const activeElement = document.activeElement as HTMLElement\n if (!activeElement) return\n const dateRef = this.dateButtonRefs.find(\n (ref) => ref.nativeElement === activeElement,\n ) as CalendarDateDirective\n if (dateRef.calendarDate.getDay() === this.firstDayOfWeek) return\n const offset = this.getDayOffset(\n dateRef.calendarDate.getDay(),\n this.firstDayOfWeek,\n 'back',\n )\n const targetElement = this.getElementWithOffset(\n activeElement,\n offset,\n false,\n ) as HTMLButtonElement\n if (targetElement && targetElement.disabled)\n return this.getNextFocusable(targetElement)\n return targetElement\n }\n\n lastDayOfWeekElement(): HTMLElement | undefined {\n const activeElement = document.activeElement as HTMLElement\n if (!activeElement) return\n const dateRef = this.dateButtonRefs.find(\n (ref) => ref.nativeElement === activeElement,\n ) as CalendarDateDirective\n if (dateRef.calendarDate.getDay() === this.lastDayOfWeek) return\n const offset = this.getDayOffset(\n dateRef.calendarDate.getDay(),\n this.lastDayOfWeek,\n 'forward',\n )\n const targetElement = this.getElementWithOffset(\n activeElement,\n offset,\n false,\n ) as HTMLButtonElement\n if (targetElement && targetElement.disabled)\n return this.getPreviousFocusable(targetElement)\n return targetElement\n }\n\n getDayOffset(\n from: WeekDay,\n to: WeekDay,\n direction?: 'forward' | 'back',\n ): number {\n return getDayOffset(from, to, this.firstDayOfWeek, direction)\n }\n\n private updateDisableDateConfig(config: Partial<DisableDateConfig>): void {\n this.disableDateConfig = {\n ...this.disableDateConfig,\n ...config,\n }\n }\n}\n","<ng-container *ngFor=\"let weekRow of dateMatrix\">\n <div class=\"nggv-calendar-row\">\n <button\n *ngFor=\"let date of weekRow\"\n class=\"gds-button gds-button-alternative\"\n [attr.data-thook]=\"\n date | dateThook: (date | isDisabled: disableDateConfig)\n \"\n [attr.aria-label]=\"date\"\n [calendarDate]=\"date\"\n [notWithinMonth]=\"!(month === date?.getMonth())\"\n [selected]=\"date | matches: selected\"\n [disabled]=\"date | isDisabled: disableDateConfig\"\n (click)=\"clickDate(date)\"\n >\n {{ date | date: 'd' : undefined : locale }}\n </button>\n </div>\n</ng-container>\n","import { formatDate, WeekDay } from '@angular/common'\nimport { Injectable } from '@angular/core'\n\nexport type CalendarType = 'normal' | 'extended'\n\nexport const enum Month {\n January,\n February,\n March,\n April,\n May,\n June,\n July,\n August,\n September,\n October,\n November,\n December,\n}\n\nexport interface DisableDateConfig {\n fromDate?: Date | undefined\n toDate?: Date | undefined\n excludeDates?: Date[] | undefined\n excludeDays?: WeekDay[] | undefined\n closingTime?: Date | undefined\n}\n\n@Injectable()\nexport class CalendarMonth {\n year: number\n month: number\n id: string\n _date: Date\n\n constructor(date?: Date) {\n this._date = date ? new Date(date) : new Date()\n this._date.setDate(1)\n this._date.setHours(0, 0, 0, 0)\n this.year = this._date.getFullYear()\n this.month = this._date.getMonth()\n this.id = formatDate(this._date, 'yyyyMM', 'en')\n }\n\n /** Creates an instance based of input year and month. */\n static fromObject(obj: { year: number; month: number }): CalendarMonth {\n const objectDate = new Date(obj.year, obj.month, 1)\n return new CalendarMonth(objectDate)\n }\n\n /** Returns a Date representation for the instance. */\n get date(): Date {\n return new Date(this._date)\n }\n\n /** Returns the string id representing the instance in form of 'yyyyMM'. */\n valueOf() {\n return this.id\n }\n\n /** Returns a new instance for next month. */\n nextMonth(): CalendarMonth {\n const next = this.date\n next.setMonth(this.month + 1)\n return new CalendarMonth(next)\n }\n\n /** Returns a new instance for previous month. */\n previousMonth(): CalendarMonth {\n const previous = this.date\n previous.setMonth(this.month - 1)\n return new CalendarMonth(previous)\n }\n\n /** Returns a new instance for next year. */\n nextYear(): CalendarMonth {\n const nextYear = this.date\n nextYear.setFullYear(nextYear.getFullYear() + 1)\n return new CalendarMonth(nextYear)\n }\n\n /** Returns a new instance for previous year. */\n previousYear(): CalendarMonth {\n const previousYear = this.date\n previousYear.setFullYear(previousYear.getFullYear() - 1)\n return new CalendarMonth(previousYear)\n }\n}\n","import {\n Component,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core'\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'\nimport { Subscription } from 'rxjs'\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators'\n\nimport { CalendarMonth } from '../../datepicker.models'\nimport { getMonthArray, getYearArray } from '../../datepicker.utils'\n\nimport type { CalendarType } from '../../datepicker.models'\n\nimport '@sebgroup/green-core/components/icon/icons/chevron-left.js'\nimport '@sebgroup/green-core/components/icon/icons/chevron-right.js'\n\n@Component({\n selector: 'nggv-calendar-control',\n templateUrl: './calendar-control.component.html',\n styleUrls: ['./calendar-control.component.scss'],\n standalone: false\n})\nexport class CalendarControlComponent implements OnInit, OnChanges, OnDestroy {\n // nextIcon: IconDefinition = faChevronRight\n // previousIcon: IconDefinition = faChevronLeft\n\n @Output() calendarChange = new EventEmitter<CalendarMonth>()\n\n @Input() activeCalendar!: CalendarMonth\n @Input() locale: string | undefined\n @Input() type: CalendarType = 'normal'\n\n monthArray: Date[] = [] // array used for month dropdown\n yearArray: Date[] = [] // array used for year dropdown\n selectedCalendar: UntypedFormGroup // dropdown form group\n\n private subs: Subscription[] = []\n\n constructor(private fb: UntypedFormBuilder) {\n // initiate form group for dropdown menus\n this.selectedCalendar = this.fb.group({\n year: [],\n month: [],\n })\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (\n changes.activeCalendar &&\n !changes.activeCalendar.isFirstChange() &&\n changes.activeCalendar.currentValue.valueOf() !==\n this.selectedCalendar.value.id\n ) {\n this.selectedCalendar.patchValue(changes.activeCalendar.currentValue)\n }\n }\n\n ngOnInit() {\n // populate drowdowns and labels with data\n this.monthArray = getMonthArray()\n this.yearArray = getYearArray()\n\n // subscribe to year and month changes, and emit event to datepicker\n this.subscribeToFormChanges()\n\n // update control to initial value\n if (this.activeCalendar)\n this.selectedCalendar.patchValue(this.activeCalendar)\n }\n\n ngOnDestroy() {\n this.subs.forEach((sub) => sub.unsubscribe())\n }\n\n viewPreviousMonth() {\n const previousMonth = CalendarMonth.fromObject(\n this.selectedCalendar.value,\n ).previousMonth()\n this.selectedCalendar.patchValue(previousMonth)\n }\n\n viewNextMonth() {\n const nextMonth = CalendarMonth.fromObject(\n this.selectedCalendar.value,\n ).nextMonth()\n this.selectedCalendar.patchValue(nextMonth)\n }\n\n viewPreviousYear() {\n const previousYear = CalendarMonth.fromObject(\n this.selectedCalendar.value,\n ).previousYear()\n this.selectedCalendar.patchValue(previousYear)\n }\n\n viewNextYear() {\n const nextYear = CalendarMonth.fromObject(\n this.selectedCalendar.value,\n ).nextYear()\n this.selectedCalendar.patchValue(nextYear)\n }\n\n @HostListener('keydown', ['$event'])\n keyNavigation(event: KeyboardEvent): void {\n if (event.key !== 'PageUp' && event.key !== 'PageDown') return\n event.preventDefault()\n if (event.shiftKey) {\n if (event.key === 'PageUp') return this.viewPreviousYear()\n if (event.key === 'PageDown') return this.viewNextYear()\n }\n if (event.key === 'PageUp') return this.viewPreviousMonth()\n if (event.key === 'PageDown') return this.viewNextMonth()\n }\n\n private subscribeToFormChanges(): void {\n // used to quickly check if the yearsArray needs years appended to it\n let existingYears = this.yearArray.map((e) => e.getFullYear())\n const changes = this.selectedCalendar.valueChanges.pipe(\n debounceTime(1), // added due to this issue: https://github.com/angular/angular/issues/13129\n map((value: { year: number; month: number }) =>\n CalendarMonth.fromObject(value),\n ),\n distinctUntilChanged(\n (prev: CalendarMonth, curr: CalendarMonth) =>\n prev.valueOf() === curr.valueOf(),\n ),\n )\n this.subs.push(\n changes.subscribe({\n next: (value: CalendarMonth) => {\n // if you need to append to year array\n if (existingYears.indexOf(value.year) === -1) {\n this.yearArray.push(value.date)\n this.yearArray.sort((a, b) => a.getFullYear() - b.getFullYear())\n existingYears = this.yearArray.map((e) => e.getFullYear())\n }\n this.calendarChange.emit(value)\n },\n }),\n )\n }\n}\n","<button\n *ngIf=\"type === 'normal'\"\n data-thook=\"previous-month\"\n class=\"nggv-prev-button\"\n (click)=\"viewPreviousMonth()\"\n>\n <gds-icon-chevron-left *nggCoreElement></gds-icon-chevron-left>\n</button>\n\n<ng-container [formGroup]=\"selectedCalendar\">\n <select\n class=\"nggv-calendar-select\"\n data-thook=\"select-month\"\n formControlName=\"month\"\n >\n <option\n *ngFor=\"let month of monthArray\"\n class=\"gds-field-dropdown__label\"\n tabindex=\"0\"\n [value]=\"month.getMonth()\"\n >\n {{ month | date: 'MMMM' : undefined : locale }}\n </option>\n </select>\n\n <select\n class=\"nggv-calendar-select\"\n data-thook=\"select-year\"\n formControlName=\"year\"\n >\n <option\n *ngFor=\"let year of yearArray\"\n class=\"gds-field-dropdown__label\"\n tabindex=\"0\"\n [value]=\"year.getFullYear()\"\n >\n {{ year | date: 'yyyy' : undefined : locale }}\n </option>\n </select>\n</ng-container>\n\n<button\n *ngIf=\"type === 'normal'\"\n data-thook=\"next-month\"\n class=\"nggv-next-button\"\n (click)=\"viewNextMonth()\"\n>\n <gds-icon-chevron-right *nggCoreElement></gds-icon-chevron-right>\n</button>\n","// We must force tsc to interpret this file as a module, resolves\n// \"Augmentations for the global scope can only be directly nested in external modules or ambient module declarations.\"\nexport {}\n\ndeclare global {\n interface Window {\n /** Counter for unique identifiers */\n ngv: {\n ids: { [namespace: string]: number; default: number }\n nextId: (namespace?: string) => string\n }\n }\n}\n\n;(() => {\n // Make sure there is an incremental ID each component can use\n if (typeof window !== 'undefined' && !window.ngv) {\n window.ngv = {\n ids: { default: -1 },\n nextId(namespace = 'default'): string {\n let id = this.ids[namespace] || 0\n if (typeof this.ids[namespace] === 'number') id++\n this.ids[namespace] = id\n return namespace === 'default'\n ? `nggv-${id}`\n : `nggv-${namespace}-${id}`\n },\n }\n }\n})()\n","import { WeekDay } from '@angular/common'\nimport {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\n\nimport { Subscription } from 'rxjs'\n\nimport type { CalendarType } from '../../datepicker.models'\nimport { CalendarMonth } from '../../datepicker.models'\nimport {\n getSortedWeekDays,\n isValid,\n toLocalDate,\n} from '../../datepicker.utils'\n\n@Component({\n selector: 'nggv-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n standalone: false,\n})\nexport class DatepickerComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('calendarTemplate') calendarTemplate: TemplateRef<any> | null =\n null\n\n /** Emits a Date upon selection. */\n @Output() ngvDateChange = new EventEmitter<Date>()\n\n /** Sets first day of week in calendar. Defaults to Monday. */\n @Input() firstDayOfWeek: WeekDay = WeekDay.Monday\n /** Bank holidays. */\n @Input() disableDates: (string | Date)[] = []\n /** Other non selectable dates. */\n @Input() disableWeekDays: WeekDay[] = []\n /** Minimum number of calendar rows shown. */\n @Input() minCalendarRows = 5\n /** Initial date set as selected. */\n @Input() selected: Date | undefined\n /** Set locale for date format. */\n @Input() locale: string | undefined = 'en-US'\n /** Set type of calendar. */\n @Input() type: CalendarType = 'normal'\n /** Sets a from date of which all dates before will be invalid. */\n @Input() firstValid: Date | undefined\n /** Sets a to date of which all dates after will be invalid. */\n @Input() lastValid: Date | undefined\n /** Sets a closing time for today to toggle availability for today's date. */\n @Input() closingTime: Date | undefined\n /**\n * When true, the datepicker will automatically choose to open above or below the input\n * based on available space in the viewport, and will scale its height to fit if needed.\n */\n @Input() dynamicPosition = false\n /** Needed to determent where to place datepicker if dropdownPosition === 'top' */\n @Input() size: 'small' | 'large' = 'large'\n\n @HostBinding('attr.data-position') get positionAttr() {\n return this.datepickerPosition\n }\n\n @HostBinding('attr.data-size') get sizeAttr() {\n return this.size\n }\n\n /** @internal */\n activeCalendar!: CalendarMonth /* = new CalendarMonth(new Date()) */\n /** @internal */\n\n /** @internal */\n weekdayArray: Date[] = []\n\n /** @internal */\n disabledDatesForActiveMonth: Date[] = []\n\n // Indicates whether the datepicker should be displayed below ('bottom') or above ('top') the input, based on available space.\n datepickerPosition: 'bottom' | 'top' = 'bottom'\n\n private subs: Subscription[] = []\n\n constructor(\n private elementRef: ElementRef,\n private renderer: Renderer2,\n ) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n changes.selected &&\n !!changes.selected.currentValue &&\n !changes.selected.isFirstChange()\n ) {\n // set active calendar to match selected date\n const activeCalendar = new CalendarMonth(\n toLocalDate(changes.selected.currentValue),\n )\n this.changeActiveCalendar(activeCalendar)\n }\n\n if (changes.disableDates && !changes.disableDates.isFirstChange()) {\n this.disabledDatesForActiveMonth = this.getDisabledDatesFor(\n this.activeCalendar,\n changes.disableDates.currentValue || [],\n )\n }\n }\n\n ngOnInit(): void {\n // initiate week label row\n this.weekdayArray = getSortedWeekDays(this.firstDayOfWeek)\n\n // initiate calendar\n const initDate =\n !!this.selected && isValid(this.selected)\n ? new Date(this.selected)\n : new Date()\n this.activeCalendar = new CalendarMonth(initDate)\n\n if (this.dynamicPosition) this.setDropdownPosition()\n }\n\n ngOnDestroy() {\n this.subs.forEach((sub) => sub.unsubscribe())\n }\n\n /**\n * @internal\n * Update local calendar variable and changes displayed calendar.\n */\n changeActiveCalendar(calendar: CalendarMonth): void {\n this.activeCalendar = calendar\n this.disabledDatesForActiveMonth = this.getDisabledDatesFor(\n calendar,\n this.disableDates,\n )\n }\n\n /**\n * @internal\n * Returns a subset of all disabled dates.\n *\n * @param month current month to filter from\n * @param disableDates master list of all disabled dates\n * @returns a subset with current and adjacent months disabled dates\n */\n getDisabledDatesFor(\n calendar: CalendarMonth,\n disableDates?: (string | Date)[],\n ): Date[] {\n if (!disableDates) disableDates = []\n // sets month to target month\n const targetMonth = calendar.date\n\n // gets previous month from target month\n const previousMonth = calendar.previousMonth().date\n\n // gets next month from target month\n const nextMonth = calendar.nextMonth().date\n\n // checks if two dates are within the same year and month\n const withinSameMonth = (a: Date, b: Date): boolean =>\n a.getMonth() === b.getMonth() && a.getFullYear() === b.getFullYear()\n\n // filter out disabled dates for current and adjacent months\n return disableDates\n .map((d: Date | string) => toLocalDate(d))\n .filter(\n (d: Date) =>\n withinSameMonth(d, previousMonth) ||\n withinSameMonth(d, targetMonth) ||\n withinSameMonth(d, nextMonth),\n )\n }\n\n /**\n * Handles date-clicks from calendar compoentn. Emits event or changes calendar.\n * @param date date clicked in calendar\n */\n dateClickHandler(date: Date): void {\n // if a date is clicked within the active month, emit date\n if (date.getMonth() === this.activeCalendar.month)\n return this.ngvDateChange.emit(date)\n // else, change active calendar to match the date clicked\n this.selected = date\n this.changeActiveCalendar(new CalendarMonth(date))\n }\n\n setDropdownPosition() {\n const datePicker = this.elementRef.nativeElement\n const parent = datePicker.parentElement\n\n const rect = parent.getBoundingClientRect()\n\n const viewportHeight = window.innerHeight\n const spaceBelow = viewportHeight - rect.bottom\n const spaceAbove = rect.top\n\n const MARGIN = 10\n const DATEPICKER_HEIGHT = 362 // 6 ROWS OF DATES, TO BE SURE\n let maxDatepickerHeight: number\n\n if (spaceBelow >= DATEPICKER_HEIGHT) {\n this.datepickerPosition = 'bottom'\n maxDatepickerHeight = DATEPICKER_HEIGHT\n } else if (spaceAbove >= DATEPICKER_HEIGHT) {\n this.datepickerPosition = 'top'\n maxDatepickerHeight = DATEPICKER_HEIGHT\n } else if (spaceBelow > spaceAbove) {\n this.datepickerPosition = 'bottom'\n maxDatepickerHeight = Math.max(spaceBelow - MARGIN, DATEPICKER_HEIGHT) // 10px margin, height 362px\n } else {\n this.datepickerPosition = 'top'\n maxDatepickerHeight = Math.max(spaceAbove - MARGIN, DATEPICKER_HEIGHT) // 10px margin, height 362px\n }\n\n this.renderer.setStyle(datePicker, 'max-height', `${maxDatepickerHeight}px`)\n }\n}\n","<!-- control for changing displayed calendar -->\n<nggv-calendar-control\n [activeCalendar]=\"activeCalendar\"\n [locale]=\"locale\"\n [type]=\"type\"\n (calendarChange)=\"changeActiveCalendar($event)\"\n>\n</nggv-calendar-control>\n\n<!-- label row for week -->\n<div class=\"nggv-weekday-row\">\n <span *ngFor=\"let weekday of weekdayArray\">{{\n weekday | date: 'EEE' : undefined : locale\n }}</span>\n</div>\n\n<!-- outlet for active calendar -->\n<div class=\"nggv-calendar-view-container\">\n <ng-container\n *ngTemplateOutlet=\"\n calendarTemplate;\n context: {\n calendar: activeCalendar,\n disableDates: disabledDatesForActiveMonth,\n }\n \"\n >\n </ng-container>\n</div>\n\n<div *ngIf=\"type === 'extended'\" class=\"gds-datepicker__controls\">\n <ng-content></ng-content>\n</div>\n\n<ng-template\n #calendarTemplate\n let-calendar=\"calendar\"\n let-disableDates=\"disableDates\"\n>\n <nggv-calendar\n [year]=\"calendar.year\"\n [month]=\"calendar.month\"\n [type]=\"type\"\n [locale]=\"locale\"\n [disableDates]=\"disableDates\"\n [selected]=\"selected\"\n [lastValid]=\"lastValid\"\n [firstValid]=\"firstValid\"\n [closingTime]=\"closingTime\"\n [disableWeekDays]=\"disableWeekDays\"\n [minCalendarRows]=\"minCalendarRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n (dateClick)=\"dateClickHandler($event)\"\n >\n </nggv-calendar>\n</ng-template>\n","import '../../datepicker.globals'\nimport '@sebgroup/green-core/components/icon/icons/calendar.js'\nimport '@sebgroup/green-core/components/icon/icons/triangle-exclamation.js'\n\nimport { WeekDay } from '@angular/common'\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core'\nimport { NgControl } from '@angular/forms'\n\nimport {\n fromEvent,\n Observable,\n Subject,\n} from 'rxjs'\nimport {\n startWith,\n takeUntil,\n} from 'rxjs/operators'\n\nimport {\n TRANSLOCO_SCOPE,\n TranslocoScope,\n TranslocoService,\n} from '@jsverse/transloco'\n\nimport {\n DateControlValueAccessorComponent,\n} from '../../date-control-value-accessor/date-control-value-accessor.component'\nimport type { CalendarType } from '../../datepicker.models'\n\n/**\n * Date pickers simplify the task of selecting a date in a visual representation of a calendar.\n * https://designlibrary.sebgroup.com/components/component-datepicker\n *\n * Selector: `nggv-dateinput`\n *\n * When focusing an date element, the calendar allows for navigation using both tab and arrow keys.\n * Pressing 'esc' will close the calendar.\n *\n * Requires TranslocoLocale, but in turn allows for setting locale dynamically:\n * https://jsverse.github.io/transloco/docs/plugins/locale/#manually-setting-locale\n *\n * To configure TranslocoLocale, follow this guide:\n * https://jsverse.github.io/transloco/docs/plugins/locale/#setup\n */\n@Component({\n selector: 'nggv-dateinput,nggv-input[type=date]',\n templateUrl: './date-input.component.html',\n styleUrls: ['./date-input.component.scss'],\n standalone: false,\n})\nexport class DateInputComponent\n extends DateControlValueAccessorComponent\n implements OnDestroy\n{\n @ViewChild('toggleCalendarButton')\n toggleButtonRef?: ElementRef<HTMLButtonElement>\n /** Special property used for selecting DOM elements during automated UI testing. */\n @HostBinding('attr.data-thook') @Input() thook: string | null | undefined =\n 'date-input'\n\n @HostBinding('class.small') get isSmall(): boolean {\n return this.size === 'small'\n }\n\n @HostBinding('class.large') get isLarge(): boolean {\n return this.size === 'large'\n }\n\n /** Set type of calendar: either 'normal' or 'expanded'. Default is 'normal'. */\n @Input() type: CalendarType = 'normal'\n /** If set to true, the value will not be editable. */\n @Input() readonly = false\n /**\n * An array of Dates or parsable strings that corresponds with dates that should not be selectable in the calendar.\n * I.e. bank holidays.\n */\n @Input() disableDates: (string | Date)[] = []\n /**\n * An array of weekdays that should not be selectable in the calendar.\n * Can be used together with or instead of @Input() disableDates.\n */\n @Input() disableWeekDays: WeekDay[] = []\n /** Mininum number of rows shown in the calendar. */\n @Input() minRows = 5\n /** Sets a from-date of which all dates before will be invalid. */\n @Input() firstValid: Date | undefined\n /** Sets a to-date of which all dates after will be invalid. */\n @Input() lastValid: Date | undefined\n /** Sets a closing time for today to toggle availability for today's date. */\n @Input() closingTime: Date | undefined\n /** Sets first day of week in calendar. Defaults to Monday. */\n @Input() firstDayOfWeek: WeekDay = WeekDay.Monday\n /** If set to true, it will allow to close the calendar on escape button click. */\n @Input() closeCalendarOnEscape = true\n /** If the date-input should close when scrolling the viewport. Default: false*/\n @Input() closeOnScroll = false\n\n /**\n * Sets the displayed size of the date input field.\n */\n @Input() size: 'small' | 'large' = 'large'\n\n @Input() dynamicPosition = false\n\n /** @internal */\n // calendarIcon: IconDefinition = faCalendarDays;\n\n /** @internal */\n shown = false\n\n /** @internal */\n showInput$ = this.showInputDateSrc.asObservable().pipe(startWith(true))\n\n /** Observable for listening to scrolls when the datepicker is open */\n private documentScroll$: Observable<Event> = fromEvent(document, 'scroll')\n /** Observable for listening to clicks outside of the datepicker. */\n private documentClick$: Observable<Event> = fromEvent(document, 'click')\n /** Subject used for unsubscribe pattern on above observable. */\n private datepickerClosed$ = new Subject<boolean>()\n\n constructor(\n @Self() @Optional() public ngControl: NgControl,\n @Optional()\n @Inject(TRANSLOCO_SCOPE)\n protected translocoScope: TranslocoScope,\n protected transloco: TranslocoService,\n protected elementRef: ElementRef,\n protected cdr: ChangeDetectorRef,\n ) {\n super(ngControl, translocoScope, elementRef, cdr, transloco)\n // this.showInput$ = this.showInputDateSrc.asObservable()\n }\n\n ngOnDestroy(): void {\n this.datepickerClosed$.next(true)\n this.datepickerClosed$.complete()\n }\n\n /**\n * @internal\n * Called from the datepicker-component when a date button is clicked in the calendar.\n *\n * @param date date object emitted when selecting a date in the datepicker.\n */\n onDateChange(date: Date): void {\n // control value accessor will ensure correct formatting of state\n this.state = DateControlValueAccessorComponent.parseDateLike(date)\n // emit state\n this.onChange(this.state)\n // close datepicker and move focus to datepicker button\n this.setShown(false)\n setTimeout(() => this.toggleButtonRef?.nativeElement.focus(), 1)\n }\n\n /**\n * @internal\n * Called when entering date manually in input field.\n */\n onValueChange(eventTarget: any): void {\n // Will be in the format selected in inputMask\n const value = `${eventTarget.inputmask.undoValue}`\n\n // Use parserfunction from inputMask to parse to a date object since value can be in multiple formats\n // Then ontrol value accessor will ensure correct formatting of state\n const parsedDate = DateControlValueAccessorComponent.parseDateLike(\n this.dateInputMask.parser!(value),\n )\n\n this.state = parsedDate\n\n // emit parsed date\n this.onChange(parsedDate)\n this.onTouched()\n }\n\n /**\n * @internal\n * Listen to 'esc' keypress and closes datepicker if open.\n */\n @HostListener('keydown', ['$event'])\n keyListener(event: KeyboardEvent): void {\n if (this.closeCalendarOnEscape && event.key === 'Escape')\n this.setShown(false)\n }\n\n /** @internal */\n toggleDatepicker(): void {\n this.setShown(!this.shown)\n }\n\n /** To externally trigger the datepicker to close. */\n close(): void {\n this.setShown(false)\n }\n\n /**\n * Set the shown state of the datepicker popup. If true the popup will be visible.\n * If the state is set to false, call onTouched to notify any state listeners\n * @param state the shown state which to set.\n */\n private setShown(state = true): void {\n this.shown = state\n if (!this.shown) {\n // if shown is set to false, stop listening to clicks\n this.datepickerClosed$.next(true)\n return this.onTouched()\n }\n // if shown is set to true, reset unsubscribe variable\n this.datepickerClosed$.next(false)\n\n // start listen to scroll if closeOnScroll is enabled\n if (this.closeOnScroll) {\n this.documentScroll$.pipe(takeUntil(this.datepickerClosed$)).subscribe({\n next: () => {\n // if document starts scrolling, close datepicker\n return this.setShown(false)\n },\n })\n }\n\n // start listening for clicks outside the component\n this.documentClick$.pipe(takeUntil(this.datepickerClosed$)).subscribe({\n next: (event: Event) => {\n // clicking on a gray date causes the datepicker to reload the calendar dates,\n // and the button element clicked will no longer be considered as a child of the datepicker.\n // but the event target path will still contain the parent element\n // if target has datepicker parent, keep listening\n const eventPath = event.composedPath()\n const hasDatepickerParent = !!eventPath.find(\n (e) => e === this.elementRef.nativeElement,\n )\n if (hasDatepickerParent) return\n // else the click is considered to be outside, close datepicker\n return this.setShown(false)\n },\n })\n }\n}\n","<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-input'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div\n class=\"gds-field-label--small description hide-if-empty\"\n *ngIf=\"description\"\n >\n {{ description }}\n </div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <ng-template\n *ngTemplateOutlet=\"\n lockedTpl || defaultLockedTpl;\n context: { $implicit: state }\n \"\n ></ng-template>\n <ng-template #defaultLockedTpl>\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n {{ state | nggvInputMaskFormat: dateInputMask }}\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- INPUT WRAPPER -->\n <ng-container *ngIf=\"!locked\">\n <div\n class=\"field-wrap\"\n [class.nggv-field--error]=\"invalid\"\n *ngIf=\"showInput$ | async\"\n >\n <!-- INPUT FIELD -->\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"nggv-field-date\"\n type=\"text\"\n autocomplete=\"off\"\n [attr.name]=\"name\"\n [attr.required]=\"required || null\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [nggvInputMask]=\"dateInputMask\"\n [value]=\"state\"\n title=\"\"\n (change)=\"onValueChange($event.target)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <button\n aria-label=\"toggle calendar\"\n #toggleCalendarButton\n class=\"nggv-button-date\"\n type=\"button\"\n data-thook=\"toggle-calendar-button\"\n (click)=\"toggleDatepicker()\"\n [disabled]=\"disabled\"\n >\n @if (size === 'small') {\n <gds-icon-calendar *nggCoreElement size=\"16px\"></gds-icon-calendar>\n }\n\n @if (size === 'large') {\n <gds-icon-calendar *nggCoreElement size=\"20px\"></gds-icon-calendar>\n }\n </button>\n </div>\n\n <!-- DATEPICKER -->\n <div class=\"nggv-datepicker\" *ngIf=\"shown\">\n <nggv-datepicker\n #input\n [type]=\"type\"\n [disableDates]=\"disableDates\"\n [disableWeekDays]=\"disableWeekDays\"\n [selected]=\"state\"\n [locale]=\"locale\"\n [minCalendarRows]=\"minRows\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [firstValid]=\"firstValid\"\n [lastValid]=\"lastValid\"\n [closingTime]=\"closingTime\"\n [dynamicPosition]=\"dynamicPosition\"\n [size]=\"size\"\n (ngvDateChange)=\"onDateChange($event)\"\n >\n <ng-content></ng-content>\n </nggv-datepicker>\n </div>\n\n <!-- ERRORS -->\n <ng-container\n *ngIf=\"\n invalid &&\n (error || ngControl?.invalid) &&\n (!errorList || !errorList.length)\n \"\n >\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n size=\"16px\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </span>\n </label>\n </ng-container>\n <ng-container *ngFor=\"let error of errorList ?? []\">\n <label\n class=\"gds-field-notice gds-field-notice--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && error\"\n >\n <span class=\"error-item\">\n <span class=\"error-item--icon\">\n <gds-icon-triangle-exclamation\n *nggCoreElement\n [solid]=\"true\"\n size=\"16px\"\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n class=\"error-item--text\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n </label>\n </ng-container>\n </ng-container>\n</ng-container>\n","import { CommonModule } from '@angular/common'\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms'\nimport { TranslocoModule } from '@jsverse/transloco'\n\nimport { NggCoreWrapperModule } from '@sebgroup/green-angular/src/lib/shared'\nimport { NggvInputMaskModule } from '@sebgroup/green-angular/src/v-angular/input-mask'\nimport { CalendarControlComponent } from './components/calendar-control/calendar-control.component'\nimport { CalendarComponent } from './components/calendar/calendar.component'\nimport { DateInputComponent } from './components/date-input/date-input.component'\nimport { DatepickerComponent } from './components/datepicker/datepicker.component'\nimport { CalendarDateDirective } from './directives/calendar-date.directive'\nimport { DateThookPipe } from './pipes/date-thook.pipe'\nimport { IsDisabledPipe } from './pipes/is-disabled.pipe'\nimport { MatchesPipe } from './pipes/matches.pipe'\n\n@NgModule({\n declarations: [\n CalendarComponent,\n CalendarDateDirective,\n IsDisabledPipe,\n DateThookPipe,\n CalendarControlComponent,\n DatepickerComponent,\n DateInputComponent,\n MatchesPipe,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslocoModule,\n NggvInputMaskModule,\n NggCoreWrapperModule,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n exports: [DateInputComponent, DatepickerComponent],\n})\nexport class NggvDatepickerModule {}\n","/*\n * Public API Surface of date-picker\n */\nexport * from './date-control-value-accessor/date-control-value-accessor.component'\nexport * from './components/calendar/calendar.component'\nexport * from './components/calendar-control/calendar-control.component'\nexport * from './components/date-input/date-input.component'\nexport * from './components/datepicker/datepicker.component'\nexport * from './directives/calendar-date.directive'\nexport * from './pipes/is-disabled.pipe'\nexport * from './pipes/matches.pipe'\nexport * from './models/dates'\nexport * from './datepicker.models'\nexport * from './datepicker.globals'\nexport * from './datepicker.module'\nexport * from './datepicker.utils'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.CalendarDateDirective","i3.IsDisabledPipe","i4.DateThookPipe","i5.MatchesPipe","i2","i2.CalendarComponent","i3.CalendarControlComponent","i3","i5","i6.DatepickerComponent"],"mappings":"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Y;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,EAAE,EAAE,YAAY;AAChB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,aAAa;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,EAAE,EAAE,YAAY;AAChB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,QAAQ,EAAE,YAAY;AACtB,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA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"}
1
+ {"version":3,"file":"sebgroup-green-angular-src-v-angular-datepicker.mjs","sources":["../tmp-esm2022/src/v-angular/datepicker/datepicker.utils.js","../tmp-esm2022/src/v-angular/datepicker/models/dates.js","../tmp-esm2022/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.js","../tmp-esm2022/src/v-angular/datepicker/directives/calendar-date.directive.js","../tmp-esm2022/src/v-angular/datepicker/pipes/is-disabled.pipe.js","../tmp-esm2022/src/v-angular/datepicker/pipes/date-thook.pipe.js","../tmp-esm2022/src/v-angular/datepicker/pipes/matches.pipe.js","../tmp-esm2022/src/v-angular/datepicker/components/calendar/calendar.component.js","../tmp-esm2022/src/v-angular/datepicker/datepicker.models.js","../tmp-esm2022/src/v-angular/datepicker/components/calendar-control/calendar-control.component.js","../tmp-esm2022/src/v-angular/datepicker/datepicker.globals.js","../tmp-esm2022/src/v-angular/datepicker/components/datepicker/datepicker.component.js","../tmp-esm2022/src/v-angular/datepicker/components/date-input/date-input.component.js","../tmp-esm2022/src/v-angular/datepicker/datepicker.module.js","../tmp-esm2022/src/v-angular/datepicker/index.js","../tmp-esm2022/src/v-angular/datepicker/sebgroup-green-angular-src-v-angular-datepicker.js"],"sourcesContent":["import { WeekDay } from '@angular/common';\nconst weekdays = [\n WeekDay.Monday,\n WeekDay.Tuesday,\n WeekDay.Wednesday,\n WeekDay.Thursday,\n WeekDay.Friday,\n WeekDay.Saturday,\n WeekDay.Sunday,\n];\nexport const sortWeekDays = (firstDayOfWeek) => {\n const firstDayIndex = weekdays.indexOf(firstDayOfWeek);\n const weekStart = weekdays.slice(firstDayIndex);\n const weekEnd = weekdays.slice(0, firstDayIndex);\n return weekStart.concat(weekEnd);\n};\n/**\n * Safely converts a value to a Date object, handling timezone issues.\n * If the value is already a Date, returns it as-is.\n * If it's a string in ISO format (YYYY-MM-DD), parses it in local timezone.\n * Otherwise, uses standard Date constructor.\n */\nexport const toLocalDate = (value) => {\n // If already a Date object, use it directly to avoid timezone issues\n if (value instanceof Date) {\n return value;\n }\n // If string is in ISO format (YYYY-MM-DD), parse in local timezone\n const dateMatch = String(value).match(/^(\\d{4})-(\\d{2})-(\\d{2})/);\n if (dateMatch) {\n const [, year, month, day] = dateMatch;\n return new Date(parseInt(year), parseInt(month) - 1, parseInt(day));\n }\n // Otherwise use standard Date constructor\n return new Date(value);\n};\n/** Sets labels and sort weekday arrays based off of first day of week. */\nexport const getSortedWeekDays = (firstDayOfWeek, startDate) => {\n if (startDate === undefined)\n startDate = new Date();\n // sort weekdays according to firstDayOfWeek\n const sortedWeekdays = sortWeekDays(firstDayOfWeek);\n // get the date object for the first day of week\n const startDayIndex = sortedWeekdays.indexOf(startDate.getDay());\n const firstOfWeek = new Date(startDate);\n firstOfWeek.setDate(startDate.getDate() - startDayIndex);\n // map each day in array to a date object\n return sortedWeekdays.map((_, offset) => {\n // set appropriate date\n const weekdayDate = new Date(firstOfWeek);\n weekdayDate.setDate(weekdayDate.getDate() + offset);\n // and return value\n return weekdayDate;\n });\n};\n/** Generate a matrix of dates used to visualize a calendar month. */\nexport const generateDateMatrix = (month, year, minWeeks = 5, firstDayOfWeek) => {\n // generate a new matrix with 5 or 6 rows (depending on number of days in that month)\n const matrix = new Array(minWeeks);\n matrix.fill([]);\n const date = new Date(year, month, 1);\n const firstDate = firstCalendarDate(date, firstDayOfWeek);\n // for each week in that month\n const dateMatrix = matrix.map((_, weekOffset) => {\n const offset = weekOffset * 7;\n // update the date with the offset for that week\n const firstOfWeek = new Date(firstDate);\n firstOfWeek.setDate(firstDate.getDate() + offset);\n return getSortedWeekDays(firstDayOfWeek, firstOfWeek);\n });\n // check if another row needs to be added (if last dates of month are missing)\n const lastAdded = dateMatrix.slice(-1)[0].slice(-1)[0];\n const lastOfMonth = new Date(lastAdded);\n lastOfMonth.setMonth(month + 1);\n lastOfMonth.setDate(0);\n if (isBefore(lastAdded, lastOfMonth)) {\n // add another week row\n const firstOfWeek = new Date(lastAdded);\n firstOfWeek.setDate(lastAdded.getDate() + 1);\n dateMatrix.push(getSortedWeekDays(firstDayOfWeek, firstOfWeek));\n }\n // return final datematrix\n return dateMatrix;\n};\n/** Returns the first date used in the calendars first button. */\nexport const firstCalendarDate = (date, firstDayOfWeek) => {\n // sort weekdays according to firstDayOfWeek\n const sortedWeekdays = sortWeekDays(firstDayOfWeek);\n // set date to the first of month\n const firstOfMonth = new Date(date);\n firstOfMonth.setDate(1);\n // get the offset\n const offset = sortedWeekdays.indexOf(firstOfMonth.getDay());\n const firstOfWeek = new Date(firstOfMonth);\n // use offset to set date\n firstOfWeek.setDate(1 - offset);\n return firstOfWeek;\n};\nexport const getDayOffset = (from, to, firstDayOfWeek, direction) => {\n const sortedWeekdays = sortWeekDays(firstDayOfWeek);\n const fromIndex = sortedWeekdays.indexOf(from);\n const toIndex = sortedWeekdays.indexOf(to);\n const offset = toIndex - fromIndex;\n if (direction === 'forward' && offset < 0)\n return offset + 6;\n if (direction === 'back' && offset > 0)\n return offset - 6;\n return offset;\n};\n/** Returns an array of Dates for each of month. */\nexport const getMonthArray = () => {\n const firstDayOfYear = new Date();\n firstDayOfYear.setMonth(0);\n firstDayOfYear.setDate(1);\n // create a new array of length 12,\n // and fill it with date objects of 1:st of january\n const monthArray = new Array(12).fill(firstDayOfYear);\n // map through the array,\n // and create a new instance of the date,\n // changing the month based on index (0 - 11)\n return monthArray.map((d, index) => {\n const date = new Date(d);\n date.setMonth(index);\n return date;\n });\n};\n/** Returns an array of Dates for the current year and the next. */\nexport const getYearArray = () => {\n const currentYear = new Date();\n currentYear.setMonth(0);\n currentYear.setDate(1);\n const nextYear = new Date(currentYear);\n nextYear.setFullYear(currentYear.getFullYear() + 1);\n return [currentYear, nextYear];\n};\n/** Returns true if the two dates have the same year, month and date values. */\nexport const match = (a, b) => {\n if (!a || !b)\n return false;\n if (a.getDate() !== b.getDate())\n return false;\n if (a.getMonth() !== b.getMonth())\n return false;\n if (a.getFullYear() !== b.getFullYear())\n return false;\n return true;\n};\nexport const afterClosingHours = (closingHours) => {\n if (!closingHours)\n return false;\n return Date.now() >= closingHours.getTime();\n};\n/**\n * Checks if a date is before control date, regardless of time.\n *\n * @param date - comparison date\n * @param controlDate - date to compare against\n * @returns - true if the comparison date is before the control date\n */\nexport const isBefore = (date, controlDate) => {\n // if year values are dissimilar\n if (date.getFullYear() !== controlDate.getFullYear()) {\n return date.getFullYear() < controlDate.getFullYear();\n }\n // if month values are dissimilar\n if (date.getMonth() !== controlDate.getMonth()) {\n return date.getMonth() < controlDate.getMonth();\n }\n // if year and month are equal, check the date\n return date.getDate() < controlDate.getDate();\n};\n/**\n * Checks if a date is after control date, regardless of time.\n *\n * @param date - comparison date\n * @param controlDate - date to compare against\n * @returns - true if the comparison date is before the control date\n */\nexport const isAfter = (date, controlDate) => {\n // if year values are dissimilar\n if (date.getFullYear() !== controlDate.getFullYear()) {\n return date.getFullYear() > controlDate.getFullYear();\n }\n // if month values are dissimilar\n if (date.getMonth() !== controlDate.getMonth()) {\n return date.getMonth() > controlDate.getMonth();\n }\n // if year and month are equal, check the date\n return date.getDate() > controlDate.getDate();\n};\n/**\n * Checks if a value can be used to initiate a new Date object.\n *\n * @param value any value\n * @returns - true if value can be coersed to a Date.\n */\nexport const isValid = (value) => {\n // if value is type of string and can be parsed to a Date\n const date = value && typeof value === 'string' && !isNaN(Date.parse(value))\n ? new Date(value)\n : null;\n switch (true) {\n // if date or value is a valid date object - return valid\n case typeof value?.getMonth === 'function':\n case typeof date?.getMonth === 'function':\n return true;\n // if date or value is not a valid date object - return invalid\n case value == null:\n case date?.toString() === 'Invalid Date':\n return false;\n default:\n return false;\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFekMsTUFBTSxRQUFRLEdBQWM7SUFDMUIsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsT0FBTztJQUNmLE9BQU8sQ0FBQyxTQUFTO0lBQ2pCLE9BQU8sQ0FBQyxRQUFRO0lBQ2hCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLFFBQVE7SUFDaEIsT0FBTyxDQUFDLE1BQU07Q0FDZixDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsY0FBdUIsRUFBYSxFQUFFO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDdEQsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUMvQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUNoRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDbEMsQ0FBQyxDQUFBO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFvQixFQUFRLEVBQUU7SUFDeEQscUVBQXFFO0lBQ3JFLElBQUksS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLDBCQUEw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QUMsUUFBUSxFQUFFLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2pELENBQUM7SUFDRCw4Q0FBOEM7SUFDOUMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFBO0FBQy9DLENBQUMsQ0FBQTtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBVSxFQUFXLEVBQUU7SUFDN0MseURBQXlEO0lBQ3pELE1BQU0sSUFBSSxHQUNSLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFFVixRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2IseURBQXlEO1FBQ3pELEtBQUssT0FBTyxLQUFLLEVBQUUsUUFBUSxLQUFLLFVBQVUsQ0FBQztRQUMzQyxLQUFLLE9BQU8sSUFBSSxFQUFFLFFBQVEsS0FBSyxVQUFVO1lBQ3ZDLE9BQU8sSUFBSSxDQUFBO1FBQ2IsK0RBQStEO1FBQy9ELEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQztRQUNuQixLQUFLLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxjQUFjO1lBQ3RDLE9BQU8sS0FBSyxDQUFBO1FBQ2Q7WUFDRSxPQUFPLEtBQUssQ0FBQTtJQUNoQixDQUFDO0FBQ0gsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV2Vla0RheSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcblxuY29uc3Qgd2Vla2RheXM6IFdlZWtEYXlbXSA9IFtcbiAgV2Vla0RheS5Nb25kYXksXG4gIFdlZWtEYXkuVHVlc2RheSxcbiAgV2Vla0RheS5XZWRuZXNkYXksXG4gIFdlZWtEYXkuVGh1cnNkYXksXG4gIFdlZWtEYXkuRnJpZGF5LFxuICBXZWVrRGF5LlNhdHVyZGF5LFxuICBXZWVrRGF5LlN1bmRheSxcbl1cblxuZXhwb3J0IGNvbnN0IHNvcnRXZWVrRGF5cyA9IChmaXJzdERheU9mV2VlazogV2Vla0RheSk6IFdlZWtEYXlbXSA9PiB7XG4gIGNvbnN0IGZpcnN0RGF5SW5kZXggPSB3ZWVrZGF5cy5pbmRleE9mKGZpcnN0RGF5T2ZXZWVrKVxuICBjb25zdCB3ZWVrU3RhcnQgPSB3ZWVrZGF5cy5zbGljZShmaXJzdERheUluZGV4KVxuICBjb25zdCB3ZWVrRW5kID0gd2Vla2RheXMuc2xpY2UoMCwgZmlyc3REYXlJbmRleClcbiAgcmV0dXJuIHdlZWtTdGFydC5jb25jYXQod2Vla0VuZClcbn1cblxuLyoqXG4gKiBTYWZlbHkgY29udmVydHMgYSB2YWx1ZSB0byBhIERhdGUgb2JqZWN0LCBoYW5kbGluZyB0aW1lem9uZSBpc3N1ZXMuXG4gKiBJZiB0aGUgdmFsdWUgaXMgYWxyZWFkeSBhIERhdGUsIHJldHVybnMgaXQgYXMtaXMuXG4gKiBJZiBpdCdzIGEgc3RyaW5nIGluIElTTyBmb3JtYXQgKFlZWVktTU0tREQpLCBwYXJzZXMgaXQgaW4gbG9jYWwgdGltZXpvbmUuXG4gKiBPdGhlcndpc2UsIHVzZXMgc3RhbmRhcmQgRGF0ZSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGNvbnN0IHRvTG9jYWxEYXRlID0gKHZhbHVlOiBEYXRlIHwgc3RyaW5nKTogRGF0ZSA9PiB7XG4gIC8vIElmIGFscmVhZHkgYSBEYXRlIG9iamVjdCwgdXNlIGl0IGRpcmVjdGx5IHRvIGF2b2lkIHRpbWV6b25lIGlzc3Vlc1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAgXG4gIC8vIElmIHN0cmluZyBpcyBpbiBJU08gZm9ybWF0IChZWVlZLU1NLUREKSwgcGFyc2UgaW4gbG9jYWwgdGltZXpvbmVcbiAgY29uc3QgZGF0ZU1hdGNoID0gU3RyaW5nKHZhbHVlKS5tYXRjaCgvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pLylcbiAgaWYgKGRhdGVNYXRjaCkge1xuICAgIGNvbnN0IFssIHllYXIsIG1vbnRoLCBkYXldID0gZGF0ZU1hdGNoXG4gICAgcmV0dXJuIG5ldyBEYXRlKHBhcnNlSW50KHllYXIpLCBwYXJzZUludChtb250aCkgLSAxLCBwYXJzZUludChkYXkpKVxuICB9XG4gIFxuICAvLyBPdGhlcndpc2UgdXNlIHN0YW5kYXJkIERhdGUgY29uc3RydWN0b3JcbiAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKVxufVxuXG4vKiogU2V0cyBsYWJlbHMgYW5kIHNvcnQgd2Vla2RheSBhcnJheXMgYmFzZWQgb2ZmIG9mIGZpcnN0IGRheSBvZiB3ZWVrLiAqL1xuZXhwb3J0IGNvbnN0IGdldFNvcnRlZFdlZWtEYXlzID0gKFxuICBmaXJzdERheU9mV2VlazogV2Vla0RheSxcbiAgc3RhcnREYXRlPzogRGF0ZSxcbik6IERhdGVbXSA9PiB7XG4gIGlmIChzdGFydERhdGUgPT09IHVuZGVmaW5lZCkgc3RhcnREYXRlID0gbmV3IERhdGUoKVxuXG4gIC8vIHNvcnQgd2Vla2RheXMgYWNjb3JkaW5nIHRvIGZpcnN0RGF5T2ZXZWVrXG4gIGNvbnN0IHNvcnRlZFdlZWtkYXlzOiBXZWVrRGF5W10gPSBzb3J0V2Vla0RheXMoZmlyc3REYXlPZldlZWspXG5cbiAgLy8gZ2V0IHRoZSBkYXRlIG9iamVjdCBmb3IgdGhlIGZpcnN0IGRheSBvZiB3ZWVrXG4gIGNvbnN0IHN0YXJ0RGF5SW5kZXggPSBzb3J0ZWRXZWVrZGF5cy5pbmRleE9mKHN0YXJ0RGF0ZS5nZXREYXkoKSlcbiAgY29uc3QgZmlyc3RPZldlZWsgPSBuZXcgRGF0ZShzdGFydERhdGUpXG4gIGZpcnN0T2ZXZWVrLnNldERhdGUoc3RhcnREYXRlLmdldERhdGUoKSAtIHN0YXJ0RGF5SW5kZXgpXG5cbiAgLy8gbWFwIGVhY2ggZGF5IGluIGFycmF5IHRvIGEgZGF0ZSBvYmplY3RcbiAgcmV0dXJuIHNvcnRlZFdlZWtkYXlzLm1hcCgoXzogV2Vla0RheSwgb2Zmc2V0OiBudW1iZXIpID0+IHtcbiAgICAvLyBzZXQgYXBwcm9wcmlhdGUgZGF0ZVxuICAgIGNvbnN0IHdlZWtkYXlEYXRlID0gbmV3IERhdGUoZmlyc3RPZldlZWspXG4gICAgd2Vla2RheURhdGUuc2V0RGF0ZSh3ZWVrZGF5RGF0ZS5nZXREYXRlKCkgKyBvZmZzZXQpXG5cbiAgICAvLyBhbmQgcmV0dXJuIHZhbHVlXG4gICAgcmV0dXJuIHdlZWtkYXlEYXRlXG4gIH0pXG59XG5cbi8qKiBHZW5lcmF0ZSBhIG1hdHJpeCBvZiBkYXRlcyB1c2VkIHRvIHZpc3VhbGl6ZSBhIGNhbGVuZGFyIG1vbnRoLiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlRGF0ZU1hdHJpeCA9IChcbiAgbW9udGg6IG51bWJlcixcbiAgeWVhcjogbnVtYmVyLFxuICBtaW5XZWVrcyA9IDUsXG4gIGZpcnN0RGF5T2ZXZWVrOiBXZWVrRGF5LFxuKTogRGF0ZVtdW10gPT4ge1xuICAvLyBnZW5lcmF0ZSBhIG5ldyBtYXRyaXggd2l0aCA1IG9yIDYgcm93cyAoZGVwZW5kaW5nIG9uIG51bWJlciBvZiBkYXlzIGluIHRoYXQgbW9udGgpXG4gIGNvbnN0IG1hdHJpeDogRGF0ZVtdW10gPSBuZXcgQXJyYXk8RGF0ZVtdPihtaW5XZWVrcylcbiAgbWF0cml4LmZpbGwoW10pXG5cbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxKVxuICBjb25zdCBmaXJzdERhdGUgPSBmaXJzdENhbGVuZGFyRGF0ZShkYXRlLCBmaXJzdERheU9mV2VlaylcblxuICAvLyBmb3IgZWFjaCB3ZWVrIGluIHRoYXQgbW9udGhcbiAgY29uc3QgZGF0ZU1hdHJpeCA9IG1hdHJpeC5tYXAoKF86IERhdGVbXSwgd2Vla09mZnNldDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gd2Vla09mZnNldCAqIDdcbiAgICAvLyB1cGRhdGUgdGhlIGRhdGUgd2l0aCB0aGUgb2Zmc2V0IGZvciB0aGF0IHdlZWtcbiAgICBjb25zdCBmaXJzdE9mV2VlayA9IG5ldyBEYXRlKGZpcnN0RGF0ZSlcbiAgICBmaXJzdE9mV2Vlay5zZXREYXRlKGZpcnN0RGF0ZS5nZXREYXRlKCkgKyBvZmZzZXQpXG4gICAgcmV0dXJuIGdldFNvcnRlZFdlZWtEYXlzKGZpcnN0RGF5T2ZXZWVrLCBmaXJzdE9mV2VlaylcbiAgfSlcblxuICAvLyBjaGVjayBpZiBhbm90aGVyIHJvdyBuZWVkcyB0byBiZSBhZGRlZCAoaWYgbGFzdCBkYXRlcyBvZiBtb250aCBhcmUgbWlzc2luZylcbiAgY29uc3QgbGFzdEFkZGVkID0gZGF0ZU1hdHJpeC5zbGljZSgtMSlbMF0uc2xpY2UoLTEpWzBdXG4gIGNvbnN0IGxhc3RPZk1vbnRoID0gbmV3IERhdGUobGFzdEFkZGVkKVxuICBsYXN0T2ZNb250aC5zZXRNb250aChtb250aCArIDEpXG4gIGxhc3RPZk1vbnRoLnNldERhdGUoMClcblxuICBpZiAoaXNCZWZvcmUobGFzdEFkZGVkLCBsYXN0T2ZNb250aCkpIHtcbiAgICAvLyBhZGQgYW5vdGhlciB3ZWVrIHJvd1xuICAgIGNvbnN0IGZpcnN0T2ZXZWVrID0gbmV3IERhdGUobGFzdEFkZGVkKVxuICAgIGZpcnN0T2ZXZWVrLnNldERhdGUobGFzdEFkZGVkLmdldERhdGUoKSArIDEpXG4gICAgZGF0ZU1hdHJpeC5wdXNoKGdldFNvcnRlZFdlZWtEYXlzKGZpcnN0RGF5T2ZXZWVrLCBmaXJzdE9mV2VlaykpXG4gIH1cbiAgLy8gcmV0dXJuIGZpbmFsIGRhdGVtYXRyaXhcbiAgcmV0dXJuIGRhdGVNYXRyaXhcbn1cblxuLyoqIFJldHVybnMgdGhlIGZpcnN0IGRhdGUgdXNlZCBpbiB0aGUgY2FsZW5kYXJzIGZpcnN0IGJ1dHRvbi4gKi9cbmV4cG9ydCBjb25zdCBmaXJzdENhbGVuZGFyRGF0ZSA9IChcbiAgZGF0ZTogRGF0ZSxcbiAgZmlyc3REYXlPZldlZWs6IFdlZWtEYXksXG4pOiBEYXRlID0+IHtcbiAgLy8gc29ydCB3ZWVrZGF5cyBhY2NvcmRpbmcgdG8gZmlyc3REYXlPZldlZWtcbiAgY29uc3Qgc29ydGVkV2Vla2RheXM6IFdlZWtEYXlbXSA9IHNvcnRXZWVrRGF5cyhmaXJzdERheU9mV2VlaylcblxuICAvLyBzZXQgZGF0ZSB0byB0aGUgZmlyc3Qgb2YgbW9udGhcbiAgY29uc3QgZmlyc3RPZk1vbnRoID0gbmV3IERhdGUoZGF0ZSlcbiAgZmlyc3RPZk1vbnRoLnNldERhdGUoMSlcblxuICAvLyBnZXQgdGhlIG9mZnNldFxuICBjb25zdCBvZmZzZXQgPSBzb3J0ZWRXZWVrZGF5cy5pbmRleE9mKGZpcnN0T2ZNb250aC5nZXREYXkoKSlcbiAgY29uc3QgZmlyc3RPZldlZWsgPSBuZXcgRGF0ZShmaXJzdE9mTW9udGgpXG4gIC8vIHVzZSBvZmZzZXQgdG8gc2V0IGRhdGVcbiAgZmlyc3RPZldlZWsuc2V0RGF0ZSgxIC0gb2Zmc2V0KVxuICByZXR1cm4gZmlyc3RPZldlZWtcbn1cblxuZXhwb3J0IGNvbnN0IGdldERheU9mZnNldCA9IChcbiAgZnJvbTogV2Vla0RheSxcbiAgdG86IFdlZWtEYXksXG4gIGZpcnN0RGF5T2ZXZWVrOiBXZWVrRGF5LFxuICBkaXJlY3Rpb24/OiAnZm9yd2FyZCcgfCAnYmFjaycsXG4pOiBudW1iZXIgPT4ge1xuICBjb25zdCBzb3J0ZWRXZWVrZGF5czogV2Vla0RheVtdID0gc29ydFdlZWtEYXlzKGZpcnN0RGF5T2ZXZWVrKVxuXG4gIGNvbnN0IGZyb21JbmRleCA9IHNvcnRlZFdlZWtkYXlzLmluZGV4T2YoZnJvbSlcbiAgY29uc3QgdG9JbmRleCA9IHNvcnRlZFdlZWtkYXlzLmluZGV4T2YodG8pXG5cbiAgY29uc3Qgb2Zmc2V0ID0gdG9JbmRleCAtIGZyb21JbmRleFxuXG4gIGlmIChkaXJlY3Rpb24gPT09ICdmb3J3YXJkJyAmJiBvZmZzZXQgPCAwKSByZXR1cm4gb2Zmc2V0ICsgNlxuICBpZiAoZGlyZWN0aW9uID09PSAnYmFjaycgJiYgb2Zmc2V0ID4gMCkgcmV0dXJuIG9mZnNldCAtIDZcbiAgcmV0dXJuIG9mZnNldFxufVxuXG4vKiogUmV0dXJucyBhbiBhcnJheSBvZiBEYXRlcyBmb3IgZWFjaCBvZiBtb250aC4gKi9cbmV4cG9ydCBjb25zdCBnZXRNb250aEFycmF5ID0gKCk6IERhdGVbXSA9PiB7XG4gIGNvbnN0IGZpcnN0RGF5T2ZZZWFyID0gbmV3IERhdGUoKVxuICBmaXJzdERheU9mWWVhci5zZXRNb250aCgwKVxuICBmaXJzdERheU9mWWVhci5zZXREYXRlKDEpXG5cbiAgLy8gY3JlYXRlIGEgbmV3IGFycmF5IG9mIGxlbmd0aCAxMixcbiAgLy8gYW5kIGZpbGwgaXQgd2l0aCBkYXRlIG9iamVjdHMgb2YgMTpzdCBvZiBqYW51YXJ5XG4gIGNvbnN0IG1vbnRoQXJyYXk6IERhdGVbXSA9IG5ldyBBcnJheSgxMikuZmlsbChmaXJzdERheU9mWWVhcilcblxuICAvLyBtYXAgdGhyb3VnaCB0aGUgYXJyYXksXG4gIC8vIGFuZCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRhdGUsXG4gIC8vIGNoYW5naW5nIHRoZSBtb250aCBiYXNlZCBvbiBpbmRleCAoMCAtIDExKVxuICByZXR1cm4gbW9udGhBcnJheS5tYXAoKGQ6IERhdGUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZClcbiAgICBkYXRlLnNldE1vbnRoKGluZGV4KVxuICAgIHJldHVybiBkYXRlXG4gIH0pXG59XG5cbi8qKiBSZXR1cm5zIGFuIGFycmF5IG9mIERhdGVzIGZvciB0aGUgY3VycmVudCB5ZWFyIGFuZCB0aGUgbmV4dC4gKi9cbmV4cG9ydCBjb25zdCBnZXRZZWFyQXJyYXkgPSAoKTogRGF0ZVtdID0+IHtcbiAgY29uc3QgY3VycmVudFllYXIgPSBuZXcgRGF0ZSgpXG4gIGN1cnJlbnRZZWFyLnNldE1vbnRoKDApXG4gIGN1cnJlbnRZZWFyLnNldERhdGUoMSlcbiAgY29uc3QgbmV4dFllYXIgPSBuZXcgRGF0ZShjdXJyZW50WWVhcilcbiAgbmV4dFllYXIuc2V0RnVsbFllYXIoY3VycmVudFllYXIuZ2V0RnVsbFllYXIoKSArIDEpXG4gIHJldHVybiBbY3VycmVudFllYXIsIG5leHRZZWFyXVxufVxuXG4vKiogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gZGF0ZXMgaGF2ZSB0aGUgc2FtZSB5ZWFyLCBtb250aCBhbmQgZGF0ZSB2YWx1ZXMuICovXG5leHBvcnQgY29uc3QgbWF0Y2ggPSAoYTogRGF0ZSB8IHVuZGVmaW5lZCwgYjogRGF0ZSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xuICBpZiAoIWEgfHwgIWIpIHJldHVybiBmYWxzZVxuICBpZiAoYS5nZXREYXRlKCkgIT09IGIuZ2V0RGF0ZSgpKSByZXR1cm4gZmFsc2VcbiAgaWYgKGEuZ2V0TW9udGgoKSAhPT0gYi5nZXRNb250aCgpKSByZXR1cm4gZmFsc2VcbiAgaWYgKGEuZ2V0RnVsbFllYXIoKSAhPT0gYi5nZXRGdWxsWWVhcigpKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHRydWVcbn1cblxuZXhwb3J0IGNvbnN0IGFmdGVyQ2xvc2luZ0hvdXJzID0gKGNsb3NpbmdIb3VyczogRGF0ZSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xuICBpZiAoIWNsb3NpbmdIb3VycykgcmV0dXJuIGZhbHNlXG4gIHJldHVybiBEYXRlLm5vdygpID49IGNsb3NpbmdIb3Vycy5nZXRUaW1lKClcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBkYXRlIGlzIGJlZm9yZSBjb250cm9sIGRhdGUsIHJlZ2FyZGxlc3Mgb2YgdGltZS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIGNvbXBhcmlzb24gZGF0ZVxuICogQHBhcmFtIGNvbnRyb2xEYXRlIC0gZGF0ZSB0byBjb21wYXJlIGFnYWluc3RcbiAqIEByZXR1cm5zIC0gdHJ1ZSBpZiB0aGUgY29tcGFyaXNvbiBkYXRlIGlzIGJlZm9yZSB0aGUgY29udHJvbCBkYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBpc0JlZm9yZSA9IChkYXRlOiBEYXRlLCBjb250cm9sRGF0ZTogRGF0ZSk6IGJvb2xlYW4gPT4ge1xuICAvLyBpZiB5ZWFyIHZhbHVlcyBhcmUgZGlzc2ltaWxhclxuICBpZiAoZGF0ZS5nZXRGdWxsWWVhcigpICE9PSBjb250cm9sRGF0ZS5nZXRGdWxsWWVhcigpKSB7XG4gICAgcmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSA8IGNvbnRyb2xEYXRlLmdldEZ1bGxZZWFyKClcbiAgfVxuICAvLyBpZiBtb250aCB2YWx1ZXMgYXJlIGRpc3NpbWlsYXJcbiAgaWYgKGRhdGUuZ2V0TW9udGgoKSAhPT0gY29udHJvbERhdGUuZ2V0TW9udGgoKSkge1xuICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCkgPCBjb250cm9sRGF0ZS5nZXRNb250aCgpXG4gIH1cbiAgLy8gaWYgeWVhciBhbmQgbW9udGggYXJlIGVxdWFsLCBjaGVjayB0aGUgZGF0ZVxuICByZXR1cm4gZGF0ZS5nZXREYXRlKCkgPCBjb250cm9sRGF0ZS5nZXREYXRlKClcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBkYXRlIGlzIGFmdGVyIGNvbnRyb2wgZGF0ZSwgcmVnYXJkbGVzcyBvZiB0aW1lLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gY29tcGFyaXNvbiBkYXRlXG4gKiBAcGFyYW0gY29udHJvbERhdGUgLSBkYXRlIHRvIGNvbXBhcmUgYWdhaW5zdFxuICogQHJldHVybnMgLSB0cnVlIGlmIHRoZSBjb21wYXJpc29uIGRhdGUgaXMgYmVmb3JlIHRoZSBjb250cm9sIGRhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGlzQWZ0ZXIgPSAoZGF0ZTogRGF0ZSwgY29udHJvbERhdGU6IERhdGUpOiBib29sZWFuID0+IHtcbiAgLy8gaWYgeWVhciB2YWx1ZXMgYXJlIGRpc3NpbWlsYXJcbiAgaWYgKGRhdGUuZ2V0RnVsbFllYXIoKSAhPT0gY29udHJvbERhdGUuZ2V0RnVsbFllYXIoKSkge1xuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgPiBjb250cm9sRGF0ZS5nZXRGdWxsWWVhcigpXG4gIH1cbiAgLy8gaWYgbW9udGggdmFsdWVzIGFyZSBkaXNzaW1pbGFyXG4gIGlmIChkYXRlLmdldE1vbnRoKCkgIT09IGNvbnRyb2xEYXRlLmdldE1vbnRoKCkpIHtcbiAgICByZXR1cm4gZGF0ZS5nZXRNb250aCgpID4gY29udHJvbERhdGUuZ2V0TW9udGgoKVxuICB9XG4gIC8vIGlmIHllYXIgYW5kIG1vbnRoIGFyZSBlcXVhbCwgY2hlY2sgdGhlIGRhdGVcbiAgcmV0dXJuIGRhdGUuZ2V0RGF0ZSgpID4gY29udHJvbERhdGUuZ2V0RGF0ZSgpXG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgdmFsdWUgY2FuIGJlIHVzZWQgdG8gaW5pdGlhdGUgYSBuZXcgRGF0ZSBvYmplY3QuXG4gKlxuICogQHBhcmFtIHZhbHVlIGFueSB2YWx1ZVxuICogQHJldHVybnMgLSB0cnVlIGlmIHZhbHVlIGNhbiBiZSBjb2Vyc2VkIHRvIGEgRGF0ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzVmFsaWQgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAvLyBpZiB2YWx1ZSBpcyB0eXBlIG9mIHN0cmluZyBhbmQgY2FuIGJlIHBhcnNlZCB0byBhIERhdGVcbiAgY29uc3QgZGF0ZSA9XG4gICAgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oRGF0ZS5wYXJzZSh2YWx1ZSkpXG4gICAgICA/IG5ldyBEYXRlKHZhbHVlKVxuICAgICAgOiBudWxsXG5cbiAgc3dpdGNoICh0cnVlKSB7XG4gICAgLy8gaWYgZGF0ZSBvciB2YWx1ZSBpcyBhIHZhbGlkIGRhdGUgb2JqZWN0IC0gcmV0dXJuIHZhbGlkXG4gICAgY2FzZSB0eXBlb2YgdmFsdWU/LmdldE1vbnRoID09PSAnZnVuY3Rpb24nOlxuICAgIGNhc2UgdHlwZW9mIGRhdGU/LmdldE1vbnRoID09PSAnZnVuY3Rpb24nOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICAvLyBpZiBkYXRlIG9yIHZhbHVlIGlzIG5vdCBhIHZhbGlkIGRhdGUgb2JqZWN0IC0gcmV0dXJuIGludmFsaWRcbiAgICBjYXNlIHZhbHVlID09IG51bGw6XG4gICAgY2FzZSBkYXRlPy50b1N0cmluZygpID09PSAnSW52YWxpZCBEYXRlJzpcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIl19","import { createMask, } from '@sebgroup/green-angular/src/v-angular/input-mask';\n/**\n * Helper function to generate InputmaskOptions by requested locale.\n * @param locale - requested locale. If not given, it'll use the browsers locale\n * @returns InputmaskOptions with date settings\n */\nexport const getLocaleDateMask = (dateCharacters, locale) => {\n // If no locale has been passed, use browser language\n if (!locale)\n locale = navigator.language;\n const format = getLocaleDateString(locale).toLowerCase();\n return getFormatDateMask(format, dateCharacters);\n};\nexport const getLocaleDateString = (locale) => locale && dateFormats[locale] ? dateFormats[locale] : 'yyyy-MM-dd';\nconst dateFormats = {\n 'af-ZA': 'yyyy/MM/dd',\n 'am-ET': 'dd/MM/yyyy',\n 'ar-AE': 'dd/MM/yyyy',\n 'ar-BH': 'dd/MM/yyyy',\n 'ar-DZ': 'dd-MM-yyyy',\n 'ar-EG': 'dd/MM/yyyy',\n 'ar-IQ': 'dd/MM/yyyy',\n 'ar-JO': 'dd/MM/yyyy',\n 'ar-KW': 'dd/MM/yyyy',\n 'ar-LB': 'dd/MM/yyyy',\n 'ar-LY': 'dd/MM/yyyy',\n 'ar-MA': 'dd-MM-yyyy',\n 'ar-OM': 'dd/MM/yyyy',\n 'ar-QA': 'dd/MM/yyyy',\n 'ar-SA': 'dd/MM/yyyy',\n 'ar-SY': 'dd/MM/yyyy',\n 'ar-TN': 'dd-MM-yyyy',\n 'ar-YE': 'dd/MM/yyyy',\n 'arn-CL': 'dd-MM-yyyy',\n 'as-IN': 'dd-MM-yyyy',\n 'az-Cyrl-AZ': 'dd.MM.yyyy',\n 'az-Latn-AZ': 'dd.MM.yyyy',\n 'ba-RU': 'dd.MM.yyyy',\n 'be-BY': 'dd.MM.yyyy',\n 'bg-BG': 'dd.MM.yyyy',\n 'bn-BD': 'dd-MM-yyyy',\n 'bn-IN': 'dd-MM-yyyy',\n 'bo-CN': 'yyyy/MM/dd',\n 'br-FR': 'dd/MM/yyyy',\n 'bs-Cyrl-BA': 'dd.MM.yyyy',\n 'bs-Latn-BA': 'dd.MM.yyyy',\n 'ca-ES': 'dd/MM/yyyy',\n 'co-FR': 'dd/MM/yyyy',\n 'cs-CZ': 'dd.MM.yyyy',\n 'cy-GB': 'dd/MM/yyyy',\n 'da-DK': 'dd.MM.yyyy',\n 'de-AT': 'dd.MM.yyyy',\n 'de-CH': 'dd.MM.yyyy',\n 'de-DE': 'dd.MM.yyyy',\n 'de-LI': 'dd.MM.yyyy',\n 'de-LU': 'dd.MM.yyyy',\n 'dsb-DE': 'dd.MM.yyyy',\n 'dv-MV': 'dd/MM/yyyy',\n 'el-GR': 'dd/MM/yyyy',\n en: 'MM/dd/yyyy',\n 'en-029': 'MM/dd/yyyy',\n 'en-AU': 'dd/MM/yyyy',\n 'en-BZ': 'dd/MM/yyyy',\n 'en-CA': 'dd/MM/yyyy',\n 'en-GB': 'dd/MM/yyyy',\n 'en-IE': 'dd/MM/yyyy',\n 'en-IN': 'dd-MM-yyyy',\n 'en-JM': 'dd/MM/yyyy',\n 'en-MY': 'dd/MM/yyyy',\n 'en-NZ': 'dd/MM/yyyy',\n 'en-PH': 'MM/dd/yyyy',\n 'en-SG': 'dd/MM/yyyy',\n 'en-TT': 'dd/MM/yyyy',\n 'en-US': 'MM/dd/yyyy',\n 'en-ZA': 'yyyy/MM/dd',\n 'en-ZW': 'MM/dd/yyyy',\n 'es-AR': 'dd/MM/yyyy',\n 'es-BO': 'dd/MM/yyyy',\n 'es-CL': 'dd-MM-yyyy',\n 'es-CO': 'dd/MM/yyyy',\n 'es-CR': 'dd/MM/yyyy',\n 'es-DO': 'dd/MM/yyyy',\n 'es-EC': 'dd/MM/yyyy',\n 'es-ES': 'dd/MM/yyyy',\n 'es-GT': 'dd/MM/yyyy',\n 'es-HN': 'dd/MM/yyyy',\n 'es-MX': 'dd/MM/yyyy',\n 'es-NI': 'dd/MM/yyyy',\n 'es-PA': 'MM/dd/yyyy',\n 'es-PE': 'dd/MM/yyyy',\n 'es-PR': 'dd/MM/yyyy',\n 'es-PY': 'dd/MM/yyyy',\n 'es-SV': 'dd/MM/yyyy',\n 'es-US': 'MM/dd/yyyy',\n 'es-UY': 'dd/MM/yyyy',\n 'es-VE': 'dd/MM/yyyy',\n 'et-EE': 'dd.MM.yyyy',\n 'eu-ES': 'yyyy/MM/dd',\n 'fa-IR': 'MM/dd/yyyy',\n 'fi-FI': 'dd.MM.yyyy',\n 'fil-PH': 'MM/dd/yyyy',\n 'fo-FO': 'dd-MM-yyyy',\n 'fr-BE': 'dd/MM/yyyy',\n 'fr-CA': 'yyyy-MM-dd',\n 'fr-CH': 'dd.MM.yyyy',\n 'fr-FR': 'dd/MM/yyyy',\n 'fr-LU': 'dd/MM/yyyy',\n 'fr-MC': 'dd/MM/yyyy',\n 'fy-NL': 'dd-MM-yyyy',\n 'ga-IE': 'dd/MM/yyyy',\n 'gd-GB': 'dd/MM/yyyy',\n 'gl-ES': 'dd/MM/yyyy',\n 'gsw-FR': 'dd/MM/yyyy',\n 'gu-IN': 'dd-MM-yyyy',\n 'ha-Latn-NG': 'dd/MM/yyyy',\n 'he-IL': 'dd/MM/yyyy',\n 'hi-IN': 'dd-MM-yyyy',\n 'hr-BA': 'dd.MM.yyyy.',\n 'hr-HR': 'dd.MM.yyyy',\n 'hsb-DE': 'dd.MM.yyyy',\n 'hu-HU': 'yyyy.MM.dd.',\n 'hy-AM': 'dd.MM.yyyy',\n 'id-ID': 'dd/MM/yyyy',\n 'ig-NG': 'dd/MM/yyyy',\n 'ii-CN': 'yyyy/MM/dd',\n 'is-IS': 'dd.MM.yyyy',\n 'it-CH': 'dd.MM.yyyy',\n 'it-IT': 'dd/MM/yyyy',\n 'iu-Cans-CA': 'dd/MM/yyyy',\n 'iu-Latn-CA': 'dd/MM/yyyy',\n 'ja-JP': 'yyyy/MM/dd',\n 'ka-GE': 'dd.MM.yyyy',\n 'kk-KZ': 'dd.MM.yyyy',\n 'kl-GL': 'dd-MM-yyyy',\n 'km-KH': 'yyyy-MM-dd',\n 'kn-IN': 'dd-MM-yyyy',\n 'ko-KR': 'yyyy.MM.dd',\n 'kok-IN': 'dd-MM-yyyy',\n 'ky-KG': 'dd.MM.yyyy',\n 'lb-LU': 'dd/MM/yyyy',\n 'lo-LA': 'dd/MM/yyyy',\n 'lt-LT': 'yyyy.MM.dd',\n 'lv-LV': 'yyyy.MM.dd.',\n 'mi-NZ': 'dd/MM/yyyy',\n 'mk-MK': 'dd.MM.yyyy',\n 'ml-IN': 'dd-MM-yyyy',\n 'mn-MN': 'yyyy.MM.dd',\n 'mn-Mong-CN': 'yyyy/MM/dd',\n 'moh-CA': 'MM/dd/yyyy',\n 'mr-IN': 'dd-MM-yyyy',\n 'ms-BN': 'dd/MM/yyyy',\n 'ms-MY': 'dd/MM/yyyy',\n 'mt-MT': 'dd/MM/yyyy',\n 'nb-NO': 'dd.MM.yyyy',\n 'ne-NP': 'MM/dd/yyyy',\n 'nl-BE': 'dd/MM/yyyy',\n 'nl-NL': 'dd-MM-yyyy',\n 'nn-NO': 'dd.MM.yyyy',\n 'nso-ZA': 'yyyy/MM/dd',\n 'oc-FR': 'dd/MM/yyyy',\n 'or-IN': 'dd-MM-yyyy',\n 'pa-IN': 'dd-MM-yyyy',\n 'pl-PL': 'dd.MM.yyyy',\n 'prs-AF': 'dd/MM/yyyy',\n 'ps-AF': 'dd/MM/yyyy',\n 'pt-BR': 'dd/MM/yyyy',\n 'pt-PT': 'dd-MM-yyyy',\n 'qut-GT': 'dd/MM/yyyy',\n 'quz-BO': 'dd/MM/yyyy',\n 'quz-EC': 'dd/MM/yyyy',\n 'quz-PE': 'dd/MM/yyyy',\n 'rm-CH': 'dd/MM/yyyy',\n 'ro-RO': 'dd.MM.yyyy',\n 'ru-RU': 'dd.MM.yyyy',\n 'rw-RW': 'MM/dd/yyyy',\n 'sa-IN': 'dd-MM-yyyy',\n 'sah-RU': 'MM.dd.yyyy',\n se: 'yyyy-MM-dd',\n 'se-FI': 'dd.MM.yyyy',\n 'se-NO': 'dd.MM.yyyy',\n 'se-SE': 'yyyy-MM-dd',\n 'si-LK': 'yyyy-MM-dd',\n 'sk-SK': 'dd.MM.yyyy',\n 'sl-SI': 'dd.MM.yyyy',\n 'sma-NO': 'dd.MM.yyyy',\n 'sma-SE': 'yyyy-MM-dd',\n 'smj-NO': 'dd.MM.yyyy',\n 'smj-SE': 'yyyy-MM-dd',\n 'smn-FI': 'dd.MM.yyyy',\n 'sms-FI': 'dd.MM.yyyy',\n 'sq-AL': 'yyyy-MM-dd',\n 'sr-Cyrl-BA': 'dd.MM.yyyy',\n 'sr-Cyrl-CS': 'dd.MM.yyyy',\n 'sr-Cyrl-ME': 'dd.MM.yyyy',\n 'sr-Cyrl-RS': 'dd.MM.yyyy',\n 'sr-Latn-BA': 'dd.MM.yyyy',\n 'sr-Latn-CS': 'dd.MM.yyyy',\n 'sr-Latn-ME': 'dd.MM.yyyy',\n 'sr-Latn-RS': 'dd.MM.yyyy',\n sv: 'yyyy-MM-dd',\n 'sv-FI': 'dd.MM.yyyy',\n 'sv-SE': 'yyyy-MM-dd',\n 'sw-KE': 'MM/dd/yyyy',\n 'syr-SY': 'dd/MM/yyyy',\n 'ta-IN': 'dd-MM-yyyy',\n 'te-IN': 'dd-MM-yyyy',\n 'tg-Cyrl-TJ': 'dd.MM.yyyy',\n 'th-TH': 'dd/MM/yyyy',\n 'tk-TM': 'dd.MM.yyyy',\n 'tn-ZA': 'yyyy/MM/dd',\n 'tr-TR': 'dd.MM.yyyy',\n 'tt-RU': 'dd.MM.yyyy',\n 'tzm-Latn-DZ': 'dd-MM-yyyy',\n 'ug-CN': 'yyyy-MM-dd',\n 'uk-UA': 'dd.MM.yyyy',\n 'ur-PK': 'dd/MM/yyyy',\n 'uz-Cyrl-UZ': 'dd.MM.yyyy',\n 'uz-Latn-UZ': 'dd/MM yyyy',\n 'vi-VN': 'dd/MM/yyyy',\n 'wo-SN': 'dd/MM/yyyy',\n 'xh-ZA': 'yyyy/MM/dd',\n 'yo-NG': 'dd/MM/yyyy',\n 'zh-CN': 'yyyy/MM/dd',\n 'zh-HK': 'dd/MM/yyyy',\n 'zh-MO': 'dd/MM/yyyy',\n 'zh-SG': 'dd/MM/yyyy',\n 'zh-TW': 'yyyy/MM/dd',\n 'zu-ZA': 'yyyy/MM/dd',\n};\nexport const getFormatDateMask = (format, dateCharacters) => {\n const separators = [' ', '.', '-', '/'];\n const separator = separators.find((operator) => format.indexOf(operator) > -1) ?? '-';\n const dateObjects = format.split(separator);\n const year = { key: 'year', index: 0 }, month = { key: 'month', index: 1 }, day = { key: 'day', index: 2 };\n dateObjects.forEach((dateObject, index) => {\n switch (dateObject[0]) {\n case 'y':\n year.index = index;\n break;\n case 'm':\n month.index = index;\n break;\n case 'd':\n day.index = index;\n break;\n }\n });\n const placeholder = setDateFormatCharacters(format, dateCharacters);\n return createMask({\n alias: 'datetime',\n inputFormat: format,\n placeholder,\n parser: (value) => {\n const values = value.split(separator);\n const y = +values[year.index];\n const m = +values[month.index] - 1;\n const d = +values[day.index];\n return new Date(y, m, d);\n },\n onBeforeMask(initialValue) {\n if (!initialValue || typeof initialValue !== 'string')\n return '';\n // If initialValues is in dateTime format, remove seconds that present after the \"T\"\n if (initialValue.includes('T'))\n initialValue = initialValue.split('T')[0];\n // initialValue should always be in yyyy-mm-dd no matter if set from control, via datepicker or manually with keyboard\n const values = initialValue.split('-');\n const datePartsInOrder = [year, month, day].sort((a, b) => a.index - b.index);\n // \"Insert\" correct values for the year/month/day, then join to string with separator\n return datePartsInOrder\n .map(({ key }) => {\n const [yearValue, monthValue, dateValue] = values;\n if (key === 'year')\n return yearValue;\n if (key === 'month')\n return monthValue;\n return dateValue;\n })\n .join(separator);\n },\n });\n};\nexport const setDateFormatCharacters = (format, dateCharacters) => {\n if (!dateCharacters)\n return format;\n format = format.replace(/y/g, dateCharacters.year);\n format = format.replace(/m/g, dateCharacters.month);\n format = format.replace(/d/g, dateCharacters.day);\n return format;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL21vZGVscy9kYXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxHQUVYLE1BQU0sa0RBQWtELENBQUE7QUFFekQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQy9CLGNBQStCLEVBQy9CLE1BQWUsRUFDUyxFQUFFO0lBQzFCLHFEQUFxRDtJQUNyRCxJQUFJLENBQUMsTUFBTTtRQUFFLE1BQU0sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFBO0lBRXhDLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBRXhELE9BQU8saUJBQWlCLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFBO0FBQ2xELENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsTUFBZSxFQUFFLEVBQUUsQ0FDckQsTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUE7QUFDcEUsTUFBTSxXQUFXLEdBQTJCO0lBQzFDLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLEVBQUUsRUFBRSxZQUFZO0lBQ2hCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLEVBQUUsRUFBRSxZQUFZO0lBQ2hCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlBQVksRUFBRSxZQUFZO0lBQzFCLFlB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O0tBQ0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBT0QsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FDckMsTUFBYyxFQUNkLGNBQStCLEVBQy9CLEVBQUU7SUFDRixJQUFJLENBQUMsY0FBYztRQUFFLE9BQU8sTUFBTSxDQUFBO0lBQ2xDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNuRCxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2pELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlTWFzayxcbiAgSW5wdXRtYXNrT3B0aW9ucyxcbn0gZnJvbSAnQHNlYmdyb3VwL2dyZWVuLWFuZ3VsYXIvc3JjL3YtYW5ndWxhci9pbnB1dC1tYXNrJ1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byBnZW5lcmF0ZSBJbnB1dG1hc2tPcHRpb25zIGJ5IHJlcXVlc3RlZCBsb2NhbGUuXG4gKiBAcGFyYW0gbG9jYWxlIC0gcmVxdWVzdGVkIGxvY2FsZS4gSWYgbm90IGdpdmVuLCBpdCdsbCB1c2UgdGhlIGJyb3dzZXJzIGxvY2FsZVxuICogQHJldHVybnMgSW5wdXRtYXNrT3B0aW9ucyB3aXRoIGRhdGUgc2V0dGluZ3NcbiAqL1xuZXhwb3J0IGNvbnN0IGdldExvY2FsZURhdGVNYXNrID0gKFxuICBkYXRlQ2hhcmFjdGVycz86IERhdGVDaGFyYWN0ZXJzLFxuICBsb2NhbGU/OiBzdHJpbmcsXG4pOiBJbnB1dG1hc2tPcHRpb25zPERhdGU+ID0+IHtcbiAgLy8gSWYgbm8gbG9jYWxlIGhhcyBiZWVuIHBhc3NlZCwgdXNlIGJyb3dzZXIgbGFuZ3VhZ2VcbiAgaWYgKCFsb2NhbGUpIGxvY2FsZSA9IG5hdmlnYXRvci5sYW5ndWFnZVxuXG4gIGNvbnN0IGZvcm1hdCA9IGdldExvY2FsZURhdGVTdHJpbmcobG9jYWxlKS50b0xvd2VyQ2FzZSgpXG5cbiAgcmV0dXJuIGdldEZvcm1hdERhdGVNYXNrKGZvcm1hdCwgZGF0ZUNoYXJhY3RlcnMpXG59XG5cbmV4cG9ydCBjb25zdCBnZXRMb2NhbGVEYXRlU3RyaW5nID0gKGxvY2FsZT86IHN0cmluZykgPT5cbiAgbG9jYWxlICYmIGRhdGVGb3JtYXRzW2xvY2FsZV0gPyBkYXRlRm9ybWF0c1tsb2NhbGVdIDogJ3l5eXktTU0tZGQnXG5jb25zdCBkYXRlRm9ybWF0czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ2FmLVpBJzogJ3l5eXkvTU0vZGQnLFxuICAnYW0tRVQnOiAnZGQvTU0veXl5eScsXG4gICdhci1BRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2FyLUJIJzogJ2RkL01NL3l5eXknLFxuICAnYXItRFonOiAnZGQtTU0teXl5eScsXG4gICdhci1FRyc6ICdkZC9NTS95eXl5JyxcbiAgJ2FyLUlRJzogJ2RkL01NL3l5eXknLFxuICAnYXItSk8nOiAnZGQvTU0veXl5eScsXG4gICdhci1LVyc6ICdkZC9NTS95eXl5JyxcbiAgJ2FyLUxCJzogJ2RkL01NL3l5eXknLFxuICAnYXItTFknOiAnZGQvTU0veXl5eScsXG4gICdhci1NQSc6ICdkZC1NTS15eXl5JyxcbiAgJ2FyLU9NJzogJ2RkL01NL3l5eXknLFxuICAnYXItUUEnOiAnZGQvTU0veXl5eScsXG4gICdhci1TQSc6ICdkZC9NTS95eXl5JyxcbiAgJ2FyLVNZJzogJ2RkL01NL3l5eXknLFxuICAnYXItVE4nOiAnZGQtTU0teXl5eScsXG4gICdhci1ZRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2Fybi1DTCc6ICdkZC1NTS15eXl5JyxcbiAgJ2FzLUlOJzogJ2RkLU1NLXl5eXknLFxuICAnYXotQ3lybC1BWic6ICdkZC5NTS55eXl5JyxcbiAgJ2F6LUxhdG4tQVonOiAnZGQuTU0ueXl5eScsXG4gICdiYS1SVSc6ICdkZC5NTS55eXl5JyxcbiAgJ2JlLUJZJzogJ2RkLk1NLnl5eXknLFxuICAnYmctQkcnOiAnZGQuTU0ueXl5eScsXG4gICdibi1CRCc6ICdkZC1NTS15eXl5JyxcbiAgJ2JuLUlOJzogJ2RkLU1NLXl5eXknLFxuICAnYm8tQ04nOiAneXl5eS9NTS9kZCcsXG4gICdici1GUic6ICdkZC9NTS95eXl5JyxcbiAgJ2JzLUN5cmwtQkEnOiAnZGQuTU0ueXl5eScsXG4gICdicy1MYXRuLUJBJzogJ2RkLk1NLnl5eXknLFxuICAnY2EtRVMnOiAnZGQvTU0veXl5eScsXG4gICdjby1GUic6ICdkZC9NTS95eXl5JyxcbiAgJ2NzLUNaJzogJ2RkLk1NLnl5eXknLFxuICAnY3ktR0InOiAnZGQvTU0veXl5eScsXG4gICdkYS1ESyc6ICdkZC5NTS55eXl5JyxcbiAgJ2RlLUFUJzogJ2RkLk1NLnl5eXknLFxuICAnZGUtQ0gnOiAnZGQuTU0ueXl5eScsXG4gICdkZS1ERSc6ICdkZC5NTS55eXl5JyxcbiAgJ2RlLUxJJzogJ2RkLk1NLnl5eXknLFxuICAnZGUtTFUnOiAnZGQuTU0ueXl5eScsXG4gICdkc2ItREUnOiAnZGQuTU0ueXl5eScsXG4gICdkdi1NVic6ICdkZC9NTS95eXl5JyxcbiAgJ2VsLUdSJzogJ2RkL01NL3l5eXknLFxuICBlbjogJ01NL2RkL3l5eXknLFxuICAnZW4tMDI5JzogJ01NL2RkL3l5eXknLFxuICAnZW4tQVUnOiAnZGQvTU0veXl5eScsXG4gICdlbi1CWic6ICdkZC9NTS95eXl5JyxcbiAgJ2VuLUNBJzogJ2RkL01NL3l5eXknLFxuICAnZW4tR0InOiAnZGQvTU0veXl5eScsXG4gICdlbi1JRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2VuLUlOJzogJ2RkLU1NLXl5eXknLFxuICAnZW4tSk0nOiAnZGQvTU0veXl5eScsXG4gICdlbi1NWSc6ICdkZC9NTS95eXl5JyxcbiAgJ2VuLU5aJzogJ2RkL01NL3l5eXknLFxuICAnZW4tUEgnOiAnTU0vZGQveXl5eScsXG4gICdlbi1TRyc6ICdkZC9NTS95eXl5JyxcbiAgJ2VuLVRUJzogJ2RkL01NL3l5eXknLFxuICAnZW4tVVMnOiAnTU0vZGQveXl5eScsXG4gICdlbi1aQSc6ICd5eXl5L01NL2RkJyxcbiAgJ2VuLVpXJzogJ01NL2RkL3l5eXknLFxuICAnZXMtQVInOiAnZGQvTU0veXl5eScsXG4gICdlcy1CTyc6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLUNMJzogJ2RkLU1NLXl5eXknLFxuICAnZXMtQ08nOiAnZGQvTU0veXl5eScsXG4gICdlcy1DUic6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLURPJzogJ2RkL01NL3l5eXknLFxuICAnZXMtRUMnOiAnZGQvTU0veXl5eScsXG4gICdlcy1FUyc6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLUdUJzogJ2RkL01NL3l5eXknLFxuICAnZXMtSE4nOiAnZGQvTU0veXl5eScsXG4gICdlcy1NWCc6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLU5JJzogJ2RkL01NL3l5eXknLFxuICAnZXMtUEEnOiAnTU0vZGQveXl5eScsXG4gICdlcy1QRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLVBSJzogJ2RkL01NL3l5eXknLFxuICAnZXMtUFknOiAnZGQvTU0veXl5eScsXG4gICdlcy1TVic6ICdkZC9NTS95eXl5JyxcbiAgJ2VzLVVTJzogJ01NL2RkL3l5eXknLFxuICAnZXMtVVknOiAnZGQvTU0veXl5eScsXG4gICdlcy1WRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2V0LUVFJzogJ2RkLk1NLnl5eXknLFxuICAnZXUtRVMnOiAneXl5eS9NTS9kZCcsXG4gICdmYS1JUic6ICdNTS9kZC95eXl5JyxcbiAgJ2ZpLUZJJzogJ2RkLk1NLnl5eXknLFxuICAnZmlsLVBIJzogJ01NL2RkL3l5eXknLFxuICAnZm8tRk8nOiAnZGQtTU0teXl5eScsXG4gICdmci1CRSc6ICdkZC9NTS95eXl5JyxcbiAgJ2ZyLUNBJzogJ3l5eXktTU0tZGQnLFxuICAnZnItQ0gnOiAnZGQuTU0ueXl5eScsXG4gICdmci1GUic6ICdkZC9NTS95eXl5JyxcbiAgJ2ZyLUxVJzogJ2RkL01NL3l5eXknLFxuICAnZnItTUMnOiAnZGQvTU0veXl5eScsXG4gICdmeS1OTCc6ICdkZC1NTS15eXl5JyxcbiAgJ2dhLUlFJzogJ2RkL01NL3l5eXknLFxuICAnZ2QtR0InOiAnZGQvTU0veXl5eScsXG4gICdnbC1FUyc6ICdkZC9NTS95eXl5JyxcbiAgJ2dzdy1GUic6ICdkZC9NTS95eXl5JyxcbiAgJ2d1LUlOJzogJ2RkLU1NLXl5eXknLFxuICAnaGEtTGF0bi1ORyc6ICdkZC9NTS95eXl5JyxcbiAgJ2hlLUlMJzogJ2RkL01NL3l5eXknLFxuICAnaGktSU4nOiAnZGQtTU0teXl5eScsXG4gICdoci1CQSc6ICdkZC5NTS55eXl5LicsXG4gICdoci1IUic6ICdkZC5NTS55eXl5JyxcbiAgJ2hzYi1ERSc6ICdkZC5NTS55eXl5JyxcbiAgJ2h1LUhVJzogJ3l5eXkuTU0uZGQuJyxcbiAgJ2h5LUFNJzogJ2RkLk1NLnl5eXknLFxuICAnaWQtSUQnOiAnZGQvTU0veXl5eScsXG4gICdpZy1ORyc6ICdkZC9NTS95eXl5JyxcbiAgJ2lpLUNOJzogJ3l5eXkvTU0vZGQnLFxuICAnaXMtSVMnOiAnZGQuTU0ueXl5eScsXG4gICdpdC1DSCc6ICdkZC5NTS55eXl5JyxcbiAgJ2l0LUlUJzogJ2RkL01NL3l5eXknLFxuICAnaXUtQ2Fucy1DQSc6ICdkZC9NTS95eXl5JyxcbiAgJ2l1LUxhdG4tQ0EnOiAnZGQvTU0veXl5eScsXG4gICdqYS1KUCc6ICd5eXl5L01NL2RkJyxcbiAgJ2thLUdFJzogJ2RkLk1NLnl5eXknLFxuICAna2stS1onOiAnZGQuTU0ueXl5eScsXG4gICdrbC1HTCc6ICdkZC1NTS15eXl5JyxcbiAgJ2ttLUtIJzogJ3l5eXktTU0tZGQnLFxuICAna24tSU4nOiAnZGQtTU0teXl5eScsXG4gICdrby1LUic6ICd5eXl5Lk1NLmRkJyxcbiAgJ2tvay1JTic6ICdkZC1NTS15eXl5JyxcbiAgJ2t5LUtHJzogJ2RkLk1NLnl5eXknLFxuICAnbGItTFUnOiAnZGQvTU0veXl5eScsXG4gICdsby1MQSc6ICdkZC9NTS95eXl5JyxcbiAgJ2x0LUxUJzogJ3l5eXkuTU0uZGQnLFxuICAnbHYtTFYnOiAneXl5eS5NTS5kZC4nLFxuICAnbWktTlonOiAnZGQvTU0veXl5eScsXG4gICdtay1NSyc6ICdkZC5NTS55eXl5JyxcbiAgJ21sLUlOJzogJ2RkLU1NLXl5eXknLFxuICAnbW4tTU4nOiAneXl5eS5NTS5kZCcsXG4gICdtbi1Nb25nLUNOJzogJ3l5eXkvTU0vZGQnLFxuICAnbW9oLUNBJzogJ01NL2RkL3l5eXknLFxuICAnbXItSU4nOiAnZGQtTU0teXl5eScsXG4gICdtcy1CTic6ICdkZC9NTS95eXl5JyxcbiAgJ21zLU1ZJzogJ2RkL01NL3l5eXknLFxuICAnbXQtTVQnOiAnZGQvTU0veXl5eScsXG4gICduYi1OTyc6ICdkZC5NTS55eXl5JyxcbiAgJ25lLU5QJzogJ01NL2RkL3l5eXknLFxuICAnbmwtQkUnOiAnZGQvTU0veXl5eScsXG4gICdubC1OTCc6ICdkZC1NTS15eXl5JyxcbiAgJ25uLU5PJzogJ2RkLk1NLnl5eXknLFxuICAnbnNvLVpBJzogJ3l5eXkvTU0vZGQnLFxuICAnb2MtRlInOiAnZGQvTU0veXl5eScsXG4gICdvci1JTic6ICdkZC1NTS15eXl5JyxcbiAgJ3BhLUlOJzogJ2RkLU1NLXl5eXknLFxuICAncGwtUEwnOiAnZGQuTU0ueXl5eScsXG4gICdwcnMtQUYnOiAnZGQvTU0veXl5eScsXG4gICdwcy1BRic6ICdkZC9NTS95eXl5JyxcbiAgJ3B0LUJSJzogJ2RkL01NL3l5eXknLFxuICAncHQtUFQnOiAnZGQtTU0teXl5eScsXG4gICdxdXQtR1QnOiAnZGQvTU0veXl5eScsXG4gICdxdXotQk8nOiAnZGQvTU0veXl5eScsXG4gICdxdXotRUMnOiAnZGQvTU0veXl5eScsXG4gICdxdXotUEUnOiAnZGQvTU0veXl5eScsXG4gICdybS1DSCc6ICdkZC9NTS95eXl5JyxcbiAgJ3JvLVJPJzogJ2RkLk1NLnl5eXknLFxuICAncnUtUlUnOiAnZGQuTU0ueXl5eScsXG4gICdydy1SVyc6ICdNTS9kZC95eXl5JyxcbiAgJ3NhLUlOJzogJ2RkLU1NLXl5eXknLFxuICAnc2FoLVJVJzogJ01NLmRkLnl5eXknLFxuICBzZTogJ3l5eXktTU0tZGQnLFxuICAnc2UtRkknOiAnZGQuTU0ueXl5eScsXG4gICdzZS1OTyc6ICdkZC5NTS55eXl5JyxcbiAgJ3NlLVNFJzogJ3l5eXktTU0tZGQnLFxuICAnc2ktTEsnOiAneXl5eS1NTS1kZCcsXG4gICdzay1TSyc6ICdkZC5NTS55eXl5JyxcbiAgJ3NsLVNJJzogJ2RkLk1NLnl5eXknLFxuICAnc21hLU5PJzogJ2RkLk1NLnl5eXknLFxuICAnc21hLVNFJzogJ3l5eXktTU0tZGQnLFxuICAnc21qLU5PJzogJ2RkLk1NLnl5eXknLFxuICAnc21qLVNFJzogJ3l5eXktTU0tZGQnLFxuICAnc21uLUZJJzogJ2RkLk1NLnl5eXknLFxuICAnc21zLUZJJzogJ2RkLk1NLnl5eXknLFxuICAnc3EtQUwnOiAneXl5eS1NTS1kZCcsXG4gICdzci1DeXJsLUJBJzogJ2RkLk1NLnl5eXknLFxuICAnc3ItQ3lybC1DUyc6ICdkZC5NTS55eXl5JyxcbiAgJ3NyLUN5cmwtTUUnOiAnZGQuTU0ueXl5eScsXG4gICdzci1DeXJsLVJTJzogJ2RkLk1NLnl5eXknLFxuICAnc3ItTGF0bi1CQSc6ICdkZC5NTS55eXl5JyxcbiAgJ3NyLUxhdG4tQ1MnOiAnZGQuTU0ueXl5eScsXG4gICdzci1MYXRuLU1FJzogJ2RkLk1NLnl5eXknLFxuICAnc3ItTGF0bi1SUyc6ICdkZC5NTS55eXl5JyxcbiAgc3Y6ICd5eXl5LU1NLWRkJyxcbiAgJ3N2LUZJJzogJ2RkLk1NLnl5eXknLFxuICAnc3YtU0UnOiAneXl5eS1NTS1kZCcsXG4gICdzdy1LRSc6ICdNTS9kZC95eXl5JyxcbiAgJ3N5ci1TWSc6ICdkZC9NTS95eXl5JyxcbiAgJ3RhLUlOJzogJ2RkLU1NLXl5eXknLFxuICAndGUtSU4nOiAnZGQtTU0teXl5eScsXG4gICd0Zy1DeXJsLVRKJzogJ2RkLk1NLnl5eXknLFxuICAndGgtVEgnOiAnZGQvTU0veXl5eScsXG4gICd0ay1UTSc6ICdkZC5NTS55eXl5JyxcbiAgJ3RuLVpBJzogJ3l5eXkvTU0vZGQnLFxuICAndHItVFInOiAnZGQuTU0ueXl5eScsXG4gICd0dC1SVSc6ICdkZC5NTS55eXl5JyxcbiAgJ3R6bS1MYXRuLURaJzogJ2RkLU1NLXl5eXknLFxuICAndWctQ04nOiAneXl5eS1NTS1kZCcsXG4gICd1ay1VQSc6ICdkZC5NTS55eXl5JyxcbiAgJ3VyLVBLJzogJ2RkL01NL3l5eXknLFxuICAndXotQ3lybC1VWic6ICdkZC5NTS55eXl5JyxcbiAgJ3V6LUxhdG4tVVonOiAnZGQvTU0geXl5eScsXG4gICd2aS1WTic6ICdkZC9NTS95eXl5JyxcbiAgJ3dvLVNOJzogJ2RkL01NL3l5eXknLFxuICAneGgtWkEnOiAneXl5eS9NTS9kZCcsXG4gICd5by1ORyc6ICdkZC9NTS95eXl5JyxcbiAgJ3poLUNOJzogJ3l5eXkvTU0vZGQnLFxuICAnemgtSEsnOiAnZGQvTU0veXl5eScsXG4gICd6aC1NTyc6ICdkZC9NTS95eXl5JyxcbiAgJ3poLVNHJzogJ2RkL01NL3l5eXknLFxuICAnemgtVFcnOiAneXl5eS9NTS9kZCcsXG4gICd6dS1aQSc6ICd5eXl5L01NL2RkJyxcbn1cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXREYXRlTWFzayA9IChcbiAgZm9ybWF0OiBzdHJpbmcsXG4gIGRhdGVDaGFyYWN0ZXJzPzogRGF0ZUNoYXJhY3RlcnMsXG4pID0+IHtcbiAgY29uc3Qgc2VwYXJhdG9ycyA9IFsnICcsICcuJywgJy0nLCAnLyddXG4gIGNvbnN0IHNlcGFyYXRvciA9XG4gICAgc2VwYXJhdG9ycy5maW5kKChvcGVyYXRvcikgPT4gZm9ybWF0LmluZGV4T2Yob3BlcmF0b3IpID4gLTEpID8/ICctJ1xuICBjb25zdCBkYXRlT2JqZWN0cyA9IGZvcm1hdC5zcGxpdChzZXBhcmF0b3IpXG4gIGNvbnN0IHllYXI6IHsga2V5OiBzdHJpbmc7IGluZGV4OiBudW1iZXIgfSA9IHsga2V5OiAneWVhcicsIGluZGV4OiAwIH0sXG4gICAgbW9udGg6IHsga2V5OiBzdHJpbmc7IGluZGV4OiBudW1iZXIgfSA9IHsga2V5OiAnbW9udGgnLCBpbmRleDogMSB9LFxuICAgIGRheTogeyBrZXk6IHN0cmluZzsgaW5kZXg6IG51bWJlciB9ID0geyBrZXk6ICdkYXknLCBpbmRleDogMiB9XG5cbiAgZGF0ZU9iamVjdHMuZm9yRWFjaCgoZGF0ZU9iamVjdCwgaW5kZXgpID0+IHtcbiAgICBzd2l0Y2ggKGRhdGVPYmplY3RbMF0pIHtcbiAgICAgIGNhc2UgJ3knOlxuICAgICAgICB5ZWFyLmluZGV4ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ20nOlxuICAgICAgICBtb250aC5pbmRleCA9IGluZGV4XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdkJzpcbiAgICAgICAgZGF5LmluZGV4ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH0pXG4gIGNvbnN0IHBsYWNlaG9sZGVyID0gc2V0RGF0ZUZvcm1hdENoYXJhY3RlcnMoZm9ybWF0LCBkYXRlQ2hhcmFjdGVycylcblxuICByZXR1cm4gY3JlYXRlTWFzazxEYXRlPih7XG4gICAgYWxpYXM6ICdkYXRldGltZScsXG4gICAgaW5wdXRGb3JtYXQ6IGZvcm1hdCxcbiAgICBwbGFjZWhvbGRlcixcbiAgICBwYXJzZXI6ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB2YWx1ZS5zcGxpdChzZXBhcmF0b3IpXG4gICAgICBjb25zdCB5ID0gK3ZhbHVlc1t5ZWFyLmluZGV4XVxuICAgICAgY29uc3QgbSA9ICt2YWx1ZXNbbW9udGguaW5kZXhdIC0gMVxuICAgICAgY29uc3QgZCA9ICt2YWx1ZXNbZGF5LmluZGV4XVxuICAgICAgcmV0dXJuIG5ldyBEYXRlKHksIG0sIGQpXG4gICAgfSxcbiAgICBvbkJlZm9yZU1hc2soaW5pdGlhbFZhbHVlOiBzdHJpbmcpIHtcbiAgICAgIGlmICghaW5pdGlhbFZhbHVlIHx8IHR5cGVvZiBpbml0aWFsVmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm4gJydcbiAgICAgIC8vIElmIGluaXRpYWxWYWx1ZXMgaXMgaW4gZGF0ZVRpbWUgZm9ybWF0LCByZW1vdmUgc2Vjb25kcyB0aGF0IHByZXNlbnQgYWZ0ZXIgdGhlIFwiVFwiXG4gICAgICBpZiAoaW5pdGlhbFZhbHVlLmluY2x1ZGVzKCdUJykpIGluaXRpYWxWYWx1ZSA9IGluaXRpYWxWYWx1ZS5zcGxpdCgnVCcpWzBdXG4gICAgICAvLyBpbml0aWFsVmFsdWUgc2hvdWxkIGFsd2F5cyBiZSBpbiB5eXl5LW1tLWRkIG5vIG1hdHRlciBpZiBzZXQgZnJvbSBjb250cm9sLCB2aWEgZGF0ZXBpY2tlciBvciBtYW51YWxseSB3aXRoIGtleWJvYXJkXG4gICAgICBjb25zdCB2YWx1ZXMgPSBpbml0aWFsVmFsdWUuc3BsaXQoJy0nKVxuICAgICAgY29uc3QgZGF0ZVBhcnRzSW5PcmRlciA9IFt5ZWFyLCBtb250aCwgZGF5XS5zb3J0KFxuICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXG4gICAgICApXG4gICAgICAvLyBcIkluc2VydFwiIGNvcnJlY3QgdmFsdWVzIGZvciB0aGUgeWVhci9tb250aC9kYXksIHRoZW4gam9pbiB0byBzdHJpbmcgd2l0aCBzZXBhcmF0b3JcbiAgICAgIHJldHVybiBkYXRlUGFydHNJbk9yZGVyXG4gICAgICAgIC5tYXAoKHsga2V5IH0pID0+IHtcbiAgICAgICAgICBjb25zdCBbeWVhclZhbHVlLCBtb250aFZhbHVlLCBkYXRlVmFsdWVdID0gdmFsdWVzXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3llYXInKSByZXR1cm4geWVhclZhbHVlXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ21vbnRoJykgcmV0dXJuIG1vbnRoVmFsdWVcbiAgICAgICAgICByZXR1cm4gZGF0ZVZhbHVlXG4gICAgICAgIH0pXG4gICAgICAgIC5qb2luKHNlcGFyYXRvcilcbiAgICB9LFxuICB9KVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVDaGFyYWN0ZXJzIHtcbiAgeWVhcjogc3RyaW5nXG4gIG1vbnRoOiBzdHJpbmdcbiAgZGF5OiBzdHJpbmdcbn1cbmV4cG9ydCBjb25zdCBzZXREYXRlRm9ybWF0Q2hhcmFjdGVycyA9IChcbiAgZm9ybWF0OiBzdHJpbmcsXG4gIGRhdGVDaGFyYWN0ZXJzPzogRGF0ZUNoYXJhY3RlcnMsXG4pID0+IHtcbiAgaWYgKCFkYXRlQ2hhcmFjdGVycykgcmV0dXJuIGZvcm1hdFxuICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgveS9nLCBkYXRlQ2hhcmFjdGVycy55ZWFyKVxuICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgvbS9nLCBkYXRlQ2hhcmFjdGVycy5tb250aClcbiAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoL2QvZywgZGF0ZUNoYXJhY3RlcnMuZGF5KVxuICByZXR1cm4gZm9ybWF0XG59XG4iXX0=","import { ChangeDetectorRef, ContentChild, Directive, ElementRef, EventEmitter, HostBinding, Inject, Input, Optional, Output, Self, TemplateRef, ViewChild, } from '@angular/core';\nimport { NgControl, Validators, } from '@angular/forms';\nimport { Observable, Subject, } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TRANSLOCO_SCOPE, TranslocoService, } from '@jsverse/transloco';\nimport { toLocalDate } from '../datepicker.utils';\nimport { getFormatDateMask, getLocaleDateMask, getLocaleDateString, setDateFormatCharacters, } from '../models/dates';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@jsverse/transloco\";\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class DateControlValueAccessorComponent {\n /** Text shown before input has a written value. Default current date format by locale of transloco */\n set placeholder(value) {\n this._placeholder = value\n ? setDateFormatCharacters(value, this.dateCharacters)\n : value;\n this.defaultPlaceholder = value\n ? setDateFormatCharacters(value, this.dateCharacters)\n : value;\n }\n get placeholder() {\n return this._placeholder;\n }\n /**\n * Settings for input mask for dates based on locale\n * @see {@link getLocaleDateMask} use this tool to generate settings for `dateInputMask`\n */\n set dateInputMask(dateMask) {\n // Hide input field\n this.showInputDateSrc.next(false);\n this.cdr.detectChanges();\n this._dateInputMask = dateMask;\n // Show input field to reload input-mask settings upon update\n setTimeout(() => {\n this.showInputDateSrc.next(true);\n this.cdr.detectChanges();\n }, 200);\n }\n get dateInputMask() {\n return this._dateInputMask;\n }\n /** Hides the input borders and displays current value as a text. */\n set locked(value) {\n this._locked = value;\n this.cdr.detectChanges();\n }\n get locked() {\n return this._locked;\n }\n /** Override the required flag of the component. */\n set required(value) {\n this._required = value;\n }\n /** Child input element is considered required and changes default label template accordingly. */\n get required() {\n // if required is set => return required\n if (this._required !== undefined)\n return this._required;\n // if required can be determined from the control => return control.required\n if (this.ngControl?.control?.validator) {\n const validator = this.ngControl?.control?.validator({});\n return validator && validator.required;\n }\n return;\n }\n /** Override the invalid state of the component. */\n set invalid(value) {\n this._invalid = value;\n }\n /** The component has the invalid state, usually decorating the elements red and shows the first error. */\n get invalid() {\n if (this._invalid === true || this._invalid === false)\n return this._invalid;\n return (!!this.ngControl?.control?.invalid && this.ngControl?.control?.touched);\n }\n /** Override the valid state of the component. */\n set valid(value) {\n this._valid = value;\n }\n /** The component has the valid state, usually decorating the elements green. */\n get valid() {\n if (this._valid === true || this._valid === false)\n return this._valid;\n return !!this.ngControl?.control?.valid && this.ngControl?.control?.touched;\n }\n /**\n * Creates a new BaseControlValueAccessorComponent.\n * @param ngControl optional FormControl provided when component is used in a form, through dependency injection.\n */\n constructor(ngControl, translocoScope, elementRef, cdr, _transloco) {\n this.ngControl = ngControl;\n this.translocoScope = translocoScope;\n this.elementRef = elementRef;\n this.cdr = cdr;\n this._transloco = _transloco;\n /* ATTRIBUTES */\n /** Id of the host element and is accessible by the children, automatically generated if not provided. */\n this.id = window.ngv?.nextId('datepicker');\n /** Adds an icon before each error message. */\n this.withErrorIcon = false;\n /** If set to true, the browser will try to automatically set focus to the child input element. */\n this.autofocus = false;\n this._locked = undefined;\n /* STATES */\n this._required = undefined;\n this._invalid = undefined;\n this._valid = undefined;\n /** The component has the focused state, updated by the child input element's focus state. */\n this.focused = false;\n /** The component has the disabled state, usually muting the colors and removes interaction. */\n this.disabled = false;\n /** Toggler for showing or hiding the input field */\n this.showInputDateSrc = new Subject();\n /* TRIGGERS */\n /** Emits focus events triggered by the child elements. */\n this.ngvFocus = new EventEmitter();\n /** Emits focus events triggered by the child elements. */\n this.ngvBlur = new EventEmitter();\n /* VALUE HANDLERS */\n /** @internal */\n this.onChange = (_) => { }; // eslint-disable-line @typescript-eslint/no-empty-function\n /** @internal */\n this.onTouched = () => { }; // eslint-disable-line @typescript-eslint/no-empty-function\n /** @internal */\n this.onValidatorChange = () => null;\n this._state = null;\n /** @internal */\n // warningIcon = faTriangleExclamation;\n /* LIFE CYCLE VARIABLES */\n this._onDestroy$ = new Subject();\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n if (this.translocoScope)\n this.scope = this.translocoScope.toString();\n }\n static parseDateLike(value) {\n try {\n // if value is type of string,\n if (value && typeof value === 'string')\n value = toLocalDate(value);\n switch (true) {\n // remove instances where the value will not correctly be parsed to a date string\n case value == null:\n case value?.toString() === 'Invalid Date':\n return null;\n // if value-as-date is a valid date object, parse the value to YYYY-MM-DD format\n case typeof value?.getMonth === 'function':\n return new Intl.DateTimeFormat('sv-SE').format(value);\n default:\n return value;\n }\n }\n catch (_e) {\n return;\n }\n }\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n ngOnInit() {\n if (this.ngControl && this.ngControl.control) {\n this.ngControl.control.setValidators(Validators.compose([this.ngControl.control.validator, this.validate]));\n }\n this._transloco.langChanges$.pipe(takeUntil(this._onDestroy$)).subscribe({\n next: () => {\n if (!this.locale && !this.dateFormat) {\n return this.updatePlaceholderAndMask();\n }\n },\n });\n // if reset observable has been passed, subscribe after updates\n this.reset?.pipe(takeUntil(this._onDestroy$)).subscribe({\n next: () => {\n // reset value of controller\n this.updateValue('');\n },\n });\n }\n // eslint-disable-next-line @angular-eslint/contextual-lifecycle\n ngAfterViewInit() {\n // if default value is set, then don't alter it. Otherwise, use\n // current value of controller after initiation as default value\n this.defaultValue = this.defaultValue ?? this.ngControl?.value;\n }\n ngOnChanges(changes) {\n if (changes.defaultValue?.currentValue) {\n this.updateValue(changes.defaultValue.currentValue);\n }\n if (changes.locale?.currentValue &&\n !this.dateFormat &&\n !changes.dateFormat?.currentValue) {\n this.updatePlaceholderAndMask();\n }\n if (changes.dateFormat?.currentValue) {\n this.updateFormat();\n }\n if (changes.dateCharacters?.currentValue) {\n if (this.dateFormat) {\n this.updateFormat();\n }\n else {\n this.updatePlaceholderAndMask();\n }\n }\n if (!!changes.dateLocale?.currentValue && !this.dateFormat) {\n this.updatePlaceholderAndMask();\n }\n }\n ngOnDestroy() {\n this._onDestroy$.next(true);\n this._onDestroy$.complete();\n }\n /** @internal */\n onFocus(event) {\n event.stopPropagation\n ? event.stopPropagation()\n : (event.cancelBubble = true);\n this.focused = true;\n this.ngvFocus.emit(event);\n }\n /** @internal */\n onBlur(event) {\n event.stopPropagation\n ? event.stopPropagation()\n : (event.cancelBubble = true);\n this.onTouched();\n this.focused = false;\n this.ngvBlur.emit(event);\n }\n detectChanges() {\n this.cdr.detectChanges();\n }\n /** Sets the focus on the actual input element. */\n setFocus() {\n if (this.inputRef)\n this.inputRef.nativeElement.focus();\n }\n /**\n * @internal\n * Update placeholder and input mask to match locale.\n * Order if choice for locale:\n * 1. dateLocale - Used for specifying which locale to be used for formatting date\n * 2. locale - Unless dateLocale is not provided, use locale form current translation\n * 3. transloco.getActiveLang - as last resort, get active language form trnasloco\n * If locale is undefined, transloco.activeLang will be used instead.\n */\n updatePlaceholderAndMask() {\n const locale = this.dateLocale ?? this.locale ?? this._transloco.getActiveLang();\n this._placeholder = this.defaultPlaceholder\n ? setDateFormatCharacters(this.defaultPlaceholder, this.dateCharacters)\n : setDateFormatCharacters(getLocaleDateString(locale).toLowerCase(), this.dateCharacters);\n this.dateInputMask = getLocaleDateMask(this.dateCharacters, locale);\n }\n updateFormat() {\n if (this.dateFormat) {\n this._placeholder = this.defaultPlaceholder\n ? setDateFormatCharacters(this.defaultPlaceholder, this.dateCharacters)\n : setDateFormatCharacters(this.dateFormat.toLowerCase(), this.dateCharacters);\n this.dateInputMask = getFormatDateMask(this.dateFormat, this.dateCharacters);\n }\n }\n // ----------------------------------------------------------------------------\n // CONTROL VALUE ACCESSOR\n // ----------------------------------------------------------------------------\n /** Internal state/value that the native input element has. */\n get state() {\n return this._state;\n }\n /**\n * Internal state/value that the native input element has.\n */\n set state(value) {\n this._state = value;\n }\n /** Writes a new value to the child input element. */\n writeValue(value) {\n this.state = value;\n this.onChange(this.state);\n }\n /** Registers a callback function that is called when the child input element's value changes. */\n registerOnChange(fn) {\n this.onChange = (value) => {\n // ensure emitted value is a string | null | undefined\n const emitValue = DateControlValueAccessorComponent.parseDateLike(value);\n fn(emitValue);\n };\n }\n /** Registers a callback function that is called when the child input element triggers on blur. */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /** Function that is called by the forms API when the control status changes to or from 'DISABLED'. */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n // if displayDisabledAsLocked is enabled - update locked state based on disabled state\n if (this.displayDisabledAsLocked) {\n this.locked = isDisabled;\n }\n }\n // ----------------------------------------------------------------------------\n // VALIDATORS\n // ----------------------------------------------------------------------------\n /** Method that performs synchronous validation against the provided control. Used for internal validation. */\n validate(_control) {\n return null;\n }\n /** Registers a callback function to call when the validator inputs change. */\n registerOnValidatorChange(fn) {\n this.onValidatorChange = fn;\n }\n // ----------------------------------------------------------------------------\n // HELPERS\n // ----------------------------------------------------------------------------\n /** Returns the first entry in an error object. */\n get firstError() {\n const errors = this.ngControl.errors;\n if (!errors)\n return null;\n const code = Object.keys(errors)[0];\n return { code, params: errors[code] };\n }\n updateValue(value = this.defaultValue) {\n this.state = value;\n this.onChange(this.state);\n this.cdr.detectChanges();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: DateControlValueAccessorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2.TranslocoService }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.9\", type: DateControlValueAccessorComponent, isStandalone: true, inputs: { id: \"id\", name: \"name\", label: \"label\", placeholder: \"placeholder\", dateCharacters: \"dateCharacters\", role: \"role\", value: \"value\", error: \"error\", errorList: \"errorList\", withErrorIcon: \"withErrorIcon\", description: \"description\", autofocus: \"autofocus\", defaultValue: \"defaultValue\", reset: \"reset\", optional: \"optional\", dateInputMask: \"dateInputMask\", locked: \"locked\", displayDisabledAsLocked: \"displayDisabledAsLocked\", required: \"required\", invalid: \"invalid\", valid: \"valid\", focused: \"focused\", disabled: \"disabled\", locale: \"locale\", dateFormat: \"dateFormat\", dateLocale: \"dateLocale\" }, outputs: { ngvFocus: \"ngvFocus\", ngvBlur: \"ngvBlur\" }, host: { properties: { \"attr.id\": \"this.id\" } }, queries: [{ propertyName: \"labelContentTpl\", first: true, predicate: [\"labelTpl\"], descendants: true, read: TemplateRef }, { propertyName: \"lockedTpl\", first: true, predicate: [\"lockedTpl\"], descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: \"inputRef\", first: true, predicate: [\"input\"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: DateControlValueAccessorComponent, decorators: [{\n type: Directive\n }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{\n type: Self\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TRANSLOCO_SCOPE]\n }] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2.TranslocoService }], propDecorators: { labelContentTpl: [{\n type: ContentChild,\n args: ['labelTpl', { read: TemplateRef }]\n }], lockedTpl: [{\n type: ContentChild,\n args: ['lockedTpl', { read: TemplateRef }]\n }], inputRef: [{\n type: ViewChild,\n args: ['input', { read: ElementRef }]\n }], id: [{\n type: HostBinding,\n args: ['attr.id']\n }, {\n type: Input\n }], name: [{\n type: Input\n }], label: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], dateCharacters: [{\n type: Input\n }], role: [{\n type: Input\n }], value: [{\n type: Input\n }], error: [{\n type: Input\n }], errorList: [{\n type: Input\n }], withErrorIcon: [{\n type: Input\n }], description: [{\n type: Input\n }], autofocus: [{\n type: Input\n }], defaultValue: [{\n type: Input\n }], reset: [{\n type: Input\n }], optional: [{\n type: Input\n }], dateInputMask: [{\n type: Input\n }], locked: [{\n type: Input\n }], displayDisabledAsLocked: [{\n type: Input\n }], required: [{\n type: Input\n }], invalid: [{\n type: Input\n }], valid: [{\n type: Input\n }], focused: [{\n type: Input\n }], disabled: [{\n type: Input\n }], locale: [{\n type: Input\n }], dateFormat: [{\n type: Input\n }], dateLocale: [{\n type: Input\n }], ngvFocus: [{\n type: Output\n }], ngvBlur: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jb250cm9sLXZhbHVlLWFjY2Vzc29yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvZGF0ZS1jb250cm9sLXZhbHVlLWFjY2Vzc29yL2RhdGUtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBRUosV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBR0wsU0FBUyxFQUdULFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFBO0FBRXZCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFBO0FBQ2IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFDLE9BQU8sRUFDTCxlQUFlLEVBRWYsZ0JBQWdCLEdBQ2pCLE1BQU0sb0JBQW9CLENBQUE7QUFLM0IsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ2pELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix1QkFBdUIsR0FDeEIsTUFBTSxpQkFBaUIsQ0FBQTs7OztBQUd4QixrRUFBa0U7QUFDbEUsTUFBTSxPQUFnQixpQ0FBaUM7SUFvQ3JELHNHQUFzRztJQUN0RyxJQUFhLFdBQVcsQ0FBQyxLQUF5QjtRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUs7WUFDdkIsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMs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XG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdDb250cm9sLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3IsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuXG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxufSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7XG4gIFRSQU5TTE9DT19TQ09QRSxcbiAgVHJhbnNsb2NvU2NvcGUsXG4gIFRyYW5zbG9jb1NlcnZpY2UsXG59IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbydcbmltcG9ydCB0eXBlIHtcbiAgSW5wdXRtYXNrT3B0aW9ucyxcbn0gZnJvbSAnQHNlYmdyb3VwL2dyZWVuLWFuZ3VsYXIvc3JjL3YtYW5ndWxhci9pbnB1dC1tYXNrJ1xuXG5pbXBvcnQgeyB0b0xvY2FsRGF0ZSB9IGZyb20gJy4uL2RhdGVwaWNrZXIudXRpbHMnXG5pbXBvcnQge1xuICBEYXRlQ2hhcmFjdGVycyxcbiAgZ2V0Rm9ybWF0RGF0ZU1hc2ssXG4gIGdldExvY2FsZURhdGVNYXNrLFxuICBnZXRMb2NhbGVEYXRlU3RyaW5nLFxuICBzZXREYXRlRm9ybWF0Q2hhcmFjdGVycyxcbn0gZnJvbSAnLi4vbW9kZWxzL2RhdGVzJ1xuXG5ARGlyZWN0aXZlKCkgLy8gUmVxdWlyZWQgd2l0aCBBbmd1bGFyIGl2eSBjb21waWxlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGF0ZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50XG4gIGltcGxlbWVudHNcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIE9uSW5pdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIFZhbGlkYXRvclxue1xuICAvKiogQ3VzdG9tIHRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIHRoZSBjb250ZW50IG9mIHRoZSBsYWJlbC5cbiAgICogU3BlY2lmaWVkIGJ5IG5lc3RpbmcgYW4gYDxuZy10ZW1wbGF0ZSAjbGFiZWxUcGw+Q3VzdG9tIExhYmVsPC9uZy10ZW1wbGF0ZT5gLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZCgnbGFiZWxUcGwnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGxhYmVsQ29udGVudFRwbD86IFRlbXBsYXRlUmVmPHVuZGVmaW5lZD5cblxuICAvKiogQ3VzdG9tIHRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIHZhbHVlIHdoZW4gdGhlIGlucHV0IGlzIGxvY2tlZC5cbiAgICogU3BlY2lmaWVkIGJ5IG5lc3RpbmcgYW4gYDxuZy10ZW1wbGF0ZSAjbG9ja2VkVHBsIGxldC1zZWxlY3RlZERhdGU+Q3VzdG9tIGxvY2tlZCBjb250ZW50IGRhdGU6IHt7IHNlbGVjdGVkRGF0ZSB9fTwvbmctdGVtcGxhdGU+YC5cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ2xvY2tlZFRwbCcsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgbG9ja2VkVHBsPzogVGVtcGxhdGVSZWY8dW5kZWZpbmVkPlxuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIG5hdGl2ZSBjaGlsZCBpbnB1dCBlbGVtZW50LiAqL1xuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBpbnB1dFJlZj86IEVsZW1lbnRSZWZcblxuICAvKiBBVFRSSUJVVEVTICovXG5cbiAgLyoqIElkIG9mIHRoZSBob3N0IGVsZW1lbnQgYW5kIGlzIGFjY2Vzc2libGUgYnkgdGhlIGNoaWxkcmVuLCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpZiBub3QgcHJvdmlkZWQuICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5pZCcpIEBJbnB1dCgpIGlkID0gKHdpbmRvdyBhcyBhbnkpLm5ndj8ubmV4dElkKFxuICAgICdkYXRlcGlja2VyJyxcbiAgKVxuICAvKiogTmFtZSBvZiB0aGUgY2hpbGQgaW5wdXQgZWxlbWVudC4gKi9cbiAgQElucHV0KCkgbmFtZT86IHN0cmluZ1xuICAvKiogTGFiZWwgb2YgdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQgdXNpbmcgdGhlIGRlZmF1bHQgdGVtcGxhdGUuXG4gICAqIENhbiBiZSBvdmVyd3JpdHRlbiBieSBzcGVjaWZ5aW5nIGFuIGA8bmctdGVtcGxhdGUgI2xhYmVsVHBsPkN1c3RvbSBMYWJlbDwvbmctdGVtcGxhdGU+YC5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nXG4gIC8qKiBUZXh0IHNob3duIGJlZm9yZSBpbnB1dCBoYXMgYSB3cml0dGVuIHZhbHVlLiBEZWZhdWx0IGN1cnJlbnQgZGF0ZSBmb3JtYXQgYnkgbG9jYWxlIG9mIHRyYW5zbG9jbyAqL1xuICBASW5wdXQoKSBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWVcbiAgICAgID8gc2V0RGF0ZUZvcm1hdENoYXJhY3RlcnModmFsdWUsIHRoaXMuZGF0ZUNoYXJhY3RlcnMpXG4gICAgICA6IHZhbHVlXG4gICAgdGhpcy5kZWZhdWx0UGxhY2Vob2xkZXIgPSB2YWx1ZVxuICAgICAgPyBzZXREYXRlRm9ybWF0Q2hhcmFjdGVycyh2YWx1ZSwgdGhpcy5kYXRlQ2hhcmFjdGVycylcbiAgICAgIDogdmFsdWVcbiAgfVxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyXG4gIH1cbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXI6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBkZWZhdWx0UGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgLyoqIFdoYXQgY2hhcmFjdGVycyB0byB1c2UgaW4gZGF0ZSBwbGFjZWhvbGRlciwgZS5nLiB7eWVhcjogJ1knLCBtb250aDogJ00nLCBkYXk6ICdEJ30gKi9cbiAgQElucHV0KCkgZGF0ZUNoYXJhY3RlcnM/OiBEYXRlQ2hhcmFjdGVyc1xuICAvKiogUm9sZSBvZiB0aGUgY2hpbGQgaW5wdXQgZWxlbWVudC4gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQWNjZXNzaWJpbGl0eS9BUklBL1JvbGVzICovXG4gIEBJbnB1dCgpIHJvbGU/OiBzdHJpbmdcbiAgLyoqIFZhbHVlIG9mIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50LiBNb3N0bHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHJhZGlvIGFuZCBjaGVja2JveGVzLiAqL1xuICBASW5wdXQoKSB2YWx1ZTogYW55XG4gIC8qKiBBbiBlcnJvciBzdHJpbmcgdG8gYmUgc2hvd24gdW5kZXIgaW52YWxpZCBpbnB1dHMuIE92ZXJ3cml0ZXMgYW55IGZvcm0gZXJyb3JzLiAqL1xuICBASW5wdXQoKSBlcnJvcj86IHN0cmluZ1xuICAvKiogQSBsaXN0IG9mIGVycm9ycyBzdHJpbmcgdG8gYmUgc2hvd24gdW5kZXIgaW52YWxpZCBpbnB1dHMuIE92ZXJ3cml0ZXMgYW55IGZvcm0gZXJyb3JzLiAqL1xuICBASW5wdXQoKSBlcnJvckxpc3Q/OiBzdHJpbmdbXVxuICAvKiogQWRkcyBhbiBpY29uIGJlZm9yZSBlYWNoIGVycm9yIG1lc3NhZ2UuICovXG4gIEBJbnB1dCgpIHdpdGhFcnJvckljb24/OiBib29sZWFuID0gZmFsc2VcbiAgLyoqIERlc2NyaXB0aW9uIG9mIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50LiBCb3RoIHZpc2libHkgYW5kIGFzIGBhcmlhLWxhYmVsYC4gKi9cbiAgQElucHV0KCkgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgLyoqIElmIHNldCB0byB0cnVlLCB0aGUgYnJvd3NlciB3aWxsIHRyeSB0byBhdXRvbWF0aWNhbGx5IHNldCBmb2N1cyB0byB0aGUgY2hpbGQgaW5wdXQgZWxlbWVudC4gKi9cbiAgQElucHV0KCkgYXV0b2ZvY3VzID0gZmFsc2VcbiAgLyoqIERlZmF1bHQgdmFsdWUgb2YgdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQuICovXG4gIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZT86IGFueVxuICAvKiogSWYgcGFzc2VkLCB0aGUgY29tcG9uZW50IHdpbGwgbGlzdGVuIGZvciB1cGRhdGVzIGFuZCB3aWxsIHJlc2V0IGl0cyB2YWx1ZS4gKi9cbiAgQElucHV0KCkgcmVzZXQ/OiBPYnNlcnZhYmxlPGFueT5cbiAgLyoqIEFkZHMgKE9wdGlvbmFsKSB0byBpbnB1dCBsYWJlbC4gKi9cbiAgQElucHV0KCkgb3B0aW9uYWw/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZFxuICAvKipcbiAgICogU2V0dGluZ3MgZm9yIGlucHV0IG1hc2sgZm9yIGRhdGVzIGJhc2VkIG9uIGxvY2FsZVxuICAgKiBAc2VlIHtAbGluayBnZXRMb2NhbGVEYXRlTWFza30gdXNlIHRoaXMgdG9vbCB0byBnZW5lcmF0ZSBzZXR0aW5ncyBmb3IgYGRhdGVJbnB1dE1hc2tgXG4gICAqL1xuICBASW5wdXQoKSBzZXQgZGF0ZUlucHV0TWFzayhkYXRlTWFzazogSW5wdXRtYXNrT3B0aW9uczxEYXRlPikge1xuICAgIC8vIEhpZGUgaW5wdXQgZmllbGRcbiAgICB0aGlzLnNob3dJbnB1dERhdGVTcmMubmV4dChmYWxzZSlcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcbiAgICB0aGlzLl9kYXRlSW5wdXRNYXNrID0gZGF0ZU1hc2tcblxuICAgIC8vIFNob3cgaW5wdXQgZmllbGQgdG8gcmVsb2FkIGlucHV0LW1hc2sgc2V0dGluZ3MgdXBvbiB1cGRhdGVcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd0lucHV0RGF0ZVNyYy5uZXh0KHRydWUpXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcbiAgICB9LCAyMDApXG4gIH1cbiAgZ2V0IGRhdGVJbnB1dE1hc2soKTogSW5wdXRtYXNrT3B0aW9uczxEYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVJbnB1dE1hc2tcbiAgfVxuICBwcml2YXRlIF9kYXRlSW5wdXRNYXNrITogSW5wdXRtYXNrT3B0aW9uczxEYXRlPlxuXG4gIHByaXZhdGUgX2xvY2tlZDogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbiAgLyoqIEhpZGVzIHRoZSBpbnB1dCBib3JkZXJzIGFuZCBkaXNwbGF5cyBjdXJyZW50IHZhbHVlIGFzIGEgdGV4dC4gKi9cbiAgQElucHV0KCkgc2V0IGxvY2tlZCh2YWx1ZTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9sb2NrZWQgPSB2YWx1ZVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICB9XG4gIGdldCBsb2NrZWQoKTogYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9sb2NrZWRcbiAgfVxuICAvKiogSWYgc2V0IHRvIHRydWUsIHVzaW5nIGEgY29udHJvbHMgZGlzYWJsZWQgc3RhdGUgd2lsbCBkaXNwbGF5IGlucHV0IGFzIGxvY2tlZC4gKi9cbiAgQElucHV0KCkgZGlzcGxheURpc2FibGVkQXNMb2NrZWQ/OiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZFxuXG4gIC8qIFNUQVRFUyAqL1xuXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuICAvKiogT3ZlcnJpZGUgdGhlIHJlcXVpcmVkIGZsYWcgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgQElucHV0KCkgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWVcbiAgfVxuICAvKiogQ2hpbGQgaW5wdXQgZWxlbWVudCBpcyBjb25zaWRlcmVkIHJlcXVpcmVkIGFuZCBjaGFuZ2VzIGRlZmF1bHQgbGFiZWwgdGVtcGxhdGUgYWNjb3JkaW5nbHkuICovXG4gIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgLy8gaWYgcmVxdWlyZWQgaXMgc2V0ID0+IHJldHVybiByZXF1aXJlZFxuICAgIGlmICh0aGlzLl9yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gdGhpcy5fcmVxdWlyZWRcblxuICAgIC8vIGlmIHJlcXVpcmVkIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIGNvbnRyb2wgPT4gcmV0dXJuIGNvbnRyb2wucmVxdWlyZWRcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnZhbGlkYXRvcikge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnZhbGlkYXRvcihcbiAgICAgICAge30gYXMgQWJzdHJhY3RDb250cm9sLFxuICAgICAgKVxuICAgICAgcmV0dXJuIHZhbGlkYXRvciAmJiB2YWxpZGF0b3IucmVxdWlyZWRcbiAgICB9XG5cbiAgICByZXR1cm5cbiAgfVxuXG4gIHByaXZhdGUgX2ludmFsaWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbiAgLyoqIE92ZXJyaWRlIHRoZSBpbnZhbGlkIHN0YXRlIG9mIHRoZSBjb21wb25lbnQuICovXG4gIEBJbnB1dCgpIHNldCBpbnZhbGlkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW52YWxpZCA9IHZhbHVlXG4gIH1cbiAgLyoqIFRoZSBjb21wb25lbnQgaGFzIHRoZSBpbnZhbGlkIHN0YXRlLCB1c3VhbGx5IGRlY29yYXRpbmcgdGhlIGVsZW1lbnRzIHJlZCBhbmQgc2hvd3MgdGhlIGZpcnN0IGVycm9yLiAqL1xuICBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW52YWxpZCA9PT0gdHJ1ZSB8fCB0aGlzLl9pbnZhbGlkID09PSBmYWxzZSkgcmV0dXJuIHRoaXMuX2ludmFsaWRcbiAgICByZXR1cm4gKFxuICAgICAgISF0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaW52YWxpZCAmJiB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udG91Y2hlZFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX3ZhbGlkOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG4gIC8qKiBPdmVycmlkZSB0aGUgdmFsaWQgc3RhdGUgb2YgdGhlIGNvbXBvbmVudC4gKi9cbiAgQElucHV0KCkgc2V0IHZhbGlkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdmFsaWQgPSB2YWx1ZVxuICB9XG4gIC8qKiBUaGUgY29tcG9uZW50IGhhcyB0aGUgdmFsaWQgc3RhdGUsIHVzdWFsbHkgZGVjb3JhdGluZyB0aGUgZWxlbWVudHMgZ3JlZW4uICovXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5fdmFsaWQgPT09IHRydWUgfHwgdGhpcy5fdmFsaWQgPT09IGZhbHNlKSByZXR1cm4gdGhpcy5fdmFsaWRcbiAgICByZXR1cm4gISF0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udmFsaWQgJiYgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnRvdWNoZWRcbiAgfVxuXG4gIC8qKiBUaGUgY29tcG9uZW50IGhhcyB0aGUgZm9jdXNlZCBzdGF0ZSwgdXBkYXRlZCBieSB0aGUgY2hpbGQgaW5wdXQgZWxlbWVudCdzIGZvY3VzIHN0YXRlLiAqL1xuICBASW5wdXQoKSBmb2N1c2VkID0gZmFsc2VcbiAgLyoqIFRoZSBjb21wb25lbnQgaGFzIHRoZSBkaXNhYmxlZCBzdGF0ZSwgdXN1YWxseSBtdXRpbmcgdGhlIGNvbG9ycyBhbmQgcmVtb3ZlcyBpbnRlcmFjdGlvbi4gKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZVxuICAvKiogTG9jYWxlIGZvciB1c2luZyBjb3JyZWN0IGxhbmd1YWdlIGluIHRoZSBkYXRlcGlja2VyLiAqL1xuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICAvKiogRGF0ZSBmb3JtYXQgdXNlZCBmb3IgcGxhY2Vob2xkZXIgYW5kIGlucHV0IG1hc2suIFNob3VsZCBiZSBpbiBsb3dlciBjYXNlIHt5ZWFyOiAneScsIG1vbnRoOiAnbScsIGRheTogJ2QnfSAqL1xuICBASW5wdXQoKSBkYXRlRm9ybWF0OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgLyoqIERhdGUgbG9jYWxlIHVzZWQgZm9yIHBsYWNlaG9sZGVyIGFuZCBpbnB1dCBtYXNrLiAqL1xuICBASW5wdXQoKSBkYXRlTG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICAvKiogVG9nZ2xlciBmb3Igc2hvd2luZyBvciBoaWRpbmcgdGhlIGlucHV0IGZpZWxkICovXG4gIHByb3RlY3RlZCBzaG93SW5wdXREYXRlU3JjID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKVxuXG4gIC8qIFRSSUdHRVJTICovXG5cbiAgLyoqIEVtaXRzIGZvY3VzIGV2ZW50cyB0cmlnZ2VyZWQgYnkgdGhlIGNoaWxkIGVsZW1lbnRzLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbmd2Rm9jdXMgPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgLyoqIEVtaXRzIGZvY3VzIGV2ZW50cyB0cmlnZ2VyZWQgYnkgdGhlIGNoaWxkIGVsZW1lbnRzLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbmd2Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuXG4gIC8qIFZBTFVFIEhBTkRMRVJTICovXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJvdGVjdGVkIG9uQ2hhbmdlID0gKF86IGFueSk6IHZvaWQgPT4ge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcm90ZWN0ZWQgb25Ub3VjaGVkID0gKCk6IHZvaWQgPT4ge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcm90ZWN0ZWQgb25WYWxpZGF0b3JDaGFuZ2U6ICgpID0+IHZvaWQgPSAoKSA9PiBudWxsXG4gIHByaXZhdGUgX3N0YXRlOiBhbnkgPSBudWxsXG5cbiAgLyogT1RIRVIgVkFSSUFCTEVTICovXG4gIHNjb3BlOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICAvLyB3YXJuaW5nSWNvbiA9IGZhVHJpYW5nbGVFeGNsYW1hdGlvbjtcblxuICAvKiBMSUZFIENZQ0xFIFZBUklBQkxFUyAqL1xuICBwcml2YXRlIF9vbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dHJ1ZT4oKVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEJhc2VDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5cbiAgICogQHBhcmFtIG5nQ29udHJvbCBvcHRpb25hbCBGb3JtQ29udHJvbCBwcm92aWRlZCB3aGVuIGNvbXBvbmVudCBpcyB1c2VkIGluIGEgZm9ybSwgdGhyb3VnaCBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChUUkFOU0xPQ09fU0NPUEUpXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jb1Njb3BlOiBUcmFuc2xvY29TY29wZSxcbiAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF90cmFuc2xvY286IFRyYW5zbG9jb1NlcnZpY2UsXG4gICkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgLy8gTm90ZTogd2UgcHJvdmlkZSB0aGUgdmFsdWUgYWNjZXNzb3IgdGhyb3VnaCBoZXJlLCBpbnN0ZWFkIG9mXG4gICAgICAvLyB0aGUgYHByb3ZpZGVyc2AgdG8gYXZvaWQgcnVubmluZyBpbnRvIGEgY2lyY3VsYXIgaW1wb3J0LlxuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXNcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmFuc2xvY29TY29wZSkgdGhpcy5zY29wZSA9IHRoaXMudHJhbnNsb2NvU2NvcGUudG9TdHJpbmcoKVxuICB9XG5cbiAgc3RhdGljIHBhcnNlRGF0ZUxpa2UodmFsdWU6IGFueSk6IG51bGwgfCB1bmRlZmluZWQgfCBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICAvLyBpZiB2YWx1ZSBpcyB0eXBlIG9mIHN0cmluZyxcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB2YWx1ZSA9IHRvTG9jYWxEYXRlKHZhbHVlKVxuICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgIC8vIHJlbW92ZSBpbnN0YW5jZXMgd2hlcmUgdGhlIHZhbHVlIHdpbGwgbm90IGNvcnJlY3RseSBiZSBwYXJzZWQgdG8gYSBkYXRlIHN0cmluZ1xuICAgICAgICBjYXNlIHZhbHVlID09IG51bGw6XG4gICAgICAgIGNhc2UgdmFsdWU/LnRvU3RyaW5nKCkgPT09ICdJbnZhbGlkIERhdGUnOlxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIC8vIGlmIHZhbHVlLWFzLWRhdGUgaXMgYSB2YWxpZCBkYXRlIG9iamVjdCwgcGFyc2UgdGhlIHZhbHVlIHRvIFlZWVktTU0tREQgZm9ybWF0XG4gICAgICAgIGNhc2UgdHlwZW9mIHZhbHVlPy5nZXRNb250aCA9PT0gJ2Z1bmN0aW9uJzpcbiAgICAgICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ3N2LVNFJykuZm9ybWF0KHZhbHVlKVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB2YWx1ZSBhcyBzdHJpbmdcbiAgICAgIH1cbiAgICB9IGNhdGNoIChfZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb250ZXh0dWFsLWxpZmVjeWNsZVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5zZXRWYWxpZGF0b3JzKFxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoW3RoaXMubmdDb250cm9sLmNvbnRyb2wudmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlXSksXG4gICAgICApXG4gICAgfVxuXG4gICAgdGhpcy5fdHJhbnNsb2NvLmxhbmdDaGFuZ2VzJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmxvY2FsZSAmJiAhdGhpcy5kYXRlRm9ybWF0KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlUGxhY2Vob2xkZXJBbmRNYXNrKClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgLy8gaWYgcmVzZXQgb2JzZXJ2YWJsZSBoYXMgYmVlbiBwYXNzZWQsIHN1YnNjcmliZSBhZnRlciB1cGRhdGVzXG4gICAgdGhpcy5yZXNldD8ucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIC8vIHJlc2V0IHZhbHVlIG9mIGNvbnRyb2xsZXJcbiAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSgnJylcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29udGV4dHVhbC1saWZlY3ljbGVcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIGlmIGRlZmF1bHQgdmFsdWUgaXMgc2V0LCB0aGVuIGRvbid0IGFsdGVyIGl0LiBPdGhlcndpc2UsIHVzZVxuICAgIC8vIGN1cnJlbnQgdmFsdWUgb2YgY29udHJvbGxlciBhZnRlciBpbml0aWF0aW9uIGFzIGRlZmF1bHQgdmFsdWVcbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IHRoaXMuZGVmYXVsdFZhbHVlID8/IHRoaXMubmdDb250cm9sPy52YWx1ZVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmRlZmF1bHRWYWx1ZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKGNoYW5nZXMuZGVmYXVsdFZhbHVlLmN1cnJlbnRWYWx1ZSlcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzLmxvY2FsZT8uY3VycmVudFZhbHVlICYmXG4gICAgICAhdGhpcy5kYXRlRm9ybWF0ICYmXG4gICAgICAhY2hhbmdlcy5kYXRlRm9ybWF0Py5jdXJyZW50VmFsdWVcbiAgICApIHtcbiAgICAgIHRoaXMudXBkYXRlUGxhY2Vob2xkZXJBbmRNYXNrKClcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5kYXRlRm9ybWF0Py5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlRm9ybWF0KClcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5kYXRlQ2hhcmFjdGVycz8uY3VycmVudFZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5kYXRlRm9ybWF0KSB7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlUGxhY2Vob2xkZXJBbmRNYXNrKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoISFjaGFuZ2VzLmRhdGVMb2NhbGU/LmN1cnJlbnRWYWx1ZSAmJiAhdGhpcy5kYXRlRm9ybWF0KSB7XG4gICAgICB0aGlzLnVwZGF0ZVBsYWNlaG9sZGVyQW5kTWFzaygpXG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KHRydWUpXG4gICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpXG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uRm9jdXMoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uXG4gICAgICA/IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICA6IChldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlKVxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWVcbiAgICB0aGlzLm5ndkZvY3VzLmVtaXQoZXZlbnQpXG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uQmx1cihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb25cbiAgICAgID8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIDogKGV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRydWUpXG4gICAgdGhpcy5vblRvdWNoZWQoKVxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlXG4gICAgdGhpcy5uZ3ZCbHVyLmVtaXQoZXZlbnQpXG4gIH1cblxuICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxuICB9XG5cbiAgLyoqIFNldHMgdGhlIGZvY3VzIG9uIHRoZSBhY3R1YWwgaW5wdXQgZWxlbWVudC4gKi9cbiAgc2V0Rm9jdXMoKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRSZWYpIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFVwZGF0ZSBwbGFjZWhvbGRlciAgYW5kIGlucHV0IG1hc2sgdG8gbWF0Y2ggbG9jYWxlLlxuICAgKiBPcmRlciBpZiBjaG9pY2UgZm9yIGxvY2FsZTpcbiAgICogMS4gZGF0ZUxvY2FsZSAtIFVzZWQgZm9yIHNwZWNpZnlpbmcgd2hpY2ggbG9jYWxlIHRvIGJlIHVzZWQgZm9yIGZvcm1hdHRpbmcgZGF0ZVxuICAgKiAyLiBsb2NhbGUgLSBVbmxlc3MgZGF0ZUxvY2FsZSBpcyBub3QgcHJvdmlkZWQsIHVzZSBsb2NhbGUgZm9ybSBjdXJyZW50IHRyYW5zbGF0aW9uXG4gICAqIDMuIHRyYW5zbG9jby5nZXRBY3RpdmVMYW5nIC0gYXMgbGFzdCByZXNvcnQsIGdldCBhY3RpdmUgbGFuZ3VhZ2UgZm9ybSB0cm5hc2xvY29cbiAgICogSWYgbG9jYWxlIGlzIHVuZGVmaW5lZCwgdHJhbnNsb2NvLmFjdGl2ZUxhbmcgd2lsbCBiZSB1c2VkIGluc3RlYWQuXG4gICAqL1xuICB1cGRhdGVQbGFjZWhvbGRlckFuZE1hc2soKSB7XG4gICAgY29uc3QgbG9jYWxlID1cbiAgICAgIHRoaXMuZGF0ZUxvY2FsZSA/PyB0aGlzLmxvY2FsZSA/PyB0aGlzLl90cmFuc2xvY28uZ2V0QWN0aXZlTGFuZygpXG5cbiAgICB0aGlzLl9wbGFjZWhvbGRlciA9IHRoaXMuZGVmYXVsdFBsYWNlaG9sZGVyXG4gICAgICA/IHNldERhdGVGb3JtYXRDaGFyYWN0ZXJzKHRoaXMuZGVmYXVsdFBsYWNlaG9sZGVyLCB0aGlzLmRhdGVDaGFyYWN0ZXJzKVxuICAgICAgOiBzZXREYXRlRm9ybWF0Q2hhcmFjdGVycyhcbiAgICAgICAgICBnZXRMb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSkudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICB0aGlzLmRhdGVDaGFyYWN0ZXJzLFxuICAgICAgICApXG4gICAgdGhpcy5kYXRlSW5wdXRNYXNrID0gZ2V0TG9jYWxlRGF0ZU1hc2sodGhpcy5kYXRlQ2hhcmFjdGVycywgbG9jYWxlKVxuICB9XG5cbiAgdXBkYXRlRm9ybWF0KCkge1xuICAgIGlmICh0aGlzLmRhdGVGb3JtYXQpIHtcbiAgICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdGhpcy5kZWZhdWx0UGxhY2Vob2xkZXJcbiAgICAgICAgPyBzZXREYXRlRm9ybWF0Q2hhcmFjdGVycyh0aGlzLmRlZmF1bHRQbGFjZWhvbGRlciwgdGhpcy5kYXRlQ2hhcmFjdGVycylcbiAgICAgICAgOiBzZXREYXRlRm9ybWF0Q2hhcmFjdGVycyhcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdC50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgdGhpcy5kYXRlQ2hhcmFjdGVycyxcbiAgICAgICAgICApXG4gICAgICB0aGlzLmRhdGVJbnB1dE1hc2sgPSBnZXRGb3JtYXREYXRlTWFzayhcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICB0aGlzLmRhdGVDaGFyYWN0ZXJzLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gQ09OVFJPTCBWQUxVRSBBQ0NFU1NPUlxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqIEludGVybmFsIHN0YXRlL3ZhbHVlIHRoYXQgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50IGhhcy4gKi9cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZVxuICB9XG5cbiAgLyoqXG4gICAqIEludGVybmFsIHN0YXRlL3ZhbHVlIHRoYXQgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50IGhhcy5cbiAgICovXG4gIHNldCBzdGF0ZSh2YWx1ZSkge1xuICAgIHRoaXMuX3N0YXRlID0gdmFsdWVcbiAgfVxuXG4gIC8qKiBXcml0ZXMgYSBuZXcgdmFsdWUgdG8gdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQuICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUgPSB2YWx1ZVxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zdGF0ZSlcbiAgfVxuXG4gIC8qKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50J3MgdmFsdWUgY2hhbmdlcy4gKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgICAvLyBlbnN1cmUgZW1pdHRlZCB2YWx1ZSBpcyBhIHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgICAgIGNvbnN0IGVtaXRWYWx1ZSA9IERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudC5wYXJzZURhdGVMaWtlKHZhbHVlKVxuICAgICAgZm4oZW1pdFZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIC8qKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBjaGlsZCBpbnB1dCBlbGVtZW50IHRyaWdnZXJzIG9uIGJsdXIuICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmblxuICB9XG5cbiAgLyoqIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGJ5IHRoZSBmb3JtcyBBUEkgd2hlbiB0aGUgY29udHJvbCBzdGF0dXMgY2hhbmdlcyB0byBvciBmcm9tICdESVNBQkxFRCcuICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXG5cbiAgICAvLyBpZiBkaXNwbGF5RGlzYWJsZWRBc0xvY2tlZCBpcyBlbmFibGVkIC0gdXBkYXRlIGxvY2tlZCBzdGF0ZSBiYXNlZCBvbiBkaXNhYmxlZCBzdGF0ZVxuICAgIGlmICh0aGlzLmRpc3BsYXlEaXNhYmxlZEFzTG9ja2VkKSB7XG4gICAgICB0aGlzLmxvY2tlZCA9IGlzRGlzYWJsZWRcbiAgICB9XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFZBTElEQVRPUlNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKiBNZXRob2QgdGhhdCBwZXJmb3JtcyBzeW5jaHJvbm91cyB2YWxpZGF0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGNvbnRyb2wuIFVzZWQgZm9yIGludGVybmFsIHZhbGlkYXRpb24uICovXG4gIHZhbGlkYXRlKF9jb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGwge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKiogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB2YWxpZGF0b3IgaW5wdXRzIGNoYW5nZS4gKi9cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSBmblxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBIRUxQRVJTXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKiogUmV0dXJucyB0aGUgZmlyc3QgZW50cnkgaW4gYW4gZXJyb3Igb2JqZWN0LiAqL1xuICBnZXQgZmlyc3RFcnJvcigpOiB7IGNvZGU6IHN0cmluZzsgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0gfCBudWxsIHtcbiAgICBjb25zdCBlcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gdGhpcy5uZ0NvbnRyb2wuZXJyb3JzXG4gICAgaWYgKCFlcnJvcnMpIHJldHVybiBudWxsXG4gICAgY29uc3QgY29kZSA9IE9iamVjdC5rZXlzKGVycm9ycylbMF1cbiAgICByZXR1cm4geyBjb2RlLCBwYXJhbXM6IGVycm9yc1tjb2RlXSB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbHVlKHZhbHVlID0gdGhpcy5kZWZhdWx0VmFsdWUpIHtcbiAgICB0aGlzLnN0YXRlID0gdmFsdWVcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuc3RhdGUpXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gIH1cbn1cbiJdfQ==","import { Directive, ElementRef, HostBinding, Input, } from '@angular/core';\nimport { match } from '../datepicker.utils';\nimport * as i0 from \"@angular/core\";\nexport class CalendarDateDirective {\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.isToday = false;\n }\n ngOnInit() {\n this.isToday = match(new Date(), this.calendarDate);\n }\n ngOnChanges(changes) {\n if (changes.disabled?.currentValue) {\n ;\n this.nativeElement.disabled = this.disabled;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CalendarDateDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.9\", type: CalendarDateDirective, isStandalone: false, selector: \"[calendarDate]\", inputs: { calendarDate: \"calendarDate\", selected: \"selected\", notWithinMonth: \"notWithinMonth\", disabled: \"disabled\" }, host: { properties: { \"class.selected\": \"this.selected\", \"class.not-within-month\": \"this.notWithinMonth\", \"class.today\": \"this.isToday\" } }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CalendarDateDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[calendarDate]',\n standalone: false,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { calendarDate: [{\n type: Input\n }], selected: [{\n type: HostBinding,\n args: ['class.' + \"selected\" /* DateCss.selected */]\n }, {\n type: Input\n }], notWithinMonth: [{\n type: HostBinding,\n args: ['class.' + \"not-within-month\" /* DateCss.notWithinMonth */]\n }, {\n type: Input\n }], isToday: [{\n type: HostBinding,\n args: ['class.' + \"today\" /* DateCss.today */]\n }], disabled: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2RpcmVjdGl2ZXMvY2FsZW5kYXItZGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUE7O0FBYTNDLE1BQU0sT0FBTyxxQkFBcUI7SUFTaEMsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsWUFBb0IsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVBILFlBQU8sR0FBRyxLQUFLLENBQUE7SUFPVCxDQUFDO0lBRTlDLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1lBQUMsSUFBSSxDQUFDLGFBQW1DLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFDckUsQ0FBQztJQUNILENBQUM7OEdBdkJVLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUxqQyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOztzQkFFRSxLQUFLOztzQkFDTCxXQUFXO3VCQUFDLFFBQVEsb0NBQW1COztzQkFBRyxLQUFLOztzQkFDL0MsV0FBVzt1QkFBQyxRQUFRLGtEQUF5Qjs7c0JBQzdDLEtBQUs7O3NCQUVMLFdBQVc7dUJBQUMsUUFBUSw4QkFBZ0I7O3NCQUNwQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQgeyBtYXRjaCB9IGZyb20gJy4uL2RhdGVwaWNrZXIudXRpbHMnXG5cbmV4cG9ydCBjb25zdCBlbnVtIERhdGVDc3Mge1xuICBub3RXaXRoaW5Nb250aCA9ICdub3Qtd2l0aGluLW1vbnRoJyxcbiAgc2VsZWN0ZWQgPSAnc2VsZWN0ZWQnLFxuICB0b2RheSA9ICd0b2RheScsXG59XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1tjYWxlbmRhckRhdGVdJyxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyRGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY2FsZW5kYXJEYXRlITogRGF0ZVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLicgKyBEYXRlQ3NzLnNlbGVjdGVkKSBASW5wdXQoKSBzZWxlY3RlZCE6IGJvb2xlYW5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy4nICsgRGF0ZUNzcy5ub3RXaXRoaW5Nb250aClcbiAgQElucHV0KClcbiAgbm90V2l0aGluTW9udGghOiBib29sZWFuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuJyArIERhdGVDc3MudG9kYXkpIGlzVG9kYXkgPSBmYWxzZVxuICBASW5wdXQoKSBkaXNhYmxlZCE6IGJvb2xlYW5cblxuICBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc1RvZGF5ID0gbWF0Y2gobmV3IERhdGUoKSwgdGhpcy5jYWxlbmRhckRhdGUpXG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXMuZGlzYWJsZWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgOyh0aGlzLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEJ1dHRvbkVsZW1lbnQpLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZFxuICAgIH1cbiAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { afterClosingHours, isAfter, isBefore, match, } from '../datepicker.utils';\nimport * as i0 from \"@angular/core\";\nconst TODAY = new Date();\nexport class IsDisabledPipe {\n // transform(value: Date, firstValid: Date | undefined, lastValid: Date | undefined, excludeDates: Date[] | undefined, excludeDays: WeekDay[] | undefined): boolean {\n transform(value, config = {}) {\n const { fromDate, toDate, excludeDates, excludeDays, closingTime } = config;\n // if closingHours was provided and the date matches today - check closingHours (including timezone)\n if (closingTime && match(value, TODAY) && afterClosingHours(closingTime))\n return true;\n // if fromDate was provided and the date occurs before fromDate date\n if (fromDate && !match(value, fromDate) && isBefore(value, fromDate))\n return true;\n // if toDate was provided and the date occurs after toDate date\n if (toDate && !match(value, toDate) && isAfter(value, toDate))\n return true;\n // if a list of disallowed days is provided and value matches\n if (excludeDays &&\n excludeDays.length &&\n excludeDays.indexOf(value.getDay()) !== -1)\n return true;\n // if a list of disallowed dates is provided\n if (excludeDates && excludeDates.length) {\n return !!excludeDates.find((d) => match(value, d));\n }\n // otherwise show date as not disabled\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: IsDisabledPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: IsDisabledPipe, isStandalone: false, name: \"isDisabled\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: IsDisabledPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'isDisabled',\n standalone: false\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZGlzYWJsZWQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvcGlwZXMvaXMtZGlzYWJsZWQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQTtBQUduRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxRQUFRLEVBQ1IsS0FBSyxHQUNOLE1BQU0scUJBQXFCLENBQUE7O0FBRTVCLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7QUFNeEIsTUFBTSxPQUFPLGNBQWM7SUFDekIscUtBQXFLO0lBQ3JLLFNBQVMsQ0FBQyxLQUFXLEVBQUUsU0FBNEIsRUFBRTtRQUNuRCxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQTtRQUUzRSxvR0FBb0c7UUFDcEcsSUFBSSxXQUFXLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7WUFDdEUsT0FBTyxJQUFJLENBQUE7UUFFYixvRUFBb0U7UUFDcEUsSUFBSSxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO1lBQ2xFLE9BQU8sSUFBSSxDQUFBO1FBRWIsK0RBQStEO1FBQy9ELElBQUksTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFBO1FBRTFFLDZEQUE2RDtRQUM3RCxJQUNFLFdBQVc7WUFDWCxXQUFXLENBQUMsTUFBTTtZQUNsQixXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUxQyxPQUFPLElBQUksQ0FBQTtRQUViLDRDQUE0QztRQUM1QyxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU8sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzFELENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDOzhHQS9CVSxjQUFjOzRHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBSjFCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLFVBQVUsRUFBRSxLQUFLO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQgeyBEaXNhYmxlRGF0ZUNvbmZpZyB9IGZyb20gJy4uL2RhdGVwaWNrZXIubW9kZWxzJ1xuaW1wb3J0IHtcbiAgYWZ0ZXJDbG9zaW5nSG91cnMsXG4gIGlzQWZ0ZXIsXG4gIGlzQmVmb3JlLFxuICBtYXRjaCxcbn0gZnJvbSAnLi4vZGF0ZXBpY2tlci51dGlscydcblxuY29uc3QgVE9EQVkgPSBuZXcgRGF0ZSgpXG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnaXNEaXNhYmxlZCcsXG4gICAgc3RhbmRhbG9uZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgSXNEaXNhYmxlZFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgLy8gdHJhbnNmb3JtKHZhbHVlOiBEYXRlLCBmaXJzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkLCBsYXN0VmFsaWQ6IERhdGUgfCB1bmRlZmluZWQsIGV4Y2x1ZGVEYXRlczogRGF0ZVtdIHwgdW5kZWZpbmVkLCBleGNsdWRlRGF5czogV2Vla0RheVtdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogRGF0ZSwgY29uZmlnOiBEaXNhYmxlRGF0ZUNvbmZpZyA9IHt9KTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBmcm9tRGF0ZSwgdG9EYXRlLCBleGNsdWRlRGF0ZXMsIGV4Y2x1ZGVEYXlzLCBjbG9zaW5nVGltZSB9ID0gY29uZmlnXG5cbiAgICAvLyBpZiBjbG9zaW5nSG91cnMgd2FzIHByb3ZpZGVkIGFuZCB0aGUgZGF0ZSBtYXRjaGVzIHRvZGF5IC0gY2hlY2sgY2xvc2luZ0hvdXJzIChpbmNsdWRpbmcgdGltZXpvbmUpXG4gICAgaWYgKGNsb3NpbmdUaW1lICYmIG1hdGNoKHZhbHVlLCBUT0RBWSkgJiYgYWZ0ZXJDbG9zaW5nSG91cnMoY2xvc2luZ1RpbWUpKVxuICAgICAgcmV0dXJuIHRydWVcblxuICAgIC8vIGlmIGZyb21EYXRlIHdhcyBwcm92aWRlZCBhbmQgdGhlIGRhdGUgb2NjdXJzIGJlZm9yZSBmcm9tRGF0ZSBkYXRlXG4gICAgaWYgKGZyb21EYXRlICYmICFtYXRjaCh2YWx1ZSwgZnJvbURhdGUpICYmIGlzQmVmb3JlKHZhbHVlLCBmcm9tRGF0ZSkpXG4gICAgICByZXR1cm4gdHJ1ZVxuXG4gICAgLy8gaWYgdG9EYXRlIHdhcyBwcm92aWRlZCBhbmQgdGhlIGRhdGUgb2NjdXJzIGFmdGVyIHRvRGF0ZSBkYXRlXG4gICAgaWYgKHRvRGF0ZSAmJiAhbWF0Y2godmFsdWUsIHRvRGF0ZSkgJiYgaXNBZnRlcih2YWx1ZSwgdG9EYXRlKSkgcmV0dXJuIHRydWVcblxuICAgIC8vIGlmIGEgbGlzdCBvZiBkaXNhbGxvd2VkIGRheXMgaXMgcHJvdmlkZWQgYW5kIHZhbHVlIG1hdGNoZXNcbiAgICBpZiAoXG4gICAgICBleGNsdWRlRGF5cyAmJlxuICAgICAgZXhjbHVkZURheXMubGVuZ3RoICYmXG4gICAgICBleGNsdWRlRGF5cy5pbmRleE9mKHZhbHVlLmdldERheSgpKSAhPT0gLTFcbiAgICApXG4gICAgICByZXR1cm4gdHJ1ZVxuXG4gICAgLy8gaWYgYSBsaXN0IG9mIGRpc2FsbG93ZWQgZGF0ZXMgaXMgcHJvdmlkZWRcbiAgICBpZiAoZXhjbHVkZURhdGVzICYmIGV4Y2x1ZGVEYXRlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAhIWV4Y2x1ZGVEYXRlcy5maW5kKChkOiBEYXRlKSA9PiBtYXRjaCh2YWx1ZSwgZCkpXG4gICAgfVxuXG4gICAgLy8gb3RoZXJ3aXNlIHNob3cgZGF0ZSBhcyBub3QgZGlzYWJsZWRcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class DateThookPipe {\n get today() {\n const tmp = new Date();\n const today = new Date(tmp.setHours(0, 0, 0, 0));\n return today;\n }\n transform(date, isDisabled) {\n if (!!date && !isDisabled) {\n // Reset time for target date\n const dateTmp = new Date(date.setHours(0, 0, 0, 0));\n // To calculate the time difference of two dates\n const differenceInTime = dateTmp.getTime() - this.today.getTime();\n // To calculate the no. of days between two dates\n const differenceInDays = differenceInTime / (1000 * 3600 * 24);\n const absoluteDifferenceInDays = Math.abs(differenceInDays);\n const differentiator = differenceInDays < 0 ? '-' : differenceInDays === 0 ? '' : '+';\n return `today${differentiator}${absoluteDifferenceInDays === 0 ? '' : absoluteDifferenceInDays}`;\n }\n return 'disabled-date';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: DateThookPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: DateThookPipe, isStandalone: false, name: \"dateThook\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: DateThookPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'dateThook',\n standalone: false\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aG9vay5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZGF0ZXBpY2tlci9waXBlcy9kYXRlLXRob29rLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUE7O0FBTW5ELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLElBQUksS0FBSztRQUNQLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2hELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFVLEVBQUUsVUFBbUI7UUFDdkMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDMUIsNkJBQTZCO1lBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUVuRCxnREFBZ0Q7WUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTtZQUVqRSxpREFBaUQ7WUFDakQsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUE7WUFDOUQsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUE7WUFFM0QsTUFBTSxjQUFjLEdBQ2xCLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1lBRWhFLE9BQU8sUUFBUSxjQUFjLEdBQUcsd0JBQXdCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUE7UUFDbEcsQ0FBQztRQUVELE9BQU8sZUFBZSxDQUFBO0lBQ3hCLENBQUM7OEdBMUJVLGFBQWE7NEdBQWIsYUFBYTs7MkZBQWIsYUFBYTtrQkFKekIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsV0FBVztvQkFDakIsVUFBVSxFQUFFLEtBQUs7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbkBQaXBlKHtcbiAgICBuYW1lOiAnZGF0ZVRob29rJyxcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRlVGhvb2tQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIGdldCB0b2RheSgpOiBEYXRlIHtcbiAgICBjb25zdCB0bXAgPSBuZXcgRGF0ZSgpXG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSh0bXAuc2V0SG91cnMoMCwgMCwgMCwgMCkpXG4gICAgcmV0dXJuIHRvZGF5XG4gIH1cblxuICB0cmFuc2Zvcm0oZGF0ZTogRGF0ZSwgaXNEaXNhYmxlZDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgaWYgKCEhZGF0ZSAmJiAhaXNEaXNhYmxlZCkge1xuICAgICAgLy8gUmVzZXQgdGltZSBmb3IgdGFyZ2V0IGRhdGVcbiAgICAgIGNvbnN0IGRhdGVUbXAgPSBuZXcgRGF0ZShkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApKVxuXG4gICAgICAvLyBUbyBjYWxjdWxhdGUgdGhlIHRpbWUgZGlmZmVyZW5jZSBvZiB0d28gZGF0ZXNcbiAgICAgIGNvbnN0IGRpZmZlcmVuY2VJblRpbWUgPSBkYXRlVG1wLmdldFRpbWUoKSAtIHRoaXMudG9kYXkuZ2V0VGltZSgpXG5cbiAgICAgIC8vIFRvIGNhbGN1bGF0ZSB0aGUgbm8uIG9mIGRheXMgYmV0d2VlbiB0d28gZGF0ZXNcbiAgICAgIGNvbnN0IGRpZmZlcmVuY2VJbkRheXMgPSBkaWZmZXJlbmNlSW5UaW1lIC8gKDEwMDAgKiAzNjAwICogMjQpXG4gICAgICBjb25zdCBhYnNvbHV0ZURpZmZlcmVuY2VJbkRheXMgPSBNYXRoLmFicyhkaWZmZXJlbmNlSW5EYXlzKVxuXG4gICAgICBjb25zdCBkaWZmZXJlbnRpYXRvciA9XG4gICAgICAgIGRpZmZlcmVuY2VJbkRheXMgPCAwID8gJy0nIDogZGlmZmVyZW5jZUluRGF5cyA9PT0gMCA/ICcnIDogJysnXG5cbiAgICAgIHJldHVybiBgdG9kYXkke2RpZmZlcmVudGlhdG9yfSR7YWJzb2x1dGVEaWZmZXJlbmNlSW5EYXlzID09PSAwID8gJycgOiBhYnNvbHV0ZURpZmZlcmVuY2VJbkRheXN9YFxuICAgIH1cblxuICAgIHJldHVybiAnZGlzYWJsZWQtZGF0ZSdcbiAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { match } from '../datepicker.utils';\nimport * as i0 from \"@angular/core\";\nexport class MatchesPipe {\n transform(value, selected) {\n return match(value, selected);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MatchesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: MatchesPipe, isStandalone: false, name: \"matches\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MatchesPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'matches',\n standalone: false\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hlcy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZGF0ZXBpY2tlci9waXBlcy9tYXRjaGVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUE7QUFFbkQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBOztBQU0zQyxNQUFNLE9BQU8sV0FBVztJQUN0QixTQUFTLENBQUMsS0FBVyxFQUFFLFFBQTBCO1FBQy9DLE9BQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUMvQixDQUFDOzhHQUhVLFdBQVc7NEdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFKdkIsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsS0FBSztpQkFDcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgbWF0Y2ggfSBmcm9tICcuLi9kYXRlcGlja2VyLnV0aWxzJ1xuXG5AUGlwZSh7XG4gICAgbmFtZTogJ21hdGNoZXMnLFxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIE1hdGNoZXNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogRGF0ZSwgc2VsZWN0ZWQ6IERhdGUgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWF0Y2godmFsdWUsIHNlbGVjdGVkKVxuICB9XG59XG4iXX0=","import { WeekDay } from '@angular/common';\nimport { Component, EventEmitter, HostListener, Input, Output, QueryList, ViewChildren, } from '@angular/core';\nimport { generateDateMatrix, getDayOffset, sortWeekDays, toLocalDate, } from '../../datepicker.utils';\nimport { CalendarDateDirective } from '../../directives/calendar-date.directive';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"../../directives/calendar-date.directive\";\nimport * as i3 from \"../../pipes/is-disabled.pipe\";\nimport * as i4 from \"../../pipes/date-thook.pipe\";\nimport * as i5 from \"../../pipes/matches.pipe\";\nexport class CalendarComponent {\n constructor() {\n this.dateClick = new EventEmitter();\n this.minCalendarRows = 5;\n this.firstDayOfWeek = WeekDay.Monday;\n this.type = 'normal';\n this.dateMatrix = [[]];\n this.disableDateConfig = {};\n this.lastDayOfWeek = WeekDay.Sunday;\n }\n // inputs that affects which dates in the calendar should be grayed out\n set disableDates(value) {\n this.updateDisableDateConfig({ excludeDates: value ?? [] });\n }\n set disableWeekDays(value) {\n this.updateDisableDateConfig({ excludeDays: value });\n }\n set firstValid(value) {\n this.updateDisableDateConfig({ fromDate: value });\n }\n set lastValid(value) {\n this.updateDisableDateConfig({ toDate: value });\n }\n set closingTime(value) {\n this.updateDisableDateConfig({ closingTime: value });\n }\n ngOnChanges(changes) {\n if (changes.selected?.currentValue) {\n this.selected = toLocalDate(changes.selected.currentValue);\n }\n if (changes.firstDayOfWeek?.currentValue) {\n this.lastDayOfWeek = sortWeekDays(changes.firstDayOfWeek.currentValue).pop();\n }\n if ((changes.month?.currentValue !== undefined &&\n changes.month?.currentValue !== null) ||\n !!changes.year?.currentValue ||\n !!changes.firstDayOfWeek?.currentValue ||\n !!changes.minCalendarRows?.currentValue) {\n this.dateMatrix = generateDateMatrix(this.month, this.year, this.minCalendarRows, this.firstDayOfWeek);\n }\n }\n clickDate(date) {\n this.dateClick.emit(date);\n }\n keyNavigation(event) {\n let activeElement;\n if (event.key !== 'Tab')\n activeElement = document.activeElement;\n if (event.key === 'ArrowRight') {\n const nextFocusable = this.getNextFocusable(activeElement);\n if (nextFocusable)\n nextFocusable.focus();\n }\n if (event.key === 'ArrowLeft') {\n const nextFocusable = this.getPreviousFocusable(activeElement);\n if (nextFocusable)\n nextFocusable.focus();\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n const nextFocusable = this.getElementWithOffset(activeElement, -7);\n if (nextFocusable)\n nextFocusable.focus();\n }\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n const nextFocusable = this.getElementWithOffset(activeElement, 7);\n if (nextFocusable)\n nextFocusable.focus();\n }\n if (event.key === 'Enter' || event.key === 'Space') {\n if (activeElement) {\n const dateRef = this.dateButtonRefs.find((ref) => ref.nativeElement === activeElement);\n if (!dateRef?.disabled) {\n this.dateClick.emit(dateRef?.calendarDate);\n }\n }\n }\n if (event.key === 'Home') {\n event.preventDefault();\n const nextFocusable = this.firstDayOfWeekElement();\n if (nextFocusable)\n nextFocusable.focus();\n }\n if (event.key === 'End') {\n event.preventDefault();\n const nextFocusable = this.lastDayOfWeekElement();\n if (nextFocusable)\n nextFocusable.focus();\n }\n }\n getElementWithOffset(fromElement, offsetDays, returnOnlyEnabled = true) {\n if (!fromElement)\n return;\n const fromIndex = this.dateButtonRefs\n .toArray()\n .map((ref) => ref.nativeElement)\n .indexOf(fromElement);\n const next = this.dateButtonRefs.get(fromIndex + offsetDays);\n if (!next)\n return;\n if (returnOnlyEnabled && next.disabled)\n return this.getElementWithOffset(next.nativeElement, offsetDays);\n return next.nativeElement;\n }\n getNextFocusable(fromElement) {\n if (!fromElement)\n return;\n return this.getElementWithOffset(fromElement, 1);\n }\n getPreviousFocusable(fromElement) {\n if (!fromElement)\n return;\n return this.getElementWithOffset(fromElement, -1);\n }\n firstDayOfWeekElement() {\n const activeElement = document.activeElement;\n if (!activeElement)\n return;\n const dateRef = this.dateButtonRefs.find((ref) => ref.nativeElement === activeElement);\n if (dateRef.calendarDate.getDay() === this.firstDayOfWeek)\n return;\n const offset = this.getDayOffset(dateRef.calendarDate.getDay(), this.firstDayOfWeek, 'back');\n const targetElement = this.getElementWithOffset(activeElement, offset, false);\n if (targetElement && targetElement.disabled)\n return this.getNextFocusable(targetElement);\n return targetElement;\n }\n lastDayOfWeekElement() {\n const activeElement = document.activeElement;\n if (!activeElement)\n return;\n const dateRef = this.dateButtonRefs.find((ref) => ref.nativeElement === activeElement);\n if (dateRef.calendarDate.getDay() === this.lastDayOfWeek)\n return;\n const offset = this.getDayOffset(dateRef.calendarDate.getDay(), this.lastDayOfWeek, 'forward');\n const targetElement = this.getElementWithOffset(activeElement, offset, false);\n if (targetElement && targetElement.disabled)\n return this.getPreviousFocusable(targetElement);\n return targetElement;\n }\n getDayOffset(from, to, direction) {\n return getDayOffset(from, to, this.firstDayOfWeek, direction);\n }\n updateDisableDateConfig(config) {\n this.disableDateConfig = {\n ...this.disableDateConfig,\n ...config,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.9\", type: CalendarComponent, isStandalone: false, selector: \"nggv-calendar\", inputs: { year: \"year\", month: \"month\", selected: \"selected\", locale: \"locale\", minCalendarRows: \"minCalendarRows\", firstDayOfWeek: \"firstDayOfWeek\", type: \"type\", disableDates: \"disableDates\", disableWeekDays: \"disableWeekDays\", firstValid: \"firstValid\", lastValid: \"lastValid\", closingTime: \"closingTime\" }, outputs: { dateClick: \"dateClick\" }, host: { listeners: { \"keydown\": \"keyNavigation($event)\" } }, viewQueries: [{ propertyName: \"dateButtonRefs\", predicate: CalendarDateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<ng-container *ngFor=\\\"let weekRow of dateMatrix\\\">\\n <div class=\\\"nggv-calendar-row\\\">\\n <button\\n *ngFor=\\\"let date of weekRow\\\"\\n class=\\\"gds-button gds-button-alternative\\\"\\n [attr.data-thook]=\\\"\\n date | dateThook: (date | isDisabled: disableDateConfig)\\n \\\"\\n [attr.aria-label]=\\\"date\\\"\\n [calendarDate]=\\\"date\\\"\\n [notWithinMonth]=\\\"!(month === date?.getMonth())\\\"\\n [selected]=\\\"date | matches: selected\\\"\\n [disabled]=\\\"date | isDisabled: disableDateConfig\\\"\\n (click)=\\\"clickDate(date)\\\"\\n >\\n {{ date | date: 'd' : undefined : locale }}\\n </button>\\n </div>\\n</ng-container>\\n\", styles: [\":host{border-top:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9}:host .nggv-calendar-row{display:flex;padding:2px;gap:1px}:host .nggv-calendar-row>*{line-height:2.5rem;padding:0;display:block;flex-grow:1;text-align:center;width:20%;color:#333}:host .nggv-calendar-row>*:disabled{border:0 solid transparent}:host .nggv-calendar-row>button{padding-left:1rem \\\"\\\";padding-right:1rem \\\"\\\";padding-bottom:.75rem \\\"\\\";padding-top:.75rem \\\"\\\";border-radius:.25rem;border:solid 1px var(--gds-sys-color-base-600);font-weight:500}:host .nggv-calendar-row>button:focus:not(:focus-visible){box-shadow:none;outline:0}:host .nggv-calendar-row>button:focus,:host .nggv-calendar-row>button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .nggv-calendar-row>button{min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center}@media(max-width:35.98em){:host .nggv-calendar-row>button{min-width:100%}}@media screen and (-ms-high-contrast:active){:host .nggv-calendar-row>button{border:2px solid currentcolor}}:host .nggv-calendar-row>button.small{min-height:2rem;height:2rem;padding:.4375rem .75rem;font-size:.875rem;line-height:1rem}:host .nggv-calendar-row>button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .nggv-calendar-row>button{width:15%;background:transparent;width:44px;height:44px;border-radius:4px;border:none;font-size:1rem;font-family:inherit}:host .nggv-calendar-row>button:not([disabled]):hover{background-color:#e9e9e9}:host .nggv-calendar-row>button:not([disabled]):focus{z-index:1;outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .nggv-calendar-row>button[disabled]{background-color:#eee;color:#adadad}:host .nggv-calendar-row>button.today{border:1px solid #333}:host .nggv-calendar-row>button.not-within-month:not([disabled]){color:#adadad;background-color:#f8f8f8}:host .nggv-calendar-row>button.not-within-month:not([disabled]):hover{background-color:#e9e9e9}:host .nggv-calendar-row>button.selected:not([disabled]){background-color:#1a1a1a;border-color:#1a1a1a;text-decoration:none;color:#fff}@media(max-width:35.98em){:host .nggv-calendar-row>button{min-width:initial}}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.CalendarDateDirective, selector: \"[calendarDate]\", inputs: [\"calendarDate\", \"selected\", \"notWithinMonth\", \"disabled\"] }, { kind: \"pipe\", type: i1.DatePipe, name: \"date\" }, { kind: \"pipe\", type: i3.IsDisabledPipe, name: \"isDisabled\" }, { kind: \"pipe\", type: i4.DateThookPipe, name: \"dateThook\" }, { kind: \"pipe\", type: i5.MatchesPipe, name: \"matches\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CalendarComponent, decorators: [{\n type: Component,\n args: [{ selector: 'nggv-calendar', standalone: false, template: \"<ng-container *ngFor=\\\"let weekRow of dateMatrix\\\">\\n <div class=\\\"nggv-calendar-row\\\">\\n <button\\n *ngFor=\\\"let date of weekRow\\\"\\n class=\\\"gds-button gds-button-alternative\\\"\\n [attr.data-thook]=\\\"\\n date | dateThook: (date | isDisabled: disableDateConfig)\\n \\\"\\n [attr.aria-label]=\\\"date\\\"\\n [calendarDate]=\\\"date\\\"\\n [notWithinMonth]=\\\"!(month === date?.getMonth())\\\"\\n [selected]=\\\"date | matches: selected\\\"\\n [disabled]=\\\"date | isDisabled: disableDateConfig\\\"\\n (click)=\\\"clickDate(date)\\\"\\n >\\n {{ date | date: 'd' : undefined : locale }}\\n </button>\\n </div>\\n</ng-container>\\n\", styles: [\":host{border-top:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9}:host .nggv-calendar-row{display:flex;padding:2px;gap:1px}:host .nggv-calendar-row>*{line-height:2.5rem;padding:0;display:block;flex-grow:1;text-align:center;width:20%;color:#333}:host .nggv-calendar-row>*:disabled{border:0 solid transparent}:host .nggv-calendar-row>button{padding-left:1rem \\\"\\\";padding-right:1rem \\\"\\\";padding-bottom:.75rem \\\"\\\";padding-top:.75rem \\\"\\\";border-radius:.25rem;border:solid 1px var(--gds-sys-color-base-600);font-weight:500}:host .nggv-calendar-row>button:focus:not(:focus-visible){box-shadow:none;outline:0}:host .nggv-calendar-row>button:focus,:host .nggv-calendar-row>button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .nggv-calendar-row>button{min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center}@media(max-width:35.98em){:host .nggv-calendar-row>button{min-width:100%}}@media screen and (-ms-high-contrast:active){:host .nggv-calendar-row>button{border:2px solid currentcolor}}:host .nggv-calendar-row>button.small{min-height:2rem;height:2rem;padding:.4375rem .75rem;font-size:.875rem;line-height:1rem}:host .nggv-calendar-row>button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .nggv-calendar-row>button{width:15%;background:transparent;width:44px;height:44px;border-radius:4px;border:none;font-size:1rem;font-family:inherit}:host .nggv-calendar-row>button:not([disabled]):hover{background-color:#e9e9e9}:host .nggv-calendar-row>button:not([disabled]):focus{z-index:1;outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .nggv-calendar-row>button[disabled]{background-color:#eee;color:#adadad}:host .nggv-calendar-row>button.today{border:1px solid #333}:host .nggv-calendar-row>button.not-within-month:not([disabled]){color:#adadad;background-color:#f8f8f8}:host .nggv-calendar-row>button.not-within-month:not([disabled]):hover{background-color:#e9e9e9}:host .nggv-calendar-row>button.selected:not([disabled]){background-color:#1a1a1a;border-color:#1a1a1a;text-decoration:none;color:#fff}@media(max-width:35.98em){:host .nggv-calendar-row>button{min-width:initial}}\\n\"] }]\n }], propDecorators: { dateClick: [{\n type: Output\n }], dateButtonRefs: [{\n type: ViewChildren,\n args: [CalendarDateDirective]\n }], year: [{\n type: Input\n }], month: [{\n type: Input\n }], selected: [{\n type: Input\n }], locale: [{\n type: Input\n }], minCalendarRows: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], type: [{\n type: Input\n }], disableDates: [{\n type: Input\n }], disableWeekDays: [{\n type: Input\n }], firstValid: [{\n type: Input\n }], lastValid: [{\n type: Input\n }], closingTime: [{\n type: Input\n }], keyNavigation: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZGF0ZXBpY2tlci9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDekMsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQTtBQU10QixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sd0JBQXdCLENBQUE7QUFDL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMENBQTBDLENBQUE7Ozs7Ozs7QUFRaEYsTUFBTSxPQUFPLGlCQUFpQjtJQU45QjtRQU9ZLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFBO1FBV3JDLG9CQUFlLEdBQUcsQ0FBQyxDQUFBO1FBQ25CLG1CQUFjLEdBQVksT0FBTyxDQUFDLE1BQU0sQ0FBQTtRQUN4QyxTQUFJLEdBQWlCLFFBQVEsQ0FBQTtRQW1CdEMsZUFBVSxHQUFhLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDM0Isc0JBQWlCLEdBQXNCLEVBQUUsQ0FBQTtRQUVqQyxrQkFBYSxHQUFZLE9BQU8sQ0FBQyxNQUFNLENBQUE7S0E2S2hEO0lBak1DLHVFQUF1RTtJQUN2RSxJQUFhLFlBQVksQ0FBQyxLQUF5QjtRQUNqRCxJQUFJ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LE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDN0MsYUFBYSxFQUNiLE1BQU0sRUFDTixLQUFLLENBQ2UsQ0FBQTtRQUN0QixJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsUUFBUTtZQUN6QyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNqRCxPQUFPLGFBQWEsQ0FBQTtJQUN0QixDQUFDO0lBRUQsWUFBWSxDQUNWLElBQWEsRUFDYixFQUFXLEVBQ1gsU0FBOEI7UUFFOUIsT0FBTyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQy9ELENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxNQUFrQztRQUNoRSxJQUFJLENBQUMsaUJBQWlCLEdBQUc7WUFDdkIsR0FBRyxJQUFJLENBQUMsaUJBQWlCO1lBQ3pCLEdBQUcsTUFBTTtTQUNWLENBQUE7SUFDSCxDQUFDOzhHQWhOVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixxZ0JBR2QscUJBQXFCLHFFQ2xDckMsc3BCQW1CQTs7MkZEWWEsaUJBQWlCO2tCQU43QixTQUFTOytCQUNFLGVBQWUsY0FHYixLQUFLOztzQkFHaEIsTUFBTTs7c0JBRU4sWUFBWTt1QkFBQyxxQkFBcUI7O3NCQUdsQyxLQUFLOztzQkFDTCxLQUFLOztzQkFDTCxLQUFLOztzQkFHTCxLQUFLOztzQkFDTCxLQUFLOztzQkFDTCxLQUFLOztzQkFDTCxLQUFLOztzQkFHTCxLQUFLOztzQkFHTCxLQUFLOztzQkFHTCxLQUFLOztzQkFHTCxLQUFLOztzQkFHTCxLQUFLOztzQkF3Q0wsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZWVrRGF5IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHR5cGUge1xuICBDYWxlbmRhclR5cGUsXG4gIERpc2FibGVEYXRlQ29uZmlnLFxufSBmcm9tICcuLi8uLi9kYXRlcGlja2VyLm1vZGVscydcbmltcG9ydCB7XG4gIGdlbmVyYXRlRGF0ZU1hdHJpeCxcbiAgZ2V0RGF5T2Zmc2V0LFxuICBzb3J0V2Vla0RheXMsXG4gIHRvTG9jYWxEYXRlLFxufSBmcm9tICcuLi8uLi9kYXRlcGlja2VyLnV0aWxzJ1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jYWxlbmRhci1kYXRlLmRpcmVjdGl2ZSdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi1jYWxlbmRhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBPdXRwdXQoKSBkYXRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KClcblxuICBAVmlld0NoaWxkcmVuKENhbGVuZGFyRGF0ZURpcmVjdGl2ZSlcbiAgZGF0ZUJ1dHRvblJlZnMhOiBRdWVyeUxpc3Q8Q2FsZW5kYXJEYXRlRGlyZWN0aXZlPlxuXG4gIEBJbnB1dCgpIHllYXIhOiBudW1iZXJcbiAgQElucHV0KCkgbW9udGghOiBudW1iZXJcbiAgQElucHV0KCkgc2VsZWN0ZWQ6IERhdGUgfCB1bmRlZmluZWRcblxuICAvLyBpbnB1dHMgdGhhdCBjb25maWd1cmUgZGlzcGxheSBiZWhhdmlvdXJcbiAgQElucHV0KCkgbG9jYWxlOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgbWluQ2FsZW5kYXJSb3dzID0gNVxuICBASW5wdXQoKSBmaXJzdERheU9mV2VlazogV2Vla0RheSA9IFdlZWtEYXkuTW9uZGF5XG4gIEBJbnB1dCgpIHR5cGU6IENhbGVuZGFyVHlwZSA9ICdub3JtYWwnXG5cbiAgLy8gaW5wdXRzIHRoYXQgYWZmZWN0cyB3aGljaCBkYXRlcyBpbiB0aGUgY2FsZW5kYXIgc2hvdWxkIGJlIGdyYXllZCBvdXRcbiAgQElucHV0KCkgc2V0IGRpc2FibGVEYXRlcyh2YWx1ZTogRGF0ZVtdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy51cGRhdGVEaXNhYmxlRGF0ZUNvbmZpZyh7IGV4Y2x1ZGVEYXRlczogdmFsdWUgPz8gW10gfSlcbiAgfVxuICBASW5wdXQoKSBzZXQgZGlzYWJsZVdlZWtEYXlzKHZhbHVlOiBXZWVrRGF5W10gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVEYXRlQ29uZmlnKHsgZXhjbHVkZURheXM6IHZhbHVlIH0pXG4gIH1cbiAgQElucHV0KCkgc2V0IGZpcnN0VmFsaWQodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnVwZGF0ZURpc2FibGVEYXRlQ29uZmlnKHsgZnJvbURhdGU6IHZhbHVlIH0pXG4gIH1cbiAgQElucHV0KCkgc2V0IGxhc3RWYWxpZCh2YWx1ZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMudXBkYXRlRGlzYWJsZURhdGVDb25maWcoeyB0b0RhdGU6IHZhbHVlIH0pXG4gIH1cbiAgQElucHV0KCkgc2V0IGNsb3NpbmdUaW1lKHZhbHVlOiBEYXRlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy51cGRhdGVEaXNhYmxlRGF0ZUNvbmZpZyh7IGNsb3NpbmdUaW1lOiB2YWx1ZSB9KVxuICB9XG5cbiAgZGF0ZU1hdHJpeDogRGF0ZVtdW10gPSBbW11dXG4gIGRpc2FibGVEYXRlQ29uZmlnOiBEaXNhYmxlRGF0ZUNvbmZpZyA9IHt9XG5cbiAgcHJpdmF0ZSBsYXN0RGF5T2ZXZWVrOiBXZWVrRGF5ID0gV2Vla0RheS5TdW5kYXlcblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuc2VsZWN0ZWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IHRvTG9jYWxEYXRlKGNoYW5nZXMuc2VsZWN0ZWQuY3VycmVudFZhbHVlKVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmZpcnN0RGF5T2ZXZWVrPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMubGFzdERheU9mV2VlayA9IHNvcnRXZWVrRGF5cyhcbiAgICAgICAgY2hhbmdlcy5maXJzdERheU9mV2Vlay5jdXJyZW50VmFsdWUsXG4gICAgICApLnBvcCgpIGFzIFdlZWtEYXlcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAoY2hhbmdlcy5tb250aD8uY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgY2hhbmdlcy5tb250aD8uY3VycmVudFZhbHVlICE9PSBudWxsKSB8fFxuICAgICAgISFjaGFuZ2VzLnllYXI/LmN1cnJlbnRWYWx1ZSB8fFxuICAgICAgISFjaGFuZ2VzLmZpcnN0RGF5T2ZXZWVrPy5jdXJyZW50VmFsdWUgfHxcbiAgICAgICEhY2hhbmdlcy5taW5DYWxlbmRhclJvd3M/LmN1cnJlbnRWYWx1ZVxuICAgICkge1xuICAgICAgdGhpcy5kYXRlTWF0cml4ID0gZ2VuZXJhdGVEYXRlTWF0cml4KFxuICAgICAgICB0aGlzLm1vbnRoLFxuICAgICAgICB0aGlzLnllYXIsXG4gICAgICAgIHRoaXMubWluQ2FsZW5kYXJSb3dzLFxuICAgICAgICB0aGlzLmZpcnN0RGF5T2ZXZWVrLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNsaWNrRGF0ZShkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5kYXRlQ2xpY2suZW1pdChkYXRlKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGtleU5hdmlnYXRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBsZXQgYWN0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWRcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnVGFiJylcbiAgICAgIGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnKSB7XG4gICAgICBjb25zdCBuZXh0Rm9jdXNhYmxlID0gdGhpcy5nZXROZXh0Rm9jdXNhYmxlKGFjdGl2ZUVsZW1lbnQpXG4gICAgICBpZiAobmV4dEZvY3VzYWJsZSkgbmV4dEZvY3VzYWJsZS5mb2N1cygpXG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgIGNvbnN0IG5leHRGb2N1c2FibGUgPSB0aGlzLmdldFByZXZpb3VzRm9jdXNhYmxlKGFjdGl2ZUVsZW1lbnQpXG4gICAgICBpZiAobmV4dEZvY3VzYWJsZSkgbmV4dEZvY3VzYWJsZS5mb2N1cygpXG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBjb25zdCBuZXh0Rm9jdXNhYmxlID0gdGhpcy5nZXRFbGVtZW50V2l0aE9mZnNldChhY3RpdmVFbGVtZW50LCAtNylcbiAgICAgIGlmIChuZXh0Rm9jdXNhYmxlKSBuZXh0Rm9jdXNhYmxlLmZvY3VzKClcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgY29uc3QgbmV4dEZvY3VzYWJsZSA9IHRoaXMuZ2V0RWxlbWVudFdpdGhPZmZzZXQoYWN0aXZlRWxlbWVudCwgNylcbiAgICAgIGlmIChuZXh0Rm9jdXNhYmxlKSBuZXh0Rm9jdXNhYmxlLmZvY3VzKClcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ1NwYWNlJykge1xuICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgZGF0ZVJlZiA9IHRoaXMuZGF0ZUJ1dHRvblJlZnMuZmluZChcbiAgICAgICAgICAocmVmKSA9PiByZWYubmF0aXZlRWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoIWRhdGVSZWY/LmRpc2FibGVkKSB7XG4gICAgICAgICAgdGhpcy5kYXRlQ2xpY2suZW1pdChkYXRlUmVmPy5jYWxlbmRhckRhdGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnSG9tZScpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGNvbnN0IG5leHRGb2N1c2FibGUgPSB0aGlzLmZpcnN0RGF5T2ZXZWVrRWxlbWVudCgpXG4gICAgICBpZiAobmV4dEZvY3VzYWJsZSkgbmV4dEZvY3VzYWJsZS5mb2N1cygpXG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VuZCcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgIGNvbnN0IG5leHRGb2N1c2FibGUgPSB0aGlzLmxhc3REYXlPZldlZWtFbGVtZW50KClcbiAgICAgIGlmIChuZXh0Rm9jdXNhYmxlKSBuZXh0Rm9jdXNhYmxlLmZvY3VzKClcbiAgICB9XG4gIH1cblxuICBnZXRFbGVtZW50V2l0aE9mZnNldChcbiAgICBmcm9tRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQsXG4gICAgb2Zmc2V0RGF5czogbnVtYmVyLFxuICAgIHJldHVybk9ubHlFbmFibGVkID0gdHJ1ZSxcbiAgKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIGlmICghZnJvbUVsZW1lbnQpIHJldHVyblxuICAgIGNvbnN0IGZyb21JbmRleCA9IHRoaXMuZGF0ZUJ1dHRvblJlZnNcbiAgICAgIC50b0FycmF5KClcbiAgICAgIC5tYXAoKHJlZikgPT4gcmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuaW5kZXhPZihmcm9tRWxlbWVudClcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5kYXRlQnV0dG9uUmVmcy5nZXQoZnJvbUluZGV4ICsgb2Zmc2V0RGF5cylcbiAgICBpZiAoIW5leHQpIHJldHVyblxuICAgIGlmIChyZXR1cm5Pbmx5RW5hYmxlZCAmJiBuZXh0LmRpc2FibGVkKVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudFdpdGhPZmZzZXQobmV4dC5uYXRpdmVFbGVtZW50LCBvZmZzZXREYXlzKVxuICAgIHJldHVybiBuZXh0Lm5hdGl2ZUVsZW1lbnRcbiAgfVxuXG4gIGdldE5leHRGb2N1c2FibGUoXG4gICAgZnJvbUVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkLFxuICApOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFmcm9tRWxlbWVudCkgcmV0dXJuXG4gICAgcmV0dXJuIHRoaXMuZ2V0RWxlbWVudFdpdGhPZmZzZXQoZnJvbUVsZW1lbnQsIDEpXG4gIH1cblxuICBnZXRQcmV2aW91c0ZvY3VzYWJsZShcbiAgICBmcm9tRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQsXG4gICk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWZyb21FbGVtZW50KSByZXR1cm5cbiAgICByZXR1cm4gdGhpcy5nZXRFbGVtZW50V2l0aE9mZnNldChmcm9tRWxlbWVudCwgLTEpXG4gIH1cblxuICBmaXJzdERheU9mV2Vla0VsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG4gICAgaWYgKCFhY3RpdmVFbGVtZW50KSByZXR1cm5cbiAgICBjb25zdCBkYXRlUmVmID0gdGhpcy5kYXRlQnV0dG9uUmVmcy5maW5kKFxuICAgICAgKHJlZikgPT4gcmVmLm5hdGl2ZUVsZW1lbnQgPT09IGFjdGl2ZUVsZW1lbnQsXG4gICAgKSBhcyBDYWxlbmRhckRhdGVEaXJlY3RpdmVcbiAgICBpZiAoZGF0ZVJlZi5jYWxlbmRhckRhdGUuZ2V0RGF5KCkgPT09IHRoaXMuZmlyc3REYXlPZldlZWspIHJldHVyblxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuZ2V0RGF5T2Zmc2V0KFxuICAgICAgZGF0ZVJlZi5jYWxlbmRhckRhdGUuZ2V0RGF5KCksXG4gICAgICB0aGlzLmZpcnN0RGF5T2ZXZWVrLFxuICAgICAgJ2JhY2snLFxuICAgIClcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gdGhpcy5nZXRFbGVtZW50V2l0aE9mZnNldChcbiAgICAgIGFjdGl2ZUVsZW1lbnQsXG4gICAgICBvZmZzZXQsXG4gICAgICBmYWxzZSxcbiAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50XG4gICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgdGFyZ2V0RWxlbWVudC5kaXNhYmxlZClcbiAgICAgIHJldHVybiB0aGlzLmdldE5leHRGb2N1c2FibGUodGFyZ2V0RWxlbWVudClcbiAgICByZXR1cm4gdGFyZ2V0RWxlbWVudFxuICB9XG5cbiAgbGFzdERheU9mV2Vla0VsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG4gICAgaWYgKCFhY3RpdmVFbGVtZW50KSByZXR1cm5cbiAgICBjb25zdCBkYXRlUmVmID0gdGhpcy5kYXRlQnV0dG9uUmVmcy5maW5kKFxuICAgICAgKHJlZikgPT4gcmVmLm5hdGl2ZUVsZW1lbnQgPT09IGFjdGl2ZUVsZW1lbnQsXG4gICAgKSBhcyBDYWxlbmRhckRhdGVEaXJlY3RpdmVcbiAgICBpZiAoZGF0ZVJlZi5jYWxlbmRhckRhdGUuZ2V0RGF5KCkgPT09IHRoaXMubGFzdERheU9mV2VlaykgcmV0dXJuXG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5nZXREYXlPZmZzZXQoXG4gICAgICBkYXRlUmVmLmNhbGVuZGFyRGF0ZS5nZXREYXkoKSxcbiAgICAgIHRoaXMubGFzdERheU9mV2VlayxcbiAgICAgICdmb3J3YXJkJyxcbiAgICApXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IHRoaXMuZ2V0RWxlbWVudFdpdGhPZmZzZXQoXG4gICAgICBhY3RpdmVFbGVtZW50LFxuICAgICAgb2Zmc2V0LFxuICAgICAgZmFsc2UsXG4gICAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudFxuICAgIGlmICh0YXJnZXRFbGVtZW50ICYmIHRhcmdldEVsZW1lbnQuZGlzYWJsZWQpXG4gICAgICByZXR1cm4gdGhpcy5nZXRQcmV2aW91c0ZvY3VzYWJsZSh0YXJnZXRFbGVtZW50KVxuICAgIHJldHVybiB0YXJnZXRFbGVtZW50XG4gIH1cblxuICBnZXREYXlPZmZzZXQoXG4gICAgZnJvbTogV2Vla0RheSxcbiAgICB0bzogV2Vla0RheSxcbiAgICBkaXJlY3Rpb24/OiAnZm9yd2FyZCcgfCAnYmFjaycsXG4gICk6IG51bWJlciB7XG4gICAgcmV0dXJuIGdldERheU9mZnNldChmcm9tLCB0bywgdGhpcy5maXJzdERheU9mV2VlaywgZGlyZWN0aW9uKVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVEaXNhYmxlRGF0ZUNvbmZpZyhjb25maWc6IFBhcnRpYWw8RGlzYWJsZURhdGVDb25maWc+KTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlRGF0ZUNvbmZpZyA9IHtcbiAgICAgIC4uLnRoaXMuZGlzYWJsZURhdGVDb25maWcsXG4gICAgICAuLi5jb25maWcsXG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB3ZWVrUm93IG9mIGRhdGVNYXRyaXhcIj5cbiAgPGRpdiBjbGFzcz1cIm5nZ3YtY2FsZW5kYXItcm93XCI+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nRm9yPVwibGV0IGRhdGUgb2Ygd2Vla1Jvd1wiXG4gICAgICBjbGFzcz1cImdkcy1idXR0b24gZ2RzLWJ1dHRvbi1hbHRlcm5hdGl2ZVwiXG4gICAgICBbYXR0ci5kYXRhLXRob29rXT1cIlxuICAgICAgICBkYXRlIHwgZGF0ZVRob29rOiAoZGF0ZSB8IGlzRGlzYWJsZWQ6IGRpc2FibGVEYXRlQ29uZmlnKVxuICAgICAgXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGF0ZVwiXG4gICAgICBbY2FsZW5kYXJEYXRlXT1cImRhdGVcIlxuICAgICAgW25vdFdpdGhpbk1vbnRoXT1cIiEobW9udGggPT09IGRhdGU/LmdldE1vbnRoKCkpXCJcbiAgICAgIFtzZWxlY3RlZF09XCJkYXRlIHwgbWF0Y2hlczogc2VsZWN0ZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cImRhdGUgfCBpc0Rpc2FibGVkOiBkaXNhYmxlRGF0ZUNvbmZpZ1wiXG4gICAgICAoY2xpY2spPVwiY2xpY2tEYXRlKGRhdGUpXCJcbiAgICA+XG4gICAgICB7eyBkYXRlIHwgZGF0ZTogJ2QnIDogdW5kZWZpbmVkIDogbG9jYWxlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=","import { formatDate } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class CalendarMonth {\n constructor(date) {\n this._date = date ? new Date(date) : new Date();\n this._date.setDate(1);\n this._date.setHours(0, 0, 0, 0);\n this.year = this._date.getFullYear();\n this.month = this._date.getMonth();\n this.id = formatDate(this._date, 'yyyyMM', 'en');\n }\n /** Creates an instance based of input year and month. */\n static fromObject(obj) {\n const objectDate = new Date(obj.year, obj.month, 1);\n return new CalendarMonth(objectDate);\n }\n /** Returns a Date representation for the instance. */\n get date() {\n return new Date(this._date);\n }\n /** Returns the string id representing the instance in form of 'yyyyMM'. */\n valueOf() {\n return this.id;\n }\n /** Returns a new instance for next month. */\n nextMonth() {\n const next = this.date;\n next.setMonth(this.month + 1);\n return new CalendarMonth(next);\n }\n /** Returns a new instance for previous month. */\n previousMonth() {\n const previous = this.date;\n previous.setMonth(this.month - 1);\n return new CalendarMonth(previous);\n }\n /** Returns a new instance for next year. */\n nextYear() {\n const nextYear = this.date;\n nextYear.setFullYear(nextYear.getFullYear() + 1);\n return new CalendarMonth(nextYear);\n }\n /** Returns a new instance for previous year. */\n previousYear() {\n const previousYear = this.date;\n previousYear.setFullYear(previousYear.getFullYear() - 1);\n return new CalendarMonth(previousYear);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CalendarMonth, deps: [{ token: Date }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CalendarMonth }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CalendarMonth, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: Date }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVcsTUFBTSxpQkFBaUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBOztBQTRCMUMsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFBWSxJQUFXO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQTtRQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRCx5REFBeUQ7SUFDekQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFvQztRQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbkQsT0FBTyxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsc0RBQXNEO0lBQ3RELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFFRCwyRUFBMkU7SUFDM0UsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQTtJQUNoQixDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLFNBQVM7UUFDUCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUM3QixPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFFRCxpREFBaUQ7SUFDakQsYUFBYTtRQUNYLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDMUIsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2pDLE9BQU8sSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxRQUFRO1FBQ04sTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUMxQixRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNoRCxPQUFPLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsWUFBWTtRQUNWLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDOUIsWUFBWSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFDeEQsT0FBTyxJQUFJLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUN4QyxDQUFDOzhHQXpEVSxhQUFhO2tIQUFiLGFBQWE7OzJGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlLCBXZWVrRGF5IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmV4cG9ydCB0eXBlIENhbGVuZGFyVHlwZSA9ICdub3JtYWwnIHwgJ2V4dGVuZGVkJ1xuXG5leHBvcnQgY29uc3QgZW51bSBNb250aCB7XG4gIEphbnVhcnksXG4gIEZlYnJ1YXJ5LFxuICBNYXJjaCxcbiAgQXByaWwsXG4gIE1heSxcbiAgSnVuZSxcbiAgSnVseSxcbiAgQXVndXN0LFxuICBTZXB0ZW1iZXIsXG4gIE9jdG9iZXIsXG4gIE5vdmVtYmVyLFxuICBEZWNlbWJlcixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXNhYmxlRGF0ZUNvbmZpZyB7XG4gIGZyb21EYXRlPzogRGF0ZSB8IHVuZGVmaW5lZFxuICB0b0RhdGU/OiBEYXRlIHwgdW5kZWZpbmVkXG4gIGV4Y2x1ZGVEYXRlcz86IERhdGVbXSB8IHVuZGVmaW5lZFxuICBleGNsdWRlRGF5cz86IFdlZWtEYXlbXSB8IHVuZGVmaW5lZFxuICBjbG9zaW5nVGltZT86IERhdGUgfCB1bmRlZmluZWRcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyTW9udGgge1xuICB5ZWFyOiBudW1iZXJcbiAgbW9udGg6IG51bWJlclxuICBpZDogc3RyaW5nXG4gIF9kYXRlOiBEYXRlXG5cbiAgY29uc3RydWN0b3IoZGF0ZT86IERhdGUpIHtcbiAgICB0aGlzLl9kYXRlID0gZGF0ZSA/IG5ldyBEYXRlKGRhdGUpIDogbmV3IERhdGUoKVxuICAgIHRoaXMuX2RhdGUuc2V0RGF0ZSgxKVxuICAgIHRoaXMuX2RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMClcbiAgICB0aGlzLnllYXIgPSB0aGlzLl9kYXRlLmdldEZ1bGxZZWFyKClcbiAgICB0aGlzLm1vbnRoID0gdGhpcy5fZGF0ZS5nZXRNb250aCgpXG4gICAgdGhpcy5pZCA9IGZvcm1hdERhdGUodGhpcy5fZGF0ZSwgJ3l5eXlNTScsICdlbicpXG4gIH1cblxuICAvKiogQ3JlYXRlcyBhbiBpbnN0YW5jZSBiYXNlZCBvZiBpbnB1dCB5ZWFyIGFuZCBtb250aC4gKi9cbiAgc3RhdGljIGZyb21PYmplY3Qob2JqOiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlciB9KTogQ2FsZW5kYXJNb250aCB7XG4gICAgY29uc3Qgb2JqZWN0RGF0ZSA9IG5ldyBEYXRlKG9iai55ZWFyLCBvYmoubW9udGgsIDEpXG4gICAgcmV0dXJuIG5ldyBDYWxlbmRhck1vbnRoKG9iamVjdERhdGUpXG4gIH1cblxuICAvKiogUmV0dXJucyBhIERhdGUgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBpbnN0YW5jZS4gKi9cbiAgZ2V0IGRhdGUoKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuX2RhdGUpXG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgc3RyaW5nIGlkIHJlcHJlc2VudGluZyB0aGUgaW5zdGFuY2UgaW4gZm9ybSBvZiAneXl5eU1NJy4gKi9cbiAgdmFsdWVPZigpIHtcbiAgICByZXR1cm4gdGhpcy5pZFxuICB9XG5cbiAgLyoqIFJldHVybnMgYSBuZXcgaW5zdGFuY2UgZm9yIG5leHQgbW9udGguICovXG4gIG5leHRNb250aCgpOiBDYWxlbmRhck1vbnRoIHtcbiAgICBjb25zdCBuZXh0ID0gdGhpcy5kYXRlXG4gICAgbmV4dC5zZXRNb250aCh0aGlzLm1vbnRoICsgMSlcbiAgICByZXR1cm4gbmV3IENhbGVuZGFyTW9udGgobmV4dClcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIGZvciBwcmV2aW91cyBtb250aC4gKi9cbiAgcHJldmlvdXNNb250aCgpOiBDYWxlbmRhck1vbnRoIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZGF0ZVxuICAgIHByZXZpb3VzLnNldE1vbnRoKHRoaXMubW9udGggLSAxKVxuICAgIHJldHVybiBuZXcgQ2FsZW5kYXJNb250aChwcmV2aW91cylcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIGZvciBuZXh0IHllYXIuICovXG4gIG5leHRZZWFyKCk6IENhbGVuZGFyTW9udGgge1xuICAgIGNvbnN0IG5leHRZZWFyID0gdGhpcy5kYXRlXG4gICAgbmV4dFllYXIuc2V0RnVsbFllYXIobmV4dFllYXIuZ2V0RnVsbFllYXIoKSArIDEpXG4gICAgcmV0dXJuIG5ldyBDYWxlbmRhck1vbnRoKG5leHRZZWFyKVxuICB9XG5cbiAgLyoqIFJldHVybnMgYSBuZXcgaW5zdGFuY2UgZm9yIHByZXZpb3VzIHllYXIuICovXG4gIHByZXZpb3VzWWVhcigpOiBDYWxlbmRhck1vbnRoIHtcbiAgICBjb25zdCBwcmV2aW91c1llYXIgPSB0aGlzLmRhdGVcbiAgICBwcmV2aW91c1llYXIuc2V0RnVsbFllYXIocHJldmlvdXNZZWFyLmdldEZ1bGxZZWFyKCkgLSAxKVxuICAgIHJldHVybiBuZXcgQ2FsZW5kYXJNb250aChwcmV2aW91c1llYXIpXG4gIH1cbn1cbiJdfQ==","import { Component, EventEmitter, HostListener, Input, Output, } from '@angular/core';\nimport { UntypedFormBuilder } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\nimport { CalendarMonth } from '../../datepicker.models';\nimport { getMonthArray, getYearArray } from '../../datepicker.utils';\nimport '@sebgroup/green-core/components/icon/icons/chevron-left.js';\nimport '@sebgroup/green-core/components/icon/icons/chevron-right.js';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@angular/common\";\nimport * as i3 from \"@sebgroup/green-angular/src/lib/shared\";\nexport class CalendarControlComponent {\n constructor(fb) {\n this.fb = fb;\n // nextIcon: IconDefinition = faChevronRight\n // previousIcon: IconDefinition = faChevronLeft\n this.calendarChange = new EventEmitter();\n this.type = 'normal';\n this.monthArray = []; // array used for month dropdown\n this.yearArray = []; // array used for year dropdown\n this.subs = [];\n // initiate form group for dropdown menus\n this.selectedCalendar = this.fb.group({\n year: [],\n month: [],\n });\n }\n ngOnChanges(changes) {\n if (changes.activeCalendar &&\n !changes.activeCalendar.isFirstChange() &&\n changes.activeCalendar.currentValue.valueOf() !==\n this.selectedCalendar.value.id) {\n this.selectedCalendar.patchValue(changes.activeCalendar.currentValue);\n }\n }\n ngOnInit() {\n // populate drowdowns and labels with data\n this.monthArray = getMonthArray();\n this.yearArray = getYearArray();\n // subscribe to year and month changes, and emit event to datepicker\n this.subscribeToFormChanges();\n // update control to initial value\n if (this.activeCalendar)\n this.selectedCalendar.patchValue(this.activeCalendar);\n }\n ngOnDestroy() {\n this.subs.forEach((sub) => sub.unsubscribe());\n }\n viewPreviousMonth() {\n const previousMonth = CalendarMonth.fromObject(this.selectedCalendar.value).previousMonth();\n this.selectedCalendar.patchValue(previousMonth);\n }\n viewNextMonth() {\n const nextMonth = CalendarMonth.fromObject(this.selectedCalendar.value).nextMonth();\n this.selectedCalendar.patchValue(nextMonth);\n }\n viewPreviousYear() {\n const previousYear = CalendarMonth.fromObject(this.selectedCalendar.value).previousYear();\n this.selectedCalendar.patchValue(previousYear);\n }\n viewNextYear() {\n const nextYear = CalendarMonth.fromObject(this.selectedCalendar.value).nextYear();\n this.selectedCalendar.patchValue(nextYear);\n }\n keyNavigation(event) {\n if (event.key !== 'PageUp' && event.key !== 'PageDown')\n return;\n event.preventDefault();\n if (event.shiftKey) {\n if (event.key === 'PageUp')\n return this.viewPreviousYear();\n if (event.key === 'PageDown')\n return this.viewNextYear();\n }\n if (event.key === 'PageUp')\n return this.viewPreviousMonth();\n if (event.key === 'PageDown')\n return this.viewNextMonth();\n }\n subscribeToFormChanges() {\n // used to quickly check if the yearsArray needs years appended to it\n let existingYears = this.yearArray.map((e) => e.getFullYear());\n const changes = this.selectedCalendar.valueChanges.pipe(debounceTime(1), // added due to this issue: https://github.com/angular/angular/issues/13129\n map((value) => CalendarMonth.fromObject(value)), distinctUntilChanged((prev, curr) => prev.valueOf() === curr.valueOf()));\n this.subs.push(changes.subscribe({\n next: (value) => {\n // if you need to append to year array\n if (existingYears.indexOf(value.year) === -1) {\n this.yearArray.push(value.date);\n this.yearArray.sort((a, b) => a.getFullYear() - b.getFullYear());\n existingYears = this.yearArray.map((e) => e.getFullYear());\n }\n this.calendarChange.emit(value);\n },\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CalendarControlComponent, deps: [{ token: i1.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.9\", type: CalendarControlComponent, isStandalone: false, selector: \"nggv-calendar-control\", inputs: { activeCalendar: \"activeCalendar\", locale: \"locale\", type: \"type\" }, outputs: { calendarChange: \"calendarChange\" }, host: { listeners: { \"keydown\": \"keyNavigation($event)\" } }, usesOnChanges: true, ngImport: i0, template: \"<button\\n *ngIf=\\\"type === 'normal'\\\"\\n data-thook=\\\"previous-month\\\"\\n class=\\\"nggv-prev-button\\\"\\n (click)=\\\"viewPreviousMonth()\\\"\\n>\\n <gds-icon-chevron-left *nggCoreElement></gds-icon-chevron-left>\\n</button>\\n\\n<ng-container [formGroup]=\\\"selectedCalendar\\\">\\n <select\\n class=\\\"nggv-calendar-select\\\"\\n data-thook=\\\"select-month\\\"\\n formControlName=\\\"month\\\"\\n >\\n <option\\n *ngFor=\\\"let month of monthArray\\\"\\n class=\\\"gds-field-dropdown__label\\\"\\n tabindex=\\\"0\\\"\\n [value]=\\\"month.getMonth()\\\"\\n >\\n {{ month | date: 'MMMM' : undefined : locale }}\\n </option>\\n </select>\\n\\n <select\\n class=\\\"nggv-calendar-select\\\"\\n data-thook=\\\"select-year\\\"\\n formControlName=\\\"year\\\"\\n >\\n <option\\n *ngFor=\\\"let year of yearArray\\\"\\n class=\\\"gds-field-dropdown__label\\\"\\n tabindex=\\\"0\\\"\\n [value]=\\\"year.getFullYear()\\\"\\n >\\n {{ year | date: 'yyyy' : undefined : locale }}\\n </option>\\n </select>\\n</ng-container>\\n\\n<button\\n *ngIf=\\\"type === 'normal'\\\"\\n data-thook=\\\"next-month\\\"\\n class=\\\"nggv-next-button\\\"\\n (click)=\\\"viewNextMonth()\\\"\\n>\\n <gds-icon-chevron-right *nggCoreElement></gds-icon-chevron-right>\\n</button>\\n\", styles: [\":host{--gds-sys-color-blue: #41b0ee;--gds-sys-color-dark-blue-1: #0092e1;--gds-sys-color-dark-blue-2: #007ac7;--gds-sys-color-green: #60cd18;--gds-sys-color-dark-green-1: #45b400;--gds-sys-color-dark-green-2: #308800;--gds-sys-color-yellow: #ffc500;--gds-sys-color-dark-yellow-1: #ffb400;--gds-sys-color-dark-yellow-2: #f8a000;--gds-sys-color-text-primary: #333333;--gds-sys-color-text-secondary: #ababab;--gds-sys-color-text-white: #ffffff;--gds-sys-color-text-black: #333333;--gds-sys-color-text-inverted: #ffffff;--gds-sys-color-text-link: #0062bc;--gds-sys-color-text-error: #9f000a;--gds-sys-color-text-disabled: #adadad;--gds-sys-color-red: #f03529;--gds-sys-color-dark-red-1: #d81a1a;--gds-sys-color-dark-red-2: #bb000c;--gds-sys-color-purple: #673ab6;--gds-sys-color-dark-purple-1: #4f2C99;--gds-sys-color-dark-purple-2: #3f2587;--gds-sys-color-white: #ffffff;--gds-sys-color-black: #000000;--gds-sys-color-background-primary: #ffffff;--gds-sys-color-background-secondary: #eeeeee;--gds-sys-color-base-100: #f8f8f8;--gds-sys-color-base-200: #e9e9e9;--gds-sys-color-base-300: #dedede;--gds-sys-color-base-400: #cecece;--gds-sys-color-base-500: #adadad;--gds-sys-color-base-600: #868686;--gds-sys-color-base-700: #494949;--gds-sys-color-base-800: #333333;--gds-sys-color-base-900: #1a1a1a;--gds-sys-color-hover-10: rgba(255, 255, 255, .1);--gds-sys-color-hover-20: rgba(255, 255, 255, .2);display:flex;padding:.25rem;justify-content:space-between;align-items:center;gap:.25rem}:host .nggv-calendar-select{padding-left:1rem \\\"\\\";padding-right:1rem \\\"\\\";padding-bottom:.75rem \\\"\\\";padding-top:.75rem \\\"\\\";border-radius:.25rem;border:solid 1px var(--gds-sys-color-base-600);--border-color: var(--gds-sys-color-base-600)}:host .nggv-calendar-select:focus:not(:focus-visible){box-shadow:none;outline:0}:host .nggv-calendar-select:focus,:host .nggv-calendar-select:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .nggv-calendar-select{appearance:auto;background:#fff;color:#333;display:block;flex:1;font-family:inherit;font-size:.875rem;font-weight:400;line-height:2rem;max-height:2rem;max-width:100%;min-height:2rem;padding-right:3rem;padding:0 .5em;text-overflow:ellipsis;white-space:nowrap;width:6rem}:host button.nggv-prev-button,:host button.nggv-next-button{background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding-left:1rem \\\"\\\";padding-right:1rem \\\"\\\";padding-bottom:.75rem \\\"\\\";padding-top:.75rem \\\"\\\";border-radius:.25rem;border:solid 1px var(--gds-sys-color-base-600);font-weight:500}:host button.nggv-prev-button:focus:not(:focus-visible),:host button.nggv-next-button:focus:not(:focus-visible){box-shadow:none;outline:0}:host button.nggv-prev-button:focus,:host button.nggv-prev-button:focus-visible,:host button.nggv-next-button:focus,:host button.nggv-next-button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host button.nggv-prev-button,:host button.nggv-next-button{min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center}@media(max-width:35.98em){:host button.nggv-prev-button,:host button.nggv-next-button{min-width:100%}}@media screen and (-ms-high-contrast:active){:host button.nggv-prev-button,:host button.nggv-next-button{border:2px solid currentcolor}}:host button.nggv-prev-button.small,:host button.nggv-next-button.small{min-height:2rem;height:2rem;padding:.4375rem .75rem;font-size:.875rem;line-height:1rem}:host button.nggv-prev-button.large,:host button.nggv-next-button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host button.nggv-prev-button,:host button.nggv-next-button{border:none;height:2rem;width:2rem;padding:0 .75em}@media(max-width:47.98em){:host button.nggv-prev-button,:host button.nggv-next-button{width:3em;height:3em}}:host button.nggv-prev-button:hover,:host button.nggv-next-button:hover{background-color:#e9e9e9}@media(max-width:35.98em){:host button.nggv-prev-button,:host button.nggv-next-button{min-width:initial}}\\n\"], dependencies: [{ kind: \"directive\", type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgSelectOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i1.ɵNgSelectMultipleOption, selector: \"option\", inputs: [\"ngValue\", \"value\"] }, { kind: \"directive\", type: i1.SelectControlValueAccessor, selector: \"select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]\", inputs: [\"compareWith\"] }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i1.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"directive\", type: i1.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"directive\", type: i3.NggCoreElementDirective, selector: \"[nggCoreElement]\" }, { kind: \"pipe\", type: i2.DatePipe, name: \"date\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CalendarControlComponent, decorators: [{\n type: Component,\n args: [{ selector: 'nggv-calendar-control', standalone: false, template: \"<button\\n *ngIf=\\\"type === 'normal'\\\"\\n data-thook=\\\"previous-month\\\"\\n class=\\\"nggv-prev-button\\\"\\n (click)=\\\"viewPreviousMonth()\\\"\\n>\\n <gds-icon-chevron-left *nggCoreElement></gds-icon-chevron-left>\\n</button>\\n\\n<ng-container [formGroup]=\\\"selectedCalendar\\\">\\n <select\\n class=\\\"nggv-calendar-select\\\"\\n data-thook=\\\"select-month\\\"\\n formControlName=\\\"month\\\"\\n >\\n <option\\n *ngFor=\\\"let month of monthArray\\\"\\n class=\\\"gds-field-dropdown__label\\\"\\n tabindex=\\\"0\\\"\\n [value]=\\\"month.getMonth()\\\"\\n >\\n {{ month | date: 'MMMM' : undefined : locale }}\\n </option>\\n </select>\\n\\n <select\\n class=\\\"nggv-calendar-select\\\"\\n data-thook=\\\"select-year\\\"\\n formControlName=\\\"year\\\"\\n >\\n <option\\n *ngFor=\\\"let year of yearArray\\\"\\n class=\\\"gds-field-dropdown__label\\\"\\n tabindex=\\\"0\\\"\\n [value]=\\\"year.getFullYear()\\\"\\n >\\n {{ year | date: 'yyyy' : undefined : locale }}\\n </option>\\n </select>\\n</ng-container>\\n\\n<button\\n *ngIf=\\\"type === 'normal'\\\"\\n data-thook=\\\"next-month\\\"\\n class=\\\"nggv-next-button\\\"\\n (click)=\\\"viewNextMonth()\\\"\\n>\\n <gds-icon-chevron-right *nggCoreElement></gds-icon-chevron-right>\\n</button>\\n\", styles: [\":host{--gds-sys-color-blue: #41b0ee;--gds-sys-color-dark-blue-1: #0092e1;--gds-sys-color-dark-blue-2: #007ac7;--gds-sys-color-green: #60cd18;--gds-sys-color-dark-green-1: #45b400;--gds-sys-color-dark-green-2: #308800;--gds-sys-color-yellow: #ffc500;--gds-sys-color-dark-yellow-1: #ffb400;--gds-sys-color-dark-yellow-2: #f8a000;--gds-sys-color-text-primary: #333333;--gds-sys-color-text-secondary: #ababab;--gds-sys-color-text-white: #ffffff;--gds-sys-color-text-black: #333333;--gds-sys-color-text-inverted: #ffffff;--gds-sys-color-text-link: #0062bc;--gds-sys-color-text-error: #9f000a;--gds-sys-color-text-disabled: #adadad;--gds-sys-color-red: #f03529;--gds-sys-color-dark-red-1: #d81a1a;--gds-sys-color-dark-red-2: #bb000c;--gds-sys-color-purple: #673ab6;--gds-sys-color-dark-purple-1: #4f2C99;--gds-sys-color-dark-purple-2: #3f2587;--gds-sys-color-white: #ffffff;--gds-sys-color-black: #000000;--gds-sys-color-background-primary: #ffffff;--gds-sys-color-background-secondary: #eeeeee;--gds-sys-color-base-100: #f8f8f8;--gds-sys-color-base-200: #e9e9e9;--gds-sys-color-base-300: #dedede;--gds-sys-color-base-400: #cecece;--gds-sys-color-base-500: #adadad;--gds-sys-color-base-600: #868686;--gds-sys-color-base-700: #494949;--gds-sys-color-base-800: #333333;--gds-sys-color-base-900: #1a1a1a;--gds-sys-color-hover-10: rgba(255, 255, 255, .1);--gds-sys-color-hover-20: rgba(255, 255, 255, .2);display:flex;padding:.25rem;justify-content:space-between;align-items:center;gap:.25rem}:host .nggv-calendar-select{padding-left:1rem \\\"\\\";padding-right:1rem \\\"\\\";padding-bottom:.75rem \\\"\\\";padding-top:.75rem \\\"\\\";border-radius:.25rem;border:solid 1px var(--gds-sys-color-base-600);--border-color: var(--gds-sys-color-base-600)}:host .nggv-calendar-select:focus:not(:focus-visible){box-shadow:none;outline:0}:host .nggv-calendar-select:focus,:host .nggv-calendar-select:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .nggv-calendar-select{appearance:auto;background:#fff;color:#333;display:block;flex:1;font-family:inherit;font-size:.875rem;font-weight:400;line-height:2rem;max-height:2rem;max-width:100%;min-height:2rem;padding-right:3rem;padding:0 .5em;text-overflow:ellipsis;white-space:nowrap;width:6rem}:host button.nggv-prev-button,:host button.nggv-next-button{background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding-left:1rem \\\"\\\";padding-right:1rem \\\"\\\";padding-bottom:.75rem \\\"\\\";padding-top:.75rem \\\"\\\";border-radius:.25rem;border:solid 1px var(--gds-sys-color-base-600);font-weight:500}:host button.nggv-prev-button:focus:not(:focus-visible),:host button.nggv-next-button:focus:not(:focus-visible){box-shadow:none;outline:0}:host button.nggv-prev-button:focus,:host button.nggv-prev-button:focus-visible,:host button.nggv-next-button:focus,:host button.nggv-next-button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host button.nggv-prev-button,:host button.nggv-next-button{min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center}@media(max-width:35.98em){:host button.nggv-prev-button,:host button.nggv-next-button{min-width:100%}}@media screen and (-ms-high-contrast:active){:host button.nggv-prev-button,:host button.nggv-next-button{border:2px solid currentcolor}}:host button.nggv-prev-button.small,:host button.nggv-next-button.small{min-height:2rem;height:2rem;padding:.4375rem .75rem;font-size:.875rem;line-height:1rem}:host button.nggv-prev-button.large,:host button.nggv-next-button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host button.nggv-prev-button,:host button.nggv-next-button{border:none;height:2rem;width:2rem;padding:0 .75em}@media(max-width:47.98em){:host button.nggv-prev-button,:host button.nggv-next-button{width:3em;height:3em}}:host button.nggv-prev-button:hover,:host button.nggv-next-button:hover{background-color:#e9e9e9}@media(max-width:35.98em){:host button.nggv-prev-button,:host button.nggv-next-button{min-width:initial}}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }], propDecorators: { calendarChange: [{\n type: Output\n }], activeCalendar: [{\n type: Input\n }], locale: [{\n type: Input\n }], type: [{\n type: Input\n }], keyNavigation: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItY29udHJvbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvY2FsZW5kYXItY29udHJvbC9jYWxlbmRhci1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9jYWxlbmRhci1jb250cm9sL2NhbGVuZGFyLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLGtCQUFrQixFQUFvQixNQUFNLGdCQUFnQixDQUFBO0FBRXJFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFeEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFJcEUsT0FBTyw0REFBNEQsQ0FBQTtBQUNuRSxPQUFPLDZEQUE2RCxDQUFBOzs7OztBQVFwRSxNQUFNLE9BQU8sd0JBQXdCO0lBZ0JuQyxZQUFvQixFQUFzQjtRQUF0QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQWYxQyw0Q0FBNEM7UUFDNUMsK0NBQStDO1FBRXJDLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUE7UUFJbkQsU0FBSSxHQUFpQixRQUFRLENBQUE7UUFFdEMsZUFBVSxHQUFXLEVBQUUsQ0FBQSxDQUFDLGdDQUFnQztRQUN4RCxjQUFT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QyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtvQkFDaEUsYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtnQkFDNUQsQ0FBQztnQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNqQyxDQUFDO1NBQ0YsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDOzhHQXRIVSx3QkFBd0I7a0dBQXhCLHdCQUF3QixpU0M3QnJDLDJzQ0FpREE7OzJGRHBCYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0ksdUJBQXVCLGNBR3JCLEtBQUs7O3NCQU1sQixNQUFNOztzQkFFTixLQUFLOztzQkFDTCxLQUFLOztzQkFDTCxLQUFLOztzQkF3RUwsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5cbmltcG9ydCB7IENhbGVuZGFyTW9udGggfSBmcm9tICcuLi8uLi9kYXRlcGlja2VyLm1vZGVscydcbmltcG9ydCB7IGdldE1vbnRoQXJyYXksIGdldFllYXJBcnJheSB9IGZyb20gJy4uLy4uL2RhdGVwaWNrZXIudXRpbHMnXG5cbmltcG9ydCB0eXBlIHsgQ2FsZW5kYXJUeXBlIH0gZnJvbSAnLi4vLi4vZGF0ZXBpY2tlci5tb2RlbHMnXG5cbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL2NoZXZyb24tbGVmdC5qcydcbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL2NoZXZyb24tcmlnaHQuanMnXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmdndi1jYWxlbmRhci1jb250cm9sJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItY29udHJvbC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyQ29udHJvbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvLyBuZXh0SWNvbjogSWNvbkRlZmluaXRpb24gPSBmYUNoZXZyb25SaWdodFxuICAvLyBwcmV2aW91c0ljb246IEljb25EZWZpbml0aW9uID0gZmFDaGV2cm9uTGVmdFxuXG4gIEBPdXRwdXQoKSBjYWxlbmRhckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2FsZW5kYXJNb250aD4oKVxuXG4gIEBJbnB1dCgpIGFjdGl2ZUNhbGVuZGFyITogQ2FsZW5kYXJNb250aFxuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB0eXBlOiBDYWxlbmRhclR5cGUgPSAnbm9ybWFsJ1xuXG4gIG1vbnRoQXJyYXk6IERhdGVbXSA9IFtdIC8vIGFycmF5IHVzZWQgZm9yIG1vbnRoIGRyb3Bkb3duXG4gIHllYXJBcnJheTogRGF0ZVtdID0gW10gLy8gYXJyYXkgdXNlZCBmb3IgeWVhciBkcm9wZG93blxuICBzZWxlY3RlZENhbGVuZGFyOiBVbnR5cGVkRm9ybUdyb3VwIC8vIGRyb3Bkb3duIGZvcm0gZ3JvdXBcblxuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW11cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIpIHtcbiAgICAvLyBpbml0aWF0ZSBmb3JtIGdyb3VwIGZvciBkcm9wZG93biBtZW51c1xuICAgIHRoaXMuc2VsZWN0ZWRDYWxlbmRhciA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgeWVhcjogW10sXG4gICAgICBtb250aDogW10sXG4gICAgfSlcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoXG4gICAgICBjaGFuZ2VzLmFjdGl2ZUNhbGVuZGFyICYmXG4gICAgICAhY2hhbmdlcy5hY3RpdmVDYWxlbmRhci5pc0ZpcnN0Q2hhbmdlKCkgJiZcbiAgICAgIGNoYW5nZXMuYWN0aXZlQ2FsZW5kYXIuY3VycmVudFZhbHVlLnZhbHVlT2YoKSAhPT1cbiAgICAgICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnZhbHVlLmlkXG4gICAgKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2FsZW5kYXIucGF0Y2hWYWx1ZShjaGFuZ2VzLmFjdGl2ZUNhbGVuZGFyLmN1cnJlbnRWYWx1ZSlcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBwb3B1bGF0ZSBkcm93ZG93bnMgYW5kIGxhYmVscyB3aXRoIGRhdGFcbiAgICB0aGlzLm1vbnRoQXJyYXkgPSBnZXRNb250aEFycmF5KClcbiAgICB0aGlzLnllYXJBcnJheSA9IGdldFllYXJBcnJheSgpXG5cbiAgICAvLyBzdWJzY3JpYmUgdG8geWVhciBhbmQgbW9udGggY2hhbmdlcywgYW5kIGVtaXQgZXZlbnQgdG8gZGF0ZXBpY2tlclxuICAgIHRoaXMuc3Vic2NyaWJlVG9Gb3JtQ2hhbmdlcygpXG5cbiAgICAvLyB1cGRhdGUgY29udHJvbCB0byBpbml0aWFsIHZhbHVlXG4gICAgaWYgKHRoaXMuYWN0aXZlQ2FsZW5kYXIpXG4gICAgICB0aGlzLnNlbGVjdGVkQ2FsZW5kYXIucGF0Y2hWYWx1ZSh0aGlzLmFjdGl2ZUNhbGVuZGFyKVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzLmZvckVhY2goKHN1YikgPT4gc3ViLnVuc3Vic2NyaWJlKCkpXG4gIH1cblxuICB2aWV3UHJldmlvdXNNb250aCgpIHtcbiAgICBjb25zdCBwcmV2aW91c01vbnRoID0gQ2FsZW5kYXJNb250aC5mcm9tT2JqZWN0KFxuICAgICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnZhbHVlLFxuICAgICkucHJldmlvdXNNb250aCgpXG4gICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnBhdGNoVmFsdWUocHJldmlvdXNNb250aClcbiAgfVxuXG4gIHZpZXdOZXh0TW9udGgoKSB7XG4gICAgY29uc3QgbmV4dE1vbnRoID0gQ2FsZW5kYXJNb250aC5mcm9tT2JqZWN0KFxuICAgICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnZhbHVlLFxuICAgICkubmV4dE1vbnRoKClcbiAgICB0aGlzLnNlbGVjdGVkQ2FsZW5kYXIucGF0Y2hWYWx1ZShuZXh0TW9udGgpXG4gIH1cblxuICB2aWV3UHJldmlvdXNZZWFyKCkge1xuICAgIGNvbnN0IHByZXZpb3VzWWVhciA9IENhbGVuZGFyTW9udGguZnJvbU9iamVjdChcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYWxlbmRhci52YWx1ZSxcbiAgICApLnByZXZpb3VzWWVhcigpXG4gICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnBhdGNoVmFsdWUocHJldmlvdXNZZWFyKVxuICB9XG5cbiAgdmlld05leHRZZWFyKCkge1xuICAgIGNvbnN0IG5leHRZZWFyID0gQ2FsZW5kYXJNb250aC5mcm9tT2JqZWN0KFxuICAgICAgdGhpcy5zZWxlY3RlZENhbGVuZGFyLnZhbHVlLFxuICAgICkubmV4dFllYXIoKVxuICAgIHRoaXMuc2VsZWN0ZWRDYWxlbmRhci5wYXRjaFZhbHVlKG5leHRZZWFyKVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGtleU5hdmlnYXRpb24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnUGFnZVVwJyAmJiBldmVudC5rZXkgIT09ICdQYWdlRG93bicpIHJldHVyblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdQYWdlVXAnKSByZXR1cm4gdGhpcy52aWV3UHJldmlvdXNZZWFyKClcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdQYWdlRG93bicpIHJldHVybiB0aGlzLnZpZXdOZXh0WWVhcigpXG4gICAgfVxuICAgIGlmIChldmVudC5rZXkgPT09ICdQYWdlVXAnKSByZXR1cm4gdGhpcy52aWV3UHJldmlvdXNNb250aCgpXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ1BhZ2VEb3duJykgcmV0dXJuIHRoaXMudmlld05leHRNb250aCgpXG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZVRvRm9ybUNoYW5nZXMoKTogdm9pZCB7XG4gICAgLy8gdXNlZCB0byBxdWlja2x5IGNoZWNrIGlmIHRoZSB5ZWFyc0FycmF5IG5lZWRzIHllYXJzIGFwcGVuZGVkIHRvIGl0XG4gICAgbGV0IGV4aXN0aW5nWWVhcnMgPSB0aGlzLnllYXJBcnJheS5tYXAoKGUpID0+IGUuZ2V0RnVsbFllYXIoKSlcbiAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5zZWxlY3RlZENhbGVuZGFyLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgZGVib3VuY2VUaW1lKDEpLCAvLyBhZGRlZCBkdWUgdG8gdGhpcyBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTMxMjlcbiAgICAgIG1hcCgodmFsdWU6IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyIH0pID0+XG4gICAgICAgIENhbGVuZGFyTW9udGguZnJvbU9iamVjdCh2YWx1ZSksXG4gICAgICApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAgIChwcmV2OiBDYWxlbmRhck1vbnRoLCBjdXJyOiBDYWxlbmRhck1vbnRoKSA9PlxuICAgICAgICAgIHByZXYudmFsdWVPZigpID09PSBjdXJyLnZhbHVlT2YoKSxcbiAgICAgICksXG4gICAgKVxuICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgY2hhbmdlcy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodmFsdWU6IENhbGVuZGFyTW9udGgpID0+IHtcbiAgICAgICAgICAvLyBpZiB5b3UgbmVlZCB0byBhcHBlbmQgdG8geWVhciBhcnJheVxuICAgICAgICAgIGlmIChleGlzdGluZ1llYXJzLmluZGV4T2YodmFsdWUueWVhcikgPT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnllYXJBcnJheS5wdXNoKHZhbHVlLmRhdGUpXG4gICAgICAgICAgICB0aGlzLnllYXJBcnJheS5zb3J0KChhLCBiKSA9PiBhLmdldEZ1bGxZZWFyKCkgLSBiLmdldEZ1bGxZZWFyKCkpXG4gICAgICAgICAgICBleGlzdGluZ1llYXJzID0gdGhpcy55ZWFyQXJyYXkubWFwKChlKSA9PiBlLmdldEZ1bGxZZWFyKCkpXG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuY2FsZW5kYXJDaGFuZ2UuZW1pdCh2YWx1ZSlcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIClcbiAgfVxufVxuIiwiPGJ1dHRvblxuICAqbmdJZj1cInR5cGUgPT09ICdub3JtYWwnXCJcbiAgZGF0YS10aG9vaz1cInByZXZpb3VzLW1vbnRoXCJcbiAgY2xhc3M9XCJuZ2d2LXByZXYtYnV0dG9uXCJcbiAgKGNsaWNrKT1cInZpZXdQcmV2aW91c01vbnRoKClcIlxuPlxuICA8Z2RzLWljb24tY2hldnJvbi1sZWZ0ICpuZ2dDb3JlRWxlbWVudD48L2dkcy1pY29uLWNoZXZyb24tbGVmdD5cbjwvYnV0dG9uPlxuXG48bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwic2VsZWN0ZWRDYWxlbmRhclwiPlxuICA8c2VsZWN0XG4gICAgY2xhc3M9XCJuZ2d2LWNhbGVuZGFyLXNlbGVjdFwiXG4gICAgZGF0YS10aG9vaz1cInNlbGVjdC1tb250aFwiXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwibW9udGhcIlxuICA+XG4gICAgPG9wdGlvblxuICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoQXJyYXlcIlxuICAgICAgY2xhc3M9XCJnZHMtZmllbGQtZHJvcGRvd25fX2xhYmVsXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBbdmFsdWVdPVwibW9udGguZ2V0TW9udGgoKVwiXG4gICAgPlxuICAgICAge3sgbW9udGggfCBkYXRlOiAnTU1NTScgOiB1bmRlZmluZWQgOiBsb2NhbGUgfX1cbiAgICA8L29wdGlvbj5cbiAgPC9zZWxlY3Q+XG5cbiAgPHNlbGVjdFxuICAgIGNsYXNzPVwibmdndi1jYWxlbmRhci1zZWxlY3RcIlxuICAgIGRhdGEtdGhvb2s9XCJzZWxlY3QteWVhclwiXG4gICAgZm9ybUNvbnRyb2xOYW1lPVwieWVhclwiXG4gID5cbiAgICA8b3B0aW9uXG4gICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyQXJyYXlcIlxuICAgICAgY2xhc3M9XCJnZHMtZmllbGQtZHJvcGRvd25fX2xhYmVsXCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICBbdmFsdWVdPVwieWVhci5nZXRGdWxsWWVhcigpXCJcbiAgICA+XG4gICAgICB7eyB5ZWFyIHwgZGF0ZTogJ3l5eXknIDogdW5kZWZpbmVkIDogbG9jYWxlIH19XG4gICAgPC9vcHRpb24+XG4gIDwvc2VsZWN0PlxuPC9uZy1jb250YWluZXI+XG5cbjxidXR0b25cbiAgKm5nSWY9XCJ0eXBlID09PSAnbm9ybWFsJ1wiXG4gIGRhdGEtdGhvb2s9XCJuZXh0LW1vbnRoXCJcbiAgY2xhc3M9XCJuZ2d2LW5leHQtYnV0dG9uXCJcbiAgKGNsaWNrKT1cInZpZXdOZXh0TW9udGgoKVwiXG4+XG4gIDxnZHMtaWNvbi1jaGV2cm9uLXJpZ2h0ICpuZ2dDb3JlRWxlbWVudD48L2dkcy1pY29uLWNoZXZyb24tcmlnaHQ+XG48L2J1dHRvbj5cbiJdfQ==",";\n(() => {\n // Make sure there is an incremental ID each component can use\n if (typeof window !== 'undefined' && !window.ngv) {\n window.ngv = {\n ids: { default: -1 },\n nextId(namespace = 'default') {\n let id = this.ids[namespace] || 0;\n if (typeof this.ids[namespace] === 'number')\n id++;\n this.ids[namespace] = id;\n return namespace === 'default'\n ? `nggv-${id}`\n : `nggv-${namespace}-${id}`;\n },\n };\n }\n})();\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5nbG9iYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmdsb2JhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0EsQ0FBQztBQUFBLENBQUMsR0FBRyxFQUFFO0lBQ0wsOERBQThEO0lBQzlELElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxHQUFHLEdBQUc7WUFDWCxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTO2dCQUMxQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDakMsSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssUUFBUTtvQkFBRSxFQUFFLEVBQUUsQ0FBQTtnQkFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUE7Z0JBQ3hCLE9BQU8sU0FBUyxLQUFLLFNBQVM7b0JBQzVCLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtvQkFDZCxDQUFDLENBQUMsUUFBUSxTQUFTLElBQUksRUFBRSxFQUFFLENBQUE7WUFDL0IsQ0FBQztTQUNGLENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIFdlIG11c3QgZm9yY2UgdHNjIHRvIGludGVycHJldCB0aGlzIGZpbGUgYXMgYSBtb2R1bGUsIHJlc29sdmVzXG4vLyBcIkF1Z21lbnRhdGlvbnMgZm9yIHRoZSBnbG9iYWwgc2NvcGUgY2FuIG9ubHkgYmUgZGlyZWN0bHkgbmVzdGVkIGluIGV4dGVybmFsIG1vZHVsZXMgb3IgYW1iaWVudCBtb2R1bGUgZGVjbGFyYXRpb25zLlwiXG5leHBvcnQge31cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAvKiogQ291bnRlciBmb3IgdW5pcXVlIGlkZW50aWZpZXJzICovXG4gICAgbmd2OiB7XG4gICAgICBpZHM6IHsgW25hbWVzcGFjZTogc3RyaW5nXTogbnVtYmVyOyBkZWZhdWx0OiBudW1iZXIgfVxuICAgICAgbmV4dElkOiAobmFtZXNwYWNlPzogc3RyaW5nKSA9PiBzdHJpbmdcbiAgICB9XG4gIH1cbn1cblxuOygoKSA9PiB7XG4gIC8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBhbiBpbmNyZW1lbnRhbCBJRCBlYWNoIGNvbXBvbmVudCBjYW4gdXNlXG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAhd2luZG93Lm5ndikge1xuICAgIHdpbmRvdy5uZ3YgPSB7XG4gICAgICBpZHM6IHsgZGVmYXVsdDogLTEgfSxcbiAgICAgIG5leHRJZChuYW1lc3BhY2UgPSAnZGVmYXVsdCcpOiBzdHJpbmcge1xuICAgICAgICBsZXQgaWQgPSB0aGlzLmlkc1tuYW1lc3BhY2VdIHx8IDBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkc1tuYW1lc3BhY2VdID09PSAnbnVtYmVyJykgaWQrK1xuICAgICAgICB0aGlzLmlkc1tuYW1lc3BhY2VdID0gaWRcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZSA9PT0gJ2RlZmF1bHQnXG4gICAgICAgICAgPyBgbmdndi0ke2lkfWBcbiAgICAgICAgICA6IGBuZ2d2LSR7bmFtZXNwYWNlfS0ke2lkfWBcbiAgICAgIH0sXG4gICAgfVxuICB9XG59KSgpXG4iXX0=","import { WeekDay } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostBinding, Input, Output, Renderer2, ViewChild, } from '@angular/core';\nimport { CalendarMonth } from '../../datepicker.models';\nimport { getSortedWeekDays, isValid, toLocalDate, } from '../../datepicker.utils';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"../calendar/calendar.component\";\nimport * as i3 from \"../calendar-control/calendar-control.component\";\nexport class DatepickerComponent {\n get positionAttr() {\n return this.datepickerPosition;\n }\n get sizeAttr() {\n return this.size;\n }\n constructor(elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.calendarTemplate = null;\n /** Emits a Date upon selection. */\n this.ngvDateChange = new EventEmitter();\n /** Sets first day of week in calendar. Defaults to Monday. */\n this.firstDayOfWeek = WeekDay.Monday;\n /** Bank holidays. */\n this.disableDates = [];\n /** Other non selectable dates. */\n this.disableWeekDays = [];\n /** Minimum number of calendar rows shown. */\n this.minCalendarRows = 5;\n /** Set locale for date format. */\n this.locale = 'en-US';\n /** Set type of calendar. */\n this.type = 'normal';\n /**\n * When true, the datepicker will automatically choose to open above or below the input\n * based on available space in the viewport, and will scale its height to fit if needed.\n */\n this.dynamicPosition = false;\n /** Needed to determent where to place datepicker if dropdownPosition === 'top' */\n this.size = 'large';\n /** @internal */\n /** @internal */\n this.weekdayArray = [];\n /** @internal */\n this.disabledDatesForActiveMonth = [];\n // Indicates whether the datepicker should be displayed below ('bottom') or above ('top') the input, based on available space.\n this.datepickerPosition = 'bottom';\n this.subs = [];\n }\n ngOnChanges(changes) {\n if (changes.selected &&\n !!changes.selected.currentValue &&\n !changes.selected.isFirstChange()) {\n // set active calendar to match selected date\n const activeCalendar = new CalendarMonth(toLocalDate(changes.selected.currentValue));\n this.changeActiveCalendar(activeCalendar);\n }\n if (changes.disableDates && !changes.disableDates.isFirstChange()) {\n this.disabledDatesForActiveMonth = this.getDisabledDatesFor(this.activeCalendar, changes.disableDates.currentValue || []);\n }\n }\n ngOnInit() {\n // initiate week label row\n this.weekdayArray = getSortedWeekDays(this.firstDayOfWeek);\n // initiate calendar\n const initDate = !!this.selected && isValid(this.selected)\n ? new Date(this.selected)\n : new Date();\n this.activeCalendar = new CalendarMonth(initDate);\n if (this.dynamicPosition)\n this.setDropdownPosition();\n }\n ngOnDestroy() {\n this.subs.forEach((sub) => sub.unsubscribe());\n }\n /**\n * @internal\n * Update local calendar variable and changes displayed calendar.\n */\n changeActiveCalendar(calendar) {\n this.activeCalendar = calendar;\n this.disabledDatesForActiveMonth = this.getDisabledDatesFor(calendar, this.disableDates);\n }\n /**\n * @internal\n * Returns a subset of all disabled dates.\n *\n * @param month current month to filter from\n * @param disableDates master list of all disabled dates\n * @returns a subset with current and adjacent months disabled dates\n */\n getDisabledDatesFor(calendar, disableDates) {\n if (!disableDates)\n disableDates = [];\n // sets month to target month\n const targetMonth = calendar.date;\n // gets previous month from target month\n const previousMonth = calendar.previousMonth().date;\n // gets next month from target month\n const nextMonth = calendar.nextMonth().date;\n // checks if two dates are within the same year and month\n const withinSameMonth = (a, b) => a.getMonth() === b.getMonth() && a.getFullYear() === b.getFullYear();\n // filter out disabled dates for current and adjacent months\n return disableDates\n .map((d) => toLocalDate(d))\n .filter((d) => withinSameMonth(d, previousMonth) ||\n withinSameMonth(d, targetMonth) ||\n withinSameMonth(d, nextMonth));\n }\n /**\n * Handles date-clicks from calendar compoentn. Emits event or changes calendar.\n * @param date date clicked in calendar\n */\n dateClickHandler(date) {\n // if a date is clicked within the active month, emit date\n if (date.getMonth() === this.activeCalendar.month)\n return this.ngvDateChange.emit(date);\n // else, change active calendar to match the date clicked\n this.selected = date;\n this.changeActiveCalendar(new CalendarMonth(date));\n }\n setDropdownPosition() {\n const datePicker = this.elementRef.nativeElement;\n const parent = datePicker.parentElement;\n const rect = parent.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const spaceBelow = viewportHeight - rect.bottom;\n const spaceAbove = rect.top;\n const MARGIN = 10;\n const DATEPICKER_HEIGHT = 362; // 6 ROWS OF DATES, TO BE SURE\n let maxDatepickerHeight;\n if (spaceBelow >= DATEPICKER_HEIGHT) {\n this.datepickerPosition = 'bottom';\n maxDatepickerHeight = DATEPICKER_HEIGHT;\n }\n else if (spaceAbove >= DATEPICKER_HEIGHT) {\n this.datepickerPosition = 'top';\n maxDatepickerHeight = DATEPICKER_HEIGHT;\n }\n else if (spaceBelow > spaceAbove) {\n this.datepickerPosition = 'bottom';\n maxDatepickerHeight = Math.max(spaceBelow - MARGIN, DATEPICKER_HEIGHT); // 10px margin, height 362px\n }\n else {\n this.datepickerPosition = 'top';\n maxDatepickerHeight = Math.max(spaceAbove - MARGIN, DATEPICKER_HEIGHT); // 10px margin, height 362px\n }\n this.renderer.setStyle(datePicker, 'max-height', `${maxDatepickerHeight}px`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: DatepickerComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.9\", type: DatepickerComponent, isStandalone: false, selector: \"nggv-datepicker\", inputs: { firstDayOfWeek: \"firstDayOfWeek\", disableDates: \"disableDates\", disableWeekDays: \"disableWeekDays\", minCalendarRows: \"minCalendarRows\", selected: \"selected\", locale: \"locale\", type: \"type\", firstValid: \"firstValid\", lastValid: \"lastValid\", closingTime: \"closingTime\", dynamicPosition: \"dynamicPosition\", size: \"size\" }, outputs: { ngvDateChange: \"ngvDateChange\" }, host: { properties: { \"attr.data-position\": \"this.positionAttr\", \"attr.data-size\": \"this.sizeAttr\" } }, viewQueries: [{ propertyName: \"calendarTemplate\", first: true, predicate: [\"calendarTemplate\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: \"<!-- control for changing displayed calendar -->\\n<nggv-calendar-control\\n [activeCalendar]=\\\"activeCalendar\\\"\\n [locale]=\\\"locale\\\"\\n [type]=\\\"type\\\"\\n (calendarChange)=\\\"changeActiveCalendar($event)\\\"\\n>\\n</nggv-calendar-control>\\n\\n<!-- label row for week -->\\n<div class=\\\"nggv-weekday-row\\\">\\n <span *ngFor=\\\"let weekday of weekdayArray\\\">{{\\n weekday | date: 'EEE' : undefined : locale\\n }}</span>\\n</div>\\n\\n<!-- outlet for active calendar -->\\n<div class=\\\"nggv-calendar-view-container\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n calendarTemplate;\\n context: {\\n calendar: activeCalendar,\\n disableDates: disabledDatesForActiveMonth,\\n }\\n \\\"\\n >\\n </ng-container>\\n</div>\\n\\n<div *ngIf=\\\"type === 'extended'\\\" class=\\\"gds-datepicker__controls\\\">\\n <ng-content></ng-content>\\n</div>\\n\\n<ng-template\\n #calendarTemplate\\n let-calendar=\\\"calendar\\\"\\n let-disableDates=\\\"disableDates\\\"\\n>\\n <nggv-calendar\\n [year]=\\\"calendar.year\\\"\\n [month]=\\\"calendar.month\\\"\\n [type]=\\\"type\\\"\\n [locale]=\\\"locale\\\"\\n [disableDates]=\\\"disableDates\\\"\\n [selected]=\\\"selected\\\"\\n [lastValid]=\\\"lastValid\\\"\\n [firstValid]=\\\"firstValid\\\"\\n [closingTime]=\\\"closingTime\\\"\\n [disableWeekDays]=\\\"disableWeekDays\\\"\\n [minCalendarRows]=\\\"minCalendarRows\\\"\\n [firstDayOfWeek]=\\\"firstDayOfWeek\\\"\\n (dateClick)=\\\"dateClickHandler($event)\\\"\\n >\\n </nggv-calendar>\\n</ng-template>\\n\", styles: [\":host{border-radius:4px;border:1px solid #868686;overflow:hidden;z-index:1000;background-color:#fff;position:absolute;display:block;box-shadow:0 0 12px #0000001a}:host .nggv-calendar-view-container{border-top:1px solid #f8f8f8;border-bottom:1px solid #f8f8f8;padding:.125em;width:auto}:host .nggv-weekday-row{display:flex;font-family:SEBSansSerif,Arial,sans-serif}:host .nggv-weekday-row:first-child{font-size:.7em;line-height:2.5rem}:host .nggv-weekday-row button,:host .nggv-weekday-row span{padding:0;display:block;flex-grow:1;text-align:center;width:20%;color:#333}:host .nggv-weekday-row button:disabled,:host .nggv-weekday-row span:disabled{border-radius:0;border:0px solid transparent}:host .nggv-weekday-row{font-size:.875rem}:host .nggv-extended-controls{display:flex;padding:.5rem}:host[data-position=top]{top:auto;bottom:100%}:host[data-position=top][data-size=large]{transform:translateY(calc(-.5rem - 45px))}:host[data-position=top][data-size=small]{transform:translateY(calc(-.5rem - 35px))}:host[data-position=bottom]{bottom:0;transform:translateY(100%)}\\n\"], dependencies: [{ kind: \"directive\", type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: i2.CalendarComponent, selector: \"nggv-calendar\", inputs: [\"year\", \"month\", \"selected\", \"locale\", \"minCalendarRows\", \"firstDayOfWeek\", \"type\", \"disableDates\", \"disableWeekDays\", \"firstValid\", \"lastValid\", \"closingTime\"], outputs: [\"dateClick\"] }, { kind: \"component\", type: i3.CalendarControlComponent, selector: \"nggv-calendar-control\", inputs: [\"activeCalendar\", \"locale\", \"type\"], outputs: [\"calendarChange\"] }, { kind: \"pipe\", type: i1.DatePipe, name: \"date\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: DatepickerComponent, decorators: [{\n type: Component,\n args: [{ selector: 'nggv-datepicker', standalone: false, template: \"<!-- control for changing displayed calendar -->\\n<nggv-calendar-control\\n [activeCalendar]=\\\"activeCalendar\\\"\\n [locale]=\\\"locale\\\"\\n [type]=\\\"type\\\"\\n (calendarChange)=\\\"changeActiveCalendar($event)\\\"\\n>\\n</nggv-calendar-control>\\n\\n<!-- label row for week -->\\n<div class=\\\"nggv-weekday-row\\\">\\n <span *ngFor=\\\"let weekday of weekdayArray\\\">{{\\n weekday | date: 'EEE' : undefined : locale\\n }}</span>\\n</div>\\n\\n<!-- outlet for active calendar -->\\n<div class=\\\"nggv-calendar-view-container\\\">\\n <ng-container\\n *ngTemplateOutlet=\\\"\\n calendarTemplate;\\n context: {\\n calendar: activeCalendar,\\n disableDates: disabledDatesForActiveMonth,\\n }\\n \\\"\\n >\\n </ng-container>\\n</div>\\n\\n<div *ngIf=\\\"type === 'extended'\\\" class=\\\"gds-datepicker__controls\\\">\\n <ng-content></ng-content>\\n</div>\\n\\n<ng-template\\n #calendarTemplate\\n let-calendar=\\\"calendar\\\"\\n let-disableDates=\\\"disableDates\\\"\\n>\\n <nggv-calendar\\n [year]=\\\"calendar.year\\\"\\n [month]=\\\"calendar.month\\\"\\n [type]=\\\"type\\\"\\n [locale]=\\\"locale\\\"\\n [disableDates]=\\\"disableDates\\\"\\n [selected]=\\\"selected\\\"\\n [lastValid]=\\\"lastValid\\\"\\n [firstValid]=\\\"firstValid\\\"\\n [closingTime]=\\\"closingTime\\\"\\n [disableWeekDays]=\\\"disableWeekDays\\\"\\n [minCalendarRows]=\\\"minCalendarRows\\\"\\n [firstDayOfWeek]=\\\"firstDayOfWeek\\\"\\n (dateClick)=\\\"dateClickHandler($event)\\\"\\n >\\n </nggv-calendar>\\n</ng-template>\\n\", styles: [\":host{border-radius:4px;border:1px solid #868686;overflow:hidden;z-index:1000;background-color:#fff;position:absolute;display:block;box-shadow:0 0 12px #0000001a}:host .nggv-calendar-view-container{border-top:1px solid #f8f8f8;border-bottom:1px solid #f8f8f8;padding:.125em;width:auto}:host .nggv-weekday-row{display:flex;font-family:SEBSansSerif,Arial,sans-serif}:host .nggv-weekday-row:first-child{font-size:.7em;line-height:2.5rem}:host .nggv-weekday-row button,:host .nggv-weekday-row span{padding:0;display:block;flex-grow:1;text-align:center;width:20%;color:#333}:host .nggv-weekday-row button:disabled,:host .nggv-weekday-row span:disabled{border-radius:0;border:0px solid transparent}:host .nggv-weekday-row{font-size:.875rem}:host .nggv-extended-controls{display:flex;padding:.5rem}:host[data-position=top]{top:auto;bottom:100%}:host[data-position=top][data-size=large]{transform:translateY(calc(-.5rem - 45px))}:host[data-position=top][data-size=small]{transform:translateY(calc(-.5rem - 35px))}:host[data-position=bottom]{bottom:0;transform:translateY(100%)}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { calendarTemplate: [{\n type: ViewChild,\n args: ['calendarTemplate']\n }], ngvDateChange: [{\n type: Output\n }], firstDayOfWeek: [{\n type: Input\n }], disableDates: [{\n type: Input\n }], disableWeekDays: [{\n type: Input\n }], minCalendarRows: [{\n type: Input\n }], selected: [{\n type: Input\n }], locale: [{\n type: Input\n }], type: [{\n type: Input\n }], firstValid: [{\n type: Input\n }], lastValid: [{\n type: Input\n }], closingTime: [{\n type: Input\n }], dynamicPosition: [{\n type: Input\n }], size: [{\n type: Input\n }], positionAttr: [{\n type: HostBinding,\n args: ['attr.data-position']\n }], sizeAttr: [{\n type: HostBinding,\n args: ['attr.data-size']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBR1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBS3RCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN2RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLE9BQU8sRUFDUCxXQUFXLEdBQ1osTUFBTSx3QkFBd0IsQ0FBQTs7Ozs7QUFRL0IsTUFBTSxPQUFPLG1CQUFtQjtJQW1DOUIsSUFBdUMsWUFBWTtRQUNqRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsSUFBbUMsUUFBUTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQWlCRCxZQUNVLFVBQXNCLEVBQ3RCLFFBQW1CO1FBRG5CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQTNERSxxQkFBZ0IsR0FDN0MsSUFBSSxDQUFBO1FBRU4sbUNBQW1DO1FBQ3pCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUVsRCw4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O1FBQ3JHLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsbUJBQW1CLElBQUksQ0FBQyxDQUFBO0lBQzlFLENBQUM7OEdBak1VLG1CQUFtQjtrR0FBbkIsbUJBQW1CLHNyQkNqQ2hDLDY2Q0F3REE7OzJGRHZCYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBR2YsS0FBSzs7c0JBR2hCLFNBQVM7dUJBQUMsa0JBQWtCOztzQkFJNUIsTUFBTTs7c0JBR04sS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBS0wsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsV0FBVzt1QkFBQyxvQkFBb0I7O3NCQUloQyxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdlZWtEYXkgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHR5cGUgeyBDYWxlbmRhclR5cGUgfSBmcm9tICcuLi8uLi9kYXRlcGlja2VyLm1vZGVscydcbmltcG9ydCB7IENhbGVuZGFyTW9udGggfSBmcm9tICcuLi8uLi9kYXRlcGlja2VyLm1vZGVscydcbmltcG9ydCB7XG4gIGdldFNvcnRlZFdlZWtEYXlzLFxuICBpc1ZhbGlkLFxuICB0b0xvY2FsRGF0ZSxcbn0gZnJvbSAnLi4vLi4vZGF0ZXBpY2tlci51dGlscydcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi1kYXRlcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGVwaWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyVGVtcGxhdGUnKSBjYWxlbmRhclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9XG4gICAgbnVsbFxuXG4gIC8qKiBFbWl0cyBhIERhdGUgdXBvbiBzZWxlY3Rpb24uICovXG4gIEBPdXRwdXQoKSBuZ3ZEYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpXG5cbiAgLyoqIFNldHMgZmlyc3QgZGF5IG9mIHdlZWsgaW4gY2FsZW5kYXIuIERlZmF1bHRzIHRvIE1vbmRheS4gKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IFdlZWtEYXkgPSBXZWVrRGF5Lk1vbmRheVxuICAvKiogQmFuayBob2xpZGF5cy4gKi9cbiAgQElucHV0KCkgZGlzYWJsZURhdGVzOiAoc3RyaW5nIHwgRGF0ZSlbXSA9IFtdXG4gIC8qKiBPdGhlciBub24gc2VsZWN0YWJsZSBkYXRlcy4gKi9cbiAgQElucHV0KCkgZGlzYWJsZVdlZWtEYXlzOiBXZWVrRGF5W10gPSBbXVxuICAvKiogTWluaW11bSBudW1iZXIgb2YgY2FsZW5kYXIgcm93cyBzaG93bi4gKi9cbiAgQElucHV0KCkgbWluQ2FsZW5kYXJSb3dzID0gNVxuICAvKiogSW5pdGlhbCBkYXRlIHNldCBhcyBzZWxlY3RlZC4gKi9cbiAgQElucHV0KCkgc2VsZWN0ZWQ6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldCBsb2NhbGUgZm9yIGRhdGUgZm9ybWF0LiAqL1xuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdlbi1VUydcbiAgLyoqIFNldCB0eXBlIG9mIGNhbGVuZGFyLiAqL1xuICBASW5wdXQoKSB0eXBlOiBDYWxlbmRhclR5cGUgPSAnbm9ybWFsJ1xuICAvKiogU2V0cyBhIGZyb20gZGF0ZSBvZiB3aGljaCBhbGwgZGF0ZXMgYmVmb3JlIHdpbGwgYmUgaW52YWxpZC4gKi9cbiAgQElucHV0KCkgZmlyc3RWYWxpZDogRGF0ZSB8IHVuZGVmaW5lZFxuICAvKiogU2V0cyBhIHRvIGRhdGUgb2Ygd2hpY2ggYWxsIGRhdGVzIGFmdGVyIHdpbGwgYmUgaW52YWxpZC4gKi9cbiAgQElucHV0KCkgbGFzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGEgY2xvc2luZyB0aW1lIGZvciB0b2RheSB0byB0b2dnbGUgYXZhaWxhYmlsaXR5IGZvciB0b2RheSdzIGRhdGUuICovXG4gIEBJbnB1dCgpIGNsb3NpbmdUaW1lOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKlxuICAgKiBXaGVuIHRydWUsIHRoZSBkYXRlcGlja2VyIHdpbGwgYXV0b21hdGljYWxseSBjaG9vc2UgdG8gb3BlbiBhYm92ZSBvciBiZWxvdyB0aGUgaW5wdXRcbiAgICogYmFzZWQgb24gYXZhaWxhYmxlIHNwYWNlIGluIHRoZSB2aWV3cG9ydCwgYW5kIHdpbGwgc2NhbGUgaXRzIGhlaWdodCB0byBmaXQgaWYgbmVlZGVkLlxuICAgKi9cbiAgQElucHV0KCkgZHluYW1pY1Bvc2l0aW9uID0gZmFsc2VcbiAgLyoqIE5lZWRlZCB0byBkZXRlcm1lbnQgd2hlcmUgdG8gcGxhY2UgZGF0ZXBpY2tlciBpZiBkcm9wZG93blBvc2l0aW9uID09PSAndG9wJyAqL1xuICBASW5wdXQoKSBzaXplOiAnc21hbGwnIHwgJ2xhcmdlJyA9ICdsYXJnZSdcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1wb3NpdGlvbicpIGdldCBwb3NpdGlvbkF0dHIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlclBvc2l0aW9uXG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplJykgZ2V0IHNpemVBdHRyKCkge1xuICAgIHJldHVybiB0aGlzLnNpemVcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgYWN0aXZlQ2FsZW5kYXIhOiBDYWxlbmRhck1vbnRoIC8qICA9IG5ldyBDYWxlbmRhck1vbnRoKG5ldyBEYXRlKCkpICovXG4gIC8qKiBAaW50ZXJuYWwgKi9cblxuICAvKiogQGludGVybmFsICovXG4gIHdlZWtkYXlBcnJheTogRGF0ZVtdID0gW11cblxuICAvKiogQGludGVybmFsICovXG4gIGRpc2FibGVkRGF0ZXNGb3JBY3RpdmVNb250aDogRGF0ZVtdID0gW11cblxuICAvLyBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZGF0ZXBpY2tlciBzaG91bGQgYmUgZGlzcGxheWVkIGJlbG93ICgnYm90dG9tJykgb3IgYWJvdmUgKCd0b3AnKSB0aGUgaW5wdXQsIGJhc2VkIG9uIGF2YWlsYWJsZSBzcGFjZS5cbiAgZGF0ZXBpY2tlclBvc2l0aW9uOiAnYm90dG9tJyB8ICd0b3AnID0gJ2JvdHRvbSdcblxuICBwcml2YXRlIHN1YnM6IFN1YnNjcmlwdGlvbltdID0gW11cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGNoYW5nZXMuc2VsZWN0ZWQgJiZcbiAgICAgICEhY2hhbmdlcy5zZWxlY3RlZC5jdXJyZW50VmFsdWUgJiZcbiAgICAgICFjaGFuZ2VzLnNlbGVjdGVkLmlzRmlyc3RDaGFuZ2UoKVxuICAgICkge1xuICAgICAgLy8gc2V0IGFjdGl2ZSBjYWxlbmRhciB0byBtYXRjaCBzZWxlY3RlZCBkYXRlXG4gICAgICBjb25zdCBhY3RpdmVDYWxlbmRhciA9IG5ldyBDYWxlbmRhck1vbnRoKFxuICAgICAgICB0b0xvY2FsRGF0ZShjaGFuZ2VzLnNlbGVjdGVkLmN1cnJlbnRWYWx1ZSksXG4gICAgICApXG4gICAgICB0aGlzLmNoYW5nZUFjdGl2ZUNhbGVuZGFyKGFjdGl2ZUNhbGVuZGFyKVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmRpc2FibGVEYXRlcyAmJiAhY2hhbmdlcy5kaXNhYmxlRGF0ZXMuaXNGaXJzdENoYW5nZSgpKSB7XG4gICAgICB0aGlzLmRpc2FibGVkRGF0ZXNGb3JBY3RpdmVNb250aCA9IHRoaXMuZ2V0RGlzYWJsZWREYXRlc0ZvcihcbiAgICAgICAgdGhpcy5hY3RpdmVDYWxlbmRhcixcbiAgICAgICAgY2hhbmdlcy5kaXNhYmxlRGF0ZXMuY3VycmVudFZhbHVlIHx8IFtdLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGluaXRpYXRlIHdlZWsgbGFiZWwgcm93XG4gICAgdGhpcy53ZWVrZGF5QXJyYXkgPSBnZXRTb3J0ZWRXZWVrRGF5cyh0aGlzLmZpcnN0RGF5T2ZXZWVrKVxuXG4gICAgLy8gaW5pdGlhdGUgY2FsZW5kYXJcbiAgICBjb25zdCBpbml0RGF0ZSA9XG4gICAgICAhIXRoaXMuc2VsZWN0ZWQgJiYgaXNWYWxpZCh0aGlzLnNlbGVjdGVkKVxuICAgICAgICA/IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWQpXG4gICAgICAgIDogbmV3IERhdGUoKVxuICAgIHRoaXMuYWN0aXZlQ2FsZW5kYXIgPSBuZXcgQ2FsZW5kYXJNb250aChpbml0RGF0ZSlcblxuICAgIGlmICh0aGlzLmR5bmFtaWNQb3NpdGlvbikgdGhpcy5zZXREcm9wZG93blBvc2l0aW9uKClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vicy5mb3JFYWNoKChzdWIpID0+IHN1Yi51bnN1YnNjcmliZSgpKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBVcGRhdGUgbG9jYWwgY2FsZW5kYXIgdmFyaWFibGUgYW5kIGNoYW5nZXMgZGlzcGxheWVkIGNhbGVuZGFyLlxuICAgKi9cbiAgY2hhbmdlQWN0aXZlQ2FsZW5kYXIoY2FsZW5kYXI6IENhbGVuZGFyTW9udGgpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZUNhbGVuZGFyID0gY2FsZW5kYXJcbiAgICB0aGlzLmRpc2FibGVkRGF0ZXNGb3JBY3RpdmVNb250aCA9IHRoaXMuZ2V0RGlzYWJsZWREYXRlc0ZvcihcbiAgICAgIGNhbGVuZGFyLFxuICAgICAgdGhpcy5kaXNhYmxlRGF0ZXMsXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBSZXR1cm5zIGEgc3Vic2V0IG9mIGFsbCBkaXNhYmxlZCBkYXRlcy5cbiAgICpcbiAgICogQHBhcmFtIG1vbnRoIGN1cnJlbnQgbW9udGggdG8gZmlsdGVyIGZyb21cbiAgICogQHBhcmFtIGRpc2FibGVEYXRlcyBtYXN0ZXIgbGlzdCBvZiBhbGwgZGlzYWJsZWQgZGF0ZXNcbiAgICogQHJldHVybnMgYSBzdWJzZXQgd2l0aCBjdXJyZW50IGFuZCBhZGphY2VudCBtb250aHMgZGlzYWJsZWQgZGF0ZXNcbiAgICovXG4gIGdldERpc2FibGVkRGF0ZXNGb3IoXG4gICAgY2FsZW5kYXI6IENhbGVuZGFyTW9udGgsXG4gICAgZGlzYWJsZURhdGVzPzogKHN0cmluZyB8IERhdGUpW10sXG4gICk6IERhdGVbXSB7XG4gICAgaWYgKCFkaXNhYmxlRGF0ZXMpIGRpc2FibGVEYXRlcyA9IFtdXG4gICAgLy8gc2V0cyBtb250aCB0byB0YXJnZXQgbW9udGhcbiAgICBjb25zdCB0YXJnZXRNb250aCA9IGNhbGVuZGFyLmRhdGVcblxuICAgIC8vIGdldHMgcHJldmlvdXMgbW9udGggZnJvbSB0YXJnZXQgbW9udGhcbiAgICBjb25zdCBwcmV2aW91c01vbnRoID0gY2FsZW5kYXIucHJldmlvdXNNb250aCgpLmRhdGVcblxuICAgIC8vIGdldHMgbmV4dCBtb250aCBmcm9tIHRhcmdldCBtb250aFxuICAgIGNvbnN0IG5leHRNb250aCA9IGNhbGVuZGFyLm5leHRNb250aCgpLmRhdGVcblxuICAgIC8vIGNoZWNrcyBpZiB0d28gZGF0ZXMgYXJlIHdpdGhpbiB0aGUgc2FtZSB5ZWFyIGFuZCBtb250aFxuICAgIGNvbnN0IHdpdGhpblNhbWVNb250aCA9IChhOiBEYXRlLCBiOiBEYXRlKTogYm9vbGVhbiA9PlxuICAgICAgYS5nZXRNb250aCgpID09PSBiLmdldE1vbnRoKCkgJiYgYS5nZXRGdWxsWWVhcigpID09PSBiLmdldEZ1bGxZZWFyKClcblxuICAgIC8vIGZpbHRlciBvdXQgZGlzYWJsZWQgZGF0ZXMgZm9yIGN1cnJlbnQgYW5kIGFkamFjZW50IG1vbnRoc1xuICAgIHJldHVybiBkaXNhYmxlRGF0ZXNcbiAgICAgIC5tYXAoKGQ6IERhdGUgfCBzdHJpbmcpID0+IHRvTG9jYWxEYXRlKGQpKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKGQ6IERhdGUpID0+XG4gICAgICAgICAgd2l0aGluU2FtZU1vbnRoKGQsIHByZXZpb3VzTW9udGgpIHx8XG4gICAgICAgICAgd2l0aGluU2FtZU1vbnRoKGQsIHRhcmdldE1vbnRoKSB8fFxuICAgICAgICAgIHdpdGhpblNhbWVNb250aChkLCBuZXh0TW9udGgpLFxuICAgICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgZGF0ZS1jbGlja3MgZnJvbSBjYWxlbmRhciBjb21wb2VudG4uIEVtaXRzIGV2ZW50IG9yIGNoYW5nZXMgY2FsZW5kYXIuXG4gICAqIEBwYXJhbSBkYXRlIGRhdGUgY2xpY2tlZCBpbiBjYWxlbmRhclxuICAgKi9cbiAgZGF0ZUNsaWNrSGFuZGxlcihkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgLy8gaWYgYSBkYXRlIGlzIGNsaWNrZWQgd2l0aGluIHRoZSBhY3RpdmUgbW9udGgsIGVtaXQgZGF0ZVxuICAgIGlmIChkYXRlLmdldE1vbnRoKCkgPT09IHRoaXMuYWN0aXZlQ2FsZW5kYXIubW9udGgpXG4gICAgICByZXR1cm4gdGhpcy5uZ3ZEYXRlQ2hhbmdlLmVtaXQoZGF0ZSlcbiAgICAvLyBlbHNlLCBjaGFuZ2UgYWN0aXZlIGNhbGVuZGFyIHRvIG1hdGNoIHRoZSBkYXRlIGNsaWNrZWRcbiAgICB0aGlzLnNlbGVjdGVkID0gZGF0ZVxuICAgIHRoaXMuY2hhbmdlQWN0aXZlQ2FsZW5kYXIobmV3IENhbGVuZGFyTW9udGgoZGF0ZSkpXG4gIH1cblxuICBzZXREcm9wZG93blBvc2l0aW9uKCkge1xuICAgIGNvbnN0IGRhdGVQaWNrZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgIGNvbnN0IHBhcmVudCA9IGRhdGVQaWNrZXIucGFyZW50RWxlbWVudFxuXG4gICAgY29uc3QgcmVjdCA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICBjb25zdCBzcGFjZUJlbG93ID0gdmlld3BvcnRIZWlnaHQgLSByZWN0LmJvdHRvbVxuICAgIGNvbnN0IHNwYWNlQWJvdmUgPSByZWN0LnRvcFxuXG4gICAgY29uc3QgTUFSR0lOID0gMTBcbiAgICBjb25zdCBEQVRFUElDS0VSX0hFSUdIVCA9IDM2MiAvLyA2IFJPV1MgT0YgREFURVMsIFRPIEJFIFNVUkVcbiAgICBsZXQgbWF4RGF0ZXBpY2tlckhlaWdodDogbnVtYmVyXG5cbiAgICBpZiAoc3BhY2VCZWxvdyA+PSBEQVRFUElDS0VSX0hFSUdIVCkge1xuICAgICAgdGhpcy5kYXRlcGlja2VyUG9zaXRpb24gPSAnYm90dG9tJ1xuICAgICAgbWF4RGF0ZXBpY2tlckhlaWdodCA9IERBVEVQSUNLRVJfSEVJR0hUXG4gICAgfSBlbHNlIGlmIChzcGFjZUFib3ZlID49IERBVEVQSUNLRVJfSEVJR0hUKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJQb3NpdGlvbiA9ICd0b3AnXG4gICAgICBtYXhEYXRlcGlja2VySGVpZ2h0ID0gREFURVBJQ0tFUl9IRUlHSFRcbiAgICB9IGVsc2UgaWYgKHNwYWNlQmVsb3cgPiBzcGFjZUFib3ZlKSB7XG4gICAgICB0aGlzLmRhdGVwaWNrZXJQb3NpdGlvbiA9ICdib3R0b20nXG4gICAgICBtYXhEYXRlcGlja2VySGVpZ2h0ID0gTWF0aC5tYXgoc3BhY2VCZWxvdyAtIE1BUkdJTiwgREFURVBJQ0tFUl9IRUlHSFQpIC8vIDEwcHggbWFyZ2luLCBoZWlnaHQgMzYycHhcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRlcGlja2VyUG9zaXRpb24gPSAndG9wJ1xuICAgICAgbWF4RGF0ZXBpY2tlckhlaWdodCA9IE1hdGgubWF4KHNwYWNlQWJvdmUgLSBNQVJHSU4sIERBVEVQSUNLRVJfSEVJR0hUKSAvLyAxMHB4IG1hcmdpbiwgaGVpZ2h0IDM2MnB4XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkYXRlUGlja2VyLCAnbWF4LWhlaWdodCcsIGAke21heERhdGVwaWNrZXJIZWlnaHR9cHhgKVxuICB9XG59XG4iLCI8IS0tIGNvbnRyb2wgZm9yIGNoYW5naW5nIGRpc3BsYXllZCBjYWxlbmRhciAtLT5cbjxuZ2d2LWNhbGVuZGFyLWNvbnRyb2xcbiAgW2FjdGl2ZUNhbGVuZGFyXT1cImFjdGl2ZUNhbGVuZGFyXCJcbiAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICBbdHlwZV09XCJ0eXBlXCJcbiAgKGNhbGVuZGFyQ2hhbmdlKT1cImNoYW5nZUFjdGl2ZUNhbGVuZGFyKCRldmVudClcIlxuPlxuPC9uZ2d2LWNhbGVuZGFyLWNvbnRyb2w+XG5cbjwhLS0gbGFiZWwgcm93IGZvciB3ZWVrIC0tPlxuPGRpdiBjbGFzcz1cIm5nZ3Ytd2Vla2RheS1yb3dcIj5cbiAgPHNwYW4gKm5nRm9yPVwibGV0IHdlZWtkYXkgb2Ygd2Vla2RheUFycmF5XCI+e3tcbiAgICB3ZWVrZGF5IHwgZGF0ZTogJ0VFRScgOiB1bmRlZmluZWQgOiBsb2NhbGVcbiAgfX08L3NwYW4+XG48L2Rpdj5cblxuPCEtLSBvdXRsZXQgZm9yIGFjdGl2ZSBjYWxlbmRhciAtLT5cbjxkaXYgY2xhc3M9XCJuZ2d2LWNhbGVuZGFyLXZpZXctY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgY2FsZW5kYXJUZW1wbGF0ZTtcbiAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgY2FsZW5kYXI6IGFjdGl2ZUNhbGVuZGFyLFxuICAgICAgICBkaXNhYmxlRGF0ZXM6IGRpc2FibGVkRGF0ZXNGb3JBY3RpdmVNb250aCxcbiAgICAgIH1cbiAgICBcIlxuICA+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJ0eXBlID09PSAnZXh0ZW5kZWQnXCIgY2xhc3M9XCJnZHMtZGF0ZXBpY2tlcl9fY29udHJvbHNcIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAjY2FsZW5kYXJUZW1wbGF0ZVxuICBsZXQtY2FsZW5kYXI9XCJjYWxlbmRhclwiXG4gIGxldC1kaXNhYmxlRGF0ZXM9XCJkaXNhYmxlRGF0ZXNcIlxuPlxuICA8bmdndi1jYWxlbmRhclxuICAgIFt5ZWFyXT1cImNhbGVuZGFyLnllYXJcIlxuICAgIFttb250aF09XCJjYWxlbmRhci5tb250aFwiXG4gICAgW3R5cGVdPVwidHlwZVwiXG4gICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgIFtkaXNhYmxlRGF0ZXNdPVwiZGlzYWJsZURhdGVzXCJcbiAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgIFtsYXN0VmFsaWRdPVwibGFzdFZhbGlkXCJcbiAgICBbZmlyc3RWYWxpZF09XCJmaXJzdFZhbGlkXCJcbiAgICBbY2xvc2luZ1RpbWVdPVwiY2xvc2luZ1RpbWVcIlxuICAgIFtkaXNhYmxlV2Vla0RheXNdPVwiZGlzYWJsZVdlZWtEYXlzXCJcbiAgICBbbWluQ2FsZW5kYXJSb3dzXT1cIm1pbkNhbGVuZGFyUm93c1wiXG4gICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcbiAgICAoZGF0ZUNsaWNrKT1cImRhdGVDbGlja0hhbmRsZXIoJGV2ZW50KVwiXG4gID5cbiAgPC9uZ2d2LWNhbGVuZGFyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import '../../datepicker.globals';\nimport '@sebgroup/green-core/components/icon/icons/calendar.js';\nimport '@sebgroup/green-core/components/icon/icons/triangle-exclamation.js';\nimport { WeekDay } from '@angular/common';\nimport { ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Inject, Input, Optional, Self, ViewChild, } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { fromEvent, Subject, } from 'rxjs';\nimport { startWith, takeUntil, } from 'rxjs/operators';\nimport { TRANSLOCO_SCOPE, TranslocoService, } from '@jsverse/transloco';\nimport { DateControlValueAccessorComponent, } from '../../date-control-value-accessor/date-control-value-accessor.component';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@jsverse/transloco\";\nimport * as i3 from \"@angular/common\";\nimport * as i4 from \"@sebgroup/green-angular/src/v-angular/input-mask\";\nimport * as i5 from \"@sebgroup/green-angular/src/lib/shared\";\nimport * as i6 from \"../datepicker/datepicker.component\";\n/**\n * Date pickers simplify the task of selecting a date in a visual representation of a calendar.\n * https://designlibrary.sebgroup.com/components/component-datepicker\n *\n * Selector: `nggv-dateinput`\n *\n * When focusing an date element, the calendar allows for navigation using both tab and arrow keys.\n * Pressing 'esc' will close the calendar.\n *\n * Requires TranslocoLocale, but in turn allows for setting locale dynamically:\n * https://jsverse.github.io/transloco/docs/plugins/locale/#manually-setting-locale\n *\n * To configure TranslocoLocale, follow this guide:\n * https://jsverse.github.io/transloco/docs/plugins/locale/#setup\n */\nexport class DateInputComponent extends DateControlValueAccessorComponent {\n get isSmall() {\n return this.size === 'small';\n }\n get isLarge() {\n return this.size === 'large';\n }\n constructor(ngControl, translocoScope, transloco, elementRef, cdr) {\n super(ngControl, translocoScope, elementRef, cdr, transloco);\n this.ngControl = ngControl;\n this.translocoScope = translocoScope;\n this.transloco = transloco;\n this.elementRef = elementRef;\n this.cdr = cdr;\n /** Special property used for selecting DOM elements during automated UI testing. */\n this.thook = 'date-input';\n /** Set type of calendar: either 'normal' or 'expanded'. Default is 'normal'. */\n this.type = 'normal';\n /** If set to true, the value will not be editable. */\n this.readonly = false;\n /**\n * An array of Dates or parsable strings that corresponds with dates that should not be selectable in the calendar.\n * I.e. bank holidays.\n */\n this.disableDates = [];\n /**\n * An array of weekdays that should not be selectable in the calendar.\n * Can be used together with or instead of @Input() disableDates.\n */\n this.disableWeekDays = [];\n /** Mininum number of rows shown in the calendar. */\n this.minRows = 5;\n /** Sets first day of week in calendar. Defaults to Monday. */\n this.firstDayOfWeek = WeekDay.Monday;\n /** If set to true, it will allow to close the calendar on escape button click. */\n this.closeCalendarOnEscape = true;\n /** If the date-input should close when scrolling the viewport. Default: false*/\n this.closeOnScroll = false;\n /**\n * Sets the displayed size of the date input field.\n */\n this.size = 'large';\n this.dynamicPosition = false;\n /** @internal */\n // calendarIcon: IconDefinition = faCalendarDays;\n /** @internal */\n this.shown = false;\n /** @internal */\n this.showInput$ = this.showInputDateSrc.asObservable().pipe(startWith(true));\n /** Observable for listening to scrolls when the datepicker is open */\n this.documentScroll$ = fromEvent(document, 'scroll');\n /** Observable for listening to clicks outside of the datepicker. */\n this.documentClick$ = fromEvent(document, 'click');\n /** Subject used for unsubscribe pattern on above observable. */\n this.datepickerClosed$ = new Subject();\n // this.showInput$ = this.showInputDateSrc.asObservable()\n }\n ngOnDestroy() {\n this.datepickerClosed$.next(true);\n this.datepickerClosed$.complete();\n }\n /**\n * @internal\n * Called from the datepicker-component when a date button is clicked in the calendar.\n *\n * @param date date object emitted when selecting a date in the datepicker.\n */\n onDateChange(date) {\n // control value accessor will ensure correct formatting of state\n this.state = DateControlValueAccessorComponent.parseDateLike(date);\n // emit state\n this.onChange(this.state);\n // close datepicker and move focus to datepicker button\n this.setShown(false);\n setTimeout(() => this.toggleButtonRef?.nativeElement.focus(), 1);\n }\n /**\n * @internal\n * Called when entering date manually in input field.\n */\n onValueChange(eventTarget) {\n // Will be in the format selected in inputMask\n const value = `${eventTarget.inputmask.undoValue}`;\n // Use parserfunction from inputMask to parse to a date object since value can be in multiple formats\n // Then ontrol value accessor will ensure correct formatting of state\n const parsedDate = DateControlValueAccessorComponent.parseDateLike(this.dateInputMask.parser(value));\n this.state = parsedDate;\n // emit parsed date\n this.onChange(parsedDate);\n this.onTouched();\n }\n /**\n * @internal\n * Listen to 'esc' keypress and closes datepicker if open.\n */\n keyListener(event) {\n if (this.closeCalendarOnEscape && event.key === 'Escape')\n this.setShown(false);\n }\n /** @internal */\n toggleDatepicker() {\n this.setShown(!this.shown);\n }\n /** To externally trigger the datepicker to close. */\n close() {\n this.setShown(false);\n }\n /**\n * Set the shown state of the datepicker popup. If true the popup will be visible.\n * If the state is set to false, call onTouched to notify any state listeners\n * @param state the shown state which to set.\n */\n setShown(state = true) {\n this.shown = state;\n if (!this.shown) {\n // if shown is set to false, stop listening to clicks\n this.datepickerClosed$.next(true);\n return this.onTouched();\n }\n // if shown is set to true, reset unsubscribe variable\n this.datepickerClosed$.next(false);\n // start listen to scroll if closeOnScroll is enabled\n if (this.closeOnScroll) {\n this.documentScroll$.pipe(takeUntil(this.datepickerClosed$)).subscribe({\n next: () => {\n // if document starts scrolling, close datepicker\n return this.setShown(false);\n },\n });\n }\n // start listening for clicks outside the component\n this.documentClick$.pipe(takeUntil(this.datepickerClosed$)).subscribe({\n next: (event) => {\n // clicking on a gray date causes the datepicker to reload the calendar dates,\n // and the button element clicked will no longer be considered as a child of the datepicker.\n // but the event target path will still contain the parent element\n // if target has datepicker parent, keep listening\n const eventPath = event.composedPath();\n const hasDatepickerParent = !!eventPath.find((e) => e === this.elementRef.nativeElement);\n if (hasDatepickerParent)\n return;\n // else the click is considered to be outside, close datepicker\n return this.setShown(false);\n },\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: DateInputComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i2.TranslocoService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.9\", type: DateInputComponent, isStandalone: false, selector: \"nggv-dateinput,nggv-input[type=date]\", inputs: { thook: \"thook\", type: \"type\", readonly: \"readonly\", disableDates: \"disableDates\", disableWeekDays: \"disableWeekDays\", minRows: \"minRows\", firstValid: \"firstValid\", lastValid: \"lastValid\", closingTime: \"closingTime\", firstDayOfWeek: \"firstDayOfWeek\", closeCalendarOnEscape: \"closeCalendarOnEscape\", closeOnScroll: \"closeOnScroll\", size: \"size\", dynamicPosition: \"dynamicPosition\" }, host: { listeners: { \"keydown\": \"keyListener($event)\" }, properties: { \"attr.data-thook\": \"this.thook\", \"class.small\": \"this.isSmall\", \"class.large\": \"this.isLarge\" } }, viewQueries: [{ propertyName: \"toggleButtonRef\", first: true, predicate: [\"toggleCalendarButton\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"<!-- LABEL -->\\n<ng-container *transloco=\\\"let t; read: scope\\\">\\n <label\\n [id]=\\\"id + '-label'\\\"\\n class=\\\"gds-field-label hide-if-empty\\\"\\n [attr.for]=\\\"id + '-input'\\\"\\n >\\n <ng-template\\n *ngTemplateOutlet=\\\"labelContentTpl || basicLabelContentTpl\\\"\\n ></ng-template>\\n <ng-template #basicLabelContentTpl>\\n <!-- to trigger css:empty if no label was added -->\\n <ng-container *ngIf=\\\"label\\\">\\n {{ label }}\\n <span\\n *ngIf=\\\"optional === true || (required !== true && optional !== false)\\\"\\n class=\\\"gds-field-label--optional\\\"\\n >\\n ({{ t('label.optional') }})\\n </span>\\n </ng-container>\\n </ng-template>\\n </label>\\n\\n <!-- DESCRIPTION -->\\n <div\\n class=\\\"gds-field-label--small description hide-if-empty\\\"\\n *ngIf=\\\"description\\\"\\n >\\n {{ description }}\\n </div>\\n\\n <!-- LOCKED INPUT -->\\n <ng-container *ngIf=\\\"locked\\\">\\n <ng-template\\n *ngTemplateOutlet=\\\"\\n lockedTpl || defaultLockedTpl;\\n context: { $implicit: state }\\n \\\"\\n ></ng-template>\\n <ng-template #defaultLockedTpl>\\n <div\\n [id]=\\\"id + '-input'\\\"\\n class=\\\"nggv-field--locked\\\"\\n [attr.name]=\\\"name\\\"\\n [attr.value]=\\\"state\\\"\\n [attr.role]=\\\"role\\\"\\n >\\n <span *ngIf=\\\"!state\\\" class=\\\"unset-state\\\">-</span>\\n <ng-container *ngIf=\\\"state\\\">\\n {{ state | nggvInputMaskFormat: dateInputMask }}\\n </ng-container>\\n </div>\\n </ng-template>\\n </ng-container>\\n\\n <!-- INPUT WRAPPER -->\\n <ng-container *ngIf=\\\"!locked\\\">\\n <div\\n class=\\\"field-wrap\\\"\\n [class.nggv-field--error]=\\\"invalid\\\"\\n *ngIf=\\\"showInput$ | async\\\"\\n >\\n <!-- INPUT FIELD -->\\n <input\\n #input\\n [id]=\\\"id + '-input'\\\"\\n class=\\\"nggv-field-date\\\"\\n type=\\\"text\\\"\\n autocomplete=\\\"off\\\"\\n [attr.name]=\\\"name\\\"\\n [attr.required]=\\\"required || null\\\"\\n [disabled]=\\\"disabled\\\"\\n [readOnly]=\\\"readonly\\\"\\n [attr.role]=\\\"role\\\"\\n [attr.placeholder]=\\\"placeholder\\\"\\n [attr.aria-label]=\\\"description\\\"\\n [nggvInputMask]=\\\"dateInputMask\\\"\\n [value]=\\\"state\\\"\\n title=\\\"\\\"\\n (change)=\\\"onValueChange($event.target)\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n (blur)=\\\"onBlur($event)\\\"\\n />\\n\\n <button\\n aria-label=\\\"toggle calendar\\\"\\n #toggleCalendarButton\\n class=\\\"nggv-button-date\\\"\\n type=\\\"button\\\"\\n data-thook=\\\"toggle-calendar-button\\\"\\n (click)=\\\"toggleDatepicker()\\\"\\n [disabled]=\\\"disabled\\\"\\n >\\n @if (size === 'small') {\\n <gds-icon-calendar *nggCoreElement size=\\\"16px\\\"></gds-icon-calendar>\\n }\\n\\n @if (size === 'large') {\\n <gds-icon-calendar *nggCoreElement size=\\\"20px\\\"></gds-icon-calendar>\\n }\\n </button>\\n </div>\\n\\n <!-- DATEPICKER -->\\n <div class=\\\"nggv-datepicker\\\" *ngIf=\\\"shown\\\">\\n <nggv-datepicker\\n #input\\n [type]=\\\"type\\\"\\n [disableDates]=\\\"disableDates\\\"\\n [disableWeekDays]=\\\"disableWeekDays\\\"\\n [selected]=\\\"state\\\"\\n [locale]=\\\"locale\\\"\\n [minCalendarRows]=\\\"minRows\\\"\\n [firstDayOfWeek]=\\\"firstDayOfWeek\\\"\\n [firstValid]=\\\"firstValid\\\"\\n [lastValid]=\\\"lastValid\\\"\\n [closingTime]=\\\"closingTime\\\"\\n [dynamicPosition]=\\\"dynamicPosition\\\"\\n [size]=\\\"size\\\"\\n (ngvDateChange)=\\\"onDateChange($event)\\\"\\n >\\n <ng-content></ng-content>\\n </nggv-datepicker>\\n </div>\\n\\n <!-- ERRORS -->\\n <ng-container\\n *ngIf=\\\"\\n invalid &&\\n (error || ngControl?.invalid) &&\\n (!errorList || !errorList.length)\\n \\\"\\n >\\n <label\\n class=\\\"gds-field-notice gds-field-notice--error\\\"\\n [attr.for]=\\\"id + '-input'\\\"\\n >\\n <span class=\\\"error-item\\\">\\n <span class=\\\"error-item--icon\\\">\\n <gds-icon-triangle-exclamation\\n *nggCoreElement\\n [solid]=\\\"true\\\"\\n size=\\\"16px\\\"\\n ></gds-icon-triangle-exclamation>\\n </span>\\n <span\\n *ngIf=\\\"error; else errorsRef\\\"\\n class=\\\"error-item--text\\\"\\n [attr.data-thook]=\\\"thook + '-errorlabel'\\\"\\n >{{ error }}</span\\n >\\n <ng-template #errorsRef>\\n <span\\n *ngIf=\\\"firstError as error\\\"\\n class=\\\"error-item--text\\\"\\n [attr.data-thook]=\\\"thook + '-errorlabel'\\\"\\n >\\n {{ t('error.field' + error?.code, error?.params) }}\\n </span>\\n </ng-template>\\n </span>\\n </label>\\n </ng-container>\\n <ng-container *ngFor=\\\"let error of errorList ?? []\\\">\\n <label\\n class=\\\"gds-field-notice gds-field-notice--error\\\"\\n [attr.for]=\\\"id + '-input'\\\"\\n *ngIf=\\\"invalid && error\\\"\\n >\\n <span class=\\\"error-item\\\">\\n <span class=\\\"error-item--icon\\\">\\n <gds-icon-triangle-exclamation\\n *nggCoreElement\\n [solid]=\\\"true\\\"\\n size=\\\"16px\\\"\\n ></gds-icon-triangle-exclamation>\\n </span>\\n <span\\n class=\\\"error-item--text\\\"\\n [attr.data-thook]=\\\"thook + '-errorlabel'\\\"\\n >{{ error }}</span\\n >\\n </span>\\n </label>\\n </ng-container>\\n </ng-container>\\n</ng-container>\\n\", styles: [\":host{display:block;position:relative}@media(max-width:47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.gds-form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.gds-form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.gds-form-control:focus,:host .gds-field-label.gds-form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.gds-form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+.gds-button,:host .gds-field-label+.gds-group-stepper,:host .gds-field-label+.gds-stepper-wrapper,:host .gds-field-label+.gds-group{margin-top:.5rem}:host .gds-field-label+.gds-form-info{margin-bottom:.5rem}:host .gds-field-label{display:block}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.gds-form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.gds-form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.gds-form-control:focus,:host .gds-field-label--optional.gds-form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.gds-form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+.gds-button,:host .gds-field-label--optional+.gds-group-stepper,:host .gds-field-label--optional+.gds-stepper-wrapper,:host .gds-field-label--optional+.gds-group{margin-top:.5rem}:host .gds-field-label--optional+.gds-form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap{height:2.625rem;display:flex}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding-left:1rem \\\"\\\";padding-right:1rem \\\"\\\";padding-bottom:.75rem \\\"\\\";padding-top:.75rem \\\"\\\";border-radius:.25rem;border:solid 1px var(--gds-sys-color-base-600);font-weight:500}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date{min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center}@media(max-width:35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast:active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;height:2rem;padding:.4375rem .75rem;font-size:.875rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date{transition:border var(--gds-sys-transition)}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background:var(--gds-sys-color-base-800);color:var(--gds-sys-color-text-white);--background: var(--gds-sys-color-base-800);--color: var(--gds-sys-color-text-white);border-color:var(--gds-sys-color-base-800)}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background:var(--gds-sys-color-base-800);color:var(--gds-sys-color-text-white);--background: $bg;--color: $color;border-color:var(--gds-sys-color-base-800)}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date{background-color:transparent;border-color:var(--gds-sys-color-base-800);color:var(--gds-sys-color-base-800);--color: var(--gds-sys-color-base-800)}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--gds-sys-color-text-disabled)!important;border-color:var(--gds-sys-color-text-disabled)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--gds-sys-color-text-disabled)}@media(max-width:47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date{background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media(max-width:35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date{border:none;min-height:2.375rem;width:100%;border-bottom-right-radius:0;border-top-right-radius:0;padding-left:1rem}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}:host.small .gds-field-label{font-size:.875rem;line-height:1rem}:host.small label+.field-wrap{margin-top:.25rem}:host.small .field-wrap{height:calc(2rem + 3px);min-height:calc(2rem + 3px)}:host.small .field-wrap .nggv-field-date{padding:.38rem .5rem;line-height:1rem;min-height:2rem;font-size:.875rem}:host.small .field-wrap .nggv-button-date{min-height:2rem;min-width:2rem;width:2rem;height:2rem;padding:0}\\n\"], dependencies: [{ kind: \"directive\", type: i3.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { kind: \"directive\", type: i3.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: i2.TranslocoDirective, selector: \"[transloco]\", inputs: [\"transloco\", \"translocoParams\", \"translocoScope\", \"translocoRead\", \"translocoPrefix\", \"translocoLang\", \"translocoLoadingTpl\"] }, { kind: \"directive\", type: i4.NggvInputMaskDirective, selector: \"[nggvInputMask]\", inputs: [\"nggvInputMask\"] }, { kind: \"directive\", type: i5.NggCoreElementDirective, selector: \"[nggCoreElement]\" }, { kind: \"component\", type: i6.DatepickerComponent, selector: \"nggv-datepicker\", inputs: [\"firstDayOfWeek\", \"disableDates\", \"disableWeekDays\", \"minCalendarRows\", \"selected\", \"locale\", \"type\", \"firstValid\", \"lastValid\", \"closingTime\", \"dynamicPosition\", \"size\"], outputs: [\"ngvDateChange\"] }, { kind: \"pipe\", type: i3.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i4.InputMaskFormatPipe, name: \"nggvInputMaskFormat\" }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: DateInputComponent, decorators: [{\n type: Component,\n args: [{ selector: 'nggv-dateinput,nggv-input[type=date]', standalone: false, template: \"<!-- LABEL -->\\n<ng-container *transloco=\\\"let t; read: scope\\\">\\n <label\\n [id]=\\\"id + '-label'\\\"\\n class=\\\"gds-field-label hide-if-empty\\\"\\n [attr.for]=\\\"id + '-input'\\\"\\n >\\n <ng-template\\n *ngTemplateOutlet=\\\"labelContentTpl || basicLabelContentTpl\\\"\\n ></ng-template>\\n <ng-template #basicLabelContentTpl>\\n <!-- to trigger css:empty if no label was added -->\\n <ng-container *ngIf=\\\"label\\\">\\n {{ label }}\\n <span\\n *ngIf=\\\"optional === true || (required !== true && optional !== false)\\\"\\n class=\\\"gds-field-label--optional\\\"\\n >\\n ({{ t('label.optional') }})\\n </span>\\n </ng-container>\\n </ng-template>\\n </label>\\n\\n <!-- DESCRIPTION -->\\n <div\\n class=\\\"gds-field-label--small description hide-if-empty\\\"\\n *ngIf=\\\"description\\\"\\n >\\n {{ description }}\\n </div>\\n\\n <!-- LOCKED INPUT -->\\n <ng-container *ngIf=\\\"locked\\\">\\n <ng-template\\n *ngTemplateOutlet=\\\"\\n lockedTpl || defaultLockedTpl;\\n context: { $implicit: state }\\n \\\"\\n ></ng-template>\\n <ng-template #defaultLockedTpl>\\n <div\\n [id]=\\\"id + '-input'\\\"\\n class=\\\"nggv-field--locked\\\"\\n [attr.name]=\\\"name\\\"\\n [attr.value]=\\\"state\\\"\\n [attr.role]=\\\"role\\\"\\n >\\n <span *ngIf=\\\"!state\\\" class=\\\"unset-state\\\">-</span>\\n <ng-container *ngIf=\\\"state\\\">\\n {{ state | nggvInputMaskFormat: dateInputMask }}\\n </ng-container>\\n </div>\\n </ng-template>\\n </ng-container>\\n\\n <!-- INPUT WRAPPER -->\\n <ng-container *ngIf=\\\"!locked\\\">\\n <div\\n class=\\\"field-wrap\\\"\\n [class.nggv-field--error]=\\\"invalid\\\"\\n *ngIf=\\\"showInput$ | async\\\"\\n >\\n <!-- INPUT FIELD -->\\n <input\\n #input\\n [id]=\\\"id + '-input'\\\"\\n class=\\\"nggv-field-date\\\"\\n type=\\\"text\\\"\\n autocomplete=\\\"off\\\"\\n [attr.name]=\\\"name\\\"\\n [attr.required]=\\\"required || null\\\"\\n [disabled]=\\\"disabled\\\"\\n [readOnly]=\\\"readonly\\\"\\n [attr.role]=\\\"role\\\"\\n [attr.placeholder]=\\\"placeholder\\\"\\n [attr.aria-label]=\\\"description\\\"\\n [nggvInputMask]=\\\"dateInputMask\\\"\\n [value]=\\\"state\\\"\\n title=\\\"\\\"\\n (change)=\\\"onValueChange($event.target)\\\"\\n (focus)=\\\"onFocus($event)\\\"\\n (blur)=\\\"onBlur($event)\\\"\\n />\\n\\n <button\\n aria-label=\\\"toggle calendar\\\"\\n #toggleCalendarButton\\n class=\\\"nggv-button-date\\\"\\n type=\\\"button\\\"\\n data-thook=\\\"toggle-calendar-button\\\"\\n (click)=\\\"toggleDatepicker()\\\"\\n [disabled]=\\\"disabled\\\"\\n >\\n @if (size === 'small') {\\n <gds-icon-calendar *nggCoreElement size=\\\"16px\\\"></gds-icon-calendar>\\n }\\n\\n @if (size === 'large') {\\n <gds-icon-calendar *nggCoreElement size=\\\"20px\\\"></gds-icon-calendar>\\n }\\n </button>\\n </div>\\n\\n <!-- DATEPICKER -->\\n <div class=\\\"nggv-datepicker\\\" *ngIf=\\\"shown\\\">\\n <nggv-datepicker\\n #input\\n [type]=\\\"type\\\"\\n [disableDates]=\\\"disableDates\\\"\\n [disableWeekDays]=\\\"disableWeekDays\\\"\\n [selected]=\\\"state\\\"\\n [locale]=\\\"locale\\\"\\n [minCalendarRows]=\\\"minRows\\\"\\n [firstDayOfWeek]=\\\"firstDayOfWeek\\\"\\n [firstValid]=\\\"firstValid\\\"\\n [lastValid]=\\\"lastValid\\\"\\n [closingTime]=\\\"closingTime\\\"\\n [dynamicPosition]=\\\"dynamicPosition\\\"\\n [size]=\\\"size\\\"\\n (ngvDateChange)=\\\"onDateChange($event)\\\"\\n >\\n <ng-content></ng-content>\\n </nggv-datepicker>\\n </div>\\n\\n <!-- ERRORS -->\\n <ng-container\\n *ngIf=\\\"\\n invalid &&\\n (error || ngControl?.invalid) &&\\n (!errorList || !errorList.length)\\n \\\"\\n >\\n <label\\n class=\\\"gds-field-notice gds-field-notice--error\\\"\\n [attr.for]=\\\"id + '-input'\\\"\\n >\\n <span class=\\\"error-item\\\">\\n <span class=\\\"error-item--icon\\\">\\n <gds-icon-triangle-exclamation\\n *nggCoreElement\\n [solid]=\\\"true\\\"\\n size=\\\"16px\\\"\\n ></gds-icon-triangle-exclamation>\\n </span>\\n <span\\n *ngIf=\\\"error; else errorsRef\\\"\\n class=\\\"error-item--text\\\"\\n [attr.data-thook]=\\\"thook + '-errorlabel'\\\"\\n >{{ error }}</span\\n >\\n <ng-template #errorsRef>\\n <span\\n *ngIf=\\\"firstError as error\\\"\\n class=\\\"error-item--text\\\"\\n [attr.data-thook]=\\\"thook + '-errorlabel'\\\"\\n >\\n {{ t('error.field' + error?.code, error?.params) }}\\n </span>\\n </ng-template>\\n </span>\\n </label>\\n </ng-container>\\n <ng-container *ngFor=\\\"let error of errorList ?? []\\\">\\n <label\\n class=\\\"gds-field-notice gds-field-notice--error\\\"\\n [attr.for]=\\\"id + '-input'\\\"\\n *ngIf=\\\"invalid && error\\\"\\n >\\n <span class=\\\"error-item\\\">\\n <span class=\\\"error-item--icon\\\">\\n <gds-icon-triangle-exclamation\\n *nggCoreElement\\n [solid]=\\\"true\\\"\\n size=\\\"16px\\\"\\n ></gds-icon-triangle-exclamation>\\n </span>\\n <span\\n class=\\\"error-item--text\\\"\\n [attr.data-thook]=\\\"thook + '-errorlabel'\\\"\\n >{{ error }}</span\\n >\\n </span>\\n </label>\\n </ng-container>\\n </ng-container>\\n</ng-container>\\n\", styles: [\":host{display:block;position:relative}@media(max-width:47.98em){:host{min-width:100%}}:host .hide-if-empty:empty{display:none}:host .unset-state{padding-left:.5rem}:host .gds-field-label:is(label){margin-bottom:0}:host .gds-field-label.gds-form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label.gds-form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label.gds-form-control:focus,:host .gds-field-label.gds-form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label:not(.gds-form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label+input,:host .gds-field-label+textarea,fieldset :host .gds-field-label+div,:host .gds-field-label+.gds-button,:host .gds-field-label+.gds-group-stepper,:host .gds-field-label+.gds-stepper-wrapper,:host .gds-field-label+.gds-group{margin-top:.5rem}:host .gds-field-label+.gds-form-info{margin-bottom:.5rem}:host .gds-field-label{display:block}:host label+.field-wrap,:host label+.nggv-field--locked{margin-top:.5rem}:host .description{font-size:.875rem;margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional:is(label){margin-bottom:0}:host .gds-field-label--optional.gds-form-control{width:fit-content}@supports (-moz-appearance: none){:host .gds-field-label--optional.gds-form-control:focus:not(:focus-visible){box-shadow:none;outline:0}:host .gds-field-label--optional.gds-form-control:focus,:host .gds-field-label--optional.gds-form-control:focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}}:host .gds-field-label--optional:not(.gds-form-control){font-weight:500;width:100%;line-height:1.25rem}:host .gds-field-label--optional+input,:host .gds-field-label--optional+textarea,fieldset :host .gds-field-label--optional+div,:host .gds-field-label--optional+.gds-button,:host .gds-field-label--optional+.gds-group-stepper,:host .gds-field-label--optional+.gds-stepper-wrapper,:host .gds-field-label--optional+.gds-group{margin-top:.5rem}:host .gds-field-label--optional+.gds-form-info{margin-bottom:.5rem}:host .nggv-datepicker{margin-top:.25rem;position:absolute}:host .nggv-field--error{border-bottom:.125rem solid #9f000a!important}:host .nggv-field--error:focus,:host .nggv-field--error:active,:host .nggv-field--error:hover{border-bottom:.125rem solid #9f000a!important}:host .error-item{display:flex;gap:.5rem;color:#9f000a}:host .gds-field-notice{margin-top:.5rem;display:block;font-size:.875rem;line-height:1;font-weight:500}:host .field-wrap{border:1px solid #868686;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit}:host .field-wrap *,:host .field-wrap *:before,:host .field-wrap *:after{box-sizing:border-box}:host .field-wrap{height:2.625rem;display:flex}:host .field-wrap .nggv-button-date{--text-disabled-color: #adadad;padding-left:1rem \\\"\\\";padding-right:1rem \\\"\\\";padding-bottom:.75rem \\\"\\\";padding-top:.75rem \\\"\\\";border-radius:.25rem;border:solid 1px var(--gds-sys-color-base-600);font-weight:500}:host .field-wrap .nggv-button-date:focus:not(:focus-visible){box-shadow:none;outline:0}:host .field-wrap .nggv-button-date:focus,:host .field-wrap .nggv-button-date:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date{min-height:2.75rem;align-items:center;display:inline-flex;justify-content:center}@media(max-width:35.98em){:host .field-wrap .nggv-button-date{min-width:100%}}@media screen and (-ms-high-contrast:active){:host .field-wrap .nggv-button-date{border:2px solid currentcolor}}:host .field-wrap .nggv-button-date.small{min-height:2rem;height:2rem;padding:.4375rem .75rem;font-size:.875rem;line-height:1rem}:host .field-wrap .nggv-button-date.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host .field-wrap .nggv-button-date{transition:border var(--gds-sys-transition)}:host .field-wrap .nggv-button-date:not(:disabled,.disabled,[aria-disabled]):hover{background:var(--gds-sys-color-base-800);color:var(--gds-sys-color-text-white);--background: var(--gds-sys-color-base-800);--color: var(--gds-sys-color-text-white);border-color:var(--gds-sys-color-base-800)}:host .field-wrap .nggv-button-date[aria-selected=true],:host .field-wrap .nggv-button-date:active,:host .field-wrap .nggv-button-date.active,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{background:var(--gds-sys-color-base-800);color:var(--gds-sys-color-text-white);--background: $bg;--color: $color;border-color:var(--gds-sys-color-base-800)}:host .field-wrap .nggv-button-date[aria-selected]:hover,:host .field-wrap .nggv-button-date.active:hover,:host .field-wrap .nggv-button-date:active:hover{opacity:.9}:host .field-wrap .nggv-button-date{background-color:transparent;border-color:var(--gds-sys-color-base-800);color:var(--gds-sys-color-base-800);--color: var(--gds-sys-color-base-800)}:host .field-wrap .nggv-button-date:disabled,:host .field-wrap .nggv-button-date.disabled,:host .field-wrap .nggv-button-date[aria-disabled=true]{color:var(--gds-sys-color-text-disabled)!important;border-color:var(--gds-sys-color-text-disabled)!important;cursor:not-allowed}:host .field-wrap .nggv-button-date:disabled::placeholder,:host .field-wrap .nggv-button-date.disabled::placeholder,:host .field-wrap .nggv-button-date[aria-disabled=true]::placeholder{color:var(--gds-sys-color-text-disabled)}@media(max-width:47.98em){:host .field-wrap .nggv-button-date{width:2.625rem;height:2.625rem}}:host .field-wrap .nggv-button-date{background-color:transparent;min-height:2.5rem;border:none;border-radius:3px;width:2.625rem;height:2.625rem;min-width:2.625rem;border-top-left-radius:0!important;border-bottom-left-radius:0!important;text-align:right}:host .field-wrap .nggv-button-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-button-date[disabled]{background-color:#f8f8f8!important;color:#adadad}@media(max-width:35.98em){:host .field-wrap .nggv-button-date{min-width:initial}}:host .field-wrap input[type=text]::-webkit-inner-spin-button,:host .field-wrap input[type=text]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date{border:1px solid #cecece;border-radius:4px;outline:none;box-sizing:border-box;min-height:2.75rem;line-height:1.5;font-size:1rem;font-family:inherit}:host .field-wrap .nggv-field-date *,:host .field-wrap .nggv-field-date *:before,:host .field-wrap .nggv-field-date *:after{box-sizing:border-box}:host .field-wrap .nggv-field-date:hover{border-color:#41b0ee}:host .field-wrap .nggv-field-date:focus{outline-color:#1a1a1a;outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host .field-wrap .nggv-field-date:active{border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]{background-color:#f8f8f8;border-color:#cecece}:host .field-wrap .nggv-field-date[disabled]::placeholder{color:#cecece}:host .field-wrap .nggv-field-date{border:none;min-height:2.375rem;width:100%;border-bottom-right-radius:0;border-top-right-radius:0;padding-left:1rem}:host .field-wrap .nggv-field-date:not(:focus){border-right:none;padding-right:0}:host .field-wrap .nggv-field-date:focus{padding-right:0}:host.small .gds-field-label{font-size:.875rem;line-height:1rem}:host.small label+.field-wrap{margin-top:.25rem}:host.small .field-wrap{height:calc(2rem + 3px);min-height:calc(2rem + 3px)}:host.small .field-wrap .nggv-field-date{padding:.38rem .5rem;line-height:1rem;min-height:2rem;font-size:.875rem}:host.small .field-wrap .nggv-button-date{min-height:2rem;min-width:2rem;width:2rem;height:2rem;padding:0}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.NgControl, decorators: [{\n type: Self\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TRANSLOCO_SCOPE]\n }] }, { type: i2.TranslocoService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { toggleButtonRef: [{\n type: ViewChild,\n args: ['toggleCalendarButton']\n }], thook: [{\n type: HostBinding,\n args: ['attr.data-thook']\n }, {\n type: Input\n }], isSmall: [{\n type: HostBinding,\n args: ['class.small']\n }], isLarge: [{\n type: HostBinding,\n args: ['class.large']\n }], type: [{\n type: Input\n }], readonly: [{\n type: Input\n }], disableDates: [{\n type: Input\n }], disableWeekDays: [{\n type: Input\n }], minRows: [{\n type: Input\n }], firstValid: [{\n type: Input\n }], lastValid: [{\n type: Input\n }], closingTime: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], closeCalendarOnEscape: [{\n type: Input\n }], closeOnScroll: [{\n type: Input\n }], size: [{\n type: Input\n }], dynamicPosition: [{\n type: Input\n }], keyListener: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2NvbXBvbmVudHMvZGF0ZS1pbnB1dC9kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL2RhdGVwaWNrZXIvY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTywwQkFBMEIsQ0FBQTtBQUNqQyxPQUFPLHdEQUF3RCxDQUFBO0FBQy9ELE9BQU8sb0VBQW9FLENBQUE7QUFFM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFDLE9BQU8sRUFDTCxTQUFTLEVBRVQsT0FBTyxHQUNSLE1BQU0sTUFBTSxDQUFBO0FBQ2IsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV2QixPQUFPLEVBQ0wsZUFBZSxFQUVmLGdCQUFnQixHQUNqQixNQUFNLG9CQUFvQixDQUFBO0FBRTNCLE9BQU8sRUFDTCxpQ0FBaUMsR0FDbEMsTUFBTSx5RUFBeUUsQ0FBQTs7Ozs7Ozs7QUFHaEY7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFPSCxNQUFNLE9BQU8sa0JBQ1gsU0FBUSxpQ0FBaUM7SUFTekMsSUFBZ0MsT0FBTztR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ckMsV0FBVzt1QkFBQyxhQUFhOztzQkFJekIsV0FBVzt1QkFBQyxhQUFhOztzQkFLekIsS0FBSzs7c0JBRUwsS0FBSzs7c0JBS0wsS0FBSzs7c0JBS0wsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBRUwsS0FBSzs7c0JBS0wsS0FBSzs7c0JBRUwsS0FBSzs7c0JBNkVMLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuLi8uLi9kYXRlcGlja2VyLmdsb2JhbHMnXG5pbXBvcnQgJ0BzZWJncm91cC9ncmVlbi1jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29ucy9jYWxlbmRhci5qcydcbmltcG9ydCAnQHNlYmdyb3VwL2dyZWVuLWNvcmUvY29tcG9uZW50cy9pY29uL2ljb25zL3RyaWFuZ2xlLWV4Y2xhbWF0aW9uLmpzJ1xuXG5pbXBvcnQgeyBXZWVrRGF5IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2VsZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5cbmltcG9ydCB7XG4gIGZyb21FdmVudCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbn0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIHN0YXJ0V2l0aCxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHtcbiAgVFJBTlNMT0NPX1NDT1BFLFxuICBUcmFuc2xvY29TY29wZSxcbiAgVHJhbnNsb2NvU2VydmljZSxcbn0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJ1xuXG5pbXBvcnQge1xuICBEYXRlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnQsXG59IGZyb20gJy4uLy4uL2RhdGUtY29udHJvbC12YWx1ZS1hY2Nlc3Nvci9kYXRlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuY29tcG9uZW50J1xuaW1wb3J0IHR5cGUgeyBDYWxlbmRhclR5cGUgfSBmcm9tICcuLi8uLi9kYXRlcGlja2VyLm1vZGVscydcblxuLyoqXG4gKiBEYXRlIHBpY2tlcnMgc2ltcGxpZnkgdGhlIHRhc2sgb2Ygc2VsZWN0aW5nIGEgZGF0ZSBpbiBhIHZpc3VhbCByZXByZXNlbnRhdGlvbiBvZiBhIGNhbGVuZGFyLlxuICogaHR0cHM6Ly9kZXNpZ25saWJyYXJ5LnNlYmdyb3VwLmNvbS9jb21wb25lbnRzL2NvbXBvbmVudC1kYXRlcGlja2VyXG4gKlxuICogU2VsZWN0b3I6IGBuZ2d2LWRhdGVpbnB1dGBcbiAqXG4gKiBXaGVuIGZvY3VzaW5nIGFuIGRhdGUgZWxlbWVudCwgdGhlIGNhbGVuZGFyIGFsbG93cyBmb3IgbmF2aWdhdGlvbiB1c2luZyBib3RoIHRhYiBhbmQgYXJyb3cga2V5cy5cbiAqIFByZXNzaW5nICdlc2MnIHdpbGwgY2xvc2UgdGhlIGNhbGVuZGFyLlxuICpcbiAqIFJlcXVpcmVzIFRyYW5zbG9jb0xvY2FsZSwgYnV0IGluIHR1cm4gYWxsb3dzIGZvciBzZXR0aW5nIGxvY2FsZSBkeW5hbWljYWxseTpcbiAqIGh0dHBzOi8vanN2ZXJzZS5naXRodWIuaW8vdHJhbnNsb2NvL2RvY3MvcGx1Z2lucy9sb2NhbGUvI21hbnVhbGx5LXNldHRpbmctbG9jYWxlXG4gKlxuICogVG8gY29uZmlndXJlIFRyYW5zbG9jb0xvY2FsZSwgZm9sbG93IHRoaXMgZ3VpZGU6XG4gKiBodHRwczovL2pzdmVyc2UuZ2l0aHViLmlvL3RyYW5zbG9jby9kb2NzL3BsdWdpbnMvbG9jYWxlLyNzZXR1cFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2d2LWRhdGVpbnB1dCxuZ2d2LWlucHV0W3R5cGU9ZGF0ZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIERhdGVJbnB1dENvbXBvbmVudFxuICBleHRlbmRzIERhdGVDb250cm9sVmFsdWVBY2Nlc3NvckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uRGVzdHJveVxue1xuICBAVmlld0NoaWxkKCd0b2dnbGVDYWxlbmRhckJ1dHRvbicpXG4gIHRvZ2dsZUJ1dHRvblJlZj86IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+XG4gIC8qKiBTcGVjaWFsIHByb3BlcnR5IHVzZWQgZm9yIHNlbGVjdGluZyBET00gZWxlbWVudHMgZHVyaW5nIGF1dG9tYXRlZCBVSSB0ZXN0aW5nLiAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10aG9vaycpIEBJbnB1dCgpIHRob29rOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID1cbiAgICAnZGF0ZS1pbnB1dCdcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtYWxsJykgZ2V0IGlzU21hbGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ3NtYWxsJ1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sYXJnZScpIGdldCBpc0xhcmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNpemUgPT09ICdsYXJnZSdcbiAgfVxuXG4gIC8qKiBTZXQgdHlwZSBvZiBjYWxlbmRhcjogZWl0aGVyICdub3JtYWwnIG9yICdleHBhbmRlZCcuIERlZmF1bHQgaXMgJ25vcm1hbCcuICovXG4gIEBJbnB1dCgpIHR5cGU6IENhbGVuZGFyVHlwZSA9ICdub3JtYWwnXG4gIC8qKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHZhbHVlIHdpbGwgbm90IGJlIGVkaXRhYmxlLiAqL1xuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBEYXRlcyBvciBwYXJzYWJsZSBzdHJpbmdzIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBkYXRlcyB0aGF0IHNob3VsZCBub3QgYmUgc2VsZWN0YWJsZSBpbiB0aGUgY2FsZW5kYXIuXG4gICAqIEkuZS4gYmFuayBob2xpZGF5cy5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVEYXRlczogKHN0cmluZyB8IERhdGUpW10gPSBbXVxuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygd2Vla2RheXMgdGhhdCBzaG91bGQgbm90IGJlIHNlbGVjdGFibGUgaW4gdGhlIGNhbGVuZGFyLlxuICAgKiBDYW4gYmUgdXNlZCB0b2dldGhlciB3aXRoIG9yIGluc3RlYWQgb2YgQElucHV0KCkgZGlzYWJsZURhdGVzLlxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZVdlZWtEYXlzOiBXZWVrRGF5W10gPSBbXVxuICAvKiogTWluaW51bSBudW1iZXIgb2Ygcm93cyBzaG93biBpbiB0aGUgY2FsZW5kYXIuICovXG4gIEBJbnB1dCgpIG1pblJvd3MgPSA1XG4gIC8qKiBTZXRzIGEgZnJvbS1kYXRlIG9mIHdoaWNoIGFsbCBkYXRlcyBiZWZvcmUgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBmaXJzdFZhbGlkOiBEYXRlIHwgdW5kZWZpbmVkXG4gIC8qKiBTZXRzIGEgdG8tZGF0ZSBvZiB3aGljaCBhbGwgZGF0ZXMgYWZ0ZXIgd2lsbCBiZSBpbnZhbGlkLiAqL1xuICBASW5wdXQoKSBsYXN0VmFsaWQ6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgYSBjbG9zaW5nIHRpbWUgZm9yIHRvZGF5IHRvIHRvZ2dsZSBhdmFpbGFiaWxpdHkgZm9yIHRvZGF5J3MgZGF0ZS4gKi9cbiAgQElucHV0KCkgY2xvc2luZ1RpbWU6IERhdGUgfCB1bmRlZmluZWRcbiAgLyoqIFNldHMgZmlyc3QgZGF5IG9mIHdlZWsgaW4gY2FsZW5kYXIuIERlZmF1bHRzIHRvIE1vbmRheS4gKi9cbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IFdlZWtEYXkgPSBXZWVrRGF5Lk1vbmRheVxuICAvKiogSWYgc2V0IHRvIHRydWUsIGl0IHdpbGwgYWxsb3cgdG8gY2xvc2UgdGhlIGNhbGVuZGFyIG9uIGVzY2FwZSBidXR0b24gY2xpY2suICovXG4gIEBJbnB1dCgpIGNsb3NlQ2FsZW5kYXJPbkVzY2FwZSA9IHRydWVcbiAgLyoqIElmIHRoZSBkYXRlLWlucHV0IHNob3VsZCBjbG9zZSB3aGVuIHNjcm9sbGluZyB0aGUgdmlld3BvcnQuIERlZmF1bHQ6IGZhbHNlKi9cbiAgQElucHV0KCkgY2xvc2VPblNjcm9sbCA9IGZhbHNlXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRpc3BsYXllZCBzaXplIG9mIHRoZSBkYXRlIGlucHV0IGZpZWxkLlxuICAgKi9cbiAgQElucHV0KCkgc2l6ZTogJ3NtYWxsJyB8ICdsYXJnZScgPSAnbGFyZ2UnXG5cbiAgQElucHV0KCkgZHluYW1pY1Bvc2l0aW9uID0gZmFsc2VcblxuICAvKiogQGludGVybmFsICovXG4gIC8vIGNhbGVuZGFySWNvbjogSWNvbkRlZmluaXRpb24gPSBmYUNhbGVuZGFyRGF5cztcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3duID0gZmFsc2VcblxuICAvKiogQGludGVybmFsICovXG4gIHNob3dJbnB1dCQgPSB0aGlzLnNob3dJbnB1dERhdGVTcmMuYXNPYnNlcnZhYmxlKCkucGlwZShzdGFydFdpdGgodHJ1ZSkpXG5cbiAgLyoqIE9ic2VydmFibGUgZm9yIGxpc3RlbmluZyB0byBzY3JvbGxzIHdoZW4gdGhlIGRhdGVwaWNrZXIgaXMgb3BlbiAqL1xuICBwcml2YXRlIGRvY3VtZW50U2Nyb2xsJDogT2JzZXJ2YWJsZTxFdmVudD4gPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdzY3JvbGwnKVxuICAvKiogT2JzZXJ2YWJsZSBmb3IgbGlzdGVuaW5nIHRvIGNsaWNrcyBvdXRzaWRlIG9mIHRoZSBkYXRlcGlja2VyLiAqL1xuICBwcml2YXRlIGRvY3VtZW50Q2xpY2skOiBPYnNlcnZhYmxlPEV2ZW50PiA9IGZyb21FdmVudChkb2N1bWVudCwgJ2NsaWNrJylcbiAgLyoqIFN1YmplY3QgdXNlZCBmb3IgdW5zdWJzY3JpYmUgcGF0dGVybiBvbiBhYm92ZSBvYnNlcnZhYmxlLiAqL1xuICBwcml2YXRlIGRhdGVwaWNrZXJDbG9zZWQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChUUkFOU0xPQ09fU0NPUEUpXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jb1Njb3BlOiBUcmFuc2xvY29TY29wZSxcbiAgICBwcm90ZWN0ZWQgdHJhbnNsb2NvOiBUcmFuc2xvY29TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcihuZ0NvbnRyb2wsIHRyYW5zbG9jb1Njb3BlLCBlbGVtZW50UmVmLCBjZHIsIHRyYW5zbG9jbylcbiAgICAvLyB0aGlzLnNob3dJbnB1dCQgPSB0aGlzLnNob3dJbnB1dERhdGVTcmMuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQubmV4dCh0cnVlKVxuICAgIHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQuY29tcGxldGUoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDYWxsZWQgZnJvbSB0aGUgZGF0ZXBpY2tlci1jb21wb25lbnQgd2hlbiBhIGRhdGUgYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIGNhbGVuZGFyLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0ZSBkYXRlIG9iamVjdCBlbWl0dGVkIHdoZW4gc2VsZWN0aW5nIGEgZGF0ZSBpbiB0aGUgZGF0ZXBpY2tlci5cbiAgICovXG4gIG9uRGF0ZUNoYW5nZShkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgLy8gY29udHJvbCB2YWx1ZSBhY2Nlc3NvciB3aWxsIGVuc3VyZSBjb3JyZWN0IGZvcm1hdHRpbmcgb2Ygc3RhdGVcbiAgICB0aGlzLnN0YXRlID0gRGF0ZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50LnBhcnNlRGF0ZUxpa2UoZGF0ZSlcbiAgICAvLyBlbWl0IHN0YXRlXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnN0YXRlKVxuICAgIC8vIGNsb3NlIGRhdGVwaWNrZXIgYW5kIG1vdmUgZm9jdXMgdG8gZGF0ZXBpY2tlciBidXR0b25cbiAgICB0aGlzLnNldFNob3duKGZhbHNlKVxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy50b2dnbGVCdXR0b25SZWY/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQ2FsbGVkIHdoZW4gZW50ZXJpbmcgZGF0ZSBtYW51YWxseSBpbiBpbnB1dCBmaWVsZC5cbiAgICovXG4gIG9uVmFsdWVDaGFuZ2UoZXZlbnRUYXJnZXQ6IGFueSk6IHZvaWQge1xuICAgIC8vIFdpbGwgYmUgaW4gdGhlIGZvcm1hdCBzZWxlY3RlZCBpbiBpbnB1dE1hc2tcbiAgICBjb25zdCB2YWx1ZSA9IGAke2V2ZW50VGFyZ2V0LmlucHV0bWFzay51bmRvVmFsdWV9YFxuXG4gICAgLy8gVXNlIHBhcnNlcmZ1bmN0aW9uIGZyb20gaW5wdXRNYXNrIHRvIHBhcnNlIHRvIGEgZGF0ZSBvYmplY3Qgc2luY2UgdmFsdWUgY2FuIGJlIGluIG11bHRpcGxlIGZvcm1hdHNcbiAgICAvLyBUaGVuIG9udHJvbCB2YWx1ZSBhY2Nlc3NvciB3aWxsIGVuc3VyZSBjb3JyZWN0IGZvcm1hdHRpbmcgb2Ygc3RhdGVcbiAgICBjb25zdCBwYXJzZWREYXRlID0gRGF0ZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50LnBhcnNlRGF0ZUxpa2UoXG4gICAgICB0aGlzLmRhdGVJbnB1dE1hc2sucGFyc2VyISh2YWx1ZSksXG4gICAgKVxuXG4gICAgdGhpcy5zdGF0ZSA9IHBhcnNlZERhdGVcblxuICAgIC8vIGVtaXQgcGFyc2VkIGRhdGVcbiAgICB0aGlzLm9uQ2hhbmdlKHBhcnNlZERhdGUpXG4gICAgdGhpcy5vblRvdWNoZWQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBMaXN0ZW4gdG8gJ2VzYycga2V5cHJlc3MgYW5kIGNsb3NlcyBkYXRlcGlja2VyIGlmIG9wZW4uXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAga2V5TGlzdGVuZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZUNhbGVuZGFyT25Fc2NhcGUgJiYgZXZlbnQua2V5ID09PSAnRXNjYXBlJylcbiAgICAgIHRoaXMuc2V0U2hvd24oZmFsc2UpXG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHRvZ2dsZURhdGVwaWNrZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTaG93bighdGhpcy5zaG93bilcbiAgfVxuXG4gIC8qKiBUbyBleHRlcm5hbGx5IHRyaWdnZXIgdGhlIGRhdGVwaWNrZXIgdG8gY2xvc2UuICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U2hvd24oZmFsc2UpXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzaG93biBzdGF0ZSBvZiB0aGUgZGF0ZXBpY2tlciBwb3B1cC4gSWYgdHJ1ZSB0aGUgcG9wdXAgd2lsbCBiZSB2aXNpYmxlLlxuICAgKiBJZiB0aGUgc3RhdGUgaXMgc2V0IHRvIGZhbHNlLCBjYWxsIG9uVG91Y2hlZCB0byBub3RpZnkgYW55IHN0YXRlIGxpc3RlbmVyc1xuICAgKiBAcGFyYW0gc3RhdGUgdGhlIHNob3duIHN0YXRlIHdoaWNoIHRvIHNldC5cbiAgICovXG4gIHByaXZhdGUgc2V0U2hvd24oc3RhdGUgPSB0cnVlKTogdm9pZCB7XG4gICAgdGhpcy5zaG93biA9IHN0YXRlXG4gICAgaWYgKCF0aGlzLnNob3duKSB7XG4gICAgICAvLyBpZiBzaG93biBpcyBzZXQgdG8gZmFsc2UsIHN0b3AgbGlzdGVuaW5nIHRvIGNsaWNrc1xuICAgICAgdGhpcy5kYXRlcGlja2VyQ2xvc2VkJC5uZXh0KHRydWUpXG4gICAgICByZXR1cm4gdGhpcy5vblRvdWNoZWQoKVxuICAgIH1cbiAgICAvLyBpZiBzaG93biBpcyBzZXQgdG8gdHJ1ZSwgcmVzZXQgdW5zdWJzY3JpYmUgdmFyaWFibGVcbiAgICB0aGlzLmRhdGVwaWNrZXJDbG9zZWQkLm5leHQoZmFsc2UpXG5cbiAgICAvLyBzdGFydCBsaXN0ZW4gdG8gc2Nyb2xsIGlmIGNsb3NlT25TY3JvbGwgaXMgZW5hYmxlZFxuICAgIGlmICh0aGlzLmNsb3NlT25TY3JvbGwpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnRTY3JvbGwkLnBpcGUodGFrZVVudGlsKHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgLy8gaWYgZG9jdW1lbnQgc3RhcnRzIHNjcm9sbGluZywgY2xvc2UgZGF0ZXBpY2tlclxuICAgICAgICAgIHJldHVybiB0aGlzLnNldFNob3duKGZhbHNlKVxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9XG5cbiAgICAvLyBzdGFydCBsaXN0ZW5pbmcgZm9yIGNsaWNrcyBvdXRzaWRlIHRoZSBjb21wb25lbnRcbiAgICB0aGlzLmRvY3VtZW50Q2xpY2skLnBpcGUodGFrZVVudGlsKHRoaXMuZGF0ZXBpY2tlckNsb3NlZCQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAvLyBjbGlja2luZyBvbiBhIGdyYXkgZGF0ZSBjYXVzZXMgdGhlIGRhdGVwaWNrZXIgdG8gcmVsb2FkIHRoZSBjYWxlbmRhciBkYXRlcyxcbiAgICAgICAgLy8gYW5kIHRoZSBidXR0b24gZWxlbWVudCBjbGlja2VkIHdpbGwgbm8gbG9uZ2VyIGJlIGNvbnNpZGVyZWQgYXMgYSBjaGlsZCBvZiB0aGUgZGF0ZXBpY2tlci5cbiAgICAgICAgLy8gYnV0IHRoZSBldmVudCB0YXJnZXQgcGF0aCB3aWxsIHN0aWxsIGNvbnRhaW4gdGhlIHBhcmVudCBlbGVtZW50XG4gICAgICAgIC8vIGlmIHRhcmdldCBoYXMgZGF0ZXBpY2tlciBwYXJlbnQsIGtlZXAgbGlzdGVuaW5nXG4gICAgICAgIGNvbnN0IGV2ZW50UGF0aCA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpXG4gICAgICAgIGNvbnN0IGhhc0RhdGVwaWNrZXJQYXJlbnQgPSAhIWV2ZW50UGF0aC5maW5kKFxuICAgICAgICAgIChlKSA9PiBlID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgKVxuICAgICAgICBpZiAoaGFzRGF0ZXBpY2tlclBhcmVudCkgcmV0dXJuXG4gICAgICAgIC8vIGVsc2UgdGhlIGNsaWNrIGlzIGNvbnNpZGVyZWQgdG8gYmUgb3V0c2lkZSwgY2xvc2UgZGF0ZXBpY2tlclxuICAgICAgICByZXR1cm4gdGhpcy5zZXRTaG93bihmYWxzZSlcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxufVxuIiwiPCEtLSBMQUJFTCAtLT5cbjxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0OyByZWFkOiBzY29wZVwiPlxuICA8bGFiZWxcbiAgICBbaWRdPVwiaWQgKyAnLWxhYmVsJ1wiXG4gICAgY2xhc3M9XCJnZHMtZmllbGQtbGFiZWwgaGlkZS1pZi1lbXB0eVwiXG4gICAgW2F0dHIuZm9yXT1cImlkICsgJy1pbnB1dCdcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsQ29udGVudFRwbCB8fCBiYXNpY0xhYmVsQ29udGVudFRwbFwiXG4gICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNiYXNpY0xhYmVsQ29udGVudFRwbD5cbiAgICAgIDwhLS0gdG8gdHJpZ2dlciBjc3M6ZW1wdHkgaWYgbm8gbGFiZWwgd2FzIGFkZGVkIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgKm5nSWY9XCJvcHRpb25hbCA9PT0gdHJ1ZSB8fCAocmVxdWlyZWQgIT09IHRydWUgJiYgb3B0aW9uYWwgIT09IGZhbHNlKVwiXG4gICAgICAgICAgY2xhc3M9XCJnZHMtZmllbGQtbGFiZWwtLW9wdGlvbmFsXCJcbiAgICAgICAgPlxuICAgICAgICAgICh7eyB0KCdsYWJlbC5vcHRpb25hbCcpIH19KVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2xhYmVsPlxuXG4gIDwhLS0gREVTQ1JJUFRJT04gLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cImdkcy1maWVsZC1sYWJlbC0tc21hbGwgZGVzY3JpcHRpb24gaGlkZS1pZi1lbXB0eVwiXG4gICAgKm5nSWY9XCJkZXNjcmlwdGlvblwiXG4gID5cbiAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICA8L2Rpdj5cblxuICA8IS0tIExPQ0tFRCBJTlBVVCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvY2tlZFwiPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgbG9ja2VkVHBsIHx8IGRlZmF1bHRMb2NrZWRUcGw7XG4gICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBzdGF0ZSB9XG4gICAgICBcIlxuICAgID48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExvY2tlZFRwbD5cbiAgICAgIDxkaXZcbiAgICAgICAgW2lkXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICBjbGFzcz1cIm5nZ3YtZmllbGQtLWxvY2tlZFwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLnZhbHVlXT1cInN0YXRlXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhc3RhdGVcIiBjbGFzcz1cInVuc2V0LXN0YXRlXCI+LTwvc3Bhbj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXRlXCI+XG4gICAgICAgICAge3sgc3RhdGUgfCBuZ2d2SW5wdXRNYXNrRm9ybWF0OiBkYXRlSW5wdXRNYXNrIH19XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBJTlBVVCBXUkFQUEVSIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWxvY2tlZFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZmllbGQtd3JhcFwiXG4gICAgICBbY2xhc3Mubmdndi1maWVsZC0tZXJyb3JdPVwiaW52YWxpZFwiXG4gICAgICAqbmdJZj1cInNob3dJbnB1dCQgfCBhc3luY1wiXG4gICAgPlxuICAgICAgPCEtLSBJTlBVVCBGSUVMRCAtLT5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgW2lkXT1cImlkICsgJy1pbnB1dCdcIlxuICAgICAgICBjbGFzcz1cIm5nZ3YtZmllbGQtZGF0ZVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWQgfHwgbnVsbFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkT25seV09XCJyZWFkb25seVwiXG4gICAgICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIFtuZ2d2SW5wdXRNYXNrXT1cImRhdGVJbnB1dE1hc2tcIlxuICAgICAgICBbdmFsdWVdPVwic3RhdGVcIlxuICAgICAgICB0aXRsZT1cIlwiXG4gICAgICAgIChjaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAvPlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJ0b2dnbGUgY2FsZW5kYXJcIlxuICAgICAgICAjdG9nZ2xlQ2FsZW5kYXJCdXR0b25cbiAgICAgICAgY2xhc3M9XCJuZ2d2LWJ1dHRvbi1kYXRlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGRhdGEtdGhvb2s9XCJ0b2dnbGUtY2FsZW5kYXItYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURhdGVwaWNrZXIoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoc2l6ZSA9PT0gJ3NtYWxsJykge1xuICAgICAgICAgIDxnZHMtaWNvbi1jYWxlbmRhciAqbmdnQ29yZUVsZW1lbnQgc2l6ZT1cIjE2cHhcIj48L2dkcy1pY29uLWNhbGVuZGFyPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChzaXplID09PSAnbGFyZ2UnKSB7XG4gICAgICAgICAgPGdkcy1pY29uLWNhbGVuZGFyICpuZ2dDb3JlRWxlbWVudCBzaXplPVwiMjBweFwiPjwvZ2RzLWljb24tY2FsZW5kYXI+XG4gICAgICAgIH1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBEQVRFUElDS0VSIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJuZ2d2LWRhdGVwaWNrZXJcIiAqbmdJZj1cInNob3duXCI+XG4gICAgICA8bmdndi1kYXRlcGlja2VyXG4gICAgICAgICNpbnB1dFxuICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgW2Rpc2FibGVEYXRlc109XCJkaXNhYmxlRGF0ZXNcIlxuICAgICAgICBbZGlzYWJsZVdlZWtEYXlzXT1cImRpc2FibGVXZWVrRGF5c1wiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzdGF0ZVwiXG4gICAgICAgIFtsb2NhbGVdPVwibG9jYWxlXCJcbiAgICAgICAgW21pbkNhbGVuZGFyUm93c109XCJtaW5Sb3dzXCJcbiAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcbiAgICAgICAgW2ZpcnN0VmFsaWRdPVwiZmlyc3RWYWxpZFwiXG4gICAgICAgIFtsYXN0VmFsaWRdPVwibGFzdFZhbGlkXCJcbiAgICAgICAgW2Nsb3NpbmdUaW1lXT1cImNsb3NpbmdUaW1lXCJcbiAgICAgICAgW2R5bmFtaWNQb3NpdGlvbl09XCJkeW5hbWljUG9zaXRpb25cIlxuICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgKG5ndkRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nZ3YtZGF0ZXBpY2tlcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRVJST1JTIC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGludmFsaWQgJiZcbiAgICAgICAgKGVycm9yIHx8IG5nQ29udHJvbD8uaW52YWxpZCkgJiZcbiAgICAgICAgKCFlcnJvckxpc3QgfHwgIWVycm9yTGlzdC5sZW5ndGgpXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImdkcy1maWVsZC1ub3RpY2UgZ2RzLWZpZWxkLW5vdGljZS0tZXJyb3JcIlxuICAgICAgICBbYXR0ci5mb3JdPVwiaWQgKyAnLWlucHV0J1wiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItaXRlbVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItaXRlbS0taWNvblwiPlxuICAgICAgICAgICAgPGdkcy1pY29uLXRyaWFuZ2xlLWV4Y2xhbWF0aW9uXG4gICAgICAgICAgICAgICpuZ2dDb3JlRWxlbWVudFxuICAgICAgICAgICAgICBbc29saWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHNpemU9XCIxNnB4XCJcbiAgICAgICAgICAgID48L2dkcy1pY29uLXRyaWFuZ2xlLWV4Y2xhbWF0aW9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJlcnJvcjsgZWxzZSBlcnJvcnNSZWZcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1pdGVtLS10ZXh0XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2sgKyAnLWVycm9ybGFiZWwnXCJcbiAgICAgICAgICAgID57eyBlcnJvciB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vycm9yc1JlZj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICpuZ0lmPVwiZmlyc3RFcnJvciBhcyBlcnJvclwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXJyb3ItaXRlbS0tdGV4dFwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2sgKyAnLWVycm9ybGFiZWwnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdCgnZXJyb3IuZmllbGQnICsgZXJyb3I/LmNvZGUsIGVycm9yPy5wYXJhbXMpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvckxpc3QgPz8gW11cIj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImdkcy1maWVsZC1ub3RpY2UgZ2RzLWZpZWxkLW5vdGljZS0tZXJyb3JcIlxuICAgICAgICBbYXR0ci5mb3JdPVwiaWQgKyAnLWlucHV0J1wiXG4gICAgICAgICpuZ0lmPVwiaW52YWxpZCAmJiBlcnJvclwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItaXRlbVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItaXRlbS0taWNvblwiPlxuICAgICAgICAgICAgPGdkcy1pY29uLXRyaWFuZ2xlLWV4Y2xhbWF0aW9uXG4gICAgICAgICAgICAgICpuZ2dDb3JlRWxlbWVudFxuICAgICAgICAgICAgICBbc29saWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHNpemU9XCIxNnB4XCJcbiAgICAgICAgICAgID48L2dkcy1pY29uLXRyaWFuZ2xlLWV4Y2xhbWF0aW9uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvci1pdGVtLS10ZXh0XCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2sgKyAnLWVycm9ybGFiZWwnXCJcbiAgICAgICAgICAgID57eyBlcnJvciB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { NggCoreWrapperModule } from '@sebgroup/green-angular/src/lib/shared';\nimport { NggvInputMaskModule } from '@sebgroup/green-angular/src/v-angular/input-mask';\nimport { CalendarControlComponent } from './components/calendar-control/calendar-control.component';\nimport { CalendarComponent } from './components/calendar/calendar.component';\nimport { DateInputComponent } from './components/date-input/date-input.component';\nimport { DatepickerComponent } from './components/datepicker/datepicker.component';\nimport { CalendarDateDirective } from './directives/calendar-date.directive';\nimport { DateThookPipe } from './pipes/date-thook.pipe';\nimport { IsDisabledPipe } from './pipes/is-disabled.pipe';\nimport { MatchesPipe } from './pipes/matches.pipe';\nimport * as i0 from \"@angular/core\";\nexport class NggvDatepickerModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDatepickerModule, declarations: [CalendarComponent,\n CalendarDateDirective,\n IsDisabledPipe,\n DateThookPipe,\n CalendarControlComponent,\n DatepickerComponent,\n DateInputComponent,\n MatchesPipe], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslocoModule,\n NggvInputMaskModule,\n NggCoreWrapperModule], exports: [DateInputComponent, DatepickerComponent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDatepickerModule, imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslocoModule,\n NggvInputMaskModule,\n NggCoreWrapperModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NggvDatepickerModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n CalendarComponent,\n CalendarDateDirective,\n IsDisabledPipe,\n DateThookPipe,\n CalendarControlComponent,\n DatepickerComponent,\n DateInputComponent,\n MatchesPipe,\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslocoModule,\n NggvInputMaskModule,\n NggCoreWrapperModule,\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n exports: [DateInputComponent, DatepickerComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUE7QUFDdEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMERBQTBELENBQUE7QUFDbkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUE7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOENBQThDLENBQUE7QUFDakYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOENBQThDLENBQUE7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7O0FBd0JsRCxNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQixpQkFwQjdCLGlCQUFpQjtZQUNqQixxQkFBcUI7WUFDckIsY0FBYztZQUNkLGFBQWE7WUFDYix3QkFBd0I7WUFDeEIsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixXQUFXLGFBR1gsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixvQkFBb0IsYUFHWixrQkFBa0IsRUFBRSxtQkFBbUI7K0dBRXRDLG9CQUFvQixZQVY3QixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YsbUJBQW1CO1lBQ25CLG9CQUFvQjs7MkZBS1gsb0JBQW9CO2tCQXRCaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixXQUFXO3FCQUNaO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUM7aUJBQ25EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFRyYW5zbG9jb01vZHVsZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbydcblxuaW1wb3J0IHsgTmdnQ29yZVdyYXBwZXJNb2R1bGUgfSBmcm9tICdAc2ViZ3JvdXAvZ3JlZW4tYW5ndWxhci9zcmMvbGliL3NoYXJlZCdcbmltcG9ydCB7IE5nZ3ZJbnB1dE1hc2tNb2R1bGUgfSBmcm9tICdAc2ViZ3JvdXAvZ3JlZW4tYW5ndWxhci9zcmMvdi1hbmd1bGFyL2lucHV0LW1hc2snXG5pbXBvcnQgeyBDYWxlbmRhckNvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2FsZW5kYXItY29udHJvbC9jYWxlbmRhci1jb250cm9sLmNvbXBvbmVudCdcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudCdcbmltcG9ydCB7IERhdGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50J1xuaW1wb3J0IHsgRGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50J1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NhbGVuZGFyLWRhdGUuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRGF0ZVRob29rUGlwZSB9IGZyb20gJy4vcGlwZXMvZGF0ZS10aG9vay5waXBlJ1xuaW1wb3J0IHsgSXNEaXNhYmxlZFBpcGUgfSBmcm9tICcuL3BpcGVzL2lzLWRpc2FibGVkLnBpcGUnXG5pbXBvcnQgeyBNYXRjaGVzUGlwZSB9IGZyb20gJy4vcGlwZXMvbWF0Y2hlcy5waXBlJ1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBDYWxlbmRhckNvbXBvbmVudCxcbiAgICBDYWxlbmRhckRhdGVEaXJlY3RpdmUsXG4gICAgSXNEaXNhYmxlZFBpcGUsXG4gICAgRGF0ZVRob29rUGlwZSxcbiAgICBDYWxlbmRhckNvbnRyb2xDb21wb25lbnQsXG4gICAgRGF0ZXBpY2tlckNvbXBvbmVudCxcbiAgICBEYXRlSW5wdXRDb21wb25lbnQsXG4gICAgTWF0Y2hlc1BpcGUsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBUcmFuc2xvY29Nb2R1bGUsXG4gICAgTmdndklucHV0TWFza01vZHVsZSxcbiAgICBOZ2dDb3JlV3JhcHBlck1vZHVsZSxcbiAgXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICBleHBvcnRzOiBbRGF0ZUlucHV0Q29tcG9uZW50LCBEYXRlcGlja2VyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmdndkRhdGVwaWNrZXJNb2R1bGUge31cbiJdfQ==","/*\n * Public API Surface of date-picker\n */\nexport * from './date-control-value-accessor/date-control-value-accessor.component';\nexport * from './components/calendar/calendar.component';\nexport * from './components/calendar-control/calendar-control.component';\nexport * from './components/date-input/date-input.component';\nexport * from './components/datepicker/datepicker.component';\nexport * from './directives/calendar-date.directive';\nexport * from './pipes/is-disabled.pipe';\nexport * from './pipes/matches.pipe';\nexport * from './models/dates';\nexport * from './datepicker.models';\nexport * from './datepicker.globals';\nexport * from './datepicker.module';\nexport * from './datepicker.utils';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxxRUFBcUUsQ0FBQTtBQUNuRixjQUFjLDBDQUEwQyxDQUFBO0FBQ3hELGNBQWMsMERBQTBELENBQUE7QUFDeEUsY0FBYyw4Q0FBOEMsQ0FBQTtBQUM1RCxjQUFjLDhDQUE4QyxDQUFBO0FBQzVELGNBQWMsc0NBQXNDLENBQUE7QUFDcEQsY0FBYywwQkFBMEIsQ0FBQTtBQUN4QyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgZGF0ZS1waWNrZXJcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IvZGF0ZS1jb250cm9sLXZhbHVlLWFjY2Vzc29yLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvY2FsZW5kYXItY29udHJvbC9jYWxlbmRhci1jb250cm9sLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9kYXRlLWlucHV0L2RhdGUtaW5wdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvY2FsZW5kYXItZGF0ZS5kaXJlY3RpdmUnXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2lzLWRpc2FibGVkLnBpcGUnXG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL21hdGNoZXMucGlwZSdcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2RhdGVzJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlcGlja2VyLm1vZGVscydcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZXBpY2tlci5nbG9iYWxzJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRlcGlja2VyLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZXBpY2tlci51dGlscydcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ViZ3JvdXAtZ3JlZW4tYW5ndWxhci1zcmMtdi1hbmd1bGFyLWRhdGVwaWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9kYXRlcGlja2VyL3NlYmdyb3VwLWdyZWVuLWFuZ3VsYXItc3JjLXYtYW5ndWxhci1kYXRlcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i2.CalendarDateDirective","i3.IsDisabledPipe","i4.DateThookPipe","i5.MatchesPipe","i2","i2.CalendarComponent","i3.CalendarControlComponent","i3","i5","i6.DatepickerComponent"],"mappings":"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I,YAAY,EAAE,YAAY;AAC9B,IAAI,YAAY,EAAE,YAAY;AAC9B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,YAAY,EAAE,YAAY;AAC9B,IAAI,YAAY,EAAE,YAAY;AAC9B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,EAAE,EAAE,YAAY;AACpB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,YAAY,EAAE,YAAY;AAC9B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,aAAa;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,aAAa;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,YAAY,EAAE,YAAY;AAC9B,IAAI,YAAY,EAAE,YAAY;AAC9B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,aAAa;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,YAAY,EAAE,YAAY;AAC9B,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,QAAQ,EAAE,YAAY;AAC1B,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,YAAY;AACzB,IAAI,OAAO,EAAE,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"}