@coreui/angular-pro 4.1.0-next.4 → 4.2.0-next.1
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.
- package/README.md +174 -154
- package/esm2020/lib/accordion/accordion/accordion.component.mjs +4 -4
- package/esm2020/lib/accordion/accordion-button/accordion-button.directive.mjs +4 -4
- package/esm2020/lib/accordion/accordion-item/accordion-item.component.mjs +4 -4
- package/esm2020/lib/accordion/accordion.module.mjs +8 -10
- package/esm2020/lib/accordion/accordion.service.mjs +4 -4
- package/esm2020/lib/alert/alert-heading.directive.mjs +4 -4
- package/esm2020/lib/alert/alert-link.directive.mjs +4 -4
- package/esm2020/lib/alert/alert.component.mjs +11 -11
- package/esm2020/lib/alert/alert.module.mjs +6 -8
- package/esm2020/lib/avatar/avatar.component.mjs +5 -5
- package/esm2020/lib/avatar/avatar.module.mjs +5 -7
- package/esm2020/lib/backdrop/backdrop.service.mjs +4 -4
- package/esm2020/lib/badge/badge.component.mjs +5 -5
- package/esm2020/lib/badge/badge.module.mjs +5 -7
- package/esm2020/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +5 -5
- package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +4 -4
- package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +7 -7
- package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +4 -4
- package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +5 -5
- package/esm2020/lib/button/button-close.directive.mjs +4 -4
- package/esm2020/lib/button/button.directive.mjs +4 -4
- package/esm2020/lib/button/button.module.mjs +5 -7
- package/esm2020/lib/button-group/button-group/button-group.component.mjs +4 -4
- package/esm2020/lib/button-group/button-group.module.mjs +5 -7
- package/esm2020/lib/button-group/button-toolbar/button-toolbar.component.mjs +4 -4
- package/esm2020/lib/calendar/calendar/calendar-class-view.pipe.mjs +4 -4
- package/esm2020/lib/calendar/calendar/calendar.component.mjs +7 -7
- package/esm2020/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +4 -4
- package/esm2020/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +4 -4
- package/esm2020/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +4 -4
- package/esm2020/lib/calendar/calendar-month/calendar-day.directive.mjs +4 -4
- package/esm2020/lib/calendar/calendar-month/calendar-day.pipe.mjs +4 -4
- package/esm2020/lib/calendar/calendar-month/calendar-month.component.mjs +9 -9
- package/esm2020/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +4 -4
- package/esm2020/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +4 -4
- package/esm2020/lib/calendar/calendar.module.mjs +6 -8
- package/esm2020/lib/calendar/calendar.service.mjs +8 -6
- package/esm2020/lib/calendar/calendar.utils.mjs +5 -2
- package/esm2020/lib/callout/callout.component.mjs +4 -4
- package/esm2020/lib/callout/callout.module.mjs +5 -7
- package/esm2020/lib/card/card-body.component.mjs +4 -4
- package/esm2020/lib/card/card-footer.component.mjs +4 -4
- package/esm2020/lib/card/card-group.component.mjs +4 -4
- package/esm2020/lib/card/card-header-actions.component.mjs +4 -4
- package/esm2020/lib/card/card-header.component.mjs +4 -4
- package/esm2020/lib/card/card-img-overlay/card-img-overlay.component.mjs +4 -4
- package/esm2020/lib/card/card-img.directive.mjs +4 -4
- package/esm2020/lib/card/card-link.directive.mjs +4 -4
- package/esm2020/lib/card/card-subtitle.directive.mjs +4 -4
- package/esm2020/lib/card/card-text.directive.mjs +4 -4
- package/esm2020/lib/card/card-title.directive.mjs +4 -4
- package/esm2020/lib/card/card.component.mjs +4 -4
- package/esm2020/lib/card/card.module.mjs +5 -7
- package/esm2020/lib/carousel/carousel/carousel.component.mjs +4 -4
- package/esm2020/lib/carousel/carousel-caption/carousel-caption.component.mjs +4 -4
- package/esm2020/lib/carousel/carousel-control/carousel-control.component.mjs +5 -5
- package/esm2020/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +5 -5
- package/esm2020/lib/carousel/carousel-inner/carousel-inner.component.mjs +4 -4
- package/esm2020/lib/carousel/carousel-item/carousel-item.component.mjs +4 -4
- package/esm2020/lib/carousel/carousel-state.mjs +4 -4
- package/esm2020/lib/carousel/carousel.config.mjs +4 -4
- package/esm2020/lib/carousel/carousel.module.mjs +5 -5
- package/esm2020/lib/carousel/carousel.service.mjs +4 -4
- package/esm2020/lib/collapse/collapse.animations.mjs +5 -5
- package/esm2020/lib/collapse/collapse.directive.mjs +4 -4
- package/esm2020/lib/collapse/collapse.module.mjs +5 -7
- package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +28 -21
- package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +12 -14
- package/esm2020/lib/date-range-picker/end-date.directive.mjs +4 -4
- package/esm2020/lib/date-range-picker/start-date.directive.mjs +4 -4
- package/esm2020/lib/dropdown/dropdown/dropdown.component.mjs +7 -7
- package/esm2020/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +4 -4
- package/esm2020/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +4 -4
- package/esm2020/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +4 -4
- package/esm2020/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +4 -4
- package/esm2020/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +4 -4
- package/esm2020/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +4 -4
- package/esm2020/lib/dropdown/dropdown.module.mjs +6 -8
- package/esm2020/lib/dropdown/dropdown.service.mjs +4 -4
- package/esm2020/lib/element-cover/element-cover.component.mjs +6 -6
- package/esm2020/lib/element-cover/element-cover.module.mjs +6 -8
- package/esm2020/lib/footer/footer.component.mjs +4 -4
- package/esm2020/lib/footer/footer.module.mjs +5 -7
- package/esm2020/lib/form/form/form.directive.mjs +4 -4
- package/esm2020/lib/form/form-check/form-check-input.directive.mjs +4 -4
- package/esm2020/lib/form/form-check/form-check-label.directive.mjs +4 -4
- package/esm2020/lib/form/form-check/form-check.component.mjs +4 -4
- package/esm2020/lib/form/form-control/form-control.directive.mjs +4 -4
- package/esm2020/lib/form/form-feedback/form-feedback.component.mjs +4 -4
- package/esm2020/lib/form/form-floating/form-floating.directive.mjs +4 -4
- package/esm2020/lib/form/form-label/form-label.directive.mjs +4 -4
- package/esm2020/lib/form/form-select/form-select.directive.mjs +4 -4
- package/esm2020/lib/form/form-text/form-text.directive.mjs +4 -4
- package/esm2020/lib/form/form.module.mjs +5 -5
- package/esm2020/lib/form/input-group/input-group.component.mjs +4 -4
- package/esm2020/lib/form/input-group-text/input-group-text.directive.mjs +4 -4
- package/esm2020/lib/grid/col.component.mjs +4 -4
- package/esm2020/lib/grid/col.directive.mjs +4 -4
- package/esm2020/lib/grid/container.component.mjs +4 -4
- package/esm2020/lib/grid/grid.module.mjs +5 -5
- package/esm2020/lib/grid/gutter.directive.mjs +4 -4
- package/esm2020/lib/grid/row.component.mjs +5 -5
- package/esm2020/lib/grid/row.directive.mjs +4 -4
- package/esm2020/lib/header/header/header.component.mjs +4 -4
- package/esm2020/lib/header/header-brand/header-brand.component.mjs +4 -4
- package/esm2020/lib/header/header-divider/header-divider.component.mjs +4 -4
- package/esm2020/lib/header/header-nav/header-nav.component.mjs +5 -5
- package/esm2020/lib/header/header-text/header-text.component.mjs +4 -4
- package/esm2020/lib/header/header-toggler/header-toggler.directive.mjs +4 -4
- package/esm2020/lib/header/header.module.mjs +5 -7
- package/esm2020/lib/image/img.directive.mjs +4 -4
- package/esm2020/lib/image/img.module.mjs +5 -7
- package/esm2020/lib/list-group/list-group-item.directive.mjs +4 -4
- package/esm2020/lib/list-group/list-group.directive.mjs +4 -4
- package/esm2020/lib/list-group/list-group.module.mjs +5 -7
- package/esm2020/lib/loading-button/loading-button.component.mjs +5 -5
- package/esm2020/lib/loading-button/loading-button.module.mjs +6 -8
- package/esm2020/lib/modal/modal/modal.component.mjs +7 -7
- package/esm2020/lib/modal/modal-body/modal-body.component.mjs +4 -4
- package/esm2020/lib/modal/modal-content/modal-content.component.mjs +4 -4
- package/esm2020/lib/modal/modal-dialog/modal-dialog.component.mjs +4 -4
- package/esm2020/lib/modal/modal-dismiss/modal-toggle.directive.mjs +4 -4
- package/esm2020/lib/modal/modal-footer/modal-footer.component.mjs +4 -4
- package/esm2020/lib/modal/modal-header/modal-header.component.mjs +4 -4
- package/esm2020/lib/modal/modal-title/modal-title.directive.mjs +4 -4
- package/esm2020/lib/modal/modal.module.mjs +7 -9
- package/esm2020/lib/modal/modal.service.mjs +4 -4
- package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +8 -8
- package/esm2020/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +4 -4
- package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +4 -4
- package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +6 -6
- package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +4 -4
- package/esm2020/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +4 -4
- package/esm2020/lib/multi-select/multi-select.module.mjs +5 -5
- package/esm2020/lib/multi-select/multi-select.service.mjs +4 -4
- package/esm2020/lib/nav/nav-item.component.mjs +4 -4
- package/esm2020/lib/nav/nav-link.directive.mjs +4 -4
- package/esm2020/lib/nav/nav.component.mjs +4 -4
- package/esm2020/lib/nav/nav.module.mjs +5 -7
- package/esm2020/lib/navbar/navbar-brand/navbar-brand.directive.mjs +4 -4
- package/esm2020/lib/navbar/navbar-nav/navbar-nav.component.mjs +4 -4
- package/esm2020/lib/navbar/navbar-text/navbar-text.component.mjs +4 -4
- package/esm2020/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +4 -4
- package/esm2020/lib/navbar/navbar.component.mjs +5 -5
- package/esm2020/lib/navbar/navbar.module.mjs +6 -8
- package/esm2020/lib/offcanvas/offcanvas/offcanvas.component.mjs +5 -5
- package/esm2020/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +4 -4
- package/esm2020/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +5 -5
- package/esm2020/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +4 -4
- package/esm2020/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +4 -4
- package/esm2020/lib/offcanvas/offcanvas.module.mjs +7 -9
- package/esm2020/lib/offcanvas/offcanvas.service.mjs +4 -4
- package/esm2020/lib/pagination/page-item/page-item.component.mjs +4 -4
- package/esm2020/lib/pagination/page-item/page-item.directive.mjs +4 -4
- package/esm2020/lib/pagination/page-link/page-link.directive.mjs +4 -4
- package/esm2020/lib/pagination/pagination/pagination.component.mjs +5 -5
- package/esm2020/lib/pagination/pagination.module.mjs +5 -7
- package/esm2020/lib/placeholder/placeholder-animation.directive.mjs +4 -4
- package/esm2020/lib/placeholder/placeholder.directive.mjs +4 -4
- package/esm2020/lib/placeholder/placeholder.module.mjs +5 -7
- package/esm2020/lib/popover/popover/popover.component.mjs +4 -4
- package/esm2020/lib/popover/popover.directive.mjs +4 -4
- package/esm2020/lib/popover/popover.module.mjs +5 -7
- package/esm2020/lib/progress/progress-bar.component.mjs +4 -4
- package/esm2020/lib/progress/progress.component.mjs +4 -4
- package/esm2020/lib/progress/progress.module.mjs +5 -7
- package/esm2020/lib/services/class-toggle.service.mjs +4 -4
- package/esm2020/lib/services/intersection.service.mjs +4 -4
- package/esm2020/lib/services/listeners.service.mjs +4 -4
- package/esm2020/lib/shared/html-attr.directive.mjs +4 -4
- package/esm2020/lib/shared/shared.module.mjs +5 -7
- package/esm2020/lib/shared/template-id.directive.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar/sidebar.component.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +5 -5
- package/esm2020/lib/sidebar/sidebar-header/sidebar-header.component.mjs +5 -5
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +11 -11
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +14 -14
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +7 -7
- package/esm2020/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +4 -4
- package/esm2020/lib/sidebar/sidebar.module.mjs +9 -11
- package/esm2020/lib/sidebar/sidebar.service.mjs +4 -4
- package/esm2020/lib/smart-pagination/smart-pagination.component.mjs +4 -4
- package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +6 -8
- package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +16 -16
- package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +7 -7
- package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +8 -8
- package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +9 -9
- package/esm2020/lib/smart-table/smart-table.module.mjs +15 -17
- package/esm2020/lib/spinner/spinner.component.mjs +4 -4
- package/esm2020/lib/spinner/spinner.module.mjs +6 -8
- package/esm2020/lib/table/table-active.directive.mjs +4 -4
- package/esm2020/lib/table/table-color.directive.mjs +4 -4
- package/esm2020/lib/table/table.directive.mjs +4 -4
- package/esm2020/lib/table/table.module.mjs +5 -7
- package/esm2020/lib/tabs/tab-content/tab-content.component.mjs +4 -4
- package/esm2020/lib/tabs/tab-content-ref.directive.mjs +4 -4
- package/esm2020/lib/tabs/tab-pane/tab-pane.component.mjs +4 -4
- package/esm2020/lib/tabs/tab.service.mjs +4 -4
- package/esm2020/lib/tabs/tabs.module.mjs +6 -8
- package/esm2020/lib/time-picker/index.mjs +2 -0
- package/esm2020/lib/time-picker/public_api.mjs +3 -0
- package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +103 -0
- package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +104 -0
- package/esm2020/lib/time-picker/time-picker.component.mjs +458 -0
- package/esm2020/lib/time-picker/time-picker.module.mjs +50 -0
- package/esm2020/lib/time-picker/time.utils.mjs +645 -0
- package/esm2020/lib/toast/toast/toast.component.mjs +10 -10
- package/esm2020/lib/toast/toast-body/toast-body.component.mjs +4 -4
- package/esm2020/lib/toast/toast-close.directive.mjs +4 -4
- package/esm2020/lib/toast/toast-header/toast-header.component.mjs +5 -5
- package/esm2020/lib/toast/toast.module.mjs +5 -5
- package/esm2020/lib/toast/toaster/toaster-host.directive.mjs +4 -4
- package/esm2020/lib/toast/toaster/toaster.component.mjs +4 -4
- package/esm2020/lib/toast/toaster/toaster.service.mjs +4 -4
- package/esm2020/lib/tooltip/tooltip/tooltip.component.mjs +4 -4
- package/esm2020/lib/tooltip/tooltip.directive.mjs +4 -4
- package/esm2020/lib/tooltip/tooltip.module.mjs +5 -7
- package/esm2020/lib/utilities/align.directive.mjs +4 -4
- package/esm2020/lib/utilities/bg-color.directive.mjs +4 -4
- package/esm2020/lib/utilities/border.directive.mjs +4 -4
- package/esm2020/lib/utilities/rounded.directive.mjs +4 -4
- package/esm2020/lib/utilities/text-color.directive.mjs +4 -4
- package/esm2020/lib/utilities/utilities.module.mjs +5 -7
- package/esm2020/lib/widget/widget-stat-a/widget-stat-a.component.mjs +7 -7
- package/esm2020/lib/widget/widget-stat-b/widget-stat-b.component.mjs +7 -7
- package/esm2020/lib/widget/widget-stat-c/widget-stat-c.component.mjs +7 -7
- package/esm2020/lib/widget/widget-stat-d/widget-stat-d.component.mjs +8 -8
- package/esm2020/lib/widget/widget-stat-e/widget-stat-e.component.mjs +7 -7
- package/esm2020/lib/widget/widget-stat-f/widget-stat-f.component.mjs +8 -8
- package/esm2020/lib/widget/widget.module.mjs +7 -9
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/coreui-angular-pro.mjs +2905 -1616
- package/fesm2015/coreui-angular-pro.mjs.map +1 -1
- package/fesm2020/coreui-angular-pro.mjs +2890 -1624
- package/fesm2020/coreui-angular-pro.mjs.map +1 -1
- package/{coreui-angular-pro.d.ts → index.d.ts} +0 -0
- package/lib/accordion/accordion/accordion.component.d.ts +1 -1
- package/lib/accordion/accordion-button/accordion-button.directive.d.ts +1 -1
- package/lib/accordion/accordion-item/accordion-item.component.d.ts +1 -1
- package/lib/alert/alert-heading.directive.d.ts +1 -1
- package/lib/alert/alert-link.directive.d.ts +1 -1
- package/lib/alert/alert.component.d.ts +1 -1
- package/lib/avatar/avatar.component.d.ts +1 -1
- package/lib/badge/badge.component.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +1 -1
- package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.d.ts +1 -1
- package/lib/button/button-close.directive.d.ts +1 -1
- package/lib/button/button.directive.d.ts +1 -1
- package/lib/button-group/button-group/button-group.component.d.ts +1 -1
- package/lib/button-group/button-toolbar/button-toolbar.component.d.ts +1 -1
- package/lib/calendar/calendar/calendar-class-view.pipe.d.ts +1 -1
- package/lib/calendar/calendar/calendar.component.d.ts +1 -1
- package/lib/calendar/calendar-month/calendar-class-day.pipe.d.ts +1 -1
- package/lib/calendar/calendar-month/calendar-class-month.pipe.d.ts +1 -1
- package/lib/calendar/calendar-month/calendar-class-year.pipe.d.ts +1 -1
- package/lib/calendar/calendar-month/calendar-day.directive.d.ts +1 -1
- package/lib/calendar/calendar-month/calendar-day.pipe.d.ts +1 -1
- package/lib/calendar/calendar-month/calendar-month.component.d.ts +1 -1
- package/lib/calendar/calendar-month/calendar-weekday.pipe.d.ts +1 -1
- package/lib/calendar/calendar-navigation/calendar-navigation.component.d.ts +1 -1
- package/lib/calendar/calendar.utils.d.ts +3 -3
- package/lib/callout/callout.component.d.ts +1 -1
- package/lib/card/card-body.component.d.ts +1 -1
- package/lib/card/card-footer.component.d.ts +1 -1
- package/lib/card/card-group.component.d.ts +1 -1
- package/lib/card/card-header-actions.component.d.ts +1 -1
- package/lib/card/card-header.component.d.ts +1 -1
- package/lib/card/card-img-overlay/card-img-overlay.component.d.ts +1 -1
- package/lib/card/card-img.directive.d.ts +1 -1
- package/lib/card/card-link.directive.d.ts +1 -1
- package/lib/card/card-subtitle.directive.d.ts +1 -1
- package/lib/card/card-text.directive.d.ts +1 -1
- package/lib/card/card-title.directive.d.ts +1 -1
- package/lib/card/card.component.d.ts +1 -1
- package/lib/carousel/carousel/carousel.component.d.ts +1 -1
- package/lib/carousel/carousel-caption/carousel-caption.component.d.ts +1 -1
- package/lib/carousel/carousel-control/carousel-control.component.d.ts +1 -1
- package/lib/carousel/carousel-indicators/carousel-indicators.component.d.ts +1 -1
- package/lib/carousel/carousel-inner/carousel-inner.component.d.ts +1 -1
- package/lib/carousel/carousel-item/carousel-item.component.d.ts +1 -1
- package/lib/collapse/collapse.directive.d.ts +1 -1
- package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +5 -3
- package/lib/date-range-picker/end-date.directive.d.ts +1 -1
- package/lib/date-range-picker/start-date.directive.d.ts +1 -1
- package/lib/dropdown/dropdown/dropdown.component.d.ts +2 -2
- package/lib/dropdown/dropdown-close/dropdown-close.directive.d.ts +1 -1
- package/lib/dropdown/dropdown-divider/dropdown-divider.directive.d.ts +1 -1
- package/lib/dropdown/dropdown-header/dropdown-header.directive.d.ts +1 -1
- package/lib/dropdown/dropdown-item/dropdown-item-plain.directive.d.ts +1 -1
- package/lib/dropdown/dropdown-item/dropdown-item.directive.d.ts +1 -1
- package/lib/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +1 -1
- package/lib/element-cover/element-cover.component.d.ts +1 -1
- package/lib/footer/footer.component.d.ts +1 -1
- package/lib/form/form/form.directive.d.ts +1 -1
- package/lib/form/form-check/form-check-input.directive.d.ts +1 -1
- package/lib/form/form-check/form-check-label.directive.d.ts +1 -1
- package/lib/form/form-check/form-check.component.d.ts +1 -1
- package/lib/form/form-control/form-control.directive.d.ts +1 -1
- package/lib/form/form-feedback/form-feedback.component.d.ts +1 -1
- package/lib/form/form-floating/form-floating.directive.d.ts +1 -1
- package/lib/form/form-label/form-label.directive.d.ts +1 -1
- package/lib/form/form-select/form-select.directive.d.ts +1 -1
- package/lib/form/form-text/form-text.directive.d.ts +1 -1
- package/lib/form/input-group/input-group.component.d.ts +1 -1
- package/lib/form/input-group-text/input-group-text.directive.d.ts +1 -1
- package/lib/grid/col.component.d.ts +1 -1
- package/lib/grid/col.directive.d.ts +1 -1
- package/lib/grid/container.component.d.ts +1 -1
- package/lib/grid/gutter.directive.d.ts +1 -1
- package/lib/grid/row.component.d.ts +1 -1
- package/lib/grid/row.directive.d.ts +1 -1
- package/lib/header/header/header.component.d.ts +1 -1
- package/lib/header/header-brand/header-brand.component.d.ts +1 -1
- package/lib/header/header-divider/header-divider.component.d.ts +1 -1
- package/lib/header/header-nav/header-nav.component.d.ts +1 -1
- package/lib/header/header-text/header-text.component.d.ts +1 -1
- package/lib/header/header-toggler/header-toggler.directive.d.ts +1 -1
- package/lib/image/img.directive.d.ts +1 -1
- package/lib/list-group/list-group-item.directive.d.ts +1 -1
- package/lib/list-group/list-group.directive.d.ts +1 -1
- package/lib/loading-button/loading-button.component.d.ts +1 -1
- package/lib/modal/modal/modal.component.d.ts +1 -1
- package/lib/modal/modal-body/modal-body.component.d.ts +1 -1
- package/lib/modal/modal-content/modal-content.component.d.ts +1 -1
- package/lib/modal/modal-dialog/modal-dialog.component.d.ts +1 -1
- package/lib/modal/modal-dismiss/modal-toggle.directive.d.ts +1 -1
- package/lib/modal/modal-footer/modal-footer.component.d.ts +1 -1
- package/lib/modal/modal-header/modal-header.component.d.ts +1 -1
- package/lib/modal/modal-title/modal-title.directive.d.ts +1 -1
- package/lib/multi-select/multi-select/multi-select.component.d.ts +1 -1
- package/lib/multi-select/multi-select-native-select/multi-select-native-select.component.d.ts +1 -1
- package/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.d.ts +1 -1
- package/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.d.ts +1 -1
- package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +1 -1
- package/lib/multi-select/multi-select-tag/multi-select-tag.component.d.ts +1 -1
- package/lib/nav/nav-item.component.d.ts +1 -1
- package/lib/nav/nav-link.directive.d.ts +1 -1
- package/lib/nav/nav.component.d.ts +1 -1
- package/lib/navbar/navbar-brand/navbar-brand.directive.d.ts +1 -1
- package/lib/navbar/navbar-nav/navbar-nav.component.d.ts +1 -1
- package/lib/navbar/navbar-text/navbar-text.component.d.ts +1 -1
- package/lib/navbar/navbar-toggler/navbar-toggler.directive.d.ts +1 -1
- package/lib/navbar/navbar.component.d.ts +1 -1
- package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +1 -1
- package/lib/offcanvas/offcanvas-body/offcanvas-body.component.d.ts +1 -1
- package/lib/offcanvas/offcanvas-header/offcanvas-header.component.d.ts +1 -1
- package/lib/offcanvas/offcanvas-title/offcanvas-title.directive.d.ts +1 -1
- package/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.d.ts +1 -1
- package/lib/pagination/page-item/page-item.component.d.ts +1 -1
- package/lib/pagination/page-item/page-item.directive.d.ts +1 -1
- package/lib/pagination/page-link/page-link.directive.d.ts +1 -1
- package/lib/pagination/pagination/pagination.component.d.ts +1 -1
- package/lib/placeholder/placeholder-animation.directive.d.ts +1 -1
- package/lib/placeholder/placeholder.directive.d.ts +1 -1
- package/lib/popover/popover/popover.component.d.ts +1 -1
- package/lib/popover/popover.directive.d.ts +1 -1
- package/lib/progress/progress-bar.component.d.ts +1 -1
- package/lib/progress/progress.component.d.ts +1 -1
- package/lib/shared/html-attr.directive.d.ts +1 -1
- package/lib/shared/template-id.directive.d.ts +1 -1
- package/lib/sidebar/sidebar/sidebar.component.d.ts +1 -1
- package/lib/sidebar/sidebar-brand/sidebar-brand.component.d.ts +1 -1
- package/lib/sidebar/sidebar-footer/sidebar-footer.component.d.ts +1 -1
- package/lib/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav-label.component.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav-link.component.d.ts +2 -2
- package/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav-title.component.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/sidebar-nav.component.d.ts +2 -2
- package/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.d.ts +1 -1
- package/lib/sidebar/sidebar-toggler/sidebar-toggler.component.d.ts +1 -1
- package/lib/smart-pagination/smart-pagination.component.d.ts +1 -1
- package/lib/smart-table/smart-table/smart-table.component.d.ts +1 -1
- package/lib/smart-table/smart-table-filter/smart-table-filter.component.d.ts +1 -1
- package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +1 -1
- package/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.d.ts +1 -1
- package/lib/spinner/spinner.component.d.ts +1 -1
- package/lib/table/table-active.directive.d.ts +1 -1
- package/lib/table/table-color.directive.d.ts +1 -1
- package/lib/table/table.directive.d.ts +1 -1
- package/lib/tabs/tab-content/tab-content.component.d.ts +1 -1
- package/lib/tabs/tab-content-ref.directive.d.ts +1 -1
- package/lib/tabs/tab-pane/tab-pane.component.d.ts +1 -1
- package/lib/time-picker/index.d.ts +1 -0
- package/lib/time-picker/public_api.d.ts +2 -0
- package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +39 -0
- package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +38 -0
- package/lib/time-picker/time-picker.component.d.ts +183 -0
- package/lib/time-picker/time-picker.module.d.ts +14 -0
- package/lib/time-picker/time.utils.d.ts +57 -0
- package/lib/toast/toast/toast.component.d.ts +1 -1
- package/lib/toast/toast-body/toast-body.component.d.ts +1 -1
- package/lib/toast/toast-close.directive.d.ts +1 -1
- package/lib/toast/toast-header/toast-header.component.d.ts +1 -1
- package/lib/toast/toaster/toaster-host.directive.d.ts +1 -1
- package/lib/toast/toaster/toaster.component.d.ts +1 -1
- package/lib/tooltip/tooltip/tooltip.component.d.ts +1 -1
- package/lib/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/utilities/align.directive.d.ts +1 -1
- package/lib/utilities/bg-color.directive.d.ts +1 -1
- package/lib/utilities/border.directive.d.ts +1 -1
- package/lib/utilities/rounded.directive.d.ts +1 -1
- package/lib/utilities/text-color.directive.d.ts +1 -1
- package/lib/widget/widget-stat-a/widget-stat-a.component.d.ts +1 -1
- package/lib/widget/widget-stat-b/widget-stat-b.component.d.ts +1 -1
- package/lib/widget/widget-stat-c/widget-stat-c.component.d.ts +1 -1
- package/lib/widget/widget-stat-d/widget-stat-d.component.d.ts +1 -1
- package/lib/widget/widget-stat-e/widget-stat-e.component.d.ts +1 -1
- package/lib/widget/widget-stat-f/widget-stat-f.component.d.ts +1 -1
- package/package.json +13 -8
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
import { Component, ContentChildren, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { FormControl, FormGroup, NG_VALUE_ACCESSOR, Validators } from '@angular/forms';
|
|
3
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
4
|
+
import { TemplateIdDirective } from '../shared';
|
|
5
|
+
import { convert12hTo24h, convert24hTo12h, convertTimeToDate, getAmPm, getDayPeriods, getListOfHours, getListOfMinutes, getListOfSeconds, isHour12, isValidTime } from './time.utils';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
import * as i2 from "@angular/forms";
|
|
9
|
+
import * as i3 from "../form/form-control/form-control.directive";
|
|
10
|
+
import * as i4 from "../form/form-select/form-select.directive";
|
|
11
|
+
import * as i5 from "../form/input-group/input-group.component";
|
|
12
|
+
import * as i6 from "../form/input-group-text/input-group-text.directive";
|
|
13
|
+
import * as i7 from "../dropdown/dropdown/dropdown.component";
|
|
14
|
+
import * as i8 from "../dropdown/dropdown-menu/dropdown-menu.directive";
|
|
15
|
+
import * as i9 from "./time-picker-roll-col/time-picker-roll-col.component";
|
|
16
|
+
import * as i10 from "./time-picker-roll-col/time-picker-roll-am-pm.component";
|
|
17
|
+
export class TimePickerComponent {
|
|
18
|
+
constructor() {
|
|
19
|
+
this._cleaner = true;
|
|
20
|
+
/**
|
|
21
|
+
* Sets DateTime format options including timeZone
|
|
22
|
+
* @type DateTimeFormatOptions
|
|
23
|
+
* @default {}
|
|
24
|
+
* @note The date object doesn't store timeZone, it keeps the local timezone of the browser, regardless if you parsed UTC dates.
|
|
25
|
+
*/
|
|
26
|
+
this.dateTimeFormatOptions = {};
|
|
27
|
+
this._disabled = false;
|
|
28
|
+
this._indicator = true;
|
|
29
|
+
this._inputReadOnly = false;
|
|
30
|
+
/**
|
|
31
|
+
* Sets the default locale for components. If not set, it is inherited from the browser.
|
|
32
|
+
* @type string
|
|
33
|
+
* @default default
|
|
34
|
+
*/
|
|
35
|
+
this.locale = 'default';
|
|
36
|
+
/**
|
|
37
|
+
* Specifies short hint visible in time input.
|
|
38
|
+
* @type string
|
|
39
|
+
* @default 'Select time'
|
|
40
|
+
*/
|
|
41
|
+
this.placeholder = 'Select time';
|
|
42
|
+
this._seconds = false;
|
|
43
|
+
/**
|
|
44
|
+
* Set the time picker variant to a roll or select.
|
|
45
|
+
* @type 'roll' | 'select'
|
|
46
|
+
* @default 'roll'
|
|
47
|
+
*/
|
|
48
|
+
this.variant = 'roll';
|
|
49
|
+
this._visible = false;
|
|
50
|
+
this.timeChange = new EventEmitter(false);
|
|
51
|
+
this.templates = {};
|
|
52
|
+
this.hour12 = isHour12(this.locale);
|
|
53
|
+
this.dayPeriods = [
|
|
54
|
+
{ value: 'am', label: 'am' },
|
|
55
|
+
{ value: 'pm', label: 'pm' }
|
|
56
|
+
];
|
|
57
|
+
this._timeInputValue = this.time?.toLocaleTimeString(this.locale, { timeStyle: this.seconds ? 'medium' : 'short' }) ?? '';
|
|
58
|
+
this.selectTime = new FormGroup({
|
|
59
|
+
selectHours: new FormControl({ value: this.hour, disabled: this.disabled }),
|
|
60
|
+
selectMinutes: new FormControl({ value: this.minute, disabled: this.disabled }),
|
|
61
|
+
selectSeconds: new FormControl({ value: this.second, disabled: this.disabled }),
|
|
62
|
+
selectDayPeriod: new FormControl({ value: this.dayPeriod, disabled: this.disabled })
|
|
63
|
+
});
|
|
64
|
+
this.timeInput = new FormControl({ value: this.timeInputValue, disabled: this.disabled }, [
|
|
65
|
+
Validators.required
|
|
66
|
+
]);
|
|
67
|
+
this._hour = -1;
|
|
68
|
+
this._minute = -1;
|
|
69
|
+
this._second = -1;
|
|
70
|
+
this._dayPeriod = 'am';
|
|
71
|
+
this.onChange = (value) => { };
|
|
72
|
+
this.onTouched = () => { };
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Toggle visibility or set the content of the cleaner button.
|
|
76
|
+
* @type boolean
|
|
77
|
+
* @default true
|
|
78
|
+
*/
|
|
79
|
+
set cleaner(value) {
|
|
80
|
+
this._cleaner = coerceBooleanProperty(value);
|
|
81
|
+
}
|
|
82
|
+
get cleaner() {
|
|
83
|
+
return this._cleaner;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Toggle the disabled state for the component.
|
|
87
|
+
* @type boolean
|
|
88
|
+
* @default false
|
|
89
|
+
*/
|
|
90
|
+
set disabled(value) {
|
|
91
|
+
this._disabled = coerceBooleanProperty(value);
|
|
92
|
+
}
|
|
93
|
+
get disabled() {
|
|
94
|
+
return this._disabled;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Toggle visibility or set the content of the input indicator.
|
|
98
|
+
* @type boolean
|
|
99
|
+
* @default true
|
|
100
|
+
*/
|
|
101
|
+
set indicator(value) {
|
|
102
|
+
this._indicator = coerceBooleanProperty(value);
|
|
103
|
+
}
|
|
104
|
+
get indicator() {
|
|
105
|
+
return this._indicator;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Toggle the readonly state for the component.
|
|
109
|
+
* @type boolean
|
|
110
|
+
* @default false
|
|
111
|
+
*/
|
|
112
|
+
set inputReadOnly(value) {
|
|
113
|
+
this._inputReadOnly = coerceBooleanProperty(value);
|
|
114
|
+
}
|
|
115
|
+
get inputReadOnly() {
|
|
116
|
+
return this._inputReadOnly;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Toggle seconds visibility.
|
|
120
|
+
* @type boolean
|
|
121
|
+
* @default false
|
|
122
|
+
*/
|
|
123
|
+
set seconds(value) {
|
|
124
|
+
this._seconds = coerceBooleanProperty(value);
|
|
125
|
+
}
|
|
126
|
+
get seconds() {
|
|
127
|
+
return this._seconds;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Initial selected time.
|
|
131
|
+
* @type Date | string | null | number
|
|
132
|
+
* @default undefined
|
|
133
|
+
*/
|
|
134
|
+
set time(value) {
|
|
135
|
+
if (value && isValidTime(value)) {
|
|
136
|
+
const time = new Date(value);
|
|
137
|
+
this.dayPeriod = getAmPm(time, this.locale);
|
|
138
|
+
if (this._time?.getTime() !== time.getTime()) {
|
|
139
|
+
this._time = new Date(time.getTime());
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
this.clearTime();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
get time() {
|
|
147
|
+
return this._time;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Toggle the visibility of dropdown menu component.
|
|
151
|
+
* @type boolean
|
|
152
|
+
* @default false
|
|
153
|
+
*/
|
|
154
|
+
set visible(value) {
|
|
155
|
+
this._visible = coerceBooleanProperty(value);
|
|
156
|
+
}
|
|
157
|
+
get visible() {
|
|
158
|
+
return this._visible;
|
|
159
|
+
}
|
|
160
|
+
onBlur() {
|
|
161
|
+
this.onTouched();
|
|
162
|
+
}
|
|
163
|
+
set timeInputValue(value) {
|
|
164
|
+
this.timeInput.setValue(value);
|
|
165
|
+
this._timeInputValue = value;
|
|
166
|
+
}
|
|
167
|
+
get timeInputValue() {
|
|
168
|
+
return this._timeInputValue;
|
|
169
|
+
}
|
|
170
|
+
set hour(value) {
|
|
171
|
+
if (this._hour !== value) {
|
|
172
|
+
if (value < 0) {
|
|
173
|
+
this.clearTime();
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
this._hour = value;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
get hour() {
|
|
180
|
+
return this._hour;
|
|
181
|
+
}
|
|
182
|
+
set minute(value) {
|
|
183
|
+
if (this._minute !== value) {
|
|
184
|
+
if (value < 0) {
|
|
185
|
+
this.clearTime();
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
this._minute = value;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
get minute() {
|
|
192
|
+
return this._minute;
|
|
193
|
+
}
|
|
194
|
+
set second(value) {
|
|
195
|
+
if (this._second !== value) {
|
|
196
|
+
if (value < 0) {
|
|
197
|
+
this.clearTime();
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
this._second = value;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
get second() {
|
|
204
|
+
return this._second;
|
|
205
|
+
}
|
|
206
|
+
set dayPeriod(value) {
|
|
207
|
+
this._dayPeriod = value;
|
|
208
|
+
this.listOfHours12 = this.hour12 ? this.listOfHours?.filter(item => (item.dayPeriod && item.dayPeriod === value) || !item.dayPeriod) : this.listOfHours;
|
|
209
|
+
this.patchSelectTimeValues();
|
|
210
|
+
}
|
|
211
|
+
get dayPeriod() {
|
|
212
|
+
return this._dayPeriod;
|
|
213
|
+
}
|
|
214
|
+
setTime() {
|
|
215
|
+
this._hour = this._hour < 0 ? 0 : this._hour;
|
|
216
|
+
this._minute = this._minute < 0 ? 0 : this._minute;
|
|
217
|
+
this._second = this._second < 0 ? 0 : this._second;
|
|
218
|
+
const time = new Date(this._time?.getTime() || new Date());
|
|
219
|
+
time.setHours(this.hour, this.minute, this.second, 0);
|
|
220
|
+
this.time = time;
|
|
221
|
+
this.emitTime(time);
|
|
222
|
+
}
|
|
223
|
+
clearTime() {
|
|
224
|
+
if (this.time) {
|
|
225
|
+
this._time = undefined;
|
|
226
|
+
this.emitTime(undefined);
|
|
227
|
+
}
|
|
228
|
+
this._hour = -1;
|
|
229
|
+
this._minute = -1;
|
|
230
|
+
this._second = -1;
|
|
231
|
+
this.dayPeriod = 'am';
|
|
232
|
+
this.patchSelectTimeValues();
|
|
233
|
+
}
|
|
234
|
+
emitTime(time) {
|
|
235
|
+
const timeValue = !!time && isValidTime(time) ? new Date(time.getTime()) : undefined;
|
|
236
|
+
if (this._timeInternal?.getTime() !== timeValue?.getTime()) {
|
|
237
|
+
this.timeChange.emit(timeValue);
|
|
238
|
+
this.onChange(timeValue);
|
|
239
|
+
this.onTouched();
|
|
240
|
+
this._timeInternal = timeValue;
|
|
241
|
+
}
|
|
242
|
+
this.timeInputValue = this.time?.toLocaleTimeString(this.locale, { timeStyle: this.seconds ? 'medium' : 'short' }) ?? '';
|
|
243
|
+
}
|
|
244
|
+
ngOnInit() {
|
|
245
|
+
this.setTimeLists();
|
|
246
|
+
this.updateSelectTime();
|
|
247
|
+
}
|
|
248
|
+
ngOnChanges(changes) {
|
|
249
|
+
if (changes['time']) {
|
|
250
|
+
if (!changes['time'].firstChange) {
|
|
251
|
+
if (this._timeInternal?.getTime() !== changes['time'].currentValue?.getTime()) {
|
|
252
|
+
this.updateSelectTime();
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
ngAfterViewInit() {
|
|
258
|
+
setTimeout(() => {
|
|
259
|
+
this.contentTemplates.forEach((child) => {
|
|
260
|
+
this.templates[child.id] = child.templateRef;
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
setTimeLists() {
|
|
265
|
+
this.dayPeriods = getDayPeriods(this.locale, this.dateTimeFormatOptions);
|
|
266
|
+
this.hour12 = isHour12(this.locale);
|
|
267
|
+
this.listOfHours = this.listOfTimeSegments(getListOfHours, this.filterHours);
|
|
268
|
+
this.listOfMinutes = this.listOfTimeSegments(getListOfMinutes, this.filterMinutes);
|
|
269
|
+
this.listOfSeconds = this.listOfTimeSegments(getListOfSeconds, this.filterSeconds);
|
|
270
|
+
if (this.variant === 'select') {
|
|
271
|
+
const undefSegment = { value: -1, label: ' --', disabled: true };
|
|
272
|
+
this.listOfHours.unshift({ ...undefSegment });
|
|
273
|
+
this.listOfMinutes.unshift({ ...undefSegment });
|
|
274
|
+
this.listOfSeconds.unshift({ ...undefSegment });
|
|
275
|
+
}
|
|
276
|
+
this.listOfHours12 = this.hour12 ? this.listOfHours.filter(item => (item.dayPeriod && item.dayPeriod === this.dayPeriod) || !item.dayPeriod) : this.listOfHours;
|
|
277
|
+
}
|
|
278
|
+
updateSelectTime(time = this.time) {
|
|
279
|
+
if (!!time && isValidTime(time)) {
|
|
280
|
+
const hour = time.getHours() ?? 0;
|
|
281
|
+
const minute = time.getMinutes() ?? 0;
|
|
282
|
+
const second = this.seconds ? (time.getSeconds() ?? 0) : 0;
|
|
283
|
+
const closestSecond = this.closestTime(this.listOfSeconds, second);
|
|
284
|
+
const closestMinute = this.closestTime(this.listOfMinutes, minute);
|
|
285
|
+
const closestHour = this.closestTime(this.listOfHours, hour);
|
|
286
|
+
this.second = this.seconds ? closestSecond.value : 0;
|
|
287
|
+
this.minute = closestMinute.value;
|
|
288
|
+
this.hour = closestHour.value;
|
|
289
|
+
this.setTime();
|
|
290
|
+
this.patchSelectTimeValues();
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
closestTime(timeArray, timeSegment) {
|
|
294
|
+
let array = timeArray ?? [{ value: 0, label: '00' }];
|
|
295
|
+
if (this.time) {
|
|
296
|
+
array = timeArray.filter(el => el.value >= 0);
|
|
297
|
+
array = array.length ? array : timeArray;
|
|
298
|
+
}
|
|
299
|
+
return array.reduce((a, b) => {
|
|
300
|
+
return Math.abs(b.value - timeSegment) < Math.abs(a.value - timeSegment) ? b : a;
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
listOfTimeSegments(getListOfTimeSegments, filterTimeSegments) {
|
|
304
|
+
const list = getListOfTimeSegments(this.locale, this.dateTimeFormatOptions).filter((segment) => {
|
|
305
|
+
return typeof filterTimeSegments === 'function' ? filterTimeSegments(segment.value) : true;
|
|
306
|
+
});
|
|
307
|
+
return list.length ? list : getListOfTimeSegments(this.locale, this.dateTimeFormatOptions).slice(0, 1);
|
|
308
|
+
}
|
|
309
|
+
handleSelectDayPeriodChange(dayPeriod) {
|
|
310
|
+
if (dayPeriod !== this.dayPeriod) {
|
|
311
|
+
const hrs = this.time?.getHours() ?? (this.hour < 0 ? 0 : this.hour);
|
|
312
|
+
const hour = hrs > 12 ? convert24hTo12h(hrs) : convert12hTo24h(dayPeriod, hrs);
|
|
313
|
+
this.hour = this.closestTime(this.listOfHours, hour).value;
|
|
314
|
+
if (hour >= 0) {
|
|
315
|
+
this.setTime();
|
|
316
|
+
}
|
|
317
|
+
this.updateSelectTime();
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
handleSelectHoursChange(hour) {
|
|
321
|
+
this.hour = hour;
|
|
322
|
+
if (hour >= 0) {
|
|
323
|
+
this.setTime();
|
|
324
|
+
}
|
|
325
|
+
this.updateSelectTime();
|
|
326
|
+
}
|
|
327
|
+
handleSelectMinutesChange(minute) {
|
|
328
|
+
this.minute = minute;
|
|
329
|
+
if (minute >= 0) {
|
|
330
|
+
this.setTime();
|
|
331
|
+
}
|
|
332
|
+
this.updateSelectTime();
|
|
333
|
+
}
|
|
334
|
+
handleSelectSecondsChange(second) {
|
|
335
|
+
this.second = second;
|
|
336
|
+
if (second >= 0) {
|
|
337
|
+
this.setTime();
|
|
338
|
+
}
|
|
339
|
+
this.updateSelectTime();
|
|
340
|
+
}
|
|
341
|
+
patchSelectTimeValues() {
|
|
342
|
+
const dayPeriod = this.selectTime.get('selectDayPeriod')?.value;
|
|
343
|
+
if (this.dayPeriod !== dayPeriod) {
|
|
344
|
+
this.selectTime.patchValue({
|
|
345
|
+
selectDayPeriod: this.dayPeriod ?? 'am'
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
const hours = this.selectTime.get('selectHours')?.value;
|
|
349
|
+
const minutes = this.selectTime.get('selectMinutes')?.value;
|
|
350
|
+
const seconds = this.selectTime.get('selectSeconds')?.value;
|
|
351
|
+
const goUpdate = (this.second < 0 && this.minute < 0) || (this.hour >= 0 && this.minute >= 0 && this.second >= 0);
|
|
352
|
+
const timeChanged = (this.hour !== hours) || (this.minute !== minutes) || (this.second !== seconds);
|
|
353
|
+
if (goUpdate && timeChanged) {
|
|
354
|
+
if (this.hour !== hours) {
|
|
355
|
+
this.selectTime.patchValue({
|
|
356
|
+
selectHours: this.hour ?? 0
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
if (this.minute !== minutes) {
|
|
360
|
+
this.selectTime.patchValue({
|
|
361
|
+
selectMinutes: this.minute ?? 0
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
if (this.second !== seconds) {
|
|
365
|
+
this.selectTime.patchValue({
|
|
366
|
+
selectSeconds: this.second ?? 0
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
trackByHour(index, hour) {
|
|
372
|
+
return hour;
|
|
373
|
+
}
|
|
374
|
+
writeValue(value) {
|
|
375
|
+
this.time = value;
|
|
376
|
+
}
|
|
377
|
+
registerOnChange(fn) {
|
|
378
|
+
this.onChange = fn;
|
|
379
|
+
}
|
|
380
|
+
registerOnTouched(fn) {
|
|
381
|
+
this.onTouched = fn;
|
|
382
|
+
}
|
|
383
|
+
setDisabledState(isDisabled) {
|
|
384
|
+
this.disabled = isDisabled;
|
|
385
|
+
}
|
|
386
|
+
handleTimeInputChange($event) {
|
|
387
|
+
const value = $event.target?.value;
|
|
388
|
+
if (!isValidTime(value)) {
|
|
389
|
+
this.clearTime();
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
const time = convertTimeToDate(value);
|
|
393
|
+
this.updateSelectTime(time ?? new Date(Date.now()));
|
|
394
|
+
}
|
|
395
|
+
handleClear($event) {
|
|
396
|
+
this.clearTime();
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
TimePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TimePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
400
|
+
TimePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: TimePickerComponent, selector: "c-time-picker", 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", visible: "visible" }, outputs: { timeChange: "timeChange" }, host: { listeners: { "blur": "onBlur()" } }, providers: [
|
|
401
|
+
{
|
|
402
|
+
provide: NG_VALUE_ACCESSOR,
|
|
403
|
+
useExisting: forwardRef(() => TimePickerComponent),
|
|
404
|
+
multi: true
|
|
405
|
+
}
|
|
406
|
+
], queries: [{ propertyName: "contentTemplates", predicate: TemplateIdDirective, descendants: true }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], exportAs: ["cTimePicker"], 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'\" [visible]=\"visible\">\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 *ngIf=\"templates?.timePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.timePickerFooter; context: {$implicit: dropdown}\"></ng-container>\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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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"] }] });
|
|
407
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: TimePickerComponent, decorators: [{
|
|
408
|
+
type: Component,
|
|
409
|
+
args: [{ selector: 'c-time-picker', exportAs: 'cTimePicker', providers: [
|
|
410
|
+
{
|
|
411
|
+
provide: NG_VALUE_ACCESSOR,
|
|
412
|
+
useExisting: forwardRef(() => TimePickerComponent),
|
|
413
|
+
multi: true
|
|
414
|
+
}
|
|
415
|
+
], 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'\" [visible]=\"visible\">\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 *ngIf=\"templates?.timePickerFooter\" class=\"picker-footer\">\n <ng-container *ngTemplateOutlet=\"templates?.timePickerFooter; context: {$implicit: dropdown}\"></ng-container>\n </div>\n </div>\n</c-dropdown>\n", styles: [".disabled{pointer-events:none}\n"] }]
|
|
416
|
+
}], ctorParameters: function () { return []; }, propDecorators: { cleaner: [{
|
|
417
|
+
type: Input
|
|
418
|
+
}], dateTimeFormatOptions: [{
|
|
419
|
+
type: Input
|
|
420
|
+
}], disabled: [{
|
|
421
|
+
type: Input
|
|
422
|
+
}], filterHours: [{
|
|
423
|
+
type: Input
|
|
424
|
+
}], filterMinutes: [{
|
|
425
|
+
type: Input
|
|
426
|
+
}], filterSeconds: [{
|
|
427
|
+
type: Input
|
|
428
|
+
}], indicator: [{
|
|
429
|
+
type: Input
|
|
430
|
+
}], inputReadOnly: [{
|
|
431
|
+
type: Input
|
|
432
|
+
}], locale: [{
|
|
433
|
+
type: Input
|
|
434
|
+
}], placeholder: [{
|
|
435
|
+
type: Input
|
|
436
|
+
}], seconds: [{
|
|
437
|
+
type: Input
|
|
438
|
+
}], size: [{
|
|
439
|
+
type: Input
|
|
440
|
+
}], time: [{
|
|
441
|
+
type: Input
|
|
442
|
+
}], variant: [{
|
|
443
|
+
type: Input
|
|
444
|
+
}], visible: [{
|
|
445
|
+
type: Input
|
|
446
|
+
}], timeChange: [{
|
|
447
|
+
type: Output
|
|
448
|
+
}], onBlur: [{
|
|
449
|
+
type: HostListener,
|
|
450
|
+
args: ['blur']
|
|
451
|
+
}], dropdown: [{
|
|
452
|
+
type: ViewChild,
|
|
453
|
+
args: ['dropdown']
|
|
454
|
+
}], contentTemplates: [{
|
|
455
|
+
type: ContentChildren,
|
|
456
|
+
args: [TemplateIdDirective, { descendants: true }]
|
|
457
|
+
}] } });
|
|
458
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RyxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWhELE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGlCQUFpQixFQUdqQixPQUFPLEVBQ1AsYUFBYSxFQUNiLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixXQUFXLEVBRVosTUFBTSxjQUFjLENBQUM7Ozs7Ozs7Ozs7OztBQWV0QixNQUFNLE9BQU8sbUJBQW1CO0lBRTlCO1FBdUJRLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFakM7Ozs7O1dBS0c7UUFDTSwwQkFBcUIsR0FBMEIsRUFBRSxDQUFDO1FBZ0JuRCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBcUMzQixlQUFVLEdBQVksSUFBSSxDQUFDO1FBZ0IzQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUV4Qzs7OztXQUlHO1FBQ00sV0FB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QWlCRixhQUFhO3NCQURoQixLQUFLO2dCQWdCRyxNQUFNO3NCQUFkLEtBQUs7Z0JBT0csV0FBVztzQkFBbkIsS0FBSztnQkFRRixPQUFPO3NCQURWLEtBQUs7Z0JBZ0JHLElBQUk7c0JBQVosS0FBSztnQkFRRixJQUFJO3NCQURQLEtBQUs7Z0JBeUJHLE9BQU87c0JBQWYsS0FBSztnQkFRRixPQUFPO3NCQURWLEtBQUs7Z0JBU0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFFZSxNQUFNO3NCQUEzQixZQUFZO3VCQUFDLE1BQU07Z0JBSUcsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUd3QyxnQkFBZ0I7c0JBQTVFLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbmltcG9ydCB7IFRlbXBsYXRlSWREaXJlY3RpdmUgfSBmcm9tICcuLi9zaGFyZWQnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0MTJoVG8yNGgsXG4gIGNvbnZlcnQyNGhUbzEyaCxcbiAgY29udmVydFRpbWVUb0RhdGUsXG4gIERhdGVUaW1lRm9ybWF0T3B0aW9ucyxcbiAgRGF5UGVyaW9kLFxuICBnZXRBbVBtLFxuICBnZXREYXlQZXJpb2RzLFxuICBnZXRMaXN0T2ZIb3VycyxcbiAgZ2V0TGlzdE9mTWludXRlcyxcbiAgZ2V0TGlzdE9mU2Vjb25kcyxcbiAgaXNIb3VyMTIsXG4gIGlzVmFsaWRUaW1lLFxuICBJVGltZVZhbHVlXG59IGZyb20gJy4vdGltZS51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2MtdGltZS1waWNrZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBleHBvcnRBczogJ2NUaW1lUGlja2VyJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaW1lUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEFmdGVyVmlld0luaXQge1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfY2xlYW5lcjogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZGlzYWJsZWQ6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2luZGljYXRvcjogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaW5wdXRSZWFkT25seTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2Vjb25kczogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfdmlzaWJsZTogQm9vbGVhbklucHV0O1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzaWJpbGl0eSBvciBzZXQgdGhlIGNvbnRlbnQgb2YgdGhlIGNsZWFuZXIgYnV0dG9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBjbGVhbmVyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2xlYW5lciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgY2xlYW5lcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xlYW5lcjtcbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFuZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTZXRzIERhdGVUaW1lIGZvcm1hdCBvcHRpb25zIGluY2x1ZGluZyB0aW1lWm9uZVxuICAgKiBAdHlwZSBEYXRlVGltZUZvcm1hdE9wdGlvbnNcbiAgICogQGRlZmF1bHQge31cbiAgICogQG5vdGUgVGhlIGRhdGUgb2JqZWN0IGRvZXNuJ3Qgc3RvcmUgdGltZVpvbmUsIGl0IGtlZXBzIHRoZSBsb2NhbCB0aW1lem9uZSBvZiB0aGUgYnJvd3NlciwgcmVnYXJkbGVzcyBpZiB5b3UgcGFyc2VkIFVUQyBkYXRlcy5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGVUaW1lRm9ybWF0T3B0aW9uczogRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge307XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB0aGUgZGlzYWJsZWQgc3RhdGUgZm9yIHRoZSBjb21wb25lbnQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXIgYXZhaWxhYmxlIGhvdXJzIHRvIHBpY2suXG4gICAqIEB0eXBlICh2YWx1ZTogbnVtYmVyKSA9PiBib29sZWFuO1xuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIGZpbHRlckhvdXJzPzogKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZpbHRlciBhdmFpbGFibGUgbWludXRlcyB0byBwaWNrLlxuICAgKiBAdHlwZSAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBmaWx0ZXJNaW51dGVzPzogKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZpbHRlciBhdmFpbGFibGUgc2Vjb25kcyB0byBwaWNrLlxuICAgKiBAdHlwZSAodmFsdWU6IG51bWJlcikgPT4gYm9vbGVhbjtcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBmaWx0ZXJTZWNvbmRzPzogKHZhbHVlOiBudW1iZXIpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSB2aXNpYmlsaXR5IG9yIHNldCB0aGUgY29udGVudCBvZiB0aGUgaW5wdXQgaW5kaWNhdG9yLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBpbmRpY2F0b3IodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmRpY2F0b3IgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG5cbiAgZ2V0IGluZGljYXRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5faW5kaWNhdG9yO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5kaWNhdG9yOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSByZWFkb25seSBzdGF0ZSBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGlucHV0UmVhZE9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbnB1dFJlYWRPbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCBpbnB1dFJlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dFJlYWRPbmx5O1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5wdXRSZWFkT25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkZWZhdWx0IGxvY2FsZSBmb3IgY29tcG9uZW50cy4gSWYgbm90IHNldCwgaXQgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGJyb3dzZXIuXG4gICAqIEB0eXBlIHN0cmluZ1xuICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAqL1xuICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyA9ICdkZWZhdWx0JztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHNob3J0IGhpbnQgdmlzaWJsZSBpbiB0aW1lIGlucHV0LlxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgJ1NlbGVjdCB0aW1lJ1xuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QgdGltZSc7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZSBzZWNvbmRzIHZpc2liaWxpdHkuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzZWNvbmRzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2Vjb25kcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2Vjb25kcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vjb25kcztcbiAgfVxuXG4gIHByaXZhdGUgX3NlY29uZHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU2l6ZSB0aGUgY29tcG9uZW50IHNtYWxsIG9yIGxhcmdlLlxuICAgKiBAdHlwZSAnc20nIHwgJ2xnJyB8IHVuZGVmaW5lZFxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpIHNpemU/OiAnc20nIHwgJ2xnJztcblxuICAvKipcbiAgICogSW5pdGlhbCBzZWxlY3RlZCB0aW1lLlxuICAgKiBAdHlwZSBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IG51bWJlclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB0aW1lKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlICYmIGlzVmFsaWRUaW1lKHZhbHVlKSkge1xuICAgICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgIHRoaXMuZGF5UGVyaW9kID0gZ2V0QW1QbSh0aW1lLCB0aGlzLmxvY2FsZSk7XG4gICAgICBpZiAodGhpcy5fdGltZT8uZ2V0VGltZSgpICE9PSB0aW1lLmdldFRpbWUoKSkge1xuICAgICAgICB0aGlzLl90aW1lID0gbmV3IERhdGUodGltZS5nZXRUaW1lKCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyVGltZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB0aW1lKCkge1xuICAgIHJldHVybiB0aGlzLl90aW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBfdGltZT86IERhdGU7XG4gIHByaXZhdGUgX3RpbWVJbnRlcm5hbD86IERhdGU7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdGltZSBwaWNrZXIgdmFyaWFudCB0byBhIHJvbGwgb3Igc2VsZWN0LlxuICAgKiBAdHlwZSAncm9sbCcgfCAnc2VsZWN0J1xuICAgKiBAZGVmYXVsdCAncm9sbCdcbiAgICovXG4gIEBJbnB1dCgpIHZhcmlhbnQ6ICdyb2xsJyB8ICdzZWxlY3QnID0gJ3JvbGwnO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgZHJvcGRvd24gbWVudSBjb21wb25lbnQuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fdmlzaWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgZ2V0IHZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cbiAgcHJpdmF0ZSBfdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSB0aW1lQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0ZSB8IHVuZGVmaW5lZD4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGUgfCB1bmRlZmluZWQ+KGZhbHNlKTtcblxuICBASG9zdExpc3RlbmVyKCdibHVyJykgb25CbHVyKCkge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBAVmlld0NoaWxkKCdkcm9wZG93bicpIGRyb3Bkb3duPzogRWxlbWVudFJlZjtcblxuICB0ZW1wbGF0ZXM6IGFueSA9IHt9O1xuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlSWREaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY29udGVudFRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUZW1wbGF0ZUlkRGlyZWN0aXZlPjtcblxuICBsaXN0T2ZIb3VycyE6IElUaW1lVmFsdWVbXTtcbiAgbGlzdE9mSG91cnMxMiE6IElUaW1lVmFsdWVbXTtcbiAgbGlzdE9mTWludXRlcyE6IElUaW1lVmFsdWVbXTtcbiAgbGlzdE9mU2Vjb25kcyE6IElUaW1lVmFsdWVbXTtcbiAgaG91cjEyOiBib29sZWFuID0gaXNIb3VyMTIodGhpcy5sb2NhbGUpO1xuICBkYXlQZXJpb2RzID0gW1xuICAgIHsgdmFsdWU6ICdhbScsIGxhYmVsOiAnYW0nIH0sXG4gICAgeyB2YWx1ZTogJ3BtJywgbGFiZWw6ICdwbScgfVxuICBdO1xuXG4gIHNldCB0aW1lSW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy50aW1lSW5wdXQuc2V0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuX3RpbWVJbnB1dFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgdGltZUlucHV0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGltZUlucHV0VmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF90aW1lSW5wdXRWYWx1ZTogc3RyaW5nID0gdGhpcy50aW1lPy50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGUsIHsgdGltZVN0eWxlOiB0aGlzLnNlY29uZHMgPyAnbWVkaXVtJyA6ICdzaG9ydCcgfSkgPz8gJyc7XG5cbiAgc2VsZWN0VGltZSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHNlbGVjdEhvdXJzOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5ob3VyLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9KSxcbiAgICBzZWxlY3RNaW51dGVzOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5taW51dGUsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0pLFxuICAgIHNlbGVjdFNlY29uZHM6IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLnNlY29uZCwgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQgfSksXG4gICAgc2VsZWN0RGF5UGVyaW9kOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5kYXlQZXJpb2QsIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkIH0pXG4gIH0pO1xuXG4gIHRpbWVJbnB1dCA9IG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiB0aGlzLnRpbWVJbnB1dFZhbHVlLCBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCB9LCBbXG4gICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxuICBdKTtcblxuICBzZXQgaG91cih2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX2hvdXIgIT09IHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2hvdXIgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgaG91cigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9ob3VyO1xuICB9XG5cbiAgcHJpdmF0ZSBfaG91ciA9IC0xO1xuXG4gIHNldCBtaW51dGUodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLl9taW51dGUgIT09IHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPCAwKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX21pbnV0ZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBtaW51dGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWludXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBfbWludXRlID0gLTE7XG5cbiAgc2V0IHNlY29uZCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3NlY29uZCAhPT0gdmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA8IDApIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5fc2Vjb25kID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNlY29uZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zZWNvbmQ7XG4gIH1cblxuICBwcml2YXRlIF9zZWNvbmQgPSAtMTtcblxuICBzZXQgZGF5UGVyaW9kKHZhbHVlKSB7XG4gICAgdGhpcy5fZGF5UGVyaW9kID0gdmFsdWU7XG4gICAgdGhpcy5saXN0T2ZIb3VyczEyID0gdGhpcy5ob3VyMTIgPyB0aGlzLmxpc3RPZkhvdXJzPy5maWx0ZXIoaXRlbSA9PiAoaXRlbS5kYXlQZXJpb2QgJiYgaXRlbS5kYXlQZXJpb2QgPT09IHZhbHVlKSB8fCAhaXRlbS5kYXlQZXJpb2QpIDogdGhpcy5saXN0T2ZIb3VycztcbiAgICB0aGlzLnBhdGNoU2VsZWN0VGltZVZhbHVlcygpO1xuICB9XG5cbiAgZ2V0IGRheVBlcmlvZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF5UGVyaW9kO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGF5UGVyaW9kOiBEYXlQZXJpb2QgPSAnYW0nO1xuXG4gIHNldFRpbWUoKSB7XG4gICAgdGhpcy5faG91ciA9IHRoaXMuX2hvdXIgPCAwID8gMCA6IHRoaXMuX2hvdXI7XG4gICAgdGhpcy5fbWludXRlID0gdGhpcy5fbWludXRlIDwgMCA/IDAgOiB0aGlzLl9taW51dGU7XG4gICAgdGhpcy5fc2Vjb25kID0gdGhpcy5fc2Vjb25kIDwgMCA/IDAgOiB0aGlzLl9zZWNvbmQ7XG5cbiAgICBjb25zdCB0aW1lID0gbmV3IERhdGUodGhpcy5fdGltZT8uZ2V0VGltZSgpIHx8IG5ldyBEYXRlKCkpO1xuICAgIHRpbWUuc2V0SG91cnModGhpcy5ob3VyLCB0aGlzLm1pbnV0ZSwgdGhpcy5zZWNvbmQsIDApO1xuICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgdGhpcy5lbWl0VGltZSh0aW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclRpbWUoKSB7XG4gICAgaWYgKHRoaXMudGltZSkge1xuICAgICAgdGhpcy5fdGltZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZW1pdFRpbWUodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgdGhpcy5faG91ciA9IC0xO1xuICAgIHRoaXMuX21pbnV0ZSA9IC0xO1xuICAgIHRoaXMuX3NlY29uZCA9IC0xO1xuICAgIHRoaXMuZGF5UGVyaW9kID0gJ2FtJztcbiAgICB0aGlzLnBhdGNoU2VsZWN0VGltZVZhbHVlcygpO1xuICB9XG5cbiAgZW1pdFRpbWUodGltZTogRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHRpbWVWYWx1ZSA9ICEhdGltZSAmJiBpc1ZhbGlkVGltZSh0aW1lKSA/IG5ldyBEYXRlKHRpbWUuZ2V0VGltZSgpKSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5fdGltZUludGVybmFsPy5nZXRUaW1lKCkgIT09IHRpbWVWYWx1ZT8uZ2V0VGltZSgpKSB7XG4gICAgICB0aGlzLnRpbWVDaGFuZ2UuZW1pdCh0aW1lVmFsdWUpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aW1lVmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuX3RpbWVJbnRlcm5hbCA9IHRpbWVWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IHRoaXMudGltZT8udG9Mb2NhbGVUaW1lU3RyaW5nKHRoaXMubG9jYWxlLCB7IHRpbWVTdHlsZTogdGhpcy5zZWNvbmRzID8gJ21lZGl1bScgOiAnc2hvcnQnIH0pID8/ICcnO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRUaW1lTGlzdHMoKTtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdFRpbWUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sndGltZSddKSB7XG4gICAgICBpZiAoIWNoYW5nZXNbJ3RpbWUnXS5maXJzdENoYW5nZSkge1xuICAgICAgICBpZiAodGhpcy5fdGltZUludGVybmFsPy5nZXRUaW1lKCkgIT09IGNoYW5nZXNbJ3RpbWUnXS5jdXJyZW50VmFsdWU/LmdldFRpbWUoKSkge1xuICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLmZvckVhY2goKGNoaWxkOiBUZW1wbGF0ZUlkRGlyZWN0aXZlKSA9PiB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzW2NoaWxkLmlkXSA9IGNoaWxkLnRlbXBsYXRlUmVmO1xuICAgICAgfSk7XG4gICAgfSlcbiAgfVxuXG4gIHNldFRpbWVMaXN0cygpIHtcbiAgICB0aGlzLmRheVBlcmlvZHMgPSBnZXREYXlQZXJpb2RzKHRoaXMubG9jYWxlLCB0aGlzLmRhdGVUaW1lRm9ybWF0T3B0aW9ucyk7XG4gICAgdGhpcy5ob3VyMTIgPSBpc0hvdXIxMih0aGlzLmxvY2FsZSk7XG4gICAgdGhpcy5saXN0T2ZIb3VycyA9IHRoaXMubGlzdE9mVGltZVNlZ21lbnRzKGdldExpc3RPZkhvdXJzLCB0aGlzLmZpbHRlckhvdXJzKTtcbiAgICB0aGlzLmxpc3RPZk1pbnV0ZXMgPSB0aGlzLmxpc3RPZlRpbWVTZWdtZW50cyhnZXRMaXN0T2ZNaW51dGVzLCB0aGlzLmZpbHRlck1pbnV0ZXMpO1xuICAgIHRoaXMubGlzdE9mU2Vjb25kcyA9IHRoaXMubGlzdE9mVGltZVNlZ21lbnRzKGdldExpc3RPZlNlY29uZHMsIHRoaXMuZmlsdGVyU2Vjb25kcyk7XG4gICAgaWYgKHRoaXMudmFyaWFudCA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIGNvbnN0IHVuZGVmU2VnbWVudCA9IHsgdmFsdWU6IC0xLCBsYWJlbDogJyAtLScsIGRpc2FibGVkOiB0cnVlIH07XG4gICAgICB0aGlzLmxpc3RPZkhvdXJzLnVuc2hpZnQoeyAuLi51bmRlZlNlZ21lbnQgfSk7XG4gICAgICB0aGlzLmxpc3RPZk1pbnV0ZXMudW5zaGlmdCh7IC4uLnVuZGVmU2VnbWVudCB9KTtcbiAgICAgIHRoaXMubGlzdE9mU2Vjb25kcy51bnNoaWZ0KHsgLi4udW5kZWZTZWdtZW50IH0pO1xuICAgIH1cbiAgICB0aGlzLmxpc3RPZkhvdXJzMTIgPSB0aGlzLmhvdXIxMiA/IHRoaXMubGlzdE9mSG91cnMuZmlsdGVyKGl0ZW0gPT4gKGl0ZW0uZGF5UGVyaW9kICYmIGl0ZW0uZGF5UGVyaW9kID09PSB0aGlzLmRheVBlcmlvZCkgfHwgIWl0ZW0uZGF5UGVyaW9kKSA6IHRoaXMubGlzdE9mSG91cnM7XG4gIH1cblxuICB1cGRhdGVTZWxlY3RUaW1lKHRpbWUgPSB0aGlzLnRpbWUpIHtcbiAgICBpZiAoISF0aW1lICYmIGlzVmFsaWRUaW1lKHRpbWUpKSB7XG4gICAgICBjb25zdCBob3VyID0gdGltZS5nZXRIb3VycygpID8/IDA7XG4gICAgICBjb25zdCBtaW51dGUgPSB0aW1lLmdldE1pbnV0ZXMoKSA/PyAwO1xuICAgICAgY29uc3Qgc2Vjb25kID0gdGhpcy5zZWNvbmRzID8gKHRpbWUuZ2V0U2Vjb25kcygpID8/IDApIDogMDtcblxuICAgICAgY29uc3QgY2xvc2VzdFNlY29uZCA9IHRoaXMuY2xvc2VzdFRpbWUodGhpcy5saXN0T2ZTZWNvbmRzLCBzZWNvbmQpO1xuICAgICAgY29uc3QgY2xvc2VzdE1pbnV0ZSA9IHRoaXMuY2xvc2VzdFRpbWUodGhpcy5saXN0T2ZNaW51dGVzLCBtaW51dGUpO1xuICAgICAgY29uc3QgY2xvc2VzdEhvdXIgPSB0aGlzLmNsb3Nlc3RUaW1lKHRoaXMubGlzdE9mSG91cnMsIGhvdXIpO1xuXG4gICAgICB0aGlzLnNlY29uZCA9IHRoaXMuc2Vjb25kcyA/IGNsb3Nlc3RTZWNvbmQudmFsdWUgOiAwO1xuICAgICAgdGhpcy5taW51dGUgPSBjbG9zZXN0TWludXRlLnZhbHVlO1xuICAgICAgdGhpcy5ob3VyID0gY2xvc2VzdEhvdXIudmFsdWU7XG4gICAgICB0aGlzLnNldFRpbWUoKTtcbiAgICAgIHRoaXMucGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VzdFRpbWUodGltZUFycmF5OiBJVGltZVZhbHVlW10sIHRpbWVTZWdtZW50OiBudW1iZXIpIHtcbiAgICBsZXQgYXJyYXkgPSB0aW1lQXJyYXkgPz8gW3sgdmFsdWU6IDAsIGxhYmVsOiAnMDAnIH1dO1xuICAgIGlmICh0aGlzLnRpbWUpIHtcbiAgICAgIGFycmF5ID0gdGltZUFycmF5LmZpbHRlcihlbCA9PiBlbC52YWx1ZSA+PSAwKTtcbiAgICAgIGFycmF5ID0gYXJyYXkubGVuZ3RoID8gYXJyYXkgOiB0aW1lQXJyYXk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheS5yZWR1Y2UoKGE6IElUaW1lVmFsdWUsIGI6IElUaW1lVmFsdWUpID0+IHtcbiAgICAgIHJldHVybiBNYXRoLmFicyhiLnZhbHVlIC0gdGltZVNlZ21lbnQpIDwgTWF0aC5hYnMoYS52YWx1ZSAtIHRpbWVTZWdtZW50KSA/IGIgOiBhO1xuICAgIH0pO1xuICB9XG5cbiAgbGlzdE9mVGltZVNlZ21lbnRzKGdldExpc3RPZlRpbWVTZWdtZW50czogKGxvY2FsZTogc3RyaW5nLCBkYXRlVGltZUZvcm1hdE9wdGlvbnM6IERhdGVUaW1lRm9ybWF0T3B0aW9ucykgPT4gSVRpbWVWYWx1ZVtdLCBmaWx0ZXJUaW1lU2VnbWVudHM6ICgodGltZVNlZ21lbnRWYWx1ZTogbnVtYmVyKSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGxpc3QgPSBnZXRMaXN0T2ZUaW1lU2VnbWVudHModGhpcy5sb2NhbGUsIHRoaXMuZGF0ZVRpbWVGb3JtYXRPcHRpb25zKS5maWx0ZXIoKHNlZ21lbnQ6IElUaW1lVmFsdWUpID0+IHtcbiAgICAgIHJldHVybiB0eXBlb2YgZmlsdGVyVGltZVNlZ21lbnRzID09PSAnZnVuY3Rpb24nID8gZmlsdGVyVGltZVNlZ21lbnRzKHNlZ21lbnQudmFsdWUpIDogdHJ1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gbGlzdC5sZW5ndGggPyBsaXN0IDogZ2V0TGlzdE9mVGltZVNlZ21lbnRzKHRoaXMubG9jYWxlLCB0aGlzLmRhdGVUaW1lRm9ybWF0T3B0aW9ucykuc2xpY2UoMCwgMSk7XG4gIH1cblxuICBoYW5kbGVTZWxlY3REYXlQZXJpb2RDaGFuZ2UoZGF5UGVyaW9kOiBEYXlQZXJpb2QpIHtcbiAgICBpZiAoZGF5UGVyaW9kICE9PSB0aGlzLmRheVBlcmlvZCkge1xuICAgICAgY29uc3QgaHJzID0gdGhpcy50aW1lPy5nZXRIb3VycygpID8/ICh0aGlzLmhvdXIgPCAwID8gMCA6IHRoaXMuaG91cik7XG4gICAgICBjb25zdCBob3VyID0gaHJzID4gMTIgPyBjb252ZXJ0MjRoVG8xMmgoaHJzKSA6IGNvbnZlcnQxMmhUbzI0aChkYXlQZXJpb2QsIGhycyk7XG4gICAgICB0aGlzLmhvdXIgPSB0aGlzLmNsb3Nlc3RUaW1lKHRoaXMubGlzdE9mSG91cnMsIGhvdXIpLnZhbHVlO1xuICAgICAgaWYgKGhvdXIgPj0gMCkge1xuICAgICAgICB0aGlzLnNldFRpbWUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVNlbGVjdEhvdXJzQ2hhbmdlKGhvdXI6IG51bWJlcikge1xuICAgIHRoaXMuaG91ciA9IGhvdXI7XG4gICAgaWYgKGhvdXIgPj0gMCkge1xuICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICB9XG5cbiAgaGFuZGxlU2VsZWN0TWludXRlc0NoYW5nZShtaW51dGU6IG51bWJlcikge1xuICAgIHRoaXMubWludXRlID0gbWludXRlO1xuICAgIGlmIChtaW51dGUgPj0gMCkge1xuICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICB9XG5cbiAgaGFuZGxlU2VsZWN0U2Vjb25kc0NoYW5nZShzZWNvbmQ6IG51bWJlcikge1xuICAgIHRoaXMuc2Vjb25kID0gc2Vjb25kO1xuICAgIGlmIChzZWNvbmQgPj0gMCkge1xuICAgICAgdGhpcy5zZXRUaW1lKCk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSgpO1xuICB9XG5cbiAgcGF0Y2hTZWxlY3RUaW1lVmFsdWVzKCkge1xuICAgIGNvbnN0IGRheVBlcmlvZCA9IHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdERheVBlcmlvZCcpPy52YWx1ZTtcbiAgICBpZiAodGhpcy5kYXlQZXJpb2QgIT09IGRheVBlcmlvZCkge1xuICAgICAgdGhpcy5zZWxlY3RUaW1lLnBhdGNoVmFsdWUoe1xuICAgICAgICBzZWxlY3REYXlQZXJpb2Q6IHRoaXMuZGF5UGVyaW9kID8/ICdhbSdcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBob3VycyA9IHRoaXMuc2VsZWN0VGltZS5nZXQoJ3NlbGVjdEhvdXJzJyk/LnZhbHVlO1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RNaW51dGVzJyk/LnZhbHVlO1xuICAgIGNvbnN0IHNlY29uZHMgPSB0aGlzLnNlbGVjdFRpbWUuZ2V0KCdzZWxlY3RTZWNvbmRzJyk/LnZhbHVlO1xuICAgIGNvbnN0IGdvVXBkYXRlID0gKHRoaXMuc2Vjb25kIDwgMCAmJiB0aGlzLm1pbnV0ZSA8IDApIHx8ICh0aGlzLmhvdXIgPj0gMCAmJiB0aGlzLm1pbnV0ZSA+PSAwICYmIHRoaXMuc2Vjb25kID49IDApO1xuICAgIGNvbnN0IHRpbWVDaGFuZ2VkID0gKHRoaXMuaG91ciAhPT0gaG91cnMpIHx8ICh0aGlzLm1pbnV0ZSAhPT0gbWludXRlcykgfHwgKHRoaXMuc2Vjb25kICE9PSBzZWNvbmRzKTtcbiAgICBpZiAoZ29VcGRhdGUgJiYgdGltZUNoYW5nZWQpIHtcbiAgICAgIGlmICh0aGlzLmhvdXIgIT09IGhvdXJzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0VGltZS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICBzZWxlY3RIb3VyczogdGhpcy5ob3VyID8/IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5taW51dGUgIT09IG1pbnV0ZXMpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RUaW1lLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHNlbGVjdE1pbnV0ZXM6IHRoaXMubWludXRlID8/IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWNvbmQgIT09IHNlY29uZHMpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RUaW1lLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHNlbGVjdFNlY29uZHM6IHRoaXMuc2Vjb25kID8/IDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeUhvdXIoaW5kZXg6IG51bWJlciwgaG91cjogSVRpbWVWYWx1ZSkge1xuICAgIHJldHVybiBob3VyO1xuICB9XG5cbiAgb25DaGFuZ2UgPSAodmFsdWU6IERhdGUgfCB1bmRlZmluZWQpID0+IHt9O1xuICBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBoYW5kbGVUaW1lSW5wdXRDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICRldmVudC50YXJnZXQ/LnZhbHVlO1xuICAgIGlmICghaXNWYWxpZFRpbWUodmFsdWUpKSB7XG4gICAgICB0aGlzLmNsZWFyVGltZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0aW1lID0gY29udmVydFRpbWVUb0RhdGUodmFsdWUpO1xuICAgIHRoaXMudXBkYXRlU2VsZWN0VGltZSh0aW1lID8/IG5ldyBEYXRlKERhdGUubm93KCkpKTtcbiAgfVxuXG4gIGhhbmRsZUNsZWFyKCRldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImRhdGUtcGlja2VyLXRpbWVwaWNrZXJzXCIgKm5nSWY9XCJ2YXJpYW50PT09J3NlbGVjdCdcIj5cbiAgPGRpdiBjbGFzcz1cInBpY2tlciB0aW1lLXBpY2tlclwiPlxuICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJzZWxlY3RUaW1lXCIgY2xhc3M9XCJ0aW1lLXBpY2tlci1ib2R5XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRpbWUtcGlja2VyLWlubGluZS1pY29uXCI+PC9zcGFuPlxuICAgICAgPHNlbGVjdCBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCIgY1NlbGVjdCBjbGFzcz1cIm1zLTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RIb3Vyc1wiIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdEhvdXJzQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaG91ciBvZiBsaXN0T2ZIb3VyczEyOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5SG91clwiIFtuZ1ZhbHVlXT1cImhvdXIudmFsdWVcIiBbYXR0ci5kaXNhYmxlZF09XCJob3VyLmRpc2FibGVkIHx8IG51bGxcIj57e2hvdXIubGFiZWx9fTwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgICB7eycgOid9fTxzZWxlY3QgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiIGNTZWxlY3QgY2xhc3M9XCJtcy0wXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0TWludXRlc1wiIChuZ01vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdE1pbnV0ZXNDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbWludXRlIG9mIGxpc3RPZk1pbnV0ZXNcIiBbbmdWYWx1ZV09XCJtaW51dGUudmFsdWVcIiBbYXR0ci5kaXNhYmxlZF09XCJtaW51dGUuZGlzYWJsZWQgfHwgbnVsbFwiPnt7bWludXRlLmxhYmVsfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzZWNvbmRzXCI+XG4gICAgICAgIHt7JyA6J319PHNlbGVjdCBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBudWxsXCIgY1NlbGVjdCBjbGFzcz1cIm1zLTBcIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RTZWNvbmRzXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0U2Vjb25kc0NoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHNlY29uZCBvZiBsaXN0T2ZTZWNvbmRzXCIgW25nVmFsdWVdPVwic2Vjb25kLnZhbHVlXCIgW2F0dHIuZGlzYWJsZWRdPVwic2Vjb25kLmRpc2FibGVkIHx8IG51bGxcIj57e3NlY29uZC5sYWJlbH19PC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaG91cjEyXCI+XG4gICAgICAgIDxzZWxlY3QgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgbnVsbFwiIGNTZWxlY3QgY2xhc3M9XCJtcy0wXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0RGF5UGVyaW9kXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0RGF5UGVyaW9kQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkYXlQZXJpb2Qgb2YgZGF5UGVyaW9kc1wiIFtuZ1ZhbHVlXT1cImRheVBlcmlvZC52YWx1ZVwiIGNsYXNzPVwidGltZS1waWNrZXItcm9sbC1jZWxsXCI+e3tkYXlQZXJpb2QubGFiZWx9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxjLWRyb3Bkb3duICNkcm9wZG93bj1cImNEcm9wZG93blwiIGF1dG9DbG9zZT1cIm91dHNpZGVcIiBjbGFzcz1cInRpbWUtcGlja2VyIHBpY2tlclwiICpuZ0lmPVwidmFyaWFudD09PSdyb2xsJ1wiIFt2aXNpYmxlXT1cInZpc2libGVcIj5cbiAgPGMtaW5wdXQtZ3JvdXAgW2NhcmV0XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkID8/IGRyb3Bkb3duLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICBbc2l6aW5nXT1cInNpemUgPz8gJydcIlxuICAgICAgICAgICAgICAgICBjRHJvcGRvd25Ub2dnbGVcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWNrZXItaW5wdXQtZ3JvdXBcIj5cbiAgICA8aW5wdXQgKGNoYW5nZSk9XCJoYW5kbGVUaW1lSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0aW1lSW5wdXRcIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICBjRm9ybUNvbnRyb2xcbiAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/ICcnIDogbnVsbFwiXG4gICAgICAgICAgIFthdHRyLnBhdHRlcm5dPVwiaG91cjEyID8gJygoKDBbMS05XSl8KDFbMC0yXSkpOihbMC01XSkoWzAtOV0pXFxcXHMoQXxQKU0pJyA6ICcoWzAxXT9bMC05XXwyWzAtM10pOlswLTVdWzAtOV0nXCJcbiAgICAgICAgICAgW3JlYWRvbmx5XT1cImlucHV0UmVhZE9ubHkgPz8gbnVsbFwiXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwiaW5kaWNhdG9yIHx8IGNsZWFuZXJcIiBjSW5wdXRHcm91cFRleHQ+XG4gICAgICA8c3BhbiAqbmdJZj1cImluZGljYXRvclwiIGNsYXNzPVwicGlja2VyLWlucHV0LWdyb3VwLWluZGljYXRvclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIHRpbWUtcGlja2VyLWlucHV0LWljb25cIj48L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiAoY2xpY2spPVwiIWRpc2FibGVkICYmIGhhbmRsZUNsZWFyKCRldmVudClcIiAqbmdJZj1cImNsZWFuZXIgJiYgdGltZSAmJiAhZGlzYWJsZWRcIiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1jbGVhbmVyXCIgcm9sZT1cImJ1dHRvblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInBpY2tlci1pbnB1dC1ncm91cC1pY29uIHRpbWUtcGlja2VyLWNsZWFuZXItaWNvblwiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG5cbiAgPC9jLWlucHV0LWdyb3VwPlxuICA8ZGl2IGNEcm9wZG93bk1lbnUgI2Ryb3Bkb3duTWVudT1cImNEcm9wZG93bk1lbnVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGltZS1waWNrZXItYm9keSB0aW1lLXBpY2tlci1yb2xsXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XG4gICAgICA8Yy10aW1lLXBpY2tlci1yb2xsLWNvbFxuICAgICAgICBbZWxlbWVudHNdPVwibGlzdE9mSG91cnMxMlwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJob3VyXCJcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVNlbGVjdEhvdXJzQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmVmcmVzaF09XCJkcm9wZG93bk1lbnUudmlzaWJsZVwiXG4gICAgICA+XG4gICAgICA8L2MtdGltZS1waWNrZXItcm9sbC1jb2w+XG4gICAgICA8Yy10aW1lLXBpY2tlci1yb2xsLWNvbFxuICAgICAgICBbZWxlbWVudHNdPVwibGlzdE9mTWludXRlc1wiXG4gICAgICAgIFtzZWxlY3RlZF09XCJtaW51dGVcIlxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0TWludXRlc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3JlZnJlc2hdPVwiZHJvcGRvd25NZW51LnZpc2libGVcIlxuICAgICAgPlxuICAgICAgPC9jLXRpbWUtcGlja2VyLXJvbGwtY29sPlxuICAgICAgPGMtdGltZS1waWNrZXItcm9sbC1jb2xcbiAgICAgICAgKm5nSWY9XCJzZWNvbmRzXCJcbiAgICAgICAgW2VsZW1lbnRzXT1cImxpc3RPZlNlY29uZHNcIlxuICAgICAgICBbc2VsZWN0ZWRdPVwic2Vjb25kXCJcbiAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cImhhbmRsZVNlbGVjdFNlY29uZHNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWZyZXNoXT1cImRyb3Bkb3duTWVudS52aXNpYmxlXCJcbiAgICAgID5cbiAgICAgIDwvYy10aW1lLXBpY2tlci1yb2xsLWNvbD5cbiAgICAgIDxjLXRpbWUtcGlja2VyLXJvbGwtYW0tcG1cbiAgICAgICAgKm5nSWY9XCJob3VyMTJcIiBbZWxlbWVudHNdPVwiZGF5UGVyaW9kc1wiXG4gICAgICAgIFtzZWxlY3RlZF09XCJkYXlQZXJpb2RcIlxuICAgICAgICAoc2VsZWN0ZWRDaGFuZ2UpPVwiaGFuZGxlU2VsZWN0RGF5UGVyaW9kQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcmVmcmVzaF09XCJkcm9wZG93bk1lbnUudmlzaWJsZVwiXG4gICAgICA+XG4gICAgICA8L2MtdGltZS1waWNrZXItcm9sbC1hbS1wbT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwidGVtcGxhdGVzPy50aW1lUGlja2VyRm9vdGVyXCIgY2xhc3M9XCJwaWNrZXItZm9vdGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVzPy50aW1lUGlja2VyRm9vdGVyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkcm9wZG93bn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2MtZHJvcGRvd24+XG4iXX0=
|
|
@@ -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
|