ngx-bootstrap 3.1.2 → 3.3.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/CHANGELOG.md +236 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +8 -5
- package/accordion/package.json +1 -1
- package/alert/package.json +1 -1
- package/bundles/ngx-bootstrap.es2015.js +13985 -11505
- package/bundles/ngx-bootstrap.es2015.js.map +1 -1
- package/bundles/ngx-bootstrap.umd.js +2 -1
- package/bundles/ngx-bootstrap.umd.js.map +1 -1
- package/bundles/ngx-bootstrap.umd.min.js +1 -1
- package/buttons/package.json +1 -1
- package/carousel/package.json +1 -1
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js +217 -63
- package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -1
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +1 -1
- package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -1
- package/chronos/esm2015/i18n/ca.js +128 -0
- package/chronos/esm2015/i18n/lt.js +1 -1
- package/chronos/esm2015/i18n/pl.js +7 -1
- package/chronos/esm2015/index.js +2 -2
- package/chronos/esm2015/ngx-bootstrap-chronos.js +2 -2
- package/chronos/esm2015/public_api.js +3 -2
- package/chronos/esm2015/utils/date-compare.js +20 -1
- package/chronos/esm5/i18n/ca.js +128 -0
- package/chronos/esm5/i18n/lt.js +1 -1
- package/chronos/esm5/i18n/pl.js +7 -1
- package/chronos/esm5/index.js +2 -2
- package/chronos/esm5/ngx-bootstrap-chronos.js +2 -2
- package/chronos/esm5/public_api.js +3 -2
- package/chronos/esm5/utils/date-compare.js +20 -1
- package/chronos/fesm2015/ngx-bootstrap-chronos.js +223 -67
- package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -1
- package/chronos/fesm5/ngx-bootstrap-chronos.js +224 -67
- package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -1
- package/chronos/i18n/ca.d.ts +2 -0
- package/chronos/ngx-bootstrap-chronos.metadata.json +1 -1
- package/chronos/package.json +1 -1
- package/chronos/public_api.d.ts +2 -1
- package/chronos/utils/date-compare.d.ts +2 -0
- package/collapse/package.json +1 -1
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +11 -1
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -1
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +1 -1
- package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -1
- package/component-loader/component-loader.class.d.ts +1 -1
- package/component-loader/esm2015/component-loader.class.js +12 -2
- package/component-loader/esm2015/listen-options.model.js +3 -1
- package/component-loader/esm5/component-loader.class.js +12 -2
- package/component-loader/esm5/listen-options.model.js +3 -1
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +12 -2
- package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -1
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js +12 -2
- package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -1
- package/component-loader/listen-options.model.d.ts +1 -0
- package/component-loader/ngx-bootstrap-component-loader.metadata.json +1 -1
- package/component-loader/package.json +1 -1
- package/datepicker/base/bs-datepicker-container.d.ts +5 -1
- package/datepicker/bs-datepicker-inline.component.d.ts +48 -0
- package/datepicker/bs-datepicker-inline.config.d.ts +3 -0
- package/datepicker/bs-datepicker.component.d.ts +14 -0
- package/datepicker/bs-datepicker.config.d.ts +22 -1
- package/datepicker/bs-datepicker.css +56 -5
- package/datepicker/bs-datepicker.css.map +3 -3
- package/datepicker/bs-datepicker.module.d.ts +0 -1
- package/datepicker/bs-datepicker.scss +21 -8
- package/datepicker/bs-daterangepicker.component.d.ts +5 -0
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +2967 -2546
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -1
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +1 -1
- package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -1
- package/datepicker/engine/flag-days-calendar.d.ts +2 -0
- package/datepicker/engine/view-mode.d.ts +1 -1
- package/datepicker/esm2015/base/bs-datepicker-container.js +22 -1
- package/datepicker/esm2015/bs-datepicker-inline.component.js +179 -0
- package/datepicker/esm2015/bs-datepicker-inline.config.js +22 -0
- package/datepicker/esm2015/bs-datepicker-input.directive.js +2 -1
- package/datepicker/esm2015/bs-datepicker.component.js +34 -2
- package/datepicker/esm2015/bs-datepicker.config.js +28 -1
- package/datepicker/esm2015/bs-datepicker.module.js +10 -11
- package/datepicker/esm2015/bs-daterangepicker-input.directive.js +9 -4
- package/datepicker/esm2015/bs-daterangepicker.component.js +17 -2
- package/datepicker/esm2015/engine/flag-days-calendar.js +16 -6
- package/datepicker/esm2015/engine/view-mode.js +4 -3
- package/datepicker/esm2015/models/index.js +7 -1
- package/datepicker/esm2015/ngx-bootstrap-datepicker.js +19 -18
- package/datepicker/esm2015/public_api.js +11 -9
- package/datepicker/esm2015/reducer/bs-datepicker.actions.js +27 -1
- package/datepicker/esm2015/reducer/bs-datepicker.effects.js +25 -11
- package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +15 -5
- package/datepicker/esm2015/reducer/bs-datepicker.state.js +9 -1
- package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +5 -3
- package/datepicker/esm2015/themes/bs/bs-datepicker-day-decorator.directive.js +33 -2
- package/datepicker/esm2015/themes/bs/bs-datepicker-inline-container.component.js +50 -0
- package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +5 -3
- package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +71 -4
- package/datepicker/esm2015/utils/bs-calendar-utils.js +13 -2
- package/datepicker/esm5/base/bs-datepicker-container.js +34 -1
- package/datepicker/esm5/bs-datepicker-inline.component.js +196 -0
- package/datepicker/esm5/bs-datepicker-inline.config.js +29 -0
- package/datepicker/esm5/bs-datepicker-input.directive.js +2 -1
- package/datepicker/esm5/bs-datepicker.component.js +34 -2
- package/datepicker/esm5/bs-datepicker.config.js +28 -1
- package/datepicker/esm5/bs-datepicker.module.js +10 -7
- package/datepicker/esm5/bs-daterangepicker-input.directive.js +9 -4
- package/datepicker/esm5/bs-daterangepicker.component.js +17 -2
- package/datepicker/esm5/engine/flag-days-calendar.js +16 -6
- package/datepicker/esm5/engine/view-mode.js +4 -3
- package/datepicker/esm5/models/index.js +7 -1
- package/datepicker/esm5/ngx-bootstrap-datepicker.js +19 -18
- package/datepicker/esm5/public_api.js +11 -9
- package/datepicker/esm5/reducer/bs-datepicker.actions.js +35 -1
- package/datepicker/esm5/reducer/bs-datepicker.effects.js +33 -11
- package/datepicker/esm5/reducer/bs-datepicker.reducer.js +15 -5
- package/datepicker/esm5/reducer/bs-datepicker.state.js +9 -1
- package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +5 -3
- package/datepicker/esm5/themes/bs/bs-datepicker-day-decorator.directive.js +30 -3
- package/datepicker/esm5/themes/bs/bs-datepicker-inline-container.component.js +48 -0
- package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +5 -3
- package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +75 -3
- package/datepicker/esm5/utils/bs-calendar-utils.js +13 -2
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +3192 -2829
- package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -1
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js +3407 -2994
- package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -1
- package/datepicker/models/index.d.ts +3 -0
- package/datepicker/ngx-bootstrap-datepicker.d.ts +17 -16
- package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -1
- package/datepicker/package.json +1 -1
- package/datepicker/public_api.d.ts +11 -8
- package/datepicker/reducer/bs-datepicker.actions.d.ts +4 -0
- package/datepicker/reducer/bs-datepicker.effects.d.ts +4 -2
- package/datepicker/reducer/bs-datepicker.state.d.ts +4 -0
- package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +8 -1
- package/datepicker/themes/bs/bs-datepicker-inline-container.component.d.ts +9 -0
- package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +8 -1
- package/datepicker/utils/bs-calendar-utils.d.ts +1 -0
- package/datepicker/utils/scss/mixins.css.map +4 -2
- package/datepicker/utils/scss/mixins.scss +10 -0
- package/dropdown/bs-dropdown-container.component.d.ts +3 -0
- package/dropdown/bs-dropdown-toggle.directive.d.ts +3 -1
- package/dropdown/bs-dropdown.config.d.ts +2 -0
- package/dropdown/bs-dropdown.directive.d.ts +8 -2
- package/dropdown/bs-dropdown.state.d.ts +1 -0
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +62 -5
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -1
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +1 -1
- package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -1
- package/dropdown/esm2015/bs-dropdown-container.component.js +13 -2
- package/dropdown/esm2015/bs-dropdown-toggle.directive.js +10 -3
- package/dropdown/esm2015/bs-dropdown.config.js +10 -1
- package/dropdown/esm2015/bs-dropdown.directive.js +30 -3
- package/dropdown/esm2015/bs-dropdown.module.js +2 -2
- package/dropdown/esm2015/bs-dropdown.state.js +3 -1
- package/dropdown/esm5/bs-dropdown-container.component.js +19 -2
- package/dropdown/esm5/bs-dropdown-toggle.directive.js +9 -3
- package/dropdown/esm5/bs-dropdown.config.js +10 -1
- package/dropdown/esm5/bs-dropdown.directive.js +40 -3
- package/dropdown/esm5/bs-dropdown.module.js +2 -2
- package/dropdown/esm5/bs-dropdown.state.js +3 -1
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +49 -5
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -1
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js +64 -5
- package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -1
- package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -1
- package/dropdown/package.json +1 -1
- package/esm2015/ngx-bootstrap.js +2 -2
- package/esm2015/public_api.js +2 -2
- package/esm5/ngx-bootstrap.js +2 -2
- package/esm5/public_api.js +2 -2
- package/fesm2015/ngx-bootstrap.js +1 -1
- package/fesm5/ngx-bootstrap.js +1 -1
- package/locale/bundles/ngx-bootstrap-locale.umd.js +2 -1
- package/locale/bundles/ngx-bootstrap-locale.umd.js.map +1 -1
- package/locale/bundles/ngx-bootstrap-locale.umd.min.js +1 -1
- package/locale/esm2015/ngx-bootstrap-locale.js +2 -2
- package/locale/esm2015/public_api.js +2 -1
- package/locale/esm5/ngx-bootstrap-locale.js +2 -2
- package/locale/esm5/public_api.js +2 -1
- package/locale/fesm2015/ngx-bootstrap-locale.js +1 -1
- package/locale/fesm5/ngx-bootstrap-locale.js +1 -1
- package/locale/ngx-bootstrap-locale.metadata.json +1 -1
- package/locale/package.json +1 -1
- package/locale/public_api.d.ts +1 -0
- package/mini-ngrx/package.json +1 -1
- package/modal/bs-modal-ref.service.d.ts +4 -0
- package/modal/bundles/ngx-bootstrap-modal.umd.js +8 -1
- package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -1
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js +1 -1
- package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -1
- package/modal/esm2015/bs-modal-ref.service.js +10 -1
- package/modal/esm2015/bs-modal.service.js +4 -1
- package/modal/esm5/bs-modal-ref.service.js +10 -1
- package/modal/esm5/bs-modal.service.js +4 -1
- package/modal/fesm2015/ngx-bootstrap-modal.js +8 -1
- package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -1
- package/modal/fesm5/ngx-bootstrap-modal.js +8 -1
- package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -1
- package/modal/package.json +1 -1
- package/package.json +2 -2
- package/pagination/esm2015/models/index.js +1 -4
- package/pagination/esm5/models/index.js +1 -4
- package/pagination/models/index.d.ts +0 -1
- package/pagination/package.json +1 -1
- package/popover/bundles/ngx-bootstrap-popover.umd.js +3 -2
- package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -1
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js +1 -1
- package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -1
- package/popover/esm2015/popover-container.component.js +19 -8
- package/popover/esm5/popover-container.component.js +3 -2
- package/popover/fesm2015/ngx-bootstrap-popover.js +19 -8
- package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -1
- package/popover/fesm5/ngx-bootstrap-popover.js +3 -2
- package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -1
- package/popover/ngx-bootstrap-popover.metadata.json +1 -1
- package/popover/package.json +1 -1
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js +1192 -252
- package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -1
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +1 -1
- package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -1
- package/positioning/esm2015/models/index.js +44 -0
- package/positioning/esm2015/modifiers/arrow.js +54 -0
- package/positioning/esm2015/modifiers/flip.js +65 -0
- package/positioning/esm2015/modifiers/index.js +11 -0
- package/positioning/esm2015/modifiers/initData.js +34 -0
- package/positioning/esm2015/modifiers/preventOverflow.js +70 -0
- package/positioning/esm2015/modifiers/shift.js +29 -0
- package/positioning/esm2015/ng-positioning.js +19 -220
- package/positioning/esm2015/positioning.service.js +44 -4
- package/positioning/esm2015/utils/computeAutoPlacement.js +64 -0
- package/positioning/esm2015/utils/findCommonOffsetParent.js +47 -0
- package/positioning/esm2015/utils/getBordersSize.js +20 -0
- package/positioning/esm2015/utils/getBoundaries.js +66 -0
- package/positioning/esm2015/utils/getBoundingClientRect.js +61 -0
- package/positioning/esm2015/utils/getClientRect.js +13 -0
- package/positioning/esm2015/utils/getFixedPositionOffsetParent.js +26 -0
- package/positioning/esm2015/utils/getOffsetParent.js +37 -0
- package/positioning/esm2015/utils/getOffsetRectRelativeToArbitraryNode.js +62 -0
- package/positioning/esm2015/utils/getOffsets.js +20 -0
- package/positioning/esm2015/utils/getOppositePlacement.js +15 -0
- package/positioning/esm2015/utils/getOppositeVariation.js +20 -0
- package/positioning/esm2015/utils/getOuterSizes.js +21 -0
- package/positioning/esm2015/utils/getParentNode.js +17 -0
- package/positioning/esm2015/utils/getReferenceOffsets.js +21 -0
- package/positioning/esm2015/utils/getRoot.js +17 -0
- package/positioning/esm2015/utils/getScroll.js +22 -0
- package/positioning/esm2015/utils/getScrollParent.js +32 -0
- package/positioning/esm2015/utils/getStyleComputedProperty.js +21 -0
- package/positioning/esm2015/utils/getTargetOffsets.js +38 -0
- package/positioning/esm2015/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +29 -0
- package/positioning/esm2015/utils/getWindowSizes.js +34 -0
- package/positioning/esm2015/utils/includeScroll.js +23 -0
- package/positioning/esm2015/utils/index.js +28 -0
- package/positioning/esm2015/utils/isBrowser.js +7 -0
- package/positioning/esm2015/utils/isFixed.js +22 -0
- package/positioning/esm2015/utils/isIE.js +22 -0
- package/positioning/esm2015/utils/isNumeric.js +14 -0
- package/positioning/esm2015/utils/isOffsetContainer.js +18 -0
- package/positioning/esm2015/utils/setAllStyles.js +55 -0
- package/positioning/esm2015/utils/setStyles.js +28 -0
- package/positioning/esm5/models/index.js +44 -0
- package/positioning/esm5/modifiers/arrow.js +56 -0
- package/positioning/esm5/modifiers/flip.js +66 -0
- package/positioning/esm5/modifiers/index.js +11 -0
- package/positioning/esm5/modifiers/initData.js +34 -0
- package/positioning/esm5/modifiers/preventOverflow.js +73 -0
- package/positioning/esm5/modifiers/shift.js +31 -0
- package/positioning/esm5/ng-positioning.js +24 -247
- package/positioning/esm5/positioning.service.js +49 -5
- package/positioning/esm5/utils/computeAutoPlacement.js +72 -0
- package/positioning/esm5/utils/findCommonOffsetParent.js +47 -0
- package/positioning/esm5/utils/getBordersSize.js +20 -0
- package/positioning/esm5/utils/getBoundaries.js +68 -0
- package/positioning/esm5/utils/getBoundingClientRect.js +61 -0
- package/positioning/esm5/utils/getClientRect.js +14 -0
- package/positioning/esm5/utils/getFixedPositionOffsetParent.js +26 -0
- package/positioning/esm5/utils/getOffsetParent.js +37 -0
- package/positioning/esm5/utils/getOffsetRectRelativeToArbitraryNode.js +63 -0
- package/positioning/esm5/utils/getOffsets.js +20 -0
- package/positioning/esm5/utils/getOppositePlacement.js +15 -0
- package/positioning/esm5/utils/getOppositeVariation.js +20 -0
- package/positioning/esm5/utils/getOuterSizes.js +21 -0
- package/positioning/esm5/utils/getParentNode.js +17 -0
- package/positioning/esm5/utils/getReferenceOffsets.js +22 -0
- package/positioning/esm5/utils/getRoot.js +17 -0
- package/positioning/esm5/utils/getScroll.js +23 -0
- package/positioning/esm5/utils/getScrollParent.js +32 -0
- package/positioning/esm5/utils/getStyleComputedProperty.js +21 -0
- package/positioning/esm5/utils/getTargetOffsets.js +38 -0
- package/positioning/esm5/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +30 -0
- package/positioning/esm5/utils/getWindowSizes.js +34 -0
- package/positioning/esm5/utils/includeScroll.js +24 -0
- package/positioning/esm5/utils/index.js +28 -0
- package/positioning/esm5/utils/isBrowser.js +7 -0
- package/positioning/esm5/utils/isFixed.js +22 -0
- package/positioning/esm5/utils/isIE.js +22 -0
- package/positioning/esm5/utils/isNumeric.js +14 -0
- package/positioning/esm5/utils/isOffsetContainer.js +18 -0
- package/positioning/esm5/utils/setAllStyles.js +55 -0
- package/positioning/esm5/utils/setStyles.js +28 -0
- package/positioning/fesm2015/ngx-bootstrap-positioning.js +1108 -211
- package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -1
- package/positioning/fesm5/ngx-bootstrap-positioning.js +1148 -249
- package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -1
- package/positioning/models/index.d.ts +27 -0
- package/positioning/modifiers/arrow.d.ts +2 -0
- package/positioning/modifiers/flip.d.ts +2 -0
- package/positioning/modifiers/index.d.ts +5 -0
- package/positioning/modifiers/initData.d.ts +2 -0
- package/positioning/modifiers/preventOverflow.d.ts +2 -0
- package/positioning/modifiers/shift.d.ts +2 -0
- package/positioning/ng-positioning.d.ts +7 -10
- package/positioning/ngx-bootstrap-positioning.metadata.json +1 -1
- package/positioning/package.json +1 -1
- package/positioning/positioning.service.d.ts +7 -1
- package/positioning/utils/computeAutoPlacement.d.ts +2 -0
- package/positioning/utils/findCommonOffsetParent.d.ts +1 -0
- package/positioning/utils/getBordersSize.d.ts +4 -0
- package/positioning/utils/getBoundaries.d.ts +1 -0
- package/positioning/utils/getBoundingClientRect.d.ts +2 -0
- package/positioning/utils/getClientRect.d.ts +5 -0
- package/positioning/utils/getFixedPositionOffsetParent.d.ts +1 -0
- package/positioning/utils/getOffsetParent.d.ts +1 -0
- package/positioning/utils/getOffsetRectRelativeToArbitraryNode.d.ts +2 -0
- package/positioning/utils/getOffsets.d.ts +2 -0
- package/positioning/utils/getOppositePlacement.d.ts +4 -0
- package/positioning/utils/getOppositeVariation.d.ts +4 -0
- package/positioning/utils/getOuterSizes.d.ts +7 -0
- package/positioning/utils/getParentNode.d.ts +4 -0
- package/positioning/utils/getReferenceOffsets.d.ts +2 -0
- package/positioning/utils/getRoot.d.ts +4 -0
- package/positioning/utils/getScroll.d.ts +4 -0
- package/positioning/utils/getScrollParent.d.ts +1 -0
- package/positioning/utils/getStyleComputedProperty.d.ts +4 -0
- package/positioning/utils/getTargetOffsets.d.ts +2 -0
- package/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.d.ts +2 -0
- package/positioning/utils/getWindowSizes.d.ts +4 -0
- package/positioning/utils/includeScroll.d.ts +2 -0
- package/positioning/utils/index.d.ts +22 -0
- package/positioning/utils/isBrowser.d.ts +1 -0
- package/positioning/utils/isFixed.d.ts +1 -0
- package/positioning/utils/isIE.d.ts +1 -0
- package/positioning/utils/isNumeric.d.ts +4 -0
- package/positioning/utils/isOffsetContainer.d.ts +1 -0
- package/positioning/utils/setAllStyles.d.ts +6 -0
- package/positioning/utils/setStyles.d.ts +5 -0
- package/progressbar/package.json +1 -1
- package/rating/bundles/ngx-bootstrap-rating.umd.js +3 -1
- package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -1
- package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -1
- package/rating/esm2015/rating.component.js +3 -1
- package/rating/esm5/rating.component.js +3 -1
- package/rating/fesm2015/ngx-bootstrap-rating.js +3 -1
- package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -1
- package/rating/fesm5/ngx-bootstrap-rating.js +3 -1
- package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -1
- package/rating/package.json +1 -1
- package/schematics/ng-add/index.js +17 -9
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/index.spec.js +2 -3
- package/schematics/ng-add/index.spec.js.map +1 -1
- package/sortable/package.json +1 -1
- package/tabs/package.json +1 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +3 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +1 -1
- package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -1
- package/timepicker/esm2015/timepicker.component.js +5 -1
- package/timepicker/esm5/timepicker.component.js +5 -1
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +3 -1
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -1
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js +3 -1
- package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -1
- package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -1
- package/timepicker/package.json +1 -1
- package/timepicker/timepicker.component.d.ts +1 -0
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +15 -4
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -1
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +1 -1
- package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -1
- package/tooltip/esm2015/tooltip-container.component.js +15 -7
- package/tooltip/esm2015/tooltip.config.js +10 -1
- package/tooltip/esm2015/tooltip.directive.js +13 -4
- package/tooltip/esm5/tooltip-container.component.js +6 -2
- package/tooltip/esm5/tooltip.config.js +10 -1
- package/tooltip/esm5/tooltip.directive.js +13 -4
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +25 -10
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -1
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js +16 -5
- package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -1
- package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -1
- package/tooltip/package.json +1 -1
- package/tooltip/tooltip-container.component.d.ts +1 -0
- package/tooltip/tooltip.config.d.ts +2 -0
- package/tooltip/tooltip.directive.d.ts +2 -0
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +93 -35
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -1
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +1 -1
- package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -1
- package/typeahead/esm2015/ngx-bootstrap-typeahead.js +2 -2
- package/typeahead/esm2015/public_api.js +2 -1
- package/typeahead/esm2015/typeahead-container.component.js +15 -4
- package/typeahead/esm2015/typeahead.config.js +55 -0
- package/typeahead/esm2015/typeahead.directive.js +68 -32
- package/typeahead/esm2015/typeahead.module.js +3 -2
- package/typeahead/esm5/ngx-bootstrap-typeahead.js +2 -2
- package/typeahead/esm5/public_api.js +2 -1
- package/typeahead/esm5/typeahead-container.component.js +12 -4
- package/typeahead/esm5/typeahead.config.js +57 -0
- package/typeahead/esm5/typeahead.directive.js +69 -34
- package/typeahead/esm5/typeahead.module.js +3 -2
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +96 -36
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -1
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js +95 -38
- package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -1
- package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -1
- package/typeahead/package.json +1 -1
- package/typeahead/public_api.d.ts +1 -0
- package/typeahead/typeahead-container.component.d.ts +1 -1
- package/typeahead/typeahead.config.d.ts +11 -0
- package/typeahead/typeahead.directive.d.ts +14 -5
- package/utils/bundles/ngx-bootstrap-utils.umd.js +31 -11
- package/utils/bundles/ngx-bootstrap-utils.umd.js.map +1 -1
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js +1 -1
- package/utils/bundles/ngx-bootstrap-utils.umd.min.js.map +1 -1
- package/utils/esm2015/facade/browser.js +13 -14
- package/utils/esm2015/ngx-bootstrap-utils.js +2 -2
- package/utils/esm2015/public_api.js +2 -2
- package/utils/esm2015/triggers.js +23 -1
- package/utils/esm5/facade/browser.js +10 -11
- package/utils/esm5/ngx-bootstrap-utils.js +2 -2
- package/utils/esm5/public_api.js +2 -2
- package/utils/esm5/triggers.js +23 -1
- package/utils/facade/browser.d.ts +5 -5
- package/utils/fesm2015/ngx-bootstrap-utils.js +34 -15
- package/utils/fesm2015/ngx-bootstrap-utils.js.map +1 -1
- package/utils/fesm5/ngx-bootstrap-utils.js +31 -12
- package/utils/fesm5/ngx-bootstrap-utils.js.map +1 -1
- package/utils/ngx-bootstrap-utils.metadata.json +1 -1
- package/utils/package.json +1 -1
- package/utils/public_api.d.ts +1 -1
- package/utils/triggers.d.ts +2 -0
@@ -1,2 +1,2 @@
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("ngx-bootstrap/utils"),require("ngx-bootstrap/component-loader"),require("ngx-bootstrap/positioning")):"function"==typeof define&&define.amd?define("ngx-bootstrap/modal",["exports","@angular/core","ngx-bootstrap/utils","ngx-bootstrap/component-loader","ngx-bootstrap/positioning"],t):t((e["ngx-bootstrap"]=e["ngx-bootstrap"]||{},e["ngx-bootstrap"].modal={}),e.ng.core,e.utils,e.componentLoader,e.positioning)}(this,function(e,n,o,t,i){"use strict";var s=function(){function e(){this.hide=Function}return e.decorators=[{type:n.Injectable}],e}(),r=function v(e){this.animate=!0,Object.assign(this,e)},d=function(){function e(){}return e.decorators=[{type:n.Injectable}],e}(),a={backdrop:!0,keyboard:!0,focus:!0,show:!1,ignoreBackdropClick:!1,"class":"",animated:!0,initialState:{}},h={SCROLLBAR_MEASURER:"modal-scrollbar-measure",BACKDROP:"modal-backdrop",OPEN:"modal-open",FADE:"fade",IN:"in",SHOW:"show"},c=300,l=150,p="backdrop-click",m="esc",u=function(){function e(e,t,i){this._element=t,this._renderer=i,this.isShown=!1,this.isModalHiding=!1,this.config=Object.assign({},e)}return e.prototype.ngOnInit=function(){var e=this;this.isAnimated&&this._renderer.addClass(this._element.nativeElement,h.FADE),this._renderer.setStyle(this._element.nativeElement,"display","block"),setTimeout(function(){e.isShown=!0,e._renderer.addClass(e._element.nativeElement,o.isBs3()?h.IN:h.SHOW)},this.isAnimated?l:0),document&&document.body&&(1===this.bsModalService.getModalsCount()&&(this.bsModalService.checkScrollbar(),this.bsModalService.setScrollbar()),this._renderer.addClass(document.body,h.OPEN)),this._element.nativeElement&&this._element.nativeElement.focus()},e.prototype.onClick=function(e){this.config.ignoreBackdropClick||"static"===this.config.backdrop||e.target!==this._element.nativeElement||(this.bsModalService.setDismissReason(p),this.hide())},e.prototype.onEsc=function(e){this.isShown&&(27!==e.keyCode&&"Escape"!==e.key||e.preventDefault(),this.config.keyboard&&this.level===this.bsModalService.getModalsCount()&&(this.bsModalService.setDismissReason(m),this.hide()))},e.prototype.ngOnDestroy=function(){this.isShown&&this.hide()},e.prototype.hide=function(){var e=this;!this.isModalHiding&&this.isShown&&(this.isModalHiding=!0,this._renderer.removeClass(this._element.nativeElement,o.isBs3()?h.IN:h.SHOW),setTimeout(function(){e.isShown=!1,document&&document.body&&1===e.bsModalService.getModalsCount()&&e._renderer.removeClass(document.body,h.OPEN),e.bsModalService.hide(e.level),e.isModalHiding=!1},this.isAnimated?c:0))},e.decorators=[{type:n.Component,args:[{selector:"modal-container",template:"\n <div [class]=\"'modal-dialog' + (config.class ? ' ' + config.class : '')\" role=\"document\">\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n </div>\n ",host:{"class":"modal",role:"dialog",tabindex:"-1","[attr.aria-modal]":"true"}}]}],e.ctorParameters=function(){return[{type:d},{type:n.ElementRef},{type:n.Renderer2}]},e.propDecorators={onClick:[{type:n.HostListener,args:["click",["$event"]]}],onEsc:[{type:n.HostListener,args:["window:keydown.esc",["$event"]]}]},e}(),f=function(){function e(e,t){this._isShown=!1,this.element=e,this.renderer=t}return Object.defineProperty(e.prototype,"isAnimated",{get:function(){return this._isAnimated},set:function(e){this._isAnimated=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isShown",{get:function(){return this._isShown},set:function(e){(this._isShown=e)?this.renderer.addClass(this.element.nativeElement,""+h.IN):this.renderer.removeClass(this.element.nativeElement,""+h.IN),o.isBs3()||(e?this.renderer.addClass(this.element.nativeElement,""+h.SHOW):this.renderer.removeClass(this.element.nativeElement,""+h.SHOW))},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){this.isAnimated&&(this.renderer.addClass(this.element.nativeElement,""+h.FADE),o.Utils.reflow(this.element.nativeElement)),this.isShown=!0},e.decorators=[{type:n.Component,args:[{selector:"bs-modal-backdrop",template:" ",host:{"class":h.BACKDROP}}]}],e.ctorParameters=function(){return[{type:n.ElementRef},{type:n.Renderer2}]},e}(),y=function(){function e(e,t,i,o){this._element=e,this._renderer=i,this.onShow=new n.EventEmitter,this.onShown=new n.EventEmitter,this.onHide=new n.EventEmitter,this.onHidden=new n.EventEmitter,this._isShown=!1,this.isBodyOverflowing=!1,this.originalBodyPadding=0,this.scrollbarWidth=0,this.timerHideModal=0,this.timerRmBackDrop=0,this.isNested=!1,this._backdrop=o.createLoader(e,t,i)}return Object.defineProperty(e.prototype,"config",{get:function(){return this._config},set:function(e){this._config=this.getConfig(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isShown",{get:function(){return this._isShown},enumerable:!0,configurable:!0}),e.prototype.onClick=function(e){this.config.ignoreBackdropClick||"static"===this.config.backdrop||e.target!==this._element.nativeElement||(this.dismissReason=p,this.hide(e))},e.prototype.onEsc=function(e){this._isShown&&(27!==e.keyCode&&"Escape"!==e.key||e.preventDefault(),this.config.keyboard&&(this.dismissReason=m,this.hide()))},e.prototype.ngOnDestroy=function(){this.config=void 0,this._isShown&&(this._isShown=!1,this.hideModal(),this._backdrop.dispose())},e.prototype.ngOnInit=function(){var e=this;this._config=this._config||this.getConfig(),setTimeout(function(){e._config.show&&e.show()},0)},e.prototype.toggle=function(){return this._isShown?this.hide():this.show()},e.prototype.show=function(){var e=this;this.dismissReason=null,this.onShow.emit(this),this._isShown||(clearTimeout(this.timerHideModal),clearTimeout(this.timerRmBackDrop),this._isShown=!0,this.checkScrollbar(),this.setScrollbar(),o.document&&o.document.body&&(o.document.body.classList.contains(h.OPEN)?this.isNested=!0:this._renderer.addClass(o.document.body,h.OPEN)),this.showBackdrop(function(){e.showElement()}))},e.prototype.hide=function(e){var t=this;e&&e.preventDefault(),this.onHide.emit(this),this._isShown&&(o.window.clearTimeout(this.timerHideModal),o.window.clearTimeout(this.timerRmBackDrop),this._isShown=!1,this._renderer.removeClass(this._element.nativeElement,h.IN),o.isBs3()||this._renderer.removeClass(this._element.nativeElement,h.SHOW),this._config.animated?this.timerHideModal=o.window.setTimeout(function(){return t.hideModal()},300):this.hideModal())},e.prototype.getConfig=function(e){return Object.assign({},a,e)},e.prototype.showElement=function(){var e=this;this._element.nativeElement.parentNode&&this._element.nativeElement.parentNode.nodeType===Node.ELEMENT_NODE||o.document&&o.document.body&&o.document.body.appendChild(this._element.nativeElement),this._renderer.setAttribute(this._element.nativeElement,"aria-hidden","false"),this._renderer.setAttribute(this._element.nativeElement,"aria-modal","true"),this._renderer.setStyle(this._element.nativeElement,"display","block"),this._renderer.setProperty(this._element.nativeElement,"scrollTop",0),this._config.animated&&o.Utils.reflow(this._element.nativeElement),this._renderer.addClass(this._element.nativeElement,h.IN),o.isBs3()||this._renderer.addClass(this._element.nativeElement,h.SHOW);var t=function(){e._config.focus&&e._element.nativeElement.focus(),e.onShown.emit(e)};this._config.animated?setTimeout(t,300):t()},e.prototype.hideModal=function(){var e=this;this._renderer.setAttribute(this._element.nativeElement,"aria-hidden","true"),this._renderer.setStyle(this._element.nativeElement,"display","none"),this.showBackdrop(function(){e.isNested||(o.document&&o.document.body&&e._renderer.removeClass(o.document.body,h.OPEN),e.resetScrollbar()),e.resetAdjustments(),e.focusOtherModal(),e.onHidden.emit(e)})},e.prototype.showBackdrop=function(e){var t=this;if(!this._isShown||!this.config.backdrop||this.backdrop&&this.backdrop.instance.isShown)if(!this._isShown&&this.backdrop){this.backdrop.instance.isShown=!1;var i=function(){t.removeBackdrop(),e&&e()};this.backdrop.instance.isAnimated?this.timerRmBackDrop=o.window.setTimeout(i,150):i()}else e&&e();else{if(this.removeBackdrop(),this._backdrop.attach(f).to("body").show({isAnimated:this._config.animated}),this.backdrop=this._backdrop._componentRef,!e)return;if(!this._config.animated)return void e();setTimeout(e,150)}},e.prototype.removeBackdrop=function(){this._backdrop.hide()},e.prototype.focusOtherModal=function(){if(null!=this._element.nativeElement.parentElement){var e=this._element.nativeElement.parentElement.querySelectorAll(".in[bsModal]");e.length&&e[e.length-1].focus()}},e.prototype.resetAdjustments=function(){this._renderer.setStyle(this._element.nativeElement,"paddingLeft",""),this._renderer.setStyle(this._element.nativeElement,"paddingRight","")},e.prototype.checkScrollbar=function(){this.isBodyOverflowing=o.document.body.clientWidth<o.window.innerWidth,this.scrollbarWidth=this.getScrollbarWidth()},e.prototype.setScrollbar=function(){o.document&&(this.originalBodyPadding=parseInt(o.window.getComputedStyle(o.document.body).getPropertyValue("padding-right")||0,10),this.isBodyOverflowing&&(o.document.body.style.paddingRight=this.originalBodyPadding+this.scrollbarWidth+"px"))},e.prototype.resetScrollbar=function(){o.document.body.style.paddingRight=this.originalBodyPadding+"px"},e.prototype.getScrollbarWidth=function(){var e=this._renderer.createElement("div");this._renderer.addClass(e,h.SCROLLBAR_MEASURER),this._renderer.appendChild(o.document.body,e);var t=e.offsetWidth-e.clientWidth;return this._renderer.removeChild(o.document.body,e),t},e.decorators=[{type:n.Directive,args:[{selector:"[bsModal]",exportAs:"bs-modal"}]}],e.ctorParameters=function(){return[{type:n.ElementRef},{type:n.ViewContainerRef},{type:n.Renderer2},{type:t.ComponentLoaderFactory}]},e.propDecorators={config:[{type:n.Input}],onShow:[{type:n.Output}],onShown:[{type:n.Output}],onHide:[{type:n.Output}],onHidden:[{type:n.Output}],onClick:[{type:n.HostListener,args:["click",["$event"]]}],onEsc:[{type:n.HostListener,args:["keydown.esc",["$event"]]}]},e}(),g=function(){function e(e,t){this.clf=t,this.config=a,this.onShow=new n.EventEmitter,this.onShown=new n.EventEmitter,this.onHide=new n.EventEmitter,this.onHidden=new n.EventEmitter,this.isBodyOverflowing=!1,this.originalBodyPadding=0,this.scrollbarWidth=0,this.modalsCount=0,this.lastDismissReason="",this.loaders=[],this._backdropLoader=this.clf.createLoader(null,null,null),this._renderer=e.createRenderer(null,null)}return e.prototype.show=function(e,t){return this.modalsCount++,this._createLoaders(),this.config=Object.assign({},a,t),this._showBackdrop(),this.lastDismissReason=null,this._showModal(e)},e.prototype.hide=function(e){var t=this;1===this.modalsCount&&(this._hideBackdrop(),this.resetScrollbar()),this.modalsCount=1<=this.modalsCount?this.modalsCount-1:0,setTimeout(function(){t._hideModal(e),t.removeLoaders(e)},this.config.animated?l:0)},e.prototype._showBackdrop=function(){var e=this.config.backdrop||"static"===this.config.backdrop,t=!this.backdropRef||!this.backdropRef.instance.isShown;1===this.modalsCount&&(this.removeBackdrop(),e&&t&&(this._backdropLoader.attach(f).to("body").show({isAnimated:this.config.animated}),this.backdropRef=this._backdropLoader._componentRef))},e.prototype._hideBackdrop=function(){var e=this;if(this.backdropRef){this.backdropRef.instance.isShown=!1;var t=this.config.animated?l:0;setTimeout(function(){return e.removeBackdrop()},t)}},e.prototype._showModal=function(e){var t=this.loaders[this.loaders.length-1],i=new s,o=t.provide({provide:d,useValue:this.config}).provide({provide:s,useValue:i}).attach(u).to("body").show({content:e,isAnimated:this.config.animated,initialState:this.config.initialState,bsModalService:this});return o.instance.level=this.getModalsCount(),i.hide=function(){o.instance.hide()},i.content=t.getInnerComponent()||null,i},e.prototype._hideModal=function(e){var t=this.loaders[e-1];t&&t.hide()},e.prototype.getModalsCount=function(){return this.modalsCount},e.prototype.setDismissReason=function(e){this.lastDismissReason=e},e.prototype.removeBackdrop=function(){this._backdropLoader.hide(),this.backdropRef=null},e.prototype.checkScrollbar=function(){this.isBodyOverflowing=document.body.clientWidth<window.innerWidth,this.scrollbarWidth=this.getScrollbarWidth()},e.prototype.setScrollbar=function(){document&&(this.originalBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")||"0",10),this.isBodyOverflowing&&(document.body.style.paddingRight=this.originalBodyPadding+this.scrollbarWidth+"px"))},e.prototype.resetScrollbar=function(){document.body.style.paddingRight=this.originalBodyPadding+"px"},e.prototype.getScrollbarWidth=function(){var e=this._renderer.createElement("div");this._renderer.addClass(e,h.SCROLLBAR_MEASURER),this._renderer.appendChild(document.body,e);var t=e.offsetWidth-e.clientWidth;return this._renderer.removeChild(document.body,e),t},e.prototype._createLoaders=function(){var e=this.clf.createLoader(null,null,null);this.copyEvent(e.onBeforeShow,this.onShow),this.copyEvent(e.onShown,this.onShown),this.copyEvent(e.onBeforeHide,this.onHide),this.copyEvent(e.onHidden,this.onHidden),this.loaders.push(e)},e.prototype.removeLoaders=function(e){this.loaders.splice(e-1,1),this.loaders.forEach(function(e,t){e.instance.level=t+1})},e.prototype.copyEvent=function(e,t){var i=this;e.subscribe(function(){t.emit(i.lastDismissReason)})},e.decorators=[{type:n.Injectable}],e.ctorParameters=function(){return[{type:n.RendererFactory2},{type:t.ComponentLoaderFactory}]},e}(),b=function(){function e(){}return e.forRoot=function(){return{ngModule:e,providers:[g,t.ComponentLoaderFactory,i.PositioningService]}},e.decorators=[{type:n.NgModule,args:[{declarations:[f,y,u],exports:[f,y],entryComponents:[f,u]}]}],e}();e.BsModalRef=s,e.ModalBackdropOptions=r,e.ModalContainerComponent=u,e.ModalBackdropComponent=f,e.ModalOptions=d,e.ModalDirective=y,e.ModalModule=b,e.BsModalService=g,e.ɵa=h,Object.defineProperty(e,"__esModule",{value:!0})});
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("ngx-bootstrap/utils"),require("ngx-bootstrap/component-loader"),require("ngx-bootstrap/positioning")):"function"==typeof define&&define.amd?define("ngx-bootstrap/modal",["exports","@angular/core","ngx-bootstrap/utils","ngx-bootstrap/component-loader","ngx-bootstrap/positioning"],t):t((e["ngx-bootstrap"]=e["ngx-bootstrap"]||{},e["ngx-bootstrap"].modal={}),e.ng.core,e.utils,e.componentLoader,e.positioning)}(this,function(e,n,o,t,i){"use strict";var s=function(){function e(){this.hide=Function,this.setClass=Function}return e.decorators=[{type:n.Injectable}],e}(),r=function v(e){this.animate=!0,Object.assign(this,e)},d=function(){function e(){}return e.decorators=[{type:n.Injectable}],e}(),a={backdrop:!0,keyboard:!0,focus:!0,show:!1,ignoreBackdropClick:!1,"class":"",animated:!0,initialState:{}},h={SCROLLBAR_MEASURER:"modal-scrollbar-measure",BACKDROP:"modal-backdrop",OPEN:"modal-open",FADE:"fade",IN:"in",SHOW:"show"},c=300,l=150,p="backdrop-click",m="esc",u=function(){function e(e,t,i){this._element=t,this._renderer=i,this.isShown=!1,this.isModalHiding=!1,this.config=Object.assign({},e)}return e.prototype.ngOnInit=function(){var e=this;this.isAnimated&&this._renderer.addClass(this._element.nativeElement,h.FADE),this._renderer.setStyle(this._element.nativeElement,"display","block"),setTimeout(function(){e.isShown=!0,e._renderer.addClass(e._element.nativeElement,o.isBs3()?h.IN:h.SHOW)},this.isAnimated?l:0),document&&document.body&&(1===this.bsModalService.getModalsCount()&&(this.bsModalService.checkScrollbar(),this.bsModalService.setScrollbar()),this._renderer.addClass(document.body,h.OPEN)),this._element.nativeElement&&this._element.nativeElement.focus()},e.prototype.onClick=function(e){this.config.ignoreBackdropClick||"static"===this.config.backdrop||e.target!==this._element.nativeElement||(this.bsModalService.setDismissReason(p),this.hide())},e.prototype.onEsc=function(e){this.isShown&&(27!==e.keyCode&&"Escape"!==e.key||e.preventDefault(),this.config.keyboard&&this.level===this.bsModalService.getModalsCount()&&(this.bsModalService.setDismissReason(m),this.hide()))},e.prototype.ngOnDestroy=function(){this.isShown&&this.hide()},e.prototype.hide=function(){var e=this;!this.isModalHiding&&this.isShown&&(this.isModalHiding=!0,this._renderer.removeClass(this._element.nativeElement,o.isBs3()?h.IN:h.SHOW),setTimeout(function(){e.isShown=!1,document&&document.body&&1===e.bsModalService.getModalsCount()&&e._renderer.removeClass(document.body,h.OPEN),e.bsModalService.hide(e.level),e.isModalHiding=!1},this.isAnimated?c:0))},e.decorators=[{type:n.Component,args:[{selector:"modal-container",template:"\n <div [class]=\"'modal-dialog' + (config.class ? ' ' + config.class : '')\" role=\"document\">\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n </div>\n ",host:{"class":"modal",role:"dialog",tabindex:"-1","[attr.aria-modal]":"true"}}]}],e.ctorParameters=function(){return[{type:d},{type:n.ElementRef},{type:n.Renderer2}]},e.propDecorators={onClick:[{type:n.HostListener,args:["click",["$event"]]}],onEsc:[{type:n.HostListener,args:["window:keydown.esc",["$event"]]}]},e}(),f=function(){function e(e,t){this._isShown=!1,this.element=e,this.renderer=t}return Object.defineProperty(e.prototype,"isAnimated",{get:function(){return this._isAnimated},set:function(e){this._isAnimated=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isShown",{get:function(){return this._isShown},set:function(e){(this._isShown=e)?this.renderer.addClass(this.element.nativeElement,""+h.IN):this.renderer.removeClass(this.element.nativeElement,""+h.IN),o.isBs3()||(e?this.renderer.addClass(this.element.nativeElement,""+h.SHOW):this.renderer.removeClass(this.element.nativeElement,""+h.SHOW))},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){this.isAnimated&&(this.renderer.addClass(this.element.nativeElement,""+h.FADE),o.Utils.reflow(this.element.nativeElement)),this.isShown=!0},e.decorators=[{type:n.Component,args:[{selector:"bs-modal-backdrop",template:" ",host:{"class":h.BACKDROP}}]}],e.ctorParameters=function(){return[{type:n.ElementRef},{type:n.Renderer2}]},e}(),y=function(){function e(e,t,i,o){this._element=e,this._renderer=i,this.onShow=new n.EventEmitter,this.onShown=new n.EventEmitter,this.onHide=new n.EventEmitter,this.onHidden=new n.EventEmitter,this._isShown=!1,this.isBodyOverflowing=!1,this.originalBodyPadding=0,this.scrollbarWidth=0,this.timerHideModal=0,this.timerRmBackDrop=0,this.isNested=!1,this._backdrop=o.createLoader(e,t,i)}return Object.defineProperty(e.prototype,"config",{get:function(){return this._config},set:function(e){this._config=this.getConfig(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isShown",{get:function(){return this._isShown},enumerable:!0,configurable:!0}),e.prototype.onClick=function(e){this.config.ignoreBackdropClick||"static"===this.config.backdrop||e.target!==this._element.nativeElement||(this.dismissReason=p,this.hide(e))},e.prototype.onEsc=function(e){this._isShown&&(27!==e.keyCode&&"Escape"!==e.key||e.preventDefault(),this.config.keyboard&&(this.dismissReason=m,this.hide()))},e.prototype.ngOnDestroy=function(){this.config=void 0,this._isShown&&(this._isShown=!1,this.hideModal(),this._backdrop.dispose())},e.prototype.ngOnInit=function(){var e=this;this._config=this._config||this.getConfig(),setTimeout(function(){e._config.show&&e.show()},0)},e.prototype.toggle=function(){return this._isShown?this.hide():this.show()},e.prototype.show=function(){var e=this;this.dismissReason=null,this.onShow.emit(this),this._isShown||(clearTimeout(this.timerHideModal),clearTimeout(this.timerRmBackDrop),this._isShown=!0,this.checkScrollbar(),this.setScrollbar(),o.document&&o.document.body&&(o.document.body.classList.contains(h.OPEN)?this.isNested=!0:this._renderer.addClass(o.document.body,h.OPEN)),this.showBackdrop(function(){e.showElement()}))},e.prototype.hide=function(e){var t=this;e&&e.preventDefault(),this.onHide.emit(this),this._isShown&&(o.window.clearTimeout(this.timerHideModal),o.window.clearTimeout(this.timerRmBackDrop),this._isShown=!1,this._renderer.removeClass(this._element.nativeElement,h.IN),o.isBs3()||this._renderer.removeClass(this._element.nativeElement,h.SHOW),this._config.animated?this.timerHideModal=o.window.setTimeout(function(){return t.hideModal()},300):this.hideModal())},e.prototype.getConfig=function(e){return Object.assign({},a,e)},e.prototype.showElement=function(){var e=this;this._element.nativeElement.parentNode&&this._element.nativeElement.parentNode.nodeType===Node.ELEMENT_NODE||o.document&&o.document.body&&o.document.body.appendChild(this._element.nativeElement),this._renderer.setAttribute(this._element.nativeElement,"aria-hidden","false"),this._renderer.setAttribute(this._element.nativeElement,"aria-modal","true"),this._renderer.setStyle(this._element.nativeElement,"display","block"),this._renderer.setProperty(this._element.nativeElement,"scrollTop",0),this._config.animated&&o.Utils.reflow(this._element.nativeElement),this._renderer.addClass(this._element.nativeElement,h.IN),o.isBs3()||this._renderer.addClass(this._element.nativeElement,h.SHOW);var t=function(){e._config.focus&&e._element.nativeElement.focus(),e.onShown.emit(e)};this._config.animated?setTimeout(t,300):t()},e.prototype.hideModal=function(){var e=this;this._renderer.setAttribute(this._element.nativeElement,"aria-hidden","true"),this._renderer.setStyle(this._element.nativeElement,"display","none"),this.showBackdrop(function(){e.isNested||(o.document&&o.document.body&&e._renderer.removeClass(o.document.body,h.OPEN),e.resetScrollbar()),e.resetAdjustments(),e.focusOtherModal(),e.onHidden.emit(e)})},e.prototype.showBackdrop=function(e){var t=this;if(!this._isShown||!this.config.backdrop||this.backdrop&&this.backdrop.instance.isShown)if(!this._isShown&&this.backdrop){this.backdrop.instance.isShown=!1;var i=function(){t.removeBackdrop(),e&&e()};this.backdrop.instance.isAnimated?this.timerRmBackDrop=o.window.setTimeout(i,150):i()}else e&&e();else{if(this.removeBackdrop(),this._backdrop.attach(f).to("body").show({isAnimated:this._config.animated}),this.backdrop=this._backdrop._componentRef,!e)return;if(!this._config.animated)return void e();setTimeout(e,150)}},e.prototype.removeBackdrop=function(){this._backdrop.hide()},e.prototype.focusOtherModal=function(){if(null!=this._element.nativeElement.parentElement){var e=this._element.nativeElement.parentElement.querySelectorAll(".in[bsModal]");e.length&&e[e.length-1].focus()}},e.prototype.resetAdjustments=function(){this._renderer.setStyle(this._element.nativeElement,"paddingLeft",""),this._renderer.setStyle(this._element.nativeElement,"paddingRight","")},e.prototype.checkScrollbar=function(){this.isBodyOverflowing=o.document.body.clientWidth<o.window.innerWidth,this.scrollbarWidth=this.getScrollbarWidth()},e.prototype.setScrollbar=function(){o.document&&(this.originalBodyPadding=parseInt(o.window.getComputedStyle(o.document.body).getPropertyValue("padding-right")||0,10),this.isBodyOverflowing&&(o.document.body.style.paddingRight=this.originalBodyPadding+this.scrollbarWidth+"px"))},e.prototype.resetScrollbar=function(){o.document.body.style.paddingRight=this.originalBodyPadding+"px"},e.prototype.getScrollbarWidth=function(){var e=this._renderer.createElement("div");this._renderer.addClass(e,h.SCROLLBAR_MEASURER),this._renderer.appendChild(o.document.body,e);var t=e.offsetWidth-e.clientWidth;return this._renderer.removeChild(o.document.body,e),t},e.decorators=[{type:n.Directive,args:[{selector:"[bsModal]",exportAs:"bs-modal"}]}],e.ctorParameters=function(){return[{type:n.ElementRef},{type:n.ViewContainerRef},{type:n.Renderer2},{type:t.ComponentLoaderFactory}]},e.propDecorators={config:[{type:n.Input}],onShow:[{type:n.Output}],onShown:[{type:n.Output}],onHide:[{type:n.Output}],onHidden:[{type:n.Output}],onClick:[{type:n.HostListener,args:["click",["$event"]]}],onEsc:[{type:n.HostListener,args:["keydown.esc",["$event"]]}]},e}(),g=function(){function e(e,t){this.clf=t,this.config=a,this.onShow=new n.EventEmitter,this.onShown=new n.EventEmitter,this.onHide=new n.EventEmitter,this.onHidden=new n.EventEmitter,this.isBodyOverflowing=!1,this.originalBodyPadding=0,this.scrollbarWidth=0,this.modalsCount=0,this.lastDismissReason="",this.loaders=[],this._backdropLoader=this.clf.createLoader(null,null,null),this._renderer=e.createRenderer(null,null)}return e.prototype.show=function(e,t){return this.modalsCount++,this._createLoaders(),this.config=Object.assign({},a,t),this._showBackdrop(),this.lastDismissReason=null,this._showModal(e)},e.prototype.hide=function(e){var t=this;1===this.modalsCount&&(this._hideBackdrop(),this.resetScrollbar()),this.modalsCount=1<=this.modalsCount?this.modalsCount-1:0,setTimeout(function(){t._hideModal(e),t.removeLoaders(e)},this.config.animated?l:0)},e.prototype._showBackdrop=function(){var e=this.config.backdrop||"static"===this.config.backdrop,t=!this.backdropRef||!this.backdropRef.instance.isShown;1===this.modalsCount&&(this.removeBackdrop(),e&&t&&(this._backdropLoader.attach(f).to("body").show({isAnimated:this.config.animated}),this.backdropRef=this._backdropLoader._componentRef))},e.prototype._hideBackdrop=function(){var e=this;if(this.backdropRef){this.backdropRef.instance.isShown=!1;var t=this.config.animated?l:0;setTimeout(function(){return e.removeBackdrop()},t)}},e.prototype._showModal=function(e){var t=this.loaders[this.loaders.length-1],i=new s,o=t.provide({provide:d,useValue:this.config}).provide({provide:s,useValue:i}).attach(u).to("body").show({content:e,isAnimated:this.config.animated,initialState:this.config.initialState,bsModalService:this});return o.instance.level=this.getModalsCount(),i.hide=function(){o.instance.hide()},i.content=t.getInnerComponent()||null,i.setClass=function(e){o.instance.config["class"]=e},i},e.prototype._hideModal=function(e){var t=this.loaders[e-1];t&&t.hide()},e.prototype.getModalsCount=function(){return this.modalsCount},e.prototype.setDismissReason=function(e){this.lastDismissReason=e},e.prototype.removeBackdrop=function(){this._backdropLoader.hide(),this.backdropRef=null},e.prototype.checkScrollbar=function(){this.isBodyOverflowing=document.body.clientWidth<window.innerWidth,this.scrollbarWidth=this.getScrollbarWidth()},e.prototype.setScrollbar=function(){document&&(this.originalBodyPadding=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right")||"0",10),this.isBodyOverflowing&&(document.body.style.paddingRight=this.originalBodyPadding+this.scrollbarWidth+"px"))},e.prototype.resetScrollbar=function(){document.body.style.paddingRight=this.originalBodyPadding+"px"},e.prototype.getScrollbarWidth=function(){var e=this._renderer.createElement("div");this._renderer.addClass(e,h.SCROLLBAR_MEASURER),this._renderer.appendChild(document.body,e);var t=e.offsetWidth-e.clientWidth;return this._renderer.removeChild(document.body,e),t},e.prototype._createLoaders=function(){var e=this.clf.createLoader(null,null,null);this.copyEvent(e.onBeforeShow,this.onShow),this.copyEvent(e.onShown,this.onShown),this.copyEvent(e.onBeforeHide,this.onHide),this.copyEvent(e.onHidden,this.onHidden),this.loaders.push(e)},e.prototype.removeLoaders=function(e){this.loaders.splice(e-1,1),this.loaders.forEach(function(e,t){e.instance.level=t+1})},e.prototype.copyEvent=function(e,t){var i=this;e.subscribe(function(){t.emit(i.lastDismissReason)})},e.decorators=[{type:n.Injectable}],e.ctorParameters=function(){return[{type:n.RendererFactory2},{type:t.ComponentLoaderFactory}]},e}(),b=function(){function e(){}return e.forRoot=function(){return{ngModule:e,providers:[g,t.ComponentLoaderFactory,i.PositioningService]}},e.decorators=[{type:n.NgModule,args:[{declarations:[f,y,u],exports:[f,y],entryComponents:[f,u]}]}],e}();e.BsModalRef=s,e.ModalBackdropOptions=r,e.ModalContainerComponent=u,e.ModalBackdropComponent=f,e.ModalOptions=d,e.ModalDirective=y,e.ModalModule=b,e.BsModalService=g,e.ɵa=h,Object.defineProperty(e,"__esModule",{value:!0})});
|
2
2
|
//# sourceMappingURL=ngx-bootstrap-modal.umd.min.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["ng://ngx-bootstrap/modal/bs-modal-ref.service.ts","ng://ngx-bootstrap/modal/modal-backdrop.options.ts","ng://ngx-bootstrap/modal/modal-options.class.ts","ng://ngx-bootstrap/modal/modal-container.component.ts","ng://ngx-bootstrap/modal/modal-backdrop.component.ts","ng://ngx-bootstrap/modal/modal.directive.ts","ng://ngx-bootstrap/modal/bs-modal.service.ts","ng://ngx-bootstrap/modal/modal.module.ts"],"names":["BsModalRef","Function","Injectable","ModalBackdropOptions","options","Object","assign","this","ModalOptions","modalConfigDefaults","backdrop","keyboard","focus","show","ignoreBackdropClick","class","animated","initialState","CLASS_NAME","SCROLLBAR_MEASURER","BACKDROP","OPEN","FADE","IN","SHOW","TRANSITION_DURATIONS","DISMISS_REASONS","ModalContainerComponent","_element","_renderer","config","prototype","ngOnInit","_this","isAnimated","addClass","nativeElement","setStyle","setTimeout","isShown","isBs3","document","body","bsModalService","getModalsCount","checkScrollbar","setScrollbar","onClick","event","target","setDismissReason","hide","onEsc","keyCode","key","preventDefault","level","ngOnDestroy","isModalHiding","removeClass","Component","args","selector","template","host","role","tabindex","[attr.aria-modal]","ElementRef","Renderer2","HostListener","ModalBackdropComponent","element","renderer","defineProperty","_isAnimated","value","_isShown","Utils","reflow","ModalDirective","_viewContainerRef","clf","EventEmitter","_backdrop","createLoader","_config","conf","getConfig","dismissReason","hideModal","dispose","toggle","onShow","emit","clearTimeout","timerHideModal","timerRmBackDrop","classList","contains","isNested","showBackdrop","showElement","onHide","window","parentNode","nodeType","Node","ELEMENT_NODE","appendChild","setAttribute","setProperty","transitionComplete","onShown","resetScrollbar","resetAdjustments","focusOtherModal","onHidden","callback","instance","callbackRemove","removeBackdrop","attach","to","_componentRef","parentElement","otherOpenedModals","querySelectorAll","length","isBodyOverflowing","clientWidth","innerWidth","scrollbarWidth","getScrollbarWidth","originalBodyPadding","parseInt","getComputedStyle","getPropertyValue","style","paddingRight","scrollDiv","createElement","offsetWidth","removeChild","Directive","exportAs","ViewContainerRef","ComponentLoaderFactory","Input","Output","BsModalService","rendererFactory","_backdropLoader","createRenderer","content","modalsCount","_createLoaders","_showBackdrop","lastDismissReason","_showModal","_hideBackdrop","_hideModal","removeLoaders","isBackdropEnabled","isBackdropInDOM","backdropRef","duration","modalLoader","loaders","bsModalRef","modalContainerRef","provide","useValue","getInnerComponent","reason","loader","copyEvent","onBeforeShow","onBeforeHide","push","splice","forEach","i","from","subscribe","RendererFactory2","ModalModule","forRoot","ngModule","providers","PositioningService","NgModule","declarations","exports","entryComponents"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class BsModalRef {\n /**\n * Reference to a component inside the modal. Null if modal's been created with TemplateRef\n */\n // tslint:disable-next-line:no-any\n content?: any | null;\n\n /**\n * Hides the modal\n */\n hide: () => void = Function;\n}\n","export class ModalBackdropOptions {\n animate = true;\n\n constructor(options: ModalBackdropOptions) {\n Object.assign(this, options);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ClassName, DismissReasons, Selector, TransitionDurations } from './models';\n\n@Injectable()\nexport class ModalOptions {\n /**\n * Includes a modal-backdrop element. Alternatively,\n * specify static for a backdrop which doesn't close the modal on click.\n */\n backdrop?: boolean | 'static';\n /**\n * Closes the modal when escape key is pressed.\n */\n keyboard?: boolean;\n\n focus?: boolean;\n /**\n * Shows the modal when initialized.\n */\n show?: boolean;\n /**\n * Ignore the backdrop click\n */\n ignoreBackdropClick?: boolean;\n /**\n * Css class for opened modal\n */\n class?: string;\n /**\n * Toggle animation\n */\n animated?: boolean;\n /**\n * Modal data\n */\n initialState?: Object;\n}\n\n\nexport const modalConfigDefaults: ModalOptions = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: false,\n ignoreBackdropClick: false,\n class: '',\n animated: true,\n initialState: {}\n};\n\nexport const CLASS_NAME: ClassName = {\n SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n BACKDROP: 'modal-backdrop',\n OPEN: 'modal-open',\n FADE: 'fade',\n IN: 'in', // bs3\n SHOW: 'show' // bs4\n};\n\nexport const SELECTOR: Selector = {\n DIALOG: '.modal-dialog',\n DATA_TOGGLE: '[data-toggle=\"modal\"]',\n DATA_DISMISS: '[data-dismiss=\"modal\"]',\n FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed'\n};\n\nexport const TRANSITION_DURATIONS: TransitionDurations = {\n MODAL: 300,\n BACKDROP: 150\n};\n\nexport const DISMISS_REASONS: DismissReasons = {\n BACKRDOP: 'backdrop-click',\n ESC: 'esc'\n};\n","import {\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport {\n CLASS_NAME,\n DISMISS_REASONS,\n ModalOptions,\n TRANSITION_DURATIONS\n} from './modal-options.class';\nimport { BsModalService } from './bs-modal.service';\nimport { isBs3 } from 'ngx-bootstrap/utils';\n\n@Component({\n selector: 'modal-container',\n template: `\n <div [class]=\"'modal-dialog' + (config.class ? ' ' + config.class : '')\" role=\"document\">\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n host: {\n class: 'modal',\n role: 'dialog',\n tabindex: '-1',\n '[attr.aria-modal]': 'true'\n }\n})\nexport class ModalContainerComponent implements OnInit, OnDestroy {\n config: ModalOptions;\n isShown = false;\n level: number;\n isAnimated: boolean;\n bsModalService: BsModalService;\n private isModalHiding = false;\n\n constructor(options: ModalOptions,\n protected _element: ElementRef,\n private _renderer: Renderer2) {\n this.config = Object.assign({}, options);\n }\n\n ngOnInit(): void {\n if (this.isAnimated) {\n this._renderer.addClass(\n this._element.nativeElement,\n CLASS_NAME.FADE\n );\n }\n this._renderer.setStyle(\n this._element.nativeElement,\n 'display',\n 'block'\n );\n setTimeout(() => {\n this.isShown = true;\n this._renderer.addClass(\n this._element.nativeElement,\n isBs3() ? CLASS_NAME.IN : CLASS_NAME.SHOW\n );\n }, this.isAnimated ? TRANSITION_DURATIONS.BACKDROP : 0);\n if (document && document.body) {\n if (this.bsModalService.getModalsCount() === 1) {\n this.bsModalService.checkScrollbar();\n this.bsModalService.setScrollbar();\n }\n this._renderer.addClass(document.body, CLASS_NAME.OPEN);\n }\n if (this._element.nativeElement) {\n this._element.nativeElement.focus();\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (\n this.config.ignoreBackdropClick ||\n this.config.backdrop === 'static' ||\n event.target !== this._element.nativeElement\n ) {\n return;\n }\n this.bsModalService.setDismissReason(DISMISS_REASONS.BACKRDOP);\n this.hide();\n }\n\n @HostListener('window:keydown.esc', ['$event'])\n onEsc(event: KeyboardEvent): void {\n if (!this.isShown) {\n return;\n }\n\n // tslint:disable-next-line:deprecation\n if (event.keyCode === 27 || event.key === 'Escape') {\n event.preventDefault();\n }\n\n if (\n this.config.keyboard &&\n this.level === this.bsModalService.getModalsCount()\n ) {\n this.bsModalService.setDismissReason(DISMISS_REASONS.ESC);\n this.hide();\n }\n }\n\n ngOnDestroy(): void {\n if (this.isShown) {\n this.hide();\n }\n }\n\n hide(): void {\n if (this.isModalHiding || !this.isShown) {\n return;\n }\n this.isModalHiding = true;\n this._renderer.removeClass(\n this._element.nativeElement,\n isBs3() ? CLASS_NAME.IN : CLASS_NAME.SHOW\n );\n setTimeout(() => {\n this.isShown = false;\n if (\n document &&\n document.body &&\n this.bsModalService.getModalsCount() === 1\n ) {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n }\n this.bsModalService.hide(this.level);\n this.isModalHiding = false;\n }, this.isAnimated ? TRANSITION_DURATIONS.MODAL : 0);\n }\n}\n","import { Component, ElementRef, OnInit, Renderer2 } from '@angular/core';\n\nimport { CLASS_NAME } from './modal-options.class';\nimport { isBs3, Utils } from 'ngx-bootstrap/utils';\n\n\n/** This component will be added as background layout for modals if enabled */\n@Component({\n selector: 'bs-modal-backdrop',\n template: ' ',\n host: { class: CLASS_NAME.BACKDROP }\n})\nexport class ModalBackdropComponent implements OnInit {\n get isAnimated(): boolean {\n return this._isAnimated;\n }\n\n set isAnimated(value: boolean) {\n this._isAnimated = value;\n // this.renderer.setElementClass(this.element.nativeElement, `${ClassName.FADE}`, value);\n }\n\n get isShown(): boolean {\n return this._isShown;\n }\n\n set isShown(value: boolean) {\n this._isShown = value;\n if (value) {\n this.renderer.addClass(\n this.element.nativeElement,\n `${CLASS_NAME.IN}`\n );\n } else {\n this.renderer.removeClass(\n this.element.nativeElement,\n `${CLASS_NAME.IN}`\n );\n }\n if (!isBs3()) {\n if (value) {\n this.renderer.addClass(\n this.element.nativeElement,\n `${CLASS_NAME.SHOW}`\n );\n } else {\n this.renderer.removeClass(\n this.element.nativeElement,\n `${CLASS_NAME.SHOW}`\n );\n }\n }\n }\n\n element: ElementRef;\n renderer: Renderer2;\n\n protected _isAnimated: boolean;\n protected _isShown = false;\n\n constructor(element: ElementRef, renderer: Renderer2) {\n this.element = element;\n this.renderer = renderer;\n }\n\n ngOnInit(): void {\n if (this.isAnimated) {\n this.renderer.addClass(\n this.element.nativeElement,\n `${CLASS_NAME.FADE}`\n );\n Utils.reflow(this.element.nativeElement);\n }\n this.isShown = true;\n }\n}\n","/* tslint:disable:max-file-line-count */\n// todo: should we support enforce focus in?\n// todo: in original bs there are was a way to prevent modal from showing\n// todo: original modal had resize events\n\nimport {\n ComponentRef, Directive, ElementRef, EventEmitter, HostListener, Input,\n OnDestroy, OnInit, Output, Renderer2, ViewContainerRef\n} from '@angular/core';\n\nimport { document, window, isBs3, Utils } from 'ngx-bootstrap/utils';\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport {\n CLASS_NAME, DISMISS_REASONS, modalConfigDefaults, ModalOptions\n} from './modal-options.class';\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nconst TRANSITION_DURATION = 300;\nconst BACKDROP_TRANSITION_DURATION = 150;\n\n/** Mark any code with directive to show it's content in modal */\n@Directive({\n selector: '[bsModal]',\n exportAs: 'bs-modal'\n})\nexport class ModalDirective implements OnDestroy, OnInit {\n /** allows to set modal configuration via element property */\n @Input()\n set config(conf: ModalOptions) {\n this._config = this.getConfig(conf);\n }\n\n get config(): ModalOptions {\n return this._config;\n }\n\n /** This event fires immediately when the `show` instance method is called. */\n @Output()\n onShow: EventEmitter<ModalDirective> = new EventEmitter<ModalDirective>();\n /** This event is fired when the modal has been made visible to the user\n * (will wait for CSS transitions to complete)\n */\n @Output()\n onShown: EventEmitter<ModalDirective> = new EventEmitter<ModalDirective>();\n /** This event is fired immediately when\n * the hide instance method has been called.\n */\n @Output()\n onHide: EventEmitter<ModalDirective> = new EventEmitter<ModalDirective>();\n /** This event is fired when the modal has finished being\n * hidden from the user (will wait for CSS transitions to complete).\n */\n @Output()\n onHidden: EventEmitter<ModalDirective> = new EventEmitter<ModalDirective>();\n\n /** This field contains last dismiss reason.\n * Possible values: `backdrop-click`, `esc` and `null`\n * (if modal was closed by direct call of `.hide()`).\n */\n dismissReason: string;\n\n get isShown(): boolean {\n return this._isShown;\n }\n\n protected _config: ModalOptions;\n protected _isShown = false;\n\n protected isBodyOverflowing = false;\n protected originalBodyPadding = 0;\n protected scrollbarWidth = 0;\n\n protected timerHideModal = 0;\n protected timerRmBackDrop = 0;\n\n // reference to backdrop component\n protected backdrop: ComponentRef<ModalBackdropComponent>;\n private _backdrop: ComponentLoader<ModalBackdropComponent>;\n\n private isNested = false;\n\n constructor(private _element: ElementRef,\n _viewContainerRef: ViewContainerRef,\n private _renderer: Renderer2,\n clf: ComponentLoaderFactory) {\n this._backdrop = clf.createLoader<ModalBackdropComponent>(\n _element,\n _viewContainerRef,\n _renderer\n );\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (\n this.config.ignoreBackdropClick ||\n this.config.backdrop === 'static' ||\n event.target !== this._element.nativeElement\n ) {\n return;\n }\n this.dismissReason = DISMISS_REASONS.BACKRDOP;\n this.hide(event);\n }\n\n // todo: consider preventing default and stopping propagation\n @HostListener('keydown.esc', ['$event'])\n onEsc(event: KeyboardEvent): void {\n if (!this._isShown) {\n return;\n }\n // tslint:disable-next-line:deprecation\n if (event.keyCode === 27 || event.key === 'Escape') {\n event.preventDefault();\n }\n\n if (this.config.keyboard) {\n this.dismissReason = DISMISS_REASONS.ESC;\n this.hide();\n }\n }\n\n ngOnDestroy() {\n this.config = void 0;\n if (this._isShown) {\n this._isShown = false;\n this.hideModal();\n this._backdrop.dispose();\n }\n }\n\n ngOnInit(): void {\n this._config = this._config || this.getConfig();\n setTimeout(() => {\n if (this._config.show) {\n this.show();\n }\n }, 0);\n }\n\n /* Public methods */\n\n /** Allows to manually toggle modal visibility */\n toggle(): void {\n return this._isShown ? this.hide() : this.show();\n }\n\n /** Allows to manually open modal */\n show(): void {\n this.dismissReason = null;\n this.onShow.emit(this);\n if (this._isShown) {\n return;\n }\n clearTimeout(this.timerHideModal);\n clearTimeout(this.timerRmBackDrop);\n\n this._isShown = true;\n\n this.checkScrollbar();\n this.setScrollbar();\n\n if (document && document.body) {\n if (document.body.classList.contains(CLASS_NAME.OPEN)) {\n this.isNested = true;\n } else {\n this._renderer.addClass(document.body, CLASS_NAME.OPEN);\n }\n }\n\n this.showBackdrop(() => {\n this.showElement();\n });\n }\n\n /** Allows to manually close modal */\n hide(event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n this.onHide.emit(this);\n\n // todo: add an option to prevent hiding\n if (!this._isShown) {\n return;\n }\n\n window.clearTimeout(this.timerHideModal);\n window.clearTimeout(this.timerRmBackDrop);\n\n this._isShown = false;\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.IN);\n if (!isBs3()) {\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }\n // this._addClassIn = false;\n\n if (this._config.animated) {\n this.timerHideModal = window.setTimeout(\n () => this.hideModal(),\n TRANSITION_DURATION\n );\n } else {\n this.hideModal();\n }\n }\n\n /** Private methods @internal */\n protected getConfig(config?: ModalOptions): ModalOptions {\n return Object.assign({}, modalConfigDefaults, config);\n }\n\n /**\n * Show dialog\n * @internal\n */\n protected showElement(): void {\n // todo: replace this with component loader usage\n if (\n !this._element.nativeElement.parentNode ||\n this._element.nativeElement.parentNode.nodeType !== Node.ELEMENT_NODE\n ) {\n // don't move modals dom position\n if (document && document.body) {\n document.body.appendChild(this._element.nativeElement);\n }\n }\n\n this._renderer.setAttribute(\n this._element.nativeElement,\n 'aria-hidden',\n 'false'\n );\n this._renderer.setAttribute(\n this._element.nativeElement,\n 'aria-modal',\n 'true'\n );\n this._renderer.setStyle(\n this._element.nativeElement,\n 'display',\n 'block'\n );\n this._renderer.setProperty(\n this._element.nativeElement,\n 'scrollTop',\n 0\n );\n\n if (this._config.animated) {\n Utils.reflow(this._element.nativeElement);\n }\n\n // this._addClassIn = true;\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.IN);\n if (!isBs3()) {\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.nativeElement.focus();\n }\n this.onShown.emit(this);\n };\n\n if (this._config.animated) {\n setTimeout(transitionComplete, TRANSITION_DURATION);\n } else {\n transitionComplete();\n }\n }\n\n /** @internal */\n protected hideModal(): void {\n this._renderer.setAttribute(\n this._element.nativeElement,\n 'aria-hidden',\n 'true'\n );\n this._renderer.setStyle(\n this._element.nativeElement,\n 'display',\n 'none'\n );\n this.showBackdrop(() => {\n if (!this.isNested) {\n if (document && document.body) {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n }\n this.resetScrollbar();\n }\n this.resetAdjustments();\n this.focusOtherModal();\n this.onHidden.emit(this);\n });\n }\n\n // todo: original show was calling a callback when done, but we can use\n // promise\n /** @internal */\n protected showBackdrop(callback?: Function): void {\n if (\n this._isShown &&\n this.config.backdrop &&\n (!this.backdrop || !this.backdrop.instance.isShown)\n ) {\n this.removeBackdrop();\n this._backdrop\n .attach(ModalBackdropComponent)\n .to('body')\n .show({isAnimated: this._config.animated});\n this.backdrop = this._backdrop._componentRef;\n\n if (!callback) {\n return;\n }\n\n if (!this._config.animated) {\n callback();\n\n return;\n }\n\n setTimeout(callback, BACKDROP_TRANSITION_DURATION);\n } else if (!this._isShown && this.backdrop) {\n this.backdrop.instance.isShown = false;\n\n const callbackRemove = () => {\n this.removeBackdrop();\n if (callback) {\n callback();\n }\n };\n\n if (this.backdrop.instance.isAnimated) {\n this.timerRmBackDrop = window.setTimeout(\n callbackRemove,\n BACKDROP_TRANSITION_DURATION\n );\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n }\n\n /** @internal */\n protected removeBackdrop(): void {\n this._backdrop.hide();\n }\n\n /** Events tricks */\n\n // no need for it\n // protected setEscapeEvent():void {\n // if (this._isShown && this._config.keyboard) {\n // $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n // if (event.which === 27) {\n // this.hide()\n // }\n // })\n //\n // } else if (!this._isShown) {\n // $(this._element).off(Event.KEYDOWN_DISMISS)\n // }\n // }\n\n // protected setResizeEvent():void {\n // console.log(this.renderer.listenGlobal('', Event.RESIZE));\n // if (this._isShown) {\n // $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this))\n // } else {\n // $(window).off(Event.RESIZE)\n // }\n // }\n\n protected focusOtherModal() {\n if (this._element.nativeElement.parentElement == null) {\n return;\n }\n const otherOpenedModals = this._element.nativeElement.parentElement.querySelectorAll('.in[bsModal]');\n if (!otherOpenedModals.length) {\n return;\n }\n otherOpenedModals[otherOpenedModals.length - 1].focus();\n }\n\n /** @internal */\n protected resetAdjustments(): void {\n this._renderer.setStyle(\n this._element.nativeElement,\n 'paddingLeft',\n ''\n );\n this._renderer.setStyle(\n this._element.nativeElement,\n 'paddingRight',\n ''\n );\n }\n\n /** Scroll bar tricks */\n /** @internal */\n protected checkScrollbar(): void {\n this.isBodyOverflowing = document.body.clientWidth < window.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n\n protected setScrollbar(): void {\n if (!document) {\n return;\n }\n\n this.originalBodyPadding = parseInt(\n window\n .getComputedStyle(document.body)\n .getPropertyValue('padding-right') || 0,\n 10\n );\n\n if (this.isBodyOverflowing) {\n document.body.style.paddingRight = `${this.originalBodyPadding +\n this.scrollbarWidth}px`;\n }\n }\n\n protected resetScrollbar(): void {\n document.body.style.paddingRight = `${this.originalBodyPadding}px`;\n }\n\n // thx d.walsh\n protected getScrollbarWidth(): number {\n const scrollDiv = this._renderer.createElement('div');\n this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);\n this._renderer.appendChild(document.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document.body, scrollDiv);\n\n return scrollbarWidth;\n }\n}\n","import {\n ComponentRef,\n Injectable,\n TemplateRef,\n EventEmitter,\n Renderer2,\n RendererFactory2\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport { ModalContainerComponent } from './modal-container.component';\nimport {\n CLASS_NAME,\n modalConfigDefaults,\n ModalOptions,\n TRANSITION_DURATIONS\n} from './modal-options.class';\nimport { BsModalRef } from './bs-modal-ref.service';\n\n@Injectable()\nexport class BsModalService {\n // constructor props\n config: ModalOptions = modalConfigDefaults;\n\n // tslint:disable-next-line:no-any\n onShow: EventEmitter<any> = new EventEmitter();\n // tslint:disable-next-line:no-any\n onShown: EventEmitter<any> = new EventEmitter();\n // tslint:disable-next-line:no-any\n onHide: EventEmitter<any> = new EventEmitter();\n // tslint:disable-next-line:no-any\n onHidden: EventEmitter<any> = new EventEmitter();\n\n protected isBodyOverflowing = false;\n protected originalBodyPadding = 0;\n\n protected scrollbarWidth = 0;\n\n protected backdropRef: ComponentRef<ModalBackdropComponent>;\n private _backdropLoader: ComponentLoader<ModalBackdropComponent>;\n private modalsCount = 0;\n private lastDismissReason = '';\n\n private loaders: ComponentLoader<ModalContainerComponent>[] = [];\n\n private _renderer: Renderer2;\n\n constructor(rendererFactory: RendererFactory2, private clf: ComponentLoaderFactory) {\n this._backdropLoader = this.clf.createLoader<ModalBackdropComponent>(\n null,\n null,\n null\n );\n this._renderer = rendererFactory.createRenderer(null, null);\n }\n\n /** Shows a modal */\n // tslint:disable-next-line:no-any\n show(content: string | TemplateRef<any> | any, config?: ModalOptions): BsModalRef {\n this.modalsCount++;\n this._createLoaders();\n this.config = Object.assign({}, modalConfigDefaults, config);\n this._showBackdrop();\n this.lastDismissReason = null;\n\n return this._showModal(content);\n }\n\n hide(level: number) {\n if (this.modalsCount === 1) {\n this._hideBackdrop();\n this.resetScrollbar();\n }\n this.modalsCount = this.modalsCount >= 1 ? this.modalsCount - 1 : 0;\n setTimeout(() => {\n this._hideModal(level);\n this.removeLoaders(level);\n }, this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0);\n }\n\n _showBackdrop(): void {\n const isBackdropEnabled =\n this.config.backdrop || this.config.backdrop === 'static';\n const isBackdropInDOM =\n !this.backdropRef || !this.backdropRef.instance.isShown;\n\n if (this.modalsCount === 1) {\n this.removeBackdrop();\n\n if (isBackdropEnabled && isBackdropInDOM) {\n this._backdropLoader\n .attach(ModalBackdropComponent)\n .to('body')\n .show({ isAnimated: this.config.animated });\n this.backdropRef = this._backdropLoader._componentRef;\n }\n }\n }\n\n _hideBackdrop(): void {\n if (!this.backdropRef) {\n return;\n }\n this.backdropRef.instance.isShown = false;\n const duration = this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0;\n setTimeout(() => this.removeBackdrop(), duration);\n }\n // tslint:disable-next-line:no-any\n _showModal(content: any): BsModalRef {\n const modalLoader = this.loaders[this.loaders.length - 1];\n const bsModalRef = new BsModalRef();\n const modalContainerRef = modalLoader\n .provide({ provide: ModalOptions, useValue: this.config })\n .provide({ provide: BsModalRef, useValue: bsModalRef })\n .attach(ModalContainerComponent)\n .to('body')\n .show({content, isAnimated: this.config.animated, initialState: this.config.initialState, bsModalService: this});\n modalContainerRef.instance.level = this.getModalsCount();\n bsModalRef.hide = () => {\n modalContainerRef.instance.hide();\n };\n bsModalRef.content = modalLoader.getInnerComponent() || null;\n\n return bsModalRef;\n }\n\n _hideModal(level: number): void {\n const modalLoader = this.loaders[level - 1];\n if (modalLoader) {\n modalLoader.hide();\n }\n }\n\n getModalsCount(): number {\n return this.modalsCount;\n }\n\n setDismissReason(reason: string) {\n this.lastDismissReason = reason;\n }\n\n removeBackdrop(): void {\n this._backdropLoader.hide();\n this.backdropRef = null;\n }\n\n /** AFTER PR MERGE MODAL.COMPONENT WILL BE USING THIS CODE */\n /** Scroll bar tricks */\n /** @internal */\n checkScrollbar(): void {\n this.isBodyOverflowing = document.body.clientWidth < window.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n\n setScrollbar(): void {\n if (!document) {\n return;\n }\n\n this.originalBodyPadding = parseInt(\n window\n .getComputedStyle(document.body)\n .getPropertyValue('padding-right') || '0',\n 10\n );\n\n if (this.isBodyOverflowing) {\n document.body.style.paddingRight = `${this.originalBodyPadding +\n this.scrollbarWidth}px`;\n }\n }\n\n private resetScrollbar(): void {\n document.body.style.paddingRight = `${this.originalBodyPadding}px`;\n }\n\n // thx d.walsh\n private getScrollbarWidth(): number {\n const scrollDiv = this._renderer.createElement('div');\n this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);\n this._renderer.appendChild(document.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document.body, scrollDiv);\n\n return scrollbarWidth;\n }\n\n private _createLoaders(): void {\n const loader = this.clf.createLoader<ModalContainerComponent>(\n null,\n null,\n null\n );\n this.copyEvent(loader.onBeforeShow, this.onShow);\n this.copyEvent(loader.onShown, this.onShown);\n this.copyEvent(loader.onBeforeHide, this.onHide);\n this.copyEvent(loader.onHidden, this.onHidden);\n this.loaders.push(loader);\n }\n\n private removeLoaders(level: number): void {\n this.loaders.splice(level - 1, 1);\n this.loaders.forEach(\n (loader: ComponentLoader<ModalContainerComponent>, i: number) => {\n loader.instance.level = i + 1;\n }\n );\n }\n\n // tslint:disable-next-line:no-any\n private copyEvent(from: EventEmitter<any>, to: EventEmitter<any>) {\n from.subscribe(() => {\n to.emit(this.lastDismissReason);\n });\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport { ModalDirective } from './modal.directive';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { ModalContainerComponent } from './modal-container.component';\nimport { BsModalService } from './bs-modal.service';\n\n@NgModule({\n declarations: [\n ModalBackdropComponent,\n ModalDirective,\n ModalContainerComponent\n ],\n exports: [ModalBackdropComponent, ModalDirective],\n entryComponents: [ModalBackdropComponent, ModalContainerComponent]\n})\nexport class ModalModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: ModalModule,\n providers: [BsModalService, ComponentLoaderFactory, PositioningService]\n };\n }\n}\n"]}
|
1
|
+
{"version":3,"sources":["ng://ngx-bootstrap/modal/bs-modal-ref.service.ts","ng://ngx-bootstrap/modal/modal-backdrop.options.ts","ng://ngx-bootstrap/modal/modal-options.class.ts","ng://ngx-bootstrap/modal/modal-container.component.ts","ng://ngx-bootstrap/modal/modal-backdrop.component.ts","ng://ngx-bootstrap/modal/modal.directive.ts","ng://ngx-bootstrap/modal/bs-modal.service.ts","ng://ngx-bootstrap/modal/modal.module.ts"],"names":["BsModalRef","Function","Injectable","ModalBackdropOptions","options","Object","assign","this","ModalOptions","modalConfigDefaults","backdrop","keyboard","focus","show","ignoreBackdropClick","class","animated","initialState","CLASS_NAME","SCROLLBAR_MEASURER","BACKDROP","OPEN","FADE","IN","SHOW","TRANSITION_DURATIONS","DISMISS_REASONS","ModalContainerComponent","_element","_renderer","config","prototype","ngOnInit","_this","isAnimated","addClass","nativeElement","setStyle","setTimeout","isShown","isBs3","document","body","bsModalService","getModalsCount","checkScrollbar","setScrollbar","onClick","event","target","setDismissReason","hide","onEsc","keyCode","key","preventDefault","level","ngOnDestroy","isModalHiding","removeClass","Component","args","selector","template","host","role","tabindex","[attr.aria-modal]","ElementRef","Renderer2","HostListener","ModalBackdropComponent","element","renderer","defineProperty","_isAnimated","value","_isShown","Utils","reflow","ModalDirective","_viewContainerRef","clf","EventEmitter","_backdrop","createLoader","_config","conf","getConfig","dismissReason","hideModal","dispose","toggle","onShow","emit","clearTimeout","timerHideModal","timerRmBackDrop","classList","contains","isNested","showBackdrop","showElement","onHide","window","parentNode","nodeType","Node","ELEMENT_NODE","appendChild","setAttribute","setProperty","transitionComplete","onShown","resetScrollbar","resetAdjustments","focusOtherModal","onHidden","callback","instance","callbackRemove","removeBackdrop","attach","to","_componentRef","parentElement","otherOpenedModals","querySelectorAll","length","isBodyOverflowing","clientWidth","innerWidth","scrollbarWidth","getScrollbarWidth","originalBodyPadding","parseInt","getComputedStyle","getPropertyValue","style","paddingRight","scrollDiv","createElement","offsetWidth","removeChild","Directive","exportAs","ViewContainerRef","ComponentLoaderFactory","Input","Output","BsModalService","rendererFactory","_backdropLoader","createRenderer","content","modalsCount","_createLoaders","_showBackdrop","lastDismissReason","_showModal","_hideBackdrop","_hideModal","removeLoaders","isBackdropEnabled","isBackdropInDOM","backdropRef","duration","modalLoader","loaders","bsModalRef","modalContainerRef","provide","useValue","getInnerComponent","setClass","newClass","reason","loader","copyEvent","onBeforeShow","onBeforeHide","push","splice","forEach","i","from","subscribe","RendererFactory2","ModalModule","forRoot","ngModule","providers","PositioningService","NgModule","declarations","exports","entryComponents"],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class BsModalRef {\n /**\n * Reference to a component inside the modal. Null if modal's been created with TemplateRef\n */\n // tslint:disable-next-line:no-any\n content?: any | null;\n\n /**\n * Hides the modal\n */\n hide: () => void = Function;\n /**\n * Sets new class to modal window\n */\n setClass: (newClass: string) => void = Function;\n}\n","export class ModalBackdropOptions {\n animate = true;\n\n constructor(options: ModalBackdropOptions) {\n Object.assign(this, options);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ClassName, DismissReasons, Selector, TransitionDurations } from './models';\n\n@Injectable()\nexport class ModalOptions {\n /**\n * Includes a modal-backdrop element. Alternatively,\n * specify static for a backdrop which doesn't close the modal on click.\n */\n backdrop?: boolean | 'static';\n /**\n * Closes the modal when escape key is pressed.\n */\n keyboard?: boolean;\n\n focus?: boolean;\n /**\n * Shows the modal when initialized.\n */\n show?: boolean;\n /**\n * Ignore the backdrop click\n */\n ignoreBackdropClick?: boolean;\n /**\n * Css class for opened modal\n */\n class?: string;\n /**\n * Toggle animation\n */\n animated?: boolean;\n /**\n * Modal data\n */\n initialState?: Object;\n}\n\n\nexport const modalConfigDefaults: ModalOptions = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: false,\n ignoreBackdropClick: false,\n class: '',\n animated: true,\n initialState: {}\n};\n\nexport const CLASS_NAME: ClassName = {\n SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n BACKDROP: 'modal-backdrop',\n OPEN: 'modal-open',\n FADE: 'fade',\n IN: 'in', // bs3\n SHOW: 'show' // bs4\n};\n\nexport const SELECTOR: Selector = {\n DIALOG: '.modal-dialog',\n DATA_TOGGLE: '[data-toggle=\"modal\"]',\n DATA_DISMISS: '[data-dismiss=\"modal\"]',\n FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed'\n};\n\nexport const TRANSITION_DURATIONS: TransitionDurations = {\n MODAL: 300,\n BACKDROP: 150\n};\n\nexport const DISMISS_REASONS: DismissReasons = {\n BACKRDOP: 'backdrop-click',\n ESC: 'esc'\n};\n","import {\n Component,\n ElementRef,\n HostListener,\n OnDestroy,\n OnInit,\n Renderer2\n} from '@angular/core';\nimport {\n CLASS_NAME,\n DISMISS_REASONS,\n ModalOptions,\n TRANSITION_DURATIONS\n} from './modal-options.class';\nimport { BsModalService } from './bs-modal.service';\nimport { isBs3 } from 'ngx-bootstrap/utils';\n\n@Component({\n selector: 'modal-container',\n template: `\n <div [class]=\"'modal-dialog' + (config.class ? ' ' + config.class : '')\" role=\"document\">\n <div class=\"modal-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n host: {\n class: 'modal',\n role: 'dialog',\n tabindex: '-1',\n '[attr.aria-modal]': 'true'\n }\n})\nexport class ModalContainerComponent implements OnInit, OnDestroy {\n config: ModalOptions;\n isShown = false;\n level: number;\n isAnimated: boolean;\n bsModalService: BsModalService;\n private isModalHiding = false;\n\n constructor(options: ModalOptions,\n protected _element: ElementRef,\n private _renderer: Renderer2) {\n this.config = Object.assign({}, options);\n }\n\n ngOnInit(): void {\n if (this.isAnimated) {\n this._renderer.addClass(\n this._element.nativeElement,\n CLASS_NAME.FADE\n );\n }\n this._renderer.setStyle(\n this._element.nativeElement,\n 'display',\n 'block'\n );\n setTimeout(() => {\n this.isShown = true;\n this._renderer.addClass(\n this._element.nativeElement,\n isBs3() ? CLASS_NAME.IN : CLASS_NAME.SHOW\n );\n }, this.isAnimated ? TRANSITION_DURATIONS.BACKDROP : 0);\n if (document && document.body) {\n if (this.bsModalService.getModalsCount() === 1) {\n this.bsModalService.checkScrollbar();\n this.bsModalService.setScrollbar();\n }\n this._renderer.addClass(document.body, CLASS_NAME.OPEN);\n }\n if (this._element.nativeElement) {\n this._element.nativeElement.focus();\n }\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (\n this.config.ignoreBackdropClick ||\n this.config.backdrop === 'static' ||\n event.target !== this._element.nativeElement\n ) {\n return;\n }\n this.bsModalService.setDismissReason(DISMISS_REASONS.BACKRDOP);\n this.hide();\n }\n\n @HostListener('window:keydown.esc', ['$event'])\n onEsc(event: KeyboardEvent): void {\n if (!this.isShown) {\n return;\n }\n\n // tslint:disable-next-line:deprecation\n if (event.keyCode === 27 || event.key === 'Escape') {\n event.preventDefault();\n }\n\n if (\n this.config.keyboard &&\n this.level === this.bsModalService.getModalsCount()\n ) {\n this.bsModalService.setDismissReason(DISMISS_REASONS.ESC);\n this.hide();\n }\n }\n\n ngOnDestroy(): void {\n if (this.isShown) {\n this.hide();\n }\n }\n\n hide(): void {\n if (this.isModalHiding || !this.isShown) {\n return;\n }\n this.isModalHiding = true;\n this._renderer.removeClass(\n this._element.nativeElement,\n isBs3() ? CLASS_NAME.IN : CLASS_NAME.SHOW\n );\n setTimeout(() => {\n this.isShown = false;\n if (\n document &&\n document.body &&\n this.bsModalService.getModalsCount() === 1\n ) {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n }\n this.bsModalService.hide(this.level);\n this.isModalHiding = false;\n }, this.isAnimated ? TRANSITION_DURATIONS.MODAL : 0);\n }\n}\n","import { Component, ElementRef, OnInit, Renderer2 } from '@angular/core';\n\nimport { CLASS_NAME } from './modal-options.class';\nimport { isBs3, Utils } from 'ngx-bootstrap/utils';\n\n\n/** This component will be added as background layout for modals if enabled */\n@Component({\n selector: 'bs-modal-backdrop',\n template: ' ',\n host: { class: CLASS_NAME.BACKDROP }\n})\nexport class ModalBackdropComponent implements OnInit {\n get isAnimated(): boolean {\n return this._isAnimated;\n }\n\n set isAnimated(value: boolean) {\n this._isAnimated = value;\n // this.renderer.setElementClass(this.element.nativeElement, `${ClassName.FADE}`, value);\n }\n\n get isShown(): boolean {\n return this._isShown;\n }\n\n set isShown(value: boolean) {\n this._isShown = value;\n if (value) {\n this.renderer.addClass(\n this.element.nativeElement,\n `${CLASS_NAME.IN}`\n );\n } else {\n this.renderer.removeClass(\n this.element.nativeElement,\n `${CLASS_NAME.IN}`\n );\n }\n if (!isBs3()) {\n if (value) {\n this.renderer.addClass(\n this.element.nativeElement,\n `${CLASS_NAME.SHOW}`\n );\n } else {\n this.renderer.removeClass(\n this.element.nativeElement,\n `${CLASS_NAME.SHOW}`\n );\n }\n }\n }\n\n element: ElementRef;\n renderer: Renderer2;\n\n protected _isAnimated: boolean;\n protected _isShown = false;\n\n constructor(element: ElementRef, renderer: Renderer2) {\n this.element = element;\n this.renderer = renderer;\n }\n\n ngOnInit(): void {\n if (this.isAnimated) {\n this.renderer.addClass(\n this.element.nativeElement,\n `${CLASS_NAME.FADE}`\n );\n Utils.reflow(this.element.nativeElement);\n }\n this.isShown = true;\n }\n}\n","/* tslint:disable:max-file-line-count */\n// todo: should we support enforce focus in?\n// todo: in original bs there are was a way to prevent modal from showing\n// todo: original modal had resize events\n\nimport {\n ComponentRef, Directive, ElementRef, EventEmitter, HostListener, Input,\n OnDestroy, OnInit, Output, Renderer2, ViewContainerRef\n} from '@angular/core';\n\nimport { document, window, isBs3, Utils } from 'ngx-bootstrap/utils';\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport {\n CLASS_NAME, DISMISS_REASONS, modalConfigDefaults, ModalOptions\n} from './modal-options.class';\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\n\nconst TRANSITION_DURATION = 300;\nconst BACKDROP_TRANSITION_DURATION = 150;\n\n/** Mark any code with directive to show it's content in modal */\n@Directive({\n selector: '[bsModal]',\n exportAs: 'bs-modal'\n})\nexport class ModalDirective implements OnDestroy, OnInit {\n /** allows to set modal configuration via element property */\n @Input()\n set config(conf: ModalOptions) {\n this._config = this.getConfig(conf);\n }\n\n get config(): ModalOptions {\n return this._config;\n }\n\n /** This event fires immediately when the `show` instance method is called. */\n @Output()\n onShow: EventEmitter<ModalDirective> = new EventEmitter<ModalDirective>();\n /** This event is fired when the modal has been made visible to the user\n * (will wait for CSS transitions to complete)\n */\n @Output()\n onShown: EventEmitter<ModalDirective> = new EventEmitter<ModalDirective>();\n /** This event is fired immediately when\n * the hide instance method has been called.\n */\n @Output()\n onHide: EventEmitter<ModalDirective> = new EventEmitter<ModalDirective>();\n /** This event is fired when the modal has finished being\n * hidden from the user (will wait for CSS transitions to complete).\n */\n @Output()\n onHidden: EventEmitter<ModalDirective> = new EventEmitter<ModalDirective>();\n\n /** This field contains last dismiss reason.\n * Possible values: `backdrop-click`, `esc` and `null`\n * (if modal was closed by direct call of `.hide()`).\n */\n dismissReason: string;\n\n get isShown(): boolean {\n return this._isShown;\n }\n\n protected _config: ModalOptions;\n protected _isShown = false;\n\n protected isBodyOverflowing = false;\n protected originalBodyPadding = 0;\n protected scrollbarWidth = 0;\n\n protected timerHideModal = 0;\n protected timerRmBackDrop = 0;\n\n // reference to backdrop component\n protected backdrop: ComponentRef<ModalBackdropComponent>;\n private _backdrop: ComponentLoader<ModalBackdropComponent>;\n\n private isNested = false;\n\n constructor(private _element: ElementRef,\n _viewContainerRef: ViewContainerRef,\n private _renderer: Renderer2,\n clf: ComponentLoaderFactory) {\n this._backdrop = clf.createLoader<ModalBackdropComponent>(\n _element,\n _viewContainerRef,\n _renderer\n );\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent): void {\n if (\n this.config.ignoreBackdropClick ||\n this.config.backdrop === 'static' ||\n event.target !== this._element.nativeElement\n ) {\n return;\n }\n this.dismissReason = DISMISS_REASONS.BACKRDOP;\n this.hide(event);\n }\n\n // todo: consider preventing default and stopping propagation\n @HostListener('keydown.esc', ['$event'])\n onEsc(event: KeyboardEvent): void {\n if (!this._isShown) {\n return;\n }\n // tslint:disable-next-line:deprecation\n if (event.keyCode === 27 || event.key === 'Escape') {\n event.preventDefault();\n }\n\n if (this.config.keyboard) {\n this.dismissReason = DISMISS_REASONS.ESC;\n this.hide();\n }\n }\n\n ngOnDestroy() {\n this.config = void 0;\n if (this._isShown) {\n this._isShown = false;\n this.hideModal();\n this._backdrop.dispose();\n }\n }\n\n ngOnInit(): void {\n this._config = this._config || this.getConfig();\n setTimeout(() => {\n if (this._config.show) {\n this.show();\n }\n }, 0);\n }\n\n /* Public methods */\n\n /** Allows to manually toggle modal visibility */\n toggle(): void {\n return this._isShown ? this.hide() : this.show();\n }\n\n /** Allows to manually open modal */\n show(): void {\n this.dismissReason = null;\n this.onShow.emit(this);\n if (this._isShown) {\n return;\n }\n clearTimeout(this.timerHideModal);\n clearTimeout(this.timerRmBackDrop);\n\n this._isShown = true;\n\n this.checkScrollbar();\n this.setScrollbar();\n\n if (document && document.body) {\n if (document.body.classList.contains(CLASS_NAME.OPEN)) {\n this.isNested = true;\n } else {\n this._renderer.addClass(document.body, CLASS_NAME.OPEN);\n }\n }\n\n this.showBackdrop(() => {\n this.showElement();\n });\n }\n\n /** Allows to manually close modal */\n hide(event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n this.onHide.emit(this);\n\n // todo: add an option to prevent hiding\n if (!this._isShown) {\n return;\n }\n\n window.clearTimeout(this.timerHideModal);\n window.clearTimeout(this.timerRmBackDrop);\n\n this._isShown = false;\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.IN);\n if (!isBs3()) {\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }\n // this._addClassIn = false;\n\n if (this._config.animated) {\n this.timerHideModal = window.setTimeout(\n () => this.hideModal(),\n TRANSITION_DURATION\n );\n } else {\n this.hideModal();\n }\n }\n\n /** Private methods @internal */\n protected getConfig(config?: ModalOptions): ModalOptions {\n return Object.assign({}, modalConfigDefaults, config);\n }\n\n /**\n * Show dialog\n * @internal\n */\n protected showElement(): void {\n // todo: replace this with component loader usage\n if (\n !this._element.nativeElement.parentNode ||\n this._element.nativeElement.parentNode.nodeType !== Node.ELEMENT_NODE\n ) {\n // don't move modals dom position\n if (document && document.body) {\n document.body.appendChild(this._element.nativeElement);\n }\n }\n\n this._renderer.setAttribute(\n this._element.nativeElement,\n 'aria-hidden',\n 'false'\n );\n this._renderer.setAttribute(\n this._element.nativeElement,\n 'aria-modal',\n 'true'\n );\n this._renderer.setStyle(\n this._element.nativeElement,\n 'display',\n 'block'\n );\n this._renderer.setProperty(\n this._element.nativeElement,\n 'scrollTop',\n 0\n );\n\n if (this._config.animated) {\n Utils.reflow(this._element.nativeElement);\n }\n\n // this._addClassIn = true;\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.IN);\n if (!isBs3()) {\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.nativeElement.focus();\n }\n this.onShown.emit(this);\n };\n\n if (this._config.animated) {\n setTimeout(transitionComplete, TRANSITION_DURATION);\n } else {\n transitionComplete();\n }\n }\n\n /** @internal */\n protected hideModal(): void {\n this._renderer.setAttribute(\n this._element.nativeElement,\n 'aria-hidden',\n 'true'\n );\n this._renderer.setStyle(\n this._element.nativeElement,\n 'display',\n 'none'\n );\n this.showBackdrop(() => {\n if (!this.isNested) {\n if (document && document.body) {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n }\n this.resetScrollbar();\n }\n this.resetAdjustments();\n this.focusOtherModal();\n this.onHidden.emit(this);\n });\n }\n\n // todo: original show was calling a callback when done, but we can use\n // promise\n /** @internal */\n protected showBackdrop(callback?: Function): void {\n if (\n this._isShown &&\n this.config.backdrop &&\n (!this.backdrop || !this.backdrop.instance.isShown)\n ) {\n this.removeBackdrop();\n this._backdrop\n .attach(ModalBackdropComponent)\n .to('body')\n .show({isAnimated: this._config.animated});\n this.backdrop = this._backdrop._componentRef;\n\n if (!callback) {\n return;\n }\n\n if (!this._config.animated) {\n callback();\n\n return;\n }\n\n setTimeout(callback, BACKDROP_TRANSITION_DURATION);\n } else if (!this._isShown && this.backdrop) {\n this.backdrop.instance.isShown = false;\n\n const callbackRemove = () => {\n this.removeBackdrop();\n if (callback) {\n callback();\n }\n };\n\n if (this.backdrop.instance.isAnimated) {\n this.timerRmBackDrop = window.setTimeout(\n callbackRemove,\n BACKDROP_TRANSITION_DURATION\n );\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n }\n\n /** @internal */\n protected removeBackdrop(): void {\n this._backdrop.hide();\n }\n\n /** Events tricks */\n\n // no need for it\n // protected setEscapeEvent():void {\n // if (this._isShown && this._config.keyboard) {\n // $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n // if (event.which === 27) {\n // this.hide()\n // }\n // })\n //\n // } else if (!this._isShown) {\n // $(this._element).off(Event.KEYDOWN_DISMISS)\n // }\n // }\n\n // protected setResizeEvent():void {\n // console.log(this.renderer.listenGlobal('', Event.RESIZE));\n // if (this._isShown) {\n // $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this))\n // } else {\n // $(window).off(Event.RESIZE)\n // }\n // }\n\n protected focusOtherModal() {\n if (this._element.nativeElement.parentElement == null) {\n return;\n }\n const otherOpenedModals = this._element.nativeElement.parentElement.querySelectorAll('.in[bsModal]');\n if (!otherOpenedModals.length) {\n return;\n }\n otherOpenedModals[otherOpenedModals.length - 1].focus();\n }\n\n /** @internal */\n protected resetAdjustments(): void {\n this._renderer.setStyle(\n this._element.nativeElement,\n 'paddingLeft',\n ''\n );\n this._renderer.setStyle(\n this._element.nativeElement,\n 'paddingRight',\n ''\n );\n }\n\n /** Scroll bar tricks */\n /** @internal */\n protected checkScrollbar(): void {\n this.isBodyOverflowing = document.body.clientWidth < window.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n\n protected setScrollbar(): void {\n if (!document) {\n return;\n }\n\n this.originalBodyPadding = parseInt(\n window\n .getComputedStyle(document.body)\n .getPropertyValue('padding-right') || 0,\n 10\n );\n\n if (this.isBodyOverflowing) {\n document.body.style.paddingRight = `${this.originalBodyPadding +\n this.scrollbarWidth}px`;\n }\n }\n\n protected resetScrollbar(): void {\n document.body.style.paddingRight = `${this.originalBodyPadding}px`;\n }\n\n // thx d.walsh\n protected getScrollbarWidth(): number {\n const scrollDiv = this._renderer.createElement('div');\n this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);\n this._renderer.appendChild(document.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document.body, scrollDiv);\n\n return scrollbarWidth;\n }\n}\n","import {\n ComponentRef,\n Injectable,\n TemplateRef,\n EventEmitter,\n Renderer2,\n RendererFactory2\n} from '@angular/core';\n\nimport { ComponentLoader, ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport { ModalContainerComponent } from './modal-container.component';\nimport {\n CLASS_NAME,\n modalConfigDefaults,\n ModalOptions,\n TRANSITION_DURATIONS\n} from './modal-options.class';\nimport { BsModalRef } from './bs-modal-ref.service';\n\n@Injectable()\nexport class BsModalService {\n // constructor props\n config: ModalOptions = modalConfigDefaults;\n\n // tslint:disable-next-line:no-any\n onShow: EventEmitter<any> = new EventEmitter();\n // tslint:disable-next-line:no-any\n onShown: EventEmitter<any> = new EventEmitter();\n // tslint:disable-next-line:no-any\n onHide: EventEmitter<any> = new EventEmitter();\n // tslint:disable-next-line:no-any\n onHidden: EventEmitter<any> = new EventEmitter();\n\n protected isBodyOverflowing = false;\n protected originalBodyPadding = 0;\n\n protected scrollbarWidth = 0;\n\n protected backdropRef: ComponentRef<ModalBackdropComponent>;\n private _backdropLoader: ComponentLoader<ModalBackdropComponent>;\n private modalsCount = 0;\n private lastDismissReason = '';\n\n private loaders: ComponentLoader<ModalContainerComponent>[] = [];\n\n private _renderer: Renderer2;\n\n constructor(rendererFactory: RendererFactory2, private clf: ComponentLoaderFactory) {\n this._backdropLoader = this.clf.createLoader<ModalBackdropComponent>(\n null,\n null,\n null\n );\n this._renderer = rendererFactory.createRenderer(null, null);\n }\n\n /** Shows a modal */\n // tslint:disable-next-line:no-any\n show(content: string | TemplateRef<any> | any, config?: ModalOptions): BsModalRef {\n this.modalsCount++;\n this._createLoaders();\n this.config = Object.assign({}, modalConfigDefaults, config);\n this._showBackdrop();\n this.lastDismissReason = null;\n\n return this._showModal(content);\n }\n\n hide(level: number) {\n if (this.modalsCount === 1) {\n this._hideBackdrop();\n this.resetScrollbar();\n }\n this.modalsCount = this.modalsCount >= 1 ? this.modalsCount - 1 : 0;\n setTimeout(() => {\n this._hideModal(level);\n this.removeLoaders(level);\n }, this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0);\n }\n\n _showBackdrop(): void {\n const isBackdropEnabled =\n this.config.backdrop || this.config.backdrop === 'static';\n const isBackdropInDOM =\n !this.backdropRef || !this.backdropRef.instance.isShown;\n\n if (this.modalsCount === 1) {\n this.removeBackdrop();\n\n if (isBackdropEnabled && isBackdropInDOM) {\n this._backdropLoader\n .attach(ModalBackdropComponent)\n .to('body')\n .show({ isAnimated: this.config.animated });\n this.backdropRef = this._backdropLoader._componentRef;\n }\n }\n }\n\n _hideBackdrop(): void {\n if (!this.backdropRef) {\n return;\n }\n this.backdropRef.instance.isShown = false;\n const duration = this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0;\n setTimeout(() => this.removeBackdrop(), duration);\n }\n // tslint:disable-next-line:no-any\n _showModal(content: any): BsModalRef {\n const modalLoader = this.loaders[this.loaders.length - 1];\n const bsModalRef = new BsModalRef();\n const modalContainerRef = modalLoader\n .provide({ provide: ModalOptions, useValue: this.config })\n .provide({ provide: BsModalRef, useValue: bsModalRef })\n .attach(ModalContainerComponent)\n .to('body')\n .show({content, isAnimated: this.config.animated, initialState: this.config.initialState, bsModalService: this});\n modalContainerRef.instance.level = this.getModalsCount();\n bsModalRef.hide = () => {\n modalContainerRef.instance.hide();\n };\n bsModalRef.content = modalLoader.getInnerComponent() || null;\n bsModalRef.setClass = (newClass: string) => {\n modalContainerRef.instance.config.class = newClass;\n };\n\n return bsModalRef;\n }\n\n _hideModal(level: number): void {\n const modalLoader = this.loaders[level - 1];\n if (modalLoader) {\n modalLoader.hide();\n }\n }\n\n getModalsCount(): number {\n return this.modalsCount;\n }\n\n setDismissReason(reason: string) {\n this.lastDismissReason = reason;\n }\n\n removeBackdrop(): void {\n this._backdropLoader.hide();\n this.backdropRef = null;\n }\n\n /** AFTER PR MERGE MODAL.COMPONENT WILL BE USING THIS CODE */\n /** Scroll bar tricks */\n /** @internal */\n checkScrollbar(): void {\n this.isBodyOverflowing = document.body.clientWidth < window.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n\n setScrollbar(): void {\n if (!document) {\n return;\n }\n\n this.originalBodyPadding = parseInt(\n window\n .getComputedStyle(document.body)\n .getPropertyValue('padding-right') || '0',\n 10\n );\n\n if (this.isBodyOverflowing) {\n document.body.style.paddingRight = `${this.originalBodyPadding +\n this.scrollbarWidth}px`;\n }\n }\n\n private resetScrollbar(): void {\n document.body.style.paddingRight = `${this.originalBodyPadding}px`;\n }\n\n // thx d.walsh\n private getScrollbarWidth(): number {\n const scrollDiv = this._renderer.createElement('div');\n this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);\n this._renderer.appendChild(document.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document.body, scrollDiv);\n\n return scrollbarWidth;\n }\n\n private _createLoaders(): void {\n const loader = this.clf.createLoader<ModalContainerComponent>(\n null,\n null,\n null\n );\n this.copyEvent(loader.onBeforeShow, this.onShow);\n this.copyEvent(loader.onShown, this.onShown);\n this.copyEvent(loader.onBeforeHide, this.onHide);\n this.copyEvent(loader.onHidden, this.onHidden);\n this.loaders.push(loader);\n }\n\n private removeLoaders(level: number): void {\n this.loaders.splice(level - 1, 1);\n this.loaders.forEach(\n (loader: ComponentLoader<ModalContainerComponent>, i: number) => {\n loader.instance.level = i + 1;\n }\n );\n }\n\n // tslint:disable-next-line:no-any\n private copyEvent(from: EventEmitter<any>, to: EventEmitter<any>) {\n from.subscribe(() => {\n to.emit(this.lastDismissReason);\n });\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { ModalBackdropComponent } from './modal-backdrop.component';\nimport { ModalDirective } from './modal.directive';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { ModalContainerComponent } from './modal-container.component';\nimport { BsModalService } from './bs-modal.service';\n\n@NgModule({\n declarations: [\n ModalBackdropComponent,\n ModalDirective,\n ModalContainerComponent\n ],\n exports: [ModalBackdropComponent, ModalDirective],\n entryComponents: [ModalBackdropComponent, ModalContainerComponent]\n})\nexport class ModalModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: ModalModule,\n providers: [BsModalService, ComponentLoaderFactory, PositioningService]\n };\n }\n}\n"]}
|
@@ -9,6 +9,10 @@ export class BsModalRef {
|
|
9
9
|
* Hides the modal
|
10
10
|
*/
|
11
11
|
this.hide = Function;
|
12
|
+
/**
|
13
|
+
* Sets new class to modal window
|
14
|
+
*/
|
15
|
+
this.setClass = Function;
|
12
16
|
}
|
13
17
|
}
|
14
18
|
BsModalRef.decorators = [
|
@@ -32,6 +36,11 @@ function BsModalRef_tsickle_Closure_declarations() {
|
|
32
36
|
* @type {?}
|
33
37
|
*/
|
34
38
|
BsModalRef.prototype.hide;
|
39
|
+
/**
|
40
|
+
* Sets new class to modal window
|
41
|
+
* @type {?}
|
42
|
+
*/
|
43
|
+
BsModalRef.prototype.setClass;
|
35
44
|
}
|
36
45
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtbW9kYWwtcmVmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL21vZGFsLyIsInNvdXJjZXMiOlsiYnMtbW9kYWwtcmVmLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsTUFBTTs7Ozs7b0JBVWUsUUFBUTs7Ozt3QkFJWSxRQUFROzs7O1lBZmhELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCc01vZGFsUmVmIHtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byBhIGNvbXBvbmVudCBpbnNpZGUgdGhlIG1vZGFsLiBOdWxsIGlmIG1vZGFsJ3MgYmVlbiBjcmVhdGVkIHdpdGggVGVtcGxhdGVSZWZcbiAgICovXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgY29udGVudD86IGFueSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBtb2RhbFxuICAgKi9cbiAgaGlkZTogKCkgPT4gdm9pZCA9IEZ1bmN0aW9uO1xuICAvKipcbiAgICogU2V0cyBuZXcgY2xhc3MgdG8gbW9kYWwgd2luZG93XG4gICAqL1xuICBzZXRDbGFzczogKG5ld0NsYXNzOiBzdHJpbmcpID0+IHZvaWQgPSBGdW5jdGlvbjtcbn1cbiJdfQ==
|
@@ -109,6 +109,9 @@ export class BsModalService {
|
|
109
109
|
modalContainerRef.instance.hide();
|
110
110
|
};
|
111
111
|
bsModalRef.content = modalLoader.getInnerComponent() || null;
|
112
|
+
bsModalRef.setClass = (newClass) => {
|
113
|
+
modalContainerRef.instance.config.class = newClass;
|
114
|
+
};
|
112
115
|
return bsModalRef;
|
113
116
|
}
|
114
117
|
/**
|
@@ -261,4 +264,4 @@ function BsModalService_tsickle_Closure_declarations() {
|
|
261
264
|
BsModalService.prototype.clf;
|
262
265
|
}
|
263
266
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtbW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvbW9kYWwvIiwic291cmNlcyI6WyJicy1tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsVUFBVSxFQUVWLFlBQVksRUFFWixnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFtQixzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixvQkFBb0IsRUFDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHcEQsTUFBTTs7Ozs7SUEyQkosWUFBWSxlQUFpQyxFQUFVLEdBQTJCO1FBQTNCLFFBQUcsR0FBSCxHQUFHLENBQXdCOztzQkF6QjNELG1CQUFtQjs7c0JBR2QsSUFBSSxZQUFZLEVBQUU7O3VCQUVqQixJQUFJLFlBQVksRUFBRTs7c0JBRW5CLElBQUksWUFBWSxFQUFFOzt3QkFFaEIsSUFBSSxZQUFZLEVBQUU7aUNBRWxCLEtBQUs7bUNBQ0gsQ0FBQzs4QkFFTixDQUFDOzJCQUlOLENBQUM7aUNBQ0ssRUFBRTt1QkFFZ0MsRUFBRTtRQUs5RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUMxQyxJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM3RDs7Ozs7OztJQUlELElBQUksQ0FBQyxP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Ozs7O0lBSUksU0FBUyxDQUFDLElBQXVCLEVBQUUsRUFBcUI7UUFDOUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNqQyxDQUFDLENBQUM7Ozs7WUFsTU4sVUFBVTs7OztZQWRULGdCQUFnQjtZQUdRLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgVGVtcGxhdGVSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlckZhY3RvcnkyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXIsIENvbXBvbmVudExvYWRlckZhY3RvcnkgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2NvbXBvbmVudC1sb2FkZXInO1xuaW1wb3J0IHsgTW9kYWxCYWNrZHJvcENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtYmFja2Ryb3AuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENMQVNTX05BTUUsXG4gIG1vZGFsQ29uZmlnRGVmYXVsdHMsXG4gIE1vZGFsT3B0aW9ucyxcbiAgVFJBTlNJVElPTl9EVVJBVElPTlNcbn0gZnJvbSAnLi9tb2RhbC1vcHRpb25zLmNsYXNzJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICcuL2JzLW1vZGFsLXJlZi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJzTW9kYWxTZXJ2aWNlIHtcbiAgLy8gY29uc3RydWN0b3IgcHJvcHNcbiAgY29uZmlnOiBNb2RhbE9wdGlvbnMgPSBtb2RhbENvbmZpZ0RlZmF1bHRzO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBvblNob3duOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIG9uSGlkZGVuOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcm90ZWN0ZWQgaXNCb2R5T3ZlcmZsb3dpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIG9yaWdpbmFsQm9keVBhZGRpbmcgPSAwO1xuXG4gIHByb3RlY3RlZCBzY3JvbGxiYXJXaWR0aCA9IDA7XG5cbiAgcHJvdGVjdGVkIGJhY2tkcm9wUmVmOiBDb21wb25lbnRSZWY8TW9kYWxCYWNrZHJvcENvbXBvbmVudD47XG4gIHByaXZhdGUgX2JhY2tkcm9wTG9hZGVyOiBDb21wb25lbnRMb2FkZXI8TW9kYWxCYWNrZHJvcENvbXBvbmVudD47XG4gIHByaXZhdGUgbW9kYWxzQ291bnQgPSAwO1xuICBwcml2YXRlIGxhc3REaXNtaXNzUmVhc29uID0gJyc7XG5cbiAgcHJpdmF0ZSBsb2FkZXJzOiBDb21wb25lbnRMb2FkZXI8TW9kYWxDb250YWluZXJDb21wb25lbnQ+W10gPSBbXTtcblxuICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIGNvbnN0cnVjdG9yKHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MiwgcHJpdmF0ZSBjbGY6IENvbXBvbmVudExvYWRlckZhY3RvcnkpIHtcbiAgICB0aGlzLl9iYWNrZHJvcExvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbEJhY2tkcm9wQ29tcG9uZW50PihcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgbnVsbFxuICAgICk7XG4gICAgdGhpcy5fcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gIH1cblxuICAvKiogU2hvd3MgYSBtb2RhbCAqL1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIHNob3coY29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IGFueSwgY29uZmlnPzogTW9kYWxPcHRpb25zKTogQnNNb2RhbFJlZiB7XG4gICAgdGhpcy5tb2RhbHNDb3VudCsrO1xuICAgIHRoaXMuX2NyZWF0ZUxvYWRlcnMoKTtcbiAgICB0aGlzLmNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGFsQ29uZmlnRGVmYXVsdHMsIGNvbmZpZyk7XG4gICAgdGhpcy5fc2hvd0JhY2tkcm9wKCk7XG4gICAgdGhpcy5sYXN0RGlzbWlzc1JlYXNvbiA9IG51bGw7XG5cbiAgICByZXR1cm4gdGhpcy5fc2hvd01vZGFsKGNvbnRlbnQpO1xuICB9XG5cbiAgaGlkZShsZXZlbDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubW9kYWxzQ291bnQgPT09IDEpIHtcbiAgICAgIHRoaXMuX2hpZGVCYWNrZHJvcCgpO1xuICAgICAgdGhpcy5yZXNldFNjcm9sbGJhcigpO1xuICAgIH1cbiAgICB0aGlzLm1vZGFsc0NvdW50ID0gdGhpcy5tb2RhbHNDb3VudCA+PSAxID8gdGhpcy5tb2RhbHNDb3VudCAtIDEgOiAwO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5faGlkZU1vZGFsKGxldmVsKTtcbiAgICAgIHRoaXMucmVtb3ZlTG9hZGVycyhsZXZlbCk7XG4gICAgfSwgdGhpcy5jb25maWcuYW5pbWF0ZWQgPyBUUkFOU0lUSU9OX0RVUkFUSU9OUy5CQUNLRFJPUCA6IDApO1xuICB9XG5cbiAgX3Nob3dCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICBjb25zdCBpc0JhY2tkcm9wRW5hYmxlZCA9XG4gICAgICB0aGlzLmNvbmZpZy5iYWNrZHJvcCB8fCB0aGlzLmNvbmZpZy5iYWNrZHJvcCA9PT0gJ3N0YXRpYyc7XG4gICAgY29uc3QgaXNCYWNrZHJvcEluRE9NID1cbiAgICAgICF0aGlzLmJhY2tkcm9wUmVmIHx8ICF0aGlzLmJhY2tkcm9wUmVmLmluc3RhbmNlLmlzU2hvd247XG5cbiAgICBpZiAodGhpcy5tb2RhbHNDb3VudCA9PT0gMSkge1xuICAgICAgdGhpcy5yZW1vdmVCYWNrZHJvcCgpO1xuXG4gICAgICBpZiAoaXNCYWNrZHJvcEVuYWJsZWQgJiYgaXNCYWNrZHJvcEluRE9NKSB7XG4gICAgICAgIHRoaXMuX2JhY2tkcm9wTG9hZGVyXG4gICAgICAgICAgLmF0dGFjaChNb2RhbEJhY2tkcm9wQ29tcG9uZW50KVxuICAgICAgICAgIC50bygnYm9keScpXG4gICAgICAgICAgLnNob3coeyBpc0FuaW1hdGVkOiB0aGlzLmNvbmZpZy5hbmltYXRlZCB9KTtcbiAgICAgICAgdGhpcy5iYWNrZHJvcFJlZiA9IHRoaXMuX2JhY2tkcm9wTG9hZGVyLl9jb21wb25lbnRSZWY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2hpZGVCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYmFja2Ryb3BSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5iYWNrZHJvcFJlZi5pbnN0YW5jZS5pc1Nob3duID0gZmFsc2U7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmNvbmZpZy5hbmltYXRlZCA/IFRSQU5TSVRJT05fRFVSQVRJT05TLkJBQ0tEUk9QIDogMDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVtb3ZlQmFja2Ryb3AoKSwgZHVyYXRpb24pO1xuICB9XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgX3Nob3dNb2RhbChjb250ZW50OiBhbnkpOiBCc01vZGFsUmVmIHtcbiAgICBjb25zdCBtb2RhbExvYWRlciA9IHRoaXMubG9hZGVyc1t0aGlzLmxvYWRlcnMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYnNNb2RhbFJlZiA9IG5ldyBCc01vZGFsUmVmKCk7XG4gICAgY29uc3QgbW9kYWxDb250YWluZXJSZWYgPSBtb2RhbExvYWRlclxuICAgICAgLnByb3ZpZGUoeyBwcm92aWRlOiBNb2RhbE9wdGlvbnMsIHVzZVZhbHVlOiB0aGlzLmNvbmZpZyB9KVxuICAgICAgLnByb3ZpZGUoeyBwcm92aWRlOiBCc01vZGFsUmVmLCB1c2VWYWx1ZTogYnNNb2RhbFJlZiB9KVxuICAgICAgLmF0dGFjaChNb2RhbENvbnRhaW5lckNvbXBvbmVudClcbiAgICAgIC50bygnYm9keScpXG4gICAgICAuc2hvdyh7Y29udGVudCwgaXNBbmltYXRlZDogdGhpcy5jb25maWcuYW5pbWF0ZWQsIGluaXRpYWxTdGF0ZTogdGhpcy5jb25maWcuaW5pdGlhbFN0YXRlLCBic01vZGFsU2VydmljZTogdGhpc30pO1xuICAgIG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLmxldmVsID0gdGhpcy5nZXRNb2RhbHNDb3VudCgpO1xuICAgIGJzTW9kYWxSZWYuaGlkZSA9ICgpID0+IHtcbiAgICAgIG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLmhpZGUoKTtcbiAgICB9O1xuICAgIGJzTW9kYWxSZWYuY29udGVudCA9IG1vZGFsTG9hZGVyLmdldElubmVyQ29tcG9uZW50KCkgfHwgbnVsbDtcblxuICAgIHJldHVybiBic01vZGFsUmVmO1xuICB9XG5cbiAgX2hpZGVNb2RhbChsZXZlbDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbW9kYWxMb2FkZXIgPSB0aGlzLmxvYWRlcnNbbGV2ZWwgLSAxXTtcbiAgICBpZiAobW9kYWxMb2FkZXIpIHtcbiAgICAgIG1vZGFsTG9hZGVyLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXRNb2RhbHNDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1vZGFsc0NvdW50O1xuICB9XG5cbiAgc2V0RGlzbWlzc1JlYXNvbihyZWFzb246IHN0cmluZykge1xuICAgIHRoaXMubGFzdERpc21pc3NSZWFzb24gPSByZWFzb247XG4gIH1cblxuICByZW1vdmVCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICB0aGlzLl9iYWNrZHJvcExvYWRlci5oaWRlKCk7XG4gICAgdGhpcy5iYWNrZHJvcFJlZiA9IG51bGw7XG4gIH1cblxuICAvKiogQUZURVIgUFIgTUVSR0UgTU9EQUwuQ09NUE9ORU5UIFdJTEwgQkUgVVNJTkcgVEhJUyBDT0RFICovXG4gIC8qKiBTY3JvbGwgYmFyIHRyaWNrcyAqL1xuICAvKiogQGludGVybmFsICovXG4gIGNoZWNrU2Nyb2xsYmFyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNCb2R5T3ZlcmZsb3dpbmcgPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDwgd2luZG93LmlubmVyV2lkdGg7XG4gICAgdGhpcy5zY3JvbGxiYXJXaWR0aCA9IHRoaXMuZ2V0U2Nyb2xsYmFyV2lkdGgoKTtcbiAgfVxuXG4gIHNldFNjcm9sbGJhcigpOiB2b2lkIHtcbiAgICBpZiAoIWRvY3VtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vcmlnaW5hbEJvZHlQYWRkaW5nID0gcGFyc2VJbnQoXG4gICAgICB3aW5kb3dcbiAgICAgICAgLmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSlcbiAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctcmlnaHQnKSB8fCAnMCcsXG4gICAgICAxMFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5pc0JvZHlPdmVyZmxvd2luZykge1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHt0aGlzLm9yaWdpbmFsQm9keVBhZGRpbmcgK1xuICAgICAgICB0aGlzLnNjcm9sbGJhcldpZHRofXB4YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0U2Nyb2xsYmFyKCk6IHZvaWQge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gYCR7dGhpcy5vcmlnaW5hbEJvZHlQYWRkaW5nfXB4YDtcbiAgfVxuXG4gIC8vIHRoeCBkLndhbHNoXG4gIHByaXZhdGUgZ2V0U2Nyb2xsYmFyV2lkdGgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBzY3JvbGxEaXYgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhzY3JvbGxEaXYsIENMQVNTX05BTUUuU0NST0xMQkFSX01FQVNVUkVSKTtcbiAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LCBzY3JvbGxEaXYpO1xuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gc2Nyb2xsRGl2Lm9mZnNldFdpZHRoIC0gc2Nyb2xsRGl2LmNsaWVudFdpZHRoO1xuICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHksIHNjcm9sbERpdik7XG5cbiAgICByZXR1cm4gc2Nyb2xsYmFyV2lkdGg7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVMb2FkZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGxvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbENvbnRhaW5lckNvbXBvbmVudD4oXG4gICAgICBudWxsLFxuICAgICAgbnVsbCxcbiAgICAgIG51bGxcbiAgICApO1xuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vbkJlZm9yZVNob3csIHRoaXMub25TaG93KTtcbiAgICB0aGlzLmNvcHlFdmVudChsb2FkZXIub25TaG93biwgdGhpcy5vblNob3duKTtcbiAgICB0aGlzLmNvcHlFdmVudChsb2FkZXIub25CZWZvcmVIaWRlLCB0aGlzLm9uSGlkZSk7XG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uSGlkZGVuLCB0aGlzLm9uSGlkZGVuKTtcbiAgICB0aGlzLmxvYWRlcnMucHVzaChsb2FkZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMb2FkZXJzKGxldmVsOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRlcnMuc3BsaWNlKGxldmVsIC0gMSwgMSk7XG4gICAgdGhpcy5sb2FkZXJzLmZvckVhY2goXG4gICAgICAobG9hZGVyOiBDb21wb25lbnRMb2FkZXI8TW9kYWxDb250YWluZXJDb21wb25lbnQ+LCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgbG9hZGVyLmluc3RhbmNlLmxldmVsID0gaSArIDE7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgcHJpdmF0ZSBjb3B5RXZlbnQoZnJvbTogRXZlbnRFbWl0dGVyPGFueT4sIHRvOiBFdmVudEVtaXR0ZXI8YW55Pikge1xuICAgIGZyb20uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRvLmVtaXQodGhpcy5sYXN0RGlzbWlzc1JlYXNvbik7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtbW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvbW9kYWwvIiwic291cmNlcyI6WyJicy1tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsVUFBVSxFQUVWLFlBQVksRUFFWixnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFtQixzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixvQkFBb0IsRUFDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHcEQsTUFBTTs7Ozs7SUEyQkosWUFBWSxlQUFpQyxFQUFVLEdBQTJCO1FBQTNCLFFBQUcsR0FBSCxHQUFHLENBQXdCOztzQkF6QjNELG1CQUFtQjs7c0JBR2QsSUFBSSxZQUFZLEVBQUU7O3VCQUVqQixJQUFJLFlBQVksRUFBRTs7c0JBRW5CLElBQUksWUFBWSxFQUFFOzt3QkFFaEIsSUFBSSxZQUFZLEVBQUU7aUNBRWxCLEtBQUs7bUNBQ0gsQ0FBQzs4QkFFTixDQUFDOzJCQUlOLENBQUM7aUNBQ0ssRUFBRTt1QkFFZ0MsRUFBRTtRQUs5RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUMxQyxJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM3RDs7Ozs7OztJQUlELElBQUksQ0FBQyxP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QUFPLENBQ2xCLENBQUMsTUFBZ0QsRUFBRSxDQUFTLEVBQUUsRUFBRTtZQUM5RCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQy9CLENBQ0YsQ0FBQzs7Ozs7OztJQUlJLFNBQVMsQ0FBQyxJQUF1QixFQUFFLEVBQXFCO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDakMsQ0FBQyxDQUFDOzs7O1lBck1OLFVBQVU7Ozs7WUFkVCxnQkFBZ0I7WUFHUSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRSZWYsXG4gIEluamVjdGFibGUsXG4gIFRlbXBsYXRlUmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIFJlbmRlcmVyMixcbiAgUmVuZGVyZXJGYWN0b3J5MlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29tcG9uZW50TG9hZGVyLCBDb21wb25lbnRMb2FkZXJGYWN0b3J5IH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9jb21wb25lbnQtbG9hZGVyJztcbmltcG9ydCB7IE1vZGFsQmFja2Ryb3BDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLWJhY2tkcm9wLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDTEFTU19OQU1FLFxuICBtb2RhbENvbmZpZ0RlZmF1bHRzLFxuICBNb2RhbE9wdGlvbnMsXG4gIFRSQU5TSVRJT05fRFVSQVRJT05TXG59IGZyb20gJy4vbW9kYWwtb3B0aW9ucy5jbGFzcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnLi9icy1tb2RhbC1yZWYuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCc01vZGFsU2VydmljZSB7XG4gIC8vIGNvbnN0cnVjdG9yIHByb3BzXG4gIGNvbmZpZzogTW9kYWxPcHRpb25zID0gbW9kYWxDb25maWdEZWZhdWx0cztcblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIG9uU2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgb25TaG93bjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgb25IaWRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBvbkhpZGRlbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHJvdGVjdGVkIGlzQm9keU92ZXJmbG93aW5nID0gZmFsc2U7XG4gIHByb3RlY3RlZCBvcmlnaW5hbEJvZHlQYWRkaW5nID0gMDtcblxuICBwcm90ZWN0ZWQgc2Nyb2xsYmFyV2lkdGggPSAwO1xuXG4gIHByb3RlY3RlZCBiYWNrZHJvcFJlZjogQ29tcG9uZW50UmVmPE1vZGFsQmFja2Ryb3BDb21wb25lbnQ+O1xuICBwcml2YXRlIF9iYWNrZHJvcExvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQmFja2Ryb3BDb21wb25lbnQ+O1xuICBwcml2YXRlIG1vZGFsc0NvdW50ID0gMDtcbiAgcHJpdmF0ZSBsYXN0RGlzbWlzc1JlYXNvbiA9ICcnO1xuXG4gIHByaXZhdGUgbG9hZGVyczogQ29tcG9uZW50TG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PltdID0gW107XG5cbiAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICBjb25zdHJ1Y3RvcihyZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsIHByaXZhdGUgY2xmOiBDb21wb25lbnRMb2FkZXJGYWN0b3J5KSB7XG4gICAgdGhpcy5fYmFja2Ryb3BMb2FkZXIgPSB0aGlzLmNsZi5jcmVhdGVMb2FkZXI8TW9kYWxCYWNrZHJvcENvbXBvbmVudD4oXG4gICAgICBudWxsLFxuICAgICAgbnVsbCxcbiAgICAgIG51bGxcbiAgICApO1xuICAgIHRoaXMuX3JlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKG51bGwsIG51bGwpO1xuICB9XG5cbiAgLyoqIFNob3dzIGEgbW9kYWwgKi9cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBzaG93KGNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBhbnksIGNvbmZpZz86IE1vZGFsT3B0aW9ucyk6IEJzTW9kYWxSZWYge1xuICAgIHRoaXMubW9kYWxzQ291bnQrKztcbiAgICB0aGlzLl9jcmVhdGVMb2FkZXJzKCk7XG4gICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBtb2RhbENvbmZpZ0RlZmF1bHRzLCBjb25maWcpO1xuICAgIHRoaXMuX3Nob3dCYWNrZHJvcCgpO1xuICAgIHRoaXMubGFzdERpc21pc3NSZWFzb24gPSBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXMuX3Nob3dNb2RhbChjb250ZW50KTtcbiAgfVxuXG4gIGhpZGUobGV2ZWw6IG51bWJlcikge1xuICAgIGlmICh0aGlzLm1vZGFsc0NvdW50ID09PSAxKSB7XG4gICAgICB0aGlzLl9oaWRlQmFja2Ryb3AoKTtcbiAgICAgIHRoaXMucmVzZXRTY3JvbGxiYXIoKTtcbiAgICB9XG4gICAgdGhpcy5tb2RhbHNDb3VudCA9IHRoaXMubW9kYWxzQ291bnQgPj0gMSA/IHRoaXMubW9kYWxzQ291bnQgLSAxIDogMDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2hpZGVNb2RhbChsZXZlbCk7XG4gICAgICB0aGlzLnJlbW92ZUxvYWRlcnMobGV2ZWwpO1xuICAgIH0sIHRoaXMuY29uZmlnLmFuaW1hdGVkID8gVFJBTlNJVElPTl9EVVJBVElPTlMuQkFDS0RST1AgOiAwKTtcbiAgfVxuXG4gIF9zaG93QmFja2Ryb3AoKTogdm9pZCB7XG4gICAgY29uc3QgaXNCYWNrZHJvcEVuYWJsZWQgPVxuICAgICAgdGhpcy5jb25maWcuYmFja2Ryb3AgfHwgdGhpcy5jb25maWcuYmFja2Ryb3AgPT09ICdzdGF0aWMnO1xuICAgIGNvbnN0IGlzQmFja2Ryb3BJbkRPTSA9XG4gICAgICAhdGhpcy5iYWNrZHJvcFJlZiB8fCAhdGhpcy5iYWNrZHJvcFJlZi5pbnN0YW5jZS5pc1Nob3duO1xuXG4gICAgaWYgKHRoaXMubW9kYWxzQ291bnQgPT09IDEpIHtcbiAgICAgIHRoaXMucmVtb3ZlQmFja2Ryb3AoKTtcblxuICAgICAgaWYgKGlzQmFja2Ryb3BFbmFibGVkICYmIGlzQmFja2Ryb3BJbkRPTSkge1xuICAgICAgICB0aGlzLl9iYWNrZHJvcExvYWRlclxuICAgICAgICAgIC5hdHRhY2goTW9kYWxCYWNrZHJvcENvbXBvbmVudClcbiAgICAgICAgICAudG8oJ2JvZHknKVxuICAgICAgICAgIC5zaG93KHsgaXNBbmltYXRlZDogdGhpcy5jb25maWcuYW5pbWF0ZWQgfSk7XG4gICAgICAgIHRoaXMuYmFja2Ryb3BSZWYgPSB0aGlzLl9iYWNrZHJvcExvYWRlci5fY29tcG9uZW50UmVmO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9oaWRlQmFja2Ryb3AoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJhY2tkcm9wUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYmFja2Ryb3BSZWYuaW5zdGFuY2UuaXNTaG93biA9IGZhbHNlO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gdGhpcy5jb25maWcuYW5pbWF0ZWQgPyBUUkFOU0lUSU9OX0RVUkFUSU9OUy5CQUNLRFJPUCA6IDA7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlbW92ZUJhY2tkcm9wKCksIGR1cmF0aW9uKTtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIF9zaG93TW9kYWwoY29udGVudDogYW55KTogQnNNb2RhbFJlZiB7XG4gICAgY29uc3QgbW9kYWxMb2FkZXIgPSB0aGlzLmxvYWRlcnNbdGhpcy5sb2FkZXJzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGJzTW9kYWxSZWYgPSBuZXcgQnNNb2RhbFJlZigpO1xuICAgIGNvbnN0IG1vZGFsQ29udGFpbmVyUmVmID0gbW9kYWxMb2FkZXJcbiAgICAgIC5wcm92aWRlKHsgcHJvdmlkZTogTW9kYWxPcHRpb25zLCB1c2VWYWx1ZTogdGhpcy5jb25maWcgfSlcbiAgICAgIC5wcm92aWRlKHsgcHJvdmlkZTogQnNNb2RhbFJlZiwgdXNlVmFsdWU6IGJzTW9kYWxSZWYgfSlcbiAgICAgIC5hdHRhY2goTW9kYWxDb250YWluZXJDb21wb25lbnQpXG4gICAgICAudG8oJ2JvZHknKVxuICAgICAgLnNob3coe2NvbnRlbnQsIGlzQW5pbWF0ZWQ6IHRoaXMuY29uZmlnLmFuaW1hdGVkLCBpbml0aWFsU3RhdGU6IHRoaXMuY29uZmlnLmluaXRpYWxTdGF0ZSwgYnNNb2RhbFNlcnZpY2U6IHRoaXN9KTtcbiAgICBtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZS5sZXZlbCA9IHRoaXMuZ2V0TW9kYWxzQ291bnQoKTtcbiAgICBic01vZGFsUmVmLmhpZGUgPSAoKSA9PiB7XG4gICAgICBtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZS5oaWRlKCk7XG4gICAgfTtcbiAgICBic01vZGFsUmVmLmNvbnRlbnQgPSBtb2RhbExvYWRlci5nZXRJbm5lckNvbXBvbmVudCgpIHx8IG51bGw7XG4gICAgYnNNb2RhbFJlZi5zZXRDbGFzcyA9IChuZXdDbGFzczogc3RyaW5nKSA9PiB7XG4gICAgICBtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZS5jb25maWcuY2xhc3MgPSBuZXdDbGFzcztcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJzTW9kYWxSZWY7XG4gIH1cblxuICBfaGlkZU1vZGFsKGxldmVsOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBtb2RhbExvYWRlciA9IHRoaXMubG9hZGVyc1tsZXZlbCAtIDFdO1xuICAgIGlmIChtb2RhbExvYWRlcikge1xuICAgICAgbW9kYWxMb2FkZXIuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldE1vZGFsc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubW9kYWxzQ291bnQ7XG4gIH1cblxuICBzZXREaXNtaXNzUmVhc29uKHJlYXNvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5sYXN0RGlzbWlzc1JlYXNvbiA9IHJlYXNvbjtcbiAgfVxuXG4gIHJlbW92ZUJhY2tkcm9wKCk6IHZvaWQge1xuICAgIHRoaXMuX2JhY2tkcm9wTG9hZGVyLmhpZGUoKTtcbiAgICB0aGlzLmJhY2tkcm9wUmVmID0gbnVsbDtcbiAgfVxuXG4gIC8qKiBBRlRFUiBQUiBNRVJHRSBNT0RBTC5DT01QT05FTlQgV0lMTCBCRSBVU0lORyBUSElTIENPREUgKi9cbiAgLyoqIFNjcm9sbCBiYXIgdHJpY2tzICovXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgY2hlY2tTY3JvbGxiYXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc0JvZHlPdmVyZmxvd2luZyA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggPCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgICB0aGlzLnNjcm9sbGJhcldpZHRoID0gdGhpcy5nZXRTY3JvbGxiYXJXaWR0aCgpO1xuICB9XG5cbiAgc2V0U2Nyb2xsYmFyKCk6IHZvaWQge1xuICAgIGlmICghZG9jdW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9yaWdpbmFsQm9keVBhZGRpbmcgPSBwYXJzZUludChcbiAgICAgIHdpbmRvd1xuICAgICAgICAuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KVxuICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgncGFkZGluZy1yaWdodCcpIHx8ICcwJyxcbiAgICAgIDEwXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmlzQm9keU92ZXJmbG93aW5nKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke3RoaXMub3JpZ2luYWxCb2R5UGFkZGluZyArXG4gICAgICAgIHRoaXMuc2Nyb2xsYmFyV2lkdGh9cHhgO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTY3JvbGxiYXIoKTogdm9pZCB7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHt0aGlzLm9yaWdpbmFsQm9keVBhZGRpbmd9cHhgO1xuICB9XG5cbiAgLy8gdGh4IGQud2Fsc2hcbiAgcHJpdmF0ZSBnZXRTY3JvbGxiYXJXaWR0aCgpOiBudW1iZXIge1xuICAgIGNvbnN0IHNjcm9sbERpdiA9IHRoaXMuX3JlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHNjcm9sbERpdiwgQ0xBU1NfTkFNRS5TQ1JPTExCQVJfTUVBU1VSRVIpO1xuICAgIHRoaXMuX3JlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIHNjcm9sbERpdik7XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSBzY3JvbGxEaXYub2Zmc2V0V2lkdGggLSBzY3JvbGxEaXYuY2xpZW50V2lkdGg7XG4gICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keSwgc2Nyb2xsRGl2KTtcblxuICAgIHJldHVybiBzY3JvbGxiYXJXaWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUxvYWRlcnMoKTogdm9pZCB7XG4gICAgY29uc3QgbG9hZGVyID0gdGhpcy5jbGYuY3JlYXRlTG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PihcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgbnVsbFxuICAgICk7XG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uQmVmb3JlU2hvdywgdGhpcy5vblNob3cpO1xuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vblNob3duLCB0aGlzLm9uU2hvd24pO1xuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vbkJlZm9yZUhpZGUsIHRoaXMub25IaWRlKTtcbiAgICB0aGlzLmNvcHlFdmVudChsb2FkZXIub25IaWRkZW4sIHRoaXMub25IaWRkZW4pO1xuICAgIHRoaXMubG9hZGVycy5wdXNoKGxvYWRlcik7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxvYWRlcnMobGV2ZWw6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubG9hZGVycy5zcGxpY2UobGV2ZWwgLSAxLCAxKTtcbiAgICB0aGlzLmxvYWRlcnMuZm9yRWFjaChcbiAgICAgIChsb2FkZXI6IENvbXBvbmVudExvYWRlcjxNb2RhbENvbnRhaW5lckNvbXBvbmVudD4sIGk6IG51bWJlcikgPT4ge1xuICAgICAgICBsb2FkZXIuaW5zdGFuY2UubGV2ZWwgPSBpICsgMTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBwcml2YXRlIGNvcHlFdmVudChmcm9tOiBFdmVudEVtaXR0ZXI8YW55PiwgdG86IEV2ZW50RW1pdHRlcjxhbnk+KSB7XG4gICAgZnJvbS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdG8uZW1pdCh0aGlzLmxhc3REaXNtaXNzUmVhc29uKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
|
@@ -9,6 +9,10 @@ var BsModalRef = /** @class */ (function () {
|
|
9
9
|
* Hides the modal
|
10
10
|
*/
|
11
11
|
this.hide = Function;
|
12
|
+
/**
|
13
|
+
* Sets new class to modal window
|
14
|
+
*/
|
15
|
+
this.setClass = Function;
|
12
16
|
}
|
13
17
|
BsModalRef.decorators = [
|
14
18
|
{ type: Injectable }
|
@@ -34,6 +38,11 @@ function BsModalRef_tsickle_Closure_declarations() {
|
|
34
38
|
* @type {?}
|
35
39
|
*/
|
36
40
|
BsModalRef.prototype.hide;
|
41
|
+
/**
|
42
|
+
* Sets new class to modal window
|
43
|
+
* @type {?}
|
44
|
+
*/
|
45
|
+
BsModalRef.prototype.setClass;
|
37
46
|
}
|
38
47
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtbW9kYWwtcmVmLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYm9vdHN0cmFwL21vZGFsLyIsInNvdXJjZXMiOlsiYnMtbW9kYWwtcmVmLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztvQkFhdEIsUUFBUTs7Ozt3QkFJWSxRQUFROzs7Z0JBZmhELFVBQVU7O3FCQUZYOztTQUdhLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCc01vZGFsUmVmIHtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byBhIGNvbXBvbmVudCBpbnNpZGUgdGhlIG1vZGFsLiBOdWxsIGlmIG1vZGFsJ3MgYmVlbiBjcmVhdGVkIHdpdGggVGVtcGxhdGVSZWZcbiAgICovXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgY29udGVudD86IGFueSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBtb2RhbFxuICAgKi9cbiAgaGlkZTogKCkgPT4gdm9pZCA9IEZ1bmN0aW9uO1xuICAvKipcbiAgICogU2V0cyBuZXcgY2xhc3MgdG8gbW9kYWwgd2luZG93XG4gICAqL1xuICBzZXRDbGFzczogKG5ld0NsYXNzOiBzdHJpbmcpID0+IHZvaWQgPSBGdW5jdGlvbjtcbn1cbiJdfQ==
|
@@ -130,6 +130,9 @@ var BsModalService = /** @class */ (function () {
|
|
130
130
|
modalContainerRef.instance.hide();
|
131
131
|
};
|
132
132
|
bsModalRef.content = modalLoader.getInnerComponent() || null;
|
133
|
+
bsModalRef.setClass = function (newClass) {
|
134
|
+
modalContainerRef.instance.config.class = newClass;
|
135
|
+
};
|
133
136
|
return bsModalRef;
|
134
137
|
};
|
135
138
|
/**
|
@@ -327,4 +330,4 @@ function BsModalService_tsickle_Closure_declarations() {
|
|
327
330
|
BsModalService.prototype.clf;
|
328
331
|
}
|
329
332
|
|
330
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtbW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvbW9kYWwvIiwic291cmNlcyI6WyJicy1tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsVUFBVSxFQUVWLFlBQVksRUFFWixnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFtQixzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixvQkFBb0IsRUFDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0lBOEJsRCx3QkFBWSxlQUFpQyxFQUFVLEdBQTJCO1FBQTNCLFFBQUcsR0FBSCxHQUFHLENBQXdCOztzQkF6QjNELG1CQUFtQjs7c0JBR2QsSUFBSSxZQUFZLEVBQUU7O3VCQUVqQixJQUFJLFlBQVksRUFBRTs7c0JBRW5CLElBQUksWUFBWSxFQUFFOzt3QkFFaEIsSUFBSSxZQUFZLEVBQUU7aUNBRWxCLEtBQUs7bUNBQ0gsQ0FBQzs4QkFFTixDQUFDOzJCQUlOLENBQUM7aUNBQ0ssRUFBRTt1QkFFZ0MsRUFBRTtRQUs5RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUMxQyxJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM3RDtJQUVELG9CQUFvQjtJQUNwQixrQ0FBa0M7Ozs7Ozs7SUFD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Q0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUNsQixVQUFDLE1BQWdELEVBQUUsQ0FBUztZQUMxRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQy9CLENBQ0YsQ0FBQzs7Ozs7OztJQUlJLGtDQUFTOzs7OztjQUFDLElBQXVCLEVBQUUsRUFBcUI7O1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ2pDLENBQUMsQ0FBQzs7O2dCQWxNTixVQUFVOzs7O2dCQWRULGdCQUFnQjtnQkFHUSxzQkFBc0I7O3lCQVRoRDs7U0FxQmEsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgVGVtcGxhdGVSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlckZhY3RvcnkyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXIsIENvbXBvbmVudExvYWRlckZhY3RvcnkgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2NvbXBvbmVudC1sb2FkZXInO1xuaW1wb3J0IHsgTW9kYWxCYWNrZHJvcENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtYmFja2Ryb3AuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENMQVNTX05BTUUsXG4gIG1vZGFsQ29uZmlnRGVmYXVsdHMsXG4gIE1vZGFsT3B0aW9ucyxcbiAgVFJBTlNJVElPTl9EVVJBVElPTlNcbn0gZnJvbSAnLi9tb2RhbC1vcHRpb25zLmNsYXNzJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICcuL2JzLW1vZGFsLXJlZi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJzTW9kYWxTZXJ2aWNlIHtcbiAgLy8gY29uc3RydWN0b3IgcHJvcHNcbiAgY29uZmlnOiBNb2RhbE9wdGlvbnMgPSBtb2RhbENvbmZpZ0RlZmF1bHRzO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBvblNob3duOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIG9uSGlkZGVuOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcm90ZWN0ZWQgaXNCb2R5T3ZlcmZsb3dpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIG9yaWdpbmFsQm9keVBhZGRpbmcgPSAwO1xuXG4gIHByb3RlY3RlZCBzY3JvbGxiYXJXaWR0aCA9IDA7XG5cbiAgcHJvdGVjdGVkIGJhY2tkcm9wUmVmOiBDb21wb25lbnRSZWY8TW9kYWxCYWNrZHJvcENvbXBvbmVudD47XG4gIHByaXZhdGUgX2JhY2tkcm9wTG9hZGVyOiBDb21wb25lbnRMb2FkZXI8TW9kYWxCYWNrZHJvcENvbXBvbmVudD47XG4gIHByaXZhdGUgbW9kYWxzQ291bnQgPSAwO1xuICBwcml2YXRlIGxhc3REaXNtaXNzUmVhc29uID0gJyc7XG5cbiAgcHJpdmF0ZSBsb2FkZXJzOiBDb21wb25lbnRMb2FkZXI8TW9kYWxDb250YWluZXJDb21wb25lbnQ+W10gPSBbXTtcblxuICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIGNvbnN0cnVjdG9yKHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MiwgcHJpdmF0ZSBjbGY6IENvbXBvbmVudExvYWRlckZhY3RvcnkpIHtcbiAgICB0aGlzLl9iYWNrZHJvcExvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbEJhY2tkcm9wQ29tcG9uZW50PihcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgbnVsbFxuICAgICk7XG4gICAgdGhpcy5fcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gIH1cblxuICAvKiogU2hvd3MgYSBtb2RhbCAqL1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIHNob3coY29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IGFueSwgY29uZmlnPzogTW9kYWxPcHRpb25zKTogQnNNb2RhbFJlZiB7XG4gICAgdGhpcy5tb2RhbHNDb3VudCsrO1xuICAgIHRoaXMuX2NyZWF0ZUxvYWRlcnMoKTtcbiAgICB0aGlzLmNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGFsQ29uZmlnRGVmYXVsdHMsIGNvbmZpZyk7XG4gICAgdGhpcy5fc2hvd0JhY2tkcm9wKCk7XG4gICAgdGhpcy5sYXN0RGlzbWlzc1JlYXNvbiA9IG51bGw7XG5cbiAgICByZXR1cm4gdGhpcy5fc2hvd01vZGFsKGNvbnRlbnQpO1xuICB9XG5cbiAgaGlkZShsZXZlbDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubW9kYWxzQ291bnQgPT09IDEpIHtcbiAgICAgIHRoaXMuX2hpZGVCYWNrZHJvcCgpO1xuICAgICAgdGhpcy5yZXNldFNjcm9sbGJhcigpO1xuICAgIH1cbiAgICB0aGlzLm1vZGFsc0NvdW50ID0gdGhpcy5tb2RhbHNDb3VudCA+PSAxID8gdGhpcy5tb2RhbHNDb3VudCAtIDEgOiAwO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5faGlkZU1vZGFsKGxldmVsKTtcbiAgICAgIHRoaXMucmVtb3ZlTG9hZGVycyhsZXZlbCk7XG4gICAgfSwgdGhpcy5jb25maWcuYW5pbWF0ZWQgPyBUUkFOU0lUSU9OX0RVUkFUSU9OUy5CQUNLRFJPUCA6IDApO1xuICB9XG5cbiAgX3Nob3dCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICBjb25zdCBpc0JhY2tkcm9wRW5hYmxlZCA9XG4gICAgICB0aGlzLmNvbmZpZy5iYWNrZHJvcCB8fCB0aGlzLmNvbmZpZy5iYWNrZHJvcCA9PT0gJ3N0YXRpYyc7XG4gICAgY29uc3QgaXNCYWNrZHJvcEluRE9NID1cbiAgICAgICF0aGlzLmJhY2tkcm9wUmVmIHx8ICF0aGlzLmJhY2tkcm9wUmVmLmluc3RhbmNlLmlzU2hvd247XG5cbiAgICBpZiAodGhpcy5tb2RhbHNDb3VudCA9PT0gMSkge1xuICAgICAgdGhpcy5yZW1vdmVCYWNrZHJvcCgpO1xuXG4gICAgICBpZiAoaXNCYWNrZHJvcEVuYWJsZWQgJiYgaXNCYWNrZHJvcEluRE9NKSB7XG4gICAgICAgIHRoaXMuX2JhY2tkcm9wTG9hZGVyXG4gICAgICAgICAgLmF0dGFjaChNb2RhbEJhY2tkcm9wQ29tcG9uZW50KVxuICAgICAgICAgIC50bygnYm9keScpXG4gICAgICAgICAgLnNob3coeyBpc0FuaW1hdGVkOiB0aGlzLmNvbmZpZy5hbmltYXRlZCB9KTtcbiAgICAgICAgdGhpcy5iYWNrZHJvcFJlZiA9IHRoaXMuX2JhY2tkcm9wTG9hZGVyLl9jb21wb25lbnRSZWY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2hpZGVCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYmFja2Ryb3BSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5iYWNrZHJvcFJlZi5pbnN0YW5jZS5pc1Nob3duID0gZmFsc2U7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmNvbmZpZy5hbmltYXRlZCA/IFRSQU5TSVRJT05fRFVSQVRJT05TLkJBQ0tEUk9QIDogMDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVtb3ZlQmFja2Ryb3AoKSwgZHVyYXRpb24pO1xuICB9XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgX3Nob3dNb2RhbChjb250ZW50OiBhbnkpOiBCc01vZGFsUmVmIHtcbiAgICBjb25zdCBtb2RhbExvYWRlciA9IHRoaXMubG9hZGVyc1t0aGlzLmxvYWRlcnMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYnNNb2RhbFJlZiA9IG5ldyBCc01vZGFsUmVmKCk7XG4gICAgY29uc3QgbW9kYWxDb250YWluZXJSZWYgPSBtb2RhbExvYWRlclxuICAgICAgLnByb3ZpZGUoeyBwcm92aWRlOiBNb2RhbE9wdGlvbnMsIHVzZVZhbHVlOiB0aGlzLmNvbmZpZyB9KVxuICAgICAgLnByb3ZpZGUoeyBwcm92aWRlOiBCc01vZGFsUmVmLCB1c2VWYWx1ZTogYnNNb2RhbFJlZiB9KVxuICAgICAgLmF0dGFjaChNb2RhbENvbnRhaW5lckNvbXBvbmVudClcbiAgICAgIC50bygnYm9keScpXG4gICAgICAuc2hvdyh7Y29udGVudCwgaXNBbmltYXRlZDogdGhpcy5jb25maWcuYW5pbWF0ZWQsIGluaXRpYWxTdGF0ZTogdGhpcy5jb25maWcuaW5pdGlhbFN0YXRlLCBic01vZGFsU2VydmljZTogdGhpc30pO1xuICAgIG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLmxldmVsID0gdGhpcy5nZXRNb2RhbHNDb3VudCgpO1xuICAgIGJzTW9kYWxSZWYuaGlkZSA9ICgpID0+IHtcbiAgICAgIG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLmhpZGUoKTtcbiAgICB9O1xuICAgIGJzTW9kYWxSZWYuY29udGVudCA9IG1vZGFsTG9hZGVyLmdldElubmVyQ29tcG9uZW50KCkgfHwgbnVsbDtcblxuICAgIHJldHVybiBic01vZGFsUmVmO1xuICB9XG5cbiAgX2hpZGVNb2RhbChsZXZlbDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbW9kYWxMb2FkZXIgPSB0aGlzLmxvYWRlcnNbbGV2ZWwgLSAxXTtcbiAgICBpZiAobW9kYWxMb2FkZXIpIHtcbiAgICAgIG1vZGFsTG9hZGVyLmhpZGUoKTtcbiAgICB9XG4gIH1cblxuICBnZXRNb2RhbHNDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLm1vZGFsc0NvdW50O1xuICB9XG5cbiAgc2V0RGlzbWlzc1JlYXNvbihyZWFzb246IHN0cmluZykge1xuICAgIHRoaXMubGFzdERpc21pc3NSZWFzb24gPSByZWFzb247XG4gIH1cblxuICByZW1vdmVCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICB0aGlzLl9iYWNrZHJvcExvYWRlci5oaWRlKCk7XG4gICAgdGhpcy5iYWNrZHJvcFJlZiA9IG51bGw7XG4gIH1cblxuICAvKiogQUZURVIgUFIgTUVSR0UgTU9EQUwuQ09NUE9ORU5UIFdJTEwgQkUgVVNJTkcgVEhJUyBDT0RFICovXG4gIC8qKiBTY3JvbGwgYmFyIHRyaWNrcyAqL1xuICAvKiogQGludGVybmFsICovXG4gIGNoZWNrU2Nyb2xsYmFyKCk6IHZvaWQge1xuICAgIHRoaXMuaXNCb2R5T3ZlcmZsb3dpbmcgPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIDwgd2luZG93LmlubmVyV2lkdGg7XG4gICAgdGhpcy5zY3JvbGxiYXJXaWR0aCA9IHRoaXMuZ2V0U2Nyb2xsYmFyV2lkdGgoKTtcbiAgfVxuXG4gIHNldFNjcm9sbGJhcigpOiB2b2lkIHtcbiAgICBpZiAoIWRvY3VtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vcmlnaW5hbEJvZHlQYWRkaW5nID0gcGFyc2VJbnQoXG4gICAgICB3aW5kb3dcbiAgICAgICAgLmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSlcbiAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJ3BhZGRpbmctcmlnaHQnKSB8fCAnMCcsXG4gICAgICAxMFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5pc0JvZHlPdmVyZmxvd2luZykge1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHt0aGlzLm9yaWdpbmFsQm9keVBhZGRpbmcgK1xuICAgICAgICB0aGlzLnNjcm9sbGJhcldpZHRofXB4YDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0U2Nyb2xsYmFyKCk6IHZvaWQge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gYCR7dGhpcy5vcmlnaW5hbEJvZHlQYWRkaW5nfXB4YDtcbiAgfVxuXG4gIC8vIHRoeCBkLndhbHNoXG4gIHByaXZhdGUgZ2V0U2Nyb2xsYmFyV2lkdGgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBzY3JvbGxEaXYgPSB0aGlzLl9yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhzY3JvbGxEaXYsIENMQVNTX05BTUUuU0NST0xMQkFSX01FQVNVUkVSKTtcbiAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LCBzY3JvbGxEaXYpO1xuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gc2Nyb2xsRGl2Lm9mZnNldFdpZHRoIC0gc2Nyb2xsRGl2LmNsaWVudFdpZHRoO1xuICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHksIHNjcm9sbERpdik7XG5cbiAgICByZXR1cm4gc2Nyb2xsYmFyV2lkdGg7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVMb2FkZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGxvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbENvbnRhaW5lckNvbXBvbmVudD4oXG4gICAgICBudWxsLFxuICAgICAgbnVsbCxcbiAgICAgIG51bGxcbiAgICApO1xuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vbkJlZm9yZVNob3csIHRoaXMub25TaG93KTtcbiAgICB0aGlzLmNvcHlFdmVudChsb2FkZXIub25TaG93biwgdGhpcy5vblNob3duKTtcbiAgICB0aGlzLmNvcHlFdmVudChsb2FkZXIub25CZWZvcmVIaWRlLCB0aGlzLm9uSGlkZSk7XG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uSGlkZGVuLCB0aGlzLm9uSGlkZGVuKTtcbiAgICB0aGlzLmxvYWRlcnMucHVzaChsb2FkZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMb2FkZXJzKGxldmVsOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRlcnMuc3BsaWNlKGxldmVsIC0gMSwgMSk7XG4gICAgdGhpcy5sb2FkZXJzLmZvckVhY2goXG4gICAgICAobG9hZGVyOiBDb21wb25lbnRMb2FkZXI8TW9kYWxDb250YWluZXJDb21wb25lbnQ+LCBpOiBudW1iZXIpID0+IHtcbiAgICAgICAgbG9hZGVyLmluc3RhbmNlLmxldmVsID0gaSArIDE7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgcHJpdmF0ZSBjb3B5RXZlbnQoZnJvbTogRXZlbnRFbWl0dGVyPGFueT4sIHRvOiBFdmVudEVtaXR0ZXI8YW55Pikge1xuICAgIGZyb20uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRvLmVtaXQodGhpcy5sYXN0RGlzbWlzc1JlYXNvbik7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtbW9kYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1ib290c3RyYXAvbW9kYWwvIiwic291cmNlcyI6WyJicy1tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBRUwsVUFBVSxFQUVWLFlBQVksRUFFWixnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFtQixzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixvQkFBb0IsRUFDckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0lBOEJsRCx3QkFBWSxlQUFpQyxFQUFVLEdBQTJCO1FBQTNCLFFBQUcsR0FBSCxHQUFHLENBQXdCOztzQkF6QjNELG1CQUFtQjs7c0JBR2QsSUFBSSxZQUFZLEVBQUU7O3VCQUVqQixJQUFJLFlBQVksRUFBRTs7c0JBRW5CLElBQUksWUFBWSxFQUFFOzt3QkFFaEIsSUFBSSxZQUFZLEVBQUU7aUNBRWxCLEtBQUs7bUNBQ0gsQ0FBQzs4QkFFTixDQUFDOzJCQUlOLENBQUM7aUNBQ0ssRUFBRTt1QkFFZ0MsRUFBRTtRQUs5RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUMxQyxJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM3RDtJQUVELG9CQUFvQjtJQUNwQixrQ0FBa0M7Ozs7Ozs7SUFDbEMsNkJBQUk7Ozs7OztJQUFKLFVBQUssT0FBd0MsRUFBRSxNQUFxQjtRQUNsRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFFOUIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDakM7Ozs7O0lBRUQsNkJBQUk7Ozs7SUFBSixVQUFLLEtBQWE7UUFBbEIsaUJBVUM7UUFUQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEUsVUFBVSxDQUFDO1lBQ1QsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixLQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDOUQ7Ozs7SUFFRCxzQ0FBYTs7O0lBQWI7UUFDRSxxQkFBTSxpQkFBaUIsR0FDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDO1FBQzVELHFCQUFNLGVBQWUsR0FDbkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBRTFELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFdEIsRUFBRSxDQUFDLENBQUMsaUJBQWlCLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGVBQWU7cUJBQ2pCLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztxQkFDOUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztxQkFDVixJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDO2FBQ3ZEO1NBQ0Y7S0FDRjs7OztJQUVELHNDQUFhOzs7SUFBYjtRQUFBLGlCQU9DO1FBTkMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLENBQUM7U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDMUMscUJBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxVQUFVLENBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxjQUFjLEVBQUUsRUFBckIsQ0FBcUIsRUFBRSxRQUFRLENBQUMsQ0FBQztLQUNuRDtJQUNELGtDQUFrQzs7Ozs7SUFDbEMsbUNBQVU7Ozs7SUFBVixVQUFXLE9BQVk7UUFDckIscUJBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUQscUJBQU0sVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDcEMscUJBQU0saUJBQWlCLEdBQUcsV0FBVzthQUNsQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDekQsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUM7YUFDdEQsTUFBTSxDQUFDLHVCQUF1QixDQUFDO2FBQy9CLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDVixJQUFJLENBQUMsRUFBQyxPQUFPLFNBQUEsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ25ILGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pELFVBQVUsQ0FBQyxJQUFJLEdBQUc7WUFDaEIsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25DLENBQUM7UUFDRixVQUFVLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLElBQUksQ0FBQztRQUM3RCxVQUFVLENBQUMsUUFBUSxHQUFHLFVBQUMsUUFBZ0I7WUFDckMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1NBQ3BELENBQUM7UUFFRixNQUFNLENBQUMsVUFBVSxDQUFDO0tBQ25COzs7OztJQUVELG1DQUFVOzs7O0lBQVYsVUFBVyxLQUFhO1FBQ3RCLHFCQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1QyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQjtLQUNGOzs7O0lBRUQsdUNBQWM7OztJQUFkO1FBQ0UsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7S0FDekI7Ozs7O0lBRUQseUNBQWdCOzs7O0lBQWhCLFVBQWlCLE1BQWM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztLQUNqQzs7OztJQUVELHVDQUFjOzs7SUFBZDtRQUNFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7S0FDekI7SUFFRCw2REFBNkQ7SUFDN0Qsd0JBQXdCO0lBQ3hCLGdCQUFnQjs7Ozs7SUFDaEIsdUNBQWM7Ozs7SUFBZDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7S0FDaEQ7Ozs7SUFFRCxxQ0FBWTs7O0lBQVo7UUFDRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDZCxNQUFNLENBQUM7U0FDUjtRQUVELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQ2pDLE1BQU07YUFDSCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2FBQy9CLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsRUFDM0MsRUFBRSxDQUNILENBQUM7UUFFRixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQzNCLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBTSxJQUFJLENBQUMsbUJBQW1CO2dCQUM1RCxJQUFJLENBQUMsY0FBYyxPQUFJLENBQUM7U0FDM0I7S0FDRjs7OztJQUVPLHVDQUFjOzs7O1FBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBTSxJQUFJLENBQUMsbUJBQW1CLE9BQUksQ0FBQzs7Ozs7SUFJN0QsMENBQWlCOzs7O1FBQ3ZCLHFCQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyRCxxQkFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFckQsTUFBTSxDQUFDLGNBQWMsQ0FBQzs7Ozs7SUFHaEIsdUNBQWM7Ozs7UUFDcEIscUJBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUNsQyxJQUFJLEVBQ0osSUFBSSxFQUNKLElBQUksQ0FDTCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzs7Ozs7O0lBR3BCLHNDQUFhOzs7O2NBQUMsS0FBYTtRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUNsQixVQUFDLE1BQWdELEVBQUUsQ0FBUztZQUMxRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQy9CLENBQ0YsQ0FBQzs7Ozs7OztJQUlJLGtDQUFTOzs7OztjQUFDLElBQXVCLEVBQUUsRUFBcUI7O1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ2pDLENBQUMsQ0FBQzs7O2dCQXJNTixVQUFVOzs7O2dCQWRULGdCQUFnQjtnQkFHUSxzQkFBc0I7O3lCQVRoRDs7U0FxQmEsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgVGVtcGxhdGVSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlckZhY3RvcnkyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXIsIENvbXBvbmVudExvYWRlckZhY3RvcnkgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2NvbXBvbmVudC1sb2FkZXInO1xuaW1wb3J0IHsgTW9kYWxCYWNrZHJvcENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtYmFja2Ryb3AuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENMQVNTX05BTUUsXG4gIG1vZGFsQ29uZmlnRGVmYXVsdHMsXG4gIE1vZGFsT3B0aW9ucyxcbiAgVFJBTlNJVElPTl9EVVJBVElPTlNcbn0gZnJvbSAnLi9tb2RhbC1vcHRpb25zLmNsYXNzJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICcuL2JzLW1vZGFsLXJlZi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJzTW9kYWxTZXJ2aWNlIHtcbiAgLy8gY29uc3RydWN0b3IgcHJvcHNcbiAgY29uZmlnOiBNb2RhbE9wdGlvbnMgPSBtb2RhbENvbmZpZ0RlZmF1bHRzO1xuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgb25TaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBvblNob3duOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICBvbkhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIG9uSGlkZGVuOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcm90ZWN0ZWQgaXNCb2R5T3ZlcmZsb3dpbmcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIG9yaWdpbmFsQm9keVBhZGRpbmcgPSAwO1xuXG4gIHByb3RlY3RlZCBzY3JvbGxiYXJXaWR0aCA9IDA7XG5cbiAgcHJvdGVjdGVkIGJhY2tkcm9wUmVmOiBDb21wb25lbnRSZWY8TW9kYWxCYWNrZHJvcENvbXBvbmVudD47XG4gIHByaXZhdGUgX2JhY2tkcm9wTG9hZGVyOiBDb21wb25lbnRMb2FkZXI8TW9kYWxCYWNrZHJvcENvbXBvbmVudD47XG4gIHByaXZhdGUgbW9kYWxzQ291bnQgPSAwO1xuICBwcml2YXRlIGxhc3REaXNtaXNzUmVhc29uID0gJyc7XG5cbiAgcHJpdmF0ZSBsb2FkZXJzOiBDb21wb25lbnRMb2FkZXI8TW9kYWxDb250YWluZXJDb21wb25lbnQ+W10gPSBbXTtcblxuICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIGNvbnN0cnVjdG9yKHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MiwgcHJpdmF0ZSBjbGY6IENvbXBvbmVudExvYWRlckZhY3RvcnkpIHtcbiAgICB0aGlzLl9iYWNrZHJvcExvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbEJhY2tkcm9wQ29tcG9uZW50PihcbiAgICAgIG51bGwsXG4gICAgICBudWxsLFxuICAgICAgbnVsbFxuICAgICk7XG4gICAgdGhpcy5fcmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gIH1cblxuICAvKiogU2hvd3MgYSBtb2RhbCAqL1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIHNob3coY29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IGFueSwgY29uZmlnPzogTW9kYWxPcHRpb25zKTogQnNNb2RhbFJlZiB7XG4gICAgdGhpcy5tb2RhbHNDb3VudCsrO1xuICAgIHRoaXMuX2NyZWF0ZUxvYWRlcnMoKTtcbiAgICB0aGlzLmNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGFsQ29uZmlnRGVmYXVsdHMsIGNvbmZpZyk7XG4gICAgdGhpcy5fc2hvd0JhY2tkcm9wKCk7XG4gICAgdGhpcy5sYXN0RGlzbWlzc1JlYXNvbiA9IG51bGw7XG5cbiAgICByZXR1cm4gdGhpcy5fc2hvd01vZGFsKGNvbnRlbnQpO1xuICB9XG5cbiAgaGlkZShsZXZlbDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubW9kYWxzQ291bnQgPT09IDEpIHtcbiAgICAgIHRoaXMuX2hpZGVCYWNrZHJvcCgpO1xuICAgICAgdGhpcy5yZXNldFNjcm9sbGJhcigpO1xuICAgIH1cbiAgICB0aGlzLm1vZGFsc0NvdW50ID0gdGhpcy5tb2RhbHNDb3VudCA+PSAxID8gdGhpcy5tb2RhbHNDb3VudCAtIDEgOiAwO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5faGlkZU1vZGFsKGxldmVsKTtcbiAgICAgIHRoaXMucmVtb3ZlTG9hZGVycyhsZXZlbCk7XG4gICAgfSwgdGhpcy5jb25maWcuYW5pbWF0ZWQgPyBUUkFOU0lUSU9OX0RVUkFUSU9OUy5CQUNLRFJPUCA6IDApO1xuICB9XG5cbiAgX3Nob3dCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICBjb25zdCBpc0JhY2tkcm9wRW5hYmxlZCA9XG4gICAgICB0aGlzLmNvbmZpZy5iYWNrZHJvcCB8fCB0aGlzLmNvbmZpZy5iYWNrZHJvcCA9PT0gJ3N0YXRpYyc7XG4gICAgY29uc3QgaXNCYWNrZHJvcEluRE9NID1cbiAgICAgICF0aGlzLmJhY2tkcm9wUmVmIHx8ICF0aGlzLmJhY2tkcm9wUmVmLmluc3RhbmNlLmlzU2hvd247XG5cbiAgICBpZiAodGhpcy5tb2RhbHNDb3VudCA9PT0gMSkge1xuICAgICAgdGhpcy5yZW1vdmVCYWNrZHJvcCgpO1xuXG4gICAgICBpZiAoaXNCYWNrZHJvcEVuYWJsZWQgJiYgaXNCYWNrZHJvcEluRE9NKSB7XG4gICAgICAgIHRoaXMuX2JhY2tkcm9wTG9hZGVyXG4gICAgICAgICAgLmF0dGFjaChNb2RhbEJhY2tkcm9wQ29tcG9uZW50KVxuICAgICAgICAgIC50bygnYm9keScpXG4gICAgICAgICAgLnNob3coeyBpc0FuaW1hdGVkOiB0aGlzLmNvbmZpZy5hbmltYXRlZCB9KTtcbiAgICAgICAgdGhpcy5iYWNrZHJvcFJlZiA9IHRoaXMuX2JhY2tkcm9wTG9hZGVyLl9jb21wb25lbnRSZWY7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2hpZGVCYWNrZHJvcCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYmFja2Ryb3BSZWYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5iYWNrZHJvcFJlZi5pbnN0YW5jZS5pc1Nob3duID0gZmFsc2U7XG4gICAgY29uc3QgZHVyYXRpb24gPSB0aGlzLmNvbmZpZy5hbmltYXRlZCA/IFRSQU5TSVRJT05fRFVSQVRJT05TLkJBQ0tEUk9QIDogMDtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVtb3ZlQmFja2Ryb3AoKSwgZHVyYXRpb24pO1xuICB9XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgX3Nob3dNb2RhbChjb250ZW50OiBhbnkpOiBCc01vZGFsUmVmIHtcbiAgICBjb25zdCBtb2RhbExvYWRlciA9IHRoaXMubG9hZGVyc1t0aGlzLmxvYWRlcnMubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYnNNb2RhbFJlZiA9IG5ldyBCc01vZGFsUmVmKCk7XG4gICAgY29uc3QgbW9kYWxDb250YWluZXJSZWYgPSBtb2RhbExvYWRlclxuICAgICAgLnByb3ZpZGUoeyBwcm92aWRlOiBNb2RhbE9wdGlvbnMsIHVzZVZhbHVlOiB0aGlzLmNvbmZpZyB9KVxuICAgICAgLnByb3ZpZGUoeyBwcm92aWRlOiBCc01vZGFsUmVmLCB1c2VWYWx1ZTogYnNNb2RhbFJlZiB9KVxuICAgICAgLmF0dGFjaChNb2RhbENvbnRhaW5lckNvbXBvbmVudClcbiAgICAgIC50bygnYm9keScpXG4gICAgICAuc2hvdyh7Y29udGVudCwgaXNBbmltYXRlZDogdGhpcy5jb25maWcuYW5pbWF0ZWQsIGluaXRpYWxTdGF0ZTogdGhpcy5jb25maWcuaW5pdGlhbFN0YXRlLCBic01vZGFsU2VydmljZTogdGhpc30pO1xuICAgIG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLmxldmVsID0gdGhpcy5nZXRNb2RhbHNDb3VudCgpO1xuICAgIGJzTW9kYWxSZWYuaGlkZSA9ICgpID0+IHtcbiAgICAgIG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLmhpZGUoKTtcbiAgICB9O1xuICAgIGJzTW9kYWxSZWYuY29udGVudCA9IG1vZGFsTG9hZGVyLmdldElubmVyQ29tcG9uZW50KCkgfHwgbnVsbDtcbiAgICBic01vZGFsUmVmLnNldENsYXNzID0gKG5ld0NsYXNzOiBzdHJpbmcpID0+IHtcbiAgICAgIG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLmNvbmZpZy5jbGFzcyA9IG5ld0NsYXNzO1xuICAgIH07XG5cbiAgICByZXR1cm4gYnNNb2RhbFJlZjtcbiAgfVxuXG4gIF9oaWRlTW9kYWwobGV2ZWw6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG1vZGFsTG9hZGVyID0gdGhpcy5sb2FkZXJzW2xldmVsIC0gMV07XG4gICAgaWYgKG1vZGFsTG9hZGVyKSB7XG4gICAgICBtb2RhbExvYWRlci5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TW9kYWxzQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbHNDb3VudDtcbiAgfVxuXG4gIHNldERpc21pc3NSZWFzb24ocmVhc29uOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxhc3REaXNtaXNzUmVhc29uID0gcmVhc29uO1xuICB9XG5cbiAgcmVtb3ZlQmFja2Ryb3AoKTogdm9pZCB7XG4gICAgdGhpcy5fYmFja2Ryb3BMb2FkZXIuaGlkZSgpO1xuICAgIHRoaXMuYmFja2Ryb3BSZWYgPSBudWxsO1xuICB9XG5cbiAgLyoqIEFGVEVSIFBSIE1FUkdFIE1PREFMLkNPTVBPTkVOVCBXSUxMIEJFIFVTSU5HIFRISVMgQ09ERSAqL1xuICAvKiogU2Nyb2xsIGJhciB0cmlja3MgKi9cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBjaGVja1Njcm9sbGJhcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzQm9keU92ZXJmbG93aW5nID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA8IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIHRoaXMuc2Nyb2xsYmFyV2lkdGggPSB0aGlzLmdldFNjcm9sbGJhcldpZHRoKCk7XG4gIH1cblxuICBzZXRTY3JvbGxiYXIoKTogdm9pZCB7XG4gICAgaWYgKCFkb2N1bWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMub3JpZ2luYWxCb2R5UGFkZGluZyA9IHBhcnNlSW50KFxuICAgICAgd2luZG93XG4gICAgICAgIC5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpXG4gICAgICAgIC5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXJpZ2h0JykgfHwgJzAnLFxuICAgICAgMTBcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuaXNCb2R5T3ZlcmZsb3dpbmcpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gYCR7dGhpcy5vcmlnaW5hbEJvZHlQYWRkaW5nICtcbiAgICAgICAgdGhpcy5zY3JvbGxiYXJXaWR0aH1weGA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNldFNjcm9sbGJhcigpOiB2b2lkIHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke3RoaXMub3JpZ2luYWxCb2R5UGFkZGluZ31weGA7XG4gIH1cblxuICAvLyB0aHggZC53YWxzaFxuICBwcml2YXRlIGdldFNjcm9sbGJhcldpZHRoKCk6IG51bWJlciB7XG4gICAgY29uc3Qgc2Nyb2xsRGl2ID0gdGhpcy5fcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3Moc2Nyb2xsRGl2LCBDTEFTU19OQU1FLlNDUk9MTEJBUl9NRUFTVVJFUik7XG4gICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgc2Nyb2xsRGl2KTtcbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHNjcm9sbERpdi5vZmZzZXRXaWR0aCAtIHNjcm9sbERpdi5jbGllbnRXaWR0aDtcbiAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5LCBzY3JvbGxEaXYpO1xuXG4gICAgcmV0dXJuIHNjcm9sbGJhcldpZHRoO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlTG9hZGVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsb2FkZXIgPSB0aGlzLmNsZi5jcmVhdGVMb2FkZXI8TW9kYWxDb250YWluZXJDb21wb25lbnQ+KFxuICAgICAgbnVsbCxcbiAgICAgIG51bGwsXG4gICAgICBudWxsXG4gICAgKTtcbiAgICB0aGlzLmNvcHlFdmVudChsb2FkZXIub25CZWZvcmVTaG93LCB0aGlzLm9uU2hvdyk7XG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uU2hvd24sIHRoaXMub25TaG93bik7XG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uQmVmb3JlSGlkZSwgdGhpcy5vbkhpZGUpO1xuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vbkhpZGRlbiwgdGhpcy5vbkhpZGRlbik7XG4gICAgdGhpcy5sb2FkZXJzLnB1c2gobG9hZGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlTG9hZGVycyhsZXZlbDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkZXJzLnNwbGljZShsZXZlbCAtIDEsIDEpO1xuICAgIHRoaXMubG9hZGVycy5mb3JFYWNoKFxuICAgICAgKGxvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PiwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgIGxvYWRlci5pbnN0YW5jZS5sZXZlbCA9IGkgKyAxO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gIHByaXZhdGUgY29weUV2ZW50KGZyb206IEV2ZW50RW1pdHRlcjxhbnk+LCB0bzogRXZlbnRFbWl0dGVyPGFueT4pIHtcbiAgICBmcm9tLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0by5lbWl0KHRoaXMubGFzdERpc21pc3NSZWFzb24pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|