{ "version": 3, "sources": ["../ui/web_modules/@ng-bootstrap/ng-bootstrap.js"], "sourcesContent": ["import { d as __read, b as __extends, f as __assign, e as __values } from '../common/tslib.es6-c4a4947b.js';\nimport { e as map, a as Subject, O as Observable } from '../common/mergeMap-64c6f393.js';\nimport { m as merge } from '../common/merge-183efbc7.js';\nimport { c as combineLatest, B as BehaviorSubject } from '../common/concat-981db672.js';\nimport '../common/Notification-9e07e457.js';\nimport { f as filter } from '../common/filter-d76a729c.js';\nimport { t as timer, r as race } from '../common/timer-a781bf0e.js';\nimport '../common/ArgumentOutOfRangeError-91c779f5.js';\nimport '../common/forkJoin-269e2e92.js';\nimport { N as NEVER, f as fromEvent } from '../common/never-2f7c2de7.js';\nimport { s as startWith, d as distinctUntilChanged, t as takeUntil, a as tap, w as withLatestFrom, b as delay } from '../common/withLatestFrom-853e2e94.js';\nimport { t as take } from '../common/take-7bfdafe5.js';\nimport { s as share } from '../common/share-d41e3509.js';\nimport { s as switchMap } from '../common/switchMap-c513d696.js';\nimport { \u0275\u0275defineInjectable, Directive, Input, ContentChildren, Component, ViewEncapsulation, Output, Optional, Host, ChangeDetectionStrategy, Renderer2, ElementRef, forwardRef, ChangeDetectorRef, Inject, PLATFORM_ID, NgZone, HostListener, Injectable, LOCALE_ID as LOCALE_ID$1, \u0275\u0275inject, ViewChild, ContentChild, ViewContainerRef, ComponentFactoryResolver, TemplateRef, Injector, ApplicationRef, RendererFactory2, INJECTOR, Attribute, InjectionToken, EventEmitter, NgModule } from '../@angular/core.js';\nimport { isPlatformBrowser, formatDate, DOCUMENT, CommonModule, getLocaleDayNames, TranslationWidth, FormStyle, getLocaleMonthNames, getLocaleDayPeriods } from '../@angular/common.js';\nimport '../@angular/platform-browser.js';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '../@angular/forms.js';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toInteger(value) {\n return parseInt(\"\" + value, 10);\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction toString(value) {\n return (value !== undefined && value !== null) ? \"\" + value : '';\n}\n/**\n * @param {?} value\n * @param {?} max\n * @param {?=} min\n * @return {?}\n */\nfunction getValueInRange(value, max, min) {\n if (min === void 0) { min = 0; }\n return Math.max(Math.min(value, max), min);\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isNumber(value) {\n return !isNaN(toInteger(value));\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction padNumber(value) {\n if (isNumber(value)) {\n return (\"0\" + value).slice(-2);\n }\n else {\n return '';\n }\n}\n/**\n * @param {?} text\n * @return {?}\n */\nfunction regExpEscape(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n/**\n * @param {?} element\n * @param {?} className\n * @return {?}\n */\nfunction hasClassName(element, className) {\n return element && element.className && element.className.split &&\n element.className.split(/\\s+/).indexOf(className) >= 0;\n}\nif (typeof Element !== 'undefined' && !Element.prototype.closest) {\n // Polyfill for ie10+\n if (!Element.prototype.matches) {\n // IE uses the non-standard name: msMatchesSelector\n Element.prototype.matches = ((/** @type {?} */ (Element.prototype))).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n Element.prototype.closest = (/**\n * @param {?} s\n * @return {?}\n */\n function (s) {\n /** @type {?} */\n var el = this;\n if (!document.documentElement.contains(el)) {\n return null;\n }\n do {\n if (el.matches(s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n });\n}\n/**\n * @param {?} element\n * @param {?} selector\n * @return {?}\n */\nfunction closest(element, selector) {\n if (!selector) {\n return null;\n }\n return element.closest(selector);\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all accordions used in the application.\n */\nvar NgbAccordionConfig = /** @class */ (function () {\n function NgbAccordionConfig() {\n this.closeOthers = false;\n }\n NgbAccordionConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbAccordionConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbAccordionConfig_Factory() { return new NgbAccordionConfig(); }, token: NgbAccordionConfig, providedIn: \"root\" });\n return NgbAccordionConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextId = 0;\n/**\n * A directive that wraps an accordion panel header with any HTML markup and a toggling button\n * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\n * See the [header customization demo](#/components/accordion/examples#header) for more details.\n *\n * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\n *\n * \\@since 4.1.0\n */\nvar NgbPanelHeader = /** @class */ (function () {\n function NgbPanelHeader(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPanelHeader.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPanelHeader]' },] }\n ];\n /** @nocollapse */\n NgbPanelHeader.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPanelHeader;\n}());\n/**\n * A directive that wraps only the panel title with HTML markup inside.\n *\n * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\n */\nvar NgbPanelTitle = /** @class */ (function () {\n function NgbPanelTitle(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPanelTitle.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPanelTitle]' },] }\n ];\n /** @nocollapse */\n NgbPanelTitle.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPanelTitle;\n}());\n/**\n * A directive that wraps the accordion panel content.\n */\nvar NgbPanelContent = /** @class */ (function () {\n function NgbPanelContent(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPanelContent.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPanelContent]' },] }\n ];\n /** @nocollapse */\n NgbPanelContent.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPanelContent;\n}());\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n */\nvar NgbPanel = /** @class */ (function () {\n function NgbPanel() {\n /**\n * If `true`, the panel is disabled an can't be toggled.\n */\n this.disabled = false;\n /**\n * An optional id for the panel that must be unique on the page.\n *\n * If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n */\n this.id = \"ngb-panel-\" + nextId++;\n this.isOpen = false;\n }\n /**\n * @return {?}\n */\n NgbPanel.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.headerTpl = this.headerTpls.first;\n this.contentTpl = this.contentTpls.first;\n };\n NgbPanel.decorators = [\n { type: Directive, args: [{ selector: 'ngb-panel' },] }\n ];\n NgbPanel.propDecorators = {\n disabled: [{ type: Input }],\n id: [{ type: Input }],\n title: [{ type: Input }],\n type: [{ type: Input }],\n cardClass: [{ type: Input }],\n titleTpls: [{ type: ContentChildren, args: [NgbPanelTitle, { descendants: false },] }],\n headerTpls: [{ type: ContentChildren, args: [NgbPanelHeader, { descendants: false },] }],\n contentTpls: [{ type: ContentChildren, args: [NgbPanelContent, { descendants: false },] }]\n };\n return NgbPanel;\n}());\n/**\n * Accordion is a collection of collapsible panels (bootstrap cards).\n *\n * It can ensure only one panel is opened at a time and allows to customize panel\n * headers.\n */\nvar NgbAccordion = /** @class */ (function () {\n function NgbAccordion(config) {\n /**\n * An array or comma separated strings of panel ids that should be opened **initially**.\n *\n * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n * the `(panelChange)` event.\n */\n this.activeIds = [];\n /**\n * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n */\n this.destroyOnHide = true;\n /**\n * Event emitted right before the panel toggle happens.\n *\n * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n */\n this.panelChange = new EventEmitter();\n this.type = config.type;\n this.closeOtherPanels = config.closeOthers;\n }\n /**\n * Checks if a panel with a given id is expanded.\n */\n /**\n * Checks if a panel with a given id is expanded.\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype.isExpanded = /**\n * Checks if a panel with a given id is expanded.\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) { return this.activeIds.indexOf(panelId) > -1; };\n /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n */\n /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype.expand = /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) { this._changeOpenState(this._findPanelById(panelId), true); };\n /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n */\n /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n * @return {?}\n */\n NgbAccordion.prototype.expandAll = /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.closeOtherPanels) {\n if (this.activeIds.length === 0 && this.panels.length) {\n this._changeOpenState(this.panels.first, true);\n }\n }\n else {\n this.panels.forEach((/**\n * @param {?} panel\n * @return {?}\n */\n function (panel) { return _this._changeOpenState(panel, true); }));\n }\n };\n /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n */\n /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype.collapse = /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) { this._changeOpenState(this._findPanelById(panelId), false); };\n /**\n * Collapses all opened panels.\n */\n /**\n * Collapses all opened panels.\n * @return {?}\n */\n NgbAccordion.prototype.collapseAll = /**\n * Collapses all opened panels.\n * @return {?}\n */\n function () {\n var _this = this;\n this.panels.forEach((/**\n * @param {?} panel\n * @return {?}\n */\n function (panel) { _this._changeOpenState(panel, false); }));\n };\n /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n */\n /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype.toggle = /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) {\n /** @type {?} */\n var panel = this._findPanelById(panelId);\n if (panel) {\n this._changeOpenState(panel, !panel.isOpen);\n }\n };\n /**\n * @return {?}\n */\n NgbAccordion.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n var _this = this;\n // active id updates\n if (isString(this.activeIds)) {\n this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n }\n // update panels open states\n this.panels.forEach((/**\n * @param {?} panel\n * @return {?}\n */\n function (panel) { return panel.isOpen = !panel.disabled && _this.activeIds.indexOf(panel.id) > -1; }));\n // closeOthers updates\n if (this.activeIds.length > 1 && this.closeOtherPanels) {\n this._closeOthers(this.activeIds[0]);\n this._updateActiveIds();\n }\n };\n /**\n * @private\n * @param {?} panel\n * @param {?} nextState\n * @return {?}\n */\n NgbAccordion.prototype._changeOpenState = /**\n * @private\n * @param {?} panel\n * @param {?} nextState\n * @return {?}\n */\n function (panel, nextState) {\n if (panel && !panel.disabled && panel.isOpen !== nextState) {\n /** @type {?} */\n var defaultPrevented_1 = false;\n this.panelChange.emit({ panelId: panel.id, nextState: nextState, preventDefault: (/**\n * @return {?}\n */\n function () { defaultPrevented_1 = true; }) });\n if (!defaultPrevented_1) {\n panel.isOpen = nextState;\n if (nextState && this.closeOtherPanels) {\n this._closeOthers(panel.id);\n }\n this._updateActiveIds();\n }\n }\n };\n /**\n * @private\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype._closeOthers = /**\n * @private\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) {\n this.panels.forEach((/**\n * @param {?} panel\n * @return {?}\n */\n function (panel) {\n if (panel.id !== panelId) {\n panel.isOpen = false;\n }\n }));\n };\n /**\n * @private\n * @param {?} panelId\n * @return {?}\n */\n NgbAccordion.prototype._findPanelById = /**\n * @private\n * @param {?} panelId\n * @return {?}\n */\n function (panelId) { return this.panels.find((/**\n * @param {?} p\n * @return {?}\n */\n function (p) { return p.id === panelId; })); };\n /**\n * @private\n * @return {?}\n */\n NgbAccordion.prototype._updateActiveIds = /**\n * @private\n * @return {?}\n */\n function () {\n this.activeIds = this.panels.filter((/**\n * @param {?} panel\n * @return {?}\n */\n function (panel) { return panel.isOpen && !panel.disabled; })).map((/**\n * @param {?} panel\n * @return {?}\n */\n function (panel) { return panel.id; }));\n };\n NgbAccordion.decorators = [\n { type: Component, args: [{\n selector: 'ngb-accordion',\n exportAs: 'ngbAccordion',\n encapsulation: ViewEncapsulation.None,\n host: { 'class': 'accordion', 'role': 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n template: \"\\n \\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \"\n }] }\n ];\n /** @nocollapse */\n NgbAccordion.ctorParameters = function () { return [\n { type: NgbAccordionConfig }\n ]; };\n NgbAccordion.propDecorators = {\n panels: [{ type: ContentChildren, args: [NgbPanel,] }],\n activeIds: [{ type: Input }],\n closeOtherPanels: [{ type: Input, args: ['closeOthers',] }],\n destroyOnHide: [{ type: Input }],\n type: [{ type: Input }],\n panelChange: [{ type: Output }]\n };\n return NgbAccordion;\n}());\n/**\n * A directive to put on a button that toggles panel opening and closing.\n *\n * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\n *\n * \\@since 4.1.0\n */\nvar NgbPanelToggle = /** @class */ (function () {\n function NgbPanelToggle(accordion, panel) {\n this.accordion = accordion;\n this.panel = panel;\n }\n Object.defineProperty(NgbPanelToggle.prototype, \"ngbPanelToggle\", {\n set: /**\n * @param {?} panel\n * @return {?}\n */\n function (panel) {\n if (panel) {\n this.panel = panel;\n }\n },\n enumerable: true,\n configurable: true\n });\n NgbPanelToggle.decorators = [\n { type: Directive, args: [{\n selector: 'button[ngbPanelToggle]',\n host: {\n 'type': 'button',\n '[disabled]': 'panel.disabled',\n '[class.collapsed]': '!panel.isOpen',\n '[attr.aria-expanded]': 'panel.isOpen',\n '[attr.aria-controls]': 'panel.id',\n '(click)': 'accordion.toggle(panel.id)'\n }\n },] }\n ];\n /** @nocollapse */\n NgbPanelToggle.ctorParameters = function () { return [\n { type: NgbAccordion },\n { type: NgbPanel, decorators: [{ type: Optional }, { type: Host }] }\n ]; };\n NgbPanelToggle.propDecorators = {\n ngbPanelToggle: [{ type: Input }]\n };\n return NgbPanelToggle;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\nvar NgbAccordionModule = /** @class */ (function () {\n function NgbAccordionModule() {\n }\n NgbAccordionModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_ACCORDION_DIRECTIVES, exports: NGB_ACCORDION_DIRECTIVES, imports: [CommonModule] },] }\n ];\n return NgbAccordionModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all alerts used in the application.\n */\nvar NgbAlertConfig = /** @class */ (function () {\n function NgbAlertConfig() {\n this.dismissible = true;\n this.type = 'warning';\n }\n NgbAlertConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbAlertConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbAlertConfig_Factory() { return new NgbAlertConfig(); }, token: NgbAlertConfig, providedIn: \"root\" });\n return NgbAlertConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Alert is a component to provide contextual feedback messages for user.\n *\n * It supports several alert types and can be dismissed.\n */\nvar NgbAlert = /** @class */ (function () {\n function NgbAlert(config, _renderer, _element) {\n this._renderer = _renderer;\n this._element = _element;\n /**\n * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n */\n this.close = new EventEmitter();\n this.dismissible = config.dismissible;\n this.type = config.type;\n }\n /**\n * @return {?}\n */\n NgbAlert.prototype.closeHandler = /**\n * @return {?}\n */\n function () { this.close.emit(null); };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbAlert.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n /** @type {?} */\n var typeChange = changes['type'];\n if (typeChange && !typeChange.firstChange) {\n this._renderer.removeClass(this._element.nativeElement, \"alert-\" + typeChange.previousValue);\n this._renderer.addClass(this._element.nativeElement, \"alert-\" + typeChange.currentValue);\n }\n };\n /**\n * @return {?}\n */\n NgbAlert.prototype.ngOnInit = /**\n * @return {?}\n */\n function () { this._renderer.addClass(this._element.nativeElement, \"alert-\" + this.type); };\n NgbAlert.decorators = [\n { type: Component, args: [{\n selector: 'ngb-alert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'role': 'alert', 'class': 'alert', '[class.alert-dismissible]': 'dismissible' },\n template: \"\\n \\n \\n \",\n styles: [\"ngb-alert{display:block}\"]\n }] }\n ];\n /** @nocollapse */\n NgbAlert.ctorParameters = function () { return [\n { type: NgbAlertConfig },\n { type: Renderer2 },\n { type: ElementRef }\n ]; };\n NgbAlert.propDecorators = {\n dismissible: [{ type: Input }],\n type: [{ type: Input }],\n close: [{ type: Output }]\n };\n return NgbAlert;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbAlertModule = /** @class */ (function () {\n function NgbAlertModule() {\n }\n NgbAlertModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbAlert], exports: [NgbAlert], imports: [CommonModule], entryComponents: [NgbAlert] },] }\n ];\n return NgbAlertModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbButtonLabel = /** @class */ (function () {\n function NgbButtonLabel() {\n }\n NgbButtonLabel.decorators = [\n { type: Directive, args: [{\n selector: '[ngbButtonLabel]',\n host: { '[class.btn]': 'true', '[class.active]': 'active', '[class.disabled]': 'disabled', '[class.focus]': 'focused' }\n },] }\n ];\n return NgbButtonLabel;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_CHECKBOX_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n function () { return NgbCheckBox; })),\n multi: true\n};\n/**\n * Allows to easily create Bootstrap-style checkbox buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nvar NgbCheckBox = /** @class */ (function () {\n function NgbCheckBox(_label, _cd) {\n this._label = _label;\n this._cd = _cd;\n /**\n * If `true`, the checkbox button will be disabled\n */\n this.disabled = false;\n /**\n * The form control value when the checkbox is checked.\n */\n this.valueChecked = true;\n /**\n * The form control value when the checkbox is unchecked.\n */\n this.valueUnChecked = false;\n this.onChange = (/**\n * @param {?} _\n * @return {?}\n */\n function (_) { });\n this.onTouched = (/**\n * @return {?}\n */\n function () { });\n }\n Object.defineProperty(NgbCheckBox.prototype, \"focused\", {\n set: /**\n * @param {?} isFocused\n * @return {?}\n */\n function (isFocused) {\n this._label.focused = isFocused;\n if (!isFocused) {\n this.onTouched();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} $event\n * @return {?}\n */\n NgbCheckBox.prototype.onInputChange = /**\n * @param {?} $event\n * @return {?}\n */\n function ($event) {\n /** @type {?} */\n var modelToPropagate = $event.target.checked ? this.valueChecked : this.valueUnChecked;\n this.onChange(modelToPropagate);\n this.onTouched();\n this.writeValue(modelToPropagate);\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbCheckBox.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbCheckBox.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onTouched = fn; };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbCheckBox.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) {\n this.disabled = isDisabled;\n this._label.disabled = isDisabled;\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbCheckBox.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this.checked = value === this.valueChecked;\n this._label.active = this.checked;\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n this._cd.markForCheck();\n };\n NgbCheckBox.decorators = [\n { type: Directive, args: [{\n selector: '[ngbButton][type=checkbox]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '(change)': 'onInputChange($event)',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n },\n providers: [NGB_CHECKBOX_VALUE_ACCESSOR]\n },] }\n ];\n /** @nocollapse */\n NgbCheckBox.ctorParameters = function () { return [\n { type: NgbButtonLabel },\n { type: ChangeDetectorRef }\n ]; };\n NgbCheckBox.propDecorators = {\n disabled: [{ type: Input }],\n valueChecked: [{ type: Input }],\n valueUnChecked: [{ type: Input }]\n };\n return NgbCheckBox;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_RADIO_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n function () { return NgbRadioGroup; })),\n multi: true\n};\n/** @type {?} */\nvar nextId$1 = 0;\n/**\n * Allows to easily create Bootstrap-style radio buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nvar NgbRadioGroup = /** @class */ (function () {\n function NgbRadioGroup() {\n this._radios = new Set();\n this._value = null;\n /**\n * Name of the radio group applied to radio input elements.\n *\n * Will be applied to all radio input elements inside the group,\n * unless [`NgbRadio`](#/components/buttons/api#NgbRadio)'s specify names themselves.\n *\n * If not provided, will be generated in the `ngb-radio-xx` format.\n */\n this.name = \"ngb-radio-\" + nextId$1++;\n this.onChange = (/**\n * @param {?} _\n * @return {?}\n */\n function (_) { });\n this.onTouched = (/**\n * @return {?}\n */\n function () { });\n }\n Object.defineProperty(NgbRadioGroup.prototype, \"disabled\", {\n get: /**\n * @return {?}\n */\n function () { return this._disabled; },\n set: /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) { this.setDisabledState(isDisabled); },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} radio\n * @return {?}\n */\n NgbRadioGroup.prototype.onRadioChange = /**\n * @param {?} radio\n * @return {?}\n */\n function (radio) {\n this.writeValue(radio.value);\n this.onChange(radio.value);\n };\n /**\n * @return {?}\n */\n NgbRadioGroup.prototype.onRadioValueUpdate = /**\n * @return {?}\n */\n function () { this._updateRadiosValue(); };\n /**\n * @param {?} radio\n * @return {?}\n */\n NgbRadioGroup.prototype.register = /**\n * @param {?} radio\n * @return {?}\n */\n function (radio) { this._radios.add(radio); };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbRadioGroup.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbRadioGroup.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onTouched = fn; };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbRadioGroup.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) {\n this._disabled = isDisabled;\n this._updateRadiosDisabled();\n };\n /**\n * @param {?} radio\n * @return {?}\n */\n NgbRadioGroup.prototype.unregister = /**\n * @param {?} radio\n * @return {?}\n */\n function (radio) { this._radios.delete(radio); };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbRadioGroup.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._value = value;\n this._updateRadiosValue();\n };\n /**\n * @private\n * @return {?}\n */\n NgbRadioGroup.prototype._updateRadiosValue = /**\n * @private\n * @return {?}\n */\n function () {\n var _this = this;\n this._radios.forEach((/**\n * @param {?} radio\n * @return {?}\n */\n function (radio) { return radio.updateValue(_this._value); }));\n };\n /**\n * @private\n * @return {?}\n */\n NgbRadioGroup.prototype._updateRadiosDisabled = /**\n * @private\n * @return {?}\n */\n function () { this._radios.forEach((/**\n * @param {?} radio\n * @return {?}\n */\n function (radio) { return radio.updateDisabled(); })); };\n NgbRadioGroup.decorators = [\n { type: Directive, args: [{ selector: '[ngbRadioGroup]', host: { 'role': 'radiogroup' }, providers: [NGB_RADIO_VALUE_ACCESSOR] },] }\n ];\n NgbRadioGroup.propDecorators = {\n name: [{ type: Input }]\n };\n return NgbRadioGroup;\n}());\n/**\n * A directive that marks an input of type \"radio\" as a part of the\n * [`NgbRadioGroup`](#/components/buttons/api#NgbRadioGroup).\n */\nvar NgbRadio = /** @class */ (function () {\n function NgbRadio(_group, _label, _renderer, _element, _cd) {\n this._group = _group;\n this._label = _label;\n this._renderer = _renderer;\n this._element = _element;\n this._cd = _cd;\n this._value = null;\n this._group.register(this);\n this.updateDisabled();\n }\n Object.defineProperty(NgbRadio.prototype, \"value\", {\n get: /**\n * @return {?}\n */\n function () { return this._value; },\n /**\n * The form control value when current radio button is checked.\n */\n set: /**\n * The form control value when current radio button is checked.\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._value = value;\n /** @type {?} */\n var stringValue = value ? value.toString() : '';\n this._renderer.setProperty(this._element.nativeElement, 'value', stringValue);\n this._group.onRadioValueUpdate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbRadio.prototype, \"disabled\", {\n get: /**\n * @return {?}\n */\n function () { return this._group.disabled || this._disabled; },\n /**\n * If `true`, current radio button will be disabled.\n */\n set: /**\n * If `true`, current radio button will be disabled.\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) {\n this._disabled = isDisabled !== false;\n this.updateDisabled();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbRadio.prototype, \"focused\", {\n set: /**\n * @param {?} isFocused\n * @return {?}\n */\n function (isFocused) {\n if (this._label) {\n this._label.focused = isFocused;\n }\n if (!isFocused) {\n this._group.onTouched();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbRadio.prototype, \"checked\", {\n get: /**\n * @return {?}\n */\n function () { return this._checked; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbRadio.prototype, \"nameAttr\", {\n get: /**\n * @return {?}\n */\n function () { return this.name || this._group.name; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n NgbRadio.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () { this._group.unregister(this); };\n /**\n * @return {?}\n */\n NgbRadio.prototype.onChange = /**\n * @return {?}\n */\n function () { this._group.onRadioChange(this); };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbRadio.prototype.updateValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n if (this.value !== value) {\n this._cd.markForCheck();\n }\n this._checked = this.value === value;\n this._label.active = this._checked;\n };\n /**\n * @return {?}\n */\n NgbRadio.prototype.updateDisabled = /**\n * @return {?}\n */\n function () { this._label.disabled = this.disabled; };\n NgbRadio.decorators = [\n { type: Directive, args: [{\n selector: '[ngbButton][type=radio]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '[name]': 'nameAttr',\n '(change)': 'onChange()',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n }\n },] }\n ];\n /** @nocollapse */\n NgbRadio.ctorParameters = function () { return [\n { type: NgbRadioGroup },\n { type: NgbButtonLabel },\n { type: Renderer2 },\n { type: ElementRef },\n { type: ChangeDetectorRef }\n ]; };\n NgbRadio.propDecorators = {\n name: [{ type: Input }],\n value: [{ type: Input, args: ['value',] }],\n disabled: [{ type: Input, args: ['disabled',] }]\n };\n return NgbRadio;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_BUTTON_DIRECTIVES = [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio];\nvar NgbButtonsModule = /** @class */ (function () {\n function NgbButtonsModule() {\n }\n NgbButtonsModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_BUTTON_DIRECTIVES, exports: NGB_BUTTON_DIRECTIVES },] }\n ];\n return NgbButtonsModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all carousels used in the application.\n */\nvar NgbCarouselConfig = /** @class */ (function () {\n function NgbCarouselConfig() {\n this.interval = 5000;\n this.wrap = true;\n this.keyboard = true;\n this.pauseOnHover = true;\n this.showNavigationArrows = true;\n this.showNavigationIndicators = true;\n }\n NgbCarouselConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbCarouselConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbCarouselConfig_Factory() { return new NgbCarouselConfig(); }, token: NgbCarouselConfig, providedIn: \"root\" });\n return NgbCarouselConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextId$2 = 0;\n/**\n * A directive that wraps the individual carousel slide.\n */\nvar NgbSlide = /** @class */ (function () {\n function NgbSlide(tplRef) {\n this.tplRef = tplRef;\n /**\n * Slide id that must be unique for the entire document.\n *\n * If not provided, will be generated in the `ngb-slide-xx` format.\n */\n this.id = \"ngb-slide-\" + nextId$2++;\n }\n NgbSlide.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbSlide]' },] }\n ];\n /** @nocollapse */\n NgbSlide.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n NgbSlide.propDecorators = {\n id: [{ type: Input }]\n };\n return NgbSlide;\n}());\n/**\n * Carousel is a component to easily create and control slideshows.\n *\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\n */\nvar NgbCarousel = /** @class */ (function () {\n function NgbCarousel(config, _platformId, _ngZone, _cd) {\n this._platformId = _platformId;\n this._ngZone = _ngZone;\n this._cd = _cd;\n this.NgbSlideEventSource = NgbSlideEventSource;\n this._destroy$ = new Subject();\n this._interval$ = new BehaviorSubject(0);\n this._mouseHover$ = new BehaviorSubject(false);\n this._pauseOnHover$ = new BehaviorSubject(false);\n this._pause$ = new BehaviorSubject(false);\n this._wrap$ = new BehaviorSubject(false);\n /**\n * An event emitted right after the slide transition is completed.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n */\n this.slide = new EventEmitter();\n this.interval = config.interval;\n this.wrap = config.wrap;\n this.keyboard = config.keyboard;\n this.pauseOnHover = config.pauseOnHover;\n this.showNavigationArrows = config.showNavigationArrows;\n this.showNavigationIndicators = config.showNavigationIndicators;\n }\n Object.defineProperty(NgbCarousel.prototype, \"interval\", {\n get: /**\n * @return {?}\n */\n function () { return this._interval$.value; },\n /**\n * Time in milliseconds before the next slide is shown.\n */\n set: /**\n * Time in milliseconds before the next slide is shown.\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._interval$.next(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbCarousel.prototype, \"wrap\", {\n get: /**\n * @return {?}\n */\n function () { return this._wrap$.value; },\n /**\n * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n */\n set: /**\n * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._wrap$.next(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbCarousel.prototype, \"pauseOnHover\", {\n get: /**\n * @return {?}\n */\n function () { return this._pauseOnHover$.value; },\n /**\n * If `true`, will pause slide switching when mouse cursor hovers the slide.\n *\n * @since 2.2.0\n */\n set: /**\n * If `true`, will pause slide switching when mouse cursor hovers the slide.\n *\n * \\@since 2.2.0\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._pauseOnHover$.next(value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n NgbCarousel.prototype.mouseEnter = /**\n * @return {?}\n */\n function () {\n this._mouseHover$.next(true);\n };\n /**\n * @return {?}\n */\n NgbCarousel.prototype.mouseLeave = /**\n * @return {?}\n */\n function () {\n this._mouseHover$.next(false);\n };\n /**\n * @return {?}\n */\n NgbCarousel.prototype.ngAfterContentInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n // setInterval() doesn't play well with SSR and protractor,\n // so we should run it in the browser and outside Angular\n if (isPlatformBrowser(this._platformId)) {\n this._ngZone.runOutsideAngular((/**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var hasNextSlide$ = combineLatest(_this.slide.pipe(map((/**\n * @param {?} slideEvent\n * @return {?}\n */\n function (slideEvent) { return slideEvent.current; })), startWith(_this.activeId)), _this._wrap$, _this.slides.changes.pipe(startWith(null)))\n .pipe(map((/**\n * @param {?} __0\n * @return {?}\n */\n function (_a) {\n var _b = __read(_a, 2), currentSlideId = _b[0], wrap = _b[1];\n /** @type {?} */\n var slideArr = _this.slides.toArray();\n /** @type {?} */\n var currentSlideIdx = _this._getSlideIdxById(currentSlideId);\n return wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\n })), distinctUntilChanged());\n combineLatest(_this._pause$, _this._pauseOnHover$, _this._mouseHover$, _this._interval$, hasNextSlide$)\n .pipe(map((/**\n * @param {?} __0\n * @return {?}\n */\n function (_a) {\n var _b = __read(_a, 5), pause = _b[0], pauseOnHover = _b[1], mouseHover = _b[2], interval = _b[3], hasNextSlide = _b[4];\n return ((pause || (pauseOnHover && mouseHover) || !hasNextSlide) ? 0 : interval);\n })), distinctUntilChanged(), switchMap((/**\n * @param {?} interval\n * @return {?}\n */\n function (interval) { return interval > 0 ? timer(interval, interval) : NEVER; })), takeUntil(_this._destroy$))\n .subscribe((/**\n * @return {?}\n */\n function () { return _this._ngZone.run((/**\n * @return {?}\n */\n function () { return _this.next(NgbSlideEventSource.TIMER); })); }));\n }));\n }\n this.slides.changes.pipe(takeUntil(this._destroy$)).subscribe((/**\n * @return {?}\n */\n function () { return _this._cd.markForCheck(); }));\n };\n /**\n * @return {?}\n */\n NgbCarousel.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var activeSlide = this._getSlideById(this.activeId);\n this.activeId = activeSlide ? activeSlide.id : (this.slides.length ? this.slides.first.id : null);\n };\n /**\n * @return {?}\n */\n NgbCarousel.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () { this._destroy$.next(); };\n /**\n * Navigates to a slide with the specified identifier.\n */\n /**\n * Navigates to a slide with the specified identifier.\n * @param {?} slideId\n * @param {?=} source\n * @return {?}\n */\n NgbCarousel.prototype.select = /**\n * Navigates to a slide with the specified identifier.\n * @param {?} slideId\n * @param {?=} source\n * @return {?}\n */\n function (slideId, source) {\n this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\n };\n /**\n * Navigates to the previous slide.\n */\n /**\n * Navigates to the previous slide.\n * @param {?=} source\n * @return {?}\n */\n NgbCarousel.prototype.prev = /**\n * Navigates to the previous slide.\n * @param {?=} source\n * @return {?}\n */\n function (source) {\n this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.RIGHT, source);\n };\n /**\n * Navigates to the next slide.\n */\n /**\n * Navigates to the next slide.\n * @param {?=} source\n * @return {?}\n */\n NgbCarousel.prototype.next = /**\n * Navigates to the next slide.\n * @param {?=} source\n * @return {?}\n */\n function (source) {\n this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.LEFT, source);\n };\n /**\n * Pauses cycling through the slides.\n */\n /**\n * Pauses cycling through the slides.\n * @return {?}\n */\n NgbCarousel.prototype.pause = /**\n * Pauses cycling through the slides.\n * @return {?}\n */\n function () { this._pause$.next(true); };\n /**\n * Restarts cycling through the slides from left to right.\n */\n /**\n * Restarts cycling through the slides from left to right.\n * @return {?}\n */\n NgbCarousel.prototype.cycle = /**\n * Restarts cycling through the slides from left to right.\n * @return {?}\n */\n function () { this._pause$.next(false); };\n /**\n * @private\n * @param {?} slideIdx\n * @param {?} direction\n * @param {?=} source\n * @return {?}\n */\n NgbCarousel.prototype._cycleToSelected = /**\n * @private\n * @param {?} slideIdx\n * @param {?} direction\n * @param {?=} source\n * @return {?}\n */\n function (slideIdx, direction, source) {\n /** @type {?} */\n var selectedSlide = this._getSlideById(slideIdx);\n if (selectedSlide && selectedSlide.id !== this.activeId) {\n this.slide.emit({ prev: this.activeId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source: source });\n this.activeId = selectedSlide.id;\n }\n // we get here after the interval fires or any external API call like next(), prev() or select()\n this._cd.markForCheck();\n };\n /**\n * @private\n * @param {?} currentActiveSlideId\n * @param {?} nextActiveSlideId\n * @return {?}\n */\n NgbCarousel.prototype._getSlideEventDirection = /**\n * @private\n * @param {?} currentActiveSlideId\n * @param {?} nextActiveSlideId\n * @return {?}\n */\n function (currentActiveSlideId, nextActiveSlideId) {\n /** @type {?} */\n var currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n /** @type {?} */\n var nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.RIGHT : NgbSlideEventDirection.LEFT;\n };\n /**\n * @private\n * @param {?} slideId\n * @return {?}\n */\n NgbCarousel.prototype._getSlideById = /**\n * @private\n * @param {?} slideId\n * @return {?}\n */\n function (slideId) { return this.slides.find((/**\n * @param {?} slide\n * @return {?}\n */\n function (slide) { return slide.id === slideId; })); };\n /**\n * @private\n * @param {?} slideId\n * @return {?}\n */\n NgbCarousel.prototype._getSlideIdxById = /**\n * @private\n * @param {?} slideId\n * @return {?}\n */\n function (slideId) {\n return this.slides.toArray().indexOf(this._getSlideById(slideId));\n };\n /**\n * @private\n * @param {?} currentSlideId\n * @return {?}\n */\n NgbCarousel.prototype._getNextSlide = /**\n * @private\n * @param {?} currentSlideId\n * @return {?}\n */\n function (currentSlideId) {\n /** @type {?} */\n var slideArr = this.slides.toArray();\n /** @type {?} */\n var currentSlideIdx = this._getSlideIdxById(currentSlideId);\n /** @type {?} */\n var isLastSlide = currentSlideIdx === slideArr.length - 1;\n return isLastSlide ? (this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id) :\n slideArr[currentSlideIdx + 1].id;\n };\n /**\n * @private\n * @param {?} currentSlideId\n * @return {?}\n */\n NgbCarousel.prototype._getPrevSlide = /**\n * @private\n * @param {?} currentSlideId\n * @return {?}\n */\n function (currentSlideId) {\n /** @type {?} */\n var slideArr = this.slides.toArray();\n /** @type {?} */\n var currentSlideIdx = this._getSlideIdxById(currentSlideId);\n /** @type {?} */\n var isFirstSlide = currentSlideIdx === 0;\n return isFirstSlide ? (this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id) :\n slideArr[currentSlideIdx - 1].id;\n };\n NgbCarousel.decorators = [\n { type: Component, args: [{\n selector: 'ngb-carousel',\n exportAs: 'ngbCarousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'carousel slide',\n '[style.display]': '\"block\"',\n 'tabIndex': '0',\n '(keydown.arrowLeft)': 'keyboard && prev(NgbSlideEventSource.ARROW_LEFT)',\n '(keydown.arrowRight)': 'keyboard && next(NgbSlideEventSource.ARROW_RIGHT)'\n },\n template: \"\\n
    \\n
  1. \\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n Previous\\n \\n \\n \\n Next\\n \\n \"\n }] }\n ];\n /** @nocollapse */\n NgbCarousel.ctorParameters = function () { return [\n { type: NgbCarouselConfig },\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: NgZone },\n { type: ChangeDetectorRef }\n ]; };\n NgbCarousel.propDecorators = {\n slides: [{ type: ContentChildren, args: [NgbSlide,] }],\n activeId: [{ type: Input }],\n interval: [{ type: Input }],\n wrap: [{ type: Input }],\n keyboard: [{ type: Input }],\n pauseOnHover: [{ type: Input }],\n showNavigationArrows: [{ type: Input }],\n showNavigationIndicators: [{ type: Input }],\n slide: [{ type: Output }],\n mouseEnter: [{ type: HostListener, args: ['mouseenter',] }],\n mouseLeave: [{ type: HostListener, args: ['mouseleave',] }]\n };\n return NgbCarousel;\n}());\n/** @enum {string} */\nvar NgbSlideEventDirection = {\n LEFT: (/** @type {?} */ ('left')),\n RIGHT: (/** @type {?} */ ('right')),\n};\n/** @enum {string} */\nvar NgbSlideEventSource = {\n TIMER: 'timer',\n ARROW_LEFT: 'arrowLeft',\n ARROW_RIGHT: 'arrowRight',\n INDICATOR: 'indicator',\n};\n/** @type {?} */\nvar NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbCarouselModule = /** @class */ (function () {\n function NgbCarouselModule() {\n }\n NgbCarouselModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_CAROUSEL_DIRECTIVES, exports: NGB_CAROUSEL_DIRECTIVES, imports: [CommonModule] },] }\n ];\n return NgbCarouselModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A directive to provide a simple way of hiding and showing elements on the page.\n */\nvar NgbCollapse = /** @class */ (function () {\n function NgbCollapse() {\n /**\n * If `true`, will collapse the element or show it otherwise.\n */\n this.collapsed = false;\n }\n NgbCollapse.decorators = [\n { type: Directive, args: [{\n selector: '[ngbCollapse]',\n exportAs: 'ngbCollapse',\n host: { '[class.collapse]': 'true', '[class.show]': '!collapsed' }\n },] }\n ];\n NgbCollapse.propDecorators = {\n collapsed: [{ type: Input, args: ['ngbCollapse',] }]\n };\n return NgbCollapse;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbCollapseModule = /** @class */ (function () {\n function NgbCollapseModule() {\n }\n NgbCollapseModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbCollapse], exports: [NgbCollapse] },] }\n ];\n return NgbCollapseModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * \\@since 3.0.0\n */\nvar /**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * \\@since 3.0.0\n */\nNgbDate = /** @class */ (function () {\n function NgbDate(year, month, day) {\n this.year = isInteger(year) ? year : null;\n this.month = isInteger(month) ? month : null;\n this.day = isInteger(day) ? day : null;\n }\n /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n */\n /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n * @param {?} date\n * @return {?}\n */\n NgbDate.from = /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n * @param {?} date\n * @return {?}\n */\n function (date) {\n if (date instanceof NgbDate) {\n return date;\n }\n return date ? new NgbDate(date.year, date.month, date.day) : null;\n };\n /**\n * Checks if the current date is equal to another date.\n */\n /**\n * Checks if the current date is equal to another date.\n * @param {?} other\n * @return {?}\n */\n NgbDate.prototype.equals = /**\n * Checks if the current date is equal to another date.\n * @param {?} other\n * @return {?}\n */\n function (other) {\n return other && this.year === other.year && this.month === other.month && this.day === other.day;\n };\n /**\n * Checks if the current date is before another date.\n */\n /**\n * Checks if the current date is before another date.\n * @param {?} other\n * @return {?}\n */\n NgbDate.prototype.before = /**\n * Checks if the current date is before another date.\n * @param {?} other\n * @return {?}\n */\n function (other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day < other.day;\n }\n else {\n return this.month < other.month;\n }\n }\n else {\n return this.year < other.year;\n }\n };\n /**\n * Checks if the current date is after another date.\n */\n /**\n * Checks if the current date is after another date.\n * @param {?} other\n * @return {?}\n */\n NgbDate.prototype.after = /**\n * Checks if the current date is after another date.\n * @param {?} other\n * @return {?}\n */\n function (other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day > other.day;\n }\n else {\n return this.month > other.month;\n }\n }\n else {\n return this.year > other.year;\n }\n };\n return NgbDate;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} jsDate\n * @return {?}\n */\nfunction fromJSDate(jsDate) {\n return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\n/**\n * @param {?} date\n * @return {?}\n */\nfunction toJSDate(date) {\n /** @type {?} */\n var jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // this is done avoid 30 -> 1930 conversion\n if (!isNaN(jsDate.getTime())) {\n jsDate.setFullYear(date.year);\n }\n return jsDate;\n}\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\n return new NgbCalendarGregorian();\n}\n/**\n * A service that represents the calendar used by the datepicker.\n *\n * The default implementation uses the Gregorian calendar. You can inject it in your own\n * implementations if necessary to simplify `NgbDate` calculations.\n * @abstract\n */\nvar NgbCalendar = /** @class */ (function () {\n function NgbCalendar() {\n }\n NgbCalendar.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY },] }\n ];\n /** @nocollapse */ NgbCalendar.ngInjectableDef = \u0275\u0275defineInjectable({ factory: NGB_DATEPICKER_CALENDAR_FACTORY, token: NgbCalendar, providedIn: \"root\" });\n return NgbCalendar;\n}());\nvar NgbCalendarGregorian = /** @class */ (function (_super) {\n __extends(NgbCalendarGregorian, _super);\n function NgbCalendarGregorian() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getDaysPerWeek = /**\n * @return {?}\n */\n function () { return 7; };\n /**\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getMonths = /**\n * @return {?}\n */\n function () { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; };\n /**\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getWeeksPerMonth = /**\n * @return {?}\n */\n function () { return 6; };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getNext = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n /** @type {?} */\n var jsDate = toJSDate(date);\n /** @type {?} */\n var checkMonth = true;\n /** @type {?} */\n var expectedMonth = jsDate.getMonth();\n switch (period) {\n case 'y':\n jsDate.setFullYear(jsDate.getFullYear() + number);\n break;\n case 'm':\n expectedMonth += number;\n jsDate.setMonth(expectedMonth);\n expectedMonth = expectedMonth % 12;\n if (expectedMonth < 0) {\n expectedMonth = expectedMonth + 12;\n }\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n checkMonth = false;\n break;\n default:\n return date;\n }\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n // this means the destination month has less days than the initial month\n // let's go back to the end of the previous month:\n jsDate.setDate(0);\n }\n return fromJSDate(jsDate);\n };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getPrev = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n return this.getNext(date, period, -number);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getWeekday = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var jsDate = toJSDate(date);\n /** @type {?} */\n var day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n };\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getWeekNumber = /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n function (week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n /** @type {?} */\n var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n /** @type {?} */\n var date = week[thursdayIndex];\n /** @type {?} */\n var jsDate = toJSDate(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n // Thursday\n /** @type {?} */\n var time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n };\n /**\n * @return {?}\n */\n NgbCalendarGregorian.prototype.getToday = /**\n * @return {?}\n */\n function () { return fromJSDate(new Date()); };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarGregorian.prototype.isValid = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n /** @type {?} */\n var jsDate = toJSDate(date);\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month &&\n jsDate.getDate() === date.day;\n };\n NgbCalendarGregorian.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarGregorian;\n}(NgbCalendar));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} prev\n * @param {?} next\n * @return {?}\n */\nfunction isChangedDate(prev, next) {\n return !dateComparator(prev, next);\n}\n/**\n * @param {?} prev\n * @param {?} next\n * @return {?}\n */\nfunction isChangedMonth(prev, next) {\n return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\n/**\n * @param {?} prev\n * @param {?} next\n * @return {?}\n */\nfunction dateComparator(prev, next) {\n return (!prev && !next) || (!!prev && !!next && prev.equals(next));\n}\n/**\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction checkMinBeforeMax(minDate, maxDate) {\n if (maxDate && minDate && maxDate.before(minDate)) {\n throw new Error(\"'maxDate' \" + maxDate + \" should be greater than 'minDate' \" + minDate);\n }\n}\n/**\n * @param {?} date\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction checkDateInRange(date, minDate, maxDate) {\n if (date && minDate && date.before(minDate)) {\n return minDate;\n }\n if (date && maxDate && date.after(maxDate)) {\n return maxDate;\n }\n return date;\n}\n/**\n * @param {?} date\n * @param {?} state\n * @return {?}\n */\nfunction isDateSelectable(date, state) {\n var minDate = state.minDate, maxDate = state.maxDate, disabled = state.disabled, markDisabled = state.markDisabled;\n // clang-format off\n return !(!isDefined(date) ||\n disabled ||\n (markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\n (minDate && date.before(minDate)) ||\n (maxDate && date.after(maxDate)));\n // clang-format on\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n /** @type {?} */\n var months = calendar.getMonths(date.year);\n if (minDate && date.year === minDate.year) {\n /** @type {?} */\n var index = months.findIndex((/**\n * @param {?} month\n * @return {?}\n */\n function (month) { return month === minDate.month; }));\n months = months.slice(index);\n }\n if (maxDate && date.year === maxDate.year) {\n /** @type {?} */\n var index = months.findIndex((/**\n * @param {?} month\n * @return {?}\n */\n function (month) { return month === maxDate.month; }));\n months = months.slice(0, index + 1);\n }\n return months;\n}\n/**\n * @param {?} date\n * @param {?} minDate\n * @param {?} maxDate\n * @return {?}\n */\nfunction generateSelectBoxYears(date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n /** @type {?} */\n var start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\n /** @type {?} */\n var end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\n /** @type {?} */\n var length = end - start + 1;\n /** @type {?} */\n var numbers = Array(length);\n for (var i = 0; i < length; i++) {\n numbers[i] = start + i;\n }\n return numbers;\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} maxDate\n * @return {?}\n */\nfunction nextMonthDisabled(calendar, date, maxDate) {\n /** @type {?} */\n var nextDate = Object.assign(calendar.getNext(date, 'm'), { day: 1 });\n return maxDate && nextDate.after(maxDate);\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} minDate\n * @return {?}\n */\nfunction prevMonthDisabled(calendar, date, minDate) {\n /** @type {?} */\n var prevDate = Object.assign(calendar.getPrev(date, 'm'), { day: 1 });\n return minDate && (prevDate.year === minDate.year && prevDate.month < minDate.month ||\n prevDate.year < minDate.year && minDate.month === 1);\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} state\n * @param {?} i18n\n * @param {?} force\n * @return {?}\n */\nfunction buildMonths(calendar, date, state, i18n, force) {\n var displayMonths = state.displayMonths, months = state.months;\n // move old months to a temporary array\n /** @type {?} */\n var monthsToReuse = months.splice(0, months.length);\n // generate new first dates, nullify or reuse months\n /** @type {?} */\n var firstDates = Array.from({ length: displayMonths }, (/**\n * @param {?} _\n * @param {?} i\n * @return {?}\n */\n function (_, i) {\n /** @type {?} */\n var firstDate = Object.assign(calendar.getNext(date, 'm', i), { day: 1 });\n months[i] = null;\n if (!force) {\n /** @type {?} */\n var reusedIndex = monthsToReuse.findIndex((/**\n * @param {?} month\n * @return {?}\n */\n function (month) { return month.firstDate.equals(firstDate); }));\n // move reused month back to months\n if (reusedIndex !== -1) {\n months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n }\n }\n return firstDate;\n }));\n // rebuild nullified months\n firstDates.forEach((/**\n * @param {?} firstDate\n * @param {?} i\n * @return {?}\n */\n function (firstDate, i) {\n if (months[i] === null) {\n months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || (/** @type {?} */ ({})));\n }\n }));\n return months;\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} state\n * @param {?} i18n\n * @param {?=} month\n * @return {?}\n */\nfunction buildMonth(calendar, date, state, i18n, month) {\n if (month === void 0) { month = (/** @type {?} */ ({})); }\n var dayTemplateData = state.dayTemplateData, minDate = state.minDate, maxDate = state.maxDate, firstDayOfWeek = state.firstDayOfWeek, markDisabled = state.markDisabled, outsideDays = state.outsideDays;\n /** @type {?} */\n var calendarToday = calendar.getToday();\n month.firstDate = null;\n month.lastDate = null;\n month.number = date.month;\n month.year = date.year;\n month.weeks = month.weeks || [];\n month.weekdays = month.weekdays || [];\n date = getFirstViewDate(calendar, date, firstDayOfWeek);\n // month has weeks\n for (var week = 0; week < calendar.getWeeksPerMonth(); week++) {\n /** @type {?} */\n var weekObject = month.weeks[week];\n if (!weekObject) {\n weekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\n }\n /** @type {?} */\n var days = weekObject.days;\n // week has days\n for (var day = 0; day < calendar.getDaysPerWeek(); day++) {\n if (week === 0) {\n month.weekdays[day] = calendar.getWeekday(date);\n }\n /** @type {?} */\n var newDate = new NgbDate(date.year, date.month, date.day);\n /** @type {?} */\n var nextDate = calendar.getNext(newDate);\n /** @type {?} */\n var ariaLabel = i18n.getDayAriaLabel(newDate);\n // marking date as disabled\n /** @type {?} */\n var disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\n if (!disabled && markDisabled) {\n disabled = markDisabled(newDate, { month: month.number, year: month.year });\n }\n // today\n /** @type {?} */\n var today = newDate.equals(calendarToday);\n // adding user-provided data to the context\n /** @type {?} */\n var contextUserData = dayTemplateData ? dayTemplateData(newDate, { month: month.number, year: month.year }) : undefined;\n // saving first date of the month\n if (month.firstDate === null && newDate.month === month.number) {\n month.firstDate = newDate;\n }\n // saving last date of the month\n if (newDate.month === month.number && nextDate.month !== month.number) {\n month.lastDate = newDate;\n }\n /** @type {?} */\n var dayObject = days[day];\n if (!dayObject) {\n dayObject = days[day] = (/** @type {?} */ ({}));\n }\n dayObject.date = newDate;\n dayObject.context = Object.assign(dayObject.context || {}, {\n $implicit: newDate,\n date: newDate,\n data: contextUserData,\n currentMonth: month.number,\n currentYear: month.year, disabled: disabled,\n focused: false,\n selected: false, today: today\n });\n dayObject.tabindex = -1;\n dayObject.ariaLabel = ariaLabel;\n dayObject.hidden = false;\n date = nextDate;\n }\n weekObject.number = calendar.getWeekNumber(days.map((/**\n * @param {?} day\n * @return {?}\n */\n function (day) { return day.date; })), firstDayOfWeek);\n // marking week as collapsed\n weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number &&\n days[days.length - 1].date.month !== month.number;\n }\n return month;\n}\n/**\n * @param {?} calendar\n * @param {?} date\n * @param {?} firstDayOfWeek\n * @return {?}\n */\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\n /** @type {?} */\n var daysPerWeek = calendar.getDaysPerWeek();\n /** @type {?} */\n var firstMonthDate = new NgbDate(date.year, date.month, 1);\n /** @type {?} */\n var dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} locale\n * @return {?}\n */\nfunction NGB_DATEPICKER_18N_FACTORY(locale) {\n return new NgbDatepickerI18nDefault(locale);\n}\n/**\n * A service supplying i18n data to the datepicker component.\n *\n * The default implementation of this service uses the Angular locale and registered locale data for\n * weekdays and month names (as explained in the Angular i18n guide).\n *\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\n * numerals. For other static labels the datepicker uses the default Angular i18n.\n *\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\n * a custom provider for i18n.\n * @abstract\n */\nvar NgbDatepickerI18n = /** @class */ (function () {\n function NgbDatepickerI18n() {\n }\n /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * @since 3.0.0\n */\n /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * \\@since 3.0.0\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerI18n.prototype.getDayNumerals = /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * \\@since 3.0.0\n * @param {?} date\n * @return {?}\n */\n function (date) { return \"\" + date.day; };\n /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * @since 3.0.0\n */\n /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * \\@since 3.0.0\n * @param {?} weekNumber\n * @return {?}\n */\n NgbDatepickerI18n.prototype.getWeekNumerals = /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * \\@since 3.0.0\n * @param {?} weekNumber\n * @return {?}\n */\n function (weekNumber) { return \"\" + weekNumber; };\n /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * @since 3.0.0\n */\n /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * \\@since 3.0.0\n * @param {?} year\n * @return {?}\n */\n NgbDatepickerI18n.prototype.getYearNumerals = /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * \\@since 3.0.0\n * @param {?} year\n * @return {?}\n */\n function (year) { return \"\" + year; };\n NgbDatepickerI18n.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [LOCALE_ID$1] },] }\n ];\n /** @nocollapse */ NgbDatepickerI18n.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbDatepickerI18n_Factory() { return NGB_DATEPICKER_18N_FACTORY(\u0275\u0275inject(LOCALE_ID$1)); }, token: NgbDatepickerI18n, providedIn: \"root\" });\n return NgbDatepickerI18n;\n}());\nvar NgbDatepickerI18nDefault = /** @class */ (function (_super) {\n __extends(NgbDatepickerI18nDefault, _super);\n function NgbDatepickerI18nDefault(_locale) {\n var _this = _super.call(this) || this;\n _this._locale = _locale;\n /** @type {?} */\n var weekdaysStartingOnSunday = getLocaleDayNames(_locale, FormStyle.Standalone, TranslationWidth.Short);\n _this._weekdaysShort = weekdaysStartingOnSunday.map((/**\n * @param {?} day\n * @param {?} index\n * @return {?}\n */\n function (day, index) { return weekdaysStartingOnSunday[(index + 1) % 7]; }));\n _this._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\n _this._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\n return _this;\n }\n /**\n * @param {?} weekday\n * @return {?}\n */\n NgbDatepickerI18nDefault.prototype.getWeekdayShortName = /**\n * @param {?} weekday\n * @return {?}\n */\n function (weekday) { return this._weekdaysShort[weekday - 1]; };\n /**\n * @param {?} month\n * @return {?}\n */\n NgbDatepickerI18nDefault.prototype.getMonthShortName = /**\n * @param {?} month\n * @return {?}\n */\n function (month) { return this._monthsShort[month - 1]; };\n /**\n * @param {?} month\n * @return {?}\n */\n NgbDatepickerI18nDefault.prototype.getMonthFullName = /**\n * @param {?} month\n * @return {?}\n */\n function (month) { return this._monthsFull[month - 1]; };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerI18nDefault.prototype.getDayAriaLabel = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var jsDate = new Date(date.year, date.month - 1, date.day);\n return formatDate(jsDate, 'fullDate', this._locale);\n };\n NgbDatepickerI18nDefault.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n NgbDatepickerI18nDefault.ctorParameters = function () { return [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID$1,] }] }\n ]; };\n return NgbDatepickerI18nDefault;\n}(NgbDatepickerI18n));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbDatepickerService = /** @class */ (function () {\n function NgbDatepickerService(_calendar, _i18n) {\n var _this = this;\n this._calendar = _calendar;\n this._i18n = _i18n;\n this._VALIDATORS = {\n dayTemplateData: (/**\n * @param {?} dayTemplateData\n * @return {?}\n */\n function (dayTemplateData) {\n if (_this._state.dayTemplateData !== dayTemplateData) {\n return { dayTemplateData: dayTemplateData };\n }\n }),\n displayMonths: (/**\n * @param {?} displayMonths\n * @return {?}\n */\n function (displayMonths) {\n displayMonths = toInteger(displayMonths);\n if (isInteger(displayMonths) && displayMonths > 0 && _this._state.displayMonths !== displayMonths) {\n return { displayMonths: displayMonths };\n }\n }),\n disabled: (/**\n * @param {?} disabled\n * @return {?}\n */\n function (disabled) {\n if (_this._state.disabled !== disabled) {\n return { disabled: disabled };\n }\n }),\n firstDayOfWeek: (/**\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n function (firstDayOfWeek) {\n firstDayOfWeek = toInteger(firstDayOfWeek);\n if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && _this._state.firstDayOfWeek !== firstDayOfWeek) {\n return { firstDayOfWeek: firstDayOfWeek };\n }\n }),\n focusVisible: (/**\n * @param {?} focusVisible\n * @return {?}\n */\n function (focusVisible) {\n if (_this._state.focusVisible !== focusVisible && !_this._state.disabled) {\n return { focusVisible: focusVisible };\n }\n }),\n markDisabled: (/**\n * @param {?} markDisabled\n * @return {?}\n */\n function (markDisabled) {\n if (_this._state.markDisabled !== markDisabled) {\n return { markDisabled: markDisabled };\n }\n }),\n maxDate: (/**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var maxDate = _this.toValidDate(date, null);\n if (isChangedDate(_this._state.maxDate, maxDate)) {\n return { maxDate: maxDate };\n }\n }),\n minDate: (/**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var minDate = _this.toValidDate(date, null);\n if (isChangedDate(_this._state.minDate, minDate)) {\n return { minDate: minDate };\n }\n }),\n navigation: (/**\n * @param {?} navigation\n * @return {?}\n */\n function (navigation) {\n if (_this._state.navigation !== navigation) {\n return { navigation: navigation };\n }\n }),\n outsideDays: (/**\n * @param {?} outsideDays\n * @return {?}\n */\n function (outsideDays) {\n if (_this._state.outsideDays !== outsideDays) {\n return { outsideDays: outsideDays };\n }\n })\n };\n this._model$ = new Subject();\n this._dateSelect$ = new Subject();\n this._state = {\n disabled: false,\n displayMonths: 1,\n firstDayOfWeek: 1,\n focusVisible: false,\n months: [],\n navigation: 'select',\n outsideDays: 'visible',\n prevDisabled: false,\n nextDisabled: false,\n selectBoxes: { years: [], months: [] },\n selectedDate: null\n };\n }\n Object.defineProperty(NgbDatepickerService.prototype, \"model$\", {\n get: /**\n * @return {?}\n */\n function () { return this._model$.pipe(filter((/**\n * @param {?} model\n * @return {?}\n */\n function (model) { return model.months.length > 0; }))); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepickerService.prototype, \"dateSelect$\", {\n get: /**\n * @return {?}\n */\n function () { return this._dateSelect$.pipe(filter((/**\n * @param {?} date\n * @return {?}\n */\n function (date) { return date !== null; }))); },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} options\n * @return {?}\n */\n NgbDatepickerService.prototype.set = /**\n * @param {?} options\n * @return {?}\n */\n function (options) {\n var _this = this;\n /** @type {?} */\n var patch = Object.keys(options)\n .map((/**\n * @param {?} key\n * @return {?}\n */\n function (key) { return _this._VALIDATORS[key](options[key]); }))\n .reduce((/**\n * @param {?} obj\n * @param {?} part\n * @return {?}\n */\n function (obj, part) { return (__assign({}, obj, part)); }), {});\n if (Object.keys(patch).length > 0) {\n this._nextState(patch);\n }\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerService.prototype.focus = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n if (!this._state.disabled && this._calendar.isValid(date) && isChangedDate(this._state.focusDate, date)) {\n this._nextState({ focusDate: date });\n }\n };\n /**\n * @return {?}\n */\n NgbDatepickerService.prototype.focusSelect = /**\n * @return {?}\n */\n function () {\n if (isDateSelectable(this._state.focusDate, this._state)) {\n this.select(this._state.focusDate, { emitEvent: true });\n }\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerService.prototype.open = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var firstDate = this.toValidDate(date, this._calendar.getToday());\n if (!this._state.disabled && (!this._state.firstDate || isChangedMonth(this._state.firstDate, date))) {\n this._nextState({ firstDate: firstDate });\n }\n };\n /**\n * @param {?} date\n * @param {?=} options\n * @return {?}\n */\n NgbDatepickerService.prototype.select = /**\n * @param {?} date\n * @param {?=} options\n * @return {?}\n */\n function (date, options) {\n if (options === void 0) { options = {}; }\n /** @type {?} */\n var selectedDate = this.toValidDate(date, null);\n if (!this._state.disabled) {\n if (isChangedDate(this._state.selectedDate, selectedDate)) {\n this._nextState({ selectedDate: selectedDate });\n }\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n this._dateSelect$.next(selectedDate);\n }\n }\n };\n /**\n * @param {?} date\n * @param {?=} defaultValue\n * @return {?}\n */\n NgbDatepickerService.prototype.toValidDate = /**\n * @param {?} date\n * @param {?=} defaultValue\n * @return {?}\n */\n function (date, defaultValue) {\n /** @type {?} */\n var ngbDate = NgbDate.from(date);\n if (defaultValue === undefined) {\n defaultValue = this._calendar.getToday();\n }\n return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n };\n /**\n * @param {?} struct\n * @return {?}\n */\n NgbDatepickerService.prototype.getMonth = /**\n * @param {?} struct\n * @return {?}\n */\n function (struct) {\n var e_1, _a;\n try {\n for (var _b = __values(this._state.months), _c = _b.next(); !_c.done; _c = _b.next()) {\n var month = _c.value;\n if (struct.month === month.number && struct.year === month.year) {\n return month;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n throw new Error(\"month \" + struct.month + \" of year \" + struct.year + \" not found\");\n };\n /**\n * @private\n * @param {?} patch\n * @return {?}\n */\n NgbDatepickerService.prototype._nextState = /**\n * @private\n * @param {?} patch\n * @return {?}\n */\n function (patch) {\n /** @type {?} */\n var newState = this._updateState(patch);\n this._patchContexts(newState);\n this._state = newState;\n this._model$.next(this._state);\n };\n /**\n * @private\n * @param {?} state\n * @return {?}\n */\n NgbDatepickerService.prototype._patchContexts = /**\n * @private\n * @param {?} state\n * @return {?}\n */\n function (state) {\n var months = state.months, displayMonths = state.displayMonths, selectedDate = state.selectedDate, focusDate = state.focusDate, focusVisible = state.focusVisible, disabled = state.disabled, outsideDays = state.outsideDays;\n state.months.forEach((/**\n * @param {?} month\n * @return {?}\n */\n function (month) {\n month.weeks.forEach((/**\n * @param {?} week\n * @return {?}\n */\n function (week) {\n week.days.forEach((/**\n * @param {?} day\n * @return {?}\n */\n function (day) {\n // patch focus flag\n if (focusDate) {\n day.context.focused = focusDate.equals(day.date) && focusVisible;\n }\n // calculating tabindex\n day.tabindex = !disabled && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n // override context disabled\n if (disabled === true) {\n day.context.disabled = true;\n }\n // patch selection flag\n if (selectedDate !== undefined) {\n day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n }\n // visibility\n if (month.number !== day.date.month) {\n day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' ||\n (displayMonths > 1 && day.date.after(months[0].firstDate) &&\n day.date.before(months[displayMonths - 1].lastDate));\n }\n }));\n }));\n }));\n };\n /**\n * @private\n * @param {?} patch\n * @return {?}\n */\n NgbDatepickerService.prototype._updateState = /**\n * @private\n * @param {?} patch\n * @return {?}\n */\n function (patch) {\n // patching fields\n /** @type {?} */\n var state = Object.assign({}, this._state, patch);\n /** @type {?} */\n var startDate = state.firstDate;\n // min/max dates changed\n if ('minDate' in patch || 'maxDate' in patch) {\n checkMinBeforeMax(state.minDate, state.maxDate);\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n }\n // disabled\n if ('disabled' in patch) {\n state.focusVisible = false;\n }\n // initial rebuild via 'select()'\n if ('selectedDate' in patch && this._state.months.length === 0) {\n startDate = state.selectedDate;\n }\n // terminate early if only focus visibility was changed\n if ('focusVisible' in patch) {\n return state;\n }\n // focus date changed\n if ('focusDate' in patch) {\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n // nothing to rebuild if only focus changed and it is still visible\n if (state.months.length !== 0 && !state.focusDate.before(state.firstDate) &&\n !state.focusDate.after(state.lastDate)) {\n return state;\n }\n }\n // first date changed\n if ('firstDate' in patch) {\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.firstDate;\n }\n // rebuilding months\n if (startDate) {\n /** @type {?} */\n var forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch ||\n 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch;\n /** @type {?} */\n var months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n // updating months and boundary dates\n state.months = months;\n state.firstDate = months.length > 0 ? months[0].firstDate : undefined;\n state.lastDate = months.length > 0 ? months[months.length - 1].lastDate : undefined;\n // reset selected date if 'markDisabled' returns true\n if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n state.selectedDate = null;\n }\n // adjusting focus after months were built\n if ('firstDate' in patch) {\n if (state.focusDate === undefined || state.focusDate.before(state.firstDate) ||\n state.focusDate.after(state.lastDate)) {\n state.focusDate = startDate;\n }\n }\n // adjusting months/years for the select box navigation\n /** @type {?} */\n var yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n /** @type {?} */\n var monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n if (state.navigation === 'select') {\n // years -> boundaries (min/max were changed)\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n }\n // months -> when current year or boundaries change\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n state.selectBoxes.months =\n generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\n }\n }\n else {\n state.selectBoxes = { years: [], months: [] };\n }\n // updating navigation arrows -> boundaries change (min/max) or month/year changes\n if ((state.navigation === 'arrows' || state.navigation === 'select') &&\n (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\n state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n }\n }\n return state;\n };\n NgbDatepickerService.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n NgbDatepickerService.ctorParameters = function () { return [\n { type: NgbCalendar },\n { type: NgbDatepickerI18n }\n ]; };\n return NgbDatepickerService;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @enum {number} */\nvar NavigationEvent = {\n PREV: 0,\n NEXT: 1,\n};\nNavigationEvent[NavigationEvent.PREV] = 'PREV';\nNavigationEvent[NavigationEvent.NEXT] = 'NEXT';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepickers used in the application.\n */\nvar NgbDatepickerConfig = /** @class */ (function () {\n function NgbDatepickerConfig() {\n this.displayMonths = 1;\n this.firstDayOfWeek = 1;\n this.navigation = 'select';\n this.outsideDays = 'visible';\n this.showWeekdays = true;\n this.showWeekNumbers = false;\n }\n NgbDatepickerConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbDatepickerConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbDatepickerConfig_Factory() { return new NgbDatepickerConfig(); }, token: NgbDatepickerConfig, providedIn: \"root\" });\n return NgbDatepickerConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n return new NgbDateStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n * any provided user date model `D`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding datepicker to a form control,\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n *\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n * @abstract\n * @template D\n */\nvar NgbDateAdapter = /** @class */ (function () {\n function NgbDateAdapter() {\n }\n NgbDateAdapter.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY },] }\n ];\n /** @nocollapse */ NgbDateAdapter.ngInjectableDef = \u0275\u0275defineInjectable({ factory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY, token: NgbDateAdapter, providedIn: \"root\" });\n return NgbDateAdapter;\n}());\nvar NgbDateStructAdapter = /** @class */ (function (_super) {\n __extends(NgbDateStructAdapter, _super);\n function NgbDateStructAdapter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n * @param {?} date\n * @return {?}\n */\n NgbDateStructAdapter.prototype.fromModel = /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n };\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n * @param {?} date\n * @return {?}\n */\n NgbDateStructAdapter.prototype.toModel = /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n };\n NgbDateStructAdapter.decorators = [\n { type: Injectable }\n ];\n return NgbDateStructAdapter;\n}(NgbDateAdapter));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n function () { return NgbDatepicker; })),\n multi: true\n};\n/**\n * A directive that marks the content template that customizes the way datepicker months are displayed\n *\n * \\@since 5.3.0\n */\nvar NgbDatepickerContent = /** @class */ (function () {\n function NgbDatepickerContent(templateRef) {\n this.templateRef = templateRef;\n }\n NgbDatepickerContent.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbDatepickerContent]' },] }\n ];\n /** @nocollapse */\n NgbDatepickerContent.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbDatepickerContent;\n}());\n/**\n * A highly configurable component that helps you with selecting calendar dates.\n *\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\n */\nvar NgbDatepicker = /** @class */ (function () {\n function NgbDatepicker(_service, _calendar, i18n, config, cd, _elementRef, _ngbDateAdapter, _ngZone) {\n var _this = this;\n this._service = _service;\n this._calendar = _calendar;\n this.i18n = i18n;\n this._elementRef = _elementRef;\n this._ngbDateAdapter = _ngbDateAdapter;\n this._ngZone = _ngZone;\n this._destroyed$ = new Subject();\n this._publicState = (/** @type {?} */ ({}));\n /**\n * An event emitted right before the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * \\@since 5.2.0\n */\n this.dateSelect = new EventEmitter();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * Please use 'dateSelect' output instead, this will be deprecated in version 6.0 due to collision with native\n * 'select' event.\n */\n this.select = this.dateSelect;\n this.onChange = (/**\n * @param {?} _\n * @return {?}\n */\n function (_) { });\n this.onTouched = (/**\n * @return {?}\n */\n function () { });\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showWeekdays', 'showWeekNumbers', 'startDate']\n .forEach((/**\n * @param {?} input\n * @return {?}\n */\n function (input) { return _this[input] = config[input]; }));\n _service.dateSelect$.pipe(takeUntil(this._destroyed$)).subscribe((/**\n * @param {?} date\n * @return {?}\n */\n function (date) { _this.dateSelect.emit(date); }));\n _service.model$.pipe(takeUntil(this._destroyed$)).subscribe((/**\n * @param {?} model\n * @return {?}\n */\n function (model) {\n /** @type {?} */\n var newDate = model.firstDate;\n /** @type {?} */\n var oldDate = _this.model ? _this.model.firstDate : null;\n // update public state\n _this._publicState = {\n maxDate: model.maxDate,\n minDate: model.minDate,\n firstDate: model.firstDate,\n lastDate: model.lastDate,\n focusedDate: model.focusDate,\n months: model.months.map((/**\n * @param {?} viewModel\n * @return {?}\n */\n function (viewModel) { return viewModel.firstDate; }))\n };\n /** @type {?} */\n var navigationPrevented = false;\n // emitting navigation event if the first month changes\n if (!newDate.equals(oldDate)) {\n _this.navigate.emit({\n current: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\n next: { year: newDate.year, month: newDate.month },\n preventDefault: (/**\n * @return {?}\n */\n function () { return navigationPrevented = true; })\n });\n // can't prevent the very first navigation\n if (navigationPrevented && oldDate !== null) {\n _this._service.open(oldDate);\n return;\n }\n }\n /** @type {?} */\n var newSelectedDate = model.selectedDate;\n /** @type {?} */\n var newFocusedDate = model.focusDate;\n /** @type {?} */\n var oldFocusedDate = _this.model ? _this.model.focusDate : null;\n _this.model = model;\n // handling selection change\n if (isChangedDate(newSelectedDate, _this._controlValue)) {\n _this._controlValue = newSelectedDate;\n _this.onTouched();\n _this.onChange(_this._ngbDateAdapter.toModel(newSelectedDate));\n }\n // handling focus change\n if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n _this.focus();\n }\n cd.markForCheck();\n }));\n }\n Object.defineProperty(NgbDatepicker.prototype, \"state\", {\n /**\n * Returns the readonly public state of the datepicker\n *\n * @since 5.2.0\n */\n get: /**\n * Returns the readonly public state of the datepicker\n *\n * \\@since 5.2.0\n * @return {?}\n */\n function () { return this._publicState; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbDatepicker.prototype, \"calendar\", {\n /**\n * Returns the calendar service used in the specific datepicker instance.\n *\n * @since 5.3.0\n */\n get: /**\n * Returns the calendar service used in the specific datepicker instance.\n *\n * \\@since 5.3.0\n * @return {?}\n */\n function () { return this._calendar; },\n enumerable: true,\n configurable: true\n });\n /**\n * Focuses on given date.\n */\n /**\n * Focuses on given date.\n * @param {?} date\n * @return {?}\n */\n NgbDatepicker.prototype.focusDate = /**\n * Focuses on given date.\n * @param {?} date\n * @return {?}\n */\n function (date) { this._service.focus(NgbDate.from(date)); };\n /**\n * Selects focused date.\n */\n /**\n * Selects focused date.\n * @return {?}\n */\n NgbDatepicker.prototype.focusSelect = /**\n * Selects focused date.\n * @return {?}\n */\n function () { this._service.focusSelect(); };\n /**\n * @return {?}\n */\n NgbDatepicker.prototype.focus = /**\n * @return {?}\n */\n function () {\n var _this = this;\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe((/**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var elementToFocus = _this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\n if (elementToFocus) {\n elementToFocus.focus();\n }\n }));\n };\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n * @param {?=} date\n * @return {?}\n */\n NgbDatepicker.prototype.navigateTo = /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n * @param {?=} date\n * @return {?}\n */\n function (date) {\n this._service.open(NgbDate.from(date ? date.day ? (/** @type {?} */ (date)) : __assign({}, date, { day: 1 }) : null));\n };\n /**\n * @return {?}\n */\n NgbDatepicker.prototype.ngAfterViewInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n this._ngZone.runOutsideAngular((/**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var focusIns$ = fromEvent(_this._contentEl.nativeElement, 'focusin');\n /** @type {?} */\n var focusOuts$ = fromEvent(_this._contentEl.nativeElement, 'focusout');\n var nativeElement = _this._elementRef.nativeElement;\n // we're changing 'focusVisible' only when entering or leaving months view\n // and ignoring all focus events where both 'target' and 'related' target are day cells\n merge(focusIns$, focusOuts$)\n .pipe(filter((/**\n * @param {?} __0\n * @return {?}\n */\n function (_a) {\n var target = _a.target, relatedTarget = _a.relatedTarget;\n return !(hasClassName(target, 'ngb-dp-day') && hasClassName(relatedTarget, 'ngb-dp-day') &&\n nativeElement.contains((/** @type {?} */ (target))) && nativeElement.contains((/** @type {?} */ (relatedTarget))));\n })), takeUntil(_this._destroyed$))\n .subscribe((/**\n * @param {?} __0\n * @return {?}\n */\n function (_a) {\n var type = _a.type;\n return _this._ngZone.run((/**\n * @return {?}\n */\n function () { return _this._service.set({ focusVisible: type === 'focusin' }); }));\n }));\n }));\n };\n /**\n * @return {?}\n */\n NgbDatepicker.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () { this._destroyed$.next(); };\n /**\n * @return {?}\n */\n NgbDatepicker.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.model === undefined) {\n /** @type {?} */\n var inputs_1 = {};\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays']\n .forEach((/**\n * @param {?} name\n * @return {?}\n */\n function (name) { return inputs_1[name] = _this[name]; }));\n this._service.set(inputs_1);\n this.navigateTo(this.startDate);\n }\n if (!this.dayTemplate) {\n this.dayTemplate = this._defaultDayTemplate;\n }\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbDatepicker.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n var _this = this;\n /** @type {?} */\n var inputs = {};\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays']\n .filter((/**\n * @param {?} name\n * @return {?}\n */\n function (name) { return name in changes; }))\n .forEach((/**\n * @param {?} name\n * @return {?}\n */\n function (name) { return inputs[name] = _this[name]; }));\n this._service.set(inputs);\n if ('startDate' in changes) {\n var _a = changes.startDate, currentValue = _a.currentValue, previousValue = _a.previousValue;\n if (isChangedMonth(previousValue, currentValue)) {\n this.navigateTo(this.startDate);\n }\n }\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepicker.prototype.onDateSelect = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n this._service.focus(date);\n this._service.select(date, { emitEvent: true });\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepicker.prototype.onNavigateDateSelect = /**\n * @param {?} date\n * @return {?}\n */\n function (date) { this._service.open(date); };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbDatepicker.prototype.onNavigateEvent = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n switch (event) {\n case NavigationEvent.PREV:\n this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\n break;\n case NavigationEvent.NEXT:\n this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\n break;\n }\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbDatepicker.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbDatepicker.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onTouched = fn; };\n /**\n * @param {?} disabled\n * @return {?}\n */\n NgbDatepicker.prototype.setDisabledState = /**\n * @param {?} disabled\n * @return {?}\n */\n function (disabled) { this._service.set({ disabled: disabled }); };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbDatepicker.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n this._service.select(this._controlValue);\n };\n NgbDatepicker.decorators = [\n { type: Component, args: [{\n exportAs: 'ngbDatepicker',\n selector: 'ngb-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"\\n \\n
\\n
\\n
\\n\\n \\n
\\n
1 && navigation === 'select')\\\" class=\\\"ngb-dp-month-name\\\">\\n {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n
\\n\\n \\n \",\n providers: [NGB_DATEPICKER_VALUE_ACCESSOR, NgbDatepickerService],\n styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-months{display:-ms-flexbox;display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"]\n }] }\n ];\n /** @nocollapse */\n NgbDatepicker.ctorParameters = function () { return [\n { type: NgbDatepickerService },\n { type: NgbCalendar },\n { type: NgbDatepickerI18n },\n { type: NgbDatepickerConfig },\n { type: ChangeDetectorRef },\n { type: ElementRef },\n { type: NgbDateAdapter },\n { type: NgZone }\n ]; };\n NgbDatepicker.propDecorators = {\n _defaultDayTemplate: [{ type: ViewChild, args: ['defaultDayTemplate', { static: true },] }],\n _contentEl: [{ type: ViewChild, args: ['content', { static: true },] }],\n contentTemplate: [{ type: ContentChild, args: [NgbDatepickerContent, { static: true },] }],\n dayTemplate: [{ type: Input }],\n dayTemplateData: [{ type: Input }],\n displayMonths: [{ type: Input }],\n firstDayOfWeek: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n markDisabled: [{ type: Input }],\n maxDate: [{ type: Input }],\n minDate: [{ type: Input }],\n navigation: [{ type: Input }],\n outsideDays: [{ type: Input }],\n showWeekdays: [{ type: Input }],\n showWeekNumbers: [{ type: Input }],\n startDate: [{ type: Input }],\n navigate: [{ type: Output }],\n dateSelect: [{ type: Output }],\n select: [{ type: Output }]\n };\n return NgbDatepicker;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @enum {number} */\nvar Key = {\n Tab: 9,\n Enter: 13,\n Escape: 27,\n Space: 32,\n PageUp: 33,\n PageDown: 34,\n End: 35,\n Home: 36,\n ArrowLeft: 37,\n ArrowUp: 38,\n ArrowRight: 39,\n ArrowDown: 40,\n};\nKey[Key.Tab] = 'Tab';\nKey[Key.Enter] = 'Enter';\nKey[Key.Escape] = 'Escape';\nKey[Key.Space] = 'Space';\nKey[Key.PageUp] = 'PageUp';\nKey[Key.PageDown] = 'PageDown';\nKey[Key.End] = 'End';\nKey[Key.Home] = 'Home';\nKey[Key.ArrowLeft] = 'ArrowLeft';\nKey[Key.ArrowUp] = 'ArrowUp';\nKey[Key.ArrowRight] = 'ArrowRight';\nKey[Key.ArrowDown] = 'ArrowDown';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A service that represents the keyboard navigation.\n *\n * Default keyboard shortcuts [are documented in the overview](#/components/datepicker/overview#keyboard-shortcuts)\n *\n * \\@since 5.2.0\n */\nvar NgbDatepickerKeyboardService = /** @class */ (function () {\n function NgbDatepickerKeyboardService() {\n }\n /**\n * Processes a keyboard event.\n */\n /**\n * Processes a keyboard event.\n * @param {?} event\n * @param {?} datepicker\n * @return {?}\n */\n NgbDatepickerKeyboardService.prototype.processKey = /**\n * Processes a keyboard event.\n * @param {?} event\n * @param {?} datepicker\n * @return {?}\n */\n function (event, datepicker) {\n var state = datepicker.state, calendar = datepicker.calendar;\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.PageUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.PageDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.End:\n datepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\n break;\n case Key.Home:\n datepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\n break;\n case Key.ArrowLeft:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.ArrowRight:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.Enter:\n case Key.Space:\n datepicker.focusSelect();\n break;\n default:\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n };\n NgbDatepickerKeyboardService.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbDatepickerKeyboardService.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbDatepickerKeyboardService_Factory() { return new NgbDatepickerKeyboardService(); }, token: NgbDatepickerKeyboardService, providedIn: \"root\" });\n return NgbDatepickerKeyboardService;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A component that renders one month including all the days, weekdays and week numbers. Can be used inside\n * the `` when you want to customize months layout.\n *\n * For a usage example, see [custom month layout demo](#/components/datepicker/examples#custommonth)\n *\n * \\@since 5.3.0\n */\nvar NgbDatepickerMonth = /** @class */ (function () {\n function NgbDatepickerMonth(i18n, datepicker, _keyboardService, _service) {\n this.i18n = i18n;\n this.datepicker = datepicker;\n this._keyboardService = _keyboardService;\n this._service = _service;\n }\n Object.defineProperty(NgbDatepickerMonth.prototype, \"month\", {\n /**\n * The first date of month to be rendered.\n *\n * This month must one of the months present in the\n * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\n */\n set: /**\n * The first date of month to be rendered.\n *\n * This month must one of the months present in the\n * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\n * @param {?} month\n * @return {?}\n */\n function (month) {\n this.viewModel = this._service.getMonth(month);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} event\n * @return {?}\n */\n NgbDatepickerMonth.prototype.onKeyDown = /**\n * @param {?} event\n * @return {?}\n */\n function (event) { this._keyboardService.processKey(event, this.datepicker); };\n /**\n * @param {?} day\n * @return {?}\n */\n NgbDatepickerMonth.prototype.doSelect = /**\n * @param {?} day\n * @return {?}\n */\n function (day) {\n if (!day.context.disabled && !day.hidden) {\n this.datepicker.onDateSelect(day.date);\n }\n };\n NgbDatepickerMonth.decorators = [\n { type: Component, args: [{\n selector: 'ngb-datepicker-month',\n host: { 'role': 'grid', '(keydown)': 'onKeyDown($event)' },\n encapsulation: ViewEncapsulation.None,\n template: \"\\n
\\n
\\n
\\n {{ i18n.getWeekdayShortName(w) }}\\n
\\n
\\n \\n
\\n
{{ i18n.getWeekNumerals(week.number) }}
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \",\n styles: [\"ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:-ms-flexbox;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\"]\n }] }\n ];\n /** @nocollapse */\n NgbDatepickerMonth.ctorParameters = function () { return [\n { type: NgbDatepickerI18n },\n { type: NgbDatepicker },\n { type: NgbDatepickerKeyboardService },\n { type: NgbDatepickerService }\n ]; };\n NgbDatepickerMonth.propDecorators = {\n month: [{ type: Input }]\n };\n return NgbDatepickerMonth;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbDatepickerNavigation = /** @class */ (function () {\n function NgbDatepickerNavigation(i18n) {\n this.i18n = i18n;\n this.navigation = NavigationEvent;\n this.months = [];\n this.navigate = new EventEmitter();\n this.select = new EventEmitter();\n }\n /**\n * @param {?} event\n * @return {?}\n */\n NgbDatepickerNavigation.prototype.onClickPrev = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n ((/** @type {?} */ (event.currentTarget))).focus();\n this.navigate.emit(this.navigation.PREV);\n };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbDatepickerNavigation.prototype.onClickNext = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n ((/** @type {?} */ (event.currentTarget))).focus();\n this.navigate.emit(this.navigation.NEXT);\n };\n NgbDatepickerNavigation.decorators = [\n { type: Component, args: [{\n selector: 'ngb-datepicker-navigation',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"\\n
\\n \\n
\\n \\n \\n\\n \\n
0\\\">
\\n
\\n {{ i18n.getMonthFullName(month.number, month.year) }} {{ i18n.getYearNumerals(month.year) }}\\n
\\n
\\n
\\n
\\n \\n
\\n \",\n styles: [\"ngb-datepicker-navigation{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.right .ngb-dp-navigation-chevron{-webkit-transform:rotate(45deg);transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow{display:-ms-flexbox;display:flex;-ms-flex:1 1 auto;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{-ms-flex-pack:end;justify-content:flex-end}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:-ms-flexbox;display:flex;-ms-flex:1 1 9rem;flex:1 1 9rem}\"]\n }] }\n ];\n /** @nocollapse */\n NgbDatepickerNavigation.ctorParameters = function () { return [\n { type: NgbDatepickerI18n }\n ]; };\n NgbDatepickerNavigation.propDecorators = {\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n months: [{ type: Input }],\n showSelect: [{ type: Input }],\n prevDisabled: [{ type: Input }],\n nextDisabled: [{ type: Input }],\n selectBoxes: [{ type: Input }],\n navigate: [{ type: Output }],\n select: [{ type: Output }]\n };\n return NgbDatepickerNavigation;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar isContainedIn = (/**\n * @param {?} element\n * @param {?=} array\n * @return {?}\n */\nfunction (element, array) {\n return array ? array.some((/**\n * @param {?} item\n * @return {?}\n */\n function (item) { return item.contains(element); })) : false;\n});\n/** @type {?} */\nvar matchesSelectorIfAny = (/**\n * @param {?} element\n * @param {?=} selector\n * @return {?}\n */\nfunction (element, selector) {\n return !selector || closest(element, selector) != null;\n});\n// we have to add a more significant delay to avoid re-opening when handling (click) on a toggling element\n// TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\nvar \u02752 = /**\n * @return {?}\n */\nfunction () {\n /** @type {?} */\n var isIOS = (/**\n * @return {?}\n */\n function () { return /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2); });\n /** @type {?} */\n var isAndroid = (/**\n * @return {?}\n */\n function () { return /Android/.test(navigator.userAgent); });\n return typeof navigator !== 'undefined' ? !!navigator.userAgent && (isIOS() || isAndroid()) : false;\n};\n/** @type {?} */\nvar isMobile = ((\u02752))();\n// setting 'ngbAutoClose' synchronously on mobile results in immediate popup closing\n// when tapping on the triggering element\n/** @type {?} */\nvar wrapAsyncForMobile = (/**\n * @param {?} fn\n * @return {?}\n */\nfunction (fn) { return isMobile ? (/**\n * @return {?}\n */\nfunction () { return setTimeout((/**\n * @return {?}\n */\nfunction () { return fn(); }), 100); }) : fn; });\n/**\n * @param {?} zone\n * @param {?} document\n * @param {?} type\n * @param {?} close\n * @param {?} closed$\n * @param {?} insideElements\n * @param {?=} ignoreElements\n * @param {?=} insideSelector\n * @return {?}\n */\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\n // closing on ESC and outside clicks\n if (type) {\n zone.runOutsideAngular(wrapAsyncForMobile((/**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var shouldCloseOnClick = (/**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n /** @type {?} */\n var element = (/** @type {?} */ (event.target));\n if (event.button === 2 || isContainedIn(element, ignoreElements)) {\n return false;\n }\n if (type === 'inside') {\n return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n }\n else if (type === 'outside') {\n return !isContainedIn(element, insideElements);\n }\n else /* if (type === true) */ {\n return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n }\n });\n /** @type {?} */\n var escapes$ = fromEvent(document, 'keydown')\n .pipe(takeUntil(closed$), \n // tslint:disable-next-line:deprecation\n filter((/**\n * @param {?} e\n * @return {?}\n */\n function (e) { return e.which === Key.Escape; })), tap((/**\n * @param {?} e\n * @return {?}\n */\n function (e) { return e.preventDefault(); })));\n // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown',\n // because on 'mouseup' DOM nodes might be detached\n /** @type {?} */\n var mouseDowns$ = fromEvent(document, 'mousedown').pipe(map(shouldCloseOnClick), takeUntil(closed$));\n /** @type {?} */\n var closeableClicks$ = (/** @type {?} */ (fromEvent(document, 'mouseup')\n .pipe(withLatestFrom(mouseDowns$), filter((/**\n * @param {?} __0\n * @return {?}\n */\n function (_a) {\n var _b = __read(_a, 2), _ = _b[0], shouldClose = _b[1];\n return shouldClose;\n })), delay(0), takeUntil(closed$))));\n race([escapes$, closeableClicks$]).subscribe((/**\n * @return {?}\n */\n function () { return zone.run(close); }));\n })));\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])',\n 'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n * @param {?} element\n * @return {?}\n */\nfunction getFocusableBoundaryElements(element) {\n /** @type {?} */\n var list = Array.from((/** @type {?} */ (element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR))))\n .filter((/**\n * @param {?} el\n * @return {?}\n */\n function (el) { return el.tabIndex !== -1; }));\n return [list[0], list[list.length - 1]];\n}\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * \\@param zone Angular zone\n * \\@param element The element around which focus will be trapped inside\n * \\@param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * \\@param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n * @type {?}\n */\nvar ngbFocusTrap = (/**\n * @param {?} zone\n * @param {?} element\n * @param {?} stopFocusTrap$\n * @param {?=} refocusOnClick\n * @return {?}\n */\nfunction (zone, element, stopFocusTrap$, refocusOnClick) {\n if (refocusOnClick === void 0) { refocusOnClick = false; }\n zone.runOutsideAngular((/**\n * @return {?}\n */\n function () {\n // last focused element\n /** @type {?} */\n var lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map((/**\n * @param {?} e\n * @return {?}\n */\n function (e) { return e.target; })));\n // 'tab' / 'shift+tab' stream\n fromEvent(element, 'keydown')\n .pipe(takeUntil(stopFocusTrap$), \n // tslint:disable:deprecation\n filter((/**\n * @param {?} e\n * @return {?}\n */\n function (e) { return e.which === Key.Tab; })), \n // tslint:enable:deprecation\n withLatestFrom(lastFocusedElement$))\n .subscribe((/**\n * @param {?} __0\n * @return {?}\n */\n function (_a) {\n var _b = __read(_a, 2), tabEvent = _b[0], focusedElement = _b[1];\n var _c = __read(getFocusableBoundaryElements(element), 2), first = _c[0], last = _c[1];\n if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n last.focus();\n tabEvent.preventDefault();\n }\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n }));\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map((/**\n * @param {?} arr\n * @return {?}\n */\n function (arr) { return (/** @type {?} */ (arr[1])); })))\n .subscribe((/**\n * @param {?} lastFocusedElement\n * @return {?}\n */\n function (lastFocusedElement) { return lastFocusedElement.focus(); }));\n }\n }));\n});\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nvar \n// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nPositioning = /** @class */ (function () {\n function Positioning() {\n }\n /**\n * @private\n * @param {?} element\n * @return {?}\n */\n Positioning.prototype.getAllStyles = /**\n * @private\n * @param {?} element\n * @return {?}\n */\n function (element) { return window.getComputedStyle(element); };\n /**\n * @private\n * @param {?} element\n * @param {?} prop\n * @return {?}\n */\n Positioning.prototype.getStyle = /**\n * @private\n * @param {?} element\n * @param {?} prop\n * @return {?}\n */\n function (element, prop) { return this.getAllStyles(element)[prop]; };\n /**\n * @private\n * @param {?} element\n * @return {?}\n */\n Positioning.prototype.isStaticPositioned = /**\n * @private\n * @param {?} element\n * @return {?}\n */\n function (element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n };\n /**\n * @private\n * @param {?} element\n * @return {?}\n */\n Positioning.prototype.offsetParent = /**\n * @private\n * @param {?} element\n * @return {?}\n */\n function (element) {\n /** @type {?} */\n var offsetParentEl = (/** @type {?} */ (element.offsetParent)) || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = (/** @type {?} */ (offsetParentEl.offsetParent));\n }\n return offsetParentEl || document.documentElement;\n };\n /**\n * @param {?} element\n * @param {?=} round\n * @return {?}\n */\n Positioning.prototype.position = /**\n * @param {?} element\n * @param {?=} round\n * @return {?}\n */\n function (element, round) {\n if (round === void 0) { round = true; }\n /** @type {?} */\n var elPosition;\n /** @type {?} */\n var parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n elPosition = {\n top: elPosition.top,\n bottom: elPosition.bottom,\n left: elPosition.left,\n right: elPosition.right,\n height: elPosition.height,\n width: elPosition.width\n };\n }\n else {\n /** @type {?} */\n var offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n };\n /**\n * @param {?} element\n * @param {?=} round\n * @return {?}\n */\n Positioning.prototype.offset = /**\n * @param {?} element\n * @param {?=} round\n * @return {?}\n */\n function (element, round) {\n if (round === void 0) { round = true; }\n /** @type {?} */\n var elBcr = element.getBoundingClientRect();\n /** @type {?} */\n var viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n /** @type {?} */\n var elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n };\n /*\n Return false if the element to position is outside the viewport\n */\n /*\n Return false if the element to position is outside the viewport\n */\n /**\n * @param {?} hostElement\n * @param {?} targetElement\n * @param {?} placement\n * @param {?=} appendToBody\n * @return {?}\n */\n Positioning.prototype.positionElements = /*\n Return false if the element to position is outside the viewport\n */\n /**\n * @param {?} hostElement\n * @param {?} targetElement\n * @param {?} placement\n * @param {?=} appendToBody\n * @return {?}\n */\n function (hostElement, targetElement, placement, appendToBody) {\n var _a = __read(placement.split('-'), 2), _b = _a[0], placementPrimary = _b === void 0 ? 'top' : _b, _c = _a[1], placementSecondary = _c === void 0 ? 'center' : _c;\n /** @type {?} */\n var hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n /** @type {?} */\n var targetElStyles = this.getAllStyles(targetElement);\n /** @type {?} */\n var marginTop = parseFloat(targetElStyles.marginTop);\n /** @type {?} */\n var marginBottom = parseFloat(targetElStyles.marginBottom);\n /** @type {?} */\n var marginLeft = parseFloat(targetElStyles.marginLeft);\n /** @type {?} */\n var marginRight = parseFloat(targetElStyles.marginRight);\n /** @type {?} */\n var topPosition = 0;\n /** @type {?} */\n var leftPosition = 0;\n switch (placementPrimary) {\n case 'top':\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\n break;\n case 'bottom':\n topPosition = (hostElPosition.top + hostElPosition.height);\n break;\n case 'left':\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\n break;\n case 'right':\n leftPosition = (hostElPosition.left + hostElPosition.width);\n break;\n }\n switch (placementSecondary) {\n case 'top':\n topPosition = hostElPosition.top;\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n leftPosition = hostElPosition.left;\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\n }\n else {\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\n }\n break;\n }\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n targetElement.style.transform = \"translate(\" + Math.round(leftPosition) + \"px, \" + Math.round(topPosition) + \"px)\";\n // Check if the targetElement is inside the viewport\n /** @type {?} */\n var targetElBCR = targetElement.getBoundingClientRect();\n /** @type {?} */\n var html = document.documentElement;\n /** @type {?} */\n var windowHeight = window.innerHeight || html.clientHeight;\n /** @type {?} */\n var windowWidth = window.innerWidth || html.clientWidth;\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\n targetElBCR.bottom <= windowHeight;\n };\n return Positioning;\n}());\n/** @type {?} */\nvar placementSeparator = /\\s+/;\n/** @type {?} */\nvar positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\n/**\n * @param {?} hostElement\n * @param {?} targetElement\n * @param {?} placement\n * @param {?=} appendToBody\n * @param {?=} baseClass\n * @return {?}\n */\nfunction positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n var e_1, _a;\n /** @type {?} */\n var placementVals = Array.isArray(placement) ? placement : (/** @type {?} */ (placement.split(placementSeparator)));\n /** @type {?} */\n var allowedPlacements = [\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\n 'right-top', 'right-bottom'\n ];\n /** @type {?} */\n var classList = targetElement.classList;\n /** @type {?} */\n var addClassesToTarget = (/**\n * @param {?} targetPlacement\n * @return {?}\n */\n function (targetPlacement) {\n var _a = __read(targetPlacement.split('-'), 2), primary = _a[0], secondary = _a[1];\n /** @type {?} */\n var classes = [];\n if (baseClass) {\n classes.push(baseClass + \"-\" + primary);\n if (secondary) {\n classes.push(baseClass + \"-\" + primary + \"-\" + secondary);\n }\n classes.forEach((/**\n * @param {?} classname\n * @return {?}\n */\n function (classname) { classList.add(classname); }));\n }\n return classes;\n });\n // Remove old placement classes to avoid issues\n if (baseClass) {\n allowedPlacements.forEach((/**\n * @param {?} placementToRemove\n * @return {?}\n */\n function (placementToRemove) { classList.remove(baseClass + \"-\" + placementToRemove); }));\n }\n // replace auto placement with other placements\n /** @type {?} */\n var hasAuto = placementVals.findIndex((/**\n * @param {?} val\n * @return {?}\n */\n function (val) { return val === 'auto'; }));\n if (hasAuto >= 0) {\n allowedPlacements.forEach((/**\n * @param {?} obj\n * @return {?}\n */\n function (obj) {\n if (placementVals.find((/**\n * @param {?} val\n * @return {?}\n */\n function (val) { return val.search('^' + obj) !== -1; })) == null) {\n placementVals.splice(hasAuto++, 1, (/** @type {?} */ (obj)));\n }\n }));\n }\n // coordinates where to position\n // Required for transform:\n /** @type {?} */\n var style = targetElement.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style['will-change'] = 'transform';\n /** @type {?} */\n var testPlacement;\n /** @type {?} */\n var isInViewport = false;\n try {\n for (var placementVals_1 = __values(placementVals), placementVals_1_1 = placementVals_1.next(); !placementVals_1_1.done; placementVals_1_1 = placementVals_1.next()) {\n testPlacement = placementVals_1_1.value;\n /** @type {?} */\n var addedClasses = addClassesToTarget(testPlacement);\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n isInViewport = true;\n break;\n }\n // Remove the baseClasses for further calculation\n if (baseClass) {\n addedClasses.forEach((/**\n * @param {?} classname\n * @return {?}\n */\n function (classname) { classList.remove(classname); }));\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (placementVals_1_1 && !placementVals_1_1.done && (_a = placementVals_1.return)) _a.call(placementVals_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (!isInViewport) {\n // If nothing match, the first placement is the default one\n testPlacement = placementVals[0];\n addClassesToTarget(testPlacement);\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n }\n return testPlacement;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new NgbDateISOParserFormatter();\n}\n/**\n * An abstract service for parsing and formatting dates for the\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n * input element.\n *\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n * in the input.\n *\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n * to use an alternative string format or a custom parsing logic.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n * @abstract\n */\nvar NgbDateParserFormatter = /** @class */ (function () {\n function NgbDateParserFormatter() {\n }\n NgbDateParserFormatter.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY },] }\n ];\n /** @nocollapse */ NgbDateParserFormatter.ngInjectableDef = \u0275\u0275defineInjectable({ factory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY, token: NgbDateParserFormatter, providedIn: \"root\" });\n return NgbDateParserFormatter;\n}());\nvar NgbDateISOParserFormatter = /** @class */ (function (_super) {\n __extends(NgbDateISOParserFormatter, _super);\n function NgbDateISOParserFormatter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n NgbDateISOParserFormatter.prototype.parse = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n if (value) {\n /** @type {?} */\n var dateParts = value.trim().split('-');\n if (dateParts.length === 1 && isNumber(dateParts[0])) {\n return { year: toInteger(dateParts[0]), month: null, day: null };\n }\n else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\n }\n else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\n }\n }\n return null;\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDateISOParserFormatter.prototype.format = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return date ?\n date.year + \"-\" + (isNumber(date.month) ? padNumber(date.month) : '') + \"-\" + (isNumber(date.day) ? padNumber(date.day) : '') :\n '';\n };\n NgbDateISOParserFormatter.decorators = [\n { type: Injectable }\n ];\n return NgbDateISOParserFormatter;\n}(NgbDateParserFormatter));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbDatepickerInput`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepicker inputs used in the application.\n *\n * \\@since 5.2.0\n */\nvar NgbInputDatepickerConfig = /** @class */ (function (_super) {\n __extends(NgbInputDatepickerConfig, _super);\n function NgbInputDatepickerConfig() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.autoClose = true;\n _this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n _this.restoreFocus = true;\n return _this;\n }\n NgbInputDatepickerConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbInputDatepickerConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbInputDatepickerConfig_Factory() { return new NgbInputDatepickerConfig(); }, token: NgbInputDatepickerConfig, providedIn: \"root\" });\n return NgbInputDatepickerConfig;\n}(NgbDatepickerConfig));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_DATEPICKER_VALUE_ACCESSOR$1 = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n function () { return NgbInputDatepicker; })),\n multi: true\n};\n/** @type {?} */\nvar NGB_DATEPICKER_VALIDATOR = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef((/**\n * @return {?}\n */\n function () { return NgbInputDatepicker; })),\n multi: true\n};\n/**\n * A directive that allows to stick a datepicker popup to an input field.\n *\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\n */\nvar NgbInputDatepicker = /** @class */ (function () {\n function NgbInputDatepicker(_parserFormatter, _elRef, _vcRef, _renderer, _cfr, _ngZone, _calendar, _dateAdapter, _document, _changeDetector, config) {\n var _this = this;\n this._parserFormatter = _parserFormatter;\n this._elRef = _elRef;\n this._vcRef = _vcRef;\n this._renderer = _renderer;\n this._cfr = _cfr;\n this._ngZone = _ngZone;\n this._calendar = _calendar;\n this._dateAdapter = _dateAdapter;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._cRef = null;\n this._disabled = false;\n this._elWithFocus = null;\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * \\@since 1.1.1\n */\n this.dateSelect = new EventEmitter();\n /**\n * Event emitted right after the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event fired after closing datepicker window.\n *\n * \\@since 4.2.0\n */\n this.closed = new EventEmitter();\n this._onChange = (/**\n * @param {?} _\n * @return {?}\n */\n function (_) { });\n this._onTouched = (/**\n * @return {?}\n */\n function () { });\n this._validatorChange = (/**\n * @return {?}\n */\n function () { });\n ['autoClose', 'container', 'positionTarget', 'placement'].forEach((/**\n * @param {?} input\n * @return {?}\n */\n function (input) { return _this[input] = config[input]; }));\n this._zoneSubscription = _ngZone.onStable.subscribe((/**\n * @return {?}\n */\n function () { return _this._updatePopupPosition(); }));\n }\n Object.defineProperty(NgbInputDatepicker.prototype, \"disabled\", {\n get: /**\n * @return {?}\n */\n function () {\n return this._disabled;\n },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._disabled = value === '' || (value && value !== 'false');\n if (this.isOpen()) {\n this._cRef.instance.setDisabledState(this._disabled);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbInputDatepicker.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbInputDatepicker.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._onTouched = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbInputDatepicker.prototype.registerOnValidatorChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._validatorChange = fn; };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbInputDatepicker.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) { this.disabled = isDisabled; };\n /**\n * @param {?} c\n * @return {?}\n */\n NgbInputDatepicker.prototype.validate = /**\n * @param {?} c\n * @return {?}\n */\n function (c) {\n /** @type {?} */\n var value = c.value;\n if (value === null || value === undefined) {\n return null;\n }\n /** @type {?} */\n var ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n if (!this._calendar.isValid(ngbDate)) {\n return { 'ngbDate': { invalid: c.value } };\n }\n if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n return { 'ngbDate': { requiredBefore: this.minDate } };\n }\n if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n return { 'ngbDate': { requiredAfter: this.maxDate } };\n }\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbInputDatepicker.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n this._writeModelValue(this._model);\n };\n /**\n * @param {?} value\n * @param {?=} updateView\n * @return {?}\n */\n NgbInputDatepicker.prototype.manualDateChange = /**\n * @param {?} value\n * @param {?=} updateView\n * @return {?}\n */\n function (value, updateView) {\n if (updateView === void 0) { updateView = false; }\n /** @type {?} */\n var inputValueChanged = value !== this._inputValue;\n if (inputValueChanged) {\n this._inputValue = value;\n this._model = this._fromDateStruct(this._parserFormatter.parse(value));\n }\n if (inputValueChanged || !updateView) {\n this._onChange(this._model ? this._dateAdapter.toModel(this._model) : (value === '' ? null : value));\n }\n if (updateView && this._model) {\n this._writeModelValue(this._model);\n }\n };\n /**\n * @return {?}\n */\n NgbInputDatepicker.prototype.isOpen = /**\n * @return {?}\n */\n function () { return !!this._cRef; };\n /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n */\n /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n * @return {?}\n */\n NgbInputDatepicker.prototype.open = /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n * @return {?}\n */\n function () {\n var _this = this;\n if (!this.isOpen()) {\n /** @type {?} */\n var cf = this._cfr.resolveComponentFactory(NgbDatepicker);\n this._cRef = this._vcRef.createComponent(cf);\n this._applyPopupStyling(this._cRef.location.nativeElement);\n this._applyDatepickerInputs(this._cRef.instance);\n this._subscribeForDatepickerOutputs(this._cRef.instance);\n this._cRef.instance.ngOnInit();\n this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n // date selection event handling\n this._cRef.instance.registerOnChange((/**\n * @param {?} selectedDate\n * @return {?}\n */\n function (selectedDate) {\n _this.writeValue(selectedDate);\n _this._onChange(selectedDate);\n _this._onTouched();\n }));\n this._cRef.changeDetectorRef.detectChanges();\n this._cRef.instance.setDisabledState(this.disabled);\n if (this.container === 'body') {\n window.document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\n }\n // focus handling\n this._elWithFocus = this._document.activeElement;\n ngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\n this._cRef.instance.focus();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, (/**\n * @return {?}\n */\n function () { return _this.close(); }), this.closed, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\n }\n };\n /**\n * Closes the datepicker popup.\n */\n /**\n * Closes the datepicker popup.\n * @return {?}\n */\n NgbInputDatepicker.prototype.close = /**\n * Closes the datepicker popup.\n * @return {?}\n */\n function () {\n if (this.isOpen()) {\n this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\n this._cRef = null;\n this.closed.emit();\n this._changeDetector.markForCheck();\n // restore focus\n /** @type {?} */\n var elementToFocus = this._elWithFocus;\n if (isString(this.restoreFocus)) {\n elementToFocus = this._document.querySelector(this.restoreFocus);\n }\n else if (this.restoreFocus !== undefined) {\n elementToFocus = this.restoreFocus;\n }\n // in IE document.activeElement can contain an object without 'focus()' sometimes\n if (elementToFocus && elementToFocus['focus']) {\n elementToFocus.focus();\n }\n else {\n this._document.body.focus();\n }\n }\n };\n /**\n * Toggles the datepicker popup.\n */\n /**\n * Toggles the datepicker popup.\n * @return {?}\n */\n NgbInputDatepicker.prototype.toggle = /**\n * Toggles the datepicker popup.\n * @return {?}\n */\n function () {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n };\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n * @param {?=} date\n * @return {?}\n */\n NgbInputDatepicker.prototype.navigateTo = /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n * @param {?=} date\n * @return {?}\n */\n function (date) {\n if (this.isOpen()) {\n this._cRef.instance.navigateTo(date);\n }\n };\n /**\n * @return {?}\n */\n NgbInputDatepicker.prototype.onBlur = /**\n * @return {?}\n */\n function () { this._onTouched(); };\n /**\n * @return {?}\n */\n NgbInputDatepicker.prototype.onFocus = /**\n * @return {?}\n */\n function () { this._elWithFocus = this._elRef.nativeElement; };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbInputDatepicker.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if (changes['minDate'] || changes['maxDate']) {\n this._validatorChange();\n if (this.isOpen()) {\n if (changes['minDate']) {\n this._cRef.instance.minDate = this.minDate;\n }\n if (changes['maxDate']) {\n this._cRef.instance.maxDate = this.maxDate;\n }\n this._cRef.instance.ngOnChanges(changes);\n }\n }\n };\n /**\n * @return {?}\n */\n NgbInputDatepicker.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this.close();\n this._zoneSubscription.unsubscribe();\n };\n /**\n * @private\n * @param {?} datepickerInstance\n * @return {?}\n */\n NgbInputDatepicker.prototype._applyDatepickerInputs = /**\n * @private\n * @param {?} datepickerInstance\n * @return {?}\n */\n function (datepickerInstance) {\n var _this = this;\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekdays', 'showWeekNumbers']\n .forEach((/**\n * @param {?} optionName\n * @return {?}\n */\n function (optionName) {\n if (_this[optionName] !== undefined) {\n datepickerInstance[optionName] = _this[optionName];\n }\n }));\n datepickerInstance.startDate = this.startDate || this._model;\n };\n /**\n * @private\n * @param {?} nativeElement\n * @return {?}\n */\n NgbInputDatepicker.prototype._applyPopupStyling = /**\n * @private\n * @param {?} nativeElement\n * @return {?}\n */\n function (nativeElement) {\n this._renderer.addClass(nativeElement, 'dropdown-menu');\n this._renderer.addClass(nativeElement, 'show');\n if (this.container === 'body') {\n this._renderer.addClass(nativeElement, 'ngb-dp-body');\n }\n };\n /**\n * @private\n * @param {?} datepickerInstance\n * @return {?}\n */\n NgbInputDatepicker.prototype._subscribeForDatepickerOutputs = /**\n * @private\n * @param {?} datepickerInstance\n * @return {?}\n */\n function (datepickerInstance) {\n var _this = this;\n datepickerInstance.navigate.subscribe((/**\n * @param {?} navigateEvent\n * @return {?}\n */\n function (navigateEvent) { return _this.navigate.emit(navigateEvent); }));\n datepickerInstance.dateSelect.subscribe((/**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n _this.dateSelect.emit(date);\n if (_this.autoClose === true || _this.autoClose === 'inside') {\n _this.close();\n }\n }));\n };\n /**\n * @private\n * @param {?} model\n * @return {?}\n */\n NgbInputDatepicker.prototype._writeModelValue = /**\n * @private\n * @param {?} model\n * @return {?}\n */\n function (model) {\n /** @type {?} */\n var value = this._parserFormatter.format(model);\n this._inputValue = value;\n this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\n if (this.isOpen()) {\n this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\n this._onTouched();\n }\n };\n /**\n * @private\n * @param {?} date\n * @return {?}\n */\n NgbInputDatepicker.prototype._fromDateStruct = /**\n * @private\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n return this._calendar.isValid(ngbDate) ? ngbDate : null;\n };\n /**\n * @private\n * @return {?}\n */\n NgbInputDatepicker.prototype._updatePopupPosition = /**\n * @private\n * @return {?}\n */\n function () {\n if (!this._cRef) {\n return;\n }\n /** @type {?} */\n var hostElement;\n if (isString(this.positionTarget)) {\n hostElement = this._document.querySelector(this.positionTarget);\n }\n else if (this.positionTarget instanceof HTMLElement) {\n hostElement = this.positionTarget;\n }\n else {\n hostElement = this._elRef.nativeElement;\n }\n if (this.positionTarget && !hostElement) {\n throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n }\n positionElements(hostElement, this._cRef.location.nativeElement, this.placement, this.container === 'body');\n };\n NgbInputDatepicker.decorators = [\n { type: Directive, args: [{\n selector: 'input[ngbDatepicker]',\n exportAs: 'ngbDatepicker',\n host: {\n '(input)': 'manualDateChange($event.target.value)',\n '(change)': 'manualDateChange($event.target.value, true)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '[disabled]': 'disabled'\n },\n providers: [\n NGB_DATEPICKER_VALUE_ACCESSOR$1, NGB_DATEPICKER_VALIDATOR,\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ],\n },] }\n ];\n /** @nocollapse */\n NgbInputDatepicker.ctorParameters = function () { return [\n { type: NgbDateParserFormatter },\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: Renderer2 },\n { type: ComponentFactoryResolver },\n { type: NgZone },\n { type: NgbCalendar },\n { type: NgbDateAdapter },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: NgbInputDatepickerConfig }\n ]; };\n NgbInputDatepicker.propDecorators = {\n autoClose: [{ type: Input }],\n dayTemplate: [{ type: Input }],\n dayTemplateData: [{ type: Input }],\n displayMonths: [{ type: Input }],\n firstDayOfWeek: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n markDisabled: [{ type: Input }],\n minDate: [{ type: Input }],\n maxDate: [{ type: Input }],\n navigation: [{ type: Input }],\n outsideDays: [{ type: Input }],\n placement: [{ type: Input }],\n restoreFocus: [{ type: Input }],\n showWeekdays: [{ type: Input }],\n showWeekNumbers: [{ type: Input }],\n startDate: [{ type: Input }],\n container: [{ type: Input }],\n positionTarget: [{ type: Input }],\n dateSelect: [{ type: Output }],\n navigate: [{ type: Output }],\n closed: [{ type: Output }],\n disabled: [{ type: Input }]\n };\n return NgbInputDatepicker;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbDatepickerDayView = /** @class */ (function () {\n function NgbDatepickerDayView(i18n) {\n this.i18n = i18n;\n }\n /**\n * @return {?}\n */\n NgbDatepickerDayView.prototype.isMuted = /**\n * @return {?}\n */\n function () { return !this.selected && (this.date.month !== this.currentMonth || this.disabled); };\n NgbDatepickerDayView.decorators = [\n { type: Component, args: [{\n selector: '[ngbDatepickerDayView]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'btn-light',\n '[class.bg-primary]': 'selected',\n '[class.text-white]': 'selected',\n '[class.text-muted]': 'isMuted()',\n '[class.outside]': 'isMuted()',\n '[class.active]': 'focused'\n },\n template: \"{{ i18n.getDayNumerals(date) }}\",\n styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:0 0}[ngbDatepickerDayView].outside{opacity:.5}\"]\n }] }\n ];\n /** @nocollapse */\n NgbDatepickerDayView.ctorParameters = function () { return [\n { type: NgbDatepickerI18n }\n ]; };\n NgbDatepickerDayView.propDecorators = {\n currentMonth: [{ type: Input }],\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n focused: [{ type: Input }],\n selected: [{ type: Input }]\n };\n return NgbDatepickerDayView;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbDatepickerNavigationSelect = /** @class */ (function () {\n function NgbDatepickerNavigationSelect(i18n, _renderer) {\n this.i18n = i18n;\n this._renderer = _renderer;\n this.select = new EventEmitter();\n this._month = -1;\n this._year = -1;\n }\n /**\n * @param {?} month\n * @return {?}\n */\n NgbDatepickerNavigationSelect.prototype.changeMonth = /**\n * @param {?} month\n * @return {?}\n */\n function (month) { this.select.emit(new NgbDate(this.date.year, toInteger(month), 1)); };\n /**\n * @param {?} year\n * @return {?}\n */\n NgbDatepickerNavigationSelect.prototype.changeYear = /**\n * @param {?} year\n * @return {?}\n */\n function (year) { this.select.emit(new NgbDate(toInteger(year), this.date.month, 1)); };\n /**\n * @return {?}\n */\n NgbDatepickerNavigationSelect.prototype.ngAfterViewChecked = /**\n * @return {?}\n */\n function () {\n if (this.date) {\n if (this.date.month !== this._month) {\n this._month = this.date.month;\n this._renderer.setProperty(this.monthSelect.nativeElement, 'value', this._month);\n }\n if (this.date.year !== this._year) {\n this._year = this.date.year;\n this._renderer.setProperty(this.yearSelect.nativeElement, 'value', this._year);\n }\n }\n };\n NgbDatepickerNavigationSelect.decorators = [\n { type: Component, args: [{\n selector: 'ngb-datepicker-navigation-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"\\n \\n \",\n styles: [\"ngb-datepicker-navigation-select>.custom-select{-ms-flex:1 1 auto;flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}\"]\n }] }\n ];\n /** @nocollapse */\n NgbDatepickerNavigationSelect.ctorParameters = function () { return [\n { type: NgbDatepickerI18n },\n { type: Renderer2 }\n ]; };\n NgbDatepickerNavigationSelect.propDecorators = {\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n months: [{ type: Input }],\n years: [{ type: Input }],\n select: [{ type: Output }],\n monthSelect: [{ type: ViewChild, args: ['month', { static: true, read: ElementRef },] }],\n yearSelect: [{ type: ViewChild, args: ['year', { static: true, read: ElementRef },] }]\n };\n return NgbDatepickerNavigationSelect;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n */\nvar NgbCalendarHijri = /** @class */ (function (_super) {\n __extends(NgbCalendarHijri, _super);\n function NgbCalendarHijri() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n NgbCalendarHijri.prototype.getDaysPerWeek = /**\n * @return {?}\n */\n function () { return 7; };\n /**\n * @return {?}\n */\n NgbCalendarHijri.prototype.getMonths = /**\n * @return {?}\n */\n function () { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; };\n /**\n * @return {?}\n */\n NgbCalendarHijri.prototype.getWeeksPerMonth = /**\n * @return {?}\n */\n function () { return 6; };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarHijri.prototype.getNext = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = this._setYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = this._setMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return this._setDay(date, date.day + number);\n default:\n return date;\n }\n };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarHijri.prototype.getPrev = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n return this.getNext(date, period, -number);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHijri.prototype.getWeekday = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var day = this.toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n };\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n NgbCalendarHijri.prototype.getWeekNumber = /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n function (week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n /** @type {?} */\n var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n /** @type {?} */\n var date = week[thursdayIndex];\n /** @type {?} */\n var jsDate = this.toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n // Thursday\n /** @type {?} */\n var time = jsDate.getTime();\n /** @type {?} */\n var MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n };\n /**\n * @return {?}\n */\n NgbCalendarHijri.prototype.getToday = /**\n * @return {?}\n */\n function () { return this.fromGregorian(new Date()); };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHijri.prototype.isValid = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return date && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) &&\n !isNaN(this.toGregorian(date).getTime());\n };\n /**\n * @private\n * @param {?} date\n * @param {?} day\n * @return {?}\n */\n NgbCalendarHijri.prototype._setDay = /**\n * @private\n * @param {?} date\n * @param {?} day\n * @return {?}\n */\n function (date, day) {\n day = +day;\n /** @type {?} */\n var mDays = this.getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = this._setMonth(date, date.month - 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = this._setMonth(date, date.month + 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n };\n /**\n * @private\n * @param {?} date\n * @param {?} month\n * @return {?}\n */\n NgbCalendarHijri.prototype._setMonth = /**\n * @private\n * @param {?} date\n * @param {?} month\n * @return {?}\n */\n function (date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n };\n /**\n * @private\n * @param {?} date\n * @param {?} year\n * @return {?}\n */\n NgbCalendarHijri.prototype._setYear = /**\n * @private\n * @param {?} date\n * @param {?} year\n * @return {?}\n */\n function (date, year) {\n date.year = +year;\n return date;\n };\n NgbCalendarHijri.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarHijri;\n}(NgbCalendar));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Checks if islamic year is a leap year\n * @param {?} hYear\n * @return {?}\n */\nfunction isIslamicLeapYear(hYear) {\n return (14 + 11 * hYear) % 30 < 11;\n}\n/**\n * Checks if gregorian years is a leap year\n * @param {?} gDate\n * @return {?}\n */\nfunction isGregorianLeapYear(gDate) {\n /** @type {?} */\n var year = gDate.getFullYear();\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * Returns the start of Hijri Month.\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n * `hYear` is any Hijri hYear.\n * @param {?} hYear\n * @param {?} hMonth\n * @return {?}\n */\nfunction getIslamicMonthStart(hYear, hMonth) {\n return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n * @param {?} year\n * @return {?}\n */\nfunction getIslamicYearStart(year) {\n return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction mod(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * The civil calendar is one type of Hijri calendars used in islamic countries.\n * Uses a fixed cycle of alternating 29- and 30-day months,\n * with a leap day added to the last month of 11 out of every 30 years.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n * Dershowitz.\n * @type {?}\n */\nvar GREGORIAN_EPOCH = 1721425.5;\n/** @type {?} */\nvar ISLAMIC_EPOCH = 1948439.5;\nvar NgbCalendarIslamicCivil = /** @class */ (function (_super) {\n __extends(NgbCalendarIslamicCivil, _super);\n function NgbCalendarIslamicCivil() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n */\n /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n * @param {?} gDate\n * @return {?}\n */\n NgbCalendarIslamicCivil.prototype.fromGregorian = /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n * @param {?} gDate\n * @return {?}\n */\n function (gDate) {\n /** @type {?} */\n var gYear = gDate.getFullYear();\n /** @type {?} */\n var gMonth = gDate.getMonth();\n /** @type {?} */\n var gDay = gDate.getDate();\n /** @type {?} */\n var julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) +\n -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gDate) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay) + 0.5;\n /** @type {?} */\n var days = julianDay - ISLAMIC_EPOCH;\n /** @type {?} */\n var hYear = Math.floor((30 * days + 10646) / 10631.0);\n /** @type {?} */\n var hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n hMonth = Math.min(hMonth, 11);\n /** @type {?} */\n var hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n return new NgbDate(hYear, hMonth + 1, hDay);\n };\n /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n */\n /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n * @param {?} hDate\n * @return {?}\n */\n NgbCalendarIslamicCivil.prototype.toGregorian = /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n * @param {?} hDate\n * @return {?}\n */\n function (hDate) {\n /** @type {?} */\n var hYear = hDate.year;\n /** @type {?} */\n var hMonth = hDate.month - 1;\n /** @type {?} */\n var hDay = hDate.day;\n /** @type {?} */\n var julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n /** @type {?} */\n var wjd = Math.floor(julianDay - 0.5) + 0.5;\n /** @type {?} */\n var depoch = wjd - GREGORIAN_EPOCH;\n /** @type {?} */\n var quadricent = Math.floor(depoch / 146097);\n /** @type {?} */\n var dqc = mod(depoch, 146097);\n /** @type {?} */\n var cent = Math.floor(dqc / 36524);\n /** @type {?} */\n var dcent = mod(dqc, 36524);\n /** @type {?} */\n var quad = Math.floor(dcent / 1461);\n /** @type {?} */\n var dquad = mod(dcent, 1461);\n /** @type {?} */\n var yindex = Math.floor(dquad / 365);\n /** @type {?} */\n var year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n if (!(cent === 4 || yindex === 4)) {\n year++;\n }\n /** @type {?} */\n var gYearStart = GREGORIAN_EPOCH + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400);\n /** @type {?} */\n var yearday = wjd - gYearStart;\n /** @type {?} */\n var tjd = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear(new Date(year, 3, 1)) ? -1 : -2) + 1);\n /** @type {?} */\n var leapadj = wjd < tjd ? 0 : isGregorianLeapYear(new Date(year, 3, 1)) ? 1 : 2;\n /** @type {?} */\n var month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n /** @type {?} */\n var tjd2 = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) +\n Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear(new Date(year, month - 1, 1)) ? -1 : -2) +\n 1);\n /** @type {?} */\n var day = wjd - tjd2 + 1;\n return new Date(year, month - 1, day);\n };\n /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n */\n /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\n NgbCalendarIslamicCivil.prototype.getDaysPerMonth = /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\n function (month, year) {\n year = year + Math.floor(month / 13);\n month = ((month - 1) % 12) + 1;\n /** @type {?} */\n var length = 29 + month % 2;\n if (month === 12 && isIslamicLeapYear(year)) {\n length++;\n }\n return length;\n };\n NgbCalendarIslamicCivil.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarIslamicCivil;\n}(NgbCalendarHijri));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\n * This Calendar is used by Saudi Arabia for administrative purpose.\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * @type {?}\n */\nvar GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\n/** @type {?} */\nvar GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\n/** @type {?} */\nvar HIJRI_BEGIN = 1300;\n/** @type {?} */\nvar HIJRI_END = 1600;\n/** @type {?} */\nvar ONE_DAY = 1000 * 60 * 60 * 24;\n/** @type {?} */\nvar MONTH_LENGTH = [\n // 1300-1304\n '101010101010', '110101010100', '111011001001', '011011010100', '011011101010',\n // 1305-1309\n '001101101100', '101010101101', '010101010101', '011010101001', '011110010010',\n // 1310-1314\n '101110101001', '010111010100', '101011011010', '010101011100', '110100101101',\n // 1315-1319\n '011010010101', '011101001010', '101101010100', '101101101010', '010110101101',\n // 1320-1324\n '010010101110', '101001001111', '010100010111', '011010001011', '011010100101',\n // 1325-1329\n '101011010101', '001011010110', '100101011011', '010010011101', '101001001101',\n // 1330-1334\n '110100100110', '110110010101', '010110101100', '100110110110', '001010111010',\n // 1335-1339\n '101001011011', '010100101011', '101010010101', '011011001010', '101011101001',\n // 1340-1344\n '001011110100', '100101110110', '001010110110', '100101010110', '101011001010',\n // 1345-1349\n '101110100100', '101111010010', '010111011001', '001011011100', '100101101101',\n // 1350-1354\n '010101001101', '101010100101', '101101010010', '101110100101', '010110110100',\n // 1355-1359\n '100110110110', '010101010111', '001010010111', '010101001011', '011010100011',\n // 1360-1364\n '011101010010', '101101100101', '010101101010', '101010101011', '010100101011',\n // 1365-1369\n '110010010101', '110101001010', '110110100101', '010111001010', '101011010110',\n // 1370-1374\n '100101010111', '010010101011', '100101001011', '101010100101', '101101010010',\n // 1375-1379\n '101101101010', '010101110101', '001001110110', '100010110111', '010001011011',\n // 1380-1384\n '010101010101', '010110101001', '010110110100', '100111011010', '010011011101',\n // 1385-1389\n '001001101110', '100100110110', '101010101010', '110101010100', '110110110010',\n // 1390-1394\n '010111010101', '001011011010', '100101011011', '010010101011', '101001010101',\n // 1395-1399\n '101101001001', '101101100100', '101101110001', '010110110100', '101010110101',\n // 1400-1404\n '101001010101', '110100100101', '111010010010', '111011001001', '011011010100',\n // 1405-1409\n '101011101001', '100101101011', '010010101011', '101010010011', '110101001001',\n // 1410-1414\n '110110100100', '110110110010', '101010111001', '010010111010', '101001011011',\n // 1415-1419\n '010100101011', '101010010101', '101100101010', '101101010101', '010101011100',\n // 1420-1424\n '010010111101', '001000111101', '100100011101', '101010010101', '101101001010',\n // 1425-1429\n '101101011010', '010101101101', '001010110110', '100100111011', '010010011011',\n // 1430-1434\n '011001010101', '011010101001', '011101010100', '101101101010', '010101101100',\n // 1435-1439\n '101010101101', '010101010101', '101100101001', '101110010010', '101110101001',\n // 1440-1444\n '010111010100', '101011011010', '010101011010', '101010101011', '010110010101',\n // 1445-1449\n '011101001001', '011101100100', '101110101010', '010110110101', '001010110110',\n // 1450-1454\n '101001010110', '111001001101', '101100100101', '101101010010', '101101101010',\n // 1455-1459\n '010110101101', '001010101110', '100100101111', '010010010111', '011001001011',\n // 1460-1464\n '011010100101', '011010101100', '101011010110', '010101011101', '010010011101',\n // 1465-1469\n '101001001101', '110100010110', '110110010101', '010110101010', '010110110101',\n // 1470-1474\n '001011011010', '100101011011', '010010101101', '010110010101', '011011001010',\n // 1475-1479\n '011011100100', '101011101010', '010011110101', '001010110110', '100101010110',\n // 1480-1484\n '101010101010', '101101010100', '101111010010', '010111011001', '001011101010',\n // 1485-1489\n '100101101101', '010010101101', '101010010101', '101101001010', '101110100101',\n // 1490-1494\n '010110110010', '100110110101', '010011010110', '101010010111', '010101000111',\n // 1495-1499\n '011010010011', '011101001001', '101101010101', '010101101010', '101001101011',\n // 1500-1504\n '010100101011', '101010001011', '110101000110', '110110100011', '010111001010',\n // 1505-1509\n '101011010110', '010011011011', '001001101011', '100101001011', '101010100101',\n // 1510-1514\n '101101010010', '101101101001', '010101110101', '000101110110', '100010110111',\n // 1515-1519\n '001001011011', '010100101011', '010101100101', '010110110100', '100111011010',\n // 1520-1524\n '010011101101', '000101101101', '100010110110', '101010100110', '110101010010',\n // 1525-1529\n '110110101001', '010111010100', '101011011010', '100101011011', '010010101011',\n // 1530-1534\n '011001010011', '011100101001', '011101100010', '101110101001', '010110110010',\n // 1535-1539\n '101010110101', '010101010101', '101100100101', '110110010010', '111011001001',\n // 1540-1544\n '011011010010', '101011101001', '010101101011', '010010101011', '101001010101',\n // 1545-1549\n '110100101001', '110101010100', '110110101010', '100110110101', '010010111010',\n // 1550-1554\n '101000111011', '010010011011', '101001001101', '101010101010', '101011010101',\n // 1555-1559\n '001011011010', '100101011101', '010001011110', '101000101110', '110010011010',\n // 1560-1564\n '110101010101', '011010110010', '011010111001', '010010111010', '101001011101',\n // 1565-1569\n '010100101101', '101010010101', '101101010010', '101110101000', '101110110100',\n // 1570-1574\n '010110111001', '001011011010', '100101011010', '101101001010', '110110100100',\n // 1575-1579\n '111011010001', '011011101000', '101101101010', '010101101101', '010100110101',\n // 1580-1584\n '011010010101', '110101001010', '110110101000', '110111010100', '011011011010',\n // 1585-1589\n '010101011011', '001010011101', '011000101011', '101100010101', '101101001010',\n // 1590-1594\n '101110010101', '010110101010', '101010101110', '100100101110', '110010001111',\n // 1595-1599\n '010100100111', '011010010101', '011010101010', '101011010110', '010101011101',\n // 1600\n '001010011101'\n];\n/**\n * @param {?} date1\n * @param {?} date2\n * @return {?}\n */\nfunction getDaysDiff(date1, date2) {\n // Ignores the time part in date1 and date2:\n /** @type {?} */\n var time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\n /** @type {?} */\n var time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\n /** @type {?} */\n var diff = Math.abs(time1 - time2);\n return Math.round(diff / ONE_DAY);\n}\nvar NgbCalendarIslamicUmalqura = /** @class */ (function (_super) {\n __extends(NgbCalendarIslamicUmalqura, _super);\n function NgbCalendarIslamicUmalqura() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n */\n /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n * @param {?} gDate\n * @return {?}\n */\n NgbCalendarIslamicUmalqura.prototype.fromGregorian = /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n * @param {?} gDate\n * @return {?}\n */\n function (gDate) {\n /** @type {?} */\n var hDay = 1;\n /** @type {?} */\n var hMonth = 0;\n /** @type {?} */\n var hYear = 1300;\n /** @type {?} */\n var daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n /** @type {?} */\n var year = 1300;\n for (var i = 0; i < MONTH_LENGTH.length; i++, year++) {\n for (var j = 0; j < 12; j++) {\n /** @type {?} */\n var numOfDays = +MONTH_LENGTH[i][j] + 29;\n if (daysDiff <= numOfDays) {\n hDay = daysDiff + 1;\n if (hDay > numOfDays) {\n hDay = 1;\n j++;\n }\n if (j > 11) {\n j = 0;\n year++;\n }\n hMonth = j;\n hYear = year;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n daysDiff = daysDiff - numOfDays;\n }\n }\n }\n else {\n return _super.prototype.fromGregorian.call(this, gDate);\n }\n };\n /**\n * Converts the current Hijri date to Gregorian.\n */\n /**\n * Converts the current Hijri date to Gregorian.\n * @param {?} hDate\n * @return {?}\n */\n NgbCalendarIslamicUmalqura.prototype.toGregorian = /**\n * Converts the current Hijri date to Gregorian.\n * @param {?} hDate\n * @return {?}\n */\n function (hDate) {\n /** @type {?} */\n var hYear = hDate.year;\n /** @type {?} */\n var hMonth = hDate.month - 1;\n /** @type {?} */\n var hDay = hDate.day;\n /** @type {?} */\n var gDate = new Date(GREGORIAN_FIRST_DATE);\n /** @type {?} */\n var dayDiff = hDay - 1;\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n for (var y = 0; y < hYear - HIJRI_BEGIN; y++) {\n for (var m = 0; m < 12; m++) {\n dayDiff += +MONTH_LENGTH[y][m] + 29;\n }\n }\n for (var m = 0; m < hMonth; m++) {\n dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n }\n gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n }\n else {\n gDate = _super.prototype.toGregorian.call(this, hDate);\n }\n return gDate;\n };\n /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\n /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n * @param {?} hMonth\n * @param {?} hYear\n * @return {?}\n */\n NgbCalendarIslamicUmalqura.prototype.getDaysPerMonth = /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n * @param {?} hMonth\n * @param {?} hYear\n * @return {?}\n */\n function (hMonth, hYear) {\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n /** @type {?} */\n var pos = hYear - HIJRI_BEGIN;\n return +MONTH_LENGTH[pos][hMonth - 1] + 29;\n }\n return _super.prototype.getDaysPerMonth.call(this, hMonth, hYear);\n };\n NgbCalendarIslamicUmalqura.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarIslamicUmalqura;\n}(NgbCalendarIslamicCivil));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Returns the equivalent JS date value for a give input Jalali date.\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\n * @param {?} jalaliDate\n * @return {?}\n */\nfunction toGregorian(jalaliDate) {\n /** @type {?} */\n var jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n /** @type {?} */\n var date = julianToGregorian(jdn);\n date.setHours(6, 30, 3, 200);\n return date;\n}\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n * @param {?} gdate\n * @return {?}\n */\nfunction fromGregorian(gdate) {\n /** @type {?} */\n var g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n return julianToJalali(g2d);\n}\n/**\n * @param {?} date\n * @param {?} yearValue\n * @return {?}\n */\nfunction setJalaliYear(date, yearValue) {\n date.year = +yearValue;\n return date;\n}\n/**\n * @param {?} date\n * @param {?} month\n * @return {?}\n */\nfunction setJalaliMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n}\n/**\n * @param {?} date\n * @param {?} day\n * @return {?}\n */\nfunction setJalaliDay(date, day) {\n /** @type {?} */\n var mDays = getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = setJalaliMonth(date, date.month - 1);\n mDays = getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = setJalaliMonth(date, date.month + 1);\n mDays = getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction mod$1(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\nfunction div(a, b) {\n return Math.trunc(a / b);\n}\n/*\n This function determines if the Jalali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalali year (jalaliYear).\n @param jalaliYear Jalali calendar year (-61 to 3177)\n @return\n leap: number of years since the last leap year (0 to 4)\n gYear: Gregorian year of the beginning of Jalali year\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\n/**\n * @param {?} jalaliYear\n * @return {?}\n */\nfunction jalCal(jalaliYear) {\n // Jalali years starting the 33-year rule.\n /** @type {?} */\n var breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\n /** @type {?} */\n var breaksLength = breaks.length;\n /** @type {?} */\n var gYear = jalaliYear + 621;\n /** @type {?} */\n var leapJ = -14;\n /** @type {?} */\n var jp = breaks[0];\n if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n throw new Error('Invalid Jalali year ' + jalaliYear);\n }\n // Find the limiting years for the Jalali year jalaliYear.\n /** @type {?} */\n var jump;\n for (var i = 1; i < breaksLength; i += 1) {\n /** @type {?} */\n var jm = breaks[i];\n jump = jm - jp;\n if (jalaliYear < jm) {\n break;\n }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod$1(jump, 33), 4);\n jp = jm;\n }\n /** @type {?} */\n var n = jalaliYear - jp;\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod$1(n, 33) + 3, 4);\n if (mod$1(jump, 33) === 4 && jump - n === 4) {\n leapJ += 1;\n }\n // And the same in the Gregorian calendar (until the year gYear).\n /** @type {?} */\n var leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n // Determine the Gregorian date of Farvardin the 1st.\n /** @type {?} */\n var march = 20 + leapJ - leapG;\n // Find how many years have passed since the last leap year.\n if (jump - n < 6) {\n n = n - jump + div(jump + 4, 33) * 33;\n }\n /** @type {?} */\n var leap = mod$1(mod$1(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return { leap: leap, gy: gYear, march: march };\n}\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n @param jdn Julian Day number\n @return\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\n gMonth: Calendar month (1 to 12)\n gDay: Calendar day of the month M (1 to 28/29/30/31)\n */\n/**\n * @param {?} julianDayNumber\n * @return {?}\n */\nfunction julianToGregorian(julianDayNumber) {\n /** @type {?} */\n var j = 4 * julianDayNumber + 139361631;\n j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n /** @type {?} */\n var i = div(mod$1(j, 1461), 4) * 5 + 308;\n /** @type {?} */\n var gDay = div(mod$1(i, 153), 5) + 1;\n /** @type {?} */\n var gMonth = mod$1(div(i, 153), 12) + 1;\n /** @type {?} */\n var gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n return new Date(gYear, gMonth - 1, gDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jy Jalali year (1 to 3100)\n @param jm Jalali month (1 to 12)\n @param jd Jalali day (1 to 29/31)\n @return Julian Day number\n */\n/**\n * @param {?} gy\n * @param {?} gm\n * @param {?} gd\n * @return {?}\n */\nfunction gregorianToJulian(gy, gm, gd) {\n /** @type {?} */\n var d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod$1(gm + 9, 12) + 2, 5) + gd - 34840408;\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n}\n/*\n Converts the Julian Day number to a date in the Jalali calendar.\n @param julianDayNumber Julian Day number\n @return\n jalaliYear: Jalali year (1 to 3100)\n jalaliMonth: Jalali month (1 to 12)\n jalaliDay: Jalali day (1 to 29/31)\n */\n/**\n * @param {?} julianDayNumber\n * @return {?}\n */\nfunction julianToJalali(julianDayNumber) {\n /** @type {?} */\n var gy = julianToGregorian(julianDayNumber).getFullYear() // Calculate Gregorian year (gy).\n ;\n /** @type {?} */\n var jalaliYear = gy - 621;\n /** @type {?} */\n var r = jalCal(jalaliYear);\n /** @type {?} */\n var gregorianDay = gregorianToJulian(gy, 3, r.march);\n /** @type {?} */\n var jalaliDay;\n /** @type {?} */\n var jalaliMonth;\n /** @type {?} */\n var numberOfDays;\n // Find number of days that passed since 1 Farvardin.\n numberOfDays = julianDayNumber - gregorianDay;\n if (numberOfDays >= 0) {\n if (numberOfDays <= 185) {\n // The first 6 months.\n jalaliMonth = 1 + div(numberOfDays, 31);\n jalaliDay = mod$1(numberOfDays, 31) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n }\n else {\n // The remaining months.\n numberOfDays -= 186;\n }\n }\n else {\n // Previous Jalali year.\n jalaliYear -= 1;\n numberOfDays += 179;\n if (r.leap === 1) {\n numberOfDays += 1;\n }\n }\n jalaliMonth = 7 + div(numberOfDays, 30);\n jalaliDay = mod$1(numberOfDays, 30) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jYear Jalali year (1 to 3100)\n @param jMonth Jalali month (1 to 12)\n @param jDay Jalali day (1 to 29/31)\n @return Julian Day number\n */\n/**\n * @param {?} jYear\n * @param {?} jMonth\n * @param {?} jDay\n * @return {?}\n */\nfunction jalaliToJulian(jYear, jMonth, jDay) {\n /** @type {?} */\n var r = jalCal(jYear);\n return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n/**\n * Returns the number of days in a specific jalali month.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\nfunction getDaysPerMonth(month, year) {\n if (month <= 6) {\n return 31;\n }\n if (month <= 11) {\n return 30;\n }\n if (jalCal(year).leap === 0) {\n return 30;\n }\n return 29;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbCalendarPersian = /** @class */ (function (_super) {\n __extends(NgbCalendarPersian, _super);\n function NgbCalendarPersian() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n NgbCalendarPersian.prototype.getDaysPerWeek = /**\n * @return {?}\n */\n function () { return 7; };\n /**\n * @return {?}\n */\n NgbCalendarPersian.prototype.getMonths = /**\n * @return {?}\n */\n function () { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; };\n /**\n * @return {?}\n */\n NgbCalendarPersian.prototype.getWeeksPerMonth = /**\n * @return {?}\n */\n function () { return 6; };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarPersian.prototype.getNext = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = setJalaliYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setJalaliMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return setJalaliDay(date, date.day + number);\n default:\n return date;\n }\n };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarPersian.prototype.getPrev = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n return this.getNext(date, period, -number);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarPersian.prototype.getWeekday = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var day = toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n };\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n NgbCalendarPersian.prototype.getWeekNumber = /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n function (week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n /** @type {?} */\n var thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n /** @type {?} */\n var date = week[thursdayIndex];\n /** @type {?} */\n var jsDate = toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n // Thursday\n /** @type {?} */\n var time = jsDate.getTime();\n /** @type {?} */\n var startDate = toGregorian(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n };\n /**\n * @return {?}\n */\n NgbCalendarPersian.prototype.getToday = /**\n * @return {?}\n */\n function () { return fromGregorian(new Date()); };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarPersian.prototype.isValid = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) &&\n !isNaN(toGregorian(date).getTime());\n };\n NgbCalendarPersian.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarPersian;\n}(NgbCalendar));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar PARTS_PER_HOUR = 1080;\n/** @type {?} */\nvar PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\n/** @type {?} */\nvar PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\n/** @type {?} */\nvar PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\n/** @type {?} */\nvar BAHARAD = 11 * PARTS_PER_HOUR + 204;\n/** @type {?} */\nvar HEBREW_DAY_ON_JAN_1_1970 = 2092591;\n/** @type {?} */\nvar GREGORIAN_EPOCH$1 = 1721425.5;\n/**\n * @param {?} year\n * @return {?}\n */\nfunction isGregorianLeapYear$1(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * @param {?} year\n * @return {?}\n */\nfunction numberOfFirstDayInYear(year) {\n /** @type {?} */\n var monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n /** @type {?} */\n var fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n /** @type {?} */\n var dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n /** @type {?} */\n var timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n /** @type {?} */\n var dayOfWeek = dayNumber % 7;\n if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n dayNumber++;\n dayOfWeek = dayNumber % 7;\n }\n if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n dayNumber += 2;\n }\n else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n dayNumber++;\n }\n return dayNumber;\n}\n/**\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\nfunction getDaysInGregorianMonth(month, year) {\n /** @type {?} */\n var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (isGregorianLeapYear$1(year)) {\n days[1]++;\n }\n return days[month - 1];\n}\n/**\n * @param {?} year\n * @return {?}\n */\nfunction getHebrewMonths(year) {\n return isHebrewLeapYear(year) ? 13 : 12;\n}\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n * @param {?} year\n * @return {?}\n */\nfunction getDaysInHebrewYear(year) {\n return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\n/**\n * @param {?} year\n * @return {?}\n */\nfunction isHebrewLeapYear(year) {\n /** @type {?} */\n var b = (year * 12 + 17) % 19;\n return b >= ((b < 0) ? -7 : 12);\n}\n/**\n * Returns the number of days in a specific Hebrew month.\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n * `year` is any Hebrew year.\n * @param {?} month\n * @param {?} year\n * @return {?}\n */\nfunction getDaysInHebrewMonth(month, year) {\n /** @type {?} */\n var yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n /** @type {?} */\n var yearType = (yearLength <= 380 ? yearLength : (yearLength - 30)) - 353;\n /** @type {?} */\n var leapYear = isHebrewLeapYear(year);\n /** @type {?} */\n var daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] :\n [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n if (yearType > 0) {\n daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n }\n if (yearType > 1) {\n daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n }\n return daysInMonth[month - 1];\n}\n/**\n * @param {?} date\n * @return {?}\n */\nfunction getDayNumberInHebrewYear(date) {\n /** @type {?} */\n var numberOfDay = 0;\n for (var i = 1; i < date.month; i++) {\n numberOfDay += getDaysInHebrewMonth(i, date.year);\n }\n return numberOfDay + date.day;\n}\n/**\n * @param {?} date\n * @param {?} val\n * @return {?}\n */\nfunction setHebrewMonth(date, val) {\n /** @type {?} */\n var after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getHebrewMonths(date.year) - date.month) {\n val -= getHebrewMonths(date.year) - date.month + 1;\n date.year++;\n date.month = 1;\n }\n else {\n date.month += val;\n val = 0;\n }\n }\n else {\n if (val >= date.month) {\n date.year--;\n val -= date.month;\n date.month = getHebrewMonths(date.year);\n }\n else {\n date.month -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * @param {?} date\n * @param {?} val\n * @return {?}\n */\nfunction setHebrewDay(date, val) {\n /** @type {?} */\n var after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n date.year++;\n date.month = 1;\n date.day = 1;\n }\n else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n date.month++;\n date.day = 1;\n }\n else {\n date.day += val;\n val = 0;\n }\n }\n else {\n if (val >= date.day) {\n val -= date.day;\n date.month--;\n if (date.month === 0) {\n date.year--;\n date.month = getHebrewMonths(date.year);\n }\n date.day = getDaysInHebrewMonth(date.month, date.year);\n }\n else {\n date.day -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n * @param {?} gdate\n * @return {?}\n */\nfunction fromGregorian$1(gdate) {\n /** @type {?} */\n var date = new Date(gdate);\n /** @type {?} */\n var gYear = date.getFullYear();\n /** @type {?} */\n var gMonth = date.getMonth();\n /** @type {?} */\n var gDay = date.getDate();\n /** @type {?} */\n var julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) -\n Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gYear) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay + 0.5);\n /** @type {?} */\n var daysSinceHebEpoch = julianDay - 347997;\n /** @type {?} */\n var monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\n /** @type {?} */\n var hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n /** @type {?} */\n var firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n /** @type {?} */\n var dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n while (dayOfYear < 1) {\n hYear--;\n firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n }\n /** @type {?} */\n var hMonth = 1;\n /** @type {?} */\n var hDay = dayOfYear;\n while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n hDay -= getDaysInHebrewMonth(hMonth, hYear);\n hMonth++;\n }\n return new NgbDate(hYear, hMonth, hDay);\n}\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n * @param {?} hebrewDate\n * @return {?}\n */\nfunction toGregorian$1(hebrewDate) {\n /** @type {?} */\n var hYear = hebrewDate.year;\n /** @type {?} */\n var hMonth = hebrewDate.month;\n /** @type {?} */\n var hDay = hebrewDate.day;\n /** @type {?} */\n var days = numberOfFirstDayInYear(hYear);\n for (var i = 1; i < hMonth; i++) {\n days += getDaysInHebrewMonth(i, hYear);\n }\n days += hDay;\n /** @type {?} */\n var diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n /** @type {?} */\n var after = diffDays >= 0;\n if (!after) {\n diffDays = -diffDays;\n }\n /** @type {?} */\n var gYear = 1970;\n /** @type {?} */\n var gMonth = 1;\n /** @type {?} */\n var gDay = 1;\n while (diffDays > 0) {\n if (after) {\n if (diffDays >= (isGregorianLeapYear$1(gYear) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear$1(gYear) ? 366 : 365;\n gYear++;\n }\n else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n gMonth++;\n }\n else {\n gDay += diffDays;\n diffDays = 0;\n }\n }\n else {\n if (diffDays >= (isGregorianLeapYear$1(gYear - 1) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear$1(gYear - 1) ? 366 : 365;\n gYear--;\n }\n else {\n if (gMonth > 1) {\n gMonth--;\n }\n else {\n gMonth = 12;\n gYear--;\n }\n if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n }\n else {\n gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n diffDays = 0;\n }\n }\n }\n }\n return new Date(gYear, gMonth - 1, gDay);\n}\n/**\n * @param {?} numerals\n * @return {?}\n */\nfunction hebrewNumerals(numerals) {\n if (!numerals) {\n return '';\n }\n /** @type {?} */\n var hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n /** @type {?} */\n var hArray10_19 = [\n '\\u05d9', '\\u05d9\\u05d0', '\\u05d9\\u05d1', '\\u05d9\\u05d2', '\\u05d9\\u05d3', '\\u05d8\\u05d5', '\\u05d8\\u05d6',\n '\\u05d9\\u05d6', '\\u05d9\\u05d7', '\\u05d9\\u05d8'\n ];\n /** @type {?} */\n var hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n /** @type {?} */\n var hArray100_900 = [\n '', '\\u05e7', '\\u05e8', '\\u05e9', '\\u05ea', '\\u05ea\\u05e7', '\\u05ea\\u05e8', '\\u05ea\\u05e9', '\\u05ea\\u05ea',\n '\\u05ea\\u05ea\\u05e7'\n ];\n /** @type {?} */\n var hArray1000_9000 = [\n '', '\\u05d0', '\\u05d1', '\\u05d1\\u05d0', '\\u05d1\\u05d1', '\\u05d4', '\\u05d4\\u05d0', '\\u05d4\\u05d1',\n '\\u05d4\\u05d1\\u05d0', '\\u05d4\\u05d1\\u05d1'\n ];\n /** @type {?} */\n var geresh = '\\u05f3';\n /** @type {?} */\n var gershaim = '\\u05f4';\n /** @type {?} */\n var mem = 0;\n /** @type {?} */\n var result = [];\n /** @type {?} */\n var step = 0;\n while (numerals > 0) {\n /** @type {?} */\n var m = numerals % 10;\n if (step === 0) {\n mem = m;\n }\n else if (step === 1) {\n if (m !== 1) {\n result.unshift(hArray20_90[m], hArray0_9[mem]);\n }\n else {\n result.unshift(hArray10_19[mem]);\n }\n }\n else if (step === 2) {\n result.unshift(hArray100_900[m]);\n }\n else {\n if (m !== 5) {\n result.unshift(hArray1000_9000[m], geresh, ' ');\n }\n break;\n }\n numerals = Math.floor(numerals / 10);\n if (step === 0 && numerals === 0) {\n result.unshift(hArray0_9[m]);\n }\n step++;\n }\n result = result.join('').split('');\n if (result.length === 1) {\n result.push(geresh);\n }\n else if (result.length > 1) {\n result.splice(result.length - 1, 0, gershaim);\n }\n return result.join('');\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@since 3.2.0\n */\nvar NgbCalendarHebrew = /** @class */ (function (_super) {\n __extends(NgbCalendarHebrew, _super);\n function NgbCalendarHebrew() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getDaysPerWeek = /**\n * @return {?}\n */\n function () { return 7; };\n /**\n * @param {?=} year\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getMonths = /**\n * @param {?=} year\n * @return {?}\n */\n function (year) {\n if (year && isHebrewLeapYear(year)) {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n }\n else {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n };\n /**\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getWeeksPerMonth = /**\n * @return {?}\n */\n function () { return 6; };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHebrew.prototype.isValid = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var b = date && isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n return b && !isNaN(toGregorian$1(date).getTime());\n };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getNext = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date.year += number;\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setHebrewMonth(date, number);\n date.day = 1;\n return date;\n case 'd':\n return setHebrewDay(date, number);\n default:\n return date;\n }\n };\n /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getPrev = /**\n * @param {?} date\n * @param {?=} period\n * @param {?=} number\n * @return {?}\n */\n function (date, period, number) {\n if (period === void 0) { period = 'd'; }\n if (number === void 0) { number = 1; }\n return this.getNext(date, period, -number);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getWeekday = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var day = toGregorian$1(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n };\n /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getWeekNumber = /**\n * @param {?} week\n * @param {?} firstDayOfWeek\n * @return {?}\n */\n function (week, firstDayOfWeek) {\n /** @type {?} */\n var date = week[week.length - 1];\n return Math.ceil(getDayNumberInHebrewYear(date) / 7);\n };\n /**\n * @return {?}\n */\n NgbCalendarHebrew.prototype.getToday = /**\n * @return {?}\n */\n function () { return fromGregorian$1(new Date()); };\n /**\n * @since 3.4.0\n */\n /**\n * \\@since 3.4.0\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHebrew.prototype.toGregorian = /**\n * \\@since 3.4.0\n * @param {?} date\n * @return {?}\n */\n function (date) { return fromJSDate(toGregorian$1(date)); };\n /**\n * @since 3.4.0\n */\n /**\n * \\@since 3.4.0\n * @param {?} date\n * @return {?}\n */\n NgbCalendarHebrew.prototype.fromGregorian = /**\n * \\@since 3.4.0\n * @param {?} date\n * @return {?}\n */\n function (date) { return fromGregorian$1(toJSDate(date)); };\n NgbCalendarHebrew.decorators = [\n { type: Injectable }\n ];\n return NgbCalendarHebrew;\n}(NgbCalendar));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar WEEKDAYS = ['\u05E9\u05E0\u05D9', '\u05E9\u05DC\u05D9\u05E9\u05D9', '\u05E8\u05D1\u05D9\u05E2\u05D9', '\u05D7\u05DE\u05D9\u05E9\u05D9', '\u05E9\u05D9\u05E9\u05D9', '\u05E9\u05D1\u05EA', '\u05E8\u05D0\u05E9\u05D5\u05DF'];\n/** @type {?} */\nvar MONTHS = ['\u05EA\u05E9\u05E8\u05D9', '\u05D7\u05E9\u05D5\u05DF', '\u05DB\u05E1\u05DC\u05D5', '\u05D8\u05D1\u05EA', '\u05E9\u05D1\u05D8', '\u05D0\u05D3\u05E8', '\u05E0\u05D9\u05E1\u05DF', '\u05D0\u05D9\u05D9\u05E8', '\u05E1\u05D9\u05D5\u05DF', '\u05EA\u05DE\u05D5\u05D6', '\u05D0\u05D1', '\u05D0\u05DC\u05D5\u05DC'];\n/** @type {?} */\nvar MONTHS_LEAP = ['\u05EA\u05E9\u05E8\u05D9', '\u05D7\u05E9\u05D5\u05DF', '\u05DB\u05E1\u05DC\u05D5', '\u05D8\u05D1\u05EA', '\u05E9\u05D1\u05D8', '\u05D0\u05D3\u05E8 \u05D0\u05F3', '\u05D0\u05D3\u05E8 \u05D1\u05F3', '\u05E0\u05D9\u05E1\u05DF', '\u05D0\u05D9\u05D9\u05E8', '\u05E1\u05D9\u05D5\u05DF', '\u05EA\u05DE\u05D5\u05D6', '\u05D0\u05D1', '\u05D0\u05DC\u05D5\u05DC'];\n/**\n * \\@since 3.2.0\n */\nvar NgbDatepickerI18nHebrew = /** @class */ (function (_super) {\n __extends(NgbDatepickerI18nHebrew, _super);\n function NgbDatepickerI18nHebrew() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @param {?} month\n * @param {?=} year\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getMonthShortName = /**\n * @param {?} month\n * @param {?=} year\n * @return {?}\n */\n function (month, year) { return this.getMonthFullName(month, year); };\n /**\n * @param {?} month\n * @param {?=} year\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getMonthFullName = /**\n * @param {?} month\n * @param {?=} year\n * @return {?}\n */\n function (month, year) {\n return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] : MONTHS[month - 1];\n };\n /**\n * @param {?} weekday\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getWeekdayShortName = /**\n * @param {?} weekday\n * @return {?}\n */\n function (weekday) { return WEEKDAYS[weekday - 1]; };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getDayAriaLabel = /**\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return hebrewNumerals(date.day) + \" \" + this.getMonthFullName(date.month, date.year) + \" \" + hebrewNumerals(date.year);\n };\n /**\n * @param {?} date\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getDayNumerals = /**\n * @param {?} date\n * @return {?}\n */\n function (date) { return hebrewNumerals(date.day); };\n /**\n * @param {?} weekNumber\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getWeekNumerals = /**\n * @param {?} weekNumber\n * @return {?}\n */\n function (weekNumber) { return hebrewNumerals(weekNumber); };\n /**\n * @param {?} year\n * @return {?}\n */\n NgbDatepickerI18nHebrew.prototype.getYearNumerals = /**\n * @param {?} year\n * @return {?}\n */\n function (year) { return hebrewNumerals(year); };\n NgbDatepickerI18nHebrew.decorators = [\n { type: Injectable }\n ];\n return NgbDatepickerI18nHebrew;\n}(NgbDatepickerI18n));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\nvar NgbDateNativeAdapter = /** @class */ (function (_super) {\n __extends(NgbDateNativeAdapter, _super);\n function NgbDateNativeAdapter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Converts a native `Date` to a `NgbDateStruct`.\n */\n /**\n * Converts a native `Date` to a `NgbDateStruct`.\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeAdapter.prototype.fromModel = /**\n * Converts a native `Date` to a `NgbDateStruct`.\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return (date instanceof Date && !isNaN(date.getTime())) ? this._fromNativeDate(date) : null;\n };\n /**\n * Converts a `NgbDateStruct` to a native `Date`.\n */\n /**\n * Converts a `NgbDateStruct` to a native `Date`.\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeAdapter.prototype.toModel = /**\n * Converts a `NgbDateStruct` to a native `Date`.\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) :\n null;\n };\n /**\n * @protected\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeAdapter.prototype._fromNativeDate = /**\n * @protected\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n };\n /**\n * @protected\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeAdapter.prototype._toNativeDate = /**\n * @protected\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // avoid 30 -> 1930 conversion\n jsDate.setFullYear(date.year);\n return jsDate;\n };\n NgbDateNativeAdapter.decorators = [\n { type: Injectable }\n ];\n return NgbDateNativeAdapter;\n}(NgbDateAdapter));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * \\@since 3.2.0\n */\nvar NgbDateNativeUTCAdapter = /** @class */ (function (_super) {\n __extends(NgbDateNativeUTCAdapter, _super);\n function NgbDateNativeUTCAdapter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @protected\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeUTCAdapter.prototype._fromNativeDate = /**\n * @protected\n * @param {?} date\n * @return {?}\n */\n function (date) {\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\n };\n /**\n * @protected\n * @param {?} date\n * @return {?}\n */\n NgbDateNativeUTCAdapter.prototype._toNativeDate = /**\n * @protected\n * @param {?} date\n * @return {?}\n */\n function (date) {\n /** @type {?} */\n var jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n // avoid 30 -> 1930 conversion\n jsDate.setUTCFullYear(date.year);\n return jsDate;\n };\n NgbDateNativeUTCAdapter.decorators = [\n { type: Injectable }\n ];\n return NgbDateNativeUTCAdapter;\n}(NgbDateNativeAdapter));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbDatepickerModule = /** @class */ (function () {\n function NgbDatepickerModule() {\n }\n NgbDatepickerModule.decorators = [\n { type: NgModule, args: [{\n declarations: [\n NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect,\n NgbDatepickerDayView, NgbInputDatepicker\n ],\n exports: [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth],\n imports: [CommonModule, FormsModule],\n entryComponents: [NgbDatepicker]\n },] }\n ];\n return NgbDatepickerModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the dropdowns used in the application.\n */\nvar NgbDropdownConfig = /** @class */ (function () {\n function NgbDropdownConfig() {\n this.autoClose = true;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n }\n NgbDropdownConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbDropdownConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbDropdownConfig_Factory() { return new NgbDropdownConfig(); }, token: NgbDropdownConfig, providedIn: \"root\" });\n return NgbDropdownConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbNavbar = /** @class */ (function () {\n function NgbNavbar() {\n }\n NgbNavbar.decorators = [\n { type: Directive, args: [{ selector: '.navbar' },] }\n ];\n return NgbNavbar;\n}());\n/**\n * A directive you should put on a dropdown item to enable keyboard navigation.\n * Arrow keys will move focus between items marked with this directive.\n *\n * \\@since 4.1.0\n */\nvar NgbDropdownItem = /** @class */ (function () {\n function NgbDropdownItem(elementRef) {\n this.elementRef = elementRef;\n this._disabled = false;\n }\n Object.defineProperty(NgbDropdownItem.prototype, \"disabled\", {\n get: /**\n * @return {?}\n */\n function () { return this._disabled; },\n set: /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._disabled = (/** @type {?} */ (value)) === '' || value === true; // accept an empty attribute as true\n },\n enumerable: true,\n configurable: true\n });\n NgbDropdownItem.decorators = [\n { type: Directive, args: [{ selector: '[ngbDropdownItem]', host: { 'class': 'dropdown-item', '[class.disabled]': 'disabled' } },] }\n ];\n /** @nocollapse */\n NgbDropdownItem.ctorParameters = function () { return [\n { type: ElementRef }\n ]; };\n NgbDropdownItem.propDecorators = {\n disabled: [{ type: Input }]\n };\n return NgbDropdownItem;\n}());\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\nvar NgbDropdownMenu = /** @class */ (function () {\n function NgbDropdownMenu(dropdown) {\n this.dropdown = dropdown;\n this.placement = 'bottom';\n this.isOpen = false;\n }\n NgbDropdownMenu.decorators = [\n { type: Directive, args: [{\n selector: '[ngbDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen()',\n '[attr.x-placement]': 'placement',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Enter)': 'dropdown.onKeyDown($event)',\n '(keydown.Space)': 'dropdown.onKeyDown($event)'\n }\n },] }\n ];\n /** @nocollapse */\n NgbDropdownMenu.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef((/**\n * @return {?}\n */\n function () { return NgbDropdown; })),] }] }\n ]; };\n NgbDropdownMenu.propDecorators = {\n menuItems: [{ type: ContentChildren, args: [NgbDropdownItem,] }]\n };\n return NgbDropdownMenu;\n}());\n/**\n * A directive to mark an element to which dropdown menu will be anchored.\n *\n * This is a simple version of the `NgbDropdownToggle` directive.\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\n * for events other than click.\n *\n * \\@since 1.1.0\n */\nvar NgbDropdownAnchor = /** @class */ (function () {\n function NgbDropdownAnchor(dropdown, _elementRef) {\n this.dropdown = dropdown;\n this._elementRef = _elementRef;\n this.anchorEl = _elementRef.nativeElement;\n }\n /**\n * @return {?}\n */\n NgbDropdownAnchor.prototype.getNativeElement = /**\n * @return {?}\n */\n function () { return this._elementRef.nativeElement; };\n NgbDropdownAnchor.decorators = [\n { type: Directive, args: [{\n selector: '[ngbDropdownAnchor]',\n host: { 'class': 'dropdown-toggle', 'aria-haspopup': 'true', '[attr.aria-expanded]': 'dropdown.isOpen()' }\n },] }\n ];\n /** @nocollapse */\n NgbDropdownAnchor.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef((/**\n * @return {?}\n */\n function () { return NgbDropdown; })),] }] },\n { type: ElementRef }\n ]; };\n return NgbDropdownAnchor;\n}());\n/**\n * A directive to mark an element that will toggle dropdown via the `click` event.\n *\n * You can also use `NgbDropdownAnchor` as an alternative.\n */\nvar NgbDropdownToggle = /** @class */ (function (_super) {\n __extends(NgbDropdownToggle, _super);\n function NgbDropdownToggle(dropdown, elementRef) {\n return _super.call(this, dropdown, elementRef) || this;\n }\n NgbDropdownToggle.decorators = [\n { type: Directive, args: [{\n selector: '[ngbDropdownToggle]',\n host: {\n 'class': 'dropdown-toggle',\n 'aria-haspopup': 'true',\n '[attr.aria-expanded]': 'dropdown.isOpen()',\n '(click)': 'dropdown.toggle()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)'\n },\n providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef((/**\n * @return {?}\n */\n function () { return NgbDropdownToggle; })) }]\n },] }\n ];\n /** @nocollapse */\n NgbDropdownToggle.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef((/**\n * @return {?}\n */\n function () { return NgbDropdown; })),] }] },\n { type: ElementRef }\n ]; };\n return NgbDropdownToggle;\n}(NgbDropdownAnchor));\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\nvar NgbDropdown = /** @class */ (function () {\n function NgbDropdown(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\n var _this = this;\n this._changeDetector = _changeDetector;\n this._document = _document;\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._closed$ = new Subject();\n /**\n * Defines whether or not the dropdown menu is opened initially.\n */\n this._open = false;\n /**\n * An event fired when the dropdown is opened or closed.\n *\n * The event payload is a `boolean`:\n * * `true` - the dropdown was opened\n * * `false` - the dropdown was closed\n */\n this.openChange = new EventEmitter();\n this.placement = config.placement;\n this.container = config.container;\n this.autoClose = config.autoClose;\n this.display = ngbNavbar ? 'static' : 'dynamic';\n this._zoneSubscription = _ngZone.onStable.subscribe((/**\n * @return {?}\n */\n function () { _this._positionMenu(); }));\n }\n /**\n * @return {?}\n */\n NgbDropdown.prototype.ngAfterContentInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n this._ngZone.onStable.pipe(take(1)).subscribe((/**\n * @return {?}\n */\n function () {\n _this._applyPlacementClasses();\n if (_this._open) {\n _this._setCloseHandlers();\n }\n }));\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbDropdown.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if (changes.container && this._open) {\n this._applyContainer(this.container);\n }\n if (changes.placement && !changes.placement.isFirstChange) {\n this._applyPlacementClasses();\n }\n };\n /**\n * Checks if the dropdown menu is open.\n */\n /**\n * Checks if the dropdown menu is open.\n * @return {?}\n */\n NgbDropdown.prototype.isOpen = /**\n * Checks if the dropdown menu is open.\n * @return {?}\n */\n function () { return this._open; };\n /**\n * Opens the dropdown menu.\n */\n /**\n * Opens the dropdown menu.\n * @return {?}\n */\n NgbDropdown.prototype.open = /**\n * Opens the dropdown menu.\n * @return {?}\n */\n function () {\n if (!this._open) {\n this._open = true;\n this._applyContainer(this.container);\n this.openChange.emit(true);\n this._setCloseHandlers();\n }\n };\n /**\n * @private\n * @return {?}\n */\n NgbDropdown.prototype._setCloseHandlers = /**\n * @private\n * @return {?}\n */\n function () {\n var _this = this;\n /** @type {?} */\n var anchor = this._anchor;\n ngbAutoClose(this._ngZone, this._document, this.autoClose, (/**\n * @return {?}\n */\n function () { return _this.close(); }), this._closed$, this._menu ? [this._menuElement.nativeElement] : [], anchor ? [anchor.getNativeElement()] : [], '.dropdown-item,.dropdown-divider');\n };\n /**\n * Closes the dropdown menu.\n */\n /**\n * Closes the dropdown menu.\n * @return {?}\n */\n NgbDropdown.prototype.close = /**\n * Closes the dropdown menu.\n * @return {?}\n */\n function () {\n if (this._open) {\n this._open = false;\n this._resetContainer();\n this._closed$.next();\n this.openChange.emit(false);\n this._changeDetector.markForCheck();\n }\n };\n /**\n * Toggles the dropdown menu.\n */\n /**\n * Toggles the dropdown menu.\n * @return {?}\n */\n NgbDropdown.prototype.toggle = /**\n * Toggles the dropdown menu.\n * @return {?}\n */\n function () {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n };\n /**\n * @return {?}\n */\n NgbDropdown.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this._resetContainer();\n this._closed$.next();\n this._zoneSubscription.unsubscribe();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbDropdown.prototype.onKeyDown = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n var _this = this;\n // tslint:disable-next-line:deprecation\n /** @type {?} */\n var key = event.which;\n /** @type {?} */\n var itemElements = this._getMenuElements();\n /** @type {?} */\n var position = -1;\n /** @type {?} */\n var isEventFromItems = false;\n /** @type {?} */\n var itemElement = null;\n /** @type {?} */\n var isEventFromToggle = this._isEventFromToggle(event);\n if (!isEventFromToggle && itemElements.length) {\n itemElements.forEach((/**\n * @param {?} item\n * @param {?} index\n * @return {?}\n */\n function (item, index) {\n if (item.contains((/** @type {?} */ (event.target)))) {\n isEventFromItems = true;\n itemElement = item;\n }\n if (item === _this._document.activeElement) {\n position = index;\n }\n }));\n }\n // closing on Enter / Space\n if (key === Key.Space || key === Key.Enter) {\n if (isEventFromItems && (this.autoClose === true || this.autoClose === 'inside')) {\n // Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\n // So we have to register a one-time click handler that will fire after any user defined click handlers\n // to close the dropdown\n fromEvent(itemElement, 'click').pipe(take(1)).subscribe((/**\n * @return {?}\n */\n function () { return _this.close(); }));\n }\n return;\n }\n // opening / navigating\n if (isEventFromToggle || isEventFromItems) {\n this.open();\n if (itemElements.length) {\n switch (key) {\n case Key.ArrowDown:\n position = Math.min(position + 1, itemElements.length - 1);\n break;\n case Key.ArrowUp:\n if (this._isDropup() && position === -1) {\n position = itemElements.length - 1;\n break;\n }\n position = Math.max(position - 1, 0);\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = itemElements.length - 1;\n break;\n }\n itemElements[position].focus();\n }\n event.preventDefault();\n }\n };\n /**\n * @private\n * @return {?}\n */\n NgbDropdown.prototype._isDropup = /**\n * @private\n * @return {?}\n */\n function () { return this._elementRef.nativeElement.classList.contains('dropup'); };\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n NgbDropdown.prototype._isEventFromToggle = /**\n * @private\n * @param {?} event\n * @return {?}\n */\n function (event) {\n return this._anchor.getNativeElement().contains((/** @type {?} */ (event.target)));\n };\n /**\n * @private\n * @return {?}\n */\n NgbDropdown.prototype._getMenuElements = /**\n * @private\n * @return {?}\n */\n function () {\n /** @type {?} */\n var menu = this._menu;\n if (menu == null) {\n return [];\n }\n return menu.menuItems.filter((/**\n * @param {?} item\n * @return {?}\n */\n function (item) { return !item.disabled; })).map((/**\n * @param {?} item\n * @return {?}\n */\n function (item) { return item.elementRef.nativeElement; }));\n };\n /**\n * @private\n * @return {?}\n */\n NgbDropdown.prototype._positionMenu = /**\n * @private\n * @return {?}\n */\n function () {\n /** @type {?} */\n var menu = this._menu;\n if (this.isOpen() && menu) {\n this._applyPlacementClasses(this.display === 'dynamic' ?\n positionElements(this._anchor.anchorEl, this._bodyContainer || this._menuElement.nativeElement, this.placement, this.container === 'body') :\n this._getFirstPlacement(this.placement));\n }\n };\n /**\n * @private\n * @param {?} placement\n * @return {?}\n */\n NgbDropdown.prototype._getFirstPlacement = /**\n * @private\n * @param {?} placement\n * @return {?}\n */\n function (placement) {\n return Array.isArray(placement) ? placement[0] : (/** @type {?} */ (placement.split(' ')[0]));\n };\n /**\n * @private\n * @return {?}\n */\n NgbDropdown.prototype._resetContainer = /**\n * @private\n * @return {?}\n */\n function () {\n /** @type {?} */\n var renderer = this._renderer;\n /** @type {?} */\n var menuElement = this._menuElement;\n if (menuElement) {\n /** @type {?} */\n var dropdownElement = this._elementRef.nativeElement;\n /** @type {?} */\n var dropdownMenuElement = menuElement.nativeElement;\n renderer.appendChild(dropdownElement, dropdownMenuElement);\n renderer.removeStyle(dropdownMenuElement, 'position');\n renderer.removeStyle(dropdownMenuElement, 'transform');\n }\n if (this._bodyContainer) {\n renderer.removeChild(this._document.body, this._bodyContainer);\n this._bodyContainer = null;\n }\n };\n /**\n * @private\n * @param {?=} container\n * @return {?}\n */\n NgbDropdown.prototype._applyContainer = /**\n * @private\n * @param {?=} container\n * @return {?}\n */\n function (container) {\n if (container === void 0) { container = null; }\n this._resetContainer();\n if (container === 'body') {\n /** @type {?} */\n var renderer = this._renderer;\n /** @type {?} */\n var dropdownMenuElement = this._menuElement.nativeElement;\n /** @type {?} */\n var bodyContainer = this._bodyContainer = this._bodyContainer || renderer.createElement('div');\n // Override some styles to have the positionning working\n renderer.setStyle(bodyContainer, 'position', 'absolute');\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\n renderer.setStyle(bodyContainer, 'z-index', '1050');\n renderer.appendChild(bodyContainer, dropdownMenuElement);\n renderer.appendChild(this._document.body, bodyContainer);\n }\n };\n /**\n * @private\n * @param {?=} placement\n * @return {?}\n */\n NgbDropdown.prototype._applyPlacementClasses = /**\n * @private\n * @param {?=} placement\n * @return {?}\n */\n function (placement) {\n /** @type {?} */\n var menu = this._menu;\n if (menu) {\n if (!placement) {\n placement = this._getFirstPlacement(this.placement);\n }\n /** @type {?} */\n var renderer = this._renderer;\n /** @type {?} */\n var dropdownElement = this._elementRef.nativeElement;\n // remove the current placement classes\n renderer.removeClass(dropdownElement, 'dropup');\n renderer.removeClass(dropdownElement, 'dropdown');\n menu.placement = this.display === 'static' ? null : placement;\n /*\n * apply the new placement\n * in case of top use up-arrow or down-arrow otherwise\n */\n /** @type {?} */\n var dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n renderer.addClass(dropdownElement, dropdownClass);\n /** @type {?} */\n var bodyContainer = this._bodyContainer;\n if (bodyContainer) {\n renderer.removeClass(bodyContainer, 'dropup');\n renderer.removeClass(bodyContainer, 'dropdown');\n renderer.addClass(bodyContainer, dropdownClass);\n }\n }\n };\n NgbDropdown.decorators = [\n { type: Directive, args: [{ selector: '[ngbDropdown]', exportAs: 'ngbDropdown', host: { '[class.show]': 'isOpen()' } },] }\n ];\n /** @nocollapse */\n NgbDropdown.ctorParameters = function () { return [\n { type: ChangeDetectorRef },\n { type: NgbDropdownConfig },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ElementRef },\n { type: Renderer2 },\n { type: NgbNavbar, decorators: [{ type: Optional }] }\n ]; };\n NgbDropdown.propDecorators = {\n _menu: [{ type: ContentChild, args: [NgbDropdownMenu, { static: false },] }],\n _menuElement: [{ type: ContentChild, args: [NgbDropdownMenu, { read: ElementRef, static: false },] }],\n _anchor: [{ type: ContentChild, args: [NgbDropdownAnchor, { static: false },] }],\n autoClose: [{ type: Input }],\n _open: [{ type: Input, args: ['open',] }],\n placement: [{ type: Input }],\n container: [{ type: Input }],\n display: [{ type: Input }],\n openChange: [{ type: Output }]\n };\n return NgbDropdown;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar];\nvar NgbDropdownModule = /** @class */ (function () {\n function NgbDropdownModule() {\n }\n NgbDropdownModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_DROPDOWN_DIRECTIVES, exports: NGB_DROPDOWN_DIRECTIVES },] }\n ];\n return NgbDropdownModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n *\n * \\@since 3.1.0\n */\nvar NgbModalConfig = /** @class */ (function () {\n function NgbModalConfig() {\n this.backdrop = true;\n this.keyboard = true;\n }\n NgbModalConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbModalConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbModalConfig_Factory() { return new NgbModalConfig(); }, token: NgbModalConfig, providedIn: \"root\" });\n return NgbModalConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar ContentRef = /** @class */ (function () {\n function ContentRef(nodes, viewRef, componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n return ContentRef;\n}());\n/**\n * @template T\n */\nvar /**\n * @template T\n */\nPopupService = /** @class */ (function () {\n function PopupService(_type, _injector, _viewContainerRef, _renderer, _componentFactoryResolver, _applicationRef) {\n this._type = _type;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._applicationRef = _applicationRef;\n }\n /**\n * @param {?=} content\n * @param {?=} context\n * @return {?}\n */\n PopupService.prototype.open = /**\n * @param {?=} content\n * @param {?=} context\n * @return {?}\n */\n function (content, context) {\n if (!this._windowRef) {\n this._contentRef = this._getContentRef(content, context);\n this._windowRef = this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type), 0, this._injector, this._contentRef.nodes);\n }\n return this._windowRef;\n };\n /**\n * @return {?}\n */\n PopupService.prototype.close = /**\n * @return {?}\n */\n function () {\n if (this._windowRef) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n this._windowRef = null;\n if (this._contentRef.viewRef) {\n this._applicationRef.detachView(this._contentRef.viewRef);\n this._contentRef.viewRef.destroy();\n this._contentRef = null;\n }\n }\n };\n /**\n * @private\n * @param {?} content\n * @param {?=} context\n * @return {?}\n */\n PopupService.prototype._getContentRef = /**\n * @private\n * @param {?} content\n * @param {?=} context\n * @return {?}\n */\n function (content, context) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n /** @type {?} */\n var viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n else {\n return new ContentRef([[this._renderer.createText(\"\" + content)]]);\n }\n };\n return PopupService;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar noop = (/**\n * @return {?}\n */\nfunction () { });\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to compensate the lack of a vertical scrollbar by adding an\n * equivalent padding on the right of the body, and to remove this compensation.\n */\nvar ScrollBar = /** @class */ (function () {\n function ScrollBar(_document) {\n this._document = _document;\n }\n /**\n * To be called right before a potential vertical scrollbar would be removed:\n *\n * - if there was a scrollbar, adds some compensation padding to the body\n * to keep the same layout as when the scrollbar is there\n * - if there was none, there is nothing to do\n *\n * @return a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n /**\n * To be called right before a potential vertical scrollbar would be removed:\n *\n * - if there was a scrollbar, adds some compensation padding to the body\n * to keep the same layout as when the scrollbar is there\n * - if there was none, there is nothing to do\n *\n * @return {?} a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n ScrollBar.prototype.compensate = /**\n * To be called right before a potential vertical scrollbar would be removed:\n *\n * - if there was a scrollbar, adds some compensation padding to the body\n * to keep the same layout as when the scrollbar is there\n * - if there was none, there is nothing to do\n *\n * @return {?} a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n function () {\n /** @type {?} */\n var width = this._getWidth();\n return !this._isPresent(width) ? noop : this._adjustBody(width);\n };\n /**\n * Adds a padding of the given width on the right of the body.\n *\n * @return a callback used to revert the padding to its previous value\n */\n /**\n * Adds a padding of the given width on the right of the body.\n *\n * @private\n * @param {?} scrollbarWidth\n * @return {?} a callback used to revert the padding to its previous value\n */\n ScrollBar.prototype._adjustBody = /**\n * Adds a padding of the given width on the right of the body.\n *\n * @private\n * @param {?} scrollbarWidth\n * @return {?} a callback used to revert the padding to its previous value\n */\n function (scrollbarWidth) {\n /** @type {?} */\n var body = this._document.body;\n /** @type {?} */\n var userSetPaddingStyle = body.style.paddingRight;\n /** @type {?} */\n var actualPadding = parseFloat(window.getComputedStyle(body)['padding-right']);\n body.style['padding-right'] = actualPadding + scrollbarWidth + \"px\";\n return (/**\n * @return {?}\n */\n function () { return body.style['padding-right'] = userSetPaddingStyle; });\n };\n /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @return true if scrollbar is present, false otherwise\n */\n /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @private\n * @param {?} scrollbarWidth\n * @return {?} true if scrollbar is present, false otherwise\n */\n ScrollBar.prototype._isPresent = /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @private\n * @param {?} scrollbarWidth\n * @return {?} true if scrollbar is present, false otherwise\n */\n function (scrollbarWidth) {\n /** @type {?} */\n var rect = this._document.body.getBoundingClientRect();\n /** @type {?} */\n var bodyToViewportGap = window.innerWidth - (rect.left + rect.right);\n /** @type {?} */\n var uncertainty = 0.1 * scrollbarWidth;\n return bodyToViewportGap >= scrollbarWidth - uncertainty;\n };\n /**\n * Calculates and returns the width of a scrollbar.\n *\n * @return the width of a scrollbar on this page\n */\n /**\n * Calculates and returns the width of a scrollbar.\n *\n * @private\n * @return {?} the width of a scrollbar on this page\n */\n ScrollBar.prototype._getWidth = /**\n * Calculates and returns the width of a scrollbar.\n *\n * @private\n * @return {?} the width of a scrollbar on this page\n */\n function () {\n /** @type {?} */\n var measurer = this._document.createElement('div');\n measurer.className = 'modal-scrollbar-measure';\n /** @type {?} */\n var body = this._document.body;\n body.appendChild(measurer);\n /** @type {?} */\n var width = measurer.getBoundingClientRect().width - measurer.clientWidth;\n body.removeChild(measurer);\n return width;\n };\n ScrollBar.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */\n ScrollBar.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n ]; };\n /** @nocollapse */ ScrollBar.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function ScrollBar_Factory() { return new ScrollBar(\u0275\u0275inject(DOCUMENT)); }, token: ScrollBar, providedIn: \"root\" });\n return ScrollBar;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbModalBackdrop = /** @class */ (function () {\n function NgbModalBackdrop() {\n }\n NgbModalBackdrop.decorators = [\n { type: Component, args: [{\n selector: 'ngb-modal-backdrop',\n encapsulation: ViewEncapsulation.None,\n template: '',\n host: { '[class]': '\"modal-backdrop fade show\" + (backdropClass ? \" \" + backdropClass : \"\")', 'style': 'z-index: 1050' }\n }] }\n ];\n NgbModalBackdrop.propDecorators = {\n backdropClass: [{ type: Input }]\n };\n return NgbModalBackdrop;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nvar /**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nNgbActiveModal = /** @class */ (function () {\n function NgbActiveModal() {\n }\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n * @param {?=} result\n * @return {?}\n */\n NgbActiveModal.prototype.close = /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n * @param {?=} result\n * @return {?}\n */\n function (result) { };\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n * @param {?=} reason\n * @return {?}\n */\n NgbActiveModal.prototype.dismiss = /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n * @param {?=} reason\n * @return {?}\n */\n function (reason) { };\n return NgbActiveModal;\n}());\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nvar /**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nNgbModalRef = /** @class */ (function () {\n function NgbModalRef(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n var _this = this;\n this._windowCmptRef = _windowCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n _windowCmptRef.instance.dismissEvent.subscribe((/**\n * @param {?} reason\n * @return {?}\n */\n function (reason) { _this.dismiss(reason); }));\n this.result = new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n function (resolve, reject) {\n _this._resolve = resolve;\n _this._reject = reject;\n }));\n this.result.then(null, (/**\n * @return {?}\n */\n function () { }));\n }\n Object.defineProperty(NgbModalRef.prototype, \"componentInstance\", {\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n */\n get: /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n * @return {?}\n */\n function () {\n if (this._contentRef && this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n * @param {?=} result\n * @return {?}\n */\n NgbModalRef.prototype.close = /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n * @param {?=} result\n * @return {?}\n */\n function (result) {\n if (this._windowCmptRef) {\n this._resolve(result);\n this._removeModalElements();\n }\n };\n /**\n * @private\n * @param {?=} reason\n * @return {?}\n */\n NgbModalRef.prototype._dismiss = /**\n * @private\n * @param {?=} reason\n * @return {?}\n */\n function (reason) {\n this._reject(reason);\n this._removeModalElements();\n };\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n * @param {?=} reason\n * @return {?}\n */\n NgbModalRef.prototype.dismiss = /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n * @param {?=} reason\n * @return {?}\n */\n function (reason) {\n var _this = this;\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n }\n else {\n /** @type {?} */\n var dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then((/**\n * @param {?} result\n * @return {?}\n */\n function (result) {\n if (result !== false) {\n _this._dismiss(reason);\n }\n }), (/**\n * @return {?}\n */\n function () { }));\n }\n else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n };\n /**\n * @private\n * @return {?}\n */\n NgbModalRef.prototype._removeModalElements = /**\n * @private\n * @return {?}\n */\n function () {\n /** @type {?} */\n var windowNativeEl = this._windowCmptRef.location.nativeElement;\n windowNativeEl.parentNode.removeChild(windowNativeEl);\n this._windowCmptRef.destroy();\n if (this._backdropCmptRef) {\n /** @type {?} */\n var backdropNativeEl = this._backdropCmptRef.location.nativeElement;\n backdropNativeEl.parentNode.removeChild(backdropNativeEl);\n this._backdropCmptRef.destroy();\n }\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._windowCmptRef = null;\n this._backdropCmptRef = null;\n this._contentRef = null;\n };\n return NgbModalRef;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @enum {number} */\nvar ModalDismissReasons = {\n BACKDROP_CLICK: 0,\n ESC: 1,\n};\nModalDismissReasons[ModalDismissReasons.BACKDROP_CLICK] = 'BACKDROP_CLICK';\nModalDismissReasons[ModalDismissReasons.ESC] = 'ESC';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbModalWindow = /** @class */ (function () {\n function NgbModalWindow(_document, _elRef, _zone) {\n this._document = _document;\n this._elRef = _elRef;\n this._zone = _zone;\n this._closed$ = new Subject();\n this.backdrop = true;\n this.keyboard = true;\n this.dismissEvent = new EventEmitter();\n }\n /**\n * @param {?} reason\n * @return {?}\n */\n NgbModalWindow.prototype.dismiss = /**\n * @param {?} reason\n * @return {?}\n */\n function (reason) { this.dismissEvent.emit(reason); };\n /**\n * @return {?}\n */\n NgbModalWindow.prototype.ngOnInit = /**\n * @return {?}\n */\n function () { this._elWithFocus = this._document.activeElement; };\n /**\n * @return {?}\n */\n NgbModalWindow.prototype.ngAfterViewInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n var nativeElement = this._elRef.nativeElement;\n this._zone.runOutsideAngular((/**\n * @return {?}\n */\n function () {\n fromEvent(nativeElement, 'keydown')\n .pipe(takeUntil(_this._closed$), \n // tslint:disable-next-line:deprecation\n filter((/**\n * @param {?} e\n * @return {?}\n */\n function (e) { return e.which === Key.Escape && _this.keyboard; })))\n .subscribe((/**\n * @param {?} event\n * @return {?}\n */\n function (event) { return requestAnimationFrame((/**\n * @return {?}\n */\n function () {\n if (!event.defaultPrevented) {\n _this._zone.run((/**\n * @return {?}\n */\n function () { return _this.dismiss(ModalDismissReasons.ESC); }));\n }\n })); }));\n // We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n // inside the modal dialog and releasing it outside\n /** @type {?} */\n var preventClose = false;\n fromEvent(_this._dialogEl.nativeElement, 'mousedown')\n .pipe(takeUntil(_this._closed$), tap((/**\n * @return {?}\n */\n function () { return preventClose = false; })), switchMap((/**\n * @return {?}\n */\n function () { return fromEvent(nativeElement, 'mouseup').pipe(takeUntil(_this._closed$), take(1)); })), filter((/**\n * @param {?} __0\n * @return {?}\n */\n function (_a) {\n var target = _a.target;\n return nativeElement === target;\n })))\n .subscribe((/**\n * @return {?}\n */\n function () { preventClose = true; }));\n // We're listening to 'click' to dismiss modal on modal window click, except when:\n // 1. clicking on modal dialog itself\n // 2. closing was prevented by mousedown/up handlers\n // 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n fromEvent(nativeElement, 'click').pipe(takeUntil(_this._closed$)).subscribe((/**\n * @param {?} __0\n * @return {?}\n */\n function (_a) {\n var target = _a.target;\n if (_this.backdrop === true && nativeElement === target && !preventClose) {\n _this._zone.run((/**\n * @return {?}\n */\n function () { return _this.dismiss(ModalDismissReasons.BACKDROP_CLICK); }));\n }\n preventClose = false;\n }));\n }));\n if (!nativeElement.contains(document.activeElement)) {\n /** @type {?} */\n var autoFocusable = (/** @type {?} */ (nativeElement.querySelector(\"[ngbAutofocus]\")));\n /** @type {?} */\n var firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n /** @type {?} */\n var elementToFocus = autoFocusable || firstFocusable || nativeElement;\n elementToFocus.focus();\n }\n };\n /**\n * @return {?}\n */\n NgbModalWindow.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n var _this = this;\n /** @type {?} */\n var body = this._document.body;\n /** @type {?} */\n var elWithFocus = this._elWithFocus;\n /** @type {?} */\n var elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n }\n else {\n elementToFocus = body;\n }\n this._zone.runOutsideAngular((/**\n * @return {?}\n */\n function () {\n setTimeout((/**\n * @return {?}\n */\n function () { return elementToFocus.focus(); }));\n _this._elWithFocus = null;\n }));\n this._closed$.next();\n };\n NgbModalWindow.decorators = [\n { type: Component, args: [{\n selector: 'ngb-modal-window',\n host: {\n '[class]': '\"modal fade show d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n 'role': 'dialog',\n 'tabindex': '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n },\n template: \"\\n
\\n
\\n
\\n \",\n encapsulation: ViewEncapsulation.None,\n styles: [\"ngb-modal-window .component-host-scrollable{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden}\"]\n }] }\n ];\n /** @nocollapse */\n NgbModalWindow.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ElementRef },\n { type: NgZone }\n ]; };\n NgbModalWindow.propDecorators = {\n _dialogEl: [{ type: ViewChild, args: ['dialog', { static: true },] }],\n ariaLabelledBy: [{ type: Input }],\n backdrop: [{ type: Input }],\n centered: [{ type: Input }],\n keyboard: [{ type: Input }],\n scrollable: [{ type: Input }],\n size: [{ type: Input }],\n windowClass: [{ type: Input }],\n dismissEvent: [{ type: Output, args: ['dismiss',] }]\n };\n return NgbModalWindow;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbModalStack = /** @class */ (function () {\n function NgbModalStack(_applicationRef, _injector, _document, _scrollBar, _rendererFactory, _ngZone) {\n var _this = this;\n this._applicationRef = _applicationRef;\n this._injector = _injector;\n this._document = _document;\n this._scrollBar = _scrollBar;\n this._rendererFactory = _rendererFactory;\n this._ngZone = _ngZone;\n this._activeWindowCmptHasChanged = new Subject();\n this._ariaHiddenValues = new Map();\n this._backdropAttributes = ['backdropClass'];\n this._modalRefs = [];\n this._windowAttributes = ['ariaLabelledBy', 'backdrop', 'centered', 'keyboard', 'scrollable', 'size', 'windowClass'];\n this._windowCmpts = [];\n // Trap focus on active WindowCmpt\n this._activeWindowCmptHasChanged.subscribe((/**\n * @return {?}\n */\n function () {\n if (_this._windowCmpts.length) {\n /** @type {?} */\n var activeWindowCmpt = _this._windowCmpts[_this._windowCmpts.length - 1];\n ngbFocusTrap(_this._ngZone, activeWindowCmpt.location.nativeElement, _this._activeWindowCmptHasChanged);\n _this._revertAriaHidden();\n _this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n }));\n }\n /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} options\n * @return {?}\n */\n NgbModalStack.prototype.open = /**\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} options\n * @return {?}\n */\n function (moduleCFR, contentInjector, content, options) {\n var _this = this;\n /** @type {?} */\n var containerEl = options.container instanceof HTMLElement ? options.container : isDefined(options.container) ?\n this._document.querySelector(options.container) :\n this._document.body;\n /** @type {?} */\n var renderer = this._rendererFactory.createRenderer(null, null);\n /** @type {?} */\n var revertPaddingForScrollBar = this._scrollBar.compensate();\n /** @type {?} */\n var removeBodyClass = (/**\n * @return {?}\n */\n function () {\n if (!_this._modalRefs.length) {\n renderer.removeClass(_this._document.body, 'modal-open');\n _this._revertAriaHidden();\n }\n });\n if (!containerEl) {\n throw new Error(\"The specified modal container \\\"\" + (options.container || 'body') + \"\\\" was not found in the DOM.\");\n }\n /** @type {?} */\n var activeModal = new NgbActiveModal();\n /** @type {?} */\n var contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal, options);\n /** @type {?} */\n var backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : null;\n /** @type {?} */\n var windowCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n /** @type {?} */\n var ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerModalRef(ngbModalRef);\n this._registerWindowCmpt(windowCmptRef);\n ngbModalRef.result.then(revertPaddingForScrollBar, revertPaddingForScrollBar);\n ngbModalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (/**\n * @param {?} result\n * @return {?}\n */\n function (result) { ngbModalRef.close(result); });\n activeModal.dismiss = (/**\n * @param {?} reason\n * @return {?}\n */\n function (reason) { ngbModalRef.dismiss(reason); });\n this._applyWindowOptions(windowCmptRef.instance, options);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n }\n return ngbModalRef;\n };\n /**\n * @param {?=} reason\n * @return {?}\n */\n NgbModalStack.prototype.dismissAll = /**\n * @param {?=} reason\n * @return {?}\n */\n function (reason) { this._modalRefs.forEach((/**\n * @param {?} ngbModalRef\n * @return {?}\n */\n function (ngbModalRef) { return ngbModalRef.dismiss(reason); })); };\n /**\n * @return {?}\n */\n NgbModalStack.prototype.hasOpenModals = /**\n * @return {?}\n */\n function () { return this._modalRefs.length > 0; };\n /**\n * @private\n * @param {?} moduleCFR\n * @param {?} containerEl\n * @return {?}\n */\n NgbModalStack.prototype._attachBackdrop = /**\n * @private\n * @param {?} moduleCFR\n * @param {?} containerEl\n * @return {?}\n */\n function (moduleCFR, containerEl) {\n /** @type {?} */\n var backdropFactory = moduleCFR.resolveComponentFactory(NgbModalBackdrop);\n /** @type {?} */\n var backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n };\n /**\n * @private\n * @param {?} moduleCFR\n * @param {?} containerEl\n * @param {?} contentRef\n * @return {?}\n */\n NgbModalStack.prototype._attachWindowComponent = /**\n * @private\n * @param {?} moduleCFR\n * @param {?} containerEl\n * @param {?} contentRef\n * @return {?}\n */\n function (moduleCFR, containerEl, contentRef) {\n /** @type {?} */\n var windowFactory = moduleCFR.resolveComponentFactory(NgbModalWindow);\n /** @type {?} */\n var windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n };\n /**\n * @private\n * @param {?} windowInstance\n * @param {?} options\n * @return {?}\n */\n NgbModalStack.prototype._applyWindowOptions = /**\n * @private\n * @param {?} windowInstance\n * @param {?} options\n * @return {?}\n */\n function (windowInstance, options) {\n this._windowAttributes.forEach((/**\n * @param {?} optionName\n * @return {?}\n */\n function (optionName) {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n }));\n };\n /**\n * @private\n * @param {?} backdropInstance\n * @param {?} options\n * @return {?}\n */\n NgbModalStack.prototype._applyBackdropOptions = /**\n * @private\n * @param {?} backdropInstance\n * @param {?} options\n * @return {?}\n */\n function (backdropInstance, options) {\n this._backdropAttributes.forEach((/**\n * @param {?} optionName\n * @return {?}\n */\n function (optionName) {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n }));\n };\n /**\n * @private\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} activeModal\n * @param {?} options\n * @return {?}\n */\n NgbModalStack.prototype._getContentRef = /**\n * @private\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} activeModal\n * @param {?} options\n * @return {?}\n */\n function (moduleCFR, contentInjector, content, activeModal, options) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeModal);\n }\n else if (isString(content)) {\n return this._createFromString(content);\n }\n else {\n return this._createFromComponent(moduleCFR, contentInjector, content, activeModal, options);\n }\n };\n /**\n * @private\n * @param {?} content\n * @param {?} activeModal\n * @return {?}\n */\n NgbModalStack.prototype._createFromTemplateRef = /**\n * @private\n * @param {?} content\n * @param {?} activeModal\n * @return {?}\n */\n function (content, activeModal) {\n /** @type {?} */\n var context = {\n $implicit: activeModal,\n close: /**\n * @param {?} result\n * @return {?}\n */\n function (result) { activeModal.close(result); },\n dismiss: /**\n * @param {?} reason\n * @return {?}\n */\n function (reason) { activeModal.dismiss(reason); }\n };\n /** @type {?} */\n var viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n };\n /**\n * @private\n * @param {?} content\n * @return {?}\n */\n NgbModalStack.prototype._createFromString = /**\n * @private\n * @param {?} content\n * @return {?}\n */\n function (content) {\n /** @type {?} */\n var component = this._document.createTextNode(\"\" + content);\n return new ContentRef([[component]]);\n };\n /**\n * @private\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} context\n * @param {?} options\n * @return {?}\n */\n NgbModalStack.prototype._createFromComponent = /**\n * @private\n * @param {?} moduleCFR\n * @param {?} contentInjector\n * @param {?} content\n * @param {?} context\n * @param {?} options\n * @return {?}\n */\n function (moduleCFR, contentInjector, content, context, options) {\n /** @type {?} */\n var contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n /** @type {?} */\n var modalContentInjector = Injector.create({ providers: [{ provide: NgbActiveModal, useValue: context }], parent: contentInjector });\n /** @type {?} */\n var componentRef = contentCmptFactory.create(modalContentInjector);\n /** @type {?} */\n var componentNativeEl = componentRef.location.nativeElement;\n if (options.scrollable) {\n ((/** @type {?} */ (componentNativeEl))).classList.add('component-host-scrollable');\n }\n this._applicationRef.attachView(componentRef.hostView);\n // FIXME: we should here get rid of the component nativeElement\n // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n };\n /**\n * @private\n * @param {?} element\n * @return {?}\n */\n NgbModalStack.prototype._setAriaHidden = /**\n * @private\n * @param {?} element\n * @return {?}\n */\n function (element) {\n var _this = this;\n /** @type {?} */\n var parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach((/**\n * @param {?} sibling\n * @return {?}\n */\n function (sibling) {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n _this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n }));\n this._setAriaHidden(parent);\n }\n };\n /**\n * @private\n * @return {?}\n */\n NgbModalStack.prototype._revertAriaHidden = /**\n * @private\n * @return {?}\n */\n function () {\n this._ariaHiddenValues.forEach((/**\n * @param {?} value\n * @param {?} element\n * @return {?}\n */\n function (value, element) {\n if (value) {\n element.setAttribute('aria-hidden', value);\n }\n else {\n element.removeAttribute('aria-hidden');\n }\n }));\n this._ariaHiddenValues.clear();\n };\n /**\n * @private\n * @param {?} ngbModalRef\n * @return {?}\n */\n NgbModalStack.prototype._registerModalRef = /**\n * @private\n * @param {?} ngbModalRef\n * @return {?}\n */\n function (ngbModalRef) {\n var _this = this;\n /** @type {?} */\n var unregisterModalRef = (/**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var index = _this._modalRefs.indexOf(ngbModalRef);\n if (index > -1) {\n _this._modalRefs.splice(index, 1);\n }\n });\n this._modalRefs.push(ngbModalRef);\n ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n };\n /**\n * @private\n * @param {?} ngbWindowCmpt\n * @return {?}\n */\n NgbModalStack.prototype._registerWindowCmpt = /**\n * @private\n * @param {?} ngbWindowCmpt\n * @return {?}\n */\n function (ngbWindowCmpt) {\n var _this = this;\n this._windowCmpts.push(ngbWindowCmpt);\n this._activeWindowCmptHasChanged.next();\n ngbWindowCmpt.onDestroy((/**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var index = _this._windowCmpts.indexOf(ngbWindowCmpt);\n if (index > -1) {\n _this._windowCmpts.splice(index, 1);\n _this._activeWindowCmptHasChanged.next();\n }\n }));\n };\n NgbModalStack.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */\n NgbModalStack.ctorParameters = function () { return [\n { type: ApplicationRef },\n { type: Injector },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ScrollBar },\n { type: RendererFactory2 },\n { type: NgZone }\n ]; };\n /** @nocollapse */ NgbModalStack.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbModalStack_Factory() { return new NgbModalStack(\u0275\u0275inject(ApplicationRef), \u0275\u0275inject(INJECTOR), \u0275\u0275inject(DOCUMENT), \u0275\u0275inject(ScrollBar), \u0275\u0275inject(RendererFactory2), \u0275\u0275inject(NgZone)); }, token: NgbModalStack, providedIn: \"root\" });\n return NgbModalStack;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\nvar NgbModal = /** @class */ (function () {\n function NgbModal(_moduleCFR, _injector, _modalStack, _config) {\n this._moduleCFR = _moduleCFR;\n this._injector = _injector;\n this._modalStack = _modalStack;\n this._config = _config;\n }\n /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n */\n /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n * @param {?} content\n * @param {?=} options\n * @return {?}\n */\n NgbModal.prototype.open = /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n * @param {?} content\n * @param {?=} options\n * @return {?}\n */\n function (content, options) {\n if (options === void 0) { options = {}; }\n /** @type {?} */\n var combinedOptions = Object.assign({}, this._config, options);\n return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\n };\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * @since 3.1.0\n */\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * \\@since 3.1.0\n * @param {?=} reason\n * @return {?}\n */\n NgbModal.prototype.dismissAll = /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * \\@since 3.1.0\n * @param {?=} reason\n * @return {?}\n */\n function (reason) { this._modalStack.dismissAll(reason); };\n /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * @since 3.3.0\n */\n /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * \\@since 3.3.0\n * @return {?}\n */\n NgbModal.prototype.hasOpenModals = /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * \\@since 3.3.0\n * @return {?}\n */\n function () { return this._modalStack.hasOpenModals(); };\n NgbModal.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */\n NgbModal.ctorParameters = function () { return [\n { type: ComponentFactoryResolver },\n { type: Injector },\n { type: NgbModalStack },\n { type: NgbModalConfig }\n ]; };\n /** @nocollapse */ NgbModal.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbModal_Factory() { return new NgbModal(\u0275\u0275inject(ComponentFactoryResolver), \u0275\u0275inject(INJECTOR), \u0275\u0275inject(NgbModalStack), \u0275\u0275inject(NgbModalConfig)); }, token: NgbModal, providedIn: \"root\" });\n return NgbModal;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbModalModule = /** @class */ (function () {\n function NgbModalModule() {\n }\n NgbModalModule.decorators = [\n { type: NgModule, args: [{\n declarations: [NgbModalBackdrop, NgbModalWindow],\n entryComponents: [NgbModalBackdrop, NgbModalWindow],\n providers: [NgbModal]\n },] }\n ];\n return NgbModalModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbNav`](#/components/nav/api#NgbNav) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the navs used in the application.\n *\n * \\@since 5.2.0\n */\nvar NgbNavConfig = /** @class */ (function () {\n function NgbNavConfig() {\n this.destroyOnHide = true;\n this.orientation = 'horizontal';\n this.roles = 'tablist';\n }\n NgbNavConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbNavConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbNavConfig_Factory() { return new NgbNavConfig(); }, token: NgbNavConfig, providedIn: \"root\" });\n return NgbNavConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar isValidNavId = (/**\n * @param {?} id\n * @return {?}\n */\nfunction (id) { return isDefined(id) && id !== ''; });\n/** @type {?} */\nvar navCounter = 0;\n/**\n * This directive must be used to wrap content to be displayed in the nav.\n *\n * \\@since 5.2.0\n */\nvar NgbNavContent = /** @class */ (function () {\n function NgbNavContent(templateRef) {\n this.templateRef = templateRef;\n }\n NgbNavContent.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbNavContent]' },] }\n ];\n /** @nocollapse */\n NgbNavContent.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbNavContent;\n}());\n/**\n * The directive used to group nav link and related nav content. As well as set nav identifier and some options.\n *\n * \\@since 5.2.0\n */\nvar NgbNavItem = /** @class */ (function () {\n function NgbNavItem(nav, elementRef) {\n this.elementRef = elementRef;\n /**\n * If `true`, the current nav item is disabled and can't be toggled by user.\n *\n * Nevertheless disabled nav can be selected programmatically via the `.select()` method and the `[activeId]` binding.\n */\n this.disabled = false;\n // TODO: cf https://github.com/angular/angular/issues/30106\n this._nav = nav;\n }\n /**\n * @return {?}\n */\n NgbNavItem.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.contentTpl = this.contentTpls.first;\n };\n /**\n * @return {?}\n */\n NgbNavItem.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n if (!isDefined(this.domId)) {\n this.domId = \"ngb-nav-\" + navCounter++;\n }\n };\n Object.defineProperty(NgbNavItem.prototype, \"active\", {\n get: /**\n * @return {?}\n */\n function () { return this._nav.activeId === this.id; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbNavItem.prototype, \"id\", {\n get: /**\n * @return {?}\n */\n function () { return isValidNavId(this._id) ? this._id : this.domId; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbNavItem.prototype, \"panelDomId\", {\n get: /**\n * @return {?}\n */\n function () { return this.domId + \"-panel\"; },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n NgbNavItem.prototype.isPanelInDom = /**\n * @return {?}\n */\n function () {\n return (isDefined(this.destroyOnHide) ? !this.destroyOnHide : !this._nav.destroyOnHide) || this.active;\n };\n NgbNavItem.decorators = [\n { type: Directive, args: [{ selector: '[ngbNavItem]', exportAs: 'ngbNavItem', host: { '[class.nav-item]': 'true' } },] }\n ];\n /** @nocollapse */\n NgbNavItem.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef((/**\n * @return {?}\n */\n function () { return NgbNav; })),] }] },\n { type: ElementRef }\n ]; };\n NgbNavItem.propDecorators = {\n destroyOnHide: [{ type: Input }],\n disabled: [{ type: Input }],\n domId: [{ type: Input }],\n _id: [{ type: Input, args: ['ngbNavItem',] }],\n contentTpls: [{ type: ContentChildren, args: [NgbNavContent, { descendants: false },] }]\n };\n return NgbNavItem;\n}());\n/**\n * A nav directive that helps with implementing tabbed navigation components.\n *\n * \\@since 5.2.0\n */\nvar NgbNav = /** @class */ (function () {\n function NgbNav(role, config, _cd) {\n this.role = role;\n this._cd = _cd;\n /**\n * The event emitted after the active nav changes\n * The payload of the event is the newly active nav id\n *\n * If you want to prevent nav change, you should use `(navChange)` event\n */\n this.activeIdChange = new EventEmitter();\n /**\n * The nav change event emitted right before the nav change happens on user click.\n *\n * This event won't be emitted if nav is changed programmatically via `[activeId]` or `.select()`.\n *\n * See [`NgbNavChangeEvent`](#/components/nav/api#NgbNavChangeEvent) for payload details.\n */\n this.navChange = new EventEmitter();\n this.destroyOnHide = config.destroyOnHide;\n this.orientation = config.orientation;\n this.roles = config.roles;\n }\n /**\n * @param {?} item\n * @return {?}\n */\n NgbNav.prototype.click = /**\n * @param {?} item\n * @return {?}\n */\n function (item) {\n if (!item.disabled) {\n this._updateActiveId(item.id);\n }\n };\n /**\n * Selects the nav with the given id and shows its associated pane.\n * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\n */\n /**\n * Selects the nav with the given id and shows its associated pane.\n * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\n * @param {?} id\n * @return {?}\n */\n NgbNav.prototype.select = /**\n * Selects the nav with the given id and shows its associated pane.\n * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\n * @param {?} id\n * @return {?}\n */\n function (id) { this._updateActiveId(id, false); };\n /**\n * @return {?}\n */\n NgbNav.prototype.ngAfterContentInit = /**\n * @return {?}\n */\n function () {\n if (!isDefined(this.activeId)) {\n /** @type {?} */\n var nextId = this.items.first ? this.items.first.id : null;\n if (isValidNavId(nextId)) {\n this._updateActiveId(nextId, false);\n this._cd.detectChanges();\n }\n }\n };\n /**\n * @private\n * @param {?} nextId\n * @param {?=} emitNavChange\n * @return {?}\n */\n NgbNav.prototype._updateActiveId = /**\n * @private\n * @param {?} nextId\n * @param {?=} emitNavChange\n * @return {?}\n */\n function (nextId, emitNavChange) {\n if (emitNavChange === void 0) { emitNavChange = true; }\n if (this.activeId !== nextId) {\n /** @type {?} */\n var defaultPrevented_1 = false;\n if (emitNavChange) {\n this.navChange.emit({ activeId: this.activeId, nextId: nextId, preventDefault: (/**\n * @return {?}\n */\n function () { defaultPrevented_1 = true; }) });\n }\n if (!defaultPrevented_1) {\n this.activeId = nextId;\n this.activeIdChange.emit(nextId);\n }\n }\n };\n NgbNav.decorators = [\n { type: Directive, args: [{\n selector: '[ngbNav]',\n exportAs: 'ngbNav',\n host: {\n '[class.nav]': 'true',\n '[class.flex-column]': \"orientation === 'vertical'\",\n '[attr.aria-orientation]': \"orientation === 'vertical' && roles === 'tablist' ? 'vertical' : undefined\",\n '[attr.role]': \"role ? role : roles ? 'tablist' : undefined\",\n }\n },] }\n ];\n /** @nocollapse */\n NgbNav.ctorParameters = function () { return [\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\n { type: NgbNavConfig },\n { type: ChangeDetectorRef }\n ]; };\n NgbNav.propDecorators = {\n activeId: [{ type: Input }],\n activeIdChange: [{ type: Output }],\n destroyOnHide: [{ type: Input }],\n orientation: [{ type: Input }],\n roles: [{ type: Input }],\n items: [{ type: ContentChildren, args: [NgbNavItem,] }],\n navChange: [{ type: Output }]\n };\n return NgbNav;\n}());\n/**\n * A directive to put on the nav link.\n *\n * \\@since 5.2.0\n */\nvar NgbNavLink = /** @class */ (function () {\n function NgbNavLink(role, navItem, nav) {\n this.role = role;\n this.navItem = navItem;\n this.nav = nav;\n }\n /**\n * @return {?}\n */\n NgbNavLink.prototype.hasNavItemClass = /**\n * @return {?}\n */\n function () {\n // with alternative markup we have to add `.nav-item` class, because `ngbNavItem` is on the ng-container\n return this.navItem.elementRef.nativeElement.nodeType === Node.COMMENT_NODE;\n };\n NgbNavLink.decorators = [\n { type: Directive, args: [{\n selector: 'a[ngbNavLink]',\n host: {\n '[id]': 'navItem.domId',\n '[class.nav-link]': 'true',\n '[class.nav-item]': 'hasNavItemClass()',\n '[attr.role]': \"role ? role : nav.roles ? 'tab' : undefined\",\n 'href': '',\n '[class.active]': 'navItem.active',\n '[class.disabled]': 'navItem.disabled',\n '[attr.tabindex]': 'navItem.disabled ? -1 : undefined',\n '[attr.aria-controls]': 'navItem.isPanelInDom() ? navItem.panelDomId : null',\n '[attr.aria-selected]': 'navItem.active',\n '[attr.aria-disabled]': 'navItem.disabled',\n '(click)': 'nav.click(navItem); $event.preventDefault()'\n }\n },] }\n ];\n /** @nocollapse */\n NgbNavLink.ctorParameters = function () { return [\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\n { type: NgbNavItem },\n { type: NgbNav }\n ]; };\n return NgbNavLink;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * The outlet where currently active nav content will be displayed.\n *\n * \\@since 5.2.0\n */\nvar NgbNavOutlet = /** @class */ (function () {\n function NgbNavOutlet() {\n }\n NgbNavOutlet.decorators = [\n { type: Component, args: [{\n selector: '[ngbNavOutlet]',\n host: { '[class.tab-content]': 'true' },\n encapsulation: ViewEncapsulation.None,\n template: \"\\n \\n
\\n \\n
\\n
\\n \"\n }] }\n ];\n NgbNavOutlet.propDecorators = {\n paneRole: [{ type: Input }],\n nav: [{ type: Input, args: ['ngbNavOutlet',] }]\n };\n return NgbNavOutlet;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_NAV_DIRECTIVES = [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet];\nvar NgbNavModule = /** @class */ (function () {\n function NgbNavModule() {\n }\n NgbNavModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_NAV_DIRECTIVES, exports: NGB_NAV_DIRECTIVES, imports: [CommonModule] },] }\n ];\n return NgbNavModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the paginations used in the application.\n */\nvar NgbPaginationConfig = /** @class */ (function () {\n function NgbPaginationConfig() {\n this.disabled = false;\n this.boundaryLinks = false;\n this.directionLinks = true;\n this.ellipses = true;\n this.maxSize = 0;\n this.pageSize = 10;\n this.rotate = false;\n }\n NgbPaginationConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbPaginationConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbPaginationConfig_Factory() { return new NgbPaginationConfig(); }, token: NgbPaginationConfig, providedIn: \"root\" });\n return NgbPaginationConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A directive to match the 'ellipsis' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationEllipsis = /** @class */ (function () {\n function NgbPaginationEllipsis(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationEllipsis.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationEllipsis]' },] }\n ];\n /** @nocollapse */\n NgbPaginationEllipsis.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationEllipsis;\n}());\n/**\n * A directive to match the 'first' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationFirst = /** @class */ (function () {\n function NgbPaginationFirst(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationFirst.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationFirst]' },] }\n ];\n /** @nocollapse */\n NgbPaginationFirst.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationFirst;\n}());\n/**\n * A directive to match the 'last' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationLast = /** @class */ (function () {\n function NgbPaginationLast(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationLast.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationLast]' },] }\n ];\n /** @nocollapse */\n NgbPaginationLast.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationLast;\n}());\n/**\n * A directive to match the 'next' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationNext = /** @class */ (function () {\n function NgbPaginationNext(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationNext.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationNext]' },] }\n ];\n /** @nocollapse */\n NgbPaginationNext.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationNext;\n}());\n/**\n * A directive to match the page 'number' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationNumber = /** @class */ (function () {\n function NgbPaginationNumber(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationNumber.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationNumber]' },] }\n ];\n /** @nocollapse */\n NgbPaginationNumber.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationNumber;\n}());\n/**\n * A directive to match the 'previous' link template\n *\n * \\@since 4.1.0\n */\nvar NgbPaginationPrevious = /** @class */ (function () {\n function NgbPaginationPrevious(templateRef) {\n this.templateRef = templateRef;\n }\n NgbPaginationPrevious.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbPaginationPrevious]' },] }\n ];\n /** @nocollapse */\n NgbPaginationPrevious.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbPaginationPrevious;\n}());\n/**\n * A component that displays page numbers and allows to customize them in several ways.\n */\nvar NgbPagination = /** @class */ (function () {\n function NgbPagination(config) {\n this.pageCount = 0;\n this.pages = [];\n /**\n * The current page.\n *\n * Page numbers start with `1`.\n */\n this.page = 1;\n /**\n * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n *\n * Event payload is the number of the newly selected page.\n *\n * Page numbers start with `1`.\n */\n this.pageChange = new EventEmitter(true);\n this.disabled = config.disabled;\n this.boundaryLinks = config.boundaryLinks;\n this.directionLinks = config.directionLinks;\n this.ellipses = config.ellipses;\n this.maxSize = config.maxSize;\n this.pageSize = config.pageSize;\n this.rotate = config.rotate;\n this.size = config.size;\n }\n /**\n * @return {?}\n */\n NgbPagination.prototype.hasPrevious = /**\n * @return {?}\n */\n function () { return this.page > 1; };\n /**\n * @return {?}\n */\n NgbPagination.prototype.hasNext = /**\n * @return {?}\n */\n function () { return this.page < this.pageCount; };\n /**\n * @return {?}\n */\n NgbPagination.prototype.nextDisabled = /**\n * @return {?}\n */\n function () { return !this.hasNext() || this.disabled; };\n /**\n * @return {?}\n */\n NgbPagination.prototype.previousDisabled = /**\n * @return {?}\n */\n function () { return !this.hasPrevious() || this.disabled; };\n /**\n * @param {?} pageNumber\n * @return {?}\n */\n NgbPagination.prototype.selectPage = /**\n * @param {?} pageNumber\n * @return {?}\n */\n function (pageNumber) { this._updatePages(pageNumber); };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbPagination.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) { this._updatePages(this.page); };\n /**\n * @param {?} pageNumber\n * @return {?}\n */\n NgbPagination.prototype.isEllipsis = /**\n * @param {?} pageNumber\n * @return {?}\n */\n function (pageNumber) { return pageNumber === -1; };\n /**\n * Appends ellipses and first/last page number to the displayed pages\n */\n /**\n * Appends ellipses and first/last page number to the displayed pages\n * @private\n * @param {?} start\n * @param {?} end\n * @return {?}\n */\n NgbPagination.prototype._applyEllipses = /**\n * Appends ellipses and first/last page number to the displayed pages\n * @private\n * @param {?} start\n * @param {?} end\n * @return {?}\n */\n function (start, end) {\n if (this.ellipses) {\n if (start > 0) {\n // The first page will always be included. If the displayed range\n // starts after the third page, then add ellipsis. But if the range\n // starts on the third page, then add the second page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (start > 2) {\n this.pages.unshift(-1);\n }\n else if (start === 2) {\n this.pages.unshift(2);\n }\n this.pages.unshift(1);\n }\n if (end < this.pageCount) {\n // The last page will always be included. If the displayed range\n // ends before the third-last page, then add ellipsis. But if the range\n // ends on third-last page, then add the second-last page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (end < (this.pageCount - 2)) {\n this.pages.push(-1);\n }\n else if (end === (this.pageCount - 2)) {\n this.pages.push(this.pageCount - 1);\n }\n this.pages.push(this.pageCount);\n }\n }\n };\n /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n */\n /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n * @private\n * @return {?}\n */\n NgbPagination.prototype._applyRotation = /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n * @private\n * @return {?}\n */\n function () {\n /** @type {?} */\n var start = 0;\n /** @type {?} */\n var end = this.pageCount;\n /** @type {?} */\n var leftOffset = Math.floor(this.maxSize / 2);\n /** @type {?} */\n var rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n if (this.page <= leftOffset) {\n // very beginning, no rotation -> [0..maxSize]\n end = this.maxSize;\n }\n else if (this.pageCount - this.page < leftOffset) {\n // very end, no rotation -> [len-maxSize..len]\n start = this.pageCount - this.maxSize;\n }\n else {\n // rotate\n start = this.page - leftOffset - 1;\n end = this.page + rightOffset;\n }\n return [start, end];\n };\n /**\n * Paginates page numbers based on maxSize items per page.\n */\n /**\n * Paginates page numbers based on maxSize items per page.\n * @private\n * @return {?}\n */\n NgbPagination.prototype._applyPagination = /**\n * Paginates page numbers based on maxSize items per page.\n * @private\n * @return {?}\n */\n function () {\n /** @type {?} */\n var page = Math.ceil(this.page / this.maxSize) - 1;\n /** @type {?} */\n var start = page * this.maxSize;\n /** @type {?} */\n var end = start + this.maxSize;\n return [start, end];\n };\n /**\n * @private\n * @param {?} newPageNo\n * @return {?}\n */\n NgbPagination.prototype._setPageInRange = /**\n * @private\n * @param {?} newPageNo\n * @return {?}\n */\n function (newPageNo) {\n /** @type {?} */\n var prevPageNo = this.page;\n this.page = getValueInRange(newPageNo, this.pageCount, 1);\n if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n this.pageChange.emit(this.page);\n }\n };\n /**\n * @private\n * @param {?} newPage\n * @return {?}\n */\n NgbPagination.prototype._updatePages = /**\n * @private\n * @param {?} newPage\n * @return {?}\n */\n function (newPage) {\n var _a, _b;\n this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n if (!isNumber(this.pageCount)) {\n this.pageCount = 0;\n }\n // fill-in model needed to render pages\n this.pages.length = 0;\n for (var i = 1; i <= this.pageCount; i++) {\n this.pages.push(i);\n }\n // set page within 1..max range\n this._setPageInRange(newPage);\n // apply maxSize if necessary\n if (this.maxSize > 0 && this.pageCount > this.maxSize) {\n /** @type {?} */\n var start = 0;\n /** @type {?} */\n var end = this.pageCount;\n // either paginating or rotating page numbers\n if (this.rotate) {\n _a = __read(this._applyRotation(), 2), start = _a[0], end = _a[1];\n }\n else {\n _b = __read(this._applyPagination(), 2), start = _b[0], end = _b[1];\n }\n this.pages = this.pages.slice(start, end);\n // adding ellipses\n this._applyEllipses(start, end);\n }\n };\n NgbPagination.decorators = [\n { type: Component, args: [{\n selector: 'ngb-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'role': 'navigation' },\n template: \"\\n ««\\n «\\n »\\n »»\\n ...\\n \\n {{ page }}\\n (current)\\n \\n \\n \"\n }] }\n ];\n /** @nocollapse */\n NgbPagination.ctorParameters = function () { return [\n { type: NgbPaginationConfig }\n ]; };\n NgbPagination.propDecorators = {\n tplEllipsis: [{ type: ContentChild, args: [NgbPaginationEllipsis, { static: false },] }],\n tplFirst: [{ type: ContentChild, args: [NgbPaginationFirst, { static: false },] }],\n tplLast: [{ type: ContentChild, args: [NgbPaginationLast, { static: false },] }],\n tplNext: [{ type: ContentChild, args: [NgbPaginationNext, { static: false },] }],\n tplNumber: [{ type: ContentChild, args: [NgbPaginationNumber, { static: false },] }],\n tplPrevious: [{ type: ContentChild, args: [NgbPaginationPrevious, { static: false },] }],\n disabled: [{ type: Input }],\n boundaryLinks: [{ type: Input }],\n directionLinks: [{ type: Input }],\n ellipses: [{ type: Input }],\n rotate: [{ type: Input }],\n collectionSize: [{ type: Input }],\n maxSize: [{ type: Input }],\n page: [{ type: Input }],\n pageSize: [{ type: Input }],\n pageChange: [{ type: Output }],\n size: [{ type: Input }]\n };\n return NgbPagination;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar DIRECTIVES = [\n NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\n NgbPaginationPrevious\n];\nvar NgbPaginationModule = /** @class */ (function () {\n function NgbPaginationModule() {\n }\n NgbPaginationModule.decorators = [\n { type: NgModule, args: [{ declarations: DIRECTIVES, exports: DIRECTIVES, imports: [CommonModule] },] }\n ];\n return NgbPaginationModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar Trigger = /** @class */ (function () {\n function Trigger(open, close) {\n this.open = open;\n this.close = close;\n if (!close) {\n this.close = open;\n }\n }\n /**\n * @return {?}\n */\n Trigger.prototype.isManual = /**\n * @return {?}\n */\n function () { return this.open === 'manual' || this.close === 'manual'; };\n return Trigger;\n}());\n/** @type {?} */\nvar DEFAULT_ALIASES = {\n 'hover': ['mouseenter', 'mouseleave'],\n 'focus': ['focusin', 'focusout'],\n};\n/**\n * @param {?} triggers\n * @param {?=} aliases\n * @return {?}\n */\nfunction parseTriggers(triggers, aliases) {\n if (aliases === void 0) { aliases = DEFAULT_ALIASES; }\n /** @type {?} */\n var trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n /** @type {?} */\n var parsedTriggers = trimmedTriggers.split(/\\s+/).map((/**\n * @param {?} trigger\n * @return {?}\n */\n function (trigger) { return trigger.split(':'); })).map((/**\n * @param {?} triggerPair\n * @return {?}\n */\n function (triggerPair) {\n /** @type {?} */\n var alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n }));\n /** @type {?} */\n var manualTriggers = parsedTriggers.filter((/**\n * @param {?} triggerPair\n * @return {?}\n */\n function (triggerPair) { return triggerPair.isManual(); }));\n if (manualTriggers.length > 1) {\n throw 'Triggers parse error: only one manual trigger is allowed';\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw 'Triggers parse error: manual trigger can\\'t be mixed with other triggers';\n }\n return parsedTriggers;\n}\n/**\n * @param {?} renderer\n * @param {?} nativeElement\n * @param {?} triggers\n * @param {?} isOpenedFn\n * @return {?}\n */\nfunction observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\n return new Observable((/**\n * @param {?} subscriber\n * @return {?}\n */\n function (subscriber) {\n /** @type {?} */\n var listeners = [];\n /** @type {?} */\n var openFn = (/**\n * @return {?}\n */\n function () { return subscriber.next(true); });\n /** @type {?} */\n var closeFn = (/**\n * @return {?}\n */\n function () { return subscriber.next(false); });\n /** @type {?} */\n var toggleFn = (/**\n * @return {?}\n */\n function () { return subscriber.next(!isOpenedFn()); });\n triggers.forEach((/**\n * @param {?} trigger\n * @return {?}\n */\n function (trigger) {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n }\n else {\n listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n }\n }));\n return (/**\n * @return {?}\n */\n function () { listeners.forEach((/**\n * @param {?} unsubscribeFn\n * @return {?}\n */\n function (unsubscribeFn) { return unsubscribeFn(); })); });\n }));\n}\n/** @type {?} */\nvar delayOrNoop = (/**\n * @template T\n * @param {?} time\n * @return {?}\n */\nfunction (time) { return time > 0 ? delay(time) : (/**\n * @param {?} a\n * @return {?}\n */\nfunction (a) { return a; }); });\n/**\n * @param {?} openDelay\n * @param {?} closeDelay\n * @param {?} isOpenedFn\n * @return {?}\n */\nfunction triggerDelay(openDelay, closeDelay, isOpenedFn) {\n return (/**\n * @param {?} input$\n * @return {?}\n */\n function (input$) {\n /** @type {?} */\n var pending = null;\n /** @type {?} */\n var filteredInput$ = input$.pipe(map((/**\n * @param {?} open\n * @return {?}\n */\n function (open) { return ({ open: open }); })), filter((/**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n /** @type {?} */\n var currentlyOpen = isOpenedFn();\n if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\n pending = event;\n return true;\n }\n if (pending && pending.open !== event.open) {\n pending = null;\n }\n return false;\n })), share());\n /** @type {?} */\n var delayedOpen$ = filteredInput$.pipe(filter((/**\n * @param {?} event\n * @return {?}\n */\n function (event) { return event.open; })), delayOrNoop(openDelay));\n /** @type {?} */\n var delayedClose$ = filteredInput$.pipe(filter((/**\n * @param {?} event\n * @return {?}\n */\n function (event) { return !event.open; })), delayOrNoop(closeDelay));\n return merge(delayedOpen$, delayedClose$)\n .pipe(filter((/**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n if (event === pending) {\n pending = null;\n return event.open !== isOpenedFn();\n }\n return false;\n })), map((/**\n * @param {?} event\n * @return {?}\n */\n function (event) { return event.open; })));\n });\n}\n/**\n * @param {?} renderer\n * @param {?} nativeElement\n * @param {?} triggers\n * @param {?} isOpenedFn\n * @param {?} openFn\n * @param {?} closeFn\n * @param {?=} openDelay\n * @param {?=} closeDelay\n * @return {?}\n */\nfunction listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn, openDelay, closeDelay) {\n if (openDelay === void 0) { openDelay = 0; }\n if (closeDelay === void 0) { closeDelay = 0; }\n /** @type {?} */\n var parsedTriggers = parseTriggers(triggers);\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return (/**\n * @return {?}\n */\n function () { });\n }\n /** @type {?} */\n var subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn)\n .pipe(triggerDelay(openDelay, closeDelay, isOpenedFn))\n .subscribe((/**\n * @param {?} open\n * @return {?}\n */\n function (open) { return (open ? openFn() : closeFn()); }));\n return (/**\n * @return {?}\n */\n function () { return subscription.unsubscribe(); });\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the popovers used in the application.\n */\nvar NgbPopoverConfig = /** @class */ (function () {\n function NgbPopoverConfig() {\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'click';\n this.disablePopover = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n NgbPopoverConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbPopoverConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbPopoverConfig_Factory() { return new NgbPopoverConfig(); }, token: NgbPopoverConfig, providedIn: \"root\" });\n return NgbPopoverConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextId$3 = 0;\nvar NgbPopoverWindow = /** @class */ (function () {\n function NgbPopoverWindow() {\n }\n /**\n * @return {?}\n */\n NgbPopoverWindow.prototype.isTitleTemplate = /**\n * @return {?}\n */\n function () { return this.title instanceof TemplateRef; };\n NgbPopoverWindow.decorators = [\n { type: Component, args: [{\n selector: 'ngb-popover-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { '[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")', 'role': 'tooltip', '[id]': 'id' },\n template: \"\\n
\\n

\\n {{title}}\\n \\n

\\n
\",\n styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{top:auto;bottom:.7em}\"]\n }] }\n ];\n NgbPopoverWindow.propDecorators = {\n title: [{ type: Input }],\n id: [{ type: Input }],\n popoverClass: [{ type: Input }],\n context: [{ type: Input }]\n };\n return NgbPopoverWindow;\n}());\n/**\n * A lightweight and extensible directive for fancy popover creation.\n */\nvar NgbPopover = /** @class */ (function () {\n function NgbPopover(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n var _this = this;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n /**\n * An event emitted when the popover is shown. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover is hidden. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbPopoverWindowId = \"ngb-popover-\" + nextId$3++;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disablePopover = config.disablePopover;\n this.popoverClass = config.popoverClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, applicationRef);\n this._zoneSubscription = _ngZone.onStable.subscribe((/**\n * @return {?}\n */\n function () {\n if (_this._windowRef) {\n positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body', 'bs-popover');\n }\n }));\n }\n /**\n * @private\n * @return {?}\n */\n NgbPopover.prototype._isDisabled = /**\n * @private\n * @return {?}\n */\n function () {\n if (this.disablePopover) {\n return true;\n }\n if (!this.ngbPopover && !this.popoverTitle) {\n return true;\n }\n return false;\n };\n /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n */\n /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n * @param {?=} context\n * @return {?}\n */\n NgbPopover.prototype.open = /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n * @param {?=} context\n * @return {?}\n */\n function (context) {\n var _this = this;\n if (!this._windowRef && !this._isDisabled()) {\n this._windowRef = this._popupService.open(this.ngbPopover, context);\n this._windowRef.instance.title = this.popoverTitle;\n this._windowRef.instance.context = context;\n this._windowRef.instance.popoverClass = this.popoverClass;\n this._windowRef.instance.id = this._ngbPopoverWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbPopoverWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening popover from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because popover won't work inside the OnPush component.\n // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the popover from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, (/**\n * @return {?}\n */\n function () { return _this.close(); }), this.hidden, [this._windowRef.location.nativeElement]);\n this.shown.emit();\n }\n };\n /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n * @return {?}\n */\n NgbPopover.prototype.close = /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n * @return {?}\n */\n function () {\n if (this._windowRef) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close();\n this._windowRef = null;\n this.hidden.emit();\n this._changeDetector.markForCheck();\n }\n };\n /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n * @return {?}\n */\n NgbPopover.prototype.toggle = /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n * @return {?}\n */\n function () {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n };\n /**\n * Returns `true`, if the popover is currently shown.\n */\n /**\n * Returns `true`, if the popover is currently shown.\n * @return {?}\n */\n NgbPopover.prototype.isOpen = /**\n * Returns `true`, if the popover is currently shown.\n * @return {?}\n */\n function () { return this._windowRef != null; };\n /**\n * @return {?}\n */\n NgbPopover.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n };\n /**\n * @param {?} __0\n * @return {?}\n */\n NgbPopover.prototype.ngOnChanges = /**\n * @param {?} __0\n * @return {?}\n */\n function (_a) {\n var ngbPopover = _a.ngbPopover, popoverTitle = _a.popoverTitle, disablePopover = _a.disablePopover, popoverClass = _a.popoverClass;\n if (popoverClass && this.isOpen()) {\n this._windowRef.instance.popoverClass = popoverClass.currentValue;\n }\n // close popover if title and content become empty, or disablePopover set to true\n if ((ngbPopover || popoverTitle || disablePopover) && this._isDisabled()) {\n this.close();\n }\n };\n /**\n * @return {?}\n */\n NgbPopover.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this.close();\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n this._zoneSubscription.unsubscribe();\n };\n NgbPopover.decorators = [\n { type: Directive, args: [{ selector: '[ngbPopover]', exportAs: 'ngbPopover' },] }\n ];\n /** @nocollapse */\n NgbPopover.ctorParameters = function () { return [\n { type: ElementRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: NgbPopoverConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n ]; };\n NgbPopover.propDecorators = {\n autoClose: [{ type: Input }],\n ngbPopover: [{ type: Input }],\n popoverTitle: [{ type: Input }],\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n disablePopover: [{ type: Input }],\n popoverClass: [{ type: Input }],\n openDelay: [{ type: Input }],\n closeDelay: [{ type: Input }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }]\n };\n return NgbPopover;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbPopoverModule = /** @class */ (function () {\n function NgbPopoverModule() {\n }\n NgbPopoverModule.decorators = [\n { type: NgModule, args: [{\n declarations: [NgbPopover, NgbPopoverWindow],\n exports: [NgbPopover],\n imports: [CommonModule],\n entryComponents: [NgbPopoverWindow]\n },] }\n ];\n return NgbPopoverModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the progress bars used in the application.\n */\nvar NgbProgressbarConfig = /** @class */ (function () {\n function NgbProgressbarConfig() {\n this.max = 100;\n this.animated = false;\n this.striped = false;\n this.showValue = false;\n }\n NgbProgressbarConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbProgressbarConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbProgressbarConfig_Factory() { return new NgbProgressbarConfig(); }, token: NgbProgressbarConfig, providedIn: \"root\" });\n return NgbProgressbarConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A directive that provides feedback on the progress of a workflow or an action.\n */\nvar NgbProgressbar = /** @class */ (function () {\n function NgbProgressbar(config) {\n /**\n * The current value for the progress bar.\n *\n * Should be in the `[0, max]` range.\n */\n this.value = 0;\n this.max = config.max;\n this.animated = config.animated;\n this.striped = config.striped;\n this.textType = config.textType;\n this.type = config.type;\n this.showValue = config.showValue;\n this.height = config.height;\n }\n Object.defineProperty(NgbProgressbar.prototype, \"max\", {\n get: /**\n * @return {?}\n */\n function () { return this._max; },\n /**\n * The maximal value to be displayed in the progress bar.\n *\n * Should be a positive number. Will default to 100 otherwise.\n */\n set: /**\n * The maximal value to be displayed in the progress bar.\n *\n * Should be a positive number. Will default to 100 otherwise.\n * @param {?} max\n * @return {?}\n */\n function (max) {\n this._max = !isNumber(max) || max <= 0 ? 100 : max;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @return {?}\n */\n NgbProgressbar.prototype.getValue = /**\n * @return {?}\n */\n function () { return getValueInRange(this.value, this.max); };\n /**\n * @return {?}\n */\n NgbProgressbar.prototype.getPercentValue = /**\n * @return {?}\n */\n function () { return 100 * this.getValue() / this.max; };\n NgbProgressbar.decorators = [\n { type: Component, args: [{\n selector: 'ngb-progressbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"\\n
\\n
\\n {{getPercentValue()}}%\\n
\\n
\\n \"\n }] }\n ];\n /** @nocollapse */\n NgbProgressbar.ctorParameters = function () { return [\n { type: NgbProgressbarConfig }\n ]; };\n NgbProgressbar.propDecorators = {\n max: [{ type: Input }],\n animated: [{ type: Input }],\n striped: [{ type: Input }],\n showValue: [{ type: Input }],\n textType: [{ type: Input }],\n type: [{ type: Input }],\n value: [{ type: Input }],\n height: [{ type: Input }]\n };\n return NgbProgressbar;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbProgressbarModule = /** @class */ (function () {\n function NgbProgressbarModule() {\n }\n NgbProgressbarModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbProgressbar], exports: [NgbProgressbar], imports: [CommonModule] },] }\n ];\n return NgbProgressbarModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the ratings used in the application.\n */\nvar NgbRatingConfig = /** @class */ (function () {\n function NgbRatingConfig() {\n this.max = 10;\n this.readonly = false;\n this.resettable = false;\n }\n NgbRatingConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbRatingConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbRatingConfig_Factory() { return new NgbRatingConfig(); }, token: NgbRatingConfig, providedIn: \"root\" });\n return NgbRatingConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_RATING_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n function () { return NgbRating; })),\n multi: true\n};\n/**\n * A directive that helps visualising and interacting with a star rating bar.\n */\nvar NgbRating = /** @class */ (function () {\n function NgbRating(config, _changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n this.contexts = [];\n this.disabled = false;\n /**\n * An event emitted when the user is hovering over a given rating.\n *\n * Event payload equals to the rating being hovered over.\n */\n this.hover = new EventEmitter();\n /**\n * An event emitted when the user stops hovering over a given rating.\n *\n * Event payload equals to the rating of the last item being hovered over.\n */\n this.leave = new EventEmitter();\n /**\n * An event emitted when the user selects a new rating.\n *\n * Event payload equals to the newly selected rating.\n */\n this.rateChange = new EventEmitter(true);\n this.onChange = (/**\n * @param {?} _\n * @return {?}\n */\n function (_) { });\n this.onTouched = (/**\n * @return {?}\n */\n function () { });\n this.max = config.max;\n this.readonly = config.readonly;\n }\n /**\n * @return {?}\n */\n NgbRating.prototype.ariaValueText = /**\n * @return {?}\n */\n function () { return this.nextRate + \" out of \" + this.max; };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbRating.prototype.enter = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n if (!this.readonly && !this.disabled) {\n this._updateState(value);\n }\n this.hover.emit(value);\n };\n /**\n * @return {?}\n */\n NgbRating.prototype.handleBlur = /**\n * @return {?}\n */\n function () { this.onTouched(); };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbRating.prototype.handleClick = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n if (!this.readonly && !this.disabled) {\n this.update(this.resettable && this.rate === value ? 0 : value);\n }\n };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbRating.prototype.handleKeyDown = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.ArrowDown:\n case Key.ArrowLeft:\n this.update(this.rate - 1);\n break;\n case Key.ArrowUp:\n case Key.ArrowRight:\n this.update(this.rate + 1);\n break;\n case Key.Home:\n this.update(0);\n break;\n case Key.End:\n this.update(this.max);\n break;\n default:\n return;\n }\n // note 'return' in default case\n event.preventDefault();\n };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbRating.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if (changes['rate']) {\n this.update(this.rate);\n }\n };\n /**\n * @return {?}\n */\n NgbRating.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n this.contexts = Array.from({ length: this.max }, (/**\n * @param {?} v\n * @param {?} k\n * @return {?}\n */\n function (v, k) { return ({ fill: 0, index: k }); }));\n this._updateState(this.rate);\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbRating.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbRating.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onTouched = fn; };\n /**\n * @return {?}\n */\n NgbRating.prototype.reset = /**\n * @return {?}\n */\n function () {\n this.leave.emit(this.nextRate);\n this._updateState(this.rate);\n };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbRating.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) { this.disabled = isDisabled; };\n /**\n * @param {?} value\n * @param {?=} internalChange\n * @return {?}\n */\n NgbRating.prototype.update = /**\n * @param {?} value\n * @param {?=} internalChange\n * @return {?}\n */\n function (value, internalChange) {\n if (internalChange === void 0) { internalChange = true; }\n /** @type {?} */\n var newRate = getValueInRange(value, this.max, 0);\n if (!this.readonly && !this.disabled && this.rate !== newRate) {\n this.rate = newRate;\n this.rateChange.emit(this.rate);\n }\n if (internalChange) {\n this.onChange(this.rate);\n this.onTouched();\n }\n this._updateState(this.rate);\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbRating.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this.update(value, false);\n this._changeDetectorRef.markForCheck();\n };\n /**\n * @private\n * @param {?} index\n * @return {?}\n */\n NgbRating.prototype._getFillValue = /**\n * @private\n * @param {?} index\n * @return {?}\n */\n function (index) {\n /** @type {?} */\n var diff = this.nextRate - index;\n if (diff >= 1) {\n return 100;\n }\n if (diff < 1 && diff > 0) {\n return parseInt((diff * 100).toFixed(2), 10);\n }\n return 0;\n };\n /**\n * @private\n * @param {?} nextValue\n * @return {?}\n */\n NgbRating.prototype._updateState = /**\n * @private\n * @param {?} nextValue\n * @return {?}\n */\n function (nextValue) {\n var _this = this;\n this.nextRate = nextValue;\n this.contexts.forEach((/**\n * @param {?} context\n * @param {?} index\n * @return {?}\n */\n function (context, index) { return context.fill = _this._getFillValue(index); }));\n };\n NgbRating.decorators = [\n { type: Component, args: [{\n selector: 'ngb-rating',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'd-inline-flex',\n '[tabindex]': 'disabled ? -1 : 0',\n 'role': 'slider',\n 'aria-valuemin': '0',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuenow]': 'nextRate',\n '[attr.aria-valuetext]': 'ariaValueText()',\n '[attr.aria-disabled]': 'readonly ? true : null',\n '(blur)': 'handleBlur()',\n '(keydown)': 'handleKeyDown($event)',\n '(mouseleave)': 'reset()'\n },\n template: \"\\n {{ fill === 100 ? '★' : '☆' }}\\n \\n ({{ index < nextRate ? '*' : ' ' }})\\n \\n \\n \\n \\n \\n \",\n providers: [NGB_RATING_VALUE_ACCESSOR]\n }] }\n ];\n /** @nocollapse */\n NgbRating.ctorParameters = function () { return [\n { type: NgbRatingConfig },\n { type: ChangeDetectorRef }\n ]; };\n NgbRating.propDecorators = {\n max: [{ type: Input }],\n rate: [{ type: Input }],\n readonly: [{ type: Input }],\n resettable: [{ type: Input }],\n starTemplate: [{ type: Input }],\n starTemplateFromContent: [{ type: ContentChild, args: [TemplateRef, { static: false },] }],\n hover: [{ type: Output }],\n leave: [{ type: Output }],\n rateChange: [{ type: Output }]\n };\n return NgbRating;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbRatingModule = /** @class */ (function () {\n function NgbRatingModule() {\n }\n NgbRatingModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbRating], exports: [NgbRating], imports: [CommonModule] },] }\n ];\n return NgbRatingModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTabset`](#/components/tabset/api#NgbTabset) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tabsets used in the application.\n */\nvar NgbTabsetConfig = /** @class */ (function () {\n function NgbTabsetConfig() {\n this.justify = 'start';\n this.orientation = 'horizontal';\n this.type = 'tabs';\n }\n NgbTabsetConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbTabsetConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbTabsetConfig_Factory() { return new NgbTabsetConfig(); }, token: NgbTabsetConfig, providedIn: \"root\" });\n return NgbTabsetConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextId$4 = 0;\n/**\n * A directive to wrap tab titles that need to contain HTML markup or other directives.\n *\n * Alternatively you could use the `NgbTab.title` input for string titles.\n */\nvar NgbTabTitle = /** @class */ (function () {\n function NgbTabTitle(templateRef) {\n this.templateRef = templateRef;\n }\n NgbTabTitle.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbTabTitle]' },] }\n ];\n /** @nocollapse */\n NgbTabTitle.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbTabTitle;\n}());\n/**\n * A directive to wrap content to be displayed in a tab.\n */\nvar NgbTabContent = /** @class */ (function () {\n function NgbTabContent(templateRef) {\n this.templateRef = templateRef;\n }\n NgbTabContent.decorators = [\n { type: Directive, args: [{ selector: 'ng-template[ngbTabContent]' },] }\n ];\n /** @nocollapse */\n NgbTabContent.ctorParameters = function () { return [\n { type: TemplateRef }\n ]; };\n return NgbTabContent;\n}());\n/**\n * A directive representing an individual tab.\n */\nvar NgbTab = /** @class */ (function () {\n function NgbTab() {\n /**\n * The tab identifier.\n *\n * Must be unique for the entire document for proper accessibility support.\n */\n this.id = \"ngb-tab-\" + nextId$4++;\n /**\n * If `true`, the current tab is disabled and can't be toggled.\n */\n this.disabled = false;\n }\n /**\n * @return {?}\n */\n NgbTab.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.contentTpl = this.contentTpls.first;\n };\n NgbTab.decorators = [\n { type: Directive, args: [{ selector: 'ngb-tab' },] }\n ];\n NgbTab.propDecorators = {\n id: [{ type: Input }],\n title: [{ type: Input }],\n disabled: [{ type: Input }],\n titleTpls: [{ type: ContentChildren, args: [NgbTabTitle, { descendants: false },] }],\n contentTpls: [{ type: ContentChildren, args: [NgbTabContent, { descendants: false },] }]\n };\n return NgbTab;\n}());\n/**\n * A component that makes it easy to create tabbed interface.\n */\nvar NgbTabset = /** @class */ (function () {\n function NgbTabset(config) {\n /**\n * If `true`, non-visible tabs content will be removed from DOM. Otherwise it will just be hidden.\n */\n this.destroyOnHide = true;\n /**\n * A tab change event emitted right before the tab change happens.\n *\n * See [`NgbTabChangeEvent`](#/components/tabset/api#NgbTabChangeEvent) for payload details.\n */\n this.tabChange = new EventEmitter();\n this.type = config.type;\n this.justify = config.justify;\n this.orientation = config.orientation;\n }\n Object.defineProperty(NgbTabset.prototype, \"justify\", {\n /**\n * The horizontal alignment of the tabs with flexbox utilities.\n */\n set: /**\n * The horizontal alignment of the tabs with flexbox utilities.\n * @param {?} className\n * @return {?}\n */\n function (className) {\n if (className === 'fill' || className === 'justified') {\n this.justifyClass = \"nav-\" + className;\n }\n else {\n this.justifyClass = \"justify-content-\" + className;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Selects the tab with the given id and shows its associated content panel.\n *\n * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n * hidden depending on the `destroyOnHide` value.\n */\n /**\n * Selects the tab with the given id and shows its associated content panel.\n *\n * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n * hidden depending on the `destroyOnHide` value.\n * @param {?} tabId\n * @return {?}\n */\n NgbTabset.prototype.select = /**\n * Selects the tab with the given id and shows its associated content panel.\n *\n * Any other tab that was previously selected becomes unselected and its associated pane is removed from DOM or\n * hidden depending on the `destroyOnHide` value.\n * @param {?} tabId\n * @return {?}\n */\n function (tabId) {\n /** @type {?} */\n var selectedTab = this._getTabById(tabId);\n if (selectedTab && !selectedTab.disabled && this.activeId !== selectedTab.id) {\n /** @type {?} */\n var defaultPrevented_1 = false;\n this.tabChange.emit({ activeId: this.activeId, nextId: selectedTab.id, preventDefault: (/**\n * @return {?}\n */\n function () { defaultPrevented_1 = true; }) });\n if (!defaultPrevented_1) {\n this.activeId = selectedTab.id;\n }\n }\n };\n /**\n * @return {?}\n */\n NgbTabset.prototype.ngAfterContentChecked = /**\n * @return {?}\n */\n function () {\n // auto-correct activeId that might have been set incorrectly as input\n /** @type {?} */\n var activeTab = this._getTabById(this.activeId);\n this.activeId = activeTab ? activeTab.id : (this.tabs.length ? this.tabs.first.id : null);\n };\n /**\n * @private\n * @param {?} id\n * @return {?}\n */\n NgbTabset.prototype._getTabById = /**\n * @private\n * @param {?} id\n * @return {?}\n */\n function (id) {\n /** @type {?} */\n var tabsWithId = this.tabs.filter((/**\n * @param {?} tab\n * @return {?}\n */\n function (tab) { return tab.id === id; }));\n return tabsWithId.length ? tabsWithId[0] : null;\n };\n NgbTabset.decorators = [\n { type: Component, args: [{\n selector: 'ngb-tabset',\n exportAs: 'ngbTabset',\n encapsulation: ViewEncapsulation.None,\n template: \"\\n \\n
\\n \\n \\n \\n
\\n \\n \\n \"\n }] }\n ];\n /** @nocollapse */\n NgbTabset.ctorParameters = function () { return [\n { type: NgbTabsetConfig }\n ]; };\n NgbTabset.propDecorators = {\n tabs: [{ type: ContentChildren, args: [NgbTab,] }],\n activeId: [{ type: Input }],\n destroyOnHide: [{ type: Input }],\n justify: [{ type: Input }],\n orientation: [{ type: Input }],\n type: [{ type: Input }],\n tabChange: [{ type: Output }]\n };\n return NgbTabset;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_TABSET_DIRECTIVES = [NgbTabset, NgbTab, NgbTabContent, NgbTabTitle];\nvar NgbTabsetModule = /** @class */ (function () {\n function NgbTabsetModule() {\n }\n NgbTabsetModule.decorators = [\n { type: NgModule, args: [{ declarations: NGB_TABSET_DIRECTIVES, exports: NGB_TABSET_DIRECTIVES, imports: [CommonModule, NgbNavModule] },] }\n ];\n return NgbTabsetModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbTime = /** @class */ (function () {\n function NgbTime(hour, minute, second) {\n this.hour = toInteger(hour);\n this.minute = toInteger(minute);\n this.second = toInteger(second);\n }\n /**\n * @param {?=} step\n * @return {?}\n */\n NgbTime.prototype.changeHour = /**\n * @param {?=} step\n * @return {?}\n */\n function (step) {\n if (step === void 0) { step = 1; }\n this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step);\n };\n /**\n * @param {?} hour\n * @return {?}\n */\n NgbTime.prototype.updateHour = /**\n * @param {?} hour\n * @return {?}\n */\n function (hour) {\n if (isNumber(hour)) {\n this.hour = (hour < 0 ? 24 + hour : hour) % 24;\n }\n else {\n this.hour = NaN;\n }\n };\n /**\n * @param {?=} step\n * @return {?}\n */\n NgbTime.prototype.changeMinute = /**\n * @param {?=} step\n * @return {?}\n */\n function (step) {\n if (step === void 0) { step = 1; }\n this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step);\n };\n /**\n * @param {?} minute\n * @return {?}\n */\n NgbTime.prototype.updateMinute = /**\n * @param {?} minute\n * @return {?}\n */\n function (minute) {\n if (isNumber(minute)) {\n this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\n this.changeHour(Math.floor(minute / 60));\n }\n else {\n this.minute = NaN;\n }\n };\n /**\n * @param {?=} step\n * @return {?}\n */\n NgbTime.prototype.changeSecond = /**\n * @param {?=} step\n * @return {?}\n */\n function (step) {\n if (step === void 0) { step = 1; }\n this.updateSecond((isNaN(this.second) ? 0 : this.second) + step);\n };\n /**\n * @param {?} second\n * @return {?}\n */\n NgbTime.prototype.updateSecond = /**\n * @param {?} second\n * @return {?}\n */\n function (second) {\n if (isNumber(second)) {\n this.second = second < 0 ? 60 + second % 60 : second % 60;\n this.changeMinute(Math.floor(second / 60));\n }\n else {\n this.second = NaN;\n }\n };\n /**\n * @param {?=} checkSecs\n * @return {?}\n */\n NgbTime.prototype.isValid = /**\n * @param {?=} checkSecs\n * @return {?}\n */\n function (checkSecs) {\n if (checkSecs === void 0) { checkSecs = true; }\n return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n };\n /**\n * @return {?}\n */\n NgbTime.prototype.toString = /**\n * @return {?}\n */\n function () { return (this.hour || 0) + \":\" + (this.minute || 0) + \":\" + (this.second || 0); };\n return NgbTime;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the timepickers used in the application.\n */\nvar NgbTimepickerConfig = /** @class */ (function () {\n function NgbTimepickerConfig() {\n this.meridian = false;\n this.spinners = true;\n this.seconds = false;\n this.hourStep = 1;\n this.minuteStep = 1;\n this.secondStep = 1;\n this.disabled = false;\n this.readonlyInputs = false;\n this.size = 'medium';\n }\n NgbTimepickerConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbTimepickerConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbTimepickerConfig_Factory() { return new NgbTimepickerConfig(); }, token: NgbTimepickerConfig, providedIn: \"root\" });\n return NgbTimepickerConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n return new NgbTimeStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\n * any provided user time model `T`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding timepicker to a form control,\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\n *\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\n *\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\n *\n * \\@since 2.2.0\n * @abstract\n * @template T\n */\nvar NgbTimeAdapter = /** @class */ (function () {\n function NgbTimeAdapter() {\n }\n NgbTimeAdapter.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY },] }\n ];\n /** @nocollapse */ NgbTimeAdapter.ngInjectableDef = \u0275\u0275defineInjectable({ factory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY, token: NgbTimeAdapter, providedIn: \"root\" });\n return NgbTimeAdapter;\n}());\nvar NgbTimeStructAdapter = /** @class */ (function (_super) {\n __extends(NgbTimeStructAdapter, _super);\n function NgbTimeStructAdapter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n * @param {?} time\n * @return {?}\n */\n NgbTimeStructAdapter.prototype.fromModel = /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n * @param {?} time\n * @return {?}\n */\n function (time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n };\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n * @param {?} time\n * @return {?}\n */\n NgbTimeStructAdapter.prototype.toModel = /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n * @param {?} time\n * @return {?}\n */\n function (time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n };\n NgbTimeStructAdapter.decorators = [\n { type: Injectable }\n ];\n return NgbTimeStructAdapter;\n}(NgbTimeAdapter));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} locale\n * @return {?}\n */\nfunction NGB_TIMEPICKER_I18N_FACTORY(locale) {\n return new NgbTimepickerI18nDefault(locale);\n}\n/**\n * Type of the service supplying day periods (for example, 'AM' and 'PM') to NgbTimepicker component.\n * The default implementation of this service honors the Angular locale, and uses the registered locale data,\n * as explained in the Angular i18n guide.\n * @abstract\n */\nvar NgbTimepickerI18n = /** @class */ (function () {\n function NgbTimepickerI18n() {\n }\n NgbTimepickerI18n.decorators = [\n { type: Injectable, args: [{ providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [LOCALE_ID$1] },] }\n ];\n /** @nocollapse */ NgbTimepickerI18n.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbTimepickerI18n_Factory() { return NGB_TIMEPICKER_I18N_FACTORY(\u0275\u0275inject(LOCALE_ID$1)); }, token: NgbTimepickerI18n, providedIn: \"root\" });\n return NgbTimepickerI18n;\n}());\nvar NgbTimepickerI18nDefault = /** @class */ (function (_super) {\n __extends(NgbTimepickerI18nDefault, _super);\n function NgbTimepickerI18nDefault(locale) {\n var _this = _super.call(this) || this;\n _this._periods = getLocaleDayPeriods(locale, FormStyle.Standalone, TranslationWidth.Narrow);\n return _this;\n }\n /**\n * @return {?}\n */\n NgbTimepickerI18nDefault.prototype.getMorningPeriod = /**\n * @return {?}\n */\n function () { return this._periods[0]; };\n /**\n * @return {?}\n */\n NgbTimepickerI18nDefault.prototype.getAfternoonPeriod = /**\n * @return {?}\n */\n function () { return this._periods[1]; };\n NgbTimepickerI18nDefault.decorators = [\n { type: Injectable }\n ];\n /** @nocollapse */\n NgbTimepickerI18nDefault.ctorParameters = function () { return [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID$1,] }] }\n ]; };\n return NgbTimepickerI18nDefault;\n}(NgbTimepickerI18n));\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar FILTER_REGEX = /[^0-9]/g;\n/** @type {?} */\nvar NGB_TIMEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n function () { return NgbTimepicker; })),\n multi: true\n};\n/**\n * A directive that helps with wth picking hours, minutes and seconds.\n */\nvar NgbTimepicker = /** @class */ (function () {\n function NgbTimepicker(_config, _ngbTimeAdapter, _cd, i18n) {\n this._config = _config;\n this._ngbTimeAdapter = _ngbTimeAdapter;\n this._cd = _cd;\n this.i18n = i18n;\n this.onChange = (/**\n * @param {?} _\n * @return {?}\n */\n function (_) { });\n this.onTouched = (/**\n * @return {?}\n */\n function () { });\n this.meridian = _config.meridian;\n this.spinners = _config.spinners;\n this.seconds = _config.seconds;\n this.hourStep = _config.hourStep;\n this.minuteStep = _config.minuteStep;\n this.secondStep = _config.secondStep;\n this.disabled = _config.disabled;\n this.readonlyInputs = _config.readonlyInputs;\n this.size = _config.size;\n }\n Object.defineProperty(NgbTimepicker.prototype, \"hourStep\", {\n get: /**\n * @return {?}\n */\n function () { return this._hourStep; },\n /**\n * The number of hours to add/subtract when clicking hour spinners.\n */\n set: /**\n * The number of hours to add/subtract when clicking hour spinners.\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this._hourStep = isInteger(step) ? step : this._config.hourStep;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbTimepicker.prototype, \"minuteStep\", {\n get: /**\n * @return {?}\n */\n function () { return this._minuteStep; },\n /**\n * The number of minutes to add/subtract when clicking minute spinners.\n */\n set: /**\n * The number of minutes to add/subtract when clicking minute spinners.\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbTimepicker.prototype, \"secondStep\", {\n get: /**\n * @return {?}\n */\n function () { return this._secondStep; },\n /**\n * The number of seconds to add/subtract when clicking second spinners.\n */\n set: /**\n * The number of seconds to add/subtract when clicking second spinners.\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this._secondStep = isInteger(step) ? step : this._config.secondStep;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} value\n * @return {?}\n */\n NgbTimepicker.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n /** @type {?} */\n var structValue = this._ngbTimeAdapter.fromModel(value);\n this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n this.model.second = 0;\n }\n this._cd.markForCheck();\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbTimepicker.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbTimepicker.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this.onTouched = fn; };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbTimepicker.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) { this.disabled = isDisabled; };\n /**\n * @param {?} step\n * @return {?}\n */\n NgbTimepicker.prototype.changeHour = /**\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this.model.changeHour(step);\n this.propagateModelChange();\n };\n /**\n * @param {?} step\n * @return {?}\n */\n NgbTimepicker.prototype.changeMinute = /**\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this.model.changeMinute(step);\n this.propagateModelChange();\n };\n /**\n * @param {?} step\n * @return {?}\n */\n NgbTimepicker.prototype.changeSecond = /**\n * @param {?} step\n * @return {?}\n */\n function (step) {\n this.model.changeSecond(step);\n this.propagateModelChange();\n };\n /**\n * @param {?} newVal\n * @return {?}\n */\n NgbTimepicker.prototype.updateHour = /**\n * @param {?} newVal\n * @return {?}\n */\n function (newVal) {\n /** @type {?} */\n var isPM = this.model.hour >= 12;\n /** @type {?} */\n var enteredHour = toInteger(newVal);\n if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\n this.model.updateHour(enteredHour + 12);\n }\n else {\n this.model.updateHour(enteredHour);\n }\n this.propagateModelChange();\n };\n /**\n * @param {?} newVal\n * @return {?}\n */\n NgbTimepicker.prototype.updateMinute = /**\n * @param {?} newVal\n * @return {?}\n */\n function (newVal) {\n this.model.updateMinute(toInteger(newVal));\n this.propagateModelChange();\n };\n /**\n * @param {?} newVal\n * @return {?}\n */\n NgbTimepicker.prototype.updateSecond = /**\n * @param {?} newVal\n * @return {?}\n */\n function (newVal) {\n this.model.updateSecond(toInteger(newVal));\n this.propagateModelChange();\n };\n /**\n * @return {?}\n */\n NgbTimepicker.prototype.toggleMeridian = /**\n * @return {?}\n */\n function () {\n if (this.meridian) {\n this.changeHour(12);\n }\n };\n /**\n * @param {?} input\n * @return {?}\n */\n NgbTimepicker.prototype.formatInput = /**\n * @param {?} input\n * @return {?}\n */\n function (input) { input.value = input.value.replace(FILTER_REGEX, ''); };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbTimepicker.prototype.formatHour = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n if (isNumber(value)) {\n if (this.meridian) {\n return padNumber(value % 12 === 0 ? 12 : value % 12);\n }\n else {\n return padNumber(value % 24);\n }\n }\n else {\n return padNumber(NaN);\n }\n };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbTimepicker.prototype.formatMinSec = /**\n * @param {?} value\n * @return {?}\n */\n function (value) { return padNumber(value); };\n Object.defineProperty(NgbTimepicker.prototype, \"isSmallSize\", {\n get: /**\n * @return {?}\n */\n function () { return this.size === 'small'; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NgbTimepicker.prototype, \"isLargeSize\", {\n get: /**\n * @return {?}\n */\n function () { return this.size === 'large'; },\n enumerable: true,\n configurable: true\n });\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbTimepicker.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n this.model.second = 0;\n this.propagateModelChange(false);\n }\n };\n /**\n * @private\n * @param {?=} touched\n * @return {?}\n */\n NgbTimepicker.prototype.propagateModelChange = /**\n * @private\n * @param {?=} touched\n * @return {?}\n */\n function (touched) {\n if (touched === void 0) { touched = true; }\n if (touched) {\n this.onTouched();\n }\n if (this.model.isValid(this.seconds)) {\n this.onChange(this._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }));\n }\n else {\n this.onChange(this._ngbTimeAdapter.toModel(null));\n }\n };\n NgbTimepicker.decorators = [\n { type: Component, args: [{\n selector: 'ngb-timepicker',\n encapsulation: ViewEncapsulation.None,\n template: \"\\n
\\n
\\n
\\n \\n \\n \\n
\\n
:
\\n
\\n \\n \\n \\n
\\n
:
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \",\n providers: [NGB_TIMEPICKER_VALUE_ACCESSOR],\n styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron::before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"]\n }] }\n ];\n /** @nocollapse */\n NgbTimepicker.ctorParameters = function () { return [\n { type: NgbTimepickerConfig },\n { type: NgbTimeAdapter },\n { type: ChangeDetectorRef },\n { type: NgbTimepickerI18n }\n ]; };\n NgbTimepicker.propDecorators = {\n meridian: [{ type: Input }],\n spinners: [{ type: Input }],\n seconds: [{ type: Input }],\n hourStep: [{ type: Input }],\n minuteStep: [{ type: Input }],\n secondStep: [{ type: Input }],\n readonlyInputs: [{ type: Input }],\n size: [{ type: Input }]\n };\n return NgbTimepicker;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbTimepickerModule = /** @class */ (function () {\n function NgbTimepickerModule() {\n }\n NgbTimepickerModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbTimepicker], exports: [NgbTimepicker], imports: [CommonModule] },] }\n ];\n return NgbTimepickerModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Configuration service for the NgbToast component. You can inject this service, typically in your root component,\n * and customize the values of its properties in order to provide default values for all the toasts used in the\n * application.\n *\n * \\@since 5.0.0\n */\nvar NgbToastConfig = /** @class */ (function () {\n function NgbToastConfig() {\n this.autohide = true;\n this.delay = 500;\n this.ariaLive = 'polite';\n }\n NgbToastConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbToastConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbToastConfig_Factory() { return new NgbToastConfig(); }, token: NgbToastConfig, providedIn: \"root\" });\n return NgbToastConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * This directive allows the usage of HTML markup or other directives\n * inside of the toast's header.\n *\n * \\@since 5.0.0\n */\nvar NgbToastHeader = /** @class */ (function () {\n function NgbToastHeader() {\n }\n NgbToastHeader.decorators = [\n { type: Directive, args: [{ selector: '[ngbToastHeader]' },] }\n ];\n return NgbToastHeader;\n}());\n/**\n * Toasts provide feedback messages as notifications to the user.\n * Goal is to mimic the push notifications available both on mobile and desktop operating systems.\n *\n * \\@since 5.0.0\n */\nvar NgbToast = /** @class */ (function () {\n function NgbToast(ariaLive, config) {\n this.ariaLive = ariaLive;\n /**\n * A template like `` can be\n * used in the projected content to allow markup usage.\n */\n this.contentHeaderTpl = null;\n /**\n * An event fired immediately when toast's `hide()` method has been called.\n * It can only occur in 2 different scenarios:\n * - `autohide` timeout fires\n * - user clicks on a closing cross (×)\n *\n * Additionally this output is purely informative. The toast won't disappear. It's up to the user to take care of\n * that.\n */\n this.hideOutput = new EventEmitter();\n if (this.ariaLive == null) {\n this.ariaLive = config.ariaLive;\n }\n this.delay = config.delay;\n this.autohide = config.autohide;\n }\n /**\n * @return {?}\n */\n NgbToast.prototype.ngAfterContentInit = /**\n * @return {?}\n */\n function () { this._init(); };\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbToast.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n if ('autohide' in changes) {\n this._clearTimeout();\n this._init();\n }\n };\n /**\n * @return {?}\n */\n NgbToast.prototype.hide = /**\n * @return {?}\n */\n function () {\n this._clearTimeout();\n this.hideOutput.emit();\n };\n /**\n * @private\n * @return {?}\n */\n NgbToast.prototype._init = /**\n * @private\n * @return {?}\n */\n function () {\n var _this = this;\n if (this.autohide && !this._timeoutID) {\n this._timeoutID = setTimeout((/**\n * @return {?}\n */\n function () { return _this.hide(); }), this.delay);\n }\n };\n /**\n * @private\n * @return {?}\n */\n NgbToast.prototype._clearTimeout = /**\n * @private\n * @return {?}\n */\n function () {\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n };\n NgbToast.decorators = [\n { type: Component, args: [{\n selector: 'ngb-toast',\n exportAs: 'ngbToast',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'role': 'alert',\n '[attr.aria-live]': 'ariaLive',\n 'aria-atomic': 'true',\n '[class.toast]': 'true',\n '[class.show]': 'true',\n },\n template: \"\\n \\n {{header}}\\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \",\n styles: [\".ngb-toasts{position:fixed;top:0;right:0;margin:.5em;z-index:1200}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\"]\n }] }\n ];\n /** @nocollapse */\n NgbToast.ctorParameters = function () { return [\n { type: String, decorators: [{ type: Attribute, args: ['aria-live',] }] },\n { type: NgbToastConfig }\n ]; };\n NgbToast.propDecorators = {\n delay: [{ type: Input }],\n autohide: [{ type: Input }],\n header: [{ type: Input }],\n contentHeaderTpl: [{ type: ContentChild, args: [NgbToastHeader, { read: TemplateRef, static: true },] }],\n hideOutput: [{ type: Output, args: ['hide',] }]\n };\n return NgbToast;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbToastModule = /** @class */ (function () {\n function NgbToastModule() {\n }\n NgbToastModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbToast, NgbToastHeader], imports: [CommonModule], exports: [NgbToast, NgbToastHeader] },] }\n ];\n return NgbToastModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tooltips used in the application.\n */\nvar NgbTooltipConfig = /** @class */ (function () {\n function NgbTooltipConfig() {\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'hover focus';\n this.disableTooltip = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n NgbTooltipConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbTooltipConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbTooltipConfig_Factory() { return new NgbTooltipConfig(); }, token: NgbTooltipConfig, providedIn: \"root\" });\n return NgbTooltipConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar nextId$5 = 0;\nvar NgbTooltipWindow = /** @class */ (function () {\n function NgbTooltipWindow() {\n }\n NgbTooltipWindow.decorators = [\n { type: Component, args: [{\n selector: 'ngb-tooltip-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { '[class]': '\"tooltip show\" + (tooltipClass ? \" \" + tooltipClass : \"\")', 'role': 'tooltip', '[id]': 'id' },\n template: \"
\",\n styles: [\"ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"]\n }] }\n ];\n NgbTooltipWindow.propDecorators = {\n id: [{ type: Input }],\n tooltipClass: [{ type: Input }]\n };\n return NgbTooltipWindow;\n}());\n/**\n * A lightweight and extensible directive for fancy tooltip creation.\n */\nvar NgbTooltip = /** @class */ (function () {\n function NgbTooltip(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n var _this = this;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n /**\n * An event emitted when the tooltip is shown. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover is hidden. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbTooltipWindowId = \"ngb-tooltip-\" + nextId$5++;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disableTooltip = config.disableTooltip;\n this.tooltipClass = config.tooltipClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, applicationRef);\n this._zoneSubscription = _ngZone.onStable.subscribe((/**\n * @return {?}\n */\n function () {\n if (_this._windowRef) {\n positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body', 'bs-tooltip');\n }\n }));\n }\n Object.defineProperty(NgbTooltip.prototype, \"ngbTooltip\", {\n get: /**\n * @return {?}\n */\n function () { return this._ngbTooltip; },\n /**\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n *\n * If the content if falsy, the tooltip won't open.\n */\n set: /**\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n *\n * If the content if falsy, the tooltip won't open.\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._ngbTooltip = value;\n if (!value && this._windowRef) {\n this.close();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n */\n /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n * @param {?=} context\n * @return {?}\n */\n NgbTooltip.prototype.open = /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n * @param {?=} context\n * @return {?}\n */\n function (context) {\n var _this = this;\n if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n this._windowRef = this._popupService.open(this._ngbTooltip, context);\n this._windowRef.instance.tooltipClass = this.tooltipClass;\n this._windowRef.instance.id = this._ngbTooltipWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbTooltipWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening tooltip from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because tooltip won't work inside the OnPush component.\n // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the tooltip from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, (/**\n * @return {?}\n */\n function () { return _this.close(); }), this.hidden, [this._windowRef.location.nativeElement]);\n this.shown.emit();\n }\n };\n /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n * @return {?}\n */\n NgbTooltip.prototype.close = /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n * @return {?}\n */\n function () {\n if (this._windowRef != null) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close();\n this._windowRef = null;\n this.hidden.emit();\n this._changeDetector.markForCheck();\n }\n };\n /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n * @return {?}\n */\n NgbTooltip.prototype.toggle = /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n * @return {?}\n */\n function () {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n };\n /**\n * Returns `true`, if the popover is currently shown.\n */\n /**\n * Returns `true`, if the popover is currently shown.\n * @return {?}\n */\n NgbTooltip.prototype.isOpen = /**\n * Returns `true`, if the popover is currently shown.\n * @return {?}\n */\n function () { return this._windowRef != null; };\n /**\n * @return {?}\n */\n NgbTooltip.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n };\n /**\n * @param {?} __0\n * @return {?}\n */\n NgbTooltip.prototype.ngOnChanges = /**\n * @param {?} __0\n * @return {?}\n */\n function (_a) {\n var tooltipClass = _a.tooltipClass;\n if (tooltipClass && this.isOpen()) {\n this._windowRef.instance.tooltipClass = tooltipClass.currentValue;\n }\n };\n /**\n * @return {?}\n */\n NgbTooltip.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this.close();\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n this._zoneSubscription.unsubscribe();\n };\n NgbTooltip.decorators = [\n { type: Directive, args: [{ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' },] }\n ];\n /** @nocollapse */\n NgbTooltip.ctorParameters = function () { return [\n { type: ElementRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: NgbTooltipConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n ]; };\n NgbTooltip.propDecorators = {\n autoClose: [{ type: Input }],\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n disableTooltip: [{ type: Input }],\n tooltipClass: [{ type: Input }],\n openDelay: [{ type: Input }],\n closeDelay: [{ type: Input }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }],\n ngbTooltip: [{ type: Input }]\n };\n return NgbTooltip;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbTooltipModule = /** @class */ (function () {\n function NgbTooltipModule() {\n }\n NgbTooltipModule.decorators = [\n { type: NgModule, args: [{ declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip], entryComponents: [NgbTooltipWindow] },] }\n ];\n return NgbTooltipModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A component that helps with text highlighting.\n *\n * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\n * highlighting:\n *\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Alaska`.\n */\nvar NgbHighlight = /** @class */ (function () {\n function NgbHighlight() {\n /**\n * The CSS class for `` elements wrapping the `term` inside the `result`.\n */\n this.highlightClass = 'ngb-highlight';\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n NgbHighlight.prototype.ngOnChanges = /**\n * @param {?} changes\n * @return {?}\n */\n function (changes) {\n /** @type {?} */\n var result = toString(this.result);\n /** @type {?} */\n var terms = Array.isArray(this.term) ? this.term : [this.term];\n /** @type {?} */\n var escapedTerms = terms.map((/**\n * @param {?} term\n * @return {?}\n */\n function (term) { return regExpEscape(toString(term)); })).filter((/**\n * @param {?} term\n * @return {?}\n */\n function (term) { return term; }));\n this.parts = escapedTerms.length ? result.split(new RegExp(\"(\" + escapedTerms.join('|') + \")\", 'gmi')) : [result];\n };\n NgbHighlight.decorators = [\n { type: Component, args: [{\n selector: 'ngb-highlight',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: \"\" +\n \"{{part}}{{part}}\" +\n \"\",\n styles: [\".ngb-highlight{font-weight:700}\"]\n }] }\n ];\n NgbHighlight.propDecorators = {\n highlightClass: [{ type: Input }],\n result: [{ type: Input }],\n term: [{ type: Input }]\n };\n return NgbHighlight;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbTypeaheadWindow = /** @class */ (function () {\n function NgbTypeaheadWindow() {\n this.activeIdx = 0;\n /**\n * Flag indicating if the first row should be active initially\n */\n this.focusFirst = true;\n /**\n * A function used to format a given result before display. This function should return a formatted string without any\n * HTML markup\n */\n this.formatter = toString;\n /**\n * Event raised when user selects a particular result row\n */\n this.selectEvent = new EventEmitter();\n this.activeChangeEvent = new EventEmitter();\n }\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.hasActive = /**\n * @return {?}\n */\n function () { return this.activeIdx > -1 && this.activeIdx < this.results.length; };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.getActive = /**\n * @return {?}\n */\n function () { return this.results[this.activeIdx]; };\n /**\n * @param {?} activeIdx\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.markActive = /**\n * @param {?} activeIdx\n * @return {?}\n */\n function (activeIdx) {\n this.activeIdx = activeIdx;\n this._activeChanged();\n };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.next = /**\n * @return {?}\n */\n function () {\n if (this.activeIdx === this.results.length - 1) {\n this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n }\n else {\n this.activeIdx++;\n }\n this._activeChanged();\n };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.prev = /**\n * @return {?}\n */\n function () {\n if (this.activeIdx < 0) {\n this.activeIdx = this.results.length - 1;\n }\n else if (this.activeIdx === 0) {\n this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n }\n else {\n this.activeIdx--;\n }\n this._activeChanged();\n };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.resetActive = /**\n * @return {?}\n */\n function () {\n this.activeIdx = this.focusFirst ? 0 : -1;\n this._activeChanged();\n };\n /**\n * @param {?} item\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.select = /**\n * @param {?} item\n * @return {?}\n */\n function (item) { this.selectEvent.emit(item); };\n /**\n * @return {?}\n */\n NgbTypeaheadWindow.prototype.ngOnInit = /**\n * @return {?}\n */\n function () { this.resetActive(); };\n /**\n * @private\n * @return {?}\n */\n NgbTypeaheadWindow.prototype._activeChanged = /**\n * @private\n * @return {?}\n */\n function () {\n this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n };\n NgbTypeaheadWindow.decorators = [\n { type: Component, args: [{\n selector: 'ngb-typeahead-window',\n exportAs: 'ngbTypeaheadWindow',\n encapsulation: ViewEncapsulation.None,\n host: { '(mousedown)': '$event.preventDefault()', 'class': 'dropdown-menu show', 'role': 'listbox', '[id]': 'id' },\n template: \"\\n \\n \\n \\n \\n \\n \\n \"\n }] }\n ];\n NgbTypeaheadWindow.propDecorators = {\n id: [{ type: Input }],\n focusFirst: [{ type: Input }],\n results: [{ type: Input }],\n term: [{ type: Input }],\n formatter: [{ type: Input }],\n resultTemplate: [{ type: Input }],\n selectEvent: [{ type: Output, args: ['select',] }],\n activeChangeEvent: [{ type: Output, args: ['activeChange',] }]\n };\n return NgbTypeaheadWindow;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', { providedIn: 'root', factory: ARIA_LIVE_DELAY_FACTORY });\n/**\n * @return {?}\n */\nfunction ARIA_LIVE_DELAY_FACTORY() {\n return 100;\n}\n/**\n * @param {?} document\n * @param {?=} lazyCreate\n * @return {?}\n */\nfunction getLiveElement(document, lazyCreate) {\n if (lazyCreate === void 0) { lazyCreate = false; }\n /** @type {?} */\n var element = (/** @type {?} */ (document.body.querySelector('#ngb-live')));\n if (element == null && lazyCreate) {\n element = document.createElement('div');\n element.setAttribute('id', 'ngb-live');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n element.classList.add('sr-only');\n document.body.appendChild(element);\n }\n return element;\n}\nvar Live = /** @class */ (function () {\n function Live(_document, _delay) {\n this._document = _document;\n this._delay = _delay;\n }\n /**\n * @return {?}\n */\n Live.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n /** @type {?} */\n var element = getLiveElement(this._document);\n if (element) {\n element.parentElement.removeChild(element);\n }\n };\n /**\n * @param {?} message\n * @return {?}\n */\n Live.prototype.say = /**\n * @param {?} message\n * @return {?}\n */\n function (message) {\n /** @type {?} */\n var element = getLiveElement(this._document, true);\n /** @type {?} */\n var delay = this._delay;\n element.textContent = '';\n /** @type {?} */\n var setText = (/**\n * @return {?}\n */\n function () { return element.textContent = message; });\n if (delay === null) {\n setText();\n }\n else {\n setTimeout(setText, delay);\n }\n };\n Live.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */\n Live.ctorParameters = function () { return [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [ARIA_LIVE_DELAY,] }] }\n ]; };\n /** @nocollapse */ Live.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function Live_Factory() { return new Live(\u0275\u0275inject(DOCUMENT), \u0275\u0275inject(ARIA_LIVE_DELAY)); }, token: Live, providedIn: \"root\" });\n return Live;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the typeaheads used in the application.\n */\nvar NgbTypeaheadConfig = /** @class */ (function () {\n function NgbTypeaheadConfig() {\n this.editable = true;\n this.focusFirst = true;\n this.showHint = false;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n }\n NgbTypeaheadConfig.decorators = [\n { type: Injectable, args: [{ providedIn: 'root' },] }\n ];\n /** @nocollapse */ NgbTypeaheadConfig.ngInjectableDef = \u0275\u0275defineInjectable({ factory: function NgbTypeaheadConfig_Factory() { return new NgbTypeaheadConfig(); }, token: NgbTypeaheadConfig, providedIn: \"root\" });\n return NgbTypeaheadConfig;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_TYPEAHEAD_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef((/**\n * @return {?}\n */\n function () { return NgbTypeahead; })),\n multi: true\n};\n/** @type {?} */\nvar nextWindowId = 0;\n/**\n * A directive providing a simple way of creating powerful typeaheads from any text input.\n */\nvar NgbTypeahead = /** @class */ (function () {\n function NgbTypeahead(_elementRef, viewContainerRef, _renderer, injector, componentFactoryResolver, config, ngZone, _live, _document, _ngZone, _changeDetector, applicationRef) {\n var _this = this;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._live = _live;\n this._document = _document;\n this._ngZone = _ngZone;\n this._changeDetector = _changeDetector;\n this._closed$ = new Subject();\n /**\n * The value for the `autocomplete` attribute for the `` element.\n *\n * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n *\n * \\@since 2.1.0\n */\n this.autocomplete = 'off';\n /**\n * The preferred placement of the typeahead.\n *\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n * `\"right-bottom\"`\n *\n * Accepts an array of strings or a string with space separated possible values.\n *\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = 'bottom-left';\n /**\n * An event emitted right before an item is selected from the result list.\n *\n * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n */\n this.selectItem = new EventEmitter();\n this.popupId = \"ngb-typeahead-\" + nextWindowId++;\n this._onTouched = (/**\n * @return {?}\n */\n function () { });\n this._onChange = (/**\n * @param {?} _\n * @return {?}\n */\n function (_) { });\n this.container = config.container;\n this.editable = config.editable;\n this.focusFirst = config.focusFirst;\n this.showHint = config.showHint;\n this.placement = config.placement;\n this._valueChanges = fromEvent(_elementRef.nativeElement, 'input')\n .pipe(map((/**\n * @param {?} $event\n * @return {?}\n */\n function ($event) { return ((/** @type {?} */ ($event.target))).value; })));\n this._resubscribeTypeahead = new BehaviorSubject(null);\n this._popupService = new PopupService(NgbTypeaheadWindow, injector, viewContainerRef, _renderer, componentFactoryResolver, applicationRef);\n this._zoneSubscription = ngZone.onStable.subscribe((/**\n * @return {?}\n */\n function () {\n if (_this.isPopupOpen()) {\n positionElements(_this._elementRef.nativeElement, _this._windowRef.location.nativeElement, _this.placement, _this.container === 'body');\n }\n }));\n }\n /**\n * @return {?}\n */\n NgbTypeahead.prototype.ngOnInit = /**\n * @return {?}\n */\n function () {\n var _this = this;\n /** @type {?} */\n var inputValues$ = this._valueChanges.pipe(tap((/**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n _this._inputValueBackup = _this.showHint ? value : null;\n _this._onChange(_this.editable ? value : undefined);\n })));\n /** @type {?} */\n var results$ = inputValues$.pipe(this.ngbTypeahead);\n /** @type {?} */\n var userInput$ = this._resubscribeTypeahead.pipe(switchMap((/**\n * @return {?}\n */\n function () { return results$; })));\n this._subscription = this._subscribeToUserInput(userInput$);\n };\n /**\n * @return {?}\n */\n NgbTypeahead.prototype.ngOnDestroy = /**\n * @return {?}\n */\n function () {\n this._closePopup();\n this._unsubscribeFromUserInput();\n this._zoneSubscription.unsubscribe();\n };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbTypeahead.prototype.registerOnChange = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._onChange = fn; };\n /**\n * @param {?} fn\n * @return {?}\n */\n NgbTypeahead.prototype.registerOnTouched = /**\n * @param {?} fn\n * @return {?}\n */\n function (fn) { this._onTouched = fn; };\n /**\n * @param {?} value\n * @return {?}\n */\n NgbTypeahead.prototype.writeValue = /**\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._writeInputValue(this._formatItemForInput(value));\n if (this.showHint) {\n this._inputValueBackup = value;\n }\n };\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n NgbTypeahead.prototype.setDisabledState = /**\n * @param {?} isDisabled\n * @return {?}\n */\n function (isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n };\n /**\n * Dismisses typeahead popup window\n */\n /**\n * Dismisses typeahead popup window\n * @return {?}\n */\n NgbTypeahead.prototype.dismissPopup = /**\n * Dismisses typeahead popup window\n * @return {?}\n */\n function () {\n if (this.isPopupOpen()) {\n this._resubscribeTypeahead.next(null);\n this._closePopup();\n if (this.showHint && this._inputValueBackup !== null) {\n this._writeInputValue(this._inputValueBackup);\n }\n this._changeDetector.markForCheck();\n }\n };\n /**\n * Returns true if the typeahead popup window is displayed\n */\n /**\n * Returns true if the typeahead popup window is displayed\n * @return {?}\n */\n NgbTypeahead.prototype.isPopupOpen = /**\n * Returns true if the typeahead popup window is displayed\n * @return {?}\n */\n function () { return this._windowRef != null; };\n /**\n * @return {?}\n */\n NgbTypeahead.prototype.handleBlur = /**\n * @return {?}\n */\n function () {\n this._resubscribeTypeahead.next(null);\n this._onTouched();\n };\n /**\n * @param {?} event\n * @return {?}\n */\n NgbTypeahead.prototype.handleKeyDown = /**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n if (!this.isPopupOpen()) {\n return;\n }\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.ArrowDown:\n event.preventDefault();\n this._windowRef.instance.next();\n this._showHint();\n break;\n case Key.ArrowUp:\n event.preventDefault();\n this._windowRef.instance.prev();\n this._showHint();\n break;\n case Key.Enter:\n case Key.Tab:\n /** @type {?} */\n var result = this._windowRef.instance.getActive();\n if (isDefined(result)) {\n event.preventDefault();\n event.stopPropagation();\n this._selectResult(result);\n }\n this._closePopup();\n break;\n }\n };\n /**\n * @private\n * @return {?}\n */\n NgbTypeahead.prototype._openPopup = /**\n * @private\n * @return {?}\n */\n function () {\n var _this = this;\n if (!this.isPopupOpen()) {\n this._inputValueBackup = this._elementRef.nativeElement.value;\n this._windowRef = this._popupService.open();\n this._windowRef.instance.id = this.popupId;\n this._windowRef.instance.selectEvent.subscribe((/**\n * @param {?} result\n * @return {?}\n */\n function (result) { return _this._selectResultClosePopup(result); }));\n this._windowRef.instance.activeChangeEvent.subscribe((/**\n * @param {?} activeId\n * @return {?}\n */\n function (activeId) { return _this.activeDescendant = activeId; }));\n if (this.container === 'body') {\n window.document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n this._changeDetector.markForCheck();\n ngbAutoClose(this._ngZone, this._document, 'outside', (/**\n * @return {?}\n */\n function () { return _this.dismissPopup(); }), this._closed$, [this._elementRef.nativeElement, this._windowRef.location.nativeElement]);\n }\n };\n /**\n * @private\n * @return {?}\n */\n NgbTypeahead.prototype._closePopup = /**\n * @private\n * @return {?}\n */\n function () {\n this._closed$.next();\n this._popupService.close();\n this._windowRef = null;\n this.activeDescendant = undefined;\n };\n /**\n * @private\n * @param {?} result\n * @return {?}\n */\n NgbTypeahead.prototype._selectResult = /**\n * @private\n * @param {?} result\n * @return {?}\n */\n function (result) {\n /** @type {?} */\n var defaultPrevented = false;\n this.selectItem.emit({ item: result, preventDefault: (/**\n * @return {?}\n */\n function () { defaultPrevented = true; }) });\n this._resubscribeTypeahead.next(null);\n if (!defaultPrevented) {\n this.writeValue(result);\n this._onChange(result);\n }\n };\n /**\n * @private\n * @param {?} result\n * @return {?}\n */\n NgbTypeahead.prototype._selectResultClosePopup = /**\n * @private\n * @param {?} result\n * @return {?}\n */\n function (result) {\n this._selectResult(result);\n this._closePopup();\n };\n /**\n * @private\n * @return {?}\n */\n NgbTypeahead.prototype._showHint = /**\n * @private\n * @return {?}\n */\n function () {\n if (this.showHint && this._windowRef.instance.hasActive() && this._inputValueBackup != null) {\n /** @type {?} */\n var userInputLowerCase = this._inputValueBackup.toLowerCase();\n /** @type {?} */\n var formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n if (userInputLowerCase === formattedVal.substr(0, this._inputValueBackup.length).toLowerCase()) {\n this._writeInputValue(this._inputValueBackup + formattedVal.substr(this._inputValueBackup.length));\n this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [this._inputValueBackup.length, formattedVal.length]);\n }\n else {\n this._writeInputValue(formattedVal);\n }\n }\n };\n /**\n * @private\n * @param {?} item\n * @return {?}\n */\n NgbTypeahead.prototype._formatItemForInput = /**\n * @private\n * @param {?} item\n * @return {?}\n */\n function (item) {\n return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n };\n /**\n * @private\n * @param {?} value\n * @return {?}\n */\n NgbTypeahead.prototype._writeInputValue = /**\n * @private\n * @param {?} value\n * @return {?}\n */\n function (value) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\n };\n /**\n * @private\n * @param {?} userInput$\n * @return {?}\n */\n NgbTypeahead.prototype._subscribeToUserInput = /**\n * @private\n * @param {?} userInput$\n * @return {?}\n */\n function (userInput$) {\n var _this = this;\n return userInput$.subscribe((/**\n * @param {?} results\n * @return {?}\n */\n function (results) {\n if (!results || results.length === 0) {\n _this._closePopup();\n }\n else {\n _this._openPopup();\n _this._windowRef.instance.focusFirst = _this.focusFirst;\n _this._windowRef.instance.results = results;\n _this._windowRef.instance.term = _this._elementRef.nativeElement.value;\n if (_this.resultFormatter) {\n _this._windowRef.instance.formatter = _this.resultFormatter;\n }\n if (_this.resultTemplate) {\n _this._windowRef.instance.resultTemplate = _this.resultTemplate;\n }\n _this._windowRef.instance.resetActive();\n // The observable stream we are subscribing to might have async steps\n // and if a component containing typeahead is using the OnPush strategy\n // the change detection turn wouldn't be invoked automatically.\n _this._windowRef.changeDetectorRef.detectChanges();\n _this._showHint();\n }\n // live announcer\n /** @type {?} */\n var count = results ? results.length : 0;\n _this._live.say(count === 0 ? 'No results available' : count + \" result\" + (count === 1 ? '' : 's') + \" available\");\n }));\n };\n /**\n * @private\n * @return {?}\n */\n NgbTypeahead.prototype._unsubscribeFromUserInput = /**\n * @private\n * @return {?}\n */\n function () {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n this._subscription = null;\n };\n NgbTypeahead.decorators = [\n { type: Directive, args: [{\n selector: 'input[ngbTypeahead]',\n exportAs: 'ngbTypeahead',\n host: {\n '(blur)': 'handleBlur()',\n '[class.open]': 'isPopupOpen()',\n '(keydown)': 'handleKeyDown($event)',\n '[autocomplete]': 'autocomplete',\n 'autocapitalize': 'off',\n 'autocorrect': 'off',\n 'role': 'combobox',\n 'aria-multiline': 'false',\n '[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n '[attr.aria-expanded]': 'isPopupOpen()'\n },\n providers: [NGB_TYPEAHEAD_VALUE_ACCESSOR]\n },] }\n ];\n /** @nocollapse */\n NgbTypeahead.ctorParameters = function () { return [\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: NgbTypeaheadConfig },\n { type: NgZone },\n { type: Live },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n ]; };\n NgbTypeahead.propDecorators = {\n autocomplete: [{ type: Input }],\n container: [{ type: Input }],\n editable: [{ type: Input }],\n focusFirst: [{ type: Input }],\n inputFormatter: [{ type: Input }],\n ngbTypeahead: [{ type: Input }],\n resultFormatter: [{ type: Input }],\n resultTemplate: [{ type: Input }],\n showHint: [{ type: Input }],\n placement: [{ type: Input }],\n selectItem: [{ type: Output }]\n };\n return NgbTypeahead;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nvar NgbTypeaheadModule = /** @class */ (function () {\n function NgbTypeaheadModule() {\n }\n NgbTypeaheadModule.decorators = [\n { type: NgModule, args: [{\n declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow],\n exports: [NgbTypeahead, NgbHighlight],\n imports: [CommonModule],\n entryComponents: [NgbTypeaheadWindow]\n },] }\n ];\n return NgbTypeaheadModule;\n}());\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nvar NGB_MODULES = [\n NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule,\n NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule,\n NgbRatingModule, NgbTabsetModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule\n];\nvar NgbModule = /** @class */ (function () {\n function NgbModule() {\n }\n NgbModule.decorators = [\n { type: NgModule, args: [{ imports: NGB_MODULES, exports: NGB_MODULES },] }\n ];\n return NgbModule;\n}());\n\nexport { ModalDismissReasons, NgbAccordion, NgbAccordionConfig, NgbAccordionModule, NgbActiveModal, NgbAlert, NgbAlertConfig, NgbAlertModule, NgbButtonLabel, NgbButtonsModule, NgbCalendar, NgbCalendarGregorian, NgbCalendarHebrew, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarPersian, NgbCarousel, NgbCarouselConfig, NgbCarouselModule, NgbCheckBox, NgbCollapse, NgbCollapseModule, NgbDate, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDateParserFormatter, NgbDatepicker, NgbDatepickerConfig, NgbDatepickerContent, NgbDatepickerI18n, NgbDatepickerI18nHebrew, NgbDatepickerKeyboardService, NgbDatepickerModule, NgbDatepickerMonth, NgbDropdown, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownModule, NgbDropdownToggle, NgbHighlight, NgbInputDatepicker, NgbInputDatepickerConfig, NgbModal, NgbModalConfig, NgbModalModule, NgbModalRef, NgbModule, NgbNav, NgbNavConfig, NgbNavContent, NgbNavItem, NgbNavLink, NgbNavModule, NgbNavOutlet, NgbNavbar, NgbPagination, NgbPaginationConfig, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationModule, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPanel, NgbPanelContent, NgbPanelHeader, NgbPanelTitle, NgbPanelToggle, NgbPopover, NgbPopoverConfig, NgbPopoverModule, NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule, NgbRadio, NgbRadioGroup, NgbRating, NgbRatingConfig, NgbRatingModule, NgbSlide, NgbSlideEventDirection, NgbSlideEventSource, NgbTab, NgbTabContent, NgbTabTitle, NgbTabset, NgbTabsetConfig, NgbTabsetModule, NgbTimeAdapter, NgbTimepicker, NgbTimepickerConfig, NgbTimepickerI18n, NgbTimepickerModule, NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule, NgbTooltip, NgbTooltipConfig, NgbTooltipModule, NgbTypeahead, NgbTypeaheadConfig, NgbTypeaheadModule, NGB_CAROUSEL_DIRECTIVES as \u0275a, NGB_DATEPICKER_VALUE_ACCESSOR as \u0275b, Live as \u0275ba, NgbCalendarHijri as \u0275bb, ContentRef as \u0275bc, NGB_DATEPICKER_CALENDAR_FACTORY as \u0275c, NgbDatepickerDayView as \u0275d, NgbDatepickerNavigation as \u0275e, NgbDatepickerNavigationSelect as \u0275f, NGB_DATEPICKER_18N_FACTORY as \u0275g, NgbDatepickerI18nDefault as \u0275h, NGB_DATEPICKER_DATE_ADAPTER_FACTORY as \u0275i, NgbDateStructAdapter as \u0275j, NGB_DATEPICKER_PARSER_FORMATTER_FACTORY as \u0275k, NgbDateISOParserFormatter as \u0275l, NgbPopoverWindow as \u0275m, NGB_DATEPICKER_TIME_ADAPTER_FACTORY as \u0275n, NgbTimeStructAdapter as \u0275o, NGB_TIMEPICKER_I18N_FACTORY as \u0275p, NgbTimepickerI18nDefault as \u0275q, NgbTooltipWindow as \u0275r, NgbTypeaheadWindow as \u0275s, NgbDatepickerService as \u0275t, NgbModalBackdrop as \u0275u, NgbModalWindow as \u0275v, NgbModalStack as \u0275w, ScrollBar as \u0275x, ARIA_LIVE_DELAY as \u0275y, ARIA_LIVE_DELAY_FACTORY as \u0275z };\n"], "mappings": "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", "names": [] }