@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,311 +1,311 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
-
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
4
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
|
-
import { ModalContentComponent } from '../modal-content/modal-content.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../modal.service";
|
|
8
|
-
import * as i2 from "../../backdrop/backdrop.service";
|
|
9
|
-
import * as i3 from "@angular/cdk/a11y";
|
|
10
|
-
import * as i4 from "../modal-content/modal-content.component";
|
|
11
|
-
import * as i5 from "../modal-dialog/modal-dialog.component";
|
|
12
|
-
export class ModalComponent {
|
|
13
|
-
constructor(document, renderer, hostElement, modalService, backdropService) {
|
|
14
|
-
this.document = document;
|
|
15
|
-
this.renderer = renderer;
|
|
16
|
-
this.hostElement = hostElement;
|
|
17
|
-
this.modalService = modalService;
|
|
18
|
-
this.backdropService = backdropService;
|
|
19
|
-
/**
|
|
20
|
-
* Align the modal in the center or top of the screen.
|
|
21
|
-
* @type {'top' | 'center'}
|
|
22
|
-
* @default 'top'
|
|
23
|
-
*/
|
|
24
|
-
this.alignment = 'top';
|
|
25
|
-
/**
|
|
26
|
-
* Apply a backdrop on body while modal is open.
|
|
27
|
-
* @type boolean | 'static'
|
|
28
|
-
* @default true
|
|
29
|
-
*/
|
|
30
|
-
this.backdrop = true;
|
|
31
|
-
/**
|
|
32
|
-
* Closes the modal when escape key is pressed.
|
|
33
|
-
* @type boolean
|
|
34
|
-
* @default true
|
|
35
|
-
*/
|
|
36
|
-
this.keyboard = true;
|
|
37
|
-
/**
|
|
38
|
-
* Remove animation to create modal that simply appear rather than fade in to view.
|
|
39
|
-
*/
|
|
40
|
-
this.transition = true;
|
|
41
|
-
/**
|
|
42
|
-
* Default role for modal. [docs]
|
|
43
|
-
* @type string
|
|
44
|
-
* @default 'dialog'
|
|
45
|
-
*/
|
|
46
|
-
this.role = 'dialog';
|
|
47
|
-
/**
|
|
48
|
-
* Set aria-modal html attr for modal. [docs]
|
|
49
|
-
* @type boolean
|
|
50
|
-
* @default true
|
|
51
|
-
*/
|
|
52
|
-
this.ariaModal = true;
|
|
53
|
-
this._scrollable = false;
|
|
54
|
-
/**
|
|
55
|
-
* Event triggered on modal dismiss.
|
|
56
|
-
*/
|
|
57
|
-
this.visibleChange = new EventEmitter();
|
|
58
|
-
this._show = true;
|
|
59
|
-
this.mouseDownTarget = null;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Create a scrollable modal that allows scrolling the modal body.
|
|
63
|
-
* @type boolean
|
|
64
|
-
*/
|
|
65
|
-
set scrollable(value) {
|
|
66
|
-
this._scrollable = coerceBooleanProperty(value);
|
|
67
|
-
}
|
|
68
|
-
get scrollable() {
|
|
69
|
-
return this._scrollable;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Toggle the visibility of modal component.
|
|
73
|
-
* @type boolean
|
|
74
|
-
*/
|
|
75
|
-
set visible(value) {
|
|
76
|
-
const newValue = coerceBooleanProperty(value);
|
|
77
|
-
if (this._visible !== newValue) {
|
|
78
|
-
this._visible = newValue;
|
|
79
|
-
this.setBackdrop(this.backdrop !== false && newValue);
|
|
80
|
-
this.setBodyStyles(newValue);
|
|
81
|
-
this.visibleChange.emit(newValue);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
get visible() {
|
|
85
|
-
return this._visible;
|
|
86
|
-
}
|
|
87
|
-
// private inBoundingClientRect!: boolean;
|
|
88
|
-
get hostClasses() {
|
|
89
|
-
return {
|
|
90
|
-
modal: true,
|
|
91
|
-
fade: this.transition,
|
|
92
|
-
show: this.show
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
get ariaHidden() {
|
|
96
|
-
return this.visible ? null : true;
|
|
97
|
-
}
|
|
98
|
-
;
|
|
99
|
-
get tabIndex() {
|
|
100
|
-
return '-1';
|
|
101
|
-
}
|
|
102
|
-
get animateTrigger() {
|
|
103
|
-
return this.visible ? 'visible' : 'hidden';
|
|
104
|
-
}
|
|
105
|
-
get show() {
|
|
106
|
-
return this.visible && this._show;
|
|
107
|
-
}
|
|
108
|
-
set show(value) {
|
|
109
|
-
this._show = value;
|
|
110
|
-
}
|
|
111
|
-
get scrollbarWidth() {
|
|
112
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
|
|
113
|
-
const documentWidth = this.document.documentElement.clientWidth;
|
|
114
|
-
const scrollbarWidth = Math.abs((window?.innerWidth ?? documentWidth) - documentWidth);
|
|
115
|
-
return `${scrollbarWidth}px`;
|
|
116
|
-
}
|
|
117
|
-
animateStart(event) {
|
|
118
|
-
const scrollbarWidth = this.scrollbarWidth;
|
|
119
|
-
if (event.toState === 'visible') {
|
|
120
|
-
this.renderer.setStyle(this.document.body, 'overflow', 'hidden');
|
|
121
|
-
this.renderer.setStyle(this.document.body, 'padding-right', scrollbarWidth);
|
|
122
|
-
this.renderer.setStyle(this.hostElement.nativeElement, 'display', 'block');
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
if (!this.transition) {
|
|
126
|
-
this.renderer.setStyle(this.hostElement.nativeElement, 'display', 'none');
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
animateDone(event) {
|
|
131
|
-
setTimeout(() => {
|
|
132
|
-
if (event.toState === 'hidden') {
|
|
133
|
-
this.renderer.setStyle(this.hostElement.nativeElement, 'display', 'none');
|
|
134
|
-
this.renderer.removeStyle(this.document.body, 'overflow');
|
|
135
|
-
this.renderer.removeStyle(this.document.body, 'padding-right');
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
this.show = this.visible;
|
|
139
|
-
}
|
|
140
|
-
onKeyDownHandler(event) {
|
|
141
|
-
if (event.key === 'Escape' && this.keyboard && this.visible) {
|
|
142
|
-
if (this.backdrop === 'static') {
|
|
143
|
-
this.setStaticBackdrop();
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
this.modalService.toggle({ show: false, modal: this });
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
onMouseDownHandler($event) {
|
|
151
|
-
this.mouseDownTarget = $event.target;
|
|
152
|
-
}
|
|
153
|
-
onClickHandler($event) {
|
|
154
|
-
if (this.mouseDownTarget !== $event.target) {
|
|
155
|
-
this.mouseDownTarget = null;
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
const targetElement = $event.target;
|
|
159
|
-
if (targetElement === this.hostElement.nativeElement) {
|
|
160
|
-
if (this.backdrop === 'static') {
|
|
161
|
-
this.setStaticBackdrop();
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
this.modalService.toggle({ show: false, modal: this });
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
ngOnInit() {
|
|
168
|
-
this.stateToggleSubscribe();
|
|
169
|
-
}
|
|
170
|
-
ngOnDestroy() {
|
|
171
|
-
this.modalService.toggle({ show: false, modal: this });
|
|
172
|
-
this.stateToggleSubscribe(false);
|
|
173
|
-
}
|
|
174
|
-
stateToggleSubscribe(subscribe = true) {
|
|
175
|
-
if (subscribe) {
|
|
176
|
-
this.stateToggleSubscription = this.modalService.modalState$.subscribe((action) => {
|
|
177
|
-
if (this === action.modal || this.id === action.id) {
|
|
178
|
-
if ('show' in action) {
|
|
179
|
-
this.visible = action?.show === 'toggle' ? !this.visible : action.show;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
if (this.visible) {
|
|
184
|
-
this.visible = false;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
this.stateToggleSubscription.unsubscribe();
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
setBackdrop(setBackdrop) {
|
|
194
|
-
if (setBackdrop) {
|
|
195
|
-
this.activeBackdrop = this.backdropService.setBackdrop('modal');
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
this.activeBackdrop = this.backdropService.clearBackdrop(this.activeBackdrop);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
setBodyStyles(open) {
|
|
202
|
-
if (open) {
|
|
203
|
-
if (this.backdrop === true) {
|
|
204
|
-
this.renderer.addClass(this.document.body, 'modal-open');
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
this.renderer.removeClass(this.document.body, 'modal-open');
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
setStaticBackdrop() {
|
|
212
|
-
if (this.transition) {
|
|
213
|
-
this.renderer.addClass(this.hostElement.nativeElement, 'modal-static');
|
|
214
|
-
this.renderer.setStyle(this.hostElement.nativeElement, 'overflow-y', 'hidden');
|
|
215
|
-
setTimeout(() => {
|
|
216
|
-
this.renderer.removeClass(this.hostElement.nativeElement, 'modal-static');
|
|
217
|
-
this.renderer.removeStyle(this.hostElement.nativeElement, 'overflow-y');
|
|
218
|
-
}, 300);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ModalComponent, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.ModalService }, { token: i2.BackdropService }], target: i0.ɵɵFactoryTarget.Component });
|
|
223
|
-
ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ModalComponent, selector: "c-modal", inputs: { alignment: "alignment", backdrop: "backdrop", fullscreen: "fullscreen", keyboard: "keyboard", id: "id", size: "size", transition: "transition", role: "role", ariaModal: "ariaModal", scrollable: "scrollable", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { listeners: { "@showHide.start": "animateStart($event)", "@showHide.done": "animateDone($event)", "document:keyup": "onKeyDownHandler($event)", "mousedown": "onMouseDownHandler($event)", "click": "onClickHandler($event)" }, properties: { "attr.role": "this.role", "attr.aria-modal": "this.ariaModal", "class": "this.hostClasses", "attr.aria-hidden": "this.ariaHidden", "attr.tabindex": "this.tabIndex", "@showHide": "this.animateTrigger" } }, viewQueries: [{ propertyName: "modalContent", first: true, predicate: ModalContentComponent, descendants: true, read: ElementRef }], exportAs: ["cModal"], ngImport: i0, template: "<c-modal-dialog\n [alignment]=\"alignment\"\n [fullscreen]=\"fullscreen\"\n [scrollable]=\"scrollable\"\n [size]=\"size\">\n <c-modal-content>\n <div [cdkTrapFocus]=\"visible\" [cdkTrapFocusAutoCapture]=\"visible\" style=\"display: contents;\">\n <ng-content></ng-content>\n </div>\n </c-modal-content>\n</c-modal-dialog>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i4.ModalContentComponent, selector: "c-modal-content" }, { kind: "component", type: i5.ModalDialogComponent, selector: "c-modal-dialog", inputs: ["alignment", "fullscreen", "scrollable", "size"] }], animations: [
|
|
224
|
-
trigger('showHide', [
|
|
225
|
-
state('visible', style({
|
|
226
|
-
// display: 'block'
|
|
227
|
-
})),
|
|
228
|
-
state('hidden', style({
|
|
229
|
-
// display: 'none'
|
|
230
|
-
})),
|
|
231
|
-
transition('visible <=> *', [animate('300ms')])
|
|
232
|
-
])
|
|
233
|
-
] });
|
|
234
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ModalComponent, decorators: [{
|
|
235
|
-
type: Component,
|
|
236
|
-
args: [{ selector: 'c-modal', animations: [
|
|
237
|
-
trigger('showHide', [
|
|
238
|
-
state('visible', style({
|
|
239
|
-
// display: 'block'
|
|
240
|
-
})),
|
|
241
|
-
state('hidden', style({
|
|
242
|
-
// display: 'none'
|
|
243
|
-
})),
|
|
244
|
-
transition('visible <=> *', [animate('300ms')])
|
|
245
|
-
])
|
|
246
|
-
], exportAs: 'cModal', template: "<c-modal-dialog\n [alignment]=\"alignment\"\n [fullscreen]=\"fullscreen\"\n [scrollable]=\"scrollable\"\n [size]=\"size\">\n <c-modal-content>\n <div [cdkTrapFocus]=\"visible\" [cdkTrapFocusAutoCapture]=\"visible\" style=\"display: contents;\">\n <ng-content></ng-content>\n </div>\n </c-modal-content>\n</c-modal-dialog>\n" }]
|
|
247
|
-
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
248
|
-
type: Inject,
|
|
249
|
-
args: [DOCUMENT]
|
|
250
|
-
}] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.ModalService }, { type: i2.BackdropService }]; }, propDecorators: { alignment: [{
|
|
251
|
-
type: Input
|
|
252
|
-
}], backdrop: [{
|
|
253
|
-
type: Input
|
|
254
|
-
}], fullscreen: [{
|
|
255
|
-
type: Input
|
|
256
|
-
}], keyboard: [{
|
|
257
|
-
type: Input
|
|
258
|
-
}], id: [{
|
|
259
|
-
type: Input
|
|
260
|
-
}], size: [{
|
|
261
|
-
type: Input
|
|
262
|
-
}], transition: [{
|
|
263
|
-
type: Input
|
|
264
|
-
}], role: [{
|
|
265
|
-
type: Input
|
|
266
|
-
}, {
|
|
267
|
-
type: HostBinding,
|
|
268
|
-
args: ['attr.role']
|
|
269
|
-
}], ariaModal: [{
|
|
270
|
-
type: Input
|
|
271
|
-
}, {
|
|
272
|
-
type: HostBinding,
|
|
273
|
-
args: ['attr.aria-modal']
|
|
274
|
-
}], scrollable: [{
|
|
275
|
-
type: Input
|
|
276
|
-
}], visible: [{
|
|
277
|
-
type: Input
|
|
278
|
-
}], visibleChange: [{
|
|
279
|
-
type: Output
|
|
280
|
-
}], modalContent: [{
|
|
281
|
-
type: ViewChild,
|
|
282
|
-
args: [ModalContentComponent, { read: ElementRef }]
|
|
283
|
-
}], hostClasses: [{
|
|
284
|
-
type: HostBinding,
|
|
285
|
-
args: ['class']
|
|
286
|
-
}], ariaHidden: [{
|
|
287
|
-
type: HostBinding,
|
|
288
|
-
args: ['attr.aria-hidden']
|
|
289
|
-
}], tabIndex: [{
|
|
290
|
-
type: HostBinding,
|
|
291
|
-
args: ['attr.tabindex']
|
|
292
|
-
}], animateTrigger: [{
|
|
293
|
-
type: HostBinding,
|
|
294
|
-
args: ['@showHide']
|
|
295
|
-
}], animateStart: [{
|
|
296
|
-
type: HostListener,
|
|
297
|
-
args: ['@showHide.start', ['$event']]
|
|
298
|
-
}], animateDone: [{
|
|
299
|
-
type: HostListener,
|
|
300
|
-
args: ['@showHide.done', ['$event']]
|
|
301
|
-
}], onKeyDownHandler: [{
|
|
302
|
-
type: HostListener,
|
|
303
|
-
args: ['document:keyup', ['$event']]
|
|
304
|
-
}], onMouseDownHandler: [{
|
|
305
|
-
type: HostListener,
|
|
306
|
-
args: ['mousedown', ['$event']]
|
|
307
|
-
}], onClickHandler: [{
|
|
308
|
-
type: HostListener,
|
|
309
|
-
args: ['click', ['$event']]
|
|
310
|
-
}] } });
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tb2RhbC9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL21vZGFsL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7O0FBeUJqRixNQUFNLE9BQU8sY0FBYztJQUt6QixZQUM0QixRQUFrQixFQUNwQyxRQUFtQixFQUNuQixXQUF1QixFQUN2QixZQUEwQixFQUMxQixlQUFnQztRQUpkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFHMUM7Ozs7V0FJRztRQUNNLGNBQVMsR0FBc0IsS0FBSyxDQUFDO1FBQzlDOzs7O1dBSUc7UUFDTSxhQUFRLEdBQXVCLElBQUks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M0MsV0FBVztzQkFEVixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWExQyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFjbkMsa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNOUIsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFJlbmRlcmVyMixcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBhbmltYXRlLCBBbmltYXRpb25FdmVudCwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFja2Ryb3BTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYmFja2Ryb3AvYmFja2Ryb3Auc2VydmljZSc7XHJcbmltcG9ydCB7IE1vZGFsQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsLWNvbnRlbnQvbW9kYWwtY29udGVudC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjLW1vZGFsJyxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdzaG93SGlkZScsIFtcclxuICAgICAgc3RhdGUoXHJcbiAgICAgICAgJ3Zpc2libGUnLFxyXG4gICAgICAgIHN0eWxlKHtcclxuICAgICAgICAgIC8vIGRpc3BsYXk6ICdibG9jaydcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgICBzdGF0ZShcclxuICAgICAgICAnaGlkZGVuJyxcclxuICAgICAgICBzdHlsZSh7XHJcbiAgICAgICAgICAvLyBkaXNwbGF5OiAnbm9uZSdcclxuICAgICAgICB9KVxyXG4gICAgICApLFxyXG4gICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlIDw9PiAqJywgW2FuaW1hdGUoJzMwMG1zJyldKVxyXG4gICAgXSlcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBleHBvcnRBczogJ2NNb2RhbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2Nyb2xsYWJsZTogQm9vbGVhbklucHV0O1xyXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV92aXNpYmxlOiBCb29sZWFuSW5wdXQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgIHByaXZhdGUgYmFja2Ryb3BTZXJ2aWNlOiBCYWNrZHJvcFNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGlnbiB0aGUgbW9kYWwgaW4gdGhlIGNlbnRlciBvciB0b3Agb2YgdGhlIHNjcmVlbi5cclxuICAgKiBAdHlwZSB7J3RvcCcgfCAnY2VudGVyJ31cclxuICAgKiBAZGVmYXVsdCAndG9wJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGFsaWdubWVudD86ICd0b3AnIHwgJ2NlbnRlcicgPSAndG9wJztcclxuICAvKipcclxuICAgKiBBcHBseSBhIGJhY2tkcm9wIG9uIGJvZHkgd2hpbGUgbW9kYWwgaXMgb3Blbi5cclxuICAgKiBAdHlwZSBib29sZWFuIHwgJ3N0YXRpYydcclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICovXHJcbiAgQElucHV0KCkgYmFja2Ryb3A6IGJvb2xlYW4gfCAnc3RhdGljJyA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogU2V0IG1vZGFsIHRvIGNvdmVyIHRoZSBlbnRpcmUgdXNlciB2aWV3cG9ydC5cclxuICAgKiBAdHlwZSB7Ym9vbGVhbiB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgfCAneHhsJ31cclxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBmdWxsc2NyZWVuPzogYm9vbGVhbiB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgfCAneHhsJztcclxuICAvKipcclxuICAgKiBDbG9zZXMgdGhlIG1vZGFsIHdoZW4gZXNjYXBlIGtleSBpcyBwcmVzc2VkLlxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICovXHJcbiAgQElucHV0KCkga2V5Ym9hcmQgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlkPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIFNpemUgdGhlIGNvbXBvbmVudCBzbWFsbCwgbGFyZ2UsIG9yIGV4dHJhIGxhcmdlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNpemU/OiAnc20nIHwgJ2xnJyB8ICd4bCc7XHJcbiAgLyoqXHJcbiAgICogUmVtb3ZlIGFuaW1hdGlvbiB0byBjcmVhdGUgbW9kYWwgdGhhdCBzaW1wbHkgYXBwZWFyIHJhdGhlciB0aGFuIGZhZGUgaW4gdG8gdmlldy5cclxuICAgKi9cclxuICBASW5wdXQoKSB0cmFuc2l0aW9uID0gdHJ1ZTtcclxuICAvKipcclxuICAgKiBEZWZhdWx0IHJvbGUgZm9yIG1vZGFsLiBbZG9jc11cclxuICAgKiBAdHlwZSBzdHJpbmdcclxuICAgKiBAZGVmYXVsdCAnZGlhbG9nJ1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJykgcm9sZSA9ICdkaWFsb2cnO1xyXG4gIC8qKlxyXG4gICAqIFNldCBhcmlhLW1vZGFsIGh0bWwgYXR0ciBmb3IgbW9kYWwuIFtkb2NzXVxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICovXHJcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbW9kYWwnKSBhcmlhTW9kYWwgPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgYSBzY3JvbGxhYmxlIG1vZGFsIHRoYXQgYWxsb3dzIHNjcm9sbGluZyB0aGUgbW9kYWwgYm9keS5cclxuICAgKiBAdHlwZSBib29sZWFuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgc2Nyb2xsYWJsZSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fc2Nyb2xsYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgc2Nyb2xsYWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9zY3JvbGxhYmxlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2Nyb2xsYWJsZSA9IGZhbHNlO1xyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgbW9kYWwgY29tcG9uZW50LlxyXG4gICAqIEB0eXBlIGJvb2xlYW5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCB2aXNpYmxlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XHJcbiAgICBpZiAodGhpcy5fdmlzaWJsZSAhPT0gbmV3VmFsdWUpIHtcclxuICAgICAgdGhpcy5fdmlzaWJsZSA9IG5ld1ZhbHVlO1xyXG4gICAgICB0aGlzLnNldEJhY2tkcm9wKHRoaXMuYmFja2Ryb3AgIT09IGZhbHNlICYmIG5ld1ZhbHVlKTtcclxuICAgICAgdGhpcy5zZXRCb2R5U3R5bGVzKG5ld1ZhbHVlKTtcclxuICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Zpc2libGUhOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICAgKiBFdmVudCB0cmlnZ2VyZWQgb24gbW9kYWwgZGlzbWlzcy5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChNb2RhbENvbnRlbnRDb21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBtb2RhbENvbnRlbnQhOiBFbGVtZW50UmVmO1xyXG4gIHByaXZhdGUgYWN0aXZlQmFja2Ryb3AhOiBhbnk7XHJcbiAgcHJpdmF0ZSBzdGF0ZVRvZ2dsZVN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgLy8gcHJpdmF0ZSBpbkJvdW5kaW5nQ2xpZW50UmVjdCE6IGJvb2xlYW47XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxyXG4gIGdldCBob3N0Q2xhc3NlcygpOiBhbnkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbW9kYWw6IHRydWUsXHJcbiAgICAgIGZhZGU6IHRoaXMudHJhbnNpdGlvbixcclxuICAgICAgc2hvdzogdGhpcy5zaG93XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGlkZGVuJylcclxuICBnZXQgYXJpYUhpZGRlbigpOiBib29sZWFuIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlID8gbnVsbCA6IHRydWU7XHJcbiAgfTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnRhYmluZGV4JylcclxuICBnZXQgdGFiSW5kZXgoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gJy0xJztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnQHNob3dIaWRlJylcclxuICBnZXQgYW5pbWF0ZVRyaWdnZXIoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnZpc2libGUgPyAndmlzaWJsZScgOiAnaGlkZGVuJztcclxuICB9XHJcblxyXG4gIGdldCBzaG93KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZSAmJiB0aGlzLl9zaG93O1xyXG4gIH1cclxuXHJcbiAgc2V0IHNob3codmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3Nob3cgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Nob3cgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIGdldCBzY3JvbGxiYXJXaWR0aCgpIHtcclxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvaW5uZXJXaWR0aCN1c2FnZV9ub3Rlc1xyXG4gICAgY29uc3QgZG9jdW1lbnRXaWR0aCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xyXG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSBNYXRoLmFicygod2luZG93Py5pbm5lcldpZHRoID8/IGRvY3VtZW50V2lkdGgpIC0gZG9jdW1lbnRXaWR0aCk7XHJcbiAgICByZXR1cm4gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignQHNob3dIaWRlLnN0YXJ0JywgWyckZXZlbnQnXSlcclxuICBhbmltYXRlU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XHJcbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHRoaXMuc2Nyb2xsYmFyV2lkdGg7XHJcbiAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ3Zpc2libGUnKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kb2N1bWVudC5ib2R5LCAncGFkZGluZy1yaWdodCcsIHNjcm9sbGJhcldpZHRoKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ2Jsb2NrJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoIXRoaXMudHJhbnNpdGlvbikge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ0BzaG93SGlkZS5kb25lJywgWyckZXZlbnQnXSlcclxuICBhbmltYXRlRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ2hpZGRlbicpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5kb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3cnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuZG9jdW1lbnQuYm9keSwgJ3BhZGRpbmctcmlnaHQnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNob3cgPSB0aGlzLnZpc2libGU7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cCcsIFsnJGV2ZW50J10pXHJcbiAgb25LZXlEb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScgJiYgdGhpcy5rZXlib2FyZCAmJiB0aGlzLnZpc2libGUpIHtcclxuICAgICAgaWYgKHRoaXMuYmFja2Ryb3AgPT09ICdzdGF0aWMnKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0aWNCYWNrZHJvcCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLnRvZ2dsZSh7IHNob3c6IGZhbHNlLCBtb2RhbDogdGhpcyB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBtb3VzZURvd25UYXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIG9uTW91c2VEb3duSGFuZGxlcigkZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMubW91c2VEb3duVGFyZ2V0ID0gJGV2ZW50LnRhcmdldDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgb25DbGlja0hhbmRsZXIoJGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcblxyXG4gICAgaWYgKHRoaXMubW91c2VEb3duVGFyZ2V0ICE9PSAkZXZlbnQudGFyZ2V0KSB7XHJcbiAgICAgIHRoaXMubW91c2VEb3duVGFyZ2V0ID0gbnVsbDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSAkZXZlbnQudGFyZ2V0O1xyXG4gICAgaWYgKHRhcmdldEVsZW1lbnQgPT09IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xyXG5cclxuICAgICAgaWYgKHRoaXMuYmFja2Ryb3AgPT09ICdzdGF0aWMnKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0aWNCYWNrZHJvcCgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2UudG9nZ2xlKHsgc2hvdzogZmFsc2UsIG1vZGFsOiB0aGlzIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0YXRlVG9nZ2xlU3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLnRvZ2dsZSh7IHNob3c6IGZhbHNlLCBtb2RhbDogdGhpcyB9KTtcclxuICAgIHRoaXMuc3RhdGVUb2dnbGVTdWJzY3JpYmUoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0ZVRvZ2dsZVN1YnNjcmliZShzdWJzY3JpYmU6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoc3Vic2NyaWJlKSB7XHJcbiAgICAgIHRoaXMuc3RhdGVUb2dnbGVTdWJzY3JpcHRpb24gPSB0aGlzLm1vZGFsU2VydmljZS5tb2RhbFN0YXRlJC5zdWJzY3JpYmUoXHJcbiAgICAgICAgKGFjdGlvbikgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMgPT09IGFjdGlvbi5tb2RhbCB8fCB0aGlzLmlkID09PSBhY3Rpb24uaWQpIHtcclxuICAgICAgICAgICAgaWYgKCdzaG93JyBpbiBhY3Rpb24pIHtcclxuICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPSBhY3Rpb24/LnNob3cgPT09ICd0b2dnbGUnID8gIXRoaXMudmlzaWJsZSA6IGFjdGlvbi5zaG93O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0YXRlVG9nZ2xlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJhY2tkcm9wKHNldEJhY2tkcm9wOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoc2V0QmFja2Ryb3ApIHtcclxuICAgICAgdGhpcy5hY3RpdmVCYWNrZHJvcCA9IHRoaXMuYmFja2Ryb3BTZXJ2aWNlLnNldEJhY2tkcm9wKCdtb2RhbCcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY3RpdmVCYWNrZHJvcCA9IHRoaXMuYmFja2Ryb3BTZXJ2aWNlLmNsZWFyQmFja2Ryb3AodGhpcy5hY3RpdmVCYWNrZHJvcCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEJvZHlTdHlsZXMob3BlbjogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKG9wZW4pIHtcclxuICAgICAgaWYgKHRoaXMuYmFja2Ryb3AgPT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgJ21vZGFsLW9wZW4nKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRvY3VtZW50LmJvZHksICdtb2RhbC1vcGVuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFN0YXRpY0JhY2tkcm9wKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudHJhbnNpdGlvbikge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ21vZGFsLXN0YXRpYycpO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ292ZXJmbG93LXknLCAnaGlkZGVuJyk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnbW9kYWwtc3RhdGljJyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvdmVyZmxvdy15Jyk7XHJcbiAgICAgIH0sIDMwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxjLW1vZGFsLWRpYWxvZ1xuICBbYWxpZ25tZW50XT1cImFsaWdubWVudFwiXG4gIFtmdWxsc2NyZWVuXT1cImZ1bGxzY3JlZW5cIlxuICBbc2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlXCJcbiAgW3NpemVdPVwic2l6ZVwiPlxuICA8Yy1tb2RhbC1jb250ZW50PlxuICAgIDxkaXYgW2Nka1RyYXBGb2N1c109XCJ2aXNpYmxlXCIgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInZpc2libGVcIiBzdHlsZT1cImRpc3BsYXk6IGNvbnRlbnRzO1wiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2MtbW9kYWwtY29udGVudD5cbjwvYy1tb2RhbC1kaWFsb2c+XG4iXX0=
|
|
1
|
+
import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
|
3
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
4
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
|
+
import { ModalContentComponent } from '../modal-content/modal-content.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../modal.service";
|
|
8
|
+
import * as i2 from "../../backdrop/backdrop.service";
|
|
9
|
+
import * as i3 from "@angular/cdk/a11y";
|
|
10
|
+
import * as i4 from "../modal-content/modal-content.component";
|
|
11
|
+
import * as i5 from "../modal-dialog/modal-dialog.component";
|
|
12
|
+
export class ModalComponent {
|
|
13
|
+
constructor(document, renderer, hostElement, modalService, backdropService) {
|
|
14
|
+
this.document = document;
|
|
15
|
+
this.renderer = renderer;
|
|
16
|
+
this.hostElement = hostElement;
|
|
17
|
+
this.modalService = modalService;
|
|
18
|
+
this.backdropService = backdropService;
|
|
19
|
+
/**
|
|
20
|
+
* Align the modal in the center or top of the screen.
|
|
21
|
+
* @type {'top' | 'center'}
|
|
22
|
+
* @default 'top'
|
|
23
|
+
*/
|
|
24
|
+
this.alignment = 'top';
|
|
25
|
+
/**
|
|
26
|
+
* Apply a backdrop on body while modal is open.
|
|
27
|
+
* @type boolean | 'static'
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
this.backdrop = true;
|
|
31
|
+
/**
|
|
32
|
+
* Closes the modal when escape key is pressed.
|
|
33
|
+
* @type boolean
|
|
34
|
+
* @default true
|
|
35
|
+
*/
|
|
36
|
+
this.keyboard = true;
|
|
37
|
+
/**
|
|
38
|
+
* Remove animation to create modal that simply appear rather than fade in to view.
|
|
39
|
+
*/
|
|
40
|
+
this.transition = true;
|
|
41
|
+
/**
|
|
42
|
+
* Default role for modal. [docs]
|
|
43
|
+
* @type string
|
|
44
|
+
* @default 'dialog'
|
|
45
|
+
*/
|
|
46
|
+
this.role = 'dialog';
|
|
47
|
+
/**
|
|
48
|
+
* Set aria-modal html attr for modal. [docs]
|
|
49
|
+
* @type boolean
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
52
|
+
this.ariaModal = true;
|
|
53
|
+
this._scrollable = false;
|
|
54
|
+
/**
|
|
55
|
+
* Event triggered on modal dismiss.
|
|
56
|
+
*/
|
|
57
|
+
this.visibleChange = new EventEmitter();
|
|
58
|
+
this._show = true;
|
|
59
|
+
this.mouseDownTarget = null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Create a scrollable modal that allows scrolling the modal body.
|
|
63
|
+
* @type boolean
|
|
64
|
+
*/
|
|
65
|
+
set scrollable(value) {
|
|
66
|
+
this._scrollable = coerceBooleanProperty(value);
|
|
67
|
+
}
|
|
68
|
+
get scrollable() {
|
|
69
|
+
return this._scrollable;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Toggle the visibility of modal component.
|
|
73
|
+
* @type boolean
|
|
74
|
+
*/
|
|
75
|
+
set visible(value) {
|
|
76
|
+
const newValue = coerceBooleanProperty(value);
|
|
77
|
+
if (this._visible !== newValue) {
|
|
78
|
+
this._visible = newValue;
|
|
79
|
+
this.setBackdrop(this.backdrop !== false && newValue);
|
|
80
|
+
this.setBodyStyles(newValue);
|
|
81
|
+
this.visibleChange.emit(newValue);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
get visible() {
|
|
85
|
+
return this._visible;
|
|
86
|
+
}
|
|
87
|
+
// private inBoundingClientRect!: boolean;
|
|
88
|
+
get hostClasses() {
|
|
89
|
+
return {
|
|
90
|
+
modal: true,
|
|
91
|
+
fade: this.transition,
|
|
92
|
+
show: this.show
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
get ariaHidden() {
|
|
96
|
+
return this.visible ? null : true;
|
|
97
|
+
}
|
|
98
|
+
;
|
|
99
|
+
get tabIndex() {
|
|
100
|
+
return '-1';
|
|
101
|
+
}
|
|
102
|
+
get animateTrigger() {
|
|
103
|
+
return this.visible ? 'visible' : 'hidden';
|
|
104
|
+
}
|
|
105
|
+
get show() {
|
|
106
|
+
return this.visible && this._show;
|
|
107
|
+
}
|
|
108
|
+
set show(value) {
|
|
109
|
+
this._show = value;
|
|
110
|
+
}
|
|
111
|
+
get scrollbarWidth() {
|
|
112
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
|
|
113
|
+
const documentWidth = this.document.documentElement.clientWidth;
|
|
114
|
+
const scrollbarWidth = Math.abs((window?.innerWidth ?? documentWidth) - documentWidth);
|
|
115
|
+
return `${scrollbarWidth}px`;
|
|
116
|
+
}
|
|
117
|
+
animateStart(event) {
|
|
118
|
+
const scrollbarWidth = this.scrollbarWidth;
|
|
119
|
+
if (event.toState === 'visible') {
|
|
120
|
+
this.renderer.setStyle(this.document.body, 'overflow', 'hidden');
|
|
121
|
+
this.renderer.setStyle(this.document.body, 'padding-right', scrollbarWidth);
|
|
122
|
+
this.renderer.setStyle(this.hostElement.nativeElement, 'display', 'block');
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
if (!this.transition) {
|
|
126
|
+
this.renderer.setStyle(this.hostElement.nativeElement, 'display', 'none');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
animateDone(event) {
|
|
131
|
+
setTimeout(() => {
|
|
132
|
+
if (event.toState === 'hidden') {
|
|
133
|
+
this.renderer.setStyle(this.hostElement.nativeElement, 'display', 'none');
|
|
134
|
+
this.renderer.removeStyle(this.document.body, 'overflow');
|
|
135
|
+
this.renderer.removeStyle(this.document.body, 'padding-right');
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
this.show = this.visible;
|
|
139
|
+
}
|
|
140
|
+
onKeyDownHandler(event) {
|
|
141
|
+
if (event.key === 'Escape' && this.keyboard && this.visible) {
|
|
142
|
+
if (this.backdrop === 'static') {
|
|
143
|
+
this.setStaticBackdrop();
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
this.modalService.toggle({ show: false, modal: this });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
onMouseDownHandler($event) {
|
|
151
|
+
this.mouseDownTarget = $event.target;
|
|
152
|
+
}
|
|
153
|
+
onClickHandler($event) {
|
|
154
|
+
if (this.mouseDownTarget !== $event.target) {
|
|
155
|
+
this.mouseDownTarget = null;
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const targetElement = $event.target;
|
|
159
|
+
if (targetElement === this.hostElement.nativeElement) {
|
|
160
|
+
if (this.backdrop === 'static') {
|
|
161
|
+
this.setStaticBackdrop();
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
this.modalService.toggle({ show: false, modal: this });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
ngOnInit() {
|
|
168
|
+
this.stateToggleSubscribe();
|
|
169
|
+
}
|
|
170
|
+
ngOnDestroy() {
|
|
171
|
+
this.modalService.toggle({ show: false, modal: this });
|
|
172
|
+
this.stateToggleSubscribe(false);
|
|
173
|
+
}
|
|
174
|
+
stateToggleSubscribe(subscribe = true) {
|
|
175
|
+
if (subscribe) {
|
|
176
|
+
this.stateToggleSubscription = this.modalService.modalState$.subscribe((action) => {
|
|
177
|
+
if (this === action.modal || this.id === action.id) {
|
|
178
|
+
if ('show' in action) {
|
|
179
|
+
this.visible = action?.show === 'toggle' ? !this.visible : action.show;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
if (this.visible) {
|
|
184
|
+
this.visible = false;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
this.stateToggleSubscription.unsubscribe();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
setBackdrop(setBackdrop) {
|
|
194
|
+
if (setBackdrop) {
|
|
195
|
+
this.activeBackdrop = this.backdropService.setBackdrop('modal');
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
this.activeBackdrop = this.backdropService.clearBackdrop(this.activeBackdrop);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
setBodyStyles(open) {
|
|
202
|
+
if (open) {
|
|
203
|
+
if (this.backdrop === true) {
|
|
204
|
+
this.renderer.addClass(this.document.body, 'modal-open');
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
this.renderer.removeClass(this.document.body, 'modal-open');
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
setStaticBackdrop() {
|
|
212
|
+
if (this.transition) {
|
|
213
|
+
this.renderer.addClass(this.hostElement.nativeElement, 'modal-static');
|
|
214
|
+
this.renderer.setStyle(this.hostElement.nativeElement, 'overflow-y', 'hidden');
|
|
215
|
+
setTimeout(() => {
|
|
216
|
+
this.renderer.removeClass(this.hostElement.nativeElement, 'modal-static');
|
|
217
|
+
this.renderer.removeStyle(this.hostElement.nativeElement, 'overflow-y');
|
|
218
|
+
}, 300);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ModalComponent, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.ModalService }, { token: i2.BackdropService }], target: i0.ɵɵFactoryTarget.Component });
|
|
223
|
+
ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ModalComponent, selector: "c-modal", inputs: { alignment: "alignment", backdrop: "backdrop", fullscreen: "fullscreen", keyboard: "keyboard", id: "id", size: "size", transition: "transition", role: "role", ariaModal: "ariaModal", scrollable: "scrollable", visible: "visible" }, outputs: { visibleChange: "visibleChange" }, host: { listeners: { "@showHide.start": "animateStart($event)", "@showHide.done": "animateDone($event)", "document:keyup": "onKeyDownHandler($event)", "mousedown": "onMouseDownHandler($event)", "click": "onClickHandler($event)" }, properties: { "attr.role": "this.role", "attr.aria-modal": "this.ariaModal", "class": "this.hostClasses", "attr.aria-hidden": "this.ariaHidden", "attr.tabindex": "this.tabIndex", "@showHide": "this.animateTrigger" } }, viewQueries: [{ propertyName: "modalContent", first: true, predicate: ModalContentComponent, descendants: true, read: ElementRef }], exportAs: ["cModal"], ngImport: i0, template: "<c-modal-dialog\n [alignment]=\"alignment\"\n [fullscreen]=\"fullscreen\"\n [scrollable]=\"scrollable\"\n [size]=\"size\">\n <c-modal-content>\n <div [cdkTrapFocus]=\"visible\" [cdkTrapFocusAutoCapture]=\"visible\" style=\"display: contents;\">\n <ng-content></ng-content>\n </div>\n </c-modal-content>\n</c-modal-dialog>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i4.ModalContentComponent, selector: "c-modal-content" }, { kind: "component", type: i5.ModalDialogComponent, selector: "c-modal-dialog", inputs: ["alignment", "fullscreen", "scrollable", "size"] }], animations: [
|
|
224
|
+
trigger('showHide', [
|
|
225
|
+
state('visible', style({
|
|
226
|
+
// display: 'block'
|
|
227
|
+
})),
|
|
228
|
+
state('hidden', style({
|
|
229
|
+
// display: 'none'
|
|
230
|
+
})),
|
|
231
|
+
transition('visible <=> *', [animate('300ms')])
|
|
232
|
+
])
|
|
233
|
+
] });
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ModalComponent, decorators: [{
|
|
235
|
+
type: Component,
|
|
236
|
+
args: [{ selector: 'c-modal', animations: [
|
|
237
|
+
trigger('showHide', [
|
|
238
|
+
state('visible', style({
|
|
239
|
+
// display: 'block'
|
|
240
|
+
})),
|
|
241
|
+
state('hidden', style({
|
|
242
|
+
// display: 'none'
|
|
243
|
+
})),
|
|
244
|
+
transition('visible <=> *', [animate('300ms')])
|
|
245
|
+
])
|
|
246
|
+
], exportAs: 'cModal', template: "<c-modal-dialog\n [alignment]=\"alignment\"\n [fullscreen]=\"fullscreen\"\n [scrollable]=\"scrollable\"\n [size]=\"size\">\n <c-modal-content>\n <div [cdkTrapFocus]=\"visible\" [cdkTrapFocusAutoCapture]=\"visible\" style=\"display: contents;\">\n <ng-content></ng-content>\n </div>\n </c-modal-content>\n</c-modal-dialog>\n" }]
|
|
247
|
+
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
248
|
+
type: Inject,
|
|
249
|
+
args: [DOCUMENT]
|
|
250
|
+
}] }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.ModalService }, { type: i2.BackdropService }]; }, propDecorators: { alignment: [{
|
|
251
|
+
type: Input
|
|
252
|
+
}], backdrop: [{
|
|
253
|
+
type: Input
|
|
254
|
+
}], fullscreen: [{
|
|
255
|
+
type: Input
|
|
256
|
+
}], keyboard: [{
|
|
257
|
+
type: Input
|
|
258
|
+
}], id: [{
|
|
259
|
+
type: Input
|
|
260
|
+
}], size: [{
|
|
261
|
+
type: Input
|
|
262
|
+
}], transition: [{
|
|
263
|
+
type: Input
|
|
264
|
+
}], role: [{
|
|
265
|
+
type: Input
|
|
266
|
+
}, {
|
|
267
|
+
type: HostBinding,
|
|
268
|
+
args: ['attr.role']
|
|
269
|
+
}], ariaModal: [{
|
|
270
|
+
type: Input
|
|
271
|
+
}, {
|
|
272
|
+
type: HostBinding,
|
|
273
|
+
args: ['attr.aria-modal']
|
|
274
|
+
}], scrollable: [{
|
|
275
|
+
type: Input
|
|
276
|
+
}], visible: [{
|
|
277
|
+
type: Input
|
|
278
|
+
}], visibleChange: [{
|
|
279
|
+
type: Output
|
|
280
|
+
}], modalContent: [{
|
|
281
|
+
type: ViewChild,
|
|
282
|
+
args: [ModalContentComponent, { read: ElementRef }]
|
|
283
|
+
}], hostClasses: [{
|
|
284
|
+
type: HostBinding,
|
|
285
|
+
args: ['class']
|
|
286
|
+
}], ariaHidden: [{
|
|
287
|
+
type: HostBinding,
|
|
288
|
+
args: ['attr.aria-hidden']
|
|
289
|
+
}], tabIndex: [{
|
|
290
|
+
type: HostBinding,
|
|
291
|
+
args: ['attr.tabindex']
|
|
292
|
+
}], animateTrigger: [{
|
|
293
|
+
type: HostBinding,
|
|
294
|
+
args: ['@showHide']
|
|
295
|
+
}], animateStart: [{
|
|
296
|
+
type: HostListener,
|
|
297
|
+
args: ['@showHide.start', ['$event']]
|
|
298
|
+
}], animateDone: [{
|
|
299
|
+
type: HostListener,
|
|
300
|
+
args: ['@showHide.done', ['$event']]
|
|
301
|
+
}], onKeyDownHandler: [{
|
|
302
|
+
type: HostListener,
|
|
303
|
+
args: ['document:keyup', ['$event']]
|
|
304
|
+
}], onMouseDownHandler: [{
|
|
305
|
+
type: HostListener,
|
|
306
|
+
args: ['mousedown', ['$event']]
|
|
307
|
+
}], onClickHandler: [{
|
|
308
|
+
type: HostListener,
|
|
309
|
+
args: ['click', ['$event']]
|
|
310
|
+
}] } });
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZXVpLWFuZ3VsYXIvc3JjL2xpYi9tb2RhbC9tb2RhbC9tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JldWktYW5ndWxhci9zcmMvbGliL21vZGFsL21vZGFsL21vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBa0IsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7O0FBeUJqRixNQUFNLE9BQU8sY0FBYztJQUt6QixZQUM0QixRQUFrQixFQUNwQyxRQUFtQixFQUNuQixXQUF1QixFQUN2QixZQUEwQixFQUMxQixlQUFnQztRQUpkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUN2QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFHMUM7Ozs7V0FJRztRQUNNLGNBQVMsR0FBc0IsS0FBSyxDQUFDO1FBQzlDOzs7O1dBSUc7UUFDTSxhQUFRLEdBQXVCLElBQUks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M0MsV0FBVztzQkFEVixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWExQyxnQkFBZ0I7c0JBRGYsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFjbkMsa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNOUIsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBhbmltYXRlLCBBbmltYXRpb25FdmVudCwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBCYWNrZHJvcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9iYWNrZHJvcC9iYWNrZHJvcC5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGFsQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsLWNvbnRlbnQvbW9kYWwtY29udGVudC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjLW1vZGFsJyxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ3Nob3dIaWRlJywgW1xuICAgICAgc3RhdGUoXG4gICAgICAgICd2aXNpYmxlJyxcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIC8vIGRpc3BsYXk6ICdibG9jaydcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBzdGF0ZShcbiAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAvLyBkaXNwbGF5OiAnbm9uZSdcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlIDw9PiAqJywgW2FuaW1hdGUoJzMwMG1zJyldKVxuICAgIF0pXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG4gIGV4cG9ydEFzOiAnY01vZGFsJ1xufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfc2Nyb2xsYWJsZTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfdmlzaWJsZTogQm9vbGVhbklucHV0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBiYWNrZHJvcFNlcnZpY2U6IEJhY2tkcm9wU2VydmljZVxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBBbGlnbiB0aGUgbW9kYWwgaW4gdGhlIGNlbnRlciBvciB0b3Agb2YgdGhlIHNjcmVlbi5cbiAgICogQHR5cGUgeyd0b3AnIHwgJ2NlbnRlcid9XG4gICAqIEBkZWZhdWx0ICd0b3AnXG4gICAqL1xuICBASW5wdXQoKSBhbGlnbm1lbnQ/OiAndG9wJyB8ICdjZW50ZXInID0gJ3RvcCc7XG4gIC8qKlxuICAgKiBBcHBseSBhIGJhY2tkcm9wIG9uIGJvZHkgd2hpbGUgbW9kYWwgaXMgb3Blbi5cbiAgICogQHR5cGUgYm9vbGVhbiB8ICdzdGF0aWMnXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpIGJhY2tkcm9wOiBib29sZWFuIHwgJ3N0YXRpYycgPSB0cnVlO1xuICAvKipcbiAgICogU2V0IG1vZGFsIHRvIGNvdmVyIHRoZSBlbnRpcmUgdXNlciB2aWV3cG9ydC5cbiAgICogQHR5cGUge2Jvb2xlYW4gfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnIHwgJ3h4bCd9XG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgQElucHV0KCkgZnVsbHNjcmVlbj86IGJvb2xlYW4gfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnIHwgJ3h4bCc7XG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIG1vZGFsIHdoZW4gZXNjYXBlIGtleSBpcyBwcmVzc2VkLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpIGtleWJvYXJkID0gdHJ1ZTtcbiAgQElucHV0KCkgaWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTaXplIHRoZSBjb21wb25lbnQgc21hbGwsIGxhcmdlLCBvciBleHRyYSBsYXJnZS5cbiAgICovXG4gIEBJbnB1dCgpIHNpemU/OiAnc20nIHwgJ2xnJyB8ICd4bCc7XG4gIC8qKlxuICAgKiBSZW1vdmUgYW5pbWF0aW9uIHRvIGNyZWF0ZSBtb2RhbCB0aGF0IHNpbXBseSBhcHBlYXIgcmF0aGVyIHRoYW4gZmFkZSBpbiB0byB2aWV3LlxuICAgKi9cbiAgQElucHV0KCkgdHJhbnNpdGlvbiA9IHRydWU7XG4gIC8qKlxuICAgKiBEZWZhdWx0IHJvbGUgZm9yIG1vZGFsLiBbZG9jc11cbiAgICogQHR5cGUgc3RyaW5nXG4gICAqIEBkZWZhdWx0ICdkaWFsb2cnXG4gICAqL1xuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpIHJvbGUgPSAnZGlhbG9nJztcbiAgLyoqXG4gICAqIFNldCBhcmlhLW1vZGFsIGh0bWwgYXR0ciBmb3IgbW9kYWwuIFtkb2NzXVxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLW1vZGFsJykgYXJpYU1vZGFsID0gdHJ1ZTtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgc2Nyb2xsYWJsZSBtb2RhbCB0aGF0IGFsbG93cyBzY3JvbGxpbmcgdGhlIG1vZGFsIGJvZHkuXG4gICAqIEB0eXBlIGJvb2xlYW5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBzY3JvbGxhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2Nyb2xsYWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBnZXQgc2Nyb2xsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2Nyb2xsYWJsZTtcbiAgfVxuXG4gIHByaXZhdGUgX3Njcm9sbGFibGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIG1vZGFsIGNvbXBvbmVudC5cbiAgICogQHR5cGUgYm9vbGVhblxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKHRoaXMuX3Zpc2libGUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzLl92aXNpYmxlID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLnNldEJhY2tkcm9wKHRoaXMuYmFja2Ryb3AgIT09IGZhbHNlICYmIG5ld1ZhbHVlKTtcbiAgICAgIHRoaXMuc2V0Qm9keVN0eWxlcyhuZXdWYWx1ZSk7XG4gICAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdChuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cblxuICBwcml2YXRlIF92aXNpYmxlITogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXZlbnQgdHJpZ2dlcmVkIG9uIG1vZGFsIGRpc21pc3MuXG4gICAqL1xuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAVmlld0NoaWxkKE1vZGFsQ29udGVudENvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIG1vZGFsQ29udGVudCE6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgYWN0aXZlQmFja2Ryb3AhOiBhbnk7XG4gIHByaXZhdGUgc3RhdGVUb2dnbGVTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgLy8gcHJpdmF0ZSBpbkJvdW5kaW5nQ2xpZW50UmVjdCE6IGJvb2xlYW47XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBtb2RhbDogdHJ1ZSxcbiAgICAgIGZhZGU6IHRoaXMudHJhbnNpdGlvbixcbiAgICAgIHNob3c6IHRoaXMuc2hvd1xuICAgIH07XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1oaWRkZW4nKVxuICBnZXQgYXJpYUhpZGRlbigpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZSA/IG51bGwgOiB0cnVlO1xuICB9O1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci50YWJpbmRleCcpXG4gIGdldCB0YWJJbmRleCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gJy0xJztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnQHNob3dIaWRlJylcbiAgZ2V0IGFuaW1hdGVUcmlnZ2VyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nO1xuICB9XG5cbiAgZ2V0IHNob3coKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZSAmJiB0aGlzLl9zaG93O1xuICB9XG5cbiAgc2V0IHNob3codmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9zaG93ID0gdHJ1ZTtcblxuICBwcml2YXRlIGdldCBzY3JvbGxiYXJXaWR0aCgpIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2luZG93L2lubmVyV2lkdGgjdXNhZ2Vfbm90ZXNcbiAgICBjb25zdCBkb2N1bWVudFdpZHRoID0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSBNYXRoLmFicygod2luZG93Py5pbm5lcldpZHRoID8/IGRvY3VtZW50V2lkdGgpIC0gZG9jdW1lbnRXaWR0aCk7XG4gICAgcmV0dXJuIGAke3Njcm9sbGJhcldpZHRofXB4YDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ0BzaG93SGlkZS5zdGFydCcsIFsnJGV2ZW50J10pXG4gIGFuaW1hdGVTdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHRoaXMuc2Nyb2xsYmFyV2lkdGg7XG4gICAgaWYgKGV2ZW50LnRvU3RhdGUgPT09ICd2aXNpYmxlJykge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRvY3VtZW50LmJvZHksICdvdmVyZmxvdycsICdoaWRkZW4nKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kb2N1bWVudC5ib2R5LCAncGFkZGluZy1yaWdodCcsIHNjcm9sbGJhcldpZHRoKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdibG9jaycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMudHJhbnNpdGlvbikge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ0BzaG93SGlkZS5kb25lJywgWyckZXZlbnQnXSlcbiAgYW5pbWF0ZURvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmRvY3VtZW50LmJvZHksICdvdmVyZmxvdycpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuZG9jdW1lbnQuYm9keSwgJ3BhZGRpbmctcmlnaHQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNob3cgPSB0aGlzLnZpc2libGU7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXl1cCcsIFsnJGV2ZW50J10pXG4gIG9uS2V5RG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiB0aGlzLmtleWJvYXJkICYmIHRoaXMudmlzaWJsZSkge1xuICAgICAgaWYgKHRoaXMuYmFja2Ryb3AgPT09ICdzdGF0aWMnKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGljQmFja2Ryb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLnRvZ2dsZSh7IHNob3c6IGZhbHNlLCBtb2RhbDogdGhpcyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1vdXNlRG93blRhcmdldDogRXZlbnRUYXJnZXQgfCBudWxsID0gbnVsbDtcblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBwdWJsaWMgb25Nb3VzZURvd25IYW5kbGVyKCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMubW91c2VEb3duVGFyZ2V0ID0gJGV2ZW50LnRhcmdldDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgcHVibGljIG9uQ2xpY2tIYW5kbGVyKCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuXG4gICAgaWYgKHRoaXMubW91c2VEb3duVGFyZ2V0ICE9PSAkZXZlbnQudGFyZ2V0KSB7XG4gICAgICB0aGlzLm1vdXNlRG93blRhcmdldCA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9ICRldmVudC50YXJnZXQ7XG4gICAgaWYgKHRhcmdldEVsZW1lbnQgPT09IHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xuXG4gICAgICBpZiAodGhpcy5iYWNrZHJvcCA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0aWNCYWNrZHJvcCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLnRvZ2dsZSh7IHNob3c6IGZhbHNlLCBtb2RhbDogdGhpcyB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlVG9nZ2xlU3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS50b2dnbGUoeyBzaG93OiBmYWxzZSwgbW9kYWw6IHRoaXMgfSk7XG4gICAgdGhpcy5zdGF0ZVRvZ2dsZVN1YnNjcmliZShmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRlVG9nZ2xlU3Vic2NyaWJlKHN1YnNjcmliZTogYm9vbGVhbiA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLnN0YXRlVG9nZ2xlU3Vic2NyaXB0aW9uID0gdGhpcy5tb2RhbFNlcnZpY2UubW9kYWxTdGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMgPT09IGFjdGlvbi5tb2RhbCB8fCB0aGlzLmlkID09PSBhY3Rpb24uaWQpIHtcbiAgICAgICAgICAgIGlmICgnc2hvdycgaW4gYWN0aW9uKSB7XG4gICAgICAgICAgICAgIHRoaXMudmlzaWJsZSA9IGFjdGlvbj8uc2hvdyA9PT0gJ3RvZ2dsZScgPyAhdGhpcy52aXNpYmxlIDogYWN0aW9uLnNob3c7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGUpIHtcbiAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXRlVG9nZ2xlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRCYWNrZHJvcChzZXRCYWNrZHJvcDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChzZXRCYWNrZHJvcCkge1xuICAgICAgdGhpcy5hY3RpdmVCYWNrZHJvcCA9IHRoaXMuYmFja2Ryb3BTZXJ2aWNlLnNldEJhY2tkcm9wKCdtb2RhbCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2ZUJhY2tkcm9wID0gdGhpcy5iYWNrZHJvcFNlcnZpY2UuY2xlYXJCYWNrZHJvcCh0aGlzLmFjdGl2ZUJhY2tkcm9wKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEJvZHlTdHlsZXMob3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChvcGVuKSB7XG4gICAgICBpZiAodGhpcy5iYWNrZHJvcCA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgJ21vZGFsLW9wZW4nKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRvY3VtZW50LmJvZHksICdtb2RhbC1vcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdGF0aWNCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmFuc2l0aW9uKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ21vZGFsLXN0YXRpYycpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdvdmVyZmxvdy15JywgJ2hpZGRlbicpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnbW9kYWwtc3RhdGljJyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnb3ZlcmZsb3cteScpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxjLW1vZGFsLWRpYWxvZ1xuICBbYWxpZ25tZW50XT1cImFsaWdubWVudFwiXG4gIFtmdWxsc2NyZWVuXT1cImZ1bGxzY3JlZW5cIlxuICBbc2Nyb2xsYWJsZV09XCJzY3JvbGxhYmxlXCJcbiAgW3NpemVdPVwic2l6ZVwiPlxuICA8Yy1tb2RhbC1jb250ZW50PlxuICAgIDxkaXYgW2Nka1RyYXBGb2N1c109XCJ2aXNpYmxlXCIgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cInZpc2libGVcIiBzdHlsZT1cImRpc3BsYXk6IGNvbnRlbnRzO1wiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2MtbW9kYWwtY29udGVudD5cbjwvYy1tb2RhbC1kaWFsb2c+XG4iXX0=
|