@coreui/angular-pro 4.1.0-next.3 → 4.2.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/README.md +174 -154
  2. package/esm2020/lib/accordion/accordion/accordion.component.mjs +4 -4
  3. package/esm2020/lib/accordion/accordion-button/accordion-button.directive.mjs +4 -4
  4. package/esm2020/lib/accordion/accordion-item/accordion-item.component.mjs +4 -4
  5. package/esm2020/lib/accordion/accordion.module.mjs +8 -10
  6. package/esm2020/lib/accordion/accordion.service.mjs +4 -4
  7. package/esm2020/lib/alert/alert-heading.directive.mjs +4 -4
  8. package/esm2020/lib/alert/alert-link.directive.mjs +4 -4
  9. package/esm2020/lib/alert/alert.component.mjs +11 -11
  10. package/esm2020/lib/alert/alert.module.mjs +6 -8
  11. package/esm2020/lib/avatar/avatar.component.mjs +5 -5
  12. package/esm2020/lib/avatar/avatar.module.mjs +5 -7
  13. package/esm2020/lib/backdrop/backdrop.service.mjs +4 -4
  14. package/esm2020/lib/badge/badge.component.mjs +5 -5
  15. package/esm2020/lib/badge/badge.module.mjs +5 -7
  16. package/esm2020/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +5 -5
  17. package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +4 -4
  18. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +7 -7
  19. package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +4 -4
  20. package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +5 -5
  21. package/esm2020/lib/button/button-close.directive.mjs +4 -4
  22. package/esm2020/lib/button/button.directive.mjs +4 -4
  23. package/esm2020/lib/button/button.module.mjs +5 -7
  24. package/esm2020/lib/button-group/button-group/button-group.component.mjs +4 -4
  25. package/esm2020/lib/button-group/button-group.module.mjs +5 -7
  26. package/esm2020/lib/button-group/button-toolbar/button-toolbar.component.mjs +4 -4
  27. package/esm2020/lib/calendar/calendar/calendar-class-view.pipe.mjs +4 -4
  28. package/esm2020/lib/calendar/calendar/calendar.component.mjs +7 -7
  29. package/esm2020/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +4 -4
  30. package/esm2020/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +4 -4
  31. package/esm2020/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +4 -4
  32. package/esm2020/lib/calendar/calendar-month/calendar-day.directive.mjs +4 -4
  33. package/esm2020/lib/calendar/calendar-month/calendar-day.pipe.mjs +4 -4
  34. package/esm2020/lib/calendar/calendar-month/calendar-month.component.mjs +9 -9
  35. package/esm2020/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +4 -4
  36. package/esm2020/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +4 -4
  37. package/esm2020/lib/calendar/calendar.module.mjs +6 -8
  38. package/esm2020/lib/calendar/calendar.service.mjs +8 -6
  39. package/esm2020/lib/calendar/calendar.utils.mjs +5 -2
  40. package/esm2020/lib/callout/callout.component.mjs +4 -4
  41. package/esm2020/lib/callout/callout.module.mjs +5 -7
  42. package/esm2020/lib/card/card-body.component.mjs +4 -4
  43. package/esm2020/lib/card/card-footer.component.mjs +4 -4
  44. package/esm2020/lib/card/card-group.component.mjs +4 -4
  45. package/esm2020/lib/card/card-header-actions.component.mjs +4 -4
  46. package/esm2020/lib/card/card-header.component.mjs +4 -4
  47. package/esm2020/lib/card/card-img-overlay/card-img-overlay.component.mjs +4 -4
  48. package/esm2020/lib/card/card-img.directive.mjs +4 -4
  49. package/esm2020/lib/card/card-link.directive.mjs +4 -4
  50. package/esm2020/lib/card/card-subtitle.directive.mjs +4 -4
  51. package/esm2020/lib/card/card-text.directive.mjs +4 -4
  52. package/esm2020/lib/card/card-title.directive.mjs +4 -4
  53. package/esm2020/lib/card/card.component.mjs +4 -4
  54. package/esm2020/lib/card/card.module.mjs +5 -7
  55. package/esm2020/lib/carousel/carousel/carousel.component.mjs +4 -4
  56. package/esm2020/lib/carousel/carousel-caption/carousel-caption.component.mjs +4 -4
  57. package/esm2020/lib/carousel/carousel-control/carousel-control.component.mjs +5 -5
  58. package/esm2020/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +5 -5
  59. package/esm2020/lib/carousel/carousel-inner/carousel-inner.component.mjs +4 -4
  60. package/esm2020/lib/carousel/carousel-item/carousel-item.component.mjs +4 -4
  61. package/esm2020/lib/carousel/carousel-state.mjs +4 -4
  62. package/esm2020/lib/carousel/carousel.config.mjs +4 -4
  63. package/esm2020/lib/carousel/carousel.module.mjs +5 -5
  64. package/esm2020/lib/carousel/carousel.service.mjs +4 -4
  65. package/esm2020/lib/collapse/collapse.animations.mjs +5 -5
  66. package/esm2020/lib/collapse/collapse.directive.mjs +4 -4
  67. package/esm2020/lib/collapse/collapse.module.mjs +5 -7
  68. package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +28 -21
  69. package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +12 -14
  70. package/esm2020/lib/date-range-picker/end-date.directive.mjs +4 -4
  71. package/esm2020/lib/date-range-picker/start-date.directive.mjs +4 -4
  72. package/esm2020/lib/dropdown/dropdown/dropdown.component.mjs +13 -9
  73. package/esm2020/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +4 -4
  74. package/esm2020/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +4 -4
  75. package/esm2020/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +4 -4
  76. package/esm2020/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +4 -4
  77. package/esm2020/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +4 -4
  78. package/esm2020/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +4 -4
  79. package/esm2020/lib/dropdown/dropdown.module.mjs +6 -8
  80. package/esm2020/lib/dropdown/dropdown.service.mjs +4 -4
  81. package/esm2020/lib/element-cover/element-cover.component.mjs +6 -6
  82. package/esm2020/lib/element-cover/element-cover.module.mjs +6 -8
  83. package/esm2020/lib/footer/footer.component.mjs +4 -4
  84. package/esm2020/lib/footer/footer.module.mjs +5 -7
  85. package/esm2020/lib/form/form/form.directive.mjs +4 -4
  86. package/esm2020/lib/form/form-check/form-check-input.directive.mjs +4 -4
  87. package/esm2020/lib/form/form-check/form-check-label.directive.mjs +4 -4
  88. package/esm2020/lib/form/form-check/form-check.component.mjs +4 -4
  89. package/esm2020/lib/form/form-control/form-control.directive.mjs +4 -4
  90. package/esm2020/lib/form/form-feedback/form-feedback.component.mjs +4 -4
  91. package/esm2020/lib/form/form-floating/form-floating.directive.mjs +4 -4
  92. package/esm2020/lib/form/form-label/form-label.directive.mjs +4 -4
  93. package/esm2020/lib/form/form-select/form-select.directive.mjs +4 -4
  94. package/esm2020/lib/form/form-text/form-text.directive.mjs +4 -4
  95. package/esm2020/lib/form/form.module.mjs +5 -5
  96. package/esm2020/lib/form/input-group/input-group.component.mjs +4 -4
  97. package/esm2020/lib/form/input-group-text/input-group-text.directive.mjs +4 -4
  98. package/esm2020/lib/grid/col.component.mjs +4 -4
  99. package/esm2020/lib/grid/col.directive.mjs +4 -4
  100. package/esm2020/lib/grid/container.component.mjs +4 -4
  101. package/esm2020/lib/grid/grid.module.mjs +5 -5
  102. package/esm2020/lib/grid/gutter.directive.mjs +4 -4
  103. package/esm2020/lib/grid/row.component.mjs +5 -5
  104. package/esm2020/lib/grid/row.directive.mjs +4 -4
  105. package/esm2020/lib/header/header/header.component.mjs +4 -4
  106. package/esm2020/lib/header/header-brand/header-brand.component.mjs +4 -4
  107. package/esm2020/lib/header/header-divider/header-divider.component.mjs +4 -4
  108. package/esm2020/lib/header/header-nav/header-nav.component.mjs +5 -5
  109. package/esm2020/lib/header/header-text/header-text.component.mjs +4 -4
  110. package/esm2020/lib/header/header-toggler/header-toggler.directive.mjs +4 -4
  111. package/esm2020/lib/header/header.module.mjs +5 -7
  112. package/esm2020/lib/image/img.directive.mjs +4 -4
  113. package/esm2020/lib/image/img.module.mjs +5 -7
  114. package/esm2020/lib/list-group/list-group-item.directive.mjs +4 -4
  115. package/esm2020/lib/list-group/list-group.directive.mjs +4 -4
  116. package/esm2020/lib/list-group/list-group.module.mjs +5 -7
  117. package/esm2020/lib/loading-button/loading-button.component.mjs +5 -5
  118. package/esm2020/lib/loading-button/loading-button.module.mjs +6 -8
  119. package/esm2020/lib/modal/modal/modal.component.mjs +7 -7
  120. package/esm2020/lib/modal/modal-body/modal-body.component.mjs +4 -4
  121. package/esm2020/lib/modal/modal-content/modal-content.component.mjs +4 -4
  122. package/esm2020/lib/modal/modal-dialog/modal-dialog.component.mjs +4 -4
  123. package/esm2020/lib/modal/modal-dismiss/modal-toggle.directive.mjs +4 -4
  124. package/esm2020/lib/modal/modal-footer/modal-footer.component.mjs +4 -4
  125. package/esm2020/lib/modal/modal-header/modal-header.component.mjs +4 -4
  126. package/esm2020/lib/modal/modal-title/modal-title.directive.mjs +4 -4
  127. package/esm2020/lib/modal/modal.module.mjs +7 -9
  128. package/esm2020/lib/modal/modal.service.mjs +4 -4
  129. package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +8 -8
  130. package/esm2020/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +4 -4
  131. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +4 -4
  132. package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +6 -6
  133. package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +4 -4
  134. package/esm2020/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +4 -4
  135. package/esm2020/lib/multi-select/multi-select.module.mjs +5 -5
  136. package/esm2020/lib/multi-select/multi-select.service.mjs +4 -4
  137. package/esm2020/lib/nav/nav-item.component.mjs +4 -4
  138. package/esm2020/lib/nav/nav-link.directive.mjs +4 -4
  139. package/esm2020/lib/nav/nav.component.mjs +4 -4
  140. package/esm2020/lib/nav/nav.module.mjs +5 -7
  141. package/esm2020/lib/navbar/navbar-brand/navbar-brand.directive.mjs +4 -4
  142. package/esm2020/lib/navbar/navbar-nav/navbar-nav.component.mjs +4 -4
  143. package/esm2020/lib/navbar/navbar-text/navbar-text.component.mjs +4 -4
  144. package/esm2020/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +4 -4
  145. package/esm2020/lib/navbar/navbar.component.mjs +5 -5
  146. package/esm2020/lib/navbar/navbar.module.mjs +6 -8
  147. package/esm2020/lib/offcanvas/offcanvas/offcanvas.component.mjs +5 -5
  148. package/esm2020/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +4 -4
  149. package/esm2020/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +5 -5
  150. package/esm2020/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +4 -4
  151. package/esm2020/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +4 -4
  152. package/esm2020/lib/offcanvas/offcanvas.module.mjs +7 -9
  153. package/esm2020/lib/offcanvas/offcanvas.service.mjs +4 -4
  154. package/esm2020/lib/pagination/page-item/page-item.component.mjs +4 -4
  155. package/esm2020/lib/pagination/page-item/page-item.directive.mjs +4 -4
  156. package/esm2020/lib/pagination/page-link/page-link.directive.mjs +4 -4
  157. package/esm2020/lib/pagination/pagination/pagination.component.mjs +5 -5
  158. package/esm2020/lib/pagination/pagination.module.mjs +5 -7
  159. package/esm2020/lib/placeholder/placeholder-animation.directive.mjs +4 -4
  160. package/esm2020/lib/placeholder/placeholder.directive.mjs +4 -4
  161. package/esm2020/lib/placeholder/placeholder.module.mjs +5 -7
  162. package/esm2020/lib/popover/popover/popover.component.mjs +4 -4
  163. package/esm2020/lib/popover/popover.directive.mjs +4 -4
  164. package/esm2020/lib/popover/popover.module.mjs +5 -7
  165. package/esm2020/lib/progress/progress-bar.component.mjs +4 -4
  166. package/esm2020/lib/progress/progress.component.mjs +4 -4
  167. package/esm2020/lib/progress/progress.module.mjs +5 -7
  168. package/esm2020/lib/services/class-toggle.service.mjs +4 -4
  169. package/esm2020/lib/services/intersection.service.mjs +4 -4
  170. package/esm2020/lib/services/listeners.service.mjs +4 -4
  171. package/esm2020/lib/shared/html-attr.directive.mjs +4 -4
  172. package/esm2020/lib/shared/shared.module.mjs +5 -7
  173. package/esm2020/lib/shared/template-id.directive.mjs +4 -4
  174. package/esm2020/lib/sidebar/sidebar/sidebar.component.mjs +4 -4
  175. package/esm2020/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +4 -4
  176. package/esm2020/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +4 -4
  177. package/esm2020/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +5 -5
  178. package/esm2020/lib/sidebar/sidebar-header/sidebar-header.component.mjs +5 -5
  179. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +4 -4
  180. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +4 -4
  181. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +4 -4
  182. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +4 -4
  183. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +4 -4
  184. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +11 -11
  185. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +4 -4
  186. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +4 -4
  187. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +14 -14
  188. package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +7 -7
  189. package/esm2020/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +4 -4
  190. package/esm2020/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +4 -4
  191. package/esm2020/lib/sidebar/sidebar.module.mjs +9 -11
  192. package/esm2020/lib/sidebar/sidebar.service.mjs +4 -4
  193. package/esm2020/lib/smart-pagination/smart-pagination.component.mjs +4 -4
  194. package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +6 -8
  195. package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +18 -18
  196. package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +7 -7
  197. package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +8 -8
  198. package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +9 -9
  199. package/esm2020/lib/smart-table/smart-table.module.mjs +15 -17
  200. package/esm2020/lib/spinner/spinner.component.mjs +4 -4
  201. package/esm2020/lib/spinner/spinner.module.mjs +6 -8
  202. package/esm2020/lib/table/table-active.directive.mjs +4 -4
  203. package/esm2020/lib/table/table-color.directive.mjs +4 -4
  204. package/esm2020/lib/table/table.directive.mjs +4 -4
  205. package/esm2020/lib/table/table.module.mjs +5 -7
  206. package/esm2020/lib/tabs/tab-content/tab-content.component.mjs +4 -4
  207. package/esm2020/lib/tabs/tab-content-ref.directive.mjs +4 -4
  208. package/esm2020/lib/tabs/tab-pane/tab-pane.component.mjs +4 -4
  209. package/esm2020/lib/tabs/tab.service.mjs +4 -4
  210. package/esm2020/lib/tabs/tabs.module.mjs +6 -8
  211. package/esm2020/lib/time-picker/index.mjs +2 -0
  212. package/esm2020/lib/time-picker/public_api.mjs +3 -0
  213. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +103 -0
  214. package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +104 -0
  215. package/esm2020/lib/time-picker/time-picker.component.mjs +434 -0
  216. package/esm2020/lib/time-picker/time-picker.module.mjs +50 -0
  217. package/esm2020/lib/time-picker/time.utils.mjs +645 -0
  218. package/esm2020/lib/toast/toast/toast.component.mjs +10 -10
  219. package/esm2020/lib/toast/toast-body/toast-body.component.mjs +4 -4
  220. package/esm2020/lib/toast/toast-close.directive.mjs +4 -4
  221. package/esm2020/lib/toast/toast-header/toast-header.component.mjs +5 -5
  222. package/esm2020/lib/toast/toast.module.mjs +5 -5
  223. package/esm2020/lib/toast/toaster/toaster-host.directive.mjs +4 -4
  224. package/esm2020/lib/toast/toaster/toaster.component.mjs +4 -4
  225. package/esm2020/lib/toast/toaster/toaster.service.mjs +4 -4
  226. package/esm2020/lib/tooltip/tooltip/tooltip.component.mjs +4 -4
  227. package/esm2020/lib/tooltip/tooltip.directive.mjs +4 -4
  228. package/esm2020/lib/tooltip/tooltip.module.mjs +5 -7
  229. package/esm2020/lib/utilities/align.directive.mjs +4 -4
  230. package/esm2020/lib/utilities/bg-color.directive.mjs +4 -4
  231. package/esm2020/lib/utilities/border.directive.mjs +4 -4
  232. package/esm2020/lib/utilities/rounded.directive.mjs +4 -4
  233. package/esm2020/lib/utilities/text-color.directive.mjs +4 -4
  234. package/esm2020/lib/utilities/utilities.module.mjs +5 -7
  235. package/esm2020/lib/widget/widget-stat-a/widget-stat-a.component.mjs +7 -7
  236. package/esm2020/lib/widget/widget-stat-b/widget-stat-b.component.mjs +7 -7
  237. package/esm2020/lib/widget/widget-stat-c/widget-stat-c.component.mjs +7 -7
  238. package/esm2020/lib/widget/widget-stat-d/widget-stat-d.component.mjs +8 -8
  239. package/esm2020/lib/widget/widget-stat-e/widget-stat-e.component.mjs +7 -7
  240. package/esm2020/lib/widget/widget-stat-f/widget-stat-f.component.mjs +8 -8
  241. package/esm2020/lib/widget/widget.module.mjs +7 -9
  242. package/esm2020/public-api.mjs +2 -1
  243. package/fesm2015/coreui-angular-pro.mjs +2904 -1634
  244. package/fesm2015/coreui-angular-pro.mjs.map +1 -1
  245. package/fesm2020/coreui-angular-pro.mjs +3130 -1883
  246. package/fesm2020/coreui-angular-pro.mjs.map +1 -1
  247. package/{coreui-angular-pro.d.ts → index.d.ts} +0 -0
  248. package/lib/accordion/accordion/accordion.component.d.ts +1 -1
  249. package/lib/accordion/accordion-button/accordion-button.directive.d.ts +1 -1
  250. package/lib/accordion/accordion-item/accordion-item.component.d.ts +1 -1
  251. package/lib/alert/alert-heading.directive.d.ts +1 -1
  252. package/lib/alert/alert-link.directive.d.ts +1 -1
  253. package/lib/alert/alert.component.d.ts +1 -1
  254. package/lib/avatar/avatar.component.d.ts +1 -1
  255. package/lib/badge/badge.component.d.ts +1 -1
  256. package/lib/breadcrumb/breadcrumb/breadcrumb.component.d.ts +1 -1
  257. package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +1 -1
  258. package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.d.ts +1 -1
  259. package/lib/button/button-close.directive.d.ts +1 -1
  260. package/lib/button/button.directive.d.ts +1 -1
  261. package/lib/button-group/button-group/button-group.component.d.ts +1 -1
  262. package/lib/button-group/button-toolbar/button-toolbar.component.d.ts +1 -1
  263. package/lib/calendar/calendar/calendar-class-view.pipe.d.ts +1 -1
  264. package/lib/calendar/calendar/calendar.component.d.ts +1 -1
  265. package/lib/calendar/calendar-month/calendar-class-day.pipe.d.ts +1 -1
  266. package/lib/calendar/calendar-month/calendar-class-month.pipe.d.ts +1 -1
  267. package/lib/calendar/calendar-month/calendar-class-year.pipe.d.ts +1 -1
  268. package/lib/calendar/calendar-month/calendar-day.directive.d.ts +1 -1
  269. package/lib/calendar/calendar-month/calendar-day.pipe.d.ts +1 -1
  270. package/lib/calendar/calendar-month/calendar-month.component.d.ts +1 -1
  271. package/lib/calendar/calendar-month/calendar-weekday.pipe.d.ts +1 -1
  272. package/lib/calendar/calendar-navigation/calendar-navigation.component.d.ts +1 -1
  273. package/lib/calendar/calendar.utils.d.ts +3 -3
  274. package/lib/callout/callout.component.d.ts +1 -1
  275. package/lib/card/card-body.component.d.ts +1 -1
  276. package/lib/card/card-footer.component.d.ts +1 -1
  277. package/lib/card/card-group.component.d.ts +1 -1
  278. package/lib/card/card-header-actions.component.d.ts +1 -1
  279. package/lib/card/card-header.component.d.ts +1 -1
  280. package/lib/card/card-img-overlay/card-img-overlay.component.d.ts +1 -1
  281. package/lib/card/card-img.directive.d.ts +1 -1
  282. package/lib/card/card-link.directive.d.ts +1 -1
  283. package/lib/card/card-subtitle.directive.d.ts +1 -1
  284. package/lib/card/card-text.directive.d.ts +1 -1
  285. package/lib/card/card-title.directive.d.ts +1 -1
  286. package/lib/card/card.component.d.ts +1 -1
  287. package/lib/carousel/carousel/carousel.component.d.ts +1 -1
  288. package/lib/carousel/carousel-caption/carousel-caption.component.d.ts +1 -1
  289. package/lib/carousel/carousel-control/carousel-control.component.d.ts +1 -1
  290. package/lib/carousel/carousel-indicators/carousel-indicators.component.d.ts +1 -1
  291. package/lib/carousel/carousel-inner/carousel-inner.component.d.ts +1 -1
  292. package/lib/carousel/carousel-item/carousel-item.component.d.ts +1 -1
  293. package/lib/collapse/collapse.directive.d.ts +1 -1
  294. package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +5 -3
  295. package/lib/date-range-picker/end-date.directive.d.ts +1 -1
  296. package/lib/date-range-picker/start-date.directive.d.ts +1 -1
  297. package/lib/dropdown/dropdown/dropdown.component.d.ts +6 -4
  298. package/lib/dropdown/dropdown-close/dropdown-close.directive.d.ts +1 -1
  299. package/lib/dropdown/dropdown-divider/dropdown-divider.directive.d.ts +1 -1
  300. package/lib/dropdown/dropdown-header/dropdown-header.directive.d.ts +1 -1
  301. package/lib/dropdown/dropdown-item/dropdown-item-plain.directive.d.ts +1 -1
  302. package/lib/dropdown/dropdown-item/dropdown-item.directive.d.ts +1 -1
  303. package/lib/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +1 -1
  304. package/lib/element-cover/element-cover.component.d.ts +1 -1
  305. package/lib/footer/footer.component.d.ts +1 -1
  306. package/lib/form/form/form.directive.d.ts +1 -1
  307. package/lib/form/form-check/form-check-input.directive.d.ts +1 -1
  308. package/lib/form/form-check/form-check-label.directive.d.ts +1 -1
  309. package/lib/form/form-check/form-check.component.d.ts +1 -1
  310. package/lib/form/form-control/form-control.directive.d.ts +1 -1
  311. package/lib/form/form-feedback/form-feedback.component.d.ts +1 -1
  312. package/lib/form/form-floating/form-floating.directive.d.ts +1 -1
  313. package/lib/form/form-label/form-label.directive.d.ts +1 -1
  314. package/lib/form/form-select/form-select.directive.d.ts +1 -1
  315. package/lib/form/form-text/form-text.directive.d.ts +1 -1
  316. package/lib/form/input-group/input-group.component.d.ts +1 -1
  317. package/lib/form/input-group-text/input-group-text.directive.d.ts +1 -1
  318. package/lib/grid/col.component.d.ts +1 -1
  319. package/lib/grid/col.directive.d.ts +1 -1
  320. package/lib/grid/container.component.d.ts +1 -1
  321. package/lib/grid/gutter.directive.d.ts +1 -1
  322. package/lib/grid/row.component.d.ts +1 -1
  323. package/lib/grid/row.directive.d.ts +1 -1
  324. package/lib/header/header/header.component.d.ts +1 -1
  325. package/lib/header/header-brand/header-brand.component.d.ts +1 -1
  326. package/lib/header/header-divider/header-divider.component.d.ts +1 -1
  327. package/lib/header/header-nav/header-nav.component.d.ts +1 -1
  328. package/lib/header/header-text/header-text.component.d.ts +1 -1
  329. package/lib/header/header-toggler/header-toggler.directive.d.ts +1 -1
  330. package/lib/image/img.directive.d.ts +1 -1
  331. package/lib/list-group/list-group-item.directive.d.ts +1 -1
  332. package/lib/list-group/list-group.directive.d.ts +1 -1
  333. package/lib/loading-button/loading-button.component.d.ts +1 -1
  334. package/lib/modal/modal/modal.component.d.ts +1 -1
  335. package/lib/modal/modal-body/modal-body.component.d.ts +1 -1
  336. package/lib/modal/modal-content/modal-content.component.d.ts +1 -1
  337. package/lib/modal/modal-dialog/modal-dialog.component.d.ts +1 -1
  338. package/lib/modal/modal-dismiss/modal-toggle.directive.d.ts +1 -1
  339. package/lib/modal/modal-footer/modal-footer.component.d.ts +1 -1
  340. package/lib/modal/modal-header/modal-header.component.d.ts +1 -1
  341. package/lib/modal/modal-title/modal-title.directive.d.ts +1 -1
  342. package/lib/multi-select/multi-select/multi-select.component.d.ts +1 -1
  343. package/lib/multi-select/multi-select-native-select/multi-select-native-select.component.d.ts +1 -1
  344. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.d.ts +1 -1
  345. package/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.d.ts +1 -1
  346. package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +1 -1
  347. package/lib/multi-select/multi-select-tag/multi-select-tag.component.d.ts +1 -1
  348. package/lib/nav/nav-item.component.d.ts +1 -1
  349. package/lib/nav/nav-link.directive.d.ts +1 -1
  350. package/lib/nav/nav.component.d.ts +1 -1
  351. package/lib/navbar/navbar-brand/navbar-brand.directive.d.ts +1 -1
  352. package/lib/navbar/navbar-nav/navbar-nav.component.d.ts +1 -1
  353. package/lib/navbar/navbar-text/navbar-text.component.d.ts +1 -1
  354. package/lib/navbar/navbar-toggler/navbar-toggler.directive.d.ts +1 -1
  355. package/lib/navbar/navbar.component.d.ts +1 -1
  356. package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +1 -1
  357. package/lib/offcanvas/offcanvas-body/offcanvas-body.component.d.ts +1 -1
  358. package/lib/offcanvas/offcanvas-header/offcanvas-header.component.d.ts +1 -1
  359. package/lib/offcanvas/offcanvas-title/offcanvas-title.directive.d.ts +1 -1
  360. package/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.d.ts +1 -1
  361. package/lib/pagination/page-item/page-item.component.d.ts +1 -1
  362. package/lib/pagination/page-item/page-item.directive.d.ts +1 -1
  363. package/lib/pagination/page-link/page-link.directive.d.ts +1 -1
  364. package/lib/pagination/pagination/pagination.component.d.ts +1 -1
  365. package/lib/placeholder/placeholder-animation.directive.d.ts +1 -1
  366. package/lib/placeholder/placeholder.directive.d.ts +1 -1
  367. package/lib/popover/popover/popover.component.d.ts +1 -1
  368. package/lib/popover/popover.directive.d.ts +1 -1
  369. package/lib/progress/progress-bar.component.d.ts +1 -1
  370. package/lib/progress/progress.component.d.ts +1 -1
  371. package/lib/shared/html-attr.directive.d.ts +1 -1
  372. package/lib/shared/template-id.directive.d.ts +1 -1
  373. package/lib/sidebar/sidebar/sidebar.component.d.ts +1 -1
  374. package/lib/sidebar/sidebar-brand/sidebar-brand.component.d.ts +1 -1
  375. package/lib/sidebar/sidebar-footer/sidebar-footer.component.d.ts +1 -1
  376. package/lib/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
  377. package/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.d.ts +1 -1
  378. package/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.d.ts +1 -1
  379. package/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.d.ts +1 -1
  380. package/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.d.ts +1 -1
  381. package/lib/sidebar/sidebar-nav/sidebar-nav-label.component.d.ts +1 -1
  382. package/lib/sidebar/sidebar-nav/sidebar-nav-link.component.d.ts +2 -2
  383. package/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.d.ts +1 -1
  384. package/lib/sidebar/sidebar-nav/sidebar-nav-title.component.d.ts +1 -1
  385. package/lib/sidebar/sidebar-nav/sidebar-nav.component.d.ts +2 -2
  386. package/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.d.ts +1 -1
  387. package/lib/sidebar/sidebar-toggler/sidebar-toggler.component.d.ts +1 -1
  388. package/lib/smart-pagination/smart-pagination.component.d.ts +1 -1
  389. package/lib/smart-table/smart-table/smart-table.component.d.ts +1 -1
  390. package/lib/smart-table/smart-table-filter/smart-table-filter.component.d.ts +1 -1
  391. package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +1 -1
  392. package/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.d.ts +1 -1
  393. package/lib/spinner/spinner.component.d.ts +1 -1
  394. package/lib/table/table-active.directive.d.ts +1 -1
  395. package/lib/table/table-color.directive.d.ts +1 -1
  396. package/lib/table/table.directive.d.ts +1 -1
  397. package/lib/tabs/tab-content/tab-content.component.d.ts +1 -1
  398. package/lib/tabs/tab-content-ref.directive.d.ts +1 -1
  399. package/lib/tabs/tab-pane/tab-pane.component.d.ts +1 -1
  400. package/lib/time-picker/index.d.ts +1 -0
  401. package/lib/time-picker/public_api.d.ts +2 -0
  402. package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +39 -0
  403. package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +38 -0
  404. package/lib/time-picker/time-picker.component.d.ts +169 -0
  405. package/lib/time-picker/time-picker.module.d.ts +14 -0
  406. package/lib/time-picker/time.utils.d.ts +57 -0
  407. package/lib/toast/toast/toast.component.d.ts +1 -1
  408. package/lib/toast/toast-body/toast-body.component.d.ts +1 -1
  409. package/lib/toast/toast-close.directive.d.ts +1 -1
  410. package/lib/toast/toast-header/toast-header.component.d.ts +1 -1
  411. package/lib/toast/toaster/toaster-host.directive.d.ts +1 -1
  412. package/lib/toast/toaster/toaster.component.d.ts +1 -1
  413. package/lib/tooltip/tooltip/tooltip.component.d.ts +1 -1
  414. package/lib/tooltip/tooltip.directive.d.ts +1 -1
  415. package/lib/utilities/align.directive.d.ts +1 -1
  416. package/lib/utilities/bg-color.directive.d.ts +1 -1
  417. package/lib/utilities/border.directive.d.ts +1 -1
  418. package/lib/utilities/rounded.directive.d.ts +1 -1
  419. package/lib/utilities/text-color.directive.d.ts +1 -1
  420. package/lib/widget/widget-stat-a/widget-stat-a.component.d.ts +1 -1
  421. package/lib/widget/widget-stat-b/widget-stat-b.component.d.ts +1 -1
  422. package/lib/widget/widget-stat-c/widget-stat-c.component.d.ts +1 -1
  423. package/lib/widget/widget-stat-d/widget-stat-d.component.d.ts +1 -1
  424. package/lib/widget/widget-stat-e/widget-stat-e.component.d.ts +1 -1
  425. package/lib/widget/widget-stat-f/widget-stat-f.component.d.ts +1 -1
  426. package/package.json +13 -8
  427. package/public-api.d.ts +1 -0
@@ -0,0 +1,434 @@
1
+ import { Component, EventEmitter, forwardRef, HostListener, Input, Output } from '@angular/core';
2
+ import { FormControl, FormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
3
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
+ import { convert12hTo24h, convert24hTo12h, convertTimeToDate, getAmPm, getDayPeriods, getListOfHours, getListOfMinutes, getListOfSeconds, isHour12, isValidTime } from './time.utils';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "../form/form-control/form-control.directive";
9
+ import * as i4 from "../form/form-select/form-select.directive";
10
+ import * as i5 from "../form/input-group/input-group.component";
11
+ import * as i6 from "../form/input-group-text/input-group-text.directive";
12
+ import * as i7 from "../dropdown/dropdown/dropdown.component";
13
+ import * as i8 from "../dropdown/dropdown-menu/dropdown-menu.directive";
14
+ import * as i9 from "./time-picker-roll-col/time-picker-roll-col.component";
15
+ import * as i10 from "./time-picker-roll-col/time-picker-roll-am-pm.component";
16
+ export class TimePickerComponent {
17
+ constructor() {
18
+ this._cleaner = true;
19
+ /**
20
+ * Sets DateTime format options including timeZone
21
+ * @type DateTimeFormatOptions
22
+ * @default {}
23
+ * @note The date object doesn't store timeZone, it keeps the local timezone of the browser, regardless if you parsed UTC dates.
24
+ */
25
+ this.dateTimeFormatOptions = {};
26
+ this._disabled = false;
27
+ this._indicator = true;
28
+ this._inputReadOnly = false;
29
+ /**
30
+ * Sets the default locale for components. If not set, it is inherited from the browser.
31
+ * @type string
32
+ * @default default
33
+ */
34
+ this.locale = 'default';
35
+ /**
36
+ * Specifies short hint visible in time input.
37
+ * @type string
38
+ * @default 'Select time'
39
+ */
40
+ this.placeholder = 'Select time';
41
+ this._seconds = false;
42
+ /**
43
+ * Set the time picker variant to a roll or select.
44
+ * @type 'roll' | 'select'
45
+ * @default 'roll'
46
+ */
47
+ this.variant = 'roll';
48
+ this.timeChange = new EventEmitter(false);
49
+ this.hour12 = isHour12(this.locale);
50
+ this.dayPeriods = [
51
+ { value: 'am', label: 'am' },
52
+ { value: 'pm', label: 'pm' }
53
+ ];
54
+ this._timeInputValue = this.time?.toLocaleTimeString(this.locale, { timeStyle: this.seconds ? 'medium' : 'short' }) ?? '';
55
+ this.selectTime = new FormGroup({
56
+ selectHours: new FormControl({ value: this.hour, disabled: this.disabled }),
57
+ selectMinutes: new FormControl({ value: this.minute, disabled: this.disabled }),
58
+ selectSeconds: new FormControl({ value: this.second, disabled: this.disabled }),
59
+ selectDayPeriod: new FormControl({ value: this.dayPeriod, disabled: this.disabled })
60
+ });
61
+ this.timeInput = new FormControl({ value: this.timeInputValue, disabled: this.disabled }, [
62
+ Validators.required
63
+ ]);
64
+ this._hour = -1;
65
+ this._minute = -1;
66
+ this._second = -1;
67
+ this._dayPeriod = 'am';
68
+ this.onChange = (value) => { };
69
+ this.onTouched = () => { };
70
+ }
71
+ /**
72
+ * Toggle visibility or set the content of the cleaner button.
73
+ * @type boolean
74
+ * @default true
75
+ */
76
+ set cleaner(value) {
77
+ this._cleaner = coerceBooleanProperty(value);
78
+ }
79
+ get cleaner() {
80
+ return this._cleaner;
81
+ }
82
+ /**
83
+ * Toggle the disabled state for the component.
84
+ * @type boolean
85
+ * @default false
86
+ */
87
+ set disabled(value) {
88
+ this._disabled = coerceBooleanProperty(value);
89
+ }
90
+ get disabled() {
91
+ return this._disabled;
92
+ }
93
+ /**
94
+ * Toggle visibility or set the content of the input indicator.
95
+ * @type boolean
96
+ * @default true
97
+ */
98
+ set indicator(value) {
99
+ this._indicator = coerceBooleanProperty(value);
100
+ }
101
+ get indicator() {
102
+ return this._indicator;
103
+ }
104
+ /**
105
+ * Toggle the readonly state for the component.
106
+ * @type boolean
107
+ * @default false
108
+ */
109
+ set inputReadOnly(value) {
110
+ this._inputReadOnly = coerceBooleanProperty(value);
111
+ }
112
+ get inputReadOnly() {
113
+ return this._inputReadOnly;
114
+ }
115
+ /**
116
+ * Toggle seconds visibility.
117
+ * @type boolean
118
+ * @default false
119
+ */
120
+ set seconds(value) {
121
+ this._seconds = coerceBooleanProperty(value);
122
+ }
123
+ get seconds() {
124
+ return this._seconds;
125
+ }
126
+ /**
127
+ * Initial selected time.
128
+ * @type Date | string | null | number
129
+ * @default undefined
130
+ */
131
+ set time(value) {
132
+ if (value && isValidTime(value)) {
133
+ const time = new Date(value);
134
+ this.dayPeriod = getAmPm(time, this.locale);
135
+ if (this._time?.getTime() !== time.getTime()) {
136
+ this._time = new Date(time.getTime());
137
+ }
138
+ }
139
+ else {
140
+ this.clearTime();
141
+ }
142
+ }
143
+ get time() {
144
+ return this._time;
145
+ }
146
+ onBlur() {
147
+ this.onTouched();
148
+ }
149
+ // dayPeriodElements = [
150
+ // {value: 'am', label: 'am'},
151
+ // {value: 'pm', label: 'pm'}
152
+ // ]
153
+ set timeInputValue(value) {
154
+ this.timeInput.setValue(value);
155
+ this._timeInputValue = value;
156
+ }
157
+ get timeInputValue() {
158
+ return this._timeInputValue;
159
+ }
160
+ set hour(value) {
161
+ if (this._hour !== value) {
162
+ if (value < 0) {
163
+ this.clearTime();
164
+ return;
165
+ }
166
+ this._hour = value;
167
+ }
168
+ }
169
+ get hour() {
170
+ return this._hour;
171
+ }
172
+ set minute(value) {
173
+ if (this._minute !== value) {
174
+ if (value < 0) {
175
+ this.clearTime();
176
+ return;
177
+ }
178
+ this._minute = value;
179
+ }
180
+ }
181
+ get minute() {
182
+ return this._minute;
183
+ }
184
+ set second(value) {
185
+ if (this._second !== value) {
186
+ if (value < 0) {
187
+ this.clearTime();
188
+ return;
189
+ }
190
+ this._second = value;
191
+ }
192
+ }
193
+ get second() {
194
+ return this._second;
195
+ }
196
+ set dayPeriod(value) {
197
+ this._dayPeriod = value;
198
+ this.listOfHours12 = this.hour12 ? this.listOfHours?.filter(item => (item.dayPeriod && item.dayPeriod === value) || !item.dayPeriod) : this.listOfHours;
199
+ this.patchSelectTimeValues();
200
+ }
201
+ get dayPeriod() {
202
+ return this._dayPeriod;
203
+ }
204
+ setTime() {
205
+ this._hour = this._hour < 0 ? 0 : this._hour;
206
+ this._minute = this._minute < 0 ? 0 : this._minute;
207
+ this._second = this._second < 0 ? 0 : this._second;
208
+ const time = new Date(this._time?.getTime() ?? new Date());
209
+ time.setHours(this.hour, this.minute, this.second, 0);
210
+ this.time = time;
211
+ this.emitTime(time);
212
+ }
213
+ clearTime() {
214
+ this._hour = -1;
215
+ this._minute = -1;
216
+ this._second = -1;
217
+ this.dayPeriod = 'am';
218
+ if (this.time) {
219
+ this._time = undefined;
220
+ this.emitTime(undefined);
221
+ }
222
+ this.patchSelectTimeValues();
223
+ }
224
+ emitTime(time) {
225
+ const timeValue = !!time && isValidTime(time) ? new Date(time.getTime()) : undefined;
226
+ if (this._timeInternal?.getTime() !== timeValue?.getTime()) {
227
+ this.timeChange.emit(timeValue);
228
+ this.onChange(timeValue);
229
+ this.onTouched();
230
+ this._timeInternal = timeValue;
231
+ }
232
+ this.timeInputValue = this.time?.toLocaleTimeString(this.locale, { timeStyle: this.seconds ? 'medium' : 'short' }) ?? '';
233
+ }
234
+ ngOnInit() {
235
+ this.setTimeLists();
236
+ this.updateSelectTime();
237
+ }
238
+ ngOnChanges(changes) {
239
+ if (changes['time']) {
240
+ if (!changes['time'].firstChange) {
241
+ if (this._timeInternal?.getTime() !== changes['time'].currentValue?.getTime()) {
242
+ this.updateSelectTime();
243
+ }
244
+ }
245
+ }
246
+ }
247
+ setTimeLists() {
248
+ this.dayPeriods = getDayPeriods(this.locale, this.dateTimeFormatOptions);
249
+ this.hour12 = isHour12(this.locale);
250
+ this.listOfHours = this.listOfTimeSegments(getListOfHours, this.filterHours);
251
+ this.listOfMinutes = this.listOfTimeSegments(getListOfMinutes, this.filterMinutes);
252
+ this.listOfSeconds = this.listOfTimeSegments(getListOfSeconds, this.filterSeconds);
253
+ if (this.variant === 'select') {
254
+ const undefSegment = { value: -1, label: ' --', disabled: true };
255
+ this.listOfHours.unshift({ ...undefSegment });
256
+ this.listOfMinutes.unshift({ ...undefSegment });
257
+ this.listOfSeconds.unshift({ ...undefSegment });
258
+ }
259
+ this.listOfHours12 = this.hour12 ? this.listOfHours.filter(item => (item.dayPeriod && item.dayPeriod === this.dayPeriod) || !item.dayPeriod) : this.listOfHours;
260
+ }
261
+ updateSelectTime(time = this.time) {
262
+ if (!!time && isValidTime(time)) {
263
+ const hour = time.getHours() ?? 0;
264
+ const minute = time.getMinutes() ?? 0;
265
+ const second = this.seconds ? (time.getSeconds() ?? 0) : 0;
266
+ const closestSecond = this.closestTime(this.listOfSeconds, second);
267
+ const closestMinute = this.closestTime(this.listOfMinutes, minute);
268
+ const closestHour = this.closestTime(this.listOfHours, hour);
269
+ this.second = this.seconds ? closestSecond.value : 0;
270
+ this.minute = closestMinute.value;
271
+ this.hour = closestHour.value;
272
+ this.setTime();
273
+ this.patchSelectTimeValues();
274
+ }
275
+ }
276
+ closestTime(timeArray, timeSegment) {
277
+ let array = timeArray ?? [{ value: 0, label: '00' }];
278
+ if (this.time) {
279
+ array = timeArray.filter(el => el.value >= 0);
280
+ array = array.length ? array : timeArray;
281
+ }
282
+ return array.reduce((a, b) => {
283
+ return Math.abs(b.value - timeSegment) < Math.abs(a.value - timeSegment) ? b : a;
284
+ });
285
+ }
286
+ listOfTimeSegments(getListOfTimeSegments, filterTimeSegments) {
287
+ const list = getListOfTimeSegments(this.locale, this.dateTimeFormatOptions).filter((segment) => {
288
+ return typeof filterTimeSegments === 'function' ? filterTimeSegments(segment.value) : true;
289
+ });
290
+ return list.length ? list : getListOfTimeSegments(this.locale, this.dateTimeFormatOptions).slice(0, 1);
291
+ }
292
+ handleSelectDayPeriodChange(dayPeriod) {
293
+ if (dayPeriod !== this.dayPeriod) {
294
+ const hrs = this.time?.getHours() ?? (this.hour < 0 ? 0 : this.hour);
295
+ const hour = hrs > 12 ? convert24hTo12h(hrs) : convert12hTo24h(dayPeriod, hrs);
296
+ this.hour = this.closestTime(this.listOfHours, hour).value;
297
+ if (hour >= 0) {
298
+ this.setTime();
299
+ }
300
+ this.updateSelectTime();
301
+ }
302
+ }
303
+ handleSelectHoursChange(hour) {
304
+ this.hour = hour;
305
+ if (hour >= 0) {
306
+ this.setTime();
307
+ }
308
+ this.updateSelectTime();
309
+ }
310
+ handleSelectMinutesChange(minute) {
311
+ this.minute = minute;
312
+ if (minute >= 0) {
313
+ this.setTime();
314
+ }
315
+ this.updateSelectTime();
316
+ }
317
+ handleSelectSecondsChange(second) {
318
+ this.second = second;
319
+ if (second >= 0) {
320
+ this.setTime();
321
+ }
322
+ this.updateSelectTime();
323
+ }
324
+ patchSelectTimeValues() {
325
+ const dayPeriod = this.selectTime.get('selectDayPeriod')?.value;
326
+ if (this.dayPeriod !== dayPeriod) {
327
+ this.selectTime.patchValue({
328
+ selectDayPeriod: this.dayPeriod ?? 'am'
329
+ });
330
+ }
331
+ const hours = this.selectTime.get('selectHours')?.value;
332
+ const minutes = this.selectTime.get('selectMinutes')?.value;
333
+ const seconds = this.selectTime.get('selectSeconds')?.value;
334
+ const goUpdate = (this.second < 0 && this.minute < 0) || (this.hour >= 0 && this.minute >= 0 && this.second >= 0);
335
+ const timeChanged = (this.hour !== hours) || (this.minute !== minutes) || (this.second !== seconds);
336
+ if (goUpdate && timeChanged) {
337
+ if (this.hour !== hours) {
338
+ this.selectTime.patchValue({
339
+ selectHours: this.hour ?? 0
340
+ });
341
+ }
342
+ if (this.minute !== minutes) {
343
+ this.selectTime.patchValue({
344
+ selectMinutes: this.minute ?? 0
345
+ });
346
+ }
347
+ if (this.second !== seconds) {
348
+ this.selectTime.patchValue({
349
+ selectSeconds: this.second ?? 0
350
+ });
351
+ }
352
+ }
353
+ }
354
+ trackByHour(index, hour) {
355
+ return hour;
356
+ }
357
+ writeValue(value) {
358
+ this.time = value;
359
+ }
360
+ registerOnChange(fn) {
361
+ this.onChange = fn;
362
+ }
363
+ registerOnTouched(fn) {
364
+ this.onTouched = fn;
365
+ }
366
+ setDisabledState(isDisabled) {
367
+ this.disabled = isDisabled;
368
+ }
369
+ handleTimeInputChange($event) {
370
+ const value = $event.target?.value;
371
+ console.log('handleTimeInputChange', isValidTime(value), value);
372
+ if (!isValidTime(value)) {
373
+ this.clearTime();
374
+ return;
375
+ }
376
+ const time = convertTimeToDate(value);
377
+ this.updateSelectTime(time ?? new Date(Date.now()));
378
+ }
379
+ handleClear($event) {
380
+ this.clearTime();
381
+ }
382
+ }
383
+ TimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
384
+ TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: TimePickerComponent, selector: "c-time-picker-select", inputs: { cleaner: "cleaner", dateTimeFormatOptions: "dateTimeFormatOptions", disabled: "disabled", filterHours: "filterHours", filterMinutes: "filterMinutes", filterSeconds: "filterSeconds", indicator: "indicator", inputReadOnly: "inputReadOnly", locale: "locale", placeholder: "placeholder", seconds: "seconds", size: "size", time: "time", variant: "variant" }, outputs: { timeChange: "timeChange" }, host: { listeners: { "blur": "onBlur()" } }, providers: [
385
+ {
386
+ provide: NG_VALUE_ACCESSOR,
387
+ useExisting: forwardRef(() => TimePickerComponent),
388
+ multi: true
389
+ }
390
+ ], exportAs: ["cTimePickerSelect"], usesOnChanges: true, ngImport: i0, template: "<div class=\"date-picker-timepickers\" *ngIf=\"variant==='select'\">\n <div class=\"picker time-picker\">\n <div [formGroup]=\"selectTime\" class=\"time-picker-body\">\n <span class=\"time-picker-inline-icon\"></span>\n <select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectHours\" (ngModelChange)=\"handleSelectHoursChange($event)\">\n <option *ngFor=\"let hour of listOfHours12; index as i; trackBy: trackByHour\" [ngValue]=\"hour.value\" [attr.disabled]=\"hour.disabled || null\">{{hour.label}}</option>\n </select>\n {{' :'}}<select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectMinutes\" (ngModelChange)=\"handleSelectMinutesChange($event)\">\n <option *ngFor=\"let minute of listOfMinutes\" [ngValue]=\"minute.value\" [attr.disabled]=\"minute.disabled || null\">{{minute.label}}</option>\n </select>\n <ng-template [ngIf]=\"seconds\">\n {{' :'}}<select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectSeconds\" (ngModelChange)=\"handleSelectSecondsChange($event)\">\n <option *ngFor=\"let second of listOfSeconds\" [ngValue]=\"second.value\" [attr.disabled]=\"second.disabled || null\">{{second.label}}</option>\n </select>\n </ng-template>\n <ng-template [ngIf]=\"hour12\">\n <select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectDayPeriod\" (ngModelChange)=\"handleSelectDayPeriodChange($event)\">\n <option *ngFor=\"let dayPeriod of dayPeriods\" [ngValue]=\"dayPeriod.value\" class=\"time-picker-roll-cell\">{{dayPeriod.label}}</option>\n </select>\n </ng-template>\n </div>\n </div>\n</div>\n\n<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"time-picker picker\" *ngIf=\"variant==='roll'\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\">\n <input (change)=\"handleTimeInputChange($event)\"\n [formControl]=\"timeInput\"\n [placeholder]=\"placeholder\"\n cFormControl\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.pattern]=\"hour12 ? '(((0[1-9])|(1[0-2])):([0-5])([0-9])\\\\s(A|P)M)' : '([01]?[0-9]|2[0-3]):[0-5][0-9]'\"\n [readonly]=\"inputReadOnly ?? null\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon time-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && time && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon time-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu #dropdownMenu=\"cDropdownMenu\">\n <div class=\"time-picker-body time-picker-roll\" style=\"position: relative;\">\n <c-time-picker-roll-col\n [elements]=\"listOfHours12\"\n [selected]=\"hour\"\n (selectedChange)=\"handleSelectHoursChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n [elements]=\"listOfMinutes\"\n [selected]=\"minute\"\n (selectedChange)=\"handleSelectMinutesChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n *ngIf=\"seconds\"\n [elements]=\"listOfSeconds\"\n [selected]=\"second\"\n (selectedChange)=\"handleSelectSecondsChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-am-pm\n *ngIf=\"hour12\" [elements]=\"dayPeriods\"\n [selected]=\"dayPeriod\"\n (selectedChange)=\"handleSelectDayPeriodChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n >\n </c-time-picker-roll-am-pm>\n </div>\n </div>\n</c-dropdown>\n", styles: [".disabled{pointer-events:none}\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: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormControlDirective, selector: "input[cFormControl], textarea[cFormControl]", inputs: ["sizing", "valid", "type", "plaintext"] }, { kind: "directive", type: i4.FormSelectDirective, selector: "select[cSelect]", inputs: ["sizing", "valid"] }, { kind: "component", type: i5.InputGroupComponent, selector: "c-input-group", inputs: ["sizing"] }, { kind: "directive", type: i6.InputGroupTextDirective, selector: "[cInputGroupText]" }, { kind: "component", type: i7.DropdownComponent, selector: "c-dropdown", inputs: ["alignment", "autoClose", "dark", "direction", "placement", "popper", "popperOptions", "variant", "visible"], outputs: ["visibleChange"], exportAs: ["cDropdown"] }, { kind: "directive", type: i7.DropdownToggleDirective, selector: "[cDropdownToggle]", inputs: ["dropdownComponent", "disabled", "caret", "split"], exportAs: ["cDropdownToggle"] }, { kind: "directive", type: i8.DropdownMenuDirective, selector: "[cDropdownMenu]", inputs: ["alignment", "visible", "dark"], exportAs: ["cDropdownMenu"] }, { kind: "component", type: i9.TimePickerRollColComponent, selector: "c-time-picker-roll-col", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"], exportAs: ["cTimePickerRollCol"] }, { kind: "component", type: i10.TimePickerRollAmPmComponent, selector: "c-time-picker-roll-am-pm", inputs: ["disabled", "elements", "onClick", "selected", "refresh"], outputs: ["selectedChange"] }] });
391
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TimePickerComponent, decorators: [{
392
+ type: Component,
393
+ args: [{ selector: 'c-time-picker-select', exportAs: 'cTimePickerSelect', providers: [
394
+ {
395
+ provide: NG_VALUE_ACCESSOR,
396
+ useExisting: forwardRef(() => TimePickerComponent),
397
+ multi: true
398
+ }
399
+ ], template: "<div class=\"date-picker-timepickers\" *ngIf=\"variant==='select'\">\n <div class=\"picker time-picker\">\n <div [formGroup]=\"selectTime\" class=\"time-picker-body\">\n <span class=\"time-picker-inline-icon\"></span>\n <select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectHours\" (ngModelChange)=\"handleSelectHoursChange($event)\">\n <option *ngFor=\"let hour of listOfHours12; index as i; trackBy: trackByHour\" [ngValue]=\"hour.value\" [attr.disabled]=\"hour.disabled || null\">{{hour.label}}</option>\n </select>\n {{' :'}}<select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectMinutes\" (ngModelChange)=\"handleSelectMinutesChange($event)\">\n <option *ngFor=\"let minute of listOfMinutes\" [ngValue]=\"minute.value\" [attr.disabled]=\"minute.disabled || null\">{{minute.label}}</option>\n </select>\n <ng-template [ngIf]=\"seconds\">\n {{' :'}}<select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectSeconds\" (ngModelChange)=\"handleSelectSecondsChange($event)\">\n <option *ngFor=\"let second of listOfSeconds\" [ngValue]=\"second.value\" [attr.disabled]=\"second.disabled || null\">{{second.label}}</option>\n </select>\n </ng-template>\n <ng-template [ngIf]=\"hour12\">\n <select [attr.disabled]=\"disabled || null\" cSelect class=\"ms-0\" formControlName=\"selectDayPeriod\" (ngModelChange)=\"handleSelectDayPeriodChange($event)\">\n <option *ngFor=\"let dayPeriod of dayPeriods\" [ngValue]=\"dayPeriod.value\" class=\"time-picker-roll-cell\">{{dayPeriod.label}}</option>\n </select>\n </ng-template>\n </div>\n </div>\n</div>\n\n<c-dropdown #dropdown=\"cDropdown\" [autoClose]=\"'outside'\" class=\"time-picker picker\" *ngIf=\"variant==='roll'\">\n <c-input-group [caret]=\"false\"\n [disabled]=\"disabled ?? dropdown.visible\"\n [sizing]=\"size ?? ''\"\n cDropdownToggle\n class=\"picker-input-group\">\n <input (change)=\"handleTimeInputChange($event)\"\n [formControl]=\"timeInput\"\n [placeholder]=\"placeholder\"\n cFormControl\n [attr.tabindex]=\"disabled ? -1 : 0\"\n [attr.disabled]=\"disabled ? '' : null\"\n [attr.pattern]=\"hour12 ? '(((0[1-9])|(1[0-2])):([0-5])([0-9])\\\\s(A|P)M)' : '([01]?[0-9]|2[0-3]):[0-5][0-9]'\"\n [readonly]=\"inputReadOnly ?? null\"\n >\n <span *ngIf=\"indicator || cleaner\" cInputGroupText>\n <span *ngIf=\"indicator\" class=\"picker-input-group-indicator\">\n <span class=\"picker-input-group-icon time-picker-input-icon\"></span>\n </span>\n <span (click)=\"!disabled && handleClear($event)\" *ngIf=\"cleaner && time && !disabled\" class=\"picker-input-group-cleaner\" role=\"button\">\n <span class=\"picker-input-group-icon time-picker-cleaner-icon\"></span>\n </span>\n </span>\n\n </c-input-group>\n <div cDropdownMenu #dropdownMenu=\"cDropdownMenu\">\n <div class=\"time-picker-body time-picker-roll\" style=\"position: relative;\">\n <c-time-picker-roll-col\n [elements]=\"listOfHours12\"\n [selected]=\"hour\"\n (selectedChange)=\"handleSelectHoursChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n [elements]=\"listOfMinutes\"\n [selected]=\"minute\"\n (selectedChange)=\"handleSelectMinutesChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-col\n *ngIf=\"seconds\"\n [elements]=\"listOfSeconds\"\n [selected]=\"second\"\n (selectedChange)=\"handleSelectSecondsChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n >\n </c-time-picker-roll-col>\n <c-time-picker-roll-am-pm\n *ngIf=\"hour12\" [elements]=\"dayPeriods\"\n [selected]=\"dayPeriod\"\n (selectedChange)=\"handleSelectDayPeriodChange($event)\"\n [disabled]=\"disabled\"\n [refresh]=\"dropdownMenu.visible\"\n >\n </c-time-picker-roll-am-pm>\n </div>\n </div>\n</c-dropdown>\n", styles: [".disabled{pointer-events:none}\n"] }]
400
+ }], ctorParameters: function () { return []; }, propDecorators: { cleaner: [{
401
+ type: Input
402
+ }], dateTimeFormatOptions: [{
403
+ type: Input
404
+ }], disabled: [{
405
+ type: Input
406
+ }], filterHours: [{
407
+ type: Input
408
+ }], filterMinutes: [{
409
+ type: Input
410
+ }], filterSeconds: [{
411
+ type: Input
412
+ }], indicator: [{
413
+ type: Input
414
+ }], inputReadOnly: [{
415
+ type: Input
416
+ }], locale: [{
417
+ type: Input
418
+ }], placeholder: [{
419
+ type: Input
420
+ }], seconds: [{
421
+ type: Input
422
+ }], size: [{
423
+ type: Input
424
+ }], time: [{
425
+ type: Input
426
+ }], variant: [{
427
+ type: Input
428
+ }], timeChange: [{
429
+ type: Output
430
+ }], onBlur: [{
431
+ type: HostListener,
432
+ args: ['blur']
433
+ }] } });
434
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLFdBQVcsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0csT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUFFLGlCQUFpQixFQUdsQyxPQUFPLEVBQ1AsYUFBYSxFQUNiLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixXQUFXLEVBRVosTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7OztBQWV0QixNQUFNLE9BQU8sbUJBQW1CO0lBRTlCO1FBb0JRLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFakM7Ozs7O1dBS0c7UUFDTSwwQkFBcUIsR0FBMEIsRUFBRSxDQUFDO1FBY25ELGNBQVMsR0FBWSxLQUFLLENBQUM7UUFtQzNCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFjM0IsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFeEM7Ozs7V0FJRztRQUNNLFdBQU0sR0FBVyxTQUFTLENBQUM7UUFFcEM7Ozs7V0FJRztRQUNNLGdCQUFXLEdBQVcsYUFBYSxDQUFDO1FBY3JDLGFB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QVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7O2dIQXJjVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwrZUFSbkI7UUFDVDtZQUNFLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNsRCxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsZ0ZDeENILDh6SUF1RkE7MkZEN0NhLG1CQUFtQjtrQkFiL0IsU0FBUzsrQkFDRSxzQkFBc0IsWUFHdEIsbUJBQW1CLGFBQ2xCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjswRUFrQkcsT0FBTztzQkFEVixLQUFLO2dCQWVHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFRRixRQUFRO3NCQURYLEtBQUs7Z0JBY0csV0FBVztzQkFBbkIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUYsU0FBUztzQkFEWixLQUFLO2dCQWVGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBY0csTUFBTTtzQkFBZCxLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBUUYsT0FBTztzQkFEVixLQUFLO2dCQWNHLElBQUk7c0JBQVosS0FBSztnQkFRRixJQUFJO3NCQURQLEtBQUs7Z0JBdUJHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUVlLE1BQU07c0JBQTNCLFlBQVk7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0MTJoVG8yNGgsXG4gIGNvbnZlcnQyNGhUbzEyaCwgY29udmVydFRpbWVUb0RhdGUsXG4gIERhdGVUaW1lRm9ybWF0T3B0aW9ucyxcbiAgRGF5UGVyaW9kLFxuICBnZXRBbVBtLFxuICBnZXREYXlQZXJpb2RzLFxuICBnZXRMaXN0T2ZIb3VycyxcbiAgZ2V0TGlzdE9mTWludXRlcyxcbiAgZ2V0TGlzdE9mU2Vjb25kcyxcbiAgaXNIb3VyMTIsXG4gIGlzVmFsaWRUaW1lLFxuICBJVGltZVZhbHVlXG59IGZyb20gJy4vdGltZS51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtdGltZS1waWNrZXItc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGltZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZXhwb3J0QXM6ICdjVGltZVBpY2tlclNlbGVjdCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGltZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2NsZWFuZXI6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Rpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9pbmRpY2F0b3I6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2lucHV0UmVhZE9ubHk6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3NlY29uZHM6IEJvb2xlYW5JbnB1dDtcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSBjb250ZW50IG9mIHRoZSBjbGVhbmVyIGJ1dHRvbi5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgY2xlYW5lcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2NsZWFuZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIGdldCBjbGVhbmVyKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGVhbmVyO1xuICB9XG4gIHByaXZhdGUgX2NsZWFuZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTZXRzIERhdGVUaW1lIGZvcm1hdCBvcHRpb25zIGluY2x1ZGluZyB0aW1lWm9uZVxuICAgKiBAdHlwZSBEYXRlVGltZUZvcm1hdE9wdGlvbnNcbiAgICogQGRlZmF1bHQge31cbiAgICogQG5vdGUgVGhlIGRhdGUgb2JqZWN0IGRvZXNuJ3Qgc3RvcmUgdGltZVpvbmUsIGl0IGtlZXBzIHRoZSBsb2NhbCB0aW1lem9uZSBvZiB0aGUgYnJvd3NlciwgcmVnYXJkbGVzcyBpZiB5b3UgcGFyc2VkIFVUQyBkYXRlcy5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGVUaW1lRm9ybWF0T3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge307XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgZGlzYWJsZWQgc3RhdGUgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEZpbHRlciBhdmFpbGFibGUgaG91cnMgdG8gcGljay5cbiAgICogQHR5cGUgKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgZmlsdGVySG91cnM/OiAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogRmlsdGVyIGF2YWlsYWJsZSBtaW51dGVzIHRvIHBpY2suXG4gICAqIEB0eXBlICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGZpbHRlck1pbnV0ZXM/OiAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogRmlsdGVyIGF2YWlsYWJsZSBzZWNvbmRzIHRvIHBpY2suXG4gICAqIEB0eXBlICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGZpbHRlclNlY29uZHM/OiAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcblxuICAvKipcbiAgICogVG9nZ2xlIHZpc2liaWxpdHkgb3Igc2V0IHRoZSBjb250ZW50IG9mIHRoZSBpbnB1dCBpbmRpY2F0b3IuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGluZGljYXRvcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2luZGljYXRvciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgZ2V0IGluZGljYXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5faW5kaWNhdG9yO1xuICB9XG4gIHByaXZhdGUgX2luZGljYXRvcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgcmVhZG9ubHkgc3RhdGUgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpbnB1dFJlYWRPbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5wdXRSZWFkT25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgZ2V0IGlucHV0UmVhZE9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0UmVhZE9ubHk7XG4gIH1cbiAgcHJpdmF0ZSBfaW5wdXRSZWFkT25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkZWZhdWx0IGxvY2FsZSBmb3IgY29tcG9uZW50cy4gSWYgbm90IHNldCwgaXQgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGJyb3dzZXIuXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAqL1xuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0JztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHNob3J0IGhpbnQgdmlzaWJsZSBpbiB0aW1lIGlucHV0LlxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgJ1NlbGVjdCB0aW1lJ1xuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QgdGltZSc7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBzZWNvbmRzIHZpc2liaWxpdHkuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzZWNvbmRzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2Vjb25kcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHNlY29uZHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY29uZHM7XG4gIH1cbiAgcHJpdmF0ZSBfc2Vjb25kczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaXplIHRoZSBjb21wb25lbnQgc21hbGwgb3IgbGFyZ2UuXG4gICAqIEB0eXBlICdzbScgfCAnbGcnIHwgdW5kZWZpbmVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgc2l6ZT86ICdzbScgfCAnbGcnO1xuXG4gIC8qKlxuICAgKiBJbml0aWFsIHNlbGVjdGVkIHRpbWUuXG4gICAqIEB0eXBlIERhdGUgfCBzdHJpbmcgfCBudWxsIHwgbnVtYmVyXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHRpbWUodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgJiYgaXNWYWxpZFRpbWUodmFsdWUpKSB7XG4gICAgICBjb25zdCB0aW1lID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgdGhpcy5kYXlQZXJpb2QgPSBnZXRBbVBtKHRpbWUsIHRoaXMubG9jYWxlKTtcbiAgICAgIGlmICh0aGlzLl90aW1lPy5nZXRUaW1lKCkgIT09IHRpbWUuZ2V0VGltZSgpKSB7XG4gICAgICAgIHRoaXMuX3RpbWUgPSBuZXcgRGF0ZSh0aW1lLmdldFRpbWUoKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgfVxuICB9XG4gIGdldCB0aW1lKCkge1xuICAgIHJldHVybiB0aGlzLl90aW1lO1xuICB9XG4gIHByaXZhdGUgX3RpbWU/OiBEYXRlO1xuICBwcml2YXRlIF90aW1lSW50ZXJuYWw/OiBEYXRlO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRpbWUgcGlja2VyIHZhcmlhbnQgdG8gYSByb2xsIG9yIHNlbGVjdC5cbiAgICogQHR5cGUgJ3JvbGwnIHwgJ3NlbGVjdCdcbiAgICogQGRlZmF1bHQgJ3JvbGwnXG4gICAqL1xuICBASW5wdXQoKSB2YXJpYW50OiAncm9sbCcgfCAnc2VsZWN0JyA9ICdyb2xsJ1xuXG4gIEBPdXRwdXQoKSB0aW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IHVuZGVmaW5lZD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCB1bmRlZmluZWQ+KGZhbHNlKTtcblxuICBASG9zdExpc3RlbmVyKCdibHVyJykgb25CbHVyKCkge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBsaXN0T2ZIb3VycyE6IElUaW1lVmFsdWVbXTtcbiAgbGlzdE9mSG91cnMxMiE6IElUaW1lVmFsdWVbXTtcbiAgbGlzdE9mTWludXRlcyE6IElUaW1lVmFsdWVbXTtcbiAgbGlzdE9mU2Vjb25kcyE6IElUaW1lVmFsdWVbXTtcbiAgaG91cjEyOiBib29sZWFuID0gaXNIb3VyMTIodGhpcy5sb2NhbGUpO1xuICBkYXlQZXJpb2RzID0gW1xuICAgIHt2YWx1ZTogJ2FtJywgbGFiZWw6ICdhbSd9LFxuICAgIHt2YWx1ZTogJ3BtJywgbGFiZWw6ICdwbSd9XG4gIF1cblxuICAvLyBkYXlQZXJpb2RFbGVtZW50cyA9IFtcbiAgLy8gICB7dmFsdWU6ICdhbScsIGxhYmVsOiAnYW0nfSxcbiAgLy8gICB7dmFsdWU6ICdwbScsIGxhYmVsOiAncG0nfVxuICAvLyBdXG5cbiAgc2V0IHRpbWVJbnB1dFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRpbWVJbnB1dC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgdGhpcy5fdGltZUlucHV0VmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBnZXQgdGltZUlucHV0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZUlucHV0VmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfdGltZUlucHV0VmFsdWU6IHN0cmluZyA9IHRoaXMudGltZT8udG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCB7dGltZVN0eWxlOiB0aGlzLnNlY29uZHMgPyAnbWVkaXVtJyA6ICdzaG9ydCd9KSA/PyAnJztcblxuICBzZWxlY3RUaW1lID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgc2VsZWN0SG91cnM6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLmhvdXIsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0pLFxuICAgIHNlbGVjdE1pbnV0ZXM6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLm1pbnV0ZSwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSksXG4gICAgc2VsZWN0U2Vjb25kczogbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMuc2Vjb25kLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9KSxcbiAgICBzZWxlY3REYXlQZXJpb2Q6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLmRheVBlcmlvZCwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSlcbiAgfSk7XG5cbiAgdGltZUlucHV0ID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6IHRoaXMudGltZUlucHV0VmFsdWUsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0sIFtcbiAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gIF0pO1xuXG4gIHNldCBob3VyKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5faG91ciAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5faG91ciA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBnZXQgaG91cigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9ob3VyO1xuICB9XG4gIHByaXZhdGUgX2hvdXIgPSAtMTtcblxuICBzZXQgbWludXRlKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fbWludXRlICE9PSB2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLl9taW51dGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgZ2V0IG1pbnV0ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9taW51dGU7XG4gIH1cbiAgcHJpdmF0ZSBfbWludXRlID0gLTE7XG5cbiAgc2V0IHNlY29uZCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3NlY29uZCAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fc2Vjb25kID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIGdldCBzZWNvbmQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vjb25kO1xuICB9XG4gIHByaXZhdGUgX3NlY29uZCA9IC0xO1xuXG4gIHNldCBkYXlQZXJpb2QodmFsdWUpIHtcbiAgICB0aGlzLl9kYXlQZXJpb2QgPSB2YWx1ZTtcbiAgICB0aGlzLmxpc3RPZkhvdXJzMTIgPSB0aGlzLmhvdXIxMiA/IHRoaXMubGlzdE9mSG91cnM/LmZpbHRlcihpdGVtID0+IChpdGVtLmRheVBlcmlvZCAmJiBpdGVtLmRheVBlcmlvZCA9PT0gdmFsdWUpIHx8ICFpdGVtLmRheVBlcmlvZCkgOiB0aGlzLmxpc3RPZkhvdXJzO1xuICAgIHRoaXMucGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCk7XG4gIH1cbiAgZ2V0IGRheVBlcmlvZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF5UGVyaW9kO1xuICB9XG4gIHByaXZhdGUgX2RheVBlcmlvZDogRGF5UGVyaW9kID0gJ2FtJztcblxuICBzZXRUaW1lKCkge1xuICAgIHRoaXMuX2hvdXIgPSB0aGlzLl9ob3VyIDwgMCA/IDAgOiB0aGlzLl9ob3VyO1xuICAgIHRoaXMuX21pbnV0ZSA9IHRoaXMuX21pbnV0ZSA8IDAgPyAwIDogdGhpcy5fbWludXRlO1xuICAgIHRoaXMuX3NlY29uZCA9IHRoaXMuX3NlY29uZCA8IDAgPyAwIDogdGhpcy5fc2Vjb25kO1xuXG4gICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKHRoaXMuX3RpbWU/LmdldFRpbWUoKSA/PyBuZXcgRGF0ZSgpKTtcbiAgICB0aW1lLnNldEhvdXJzKHRoaXMuaG91ciwgdGhpcy5taW51dGUsIHRoaXMuc2Vjb25kLCAwKTtcbiAgICB0aGlzLnRpbWUgPSB0aW1lO1xuICAgIHRoaXMuZW1pdFRpbWUodGltZSk7XG4gIH1cblxuICBjbGVhclRpbWUoKSB7XG4gICAgdGhpcy5faG91ciA9IC0xO1xuICAgIHRoaXMuX21pbnV0ZSA9IC0xO1xuICAgIHRoaXMuX3NlY29uZCA9IC0xO1xuICAgIHRoaXMuZGF5UGVyaW9kID0gJ2FtJztcbiAgICBpZiAodGhpcy50aW1lKSB7XG4gICAgICB0aGlzLl90aW1lID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5lbWl0VGltZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgICB0aGlzLnBhdGNoU2VsZWN0VGltZVZhbHVlcygpO1xuICB9XG5cbiAgZW1pdFRpbWUodGltZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHRpbWVWYWx1ZSA9ICEhdGltZSAmJiBpc1ZhbGlkVGltZSh0aW1lKSA/IG5ldyBEYXRlKHRpbWUuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5fdGltZUludGVybmFsPy5nZXRUaW1lKCkgIT09IHRpbWVWYWx1ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLnRpbWVDaGFuZ2UuZW1pdCh0aW1lVmFsdWUpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aW1lVmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuX3RpbWVJbnRlcm5hbCA9IHRpbWVWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IHRoaXMudGltZT8udG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCB7dGltZVN0eWxlOiB0aGlzLnNlY29uZHMgPyAnbWVkaXVtJyA6ICdzaG9ydCd9KSA/PyAnJztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VGltZUxpc3RzKCk7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RUaW1lKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3RpbWUnXSkge1xuICAgICAgaWYgKCFjaGFuZ2VzWyd0aW1lJ10uZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgaWYgKHRoaXMuX3RpbWVJbnRlcm5hbD8uZ2V0VGltZSgpICE9PSBjaGFuZ2VzWyd0aW1lJ10uY3VycmVudFZhbHVlPy5nZXRUaW1lKCkpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFRpbWVMaXN0cygpIHtcbiAgICB0aGlzLmRheVBlcmlvZHMgPSBnZXREYXlQZXJpb2RzKHRoaXMubG9jYWxlLCB0aGlzLmRhdGVUaW1lRm9ybWF0T3B0aW9ucyk7XG4gICAgdGhpcy5ob3VyMTIgPSBpc0hvdXIxMih0aGlzLmxvY2FsZSk7XG4gICAgdGhpcy5saXN0T2ZIb3VycyA9IHRoaXMubGlzdE9mVGltZVNlZ21lbnRzKGdldExpc3RPZkhvdXJzLCB0aGlzLmZpbHRlckhvdXJzKTtcbiAgICB0aGlzLmxpc3RPZk1pbnV0ZXMgPSB0aGlzLmxpc3RPZlRpbWVTZWdtZW50cyhnZXRMaXN0T2ZNaW51dGVzLCB0aGlzLmZpbHRlck1pbnV0ZXMpO1xuICAgIHRoaXMubGlzdE9mU2Vjb25kcyA9IHRoaXMubGlzdE9mVGltZVNlZ21lbnRzKGdldExpc3RPZlNlY29uZHMsIHRoaXMuZmlsdGVyU2Vjb25kcyk7XG4gICAgaWYgKHRoaXMudmFyaWFudCA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIGNvbnN0IHVuZGVmU2VnbWVudCA9IHsgdmFsdWU6IC0xLCBsYWJlbDogJyAtLScsIGRpc2FibGVkOiB0cnVlIH07XG4gICAgICB0aGlzLmxpc3RPZkhvdXJzLnVuc2hpZnQoeyAuLi51bmRlZlNlZ21lbnQgfSk7XG4gICAgICB0aGlzLmxpc3RPZk1pbnV0ZXMudW5zaGlmdCh7IC4uLnVuZGVmU2VnbWVudCB9KTtcbiAgICAgIHRoaXMubGlzdE9mU2Vjb25kcy51bnNoaWZ0KHsgLi4udW5kZWZTZWdtZW50IH0pO1xuICAgIH1cbiAgICB0aGlzLmxpc3RPZkhvdXJzMTIgPSB0aGlzLmhvdXIxMiA/IHRoaXMubGlzdE9mSG91cnMuZmlsdGVyKGl0ZW0gPT4gKGl0ZW0uZGF5UGVyaW9kICYmIGl0ZW0uZGF5UGVyaW9kID09PSB0aGlzLmRheVBlcmlvZCkgfHwgIWl0ZW0uZGF5UGVyaW9kKSA6IHRoaXMubGlzdE9mSG91cnM7XG4gIH1cblxuICB1cGRhdGVTZWxlY3RUaW1lKHRpbWUgPSB0aGlzLnRpbWUpIHtcbiAgICBpZiAoISF0aW1lICYmIGlzVmFsaWRUaW1lKHRpbWUpKSB7XG4gICAgICBjb25zdCBob3VyID0gdGltZS5nZXRIb3VycygpID8/IDA7XG4gICAgICBjb25zdCBtaW51dGUgPSB0aW1lLmdldE1pbnV0ZXMoKSA/PyAwO1xuICAgICAgY29uc3Qgc2Vjb25kID0gdGhpcy5zZWNvbmRzID8gKHRpbWUuZ2V0U2Vjb25kcygpID8/IDApIDogMDtcblxuICAgICAgY29uc3QgY2xvc2VzdFNlY29uZCA9IHRoaXMuY2xvc2VzdFRpbWUodGhpcy5saXN0T2ZTZWNvbmRzLCBzZWNvbmQpO1xuICAgICAgY29uc3QgY2xvc2VzdE1pbnV0ZSA9IHRoaXMuY2xvc2VzdFRpbWUodGhpcy5saXN0T2ZNaW51dGVzLCBtaW51dGUpO1xuICAgICAgY29uc3QgY2xvc2VzdEhvdXIgPSB0aGlzLmNsb3Nlc3RUaW1lKHRoaXMubGlzdE9mSG91cnMsIGhvdXIpO1xuXG4gICAgICB0aGlzLnNlY29uZCA9IHRoaXMuc2Vjb25kcyA/IGNsb3Nlc3RTZWNvbmQudmFsdWUgOiAwO1xuICAgICAgdGhpcy5taW51dGUgPSBjbG9zZXN0TWludXRlLnZhbHVlO1xuICAgICAgdGhpcy5ob3VyID0gY2xvc2VzdEhvdXIudmFsdWU7XG4gICAgICB0aGlzLnNldFRpbWUoKTtcbiAgICAgIHRoaXMucGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VzdFRpbWUodGltZUFycmF5OiBJVGltZVZhbHVlW10sIHRpbWVTZWdtZW50OiBudW1iZXIpIHtcbiAgICBsZXQgYXJyYXkgPSB0aW1lQXJyYXkgPz8gW3sgdmFsdWU6IDAsIGxhYmVsOiAnMDAnIH1dO1xuICAgIGlmICh0aGlzLnRpbWUpIHtcbiAgICAgIGFycmF5ID0gdGltZUFycmF5LmZpbHRlcihlbCA9PiBlbC52YWx1ZSA+PSAwKTtcbiAgICAgIGFycmF5ID0gYXJyYXkubGVuZ3RoID8gYXJyYXkgOiB0aW1lQXJyYXk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheS5yZWR1Y2UoKGE6IElUaW1lVmFsdWUsIGI6IElUaW1lVmFsdWUpID0+IHtcbiAgICAgIHJldHVybiBNYXRoLmFicyhiLnZhbHVlIC0gdGltZVNlZ21lbnQpIDwgTWF0aC5hYnMoYS52YWx1ZSAtIHRpbWVTZWdtZW50KSA/IGIgOiBhO1xuICAgIH0pO1xuICB9XG5cbiAgbGlzdE9mVGltZVNlZ21lbnRzKGdldExpc3RPZlRpbWVTZWdtZW50czogKGxvY2FsZTogc3RyaW5nLCBkYXRlVGltZUZvcm1hdE9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucykgPT4gSVRpbWVWYWx1ZVtdLCBmaWx0ZXJUaW1lU2VnbWVudHM6ICgodGltZVNlZ21lbnRWYWx1ZTogbnVtYmVyKSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGxpc3QgPSBnZXRMaXN0T2ZUaW1lU2VnbWVudHModGhpcy5sb2NhbGUsIHRoaXMuZGF0ZVRpbWVGb3JtYXRPcHRpb25zKS5maWx0ZXIoKHNlZ21lbnQ6IElUaW1lVmFsdWUpID0+IHtcbiAgICAgIHJldHVybiB0eXBlb2YgZmlsdGVyVGltZVNlZ21lbnRzID09PSAnZnVuY3Rpb24nID8gZmlsdGVyVGltZVNlZ21lbnRzKHNlZ21lbnQudmFsdWUpIDogdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gbGlzdC5sZW5ndGggPyBsaXN0IDogZ2V0TGlzdE9mVGltZVNlZ21lbnRzKHRoaXMubG9jYWxlLCB0aGlzLmRhdGVUaW1lRm9ybWF0T3B0aW9ucykuc2xpY2UoMCwgMSk7XG4gIH1cblxuICBoYW5kbGVTZWxlY3REYXlQZXJpb2RDaGFuZ2UoZGF5UGVyaW9kOiBEYXlQZXJpb2QpIHtcbiAgICBpZiAoZGF5UGVyaW9kICE9PSB0aGlzLmRheVBlcmlvZCkge1xuICAgICAgY29uc3QgaHJzID0gdGhpcy50aW1lPy5nZXRIb3VycygpID8/ICh0aGlzLmhvdXIgPCAwID8gMCA6IHRoaXMuaG91cik7XG4gICAgICBjb25zdCBob3VyID0gaHJzID4gMTIgPyBjb252ZXJ0MjRoVG8xMmgoaHJzKSA6IGNvbnZlcnQxMmhUbzI0aChkYXlQZXJpb2QsIGhycyk7XG4gICAgICB0aGlzLmhvdXIgPSB0aGlzLmNsb3Nlc3RUaW1lKHRoaXMubGlzdE9mSG91cnMsIGhvdXIpLnZhbHVlO1xuICAgICAgaWYgKGhvdXIgPj0gMCkge1xuICAgICAgICB0aGlzLnNldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNlbGVjdEhvdXJzQ2hhbmdlKGhvdXI6IG51bWJlcikge1xuICAgIHRoaXMuaG91ciA9IGhvdXI7XG4gICAgaWYgKGhvdXIgPj0gMCkge1xuICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICB9XG5cbiAgaGFuZGxlU2VsZWN0TWludXRlc0NoYW5nZShtaW51dGU6IG51bWJlcikge1xuICAgIHRoaXMubWludXRlID0gbWludXRlO1xuICAgIGlmIChtaW51dGUgPj0gMCkge1xuICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICB9XG5cbiAgaGFuZGxlU2VsZWN0U2Vjb25kc0NoYW5nZShzZWNvbmQ6IG51bWJlcikge1xuICAgIHRoaXMuc2Vjb25kID0gc2Vjb25kO1xuICAgIGlmIChzZWNvbmQgPj0gMCkge1xuICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICB9XG5cbiAgcGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCkge1xuICAgIGNvbnN0IGRheVBlcmlvZCA9IHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdERheVBlcmlvZCcpPy52YWx1ZTtcbiAgICBpZiAodGhpcy5kYXlQZXJpb2QgIT09IGRheVBlcmlvZCkge1xuICAgICAgdGhpcy5zZWxlY3RUaW1lLnBhdGNoVmFsdWUoe1xuICAgICAgICBzZWxlY3REYXlQZXJpb2Q6IHRoaXMuZGF5UGVyaW9kID8/ICdhbSdcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBob3VycyA9IHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdEhvdXJzJyk/LnZhbHVlO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RNaW51dGVzJyk/LnZhbHVlO1xuICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RTZWNvbmRzJyk/LnZhbHVlO1xuICAgIGNvbnN0IGdvVXBkYXRlID0gKHRoaXMuc2Vjb25kIDwgMCAmJiB0aGlzLm1pbnV0ZSA8IDApIHx8ICh0aGlzLmhvdXIgPj0gMCAmJiB0aGlzLm1pbnV0ZSA+PSAwICYmIHRoaXMuc2Vjb25kID49IDApO1xuICAgIGNvbnN0IHRpbWVDaGFuZ2VkID0gKHRoaXMuaG91ciAhPT0gaG91cnMpIHx8ICh0aGlzLm1pbnV0ZSAhPT0gbWludXRlcykgfHwgKHRoaXMuc2Vjb25kICE9PSBzZWNvbmRzKTtcbiAgICBpZiAoZ29VcGRhdGUgJiYgdGltZUNoYW5nZWQpIHtcbiAgICAgIGlmICh0aGlzLmhvdXIgIT09IGhvdXJzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0VGltZS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBzZWxlY3RIb3VyczogdGhpcy5ob3VyID8/IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5taW51dGUgIT09IG1pbnV0ZXMpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RUaW1lLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHNlbGVjdE1pbnV0ZXM6IHRoaXMubWludXRlID8/IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWNvbmQgIT09IHNlY29uZHMpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RUaW1lLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHNlbGVjdFNlY29uZHM6IHRoaXMuc2Vjb25kID8/IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeUhvdXIoaW5kZXg6IG51bWJlciwgaG91cjogSVRpbWVWYWx1ZSkge1xuICAgIHJldHVybiBob3VyO1xuICB9XG5cbiAgb25DaGFuZ2UgPSAodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWUgPSB2YWx1ZTtcbiAgfVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBoYW5kbGVUaW1lSW5wdXRDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICRldmVudC50YXJnZXQ/LnZhbHVlO1xuICAgIGNvbnNvbGUubG9nKCdoYW5kbGVUaW1lSW5wdXRDaGFuZ2UnLCBpc1ZhbGlkVGltZSh2YWx1ZSksIHZhbHVlKTtcbiAgICBpZiAoIWlzVmFsaWRUaW1lKHZhbHVlKSkge1xuICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGltZSA9IGNvbnZlcnRUaW1lVG9EYXRlKHZhbHVlKTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUodGltZSA/PyBuZXcgRGF0ZShEYXRlLm5vdygpKSk7XG4gIH1cblxuICBoYW5kbGVDbGVhcigkZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmNsZWFyVGltZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGF0ZS1waWNrZXItdGltZXBpY2tlcnNcIiAqbmdJZj1cInZhcmlhbnQ9PT0nc2VsZWN0J1wiPlxuICA8ZGl2IGNsYXNzPVwicGlja2VyIHRpbWUtcGlja2VyXCI+XG4gICAgPGRpdiBbZm9ybUdyb3VwXT1cInNlbGVjdFRpbWVcIiBjbGFzcz1cInRpbWUtcGlja2VyLWJvZHlcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwidGltZS1waWNrZXItaW5saW5lLWljb25cIj48L3NwYW4+XG4gICAgICA8c2VsZWN0IFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIiBjU2VsZWN0IGNsYXNzPVwibXMtMFwiIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdEhvdXJzXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0SG91cnNDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBob3VyIG9mIGxpc3RPZkhvdXJzMTI7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlIb3VyXCIgW25nVmFsdWVdPVwiaG91ci52YWx1ZVwiIFthdHRyLmRpc2FibGVkXT1cImhvdXIuZGlzYWJsZWQgfHwgbnVsbFwiPnt7aG91ci5sYWJlbH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIHt7JyA6J319PHNlbGVjdCBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCIgY1NlbGVjdCBjbGFzcz1cIm1zLTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RNaW51dGVzXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0TWludXRlc0NoYW5nZSgkZXZlbnQpXCI+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbGlzdE9mTWludXRlc1wiIFtuZ1ZhbHVlXT1cIm1pbnV0ZS52YWx1ZVwiIFthdHRyLmRpc2FibGVkXT1cIm1pbnV0ZS5kaXNhYmxlZCB8fCBudWxsXCI+e3ttaW51dGUubGFiZWx9fTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNlY29uZHNcIj5cbiAgICAgICAge3snIDonfX08c2VsZWN0IFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkIHx8IG51bGxcIiBjU2VsZWN0IGNsYXNzPVwibXMtMFwiIGZvcm1Db250cm9sTmFtZT1cInNlbGVjdFNlY29uZHNcIiAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVTZWxlY3RTZWNvbmRzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgc2Vjb25kIG9mIGxpc3RPZlNlY29uZHNcIiBbbmdWYWx1ZV09XCJzZWNvbmQudmFsdWVcIiBbYXR0ci5kaXNhYmxlZF09XCJzZWNvbmQuZGlzYWJsZWQgfHwgbnVsbFwiPnt7c2Vjb25kLmxhYmVsfX08L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJob3VyMTJcIj5cbiAgICAgICAgPHNlbGVjdCBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCIgY1NlbGVjdCBjbGFzcz1cIm1zLTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3REYXlQZXJpb2RcIiAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVTZWxlY3REYXlQZXJpb2RDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRheVBlcmlvZCBvZiBkYXlQZXJpb2RzXCIgW25nVmFsdWVdPVwiZGF5UGVyaW9kLnZhbHVlXCIgY2xhc3M9XCJ0aW1lLXBpY2tlci1yb2xsLWNlbGxcIj57e2RheVBlcmlvZC5sYWJlbH19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGMtZHJvcGRvd24gI2Ryb3Bkb3duPVwiY0Ryb3Bkb3duXCIgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIiBjbGFzcz1cInRpbWUtcGlja2VyIHBpY2tlclwiICpuZ0lmPVwidmFyaWFudD09PSdyb2xsJ1wiPlxuICA8Yy1pbnB1dC1ncm91cCBbY2FyZXRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgPz8gZHJvcGRvd24udmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgIFtzaXppbmddPVwic2l6ZSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgIGNEcm9wZG93blRvZ2dsZVxuICAgICAgICAgICAgICAgICBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cFwiPlxuICAgIDxpbnB1dCAoY2hhbmdlKT1cImhhbmRsZVRpbWVJbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInRpbWVJbnB1dFwiXG4gICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgIGNGb3JtQ29udHJvbFxuICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gJycgOiBudWxsXCJcbiAgICAgICAgICAgW2F0dHIucGF0dGVybl09XCJob3VyMTIgPyAnKCgoMFsxLTldKXwoMVswLTJdKSk6KFswLTVdKShbMC05XSlcXFxccyhBfFApTSknIDogJyhbMDFdP1swLTldfDJbMC0zXSk6WzAtNV1bMC05XSdcIlxuICAgICAgICAgICBbcmVhZG9ubHldPVwiaW5wdXRSZWFkT25seSA/PyBudWxsXCJcbiAgICA+XG4gICAgPHNwYW4gKm5nSWY9XCJpbmRpY2F0b3IgfHwgY2xlYW5lclwiIGNJbnB1dEdyb3VwVGV4dD5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yXCIgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXAtaW5kaWNhdG9yXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWljb24gdGltZS1waWNrZXItaW5wdXQtaWNvblwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIChjbGljayk9XCIhZGlzYWJsZWQgJiYgaGFuZGxlQ2xlYXIoJGV2ZW50KVwiICpuZ0lmPVwiY2xlYW5lciAmJiB0aW1lICYmICFkaXNhYmxlZFwiIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWNsZWFuZXJcIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWljb24gdGltZS1waWNrZXItY2xlYW5lci1pY29uXCI+PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cblxuICA8L2MtaW5wdXQtZ3JvdXA+XG4gIDxkaXYgY0Ryb3Bkb3duTWVudSAjZHJvcGRvd25NZW51PVwiY0Ryb3Bkb3duTWVudVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aW1lLXBpY2tlci1ib2R5IHRpbWUtcGlja2VyLXJvbGxcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cbiAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtY29sXG4gICAgICAgIFtlbGVtZW50c109XCJsaXN0T2ZIb3VyczEyXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImhvdXJcIlxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0SG91cnNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgID5cbiAgICAgIDwvYy10aW1lLXBpY2tlci1yb2xsLWNvbD5cbiAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtY29sXG4gICAgICAgIFtlbGVtZW50c109XCJsaXN0T2ZNaW51dGVzXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cIm1pbnV0ZVwiXG4gICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJoYW5kbGVTZWxlY3RNaW51dGVzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmVmcmVzaF09XCJkcm9wZG93bk1lbnUudmlzaWJsZVwiXG4gICAgICA+XG4gICAgICA8L2MtdGltZS1waWNrZXItcm9sbC1jb2w+XG4gICAgICA8Yy10aW1lLXBpY2tlci1yb2xsLWNvbFxuICAgICAgICAqbmdJZj1cInNlY29uZHNcIlxuICAgICAgICBbZWxlbWVudHNdPVwibGlzdE9mU2Vjb25kc1wiXG4gICAgICAgIFtzZWxlY3RlZF09XCJzZWNvbmRcIlxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0U2Vjb25kc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3JlZnJlc2hdPVwiZHJvcGRvd25NZW51LnZpc2libGVcIlxuICAgICAgPlxuICAgICAgPC9jLXRpbWUtcGlja2VyLXJvbGwtY29sPlxuICAgICAgPGMtdGltZS1waWNrZXItcm9sbC1hbS1wbVxuICAgICAgICAqbmdJZj1cImhvdXIxMlwiIFtlbGVtZW50c109XCJkYXlQZXJpb2RzXCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImRheVBlcmlvZFwiXG4gICAgICAgIChzZWxlY3RlZENoYW5nZSk9XCJoYW5kbGVTZWxlY3REYXlQZXJpb2RDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgID5cbiAgICAgIDwvYy10aW1lLXBpY2tlci1yb2xsLWFtLXBtPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYy1kcm9wZG93bj5cbiJdfQ==
@@ -0,0 +1,50 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ReactiveFormsModule } from '@angular/forms';
4
+ import { FormModule } from '../form';
5
+ import { ButtonModule } from '../button';
6
+ import { TimePickerComponent } from './time-picker.component';
7
+ import { TimePickerRollColComponent, TimeElementDirective } from './time-picker-roll-col/time-picker-roll-col.component';
8
+ import { TimePickerRollAmPmComponent, DayPeriodElementDirective } from './time-picker-roll-col/time-picker-roll-am-pm.component';
9
+ import { DropdownModule } from '../dropdown';
10
+ import * as i0 from "@angular/core";
11
+ export class TimePickerModule {
12
+ }
13
+ TimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ TimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: TimePickerModule, declarations: [TimePickerComponent,
15
+ TimePickerRollColComponent,
16
+ TimeElementDirective,
17
+ TimePickerRollAmPmComponent,
18
+ DayPeriodElementDirective], imports: [CommonModule,
19
+ ReactiveFormsModule,
20
+ FormModule,
21
+ ButtonModule,
22
+ DropdownModule], exports: [TimePickerComponent] });
23
+ TimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TimePickerModule, imports: [CommonModule,
24
+ ReactiveFormsModule,
25
+ FormModule,
26
+ ButtonModule,
27
+ DropdownModule] });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TimePickerModule, decorators: [{
29
+ type: NgModule,
30
+ args: [{
31
+ declarations: [
32
+ TimePickerComponent,
33
+ TimePickerRollColComponent,
34
+ TimeElementDirective,
35
+ TimePickerRollAmPmComponent,
36
+ DayPeriodElementDirective
37
+ ],
38
+ imports: [
39
+ CommonModule,
40
+ ReactiveFormsModule,
41
+ FormModule,
42
+ ButtonModule,
43
+ DropdownModule
44
+ ],
45
+ exports: [
46
+ TimePickerComponent,
47
+ ]
48
+ }]
49
+ }] });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3pILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ2pJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBcUI3QyxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBakJ6QixtQkFBbUI7UUFDbkIsMEJBQTBCO1FBQzFCLG9CQUFvQjtRQUNwQiwyQkFBMkI7UUFDM0IseUJBQXlCLGFBR3pCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsVUFBVTtRQUNWLFlBQVk7UUFDWixjQUFjLGFBR2QsbUJBQW1COzhHQUdWLGdCQUFnQixZQVZ6QixZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLFVBQVU7UUFDVixZQUFZO1FBQ1osY0FBYzsyRkFNTCxnQkFBZ0I7a0JBbkI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixtQkFBbUI7d0JBQ25CLDBCQUEwQjt3QkFDMUIsb0JBQW9CO3dCQUNwQiwyQkFBMkI7d0JBQzNCLHlCQUF5QjtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixVQUFVO3dCQUNWLFlBQVk7d0JBQ1osY0FBYztxQkFDZjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsbUJBQW1CO3FCQUNwQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICcuLi9mb3JtJztcblxuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcbmltcG9ydCB7IFRpbWVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL3RpbWUtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyUm9sbENvbENvbXBvbmVudCwgVGltZUVsZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtY29sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaW1lUGlja2VyUm9sbEFtUG1Db21wb25lbnQsIERheVBlcmlvZEVsZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuL3RpbWUtcGlja2VyLXJvbGwtY29sL3RpbWUtcGlja2VyLXJvbGwtYW0tcG0uY29tcG9uZW50JztcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnLi4vZHJvcGRvd24nO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUaW1lUGlja2VyQ29tcG9uZW50LFxuICAgIFRpbWVQaWNrZXJSb2xsQ29sQ29tcG9uZW50LFxuICAgIFRpbWVFbGVtZW50RGlyZWN0aXZlLFxuICAgIFRpbWVQaWNrZXJSb2xsQW1QbUNvbXBvbmVudCxcbiAgICBEYXlQZXJpb2RFbGVtZW50RGlyZWN0aXZlXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBEcm9wZG93bk1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVGltZVBpY2tlckNvbXBvbmVudCxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyTW9kdWxlIHsgfVxuIl19