@coreui/angular-pro 4.2.24 → 4.2.26
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/LICENSE +4 -4
- package/README.md +175 -175
- package/esm2020/coreui-angular-pro.mjs +4 -4
- package/esm2020/lib/accordion/accordion/accordion.component.mjs +40 -40
- package/esm2020/lib/accordion/accordion-button/accordion-button.directive.mjs +43 -43
- package/esm2020/lib/accordion/accordion-item/accordion-item.component.mjs +72 -72
- package/esm2020/lib/accordion/accordion.module.mjs +48 -48
- package/esm2020/lib/accordion/accordion.service.mjs +36 -36
- package/esm2020/lib/accordion/index.mjs +2 -2
- package/esm2020/lib/accordion/public_api.mjs +5 -5
- package/esm2020/lib/alert/alert-heading.directive.mjs +22 -22
- package/esm2020/lib/alert/alert-link.directive.mjs +22 -22
- package/esm2020/lib/alert/alert.component.mjs +181 -181
- package/esm2020/lib/alert/alert.module.mjs +38 -38
- package/esm2020/lib/alert/index.mjs +2 -2
- package/esm2020/lib/alert/public_api.mjs +5 -5
- package/esm2020/lib/avatar/avatar.component.mjs +49 -49
- package/esm2020/lib/avatar/avatar.module.mjs +24 -24
- package/esm2020/lib/avatar/index.mjs +2 -2
- package/esm2020/lib/avatar/public_api.mjs +3 -3
- package/esm2020/lib/backdrop/backdrop.service.mjs +52 -52
- package/esm2020/lib/badge/badge.component.mjs +42 -42
- package/esm2020/lib/badge/badge.module.mjs +24 -24
- package/esm2020/lib/badge/index.mjs +2 -2
- package/esm2020/lib/badge/public_api.mjs +3 -3
- package/esm2020/lib/breadcrumb/breadcrumb/breadcrumb.component.mjs +43 -43
- package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.mjs +37 -37
- package/esm2020/lib/breadcrumb/breadcrumb-item/breadcrumb-item.mjs +2 -2
- package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.mjs +41 -41
- package/esm2020/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.mjs +52 -52
- package/esm2020/lib/breadcrumb/breadcrumb.module.mjs +37 -37
- package/esm2020/lib/breadcrumb/index.mjs +2 -2
- package/esm2020/lib/breadcrumb/public_api.mjs +6 -6
- package/esm2020/lib/button/button-close.directive.mjs +44 -44
- package/esm2020/lib/button/button.directive.mjs +112 -112
- package/esm2020/lib/button/button.module.mjs +29 -29
- package/esm2020/lib/button/index.mjs +2 -2
- package/esm2020/lib/button/public_api.mjs +4 -4
- package/esm2020/lib/button-group/button-group/button-group.component.mjs +41 -41
- package/esm2020/lib/button-group/button-group.module.mjs +29 -29
- package/esm2020/lib/button-group/button-toolbar/button-toolbar.component.mjs +35 -35
- package/esm2020/lib/button-group/index.mjs +2 -2
- package/esm2020/lib/button-group/public_api.mjs +4 -4
- package/esm2020/lib/calendar/calendar/calendar-class-view.pipe.mjs +19 -19
- package/esm2020/lib/calendar/calendar/calendar.component.mjs +376 -376
- package/esm2020/lib/calendar/calendar-month/calendar-class-day.pipe.mjs +28 -28
- package/esm2020/lib/calendar/calendar-month/calendar-class-month.pipe.mjs +21 -21
- package/esm2020/lib/calendar/calendar-month/calendar-class-year.pipe.mjs +21 -21
- package/esm2020/lib/calendar/calendar-month/calendar-day-title.pipe.mjs +16 -16
- package/esm2020/lib/calendar/calendar-month/calendar-day.directive.mjs +81 -81
- package/esm2020/lib/calendar/calendar-month/calendar-day.pipe.mjs +18 -18
- package/esm2020/lib/calendar/calendar-month/calendar-month.component.mjs +324 -324
- package/esm2020/lib/calendar/calendar-month/calendar-weekday.pipe.mjs +20 -20
- package/esm2020/lib/calendar/calendar-navigation/calendar-navigation.component.mjs +79 -79
- package/esm2020/lib/calendar/calendar.module.mjs +62 -62
- package/esm2020/lib/calendar/calendar.service.mjs +60 -60
- package/esm2020/lib/calendar/calendar.utils.mjs +275 -275
- package/esm2020/lib/calendar/index.mjs +2 -2
- package/esm2020/lib/calendar/public_api.mjs +5 -5
- package/esm2020/lib/callout/callout.component.mjs +23 -23
- package/esm2020/lib/callout/callout.module.mjs +20 -20
- package/esm2020/lib/callout/index.mjs +2 -2
- package/esm2020/lib/callout/public_api.mjs +3 -3
- package/esm2020/lib/card/card-body.component.mjs +22 -22
- package/esm2020/lib/card/card-footer.component.mjs +22 -22
- package/esm2020/lib/card/card-group.component.mjs +22 -22
- package/esm2020/lib/card/card-header-actions.component.mjs +20 -20
- package/esm2020/lib/card/card-header.component.mjs +22 -22
- package/esm2020/lib/card/card-img-overlay/card-img-overlay.component.mjs +19 -19
- package/esm2020/lib/card/card-img.directive.mjs +25 -25
- package/esm2020/lib/card/card-link.directive.mjs +21 -21
- package/esm2020/lib/card/card-subtitle.directive.mjs +21 -21
- package/esm2020/lib/card/card-text.directive.mjs +21 -21
- package/esm2020/lib/card/card-title.directive.mjs +21 -21
- package/esm2020/lib/card/card.component.mjs +29 -29
- package/esm2020/lib/card/card.module.mjs +79 -79
- package/esm2020/lib/card/index.mjs +2 -2
- package/esm2020/lib/card/public_api.mjs +14 -14
- package/esm2020/lib/carousel/carousel/carousel.component.mjs +214 -214
- package/esm2020/lib/carousel/carousel-caption/carousel-caption.component.mjs +17 -17
- package/esm2020/lib/carousel/carousel-control/carousel-control.component.mjs +83 -83
- package/esm2020/lib/carousel/carousel-indicators/carousel-indicators.component.mjs +45 -45
- package/esm2020/lib/carousel/carousel-inner/carousel-inner.component.mjs +47 -47
- package/esm2020/lib/carousel/carousel-item/carousel-item.component.mjs +68 -68
- package/esm2020/lib/carousel/carousel-state.mjs +77 -77
- package/esm2020/lib/carousel/carousel-state.type.mjs +2 -2
- package/esm2020/lib/carousel/carousel.animation.mjs +70 -70
- package/esm2020/lib/carousel/carousel.config.mjs +22 -22
- package/esm2020/lib/carousel/carousel.module.mjs +54 -54
- package/esm2020/lib/carousel/carousel.service.mjs +18 -18
- package/esm2020/lib/carousel/index.mjs +2 -2
- package/esm2020/lib/carousel/public_api.mjs +9 -9
- package/esm2020/lib/collapse/collapse.animations.mjs +18 -18
- package/esm2020/lib/collapse/collapse.directive.mjs +190 -190
- package/esm2020/lib/collapse/collapse.module.mjs +23 -23
- package/esm2020/lib/collapse/index.mjs +2 -2
- package/esm2020/lib/collapse/public_api.mjs +3 -3
- package/esm2020/lib/coreui.types.mjs +10 -10
- package/esm2020/lib/date-picker/date-picker.component.mjs +81 -81
- package/esm2020/lib/date-picker/date-picker.module.mjs +59 -59
- package/esm2020/lib/date-picker/index.mjs +2 -2
- package/esm2020/lib/date-picker/public_api.mjs +3 -3
- package/esm2020/lib/date-range-picker/date-range-picker/date-range-picker.component.mjs +608 -600
- package/esm2020/lib/date-range-picker/date-range-picker.module.mjs +55 -55
- package/esm2020/lib/date-range-picker/index.mjs +2 -2
- package/esm2020/lib/date-range-picker/public_api.mjs +3 -3
- package/esm2020/lib/dropdown/dropdown/dropdown.component.mjs +366 -366
- package/esm2020/lib/dropdown/dropdown-close/dropdown-close.directive.mjs +72 -72
- package/esm2020/lib/dropdown/dropdown-divider/dropdown-divider.directive.mjs +23 -23
- package/esm2020/lib/dropdown/dropdown-header/dropdown-header.directive.mjs +23 -23
- package/esm2020/lib/dropdown/dropdown-item/dropdown-item-plain.directive.mjs +23 -23
- package/esm2020/lib/dropdown/dropdown-item/dropdown-item.directive.mjs +86 -86
- package/esm2020/lib/dropdown/dropdown-menu/dropdown-menu.directive.mjs +81 -81
- package/esm2020/lib/dropdown/dropdown.module.mjs +64 -64
- package/esm2020/lib/dropdown/dropdown.service.mjs +18 -18
- package/esm2020/lib/dropdown/index.mjs +2 -2
- package/esm2020/lib/dropdown/public_api.mjs +10 -10
- package/esm2020/lib/element-cover/element-cover.component.mjs +71 -71
- package/esm2020/lib/element-cover/element-cover.module.mjs +28 -28
- package/esm2020/lib/element-cover/index.mjs +2 -2
- package/esm2020/lib/element-cover/public_api.mjs +3 -3
- package/esm2020/lib/footer/footer.component.mjs +38 -38
- package/esm2020/lib/footer/footer.module.mjs +24 -24
- package/esm2020/lib/footer/index.mjs +2 -2
- package/esm2020/lib/footer/public_api.mjs +3 -3
- package/esm2020/lib/form/form/form.directive.mjs +38 -38
- package/esm2020/lib/form/form-check/form-check-input.directive.mjs +62 -62
- package/esm2020/lib/form/form-check/form-check-label.directive.mjs +21 -21
- package/esm2020/lib/form/form-check/form-check.component.mjs +75 -75
- package/esm2020/lib/form/form-control/form-control.directive.mjs +71 -71
- package/esm2020/lib/form/form-feedback/form-feedback.component.mjs +42 -42
- package/esm2020/lib/form/form-floating/form-floating.directive.mjs +38 -38
- package/esm2020/lib/form/form-label/form-label.directive.mjs +39 -39
- package/esm2020/lib/form/form-select/form-select.directive.mjs +34 -34
- package/esm2020/lib/form/form-text/form-text.directive.mjs +22 -22
- package/esm2020/lib/form/form.module.mjs +77 -77
- package/esm2020/lib/form/index.mjs +2 -2
- package/esm2020/lib/form/input-group/input-group.component.mjs +31 -31
- package/esm2020/lib/form/input-group-text/input-group-text.directive.mjs +22 -22
- package/esm2020/lib/form/public_api.mjs +14 -14
- package/esm2020/lib/grid/col.component.mjs +12 -12
- package/esm2020/lib/grid/col.directive.mjs +156 -156
- package/esm2020/lib/grid/col.type.mjs +2 -2
- package/esm2020/lib/grid/container.component.mjs +43 -43
- package/esm2020/lib/grid/container.type.mjs +2 -2
- package/esm2020/lib/grid/grid.module.mjs +48 -48
- package/esm2020/lib/grid/gutter.directive.mjs +56 -56
- package/esm2020/lib/grid/gutter.type.mjs +2 -2
- package/esm2020/lib/grid/index.mjs +2 -2
- package/esm2020/lib/grid/public_api.mjs +8 -8
- package/esm2020/lib/grid/row.component.mjs +12 -12
- package/esm2020/lib/grid/row.directive.mjs +45 -45
- package/esm2020/lib/grid/row.type.mjs +2 -2
- package/esm2020/lib/header/header/header.component.mjs +47 -47
- package/esm2020/lib/header/header-brand/header-brand.component.mjs +31 -31
- package/esm2020/lib/header/header-divider/header-divider.component.mjs +20 -20
- package/esm2020/lib/header/header-nav/header-nav.component.mjs +28 -28
- package/esm2020/lib/header/header-text/header-text.component.mjs +20 -20
- package/esm2020/lib/header/header-toggler/header-toggler.directive.mjs +54 -54
- package/esm2020/lib/header/header.module.mjs +49 -49
- package/esm2020/lib/header/index.mjs +2 -2
- package/esm2020/lib/header/public_api.mjs +8 -8
- package/esm2020/lib/image/img.directive.mjs +91 -91
- package/esm2020/lib/image/img.module.mjs +24 -24
- package/esm2020/lib/image/index.mjs +2 -2
- package/esm2020/lib/image/public_api.mjs +3 -3
- package/esm2020/lib/list-group/index.mjs +2 -2
- package/esm2020/lib/list-group/list-group-item.directive.mjs +73 -73
- package/esm2020/lib/list-group/list-group.directive.mjs +44 -44
- package/esm2020/lib/list-group/list-group.module.mjs +25 -25
- package/esm2020/lib/list-group/public_api.mjs +4 -4
- package/esm2020/lib/loading-button/index.mjs +2 -2
- package/esm2020/lib/loading-button/loading-button.component.mjs +84 -84
- package/esm2020/lib/loading-button/loading-button.module.mjs +28 -28
- package/esm2020/lib/loading-button/public_api.mjs +3 -3
- package/esm2020/lib/modal/index.mjs +2 -2
- package/esm2020/lib/modal/modal/modal.component.mjs +311 -311
- package/esm2020/lib/modal/modal-body/modal-body.component.mjs +19 -19
- package/esm2020/lib/modal/modal-content/modal-content.component.mjs +23 -23
- package/esm2020/lib/modal/modal-dialog/modal-dialog.component.mjs +32 -32
- package/esm2020/lib/modal/modal-dismiss/modal-toggle.directive.mjs +27 -27
- package/esm2020/lib/modal/modal-footer/modal-footer.component.mjs +22 -22
- package/esm2020/lib/modal/modal-header/modal-header.component.mjs +24 -24
- package/esm2020/lib/modal/modal-title/modal-title.directive.mjs +21 -21
- package/esm2020/lib/modal/modal.module.mjs +69 -69
- package/esm2020/lib/modal/modal.service.mjs +21 -21
- package/esm2020/lib/modal/public_api.mjs +11 -11
- package/esm2020/lib/multi-select/index.mjs +2 -2
- package/esm2020/lib/multi-select/multi-select/multi-select.component.mjs +536 -527
- package/esm2020/lib/multi-select/multi-select-native-select/multi-select-native-select.component.mjs +30 -30
- package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.mjs +20 -20
- package/esm2020/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.mjs +52 -52
- package/esm2020/lib/multi-select/multi-select-option/multi-select-option.component.mjs +144 -144
- package/esm2020/lib/multi-select/multi-select-tag/multi-select-tag.component.mjs +55 -55
- package/esm2020/lib/multi-select/multi-select.module.mjs +51 -51
- package/esm2020/lib/multi-select/multi-select.service.mjs +23 -23
- package/esm2020/lib/multi-select/multi-select.type.mjs +2 -2
- package/esm2020/lib/multi-select/public_api.mjs +7 -7
- package/esm2020/lib/nav/index.mjs +2 -2
- package/esm2020/lib/nav/nav-item.component.mjs +19 -19
- package/esm2020/lib/nav/nav-link.directive.mjs +86 -86
- package/esm2020/lib/nav/nav.component.mjs +24 -24
- package/esm2020/lib/nav/nav.module.mjs +22 -22
- package/esm2020/lib/nav/public_api.mjs +5 -5
- package/esm2020/lib/navbar/index.mjs +2 -2
- package/esm2020/lib/navbar/navbar-brand/navbar-brand.directive.mjs +23 -23
- package/esm2020/lib/navbar/navbar-nav/navbar-nav.component.mjs +40 -40
- package/esm2020/lib/navbar/navbar-text/navbar-text.component.mjs +20 -20
- package/esm2020/lib/navbar/navbar-toggler/navbar-toggler.directive.mjs +63 -63
- package/esm2020/lib/navbar/navbar.component.mjs +84 -84
- package/esm2020/lib/navbar/navbar.module.mjs +48 -48
- package/esm2020/lib/navbar/public_api.mjs +7 -7
- package/esm2020/lib/offcanvas/index.mjs +2 -2
- package/esm2020/lib/offcanvas/offcanvas/offcanvas.component.mjs +244 -244
- package/esm2020/lib/offcanvas/offcanvas-body/offcanvas-body.component.mjs +19 -19
- package/esm2020/lib/offcanvas/offcanvas-header/offcanvas-header.component.mjs +19 -19
- package/esm2020/lib/offcanvas/offcanvas-title/offcanvas-title.directive.mjs +21 -21
- package/esm2020/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.mjs +27 -27
- package/esm2020/lib/offcanvas/offcanvas.module.mjs +57 -57
- package/esm2020/lib/offcanvas/offcanvas.service.mjs +21 -21
- package/esm2020/lib/offcanvas/public_api.mjs +8 -8
- package/esm2020/lib/pagination/index.mjs +2 -2
- package/esm2020/lib/pagination/page-item/page-item.component.mjs +12 -12
- package/esm2020/lib/pagination/page-item/page-item.directive.mjs +62 -62
- package/esm2020/lib/pagination/page-link/page-link.directive.mjs +21 -21
- package/esm2020/lib/pagination/pagination/pagination.component.mjs +41 -41
- package/esm2020/lib/pagination/pagination.module.mjs +38 -38
- package/esm2020/lib/pagination/public_api.mjs +5 -5
- package/esm2020/lib/placeholder/index.mjs +2 -2
- package/esm2020/lib/placeholder/placeholder-animation.directive.mjs +34 -34
- package/esm2020/lib/placeholder/placeholder.directive.mjs +51 -51
- package/esm2020/lib/placeholder/placeholder.module.mjs +29 -29
- package/esm2020/lib/placeholder/public_api.mjs +4 -4
- package/esm2020/lib/popover/index.mjs +2 -2
- package/esm2020/lib/popover/popover/popover.component.mjs +92 -92
- package/esm2020/lib/popover/popover.directive.mjs +196 -196
- package/esm2020/lib/popover/popover.module.mjs +29 -29
- package/esm2020/lib/popover/public_api.mjs +4 -4
- package/esm2020/lib/progress/index.mjs +2 -2
- package/esm2020/lib/progress/progress-bar.component.mjs +112 -112
- package/esm2020/lib/progress/progress-bar.mjs +2 -2
- package/esm2020/lib/progress/progress.component.mjs +72 -72
- package/esm2020/lib/progress/progress.module.mjs +25 -25
- package/esm2020/lib/progress/public_api.mjs +4 -4
- package/esm2020/lib/services/class-toggle.service.mjs +30 -30
- package/esm2020/lib/services/index.mjs +2 -2
- package/esm2020/lib/services/intersection.service.mjs +34 -34
- package/esm2020/lib/services/listeners.service.mjs +43 -43
- package/esm2020/lib/services/public_api.mjs +3 -3
- package/esm2020/lib/shared/html-attr.directive.mjs +52 -52
- package/esm2020/lib/shared/index.mjs +2 -2
- package/esm2020/lib/shared/public_api.mjs +4 -4
- package/esm2020/lib/shared/shared.module.mjs +46 -46
- package/esm2020/lib/shared/template-id.directive.mjs +19 -19
- package/esm2020/lib/sidebar/index.mjs +2 -2
- package/esm2020/lib/sidebar/public_api.mjs +10 -10
- package/esm2020/lib/sidebar/sidebar/sidebar.component.mjs +246 -246
- package/esm2020/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.mjs +60 -60
- package/esm2020/lib/sidebar/sidebar-brand/sidebar-brand.component.mjs +30 -30
- package/esm2020/lib/sidebar/sidebar-footer/sidebar-footer.component.mjs +20 -20
- package/esm2020/lib/sidebar/sidebar-header/sidebar-header.component.mjs +20 -20
- package/esm2020/lib/sidebar/sidebar-nav/index.mjs +2 -2
- package/esm2020/lib/sidebar/sidebar-nav/public_api.mjs +14 -14
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.mjs +24 -24
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.mjs +18 -18
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-group.service.mjs +18 -18
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.mjs +21 -21
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.mjs +33 -33
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-label.component.mjs +43 -43
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.component.mjs +94 -94
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.mjs +23 -23
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav-title.component.mjs +68 -68
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.component.mjs +204 -204
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.mjs +2 -2
- package/esm2020/lib/sidebar/sidebar-nav/sidebar-nav.service.mjs +54 -54
- package/esm2020/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.mjs +40 -40
- package/esm2020/lib/sidebar/sidebar-toggler/sidebar-toggler.component.mjs +26 -26
- package/esm2020/lib/sidebar/sidebar.module.mjs +99 -99
- package/esm2020/lib/sidebar/sidebar.service.mjs +21 -21
- package/esm2020/lib/smart-pagination/index.mjs +2 -2
- package/esm2020/lib/smart-pagination/public_api.mjs +3 -3
- package/esm2020/lib/smart-pagination/smart-pagination.component.mjs +196 -196
- package/esm2020/lib/smart-pagination/smart-pagination.module.mjs +28 -28
- package/esm2020/lib/smart-pagination/smart-pagination.type.mjs +2 -2
- package/esm2020/lib/smart-table/index.mjs +2 -2
- package/esm2020/lib/smart-table/public_api.mjs +5 -4
- package/esm2020/lib/smart-table/smart-table/smart-table.component.mjs +515 -517
- package/esm2020/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.mjs +30 -30
- package/esm2020/lib/smart-table/smart-table-filter/filter-input.directive.mjs +78 -78
- package/esm2020/lib/smart-table/smart-table-filter/smart-table-filter.component.mjs +46 -46
- package/esm2020/lib/smart-table/smart-table-head/smart-table-head.component.mjs +165 -165
- package/esm2020/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.mjs +49 -49
- package/esm2020/lib/smart-table/smart-table.module.mjs +76 -76
- package/esm2020/lib/smart-table/smart-table.type.mjs +1 -1
- package/esm2020/lib/spinner/index.mjs +2 -2
- package/esm2020/lib/spinner/public_api.mjs +3 -3
- package/esm2020/lib/spinner/spinner.component.mjs +49 -49
- package/esm2020/lib/spinner/spinner.module.mjs +28 -28
- package/esm2020/lib/table/index.mjs +2 -2
- package/esm2020/lib/table/public_api.mjs +5 -5
- package/esm2020/lib/table/table-active.directive.mjs +40 -40
- package/esm2020/lib/table/table-color.directive.mjs +24 -24
- package/esm2020/lib/table/table.directive.mjs +147 -147
- package/esm2020/lib/table/table.module.mjs +34 -34
- package/esm2020/lib/table/table.type.mjs +2 -2
- package/esm2020/lib/tabs/index.mjs +2 -2
- package/esm2020/lib/tabs/public_api.mjs +6 -6
- package/esm2020/lib/tabs/tab-content/tab-content.component.mjs +92 -92
- package/esm2020/lib/tabs/tab-content-ref.directive.mjs +128 -128
- package/esm2020/lib/tabs/tab-pane/tab-pane.component.mjs +57 -57
- package/esm2020/lib/tabs/tab.service.mjs +21 -21
- package/esm2020/lib/tabs/tabs.module.mjs +40 -40
- package/esm2020/lib/time-picker/index.mjs +2 -2
- package/esm2020/lib/time-picker/public_api.mjs +3 -3
- package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.mjs +103 -103
- package/esm2020/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.mjs +104 -104
- package/esm2020/lib/time-picker/time-picker.component.mjs +490 -463
- package/esm2020/lib/time-picker/time-picker.module.mjs +50 -50
- package/esm2020/lib/time-picker/time.utils.mjs +645 -645
- package/esm2020/lib/toast/index.mjs +2 -2
- package/esm2020/lib/toast/public_api.mjs +9 -9
- package/esm2020/lib/toast/toast/toast.component.mjs +238 -238
- package/esm2020/lib/toast/toast-body/toast-body.component.mjs +21 -21
- package/esm2020/lib/toast/toast-close.directive.mjs +28 -28
- package/esm2020/lib/toast/toast-header/toast-header.component.mjs +31 -31
- package/esm2020/lib/toast/toast.module.mjs +50 -50
- package/esm2020/lib/toast/toaster/toaster-host.directive.mjs +17 -17
- package/esm2020/lib/toast/toaster/toaster.component.mjs +140 -140
- package/esm2020/lib/toast/toaster/toaster.service.mjs +21 -21
- package/esm2020/lib/tooltip/index.mjs +2 -2
- package/esm2020/lib/tooltip/public_api.mjs +4 -4
- package/esm2020/lib/tooltip/tooltip/tooltip.component.mjs +88 -88
- package/esm2020/lib/tooltip/tooltip.directive.mjs +191 -191
- package/esm2020/lib/tooltip/tooltip.module.mjs +29 -29
- package/esm2020/lib/utilities/align.directive.mjs +24 -24
- package/esm2020/lib/utilities/bg-color.directive.mjs +33 -33
- package/esm2020/lib/utilities/border.directive.mjs +66 -66
- package/esm2020/lib/utilities/border.type.mjs +2 -2
- package/esm2020/lib/utilities/index.mjs +2 -2
- package/esm2020/lib/utilities/public_api.mjs +7 -7
- package/esm2020/lib/utilities/rounded.directive.mjs +65 -65
- package/esm2020/lib/utilities/rounded.type.mjs +2 -2
- package/esm2020/lib/utilities/text-color.directive.mjs +32 -32
- package/esm2020/lib/utilities/utilities.module.mjs +44 -44
- package/esm2020/lib/widget/index.mjs +2 -2
- package/esm2020/lib/widget/public_api.mjs +8 -8
- package/esm2020/lib/widget/widget-stat-a/widget-stat-a.component.mjs +49 -49
- package/esm2020/lib/widget/widget-stat-b/widget-stat-b.component.mjs +52 -52
- package/esm2020/lib/widget/widget-stat-c/widget-stat-c.component.mjs +80 -80
- package/esm2020/lib/widget/widget-stat-d/widget-stat-d.component.mjs +39 -39
- package/esm2020/lib/widget/widget-stat-e/widget-stat-e.component.mjs +30 -30
- package/esm2020/lib/widget/widget-stat-f/widget-stat-f.component.mjs +92 -92
- package/esm2020/lib/widget/widget.module.mjs +57 -57
- package/esm2020/public-api.mjs +50 -50
- package/fesm2015/coreui-angular-pro.mjs +15301 -15258
- package/fesm2015/coreui-angular-pro.mjs.map +1 -1
- package/fesm2020/coreui-angular-pro.mjs +15178 -15137
- package/fesm2020/coreui-angular-pro.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/accordion/accordion/accordion.component.d.ts +22 -22
- package/lib/accordion/accordion-button/accordion-button.directive.d.ts +18 -18
- package/lib/accordion/accordion-item/accordion-item.component.d.ts +33 -33
- package/lib/accordion/accordion.module.d.ts +12 -12
- package/lib/accordion/accordion.service.d.ts +13 -13
- package/lib/accordion/index.d.ts +1 -1
- package/lib/accordion/public_api.d.ts +4 -4
- package/lib/alert/alert-heading.directive.d.ts +7 -7
- package/lib/alert/alert-link.directive.d.ts +7 -7
- package/lib/alert/alert.component.d.ts +68 -68
- package/lib/alert/alert.module.d.ts +11 -11
- package/lib/alert/index.d.ts +1 -1
- package/lib/alert/public_api.d.ts +4 -4
- package/lib/avatar/avatar.component.d.ts +40 -40
- package/lib/avatar/avatar.module.d.ts +8 -8
- package/lib/avatar/index.d.ts +1 -1
- package/lib/avatar/public_api.d.ts +2 -2
- package/lib/backdrop/backdrop.service.d.ts +16 -16
- package/lib/badge/badge.component.d.ts +32 -32
- package/lib/badge/badge.module.d.ts +8 -8
- package/lib/badge/index.d.ts +1 -1
- package/lib/badge/public_api.d.ts +2 -2
- package/lib/breadcrumb/breadcrumb/breadcrumb.component.d.ts +21 -21
- package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.component.d.ts +28 -28
- package/lib/breadcrumb/breadcrumb-item/breadcrumb-item.d.ts +9 -9
- package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.component.d.ts +21 -21
- package/lib/breadcrumb/breadcrumb-router/breadcrumb-router.service.d.ts +14 -14
- package/lib/breadcrumb/breadcrumb.module.d.ts +12 -12
- package/lib/breadcrumb/index.d.ts +1 -1
- package/lib/breadcrumb/public_api.d.ts +6 -6
- package/lib/button/button-close.directive.d.ts +16 -16
- package/lib/button/button.directive.d.ts +54 -54
- package/lib/button/button.module.d.ts +9 -9
- package/lib/button/index.d.ts +1 -1
- package/lib/button/public_api.d.ts +3 -3
- package/lib/button-group/button-group/button-group.component.d.ts +23 -23
- package/lib/button-group/button-group.module.d.ts +9 -9
- package/lib/button-group/button-toolbar/button-toolbar.component.d.ts +13 -13
- package/lib/button-group/index.d.ts +1 -1
- package/lib/button-group/public_api.d.ts +3 -3
- package/lib/calendar/calendar/calendar-class-view.pipe.d.ts +7 -7
- package/lib/calendar/calendar/calendar.component.d.ts +155 -155
- package/lib/calendar/calendar-month/calendar-class-day.pipe.d.ts +15 -15
- package/lib/calendar/calendar-month/calendar-class-month.pipe.d.ts +7 -7
- package/lib/calendar/calendar-month/calendar-class-year.pipe.d.ts +7 -7
- package/lib/calendar/calendar-month/calendar-day-title.pipe.d.ts +7 -7
- package/lib/calendar/calendar-month/calendar-day.directive.d.ts +29 -29
- package/lib/calendar/calendar-month/calendar-day.pipe.d.ts +8 -8
- package/lib/calendar/calendar-month/calendar-month.component.d.ts +121 -121
- package/lib/calendar/calendar-month/calendar-weekday.pipe.d.ts +8 -8
- package/lib/calendar/calendar-navigation/calendar-navigation.component.d.ts +30 -30
- package/lib/calendar/calendar.module.d.ts +19 -19
- package/lib/calendar/calendar.service.d.ts +33 -33
- package/lib/calendar/calendar.utils.d.ts +26 -26
- package/lib/calendar/index.d.ts +1 -1
- package/lib/calendar/public_api.d.ts +4 -4
- package/lib/callout/callout.component.d.ts +13 -13
- package/lib/callout/callout.module.d.ts +8 -8
- package/lib/callout/index.d.ts +1 -1
- package/lib/callout/public_api.d.ts +2 -2
- package/lib/card/card-body.component.d.ts +6 -6
- package/lib/card/card-footer.component.d.ts +6 -6
- package/lib/card/card-group.component.d.ts +6 -6
- package/lib/card/card-header-actions.component.d.ts +6 -6
- package/lib/card/card-header.component.d.ts +6 -6
- package/lib/card/card-img-overlay/card-img-overlay.component.d.ts +6 -6
- package/lib/card/card-img.directive.d.ts +11 -11
- package/lib/card/card-link.directive.d.ts +6 -6
- package/lib/card/card-subtitle.directive.d.ts +6 -6
- package/lib/card/card-text.directive.d.ts +6 -6
- package/lib/card/card-title.directive.d.ts +6 -6
- package/lib/card/card.component.d.ts +18 -18
- package/lib/card/card.module.d.ts +19 -19
- package/lib/card/index.d.ts +1 -1
- package/lib/card/public_api.d.ts +13 -13
- package/lib/carousel/carousel/carousel.component.d.ts +92 -92
- package/lib/carousel/carousel-caption/carousel-caption.component.d.ts +7 -7
- package/lib/carousel/carousel-control/carousel-control.component.d.ts +31 -31
- package/lib/carousel/carousel-indicators/carousel-indicators.component.d.ts +18 -18
- package/lib/carousel/carousel-inner/carousel-inner.component.d.ts +21 -21
- package/lib/carousel/carousel-item/carousel-item.component.d.ts +30 -30
- package/lib/carousel/carousel-state.d.ts +16 -16
- package/lib/carousel/carousel-state.type.d.ts +15 -15
- package/lib/carousel/carousel.animation.d.ts +4 -4
- package/lib/carousel/carousel.config.d.ts +10 -10
- package/lib/carousel/carousel.module.d.ts +15 -15
- package/lib/carousel/carousel.service.d.ts +14 -14
- package/lib/carousel/index.d.ts +1 -1
- package/lib/carousel/public_api.d.ts +8 -8
- package/lib/collapse/collapse.animations.d.ts +4 -4
- package/lib/collapse/collapse.directive.d.ts +65 -65
- package/lib/collapse/collapse.module.d.ts +10 -10
- package/lib/collapse/index.d.ts +1 -1
- package/lib/collapse/public_api.d.ts +2 -2
- package/lib/coreui.types.d.ts +45 -45
- package/lib/date-picker/date-picker.component.d.ts +18 -18
- package/lib/date-picker/date-picker.module.d.ts +16 -16
- package/lib/date-picker/index.d.ts +1 -1
- package/lib/date-picker/public_api.d.ts +3 -3
- package/lib/date-range-picker/date-range-picker/date-range-picker.component.d.ts +240 -230
- package/lib/date-range-picker/date-range-picker.module.d.ts +15 -15
- package/lib/date-range-picker/index.d.ts +1 -1
- package/lib/date-range-picker/public_api.d.ts +2 -2
- package/lib/dropdown/dropdown/dropdown.component.d.ts +135 -135
- package/lib/dropdown/dropdown-close/dropdown-close.directive.d.ts +26 -26
- package/lib/dropdown/dropdown-divider/dropdown-divider.directive.d.ts +7 -7
- package/lib/dropdown/dropdown-header/dropdown-header.directive.d.ts +7 -7
- package/lib/dropdown/dropdown-item/dropdown-item-plain.directive.d.ts +7 -7
- package/lib/dropdown/dropdown-item/dropdown-item.directive.d.ts +36 -36
- package/lib/dropdown/dropdown-menu/dropdown-menu.directive.d.ts +36 -36
- package/lib/dropdown/dropdown.module.d.ts +14 -14
- package/lib/dropdown/dropdown.service.d.ts +13 -13
- package/lib/dropdown/index.d.ts +1 -1
- package/lib/dropdown/public_api.d.ts +9 -9
- package/lib/element-cover/element-cover.component.d.ts +27 -27
- package/lib/element-cover/element-cover.module.d.ts +9 -9
- package/lib/element-cover/index.d.ts +1 -1
- package/lib/element-cover/public_api.d.ts +2 -2
- package/lib/footer/footer.component.d.ts +18 -18
- package/lib/footer/footer.module.d.ts +8 -8
- package/lib/footer/index.d.ts +1 -1
- package/lib/footer/public_api.d.ts +2 -2
- package/lib/form/form/form.directive.d.ts +17 -17
- package/lib/form/form-check/form-check-input.directive.d.ts +31 -31
- package/lib/form/form-check/form-check-label.directive.d.ts +6 -6
- package/lib/form/form-check/form-check.component.d.ts +36 -36
- package/lib/form/form-control/form-control.directive.d.ts +34 -34
- package/lib/form/form-feedback/form-feedback.component.d.ts +18 -18
- package/lib/form/form-floating/form-floating.directive.d.ts +16 -16
- package/lib/form/form-label/form-label.directive.d.ts +16 -16
- package/lib/form/form-select/form-select.directive.d.ts +16 -16
- package/lib/form/form-text/form-text.directive.d.ts +7 -7
- package/lib/form/form.module.d.ts +19 -19
- package/lib/form/index.d.ts +1 -1
- package/lib/form/input-group/input-group.component.d.ts +11 -11
- package/lib/form/input-group-text/input-group-text.directive.d.ts +7 -7
- package/lib/form/public_api.d.ts +13 -13
- package/lib/grid/col.component.d.ts +6 -6
- package/lib/grid/col.directive.d.ts +75 -75
- package/lib/grid/col.type.d.ts +11 -11
- package/lib/grid/container.component.d.ts +20 -20
- package/lib/grid/container.type.d.ts +5 -5
- package/lib/grid/grid.module.d.ts +13 -13
- package/lib/grid/gutter.directive.d.ts +13 -13
- package/lib/grid/gutter.type.d.ts +13 -13
- package/lib/grid/index.d.ts +1 -1
- package/lib/grid/public_api.d.ts +7 -7
- package/lib/grid/row.component.d.ts +6 -6
- package/lib/grid/row.directive.d.ts +37 -37
- package/lib/grid/row.type.d.ts +9 -9
- package/lib/header/header/header.component.d.ts +25 -25
- package/lib/header/header-brand/header-brand.component.d.ts +12 -12
- package/lib/header/header-divider/header-divider.component.d.ts +6 -6
- package/lib/header/header-nav/header-nav.component.d.ts +12 -12
- package/lib/header/header-text/header-text.component.d.ts +6 -6
- package/lib/header/header-toggler/header-toggler.directive.d.ts +25 -25
- package/lib/header/header.module.d.ts +13 -13
- package/lib/header/index.d.ts +1 -1
- package/lib/header/public_api.d.ts +7 -7
- package/lib/image/img.directive.d.ts +42 -42
- package/lib/image/img.module.d.ts +8 -8
- package/lib/image/index.d.ts +1 -1
- package/lib/image/public_api.d.ts +2 -2
- package/lib/list-group/index.d.ts +1 -1
- package/lib/list-group/list-group-item.directive.d.ts +33 -33
- package/lib/list-group/list-group.directive.d.ts +21 -21
- package/lib/list-group/list-group.module.d.ts +9 -9
- package/lib/list-group/public_api.d.ts +3 -3
- package/lib/loading-button/index.d.ts +1 -1
- package/lib/loading-button/loading-button.component.d.ts +43 -43
- package/lib/loading-button/loading-button.module.d.ts +9 -9
- package/lib/loading-button/public_api.d.ts +2 -2
- package/lib/modal/index.d.ts +1 -1
- package/lib/modal/modal/modal.component.d.ts +104 -104
- package/lib/modal/modal-body/modal-body.component.d.ts +6 -6
- package/lib/modal/modal-content/modal-content.component.d.ts +7 -7
- package/lib/modal/modal-dialog/modal-dialog.component.d.ts +25 -25
- package/lib/modal/modal-dismiss/modal-toggle.directive.d.ts +13 -13
- package/lib/modal/modal-footer/modal-footer.component.d.ts +6 -6
- package/lib/modal/modal-header/modal-header.component.d.ts +6 -6
- package/lib/modal/modal-title/modal-title.directive.d.ts +6 -6
- package/lib/modal/modal.module.d.ts +16 -16
- package/lib/modal/modal.service.d.ts +15 -15
- package/lib/modal/public_api.d.ts +10 -10
- package/lib/multi-select/index.d.ts +1 -1
- package/lib/multi-select/multi-select/multi-select.component.d.ts +150 -137
- package/lib/multi-select/multi-select-native-select/multi-select-native-select.component.d.ts +14 -14
- package/lib/multi-select/multi-select-optgroup/multi-select-optgroup-label.component.d.ts +9 -9
- package/lib/multi-select/multi-select-optgroup/multi-select-optgroup.component.d.ts +20 -20
- package/lib/multi-select/multi-select-option/multi-select-option.component.d.ts +49 -49
- package/lib/multi-select/multi-select-tag/multi-select-tag.component.d.ts +21 -21
- package/lib/multi-select/multi-select.module.d.ts +17 -17
- package/lib/multi-select/multi-select.service.d.ts +12 -12
- package/lib/multi-select/multi-select.type.d.ts +34 -34
- package/lib/multi-select/public_api.d.ts +6 -6
- package/lib/nav/index.d.ts +1 -1
- package/lib/nav/nav-item.component.d.ts +6 -6
- package/lib/nav/nav-link.directive.d.ts +34 -34
- package/lib/nav/nav.component.d.ts +16 -16
- package/lib/nav/nav.module.d.ts +10 -10
- package/lib/nav/public_api.d.ts +4 -4
- package/lib/navbar/index.d.ts +1 -1
- package/lib/navbar/navbar-brand/navbar-brand.directive.d.ts +7 -7
- package/lib/navbar/navbar-nav/navbar-nav.component.d.ts +15 -15
- package/lib/navbar/navbar-text/navbar-text.component.d.ts +6 -6
- package/lib/navbar/navbar-toggler/navbar-toggler.directive.d.ts +33 -33
- package/lib/navbar/navbar.component.d.ts +39 -39
- package/lib/navbar/navbar.module.d.ts +13 -13
- package/lib/navbar/public_api.d.ts +6 -6
- package/lib/offcanvas/index.d.ts +1 -1
- package/lib/offcanvas/offcanvas/offcanvas.component.d.ts +82 -82
- package/lib/offcanvas/offcanvas-body/offcanvas-body.component.d.ts +6 -6
- package/lib/offcanvas/offcanvas-header/offcanvas-header.component.d.ts +6 -6
- package/lib/offcanvas/offcanvas-title/offcanvas-title.directive.d.ts +6 -6
- package/lib/offcanvas/offcanvas-toggle/offcanvas-toggle.directive.d.ts +14 -14
- package/lib/offcanvas/offcanvas.module.d.ts +13 -13
- package/lib/offcanvas/offcanvas.service.d.ts +15 -15
- package/lib/offcanvas/public_api.d.ts +7 -7
- package/lib/pagination/index.d.ts +1 -1
- package/lib/pagination/page-item/page-item.component.d.ts +6 -6
- package/lib/pagination/page-item/page-item.directive.d.ts +24 -24
- package/lib/pagination/page-link/page-link.directive.d.ts +6 -6
- package/lib/pagination/pagination/pagination.component.d.ts +22 -22
- package/lib/pagination/pagination.module.d.ts +11 -11
- package/lib/pagination/public_api.d.ts +5 -5
- package/lib/placeholder/index.d.ts +1 -1
- package/lib/placeholder/placeholder-animation.directive.d.ts +18 -18
- package/lib/placeholder/placeholder.directive.d.ts +22 -22
- package/lib/placeholder/placeholder.module.d.ts +9 -9
- package/lib/placeholder/public_api.d.ts +3 -3
- package/lib/popover/index.d.ts +1 -1
- package/lib/popover/popover/popover.component.d.ts +30 -30
- package/lib/popover/popover.directive.d.ts +58 -58
- package/lib/popover/popover.module.d.ts +9 -9
- package/lib/popover/public_api.d.ts +3 -3
- package/lib/progress/index.d.ts +1 -1
- package/lib/progress/progress-bar.component.d.ts +52 -52
- package/lib/progress/progress-bar.d.ts +10 -10
- package/lib/progress/progress.component.d.ts +32 -32
- package/lib/progress/progress.module.d.ts +9 -9
- package/lib/progress/public_api.d.ts +4 -4
- package/lib/services/class-toggle.service.d.ts +11 -11
- package/lib/services/index.d.ts +1 -1
- package/lib/services/intersection.service.d.ts +22 -22
- package/lib/services/listeners.service.d.ts +19 -19
- package/lib/services/public_api.d.ts +2 -2
- package/lib/shared/html-attr.directive.d.ts +16 -16
- package/lib/shared/index.d.ts +1 -1
- package/lib/shared/public_api.d.ts +3 -3
- package/lib/shared/shared.module.d.ts +11 -11
- package/lib/shared/template-id.directive.d.ts +9 -9
- package/lib/sidebar/index.d.ts +1 -1
- package/lib/sidebar/public_api.d.ts +9 -9
- package/lib/sidebar/sidebar/sidebar.component.d.ts +85 -85
- package/lib/sidebar/sidebar-backdrop/sidebar-backdrop.service.d.ts +16 -16
- package/lib/sidebar/sidebar-brand/sidebar-brand.component.d.ts +12 -12
- package/lib/sidebar/sidebar-footer/sidebar-footer.component.d.ts +7 -7
- package/lib/sidebar/sidebar-header/sidebar-header.component.d.ts +7 -7
- package/lib/sidebar/sidebar-nav/index.d.ts +1 -1
- package/lib/sidebar/sidebar-nav/public_api.d.ts +12 -12
- package/lib/sidebar/sidebar-nav/sidebar-nav-badge.pipe.d.ts +7 -7
- package/lib/sidebar/sidebar-nav/sidebar-nav-divider.component.d.ts +7 -7
- package/lib/sidebar/sidebar-nav/sidebar-nav-group.service.d.ts +14 -14
- package/lib/sidebar/sidebar-nav/sidebar-nav-icon.pipe.d.ts +7 -7
- package/lib/sidebar/sidebar-nav/sidebar-nav-item-class.pipe.d.ts +10 -10
- package/lib/sidebar/sidebar-nav/sidebar-nav-label.component.d.ts +18 -18
- package/lib/sidebar/sidebar-nav/sidebar-nav-link.component.d.ts +34 -34
- package/lib/sidebar/sidebar-nav/sidebar-nav-link.pipe.d.ts +7 -7
- package/lib/sidebar/sidebar-nav/sidebar-nav-title.component.d.ts +15 -15
- package/lib/sidebar/sidebar-nav/sidebar-nav.component.d.ts +59 -59
- package/lib/sidebar/sidebar-nav/sidebar-nav.d.ts +53 -53
- package/lib/sidebar/sidebar-nav/sidebar-nav.service.d.ts +20 -20
- package/lib/sidebar/sidebar-toggle/sidebar-toggle.directive.d.ts +25 -25
- package/lib/sidebar/sidebar-toggler/sidebar-toggler.component.d.ts +7 -7
- package/lib/sidebar/sidebar.module.d.ts +25 -25
- package/lib/sidebar/sidebar.service.d.ts +19 -19
- package/lib/smart-pagination/index.d.ts +1 -1
- package/lib/smart-pagination/public_api.d.ts +2 -2
- package/lib/smart-pagination/smart-pagination.component.d.ts +109 -109
- package/lib/smart-pagination/smart-pagination.module.d.ts +9 -9
- package/lib/smart-pagination/smart-pagination.type.d.ts +79 -79
- package/lib/smart-table/index.d.ts +1 -1
- package/lib/smart-table/public_api.d.ts +4 -3
- package/lib/smart-table/smart-table/smart-table.component.d.ts +145 -144
- package/lib/smart-table/smart-table-column-filter/smart-table-column-filter.component.d.ts +11 -11
- package/lib/smart-table/smart-table-filter/filter-input.directive.d.ts +24 -24
- package/lib/smart-table/smart-table-filter/smart-table-filter.component.d.ts +16 -16
- package/lib/smart-table/smart-table-head/smart-table-head.component.d.ts +45 -45
- package/lib/smart-table/smart-table-items-per-page-selector/smart-table-items-per-page-selector.component.d.ts +14 -14
- package/lib/smart-table/smart-table.module.d.ts +22 -22
- package/lib/smart-table/smart-table.type.d.ts +275 -275
- package/lib/spinner/index.d.ts +1 -1
- package/lib/spinner/public_api.d.ts +2 -2
- package/lib/spinner/spinner.component.d.ts +31 -31
- package/lib/spinner/spinner.module.d.ts +9 -9
- package/lib/table/index.d.ts +1 -1
- package/lib/table/public_api.d.ts +4 -4
- package/lib/table/table-active.directive.d.ts +16 -16
- package/lib/table/table-color.directive.d.ts +12 -12
- package/lib/table/table.directive.d.ts +90 -90
- package/lib/table/table.module.d.ts +10 -10
- package/lib/table/table.type.d.ts +76 -76
- package/lib/tabs/index.d.ts +1 -1
- package/lib/tabs/public_api.d.ts +5 -5
- package/lib/tabs/tab-content/tab-content.component.d.ts +33 -33
- package/lib/tabs/tab-content-ref.directive.d.ts +50 -50
- package/lib/tabs/tab-pane/tab-pane.component.d.ts +26 -26
- package/lib/tabs/tab.service.d.ts +14 -14
- package/lib/tabs/tabs.module.d.ts +10 -10
- package/lib/time-picker/index.d.ts +1 -1
- package/lib/time-picker/public_api.d.ts +2 -2
- package/lib/time-picker/time-picker-roll-col/time-picker-roll-am-pm.component.d.ts +39 -39
- package/lib/time-picker/time-picker-roll-col/time-picker-roll-col.component.d.ts +38 -38
- package/lib/time-picker/time-picker.component.d.ts +196 -183
- package/lib/time-picker/time-picker.module.d.ts +14 -14
- package/lib/time-picker/time.utils.d.ts +57 -57
- package/lib/toast/index.d.ts +1 -1
- package/lib/toast/public_api.d.ts +8 -8
- package/lib/toast/toast/toast.component.d.ts +84 -84
- package/lib/toast/toast-body/toast-body.component.d.ts +9 -9
- package/lib/toast/toast-close.directive.d.ts +10 -10
- package/lib/toast/toast-header/toast-header.component.d.ts +14 -14
- package/lib/toast/toast.module.d.ts +14 -14
- package/lib/toast/toaster/toaster-host.directive.d.ts +8 -8
- package/lib/toast/toaster/toaster.component.d.ts +55 -55
- package/lib/toast/toaster/toaster.service.d.ts +16 -16
- package/lib/tooltip/index.d.ts +1 -1
- package/lib/tooltip/public_api.d.ts +3 -3
- package/lib/tooltip/tooltip/tooltip.component.d.ts +30 -30
- package/lib/tooltip/tooltip.directive.d.ts +58 -58
- package/lib/tooltip/tooltip.module.d.ts +9 -9
- package/lib/utilities/align.directive.d.ts +12 -12
- package/lib/utilities/bg-color.directive.d.ts +17 -17
- package/lib/utilities/border.directive.d.ts +12 -12
- package/lib/utilities/border.type.d.ts +15 -15
- package/lib/utilities/index.d.ts +1 -1
- package/lib/utilities/public_api.d.ts +6 -6
- package/lib/utilities/rounded.directive.d.ts +12 -12
- package/lib/utilities/rounded.type.d.ts +12 -12
- package/lib/utilities/text-color.directive.d.ts +13 -13
- package/lib/utilities/utilities.module.d.ts +12 -12
- package/lib/widget/index.d.ts +1 -1
- package/lib/widget/public_api.d.ts +7 -7
- package/lib/widget/widget-stat-a/widget-stat-a.component.d.ts +37 -37
- package/lib/widget/widget-stat-b/widget-stat-b.component.d.ts +47 -47
- package/lib/widget/widget-stat-c/widget-stat-c.component.d.ts +58 -58
- package/lib/widget/widget-stat-d/widget-stat-d.component.d.ts +31 -31
- package/lib/widget/widget-stat-e/widget-stat-e.component.d.ts +24 -24
- package/lib/widget/widget-stat-f/widget-stat-f.component.d.ts +77 -77
- package/lib/widget/widget.module.d.ts +15 -15
- package/package.json +1 -1
- package/public-api.d.ts +46 -46
|
@@ -1,275 +1,275 @@
|
|
|
1
|
-
import { isValid } from 'date-fns';
|
|
2
|
-
export const convertToLocalDate = (d, locale, options = {}) => d.toLocaleDateString(locale, options);
|
|
3
|
-
export const convertToLocalTime = (d, locale, options = {}) => d.toLocaleTimeString(locale, options);
|
|
4
|
-
export const createGroupsInArray = (arr, numberOfGroups) => {
|
|
5
|
-
const perGroup = Math.ceil(arr.length / numberOfGroups);
|
|
6
|
-
return new Array(numberOfGroups)
|
|
7
|
-
.fill('')
|
|
8
|
-
.map((_, i) => arr.slice(i * perGroup, (i + 1) * perGroup));
|
|
9
|
-
};
|
|
10
|
-
export const getCurrentYear = () => new Date().getFullYear();
|
|
11
|
-
export const getCurrentMonth = () => new Date().getMonth();
|
|
12
|
-
export const getLocalDateFromString = (string, locale, time) => {
|
|
13
|
-
const date = new Date(2013, 11, 31, 17, 19, 22);
|
|
14
|
-
let regex = time ? date.toLocaleString(locale) : date.toLocaleDateString(locale);
|
|
15
|
-
regex = regex
|
|
16
|
-
.replace('2013', '(?<year>[0-9]{2,4})')
|
|
17
|
-
.replace('12', '(?<month>[0-9]{1,2})')
|
|
18
|
-
.replace('31', '(?<day>[0-9]{1,2})');
|
|
19
|
-
if (time) {
|
|
20
|
-
regex = regex
|
|
21
|
-
.replace('5', '(?<hour>[0-9]{1,2})')
|
|
22
|
-
.replace('17', '(?<hour>[0-9]{1,2})')
|
|
23
|
-
.replace('19', '(?<minute>[0-9]{1,2})')
|
|
24
|
-
.replace('22', '(?<second>[0-9]{1,2})')
|
|
25
|
-
.replace('PM', '(?<ampm>[A-Z]{2})');
|
|
26
|
-
}
|
|
27
|
-
const rgx = RegExp(`${regex}`);
|
|
28
|
-
const partials = string.match(rgx);
|
|
29
|
-
if (partials === null)
|
|
30
|
-
return;
|
|
31
|
-
const newDate = partials.groups && (time ? new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day']), partials.groups['ampm'] ? partials.groups['ampm'] === 'PM' ? Number(partials.groups['hour']) + 12 : Number(partials.groups['hour']) : Number(partials.groups['hour']), Number(partials.groups['minute']), Number(partials.groups['second'])) : new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day'])));
|
|
32
|
-
return newDate;
|
|
33
|
-
};
|
|
34
|
-
export const getMonthName = (month, locale) => {
|
|
35
|
-
const d = new Date();
|
|
36
|
-
d.setDate(1);
|
|
37
|
-
d.setMonth(month);
|
|
38
|
-
return d.toLocaleString(locale, { month: 'long' });
|
|
39
|
-
};
|
|
40
|
-
export const getMonthsNames = (locale) => {
|
|
41
|
-
const months = [];
|
|
42
|
-
const d = new Date();
|
|
43
|
-
d.setDate(1);
|
|
44
|
-
for (let i = 0; i < 12; i++) {
|
|
45
|
-
d.setMonth(i);
|
|
46
|
-
months.push(d.toLocaleDateString(locale, { month: 'short' }));
|
|
47
|
-
}
|
|
48
|
-
return months;
|
|
49
|
-
};
|
|
50
|
-
export const getYears = (year) => {
|
|
51
|
-
const years = [];
|
|
52
|
-
for (let _year = year - 6; _year < year + 6; _year++) {
|
|
53
|
-
years.push(_year);
|
|
54
|
-
}
|
|
55
|
-
return years;
|
|
56
|
-
};
|
|
57
|
-
const getLeadingDays = (year, month, firstDayOfWeek) => {
|
|
58
|
-
// 0: sunday
|
|
59
|
-
// 1: monday
|
|
60
|
-
const dates = [];
|
|
61
|
-
const d = new Date(year, month);
|
|
62
|
-
const y = d.getFullYear();
|
|
63
|
-
const m = d.getMonth();
|
|
64
|
-
const firstWeekday = new Date(y, m, 1).getDay();
|
|
65
|
-
let leadingDays = 6 - (6 - firstWeekday) - firstDayOfWeek;
|
|
66
|
-
if (firstDayOfWeek) {
|
|
67
|
-
leadingDays = leadingDays < 0 ? 7 + leadingDays : leadingDays;
|
|
68
|
-
}
|
|
69
|
-
for (let i = leadingDays * -1; i < 0; i++) {
|
|
70
|
-
dates.push({
|
|
71
|
-
date: new Date(y, m, i + 1), month: 'previous'
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
return dates;
|
|
75
|
-
};
|
|
76
|
-
const getMonthDays = (year, month) => {
|
|
77
|
-
const dates = [];
|
|
78
|
-
const lastDay = new Date(year, month + 1, 0).getDate();
|
|
79
|
-
for (let i = 1; i <= lastDay; i++) {
|
|
80
|
-
dates.push({
|
|
81
|
-
date: new Date(year, month, i), month: 'current'
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
return dates;
|
|
85
|
-
};
|
|
86
|
-
const getTrailingDays = (year, month, leadingDays, monthDays) => {
|
|
87
|
-
const dates = [];
|
|
88
|
-
const days = 42 - (leadingDays.length + monthDays.length);
|
|
89
|
-
for (let i = 1; i <= days; i++) {
|
|
90
|
-
dates.push({
|
|
91
|
-
date: new Date(year, month + 1, i), month: 'next'
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
return dates;
|
|
95
|
-
};
|
|
96
|
-
export const getMonthDetails = (year, month, firstDayOfWeek) => {
|
|
97
|
-
const daysPrevMonth = getLeadingDays(year, month, firstDayOfWeek);
|
|
98
|
-
const daysThisMonth = getMonthDays(year, month);
|
|
99
|
-
const daysNextMonth = getTrailingDays(year, month, daysPrevMonth, daysThisMonth);
|
|
100
|
-
const days = [...daysPrevMonth, ...daysThisMonth, ...daysNextMonth];
|
|
101
|
-
const weeks = [];
|
|
102
|
-
days.forEach((day, index) => {
|
|
103
|
-
if (index % 7 === 0 || weeks.length === 0) {
|
|
104
|
-
weeks.push([]);
|
|
105
|
-
}
|
|
106
|
-
weeks[weeks.length - 1].push(day);
|
|
107
|
-
});
|
|
108
|
-
return weeks;
|
|
109
|
-
};
|
|
110
|
-
export const isDateDisabled = (date, min, max, dates) => {
|
|
111
|
-
if (!date)
|
|
112
|
-
return;
|
|
113
|
-
let disabled;
|
|
114
|
-
if (dates) {
|
|
115
|
-
dates.forEach((_date) => {
|
|
116
|
-
if (Array.isArray(_date)) {
|
|
117
|
-
if (isDateInRange(date, _date[0], _date[1])) {
|
|
118
|
-
disabled = true;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (_date instanceof Date) {
|
|
122
|
-
if (isSameDateAs(date, _date)) {
|
|
123
|
-
disabled = true;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
if (min && date < min) {
|
|
129
|
-
disabled = true;
|
|
130
|
-
}
|
|
131
|
-
if (max && date > max) {
|
|
132
|
-
disabled = true;
|
|
133
|
-
}
|
|
134
|
-
return disabled;
|
|
135
|
-
};
|
|
136
|
-
export const isDateInRange = (date, start, end) => {
|
|
137
|
-
return date && start && end && start <= date && date <= end;
|
|
138
|
-
};
|
|
139
|
-
export const isDateSelected = (date, start, end) => {
|
|
140
|
-
return date && ((start && isSameDateAs(start, date)) || (end && isSameDateAs(end, date)));
|
|
141
|
-
};
|
|
142
|
-
export const isEndDate = (date, start, end) => {
|
|
143
|
-
return date && start && end && isSameDateAs(end, date) && start < end;
|
|
144
|
-
};
|
|
145
|
-
export const isLastDayOfMonth = (date) => {
|
|
146
|
-
const test = new Date(date.getTime());
|
|
147
|
-
const month = test.getMonth();
|
|
148
|
-
test.setDate(test.getDate() + 1);
|
|
149
|
-
return test.getMonth() !== month;
|
|
150
|
-
};
|
|
151
|
-
export const isSameDateAs = (date, date2) => {
|
|
152
|
-
return (date.getDate() == date2.getDate() && date.getMonth() == date2.getMonth() && date.getFullYear() == date2.getFullYear());
|
|
153
|
-
};
|
|
154
|
-
export const isStartDate = (date, start, end) => {
|
|
155
|
-
return date && start && end && isSameDateAs(start, date) && start < end;
|
|
156
|
-
};
|
|
157
|
-
export const isToday = (date) => {
|
|
158
|
-
const today = new Date();
|
|
159
|
-
return (date.getDate() == today.getDate() && date.getMonth() == today.getMonth() && date.getFullYear() == today.getFullYear());
|
|
160
|
-
};
|
|
161
|
-
export const isThisMonth = (date, index) => {
|
|
162
|
-
const today = new Date();
|
|
163
|
-
return (index == today.getMonth() && date.getFullYear() == today.getFullYear());
|
|
164
|
-
};
|
|
165
|
-
export const isThisYear = (year) => {
|
|
166
|
-
const today = new Date();
|
|
167
|
-
return (year == today.getFullYear());
|
|
168
|
-
};
|
|
169
|
-
export const isValidDate = (date) => {
|
|
170
|
-
const d = new Date(date);
|
|
171
|
-
// console.log('isValidDate', date, d.getTime(), !!d.getTime())
|
|
172
|
-
return !!d.getTime();
|
|
173
|
-
};
|
|
174
|
-
export const tryDate = (value, propName = 'date') => {
|
|
175
|
-
let _value;
|
|
176
|
-
try {
|
|
177
|
-
if (!isValid(value)) {
|
|
178
|
-
throw value;
|
|
179
|
-
}
|
|
180
|
-
_value = new Date(value);
|
|
181
|
-
}
|
|
182
|
-
catch (err) {
|
|
183
|
-
console.warn(`Invalid ${propName}`, err);
|
|
184
|
-
_value = new Date();
|
|
185
|
-
_value.setHours(0, 0, 0, 0);
|
|
186
|
-
}
|
|
187
|
-
return _value;
|
|
188
|
-
};
|
|
189
|
-
export const isDateInRangeDisabled = (startDate, endDate, dates) => {
|
|
190
|
-
if (startDate && endDate) {
|
|
191
|
-
const date = new Date(startDate);
|
|
192
|
-
let disabled = false;
|
|
193
|
-
while (date < endDate) {
|
|
194
|
-
date.setDate(date.getDate() + 1);
|
|
195
|
-
if (isDateDisabled(date, null, null, dates)) {
|
|
196
|
-
disabled = true;
|
|
197
|
-
break;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
return disabled;
|
|
201
|
-
}
|
|
202
|
-
return false;
|
|
203
|
-
};
|
|
204
|
-
// type DateParts = {
|
|
205
|
-
// [key in DateTimeFormatPartTypes]?: string;
|
|
206
|
-
// };
|
|
207
|
-
// type DateParts = {
|
|
208
|
-
// year: number, month: number, day: number, literal: string
|
|
209
|
-
// };
|
|
210
|
-
//
|
|
211
|
-
// export const cvtDate = (dateAsString: string, locale = 'pl-PL') => {
|
|
212
|
-
// const dateString = dateAsString ?? new Date().toLocaleDateString(locale);
|
|
213
|
-
// const dateSplit = dateString.split(/[.\-\/\s\D]/gi).filter(item => !!item.length);
|
|
214
|
-
// const formatter = new Intl.DateTimeFormat(locale);
|
|
215
|
-
// const parts = formatter.formatToParts().filter(part => ['year', 'month', 'day'].includes(part.type));
|
|
216
|
-
// const dateShim = {
|
|
217
|
-
// day: undefined, month: undefined, year: undefined
|
|
218
|
-
// };
|
|
219
|
-
// parts.forEach((part, index) => {
|
|
220
|
-
// const { type, value } = { ...part };
|
|
221
|
-
// // @ts-ignore
|
|
222
|
-
// dateShim[type] = dateSplit[index];
|
|
223
|
-
// });
|
|
224
|
-
//
|
|
225
|
-
// return dateShim;
|
|
226
|
-
//
|
|
227
|
-
// // const dateParts: DateParts = {
|
|
228
|
-
// // year: 0,
|
|
229
|
-
// // month: 0,
|
|
230
|
-
// // day: 0,
|
|
231
|
-
// // literal: '/'
|
|
232
|
-
// // };
|
|
233
|
-
// //
|
|
234
|
-
// // const literal = parts.find(part => part.type === 'literal')?.value ?? '/';
|
|
235
|
-
// // // const year = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
|
|
236
|
-
// // // const month = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
|
|
237
|
-
// // // const day = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
|
|
238
|
-
// //
|
|
239
|
-
// // const dateArray = dateString.split(literal);
|
|
240
|
-
// //
|
|
241
|
-
// // parts.forEach(part => {
|
|
242
|
-
// // const {type, value} = {...part};
|
|
243
|
-
// // if (type === 'day') {
|
|
244
|
-
// //
|
|
245
|
-
// // }
|
|
246
|
-
// // })
|
|
247
|
-
// //
|
|
248
|
-
// // parts.filter(part => part.type in dateParts).map(part => {
|
|
249
|
-
// // const {type, value} = {...part};
|
|
250
|
-
// // // @ts-ignore
|
|
251
|
-
// // dateParts[type] = parseInt(part.value);
|
|
252
|
-
// // //
|
|
253
|
-
// // // switch (type) {
|
|
254
|
-
// // // case 'day':
|
|
255
|
-
// // // day = parseInt(value);
|
|
256
|
-
// // // break;
|
|
257
|
-
// // // case 'month':
|
|
258
|
-
// // // month = parseInt(value);
|
|
259
|
-
// // // break;
|
|
260
|
-
// // // case 'year':
|
|
261
|
-
// // // year = parseInt(value);
|
|
262
|
-
// // // break;
|
|
263
|
-
// // // }
|
|
264
|
-
// // })
|
|
265
|
-
// // // const { year, month, day } = {...dateParts}
|
|
266
|
-
// // return new Date(year, month - 1, day);
|
|
267
|
-
// };
|
|
268
|
-
//
|
|
269
|
-
// // function getDateX(dateAsString) {
|
|
270
|
-
// // const [day, month, year] = dateAsString.split('/');
|
|
271
|
-
// // return new Date(year, month - 1, day);
|
|
272
|
-
// // }
|
|
273
|
-
//
|
|
274
|
-
// // getDate('12/07/1997');
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFVLEVBQUUsY0FBc0IsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQztJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQztTQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ1IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakYsS0FBSyxHQUFHLEtBQUs7U0FDVixPQUFPLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUM7U0FDckMsT0FBTyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZDLElBQUksSUFBSSxFQUFFO1FBQ1IsS0FBSyxHQUFHLEtBQUs7YUFDVixPQUFPLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO2FBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7YUFDcEMsT0FBTyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQzthQUN0QyxPQUFPLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztLQUN2QztJQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVuQyxJQUFJLFFBQVEsS0FBSyxJQUFJO1FBQUUsT0FBTztJQUU5QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTNmLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlB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QjtBQUNwQix5Q0FBeUM7QUFDekMsUUFBUTtBQUNSLEVBQUU7QUFDRixxQkFBcUI7QUFDckIsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxrQkFBa0I7QUFDbEIsbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQixzQkFBc0I7QUFDdEIsVUFBVTtBQUNWLE9BQU87QUFDUCxrRkFBa0Y7QUFDbEYseUZBQXlGO0FBQ3pGLDBGQUEwRjtBQUMxRix3RkFBd0Y7QUFDeEYsT0FBTztBQUNQLG9EQUFvRDtBQUNwRCxPQUFPO0FBQ1AsK0JBQStCO0FBQy9CLDBDQUEwQztBQUMxQywrQkFBK0I7QUFDL0IsT0FBTztBQUNQLFdBQVc7QUFDWCxVQUFVO0FBQ1YsT0FBTztBQUNQLGtFQUFrRTtBQUNsRSwwQ0FBMEM7QUFDMUMsdUJBQXVCO0FBQ3ZCLGlEQUFpRDtBQUNqRCxZQUFZO0FBQ1osNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQix1Q0FBdUM7QUFDdkMsdUJBQXVCO0FBQ3ZCLDRCQUE0QjtBQUM1Qix5Q0FBeUM7QUFDekMsdUJBQXVCO0FBQ3ZCLDJCQUEyQjtBQUMzQix3Q0FBd0M7QUFDeEMsdUJBQXVCO0FBQ3ZCLGNBQWM7QUFDZCxVQUFVO0FBQ1Ysc0RBQXNEO0FBQ3RELDhDQUE4QztBQUM5QyxLQUFLO0FBQ0wsRUFBRTtBQUNGLHVDQUF1QztBQUN2QywyREFBMkQ7QUFDM0QsOENBQThDO0FBQzlDLE9BQU87QUFDUCxFQUFFO0FBQ0YsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2RhdGUtZm5zJztcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mb2NhbERhdGUgPSAoZDogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnMgPSB7fSkgPT4gZC50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9Mb2NhbFRpbWUgPSAoZDogRGF0ZSwgbG9jYWxlOiBzdHJpbmcsIG9wdGlvbnMgPSB7fSkgPT4gZC50b0xvY2FsZVRpbWVTdHJpbmcobG9jYWxlLCBvcHRpb25zKTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVHcm91cHNJbkFycmF5ID0gKGFycjogYW55W10sIG51bWJlck9mR3JvdXBzOiBudW1iZXIpID0+IHtcclxuICBjb25zdCBwZXJHcm91cCA9IE1hdGguY2VpbChhcnIubGVuZ3RoIC8gbnVtYmVyT2ZHcm91cHMpO1xyXG4gIHJldHVybiBuZXcgQXJyYXkobnVtYmVyT2ZHcm91cHMpXHJcbiAgICAuZmlsbCgnJylcclxuICAgIC5tYXAoKF8sIGkpID0+IGFyci5zbGljZShpICogcGVyR3JvdXAsIChpICsgMSkgKiBwZXJHcm91cCkpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRZZWFyID0gKCkgPT4gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRNb250aCA9ICgpID0+IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRMb2NhbERhdGVGcm9tU3RyaW5nID0gKHN0cmluZzogc3RyaW5nLCBsb2NhbGU6IHN0cmluZywgdGltZT86IGJvb2xlYW4pID0+IHtcclxuICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAxMywgMTEsIDMxLCAxNywgMTksIDIyKTtcclxuICBsZXQgcmVnZXggPSB0aW1lID8gZGF0ZS50b0xvY2FsZVN0cmluZyhsb2NhbGUpIDogZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcobG9jYWxlKTtcclxuICByZWdleCA9IHJlZ2V4XHJcbiAgICAucmVwbGFjZSgnMjAxMycsICcoPzx5ZWFyPlswLTldezIsNH0pJylcclxuICAgIC5yZXBsYWNlKCcxMicsICcoPzxtb250aD5bMC05XXsxLDJ9KScpXHJcbiAgICAucmVwbGFjZSgnMzEnLCAnKD88ZGF5PlswLTldezEsMn0pJyk7XHJcblxyXG4gIGlmICh0aW1lKSB7XHJcbiAgICByZWdleCA9IHJlZ2V4XHJcbiAgICAgIC5yZXBsYWNlKCc1JywgJyg/PGhvdXI+WzAtOV17MSwyfSknKVxyXG4gICAgICAucmVwbGFjZSgnMTcnLCAnKD88aG91cj5bMC05XXsxLDJ9KScpXHJcbiAgICAgIC5yZXBsYWNlKCcxOScsICcoPzxtaW51dGU+WzAtOV17MSwyfSknKVxyXG4gICAgICAucmVwbGFjZSgnMjInLCAnKD88c2Vjb25kPlswLTldezEsMn0pJylcclxuICAgICAgLnJlcGxhY2UoJ1BNJywgJyg/PGFtcG0+W0EtWl17Mn0pJyk7XHJcbiAgfVxyXG5cclxuICBjb25zdCByZ3ggPSBSZWdFeHAoYCR7cmVnZXh9YCk7XHJcbiAgY29uc3QgcGFydGlhbHMgPSBzdHJpbmcubWF0Y2gocmd4KTtcclxuXHJcbiAgaWYgKHBhcnRpYWxzID09PSBudWxsKSByZXR1cm47XHJcblxyXG4gIGNvbnN0IG5ld0RhdGUgPSBwYXJ0aWFscy5ncm91cHMgJiYgKHRpbWUgPyBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSwgcGFydGlhbHMuZ3JvdXBzWydhbXBtJ10gPyBwYXJ0aWFscy5ncm91cHNbJ2FtcG0nXSA9PT0gJ1BNJyA/IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgKyAxMiA6IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgOiBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydob3VyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtaW51dGUnXSksIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ3NlY29uZCddKSkgOiBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSkpO1xyXG5cclxuICByZXR1cm4gbmV3RGF0ZTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRNb250aE5hbWUgPSAobW9udGg6IG51bWJlciwgbG9jYWxlOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBkID0gbmV3IERhdGUoKTtcclxuICBkLnNldERhdGUoMSk7XHJcbiAgZC5zZXRNb250aChtb250aCk7XHJcbiAgcmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TW9udGhzTmFtZXMgPSAobG9jYWxlOiBzdHJpbmcpID0+IHtcclxuICBjb25zdCBtb250aHMgPSBbXTtcclxuICBjb25zdCBkID0gbmV3IERhdGUoKTtcclxuICBkLnNldERhdGUoMSk7XHJcblxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xyXG4gICAgZC5zZXRNb250aChpKTtcclxuICAgIG1vbnRocy5wdXNoKGQudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSwgeyBtb250aDogJ3Nob3J0JyB9KSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbW9udGhzO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFllYXJzID0gKHllYXI6IG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IHllYXJzID0gW107XHJcbiAgZm9yIChsZXQgX3llYXIgPSB5ZWFyIC0gNjsgX3llYXIgPCB5ZWFyICsgNjsgX3llYXIrKykge1xyXG4gICAgeWVhcnMucHVzaChfeWVhcik7XHJcbiAgfVxyXG5cclxuICByZXR1cm4geWVhcnM7XHJcbn07XHJcblxyXG5jb25zdCBnZXRMZWFkaW5nRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGZpcnN0RGF5T2ZXZWVrOiBudW1iZXIpID0+IHtcclxuICAvLyAwOiBzdW5kYXlcclxuICAvLyAxOiBtb25kYXlcclxuICBjb25zdCBkYXRlcyA9IFtdO1xyXG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCk7XHJcbiAgY29uc3QgeSA9IGQuZ2V0RnVsbFllYXIoKTtcclxuICBjb25zdCBtID0gZC5nZXRNb250aCgpO1xyXG4gIGNvbnN0IGZpcnN0V2Vla2RheSA9IG5ldyBEYXRlKHksIG0sIDEpLmdldERheSgpO1xyXG4gIGxldCBsZWFkaW5nRGF5cyA9IDYgLSAoNiAtIGZpcnN0V2Vla2RheSkgLSBmaXJzdERheU9mV2VlaztcclxuXHJcbiAgaWYgKGZpcnN0RGF5T2ZXZWVrKSB7XHJcbiAgICBsZWFkaW5nRGF5cyA9IGxlYWRpbmdEYXlzIDwgMCA/IDcgKyBsZWFkaW5nRGF5cyA6IGxlYWRpbmdEYXlzO1xyXG4gIH1cclxuXHJcbiAgZm9yIChsZXQgaSA9IGxlYWRpbmdEYXlzICogLTE7IGkgPCAwOyBpKyspIHtcclxuICAgIGRhdGVzLnB1c2goe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSh5LCBtLCBpICsgMSksIG1vbnRoOiAncHJldmlvdXMnXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBkYXRlcztcclxufTtcclxuXHJcbmNvbnN0IGdldE1vbnRoRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpID0+IHtcclxuICBjb25zdCBkYXRlcyA9IFtdO1xyXG4gIGNvbnN0IGxhc3REYXkgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCArIDEsIDApLmdldERhdGUoKTtcclxuICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0RGF5OyBpKyspIHtcclxuICAgIGRhdGVzLnB1c2goe1xyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgaSksIG1vbnRoOiAnY3VycmVudCdcclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gZGF0ZXM7XHJcbn07XHJcblxyXG5jb25zdCBnZXRUcmFpbGluZ0RheXMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBsZWFkaW5nRGF5czogeyBkYXRlOiBEYXRlOyBtb250aDogc3RyaW5nIH1bXSwgbW9udGhEYXlzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdKSA9PiB7XHJcbiAgY29uc3QgZGF0ZXMgPSBbXTtcclxuICBjb25zdCBkYXlzID0gNDIgLSAobGVhZGluZ0RheXMubGVuZ3RoICsgbW9udGhEYXlzLmxlbmd0aCk7XHJcbiAgZm9yIChsZXQgaSA9IDE7IGkgPD0gZGF5czsgaSsrKSB7XHJcbiAgICBkYXRlcy5wdXNoKHtcclxuICAgICAgZGF0ZTogbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCBpKSwgbW9udGg6ICduZXh0J1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBkYXRlcztcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRNb250aERldGFpbHMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgZGF5c1ByZXZNb250aCA9IGdldExlYWRpbmdEYXlzKHllYXIsIG1vbnRoLCBmaXJzdERheU9mV2Vlayk7XHJcbiAgY29uc3QgZGF5c1RoaXNNb250aCA9IGdldE1vbnRoRGF5cyh5ZWFyLCBtb250aCk7XHJcbiAgY29uc3QgZGF5c05leHRNb250aCA9IGdldFRyYWlsaW5nRGF5cyh5ZWFyLCBtb250aCwgZGF5c1ByZXZNb250aCwgZGF5c1RoaXNNb250aCk7XHJcbiAgY29uc3QgZGF5cyA9IFsuLi5kYXlzUHJldk1vbnRoLCAuLi5kYXlzVGhpc01vbnRoLCAuLi5kYXlzTmV4dE1vbnRoXTtcclxuXHJcbiAgY29uc3Qgd2Vla3M6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZyB9W11bXSA9IFtdO1xyXG5cclxuICBkYXlzLmZvckVhY2goKGRheSwgaW5kZXgpID0+IHtcclxuICAgIGlmIChpbmRleCAlIDcgPT09IDAgfHwgd2Vla3MubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHdlZWtzLnB1c2goW10pO1xyXG4gICAgfVxyXG4gICAgd2Vla3Nbd2Vla3MubGVuZ3RoIC0gMV0ucHVzaChkYXkpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gd2Vla3M7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNEYXRlRGlzYWJsZWQgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIG1pbj86IERhdGUgfCBudWxsLCBtYXg/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiBEYXRlW10gfCBEYXRlW11bXSkgPT4ge1xyXG4gIGlmICghZGF0ZSkgcmV0dXJuO1xyXG4gIGxldCBkaXNhYmxlZDtcclxuICBpZiAoZGF0ZXMpIHtcclxuICAgIGRhdGVzLmZvckVhY2goKF9kYXRlOiBEYXRlIHwgRGF0ZVtdKSA9PiB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KF9kYXRlKSkge1xyXG4gICAgICAgIGlmIChpc0RhdGVJblJhbmdlKGRhdGUsIF9kYXRlWzBdLCBfZGF0ZVsxXSkpIHtcclxuICAgICAgICAgIGRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKF9kYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICAgIGlmIChpc1NhbWVEYXRlQXMoZGF0ZSwgX2RhdGUpKSB7XHJcbiAgICAgICAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XHJcbiAgICBkaXNhYmxlZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBpZiAobWF4ICYmIGRhdGUgPiBtYXgpIHtcclxuICAgIGRpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcbiAgcmV0dXJuIGRpc2FibGVkO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzRGF0ZUluUmFuZ2UgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBzdGFydCA8PSBkYXRlICYmIGRhdGUgPD0gZW5kO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzRGF0ZVNlbGVjdGVkID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcclxuICByZXR1cm4gZGF0ZSAmJiAoKHN0YXJ0ICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkpIHx8IChlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0VuZERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBpc1NhbWVEYXRlQXMoZW5kLCBkYXRlKSAmJiBzdGFydCA8IGVuZDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc0xhc3REYXlPZk1vbnRoID0gKGRhdGU6IERhdGUpID0+IHtcclxuICBjb25zdCB0ZXN0ID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xyXG4gIGNvbnN0IG1vbnRoID0gdGVzdC5nZXRNb250aCgpO1xyXG5cclxuICB0ZXN0LnNldERhdGUodGVzdC5nZXREYXRlKCkgKyAxKTtcclxuICByZXR1cm4gdGVzdC5nZXRNb250aCgpICE9PSBtb250aDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1NhbWVEYXRlQXMgPSAoZGF0ZTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IHtcclxuICByZXR1cm4gKGRhdGUuZ2V0RGF0ZSgpID09IGRhdGUyLmdldERhdGUoKSAmJiBkYXRlLmdldE1vbnRoKCkgPT0gZGF0ZTIuZ2V0TW9udGgoKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT0gZGF0ZTIuZ2V0RnVsbFllYXIoKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNTdGFydERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xyXG4gIHJldHVybiBkYXRlICYmIHN0YXJ0ICYmIGVuZCAmJiBpc1NhbWVEYXRlQXMoc3RhcnQsIGRhdGUpICYmIHN0YXJ0IDwgZW5kO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVG9kYXkgPSAoZGF0ZTogRGF0ZSkgPT4ge1xyXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICByZXR1cm4gKGRhdGUuZ2V0RGF0ZSgpID09IHRvZGF5LmdldERhdGUoKSAmJiBkYXRlLmdldE1vbnRoKCkgPT0gdG9kYXkuZ2V0TW9udGgoKSAmJiBkYXRlLmdldEZ1bGxZZWFyKCkgPT0gdG9kYXkuZ2V0RnVsbFllYXIoKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNUaGlzTW9udGggPSAoZGF0ZTogRGF0ZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICByZXR1cm4gKGluZGV4ID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGlzVGhpc1llYXIgPSAoeWVhcjogbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gIHJldHVybiAoeWVhciA9PSB0b2RheS5nZXRGdWxsWWVhcigpKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1ZhbGlkRGF0ZSA9IChkYXRlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyKSA9PiB7XHJcbiAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gIC8vIGNvbnNvbGUubG9nKCdpc1ZhbGlkRGF0ZScsIGRhdGUsIGQuZ2V0VGltZSgpLCAhIWQuZ2V0VGltZSgpKVxyXG4gIHJldHVybiAhIWQuZ2V0VGltZSgpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHRyeURhdGUgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGUsIHByb3BOYW1lOiBzdHJpbmcgPSAnZGF0ZScpID0+IHtcclxuICBsZXQgX3ZhbHVlO1xyXG4gIHRyeSB7XHJcbiAgICBpZiAoIWlzVmFsaWQodmFsdWUpKSB7XHJcbiAgICAgIHRocm93IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgX3ZhbHVlID0gbmV3IERhdGUodmFsdWUpO1xyXG4gIH0gY2F0Y2ggKGVycikge1xyXG4gICAgY29uc29sZS53YXJuKGBJbnZhbGlkICR7cHJvcE5hbWV9YCwgZXJyKTtcclxuICAgIF92YWx1ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBfdmFsdWUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgfVxyXG4gIHJldHVybiBfdmFsdWU7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgaXNEYXRlSW5SYW5nZURpc2FibGVkID0gKHN0YXJ0RGF0ZT86IERhdGUgfCBudWxsLCBlbmREYXRlPzogRGF0ZSB8IG51bGwsIGRhdGVzPzogRGF0ZVtdIHwgRGF0ZVtdW10pID0+IHtcclxuICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcclxuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG4gICAgbGV0IGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gICAgd2hpbGUgKGRhdGUgPCBlbmREYXRlKSB7XHJcbiAgICAgIGRhdGUuc2V0RGF0ZShkYXRlLmdldERhdGUoKSArIDEpO1xyXG4gICAgICBpZiAoaXNEYXRlRGlzYWJsZWQoZGF0ZSwgbnVsbCwgbnVsbCwgZGF0ZXMpKSB7XHJcbiAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGlzYWJsZWQ7XHJcbiAgfVxyXG4gIHJldHVybiBmYWxzZTtcclxufTtcclxuXHJcbi8vIGV4cG9ydCBjb25zdCBzdHJpbmdUb0RhdGVDb252ZXJ0ID0gKGRhdGU6IHN0cmluZywgbG9jYWxlczogc3RyaW5nKSA9PiB7XHJcbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2ZyLUZSJyk7XHJcbi8vICAgY29uc3QgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cygpO1xyXG4vLyAgIGNvbnNvbGUubG9nKGRhdGUsIHBhcnRzLCBmb3JtYXR0ZXIuZm9ybWF0KCksIGZvcm1hdHRlci5yZXNvbHZlZE9wdGlvbnMoKSwgZm9ybWF0dGVyLmZvcm1hdCgpKTtcclxuLy8gfTtcclxuXHJcbi8vIGRlY2xhcmUgbmFtZXNwYWNlIEludGwge1xyXG4vLyAgIHR5cGUgRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXMgPSBcImRheVwiIHwgXCJkYXlQZXJpb2RcIiB8IFwiZXJhXCIgfCBcImZyYWN0aW9uYWxTZWNvbmRcIiB8IFwiaG91clwiIHwgXCJsaXRlcmFsXCIgfCBcIm1pbnV0ZVwiIHwgXCJtb250aFwiIHwgXCJzZWNvbmRcIiB8IFwidGltZVpvbmVOYW1lXCIgfCBcIndlZWtkYXlcIiB8IFwieWVhclwiO1xyXG4vL1xyXG4vLyAgIGludGVyZmFjZSBEYXRlVGltZUZvcm1hdFBhcnQge1xyXG4vLyAgICAgdHlwZTogRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXM7XHJcbi8vICAgICB2YWx1ZTogc3RyaW5nO1xyXG4vLyAgIH1cclxuLy9cclxuLy8gICBpbnRlcmZhY2UgRGF0ZVRpbWVGb3JtYXQge1xyXG4vLyAgICAgZm9ybWF0VG9QYXJ0cyhkYXRlPzogRGF0ZSB8IG51bWJlcik6IERhdGVUaW1lRm9ybWF0UGFydFtdO1xyXG4vLyAgIH1cclxuLy8gfVxyXG5cclxudHlwZSBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcyA9XHJcbiAgJ2RheSdcclxuICB8ICdkYXlQZXJpb2QnXHJcbiAgfCAnZXJhJ1xyXG4gIHwgJ2ZyYWN0aW9uYWxTZWNvbmQnXHJcbiAgfCAnaG91cidcclxuICB8ICdsaXRlcmFsJ1xyXG4gIHwgJ21pbnV0ZSdcclxuICB8ICdtb250aCdcclxuICB8ICdzZWNvbmQnXHJcbiAgfCAndGltZVpvbmVOYW1lJ1xyXG4gIHwgJ3dlZWtkYXknXHJcbiAgfCAneWVhcic7XHJcbnR5cGUgRGF0ZUZvcm1hdFBhcnRUeXBlcyA9ICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyB8ICdsaXRlcmFsJztcclxuXHJcbi8vIHR5cGUgRGF0ZVBhcnRzID0ge1xyXG4vLyAgIFtrZXkgaW4gRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXNdPzogc3RyaW5nO1xyXG4vLyB9O1xyXG5cclxuLy8gdHlwZSBEYXRlUGFydHMgPSB7XHJcbi8vICAgeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBkYXk6IG51bWJlciwgbGl0ZXJhbDogc3RyaW5nXHJcbi8vIH07XHJcbi8vXHJcbi8vIGV4cG9ydCBjb25zdCBjdnREYXRlID0gKGRhdGVBc1N0cmluZzogc3RyaW5nLCBsb2NhbGUgPSAncGwtUEwnKSA9PiB7XHJcbi8vICAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGVBc1N0cmluZyA/PyBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUpO1xyXG4vLyAgIGNvbnN0IGRhdGVTcGxpdCA9IGRhdGVTdHJpbmcuc3BsaXQoL1suXFwtXFwvXFxzXFxEXS9naSkuZmlsdGVyKGl0ZW0gPT4gISFpdGVtLmxlbmd0aCk7XHJcbi8vICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlKTtcclxuLy8gICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKCkuZmlsdGVyKHBhcnQgPT4gWyd5ZWFyJywgJ21vbnRoJywgJ2RheSddLmluY2x1ZGVzKHBhcnQudHlwZSkpO1xyXG4vLyAgIGNvbnN0IGRhdGVTaGltID0ge1xyXG4vLyAgICAgZGF5OiB1bmRlZmluZWQsIG1vbnRoOiB1bmRlZmluZWQsIHllYXI6IHVuZGVmaW5lZFxyXG4vLyAgIH07XHJcbi8vICAgcGFydHMuZm9yRWFjaCgocGFydCwgaW5kZXgpID0+IHtcclxuLy8gICAgIGNvbnN0IHsgdHlwZSwgdmFsdWUgfSA9IHsgLi4ucGFydCB9O1xyXG4vLyAgICAgLy8gQHRzLWlnbm9yZVxyXG4vLyAgICAgZGF0ZVNoaW1bdHlwZV0gPSBkYXRlU3BsaXRbaW5kZXhdO1xyXG4vLyAgIH0pO1xyXG4vL1xyXG4vLyAgIHJldHVybiBkYXRlU2hpbTtcclxuLy9cclxuLy8gICAvLyBjb25zdCBkYXRlUGFydHM6IERhdGVQYXJ0cyA9IHtcclxuLy8gICAvLyAgIHllYXI6IDAsXHJcbi8vICAgLy8gICBtb250aDogMCxcclxuLy8gICAvLyAgIGRheTogMCxcclxuLy8gICAvLyAgIGxpdGVyYWw6ICcvJ1xyXG4vLyAgIC8vIH07XHJcbi8vICAgLy9cclxuLy8gICAvLyBjb25zdCBsaXRlcmFsID0gcGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2xpdGVyYWwnKT8udmFsdWUgPz8gJy8nO1xyXG4vLyAgIC8vIC8vIGNvbnN0IHllYXIgPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xyXG4vLyAgIC8vIC8vIGNvbnN0IG1vbnRoID0gcGFyc2VJbnQocGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ3llYXInKT8udmFsdWUgPz8gJzAnKTtcclxuLy8gICAvLyAvLyBjb25zdCBkYXkgPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xyXG4vLyAgIC8vXHJcbi8vICAgLy8gY29uc3QgZGF0ZUFycmF5ID0gZGF0ZVN0cmluZy5zcGxpdChsaXRlcmFsKTtcclxuLy8gICAvL1xyXG4vLyAgIC8vIHBhcnRzLmZvckVhY2gocGFydCA9PiB7XHJcbi8vICAgLy8gICBjb25zdCB7dHlwZSwgdmFsdWV9ID0gey4uLnBhcnR9O1xyXG4vLyAgIC8vICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XHJcbi8vICAgLy9cclxuLy8gICAvLyAgIH1cclxuLy8gICAvLyB9KVxyXG4vLyAgIC8vXHJcbi8vICAgLy8gcGFydHMuZmlsdGVyKHBhcnQgPT4gcGFydC50eXBlIGluIGRhdGVQYXJ0cykubWFwKHBhcnQgPT4ge1xyXG4vLyAgIC8vICAgY29uc3Qge3R5cGUsIHZhbHVlfSA9IHsuLi5wYXJ0fTtcclxuLy8gICAvLyAgIC8vIEB0cy1pZ25vcmVcclxuLy8gICAvLyAgIGRhdGVQYXJ0c1t0eXBlXSA9IHBhcnNlSW50KHBhcnQudmFsdWUpO1xyXG4vLyAgIC8vICAgLy9cclxuLy8gICAvLyAgIC8vIHN3aXRjaCAodHlwZSkge1xyXG4vLyAgIC8vICAgLy8gICBjYXNlICdkYXknOlxyXG4vLyAgIC8vICAgLy8gICAgIGRheSA9IHBhcnNlSW50KHZhbHVlKTtcclxuLy8gICAvLyAgIC8vICAgICBicmVhaztcclxuLy8gICAvLyAgIC8vICAgY2FzZSAnbW9udGgnOlxyXG4vLyAgIC8vICAgLy8gICAgIG1vbnRoID0gcGFyc2VJbnQodmFsdWUpO1xyXG4vLyAgIC8vICAgLy8gICAgIGJyZWFrO1xyXG4vLyAgIC8vICAgLy8gICBjYXNlICd5ZWFyJzpcclxuLy8gICAvLyAgIC8vICAgICB5ZWFyID0gcGFyc2VJbnQodmFsdWUpO1xyXG4vLyAgIC8vICAgLy8gICAgIGJyZWFrO1xyXG4vLyAgIC8vICAgLy8gfVxyXG4vLyAgIC8vIH0pXHJcbi8vICAgLy8gLy8gY29uc3QgeyB5ZWFyLCBtb250aCwgZGF5IH0gPSB7Li4uZGF0ZVBhcnRzfVxyXG4vLyAgIC8vIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XHJcbi8vIH07XHJcbi8vXHJcbi8vIC8vIGZ1bmN0aW9uIGdldERhdGVYKGRhdGVBc1N0cmluZykge1xyXG4vLyAvLyAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IGRhdGVBc1N0cmluZy5zcGxpdCgnLycpO1xyXG4vLyAvLyAgIHJldHVybiBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSk7XHJcbi8vIC8vIH1cclxuLy9cclxuLy8gLy8gZ2V0RGF0ZSgnMTIvMDcvMTk5NycpO1xyXG4iXX0=
|
|
1
|
+
import { isValid } from 'date-fns';
|
|
2
|
+
export const convertToLocalDate = (d, locale, options = {}) => d.toLocaleDateString(locale, options);
|
|
3
|
+
export const convertToLocalTime = (d, locale, options = {}) => d.toLocaleTimeString(locale, options);
|
|
4
|
+
export const createGroupsInArray = (arr, numberOfGroups) => {
|
|
5
|
+
const perGroup = Math.ceil(arr.length / numberOfGroups);
|
|
6
|
+
return new Array(numberOfGroups)
|
|
7
|
+
.fill('')
|
|
8
|
+
.map((_, i) => arr.slice(i * perGroup, (i + 1) * perGroup));
|
|
9
|
+
};
|
|
10
|
+
export const getCurrentYear = () => new Date().getFullYear();
|
|
11
|
+
export const getCurrentMonth = () => new Date().getMonth();
|
|
12
|
+
export const getLocalDateFromString = (string, locale, time) => {
|
|
13
|
+
const date = new Date(2013, 11, 31, 17, 19, 22);
|
|
14
|
+
let regex = time ? date.toLocaleString(locale) : date.toLocaleDateString(locale);
|
|
15
|
+
regex = regex
|
|
16
|
+
.replace('2013', '(?<year>[0-9]{2,4})')
|
|
17
|
+
.replace('12', '(?<month>[0-9]{1,2})')
|
|
18
|
+
.replace('31', '(?<day>[0-9]{1,2})');
|
|
19
|
+
if (time) {
|
|
20
|
+
regex = regex
|
|
21
|
+
.replace('5', '(?<hour>[0-9]{1,2})')
|
|
22
|
+
.replace('17', '(?<hour>[0-9]{1,2})')
|
|
23
|
+
.replace('19', '(?<minute>[0-9]{1,2})')
|
|
24
|
+
.replace('22', '(?<second>[0-9]{1,2})')
|
|
25
|
+
.replace('PM', '(?<ampm>[A-Z]{2})');
|
|
26
|
+
}
|
|
27
|
+
const rgx = RegExp(`${regex}`);
|
|
28
|
+
const partials = string.match(rgx);
|
|
29
|
+
if (partials === null)
|
|
30
|
+
return;
|
|
31
|
+
const newDate = partials.groups && (time ? new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day']), partials.groups['ampm'] ? partials.groups['ampm'] === 'PM' ? Number(partials.groups['hour']) + 12 : Number(partials.groups['hour']) : Number(partials.groups['hour']), Number(partials.groups['minute']), Number(partials.groups['second'])) : new Date(Number(partials.groups['year']), Number(partials.groups['month']) - 1, Number(partials.groups['day'])));
|
|
32
|
+
return newDate;
|
|
33
|
+
};
|
|
34
|
+
export const getMonthName = (month, locale) => {
|
|
35
|
+
const d = new Date();
|
|
36
|
+
d.setDate(1);
|
|
37
|
+
d.setMonth(month);
|
|
38
|
+
return d.toLocaleString(locale, { month: 'long' });
|
|
39
|
+
};
|
|
40
|
+
export const getMonthsNames = (locale) => {
|
|
41
|
+
const months = [];
|
|
42
|
+
const d = new Date();
|
|
43
|
+
d.setDate(1);
|
|
44
|
+
for (let i = 0; i < 12; i++) {
|
|
45
|
+
d.setMonth(i);
|
|
46
|
+
months.push(d.toLocaleDateString(locale, { month: 'short' }));
|
|
47
|
+
}
|
|
48
|
+
return months;
|
|
49
|
+
};
|
|
50
|
+
export const getYears = (year) => {
|
|
51
|
+
const years = [];
|
|
52
|
+
for (let _year = year - 6; _year < year + 6; _year++) {
|
|
53
|
+
years.push(_year);
|
|
54
|
+
}
|
|
55
|
+
return years;
|
|
56
|
+
};
|
|
57
|
+
const getLeadingDays = (year, month, firstDayOfWeek) => {
|
|
58
|
+
// 0: sunday
|
|
59
|
+
// 1: monday
|
|
60
|
+
const dates = [];
|
|
61
|
+
const d = new Date(year, month);
|
|
62
|
+
const y = d.getFullYear();
|
|
63
|
+
const m = d.getMonth();
|
|
64
|
+
const firstWeekday = new Date(y, m, 1).getDay();
|
|
65
|
+
let leadingDays = 6 - (6 - firstWeekday) - firstDayOfWeek;
|
|
66
|
+
if (firstDayOfWeek) {
|
|
67
|
+
leadingDays = leadingDays < 0 ? 7 + leadingDays : leadingDays;
|
|
68
|
+
}
|
|
69
|
+
for (let i = leadingDays * -1; i < 0; i++) {
|
|
70
|
+
dates.push({
|
|
71
|
+
date: new Date(y, m, i + 1), month: 'previous'
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return dates;
|
|
75
|
+
};
|
|
76
|
+
const getMonthDays = (year, month) => {
|
|
77
|
+
const dates = [];
|
|
78
|
+
const lastDay = new Date(year, month + 1, 0).getDate();
|
|
79
|
+
for (let i = 1; i <= lastDay; i++) {
|
|
80
|
+
dates.push({
|
|
81
|
+
date: new Date(year, month, i), month: 'current'
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return dates;
|
|
85
|
+
};
|
|
86
|
+
const getTrailingDays = (year, month, leadingDays, monthDays) => {
|
|
87
|
+
const dates = [];
|
|
88
|
+
const days = 42 - (leadingDays.length + monthDays.length);
|
|
89
|
+
for (let i = 1; i <= days; i++) {
|
|
90
|
+
dates.push({
|
|
91
|
+
date: new Date(year, month + 1, i), month: 'next'
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return dates;
|
|
95
|
+
};
|
|
96
|
+
export const getMonthDetails = (year, month, firstDayOfWeek) => {
|
|
97
|
+
const daysPrevMonth = getLeadingDays(year, month, firstDayOfWeek);
|
|
98
|
+
const daysThisMonth = getMonthDays(year, month);
|
|
99
|
+
const daysNextMonth = getTrailingDays(year, month, daysPrevMonth, daysThisMonth);
|
|
100
|
+
const days = [...daysPrevMonth, ...daysThisMonth, ...daysNextMonth];
|
|
101
|
+
const weeks = [];
|
|
102
|
+
days.forEach((day, index) => {
|
|
103
|
+
if (index % 7 === 0 || weeks.length === 0) {
|
|
104
|
+
weeks.push([]);
|
|
105
|
+
}
|
|
106
|
+
weeks[weeks.length - 1].push(day);
|
|
107
|
+
});
|
|
108
|
+
return weeks;
|
|
109
|
+
};
|
|
110
|
+
export const isDateDisabled = (date, min, max, dates) => {
|
|
111
|
+
if (!date)
|
|
112
|
+
return;
|
|
113
|
+
let disabled;
|
|
114
|
+
if (dates) {
|
|
115
|
+
dates.forEach((_date) => {
|
|
116
|
+
if (Array.isArray(_date)) {
|
|
117
|
+
if (isDateInRange(date, _date[0], _date[1])) {
|
|
118
|
+
disabled = true;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (_date instanceof Date) {
|
|
122
|
+
if (isSameDateAs(date, _date)) {
|
|
123
|
+
disabled = true;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
if (min && date < min) {
|
|
129
|
+
disabled = true;
|
|
130
|
+
}
|
|
131
|
+
if (max && date > max) {
|
|
132
|
+
disabled = true;
|
|
133
|
+
}
|
|
134
|
+
return disabled;
|
|
135
|
+
};
|
|
136
|
+
export const isDateInRange = (date, start, end) => {
|
|
137
|
+
return date && start && end && start <= date && date <= end;
|
|
138
|
+
};
|
|
139
|
+
export const isDateSelected = (date, start, end) => {
|
|
140
|
+
return date && ((start && isSameDateAs(start, date)) || (end && isSameDateAs(end, date)));
|
|
141
|
+
};
|
|
142
|
+
export const isEndDate = (date, start, end) => {
|
|
143
|
+
return date && start && end && isSameDateAs(end, date) && start < end;
|
|
144
|
+
};
|
|
145
|
+
export const isLastDayOfMonth = (date) => {
|
|
146
|
+
const test = new Date(date.getTime());
|
|
147
|
+
const month = test.getMonth();
|
|
148
|
+
test.setDate(test.getDate() + 1);
|
|
149
|
+
return test.getMonth() !== month;
|
|
150
|
+
};
|
|
151
|
+
export const isSameDateAs = (date, date2) => {
|
|
152
|
+
return (date.getDate() == date2.getDate() && date.getMonth() == date2.getMonth() && date.getFullYear() == date2.getFullYear());
|
|
153
|
+
};
|
|
154
|
+
export const isStartDate = (date, start, end) => {
|
|
155
|
+
return date && start && end && isSameDateAs(start, date) && start < end;
|
|
156
|
+
};
|
|
157
|
+
export const isToday = (date) => {
|
|
158
|
+
const today = new Date();
|
|
159
|
+
return (date.getDate() == today.getDate() && date.getMonth() == today.getMonth() && date.getFullYear() == today.getFullYear());
|
|
160
|
+
};
|
|
161
|
+
export const isThisMonth = (date, index) => {
|
|
162
|
+
const today = new Date();
|
|
163
|
+
return (index == today.getMonth() && date.getFullYear() == today.getFullYear());
|
|
164
|
+
};
|
|
165
|
+
export const isThisYear = (year) => {
|
|
166
|
+
const today = new Date();
|
|
167
|
+
return (year == today.getFullYear());
|
|
168
|
+
};
|
|
169
|
+
export const isValidDate = (date) => {
|
|
170
|
+
const d = new Date(date);
|
|
171
|
+
// console.log('isValidDate', date, d.getTime(), !!d.getTime())
|
|
172
|
+
return !!d.getTime();
|
|
173
|
+
};
|
|
174
|
+
export const tryDate = (value, propName = 'date') => {
|
|
175
|
+
let _value;
|
|
176
|
+
try {
|
|
177
|
+
if (!isValid(value)) {
|
|
178
|
+
throw value;
|
|
179
|
+
}
|
|
180
|
+
_value = new Date(value);
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
console.warn(`Invalid ${propName}`, err);
|
|
184
|
+
_value = new Date();
|
|
185
|
+
_value.setHours(0, 0, 0, 0);
|
|
186
|
+
}
|
|
187
|
+
return _value;
|
|
188
|
+
};
|
|
189
|
+
export const isDateInRangeDisabled = (startDate, endDate, dates) => {
|
|
190
|
+
if (startDate && endDate) {
|
|
191
|
+
const date = new Date(startDate);
|
|
192
|
+
let disabled = false;
|
|
193
|
+
while (date < endDate) {
|
|
194
|
+
date.setDate(date.getDate() + 1);
|
|
195
|
+
if (isDateDisabled(date, null, null, dates)) {
|
|
196
|
+
disabled = true;
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return disabled;
|
|
201
|
+
}
|
|
202
|
+
return false;
|
|
203
|
+
};
|
|
204
|
+
// type DateParts = {
|
|
205
|
+
// [key in DateTimeFormatPartTypes]?: string;
|
|
206
|
+
// };
|
|
207
|
+
// type DateParts = {
|
|
208
|
+
// year: number, month: number, day: number, literal: string
|
|
209
|
+
// };
|
|
210
|
+
//
|
|
211
|
+
// export const cvtDate = (dateAsString: string, locale = 'pl-PL') => {
|
|
212
|
+
// const dateString = dateAsString ?? new Date().toLocaleDateString(locale);
|
|
213
|
+
// const dateSplit = dateString.split(/[.\-\/\s\D]/gi).filter(item => !!item.length);
|
|
214
|
+
// const formatter = new Intl.DateTimeFormat(locale);
|
|
215
|
+
// const parts = formatter.formatToParts().filter(part => ['year', 'month', 'day'].includes(part.type));
|
|
216
|
+
// const dateShim = {
|
|
217
|
+
// day: undefined, month: undefined, year: undefined
|
|
218
|
+
// };
|
|
219
|
+
// parts.forEach((part, index) => {
|
|
220
|
+
// const { type, value } = { ...part };
|
|
221
|
+
// // @ts-ignore
|
|
222
|
+
// dateShim[type] = dateSplit[index];
|
|
223
|
+
// });
|
|
224
|
+
//
|
|
225
|
+
// return dateShim;
|
|
226
|
+
//
|
|
227
|
+
// // const dateParts: DateParts = {
|
|
228
|
+
// // year: 0,
|
|
229
|
+
// // month: 0,
|
|
230
|
+
// // day: 0,
|
|
231
|
+
// // literal: '/'
|
|
232
|
+
// // };
|
|
233
|
+
// //
|
|
234
|
+
// // const literal = parts.find(part => part.type === 'literal')?.value ?? '/';
|
|
235
|
+
// // // const year = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
|
|
236
|
+
// // // const month = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
|
|
237
|
+
// // // const day = parseInt(parts.find(part => part.type === 'year')?.value ?? '0');
|
|
238
|
+
// //
|
|
239
|
+
// // const dateArray = dateString.split(literal);
|
|
240
|
+
// //
|
|
241
|
+
// // parts.forEach(part => {
|
|
242
|
+
// // const {type, value} = {...part};
|
|
243
|
+
// // if (type === 'day') {
|
|
244
|
+
// //
|
|
245
|
+
// // }
|
|
246
|
+
// // })
|
|
247
|
+
// //
|
|
248
|
+
// // parts.filter(part => part.type in dateParts).map(part => {
|
|
249
|
+
// // const {type, value} = {...part};
|
|
250
|
+
// // // @ts-ignore
|
|
251
|
+
// // dateParts[type] = parseInt(part.value);
|
|
252
|
+
// // //
|
|
253
|
+
// // // switch (type) {
|
|
254
|
+
// // // case 'day':
|
|
255
|
+
// // // day = parseInt(value);
|
|
256
|
+
// // // break;
|
|
257
|
+
// // // case 'month':
|
|
258
|
+
// // // month = parseInt(value);
|
|
259
|
+
// // // break;
|
|
260
|
+
// // // case 'year':
|
|
261
|
+
// // // year = parseInt(value);
|
|
262
|
+
// // // break;
|
|
263
|
+
// // // }
|
|
264
|
+
// // })
|
|
265
|
+
// // // const { year, month, day } = {...dateParts}
|
|
266
|
+
// // return new Date(year, month - 1, day);
|
|
267
|
+
// };
|
|
268
|
+
//
|
|
269
|
+
// // function getDateX(dateAsString) {
|
|
270
|
+
// // const [day, month, year] = dateAsString.split('/');
|
|
271
|
+
// // return new Date(year, month - 1, day);
|
|
272
|
+
// // }
|
|
273
|
+
//
|
|
274
|
+
// // getDate('12/07/1997');
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbkMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFPLEVBQUUsTUFBYyxFQUFFLE9BQU8sR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFbkgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFVLEVBQUUsY0FBc0IsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQztJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQztTQUM3QixJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ1IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7QUFFN0QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLElBQWMsRUFBRSxFQUFFO0lBQ3ZGLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakYsS0FBSyxHQUFHLEtBQUs7U0FDVixPQUFPLENBQUMsTUFBTSxFQUFFLHFCQUFxQixDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUM7U0FDckMsT0FBTyxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRXZDLElBQUksSUFBSSxFQUFFO1FBQ1IsS0FBSyxHQUFHLEtBQUs7YUFDVixPQUFPLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO2FBQ25DLE9BQU8sQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUM7YUFDcEMsT0FBTyxDQUFDLElBQUksRUFBRSx1QkFBdUIsQ0FBQzthQUN0QyxPQUFPLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFDO2FBQ3RDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztLQUN2QztJQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVuQyxJQUFJLFFBQVEsS0FBSyxJQUFJO1FBQUUsT0FBTztJQUU5QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTNmLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlB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QjtBQUNwQix5Q0FBeUM7QUFDekMsUUFBUTtBQUNSLEVBQUU7QUFDRixxQkFBcUI7QUFDckIsRUFBRTtBQUNGLHNDQUFzQztBQUN0QyxrQkFBa0I7QUFDbEIsbUJBQW1CO0FBQ25CLGlCQUFpQjtBQUNqQixzQkFBc0I7QUFDdEIsVUFBVTtBQUNWLE9BQU87QUFDUCxrRkFBa0Y7QUFDbEYseUZBQXlGO0FBQ3pGLDBGQUEwRjtBQUMxRix3RkFBd0Y7QUFDeEYsT0FBTztBQUNQLG9EQUFvRDtBQUNwRCxPQUFPO0FBQ1AsK0JBQStCO0FBQy9CLDBDQUEwQztBQUMxQywrQkFBK0I7QUFDL0IsT0FBTztBQUNQLFdBQVc7QUFDWCxVQUFVO0FBQ1YsT0FBTztBQUNQLGtFQUFrRTtBQUNsRSwwQ0FBMEM7QUFDMUMsdUJBQXVCO0FBQ3ZCLGlEQUFpRDtBQUNqRCxZQUFZO0FBQ1osNEJBQTRCO0FBQzVCLDBCQUEwQjtBQUMxQix1Q0FBdUM7QUFDdkMsdUJBQXVCO0FBQ3ZCLDRCQUE0QjtBQUM1Qix5Q0FBeUM7QUFDekMsdUJBQXVCO0FBQ3ZCLDJCQUEyQjtBQUMzQix3Q0FBd0M7QUFDeEMsdUJBQXVCO0FBQ3ZCLGNBQWM7QUFDZCxVQUFVO0FBQ1Ysc0RBQXNEO0FBQ3RELDhDQUE4QztBQUM5QyxLQUFLO0FBQ0wsRUFBRTtBQUNGLHVDQUF1QztBQUN2QywyREFBMkQ7QUFDM0QsOENBQThDO0FBQzlDLE9BQU87QUFDUCxFQUFFO0FBQ0YsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNWYWxpZCB9IGZyb20gJ2RhdGUtZm5zJztcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUb0xvY2FsRGF0ZSA9IChkOiBEYXRlLCBsb2NhbGU6IHN0cmluZywgb3B0aW9ucyA9IHt9KSA9PiBkLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIG9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgY29udmVydFRvTG9jYWxUaW1lID0gKGQ6IERhdGUsIGxvY2FsZTogc3RyaW5nLCBvcHRpb25zID0ge30pID0+IGQudG9Mb2NhbGVUaW1lU3RyaW5nKGxvY2FsZSwgb3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVHcm91cHNJbkFycmF5ID0gKGFycjogYW55W10sIG51bWJlck9mR3JvdXBzOiBudW1iZXIpID0+IHtcbiAgY29uc3QgcGVyR3JvdXAgPSBNYXRoLmNlaWwoYXJyLmxlbmd0aCAvIG51bWJlck9mR3JvdXBzKTtcbiAgcmV0dXJuIG5ldyBBcnJheShudW1iZXJPZkdyb3VwcylcbiAgICAuZmlsbCgnJylcbiAgICAubWFwKChfLCBpKSA9PiBhcnIuc2xpY2UoaSAqIHBlckdyb3VwLCAoaSArIDEpICogcGVyR3JvdXApKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50WWVhciA9ICgpID0+IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcblxuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRNb250aCA9ICgpID0+IG5ldyBEYXRlKCkuZ2V0TW9udGgoKTtcblxuZXhwb3J0IGNvbnN0IGdldExvY2FsRGF0ZUZyb21TdHJpbmcgPSAoc3RyaW5nOiBzdHJpbmcsIGxvY2FsZTogc3RyaW5nLCB0aW1lPzogYm9vbGVhbikgPT4ge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAxMywgMTEsIDMxLCAxNywgMTksIDIyKTtcbiAgbGV0IHJlZ2V4ID0gdGltZSA/IGRhdGUudG9Mb2NhbGVTdHJpbmcobG9jYWxlKSA6IGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSk7XG4gIHJlZ2V4ID0gcmVnZXhcbiAgICAucmVwbGFjZSgnMjAxMycsICcoPzx5ZWFyPlswLTldezIsNH0pJylcbiAgICAucmVwbGFjZSgnMTInLCAnKD88bW9udGg+WzAtOV17MSwyfSknKVxuICAgIC5yZXBsYWNlKCczMScsICcoPzxkYXk+WzAtOV17MSwyfSknKTtcblxuICBpZiAodGltZSkge1xuICAgIHJlZ2V4ID0gcmVnZXhcbiAgICAgIC5yZXBsYWNlKCc1JywgJyg/PGhvdXI+WzAtOV17MSwyfSknKVxuICAgICAgLnJlcGxhY2UoJzE3JywgJyg/PGhvdXI+WzAtOV17MSwyfSknKVxuICAgICAgLnJlcGxhY2UoJzE5JywgJyg/PG1pbnV0ZT5bMC05XXsxLDJ9KScpXG4gICAgICAucmVwbGFjZSgnMjInLCAnKD88c2Vjb25kPlswLTldezEsMn0pJylcbiAgICAgIC5yZXBsYWNlKCdQTScsICcoPzxhbXBtPltBLVpdezJ9KScpO1xuICB9XG5cbiAgY29uc3Qgcmd4ID0gUmVnRXhwKGAke3JlZ2V4fWApO1xuICBjb25zdCBwYXJ0aWFscyA9IHN0cmluZy5tYXRjaChyZ3gpO1xuXG4gIGlmIChwYXJ0aWFscyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gIGNvbnN0IG5ld0RhdGUgPSBwYXJ0aWFscy5ncm91cHMgJiYgKHRpbWUgPyBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSwgcGFydGlhbHMuZ3JvdXBzWydhbXBtJ10gPyBwYXJ0aWFscy5ncm91cHNbJ2FtcG0nXSA9PT0gJ1BNJyA/IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgKyAxMiA6IE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2hvdXInXSkgOiBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydob3VyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtaW51dGUnXSksIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ3NlY29uZCddKSkgOiBuZXcgRGF0ZShOdW1iZXIocGFydGlhbHMuZ3JvdXBzWyd5ZWFyJ10pLCBOdW1iZXIocGFydGlhbHMuZ3JvdXBzWydtb250aCddKSAtIDEsIE51bWJlcihwYXJ0aWFscy5ncm91cHNbJ2RheSddKSkpO1xuXG4gIHJldHVybiBuZXdEYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1vbnRoTmFtZSA9IChtb250aDogbnVtYmVyLCBsb2NhbGU6IHN0cmluZykgPT4ge1xuICBjb25zdCBkID0gbmV3IERhdGUoKTtcbiAgZC5zZXREYXRlKDEpO1xuICBkLnNldE1vbnRoKG1vbnRoKTtcbiAgcmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TW9udGhzTmFtZXMgPSAobG9jYWxlOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbW9udGhzID0gW107XG4gIGNvbnN0IGQgPSBuZXcgRGF0ZSgpO1xuICBkLnNldERhdGUoMSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgZC5zZXRNb250aChpKTtcbiAgICBtb250aHMucHVzaChkLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2NhbGUsIHsgbW9udGg6ICdzaG9ydCcgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG1vbnRocztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRZZWFycyA9ICh5ZWFyOiBudW1iZXIpID0+IHtcbiAgY29uc3QgeWVhcnMgPSBbXTtcbiAgZm9yIChsZXQgX3llYXIgPSB5ZWFyIC0gNjsgX3llYXIgPCB5ZWFyICsgNjsgX3llYXIrKykge1xuICAgIHllYXJzLnB1c2goX3llYXIpO1xuICB9XG5cbiAgcmV0dXJuIHllYXJzO1xufTtcblxuY29uc3QgZ2V0TGVhZGluZ0RheXMgPSAoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyLCBmaXJzdERheU9mV2VlazogbnVtYmVyKSA9PiB7XG4gIC8vIDA6IHN1bmRheVxuICAvLyAxOiBtb25kYXlcbiAgY29uc3QgZGF0ZXMgPSBbXTtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoKTtcbiAgY29uc3QgeSA9IGQuZ2V0RnVsbFllYXIoKTtcbiAgY29uc3QgbSA9IGQuZ2V0TW9udGgoKTtcbiAgY29uc3QgZmlyc3RXZWVrZGF5ID0gbmV3IERhdGUoeSwgbSwgMSkuZ2V0RGF5KCk7XG4gIGxldCBsZWFkaW5nRGF5cyA9IDYgLSAoNiAtIGZpcnN0V2Vla2RheSkgLSBmaXJzdERheU9mV2VlaztcblxuICBpZiAoZmlyc3REYXlPZldlZWspIHtcbiAgICBsZWFkaW5nRGF5cyA9IGxlYWRpbmdEYXlzIDwgMCA/IDcgKyBsZWFkaW5nRGF5cyA6IGxlYWRpbmdEYXlzO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IGxlYWRpbmdEYXlzICogLTE7IGkgPCAwOyBpKyspIHtcbiAgICBkYXRlcy5wdXNoKHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHksIG0sIGkgKyAxKSwgbW9udGg6ICdwcmV2aW91cydcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBkYXRlcztcbn07XG5cbmNvbnN0IGdldE1vbnRoRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIpID0+IHtcbiAgY29uc3QgZGF0ZXMgPSBbXTtcbiAgY29uc3QgbGFzdERheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCkuZ2V0RGF0ZSgpO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0RGF5OyBpKyspIHtcbiAgICBkYXRlcy5wdXNoKHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoLCBpKSwgbW9udGg6ICdjdXJyZW50J1xuICAgIH0pO1xuICB9XG4gIHJldHVybiBkYXRlcztcbn07XG5cbmNvbnN0IGdldFRyYWlsaW5nRGF5cyA9ICh5ZWFyOiBudW1iZXIsIG1vbnRoOiBudW1iZXIsIGxlYWRpbmdEYXlzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdLCBtb250aERheXM6IHsgZGF0ZTogRGF0ZTsgbW9udGg6IHN0cmluZyB9W10pID0+IHtcbiAgY29uc3QgZGF0ZXMgPSBbXTtcbiAgY29uc3QgZGF5cyA9IDQyIC0gKGxlYWRpbmdEYXlzLmxlbmd0aCArIG1vbnRoRGF5cy5sZW5ndGgpO1xuICBmb3IgKGxldCBpID0gMTsgaSA8PSBkYXlzOyBpKyspIHtcbiAgICBkYXRlcy5wdXNoKHtcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgaSksIG1vbnRoOiAnbmV4dCdcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gZGF0ZXM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TW9udGhEZXRhaWxzID0gKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZmlyc3REYXlPZldlZWs6IG51bWJlcikgPT4ge1xuICBjb25zdCBkYXlzUHJldk1vbnRoID0gZ2V0TGVhZGluZ0RheXMoeWVhciwgbW9udGgsIGZpcnN0RGF5T2ZXZWVrKTtcbiAgY29uc3QgZGF5c1RoaXNNb250aCA9IGdldE1vbnRoRGF5cyh5ZWFyLCBtb250aCk7XG4gIGNvbnN0IGRheXNOZXh0TW9udGggPSBnZXRUcmFpbGluZ0RheXMoeWVhciwgbW9udGgsIGRheXNQcmV2TW9udGgsIGRheXNUaGlzTW9udGgpO1xuICBjb25zdCBkYXlzID0gWy4uLmRheXNQcmV2TW9udGgsIC4uLmRheXNUaGlzTW9udGgsIC4uLmRheXNOZXh0TW9udGhdO1xuXG4gIGNvbnN0IHdlZWtzOiB7IGRhdGU6IERhdGU7IG1vbnRoOiBzdHJpbmcgfVtdW10gPSBbXTtcblxuICBkYXlzLmZvckVhY2goKGRheSwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggJSA3ID09PSAwIHx8IHdlZWtzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgd2Vla3MucHVzaChbXSk7XG4gICAgfVxuICAgIHdlZWtzW3dlZWtzLmxlbmd0aCAtIDFdLnB1c2goZGF5KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHdlZWtzO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRGF0ZURpc2FibGVkID0gKGRhdGU6IERhdGUgfCBudWxsLCBtaW4/OiBEYXRlIHwgbnVsbCwgbWF4PzogRGF0ZSB8IG51bGwsIGRhdGVzPzogRGF0ZVtdIHwgRGF0ZVtdW10pID0+IHtcbiAgaWYgKCFkYXRlKSByZXR1cm47XG4gIGxldCBkaXNhYmxlZDtcbiAgaWYgKGRhdGVzKSB7XG4gICAgZGF0ZXMuZm9yRWFjaCgoX2RhdGU6IERhdGUgfCBEYXRlW10pID0+IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KF9kYXRlKSkge1xuICAgICAgICBpZiAoaXNEYXRlSW5SYW5nZShkYXRlLCBfZGF0ZVswXSwgX2RhdGVbMV0pKSB7XG4gICAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoX2RhdGUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIGlmIChpc1NhbWVEYXRlQXMoZGF0ZSwgX2RhdGUpKSB7XG4gICAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgaWYgKG1pbiAmJiBkYXRlIDwgbWluKSB7XG4gICAgZGlzYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG1heCAmJiBkYXRlID4gbWF4KSB7XG4gICAgZGlzYWJsZWQgPSB0cnVlO1xuICB9XG4gIHJldHVybiBkaXNhYmxlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGVJblJhbmdlID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcbiAgcmV0dXJuIGRhdGUgJiYgc3RhcnQgJiYgZW5kICYmIHN0YXJ0IDw9IGRhdGUgJiYgZGF0ZSA8PSBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEYXRlU2VsZWN0ZWQgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xuICByZXR1cm4gZGF0ZSAmJiAoKHN0YXJ0ICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkpIHx8IChlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0VuZERhdGUgPSAoZGF0ZTogRGF0ZSB8IG51bGwsIHN0YXJ0OiBEYXRlIHwgbnVsbCwgZW5kOiBEYXRlIHwgbnVsbCkgPT4ge1xuICByZXR1cm4gZGF0ZSAmJiBzdGFydCAmJiBlbmQgJiYgaXNTYW1lRGF0ZUFzKGVuZCwgZGF0ZSkgJiYgc3RhcnQgPCBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNMYXN0RGF5T2ZNb250aCA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGNvbnN0IHRlc3QgPSBuZXcgRGF0ZShkYXRlLmdldFRpbWUoKSk7XG4gIGNvbnN0IG1vbnRoID0gdGVzdC5nZXRNb250aCgpO1xuXG4gIHRlc3Quc2V0RGF0ZSh0ZXN0LmdldERhdGUoKSArIDEpO1xuICByZXR1cm4gdGVzdC5nZXRNb250aCgpICE9PSBtb250aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1NhbWVEYXRlQXMgPSAoZGF0ZTogRGF0ZSwgZGF0ZTI6IERhdGUpID0+IHtcbiAgcmV0dXJuIChkYXRlLmdldERhdGUoKSA9PSBkYXRlMi5nZXREYXRlKCkgJiYgZGF0ZS5nZXRNb250aCgpID09IGRhdGUyLmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IGRhdGUyLmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU3RhcnREYXRlID0gKGRhdGU6IERhdGUgfCBudWxsLCBzdGFydDogRGF0ZSB8IG51bGwsIGVuZDogRGF0ZSB8IG51bGwpID0+IHtcbiAgcmV0dXJuIGRhdGUgJiYgc3RhcnQgJiYgZW5kICYmIGlzU2FtZURhdGVBcyhzdGFydCwgZGF0ZSkgJiYgc3RhcnQgPCBlbmQ7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUb2RheSA9IChkYXRlOiBEYXRlKSA9PiB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuIChkYXRlLmdldERhdGUoKSA9PSB0b2RheS5nZXREYXRlKCkgJiYgZGF0ZS5nZXRNb250aCgpID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGhpc01vbnRoID0gKGRhdGU6IERhdGUsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICByZXR1cm4gKGluZGV4ID09IHRvZGF5LmdldE1vbnRoKCkgJiYgZGF0ZS5nZXRGdWxsWWVhcigpID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVGhpc1llYXIgPSAoeWVhcjogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuICh5ZWFyID09IHRvZGF5LmdldEZ1bGxZZWFyKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVmFsaWREYXRlID0gKGRhdGU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKGRhdGUpO1xuICAvLyBjb25zb2xlLmxvZygnaXNWYWxpZERhdGUnLCBkYXRlLCBkLmdldFRpbWUoKSwgISFkLmdldFRpbWUoKSlcbiAgcmV0dXJuICEhZC5nZXRUaW1lKCk7XG59O1xuXG5leHBvcnQgY29uc3QgdHJ5RGF0ZSA9ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSwgcHJvcE5hbWU6IHN0cmluZyA9ICdkYXRlJykgPT4ge1xuICBsZXQgX3ZhbHVlO1xuICB0cnkge1xuICAgIGlmICghaXNWYWxpZCh2YWx1ZSkpIHtcbiAgICAgIHRocm93IHZhbHVlO1xuICAgIH1cbiAgICBfdmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUud2FybihgSW52YWxpZCAke3Byb3BOYW1lfWAsIGVycik7XG4gICAgX3ZhbHVlID0gbmV3IERhdGUoKTtcbiAgICBfdmFsdWUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIH1cbiAgcmV0dXJuIF92YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0RhdGVJblJhbmdlRGlzYWJsZWQgPSAoc3RhcnREYXRlPzogRGF0ZSB8IG51bGwsIGVuZERhdGU/OiBEYXRlIHwgbnVsbCwgZGF0ZXM/OiBEYXRlW10gfCBEYXRlW11bXSkgPT4ge1xuICBpZiAoc3RhcnREYXRlICYmIGVuZERhdGUpIHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoc3RhcnREYXRlKTtcbiAgICBsZXQgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIHdoaWxlIChkYXRlIDwgZW5kRGF0ZSkge1xuICAgICAgZGF0ZS5zZXREYXRlKGRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gICAgICBpZiAoaXNEYXRlRGlzYWJsZWQoZGF0ZSwgbnVsbCwgbnVsbCwgZGF0ZXMpKSB7XG4gICAgICAgIGRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkaXNhYmxlZDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG4vLyBleHBvcnQgY29uc3Qgc3RyaW5nVG9EYXRlQ29udmVydCA9IChkYXRlOiBzdHJpbmcsIGxvY2FsZXM6IHN0cmluZykgPT4ge1xuLy8gICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZnItRlInKTtcbi8vICAgY29uc3QgcGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cygpO1xuLy8gICBjb25zb2xlLmxvZyhkYXRlLCBwYXJ0cywgZm9ybWF0dGVyLmZvcm1hdCgpLCBmb3JtYXR0ZXIucmVzb2x2ZWRPcHRpb25zKCksIGZvcm1hdHRlci5mb3JtYXQoKSk7XG4vLyB9O1xuXG4vLyBkZWNsYXJlIG5hbWVzcGFjZSBJbnRsIHtcbi8vICAgdHlwZSBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcyA9IFwiZGF5XCIgfCBcImRheVBlcmlvZFwiIHwgXCJlcmFcIiB8IFwiZnJhY3Rpb25hbFNlY29uZFwiIHwgXCJob3VyXCIgfCBcImxpdGVyYWxcIiB8IFwibWludXRlXCIgfCBcIm1vbnRoXCIgfCBcInNlY29uZFwiIHwgXCJ0aW1lWm9uZU5hbWVcIiB8IFwid2Vla2RheVwiIHwgXCJ5ZWFyXCI7XG4vL1xuLy8gICBpbnRlcmZhY2UgRGF0ZVRpbWVGb3JtYXRQYXJ0IHtcbi8vICAgICB0eXBlOiBEYXRlVGltZUZvcm1hdFBhcnRUeXBlcztcbi8vICAgICB2YWx1ZTogc3RyaW5nO1xuLy8gICB9XG4vL1xuLy8gICBpbnRlcmZhY2UgRGF0ZVRpbWVGb3JtYXQge1xuLy8gICAgIGZvcm1hdFRvUGFydHMoZGF0ZT86IERhdGUgfCBudW1iZXIpOiBEYXRlVGltZUZvcm1hdFBhcnRbXTtcbi8vICAgfVxuLy8gfVxuXG50eXBlIERhdGVUaW1lRm9ybWF0UGFydFR5cGVzID1cbiAgJ2RheSdcbiAgfCAnZGF5UGVyaW9kJ1xuICB8ICdlcmEnXG4gIHwgJ2ZyYWN0aW9uYWxTZWNvbmQnXG4gIHwgJ2hvdXInXG4gIHwgJ2xpdGVyYWwnXG4gIHwgJ21pbnV0ZSdcbiAgfCAnbW9udGgnXG4gIHwgJ3NlY29uZCdcbiAgfCAndGltZVpvbmVOYW1lJ1xuICB8ICd3ZWVrZGF5J1xuICB8ICd5ZWFyJztcbnR5cGUgRGF0ZUZvcm1hdFBhcnRUeXBlcyA9ICdkYXknIHwgJ21vbnRoJyB8ICd5ZWFyJyB8ICdsaXRlcmFsJztcblxuLy8gdHlwZSBEYXRlUGFydHMgPSB7XG4vLyAgIFtrZXkgaW4gRGF0ZVRpbWVGb3JtYXRQYXJ0VHlwZXNdPzogc3RyaW5nO1xuLy8gfTtcblxuLy8gdHlwZSBEYXRlUGFydHMgPSB7XG4vLyAgIHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlciwgZGF5OiBudW1iZXIsIGxpdGVyYWw6IHN0cmluZ1xuLy8gfTtcbi8vXG4vLyBleHBvcnQgY29uc3QgY3Z0RGF0ZSA9IChkYXRlQXNTdHJpbmc6IHN0cmluZywgbG9jYWxlID0gJ3BsLVBMJykgPT4ge1xuLy8gICBjb25zdCBkYXRlU3RyaW5nID0gZGF0ZUFzU3RyaW5nID8/IG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKGxvY2FsZSk7XG4vLyAgIGNvbnN0IGRhdGVTcGxpdCA9IGRhdGVTdHJpbmcuc3BsaXQoL1suXFwtXFwvXFxzXFxEXS9naSkuZmlsdGVyKGl0ZW0gPT4gISFpdGVtLmxlbmd0aCk7XG4vLyAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSk7XG4vLyAgIGNvbnN0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMoKS5maWx0ZXIocGFydCA9PiBbJ3llYXInLCAnbW9udGgnLCAnZGF5J10uaW5jbHVkZXMocGFydC50eXBlKSk7XG4vLyAgIGNvbnN0IGRhdGVTaGltID0ge1xuLy8gICAgIGRheTogdW5kZWZpbmVkLCBtb250aDogdW5kZWZpbmVkLCB5ZWFyOiB1bmRlZmluZWRcbi8vICAgfTtcbi8vICAgcGFydHMuZm9yRWFjaCgocGFydCwgaW5kZXgpID0+IHtcbi8vICAgICBjb25zdCB7IHR5cGUsIHZhbHVlIH0gPSB7IC4uLnBhcnQgfTtcbi8vICAgICAvLyBAdHMtaWdub3JlXG4vLyAgICAgZGF0ZVNoaW1bdHlwZV0gPSBkYXRlU3BsaXRbaW5kZXhdO1xuLy8gICB9KTtcbi8vXG4vLyAgIHJldHVybiBkYXRlU2hpbTtcbi8vXG4vLyAgIC8vIGNvbnN0IGRhdGVQYXJ0czogRGF0ZVBhcnRzID0ge1xuLy8gICAvLyAgIHllYXI6IDAsXG4vLyAgIC8vICAgbW9udGg6IDAsXG4vLyAgIC8vICAgZGF5OiAwLFxuLy8gICAvLyAgIGxpdGVyYWw6ICcvJ1xuLy8gICAvLyB9O1xuLy8gICAvL1xuLy8gICAvLyBjb25zdCBsaXRlcmFsID0gcGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ2xpdGVyYWwnKT8udmFsdWUgPz8gJy8nO1xuLy8gICAvLyAvLyBjb25zdCB5ZWFyID0gcGFyc2VJbnQocGFydHMuZmluZChwYXJ0ID0+IHBhcnQudHlwZSA9PT0gJ3llYXInKT8udmFsdWUgPz8gJzAnKTtcbi8vICAgLy8gLy8gY29uc3QgbW9udGggPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xuLy8gICAvLyAvLyBjb25zdCBkYXkgPSBwYXJzZUludChwYXJ0cy5maW5kKHBhcnQgPT4gcGFydC50eXBlID09PSAneWVhcicpPy52YWx1ZSA/PyAnMCcpO1xuLy8gICAvL1xuLy8gICAvLyBjb25zdCBkYXRlQXJyYXkgPSBkYXRlU3RyaW5nLnNwbGl0KGxpdGVyYWwpO1xuLy8gICAvL1xuLy8gICAvLyBwYXJ0cy5mb3JFYWNoKHBhcnQgPT4ge1xuLy8gICAvLyAgIGNvbnN0IHt0eXBlLCB2YWx1ZX0gPSB7Li4ucGFydH07XG4vLyAgIC8vICAgaWYgKHR5cGUgPT09ICdkYXknKSB7XG4vLyAgIC8vXG4vLyAgIC8vICAgfVxuLy8gICAvLyB9KVxuLy8gICAvL1xuLy8gICAvLyBwYXJ0cy5maWx0ZXIocGFydCA9PiBwYXJ0LnR5cGUgaW4gZGF0ZVBhcnRzKS5tYXAocGFydCA9PiB7XG4vLyAgIC8vICAgY29uc3Qge3R5cGUsIHZhbHVlfSA9IHsuLi5wYXJ0fTtcbi8vICAgLy8gICAvLyBAdHMtaWdub3JlXG4vLyAgIC8vICAgZGF0ZVBhcnRzW3R5cGVdID0gcGFyc2VJbnQocGFydC52YWx1ZSk7XG4vLyAgIC8vICAgLy9cbi8vICAgLy8gICAvLyBzd2l0Y2ggKHR5cGUpIHtcbi8vICAgLy8gICAvLyAgIGNhc2UgJ2RheSc6XG4vLyAgIC8vICAgLy8gICAgIGRheSA9IHBhcnNlSW50KHZhbHVlKTtcbi8vICAgLy8gICAvLyAgICAgYnJlYWs7XG4vLyAgIC8vICAgLy8gICBjYXNlICdtb250aCc6XG4vLyAgIC8vICAgLy8gICAgIG1vbnRoID0gcGFyc2VJbnQodmFsdWUpO1xuLy8gICAvLyAgIC8vICAgICBicmVhaztcbi8vICAgLy8gICAvLyAgIGNhc2UgJ3llYXInOlxuLy8gICAvLyAgIC8vICAgICB5ZWFyID0gcGFyc2VJbnQodmFsdWUpO1xuLy8gICAvLyAgIC8vICAgICBicmVhaztcbi8vICAgLy8gICAvLyB9XG4vLyAgIC8vIH0pXG4vLyAgIC8vIC8vIGNvbnN0IHsgeWVhciwgbW9udGgsIGRheSB9ID0gey4uLmRhdGVQYXJ0c31cbi8vICAgLy8gcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbi8vIH07XG4vL1xuLy8gLy8gZnVuY3Rpb24gZ2V0RGF0ZVgoZGF0ZUFzU3RyaW5nKSB7XG4vLyAvLyAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IGRhdGVBc1N0cmluZy5zcGxpdCgnLycpO1xuLy8gLy8gICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXkpO1xuLy8gLy8gfVxuLy9cbi8vIC8vIGdldERhdGUoJzEyLzA3LzE5OTcnKTtcbiJdfQ==
|