ngx-bootstrap 10.3.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -5
- package/accordion/accordion-group.component.d.ts +1 -1
- package/accordion/accordion.component.d.ts +1 -1
- package/accordion/esm2022/accordion-group.component.mjs +84 -0
- package/accordion/{esm2020 → esm2022}/accordion.component.mjs +4 -4
- package/accordion/{esm2020 → esm2022}/accordion.config.mjs +4 -4
- package/accordion/{esm2020 → esm2022}/accordion.module.mjs +5 -5
- package/accordion/{fesm2020 → fesm2022}/ngx-bootstrap-accordion.mjs +29 -29
- package/accordion/fesm2022/ngx-bootstrap-accordion.mjs.map +1 -0
- package/accordion/package.json +8 -14
- package/alert/alert.component.d.ts +1 -1
- package/alert/esm2022/alert.component.mjs +77 -0
- package/alert/{esm2020 → esm2022}/alert.config.mjs +4 -4
- package/alert/{esm2020 → esm2022}/alert.module.mjs +5 -5
- package/alert/{fesm2015 → fesm2022}/ngx-bootstrap-alert.mjs +10 -10
- package/alert/fesm2022/ngx-bootstrap-alert.mjs.map +1 -0
- package/alert/package.json +8 -14
- package/buttons/button-checkbox.directive.d.ts +2 -2
- package/buttons/button-radio.directive.d.ts +1 -1
- package/buttons/{esm2020 → esm2022}/button-checkbox.directive.mjs +4 -4
- package/buttons/{esm2020 → esm2022}/button-radio-group.directive.mjs +4 -4
- package/buttons/esm2022/button-radio.directive.mjs +188 -0
- package/buttons/{esm2020 → esm2022}/buttons.module.mjs +5 -5
- package/buttons/{fesm2020 → fesm2022}/ngx-bootstrap-buttons.mjs +26 -26
- package/buttons/fesm2022/ngx-bootstrap-buttons.mjs.map +1 -0
- package/buttons/package.json +7 -13
- package/carousel/carousel.component.d.ts +1 -1
- package/carousel/esm2022/carousel.component.mjs +713 -0
- package/carousel/{esm2020 → esm2022}/carousel.config.mjs +4 -4
- package/carousel/{esm2020 → esm2022}/carousel.module.mjs +5 -5
- package/carousel/{esm2020 → esm2022}/slide.component.mjs +6 -6
- package/carousel/{fesm2020 → fesm2022}/ngx-bootstrap-carousel.mjs +65 -56
- package/carousel/fesm2022/ngx-bootstrap-carousel.mjs.map +1 -0
- package/carousel/package.json +8 -14
- package/carousel/slide.component.d.ts +1 -1
- package/chronos/duration/create.d.ts +1 -1
- package/chronos/{fesm2020 → fesm2022}/ngx-bootstrap-chronos.mjs +4 -0
- package/chronos/fesm2022/ngx-bootstrap-chronos.mjs.map +1 -0
- package/chronos/locale/locale.class.d.ts +3 -3
- package/chronos/moment/calendar.d.ts +1 -1
- package/chronos/package.json +5 -11
- package/chronos/parse/regex.d.ts +1 -1
- package/chronos/testing/chain.d.ts +3 -3
- package/chronos/types.d.ts +4 -4
- package/chronos/units/aliases.d.ts +1 -1
- package/collapse/collapse.directive.d.ts +1 -1
- package/collapse/esm2022/collapse.directive.mjs +168 -0
- package/collapse/{esm2020 → esm2022}/collapse.module.mjs +5 -5
- package/collapse/{fesm2020 → fesm2022}/ngx-bootstrap-collapse.mjs +26 -26
- package/collapse/fesm2022/ngx-bootstrap-collapse.mjs.map +1 -0
- package/collapse/package.json +8 -14
- package/component-loader/{esm2020 → esm2022}/component-loader.factory.mjs +4 -4
- package/component-loader/{fesm2020 → fesm2022}/ngx-bootstrap-component-loader.mjs +5 -3
- package/component-loader/fesm2022/ngx-bootstrap-component-loader.mjs.map +1 -0
- package/component-loader/listen-options.model.d.ts +1 -1
- package/component-loader/package.json +7 -13
- package/datepicker/bs-datepicker-inline.component.d.ts +1 -1
- package/datepicker/bs-datepicker.component.d.ts +1 -1
- package/datepicker/bs-daterangepicker-inline.component.d.ts +1 -1
- package/datepicker/bs-daterangepicker.component.d.ts +1 -1
- package/datepicker/{esm2020 → esm2022}/bs-datepicker-inline.component.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/bs-datepicker-inline.config.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/bs-datepicker-input.directive.mjs +4 -4
- package/datepicker/esm2022/bs-datepicker.component.mjs +303 -0
- package/datepicker/{esm2020 → esm2022}/bs-datepicker.config.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/bs-datepicker.module.mjs +32 -32
- package/datepicker/esm2022/bs-daterangepicker-inline.component.mjs +163 -0
- package/datepicker/{esm2020 → esm2022}/bs-daterangepicker-inline.config.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/bs-daterangepicker-input.directive.mjs +4 -4
- package/datepicker/esm2022/bs-daterangepicker.component.mjs +296 -0
- package/datepicker/{esm2020 → esm2022}/bs-daterangepicker.config.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/bs-locale.service.mjs +4 -4
- package/datepicker/esm2022/reducer/bs-datepicker.actions.mjs +143 -0
- package/datepicker/{esm2020 → esm2022}/reducer/bs-datepicker.effects.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/reducer/bs-datepicker.store.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-calendar-layout.component.mjs +6 -6
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-current-date-view.component.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-custom-dates-view.component.mjs +6 -6
- package/datepicker/esm2022/themes/bs/bs-datepicker-container.component.mjs +192 -0
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-datepicker-day-decorator.directive.mjs +4 -4
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-datepicker-inline-container.component.mjs +9 -9
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-datepicker-navigation-view.component.mjs +6 -6
- package/datepicker/esm2022/themes/bs/bs-daterangepicker-container.component.mjs +261 -0
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-daterangepicker-inline-container.component.mjs +9 -9
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-days-calendar-view.component.mjs +6 -6
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-months-calendar-view.component.mjs +6 -6
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-timepicker-view.component.mjs +6 -6
- package/datepicker/{esm2020 → esm2022}/themes/bs/bs-years-calendar-view.component.mjs +6 -6
- package/datepicker/{fesm2020 → fesm2022}/ngx-bootstrap-datepicker.mjs +226 -226
- package/datepicker/fesm2022/ngx-bootstrap-datepicker.mjs.map +1 -0
- package/datepicker/models/index.d.ts +1 -1
- package/datepicker/package.json +13 -19
- package/datepicker/themes/bs/bs-current-date-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +1 -1
- package/datepicker/themes/bs/bs-datepicker-navigation-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-months-calendar-view.component.d.ts +1 -1
- package/datepicker/themes/bs/bs-years-calendar-view.component.d.ts +1 -1
- package/datepicker/utils/matrix-utils.d.ts +1 -1
- package/dropdown/bs-dropdown.directive.d.ts +1 -1
- package/dropdown/esm2022/bs-dropdown-container.component.mjs +79 -0
- package/dropdown/{esm2020 → esm2022}/bs-dropdown-menu.directive.mjs +4 -4
- package/dropdown/{esm2020 → esm2022}/bs-dropdown-toggle.directive.mjs +4 -4
- package/dropdown/{esm2020 → esm2022}/bs-dropdown.config.mjs +4 -4
- package/dropdown/esm2022/bs-dropdown.directive.mjs +340 -0
- package/dropdown/{esm2020 → esm2022}/bs-dropdown.module.mjs +10 -10
- package/dropdown/{esm2020 → esm2022}/bs-dropdown.state.mjs +4 -4
- package/dropdown/{fesm2020 → fesm2022}/ngx-bootstrap-dropdown.mjs +62 -62
- package/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs.map +1 -0
- package/dropdown/package.json +10 -16
- package/fesm2022/ngx-bootstrap.mjs.map +1 -0
- package/focus-trap/boolean-property.d.ts +1 -1
- package/focus-trap/{esm2020 → esm2022}/focus-trap-manager.mjs +4 -4
- package/focus-trap/esm2022/focus-trap.mjs +399 -0
- package/focus-trap/{esm2020 → esm2022}/focus-trap.module.mjs +5 -5
- package/focus-trap/{esm2020 → esm2022}/interactivity-checker.mjs +4 -4
- package/focus-trap/{esm2020 → esm2022}/platform.mjs +4 -4
- package/focus-trap/{fesm2020 → fesm2022}/ngx-bootstrap-focus-trap.mjs +43 -39
- package/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs.map +1 -0
- package/focus-trap/focus-trap.d.ts +1 -1
- package/focus-trap/package.json +8 -14
- package/locale/fesm2022/ngx-bootstrap-locale.mjs.map +1 -0
- package/locale/package.json +6 -12
- package/mini-ngrx/fesm2022/ngx-bootstrap-mini-ngrx.mjs.map +1 -0
- package/mini-ngrx/package.json +6 -12
- package/mini-ngrx/public_api.d.ts +1 -1
- package/modal/{esm2020 → esm2022}/bs-modal-ref.service.mjs +4 -4
- package/modal/{esm2020 → esm2022}/bs-modal.service.mjs +4 -4
- package/modal/esm2022/modal-backdrop.component.mjs +50 -0
- package/modal/{esm2020 → esm2022}/modal-container.component.mjs +6 -6
- package/modal/{esm2020 → esm2022}/modal-options.class.mjs +4 -4
- package/modal/esm2022/modal.directive.mjs +364 -0
- package/modal/{esm2020 → esm2022}/modal.module.mjs +7 -7
- package/modal/{fesm2020 → fesm2022}/ngx-bootstrap-modal.mjs +44 -42
- package/modal/fesm2022/ngx-bootstrap-modal.mjs.map +1 -0
- package/modal/modal.directive.d.ts +1 -1
- package/modal/models/index.d.ts +1 -1
- package/modal/package.json +8 -14
- package/package.json +9 -15
- package/pagination/{esm2020 → esm2022}/pager.component.mjs +4 -4
- package/pagination/{esm2020 → esm2022}/pagination.component.mjs +4 -4
- package/pagination/{esm2020 → esm2022}/pagination.config.mjs +4 -4
- package/pagination/{esm2020 → esm2022}/pagination.module.mjs +5 -5
- package/pagination/{fesm2020 → fesm2022}/ngx-bootstrap-pagination.mjs +13 -13
- package/pagination/fesm2022/ngx-bootstrap-pagination.mjs.map +1 -0
- package/pagination/package.json +8 -14
- package/pagination/pager.component.d.ts +1 -1
- package/pagination/pagination.component.d.ts +1 -1
- package/popover/esm2022/popover-container.component.mjs +46 -0
- package/popover/{esm2020 → esm2022}/popover.config.mjs +4 -4
- package/popover/esm2022/popover.directive.mjs +241 -0
- package/popover/{esm2020 → esm2022}/popover.module.mjs +5 -5
- package/popover/{fesm2020 → fesm2022}/ngx-bootstrap-popover.mjs +31 -31
- package/popover/fesm2022/ngx-bootstrap-popover.mjs.map +1 -0
- package/popover/package.json +9 -15
- package/popover/popover-container.component.d.ts +1 -1
- package/popover/popover.directive.d.ts +1 -1
- package/positioning/{esm2020 → esm2022}/positioning.service.mjs +4 -4
- package/positioning/{fesm2020 → fesm2022}/ngx-bootstrap-positioning.mjs +3 -3
- package/positioning/fesm2022/ngx-bootstrap-positioning.mjs.map +1 -0
- package/positioning/models/index.d.ts +1 -1
- package/positioning/package.json +10 -16
- package/progressbar/bar.component.d.ts +1 -1
- package/progressbar/{esm2020 → esm2022}/bar.component.mjs +4 -4
- package/progressbar/esm2022/progressbar.component.mjs +53 -0
- package/progressbar/{esm2020 → esm2022}/progressbar.config.mjs +4 -4
- package/progressbar/{esm2020 → esm2022}/progressbar.module.mjs +5 -5
- package/progressbar/{fesm2020 → fesm2022}/ngx-bootstrap-progressbar.mjs +24 -24
- package/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs.map +1 -0
- package/progressbar/package.json +7 -13
- package/progressbar/progressbar-type.interface.d.ts +1 -1
- package/progressbar/progressbar.component.d.ts +1 -1
- package/rating/{esm2020 → esm2022}/rating.component.mjs +4 -4
- package/rating/{esm2020 → esm2022}/rating.config.mjs +4 -4
- package/rating/{esm2020 → esm2022}/rating.module.mjs +5 -5
- package/rating/{fesm2015 → fesm2022}/ngx-bootstrap-rating.mjs +10 -10
- package/rating/fesm2022/ngx-bootstrap-rating.mjs.map +1 -0
- package/rating/package.json +8 -14
- package/rating/rating.component.d.ts +1 -1
- package/schematics/collection.json +1 -1
- package/schematics/package.json +7 -7
- package/schematics/utils/current_dependency_versions.json +1 -1
- package/schematics/utils/index.d.ts +0 -2
- package/schematics/utils/index.js +1 -13
- package/schematics/utils/index.js.map +1 -1
- package/sortable/{esm2020 → esm2022}/draggable-item.service.mjs +4 -4
- package/sortable/esm2022/sortable.component.mjs +266 -0
- package/sortable/{esm2020 → esm2022}/sortable.module.mjs +5 -5
- package/sortable/{fesm2020 → fesm2022}/ngx-bootstrap-sortable.mjs +28 -28
- package/sortable/fesm2022/ngx-bootstrap-sortable.mjs.map +1 -0
- package/sortable/package.json +10 -16
- package/sortable/sortable.component.d.ts +1 -1
- package/tabs/esm2022/ng-transclude.directive.mjs +28 -0
- package/tabs/{esm2020 → esm2022}/tab-heading.directive.mjs +4 -4
- package/tabs/esm2022/tab.directive.mjs +115 -0
- package/tabs/{esm2020 → esm2022}/tabs.module.mjs +11 -11
- package/tabs/esm2022/tabset.component.mjs +216 -0
- package/tabs/{esm2020 → esm2022}/tabset.config.mjs +4 -4
- package/tabs/{fesm2015 → fesm2022}/ngx-bootstrap-tabs.mjs +63 -63
- package/tabs/fesm2022/ngx-bootstrap-tabs.mjs.map +1 -0
- package/tabs/ng-transclude.directive.d.ts +1 -1
- package/tabs/package.json +7 -13
- package/tabs/tab.directive.d.ts +1 -1
- package/tabs/tabset.component.d.ts +1 -1
- package/timepicker/esm2022/reducer/timepicker.actions.mjs +53 -0
- package/timepicker/{esm2020 → esm2022}/reducer/timepicker.store.mjs +4 -4
- package/timepicker/{esm2020 → esm2022}/timepicker.component.mjs +4 -4
- package/timepicker/{esm2020 → esm2022}/timepicker.config.mjs +4 -4
- package/timepicker/{esm2020 → esm2022}/timepicker.module.mjs +5 -5
- package/timepicker/{fesm2020 → fesm2022}/ngx-bootstrap-timepicker.mjs +22 -22
- package/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs.map +1 -0
- package/timepicker/package.json +10 -16
- package/timepicker/reducer/timepicker.reducer.d.ts +1 -3
- package/timepicker/timepicker.component.d.ts +1 -1
- package/timepicker/timepicker.models.d.ts +1 -1
- package/tooltip/{esm2020 → esm2022}/tooltip-container.component.mjs +9 -9
- package/tooltip/{esm2020 → esm2022}/tooltip.config.mjs +4 -4
- package/tooltip/esm2022/tooltip.directive.mjs +342 -0
- package/tooltip/{esm2020 → esm2022}/tooltip.module.mjs +5 -5
- package/tooltip/{fesm2020 → fesm2022}/ngx-bootstrap-tooltip.mjs +61 -61
- package/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs.map +1 -0
- package/tooltip/package.json +10 -16
- package/tooltip/tooltip.directive.d.ts +1 -1
- package/typeahead/esm2022/typeahead-container.component.mjs +311 -0
- package/typeahead/{esm2020 → esm2022}/typeahead.config.mjs +4 -4
- package/typeahead/{esm2020 → esm2022}/typeahead.directive.mjs +4 -4
- package/typeahead/{esm2020 → esm2022}/typeahead.module.mjs +5 -5
- package/typeahead/{fesm2020 → fesm2022}/ngx-bootstrap-typeahead.mjs +20 -20
- package/typeahead/fesm2022/ngx-bootstrap-typeahead.mjs.map +1 -0
- package/typeahead/package.json +12 -18
- package/typeahead/typeahead.directive.d.ts +3 -3
- package/utils/fesm2022/ngx-bootstrap-utils.mjs.map +1 -0
- package/utils/package.json +6 -12
- package/utils/theme-provider.d.ts +1 -1
- package/utils/triggers.d.ts +1 -1
- package/accordion/esm2020/accordion-group.component.mjs +0 -84
- package/accordion/fesm2015/ngx-bootstrap-accordion.mjs +0 -182
- package/accordion/fesm2015/ngx-bootstrap-accordion.mjs.map +0 -1
- package/accordion/fesm2020/ngx-bootstrap-accordion.mjs.map +0 -1
- package/alert/esm2020/alert.component.mjs +0 -77
- package/alert/fesm2015/ngx-bootstrap-alert.mjs.map +0 -1
- package/alert/fesm2020/ngx-bootstrap-alert.mjs +0 -119
- package/alert/fesm2020/ngx-bootstrap-alert.mjs.map +0 -1
- package/buttons/esm2020/button-radio.directive.mjs +0 -188
- package/buttons/fesm2015/ngx-bootstrap-buttons.mjs +0 -448
- package/buttons/fesm2015/ngx-bootstrap-buttons.mjs.map +0 -1
- package/buttons/fesm2020/ngx-bootstrap-buttons.mjs.map +0 -1
- package/carousel/esm2020/carousel.component.mjs +0 -713
- package/carousel/fesm2015/ngx-bootstrap-carousel.mjs +0 -851
- package/carousel/fesm2015/ngx-bootstrap-carousel.mjs.map +0 -1
- package/carousel/fesm2020/ngx-bootstrap-carousel.mjs.map +0 -1
- package/chronos/fesm2015/ngx-bootstrap-chronos.mjs +0 -7384
- package/chronos/fesm2015/ngx-bootstrap-chronos.mjs.map +0 -1
- package/chronos/fesm2020/ngx-bootstrap-chronos.mjs.map +0 -1
- package/collapse/esm2020/collapse.directive.mjs +0 -168
- package/collapse/fesm2015/ngx-bootstrap-collapse.mjs +0 -200
- package/collapse/fesm2015/ngx-bootstrap-collapse.mjs.map +0 -1
- package/collapse/fesm2020/ngx-bootstrap-collapse.mjs.map +0 -1
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.mjs +0 -345
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.mjs.map +0 -1
- package/component-loader/fesm2020/ngx-bootstrap-component-loader.mjs.map +0 -1
- package/datepicker/esm2020/bs-datepicker.component.mjs +0 -303
- package/datepicker/esm2020/bs-daterangepicker-inline.component.mjs +0 -163
- package/datepicker/esm2020/bs-daterangepicker.component.mjs +0 -296
- package/datepicker/esm2020/reducer/bs-datepicker.actions.mjs +0 -143
- package/datepicker/esm2020/themes/bs/bs-datepicker-container.component.mjs +0 -192
- package/datepicker/esm2020/themes/bs/bs-daterangepicker-container.component.mjs +0 -261
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs +0 -3971
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.mjs.map +0 -1
- package/datepicker/fesm2020/ngx-bootstrap-datepicker.mjs.map +0 -1
- package/dropdown/esm2020/bs-dropdown-container.component.mjs +0 -79
- package/dropdown/esm2020/bs-dropdown.directive.mjs +0 -340
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.mjs +0 -603
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.mjs.map +0 -1
- package/dropdown/fesm2020/ngx-bootstrap-dropdown.mjs.map +0 -1
- package/fesm2015/ngx-bootstrap.mjs.map +0 -1
- package/fesm2020/ngx-bootstrap.mjs +0 -6
- package/fesm2020/ngx-bootstrap.mjs.map +0 -1
- package/focus-trap/esm2020/focus-trap.mjs +0 -399
- package/focus-trap/fesm2015/ngx-bootstrap-focus-trap.mjs +0 -800
- package/focus-trap/fesm2015/ngx-bootstrap-focus-trap.mjs.map +0 -1
- package/focus-trap/fesm2020/ngx-bootstrap-focus-trap.mjs.map +0 -1
- package/locale/fesm2015/ngx-bootstrap-locale.mjs.map +0 -1
- package/locale/fesm2020/ngx-bootstrap-locale.mjs +0 -6
- package/locale/fesm2020/ngx-bootstrap-locale.mjs.map +0 -1
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.mjs +0 -64
- package/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.mjs.map +0 -1
- package/mini-ngrx/fesm2020/ngx-bootstrap-mini-ngrx.mjs.map +0 -1
- package/modal/esm2020/modal-backdrop.component.mjs +0 -50
- package/modal/esm2020/modal.directive.mjs +0 -364
- package/modal/fesm2015/ngx-bootstrap-modal.mjs +0 -888
- package/modal/fesm2015/ngx-bootstrap-modal.mjs.map +0 -1
- package/modal/fesm2020/ngx-bootstrap-modal.mjs.map +0 -1
- package/pagination/fesm2015/ngx-bootstrap-pagination.mjs +0 -565
- package/pagination/fesm2015/ngx-bootstrap-pagination.mjs.map +0 -1
- package/pagination/fesm2020/ngx-bootstrap-pagination.mjs.map +0 -1
- package/popover/esm2020/popover-container.component.mjs +0 -46
- package/popover/esm2020/popover.directive.mjs +0 -241
- package/popover/fesm2015/ngx-bootstrap-popover.mjs +0 -339
- package/popover/fesm2015/ngx-bootstrap-popover.mjs.map +0 -1
- package/popover/fesm2020/ngx-bootstrap-popover.mjs.map +0 -1
- package/positioning/fesm2015/ngx-bootstrap-positioning.mjs +0 -1018
- package/positioning/fesm2015/ngx-bootstrap-positioning.mjs.map +0 -1
- package/positioning/fesm2020/ngx-bootstrap-positioning.mjs.map +0 -1
- package/progressbar/esm2020/progressbar.component.mjs +0 -53
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.mjs +0 -163
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.mjs.map +0 -1
- package/progressbar/fesm2020/ngx-bootstrap-progressbar.mjs.map +0 -1
- package/rating/fesm2015/ngx-bootstrap-rating.mjs.map +0 -1
- package/rating/fesm2020/ngx-bootstrap-rating.mjs +0 -163
- package/rating/fesm2020/ngx-bootstrap-rating.mjs.map +0 -1
- package/sortable/esm2020/sortable.component.mjs +0 -266
- package/sortable/fesm2015/ngx-bootstrap-sortable.mjs +0 -324
- package/sortable/fesm2015/ngx-bootstrap-sortable.mjs.map +0 -1
- package/sortable/fesm2020/ngx-bootstrap-sortable.mjs.map +0 -1
- package/tabs/esm2020/ng-transclude.directive.mjs +0 -28
- package/tabs/esm2020/tab.directive.mjs +0 -115
- package/tabs/esm2020/tabset.component.mjs +0 -216
- package/tabs/fesm2015/ngx-bootstrap-tabs.mjs.map +0 -1
- package/tabs/fesm2020/ngx-bootstrap-tabs.mjs +0 -427
- package/tabs/fesm2020/ngx-bootstrap-tabs.mjs.map +0 -1
- package/timepicker/esm2020/reducer/timepicker.actions.mjs +0 -53
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.mjs +0 -830
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.mjs.map +0 -1
- package/timepicker/fesm2020/ngx-bootstrap-timepicker.mjs.map +0 -1
- package/tooltip/esm2020/tooltip.directive.mjs +0 -342
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs +0 -431
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs.map +0 -1
- package/tooltip/fesm2020/ngx-bootstrap-tooltip.mjs.map +0 -1
- package/typeahead/esm2020/typeahead-container.component.mjs +0 -311
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.mjs +0 -1890
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.mjs.map +0 -1
- package/typeahead/fesm2020/ngx-bootstrap-typeahead.mjs.map +0 -1
- package/utils/fesm2015/ngx-bootstrap-utils.mjs +0 -523
- package/utils/fesm2015/ngx-bootstrap-utils.mjs.map +0 -1
- package/utils/fesm2020/ngx-bootstrap-utils.mjs.map +0 -1
- /package/accordion/{esm2020 → esm2022}/index.mjs +0 -0
- /package/accordion/{esm2020 → esm2022}/ngx-bootstrap-accordion.mjs +0 -0
- /package/accordion/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/alert/{esm2020 → esm2022}/index.mjs +0 -0
- /package/alert/{esm2020 → esm2022}/ngx-bootstrap-alert.mjs +0 -0
- /package/alert/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/buttons/{esm2020 → esm2022}/index.mjs +0 -0
- /package/buttons/{esm2020 → esm2022}/ngx-bootstrap-buttons.mjs +0 -0
- /package/buttons/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/carousel/{esm2020 → esm2022}/index.mjs +0 -0
- /package/carousel/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/carousel/{esm2020 → esm2022}/ngx-bootstrap-carousel.mjs +0 -0
- /package/carousel/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/carousel/{esm2020 → esm2022}/utils.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/check-overflow.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/clone.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/date-from-array.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-anything.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-array.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-object.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-string-and-array.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-string-and-format.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/from-string.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/local.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/parsing-flags.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/parsing.types.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/create/valid.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/duration/bubble.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/duration/constructor.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/duration/create.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/duration/humanize.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/duration/valid.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/format/format.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/format.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ar.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/bg.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ca.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/cs.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/da.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/de.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/en-gb.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/es-do.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/es-pr.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/es-us.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/es.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/et.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/fi.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/fr.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/gl.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/he.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/hi.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/hr.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/hu.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/id.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/it.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ja.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ka.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/kk.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ko.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/lt.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/lv.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/mn.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/nb.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/nl-be.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/nl.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/pl.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/pt-br.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ro.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/ru.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/sk.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/sl.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/sq.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/sv.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/th-be.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/th.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/tr.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/uk.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/vi.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/i18n/zh-cn.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/index.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/locale/calendar.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/locale/locale.class.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/locale/locale.defaults.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/locale/locales.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/moment/add-subtract.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/moment/calendar.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/moment/diff.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/moment/min-max.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/ngx-bootstrap-chronos.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/parse/regex.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/parse/token.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/testing/chain.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/types.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/aliases.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/constants.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/day-of-month.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/day-of-week.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/day-of-year.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/hour.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/index.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/millisecond.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/minute.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/month.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/offset.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/priorities.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/quarter.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/second.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/timestamp.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/timezone.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/week-calendar-utils.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/week-year.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/week.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/units/year.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/abs-ceil.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/abs-round.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/compare-arrays.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/date-compare.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/date-getters.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/date-setters.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/defaults.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/start-end-of.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/type-checks.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils/zero-fill.mjs +0 -0
- /package/chronos/{esm2020 → esm2022}/utils.mjs +0 -0
- /package/collapse/{esm2020 → esm2022}/collapse-animations.mjs +0 -0
- /package/collapse/{esm2020 → esm2022}/index.mjs +0 -0
- /package/collapse/{esm2020 → esm2022}/ngx-bootstrap-collapse.mjs +0 -0
- /package/collapse/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/bs-component-ref.class.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/component-loader.class.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/content-ref.class.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/index.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/listen-options.model.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/ngx-bootstrap-component-loader.mjs +0 -0
- /package/component-loader/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/base/bs-datepicker-container.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/datepicker-animations.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/calc-days-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/flag-days-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/flag-months-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/flag-years-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/format-days-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/format-months-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/format-years-calendar.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/engine/view-mode.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/index.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/ngx-bootstrap-datepicker.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/reducer/_defaults.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/reducer/bs-datepicker.reducer.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/reducer/bs-datepicker.state.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/utils/bs-calendar-utils.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/utils/copy-time-utils.mjs +0 -0
- /package/datepicker/{esm2020 → esm2022}/utils/matrix-utils.mjs +0 -0
- /package/dropdown/{esm2020 → esm2022}/dropdown-animations.mjs +0 -0
- /package/dropdown/{esm2020 → esm2022}/index.mjs +0 -0
- /package/dropdown/{esm2020 → esm2022}/ngx-bootstrap-dropdown.mjs +0 -0
- /package/dropdown/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/ngx-bootstrap.mjs +0 -0
- /package/{fesm2015 → fesm2022}/ngx-bootstrap.mjs +0 -0
- /package/focus-trap/{esm2020 → esm2022}/boolean-property.mjs +0 -0
- /package/focus-trap/{esm2020 → esm2022}/index.mjs +0 -0
- /package/focus-trap/{esm2020 → esm2022}/ngx-bootstrap-focus-trap.mjs +0 -0
- /package/focus-trap/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/locale/{esm2020 → esm2022}/index.mjs +0 -0
- /package/locale/{esm2020 → esm2022}/ngx-bootstrap-locale.mjs +0 -0
- /package/locale/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/locale/{fesm2015 → fesm2022}/ngx-bootstrap-locale.mjs +0 -0
- /package/mini-ngrx/{esm2020 → esm2022}/index.mjs +0 -0
- /package/mini-ngrx/{esm2020 → esm2022}/ngx-bootstrap-mini-ngrx.mjs +0 -0
- /package/mini-ngrx/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/mini-ngrx/{esm2020 → esm2022}/state.class.mjs +0 -0
- /package/mini-ngrx/{esm2020 → esm2022}/store.class.mjs +0 -0
- /package/mini-ngrx/{fesm2020 → fesm2022}/ngx-bootstrap-mini-ngrx.mjs +0 -0
- /package/modal/{esm2020 → esm2022}/index.mjs +0 -0
- /package/modal/{esm2020 → esm2022}/modal-backdrop.options.mjs +0 -0
- /package/modal/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/modal/{esm2020 → esm2022}/ngx-bootstrap-modal.mjs +0 -0
- /package/modal/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/pagination/{esm2020 → esm2022}/index.mjs +0 -0
- /package/pagination/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/pagination/{esm2020 → esm2022}/ngx-bootstrap-pagination.mjs +0 -0
- /package/pagination/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/popover/{esm2020 → esm2022}/index.mjs +0 -0
- /package/popover/{esm2020 → esm2022}/ngx-bootstrap-popover.mjs +0 -0
- /package/popover/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/index.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/arrow.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/flip.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/index.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/initData.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/preventOverflow.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/modifiers/shift.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/ng-positioning.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/ngx-bootstrap-positioning.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/checkMargin.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/computeAutoPlacement.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/findCommonOffsetParent.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getBordersSize.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getBoundaries.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getBoundingClientRect.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getClientRect.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getFixedPositionOffsetParent.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOffsetParent.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOffsetRectRelativeToArbitraryNode.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOffsets.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOppositePlacement.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOppositeVariation.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getOuterSizes.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getParentNode.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getReferenceOffsets.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getRoot.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getScroll.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getScrollParent.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getStyleComputedProperty.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getTargetOffsets.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getViewportOffsetRectRelativeToArtbitraryNode.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/getWindowSizes.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/includeScroll.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/index.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/isFixed.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/isModifierEnabled.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/isNumeric.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/isOffsetContainer.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/setStyles.mjs +0 -0
- /package/positioning/{esm2020 → esm2022}/utils/updateContainerClass.mjs +0 -0
- /package/progressbar/{esm2020 → esm2022}/index.mjs +0 -0
- /package/progressbar/{esm2020 → esm2022}/ngx-bootstrap-progressbar.mjs +0 -0
- /package/progressbar/{esm2020 → esm2022}/progressbar-type.interface.mjs +0 -0
- /package/progressbar/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/rating/{esm2020 → esm2022}/index.mjs +0 -0
- /package/rating/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/rating/{esm2020 → esm2022}/ngx-bootstrap-rating.mjs +0 -0
- /package/rating/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/sortable/{esm2020 → esm2022}/draggable-item.mjs +0 -0
- /package/sortable/{esm2020 → esm2022}/index.mjs +0 -0
- /package/sortable/{esm2020 → esm2022}/ngx-bootstrap-sortable.mjs +0 -0
- /package/sortable/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/tabs/{esm2020 → esm2022}/index.mjs +0 -0
- /package/tabs/{esm2020 → esm2022}/ngx-bootstrap-tabs.mjs +0 -0
- /package/tabs/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/index.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/ngx-bootstrap-timepicker.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/reducer/timepicker.reducer.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/timepicker-controls.util.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/timepicker.models.mjs +0 -0
- /package/timepicker/{esm2020 → esm2022}/timepicker.utils.mjs +0 -0
- /package/tooltip/{esm2020 → esm2022}/index.mjs +0 -0
- /package/tooltip/{esm2020 → esm2022}/ngx-bootstrap-tooltip.mjs +0 -0
- /package/tooltip/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/index.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/latin-map.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/models/index.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/ngx-bootstrap-typeahead.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/typeahead-animations.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/typeahead-match.class.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/typeahead-options.class.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/typeahead-order.class.mjs +0 -0
- /package/typeahead/{esm2020 → esm2022}/typeahead-utils.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/decorators.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/facade/browser.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/index.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/linked-list.class.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/ngx-bootstrap-utils.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/theme-provider.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/trigger.class.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/triggers.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/utils.class.mjs +0 -0
- /package/utils/{esm2020 → esm2022}/warn-once.mjs +0 -0
- /package/utils/{fesm2020 → fesm2022}/ngx-bootstrap-utils.mjs +0 -0
@@ -1,399 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @license
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
4
|
-
*
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
7
|
-
*/
|
8
|
-
/* eslint-disable */
|
9
|
-
import { coerceBooleanProperty } from './boolean-property';
|
10
|
-
import { DOCUMENT } from '@angular/common';
|
11
|
-
import { Directive, ElementRef, Inject, Injectable, Input, NgZone } from '@angular/core';
|
12
|
-
import { take } from 'rxjs/operators';
|
13
|
-
import { InteractivityChecker } from './interactivity-checker';
|
14
|
-
import * as i0 from "@angular/core";
|
15
|
-
import * as i1 from "./interactivity-checker";
|
16
|
-
/**
|
17
|
-
* Class that allows for trapping focus within a DOM element.
|
18
|
-
*
|
19
|
-
* This class currently uses a relatively simple approach to focus trapping.
|
20
|
-
* It assumes that the tab order is the same as DOM order, which is not necessarily true.
|
21
|
-
* Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to misalign.
|
22
|
-
*
|
23
|
-
* @deprecated Use `ConfigurableFocusTrap` instead.
|
24
|
-
* @breaking-change for 11.0.0 Remove this class.
|
25
|
-
*/
|
26
|
-
export class FocusTrap {
|
27
|
-
constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {
|
28
|
-
this._element = _element;
|
29
|
-
this._checker = _checker;
|
30
|
-
this._ngZone = _ngZone;
|
31
|
-
this._document = _document;
|
32
|
-
this._hasAttached = false;
|
33
|
-
// Event listeners for the anchors. Need to be regular functions so that we can unbind them later.
|
34
|
-
this.startAnchorListener = () => this.focusLastTabbableElement();
|
35
|
-
this.endAnchorListener = () => this.focusFirstTabbableElement();
|
36
|
-
this._enabled = true;
|
37
|
-
if (!deferAnchors) {
|
38
|
-
this.attachAnchors();
|
39
|
-
}
|
40
|
-
}
|
41
|
-
/** Whether the focus trap is active. */
|
42
|
-
get enabled() {
|
43
|
-
return this._enabled;
|
44
|
-
}
|
45
|
-
set enabled(value) {
|
46
|
-
this._enabled = value;
|
47
|
-
if (this._startAnchor && this._endAnchor) {
|
48
|
-
this._toggleAnchorTabIndex(value, this._startAnchor);
|
49
|
-
this._toggleAnchorTabIndex(value, this._endAnchor);
|
50
|
-
}
|
51
|
-
}
|
52
|
-
/** Destroys the focus trap by cleaning up the anchors. */
|
53
|
-
destroy() {
|
54
|
-
const startAnchor = this._startAnchor;
|
55
|
-
const endAnchor = this._endAnchor;
|
56
|
-
if (startAnchor) {
|
57
|
-
startAnchor.removeEventListener('focus', this.startAnchorListener);
|
58
|
-
if (startAnchor.parentNode) {
|
59
|
-
startAnchor.parentNode.removeChild(startAnchor);
|
60
|
-
}
|
61
|
-
}
|
62
|
-
if (endAnchor) {
|
63
|
-
endAnchor.removeEventListener('focus', this.endAnchorListener);
|
64
|
-
if (endAnchor.parentNode) {
|
65
|
-
endAnchor.parentNode.removeChild(endAnchor);
|
66
|
-
}
|
67
|
-
}
|
68
|
-
this._startAnchor = this._endAnchor = null;
|
69
|
-
this._hasAttached = false;
|
70
|
-
}
|
71
|
-
/**
|
72
|
-
* Inserts the anchors into the DOM. This is usually done automatically
|
73
|
-
* in the constructor, but can be deferred for cases like directives with `*ngIf`.
|
74
|
-
* @returns Whether the focus trap managed to attach successfuly. This may not be the case
|
75
|
-
* if the target element isn't currently in the DOM.
|
76
|
-
*/
|
77
|
-
attachAnchors() {
|
78
|
-
// If we're not on the browser, there can be no focus to trap.
|
79
|
-
if (this._hasAttached) {
|
80
|
-
return true;
|
81
|
-
}
|
82
|
-
this._ngZone.runOutsideAngular(() => {
|
83
|
-
if (!this._startAnchor) {
|
84
|
-
this._startAnchor = this._createAnchor();
|
85
|
-
this._startAnchor.addEventListener('focus', this.startAnchorListener);
|
86
|
-
}
|
87
|
-
if (!this._endAnchor) {
|
88
|
-
this._endAnchor = this._createAnchor();
|
89
|
-
this._endAnchor.addEventListener('focus', this.endAnchorListener);
|
90
|
-
}
|
91
|
-
});
|
92
|
-
if (this._element.parentNode) {
|
93
|
-
this._element.parentNode.insertBefore(this._startAnchor, this._element);
|
94
|
-
this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);
|
95
|
-
this._hasAttached = true;
|
96
|
-
}
|
97
|
-
return this._hasAttached;
|
98
|
-
}
|
99
|
-
/**
|
100
|
-
* Waits for the zone to stabilize, then either focuses the first element that the
|
101
|
-
* user specified, or the first tabbable element.
|
102
|
-
* @returns Returns a promise that resolves with a boolean, depending
|
103
|
-
* on whether focus was moved successfully.
|
104
|
-
*/
|
105
|
-
focusInitialElementWhenReady() {
|
106
|
-
return new Promise(resolve => {
|
107
|
-
this._executeOnStable(() => resolve(this.focusInitialElement()));
|
108
|
-
});
|
109
|
-
}
|
110
|
-
/**
|
111
|
-
* Waits for the zone to stabilize, then focuses
|
112
|
-
* the first tabbable element within the focus trap region.
|
113
|
-
* @returns Returns a promise that resolves with a boolean, depending
|
114
|
-
* on whether focus was moved successfully.
|
115
|
-
*/
|
116
|
-
focusFirstTabbableElementWhenReady() {
|
117
|
-
return new Promise(resolve => {
|
118
|
-
this._executeOnStable(() => resolve(this.focusFirstTabbableElement()));
|
119
|
-
});
|
120
|
-
}
|
121
|
-
/**
|
122
|
-
* Waits for the zone to stabilize, then focuses
|
123
|
-
* the last tabbable element within the focus trap region.
|
124
|
-
* @returns Returns a promise that resolves with a boolean, depending
|
125
|
-
* on whether focus was moved successfully.
|
126
|
-
*/
|
127
|
-
focusLastTabbableElementWhenReady() {
|
128
|
-
return new Promise(resolve => {
|
129
|
-
this._executeOnStable(() => resolve(this.focusLastTabbableElement()));
|
130
|
-
});
|
131
|
-
}
|
132
|
-
/**
|
133
|
-
* Get the specified boundary element of the trapped region.
|
134
|
-
* @param bound The boundary to get (start or end of trapped region).
|
135
|
-
* @returns The boundary element.
|
136
|
-
*/
|
137
|
-
_getRegionBoundary(bound) {
|
138
|
-
// Contains the deprecated version of selector, for temporary backwards comparability.
|
139
|
-
let markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` +
|
140
|
-
`[cdkFocusRegion${bound}], ` +
|
141
|
-
`[cdk-focus-${bound}]`);
|
142
|
-
for (let i = 0; i < markers.length; i++) {
|
143
|
-
// @breaking-change 8.0.0
|
144
|
-
if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {
|
145
|
-
console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +
|
146
|
-
`use 'cdkFocusRegion${bound}' instead. The deprecated ` +
|
147
|
-
`attribute will be removed in 8.0.0.`, markers[i]);
|
148
|
-
}
|
149
|
-
else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {
|
150
|
-
console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +
|
151
|
-
`use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +
|
152
|
-
`will be removed in 8.0.0.`, markers[i]);
|
153
|
-
}
|
154
|
-
}
|
155
|
-
if (bound == 'start') {
|
156
|
-
return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);
|
157
|
-
}
|
158
|
-
return markers.length ?
|
159
|
-
markers[markers.length - 1] : this._getLastTabbableElement(this._element);
|
160
|
-
}
|
161
|
-
/**
|
162
|
-
* Focuses the element that should be focused when the focus trap is initialized.
|
163
|
-
* @returns Whether focus was moved successfully.
|
164
|
-
*/
|
165
|
-
focusInitialElement() {
|
166
|
-
// Contains the deprecated version of selector, for temporary backwards comparability.
|
167
|
-
const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` +
|
168
|
-
`[cdkFocusInitial]`);
|
169
|
-
if (redirectToElement) {
|
170
|
-
// @breaking-change 8.0.0
|
171
|
-
if (redirectToElement.hasAttribute(`cdk-focus-initial`)) {
|
172
|
-
console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +
|
173
|
-
`use 'cdkFocusInitial' instead. The deprecated attribute ` +
|
174
|
-
`will be removed in 8.0.0`, redirectToElement);
|
175
|
-
}
|
176
|
-
// Warn the consumer if the element they've pointed to
|
177
|
-
// isn't focusable, when not in production mode.
|
178
|
-
if (!this._checker.isFocusable(redirectToElement)) {
|
179
|
-
const focusableChild = this._getFirstTabbableElement(redirectToElement);
|
180
|
-
focusableChild?.focus();
|
181
|
-
return !!focusableChild;
|
182
|
-
}
|
183
|
-
redirectToElement.focus();
|
184
|
-
return true;
|
185
|
-
}
|
186
|
-
return this.focusFirstTabbableElement();
|
187
|
-
}
|
188
|
-
/**
|
189
|
-
* Focuses the first tabbable element within the focus trap region.
|
190
|
-
* @returns Whether focus was moved successfully.
|
191
|
-
*/
|
192
|
-
focusFirstTabbableElement() {
|
193
|
-
const redirectToElement = this._getRegionBoundary('start');
|
194
|
-
if (redirectToElement) {
|
195
|
-
redirectToElement.focus();
|
196
|
-
}
|
197
|
-
return !!redirectToElement;
|
198
|
-
}
|
199
|
-
/**
|
200
|
-
* Focuses the last tabbable element within the focus trap region.
|
201
|
-
* @returns Whether focus was moved successfully.
|
202
|
-
*/
|
203
|
-
focusLastTabbableElement() {
|
204
|
-
const redirectToElement = this._getRegionBoundary('end');
|
205
|
-
if (redirectToElement) {
|
206
|
-
redirectToElement.focus();
|
207
|
-
}
|
208
|
-
return !!redirectToElement;
|
209
|
-
}
|
210
|
-
/**
|
211
|
-
* Checks whether the focus trap has successfully been attached.
|
212
|
-
*/
|
213
|
-
hasAttached() {
|
214
|
-
return this._hasAttached;
|
215
|
-
}
|
216
|
-
/** Get the first tabbable element from a DOM subtree (inclusive). */
|
217
|
-
_getFirstTabbableElement(root) {
|
218
|
-
if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {
|
219
|
-
return root;
|
220
|
-
}
|
221
|
-
// Iterate in DOM order. Note that IE doesn't have `children` for SVG so we fall
|
222
|
-
// back to `childNodes` which includes text nodes, comments etc.
|
223
|
-
let children = root.children || root.childNodes;
|
224
|
-
for (let i = 0; i < children.length; i++) {
|
225
|
-
let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ?
|
226
|
-
this._getFirstTabbableElement(children[i]) :
|
227
|
-
null;
|
228
|
-
if (tabbableChild) {
|
229
|
-
return tabbableChild;
|
230
|
-
}
|
231
|
-
}
|
232
|
-
return null;
|
233
|
-
}
|
234
|
-
/** Get the last tabbable element from a DOM subtree (inclusive). */
|
235
|
-
_getLastTabbableElement(root) {
|
236
|
-
if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {
|
237
|
-
return root;
|
238
|
-
}
|
239
|
-
// Iterate in reverse DOM order.
|
240
|
-
let children = root.children || root.childNodes;
|
241
|
-
for (let i = children.length - 1; i >= 0; i--) {
|
242
|
-
let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ?
|
243
|
-
this._getLastTabbableElement(children[i]) :
|
244
|
-
null;
|
245
|
-
if (tabbableChild) {
|
246
|
-
return tabbableChild;
|
247
|
-
}
|
248
|
-
}
|
249
|
-
return null;
|
250
|
-
}
|
251
|
-
/** Creates an anchor element. */
|
252
|
-
_createAnchor() {
|
253
|
-
const anchor = this._document.createElement('div');
|
254
|
-
this._toggleAnchorTabIndex(this._enabled, anchor);
|
255
|
-
anchor.classList.add('cdk-visually-hidden');
|
256
|
-
anchor.classList.add('cdk-focus-trap-anchor');
|
257
|
-
anchor.setAttribute('aria-hidden', 'true');
|
258
|
-
return anchor;
|
259
|
-
}
|
260
|
-
/**
|
261
|
-
* Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.
|
262
|
-
* @param isEnabled Whether the focus trap is enabled.
|
263
|
-
* @param anchor Anchor on which to toggle the tabindex.
|
264
|
-
*/
|
265
|
-
_toggleAnchorTabIndex(isEnabled, anchor) {
|
266
|
-
// Remove the tabindex completely, rather than setting it to -1, because if the
|
267
|
-
// element has a tabindex, the user might still hit it when navigating with the arrow keys.
|
268
|
-
isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');
|
269
|
-
}
|
270
|
-
/**
|
271
|
-
* Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.
|
272
|
-
* @param enabled: Whether the anchors should trap Tab.
|
273
|
-
*/
|
274
|
-
toggleAnchors(enabled) {
|
275
|
-
if (this._startAnchor && this._endAnchor) {
|
276
|
-
this._toggleAnchorTabIndex(enabled, this._startAnchor);
|
277
|
-
this._toggleAnchorTabIndex(enabled, this._endAnchor);
|
278
|
-
}
|
279
|
-
}
|
280
|
-
/** Executes a function when the zone is stable. */
|
281
|
-
_executeOnStable(fn) {
|
282
|
-
if (this._ngZone.isStable) {
|
283
|
-
fn();
|
284
|
-
}
|
285
|
-
else {
|
286
|
-
this._ngZone.onStable.pipe(take(1)).subscribe(fn);
|
287
|
-
}
|
288
|
-
}
|
289
|
-
}
|
290
|
-
/**
|
291
|
-
* Factory that allows easy instantiation of focus traps.
|
292
|
-
* @deprecated Use `ConfigurableFocusTrapFactory` instead.
|
293
|
-
* @breaking-change for 11.0.0 Remove this class.
|
294
|
-
*/
|
295
|
-
export class FocusTrapFactory {
|
296
|
-
constructor(_checker, _ngZone, _document) {
|
297
|
-
this._checker = _checker;
|
298
|
-
this._ngZone = _ngZone;
|
299
|
-
this._document = _document;
|
300
|
-
}
|
301
|
-
/**
|
302
|
-
* Creates a focus-trapped region around the given element.
|
303
|
-
* @param element The element around which focus will be trapped.
|
304
|
-
* @param deferCaptureElements Defers the creation of focus-capturing elements to be done
|
305
|
-
* manually by the user.
|
306
|
-
* @returns The created focus trap instance.
|
307
|
-
*/
|
308
|
-
create(element, deferCaptureElements = false) {
|
309
|
-
return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);
|
310
|
-
}
|
311
|
-
}
|
312
|
-
FocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: FocusTrapFactory, deps: [{ token: i1.InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
313
|
-
FocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });
|
314
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: FocusTrapFactory, decorators: [{
|
315
|
-
type: Injectable,
|
316
|
-
args: [{ providedIn: 'root' }]
|
317
|
-
}], ctorParameters: function () { return [{ type: i1.InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
318
|
-
type: Inject,
|
319
|
-
args: [DOCUMENT]
|
320
|
-
}] }]; } });
|
321
|
-
/** Directive for trapping focus within a region. */
|
322
|
-
export class FocusTrapDirective {
|
323
|
-
constructor(_elementRef, _focusTrapFactory, _document) {
|
324
|
-
this._elementRef = _elementRef;
|
325
|
-
this._focusTrapFactory = _focusTrapFactory;
|
326
|
-
/** Previously focused element to restore focus to upon destroy when using autoCapture. */
|
327
|
-
this._previouslyFocusedElement = null;
|
328
|
-
this._autoCapture = false;
|
329
|
-
this._document = _document;
|
330
|
-
this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);
|
331
|
-
}
|
332
|
-
/** Whether the focus trap is active. */
|
333
|
-
get enabled() {
|
334
|
-
return this.focusTrap.enabled;
|
335
|
-
}
|
336
|
-
set enabled(value) {
|
337
|
-
this.focusTrap.enabled = coerceBooleanProperty(value);
|
338
|
-
}
|
339
|
-
/**
|
340
|
-
* Whether the directive should automatically move focus into the trapped region upon
|
341
|
-
* initialization and return focus to the previous activeElement upon destruction.
|
342
|
-
*/
|
343
|
-
get autoCapture() {
|
344
|
-
return this._autoCapture;
|
345
|
-
}
|
346
|
-
set autoCapture(value) {
|
347
|
-
this._autoCapture = coerceBooleanProperty(value);
|
348
|
-
}
|
349
|
-
ngOnDestroy() {
|
350
|
-
this.focusTrap.destroy();
|
351
|
-
// If we stored a previously focused element when using autoCapture, return focus to that
|
352
|
-
// element now that the trapped region is being destroyed.
|
353
|
-
if (this._previouslyFocusedElement) {
|
354
|
-
this._previouslyFocusedElement.focus();
|
355
|
-
this._previouslyFocusedElement = null;
|
356
|
-
}
|
357
|
-
}
|
358
|
-
ngAfterContentInit() {
|
359
|
-
this.focusTrap.attachAnchors();
|
360
|
-
if (this.autoCapture) {
|
361
|
-
this._captureFocus();
|
362
|
-
}
|
363
|
-
}
|
364
|
-
ngDoCheck() {
|
365
|
-
if (!this.focusTrap.hasAttached()) {
|
366
|
-
this.focusTrap.attachAnchors();
|
367
|
-
}
|
368
|
-
}
|
369
|
-
ngOnChanges(changes) {
|
370
|
-
const autoCaptureChange = changes['autoCapture'];
|
371
|
-
if (autoCaptureChange && !autoCaptureChange.firstChange && this.autoCapture &&
|
372
|
-
this.focusTrap.hasAttached()) {
|
373
|
-
this._captureFocus();
|
374
|
-
}
|
375
|
-
}
|
376
|
-
_captureFocus() {
|
377
|
-
this._previouslyFocusedElement = this._document.activeElement;
|
378
|
-
this.focusTrap.focusInitialElementWhenReady();
|
379
|
-
}
|
380
|
-
}
|
381
|
-
FocusTrapDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: FocusTrapDirective, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
|
382
|
-
FocusTrapDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.3", type: FocusTrapDirective, selector: "[focusTrap]", inputs: { enabled: ["cdkTrapFocus", "enabled"], autoCapture: ["cdkTrapFocusAutoCapture", "autoCapture"] }, exportAs: ["focusTrap"], usesOnChanges: true, ngImport: i0 });
|
383
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: FocusTrapDirective, decorators: [{
|
384
|
-
type: Directive,
|
385
|
-
args: [{
|
386
|
-
selector: '[focusTrap]',
|
387
|
-
exportAs: 'focusTrap'
|
388
|
-
}]
|
389
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{
|
390
|
-
type: Inject,
|
391
|
-
args: [DOCUMENT]
|
392
|
-
}] }]; }, propDecorators: { enabled: [{
|
393
|
-
type: Input,
|
394
|
-
args: ['cdkTrapFocus']
|
395
|
-
}], autoCapture: [{
|
396
|
-
type: Input,
|
397
|
-
args: ['cdkTrapFocusAutoCapture']
|
398
|
-
}] } });
|
399
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9mb2N1cy10cmFwL2ZvY3VzLXRyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsb0JBQW9CO0FBRXBCLE9BQU8sRUFBRSxxQkFBcUIsRUFBZ0IsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUVMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUtQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRy9EOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBeUJwQixZQUNXLFFBQXFCLEVBQ3RCLFFBQThCLEVBQzdCLE9BQWUsRUFDZixTQUFtQixFQUM1QixZQUFZLEdBQUcsS0FBSztRQUpYLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBc0I7UUFDN0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQVU7UUExQnRCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRTdCLGtHQUFrRztRQUN4Rix3QkFBbUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUM1RCxzQkFBaUIsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQWdCM0QsYUFBUSxHQUFZLElBQUksQ0FBQztRQVNqQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENB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QUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFakQsSUFBSSxpQkFBaUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVztZQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQTRCLENBQUM7UUFDN0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ2hELENBQUM7OytHQWhGVSxrQkFBa0IseUVBcUNuQixRQUFRO21HQXJDUCxrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLFdBQVc7aUJBQ3RCOzswQkFzQ0ksTUFBTTsyQkFBQyxRQUFROzRDQTFCZCxPQUFPO3NCQURWLEtBQUs7dUJBQUMsY0FBYztnQkFjakIsV0FBVztzQkFEZCxLQUFLO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIEJvb2xlYW5JbnB1dCB9IGZyb20gJy4vYm9vbGVhbi1wcm9wZXJ0eSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBEb0NoZWNrLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBPbkNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW50ZXJhY3Rpdml0eUNoZWNrZXIgfSBmcm9tICcuL2ludGVyYWN0aXZpdHktY2hlY2tlcic7XG5cblxuLyoqXG4gKiBDbGFzcyB0aGF0IGFsbG93cyBmb3IgdHJhcHBpbmcgZm9jdXMgd2l0aGluIGEgRE9NIGVsZW1lbnQuXG4gKlxuICogVGhpcyBjbGFzcyBjdXJyZW50bHkgdXNlcyBhIHJlbGF0aXZlbHkgc2ltcGxlIGFwcHJvYWNoIHRvIGZvY3VzIHRyYXBwaW5nLlxuICogSXQgYXNzdW1lcyB0aGF0IHRoZSB0YWIgb3JkZXIgaXMgdGhlIHNhbWUgYXMgRE9NIG9yZGVyLCB3aGljaCBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZS5cbiAqIFRoaW5ncyBsaWtlIGB0YWJJbmRleCA+IDBgLCBmbGV4IGBvcmRlcmAsIGFuZCBzaGFkb3cgcm9vdHMgY2FuIGNhdXNlIHRoZSB0d28gdG8gbWlzYWxpZ24uXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBDb25maWd1cmFibGVGb2N1c1RyYXBgIGluc3RlYWQuXG4gKiBAYnJlYWtpbmctY2hhbmdlIGZvciAxMS4wLjAgUmVtb3ZlIHRoaXMgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBGb2N1c1RyYXAge1xuICBwcml2YXRlIF9zdGFydEFuY2hvcj86IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgcHJpdmF0ZSBfZW5kQW5jaG9yPzogSFRNTEVsZW1lbnQgfCBudWxsO1xuICBwcml2YXRlIF9oYXNBdHRhY2hlZCA9IGZhbHNlO1xuXG4gIC8vIEV2ZW50IGxpc3RlbmVycyBmb3IgdGhlIGFuY2hvcnMuIE5lZWQgdG8gYmUgcmVndWxhciBmdW5jdGlvbnMgc28gdGhhdCB3ZSBjYW4gdW5iaW5kIHRoZW0gbGF0ZXIuXG4gIHByb3RlY3RlZCBzdGFydEFuY2hvckxpc3RlbmVyID0gKCkgPT4gdGhpcy5mb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnQoKTtcbiAgcHJvdGVjdGVkIGVuZEFuY2hvckxpc3RlbmVyID0gKCkgPT4gdGhpcy5mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCk7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGZvY3VzIHRyYXAgaXMgYWN0aXZlLiAqL1xuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIHNldCBlbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZW5hYmxlZCA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuX3N0YXJ0QW5jaG9yICYmIHRoaXMuX2VuZEFuY2hvcikge1xuICAgICAgdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgodmFsdWUsIHRoaXMuX3N0YXJ0QW5jaG9yKTtcbiAgICAgIHRoaXMuX3RvZ2dsZUFuY2hvclRhYkluZGV4KHZhbHVlLCB0aGlzLl9lbmRBbmNob3IpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBfZW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgX2VsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICAgIHByaXZhdGUgX2NoZWNrZXI6IEludGVyYWN0aXZpdHlDaGVja2VyLFxuICAgIHJlYWRvbmx5IF9uZ1pvbmU6IE5nWm9uZSxcbiAgICByZWFkb25seSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIGRlZmVyQW5jaG9ycyA9IGZhbHNlKSB7XG5cbiAgICBpZiAoIWRlZmVyQW5jaG9ycykge1xuICAgICAgdGhpcy5hdHRhY2hBbmNob3JzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIERlc3Ryb3lzIHRoZSBmb2N1cyB0cmFwIGJ5IGNsZWFuaW5nIHVwIHRoZSBhbmNob3JzLiAqL1xuICBkZXN0cm95KCkge1xuICAgIGNvbnN0IHN0YXJ0QW5jaG9yID0gdGhpcy5fc3RhcnRBbmNob3I7XG4gICAgY29uc3QgZW5kQW5jaG9yID0gdGhpcy5fZW5kQW5jaG9yO1xuXG4gICAgaWYgKHN0YXJ0QW5jaG9yKSB7XG4gICAgICBzdGFydEFuY2hvci5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuc3RhcnRBbmNob3JMaXN0ZW5lcik7XG5cbiAgICAgIGlmIChzdGFydEFuY2hvci5wYXJlbnROb2RlKSB7XG4gICAgICAgIHN0YXJ0QW5jaG9yLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3RhcnRBbmNob3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmRBbmNob3IpIHtcbiAgICAgIGVuZEFuY2hvci5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuZW5kQW5jaG9yTGlzdGVuZXIpO1xuXG4gICAgICBpZiAoZW5kQW5jaG9yLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZW5kQW5jaG9yLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZW5kQW5jaG9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9zdGFydEFuY2hvciA9IHRoaXMuX2VuZEFuY2hvciA9IG51bGw7XG4gICAgdGhpcy5faGFzQXR0YWNoZWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnRzIHRoZSBhbmNob3JzIGludG8gdGhlIERPTS4gVGhpcyBpcyB1c3VhbGx5IGRvbmUgYXV0b21hdGljYWxseVxuICAgKiBpbiB0aGUgY29uc3RydWN0b3IsIGJ1dCBjYW4gYmUgZGVmZXJyZWQgZm9yIGNhc2VzIGxpa2UgZGlyZWN0aXZlcyB3aXRoIGAqbmdJZmAuXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGZvY3VzIHRyYXAgbWFuYWdlZCB0byBhdHRhY2ggc3VjY2Vzc2Z1bHkuIFRoaXMgbWF5IG5vdCBiZSB0aGUgY2FzZVxuICAgKiBpZiB0aGUgdGFyZ2V0IGVsZW1lbnQgaXNuJ3QgY3VycmVudGx5IGluIHRoZSBET00uXG4gICAqL1xuICBhdHRhY2hBbmNob3JzKCk6IGJvb2xlYW4ge1xuICAgIC8vIElmIHdlJ3JlIG5vdCBvbiB0aGUgYnJvd3NlciwgdGhlcmUgY2FuIGJlIG5vIGZvY3VzIHRvIHRyYXAuXG4gICAgaWYgKHRoaXMuX2hhc0F0dGFjaGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9zdGFydEFuY2hvcikge1xuICAgICAgICB0aGlzLl9zdGFydEFuY2hvciA9IHRoaXMuX2NyZWF0ZUFuY2hvcigpO1xuICAgICAgICB0aGlzLl9zdGFydEFuY2hvciEuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLnN0YXJ0QW5jaG9yTGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuX2VuZEFuY2hvcikge1xuICAgICAgICB0aGlzLl9lbmRBbmNob3IgPSB0aGlzLl9jcmVhdGVBbmNob3IoKTtcbiAgICAgICAgdGhpcy5fZW5kQW5jaG9yIS5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuZW5kQW5jaG9yTGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9zdGFydEFuY2hvciEsIHRoaXMuX2VsZW1lbnQpO1xuICAgICAgdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLl9lbmRBbmNob3IhLCB0aGlzLl9lbGVtZW50Lm5leHRTaWJsaW5nKTtcbiAgICAgIHRoaXMuX2hhc0F0dGFjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5faGFzQXR0YWNoZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2FpdHMgZm9yIHRoZSB6b25lIHRvIHN0YWJpbGl6ZSwgdGhlbiBlaXRoZXIgZm9jdXNlcyB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IHRoZVxuICAgKiB1c2VyIHNwZWNpZmllZCwgb3IgdGhlIGZpcnN0IHRhYmJhYmxlIGVsZW1lbnQuXG4gICAqIEByZXR1cm5zIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIGJvb2xlYW4sIGRlcGVuZGluZ1xuICAgKiBvbiB3aGV0aGVyIGZvY3VzIHdhcyBtb3ZlZCBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBmb2N1c0luaXRpYWxFbGVtZW50V2hlblJlYWR5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXNvbHZlID0+IHtcbiAgICAgIHRoaXMuX2V4ZWN1dGVPblN0YWJsZSgoKSA9PiByZXNvbHZlKHRoaXMuZm9jdXNJbml0aWFsRWxlbWVudCgpKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogV2FpdHMgZm9yIHRoZSB6b25lIHRvIHN0YWJpbGl6ZSwgdGhlbiBmb2N1c2VzXG4gICAqIHRoZSBmaXJzdCB0YWJiYWJsZSBlbGVtZW50IHdpdGhpbiB0aGUgZm9jdXMgdHJhcCByZWdpb24uXG4gICAqIEByZXR1cm5zIFJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhIGJvb2xlYW4sIGRlcGVuZGluZ1xuICAgKiBvbiB3aGV0aGVyIGZvY3VzIHdhcyBtb3ZlZCBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBmb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50V2hlblJlYWR5KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXNvbHZlID0+IHtcbiAgICAgIHRoaXMuX2V4ZWN1dGVPblN0YWJsZSgoKSA9PiByZXNvbHZlKHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogV2FpdHMgZm9yIHRoZSB6b25lIHRvIHN0YWJpbGl6ZSwgdGhlbiBmb2N1c2VzXG4gICAqIHRoZSBsYXN0IHRhYmJhYmxlIGVsZW1lbnQgd2l0aGluIHRoZSBmb2N1cyB0cmFwIHJlZ2lvbi5cbiAgICogQHJldHVybnMgUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGEgYm9vbGVhbiwgZGVwZW5kaW5nXG4gICAqIG9uIHdoZXRoZXIgZm9jdXMgd2FzIG1vdmVkIHN1Y2Nlc3NmdWxseS5cbiAgICovXG4gIGZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudFdoZW5SZWFkeSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4ocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLl9leGVjdXRlT25TdGFibGUoKCkgPT4gcmVzb2x2ZSh0aGlzLmZvY3VzTGFzdFRhYmJhYmxlRWxlbWVudCgpKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzcGVjaWZpZWQgYm91bmRhcnkgZWxlbWVudCBvZiB0aGUgdHJhcHBlZCByZWdpb24uXG4gICAqIEBwYXJhbSBib3VuZCBUaGUgYm91bmRhcnkgdG8gZ2V0IChzdGFydCBvciBlbmQgb2YgdHJhcHBlZCByZWdpb24pLlxuICAgKiBAcmV0dXJucyBUaGUgYm91bmRhcnkgZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgX2dldFJlZ2lvbkJvdW5kYXJ5KGJvdW5kOiAnc3RhcnQnIHwgJ2VuZCcpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIC8vIENvbnRhaW5zIHRoZSBkZXByZWNhdGVkIHZlcnNpb24gb2Ygc2VsZWN0b3IsIGZvciB0ZW1wb3JhcnkgYmFja3dhcmRzIGNvbXBhcmFiaWxpdHkuXG4gICAgbGV0IG1hcmtlcnMgPSB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtjZGstZm9jdXMtcmVnaW9uLSR7Ym91bmR9XSwgYCArXG4gICAgICBgW2Nka0ZvY3VzUmVnaW9uJHtib3VuZH1dLCBgICtcbiAgICAgIGBbY2RrLWZvY3VzLSR7Ym91bmR9XWApIGFzIE5vZGVMaXN0T2Y8SFRNTEVsZW1lbnQ+O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXJrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBAYnJlYWtpbmctY2hhbmdlIDguMC4wXG4gICAgICBpZiAobWFya2Vyc1tpXS5oYXNBdHRyaWJ1dGUoYGNkay1mb2N1cy0ke2JvdW5kfWApKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgRm91bmQgdXNlIG9mIGRlcHJlY2F0ZWQgYXR0cmlidXRlICdjZGstZm9jdXMtJHtib3VuZH0nLCBgICtcbiAgICAgICAgICBgdXNlICdjZGtGb2N1c1JlZ2lvbiR7Ym91bmR9JyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBgICtcbiAgICAgICAgICBgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuMC5gLCBtYXJrZXJzW2ldKTtcbiAgICAgIH0gZWxzZSBpZiAobWFya2Vyc1tpXS5oYXNBdHRyaWJ1dGUoYGNkay1mb2N1cy1yZWdpb24tJHtib3VuZH1gKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYEZvdW5kIHVzZSBvZiBkZXByZWNhdGVkIGF0dHJpYnV0ZSAnY2RrLWZvY3VzLXJlZ2lvbi0ke2JvdW5kfScsIGAgK1xuICAgICAgICAgIGB1c2UgJ2Nka0ZvY3VzUmVnaW9uJHtib3VuZH0nIGluc3RlYWQuIFRoZSBkZXByZWNhdGVkIGF0dHJpYnV0ZSBgICtcbiAgICAgICAgICBgd2lsbCBiZSByZW1vdmVkIGluIDguMC4wLmAsIG1hcmtlcnNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChib3VuZCA9PSAnc3RhcnQnKSB7XG4gICAgICByZXR1cm4gbWFya2Vycy5sZW5ndGggPyBtYXJrZXJzWzBdIDogdGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQodGhpcy5fZWxlbWVudCk7XG4gICAgfVxuICAgIHJldHVybiBtYXJrZXJzLmxlbmd0aCA/XG4gICAgICBtYXJrZXJzW21hcmtlcnMubGVuZ3RoIC0gMV0gOiB0aGlzLl9nZXRMYXN0VGFiYmFibGVFbGVtZW50KHRoaXMuX2VsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGVsZW1lbnQgdGhhdCBzaG91bGQgYmUgZm9jdXNlZCB3aGVuIHRoZSBmb2N1cyB0cmFwIGlzIGluaXRpYWxpemVkLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIGZvY3VzIHdhcyBtb3ZlZCBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBmb2N1c0luaXRpYWxFbGVtZW50KCk6IGJvb2xlYW4ge1xuICAgIC8vIENvbnRhaW5zIHRoZSBkZXByZWNhdGVkIHZlcnNpb24gb2Ygc2VsZWN0b3IsIGZvciB0ZW1wb3JhcnkgYmFja3dhcmRzIGNvbXBhcmFiaWxpdHkuXG4gICAgY29uc3QgcmVkaXJlY3RUb0VsZW1lbnQgPSB0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYFtjZGstZm9jdXMtaW5pdGlhbF0sIGAgK1xuICAgICAgYFtjZGtGb2N1c0luaXRpYWxdYCkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBpZiAocmVkaXJlY3RUb0VsZW1lbnQpIHtcbiAgICAgIC8vIEBicmVha2luZy1jaGFuZ2UgOC4wLjBcbiAgICAgIGlmIChyZWRpcmVjdFRvRWxlbWVudC5oYXNBdHRyaWJ1dGUoYGNkay1mb2N1cy1pbml0aWFsYCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBGb3VuZCB1c2Ugb2YgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgJ2Nkay1mb2N1cy1pbml0aWFsJywgYCArXG4gICAgICAgICAgYHVzZSAnY2RrRm9jdXNJbml0aWFsJyBpbnN0ZWFkLiBUaGUgZGVwcmVjYXRlZCBhdHRyaWJ1dGUgYCArXG4gICAgICAgICAgYHdpbGwgYmUgcmVtb3ZlZCBpbiA4LjAuMGAsIHJlZGlyZWN0VG9FbGVtZW50KTtcbiAgICAgIH1cblxuICAgICAgLy8gV2FybiB0aGUgY29uc3VtZXIgaWYgdGhlIGVsZW1lbnQgdGhleSd2ZSBwb2ludGVkIHRvXG4gICAgICAvLyBpc24ndCBmb2N1c2FibGUsIHdoZW4gbm90IGluIHByb2R1Y3Rpb24gbW9kZS5cblxuICAgICAgaWYgKCF0aGlzLl9jaGVja2VyLmlzRm9jdXNhYmxlKHJlZGlyZWN0VG9FbGVtZW50KSkge1xuICAgICAgICBjb25zdCBmb2N1c2FibGVDaGlsZCA9IHRoaXMuX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHJlZGlyZWN0VG9FbGVtZW50KSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgZm9jdXNhYmxlQ2hpbGQ/LmZvY3VzKCk7XG4gICAgICAgIHJldHVybiAhIWZvY3VzYWJsZUNoaWxkO1xuICAgICAgfVxuXG4gICAgICByZWRpcmVjdFRvRWxlbWVudC5mb2N1cygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGZpcnN0IHRhYmJhYmxlIGVsZW1lbnQgd2l0aGluIHRoZSBmb2N1cyB0cmFwIHJlZ2lvbi5cbiAgICogQHJldHVybnMgV2hldGhlciBmb2N1cyB3YXMgbW92ZWQgc3VjY2Vzc2Z1bGx5LlxuICAgKi9cbiAgZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudCgpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWRpcmVjdFRvRWxlbWVudCA9IHRoaXMuX2dldFJlZ2lvbkJvdW5kYXJ5KCdzdGFydCcpO1xuXG4gICAgaWYgKHJlZGlyZWN0VG9FbGVtZW50KSB7XG4gICAgICByZWRpcmVjdFRvRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHJldHVybiAhIXJlZGlyZWN0VG9FbGVtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGxhc3QgdGFiYmFibGUgZWxlbWVudCB3aXRoaW4gdGhlIGZvY3VzIHRyYXAgcmVnaW9uLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIGZvY3VzIHdhcyBtb3ZlZCBzdWNjZXNzZnVsbHkuXG4gICAqL1xuICBmb2N1c0xhc3RUYWJiYWJsZUVsZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVkaXJlY3RUb0VsZW1lbnQgPSB0aGlzLl9nZXRSZWdpb25Cb3VuZGFyeSgnZW5kJyk7XG5cbiAgICBpZiAocmVkaXJlY3RUb0VsZW1lbnQpIHtcbiAgICAgIHJlZGlyZWN0VG9FbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhcmVkaXJlY3RUb0VsZW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGZvY3VzIHRyYXAgaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGF0dGFjaGVkLlxuICAgKi9cbiAgaGFzQXR0YWNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hhc0F0dGFjaGVkO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgZmlyc3QgdGFiYmFibGUgZWxlbWVudCBmcm9tIGEgRE9NIHN1YnRyZWUgKGluY2x1c2l2ZSkuICovXG4gIHByaXZhdGUgX2dldEZpcnN0VGFiYmFibGVFbGVtZW50KHJvb3Q6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZShyb290KSAmJiB0aGlzLl9jaGVja2VyLmlzVGFiYmFibGUocm9vdCkpIHtcbiAgICAgIHJldHVybiByb290O1xuICAgIH1cblxuICAgIC8vIEl0ZXJhdGUgaW4gRE9NIG9yZGVyLiBOb3RlIHRoYXQgSUUgZG9lc24ndCBoYXZlIGBjaGlsZHJlbmAgZm9yIFNWRyBzbyB3ZSBmYWxsXG4gICAgLy8gYmFjayB0byBgY2hpbGROb2Rlc2Agd2hpY2ggaW5jbHVkZXMgdGV4dCBub2RlcywgY29tbWVudHMgZXRjLlxuICAgIGxldCBjaGlsZHJlbiA9IHJvb3QuY2hpbGRyZW4gfHwgcm9vdC5jaGlsZE5vZGVzO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHRhYmJhYmxlQ2hpbGQgPSBjaGlsZHJlbltpXS5ub2RlVHlwZSA9PT0gdGhpcy5fZG9jdW1lbnQuRUxFTUVOVF9OT0RFID9cbiAgICAgICAgdGhpcy5fZ2V0Rmlyc3RUYWJiYWJsZUVsZW1lbnQoY2hpbGRyZW5baV0gYXMgSFRNTEVsZW1lbnQpIDpcbiAgICAgICAgbnVsbDtcblxuICAgICAgaWYgKHRhYmJhYmxlQ2hpbGQpIHtcbiAgICAgICAgcmV0dXJuIHRhYmJhYmxlQ2hpbGQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogR2V0IHRoZSBsYXN0IHRhYmJhYmxlIGVsZW1lbnQgZnJvbSBhIERPTSBzdWJ0cmVlIChpbmNsdXNpdmUpLiAqL1xuICBwcml2YXRlIF9nZXRMYXN0VGFiYmFibGVFbGVtZW50KHJvb3Q6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5fY2hlY2tlci5pc0ZvY3VzYWJsZShyb290KSAmJiB0aGlzLl9jaGVja2VyLmlzVGFiYmFibGUocm9vdCkpIHtcbiAgICAgIHJldHVybiByb290O1xuICAgIH1cblxuICAgIC8vIEl0ZXJhdGUgaW4gcmV2ZXJzZSBET00gb3JkZXIuXG4gICAgbGV0IGNoaWxkcmVuID0gcm9vdC5jaGlsZHJlbiB8fCByb290LmNoaWxkTm9kZXM7XG5cbiAgICBmb3IgKGxldCBpID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCB0YWJiYWJsZUNoaWxkID0gY2hpbGRyZW5baV0ubm9kZVR5cGUgPT09IHRoaXMuX2RvY3VtZW50LkVMRU1FTlRfTk9ERSA/XG4gICAgICAgIHRoaXMuX2dldExhc3RUYWJiYWJsZUVsZW1lbnQoY2hpbGRyZW5baV0gYXMgSFRNTEVsZW1lbnQpIDpcbiAgICAgICAgbnVsbDtcblxuICAgICAgaWYgKHRhYmJhYmxlQ2hpbGQpIHtcbiAgICAgICAgcmV0dXJuIHRhYmJhYmxlQ2hpbGQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvKiogQ3JlYXRlcyBhbiBhbmNob3IgZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBfY3JlYXRlQW5jaG9yKCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBhbmNob3IgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLl90b2dnbGVBbmNob3JUYWJJbmRleCh0aGlzLl9lbmFibGVkLCBhbmNob3IpO1xuICAgIGFuY2hvci5jbGFzc0xpc3QuYWRkKCdjZGstdmlzdWFsbHktaGlkZGVuJyk7XG4gICAgYW5jaG9yLmNsYXNzTGlzdC5hZGQoJ2Nkay1mb2N1cy10cmFwLWFuY2hvcicpO1xuICAgIGFuY2hvci5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICByZXR1cm4gYW5jaG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGB0YWJpbmRleGAgb2YgYW4gYW5jaG9yLCBiYXNlZCBvbiB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgZm9jdXMgdHJhcC5cbiAgICogQHBhcmFtIGlzRW5hYmxlZCBXaGV0aGVyIHRoZSBmb2N1cyB0cmFwIGlzIGVuYWJsZWQuXG4gICAqIEBwYXJhbSBhbmNob3IgQW5jaG9yIG9uIHdoaWNoIHRvIHRvZ2dsZSB0aGUgdGFiaW5kZXguXG4gICAqL1xuICBwcml2YXRlIF90b2dnbGVBbmNob3JUYWJJbmRleChpc0VuYWJsZWQ6IGJvb2xlYW4sIGFuY2hvcjogSFRNTEVsZW1lbnQpIHtcbiAgICAvLyBSZW1vdmUgdGhlIHRhYmluZGV4IGNvbXBsZXRlbHksIHJhdGhlciB0aGFuIHNldHRpbmcgaXQgdG8gLTEsIGJlY2F1c2UgaWYgdGhlXG4gICAgLy8gZWxlbWVudCBoYXMgYSB0YWJpbmRleCwgdGhlIHVzZXIgbWlnaHQgc3RpbGwgaGl0IGl0IHdoZW4gbmF2aWdhdGluZyB3aXRoIHRoZSBhcnJvdyBrZXlzLlxuICAgIGlzRW5hYmxlZCA/IGFuY2hvci5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKSA6IGFuY2hvci5yZW1vdmVBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGVgdGFiaW5kZXhgIG9mIGJvdGggYW5jaG9ycyB0byBlaXRoZXIgdHJhcCBUYWIgZm9jdXMgb3IgYWxsb3cgaXQgdG8gZXNjYXBlLlxuICAgKiBAcGFyYW0gZW5hYmxlZDogV2hldGhlciB0aGUgYW5jaG9ycyBzaG91bGQgdHJhcCBUYWIuXG4gICAqL1xuICBwcm90ZWN0ZWQgdG9nZ2xlQW5jaG9ycyhlbmFibGVkOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuX3N0YXJ0QW5jaG9yICYmIHRoaXMuX2VuZEFuY2hvcikge1xuICAgICAgdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgoZW5hYmxlZCwgdGhpcy5fc3RhcnRBbmNob3IpO1xuICAgICAgdGhpcy5fdG9nZ2xlQW5jaG9yVGFiSW5kZXgoZW5hYmxlZCwgdGhpcy5fZW5kQW5jaG9yKTtcbiAgICB9XG4gIH1cblxuICAvKiogRXhlY3V0ZXMgYSBmdW5jdGlvbiB3aGVuIHRoZSB6b25lIGlzIHN0YWJsZS4gKi9cbiAgcHJpdmF0ZSBfZXhlY3V0ZU9uU3RhYmxlKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbmdab25lLmlzU3RhYmxlKSB7XG4gICAgICBmbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoZm4pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEZhY3RvcnkgdGhhdCBhbGxvd3MgZWFzeSBpbnN0YW50aWF0aW9uIG9mIGZvY3VzIHRyYXBzLlxuICogQGRlcHJlY2F0ZWQgVXNlIGBDb25maWd1cmFibGVGb2N1c1RyYXBGYWN0b3J5YCBpbnN0ZWFkLlxuICogQGJyZWFraW5nLWNoYW5nZSBmb3IgMTEuMC4wIFJlbW92ZSB0aGlzIGNsYXNzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEZvY3VzVHJhcEZhY3Rvcnkge1xuICBwcml2YXRlIF9kb2N1bWVudDogRG9jdW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2hlY2tlcjogSW50ZXJhY3Rpdml0eUNoZWNrZXIsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgQEluamVjdChET0NVTUVOVCkgX2RvY3VtZW50OiBhbnkpIHtcblxuICAgIHRoaXMuX2RvY3VtZW50ID0gX2RvY3VtZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBmb2N1cy10cmFwcGVkIHJlZ2lvbiBhcm91bmQgdGhlIGdpdmVuIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IGFyb3VuZCB3aGljaCBmb2N1cyB3aWxsIGJlIHRyYXBwZWQuXG4gICAqIEBwYXJhbSBkZWZlckNhcHR1cmVFbGVtZW50cyBEZWZlcnMgdGhlIGNyZWF0aW9uIG9mIGZvY3VzLWNhcHR1cmluZyBlbGVtZW50cyB0byBiZSBkb25lXG4gICAqICAgICBtYW51YWxseSBieSB0aGUgdXNlci5cbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgZm9jdXMgdHJhcCBpbnN0YW5jZS5cbiAgICovXG4gIGNyZWF0ZShlbGVtZW50OiBIVE1MRWxlbWVudCwgZGVmZXJDYXB0dXJlRWxlbWVudHM6IGJvb2xlYW4gPSBmYWxzZSk6IEZvY3VzVHJhcCB7XG4gICAgcmV0dXJuIG5ldyBGb2N1c1RyYXAoXG4gICAgICBlbGVtZW50LCB0aGlzLl9jaGVja2VyLCB0aGlzLl9uZ1pvbmUsIHRoaXMuX2RvY3VtZW50LCBkZWZlckNhcHR1cmVFbGVtZW50cyk7XG4gIH1cbn1cblxuLyoqIERpcmVjdGl2ZSBmb3IgdHJhcHBpbmcgZm9jdXMgd2l0aGluIGEgcmVnaW9uLiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2ZvY3VzVHJhcF0nLFxuICBleHBvcnRBczogJ2ZvY3VzVHJhcCdcbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNUcmFwRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIERvQ2hlY2sge1xuICBwcml2YXRlIF9kb2N1bWVudDogRG9jdW1lbnQ7XG5cbiAgLyoqIFVuZGVybHlpbmcgRm9jdXNUcmFwIGluc3RhbmNlLiAqL1xuICBmb2N1c1RyYXA6IEZvY3VzVHJhcDtcblxuICAvKiogUHJldmlvdXNseSBmb2N1c2VkIGVsZW1lbnQgdG8gcmVzdG9yZSBmb2N1cyB0byB1cG9uIGRlc3Ryb3kgd2hlbiB1c2luZyBhdXRvQ2FwdHVyZS4gKi9cbiAgcHJpdmF0ZSBfcHJldmlvdXNseUZvY3VzZWRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBmb2N1cyB0cmFwIGlzIGFjdGl2ZS4gKi9cbiAgQElucHV0KCdjZGtUcmFwRm9jdXMnKVxuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mb2N1c1RyYXAuZW5hYmxlZDtcbiAgfVxuXG4gIHNldCBlbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5mb2N1c1RyYXAuZW5hYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGlyZWN0aXZlIHNob3VsZCBhdXRvbWF0aWNhbGx5IG1vdmUgZm9jdXMgaW50byB0aGUgdHJhcHBlZCByZWdpb24gdXBvblxuICAgKiBpbml0aWFsaXphdGlvbiBhbmQgcmV0dXJuIGZvY3VzIHRvIHRoZSBwcmV2aW91cyBhY3RpdmVFbGVtZW50IHVwb24gZGVzdHJ1Y3Rpb24uXG4gICAqL1xuICBASW5wdXQoJ2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlJylcbiAgZ2V0IGF1dG9DYXB0dXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hdXRvQ2FwdHVyZTtcbiAgfVxuXG4gIHNldCBhdXRvQ2FwdHVyZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2F1dG9DYXB0dXJlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2F1dG9DYXB0dXJlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBfZm9jdXNUcmFwRmFjdG9yeTogRm9jdXNUcmFwRmFjdG9yeSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBfZG9jdW1lbnQ6IGFueSkge1xuXG4gICAgdGhpcy5fZG9jdW1lbnQgPSBfZG9jdW1lbnQ7XG4gICAgdGhpcy5mb2N1c1RyYXAgPSB0aGlzLl9mb2N1c1RyYXBGYWN0b3J5LmNyZWF0ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHRydWUpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb2N1c1RyYXAuZGVzdHJveSgpO1xuXG4gICAgLy8gSWYgd2Ugc3RvcmVkIGEgcHJldmlvdXNseSBmb2N1c2VkIGVsZW1lbnQgd2hlbiB1c2luZyBhdXRvQ2FwdHVyZSwgcmV0dXJuIGZvY3VzIHRvIHRoYXRcbiAgICAvLyBlbGVtZW50IG5vdyB0aGF0IHRoZSB0cmFwcGVkIHJlZ2lvbiBpcyBiZWluZyBkZXN0cm95ZWQuXG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkge1xuICAgICAgdGhpcy5fcHJldmlvdXNseUZvY3VzZWRFbGVtZW50LmZvY3VzKCk7XG4gICAgICB0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLmZvY3VzVHJhcC5hdHRhY2hBbmNob3JzKCk7XG5cbiAgICBpZiAodGhpcy5hdXRvQ2FwdHVyZSkge1xuICAgICAgdGhpcy5fY2FwdHVyZUZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgbmdEb0NoZWNrKCkge1xuICAgIGlmICghdGhpcy5mb2N1c1RyYXAuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgdGhpcy5mb2N1c1RyYXAuYXR0YWNoQW5jaG9ycygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBhdXRvQ2FwdHVyZUNoYW5nZSA9IGNoYW5nZXNbJ2F1dG9DYXB0dXJlJ107XG5cbiAgICBpZiAoYXV0b0NhcHR1cmVDaGFuZ2UgJiYgIWF1dG9DYXB0dXJlQ2hhbmdlLmZpcnN0Q2hhbmdlICYmIHRoaXMuYXV0b0NhcHR1cmUgJiZcbiAgICAgIHRoaXMuZm9jdXNUcmFwLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgIHRoaXMuX2NhcHR1cmVGb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NhcHR1cmVGb2N1cygpIHtcbiAgICB0aGlzLl9wcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSB0aGlzLl9kb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgIHRoaXMuZm9jdXNUcmFwLmZvY3VzSW5pdGlhbEVsZW1lbnRXaGVuUmVhZHkoKTtcbiAgfVxuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9lbmFibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9hdXRvQ2FwdHVyZTogQm9vbGVhbklucHV0O1xufVxuIl19
|