{"version":3,"file":"ng-bootstrap.mjs","sources":["../../../src/util/util.ts","../../../src/util/transition/util.ts","../../../src/environment.ts","../../../src/util/transition/ngbTransition.ts","../../../src/util/transition/ngbCollapseTransition.ts","../../../src/ngb-config.ts","../../../src/accordion/accordion-config.ts","../../../src/accordion/accordion.ts","../../../src/collapse/collapse-config.ts","../../../src/collapse/collapse.ts","../../../src/accordion/accordion.directive.ts","../../../src/accordion/accordion.module.ts","../../../src/alert/alert-transition.ts","../../../src/alert/alert-config.ts","../../../src/alert/alert.ts","../../../src/alert/alert.module.ts","../../../src/carousel/carousel-transition.ts","../../../src/carousel/carousel-config.ts","../../../src/carousel/carousel.ts","../../../src/carousel/carousel.module.ts","../../../src/collapse/collapse.module.ts","../../../src/datepicker/ngb-date.ts","../../../src/datepicker/datepicker-tools.ts","../../../src/datepicker/ngb-calendar.ts","../../../src/datepicker/datepicker-i18n.ts","../../../src/datepicker/datepicker-service.ts","../../../src/datepicker/datepicker-view-model.ts","../../../src/datepicker/datepicker-day-view.ts","../../../src/datepicker/datepicker-navigation-select.ts","../../../src/datepicker/datepicker-navigation.ts","../../../src/util/key.ts","../../../src/datepicker/datepicker-keyboard-service.ts","../../../src/datepicker/datepicker-config.ts","../../../src/datepicker/adapters/ngb-date-adapter.ts","../../../src/datepicker/datepicker.ts","../../../src/util/autoclose.ts","../../../src/util/focus-trap.ts","../../../src/util/rtl.ts","../../../src/util/positioning.ts","../../../src/datepicker/datepicker-input-config.ts","../../../src/util/positioning-util.ts","../../../src/datepicker/ngb-date-parser-formatter.ts","../../../src/datepicker/datepicker-input.ts","../../../src/datepicker/hijri/ngb-calendar-hijri.ts","../../../src/datepicker/hijri/ngb-calendar-islamic-civil.ts","../../../src/datepicker/hijri/ngb-calendar-islamic-umalqura.ts","../../../src/datepicker/jalali/jalali.ts","../../../src/datepicker/jalali/ngb-calendar-persian.ts","../../../src/datepicker/hebrew/hebrew.ts","../../../src/datepicker/hebrew/ngb-calendar-hebrew.ts","../../../src/datepicker/hebrew/datepicker-i18n-hebrew.ts","../../../src/datepicker/buddhist/buddhist.ts","../../../src/datepicker/buddhist/ngb-calendar-buddhist.ts","../../../src/datepicker/adapters/ngb-date-native-adapter.ts","../../../src/datepicker/adapters/ngb-date-native-utc-adapter.ts","../../../src/datepicker/datepicker.module.ts","../../../src/dropdown/dropdown-config.ts","../../../src/dropdown/dropdown.ts","../../../src/dropdown/dropdown.module.ts","../../../src/util/popup.ts","../../../src/modal/modal-backdrop.ts","../../../src/modal/modal-ref.ts","../../../src/modal/modal-dismiss-reasons.ts","../../../src/modal/modal-window.ts","../../../src/util/scrollbar.ts","../../../src/modal/modal-stack.ts","../../../src/modal/modal-config.ts","../../../src/modal/modal.ts","../../../src/modal/modal.module.ts","../../../src/nav/nav-config.ts","../../../src/nav/nav.ts","../../../src/nav/nav-transition.ts","../../../src/nav/nav-outlet.ts","../../../src/nav/nav.module.ts","../../../src/pagination/pagination-config.ts","../../../src/pagination/pagination.ts","../../../src/pagination/pagination.module.ts","../../../src/util/triggers.ts","../../../src/popover/popover-config.ts","../../../src/popover/popover.ts","../../../src/popover/popover.module.ts","../../../src/progressbar/progressbar-config.ts","../../../src/progressbar/progressbar.ts","../../../src/progressbar/progressbar.module.ts","../../../src/rating/rating-config.ts","../../../src/rating/rating.ts","../../../src/rating/rating.module.ts","../../../src/scrollspy/scrollspy.utils.ts","../../../src/scrollspy/scrollspy-config.ts","../../../src/scrollspy/scrollspy.service.ts","../../../src/scrollspy/scrollspy.ts","../../../src/scrollspy/scrollspy.module.ts","../../../src/timepicker/ngb-time.ts","../../../src/timepicker/timepicker-config.ts","../../../src/timepicker/ngb-time-adapter.ts","../../../src/timepicker/timepicker-i18n.ts","../../../src/timepicker/timepicker.ts","../../../src/timepicker/timepicker.module.ts","../../../src/toast/toast-transition.ts","../../../src/toast/toast-config.ts","../../../src/toast/toast.ts","../../../src/toast/toast.module.ts","../../../src/tooltip/tooltip-config.ts","../../../src/tooltip/tooltip.ts","../../../src/tooltip/tooltip.module.ts","../../../src/typeahead/highlight.ts","../../../src/typeahead/typeahead-window.ts","../../../src/typeahead/typeahead-config.ts","../../../src/util/accessibility/live.ts","../../../src/typeahead/typeahead.ts","../../../src/typeahead/typeahead.module.ts","../../../src/offcanvas/offcanvas-ref.ts","../../../src/offcanvas/offcanvas-dismiss-reasons.ts","../../../src/offcanvas/offcanvas-backdrop.ts","../../../src/offcanvas/offcanvas-panel.ts","../../../src/offcanvas/offcanvas-stack.ts","../../../src/offcanvas/offcanvas-config.ts","../../../src/offcanvas/offcanvas.ts","../../../src/offcanvas/offcanvas.module.ts","../../../src/index.ts","../../../src/ng-bootstrap.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\nimport { Observable, OperatorFunction } from 'rxjs';\n\nexport function toInteger(value: any): number {\n\treturn parseInt(`${value}`, 10);\n}\n\nexport function toString(value: any): string {\n\treturn value !== undefined && value !== null ? `${value}` : '';\n}\n\nexport function getValueInRange(value: number, max: number, min = 0): number {\n\treturn Math.max(Math.min(value, max), min);\n}\n\nexport function isString(value: any): value is string {\n\treturn typeof value === 'string';\n}\n\nexport function isNumber(value: any): value is number {\n\treturn !isNaN(toInteger(value));\n}\n\nexport function isInteger(value: any): value is number {\n\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n\nexport function isDefined(value: any): boolean {\n\treturn value !== undefined && value !== null;\n}\n\nexport function isPromise(v: any): v is Promise {\n\treturn v && v.then;\n}\n\nexport function padNumber(value: number) {\n\tif (isNumber(value)) {\n\t\treturn `0${value}`.slice(-2);\n\t} else {\n\t\treturn '';\n\t}\n}\n\nexport function regExpEscape(text) {\n\treturn text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nexport function closest(element: HTMLElement, selector?: string): HTMLElement | null {\n\tif (!selector) {\n\t\treturn null;\n\t}\n\n\t/*\n\t * In certain browsers (e.g. Edge 44.18362.449.0) HTMLDocument does\n\t * not support `Element.prototype.closest`. To emulate the correct behaviour\n\t * we return null when the method is missing.\n\t *\n\t * Note that in evergreen browsers `closest(document.documentElement, 'html')`\n\t * will return the document element whilst in Edge null will be returned. This\n\t * compromise was deemed good enough.\n\t */\n\tif (typeof element.closest === 'undefined') {\n\t\treturn null;\n\t}\n\n\treturn element.closest(selector);\n}\n\n/**\n * Force a browser reflow\n * @param element element where to apply the reflow\n */\nexport function reflow(element: HTMLElement) {\n\treturn (element || document.body).getBoundingClientRect();\n}\n\n/**\n * Creates an observable where all callbacks are executed inside a given zone\n *\n * @param zone\n */\nexport function runInZone(zone: NgZone): OperatorFunction {\n\treturn (source) => {\n\t\treturn new Observable((observer) => {\n\t\t\tconst next = (value: T) => zone.run(() => observer.next(value));\n\t\t\tconst error = (e: any) => zone.run(() => observer.error(e));\n\t\t\tconst complete = () => zone.run(() => observer.complete());\n\t\t\treturn source.subscribe({ next, error, complete });\n\t\t});\n\t};\n}\n\nexport function removeAccents(str: string): string {\n\treturn str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n\n/**\n * Returns the active element in the given root.\n * If the active element is inside a shadow root, it is searched recursively.\n */\nexport function getActiveElement(root: Document | ShadowRoot = document): Element | null {\n\tconst activeEl = root?.activeElement;\n\n\tif (!activeEl) {\n\t\treturn null;\n\t}\n\n\treturn activeEl.shadowRoot ? getActiveElement(activeEl.shadowRoot) : activeEl;\n}\n","export function getTransitionDurationMs(element: HTMLElement) {\n\tconst { transitionDelay, transitionDuration } = window.getComputedStyle(element);\n\tconst transitionDelaySec = parseFloat(transitionDelay);\n\tconst transitionDurationSec = parseFloat(transitionDuration);\n\n\treturn (transitionDelaySec + transitionDurationSec) * 1000;\n}\n","export const environment = {\n\tanimation: true,\n\ttransitionTimerDelayMs: 5,\n};\n","import { NgZone } from '@angular/core';\nimport { EMPTY, fromEvent, Observable, of, race, Subject, timer } from 'rxjs';\nimport { endWith, filter, takeUntil } from 'rxjs/operators';\nimport { getTransitionDurationMs } from './util';\nimport { environment } from '../../environment';\nimport { runInZone } from '../util';\n\nexport type NgbTransitionStartFn = (\n\telement: HTMLElement,\n\tanimation: boolean,\n\tcontext: T,\n) => NgbTransitionEndFn | void;\nexport type NgbTransitionEndFn = () => void;\n\nexport interface NgbTransitionOptions {\n\tanimation: boolean;\n\trunningTransition: 'continue' | 'stop';\n\tcontext?: T;\n}\n\nexport interface NgbTransitionCtx {\n\ttransition$: Subject;\n\tcomplete: () => void;\n\tcontext: T;\n}\n\nconst noopFn: NgbTransitionEndFn = () => {};\n\nconst { transitionTimerDelayMs } = environment;\nconst runningTransitions = new Map>();\n\nexport const ngbRunTransition = (\n\tzone: NgZone,\n\telement: HTMLElement,\n\tstartFn: NgbTransitionStartFn,\n\toptions: NgbTransitionOptions,\n): Observable => {\n\t// Getting initial context from options\n\tlet context = options.context || {};\n\n\t// Checking if there are already running transitions on the given element.\n\tconst running = runningTransitions.get(element);\n\tif (running) {\n\t\tswitch (options.runningTransition) {\n\t\t\t// If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\n\t\t\t// We're not emitting any values, but simply completing the observable (EMPTY).\n\t\t\tcase 'continue':\n\t\t\t\treturn EMPTY;\n\t\t\t// If there is one running and we want for it to 'stop', we have to complete the running one.\n\t\t\t// We're simply completing the running one and not emitting any values and merging newly provided context\n\t\t\t// with the one coming from currently running transition.\n\t\t\tcase 'stop':\n\t\t\t\tzone.run(() => running.transition$.complete());\n\t\t\t\tcontext = Object.assign(running.context, context);\n\t\t\t\trunningTransitions.delete(element);\n\t\t}\n\t}\n\n\t// Running the start function\n\tconst endFn = startFn(element, options.animation, context) || noopFn;\n\n\t// If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\n\t// If animations are disabled, we have to emit a value and complete the observable\n\t// In this case we have to call the end function, but can finish immediately by emitting a value,\n\t// completing the observable and executing end functions synchronously.\n\tif (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\n\t\tzone.run(() => endFn());\n\t\treturn of(undefined).pipe(runInZone(zone));\n\t}\n\n\t// Starting a new transition\n\tconst transition$ = new Subject();\n\tconst finishTransition$ = new Subject();\n\tconst stop$ = transition$.pipe(endWith(true));\n\trunningTransitions.set(element, {\n\t\ttransition$,\n\t\tcomplete: () => {\n\t\t\tfinishTransition$.next();\n\t\t\tfinishTransition$.complete();\n\t\t},\n\t\tcontext,\n\t});\n\n\tconst transitionDurationMs = getTransitionDurationMs(element);\n\n\t// 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\n\t// because 'transitionend' event might not be fired in some browsers, if the transitioning\n\t// element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\n\t// guarantees, that we'll release the DOM element and complete 'ngbRunTransition'.\n\t// 2. We need to filter transition end events, because they might bubble from shorter transitions\n\t// on inner DOM elements. We're only interested in the transition on the 'element' itself.\n\tzone.runOutsideAngular(() => {\n\t\tconst transitionEnd$ = fromEvent(element, 'transitionend').pipe(\n\t\t\ttakeUntil(stop$),\n\t\t\tfilter(({ target }) => target === element),\n\t\t);\n\t\tconst timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\n\n\t\trace(timer$, transitionEnd$, finishTransition$)\n\t\t\t.pipe(takeUntil(stop$))\n\t\t\t.subscribe(() => {\n\t\t\t\trunningTransitions.delete(element);\n\t\t\t\tzone.run(() => {\n\t\t\t\t\tendFn();\n\t\t\t\t\ttransition$.next();\n\t\t\t\t\ttransition$.complete();\n\t\t\t\t});\n\t\t\t});\n\t});\n\n\treturn transition$.asObservable();\n};\n\nexport const ngbCompleteTransition = (element: HTMLElement) => {\n\trunningTransitions.get(element)?.complete();\n};\n","import { NgbTransitionStartFn } from './ngbTransition';\nimport { reflow } from '../util';\n\nexport interface NgbCollapseCtx {\n\tdirection: 'show' | 'hide';\n\tdimension: 'width' | 'height';\n\tmaxSize?: string;\n}\n\nfunction measureCollapsingElementDimensionPx(element: HTMLElement, dimension: 'width' | 'height'): string {\n\t// SSR fix for without injecting the PlatformId\n\tif (typeof navigator === 'undefined') {\n\t\treturn '0px';\n\t}\n\n\tconst { classList } = element;\n\tconst hasShownClass = classList.contains('show');\n\tif (!hasShownClass) {\n\t\tclassList.add('show');\n\t}\n\n\telement.style[dimension] = '';\n\tconst dimensionSize = element.getBoundingClientRect()[dimension] + 'px';\n\n\tif (!hasShownClass) {\n\t\tclassList.remove('show');\n\t}\n\n\treturn dimensionSize;\n}\n\nexport const ngbCollapsingTransition: NgbTransitionStartFn = (\n\telement: HTMLElement,\n\tanimation: boolean,\n\tcontext: NgbCollapseCtx,\n) => {\n\tlet { direction, maxSize, dimension } = context;\n\tconst { classList } = element;\n\n\tfunction setInitialClasses() {\n\t\tclassList.add('collapse');\n\t\tif (direction === 'show') {\n\t\t\tclassList.add('show');\n\t\t} else {\n\t\t\tclassList.remove('show');\n\t\t}\n\t}\n\n\t// without animations we just need to set initial classes\n\tif (!animation) {\n\t\tsetInitialClasses();\n\t\treturn;\n\t}\n\n\t// No maxHeight -> running the transition for the first time\n\tif (!maxSize) {\n\t\tmaxSize = measureCollapsingElementDimensionPx(element, dimension);\n\t\tcontext.maxSize = maxSize;\n\n\t\t// Fix the height before starting the animation\n\t\telement.style[dimension] = direction !== 'show' ? maxSize : '0px';\n\n\t\tclassList.remove('collapse');\n\t\tclassList.remove('collapsing');\n\t\tclassList.remove('show');\n\n\t\treflow(element);\n\n\t\t// Start the animation\n\t\tclassList.add('collapsing');\n\t}\n\n\t// Start or revert the animation\n\telement.style[dimension] = direction === 'show' ? maxSize : '0px';\n\n\treturn () => {\n\t\tsetInitialClasses();\n\t\tclassList.remove('collapsing');\n\t\telement.style[dimension] = '';\n\t};\n};\n","import { Injectable } from '@angular/core';\nimport { environment } from './environment';\n\n/**\n * Global ng-bootstrap config\n *\n * @since 8.0.0\n */\n@Injectable({ providedIn: 'root' })\nexport class NgbConfig {\n\tanimation = environment.animation;\n}\n","import { Injectable } from '@angular/core';\nimport { NgbConfig } from '../ngb-config';\n\n/**\n * A configuration service for the [`NgbAccordionDirective`](#/components/accordion/api#NgbAccordionDirective).\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbAccordionConfig {\n\tcloseOthers = false;\n\tdestroyOnHide = true;\n\n\t/**\n\t * @deprecated 14.1.0\n\t */\n\ttype: string;\n\n\tprivate _animation: boolean;\n\n\tconstructor(private _ngbConfig: NgbConfig) {}\n\n\tget animation(): boolean {\n\t\treturn this._animation === undefined ? this._ngbConfig.animation : this._animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","/* eslint-disable deprecation/deprecation */\nimport {\n\tAfterContentChecked,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChildren,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHost,\n\tInput,\n\tOptional,\n\tOutput,\n\tQueryList,\n\tTemplateRef,\n\tViewEncapsulation,\n\tNgZone,\n\tOnInit,\n\tOnDestroy,\n\tInject,\n\tforwardRef,\n} from '@angular/core';\n\nimport { isString } from '../util/util';\n\nimport { NgbAccordionConfig } from './accordion-config';\nimport { ngbRunTransition } from '../util/transition/ngbTransition';\nimport { ngbCollapsingTransition } from '../util/transition/ngbCollapseTransition';\nimport { take } from 'rxjs/operators';\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\n\nlet nextId = 0;\n\n/**\n * The context for the [NgbPanelHeader](#/components/accordion/api#NgbPanelHeader) template\n *\n * @since 4.1.0\n * @deprecated 14.1.0\n */\nexport interface NgbPanelHeaderContext {\n\t/**\n\t * `True` if current panel is opened\n\t */\n\topened: boolean;\n}\n\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 * @deprecated 14.1.0\n */\n@Directive({ selector: 'ng-template[ngbPanelHeader]', standalone: true })\nexport class NgbPanelHeader {\n\tconstructor(public templateRef: TemplateRef) {}\n}\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 *\n * @deprecated 14.1.0\n */\n@Directive({ selector: 'ng-template[ngbPanelTitle]', standalone: true })\nexport class NgbPanelTitle {\n\tconstructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A directive that wraps the accordion panel content.\n *\n * @deprecated 14.1.0\n */\n@Directive({ selector: 'ng-template[ngbPanelContent]', standalone: true })\nexport class NgbPanelContent {\n\tconstructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n *\n * @deprecated 14.1.0\n */\n@Directive({ selector: 'ngb-panel', standalone: true })\nexport class NgbPanel implements AfterContentChecked {\n\t/**\n\t * If `true`, the panel is disabled an can't be toggled.\n\t */\n\t@Input() disabled = false;\n\n\t/**\n\t * An optional id for the panel that must be unique on the page.\n\t *\n\t * If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n\t */\n\t@Input() id = `ngb-panel-${nextId++}`;\n\n\tisOpen = false;\n\n\t/* A flag to specified that the transition panel classes have been initialized */\n\tinitClassDone = false;\n\n\t/* A flag to specified if the panel is currently being animated, to ensure its presence in the dom */\n\ttransitionRunning = false;\n\n\t/**\n\t * The panel title.\n\t *\n\t * You can alternatively use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to set panel title.\n\t */\n\t@Input() title: string;\n\n\t/**\n\t * Type of the current panel.\n\t *\n\t * Bootstrap provides styles for the following types: `'success'`, `'info'`, `'warning'`, `'danger'`, `'primary'`,\n\t * `'secondary'`, `'light'` and `'dark'`.\n\t */\n\t@Input() type: string;\n\n\t/**\n\t * An optional class applied to the accordion card element that wraps both panel title and content.\n\t *\n\t * @since 5.3.0\n\t */\n\t@Input() cardClass: string;\n\n\t/**\n\t * An event emitted when the panel is shown, after the transition. It has no payload.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() shown = new EventEmitter();\n\n\t/**\n\t * An event emitted when the panel is hidden, after the transition. It has no payload.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() hidden = new EventEmitter();\n\n\ttitleTpl?: NgbPanelTitle;\n\theaderTpl?: NgbPanelHeader;\n\tcontentTpl?: NgbPanelContent;\n\tpanelDiv: HTMLElement | null;\n\n\t@ContentChildren(NgbPanelTitle, { descendants: false }) titleTpls: QueryList;\n\t@ContentChildren(NgbPanelHeader, { descendants: false }) headerTpls: QueryList;\n\t@ContentChildren(NgbPanelContent, { descendants: false }) contentTpls: QueryList;\n\n\tngAfterContentChecked() {\n\t\t// We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n\t\t// only @ContentChildren allows us to specify the {descendants: false} option.\n\t\t// Without {descendants: false} we are hitting bugs described in:\n\t\t// https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n\t\tthis.titleTpl = this.titleTpls.first;\n\t\tthis.headerTpl = this.headerTpls.first;\n\t\tthis.contentTpl = this.contentTpls.first;\n\t}\n}\n\n/**\n * An event emitted right before toggling an accordion panel.\n *\n * @deprecated 14.1.0\n */\nexport interface NgbPanelChangeEvent {\n\t/**\n\t * The id of the accordion panel being toggled.\n\t */\n\tpanelId: string;\n\n\t/**\n\t * The next state of the panel.\n\t *\n\t * `true` if it will be opened, `false` if closed.\n\t */\n\tnextState: boolean;\n\n\t/**\n\t * Calling this function will prevent panel toggling.\n\t */\n\tpreventDefault: () => void;\n}\n\n@Directive({ selector: '[ngbRef]', standalone: true })\nexport class NgbRefDirective implements OnInit, OnDestroy {\n\t@Output() ngbRef = new EventEmitter();\n\tconstructor(private _El: ElementRef) {}\n\n\tngOnInit() {\n\t\tthis.ngbRef.emit(this._El.nativeElement);\n\t}\n\n\tngOnDestroy() {\n\t\tthis.ngbRef.emit(null);\n\t}\n}\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 * @deprecated 14.1.0\n */\n@Directive({\n\tselector: 'button[ngbPanelToggle]',\n\tstandalone: true,\n\thost: {\n\t\ttype: 'button',\n\t\t'[disabled]': 'panel.disabled',\n\t\t'[class.collapsed]': '!panel.isOpen',\n\t\t'[attr.aria-expanded]': 'panel.isOpen',\n\t\t'[attr.aria-controls]': 'panel.id',\n\t\t'(click)': 'accordion.toggle(panel.id)',\n\t},\n})\nexport class NgbPanelToggle {\n\tstatic ngAcceptInputType_ngbPanelToggle: NgbPanel | '';\n\n\t@Input()\n\tset ngbPanelToggle(panel: NgbPanel) {\n\t\tif (panel) {\n\t\t\tthis.panel = panel;\n\t\t}\n\t}\n\n\tconstructor(\n\t\t@Inject(forwardRef(() => NgbAccordion)) public accordion: NgbAccordion,\n\t\t@Optional() @Host() public panel: NgbPanel,\n\t) {}\n}\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 *\n * @deprecated 14.1.0\n */\n@Component({\n\tselector: 'ngb-accordion',\n\texportAs: 'ngbAccordion',\n\tstandalone: true,\n\timports: [NgFor, NgTemplateOutlet, NgbPanelToggle, NgbRefDirective, NgbPanelHeader, NgIf],\n\tencapsulation: ViewEncapsulation.None,\n\thost: { class: 'accordion', role: 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t\n\t\t
\n\t`,\n})\nexport class NgbAccordion implements AfterContentChecked {\n\t@ContentChildren(NgbPanel) panels: QueryList;\n\n\t/**\n\t * If `true`, accordion will be animated.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Input() animation;\n\n\t/**\n\t * An array or comma separated strings of panel ids that should be opened **initially**.\n\t *\n\t * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n\t * the `(panelChange)` event.\n\t */\n\t@Input() activeIds: string | readonly string[] = [];\n\n\t/**\n\t * If `true`, only one panel could be opened at a time.\n\t *\n\t * Opening a new panel will close others.\n\t */\n\t@Input('closeOthers') closeOtherPanels: boolean;\n\n\t/**\n\t * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n\t */\n\t@Input() destroyOnHide = true;\n\n\t/**\n\t * Type of panels.\n\t *\n\t * Bootstrap provides styles for the following types: `'success'`, `'info'`, `'warning'`, `'danger'`, `'primary'`,\n\t * `'secondary'`, `'light'` and `'dark'`.\n\t */\n\t@Input() type: string;\n\n\t/**\n\t * Event emitted right before the panel toggle happens.\n\t *\n\t * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n\t */\n\t@Output() panelChange = new EventEmitter();\n\n\t/**\n\t * An event emitted when the expanding animation is finished on the panel. The payload is the panel id.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() shown = new EventEmitter();\n\n\t/**\n\t * An event emitted when the collapsing animation is finished on the panel, and before the panel element is removed.\n\t * The payload is the panel id.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() hidden = new EventEmitter();\n\n\tconstructor(config: NgbAccordionConfig, private _ngZone: NgZone, private _changeDetector: ChangeDetectorRef) {\n\t\tthis.animation = config.animation;\n\t\tthis.type = config.type;\n\t\tthis.closeOtherPanels = config.closeOthers;\n\t}\n\n\t/**\n\t * Checks if a panel with a given id is expanded.\n\t */\n\tisExpanded(panelId: string): boolean {\n\t\treturn this.activeIds.indexOf(panelId) > -1;\n\t}\n\n\t/**\n\t * Expands a panel with a given id.\n\t *\n\t * Has no effect if the panel is already expanded or disabled.\n\t */\n\texpand(panelId: string): void {\n\t\tthis._changeOpenState(this._findPanelById(panelId), true);\n\t}\n\n\t/**\n\t * Expands all panels, if `[closeOthers]` is `false`.\n\t *\n\t * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n\t */\n\texpandAll(): void {\n\t\tif (this.closeOtherPanels) {\n\t\t\tif (this.activeIds.length === 0 && this.panels.length) {\n\t\t\t\tthis._changeOpenState(this.panels.first, true);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.panels.forEach((panel) => this._changeOpenState(panel, true));\n\t\t}\n\t}\n\n\t/**\n\t * Collapses a panel with the given id.\n\t *\n\t * Has no effect if the panel is already collapsed or disabled.\n\t */\n\tcollapse(panelId: string) {\n\t\tthis._changeOpenState(this._findPanelById(panelId), false);\n\t}\n\n\t/**\n\t * Collapses all opened panels.\n\t */\n\tcollapseAll() {\n\t\tthis.panels.forEach((panel) => {\n\t\t\tthis._changeOpenState(panel, false);\n\t\t});\n\t}\n\n\t/**\n\t * Toggles a panel with the given id.\n\t *\n\t * Has no effect if the panel is disabled.\n\t */\n\ttoggle(panelId: string) {\n\t\tconst panel = this._findPanelById(panelId);\n\t\tif (panel) {\n\t\t\tthis._changeOpenState(panel, !panel.isOpen);\n\t\t}\n\t}\n\n\tngAfterContentChecked() {\n\t\t// active id updates\n\t\tif (isString(this.activeIds)) {\n\t\t\tthis.activeIds = this.activeIds.split(/\\s*,\\s*/);\n\t\t}\n\n\t\t// update panels open states\n\t\tthis.panels.forEach((panel) => {\n\t\t\tpanel.isOpen = !panel.disabled && this.activeIds.indexOf(panel.id) > -1;\n\t\t});\n\n\t\t// closeOthers updates\n\t\tif (this.activeIds.length > 1 && this.closeOtherPanels) {\n\t\t\tthis._closeOthers(this.activeIds[0], false);\n\t\t\tthis._updateActiveIds();\n\t\t}\n\n\t\t// Setup the initial classes here\n\t\tthis._ngZone.onStable.pipe(take(1)).subscribe(() => {\n\t\t\tthis.panels.forEach((panel) => {\n\t\t\t\tconst panelElement = panel.panelDiv;\n\t\t\t\tif (panelElement) {\n\t\t\t\t\tif (!panel.initClassDone) {\n\t\t\t\t\t\tpanel.initClassDone = true;\n\t\t\t\t\t\tngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\n\t\t\t\t\t\t\tanimation: false,\n\t\t\t\t\t\t\trunningTransition: 'continue',\n\t\t\t\t\t\t\tcontext: { direction: panel.isOpen ? 'show' : 'hide', dimension: 'height' },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Classes must be initialized next time it will be in the dom\n\t\t\t\t\tpanel.initClassDone = false;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate _changeOpenState(panel: NgbPanel | null, nextState: boolean) {\n\t\tif (panel != null && !panel.disabled && panel.isOpen !== nextState) {\n\t\t\tlet defaultPrevented = false;\n\n\t\t\tthis.panelChange.emit({\n\t\t\t\tpanelId: panel.id,\n\t\t\t\tnextState: nextState,\n\t\t\t\tpreventDefault: () => {\n\t\t\t\t\tdefaultPrevented = true;\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tif (!defaultPrevented) {\n\t\t\t\tpanel.isOpen = nextState;\n\t\t\t\tpanel.transitionRunning = true;\n\n\t\t\t\tif (nextState && this.closeOtherPanels) {\n\t\t\t\t\tthis._closeOthers(panel.id);\n\t\t\t\t}\n\t\t\t\tthis._updateActiveIds();\n\t\t\t\tthis._runTransitions(this.animation);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _closeOthers(panelId: string, enableTransition = true) {\n\t\tthis.panels.forEach((panel) => {\n\t\t\tif (panel.id !== panelId && panel.isOpen) {\n\t\t\t\tpanel.isOpen = false;\n\t\t\t\tpanel.transitionRunning = enableTransition;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _findPanelById(panelId: string): NgbPanel | null {\n\t\treturn this.panels.find((p) => p.id === panelId) || null;\n\t}\n\n\tprivate _updateActiveIds() {\n\t\tthis.activeIds = this.panels.filter((panel) => panel.isOpen && !panel.disabled).map((panel) => panel.id);\n\t}\n\n\tprivate _runTransitions(animation: boolean) {\n\t\t// detectChanges is performed to ensure that all panels are in the dom (via transitionRunning = true)\n\t\t// before starting the animation\n\t\tthis._changeDetector.detectChanges();\n\n\t\tthis.panels.forEach((panel) => {\n\t\t\t// When panel.transitionRunning is true, the transition needs to be started OR reversed,\n\t\t\t// The direction (show or hide) is choosen by each panel.isOpen state\n\t\t\tif (panel.transitionRunning) {\n\t\t\t\tconst panelElement = panel.panelDiv;\n\t\t\t\tngbRunTransition(this._ngZone, panelElement!, ngbCollapsingTransition, {\n\t\t\t\t\tanimation,\n\t\t\t\t\trunningTransition: 'stop',\n\t\t\t\t\tcontext: { direction: panel.isOpen ? 'show' : 'hide', dimension: 'height' },\n\t\t\t\t}).subscribe(() => {\n\t\t\t\t\tpanel.transitionRunning = false;\n\t\t\t\t\tconst { id } = panel;\n\t\t\t\t\tif (panel.isOpen) {\n\t\t\t\t\t\tpanel.shown.emit();\n\t\t\t\t\t\tthis.shown.emit(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpanel.hidden.emit();\n\t\t\t\t\t\tthis.hidden.emit(id);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { NgbConfig } from '../ngb-config';\n\n/**\n * A configuration service for the [NgbCollapse](#/components/collapse/api#NgbCollapse) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all collapses used in the application.\n */\n@Injectable({ providedIn: 'root' })\nexport class NgbCollapseConfig {\n\tprivate _animation: boolean;\n\thorizontal = false;\n\n\tconstructor(private _ngbConfig: NgbConfig) {}\n\n\tget animation(): boolean {\n\t\treturn this._animation === undefined ? this._ngbConfig.animation : this._animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import { Directive, ElementRef, EventEmitter, Input, NgZone, OnInit, Output } from '@angular/core';\nimport { ngbRunTransition } from '../util/transition/ngbTransition';\nimport { ngbCollapsingTransition } from '../util/transition/ngbCollapseTransition';\nimport { NgbCollapseConfig } from './collapse-config';\n\n/**\n * A directive to provide a simple way of hiding and showing elements on the\n * page.\n */\n@Directive({\n\tselector: '[ngbCollapse]',\n\texportAs: 'ngbCollapse',\n\tstandalone: true,\n\thost: { '[class.collapse-horizontal]': 'horizontal' },\n})\nexport class NgbCollapse implements OnInit {\n\t/**\n\t * If `true`, collapse will be animated.\n\t *\n\t * Animation is triggered only when clicked on triggering element\n\t * or via the `.toggle()` function\n\t *\n\t * @since 8.0.0\n\t */\n\t@Input() animation;\n\n\t/**\n\t * Flag used to track if the collapse setter is invoked during initialization\n\t * or not. This distinction is made in order to avoid running the transition during initialization.\n\t */\n\tprivate _afterInit = false;\n\n\tprivate _isCollapsed = false;\n\n\t/**\n\t * If `true`, will collapse the element or show it otherwise.\n\t */\n\t@Input('ngbCollapse')\n\tset collapsed(isCollapsed: boolean) {\n\t\tif (this._isCollapsed !== isCollapsed) {\n\t\t\tthis._isCollapsed = isCollapsed;\n\t\t\tif (this._afterInit) {\n\t\t\t\tthis._runTransitionWithEvents(isCollapsed, this.animation);\n\t\t\t}\n\t\t}\n\t}\n\n\t@Output() ngbCollapseChange = new EventEmitter();\n\n\t/**\n\t * If `true`, will collapse horizontally.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() horizontal: boolean;\n\n\t/**\n\t * An event emitted when the collapse element is shown, after the transition.\n\t * It has no payload.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() shown = new EventEmitter();\n\n\t/**\n\t * An event emitted when the collapse element is hidden, after the transition.\n\t * It has no payload.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() hidden = new EventEmitter();\n\n\tconstructor(private _element: ElementRef, config: NgbCollapseConfig, private _zone: NgZone) {\n\t\tthis.animation = config.animation;\n\t\tthis.horizontal = config.horizontal;\n\t}\n\n\tngOnInit() {\n\t\tthis._runTransition(this._isCollapsed, false);\n\t\tthis._afterInit = true;\n\t}\n\n\t/**\n\t * Triggers collapsing programmatically.\n\t *\n\t * If there is a collapsing transition running already, it will be reversed.\n\t * If the animations are turned off this happens synchronously.\n\t *\n\t * @since 8.0.0\n\t */\n\ttoggle(open: boolean = this._isCollapsed) {\n\t\tthis.collapsed = !open;\n\t\tthis.ngbCollapseChange.next(this._isCollapsed);\n\t}\n\n\tprivate _runTransition(collapsed: boolean, animation: boolean) {\n\t\treturn ngbRunTransition(this._zone, this._element.nativeElement, ngbCollapsingTransition, {\n\t\t\tanimation,\n\t\t\trunningTransition: 'stop',\n\t\t\tcontext: { direction: collapsed ? 'hide' : 'show', dimension: this.horizontal ? 'width' : 'height' },\n\t\t});\n\t}\n\n\tprivate _runTransitionWithEvents(collapsed: boolean, animation: boolean) {\n\t\tthis._runTransition(collapsed, animation).subscribe(() => {\n\t\t\tif (collapsed) {\n\t\t\t\tthis.hidden.emit();\n\t\t\t} else {\n\t\t\t\tthis.shown.emit();\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tAfterContentChecked,\n\tAfterContentInit,\n\tApplicationRef,\n\tChangeDetectorRef,\n\tContentChild,\n\tContentChildren,\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tEmbeddedViewRef,\n\tEventEmitter,\n\tinject,\n\tInput,\n\tOnDestroy,\n\tOutput,\n\tQueryList,\n\tTemplateRef,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgbAccordionConfig } from './accordion-config';\nimport { NgbCollapse } from '../collapse/collapse';\nimport { isString } from '../util/util';\n\nlet nextId = 0;\n\n/**\n * A directive that wraps the content of an accordion item's collapsible body.\n *\n * The actual content is provided in a child `ng-template` element.\n * Depending on the state of the accordion, the template will be either inserted or removed from the DOM.\n *\n * @since 14.1.0\n */\n@Directive({\n\tselector: '[ngbAccordionBody]',\n\tstandalone: true,\n\thost: { '[class.accordion-body]': 'true' },\n})\nexport class NgbAccordionBody implements AfterContentChecked, OnDestroy {\n\tprivate _appRef = inject(ApplicationRef);\n\tprivate _element = inject(ElementRef).nativeElement;\n\tprivate _item = inject(NgbAccordionItem);\n\n\tprivate _viewRef: EmbeddedViewRef | null = null;\n\n\t@ContentChild(TemplateRef, { static: true }) private _bodyTpl: TemplateRef;\n\n\tngAfterContentChecked(): void {\n\t\tif (this._bodyTpl) {\n\t\t\tif (this._item._shouldBeInDOM) {\n\t\t\t\tthis._createViewIfNotExists();\n\t\t\t} else {\n\t\t\t\tthis._destroyViewIfExists();\n\t\t\t}\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._destroyViewIfExists();\n\t}\n\n\tprivate _destroyViewIfExists(): void {\n\t\tif (this._viewRef) {\n\t\t\tthis._appRef.detachView(this._viewRef);\n\t\t\tthis._viewRef.destroy();\n\t\t\tthis._viewRef = null;\n\t\t}\n\t}\n\n\tprivate _createViewIfNotExists(): void {\n\t\tif (!this._viewRef) {\n\t\t\tthis._viewRef = this._bodyTpl.createEmbeddedView(null);\n\t\t\tthis._viewRef.detectChanges();\n\t\t\tthis._appRef.attachView(this._viewRef);\n\t\t\tfor (const node of this._viewRef.rootNodes) {\n\t\t\t\tthis._element.appendChild(node);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * A directive that wraps the collapsible item's content of the accordion.\n *\n * Internally it reuses the [`NgbCollapse` directive](#/components/collapse)\n *\n * @since 14.1.0\n */\n@Directive({\n\texportAs: 'ngbAccordionCollapse',\n\tstandalone: true,\n\tselector: '[ngbAccordionCollapse]',\n\thost: {\n\t\trole: 'region',\n\t\t'[class.accordion-collapse]': 'true',\n\t\t'[id]': 'item.collapseId',\n\t\t'[attr.aria-labelledby]': 'item.toggleId',\n\t},\n\thostDirectives: [NgbCollapse],\n})\nexport class NgbAccordionCollapse {\n\titem = inject(NgbAccordionItem);\n\tngbCollapse = inject(NgbCollapse);\n}\n\n/**\n * A directive to put on a toggling element inside the accordion item's header.\n * It will register click handlers that toggle the associated panel and will handle accessibility attributes.\n *\n * This directive is used internally by the [`NgbAccordionButton` directive](#/components/accordion/api#NgbAccordionButton).\n *\n * @since 14.1.0\n */\n@Directive({\n\tselector: '[ngbAccordionToggle]',\n\tstandalone: true,\n\thost: {\n\t\t'[id]': 'item.toggleId',\n\t\t'[class.collapsed]': 'item.collapsed',\n\t\t'[attr.aria-controls]': 'item.collapseId',\n\t\t'[attr.aria-expanded]': '!item.collapsed',\n\t\t'(click)': '!item.disabled && accordion.toggle(item.id)',\n\t},\n})\nexport class NgbAccordionToggle {\n\titem = inject(NgbAccordionItem);\n\taccordion = inject(NgbAccordionDirective);\n}\n\n/**\n * A directive to put on a button element inside an accordion item's header.\n *\n * If you want a custom markup for the header, you can also use the [`NgbAccordionToggle` directive](#/components/accordion/api#NgbAccordionToggle).\n *\n * @since 14.1.0\n */\n@Directive({\n\tselector: 'button[ngbAccordionButton]',\n\tstandalone: true,\n\thost: {\n\t\t'[disabled]': 'item.disabled',\n\t\t'[class.accordion-button]': 'true',\n\t\ttype: 'button',\n\t},\n\thostDirectives: [NgbAccordionToggle],\n})\nexport class NgbAccordionButton {\n\titem = inject(NgbAccordionItem);\n}\n\n/**\n * A directive that wraps an accordion item's header.\n *\n * @since 14.1.0\n */\n@Directive({\n\tselector: '[ngbAccordionHeader]',\n\tstandalone: true,\n\thost: {\n\t\trole: 'heading',\n\t\t'[class.accordion-header]': 'true',\n\t\t'[class.collapsed]': 'item.collapsed',\n\t},\n})\nexport class NgbAccordionHeader {\n\titem = inject(NgbAccordionItem);\n}\n\n/**\n * A directive that wraps an accordion item: a toggleable header + body that collapses.\n *\n * You can get hold of the `NgbAccordionItem` instance in the template with `#item=\"ngbAccordionItem\"`.\n * It allows to check if the item is collapsed or not, toggle the collapse state, etc.\n *\n * Every accordion item has a string ID that is automatically generated in the `ngb-accordion-item-XX` format, unless provided explicitly.\n *\n * @since 14.1.0\n */\n@Directive({\n\tselector: '[ngbAccordionItem]',\n\texportAs: 'ngbAccordionItem',\n\tstandalone: true,\n\thost: {\n\t\t'[class.accordion-item]': 'true',\n\t\t'[id]': 'id',\n\t},\n})\nexport class NgbAccordionItem implements AfterContentInit {\n\tprivate _accordion = inject(NgbAccordionDirective);\n\tprivate _cd = inject(ChangeDetectorRef);\n\tprivate _destroyRef = inject(DestroyRef);\n\n\tprivate _collapsed = true;\n\tprivate _id = `ngb-accordion-item-${nextId++}`;\n\tprivate _destroyOnHide: boolean | undefined;\n\n\tprivate _collapseAnimationRunning = false;\n\n\t@ContentChild(NgbAccordionCollapse, { static: true }) private _collapse: NgbAccordionCollapse;\n\n\t/**\n\t * Sets the custom ID of the accordion item. It must be unique for the document.\n\t *\n\t * @param id The ID of the accordion item, must be a non-empty string\n\t */\n\t@Input('ngbAccordionItem') set id(id: string) {\n\t\tif (isString(id) && id !== '') {\n\t\t\tthis._id = id;\n\t\t}\n\t}\n\n\t/**\n\t * If `true`, the content of the accordion item's body will be removed from the DOM. It will be just hidden otherwise.\n\t *\n\t * This property can also be set up on the parent [`NgbAccordion` directive](#/components/accordion/api#NgbAccordionDirective).\n\t */\n\t@Input() set destroyOnHide(destroyOnHide: boolean) {\n\t\tthis._destroyOnHide = destroyOnHide;\n\t}\n\n\tget destroyOnHide(): boolean {\n\t\treturn this._destroyOnHide === undefined ? this._accordion.destroyOnHide : this._destroyOnHide!;\n\t}\n\n\t/**\n\t * If `true`, the accordion item will be disabled.\n\t * It won't react to user's clicks, but still will be toggelable programmatically.\n\t */\n\t@Input() disabled = false;\n\n\t/**\n\t *\tIf `true`, the accordion item will be collapsed. Otherwise, it will be expanded.\n\t *\n\t * @param collapsed New state of the accordion item.\n\t */\n\t@Input() set collapsed(collapsed: boolean) {\n\t\tif (collapsed) {\n\t\t\tthis.collapse();\n\t\t} else {\n\t\t\tthis.expand();\n\t\t}\n\t}\n\n\t/**\n\t * Event emitted before the expanding animation starts. It has no payload.\n\t *\n\t * @since 15.1.0\n\t */\n\t@Output() show = new EventEmitter();\n\n\t/**\n\t * Event emitted when the expanding animation is finished. It has no payload.\n\t */\n\t@Output() shown = new EventEmitter();\n\n\t/**\n\t * Event emitted before the collapsing animation starts. It has no payload.\n\t *\n\t * @since 15.1.0\n\t */\n\t@Output() hide = new EventEmitter();\n\n\t/**\n\t * Event emitted when the collapsing animation is finished and before the content is removed from DOM.\n\t * It has no payload.\n\t */\n\t@Output() hidden = new EventEmitter();\n\n\tget collapsed() {\n\t\treturn this._collapsed;\n\t}\n\n\tget id() {\n\t\treturn `${this._id}`;\n\t}\n\n\tget toggleId() {\n\t\treturn `${this.id}-toggle`;\n\t}\n\n\tget collapseId() {\n\t\treturn `${this.id}-collapse`;\n\t}\n\n\tget _shouldBeInDOM() {\n\t\treturn !this.collapsed || this._collapseAnimationRunning || !this.destroyOnHide;\n\t}\n\n\tngAfterContentInit() {\n\t\tconst { ngbCollapse } = this._collapse;\n\t\t// we need to disable the animation for the first init\n\t\tngbCollapse.animation = false;\n\t\tngbCollapse.collapsed = this.collapsed;\n\t\t// we set the animation to the default of the accordion\n\t\tngbCollapse.animation = this._accordion.animation;\n\t\t// event forwarding from 'ngbCollapse' to 'ngbAccordion'\n\t\tngbCollapse.hidden.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n\t\t\t// when the animation finishes we can remove the template from DOM\n\t\t\tthis._collapseAnimationRunning = false;\n\t\t\tthis.hidden.emit();\n\t\t\tthis._accordion.hidden.emit(this.id);\n\t\t});\n\t\tngbCollapse.shown.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n\t\t\tthis.shown.emit();\n\t\t\tthis._accordion.shown.emit(this.id);\n\t\t});\n\t}\n\n\t/**\n\t * Toggles an accordion item.\n\t */\n\ttoggle() {\n\t\tthis.collapsed = !this.collapsed;\n\t}\n\n\t/**\n\t * Expands an accordion item.\n\t */\n\texpand() {\n\t\tif (this.collapsed) {\n\t\t\t// checking if accordion allows to expand the panel in respect to 'closeOthers' flag\n\t\t\tif (!this._accordion._ensureCanExpand(this)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis._collapsed = false;\n\n\t\t\t// need if the accordion is used inside a component having OnPush change detection strategy\n\t\t\tthis._cd.markForCheck();\n\n\t\t\t// we need force CD to get template into DOM before starting animation to calculate its height correctly\n\t\t\t// this will synchronously put the item body into DOM, because `this._collapsed` was flipped to `false`\n\t\t\tthis._cd.detectChanges();\n\n\t\t\t// firing events before starting animations\n\t\t\tthis.show.emit();\n\t\t\tthis._accordion.show.emit(this.id);\n\n\t\t\t// we also need to make sure 'animation' flag is up-to- date\n\t\t\tthis._collapse.ngbCollapse.animation = this._accordion.animation;\n\t\t\tthis._collapse.ngbCollapse.collapsed = false;\n\t\t}\n\t}\n\n\t/**\n\t * Collapses an accordion item.\n\t */\n\tcollapse() {\n\t\tif (!this.collapsed) {\n\t\t\tthis._collapsed = true;\n\t\t\tthis._collapseAnimationRunning = true;\n\n\t\t\t// need if the accordion is used inside a component having OnPush change detection strategy\n\t\t\tthis._cd.markForCheck();\n\n\t\t\t// firing events before starting animations\n\t\t\tthis.hide.emit();\n\t\t\tthis._accordion.hide.emit(this.id);\n\n\t\t\t// we also need to make sure 'animation' flag is up-to- date\n\t\t\tthis._collapse.ngbCollapse.animation = this._accordion.animation;\n\t\t\tthis._collapse.ngbCollapse.collapsed = true;\n\t\t}\n\t}\n}\n\n/**\n * Accordion is a stack of cards that have a header and collapsible body.\n *\n * This directive is a container for these items and provides an API to handle them.\n *\n * @since 14.1.0\n */\n@Directive({\n\tselector: '[ngbAccordion]',\n\tstandalone: true,\n\texportAs: 'ngbAccordion',\n\thost: { '[class.accordion]': 'true' },\n})\nexport class NgbAccordionDirective {\n\t@ContentChildren(NgbAccordionItem, { descendants: false }) private _items?: QueryList;\n\t/**\n\t * If `true`, accordion will be animated.\n\t */\n\t@Input() animation: boolean;\n\n\t/**\n\t * If `true`, only one item at the time can stay open.\n\t */\n\t@Input() closeOthers: boolean;\n\n\t/**\n\t * If `true`, the content of the accordion items body will be removed from the DOM. It will be just hidden otherwise.\n\t *\n\t * This property can be overwritten at the [`NgbAccordionItem`](#/components/accordion/api#NgbAccordionItem) level\n\t */\n\t@Input() destroyOnHide: boolean;\n\n\t/**\n\t * Event emitted before expanding animation starts. The payload is the id of shown accordion item.\n\t *\n\t * @since 15.1.0\n\t */\n\t@Output() show = new EventEmitter();\n\n\t/**\n\t * Event emitted when the expanding animation is finished. The payload is the id of shown accordion item.\n\t */\n\t@Output() shown = new EventEmitter();\n\n\t/**\n\t * Event emitted before the collapsing animation starts. The payload is the id of hidden accordion item.\n\t *\n\t * @since 15.1.0\n\t */\n\t@Output() hide = new EventEmitter();\n\n\t/**\n\t * Event emitted when the collapsing animation is finished and before the content is removed from DOM.\n\t * The payload is the id of hidden accordion item.\n\t */\n\t@Output() hidden = new EventEmitter();\n\n\tprivate _anItemWasAlreadyExpandedDuringInitialisation = false;\n\n\tconstructor(config: NgbAccordionConfig) {\n\t\tthis.animation = config.animation;\n\t\tthis.closeOthers = config.closeOthers;\n\t\tthis.destroyOnHide = config.destroyOnHide;\n\t}\n\n\t/**\n\t * Toggles an item with the given id.\n\t *\n\t * It will toggle an item, even if it is disabled.\n\t *\n\t * @param itemId The id of the item to toggle.\n\t */\n\ttoggle(itemId: string) {\n\t\tthis._getItem(itemId)?.toggle();\n\t}\n\n\t/**\n\t * Expands an item with the given id.\n\t *\n\t * If `closeOthers` is `true`, it will collapse other panels.\n\t *\n\t * @param itemId The id of the item to expand.\n\t */\n\texpand(itemId: string) {\n\t\tthis._getItem(itemId)?.expand();\n\t}\n\n\t/**\n\t * Expands all items.\n\t *\n\t * If `closeOthers` is `true` and all items are closed, it will open the first one. Otherwise, it will keep the opened one.\n\t */\n\texpandAll() {\n\t\tif (this._items) {\n\t\t\tif (this.closeOthers) {\n\t\t\t\t// we check if there is an item open and if it is not we can expand the first item\n\t\t\t\t// (otherwise we toggle nothing)\n\t\t\t\tif (!this._items.find((item) => !item.collapsed)) {\n\t\t\t\t\tthis._items.first.expand();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._items.forEach((item) => item.expand());\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Collapses an item with the given id.\n\t *\n\t * Has no effect if the `itemId` does not correspond to any item.\n\t *\n\t * @param itemId The id of the item to collapse.\n\t */\n\tcollapse(itemId: string) {\n\t\tthis._getItem(itemId)?.collapse();\n\t}\n\n\t/**\n\t * Collapses all items.\n\t */\n\tcollapseAll() {\n\t\tthis._items?.forEach((item) => item.collapse());\n\t}\n\n\t/**\n\t * Checks if an item with the given id is expanded.\n\t *\n\t * If the `itemId` does not correspond to any item, it returns `false`.\n\t *\n\t * @param itemId The id of the item to check.\n\t */\n\tisExpanded(itemId: string) {\n\t\tconst item = this._getItem(itemId);\n\t\treturn item ? !item.collapsed : false;\n\t}\n\n\t/**\n\t * It checks, if the item can be expanded in the current state of the accordion.\n\t * With `closeOthers` there can be only one expanded item at a time.\n\t *\n\t * @internal\n\t */\n\t_ensureCanExpand(toExpand: NgbAccordionItem) {\n\t\tif (!this.closeOthers) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// special case during the initialization of the [collapse]=\"false\" inputs\n\t\t// `this._items` QueryList is not yet initialized, but we need to ensure only one item can be expanded at a time\n\t\tif (!this._items) {\n\t\t\tif (!this._anItemWasAlreadyExpandedDuringInitialisation) {\n\t\t\t\tthis._anItemWasAlreadyExpandedDuringInitialisation = true;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// if there is an expanded item, we need to collapse it first\n\t\tthis._items.find((item) => !item.collapsed && toExpand !== item)?.collapse();\n\n\t\treturn true;\n\t}\n\n\tprivate _getItem(itemId: string): NgbAccordionItem | undefined {\n\t\treturn this._items?.find((item) => item.id === itemId);\n\t}\n}\n","/* eslint-disable deprecation/deprecation */\nimport { NgModule } from '@angular/core';\n\nimport { NgbAccordion, NgbPanel, NgbPanelContent, NgbPanelHeader, NgbPanelTitle, NgbPanelToggle } from './accordion';\nimport {\n\tNgbAccordionDirective,\n\tNgbAccordionItem,\n\tNgbAccordionHeader,\n\tNgbAccordionToggle,\n\tNgbAccordionBody,\n\tNgbAccordionCollapse,\n\tNgbAccordionButton,\n} from './accordion.directive';\n\nexport {\n\tNgbAccordion,\n\tNgbPanel,\n\tNgbPanelTitle,\n\tNgbPanelContent,\n\tNgbPanelChangeEvent,\n\tNgbPanelHeader,\n\tNgbPanelHeaderContext,\n\tNgbPanelToggle,\n} from './accordion';\n\nexport {\n\tNgbAccordionButton,\n\tNgbAccordionDirective,\n\tNgbAccordionItem,\n\tNgbAccordionHeader,\n\tNgbAccordionToggle,\n\tNgbAccordionBody,\n\tNgbAccordionCollapse,\n} from './accordion.directive';\nexport { NgbAccordionConfig } from './accordion-config';\n\nconst NGB_ACCORDION_DIRECTIVES = [\n\tNgbAccordion,\n\tNgbPanel,\n\tNgbPanelTitle,\n\tNgbPanelContent,\n\tNgbPanelHeader,\n\tNgbPanelToggle,\n\tNgbAccordionButton,\n\tNgbAccordionDirective,\n\tNgbAccordionItem,\n\tNgbAccordionHeader,\n\tNgbAccordionToggle,\n\tNgbAccordionBody,\n\tNgbAccordionCollapse,\n];\n\n@NgModule({\n\timports: NGB_ACCORDION_DIRECTIVES,\n\texports: NGB_ACCORDION_DIRECTIVES,\n})\nexport class NgbAccordionModule {}\n","import { NgbTransitionStartFn } from '../util/transition/ngbTransition';\n\nexport const ngbAlertFadingTransition: NgbTransitionStartFn = ({ classList }: HTMLElement) => {\n\tclassList.remove('show');\n};\n","import { Injectable } from '@angular/core';\nimport { NgbConfig } from '../ngb-config';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbAlertConfig {\n\tdismissible = true;\n\ttype = 'warning';\n\n\tprivate _animation: boolean;\n\n\tconstructor(private _ngbConfig: NgbConfig) {}\n\n\tget animation(): boolean {\n\t\treturn this._animation === undefined ? this._ngbConfig.animation : this._animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInput,\n\tNgZone,\n\tOutput,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { NgIf } from '@angular/common';\n\nimport { Observable } from 'rxjs';\n\nimport { NgbAlertConfig } from './alert-config';\nimport { ngbRunTransition } from '../util/transition/ngbTransition';\nimport { ngbAlertFadingTransition } from './alert-transition';\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 */\n@Component({\n\tselector: 'ngb-alert',\n\texportAs: 'ngbAlert',\n\tstandalone: true,\n\timports: [NgIf],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\trole: 'alert',\n\t\t'[class]': '\"alert show\" + (type ? \" alert-\" + type : \"\")',\n\t\t'[class.fade]': 'animation',\n\t\t'[class.alert-dismissible]': 'dismissible',\n\t},\n\ttemplate: `\n\t\t\n\t\t\n\t\t\n\t`,\n\tstyleUrls: ['./alert.scss'],\n})\nexport class NgbAlert {\n\t/**\n\t * If `true`, alert closing will be animated.\n\t *\n\t * Animation is triggered only when clicked on the close button (×)\n\t * or via the `.close()` function\n\t *\n\t * @since 8.0.0\n\t */\n\t@Input() animation: boolean;\n\n\t/**\n\t * If `true`, alert can be dismissed by the user.\n\t *\n\t * The close button (×) will be displayed and you can be notified\n\t * of the event with the `(closed)` output.\n\t */\n\t@Input() dismissible: boolean;\n\n\t/**\n\t * Type of the alert.\n\t *\n\t * Bootstrap provides styles for the following types: `'success'`, `'info'`, `'warning'`, `'danger'`, `'primary'`,\n\t * `'secondary'`, `'light'` and `'dark'`.\n\t */\n\t@Input() type: string;\n\n\t/**\n\t * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() closed = new EventEmitter();\n\n\tconstructor(config: NgbAlertConfig, private _element: ElementRef, private _zone: NgZone) {\n\t\tthis.dismissible = config.dismissible;\n\t\tthis.type = config.type;\n\t\tthis.animation = config.animation;\n\t}\n\n\t/**\n\t * Triggers alert closing programmatically (same as clicking on the close button (×)).\n\t *\n\t * The returned observable will emit and be completed once the closing transition has finished.\n\t * If the animations are turned off this happens synchronously.\n\t *\n\t * Alternatively you could listen or subscribe to the `(closed)` output\n\t *\n\t * @since 8.0.0\n\t */\n\tclose(): Observable {\n\t\tconst transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbAlertFadingTransition, {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'continue',\n\t\t});\n\t\ttransition.subscribe(() => this.closed.emit());\n\t\treturn transition;\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbAlert } from './alert';\n\nexport { NgbAlert } from './alert';\nexport { NgbAlertConfig } from './alert-config';\n\n@NgModule({\n\timports: [NgbAlert],\n\texports: [NgbAlert],\n})\nexport class NgbAlertModule {}\n","import { NgbTransitionStartFn } from '../util/transition/ngbTransition';\nimport { reflow } from '../util/util';\n\n/**\n * Defines the carousel slide transition direction.\n */\nexport enum NgbSlideEventDirection {\n\tSTART = 'start',\n\tEND = 'end',\n}\n\nexport interface NgbCarouselCtx {\n\t/**\n\t * since 12.0.0 Possible values are `'start' | 'end'`.\n\t *\n\t * before 12.0.0 Possible values were `'left' | 'right'`.\n\t */\n\tdirection: 'start' | 'end';\n}\n\nconst isBeingAnimated = ({ classList }: HTMLElement) => {\n\treturn classList.contains('carousel-item-start') || classList.contains('carousel-item-end');\n};\n\nconst removeDirectionClasses = (classList: DOMTokenList) => {\n\tclassList.remove('carousel-item-start');\n\tclassList.remove('carousel-item-end');\n};\n\nconst removeClasses = (classList: DOMTokenList) => {\n\tremoveDirectionClasses(classList);\n\tclassList.remove('carousel-item-prev');\n\tclassList.remove('carousel-item-next');\n};\n\nexport const ngbCarouselTransitionIn: NgbTransitionStartFn = (\n\telement: HTMLElement,\n\tanimation: boolean,\n\t{ direction }: NgbCarouselCtx,\n) => {\n\tconst { classList } = element;\n\n\tif (!animation) {\n\t\tremoveDirectionClasses(classList);\n\t\tremoveClasses(classList);\n\t\tclassList.add('active');\n\t\treturn;\n\t}\n\n\tif (isBeingAnimated(element)) {\n\t\t// Revert the transition\n\t\tremoveDirectionClasses(classList);\n\t} else {\n\t\t// For the 'in' transition, a 'pre-class' is applied to the element to ensure its visibility\n\t\tclassList.add('carousel-item-' + (direction === NgbSlideEventDirection.START ? 'next' : 'prev'));\n\t\treflow(element);\n\t\tclassList.add('carousel-item-' + direction);\n\t}\n\n\treturn () => {\n\t\tremoveClasses(classList);\n\t\tclassList.add('active');\n\t};\n};\n\nexport const ngbCarouselTransitionOut: NgbTransitionStartFn = (\n\telement: HTMLElement,\n\tanimation: boolean,\n\t{ direction }: NgbCarouselCtx,\n) => {\n\tconst { classList } = element;\n\n\tif (!animation) {\n\t\tremoveDirectionClasses(classList);\n\t\tremoveClasses(classList);\n\t\tclassList.remove('active');\n\t\treturn;\n\t}\n\n\t// direction is left or right, depending on the way the slide goes out.\n\tif (isBeingAnimated(element)) {\n\t\t// Revert the transition\n\t\tremoveDirectionClasses(classList);\n\t} else {\n\t\tclassList.add('carousel-item-' + direction);\n\t}\n\n\treturn () => {\n\t\tremoveClasses(classList);\n\t\tclassList.remove('active');\n\t};\n};\n","import { Injectable } from '@angular/core';\nimport { NgbConfig } from '../ngb-config';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbCarouselConfig {\n\tinterval = 5000;\n\twrap = true;\n\tkeyboard = true;\n\tpauseOnHover = true;\n\tpauseOnFocus = true;\n\tshowNavigationArrows = true;\n\tshowNavigationIndicators = true;\n\n\tprivate _animation: boolean;\n\n\tconstructor(private _ngbConfig: NgbConfig) {}\n\n\tget animation(): boolean {\n\t\treturn this._animation === undefined ? this._ngbConfig.animation : this._animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import {\n\tAfterContentChecked,\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChildren,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tInject,\n\tInput,\n\tNgZone,\n\tOnDestroy,\n\tOutput,\n\tPLATFORM_ID,\n\tQueryList,\n\tTemplateRef,\n\tViewEncapsulation,\n\tAfterViewInit,\n} from '@angular/core';\nimport { isPlatformBrowser, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\n\nimport { NgbCarouselConfig } from './carousel-config';\n\nimport { BehaviorSubject, combineLatest, NEVER, Observable, Subject, timer, zip } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { ngbCompleteTransition, ngbRunTransition, NgbTransitionOptions } from '../util/transition/ngbTransition';\nimport {\n\tngbCarouselTransitionIn,\n\tngbCarouselTransitionOut,\n\tNgbSlideEventDirection,\n\tNgbCarouselCtx,\n} from './carousel-transition';\n\nlet nextId = 0;\n\n/**\n * A directive that wraps the individual carousel slide.\n */\n@Directive({ selector: 'ng-template[ngbSlide]', standalone: true })\nexport class NgbSlide {\n\t/**\n\t * Slide id that must be unique for the entire document.\n\t *\n\t * If not provided, will be generated in the `ngb-slide-xx` format.\n\t */\n\t@Input() id = `ngb-slide-${nextId++}`;\n\n\t/**\n\t * An event emitted when the slide transition is finished\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() slid = new EventEmitter();\n\n\tconstructor(public tplRef: TemplateRef) {}\n}\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 */\n@Component({\n\tselector: 'ngb-carousel',\n\texportAs: 'ngbCarousel',\n\tstandalone: true,\n\timports: [NgFor, NgTemplateOutlet, NgIf],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'carousel slide',\n\t\t'[style.display]': '\"block\"',\n\t\ttabIndex: '0',\n\t\t'(keydown.arrowLeft)': 'keyboard && arrowLeft()',\n\t\t'(keydown.arrowRight)': 'keyboard && arrowRight()',\n\t\t'(mouseenter)': 'mouseHover = true',\n\t\t'(mouseleave)': 'mouseHover = false',\n\t\t'(focusin)': 'focused = true',\n\t\t'(focusout)': 'focused = false',\n\t\t'[attr.aria-activedescendant]': `'slide-' + activeId`,\n\t},\n\ttemplate: `\n\t\t
\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\tSlide {{ i + 1 }} of {{ c }}\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\n\t\t\n\t\t\n\t`,\n})\nexport class NgbCarousel implements AfterContentChecked, AfterContentInit, AfterViewInit, OnDestroy {\n\t@ContentChildren(NgbSlide) slides: QueryList;\n\n\tpublic NgbSlideEventSource = NgbSlideEventSource;\n\n\tprivate _destroy$ = new Subject();\n\tprivate _interval$ = new BehaviorSubject(0);\n\tprivate _mouseHover$ = new BehaviorSubject(false);\n\tprivate _focused$ = new BehaviorSubject(false);\n\tprivate _pauseOnHover$ = new BehaviorSubject(false);\n\tprivate _pauseOnFocus$ = new BehaviorSubject(false);\n\tprivate _pause$ = new BehaviorSubject(false);\n\tprivate _wrap$ = new BehaviorSubject(false);\n\n\t/**\n\t * A flag to enable/disable the animations.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Input() animation: boolean;\n\n\t/**\n\t * The slide id that should be displayed **initially**.\n\t *\n\t * For subsequent interactions use methods `select()`, `next()`, etc. and the `(slide)` output.\n\t */\n\t@Input() activeId: string;\n\n\t/**\n\t * Time in milliseconds before the next slide is shown.\n\t */\n\t@Input()\n\tset interval(value: number) {\n\t\tthis._interval$.next(value);\n\t}\n\n\tget interval() {\n\t\treturn this._interval$.value;\n\t}\n\n\t/**\n\t * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n\t */\n\t@Input()\n\tset wrap(value: boolean) {\n\t\tthis._wrap$.next(value);\n\t}\n\n\tget wrap() {\n\t\treturn this._wrap$.value;\n\t}\n\n\t/**\n\t * If `true`, allows to interact with carousel using keyboard 'arrow left' and 'arrow right'.\n\t */\n\t@Input() keyboard: boolean;\n\n\t/**\n\t * If `true`, will pause slide switching when mouse cursor hovers the slide.\n\t *\n\t * @since 2.2.0\n\t */\n\t@Input()\n\tset pauseOnHover(value: boolean) {\n\t\tthis._pauseOnHover$.next(value);\n\t}\n\n\tget pauseOnHover() {\n\t\treturn this._pauseOnHover$.value;\n\t}\n\n\t/**\n\t * If `true`, will pause slide switching when the focus is inside the carousel.\n\t */\n\t@Input()\n\tset pauseOnFocus(value: boolean) {\n\t\tthis._pauseOnFocus$.next(value);\n\t}\n\n\tget pauseOnFocus() {\n\t\treturn this._pauseOnFocus$.value;\n\t}\n\n\t/**\n\t * If `true`, 'previous' and 'next' navigation arrows will be visible on the slide.\n\t *\n\t * @since 2.2.0\n\t */\n\t@Input() showNavigationArrows: boolean;\n\n\t/**\n\t * If `true`, navigation indicators at the bottom of the slide will be visible.\n\t *\n\t * @since 2.2.0\n\t */\n\t@Input() showNavigationIndicators: boolean;\n\n\t/**\n\t * An event emitted just before the slide transition starts.\n\t *\n\t * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n\t */\n\t@Output() slide = new EventEmitter();\n\n\t/**\n\t * An event emitted right after the slide transition is completed.\n\t *\n\t * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() slid = new EventEmitter();\n\n\t/*\n\t * Keep the ids of the panels currently transitionning\n\t * in order to allow only the transition revertion\n\t */\n\tprivate _transitionIds: [string, string] | null = null;\n\n\tset mouseHover(value: boolean) {\n\t\tthis._mouseHover$.next(value);\n\t}\n\n\tget mouseHover() {\n\t\treturn this._mouseHover$.value;\n\t}\n\n\tset focused(value: boolean) {\n\t\tthis._focused$.next(value);\n\t}\n\n\tget focused() {\n\t\treturn this._focused$.value;\n\t}\n\n\tconstructor(\n\t\tconfig: NgbCarouselConfig,\n\t\t@Inject(PLATFORM_ID) private _platformId,\n\t\tprivate _ngZone: NgZone,\n\t\tprivate _cd: ChangeDetectorRef,\n\t\tprivate _container: ElementRef,\n\t) {\n\t\tthis.animation = config.animation;\n\t\tthis.interval = config.interval;\n\t\tthis.wrap = config.wrap;\n\t\tthis.keyboard = config.keyboard;\n\t\tthis.pauseOnHover = config.pauseOnHover;\n\t\tthis.pauseOnFocus = config.pauseOnFocus;\n\t\tthis.showNavigationArrows = config.showNavigationArrows;\n\t\tthis.showNavigationIndicators = config.showNavigationIndicators;\n\t}\n\n\tarrowLeft() {\n\t\tthis.focus();\n\t\tthis.prev(NgbSlideEventSource.ARROW_LEFT);\n\t}\n\n\tarrowRight() {\n\t\tthis.focus();\n\t\tthis.next(NgbSlideEventSource.ARROW_RIGHT);\n\t}\n\n\tngAfterContentInit() {\n\t\t// setInterval() doesn't play well with SSR and protractor,\n\t\t// so we should run it in the browser and outside Angular\n\t\tif (isPlatformBrowser(this._platformId)) {\n\t\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\t\tconst hasNextSlide$ = combineLatest([\n\t\t\t\t\tthis.slide.pipe(\n\t\t\t\t\t\tmap((slideEvent) => slideEvent.current),\n\t\t\t\t\t\tstartWith(this.activeId),\n\t\t\t\t\t),\n\t\t\t\t\tthis._wrap$,\n\t\t\t\t\tthis.slides.changes.pipe(startWith(null)),\n\t\t\t\t]).pipe(\n\t\t\t\t\tmap(([currentSlideId, wrap]) => {\n\t\t\t\t\t\tconst slideArr = this.slides.toArray();\n\t\t\t\t\t\tconst currentSlideIdx = this._getSlideIdxById(currentSlideId);\n\t\t\t\t\t\treturn wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\n\t\t\t\t\t}),\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t);\n\t\t\t\tcombineLatest([\n\t\t\t\t\tthis._pause$,\n\t\t\t\t\tthis._pauseOnHover$,\n\t\t\t\t\tthis._mouseHover$,\n\t\t\t\t\tthis._pauseOnFocus$,\n\t\t\t\t\tthis._focused$,\n\t\t\t\t\tthis._interval$,\n\t\t\t\t\thasNextSlide$,\n\t\t\t\t])\n\t\t\t\t\t.pipe(\n\t\t\t\t\t\tmap(\n\t\t\t\t\t\t\t([pause, pauseOnHover, mouseHover, pauseOnFocus, focused, interval, hasNextSlide]: [\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t\tnumber,\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t]) =>\n\t\t\t\t\t\t\t\tpause || (pauseOnHover && mouseHover) || (pauseOnFocus && focused) || !hasNextSlide ? 0 : interval,\n\t\t\t\t\t\t),\n\n\t\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\t\tswitchMap((interval) => (interval > 0 ? timer(interval, interval) : NEVER)),\n\t\t\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t\t\t)\n\t\t\t\t\t.subscribe(() => this._ngZone.run(() => this.next(NgbSlideEventSource.TIMER)));\n\t\t\t});\n\t\t}\n\n\t\tthis.slides.changes.pipe(takeUntil(this._destroy$)).subscribe(() => {\n\t\t\tthis._transitionIds?.forEach((id) => ngbCompleteTransition(this._getSlideElement(id)));\n\t\t\tthis._transitionIds = null;\n\n\t\t\tthis._cd.markForCheck();\n\n\t\t\t// The following code need to be done asynchronously, after the dom becomes stable,\n\t\t\t// otherwise all changes will be undone.\n\t\t\tthis._ngZone.onStable.pipe(take(1)).subscribe(() => {\n\t\t\t\tfor (const { id } of this.slides) {\n\t\t\t\t\tconst element = this._getSlideElement(id);\n\t\t\t\t\tif (id === this.activeId) {\n\t\t\t\t\t\telement.classList.add('active');\n\t\t\t\t\t} else {\n\t\t\t\t\t\telement.classList.remove('active');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tngAfterContentChecked() {\n\t\tlet activeSlide = this._getSlideById(this.activeId);\n\t\tthis.activeId = activeSlide ? activeSlide.id : this.slides.length ? this.slides.first.id : '';\n\t}\n\n\tngAfterViewInit() {\n\t\t// Initialize the 'active' class (not managed by the template)\n\t\tif (this.activeId) {\n\t\t\tconst element = this._getSlideElement(this.activeId);\n\t\t\tif (element) {\n\t\t\t\telement.classList.add('active');\n\t\t\t}\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis._destroy$.next();\n\t}\n\n\t/**\n\t * Navigates to a slide with the specified identifier.\n\t */\n\tselect(slideId: string, source?: NgbSlideEventSource) {\n\t\tthis._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\n\t}\n\n\t/**\n\t * Navigates to the previous slide.\n\t */\n\tprev(source?: NgbSlideEventSource) {\n\t\tthis._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.END, source);\n\t}\n\n\t/**\n\t * Navigates to the next slide.\n\t */\n\tnext(source?: NgbSlideEventSource) {\n\t\tthis._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.START, source);\n\t}\n\n\t/**\n\t * Pauses cycling through the slides.\n\t */\n\tpause() {\n\t\tthis._pause$.next(true);\n\t}\n\n\t/**\n\t * Restarts cycling through the slides from start to end.\n\t */\n\tcycle() {\n\t\tthis._pause$.next(false);\n\t}\n\n\t/**\n\t * Set the focus on the carousel.\n\t */\n\tfocus() {\n\t\tthis._container.nativeElement.focus();\n\t}\n\n\tprivate _cycleToSelected(slideIdx: string, direction: NgbSlideEventDirection, source?: NgbSlideEventSource) {\n\t\tconst transitionIds = this._transitionIds;\n\t\tif (transitionIds && (transitionIds[0] !== slideIdx || transitionIds[1] !== this.activeId)) {\n\t\t\t// Revert prevented\n\t\t\treturn;\n\t\t}\n\n\t\tlet selectedSlide = this._getSlideById(slideIdx);\n\t\tif (selectedSlide && selectedSlide.id !== this.activeId) {\n\t\t\tthis._transitionIds = [this.activeId, slideIdx];\n\t\t\tthis.slide.emit({\n\t\t\t\tprev: this.activeId,\n\t\t\t\tcurrent: selectedSlide.id,\n\t\t\t\tdirection: direction,\n\t\t\t\tpaused: this._pause$.value,\n\t\t\t\tsource,\n\t\t\t});\n\n\t\t\tconst options: NgbTransitionOptions = {\n\t\t\t\tanimation: this.animation,\n\t\t\t\trunningTransition: 'stop',\n\t\t\t\tcontext: { direction },\n\t\t\t};\n\n\t\t\tconst transitions: Array> = [];\n\t\t\tconst activeSlide = this._getSlideById(this.activeId);\n\t\t\tif (activeSlide) {\n\t\t\t\tconst activeSlideTransition = ngbRunTransition(\n\t\t\t\t\tthis._ngZone,\n\t\t\t\t\tthis._getSlideElement(activeSlide.id),\n\t\t\t\t\tngbCarouselTransitionOut,\n\t\t\t\t\toptions,\n\t\t\t\t);\n\t\t\t\tactiveSlideTransition.subscribe(() => {\n\t\t\t\t\tactiveSlide.slid.emit({ isShown: false, direction, source });\n\t\t\t\t});\n\t\t\t\ttransitions.push(activeSlideTransition);\n\t\t\t}\n\n\t\t\tconst previousId = this.activeId;\n\t\t\tthis.activeId = selectedSlide.id;\n\t\t\tconst nextSlide = this._getSlideById(this.activeId);\n\t\t\tconst transition = ngbRunTransition(\n\t\t\t\tthis._ngZone,\n\t\t\t\tthis._getSlideElement(selectedSlide.id),\n\t\t\t\tngbCarouselTransitionIn,\n\t\t\t\toptions,\n\t\t\t);\n\t\t\ttransition.subscribe(() => {\n\t\t\t\tnextSlide?.slid.emit({ isShown: true, direction, source });\n\t\t\t});\n\t\t\ttransitions.push(transition);\n\n\t\t\tzip(...transitions)\n\t\t\t\t.pipe(take(1))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tthis._transitionIds = null;\n\t\t\t\t\tthis.slid.emit({\n\t\t\t\t\t\tprev: previousId,\n\t\t\t\t\t\tcurrent: selectedSlide!.id,\n\t\t\t\t\t\tdirection: direction,\n\t\t\t\t\t\tpaused: this._pause$.value,\n\t\t\t\t\t\tsource,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\t// we get here after the interval fires or any external API call like next(), prev() or select()\n\t\tthis._cd.markForCheck();\n\t}\n\n\tprivate _getSlideEventDirection(currentActiveSlideId: string, nextActiveSlideId: string): NgbSlideEventDirection {\n\t\tconst currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n\t\tconst nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n\n\t\treturn currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.END : NgbSlideEventDirection.START;\n\t}\n\n\tprivate _getSlideById(slideId: string): NgbSlide | null {\n\t\treturn this.slides.find((slide) => slide.id === slideId) || null;\n\t}\n\n\tprivate _getSlideIdxById(slideId: string): number {\n\t\tconst slide = this._getSlideById(slideId);\n\t\treturn slide != null ? this.slides.toArray().indexOf(slide) : -1;\n\t}\n\n\tprivate _getNextSlide(currentSlideId: string): string {\n\t\tconst slideArr = this.slides.toArray();\n\t\tconst currentSlideIdx = this._getSlideIdxById(currentSlideId);\n\t\tconst isLastSlide = currentSlideIdx === slideArr.length - 1;\n\n\t\treturn isLastSlide\n\t\t\t? this.wrap\n\t\t\t\t? slideArr[0].id\n\t\t\t\t: slideArr[slideArr.length - 1].id\n\t\t\t: slideArr[currentSlideIdx + 1].id;\n\t}\n\n\tprivate _getPrevSlide(currentSlideId: string): string {\n\t\tconst slideArr = this.slides.toArray();\n\t\tconst currentSlideIdx = this._getSlideIdxById(currentSlideId);\n\t\tconst isFirstSlide = currentSlideIdx === 0;\n\n\t\treturn isFirstSlide\n\t\t\t? this.wrap\n\t\t\t\t? slideArr[slideArr.length - 1].id\n\t\t\t\t: slideArr[0].id\n\t\t\t: slideArr[currentSlideIdx - 1].id;\n\t}\n\n\tprivate _getSlideElement(slideId: string): HTMLElement {\n\t\treturn this._container.nativeElement.querySelector(`#slide-${slideId}`);\n\t}\n}\n\n/**\n * A slide change event emitted right after the slide transition is completed.\n */\nexport interface NgbSlideEvent {\n\t/**\n\t * The previous slide id.\n\t */\n\tprev: string;\n\n\t/**\n\t * The current slide id.\n\t */\n\tcurrent: string;\n\n\t/**\n\t * The slide event direction.\n\t *\n\t * since 12.0.0 Possible values are `'start' | 'end'`.\n\t *\n\t * before 12.0.0 Possible values were `'left' | 'right'`.\n\t */\n\tdirection: NgbSlideEventDirection;\n\n\t/**\n\t * Whether the pause() method was called (and no cycle() call was done afterwards).\n\t *\n\t * @since 5.1.0\n\t */\n\tpaused: boolean;\n\n\t/**\n\t * Source triggering the slide change event.\n\t *\n\t * Possible values are `'timer' | 'arrowLeft' | 'arrowRight' | 'indicator'`\n\t *\n\t * @since 5.1.0\n\t */\n\tsource?: NgbSlideEventSource;\n}\n\n/**\n * A slide change event emitted right after the slide transition is completed.\n *\n * @since 8.0.0\n */\nexport interface NgbSingleSlideEvent {\n\t/**\n\t * true if the slide is shown, false otherwise\n\t */\n\tisShown: boolean;\n\n\t/**\n\t * The slide event direction.\n\t *\n\t * since 12.0.0 Possible values are `'start' | 'end'`.\n\t *\n\t * before 12.0.0 Possible values were `'left' | 'right'`.\n\t */\n\tdirection: NgbSlideEventDirection;\n\n\t/**\n\t * Source triggering the slide change event.\n\t *\n\t * Possible values are `'timer' | 'arrowLeft' | 'arrowRight' | 'indicator'`\n\t *\n\t */\n\tsource?: NgbSlideEventSource;\n}\n\nexport enum NgbSlideEventSource {\n\tTIMER = 'timer',\n\tARROW_LEFT = 'arrowLeft',\n\tARROW_RIGHT = 'arrowRight',\n\tINDICATOR = 'indicator',\n}\n","import { NgModule } from '@angular/core';\nimport { NgbCarousel, NgbSlide } from './carousel';\n\nexport { NgbCarousel, NgbSlide, NgbSlideEvent, NgbSlideEventSource } from './carousel';\nexport { NgbSlideEventDirection } from './carousel-transition';\nexport { NgbCarouselConfig } from './carousel-config';\n\n@NgModule({\n\timports: [NgbCarousel, NgbSlide],\n\texports: [NgbCarousel, NgbSlide],\n})\nexport class NgbCarouselModule {}\n","import { NgModule } from '@angular/core';\nimport { NgbCollapse } from './collapse';\n\nexport { NgbCollapse } from './collapse';\nexport { NgbCollapseConfig } from './collapse-config';\n\n@NgModule({\n\timports: [NgbCollapse],\n\texports: [NgbCollapse],\n})\nexport class NgbCollapseModule {}\n","import { NgbDateStruct } from './ngb-date-struct';\nimport { isInteger } from '../util/util';\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 */\nexport class NgbDate implements NgbDateStruct {\n\t/**\n\t * The year, for example 2016\n\t */\n\tyear: number;\n\n\t/**\n\t * The month, for example 1=Jan ... 12=Dec as in ISO 8601\n\t */\n\tmonth: number;\n\n\t/**\n\t * The day of month, starting with 1\n\t */\n\tday: number;\n\n\t/**\n\t * A **static method** that creates a new date object from the `NgbDateStruct`,\n\t *\n\t * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n\t *\n\t * If the `date` is already of `NgbDate` type, the method will return the same object.\n\t */\n\tstatic from(date?: NgbDateStruct | null): NgbDate | null {\n\t\tif (date instanceof NgbDate) {\n\t\t\treturn date;\n\t\t}\n\t\treturn date ? new NgbDate(date.year, date.month, date.day) : null;\n\t}\n\n\tconstructor(year: number, month: number, day: number) {\n\t\tthis.year = isInteger(year) ? year : null;\n\t\tthis.month = isInteger(month) ? month : null;\n\t\tthis.day = isInteger(day) ? day : null;\n\t}\n\n\t/**\n\t * Checks if the current date is equal to another date.\n\t */\n\tequals(other?: NgbDateStruct | null): boolean {\n\t\treturn other != null && this.year === other.year && this.month === other.month && this.day === other.day;\n\t}\n\n\t/**\n\t * Checks if the current date is before another date.\n\t */\n\tbefore(other?: NgbDateStruct | null): boolean {\n\t\tif (!other) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.year === other.year) {\n\t\t\tif (this.month === other.month) {\n\t\t\t\treturn this.day === other.day ? false : this.day < other.day;\n\t\t\t} else {\n\t\t\t\treturn this.month < other.month;\n\t\t\t}\n\t\t} else {\n\t\t\treturn this.year < other.year;\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the current date is after another date.\n\t */\n\tafter(other?: NgbDateStruct | null): boolean {\n\t\tif (!other) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.year === other.year) {\n\t\t\tif (this.month === other.month) {\n\t\t\t\treturn this.day === other.day ? false : this.day > other.day;\n\t\t\t} else {\n\t\t\t\treturn this.month > other.month;\n\t\t\t}\n\t\t} else {\n\t\t\treturn this.year > other.year;\n\t\t}\n\t}\n}\n","import { NgbDate } from './ngb-date';\nimport { DatepickerViewModel, DayViewModel, MonthViewModel } from './datepicker-view-model';\nimport { NgbCalendar } from './ngb-calendar';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\n\nexport function isChangedDate(prev?: NgbDate | null, next?: NgbDate | null): boolean {\n\treturn !dateComparator(prev, next);\n}\n\nexport function isChangedMonth(prev?: NgbDate | null, next?: NgbDate | null): boolean {\n\treturn !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\n\nexport function dateComparator(prev?: NgbDate | null, next?: NgbDate | null): boolean {\n\treturn (!prev && !next) || (!!prev && !!next && prev.equals(next));\n}\n\nexport function checkMinBeforeMax(minDate?: NgbDate | null, maxDate?: NgbDate | null): void {\n\tif (maxDate && minDate && maxDate.before(minDate)) {\n\t\tthrow new Error(`'maxDate' ${maxDate} should be greater than 'minDate' ${minDate}`);\n\t}\n}\n\nexport function checkDateInRange(\n\tdate?: NgbDate | null,\n\tminDate?: NgbDate | null,\n\tmaxDate?: NgbDate | null,\n): NgbDate | null {\n\tif (date && minDate && date.before(minDate)) {\n\t\treturn minDate;\n\t}\n\tif (date && maxDate && date.after(maxDate)) {\n\t\treturn maxDate;\n\t}\n\n\treturn date || null;\n}\n\nexport function isDateSelectable(date: NgbDate | null | undefined, state: DatepickerViewModel) {\n\tconst { minDate, maxDate, disabled, markDisabled } = state;\n\treturn !(\n\t\tdate === null ||\n\t\tdate === undefined ||\n\t\tdisabled ||\n\t\t(markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\n\t\t(minDate && date.before(minDate)) ||\n\t\t(maxDate && date.after(maxDate))\n\t);\n}\n\nexport function generateSelectBoxMonths(\n\tcalendar: NgbCalendar,\n\tdate: NgbDate,\n\tminDate: NgbDate | null,\n\tmaxDate: NgbDate | null,\n) {\n\tif (!date) {\n\t\treturn [];\n\t}\n\n\tlet months = calendar.getMonths(date.year);\n\n\tif (minDate && date.year === minDate.year) {\n\t\tconst index = months.findIndex((month) => month === minDate.month);\n\t\tmonths = months.slice(index);\n\t}\n\n\tif (maxDate && date.year === maxDate.year) {\n\t\tconst index = months.findIndex((month) => month === maxDate.month);\n\t\tmonths = months.slice(0, index + 1);\n\t}\n\n\treturn months;\n}\n\nexport function generateSelectBoxYears(date: NgbDate, minDate: NgbDate | null, maxDate: NgbDate | null) {\n\tif (!date) {\n\t\treturn [];\n\t}\n\n\tconst start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\n\tconst end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\n\n\tconst length = end - start + 1;\n\tconst numbers = Array(length);\n\tfor (let i = 0; i < length; i++) {\n\t\tnumbers[i] = start + i;\n\t}\n\n\treturn numbers;\n}\n\nexport function nextMonthDisabled(calendar: NgbCalendar, date: NgbDate, maxDate: NgbDate | null) {\n\tconst nextDate = Object.assign(calendar.getNext(date, 'm'), { day: 1 });\n\treturn maxDate != null && nextDate.after(maxDate);\n}\n\nexport function prevMonthDisabled(calendar: NgbCalendar, date: NgbDate, minDate: NgbDate | null) {\n\tconst prevDate = Object.assign(calendar.getPrev(date, 'm'), { day: 1 });\n\treturn (\n\t\tminDate != null &&\n\t\t((prevDate.year === minDate.year && prevDate.month < minDate.month) ||\n\t\t\t(prevDate.year < minDate.year && minDate.month === 1))\n\t);\n}\n\nexport function buildMonths(\n\tcalendar: NgbCalendar,\n\tdate: NgbDate,\n\tstate: DatepickerViewModel,\n\ti18n: NgbDatepickerI18n,\n\tforce: boolean,\n): MonthViewModel[] {\n\tconst { displayMonths, months } = state;\n\t// move old months to a temporary array\n\tconst monthsToReuse = months.splice(0, months.length);\n\n\t// generate new first dates, nullify or reuse months\n\tconst firstDates = Array.from({ length: displayMonths }, (_, i) => {\n\t\tconst firstDate = Object.assign(calendar.getNext(date, 'm', i), { day: 1 });\n\t\tmonths[i] = null;\n\n\t\tif (!force) {\n\t\t\tconst reusedIndex = monthsToReuse.findIndex((month) => month.firstDate.equals(firstDate));\n\t\t\t// move reused month back to months\n\t\t\tif (reusedIndex !== -1) {\n\t\t\t\tmonths[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n\t\t\t}\n\t\t}\n\n\t\treturn firstDate;\n\t});\n\n\t// rebuild nullified months\n\tfirstDates.forEach((firstDate, i) => {\n\t\tif (months[i] === null) {\n\t\t\tmonths[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || ({} as MonthViewModel));\n\t\t}\n\t});\n\n\treturn months;\n}\n\nexport function buildMonth(\n\tcalendar: NgbCalendar,\n\tdate: NgbDate,\n\tstate: DatepickerViewModel,\n\ti18n: NgbDatepickerI18n,\n\tmonth: MonthViewModel = {} as MonthViewModel,\n): MonthViewModel {\n\tconst {\n\t\tdayTemplateData,\n\t\tminDate,\n\t\tmaxDate,\n\t\tfirstDayOfWeek,\n\t\tmarkDisabled,\n\t\toutsideDays,\n\t\tweekdayWidth,\n\t\tweekdaysVisible,\n\t} = state;\n\tconst calendarToday = calendar.getToday();\n\n\tmonth.firstDate = null;\n\tmonth.lastDate = null;\n\tmonth.number = date.month;\n\tmonth.year = date.year;\n\tmonth.weeks = month.weeks || [];\n\tmonth.weekdays = month.weekdays || [];\n\n\tdate = getFirstViewDate(calendar, date, firstDayOfWeek);\n\n\t// clearing weekdays, if not visible\n\tif (!weekdaysVisible) {\n\t\tmonth.weekdays.length = 0;\n\t}\n\n\t// month has weeks\n\tfor (let week = 0; week < calendar.getWeeksPerMonth(); week++) {\n\t\tlet weekObject = month.weeks[week];\n\t\tif (!weekObject) {\n\t\t\tweekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\n\t\t}\n\t\tconst days = weekObject.days;\n\n\t\t// week has days\n\t\tfor (let day = 0; day < calendar.getDaysPerWeek(); day++) {\n\t\t\tif (week === 0 && weekdaysVisible) {\n\t\t\t\tmonth.weekdays[day] = i18n.getWeekdayLabel(calendar.getWeekday(date), weekdayWidth);\n\t\t\t}\n\n\t\t\tconst newDate = new NgbDate(date.year, date.month, date.day);\n\t\t\tconst nextDate = calendar.getNext(newDate);\n\n\t\t\tconst ariaLabel = i18n.getDayAriaLabel(newDate);\n\n\t\t\t// marking date as disabled\n\t\t\tlet disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\n\t\t\tif (!disabled && markDisabled) {\n\t\t\t\tdisabled = markDisabled(newDate, { month: month.number, year: month.year });\n\t\t\t}\n\n\t\t\t// today\n\t\t\tlet today = newDate.equals(calendarToday);\n\n\t\t\t// adding user-provided data to the context\n\t\t\tlet contextUserData = dayTemplateData\n\t\t\t\t? dayTemplateData(newDate, { month: month.number, year: month.year })\n\t\t\t\t: undefined;\n\n\t\t\t// saving first date of the month\n\t\t\tif (month.firstDate === null && newDate.month === month.number) {\n\t\t\t\tmonth.firstDate = newDate;\n\t\t\t}\n\n\t\t\t// saving last date of the month\n\t\t\tif (newDate.month === month.number && nextDate.month !== month.number) {\n\t\t\t\tmonth.lastDate = newDate;\n\t\t\t}\n\n\t\t\tlet dayObject = days[day];\n\t\t\tif (!dayObject) {\n\t\t\t\tdayObject = days[day] = {} as DayViewModel;\n\t\t\t}\n\t\t\tdayObject.date = newDate;\n\t\t\tdayObject.context = Object.assign(dayObject.context || {}, {\n\t\t\t\t$implicit: newDate,\n\t\t\t\tdate: newDate,\n\t\t\t\tdata: contextUserData,\n\t\t\t\tcurrentMonth: month.number,\n\t\t\t\tcurrentYear: month.year,\n\t\t\t\tdisabled,\n\t\t\t\tfocused: false,\n\t\t\t\tselected: false,\n\t\t\t\ttoday,\n\t\t\t});\n\t\t\tdayObject.tabindex = -1;\n\t\t\tdayObject.ariaLabel = ariaLabel;\n\t\t\tdayObject.hidden = false;\n\n\t\t\tdate = nextDate;\n\t\t}\n\n\t\tweekObject.number = calendar.getWeekNumber(\n\t\t\tdays.map((day) => day.date),\n\t\t\tfirstDayOfWeek,\n\t\t);\n\n\t\t// marking week as collapsed\n\t\tweekObject.collapsed =\n\t\t\toutsideDays === 'collapsed' &&\n\t\t\tdays[0].date.month !== month.number &&\n\t\t\tdays[days.length - 1].date.month !== month.number;\n\t}\n\n\treturn month;\n}\n\nexport function getFirstViewDate(calendar: NgbCalendar, date: NgbDate, firstDayOfWeek: number): NgbDate {\n\tconst daysPerWeek = calendar.getDaysPerWeek();\n\tconst firstMonthDate = new NgbDate(date.year, date.month, 1);\n\tconst dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n\treturn calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n}\n","import { NgbDate } from './ngb-date';\nimport { Injectable } from '@angular/core';\nimport { isInteger } from '../util/util';\n\nexport function fromJSDate(jsDate: Date) {\n\treturn new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\nexport function toJSDate(date: NgbDate) {\n\tconst jsDate = new Date(date.year, date.month - 1, date.day, 12);\n\t// this is done avoid 30 -> 1930 conversion\n\tif (!isNaN(jsDate.getTime())) {\n\t\tjsDate.setFullYear(date.year);\n\t}\n\treturn jsDate;\n}\n\nexport type NgbPeriod = 'y' | 'm' | 'd';\n\nexport function NGB_DATEPICKER_CALENDAR_FACTORY() {\n\treturn new NgbCalendarGregorian();\n}\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 */\n@Injectable({ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY })\nexport abstract class NgbCalendar {\n\t/**\n\t * Returns the number of days per week.\n\t */\n\tabstract getDaysPerWeek(): number;\n\n\t/**\n\t * Returns an array of months per year.\n\t *\n\t * With default calendar we use ISO 8601 and return [1, 2, ..., 12];\n\t */\n\tabstract getMonths(year?: number): number[];\n\n\t/**\n\t * Returns the number of weeks per month.\n\t */\n\tabstract getWeeksPerMonth(): number;\n\n\t/**\n\t * Returns the weekday number for a given day.\n\t *\n\t * With the default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun\n\t */\n\tabstract getWeekday(date: NgbDate): number;\n\n\t/**\n\t * Adds a number of years, months or days to a given date.\n\t *\n\t * * `period` can be `y`, `m` or `d` and defaults to day.\n\t * * `number` defaults to 1.\n\t *\n\t * Always returns a new date.\n\t */\n\tabstract getNext(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n\n\t/**\n\t * Subtracts a number of years, months or days from a given date.\n\t *\n\t * * `period` can be `y`, `m` or `d` and defaults to day.\n\t * * `number` defaults to 1.\n\t *\n\t * Always returns a new date.\n\t */\n\tabstract getPrev(date: NgbDate, period?: NgbPeriod, number?: number): NgbDate;\n\n\t/**\n\t * Returns the week number for a given week.\n\t */\n\tabstract getWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number): number;\n\n\t/**\n\t * Returns the today's date.\n\t */\n\tabstract getToday(): NgbDate;\n\n\t/**\n\t * Checks if a date is valid in the current calendar.\n\t */\n\tabstract isValid(date?: NgbDate | null): boolean;\n}\n\n@Injectable()\nexport class NgbCalendarGregorian extends NgbCalendar {\n\tgetDaysPerWeek() {\n\t\treturn 7;\n\t}\n\n\tgetMonths() {\n\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\t}\n\n\tgetWeeksPerMonth() {\n\t\treturn 6;\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\tlet jsDate = toJSDate(date);\n\t\tlet checkMonth = true;\n\t\tlet expectedMonth = jsDate.getMonth();\n\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tjsDate.setFullYear(jsDate.getFullYear() + number);\n\t\t\t\tbreak;\n\t\t\tcase 'm':\n\t\t\t\texpectedMonth += number;\n\t\t\t\tjsDate.setMonth(expectedMonth);\n\t\t\t\texpectedMonth = expectedMonth % 12;\n\t\t\t\tif (expectedMonth < 0) {\n\t\t\t\t\texpectedMonth = expectedMonth + 12;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'd':\n\t\t\t\tjsDate.setDate(jsDate.getDate() + number);\n\t\t\t\tcheckMonth = false;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\n\t\tif (checkMonth && jsDate.getMonth() !== expectedMonth) {\n\t\t\t// this means the destination month has less days than the initial month\n\t\t\t// let's go back to the end of the previous month:\n\t\t\tjsDate.setDate(0);\n\t\t}\n\n\t\treturn fromJSDate(jsDate);\n\t}\n\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate) {\n\t\tlet jsDate = toJSDate(date);\n\t\tlet day = jsDate.getDay();\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\treturn day === 0 ? 7 : day;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number) {\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\tif (firstDayOfWeek === 7) {\n\t\t\tfirstDayOfWeek = 0;\n\t\t}\n\n\t\tconst thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n\t\tlet date = week[thursdayIndex];\n\n\t\tconst jsDate = toJSDate(date);\n\t\tjsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\t\tconst time = jsDate.getTime();\n\t\tjsDate.setMonth(0); // Compare with Jan 1\n\t\tjsDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n\t}\n\n\tgetToday(): NgbDate {\n\t\treturn fromJSDate(new Date());\n\t}\n\n\tisValid(date?: NgbDate | null): boolean {\n\t\tif (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// year 0 doesn't exist in Gregorian calendar\n\t\tif (date.year === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst jsDate = toJSDate(date);\n\n\t\treturn (\n\t\t\t!isNaN(jsDate.getTime()) &&\n\t\t\tjsDate.getFullYear() === date.year &&\n\t\t\tjsDate.getMonth() + 1 === date.month &&\n\t\t\tjsDate.getDate() === date.day\n\t\t);\n\t}\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { formatDate, FormStyle, getLocaleDayNames, getLocaleMonthNames, TranslationWidth } from '@angular/common';\nimport { NgbDateStruct } from './ngb-date-struct';\n\nexport function NGB_DATEPICKER_18N_FACTORY(locale) {\n\treturn new NgbDatepickerI18nDefault(locale);\n}\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 */\n@Injectable({ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [LOCALE_ID] })\nexport abstract class NgbDatepickerI18n {\n\t/**\n\t * Returns the weekday label using specified width\n\t *\n\t * @since 9.1.0\n\t */\n\tabstract getWeekdayLabel(weekday: number, width?: TranslationWidth): string;\n\n\t/**\n\t * Returns the short month name to display in the date picker navigation.\n\t *\n\t * With default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t */\n\tabstract getMonthShortName(month: number, year?: number): string;\n\n\t/**\n\t * Returns the full month name to display in the date picker navigation.\n\t *\n\t * With default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t */\n\tabstract getMonthFullName(month: number, year?: number): string;\n\n\t/**\n\t * Returns the text label to display above the day view.\n\t *\n\t * @since 9.1.0\n\t */\n\tgetMonthLabel(date: NgbDateStruct): string {\n\t\treturn `${this.getMonthFullName(date.month, date.year)} ${this.getYearNumerals(date.year)}`;\n\t}\n\n\t/**\n\t * Returns the value of the `aria-label` attribute for a specific date.\n\t *\n\t * @since 2.0.0\n\t */\n\tabstract getDayAriaLabel(date: NgbDateStruct): string;\n\n\t/**\n\t * Returns the textual representation of a day that is rendered in a day cell.\n\t *\n\t * @since 3.0.0\n\t */\n\tgetDayNumerals(date: NgbDateStruct): string {\n\t\treturn `${date.day}`;\n\t}\n\n\t/**\n\t * Returns the textual representation of a week number rendered by datepicker.\n\t *\n\t * @since 3.0.0\n\t */\n\tgetWeekNumerals(weekNumber: number): string {\n\t\treturn `${weekNumber}`;\n\t}\n\n\t/**\n\t * Returns the textual representation of a year that is rendered in the datepicker year select box.\n\t *\n\t * @since 3.0.0\n\t */\n\tgetYearNumerals(year: number): string {\n\t\treturn `${year}`;\n\t}\n\n\t/**\n\t * Returns the week label to display in the heading of the month view.\n\t *\n\t * @since 9.1.0\n\t */\n\tgetWeekLabel(): string {\n\t\treturn '';\n\t}\n}\n\n/**\n * A service providing default implementation for the datepicker i18n.\n * It can be used as a base implementation if necessary.\n *\n * @since 9.1.0\n */\n@Injectable()\nexport class NgbDatepickerI18nDefault extends NgbDatepickerI18n {\n\tprivate _monthsShort: readonly string[];\n\tprivate _monthsFull: readonly string[];\n\n\tconstructor(@Inject(LOCALE_ID) private _locale: string) {\n\t\tsuper();\n\n\t\tthis._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\n\t\tthis._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\n\t}\n\n\tgetWeekdayLabel(weekday: number, width?: TranslationWidth): string {\n\t\tconst weekdaysStartingOnSunday = getLocaleDayNames(\n\t\t\tthis._locale,\n\t\t\tFormStyle.Standalone,\n\t\t\twidth === undefined ? TranslationWidth.Short : width,\n\t\t);\n\t\tconst weekdays = weekdaysStartingOnSunday.map((day, index) => weekdaysStartingOnSunday[(index + 1) % 7]);\n\t\treturn weekdays[weekday - 1] || '';\n\t}\n\n\tgetMonthShortName(month: number): string {\n\t\treturn this._monthsShort[month - 1] || '';\n\t}\n\n\tgetMonthFullName(month: number): string {\n\t\treturn this._monthsFull[month - 1] || '';\n\t}\n\n\tgetDayAriaLabel(date: NgbDateStruct): string {\n\t\tconst jsDate = new Date(date.year, date.month - 1, date.day);\n\t\treturn formatDate(jsDate, 'fullDate', this._locale);\n\t}\n}\n","import { NgbCalendar } from './ngb-calendar';\nimport { NgbDate } from './ngb-date';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { DatepickerViewModel, NgbDayTemplateData, NgbMarkDisabled } from './datepicker-view-model';\nimport { Injectable } from '@angular/core';\nimport { isInteger, toInteger } from '../util/util';\nimport { Observable, Subject } from 'rxjs';\nimport {\n\tbuildMonths,\n\tcheckDateInRange,\n\tcheckMinBeforeMax,\n\tgenerateSelectBoxMonths,\n\tgenerateSelectBoxYears,\n\tisChangedDate,\n\tisChangedMonth,\n\tisDateSelectable,\n\tnextMonthDisabled,\n\tprevMonthDisabled,\n} from './datepicker-tools';\n\nimport { filter } from 'rxjs/operators';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nimport { TranslationWidth } from '@angular/common';\n\nexport type DatepickerServiceInputs = Partial<{\n\tdayTemplateData: NgbDayTemplateData;\n\tdisplayMonths: number;\n\tdisabled: boolean;\n\tfirstDayOfWeek: number;\n\tfocusVisible: boolean;\n\tmarkDisabled: NgbMarkDisabled;\n\tmaxDate: NgbDate | null;\n\tminDate: NgbDate | null;\n\tnavigation: 'select' | 'arrows' | 'none';\n\toutsideDays: 'visible' | 'collapsed' | 'hidden';\n\tweekdays: TranslationWidth | boolean;\n}>;\n\n@Injectable()\nexport class NgbDatepickerService {\n\tprivate _VALIDATORS: {\n\t\t[K in keyof DatepickerServiceInputs]: (v: DatepickerServiceInputs[K]) => Partial | void;\n\t} = {\n\t\tdayTemplateData: (dayTemplateData: NgbDayTemplateData) => {\n\t\t\tif (this._state.dayTemplateData !== dayTemplateData) {\n\t\t\t\treturn { dayTemplateData };\n\t\t\t}\n\t\t},\n\t\tdisplayMonths: (displayMonths: number) => {\n\t\t\tdisplayMonths = toInteger(displayMonths);\n\t\t\tif (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\n\t\t\t\treturn { displayMonths };\n\t\t\t}\n\t\t},\n\t\tdisabled: (disabled: boolean) => {\n\t\t\tif (this._state.disabled !== disabled) {\n\t\t\t\treturn { disabled };\n\t\t\t}\n\t\t},\n\t\tfirstDayOfWeek: (firstDayOfWeek: number) => {\n\t\t\tfirstDayOfWeek = toInteger(firstDayOfWeek);\n\t\t\tif (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\n\t\t\t\treturn { firstDayOfWeek };\n\t\t\t}\n\t\t},\n\t\tfocusVisible: (focusVisible: boolean) => {\n\t\t\tif (this._state.focusVisible !== focusVisible && !this._state.disabled) {\n\t\t\t\treturn { focusVisible };\n\t\t\t}\n\t\t},\n\t\tmarkDisabled: (markDisabled: NgbMarkDisabled) => {\n\t\t\tif (this._state.markDisabled !== markDisabled) {\n\t\t\t\treturn { markDisabled };\n\t\t\t}\n\t\t},\n\t\tmaxDate: (date: NgbDate | null) => {\n\t\t\tconst maxDate = this.toValidDate(date, null);\n\t\t\tif (isChangedDate(this._state.maxDate, maxDate)) {\n\t\t\t\treturn { maxDate };\n\t\t\t}\n\t\t},\n\t\tminDate: (date: NgbDate | null) => {\n\t\t\tconst minDate = this.toValidDate(date, null);\n\t\t\tif (isChangedDate(this._state.minDate, minDate)) {\n\t\t\t\treturn { minDate };\n\t\t\t}\n\t\t},\n\t\tnavigation: (navigation: 'select' | 'arrows' | 'none') => {\n\t\t\tif (this._state.navigation !== navigation) {\n\t\t\t\treturn { navigation };\n\t\t\t}\n\t\t},\n\t\toutsideDays: (outsideDays: 'visible' | 'collapsed' | 'hidden') => {\n\t\t\tif (this._state.outsideDays !== outsideDays) {\n\t\t\t\treturn { outsideDays };\n\t\t\t}\n\t\t},\n\t\tweekdays: (weekdays: boolean | TranslationWidth) => {\n\t\t\tconst weekdayWidth = weekdays === true || weekdays === false ? TranslationWidth.Short : weekdays;\n\t\t\tconst weekdaysVisible = weekdays === true || weekdays === false ? weekdays : true;\n\t\t\tif (this._state.weekdayWidth !== weekdayWidth || this._state.weekdaysVisible !== weekdaysVisible) {\n\t\t\t\treturn { weekdayWidth, weekdaysVisible };\n\t\t\t}\n\t\t},\n\t};\n\n\tprivate _model$ = new Subject();\n\n\tprivate _dateSelect$ = new Subject();\n\n\tprivate _state: DatepickerViewModel = {\n\t\tdayTemplateData: null,\n\t\tmarkDisabled: null,\n\t\tmaxDate: null,\n\t\tminDate: null,\n\t\tdisabled: false,\n\t\tdisplayMonths: 1,\n\t\tfirstDate: null,\n\t\tfirstDayOfWeek: 1,\n\t\tlastDate: null,\n\t\tfocusDate: null,\n\t\tfocusVisible: false,\n\t\tmonths: [],\n\t\tnavigation: 'select',\n\t\toutsideDays: 'visible',\n\t\tprevDisabled: false,\n\t\tnextDisabled: false,\n\t\tselectedDate: null,\n\t\tselectBoxes: { years: [], months: [] },\n\t\tweekdayWidth: TranslationWidth.Short,\n\t\tweekdaysVisible: true,\n\t};\n\n\tget model$(): Observable {\n\t\treturn this._model$.pipe(filter((model) => model.months.length > 0));\n\t}\n\n\tget dateSelect$(): Observable {\n\t\treturn this._dateSelect$.pipe(filter((date) => date !== null));\n\t}\n\n\tset(options: DatepickerServiceInputs) {\n\t\tlet patch = Object.keys(options)\n\t\t\t.map((key) => this._VALIDATORS[key](options[key]))\n\t\t\t.reduce((obj, part) => ({ ...obj, ...part }), {});\n\n\t\tif (Object.keys(patch).length > 0) {\n\t\t\tthis._nextState(patch);\n\t\t}\n\t}\n\n\tconstructor(private _calendar: NgbCalendar, private _i18n: NgbDatepickerI18n) {}\n\n\tfocus(date?: NgbDate | null) {\n\t\tconst focusedDate = this.toValidDate(date, null);\n\t\tif (focusedDate != null && !this._state.disabled && isChangedDate(this._state.focusDate, focusedDate)) {\n\t\t\tthis._nextState({ focusDate: date });\n\t\t}\n\t}\n\n\tfocusSelect() {\n\t\tif (isDateSelectable(this._state.focusDate, this._state)) {\n\t\t\tthis.select(this._state.focusDate, { emitEvent: true });\n\t\t}\n\t}\n\n\topen(date?: NgbDate | null) {\n\t\tconst firstDate = this.toValidDate(date, this._calendar.getToday());\n\t\tif (\n\t\t\tfirstDate != null &&\n\t\t\t!this._state.disabled &&\n\t\t\t(!this._state.firstDate || isChangedMonth(this._state.firstDate, firstDate))\n\t\t) {\n\t\t\tthis._nextState({ firstDate });\n\t\t}\n\t}\n\n\tselect(date?: NgbDate | null, options: { emitEvent?: boolean } = {}) {\n\t\tconst selectedDate = this.toValidDate(date, null);\n\t\tif (selectedDate != null && !this._state.disabled) {\n\t\t\tif (isChangedDate(this._state.selectedDate, selectedDate)) {\n\t\t\t\tthis._nextState({ selectedDate });\n\t\t\t}\n\n\t\t\tif (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n\t\t\t\tthis._dateSelect$.next(selectedDate);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoValidDate(date?: NgbDateStruct | null, defaultValue?: NgbDate | null): NgbDate | null {\n\t\tconst ngbDate = NgbDate.from(date);\n\t\tif (defaultValue === undefined) {\n\t\t\tdefaultValue = this._calendar.getToday();\n\t\t}\n\t\treturn this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n\t}\n\n\tgetMonth(struct: NgbDateStruct) {\n\t\tfor (let month of this._state.months) {\n\t\t\tif (struct.month === month.number && struct.year === month.year) {\n\t\t\t\treturn month;\n\t\t\t}\n\t\t}\n\t\tthrow new Error(`month ${struct.month} of year ${struct.year} not found`);\n\t}\n\n\tprivate _nextState(patch: Partial) {\n\t\tconst newState = this._updateState(patch);\n\t\tthis._patchContexts(newState);\n\t\tthis._state = newState;\n\t\tthis._model$.next(this._state);\n\t}\n\n\tprivate _patchContexts(state: DatepickerViewModel) {\n\t\tconst { months, displayMonths, selectedDate, focusDate, focusVisible, disabled, outsideDays } = state;\n\t\tstate.months.forEach((month) => {\n\t\t\tmonth.weeks.forEach((week) => {\n\t\t\t\tweek.days.forEach((day) => {\n\t\t\t\t\t// patch focus flag\n\t\t\t\t\tif (focusDate) {\n\t\t\t\t\t\tday.context.focused = focusDate.equals(day.date) && focusVisible;\n\t\t\t\t\t}\n\n\t\t\t\t\t// calculating tabindex\n\t\t\t\t\tday.tabindex =\n\t\t\t\t\t\t!disabled && focusDate && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n\n\t\t\t\t\t// override context disabled\n\t\t\t\t\tif (disabled === true) {\n\t\t\t\t\t\tday.context.disabled = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// patch selection flag\n\t\t\t\t\tif (selectedDate !== undefined) {\n\t\t\t\t\t\tday.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n\t\t\t\t\t}\n\n\t\t\t\t\t// visibility\n\t\t\t\t\tif (month.number !== day.date.month) {\n\t\t\t\t\t\tday.hidden =\n\t\t\t\t\t\t\toutsideDays === 'hidden' ||\n\t\t\t\t\t\t\toutsideDays === 'collapsed' ||\n\t\t\t\t\t\t\t(displayMonths > 1 &&\n\t\t\t\t\t\t\t\tday.date.after(months[0].firstDate) &&\n\t\t\t\t\t\t\t\tday.date.before(months[displayMonths - 1].lastDate));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate _updateState(patch: Partial): DatepickerViewModel {\n\t\t// patching fields\n\t\tconst state = Object.assign({}, this._state, patch);\n\n\t\tlet startDate = state.firstDate;\n\n\t\t// min/max dates changed\n\t\tif ('minDate' in patch || 'maxDate' in patch) {\n\t\t\tcheckMinBeforeMax(state.minDate, state.maxDate);\n\t\t\tstate.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n\t\t\tstate.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n\t\t\tstartDate = state.focusDate;\n\t\t}\n\n\t\t// disabled\n\t\tif ('disabled' in patch) {\n\t\t\tstate.focusVisible = false;\n\t\t}\n\n\t\t// initial rebuild via 'select()'\n\t\tif ('selectedDate' in patch && this._state.months.length === 0) {\n\t\t\tstartDate = state.selectedDate;\n\t\t}\n\n\t\t// terminate early if only focus visibility was changed\n\t\tif ('focusVisible' in patch) {\n\t\t\treturn state;\n\t\t}\n\n\t\t// focus date changed\n\t\tif ('focusDate' in patch) {\n\t\t\tstate.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n\t\t\tstartDate = state.focusDate;\n\n\t\t\t// nothing to rebuild if only focus changed and it is still visible\n\t\t\tif (\n\t\t\t\tstate.months.length !== 0 &&\n\t\t\t\tstate.focusDate &&\n\t\t\t\t!state.focusDate.before(state.firstDate) &&\n\t\t\t\t!state.focusDate.after(state.lastDate)\n\t\t\t) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// first date changed\n\t\tif ('firstDate' in patch) {\n\t\t\tstate.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n\t\t\tstartDate = state.firstDate;\n\t\t}\n\n\t\t// rebuilding months\n\t\tif (startDate) {\n\t\t\tconst forceRebuild =\n\t\t\t\t'dayTemplateData' in patch ||\n\t\t\t\t'firstDayOfWeek' in patch ||\n\t\t\t\t'markDisabled' in patch ||\n\t\t\t\t'minDate' in patch ||\n\t\t\t\t'maxDate' in patch ||\n\t\t\t\t'disabled' in patch ||\n\t\t\t\t'outsideDays' in patch ||\n\t\t\t\t'weekdaysVisible' in patch;\n\n\t\t\tconst months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n\n\t\t\t// updating months and boundary dates\n\t\t\tstate.months = months;\n\t\t\tstate.firstDate = months[0].firstDate;\n\t\t\tstate.lastDate = months[months.length - 1].lastDate;\n\n\t\t\t// reset selected date if 'markDisabled' returns true\n\t\t\tif ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n\t\t\t\tstate.selectedDate = null;\n\t\t\t}\n\n\t\t\t// adjusting focus after months were built\n\t\t\tif ('firstDate' in patch) {\n\t\t\t\tif (!state.focusDate || state.focusDate.before(state.firstDate) || state.focusDate.after(state.lastDate)) {\n\t\t\t\t\tstate.focusDate = startDate;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// adjusting months/years for the select box navigation\n\t\t\tconst yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n\t\t\tconst monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n\t\t\tif (state.navigation === 'select') {\n\t\t\t\t// years -> boundaries (min/max were changed)\n\t\t\t\tif ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n\t\t\t\t\tstate.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n\t\t\t\t}\n\n\t\t\t\t// months -> when current year or boundaries change\n\t\t\t\tif ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n\t\t\t\t\tstate.selectBoxes.months = generateSelectBoxMonths(\n\t\t\t\t\t\tthis._calendar,\n\t\t\t\t\t\tstate.firstDate,\n\t\t\t\t\t\tstate.minDate,\n\t\t\t\t\t\tstate.maxDate,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstate.selectBoxes = { years: [], months: [] };\n\t\t\t}\n\n\t\t\t// updating navigation arrows -> boundaries change (min/max) or month/year changes\n\t\t\tif (\n\t\t\t\t(state.navigation === 'arrows' || state.navigation === 'select') &&\n\t\t\t\t(monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)\n\t\t\t) {\n\t\t\t\tstate.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n\t\t\t\tstate.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t}\n}\n","import { NgbDate } from './ngb-date';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nimport { TranslationWidth } from '@angular/common';\n\nexport type NgbMarkDisabled = (date: NgbDateStruct, current?: { year: number; month: number }) => boolean;\nexport type NgbDayTemplateData = (date: NgbDateStruct, current?: { year: number; month: number }) => any;\n\nexport type DayViewModel = {\n\tdate: NgbDate;\n\tcontext: DayTemplateContext;\n\ttabindex: number;\n\tariaLabel: string;\n\thidden: boolean;\n};\n\nexport type WeekViewModel = {\n\tnumber: number;\n\tdays: DayViewModel[];\n\tcollapsed: boolean;\n};\n\nexport type MonthViewModel = {\n\tfirstDate: NgbDate;\n\tlastDate: NgbDate;\n\tnumber: number;\n\tyear: number;\n\tweeks: WeekViewModel[];\n\tweekdays: string[];\n};\n\nexport type DatepickerViewModel = {\n\tdayTemplateData: NgbDayTemplateData | null;\n\tdisabled: boolean;\n\tdisplayMonths: number;\n\tfirstDate: NgbDate | null;\n\tfirstDayOfWeek: number;\n\tfocusDate: NgbDate | null;\n\tfocusVisible: boolean;\n\tlastDate: NgbDate | null;\n\tmarkDisabled: NgbMarkDisabled | null;\n\tmaxDate: NgbDate | null;\n\tminDate: NgbDate | null;\n\tmonths: MonthViewModel[];\n\tnavigation: 'select' | 'arrows' | 'none';\n\toutsideDays: 'visible' | 'collapsed' | 'hidden';\n\tprevDisabled: boolean;\n\tnextDisabled: boolean;\n\tselectBoxes: {\n\t\tyears: number[];\n\t\tmonths: number[];\n\t};\n\tselectedDate: NgbDate | null;\n\tweekdayWidth: TranslationWidth;\n\tweekdaysVisible: boolean;\n};\n\nexport enum NavigationEvent {\n\tPREV,\n\tNEXT,\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { NgbDate } from './ngb-date';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\n\n@Component({\n\tselector: '[ngbDatepickerDayView]',\n\tstandalone: true,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrls: ['./datepicker-day-view.scss'],\n\thost: {\n\t\tclass: 'btn-light',\n\t\t'[class.bg-primary]': 'selected',\n\t\t'[class.text-white]': 'selected',\n\t\t'[class.text-muted]': 'isMuted()',\n\t\t'[class.outside]': 'isMuted()',\n\t\t'[class.active]': 'focused',\n\t},\n\ttemplate: `{{ i18n.getDayNumerals(date) }}`,\n})\nexport class NgbDatepickerDayView {\n\t@Input() currentMonth: number;\n\t@Input() date: NgbDate;\n\t@Input() disabled: boolean;\n\t@Input() focused: boolean;\n\t@Input() selected: boolean;\n\n\tconstructor(public i18n: NgbDatepickerI18n) {}\n\n\tisMuted() {\n\t\treturn !this.selected && (this.date.month !== this.currentMonth || this.disabled);\n\t}\n}\n","import {\n\tComponent,\n\tInput,\n\tOutput,\n\tEventEmitter,\n\tChangeDetectionStrategy,\n\tViewEncapsulation,\n\tAfterViewChecked,\n\tViewChild,\n\tElementRef,\n\tRenderer2,\n} from '@angular/core';\nimport { NgbDate } from './ngb-date';\nimport { toInteger } from '../util/util';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nimport { NgFor } from '@angular/common';\n\n@Component({\n\tselector: 'ngb-datepicker-navigation-select',\n\tstandalone: true,\n\timports: [NgFor],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrls: ['./datepicker-navigation-select.scss'],\n\ttemplate: `\n\t\t\n\t\t\t \n\t\t\t\n\t\t\n\t`,\n})\nexport class NgbDatepickerNavigationSelect implements AfterViewChecked {\n\t@Input() date: NgbDate;\n\t@Input() disabled: boolean;\n\t@Input() months: number[];\n\t@Input() years: number[];\n\n\t@Output() select = new EventEmitter();\n\n\t@ViewChild('month', { static: true, read: ElementRef }) monthSelect: ElementRef;\n\t@ViewChild('year', { static: true, read: ElementRef }) yearSelect: ElementRef;\n\n\tprivate _month = -1;\n\tprivate _year = -1;\n\n\tconstructor(public i18n: NgbDatepickerI18n, private _renderer: Renderer2) {}\n\n\tchangeMonth(month: string) {\n\t\tthis.select.emit(new NgbDate(this.date.year, toInteger(month), 1));\n\t}\n\n\tchangeYear(year: string) {\n\t\tthis.select.emit(new NgbDate(toInteger(year), this.date.month, 1));\n\t}\n\n\tngAfterViewChecked() {\n\t\tif (this.date) {\n\t\t\tif (this.date.month !== this._month) {\n\t\t\t\tthis._month = this.date.month;\n\t\t\t\tthis._renderer.setProperty(this.monthSelect.nativeElement, 'value', this._month);\n\t\t\t}\n\t\t\tif (this.date.year !== this._year) {\n\t\t\t\tthis._year = this.date.year;\n\t\t\t\tthis._renderer.setProperty(this.yearSelect.nativeElement, 'value', this._year);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport { NavigationEvent, MonthViewModel } from './datepicker-view-model';\nimport { NgbDate } from './ngb-date';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nimport { NgFor, NgIf } from '@angular/common';\nimport { NgbDatepickerNavigationSelect } from './datepicker-navigation-select';\n\n@Component({\n\tselector: 'ngb-datepicker-navigation',\n\tstandalone: true,\n\timports: [NgIf, NgFor, NgbDatepickerNavigationSelect],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrls: ['./datepicker-navigation.scss'],\n\ttemplate: `\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\n\t\t\n\t\t\t
0\">
\n\t\t\t
\n\t\t\t\t{{ i18n.getMonthLabel(month.firstDate) }}\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t`,\n})\nexport class NgbDatepickerNavigation {\n\tnavigation = NavigationEvent;\n\n\t@Input() date: NgbDate;\n\t@Input() disabled: boolean;\n\t@Input() months: MonthViewModel[] = [];\n\t@Input() showSelect: boolean;\n\t@Input() prevDisabled: boolean;\n\t@Input() nextDisabled: boolean;\n\t@Input() selectBoxes: { years: number[]; months: number[] };\n\n\t@Output() navigate = new EventEmitter();\n\t@Output() select = new EventEmitter();\n\n\tconstructor(public i18n: NgbDatepickerI18n) {}\n\n\tonClickPrev(event: MouseEvent) {\n\t\t(event.currentTarget as HTMLElement).focus();\n\t\tthis.navigate.emit(this.navigation.PREV);\n\t}\n\n\tonClickNext(event: MouseEvent) {\n\t\t(event.currentTarget as HTMLElement).focus();\n\t\tthis.navigate.emit(this.navigation.NEXT);\n\t}\n}\n","export enum Key {\n\tTab = 9,\n\tEnter = 13,\n\tEscape = 27,\n\tSpace = 32,\n\tPageUp = 33,\n\tPageDown = 34,\n\tEnd = 35,\n\tHome = 36,\n\tArrowLeft = 37,\n\tArrowUp = 38,\n\tArrowRight = 39,\n\tArrowDown = 40,\n}\n","import { Injectable } from '@angular/core';\nimport { NgbDatepicker } from './datepicker';\nimport { Key } from '../util/key';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbDatepickerKeyboardService {\n\t/**\n\t * Processes a keyboard event.\n\t */\n\tprocessKey(event: KeyboardEvent, datepicker: NgbDatepicker) {\n\t\tconst { state, calendar } = datepicker;\n\t\t/* eslint-disable-next-line deprecation/deprecation */\n\t\tswitch (event.which) {\n\t\t\tcase Key.PageUp:\n\t\t\t\tdatepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n\t\t\t\tbreak;\n\t\t\tcase Key.PageDown:\n\t\t\t\tdatepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n\t\t\t\tbreak;\n\t\t\tcase Key.End:\n\t\t\t\tdatepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\n\t\t\t\tbreak;\n\t\t\tcase Key.Home:\n\t\t\t\tdatepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\n\t\t\t\tbreak;\n\t\t\tcase Key.ArrowLeft:\n\t\t\t\tdatepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\n\t\t\t\tbreak;\n\t\t\tcase Key.ArrowUp:\n\t\t\t\tdatepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n\t\t\t\tbreak;\n\t\t\tcase Key.ArrowRight:\n\t\t\t\tdatepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\n\t\t\t\tbreak;\n\t\t\tcase Key.ArrowDown:\n\t\t\t\tdatepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n\t\t\t\tbreak;\n\t\t\tcase Key.Enter:\n\t\t\tcase Key.Space:\n\t\t\t\tdatepicker.focusSelect();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t}\n}\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { TranslationWidth } from '@angular/common';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nimport { NgbDateStruct } from './ngb-date-struct';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbDatepickerConfig {\n\tdayTemplate: TemplateRef;\n\tdayTemplateData: (date: NgbDateStruct, current?: { year: number; month: number }) => any;\n\tfooterTemplate: TemplateRef;\n\tdisplayMonths = 1;\n\tfirstDayOfWeek = 1;\n\tmarkDisabled: (date: NgbDateStruct, current?: { year: number; month: number }) => boolean;\n\tminDate: NgbDateStruct;\n\tmaxDate: NgbDateStruct;\n\tnavigation: 'select' | 'arrows' | 'none' = 'select';\n\toutsideDays: 'visible' | 'collapsed' | 'hidden' = 'visible';\n\tshowWeekNumbers = false;\n\tstartDate: { year: number; month: number };\n\tweekdays: TranslationWidth | boolean = TranslationWidth.Short;\n}\n","import { Injectable } from '@angular/core';\nimport { NgbDateStruct } from '../ngb-date-struct';\nimport { isInteger } from '../../util/util';\n\nexport function NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n\treturn new NgbDateStructAdapter();\n}\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 */\n@Injectable({ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY })\nexport abstract class NgbDateAdapter {\n\t/**\n\t * Converts a user-model date of type `D` to an `NgbDateStruct` for internal use.\n\t */\n\tabstract fromModel(value: D | null): NgbDateStruct | null;\n\n\t/**\n\t * Converts an internal `NgbDateStruct` date to a user-model date of type `D`.\n\t */\n\tabstract toModel(date: NgbDateStruct | null): D | null;\n}\n\n@Injectable()\nexport class NgbDateStructAdapter extends NgbDateAdapter {\n\t/**\n\t * Converts a NgbDateStruct value into NgbDateStruct value\n\t */\n\tfromModel(date: NgbDateStruct | null): NgbDateStruct | null {\n\t\treturn date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)\n\t\t\t? { year: date.year, month: date.month, day: date.day }\n\t\t\t: null;\n\t}\n\n\t/**\n\t * Converts a NgbDateStruct value into NgbDateStruct value\n\t */\n\ttoModel(date: NgbDateStruct | null): NgbDateStruct | null {\n\t\treturn date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)\n\t\t\t? { year: date.year, month: date.month, day: date.day }\n\t\t\t: null;\n\t}\n}\n","import { fromEvent, merge, Subject } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\nimport {\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChild,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tinject,\n\tInject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgFor, NgIf, NgTemplateOutlet, TranslationWidth } from '@angular/common';\n\nimport { NgbCalendar } from './ngb-calendar';\nimport { NgbDate } from './ngb-date';\nimport { DatepickerServiceInputs, NgbDatepickerService } from './datepicker-service';\nimport { DatepickerViewModel, DayViewModel, MonthViewModel, NavigationEvent } from './datepicker-view-model';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nimport { NgbDatepickerConfig } from './datepicker-config';\nimport { NgbDateAdapter } from './adapters/ngb-date-adapter';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { NgbDatepickerI18n } from './datepicker-i18n';\nimport { NgbDatepickerKeyboardService } from './datepicker-keyboard-service';\nimport { isChangedDate, isChangedMonth } from './datepicker-tools';\nimport { NgbDatepickerDayView } from './datepicker-day-view';\nimport { NgbDatepickerNavigation } from './datepicker-navigation';\nimport { ContentTemplateContext } from './datepicker-content-template-context';\n\n/**\n * An event emitted right before the navigation happens and the month displayed by the datepicker changes.\n */\nexport interface NgbDatepickerNavigateEvent {\n\t/**\n\t * The currently displayed month.\n\t */\n\tcurrent: { year: number; month: number } | null;\n\n\t/**\n\t * The month we're navigating to.\n\t */\n\tnext: { year: number; month: number };\n\n\t/**\n\t * Calling this function will prevent navigation from happening.\n\t *\n\t * @since 4.1.0\n\t */\n\tpreventDefault: () => void;\n}\n\n/**\n * An interface that represents the readonly public state of the datepicker.\n *\n * Accessible via the `datepicker.state` getter\n *\n * @since 5.2.0\n */\nexport interface NgbDatepickerState {\n\t/**\n\t * The earliest date that can be displayed or selected\n\t */\n\treadonly minDate: NgbDate | null;\n\n\t/**\n\t * The latest date that can be displayed or selected\n\t */\n\treadonly maxDate: NgbDate | null;\n\n\t/**\n\t * The first visible date of currently displayed months\n\t */\n\treadonly firstDate: NgbDate;\n\n\t/**\n\t * The last visible date of currently displayed months\n\t */\n\treadonly lastDate: NgbDate;\n\n\t/**\n\t * The date currently focused by the datepicker\n\t */\n\treadonly focusedDate: NgbDate;\n\n\t/**\n\t * First dates of months currently displayed by the datepicker\n\t *\n\t * @since 5.3.0\n\t */\n\treadonly months: NgbDate[];\n}\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 */\n@Directive({ selector: 'ng-template[ngbDatepickerContent]', standalone: true })\nexport class NgbDatepickerContent {\n\tconstructor(public templateRef: TemplateRef) {}\n}\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 */\n@Component({\n\tselector: 'ngb-datepicker-month',\n\tstandalone: true,\n\timports: [NgIf, NgFor, NgTemplateOutlet],\n\thost: { role: 'grid', '(keydown)': 'onKeyDown($event)' },\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrls: ['./datepicker-month.scss'],\n\ttemplate: `\n\t\t
0\" class=\"ngb-dp-week ngb-dp-weekdays\" role=\"row\">\n\t\t\t
{{\n\t\t\t\ti18n.getWeekLabel()\n\t\t\t}}
\n\t\t\t
{{\n\t\t\t\tweekday\n\t\t\t}}
\n\t\t
\n\t\t\n\t\t\t
\n\t\t\t\t
{{\n\t\t\t\t\ti18n.getWeekNumerals(week.number)\n\t\t\t\t}}
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t
\n\t`,\n})\nexport class NgbDatepickerMonth {\n\t/**\n\t * The first date of month to be rendered.\n\t *\n\t * This month must one of the months present in the\n\t * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\n\t */\n\t@Input()\n\tset month(month: NgbDateStruct) {\n\t\tthis.viewModel = this._service.getMonth(month);\n\t}\n\n\tviewModel: MonthViewModel;\n\n\tconstructor(\n\t\tpublic i18n: NgbDatepickerI18n,\n\t\t@Inject(forwardRef(() => NgbDatepicker)) public datepicker: NgbDatepicker,\n\t\tprivate _keyboardService: NgbDatepickerKeyboardService,\n\t\tprivate _service: NgbDatepickerService,\n\t) {}\n\n\tonKeyDown(event: KeyboardEvent) {\n\t\tthis._keyboardService.processKey(event, this.datepicker);\n\t}\n\n\tdoSelect(day: DayViewModel) {\n\t\tif (!day.context.disabled && !day.hidden) {\n\t\t\tthis.datepicker.onDateSelect(day.date);\n\t\t}\n\t}\n}\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 */\n@Component({\n\texportAs: 'ngbDatepicker',\n\tselector: 'ngb-datepicker',\n\tstandalone: true,\n\timports: [NgIf, NgFor, NgTemplateOutlet, NgbDatepickerDayView, NgbDatepickerMonth, NgbDatepickerNavigation],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrls: ['./datepicker.scss'],\n\thost: { '[class.disabled]': 'model.disabled' },\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\n\t\t\n\t\t\t
\n\t\t\t\t
1 && navigation === 'select')\" class=\"ngb-dp-month-name\">\n\t\t\t\t\t{{ i18n.getMonthLabel(month.firstDate) }}\n\t\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t
\n\n\t\t\n\t`,\n\tproviders: [\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true },\n\t\tNgbDatepickerService,\n\t],\n})\nexport class NgbDatepicker implements AfterViewInit, OnDestroy, OnChanges, OnInit, ControlValueAccessor {\n\tstatic ngAcceptInputType_autoClose: boolean | string;\n\tstatic ngAcceptInputType_navigation: string;\n\tstatic ngAcceptInputType_outsideDays: string;\n\tstatic ngAcceptInputType_weekdays: boolean | number;\n\n\tmodel: DatepickerViewModel;\n\n\t@ViewChild('defaultDayTemplate', { static: true }) private _defaultDayTemplate: TemplateRef;\n\t@ViewChild('content', { static: true }) private _contentEl: ElementRef;\n\n\tprotected injector = inject(Injector);\n\n\tprivate _controlValue: NgbDate | null = null;\n\tprivate _destroyed$ = new Subject();\n\tprivate _publicState: NgbDatepickerState = {};\n\n\t/**\n\t * The reference to a custom content template.\n\t *\n\t * Allows to completely override the way datepicker displays months.\n\t *\n\t * See [`NgbDatepickerContent`](#/components/datepicker/api#NgbDatepickerContent) and\n\t * [`ContentTemplateContext`](#/components/datepicker/api#ContentTemplateContext) for more details.\n\t *\n\t * @since 14.2.0\n\t */\n\t@Input() contentTemplate: TemplateRef;\n\t@ContentChild(NgbDatepickerContent, { static: true }) contentTemplateFromContent?: NgbDatepickerContent;\n\n\t/**\n\t * The reference to a custom template for the day.\n\t *\n\t * Allows to completely override the way a day 'cell' in the calendar is displayed.\n\t *\n\t * See [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext) for the data you get inside.\n\t */\n\t@Input() dayTemplate: TemplateRef;\n\n\t/**\n\t * The callback to pass any arbitrary data to the template cell via the\n\t * [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext)'s `data` parameter.\n\t *\n\t * `current` is the month that is currently displayed by the datepicker.\n\t *\n\t * @since 3.3.0\n\t */\n\t@Input() dayTemplateData: (date: NgbDate, current?: { year: number; month: number }) => any;\n\n\t/**\n\t * The number of months to display.\n\t */\n\t@Input() displayMonths: number;\n\n\t/**\n\t * The first day of the week.\n\t *\n\t * With default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun.\n\t */\n\t@Input() firstDayOfWeek: number;\n\n\t/**\n\t * The reference to the custom template for the datepicker footer.\n\t *\n\t * @since 3.3.0\n\t */\n\t@Input() footerTemplate: TemplateRef;\n\n\t/**\n\t * The callback to mark some dates as disabled.\n\t *\n\t * It is called for each new date when navigating to a different month.\n\t *\n\t * `current` is the month that is currently displayed by the datepicker.\n\t */\n\t@Input() markDisabled: (date: NgbDate, current?: { year: number; month: number }) => boolean;\n\n\t/**\n\t * The latest date that can be displayed or selected.\n\t *\n\t * If not provided, 'year' select box will display 10 years after the current month.\n\t */\n\t@Input() maxDate: NgbDateStruct;\n\n\t/**\n\t * The earliest date that can be displayed or selected.\n\t *\n\t * If not provided, 'year' select box will display 10 years before the current month.\n\t */\n\t@Input() minDate: NgbDateStruct;\n\n\t/**\n\t * Navigation type.\n\t *\n\t * * `\"select\"` - select boxes for month and navigation arrows\n\t * * `\"arrows\"` - only navigation arrows\n\t * * `\"none\"` - no navigation visible at all\n\t */\n\t@Input() navigation: 'select' | 'arrows' | 'none';\n\n\t/**\n\t * The way of displaying days that don't belong to the current month.\n\t *\n\t * * `\"visible\"` - days are visible\n\t * * `\"hidden\"` - days are hidden, white space preserved\n\t * * `\"collapsed\"` - days are collapsed, so the datepicker height might change between months\n\t *\n\t * For the 2+ months view, days in between months are never shown.\n\t */\n\t@Input() outsideDays: 'visible' | 'collapsed' | 'hidden';\n\n\t/**\n\t * If `true`, week numbers will be displayed.\n\t */\n\t@Input() showWeekNumbers: boolean;\n\n\t/**\n\t * The date to open calendar with.\n\t *\n\t * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t * If nothing or invalid date is provided, calendar will open with current month.\n\t *\n\t * You could use `navigateTo(date)` method as an alternative.\n\t */\n\t@Input() startDate: { year: number; month: number; day?: number };\n\n\t/**\n\t * The way weekdays should be displayed.\n\t *\n\t * * `true` - weekdays are displayed using default width\n\t * * `false` - weekdays are not displayed\n\t * * `TranslationWidth` - weekdays are displayed using specified width\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() weekdays: TranslationWidth | boolean;\n\n\t/**\n\t * An event emitted right before the navigation happens and displayed month changes.\n\t *\n\t * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n\t */\n\t@Output() navigate = new EventEmitter();\n\n\t/**\n\t * An event emitted when user selects a date using keyboard or mouse.\n\t *\n\t * The payload of the event is currently selected `NgbDate`.\n\t *\n\t * @since 5.2.0\n\t */\n\t@Output() dateSelect = new EventEmitter();\n\n\tonChange = (_: any) => {};\n\tonTouched = () => {};\n\n\tconstructor(\n\t\tprivate _service: NgbDatepickerService,\n\t\tprivate _calendar: NgbCalendar,\n\t\tprivate _i18n: NgbDatepickerI18n,\n\t\tconfig: NgbDatepickerConfig,\n\t\tcd: ChangeDetectorRef,\n\t\tprivate _elementRef: ElementRef,\n\t\tprivate _ngbDateAdapter: NgbDateAdapter,\n\t\tprivate _ngZone: NgZone,\n\t) {\n\t\t[\n\t\t\t'contentTemplate',\n\t\t\t'dayTemplate',\n\t\t\t'dayTemplateData',\n\t\t\t'displayMonths',\n\t\t\t'firstDayOfWeek',\n\t\t\t'footerTemplate',\n\t\t\t'markDisabled',\n\t\t\t'minDate',\n\t\t\t'maxDate',\n\t\t\t'navigation',\n\t\t\t'outsideDays',\n\t\t\t'showWeekNumbers',\n\t\t\t'startDate',\n\t\t\t'weekdays',\n\t\t].forEach((input) => (this[input] = config[input]));\n\n\t\t_service.dateSelect$.pipe(takeUntil(this._destroyed$)).subscribe((date) => {\n\t\t\tthis.dateSelect.emit(date);\n\t\t});\n\n\t\t_service.model$.pipe(takeUntil(this._destroyed$)).subscribe((model) => {\n\t\t\tconst newDate = model.firstDate!;\n\t\t\tconst oldDate = this.model ? this.model.firstDate : null;\n\n\t\t\t// update public state\n\t\t\tthis._publicState = {\n\t\t\t\tmaxDate: model.maxDate,\n\t\t\t\tminDate: model.minDate,\n\t\t\t\tfirstDate: model.firstDate!,\n\t\t\t\tlastDate: model.lastDate!,\n\t\t\t\tfocusedDate: model.focusDate!,\n\t\t\t\tmonths: model.months.map((viewModel) => viewModel.firstDate),\n\t\t\t};\n\n\t\t\tlet navigationPrevented = false;\n\t\t\t// emitting navigation event if the first month changes\n\t\t\tif (!newDate.equals(oldDate)) {\n\t\t\t\tthis.navigate.emit({\n\t\t\t\t\tcurrent: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\n\t\t\t\t\tnext: { year: newDate.year, month: newDate.month },\n\t\t\t\t\tpreventDefault: () => (navigationPrevented = true),\n\t\t\t\t});\n\n\t\t\t\t// can't prevent the very first navigation\n\t\t\t\tif (navigationPrevented && oldDate !== null) {\n\t\t\t\t\tthis._service.open(oldDate);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst newSelectedDate = model.selectedDate;\n\t\t\tconst newFocusedDate = model.focusDate;\n\t\t\tconst oldFocusedDate = this.model ? this.model.focusDate : null;\n\n\t\t\tthis.model = model;\n\n\t\t\t// handling selection change\n\t\t\tif (isChangedDate(newSelectedDate, this._controlValue)) {\n\t\t\t\tthis._controlValue = newSelectedDate;\n\t\t\t\tthis.onTouched();\n\t\t\t\tthis.onChange(this._ngbDateAdapter.toModel(newSelectedDate));\n\t\t\t}\n\n\t\t\t// handling focus change\n\t\t\tif (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n\t\t\t\tthis.focus();\n\t\t\t}\n\n\t\t\tcd.markForCheck();\n\t\t});\n\t}\n\n\t/**\n\t * Returns the readonly public state of the datepicker\n\t *\n\t * @since 5.2.0\n\t */\n\tget state(): NgbDatepickerState {\n\t\treturn this._publicState;\n\t}\n\n\t/**\n\t * Returns the calendar service used in the specific datepicker instance.\n\t *\n\t * @since 5.3.0\n\t */\n\tget calendar(): NgbCalendar {\n\t\treturn this._calendar;\n\t}\n\n\t/**\n\t * Returns the i18n service used in the specific datepicker instance.\n\t *\n\t * @since 14.2.0\n\t */\n\tget i18n(): NgbDatepickerI18n {\n\t\treturn this._i18n;\n\t}\n\n\t/**\n\t * Focuses on given date.\n\t */\n\tfocusDate(date?: NgbDateStruct | null): void {\n\t\tthis._service.focus(NgbDate.from(date));\n\t}\n\n\t/**\n\t * Selects focused date.\n\t */\n\tfocusSelect(): void {\n\t\tthis._service.focusSelect();\n\t}\n\n\tfocus() {\n\t\tthis._ngZone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tconst elementToFocus =\n\t\t\t\t\tthis._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\n\t\t\t\tif (elementToFocus) {\n\t\t\t\t\telementToFocus.focus();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * Navigates to the provided date.\n\t *\n\t * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t * If nothing or invalid date provided calendar will open current month.\n\t *\n\t * Use the `[startDate]` input as an alternative.\n\t */\n\tnavigateTo(date?: { year: number; month: number; day?: number }) {\n\t\tthis._service.open(NgbDate.from(date ? (date.day ? (date as NgbDateStruct) : { ...date, day: 1 }) : null));\n\t}\n\n\tngAfterViewInit() {\n\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\tconst focusIns$ = fromEvent(this._contentEl.nativeElement, 'focusin');\n\t\t\tconst focusOuts$ = fromEvent(this._contentEl.nativeElement, 'focusout');\n\t\t\tconst { nativeElement } = this._elementRef;\n\n\t\t\t// we're changing 'focusVisible' only when entering or leaving months view\n\t\t\t// and ignoring all focus events where both 'target' and 'related' target are day cells\n\t\t\tmerge(focusIns$, focusOuts$)\n\t\t\t\t.pipe(\n\t\t\t\t\tfilter((focusEvent) => {\n\t\t\t\t\t\tconst target = focusEvent.target as HTMLElement | null;\n\t\t\t\t\t\tconst relatedTarget = focusEvent.relatedTarget as HTMLElement | null;\n\n\t\t\t\t\t\treturn !(\n\t\t\t\t\t\t\ttarget?.classList.contains('ngb-dp-day') &&\n\t\t\t\t\t\t\trelatedTarget?.classList.contains('ngb-dp-day') &&\n\t\t\t\t\t\t\tnativeElement.contains(target) &&\n\t\t\t\t\t\t\tnativeElement.contains(relatedTarget)\n\t\t\t\t\t\t);\n\t\t\t\t\t}),\n\t\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t\t)\n\t\t\t\t.subscribe(({ type }) => this._ngZone.run(() => this._service.set({ focusVisible: type === 'focusin' })));\n\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis._destroyed$.next();\n\t}\n\n\tngOnInit() {\n\t\tif (this.model === undefined) {\n\t\t\tconst inputs: DatepickerServiceInputs = {};\n\t\t\t[\n\t\t\t\t'dayTemplateData',\n\t\t\t\t'displayMonths',\n\t\t\t\t'markDisabled',\n\t\t\t\t'firstDayOfWeek',\n\t\t\t\t'navigation',\n\t\t\t\t'minDate',\n\t\t\t\t'maxDate',\n\t\t\t\t'outsideDays',\n\t\t\t\t'weekdays',\n\t\t\t].forEach((name) => (inputs[name] = this[name]));\n\t\t\tthis._service.set(inputs);\n\n\t\t\tthis.navigateTo(this.startDate);\n\t\t}\n\t\tif (!this.dayTemplate) {\n\t\t\tthis.dayTemplate = this._defaultDayTemplate;\n\t\t}\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tconst inputs: DatepickerServiceInputs = {};\n\t\t[\n\t\t\t'dayTemplateData',\n\t\t\t'displayMonths',\n\t\t\t'markDisabled',\n\t\t\t'firstDayOfWeek',\n\t\t\t'navigation',\n\t\t\t'minDate',\n\t\t\t'maxDate',\n\t\t\t'outsideDays',\n\t\t\t'weekdays',\n\t\t]\n\t\t\t.filter((name) => name in changes)\n\t\t\t.forEach((name) => (inputs[name] = this[name]));\n\t\tthis._service.set(inputs);\n\n\t\tif ('startDate' in changes) {\n\t\t\tconst { currentValue, previousValue } = changes.startDate;\n\t\t\tif (isChangedMonth(previousValue, currentValue)) {\n\t\t\t\tthis.navigateTo(this.startDate);\n\t\t\t}\n\t\t}\n\t}\n\n\tonDateSelect(date: NgbDate) {\n\t\tthis._service.focus(date);\n\t\tthis._service.select(date, { emitEvent: true });\n\t}\n\n\tonNavigateDateSelect(date: NgbDate) {\n\t\tthis._service.open(date);\n\t}\n\n\tonNavigateEvent(event: NavigationEvent) {\n\t\tswitch (event) {\n\t\t\tcase NavigationEvent.PREV:\n\t\t\t\tthis._service.open(this._calendar.getPrev(this.model.firstDate!, 'm', 1));\n\t\t\t\tbreak;\n\t\t\tcase NavigationEvent.NEXT:\n\t\t\t\tthis._service.open(this._calendar.getNext(this.model.firstDate!, 'm', 1));\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (value: any) => any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => any): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(disabled: boolean) {\n\t\tthis._service.set({ disabled });\n\t}\n\n\twriteValue(value) {\n\t\tthis._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n\t\tthis._service.select(this._controlValue);\n\t}\n}\n","import { NgZone } from '@angular/core';\nimport { fromEvent, Observable, race } from 'rxjs';\nimport { delay, filter, map, takeUntil, tap, withLatestFrom } from 'rxjs/operators';\nimport { Key } from './key';\nimport { closest } from './util';\n\nconst isContainedIn = (element: HTMLElement, array?: HTMLElement[]) =>\n\tarray ? array.some((item) => item.contains(element)) : false;\n\nconst matchesSelectorIfAny = (element: HTMLElement, selector?: string) =>\n\t!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\nconst isMobile = (() => {\n\tconst isIOS = () =>\n\t\t/iPad|iPhone|iPod/.test(navigator.userAgent) ||\n\t\t(/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\n\tconst isAndroid = () => /Android/.test(navigator.userAgent);\n\n\treturn typeof navigator !== 'undefined' ? !!navigator.userAgent && (isIOS() || isAndroid()) : false;\n})();\n\n// setting 'ngbAutoClose' synchronously on mobile results in immediate popup closing\n// when tapping on the triggering element\nconst wrapAsyncForMobile = (fn) => (isMobile ? () => setTimeout(() => fn(), 100) : fn);\n\nexport const enum SOURCE {\n\tESCAPE,\n\tCLICK,\n}\n\nexport function ngbAutoClose(\n\tzone: NgZone,\n\tdocument: any,\n\ttype: boolean | 'inside' | 'outside',\n\tclose: (source: SOURCE) => void,\n\tclosed$: Observable,\n\tinsideElements: HTMLElement[],\n\tignoreElements?: HTMLElement[],\n\tinsideSelector?: string,\n) {\n\t// closing on ESC and outside clicks\n\tif (type) {\n\t\tzone.runOutsideAngular(\n\t\t\twrapAsyncForMobile(() => {\n\t\t\t\tconst shouldCloseOnClick = (event: MouseEvent) => {\n\t\t\t\t\tconst element = event.target as HTMLElement;\n\t\t\t\t\tif (event.button === 2 || isContainedIn(element, ignoreElements)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (type === 'inside') {\n\t\t\t\t\t\treturn isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n\t\t\t\t\t} else if (type === 'outside') {\n\t\t\t\t\t\treturn !isContainedIn(element, insideElements);\n\t\t\t\t\t} /* if (type === true) */ else {\n\t\t\t\t\t\treturn matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconst escapes$ = fromEvent(document, 'keydown').pipe(\n\t\t\t\t\ttakeUntil(closed$),\n\t\t\t\t\t/* eslint-disable-next-line deprecation/deprecation */\n\t\t\t\t\tfilter((e) => e.which === Key.Escape),\n\t\t\t\t\ttap((e) => e.preventDefault()),\n\t\t\t\t);\n\n\t\t\t\t// we have to pre-calculate 'shouldCloseOnClick' on 'mousedown',\n\t\t\t\t// because on 'mouseup' DOM nodes might be detached\n\t\t\t\tconst mouseDowns$ = fromEvent(document, 'mousedown').pipe(\n\t\t\t\t\tmap(shouldCloseOnClick),\n\t\t\t\t\ttakeUntil(closed$),\n\t\t\t\t);\n\n\t\t\t\tconst closeableClicks$ = fromEvent(document, 'mouseup').pipe(\n\t\t\t\t\twithLatestFrom(mouseDowns$),\n\t\t\t\t\tfilter(([_, shouldClose]) => shouldClose),\n\t\t\t\t\tdelay(0),\n\t\t\t\t\ttakeUntil(closed$),\n\t\t\t\t) as Observable;\n\n\t\t\t\trace([escapes$.pipe(map((_) => SOURCE.ESCAPE)), closeableClicks$.pipe(map((_) => SOURCE.CLICK))]).subscribe(\n\t\t\t\t\t(source: SOURCE) => zone.run(() => close(source)),\n\t\t\t\t);\n\t\t\t}),\n\t\t);\n\t}\n}\n","import { NgZone } from '@angular/core';\n\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nimport { Key } from './key';\n\nexport const FOCUSABLE_ELEMENTS_SELECTOR = [\n\t'a[href]',\n\t'button:not([disabled])',\n\t'input:not([disabled]):not([type=\"hidden\"])',\n\t'select:not([disabled])',\n\t'textarea:not([disabled])',\n\t'[contenteditable]',\n\t'[tabindex]:not([tabindex=\"-1\"])',\n].join(', ');\n\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nexport function getFocusableBoundaryElements(element: HTMLElement): HTMLElement[] {\n\tconst list: HTMLElement[] = Array.from(\n\t\telement.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR) as NodeListOf,\n\t).filter((el) => el.tabIndex !== -1);\n\treturn [list[0], list[list.length - 1]];\n}\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 */\nexport const ngbFocusTrap = (\n\tzone: NgZone,\n\telement: HTMLElement,\n\tstopFocusTrap$: Observable,\n\trefocusOnClick = false,\n) => {\n\tzone.runOutsideAngular(() => {\n\t\t// last focused element\n\t\tconst lastFocusedElement$ = fromEvent(element, 'focusin').pipe(\n\t\t\ttakeUntil(stopFocusTrap$),\n\t\t\tmap((e) => e.target),\n\t\t);\n\n\t\t// 'tab' / 'shift+tab' stream\n\t\tfromEvent(element, 'keydown')\n\t\t\t.pipe(\n\t\t\t\ttakeUntil(stopFocusTrap$),\n\t\t\t\t/* eslint-disable-next-line deprecation/deprecation */\n\t\t\t\tfilter((e) => e.which === Key.Tab),\n\t\t\t\twithLatestFrom(lastFocusedElement$),\n\t\t\t)\n\t\t\t.subscribe(([tabEvent, focusedElement]) => {\n\t\t\t\tconst [first, last] = getFocusableBoundaryElements(element);\n\n\t\t\t\tif ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n\t\t\t\t\tlast.focus();\n\t\t\t\t\ttabEvent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tif (focusedElement === last && !tabEvent.shiftKey) {\n\t\t\t\t\tfirst.focus();\n\t\t\t\t\ttabEvent.preventDefault();\n\t\t\t\t}\n\t\t\t});\n\n\t\t// inside click\n\t\tif (refocusOnClick) {\n\t\t\tfromEvent(element, 'click')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(stopFocusTrap$),\n\t\t\t\t\twithLatestFrom(lastFocusedElement$),\n\t\t\t\t\tmap((arr) => arr[1] as HTMLElement),\n\t\t\t\t)\n\t\t\t\t.subscribe((lastFocusedElement) => lastFocusedElement.focus());\n\t\t}\n\t});\n};\n","import { Injectable, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class NgbRTL {\n\tprivate _element: HTMLHtmlElement;\n\n\tconstructor(@Inject(DOCUMENT) document: any) {\n\t\tthis._element = document.documentElement;\n\t}\n\n\tisRTL() {\n\t\treturn (this._element.getAttribute('dir') || '').toLowerCase() === 'rtl';\n\t}\n}\n","import {\n\tarrow,\n\tcreatePopperLite,\n\tflip,\n\tInstance,\n\tModifier,\n\tPlacement as PopperPlacement,\n\tpreventOverflow,\n\tOptions,\n} from '@popperjs/core';\nimport { NgbRTL } from './rtl';\nimport { inject } from '@angular/core';\n\nconst placementSeparator = /\\s+/;\nconst spacesRegExp = / +/gi;\n\n/**\n * Matching classes from the Bootstrap ones to the poppers ones.\n * The first index of each array is used for the left to right direction,\n * the second one is used for the right to left, defaulting to the first index (when LTR and RTL lead to the same class)\n *\n * See [Bootstrap alignments](https://getbootstrap.com/docs/5.1/components/dropdowns/#alignment-options)\n * and [Popper placements](https://popper.js.org/docs/v2/constructors/#options)\n */\nconst bootstrapPopperMatches = {\n\ttop: ['top'],\n\tbottom: ['bottom'],\n\tstart: ['left', 'right'],\n\tleft: ['left'],\n\tend: ['right', 'left'],\n\tright: ['right'],\n\t'top-start': ['top-start', 'top-end'],\n\t'top-left': ['top-start'],\n\t'top-end': ['top-end', 'top-start'],\n\t'top-right': ['top-end'],\n\t'bottom-start': ['bottom-start', 'bottom-end'],\n\t'bottom-left': ['bottom-start'],\n\t'bottom-end': ['bottom-end', 'bottom-start'],\n\t'bottom-right': ['bottom-end'],\n\t'start-top': ['left-start', 'right-start'],\n\t'left-top': ['left-start'],\n\t'start-bottom': ['left-end', 'right-end'],\n\t'left-bottom': ['left-end'],\n\t'end-top': ['right-start', 'left-start'],\n\t'right-top': ['right-start'],\n\t'end-bottom': ['right-end', 'left-end'],\n\t'right-bottom': ['right-end'],\n};\n\nexport function getPopperClassPlacement(placement: Placement, isRTL: boolean): PopperPlacement {\n\tconst [leftClass, rightClass] = bootstrapPopperMatches[placement];\n\treturn isRTL ? rightClass || leftClass : leftClass;\n}\n\nconst popperStartPrimaryPlacement = /^left/;\nconst popperEndPrimaryPlacement = /^right/;\nconst popperStartSecondaryPlacement = /^start/;\nconst popperEndSecondaryPlacement = /^end/;\nexport function getBootstrapBaseClassPlacement(baseClass: string, placement: PopperPlacement): string {\n\tlet [primary, secondary] = placement.split('-');\n\tconst newPrimary = primary.replace(popperStartPrimaryPlacement, 'start').replace(popperEndPrimaryPlacement, 'end');\n\tlet classnames = [newPrimary];\n\tif (secondary) {\n\t\tlet newSecondary = secondary;\n\t\tif (primary === 'left' || primary === 'right') {\n\t\t\tnewSecondary = newSecondary\n\t\t\t\t.replace(popperStartSecondaryPlacement, 'top')\n\t\t\t\t.replace(popperEndSecondaryPlacement, 'bottom');\n\t\t}\n\t\tclassnames.push(`${newPrimary}-${newSecondary}` as Placement);\n\t}\n\tif (baseClass) {\n\t\tclassnames = classnames.map((classname) => `${baseClass}-${classname}`);\n\t}\n\treturn classnames.join(' ');\n}\n\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', 'start', 'end',\n * 'top-start', 'top-end',\n * 'bottom-start', 'bottom-end',\n * 'start-top', 'start-bottom',\n * 'end-top', 'end-bottom'.\n * */\nexport function getPopperOptions({ placement, baseClass }: PositioningOptions, rtl: NgbRTL): Partial {\n\tlet placementVals: Array = Array.isArray(placement)\n\t\t? placement\n\t\t: (placement.split(placementSeparator) as Array);\n\n\t// No need to consider left and right here, as start and end are enough, and it is used for 'auto' placement only\n\tconst allowedPlacements = [\n\t\t'top',\n\t\t'bottom',\n\t\t'start',\n\t\t'end',\n\t\t'top-start',\n\t\t'top-end',\n\t\t'bottom-start',\n\t\t'bottom-end',\n\t\t'start-top',\n\t\t'start-bottom',\n\t\t'end-top',\n\t\t'end-bottom',\n\t];\n\n\t// replace auto placement with other placements\n\tlet hasAuto = placementVals.findIndex((val) => val === 'auto');\n\tif (hasAuto >= 0) {\n\t\tallowedPlacements.forEach(function (obj) {\n\t\t\tif (placementVals.find((val) => val.search('^' + obj) !== -1) == null) {\n\t\t\t\tplacementVals.splice(hasAuto++, 1, obj as Placement);\n\t\t\t}\n\t\t});\n\t}\n\n\tconst popperPlacements = placementVals.map((_placement) => {\n\t\treturn getPopperClassPlacement(_placement, rtl.isRTL());\n\t});\n\n\tlet mainPlacement = popperPlacements.shift();\n\n\tconst bsModifier: Partial> = {\n\t\tname: 'bootstrapClasses',\n\t\tenabled: !!baseClass,\n\t\tphase: 'write',\n\t\tfn({ state }) {\n\t\t\tconst bsClassRegExp = new RegExp(baseClass + '(-[a-z]+)*', 'gi');\n\n\t\t\tconst popperElement: HTMLElement = state.elements.popper as HTMLElement;\n\t\t\tconst popperPlacement = state.placement;\n\n\t\t\tlet className = popperElement.className;\n\n\t\t\t// Remove old bootstrap classes\n\t\t\tclassName = className.replace(bsClassRegExp, '');\n\n\t\t\t// Add current placements\n\t\t\tclassName += ` ${getBootstrapBaseClassPlacement(baseClass!, popperPlacement)}`;\n\n\t\t\t// Remove multiple spaces\n\t\t\tclassName = className.trim().replace(spacesRegExp, ' ');\n\n\t\t\t// Reassign\n\t\t\tpopperElement.className = className;\n\t\t},\n\t};\n\n\treturn {\n\t\tplacement: mainPlacement,\n\t\tmodifiers: [\n\t\t\tbsModifier,\n\t\t\tflip,\n\t\t\tpreventOverflow,\n\t\t\tarrow,\n\t\t\t{\n\t\t\t\tenabled: true,\n\t\t\t\tname: 'flip',\n\t\t\t\toptions: {\n\t\t\t\t\tfallbackPlacements: popperPlacements,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tenabled: true,\n\t\t\t\tname: 'preventOverflow',\n\t\t\t\tphase: 'main',\n\t\t\t\tfn: function () {},\n\t\t\t},\n\t\t],\n\t};\n}\n\nexport type Placement =\n\t| 'auto'\n\t| 'top'\n\t| 'bottom'\n\t| 'start'\n\t| 'left'\n\t| 'end'\n\t| 'right'\n\t| 'top-start'\n\t| 'top-left'\n\t| 'top-end'\n\t| 'top-right'\n\t| 'bottom-start'\n\t| 'bottom-left'\n\t| 'bottom-end'\n\t| 'bottom-right'\n\t| 'start-top'\n\t| 'left-top'\n\t| 'start-bottom'\n\t| 'left-bottom'\n\t| 'end-top'\n\t| 'right-top'\n\t| 'end-bottom'\n\t| 'right-bottom';\n\nexport type PlacementArray = Placement | Array | string;\n\ninterface PositioningOptions {\n\thostElement: HTMLElement;\n\ttargetElement: HTMLElement;\n\tplacement: string | Placement | PlacementArray;\n\tappendToBody?: boolean;\n\tbaseClass?: string;\n\tupdatePopperOptions?: (options: Partial) => Partial;\n}\n\nfunction noop(arg) {\n\treturn arg;\n}\n\nexport function ngbPositioning() {\n\tconst rtl = inject(NgbRTL);\n\tlet popperInstance: Instance | null = null;\n\n\treturn {\n\t\tcreatePopper(positioningOption: PositioningOptions) {\n\t\t\tif (!popperInstance) {\n\t\t\t\tconst updatePopperOptions = positioningOption.updatePopperOptions || noop;\n\t\t\t\tlet popperOptions = updatePopperOptions(getPopperOptions(positioningOption, rtl));\n\t\t\t\tpopperInstance = createPopperLite(\n\t\t\t\t\tpositioningOption.hostElement,\n\t\t\t\t\tpositioningOption.targetElement,\n\t\t\t\t\tpopperOptions,\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\tupdate() {\n\t\t\tif (popperInstance) {\n\t\t\t\tpopperInstance.update();\n\t\t\t}\n\t\t},\n\t\tsetOptions(positioningOption: PositioningOptions) {\n\t\t\tif (popperInstance) {\n\t\t\t\tconst updatePopperOptions = positioningOption.updatePopperOptions || noop;\n\t\t\t\tlet popperOptions = updatePopperOptions(getPopperOptions(positioningOption, rtl));\n\t\t\t\tpopperInstance.setOptions(popperOptions);\n\t\t\t}\n\t\t},\n\t\tdestroy() {\n\t\t\tif (popperInstance) {\n\t\t\t\tpopperInstance.destroy();\n\t\t\t\tpopperInstance = null;\n\t\t\t}\n\t\t},\n\t};\n}\n","import { Injectable } from '@angular/core';\n\nimport { NgbDatepickerConfig } from './datepicker-config';\nimport { PlacementArray } from '../util/positioning';\nimport { Options } from '@popperjs/core';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbInputDatepickerConfig extends NgbDatepickerConfig {\n\tautoClose: boolean | 'inside' | 'outside' = true;\n\tcontainer: null | 'body';\n\tpositionTarget: string | HTMLElement;\n\tplacement: PlacementArray = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n\tpopperOptions = (options: Partial) => options;\n\trestoreFocus: true | HTMLElement | string = true;\n}\n","import { offset as offsetModifier, Options } from '@popperjs/core';\n\nexport function addPopperOffset(offset: number[]) {\n\treturn (options: Partial) => {\n\t\toptions.modifiers!.push(offsetModifier, {\n\t\t\tname: 'offset',\n\t\t\toptions: {\n\t\t\t\toffset: () => offset,\n\t\t\t},\n\t\t});\n\n\t\treturn options;\n\t};\n}\n","import { padNumber, toInteger, isNumber } from '../util/util';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { Injectable } from '@angular/core';\n\nexport function NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n\treturn new NgbDateISOParserFormatter();\n}\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 */\n@Injectable({ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY })\nexport abstract class NgbDateParserFormatter {\n\t/**\n\t * Parses the given `string` to an `NgbDateStruct`.\n\t *\n\t * Implementations should try their best to provide a result, even\n\t * partial. They must return `null` if the value can't be parsed.\n\t */\n\tabstract parse(value: string): NgbDateStruct | null;\n\n\t/**\n\t * Formats the given `NgbDateStruct` to a `string`.\n\t *\n\t * Implementations should return an empty string if the given date is `null`,\n\t * and try their best to provide a partial result if the given date is incomplete or invalid.\n\t */\n\tabstract format(date: NgbDateStruct | null): string;\n}\n\n@Injectable()\nexport class NgbDateISOParserFormatter extends NgbDateParserFormatter {\n\tparse(value: string): NgbDateStruct | null {\n\t\tif (value != null) {\n\t\t\tconst dateParts = value.trim().split('-');\n\t\t\tif (dateParts.length === 1 && isNumber(dateParts[0])) {\n\t\t\t\treturn { year: toInteger(dateParts[0]), month: null, day: null };\n\t\t\t} else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n\t\t\t\treturn { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\n\t\t\t} else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n\t\t\t\treturn { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tformat(date: NgbDateStruct | null): string {\n\t\treturn date\n\t\t\t? `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${\n\t\t\t\t\tisNumber(date.day) ? padNumber(date.day) : ''\n\t\t\t }`\n\t\t\t: '';\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tComponentRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tInject,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOutput,\n\tRenderer2,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport { DOCUMENT, TranslationWidth } from '@angular/common';\nimport {\n\tAbstractControl,\n\tControlValueAccessor,\n\tNG_VALIDATORS,\n\tNG_VALUE_ACCESSOR,\n\tValidationErrors,\n\tValidator,\n} from '@angular/forms';\n\nimport { ngbAutoClose } from '../util/autoclose';\nimport { ngbFocusTrap } from '../util/focus-trap';\nimport { ngbPositioning, PlacementArray } from '../util/positioning';\nimport { Options } from '@popperjs/core';\n\nimport { NgbDateAdapter } from './adapters/ngb-date-adapter';\nimport { NgbDatepicker, NgbDatepickerNavigateEvent } from './datepicker';\nimport { DayTemplateContext } from './datepicker-day-template-context';\nimport { NgbCalendar } from './ngb-calendar';\nimport { NgbDate } from './ngb-date';\nimport { NgbDateParserFormatter } from './ngb-date-parser-formatter';\nimport { NgbDateStruct } from './ngb-date-struct';\nimport { NgbInputDatepickerConfig } from './datepicker-input-config';\nimport { NgbDatepickerConfig } from './datepicker-config';\nimport { isString } from '../util/util';\nimport { Subject } from 'rxjs';\nimport { addPopperOffset } from '../util/positioning-util';\nimport { ContentTemplateContext } from './datepicker-content-template-context';\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 */\n@Directive({\n\tselector: 'input[ngbDatepicker]',\n\texportAs: 'ngbDatepicker',\n\tstandalone: true,\n\thost: {\n\t\t'(input)': 'manualDateChange($event.target.value)',\n\t\t'(change)': 'manualDateChange($event.target.value, true)',\n\t\t'(focus)': 'onFocus()',\n\t\t'(blur)': 'onBlur()',\n\t\t'[disabled]': 'disabled',\n\t},\n\tproviders: [\n\t\t{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n\t\t{ provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n\t\t{ provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig },\n\t],\n})\nexport class NgbInputDatepicker implements OnChanges, OnDestroy, ControlValueAccessor, Validator {\n\tstatic ngAcceptInputType_autoClose: boolean | string;\n\tstatic ngAcceptInputType_disabled: boolean | '';\n\tstatic ngAcceptInputType_navigation: string;\n\tstatic ngAcceptInputType_outsideDays: string;\n\tstatic ngAcceptInputType_weekdays: boolean | number;\n\n\tprivate _cRef: ComponentRef | null = null;\n\tprivate _disabled = false;\n\tprivate _elWithFocus: HTMLElement | null = null;\n\tprivate _model: NgbDate | null = null;\n\tprivate _inputValue: string;\n\tprivate _zoneSubscription: any;\n\tprivate _positioning: ReturnType;\n\tprivate _destroyCloseHandlers$ = new Subject();\n\n\t/**\n\t * Indicates whether the datepicker popup should be closed automatically after date selection / outside click or not.\n\t *\n\t * * `true` - the popup will close on both date selection and outside click.\n\t * * `false` - the popup can only be closed manually via `close()` or `toggle()` methods.\n\t * * `\"inside\"` - the popup will close on date selection, but not outside clicks.\n\t * * `\"outside\"` - the popup will close only on the outside click and not on date selection/inside clicks.\n\t *\n\t * @since 3.0.0\n\t */\n\t@Input() autoClose: boolean | 'inside' | 'outside';\n\n\t/**\n\t * The reference to a custom content template.\n\t *\n\t * Allows to completely override the way datepicker.\n\t *\n\t * See [`NgbDatepickerContent`](#/components/datepicker/api#NgbDatepickerContent) for more details.\n\t *\n\t * @since 14.2.0\n\t */\n\t@Input() contentTemplate: TemplateRef;\n\n\t/**\n\t * An optional class applied to the datepicker popup element.\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() datepickerClass: string;\n\n\t/**\n\t * The reference to a custom template for the day.\n\t *\n\t * Allows to completely override the way a day 'cell' in the calendar is displayed.\n\t *\n\t * See [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext) for the data you get inside.\n\t */\n\t@Input() dayTemplate: TemplateRef;\n\n\t/**\n\t * The callback to pass any arbitrary data to the template cell via the\n\t * [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext)'s `data` parameter.\n\t *\n\t * `current` is the month that is currently displayed by the datepicker.\n\t *\n\t * @since 3.3.0\n\t */\n\t@Input() dayTemplateData: (date: NgbDate, current?: { year: number; month: number }) => any;\n\n\t/**\n\t * The number of months to display.\n\t */\n\t@Input() displayMonths: number;\n\n\t/**\n\t * The first day of the week.\n\t *\n\t * With default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun.\n\t */\n\t@Input() firstDayOfWeek: number;\n\n\t/**\n\t * The reference to the custom template for the datepicker footer.\n\t *\n\t * @since 3.3.0\n\t */\n\t@Input() footerTemplate: TemplateRef;\n\n\t/**\n\t * The callback to mark some dates as disabled.\n\t *\n\t * It is called for each new date when navigating to a different month.\n\t *\n\t * `current` is the month that is currently displayed by the datepicker.\n\t */\n\t@Input() markDisabled: (date: NgbDate, current?: { year: number; month: number }) => boolean;\n\n\t/**\n\t * The earliest date that can be displayed or selected. Also used for form validation.\n\t *\n\t * If not provided, 'year' select box will display 10 years before the current month.\n\t */\n\t@Input() minDate: NgbDateStruct;\n\n\t/**\n\t * The latest date that can be displayed or selected. Also used for form validation.\n\t *\n\t * If not provided, 'year' select box will display 10 years after the current month.\n\t */\n\t@Input() maxDate: NgbDateStruct;\n\n\t/**\n\t * Navigation type.\n\t *\n\t * * `\"select\"` - select boxes for month and navigation arrows\n\t * * `\"arrows\"` - only navigation arrows\n\t * * `\"none\"` - no navigation visible at all\n\t */\n\t@Input() navigation: 'select' | 'arrows' | 'none';\n\n\t/**\n\t * The way of displaying days that don't belong to the current month.\n\t *\n\t * * `\"visible\"` - days are visible\n\t * * `\"hidden\"` - days are hidden, white space preserved\n\t * * `\"collapsed\"` - days are collapsed, so the datepicker height might change between months\n\t *\n\t * For the 2+ months view, days in between months are never shown.\n\t */\n\t@Input() outsideDays: 'visible' | 'collapsed' | 'hidden';\n\n\t/**\n\t * The preferred placement of the datepicker popup, among the [possible values](#/guides/positioning#api).\n\t *\n\t * The default order of preference is `\"bottom-start bottom-end top-start top-end\"`\n\t *\n\t * Please see the [positioning overview](#/positioning) for more details.\n\t */\n\t@Input() placement: PlacementArray;\n\n\t/**\n\t * Allows to change default Popper options when positioning the popup.\n\t * Receives current popper options and returns modified ones.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() popperOptions: (options: Partial) => Partial;\n\n\t/**\n\t * If `true`, when closing datepicker will focus element that was focused before datepicker was opened.\n\t *\n\t * Alternatively you could provide a selector or an `HTMLElement` to focus. If the element doesn't exist or invalid,\n\t * we'll fallback to focus document body.\n\t *\n\t * @since 5.2.0\n\t */\n\t@Input() restoreFocus: true | string | HTMLElement;\n\n\t/**\n\t * If `true`, week numbers will be displayed.\n\t */\n\t@Input() showWeekNumbers: boolean;\n\n\t/**\n\t * The date to open calendar with.\n\t *\n\t * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t * If nothing or invalid date is provided, calendar will open with current month.\n\t *\n\t * You could use `navigateTo(date)` method as an alternative.\n\t */\n\t@Input() startDate: { year: number; month: number; day?: number };\n\n\t/**\n\t * A selector specifying the element the datepicker popup should be appended to.\n\t *\n\t * Currently only supports `\"body\"`.\n\t */\n\t@Input() container: string;\n\n\t/**\n\t * A css selector or html element specifying the element the datepicker popup should be positioned against.\n\t *\n\t * By default the input is used as a target.\n\t *\n\t * @since 4.2.0\n\t */\n\t@Input() positionTarget: string | HTMLElement;\n\n\t/**\n\t * The way weekdays should be displayed.\n\t *\n\t * * `true` - weekdays are displayed using default width\n\t * * `false` - weekdays are not displayed\n\t * * `TranslationWidth` - weekdays are displayed using specified width\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() weekdays: TranslationWidth | boolean;\n\n\t/**\n\t * An event emitted when user selects a date using keyboard or mouse.\n\t *\n\t * The payload of the event is currently selected `NgbDate`.\n\t *\n\t * @since 1.1.1\n\t */\n\t@Output() dateSelect = new EventEmitter();\n\n\t/**\n\t * Event emitted right after the navigation happens and displayed month changes.\n\t *\n\t * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n\t */\n\t@Output() navigate = new EventEmitter();\n\n\t/**\n\t * An event fired after closing datepicker window.\n\t *\n\t * @since 4.2.0\n\t */\n\t@Output() closed = new EventEmitter();\n\n\t@Input()\n\tget disabled() {\n\t\treturn this._disabled;\n\t}\n\tset disabled(value: any) {\n\t\tthis._disabled = value === '' || (value && value !== 'false');\n\n\t\tif (this.isOpen()) {\n\t\t\tthis._cRef!.instance.setDisabledState(this._disabled);\n\t\t}\n\t}\n\n\tprivate _onChange = (_: any) => {};\n\tprivate _onTouched = () => {};\n\tprivate _validatorChange = () => {};\n\n\tconstructor(\n\t\tprivate _parserFormatter: NgbDateParserFormatter,\n\t\tprivate _elRef: ElementRef,\n\t\tprivate _vcRef: ViewContainerRef,\n\t\tprivate _renderer: Renderer2,\n\t\tprivate _ngZone: NgZone,\n\t\tprivate _calendar: NgbCalendar,\n\t\tprivate _dateAdapter: NgbDateAdapter,\n\t\t@Inject(DOCUMENT) private _document: any,\n\t\tprivate _changeDetector: ChangeDetectorRef,\n\t\tconfig: NgbInputDatepickerConfig,\n\t) {\n\t\t['autoClose', 'container', 'positionTarget', 'placement', 'popperOptions'].forEach(\n\t\t\t(input) => (this[input] = config[input]),\n\t\t);\n\t\tthis._positioning = ngbPositioning();\n\t}\n\n\tregisterOnChange(fn: (value: any) => any): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => any): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tregisterOnValidatorChange(fn: () => void): void {\n\t\tthis._validatorChange = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\tvalidate(c: AbstractControl): ValidationErrors | null {\n\t\tconst { value } = c;\n\n\t\tif (value != null) {\n\t\t\tconst ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n\n\t\t\tif (!ngbDate) {\n\t\t\t\treturn { ngbDate: { invalid: value } };\n\t\t\t}\n\n\t\t\tif (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n\t\t\t\treturn { ngbDate: { minDate: { minDate: this.minDate, actual: value } } };\n\t\t\t}\n\n\t\t\tif (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n\t\t\t\treturn { ngbDate: { maxDate: { maxDate: this.maxDate, actual: value } } };\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\twriteValue(value) {\n\t\tthis._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n\t\tthis._writeModelValue(this._model);\n\t}\n\n\tmanualDateChange(value: string, updateView = false) {\n\t\tconst inputValueChanged = value !== this._inputValue;\n\t\tif (inputValueChanged) {\n\t\t\tthis._inputValue = value;\n\t\t\tthis._model = this._fromDateStruct(this._parserFormatter.parse(value));\n\t\t}\n\t\tif (inputValueChanged || !updateView) {\n\t\t\tthis._onChange(this._model ? this._dateAdapter.toModel(this._model) : value === '' ? null : value);\n\t\t}\n\t\tif (updateView && this._model) {\n\t\t\tthis._writeModelValue(this._model);\n\t\t}\n\t}\n\n\tisOpen() {\n\t\treturn !!this._cRef;\n\t}\n\n\t/**\n\t * Opens the datepicker popup.\n\t *\n\t * If the related form control contains a valid date, the corresponding month will be opened.\n\t */\n\topen() {\n\t\tif (!this.isOpen()) {\n\t\t\tthis._cRef = this._vcRef.createComponent(NgbDatepicker);\n\n\t\t\tthis._applyPopupStyling(this._cRef.location.nativeElement);\n\t\t\tthis._applyDatepickerInputs(this._cRef);\n\t\t\tthis._subscribeForDatepickerOutputs(this._cRef.instance);\n\t\t\tthis._cRef.instance.ngOnInit();\n\t\t\tthis._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n\n\t\t\t// date selection event handling\n\t\t\tthis._cRef.instance.registerOnChange((selectedDate) => {\n\t\t\t\tthis.writeValue(selectedDate);\n\t\t\t\tthis._onChange(selectedDate);\n\t\t\t\tthis._onTouched();\n\t\t\t});\n\n\t\t\tthis._cRef.changeDetectorRef.detectChanges();\n\n\t\t\tthis._cRef.instance.setDisabledState(this.disabled);\n\n\t\t\tif (this.container === 'body') {\n\t\t\t\tthis._document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\n\t\t\t}\n\n\t\t\t// focus handling\n\t\t\tthis._elWithFocus = this._document.activeElement;\n\t\t\tngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\n\t\t\tsetTimeout(() => this._cRef?.instance.focus());\n\n\t\t\tlet hostElement: HTMLElement;\n\t\t\tif (isString(this.positionTarget)) {\n\t\t\t\thostElement = this._document.querySelector(this.positionTarget);\n\t\t\t} else if (this.positionTarget instanceof HTMLElement) {\n\t\t\t\thostElement = this.positionTarget;\n\t\t\t} else {\n\t\t\t\thostElement = this._elRef.nativeElement;\n\t\t\t}\n\n\t\t\t// Setting up popper and scheduling updates when zone is stable\n\t\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\t\tif (this._cRef) {\n\t\t\t\t\tthis._positioning.createPopper({\n\t\t\t\t\t\thostElement,\n\t\t\t\t\t\ttargetElement: this._cRef.location.nativeElement,\n\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\tappendToBody: this.container === 'body',\n\t\t\t\t\t\tupdatePopperOptions: (options) => this.popperOptions(addPopperOffset([0, 2])(options)),\n\t\t\t\t\t});\n\n\t\t\t\t\tthis._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.positionTarget && !hostElement) {\n\t\t\t\tthrow new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n\t\t\t}\n\n\t\t\tthis._setCloseHandlers();\n\t\t}\n\t}\n\n\t/**\n\t * Closes the datepicker popup.\n\t */\n\tclose() {\n\t\tif (this.isOpen()) {\n\t\t\tthis._vcRef.remove(this._vcRef.indexOf(this._cRef!.hostView));\n\t\t\tthis._cRef = null;\n\t\t\tthis._positioning.destroy();\n\t\t\tthis._zoneSubscription?.unsubscribe();\n\t\t\tthis._destroyCloseHandlers$.next();\n\t\t\tthis.closed.emit();\n\t\t\tthis._changeDetector.markForCheck();\n\n\t\t\t// restore focus\n\t\t\tlet elementToFocus: HTMLElement | null = this._elWithFocus;\n\t\t\tif (isString(this.restoreFocus)) {\n\t\t\t\telementToFocus = this._document.querySelector(this.restoreFocus);\n\t\t\t} else if (this.restoreFocus !== undefined) {\n\t\t\t\telementToFocus = this.restoreFocus as HTMLElement;\n\t\t\t}\n\n\t\t\t// in IE document.activeElement can contain an object without 'focus()' sometimes\n\t\t\tif (elementToFocus && elementToFocus['focus']) {\n\t\t\t\telementToFocus.focus();\n\t\t\t} else {\n\t\t\t\tthis._document.body.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the datepicker popup.\n\t */\n\ttoggle() {\n\t\tif (this.isOpen()) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\t/**\n\t * Navigates to the provided date.\n\t *\n\t * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n\t * If nothing or invalid date provided calendar will open current month.\n\t *\n\t * Use the `[startDate]` input as an alternative.\n\t */\n\tnavigateTo(date?: { year: number; month: number; day?: number }) {\n\t\tif (this.isOpen()) {\n\t\t\tthis._cRef!.instance.navigateTo(date);\n\t\t}\n\t}\n\n\tonBlur() {\n\t\tthis._onTouched();\n\t}\n\n\tonFocus() {\n\t\tthis._elWithFocus = this._elRef.nativeElement;\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes['minDate'] || changes['maxDate']) {\n\t\t\tthis._validatorChange();\n\n\t\t\tif (this.isOpen()) {\n\t\t\t\tif (changes['minDate']) {\n\t\t\t\t\tthis._cRef!.instance.minDate = this.minDate;\n\t\t\t\t}\n\t\t\t\tif (changes['maxDate']) {\n\t\t\t\t\tthis._cRef!.instance.maxDate = this.maxDate;\n\t\t\t\t}\n\t\t\t\tthis._cRef!.instance.ngOnChanges(changes);\n\t\t\t}\n\t\t}\n\n\t\tif (changes['datepickerClass']) {\n\t\t\tconst { currentValue, previousValue } = changes['datepickerClass'];\n\t\t\tthis._applyPopupClass(currentValue, previousValue);\n\t\t}\n\n\t\tif (changes['autoClose'] && this.isOpen()) {\n\t\t\tthis._setCloseHandlers();\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis.close();\n\t}\n\n\tprivate _applyDatepickerInputs(datepickerComponentRef: ComponentRef): void {\n\t\t[\n\t\t\t'contentTemplate',\n\t\t\t'dayTemplate',\n\t\t\t'dayTemplateData',\n\t\t\t'displayMonths',\n\t\t\t'firstDayOfWeek',\n\t\t\t'footerTemplate',\n\t\t\t'markDisabled',\n\t\t\t'minDate',\n\t\t\t'maxDate',\n\t\t\t'navigation',\n\t\t\t'outsideDays',\n\t\t\t'showNavigation',\n\t\t\t'showWeekNumbers',\n\t\t\t'weekdays',\n\t\t].forEach((inputName: string) => {\n\t\t\tif (this[inputName] !== undefined) {\n\t\t\t\tdatepickerComponentRef.setInput(inputName, this[inputName]);\n\t\t\t}\n\t\t});\n\t\tdatepickerComponentRef.setInput('startDate', this.startDate || this._model);\n\t}\n\n\tprivate _applyPopupClass(newClass: string, oldClass?: string) {\n\t\tconst popupEl = this._cRef?.location.nativeElement;\n\t\tif (popupEl) {\n\t\t\tif (newClass) {\n\t\t\t\tthis._renderer.addClass(popupEl, newClass);\n\t\t\t}\n\t\t\tif (oldClass) {\n\t\t\t\tthis._renderer.removeClass(popupEl, oldClass);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _applyPopupStyling(nativeElement: any) {\n\t\tthis._renderer.addClass(nativeElement, 'dropdown-menu');\n\t\tthis._renderer.addClass(nativeElement, 'show');\n\n\t\tif (this.container === 'body') {\n\t\t\tthis._renderer.addClass(nativeElement, 'ngb-dp-body');\n\t\t}\n\n\t\tthis._applyPopupClass(this.datepickerClass);\n\t}\n\n\tprivate _subscribeForDatepickerOutputs(datepickerInstance: NgbDatepicker) {\n\t\tdatepickerInstance.navigate.subscribe((navigateEvent) => this.navigate.emit(navigateEvent));\n\t\tdatepickerInstance.dateSelect.subscribe((date) => {\n\t\t\tthis.dateSelect.emit(date);\n\t\t\tif (this.autoClose === true || this.autoClose === 'inside') {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _writeModelValue(model: NgbDate | null) {\n\t\tconst value = this._parserFormatter.format(model);\n\t\tthis._inputValue = value;\n\t\tthis._renderer.setProperty(this._elRef.nativeElement, 'value', value);\n\t\tif (this.isOpen()) {\n\t\t\tthis._cRef!.instance.writeValue(this._dateAdapter.toModel(model));\n\t\t\tthis._onTouched();\n\t\t}\n\t}\n\n\tprivate _fromDateStruct(date: NgbDateStruct | null): NgbDate | null {\n\t\tconst ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n\t\treturn this._calendar.isValid(ngbDate) ? ngbDate : null;\n\t}\n\n\tprivate _setCloseHandlers() {\n\t\tthis._destroyCloseHandlers$.next();\n\t\tngbAutoClose(\n\t\t\tthis._ngZone,\n\t\t\tthis._document,\n\t\t\tthis.autoClose,\n\t\t\t() => this.close(),\n\t\t\tthis._destroyCloseHandlers$,\n\t\t\t[],\n\t\t\t[this._elRef.nativeElement, this._cRef!.location.nativeElement],\n\t\t);\n\t}\n}\n","import { NgbDate } from '../ngb-date';\nimport { NgbPeriod, NgbCalendar } from '../ngb-calendar';\nimport { Injectable } from '@angular/core';\nimport { isNumber } from '../../util/util';\n\n@Injectable()\nexport abstract class NgbCalendarHijri extends NgbCalendar {\n\t/**\n\t * Returns the number of days in a specific Hijri month.\n\t * `month` is 1 for Muharram, 2 for Safar, etc.\n\t * `year` is any Hijri year.\n\t */\n\tabstract getDaysPerMonth(month: number, year: number): number;\n\n\t/**\n\t * Returns the equivalent Hijri date value for a give input Gregorian date.\n\t * `gDate` is s JS Date to be converted to Hijri.\n\t */\n\tabstract fromGregorian(gDate: Date): NgbDate;\n\n\t/**\n\t * Converts the current Hijri date to Gregorian.\n\t */\n\tabstract toGregorian(hDate: NgbDate): Date;\n\n\tgetDaysPerWeek() {\n\t\treturn 7;\n\t}\n\n\tgetMonths() {\n\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\t}\n\n\tgetWeeksPerMonth() {\n\t\treturn 6;\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\tdate = new NgbDate(date.year, date.month, date.day);\n\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tdate = this._setYear(date, date.year + number);\n\t\t\t\tdate.month = 1;\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'm':\n\t\t\t\tdate = this._setMonth(date, date.month + number);\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'd':\n\t\t\t\treturn this._setDay(date, date.day + number);\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\t}\n\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate) {\n\t\tconst day = this.toGregorian(date).getDay();\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\treturn day === 0 ? 7 : day;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number) {\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\tif (firstDayOfWeek === 7) {\n\t\t\tfirstDayOfWeek = 0;\n\t\t}\n\n\t\tconst thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n\t\tconst date = week[thursdayIndex];\n\n\t\tconst jsDate = this.toGregorian(date);\n\t\tjsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\t\tconst time = jsDate.getTime();\n\t\tconst MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1)); // Compare with Muharram 1\n\t\treturn Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n\t}\n\n\tgetToday(): NgbDate {\n\t\treturn this.fromGregorian(new Date());\n\t}\n\n\tisValid(date?: NgbDate | null): boolean {\n\t\treturn (\n\t\t\tdate != null &&\n\t\t\tisNumber(date.year) &&\n\t\t\tisNumber(date.month) &&\n\t\t\tisNumber(date.day) &&\n\t\t\t!isNaN(this.toGregorian(date).getTime())\n\t\t);\n\t}\n\n\tprivate _setDay(date: NgbDate, day: number): NgbDate {\n\t\tday = +day;\n\t\tlet mDays = this.getDaysPerMonth(date.month, date.year);\n\t\tif (day <= 0) {\n\t\t\twhile (day <= 0) {\n\t\t\t\tdate = this._setMonth(date, date.month - 1);\n\t\t\t\tmDays = this.getDaysPerMonth(date.month, date.year);\n\t\t\t\tday += mDays;\n\t\t\t}\n\t\t} else if (day > mDays) {\n\t\t\twhile (day > mDays) {\n\t\t\t\tday -= mDays;\n\t\t\t\tdate = this._setMonth(date, date.month + 1);\n\t\t\t\tmDays = this.getDaysPerMonth(date.month, date.year);\n\t\t\t}\n\t\t}\n\t\tdate.day = day;\n\t\treturn date;\n\t}\n\n\tprivate _setMonth(date: NgbDate, month: number): NgbDate {\n\t\tmonth = +month;\n\t\tdate.year = date.year + Math.floor((month - 1) / 12);\n\t\tdate.month = Math.floor((((month - 1) % 12) + 12) % 12) + 1;\n\t\treturn date;\n\t}\n\n\tprivate _setYear(date: NgbDate, year: number): NgbDate {\n\t\tdate.year = +year;\n\t\treturn date;\n\t}\n}\n","import { NgbCalendarHijri } from './ngb-calendar-hijri';\nimport { NgbDate } from '../ngb-date';\nimport { Injectable } from '@angular/core';\n\n/**\n * Checks if islamic year is a leap year\n */\nfunction isIslamicLeapYear(hYear: number): boolean {\n\treturn (14 + 11 * hYear) % 30 < 11;\n}\n\n/**\n * Checks if gregorian years is a leap year\n */\nfunction isGregorianLeapYear(gDate: Date): boolean {\n\tconst year = gDate.getFullYear();\n\treturn (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\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 */\nfunction getIslamicMonthStart(hYear: number, hMonth: number): number {\n\treturn Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n */\nfunction getIslamicYearStart(year: number): number {\n\treturn (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\n\nfunction mod(a: number, b: number): number {\n\treturn a - b * Math.floor(a / b);\n}\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 */\n\nconst GREGORIAN_EPOCH = 1721425.5;\nconst ISLAMIC_EPOCH = 1948439.5;\n\n@Injectable()\nexport class NgbCalendarIslamicCivil extends NgbCalendarHijri {\n\t/**\n\t * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n\t * `gDate` is a JS Date to be converted to Hijri.\n\t */\n\tfromGregorian(gDate: Date): NgbDate {\n\t\tconst gYear = gDate.getFullYear(),\n\t\t\tgMonth = gDate.getMonth(),\n\t\t\tgDay = gDate.getDate();\n\n\t\tlet julianDay =\n\t\t\tGREGORIAN_EPOCH -\n\t\t\t1 +\n\t\t\t365 * (gYear - 1) +\n\t\t\tMath.floor((gYear - 1) / 4) +\n\t\t\t-Math.floor((gYear - 1) / 100) +\n\t\t\tMath.floor((gYear - 1) / 400) +\n\t\t\tMath.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gDate) ? -1 : -2) + gDay);\n\t\tjulianDay = Math.floor(julianDay) + 0.5;\n\n\t\tconst days = julianDay - ISLAMIC_EPOCH;\n\t\tconst hYear = Math.floor((30 * days + 10646) / 10631.0);\n\t\tlet hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n\t\thMonth = Math.min(hMonth, 11);\n\t\tconst hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n\t\treturn new NgbDate(hYear, hMonth + 1, hDay);\n\t}\n\n\t/**\n\t * Returns the equivalent JS date value for a give input islamic(civil) date.\n\t * `hDate` is an islamic(civil) date to be converted to Gregorian.\n\t */\n\ttoGregorian(hDate: NgbDate): Date {\n\t\tconst hYear = hDate.year;\n\t\tconst hMonth = hDate.month - 1;\n\t\tconst hDay = hDate.day;\n\t\tconst julianDay =\n\t\t\thDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n\n\t\tconst wjd = Math.floor(julianDay - 0.5) + 0.5,\n\t\t\tdepoch = wjd - GREGORIAN_EPOCH,\n\t\t\tquadricent = Math.floor(depoch / 146097),\n\t\t\tdqc = mod(depoch, 146097),\n\t\t\tcent = Math.floor(dqc / 36524),\n\t\t\tdcent = mod(dqc, 36524),\n\t\t\tquad = Math.floor(dcent / 1461),\n\t\t\tdquad = mod(dcent, 1461),\n\t\t\tyindex = Math.floor(dquad / 365);\n\t\tlet year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n\t\tif (!(cent === 4 || yindex === 4)) {\n\t\t\tyear++;\n\t\t}\n\n\t\tconst gYearStart =\n\t\t\tGREGORIAN_EPOCH +\n\t\t\t365 * (year - 1) +\n\t\t\tMath.floor((year - 1) / 4) -\n\t\t\tMath.floor((year - 1) / 100) +\n\t\t\tMath.floor((year - 1) / 400);\n\n\t\tconst yearday = wjd - gYearStart;\n\n\t\tconst tjd =\n\t\t\tGREGORIAN_EPOCH -\n\t\t\t1 +\n\t\t\t365 * (year - 1) +\n\t\t\tMath.floor((year - 1) / 4) -\n\t\t\tMath.floor((year - 1) / 100) +\n\t\t\tMath.floor((year - 1) / 400) +\n\t\t\tMath.floor(739 / 12 + (isGregorianLeapYear(new Date(year, 3, 1)) ? -1 : -2) + 1);\n\n\t\tconst leapadj = wjd < tjd ? 0 : isGregorianLeapYear(new Date(year, 3, 1)) ? 1 : 2;\n\n\t\tconst month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n\t\tconst tjd2 =\n\t\t\tGREGORIAN_EPOCH -\n\t\t\t1 +\n\t\t\t365 * (year - 1) +\n\t\t\tMath.floor((year - 1) / 4) -\n\t\t\tMath.floor((year - 1) / 100) +\n\t\t\tMath.floor((year - 1) / 400) +\n\t\t\tMath.floor(\n\t\t\t\t(367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear(new Date(year, month - 1, 1)) ? -1 : -2) + 1,\n\t\t\t);\n\n\t\tconst day = wjd - tjd2 + 1;\n\n\t\treturn new Date(year, month - 1, day);\n\t}\n\n\t/**\n\t * Returns the number of days in a specific Hijri month.\n\t * `month` is 1 for Muharram, 2 for Safar, etc.\n\t * `year` is any Hijri year.\n\t */\n\tgetDaysPerMonth(month: number, year: number): number {\n\t\tyear = year + Math.floor(month / 13);\n\t\tmonth = ((month - 1) % 12) + 1;\n\t\tlet length = 29 + (month % 2);\n\t\tif (month === 12 && isIslamicLeapYear(year)) {\n\t\t\tlength++;\n\t\t}\n\t\treturn length;\n\t}\n}\n","import { NgbCalendarIslamicCivil } from './ngb-calendar-islamic-civil';\nimport { NgbDate } from '../ngb-date';\nimport { Injectable } from '@angular/core';\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 */\n\nconst GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\nconst GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\nconst HIJRI_BEGIN = 1300;\nconst HIJRI_END = 1600;\nconst ONE_DAY = 1000 * 60 * 60 * 24;\n\nconst MONTH_LENGTH = [\n\t// 1300-1304\n\t'101010101010',\n\t'110101010100',\n\t'111011001001',\n\t'011011010100',\n\t'011011101010',\n\t// 1305-1309\n\t'001101101100',\n\t'101010101101',\n\t'010101010101',\n\t'011010101001',\n\t'011110010010',\n\t// 1310-1314\n\t'101110101001',\n\t'010111010100',\n\t'101011011010',\n\t'010101011100',\n\t'110100101101',\n\t// 1315-1319\n\t'011010010101',\n\t'011101001010',\n\t'101101010100',\n\t'101101101010',\n\t'010110101101',\n\t// 1320-1324\n\t'010010101110',\n\t'101001001111',\n\t'010100010111',\n\t'011010001011',\n\t'011010100101',\n\t// 1325-1329\n\t'101011010101',\n\t'001011010110',\n\t'100101011011',\n\t'010010011101',\n\t'101001001101',\n\t// 1330-1334\n\t'110100100110',\n\t'110110010101',\n\t'010110101100',\n\t'100110110110',\n\t'001010111010',\n\t// 1335-1339\n\t'101001011011',\n\t'010100101011',\n\t'101010010101',\n\t'011011001010',\n\t'101011101001',\n\t// 1340-1344\n\t'001011110100',\n\t'100101110110',\n\t'001010110110',\n\t'100101010110',\n\t'101011001010',\n\t// 1345-1349\n\t'101110100100',\n\t'101111010010',\n\t'010111011001',\n\t'001011011100',\n\t'100101101101',\n\t// 1350-1354\n\t'010101001101',\n\t'101010100101',\n\t'101101010010',\n\t'101110100101',\n\t'010110110100',\n\t// 1355-1359\n\t'100110110110',\n\t'010101010111',\n\t'001010010111',\n\t'010101001011',\n\t'011010100011',\n\t// 1360-1364\n\t'011101010010',\n\t'101101100101',\n\t'010101101010',\n\t'101010101011',\n\t'010100101011',\n\t// 1365-1369\n\t'110010010101',\n\t'110101001010',\n\t'110110100101',\n\t'010111001010',\n\t'101011010110',\n\t// 1370-1374\n\t'100101010111',\n\t'010010101011',\n\t'100101001011',\n\t'101010100101',\n\t'101101010010',\n\t// 1375-1379\n\t'101101101010',\n\t'010101110101',\n\t'001001110110',\n\t'100010110111',\n\t'010001011011',\n\t// 1380-1384\n\t'010101010101',\n\t'010110101001',\n\t'010110110100',\n\t'100111011010',\n\t'010011011101',\n\t// 1385-1389\n\t'001001101110',\n\t'100100110110',\n\t'101010101010',\n\t'110101010100',\n\t'110110110010',\n\t// 1390-1394\n\t'010111010101',\n\t'001011011010',\n\t'100101011011',\n\t'010010101011',\n\t'101001010101',\n\t// 1395-1399\n\t'101101001001',\n\t'101101100100',\n\t'101101110001',\n\t'010110110100',\n\t'101010110101',\n\t// 1400-1404\n\t'101001010101',\n\t'110100100101',\n\t'111010010010',\n\t'111011001001',\n\t'011011010100',\n\t// 1405-1409\n\t'101011101001',\n\t'100101101011',\n\t'010010101011',\n\t'101010010011',\n\t'110101001001',\n\t// 1410-1414\n\t'110110100100',\n\t'110110110010',\n\t'101010111001',\n\t'010010111010',\n\t'101001011011',\n\t// 1415-1419\n\t'010100101011',\n\t'101010010101',\n\t'101100101010',\n\t'101101010101',\n\t'010101011100',\n\t// 1420-1424\n\t'010010111101',\n\t'001000111101',\n\t'100100011101',\n\t'101010010101',\n\t'101101001010',\n\t// 1425-1429\n\t'101101011010',\n\t'010101101101',\n\t'001010110110',\n\t'100100111011',\n\t'010010011011',\n\t// 1430-1434\n\t'011001010101',\n\t'011010101001',\n\t'011101010100',\n\t'101101101010',\n\t'010101101100',\n\t// 1435-1439\n\t'101010101101',\n\t'010101010101',\n\t'101100101001',\n\t'101110010010',\n\t'101110101001',\n\t// 1440-1444\n\t'010111010100',\n\t'101011011010',\n\t'010101011010',\n\t'101010101011',\n\t'010110010101',\n\t// 1445-1449\n\t'011101001001',\n\t'011101100100',\n\t'101110101010',\n\t'010110110101',\n\t'001010110110',\n\t// 1450-1454\n\t'101001010110',\n\t'111001001101',\n\t'101100100101',\n\t'101101010010',\n\t'101101101010',\n\t// 1455-1459\n\t'010110101101',\n\t'001010101110',\n\t'100100101111',\n\t'010010010111',\n\t'011001001011',\n\t// 1460-1464\n\t'011010100101',\n\t'011010101100',\n\t'101011010110',\n\t'010101011101',\n\t'010010011101',\n\t// 1465-1469\n\t'101001001101',\n\t'110100010110',\n\t'110110010101',\n\t'010110101010',\n\t'010110110101',\n\t// 1470-1474\n\t'001011011010',\n\t'100101011011',\n\t'010010101101',\n\t'010110010101',\n\t'011011001010',\n\t// 1475-1479\n\t'011011100100',\n\t'101011101010',\n\t'010011110101',\n\t'001010110110',\n\t'100101010110',\n\t// 1480-1484\n\t'101010101010',\n\t'101101010100',\n\t'101111010010',\n\t'010111011001',\n\t'001011101010',\n\t// 1485-1489\n\t'100101101101',\n\t'010010101101',\n\t'101010010101',\n\t'101101001010',\n\t'101110100101',\n\t// 1490-1494\n\t'010110110010',\n\t'100110110101',\n\t'010011010110',\n\t'101010010111',\n\t'010101000111',\n\t// 1495-1499\n\t'011010010011',\n\t'011101001001',\n\t'101101010101',\n\t'010101101010',\n\t'101001101011',\n\t// 1500-1504\n\t'010100101011',\n\t'101010001011',\n\t'110101000110',\n\t'110110100011',\n\t'010111001010',\n\t// 1505-1509\n\t'101011010110',\n\t'010011011011',\n\t'001001101011',\n\t'100101001011',\n\t'101010100101',\n\t// 1510-1514\n\t'101101010010',\n\t'101101101001',\n\t'010101110101',\n\t'000101110110',\n\t'100010110111',\n\t// 1515-1519\n\t'001001011011',\n\t'010100101011',\n\t'010101100101',\n\t'010110110100',\n\t'100111011010',\n\t// 1520-1524\n\t'010011101101',\n\t'000101101101',\n\t'100010110110',\n\t'101010100110',\n\t'110101010010',\n\t// 1525-1529\n\t'110110101001',\n\t'010111010100',\n\t'101011011010',\n\t'100101011011',\n\t'010010101011',\n\t// 1530-1534\n\t'011001010011',\n\t'011100101001',\n\t'011101100010',\n\t'101110101001',\n\t'010110110010',\n\t// 1535-1539\n\t'101010110101',\n\t'010101010101',\n\t'101100100101',\n\t'110110010010',\n\t'111011001001',\n\t// 1540-1544\n\t'011011010010',\n\t'101011101001',\n\t'010101101011',\n\t'010010101011',\n\t'101001010101',\n\t// 1545-1549\n\t'110100101001',\n\t'110101010100',\n\t'110110101010',\n\t'100110110101',\n\t'010010111010',\n\t// 1550-1554\n\t'101000111011',\n\t'010010011011',\n\t'101001001101',\n\t'101010101010',\n\t'101011010101',\n\t// 1555-1559\n\t'001011011010',\n\t'100101011101',\n\t'010001011110',\n\t'101000101110',\n\t'110010011010',\n\t// 1560-1564\n\t'110101010101',\n\t'011010110010',\n\t'011010111001',\n\t'010010111010',\n\t'101001011101',\n\t// 1565-1569\n\t'010100101101',\n\t'101010010101',\n\t'101101010010',\n\t'101110101000',\n\t'101110110100',\n\t// 1570-1574\n\t'010110111001',\n\t'001011011010',\n\t'100101011010',\n\t'101101001010',\n\t'110110100100',\n\t// 1575-1579\n\t'111011010001',\n\t'011011101000',\n\t'101101101010',\n\t'010101101101',\n\t'010100110101',\n\t// 1580-1584\n\t'011010010101',\n\t'110101001010',\n\t'110110101000',\n\t'110111010100',\n\t'011011011010',\n\t// 1585-1589\n\t'010101011011',\n\t'001010011101',\n\t'011000101011',\n\t'101100010101',\n\t'101101001010',\n\t// 1590-1594\n\t'101110010101',\n\t'010110101010',\n\t'101010101110',\n\t'100100101110',\n\t'110010001111',\n\t// 1595-1599\n\t'010100100111',\n\t'011010010101',\n\t'011010101010',\n\t'101011010110',\n\t'010101011101',\n\t// 1600\n\t'001010011101',\n];\n\nfunction getDaysDiff(date1: Date, date2: Date): number {\n\t// Ignores the time part in date1 and date2:\n\tconst time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\n\tconst time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\n\tconst diff = Math.abs(time1 - time2);\n\treturn Math.round(diff / ONE_DAY);\n}\n\n@Injectable()\nexport class NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\n\t/**\n\t * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n\t * `gdate` is s JS Date to be converted to Hijri.\n\t */\n\tfromGregorian(gDate: Date): NgbDate {\n\t\tlet hDay = 1,\n\t\t\thMonth = 0,\n\t\t\thYear = 1300;\n\t\tlet daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n\t\tif (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n\t\t\tlet year = 1300;\n\t\t\tfor (let i = 0; i < MONTH_LENGTH.length; i++, year++) {\n\t\t\t\tfor (let j = 0; j < 12; j++) {\n\t\t\t\t\tlet numOfDays = +MONTH_LENGTH[i][j] + 29;\n\t\t\t\t\tif (daysDiff <= numOfDays) {\n\t\t\t\t\t\thDay = daysDiff + 1;\n\t\t\t\t\t\tif (hDay > numOfDays) {\n\t\t\t\t\t\t\thDay = 1;\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (j > 11) {\n\t\t\t\t\t\t\tj = 0;\n\t\t\t\t\t\t\tyear++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\thMonth = j;\n\t\t\t\t\t\thYear = year;\n\t\t\t\t\t\treturn new NgbDate(hYear, hMonth + 1, hDay);\n\t\t\t\t\t}\n\t\t\t\t\tdaysDiff = daysDiff - numOfDays;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null as any;\n\t\t} else {\n\t\t\treturn super.fromGregorian(gDate);\n\t\t}\n\t}\n\t/**\n\t * Converts the current Hijri date to Gregorian.\n\t */\n\ttoGregorian(hDate: NgbDate): Date {\n\t\tconst hYear = hDate.year;\n\t\tconst hMonth = hDate.month - 1;\n\t\tconst hDay = hDate.day;\n\t\tlet gDate = new Date(GREGORIAN_FIRST_DATE);\n\t\tlet dayDiff = hDay - 1;\n\t\tif (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n\t\t\tfor (let y = 0; y < hYear - HIJRI_BEGIN; y++) {\n\t\t\t\tfor (let m = 0; m < 12; m++) {\n\t\t\t\t\tdayDiff += +MONTH_LENGTH[y][m] + 29;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let m = 0; m < hMonth; m++) {\n\t\t\t\tdayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n\t\t\t}\n\t\t\tgDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n\t\t} else {\n\t\t\tgDate = super.toGregorian(hDate);\n\t\t}\n\t\treturn gDate;\n\t}\n\t/**\n\t * Returns the number of days in a specific Hijri hMonth.\n\t * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n\t * `hYear` is any Hijri hYear.\n\t */\n\tgetDaysPerMonth(hMonth: number, hYear: number): number {\n\t\tif (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n\t\t\tconst pos = hYear - HIJRI_BEGIN;\n\t\t\treturn +MONTH_LENGTH[pos][hMonth - 1] + 29;\n\t\t}\n\t\treturn super.getDaysPerMonth(hMonth, hYear);\n\t}\n}\n","import { NgbDate } from '../ngb-date';\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 */\nexport function toGregorian(jalaliDate: NgbDate): Date {\n\tlet jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n\tlet date = julianToGregorian(jdn);\n\tdate.setHours(6, 30, 3, 200);\n\treturn date;\n}\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 */\nexport function fromGregorian(gdate: Date): NgbDate {\n\tlet g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n\treturn julianToJalali(g2d);\n}\n\nexport function setJalaliYear(date: NgbDate, yearValue: number): NgbDate {\n\tdate.year = +yearValue;\n\treturn date;\n}\n\nexport function setJalaliMonth(date: NgbDate, month: number): NgbDate {\n\tmonth = +month;\n\tdate.year = date.year + Math.floor((month - 1) / 12);\n\tdate.month = Math.floor((((month - 1) % 12) + 12) % 12) + 1;\n\treturn date;\n}\n\nexport function setJalaliDay(date: NgbDate, day: number): NgbDate {\n\tlet mDays = getDaysPerMonth(date.month, date.year);\n\tif (day <= 0) {\n\t\twhile (day <= 0) {\n\t\t\tdate = setJalaliMonth(date, date.month - 1);\n\t\t\tmDays = getDaysPerMonth(date.month, date.year);\n\t\t\tday += mDays;\n\t\t}\n\t} else if (day > mDays) {\n\t\twhile (day > mDays) {\n\t\t\tday -= mDays;\n\t\t\tdate = setJalaliMonth(date, date.month + 1);\n\t\t\tmDays = getDaysPerMonth(date.month, date.year);\n\t\t}\n\t}\n\tdate.day = day;\n\treturn date;\n}\n\nfunction mod(a: number, b: number): number {\n\treturn a - b * Math.floor(a / b);\n}\n\nfunction div(a: number, b: number) {\n\treturn Math.trunc(a / b);\n}\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 */\nfunction jalCal(jalaliYear: number) {\n\t// Jalali years starting the 33-year rule.\n\tlet breaks = [\n\t\t-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178,\n\t];\n\tconst breaksLength = breaks.length;\n\tconst gYear = jalaliYear + 621;\n\tlet leapJ = -14;\n\tlet jp = breaks[0];\n\n\tif (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n\t\tthrow new Error('Invalid Jalali year ' + jalaliYear);\n\t}\n\n\t// Find the limiting years for the Jalali year jalaliYear.\n\tlet jump;\n\tfor (let i = 1; i < breaksLength; i += 1) {\n\t\tconst jm = breaks[i];\n\t\tjump = jm - jp;\n\t\tif (jalaliYear < jm) {\n\t\t\tbreak;\n\t\t}\n\t\tleapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4);\n\t\tjp = jm;\n\t}\n\tlet n = jalaliYear - jp;\n\n\t// Find the number of leap years from AD 621 to the beginning\n\t// of the current Jalali year in the Persian calendar.\n\tleapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4);\n\tif (mod(jump, 33) === 4 && jump - n === 4) {\n\t\tleapJ += 1;\n\t}\n\n\t// And the same in the Gregorian calendar (until the year gYear).\n\tconst leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n\n\t// Determine the Gregorian date of Farvardin the 1st.\n\tconst march = 20 + leapJ - leapG;\n\n\t// Find how many years have passed since the last leap year.\n\tif (jump - n < 6) {\n\t\tn = n - jump + div(jump + 4, 33) * 33;\n\t}\n\tlet leap = mod(mod(n + 1, 33) - 1, 4);\n\tif (leap === -1) {\n\t\tleap = 4;\n\t}\n\n\treturn { leap: leap, gy: gYear, march: march };\n}\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 */\nfunction julianToGregorian(julianDayNumber: number) {\n\tlet j = 4 * julianDayNumber + 139361631;\n\tj = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n\tconst i = div(mod(j, 1461), 4) * 5 + 308;\n\tconst gDay = div(mod(i, 153), 5) + 1;\n\tconst gMonth = mod(div(i, 153), 12) + 1;\n\tconst gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n\n\treturn new Date(gYear, gMonth - 1, gDay);\n}\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 */\nfunction gregorianToJulian(gy: number, gm: number, gd: number) {\n\tlet d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod(gm + 9, 12) + 2, 5) + gd - 34840408;\n\td = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n\treturn d;\n}\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 */\nfunction julianToJalali(julianDayNumber: number) {\n\tlet gy = julianToGregorian(julianDayNumber).getFullYear(), // Calculate Gregorian year (gy).\n\t\tjalaliYear = gy - 621,\n\t\tr = jalCal(jalaliYear),\n\t\tgregorianDay = gregorianToJulian(gy, 3, r.march),\n\t\tjalaliDay,\n\t\tjalaliMonth,\n\t\tnumberOfDays;\n\n\t// Find number of days that passed since 1 Farvardin.\n\tnumberOfDays = julianDayNumber - gregorianDay;\n\tif (numberOfDays >= 0) {\n\t\tif (numberOfDays <= 185) {\n\t\t\t// The first 6 months.\n\t\t\tjalaliMonth = 1 + div(numberOfDays, 31);\n\t\t\tjalaliDay = mod(numberOfDays, 31) + 1;\n\t\t\treturn new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n\t\t} else {\n\t\t\t// The remaining months.\n\t\t\tnumberOfDays -= 186;\n\t\t}\n\t} else {\n\t\t// Previous Jalali year.\n\t\tjalaliYear -= 1;\n\t\tnumberOfDays += 179;\n\t\tif (r.leap === 1) {\n\t\t\tnumberOfDays += 1;\n\t\t}\n\t}\n\tjalaliMonth = 7 + div(numberOfDays, 30);\n\tjalaliDay = mod(numberOfDays, 30) + 1;\n\n\treturn new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\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 */\nfunction jalaliToJulian(jYear: number, jMonth: number, jDay: number) {\n\tlet r = jalCal(jYear);\n\treturn gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n\n/**\n * Returns the number of days in a specific jalali month.\n */\nfunction getDaysPerMonth(month: number, year: number): number {\n\tif (month <= 6) {\n\t\treturn 31;\n\t}\n\tif (month <= 11) {\n\t\treturn 30;\n\t}\n\tif (jalCal(year).leap === 0) {\n\t\treturn 30;\n\t}\n\treturn 29;\n}\n","import { Injectable } from '@angular/core';\nimport { NgbDate } from '../ngb-date';\nimport { NgbCalendar, NgbPeriod } from '../ngb-calendar';\nimport { isInteger } from '../../util/util';\n\nimport { fromGregorian, setJalaliDay, setJalaliMonth, setJalaliYear, toGregorian } from './jalali';\n\n@Injectable()\nexport class NgbCalendarPersian extends NgbCalendar {\n\tgetDaysPerWeek() {\n\t\treturn 7;\n\t}\n\n\tgetMonths() {\n\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\t}\n\n\tgetWeeksPerMonth() {\n\t\treturn 6;\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\tdate = new NgbDate(date.year, date.month, date.day);\n\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tdate = setJalaliYear(date, date.year + number);\n\t\t\t\tdate.month = 1;\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'm':\n\t\t\t\tdate = setJalaliMonth(date, date.month + number);\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'd':\n\t\t\t\treturn setJalaliDay(date, date.day + number);\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\t}\n\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate) {\n\t\tconst day = toGregorian(date).getDay();\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\treturn day === 0 ? 7 : day;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number) {\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\tif (firstDayOfWeek === 7) {\n\t\t\tfirstDayOfWeek = 0;\n\t\t}\n\n\t\tconst thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n\t\tconst date = week[thursdayIndex];\n\n\t\tconst jsDate = toGregorian(date);\n\t\tjsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\t\tconst time = jsDate.getTime();\n\t\tconst startDate = toGregorian(new NgbDate(date.year, 1, 1));\n\t\treturn Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n\t}\n\n\tgetToday(): NgbDate {\n\t\treturn fromGregorian(new Date());\n\t}\n\n\tisValid(date?: NgbDate | null): boolean {\n\t\treturn (\n\t\t\tdate != null &&\n\t\t\tisInteger(date.year) &&\n\t\t\tisInteger(date.month) &&\n\t\t\tisInteger(date.day) &&\n\t\t\t!isNaN(toGregorian(date).getTime())\n\t\t);\n\t}\n}\n","import { NgbDate } from '../ngb-date';\nimport { NgbDateStruct } from '../ngb-date-struct';\n\nconst PARTS_PER_HOUR = 1080;\nconst PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\nconst PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\nconst PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\nconst BAHARAD = 11 * PARTS_PER_HOUR + 204;\nconst HEBREW_DAY_ON_JAN_1_1970 = 2092591;\nconst GREGORIAN_EPOCH = 1721425.5;\n\nfunction isGregorianLeapYear(year: number): boolean {\n\treturn (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\nfunction numberOfFirstDayInYear(year: number): number {\n\tlet monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n\tlet fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n\tlet dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n\tlet timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n\n\tlet dayOfWeek = dayNumber % 7; // 0 == Monday\n\n\tif (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n\t\tdayNumber++;\n\t\tdayOfWeek = dayNumber % 7;\n\t}\n\tif (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n\t\tdayNumber += 2;\n\t} else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n\t\tdayNumber++;\n\t}\n\treturn dayNumber;\n}\n\nfunction getDaysInGregorianMonth(month: number, year: number): number {\n\tlet days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\tif (isGregorianLeapYear(year)) {\n\t\tdays[1]++;\n\t}\n\treturn days[month - 1];\n}\n\nfunction getHebrewMonths(year: number): number {\n\treturn isHebrewLeapYear(year) ? 13 : 12;\n}\n\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewYear(year: number): number {\n\treturn numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\n\nexport function isHebrewLeapYear(year?: number): boolean {\n\tif (year != null) {\n\t\tlet b = (year * 12 + 17) % 19;\n\t\treturn b >= (b < 0 ? -7 : 12);\n\t}\n\treturn false;\n}\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 */\nexport function getDaysInHebrewMonth(month: number, year: number): number {\n\tlet yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n\tlet yearType = (yearLength <= 380 ? yearLength : yearLength - 30) - 353;\n\tlet leapYear = isHebrewLeapYear(year);\n\tlet daysInMonth = leapYear\n\t\t? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29]\n\t\t: [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n\tif (yearType > 0) {\n\t\tdaysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n\t}\n\tif (yearType > 1) {\n\t\tdaysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n\t}\n\treturn daysInMonth[month - 1];\n}\n\nexport function getDayNumberInHebrewYear(date: NgbDate): number {\n\tlet numberOfDay = 0;\n\tfor (let i = 1; i < date.month; i++) {\n\t\tnumberOfDay += getDaysInHebrewMonth(i, date.year);\n\t}\n\treturn numberOfDay + date.day;\n}\n\nexport function setHebrewMonth(date: NgbDate, val: number): NgbDate {\n\tlet after = val >= 0;\n\tif (!after) {\n\t\tval = -val;\n\t}\n\twhile (val > 0) {\n\t\tif (after) {\n\t\t\tif (val > getHebrewMonths(date.year) - date.month) {\n\t\t\t\tval -= getHebrewMonths(date.year) - date.month + 1;\n\t\t\t\tdate.year++;\n\t\t\t\tdate.month = 1;\n\t\t\t} else {\n\t\t\t\tdate.month += val;\n\t\t\t\tval = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tif (val >= date.month) {\n\t\t\t\tdate.year--;\n\t\t\t\tval -= date.month;\n\t\t\t\tdate.month = getHebrewMonths(date.year);\n\t\t\t} else {\n\t\t\t\tdate.month -= val;\n\t\t\t\tval = 0;\n\t\t\t}\n\t\t}\n\t}\n\treturn date;\n}\n\nexport function setHebrewDay(date: NgbDate, val: number): NgbDate {\n\tlet after = val >= 0;\n\tif (!after) {\n\t\tval = -val;\n\t}\n\twhile (val > 0) {\n\t\tif (after) {\n\t\t\tif (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n\t\t\t\tval -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n\t\t\t\tdate.year++;\n\t\t\t\tdate.month = 1;\n\t\t\t\tdate.day = 1;\n\t\t\t} else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n\t\t\t\tval -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n\t\t\t\tdate.month++;\n\t\t\t\tdate.day = 1;\n\t\t\t} else {\n\t\t\t\tdate.day += val;\n\t\t\t\tval = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tif (val >= date.day) {\n\t\t\t\tval -= date.day;\n\t\t\t\tdate.month--;\n\t\t\t\tif (date.month === 0) {\n\t\t\t\t\tdate.year--;\n\t\t\t\t\tdate.month = getHebrewMonths(date.year);\n\t\t\t\t}\n\t\t\t\tdate.day = getDaysInHebrewMonth(date.month, date.year);\n\t\t\t} else {\n\t\t\t\tdate.day -= val;\n\t\t\t\tval = 0;\n\t\t\t}\n\t\t}\n\t}\n\treturn date;\n}\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 */\nexport function fromGregorian(gdate: Date): NgbDate {\n\tconst date = new Date(gdate);\n\tconst gYear = date.getFullYear(),\n\t\tgMonth = date.getMonth(),\n\t\tgDay = date.getDate();\n\tlet julianDay =\n\t\tGREGORIAN_EPOCH -\n\t\t1 +\n\t\t365 * (gYear - 1) +\n\t\tMath.floor((gYear - 1) / 4) -\n\t\tMath.floor((gYear - 1) / 100) +\n\t\tMath.floor((gYear - 1) / 400) +\n\t\tMath.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gYear) ? -1 : -2) + gDay);\n\tjulianDay = Math.floor(julianDay + 0.5);\n\tlet daysSinceHebEpoch = julianDay - 347997;\n\tlet monthsSinceHebEpoch = Math.floor((daysSinceHebEpoch * PARTS_PER_DAY) / PARTS_PER_MONTH);\n\tlet hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n\tlet firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n\tlet dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n\twhile (dayOfYear < 1) {\n\t\thYear--;\n\t\tfirstDayOfThisYear = numberOfFirstDayInYear(hYear);\n\t\tdayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n\t}\n\tlet hMonth = 1;\n\tlet hDay = dayOfYear;\n\twhile (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n\t\thDay -= getDaysInHebrewMonth(hMonth, hYear);\n\t\thMonth++;\n\t}\n\treturn new NgbDate(hYear, hMonth, hDay);\n}\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 */\nexport function toGregorian(hebrewDate: NgbDateStruct | NgbDate): Date {\n\tconst hYear = hebrewDate.year;\n\tconst hMonth = hebrewDate.month;\n\tconst hDay = hebrewDate.day;\n\tlet days = numberOfFirstDayInYear(hYear);\n\tfor (let i = 1; i < hMonth; i++) {\n\t\tdays += getDaysInHebrewMonth(i, hYear);\n\t}\n\tdays += hDay;\n\tlet diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n\tlet after = diffDays >= 0;\n\tif (!after) {\n\t\tdiffDays = -diffDays;\n\t}\n\tlet gYear = 1970;\n\tlet gMonth = 1;\n\tlet gDay = 1;\n\twhile (diffDays > 0) {\n\t\tif (after) {\n\t\t\tif (diffDays >= (isGregorianLeapYear(gYear) ? 366 : 365)) {\n\t\t\t\tdiffDays -= isGregorianLeapYear(gYear) ? 366 : 365;\n\t\t\t\tgYear++;\n\t\t\t} else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n\t\t\t\tdiffDays -= getDaysInGregorianMonth(gMonth, gYear);\n\t\t\t\tgMonth++;\n\t\t\t} else {\n\t\t\t\tgDay += diffDays;\n\t\t\t\tdiffDays = 0;\n\t\t\t}\n\t\t} else {\n\t\t\tif (diffDays >= (isGregorianLeapYear(gYear - 1) ? 366 : 365)) {\n\t\t\t\tdiffDays -= isGregorianLeapYear(gYear - 1) ? 366 : 365;\n\t\t\t\tgYear--;\n\t\t\t} else {\n\t\t\t\tif (gMonth > 1) {\n\t\t\t\t\tgMonth--;\n\t\t\t\t} else {\n\t\t\t\t\tgMonth = 12;\n\t\t\t\t\tgYear--;\n\t\t\t\t}\n\t\t\t\tif (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n\t\t\t\t\tdiffDays -= getDaysInGregorianMonth(gMonth, gYear);\n\t\t\t\t} else {\n\t\t\t\t\tgDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n\t\t\t\t\tdiffDays = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn new Date(gYear, gMonth - 1, gDay);\n}\n\nexport function hebrewNumerals(numerals: number): string {\n\tif (!numerals) {\n\t\treturn '';\n\t}\n\tconst hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n\tconst hArray10_19 = [\n\t\t'\\u05d9',\n\t\t'\\u05d9\\u05d0',\n\t\t'\\u05d9\\u05d1',\n\t\t'\\u05d9\\u05d2',\n\t\t'\\u05d9\\u05d3',\n\t\t'\\u05d8\\u05d5',\n\t\t'\\u05d8\\u05d6',\n\t\t'\\u05d9\\u05d6',\n\t\t'\\u05d9\\u05d7',\n\t\t'\\u05d9\\u05d8',\n\t];\n\tconst hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n\tconst hArray100_900 = [\n\t\t'',\n\t\t'\\u05e7',\n\t\t'\\u05e8',\n\t\t'\\u05e9',\n\t\t'\\u05ea',\n\t\t'\\u05ea\\u05e7',\n\t\t'\\u05ea\\u05e8',\n\t\t'\\u05ea\\u05e9',\n\t\t'\\u05ea\\u05ea',\n\t\t'\\u05ea\\u05ea\\u05e7',\n\t];\n\tconst hArray1000_9000 = [\n\t\t'',\n\t\t'\\u05d0',\n\t\t'\\u05d1',\n\t\t'\\u05d1\\u05d0',\n\t\t'\\u05d1\\u05d1',\n\t\t'\\u05d4',\n\t\t'\\u05d4\\u05d0',\n\t\t'\\u05d4\\u05d1',\n\t\t'\\u05d4\\u05d1\\u05d0',\n\t\t'\\u05d4\\u05d1\\u05d1',\n\t];\n\tconst geresh = '\\u05f3',\n\t\tgershaim = '\\u05f4';\n\tlet mem = 0;\n\tlet result: string[] = [];\n\tlet step = 0;\n\twhile (numerals > 0) {\n\t\tlet m = numerals % 10;\n\t\tif (step === 0) {\n\t\t\tmem = m;\n\t\t} else if (step === 1) {\n\t\t\tif (m !== 1) {\n\t\t\t\tresult.unshift(hArray20_90[m], hArray0_9[mem]);\n\t\t\t} else {\n\t\t\t\tresult.unshift(hArray10_19[mem]);\n\t\t\t}\n\t\t} else if (step === 2) {\n\t\t\tresult.unshift(hArray100_900[m]);\n\t\t} else {\n\t\t\tif (m !== 5) {\n\t\t\t\tresult.unshift(hArray1000_9000[m], geresh, ' ');\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tnumerals = Math.floor(numerals / 10);\n\t\tif (step === 0 && numerals === 0) {\n\t\t\tresult.unshift(hArray0_9[m]);\n\t\t}\n\t\tstep++;\n\t}\n\tresult = result.join('').split('');\n\tif (result.length === 1) {\n\t\tresult.push(geresh);\n\t} else if (result.length > 1) {\n\t\tresult.splice(result.length - 1, 0, gershaim);\n\t}\n\treturn result.join('');\n}\n","import { NgbDate } from '../ngb-date';\nimport { fromJSDate, NgbCalendar, NgbPeriod, toJSDate } from '../ngb-calendar';\nimport { Injectable } from '@angular/core';\nimport { isNumber } from '../../util/util';\nimport {\n\tfromGregorian,\n\tgetDayNumberInHebrewYear,\n\tgetDaysInHebrewMonth,\n\tisHebrewLeapYear,\n\ttoGregorian,\n\tsetHebrewDay,\n\tsetHebrewMonth,\n} from './hebrew';\n\n/**\n * @since 3.2.0\n */\n@Injectable()\nexport class NgbCalendarHebrew extends NgbCalendar {\n\tgetDaysPerWeek() {\n\t\treturn 7;\n\t}\n\n\tgetMonths(year?: number) {\n\t\tif (year && isHebrewLeapYear(year)) {\n\t\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n\t\t} else {\n\t\t\treturn [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n\t\t}\n\t}\n\n\tgetWeeksPerMonth() {\n\t\treturn 6;\n\t}\n\n\tisValid(date?: NgbDate | null): boolean {\n\t\tif (date != null) {\n\t\t\tlet b = isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n\t\t\tb = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n\t\t\tb = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n\t\t\treturn b && !isNaN(toGregorian(date).getTime());\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\tdate = new NgbDate(date.year, date.month, date.day);\n\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tdate.year += number;\n\t\t\t\tdate.month = 1;\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'm':\n\t\t\t\tdate = setHebrewMonth(date, number);\n\t\t\t\tdate.day = 1;\n\t\t\t\treturn date;\n\t\t\tcase 'd':\n\t\t\t\treturn setHebrewDay(date, number);\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\t}\n\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate) {\n\t\tconst day = toGregorian(date).getDay();\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\treturn day === 0 ? 7 : day;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number) {\n\t\tconst date = week[week.length - 1];\n\t\treturn Math.ceil(getDayNumberInHebrewYear(date) / 7);\n\t}\n\n\tgetToday(): NgbDate {\n\t\treturn fromGregorian(new Date());\n\t}\n\n\t/**\n\t * @since 3.4.0\n\t */\n\ttoGregorian(date: NgbDate): NgbDate {\n\t\treturn fromJSDate(toGregorian(date));\n\t}\n\n\t/**\n\t * @since 3.4.0\n\t */\n\tfromGregorian(date: NgbDate): NgbDate {\n\t\treturn fromGregorian(toJSDate(date));\n\t}\n}\n","import { NgbDatepickerI18n } from '../datepicker-i18n';\nimport { NgbDateStruct } from '../../index';\nimport { hebrewNumerals, isHebrewLeapYear } from './hebrew';\nimport { Injectable } from '@angular/core';\nimport { TranslationWidth } from '@angular/common';\n\nconst WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\nconst MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\nconst MONTHS_LEAP = [\n\t'תשרי',\n\t'חשון',\n\t'כסלו',\n\t'טבת',\n\t'שבט',\n\t'אדר א׳',\n\t'אדר ב׳',\n\t'ניסן',\n\t'אייר',\n\t'סיון',\n\t'תמוז',\n\t'אב',\n\t'אלול',\n];\n\n/**\n * @since 3.2.0\n */\n@Injectable()\nexport class NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\n\tgetMonthShortName(month: number, year?: number): string {\n\t\treturn this.getMonthFullName(month, year);\n\t}\n\n\tgetMonthFullName(month: number, year?: number): string {\n\t\treturn isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] || '' : MONTHS[month - 1] || '';\n\t}\n\n\tgetWeekdayLabel(weekday: number, width?: TranslationWidth) {\n\t\treturn WEEKDAYS[weekday - 1] || '';\n\t}\n\n\tgetDayAriaLabel(date: NgbDateStruct): string {\n\t\treturn `${hebrewNumerals(date.day)} ${this.getMonthFullName(date.month, date.year)} ${hebrewNumerals(date.year)}`;\n\t}\n\n\tgetDayNumerals(date: NgbDateStruct): string {\n\t\treturn hebrewNumerals(date.day);\n\t}\n\n\tgetWeekNumerals(weekNumber: number): string {\n\t\treturn hebrewNumerals(weekNumber);\n\t}\n\n\tgetYearNumerals(year: number): string {\n\t\treturn hebrewNumerals(year);\n\t}\n}\n","import { NgbDate } from '../ngb-date';\n\n/**\n * Returns the equivalent JS date value for a give input Buddhist date.\n * `date` is an Buddhist date to be converted to Gregorian.\n */\nexport function toGregorian(date: NgbDate): Date {\n\treturn new Date(date.year - 543, date.month - 1, date.day);\n}\n\n/**\n * Returns the equivalent Buddhist date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Buddhist.\n * utc to local\n */\nexport function fromGregorian(gdate: Date): NgbDate {\n\treturn new NgbDate(gdate.getFullYear() + 543, gdate.getMonth() + 1, gdate.getDate());\n}\n","import { Injectable } from '@angular/core';\nimport { isInteger } from '../../util/util';\nimport { NgbCalendarGregorian, NgbPeriod } from '../ngb-calendar';\nimport { NgbDate } from '../ngb-date';\nimport { fromGregorian, toGregorian } from './buddhist';\n\n/**\n * @since 9.1.0\n */\n@Injectable()\nexport class NgbCalendarBuddhist extends NgbCalendarGregorian {\n\tgetToday(): NgbDate {\n\t\treturn fromGregorian(new Date());\n\t}\n\n\tgetNext(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\tlet jsDate = toGregorian(date);\n\t\tlet checkMonth = true;\n\t\tlet expectedMonth = jsDate.getMonth();\n\n\t\tswitch (period) {\n\t\t\tcase 'y':\n\t\t\t\tjsDate.setFullYear(jsDate.getFullYear() + number);\n\t\t\t\tbreak;\n\t\t\tcase 'm':\n\t\t\t\texpectedMonth += number;\n\t\t\t\tjsDate.setMonth(expectedMonth);\n\t\t\t\texpectedMonth = expectedMonth % 12;\n\t\t\t\tif (expectedMonth < 0) {\n\t\t\t\t\texpectedMonth = expectedMonth + 12;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'd':\n\t\t\t\tjsDate.setDate(jsDate.getDate() + number);\n\t\t\t\tcheckMonth = false;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn date;\n\t\t}\n\n\t\tif (checkMonth && jsDate.getMonth() !== expectedMonth) {\n\t\t\t// this means the destination month has less days than the initial month\n\t\t\t// let's go back to the end of the previous month:\n\t\t\tjsDate.setDate(0);\n\t\t}\n\n\t\treturn fromGregorian(jsDate);\n\t}\n\n\tgetPrev(date: NgbDate, period: NgbPeriod = 'd', number = 1) {\n\t\treturn this.getNext(date, period, -number);\n\t}\n\n\tgetWeekday(date: NgbDate) {\n\t\tlet jsDate = toGregorian(date);\n\t\tlet day = jsDate.getDay();\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\treturn day === 0 ? 7 : day;\n\t}\n\n\tgetWeekNumber(week: readonly NgbDate[], firstDayOfWeek: number) {\n\t\t// in JS Date Sun=0, in ISO 8601 Sun=7\n\t\tif (firstDayOfWeek === 7) {\n\t\t\tfirstDayOfWeek = 0;\n\t\t}\n\n\t\tconst thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n\t\tlet date = week[thursdayIndex];\n\n\t\tconst jsDate = toGregorian(date);\n\t\tjsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n\t\tconst time = jsDate.getTime();\n\t\tjsDate.setMonth(0); // Compare with Jan 1\n\t\tjsDate.setDate(1);\n\t\treturn Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n\t}\n\n\tisValid(date?: NgbDate | null): boolean {\n\t\tif (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// year 0 doesn't exist in Gregorian calendar\n\t\tif (date.year === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst jsDate = toGregorian(date);\n\n\t\treturn (\n\t\t\t!isNaN(jsDate.getTime()) &&\n\t\t\tjsDate.getFullYear() === date.year - 543 &&\n\t\t\tjsDate.getMonth() + 1 === date.month &&\n\t\t\tjsDate.getDate() === date.day\n\t\t);\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { NgbDateAdapter } from './ngb-date-adapter';\nimport { NgbDateStruct } from '../ngb-date-struct';\nimport { isInteger } from '../../util/util';\n\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\n@Injectable()\nexport class NgbDateNativeAdapter extends NgbDateAdapter {\n\t/**\n\t * Converts a native `Date` to a `NgbDateStruct`.\n\t */\n\tfromModel(date: Date | null): NgbDateStruct | null {\n\t\treturn date instanceof Date && !isNaN(date.getTime()) ? this._fromNativeDate(date) : null;\n\t}\n\n\t/**\n\t * Converts a `NgbDateStruct` to a native `Date`.\n\t */\n\ttoModel(date: NgbDateStruct | null): Date | null {\n\t\treturn date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)\n\t\t\t? this._toNativeDate(date)\n\t\t\t: null;\n\t}\n\n\tprotected _fromNativeDate(date: Date): NgbDateStruct {\n\t\treturn { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n\t}\n\n\tprotected _toNativeDate(date: NgbDateStruct): Date {\n\t\tconst jsDate = new Date(date.year, date.month - 1, date.day, 12);\n\t\t// avoid 30 -> 1930 conversion\n\t\tjsDate.setFullYear(date.year);\n\t\treturn jsDate;\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { NgbDateStruct } from '../ngb-date-struct';\nimport { NgbDateNativeAdapter } from './ngb-date-native-adapter';\n\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * @since 3.2.0\n */\n@Injectable()\nexport class NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\n\tprotected _fromNativeDate(date: Date): NgbDateStruct {\n\t\treturn { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\n\t}\n\n\tprotected _toNativeDate(date: NgbDateStruct): Date {\n\t\tconst jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n\t\t// avoid 30 -> 1930 conversion\n\t\tjsDate.setUTCFullYear(date.year);\n\t\treturn jsDate;\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { NgbDatepicker, NgbDatepickerContent } from './datepicker';\nimport { NgbDatepickerMonth } from './datepicker';\nimport { NgbInputDatepicker } from './datepicker-input';\n\nexport { NgbDatepicker, NgbDatepickerContent, NgbDatepickerNavigateEvent, NgbDatepickerState } from './datepicker';\nexport { NgbInputDatepicker } from './datepicker-input';\nexport { NgbCalendar, NgbPeriod, NgbCalendarGregorian } from './ngb-calendar';\nexport { NgbCalendarIslamicCivil } from './hijri/ngb-calendar-islamic-civil';\nexport { NgbCalendarIslamicUmalqura } from './hijri/ngb-calendar-islamic-umalqura';\nexport { NgbCalendarPersian } from './jalali/ngb-calendar-persian';\nexport { NgbCalendarHebrew } from './hebrew/ngb-calendar-hebrew';\nexport { NgbDatepickerI18nHebrew } from './hebrew/datepicker-i18n-hebrew';\nexport { NgbCalendarBuddhist } from './buddhist/ngb-calendar-buddhist';\nexport { NgbDatepickerMonth } from './datepicker';\nexport { NgbDatepickerDayView } from './datepicker-day-view';\nexport { NgbDatepickerNavigation } from './datepicker-navigation';\nexport { NgbDatepickerNavigationSelect } from './datepicker-navigation-select';\nexport { NgbDatepickerConfig } from './datepicker-config';\nexport { NgbInputDatepickerConfig } from './datepicker-input-config';\nexport { NgbDatepickerI18n, NgbDatepickerI18nDefault } from './datepicker-i18n';\nexport { NgbDateStruct } from './ngb-date-struct';\nexport { NgbDate } from './ngb-date';\nexport { NgbDateAdapter, NgbDateStructAdapter } from './adapters/ngb-date-adapter';\nexport { NgbDateNativeAdapter } from './adapters/ngb-date-native-adapter';\nexport { NgbDateNativeUTCAdapter } from './adapters/ngb-date-native-utc-adapter';\nexport { NgbDateParserFormatter } from './ngb-date-parser-formatter';\nexport { NgbDatepickerKeyboardService } from './datepicker-keyboard-service';\n\nconst NGB_DATEPICKER_DIRECTIVES = [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth];\n\n@NgModule({\n\texports: NGB_DATEPICKER_DIRECTIVES,\n\timports: NGB_DATEPICKER_DIRECTIVES,\n})\nexport class NgbDatepickerModule {}\n","import { Injectable } from '@angular/core';\nimport { Options } from '@popperjs/core';\nimport { PlacementArray } from '../util/positioning';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbDropdownConfig {\n\tautoClose: boolean | 'outside' | 'inside' = true;\n\tplacement: PlacementArray = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n\tpopperOptions = (options: Partial) => options;\n\tcontainer: null | 'body';\n}\n","import {\n\tAfterContentInit,\n\tChangeDetectorRef,\n\tContentChild,\n\tContentChildren,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tInject,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tQueryList,\n\tRenderer2,\n\tSimpleChanges,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { fromEvent, Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { ngbPositioning, Placement, PlacementArray } from '../util/positioning';\nimport { Options } from '@popperjs/core';\nimport { addPopperOffset } from '../util/positioning-util';\nimport { ngbAutoClose, SOURCE } from '../util/autoclose';\nimport { Key } from '../util/key';\n\nimport { NgbDropdownConfig } from './dropdown-config';\nimport { FOCUSABLE_ELEMENTS_SELECTOR } from '../util/focus-trap';\nimport { getActiveElement } from '../util/util';\n\n/**\n * @deprecated 14.2.0 this directive isn't useful anymore. You can remove it from your imports\n */\n@Directive({ selector: '.navbar', standalone: true })\nexport class 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 */\n@Directive({\n\tselector: '[ngbDropdownItem]',\n\tstandalone: true,\n\thost: { class: 'dropdown-item', '[class.disabled]': 'disabled', '[tabIndex]': 'disabled ? -1 : 0' },\n})\nexport class NgbDropdownItem {\n\tstatic ngAcceptInputType_disabled: boolean | '';\n\n\tprivate _disabled = false;\n\n\t@Input()\n\tset disabled(value: boolean) {\n\t\tthis._disabled = value === '' || value === true; // accept an empty attribute as true\n\t\t// note: we don't use a host binding for disabled because when used on links, it fails because links don't have a\n\t\t// disabled property\n\t\t// setting the property using the renderer, OTOH, works fine in both cases.\n\t\tthis._renderer.setProperty(this.elementRef.nativeElement, 'disabled', this._disabled);\n\t}\n\n\tget disabled(): boolean {\n\t\treturn this._disabled;\n\t}\n\n\tconstructor(public elementRef: ElementRef, private _renderer: Renderer2) {}\n}\n\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\n@Directive({\n\tselector: '[ngbDropdownMenu]',\n\tstandalone: true,\n\thost: {\n\t\t'[class.dropdown-menu]': 'true',\n\t\t'[class.show]': 'dropdown.isOpen()',\n\t\t'(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.Home)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.End)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.Enter)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.Space)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.Tab)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)',\n\t},\n})\nexport class NgbDropdownMenu {\n\tnativeElement: HTMLElement;\n\tplacement: Placement | null = 'bottom';\n\tisOpen = false;\n\n\t@ContentChildren(NgbDropdownItem) menuItems: QueryList;\n\n\tconstructor(\n\t\t@Inject(forwardRef(() => NgbDropdown)) public dropdown: NgbDropdown,\n\t\t_elementRef: ElementRef,\n\t) {\n\t\tthis.nativeElement = _elementRef.nativeElement;\n\t}\n}\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 */\n@Directive({\n\tselector: '[ngbDropdownAnchor]',\n\tstandalone: true,\n\thost: { class: 'dropdown-toggle', '[attr.aria-expanded]': 'dropdown.isOpen()' },\n})\nexport class NgbDropdownAnchor {\n\tnativeElement: HTMLElement;\n\tconstructor(\n\t\t@Inject(forwardRef(() => NgbDropdown)) public dropdown: NgbDropdown,\n\t\t_elementRef: ElementRef,\n\t) {\n\t\tthis.nativeElement = _elementRef.nativeElement;\n\t}\n}\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 */\n@Directive({\n\tselector: '[ngbDropdownToggle]',\n\tstandalone: true,\n\thost: {\n\t\tclass: 'dropdown-toggle',\n\t\t'[attr.aria-expanded]': 'dropdown.isOpen()',\n\t\t'(click)': 'dropdown.toggle()',\n\t\t'(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.Home)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.End)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.Tab)': 'dropdown.onKeyDown($event)',\n\t\t'(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)',\n\t},\n\tproviders: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }],\n})\nexport class NgbDropdownToggle extends NgbDropdownAnchor {\n\tconstructor(@Inject(forwardRef(() => NgbDropdown)) dropdown: NgbDropdown, elementRef: ElementRef) {\n\t\tsuper(dropdown, elementRef);\n\t}\n}\n\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\n@Directive({\n\tselector: '[ngbDropdown]',\n\texportAs: 'ngbDropdown',\n\tstandalone: true,\n\thost: { '[class.show]': 'isOpen()' },\n})\nexport class NgbDropdown implements OnInit, AfterContentInit, OnChanges, OnDestroy {\n\tstatic ngAcceptInputType_autoClose: boolean | string;\n\tstatic ngAcceptInputType_display: string;\n\tprivate _destroyCloseHandlers$ = new Subject();\n\tprivate _zoneSubscription: Subscription;\n\tprivate _bodyContainer: HTMLElement | null = null;\n\tprivate _positioning: ReturnType;\n\n\t@ContentChild(NgbDropdownMenu, { static: false }) private _menu: NgbDropdownMenu;\n\t@ContentChild(NgbDropdownAnchor, { static: false }) private _anchor: NgbDropdownAnchor;\n\n\t/**\n\t * Indicates whether the dropdown should be closed when clicking one of dropdown items or pressing ESC.\n\t *\n\t * * `true` - the dropdown will close on both outside and inside (menu) clicks.\n\t * * `false` - the dropdown can only be closed manually via `close()` or `toggle()` methods.\n\t * * `\"inside\"` - the dropdown will close on inside menu clicks, but not outside clicks.\n\t * * `\"outside\"` - the dropdown will close only on the outside clicks and not on menu clicks.\n\t */\n\t@Input() autoClose: boolean | 'outside' | 'inside';\n\n\t/**\n\t * A custom class that is applied only to the `ngbDropdownMenu` parent element.\n\t * * In case of the inline dropdown it will be the `
`\n\t * * In case of the dropdown with `container=\"body\"` it will be the `
` attached to the ``\n\t *\n\t * Useful mainly when dropdown is attached to the body.\n\t * If the dropdown is inline just use `
` instead.\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() dropdownClass: string;\n\n\t/**\n\t * Defines whether or not the dropdown menu is opened initially.\n\t */\n\t@Input('open') _open = false;\n\n\t/**\n\t * The preferred placement of the dropdown, among the [possible values](#/guides/positioning#api).\n\t *\n\t * The default order of preference is `\"bottom-start bottom-end top-start top-end\"`\n\t *\n\t * Please see the [positioning overview](#/positioning) for more details.\n\t */\n\t@Input() placement: PlacementArray;\n\n\t/**\n\t * Allows to change default Popper options when positioning the dropdown.\n\t * Receives current popper options and returns modified ones.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() popperOptions: (options: Partial) => Partial;\n\n\t/**\n\t * A selector specifying the element the dropdown should be appended to.\n\t * Currently only supports \"body\".\n\t *\n\t * @since 4.1.0\n\t */\n\t@Input() container: null | 'body';\n\n\t/**\n\t * Enable or disable the dynamic positioning. The default value is dynamic unless the dropdown is used\n\t * inside a Bootstrap navbar. If you need custom placement for a dropdown in a navbar, set it to\n\t * dynamic explicitly. See the [positioning of dropdown](#/positioning#dropdown)\n\t * and the [navbar demo](/#/components/dropdown/examples#navbar) for more details.\n\t *\n\t * @since 4.2.0\n\t */\n\t@Input() display: 'dynamic' | 'static';\n\n\t/**\n\t * An event fired when the dropdown is opened or closed.\n\t *\n\t * The event payload is a `boolean`:\n\t * * `true` - the dropdown was opened\n\t * * `false` - the dropdown was closed\n\t */\n\t@Output() openChange = new EventEmitter();\n\n\tconstructor(\n\t\tprivate _changeDetector: ChangeDetectorRef,\n\t\tconfig: NgbDropdownConfig,\n\t\t@Inject(DOCUMENT) private _document: any,\n\t\tprivate _ngZone: NgZone,\n\t\tprivate _elementRef: ElementRef,\n\t\tprivate _renderer: Renderer2,\n\t) {\n\t\tthis.placement = config.placement;\n\t\tthis.popperOptions = config.popperOptions;\n\t\tthis.container = config.container;\n\t\tthis.autoClose = config.autoClose;\n\n\t\tthis._positioning = ngbPositioning();\n\t}\n\n\tngOnInit(): void {\n\t\tif (!this.display) {\n\t\t\tthis.display = this._elementRef.nativeElement.closest('.navbar') ? 'static' : 'dynamic';\n\t\t}\n\t}\n\n\tngAfterContentInit() {\n\t\tthis._ngZone.onStable.pipe(take(1)).subscribe(() => {\n\t\t\tthis._applyPlacementClasses();\n\t\t\tif (this._open) {\n\t\t\t\tthis._setCloseHandlers();\n\t\t\t}\n\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes.container && this._open) {\n\t\t\tthis._applyContainer(this.container);\n\t\t}\n\n\t\tif (changes.placement && !changes.placement.firstChange) {\n\t\t\tthis._positioning.setOptions({\n\t\t\t\thostElement: this._anchor.nativeElement,\n\t\t\t\ttargetElement: this._bodyContainer || this._menu.nativeElement,\n\t\t\t\tplacement: this.placement,\n\t\t\t\tappendToBody: this.container === 'body',\n\t\t\t});\n\t\t\tthis._applyPlacementClasses();\n\t\t}\n\n\t\tif (changes.dropdownClass) {\n\t\t\tconst { currentValue, previousValue } = changes.dropdownClass;\n\t\t\tthis._applyCustomDropdownClass(currentValue, previousValue);\n\t\t}\n\n\t\tif (changes.autoClose && this._open) {\n\t\t\tthis.autoClose = changes.autoClose.currentValue;\n\t\t\tthis._setCloseHandlers();\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the dropdown menu is open.\n\t */\n\tisOpen(): boolean {\n\t\treturn this._open;\n\t}\n\n\t/**\n\t * Opens the dropdown menu.\n\t */\n\topen(): void {\n\t\tif (!this._open) {\n\t\t\tthis._open = true;\n\t\t\tthis._applyContainer(this.container);\n\t\t\tthis.openChange.emit(true);\n\t\t\tthis._setCloseHandlers();\n\t\t\tif (this._anchor) {\n\t\t\t\tthis._anchor.nativeElement.focus();\n\t\t\t\tif (this.display === 'dynamic') {\n\t\t\t\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\t\t\t\tthis._positioning.createPopper({\n\t\t\t\t\t\t\thostElement: this._anchor.nativeElement,\n\t\t\t\t\t\t\ttargetElement: this._bodyContainer || this._menu.nativeElement,\n\t\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\t\tappendToBody: this.container === 'body',\n\t\t\t\t\t\t\tupdatePopperOptions: (options) => this.popperOptions(addPopperOffset([0, 2])(options)),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._applyPlacementClasses();\n\t\t\t\t\t\tthis._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positionMenu());\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _setCloseHandlers() {\n\t\tthis._destroyCloseHandlers$.next(); // destroy any existing close handlers\n\n\t\tngbAutoClose(\n\t\t\tthis._ngZone,\n\t\t\tthis._document,\n\t\t\tthis.autoClose,\n\t\t\t(source: SOURCE) => {\n\t\t\t\tthis.close();\n\t\t\t\tif (source === SOURCE.ESCAPE) {\n\t\t\t\t\tthis._anchor.nativeElement.focus();\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis._destroyCloseHandlers$,\n\t\t\tthis._menu ? [this._menu.nativeElement] : [],\n\t\t\tthis._anchor ? [this._anchor.nativeElement] : [],\n\t\t\t'.dropdown-item,.dropdown-divider',\n\t\t);\n\t}\n\n\t/**\n\t * Closes the dropdown menu.\n\t */\n\tclose(): void {\n\t\tif (this._open) {\n\t\t\tthis._open = false;\n\t\t\tthis._resetContainer();\n\t\t\tthis._positioning.destroy();\n\t\t\tthis._zoneSubscription?.unsubscribe();\n\t\t\tthis._destroyCloseHandlers$.next();\n\t\t\tthis.openChange.emit(false);\n\t\t\tthis._changeDetector.markForCheck();\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the dropdown menu.\n\t */\n\ttoggle(): void {\n\t\tif (this.isOpen()) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis.close();\n\t}\n\n\tonKeyDown(event: KeyboardEvent) {\n\t\t/* eslint-disable-next-line deprecation/deprecation */\n\t\tconst key = event.which;\n\t\tconst itemElements = this._getMenuElements();\n\n\t\tlet position = -1;\n\t\tlet itemElement: HTMLElement | null = null;\n\t\tconst isEventFromToggle = this._isEventFromToggle(event);\n\n\t\tif (!isEventFromToggle && itemElements.length) {\n\t\t\titemElements.forEach((item, index) => {\n\t\t\t\tif (item.contains(event.target as HTMLElement)) {\n\t\t\t\t\titemElement = item;\n\t\t\t\t}\n\t\t\t\tif (item === getActiveElement(this._document)) {\n\t\t\t\t\tposition = index;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// closing on Enter / Space\n\t\tif (key === Key.Space || key === Key.Enter) {\n\t\t\tif (itemElement && (this.autoClose === true || this.autoClose === 'inside')) {\n\t\t\t\t// Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\n\t\t\t\t// So we have to register a one-time click handler that will fire after any user defined click handlers\n\t\t\t\t// to close the dropdown\n\t\t\t\tfromEvent(itemElement, 'click')\n\t\t\t\t\t.pipe(take(1))\n\t\t\t\t\t.subscribe(() => this.close());\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (key === Key.Tab) {\n\t\t\tif (event.target && this.isOpen() && this.autoClose) {\n\t\t\t\tif (this._anchor.nativeElement === event.target) {\n\t\t\t\t\tif (this.container === 'body' && !event.shiftKey) {\n\t\t\t\t\t\t/* This case is special: user is using [Tab] from the anchor/toggle.\n User expects the next focusable element in the dropdown menu to get focus.\n But the menu is not a sibling to anchor/toggle, it is at the end of the body.\n Trick is to synchronously focus the menu element, and let the [keydown.Tab] go\n so that browser will focus the proper element (first one focusable in the menu) */\n\t\t\t\t\t\tthis._renderer.setAttribute(this._menu.nativeElement, 'tabindex', '0');\n\t\t\t\t\t\tthis._menu.nativeElement.focus();\n\t\t\t\t\t\tthis._renderer.removeAttribute(this._menu.nativeElement, 'tabindex');\n\t\t\t\t\t} else if (event.shiftKey) {\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t} else if (this.container === 'body') {\n\t\t\t\t\tconst focusableElements = this._menu.nativeElement.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR);\n\t\t\t\t\tif (event.shiftKey && event.target === focusableElements[0]) {\n\t\t\t\t\t\tthis._anchor.nativeElement.focus();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t} else if (!event.shiftKey && event.target === focusableElements[focusableElements.length - 1]) {\n\t\t\t\t\t\tthis._anchor.nativeElement.focus();\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfromEvent(event.target as HTMLElement, 'focusout')\n\t\t\t\t\t\t.pipe(take(1))\n\t\t\t\t\t\t.subscribe(({ relatedTarget }) => {\n\t\t\t\t\t\t\tif (!this._elementRef.nativeElement.contains(relatedTarget as HTMLElement)) {\n\t\t\t\t\t\t\t\tthis.close();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// opening / navigating\n\t\tif (isEventFromToggle || itemElement) {\n\t\t\tthis.open();\n\n\t\t\tif (itemElements.length) {\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase Key.ArrowDown:\n\t\t\t\t\t\tposition = Math.min(position + 1, itemElements.length - 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Key.ArrowUp:\n\t\t\t\t\t\tif (this._isDropup() && position === -1) {\n\t\t\t\t\t\t\tposition = itemElements.length - 1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tposition = Math.max(position - 1, 0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Key.Home:\n\t\t\t\t\t\tposition = 0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase Key.End:\n\t\t\t\t\t\tposition = itemElements.length - 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\titemElements[position].focus();\n\t\t\t}\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tprivate _isDropup(): boolean {\n\t\treturn this._elementRef.nativeElement.classList.contains('dropup');\n\t}\n\n\tprivate _isEventFromToggle(event: KeyboardEvent) {\n\t\treturn this._anchor.nativeElement.contains(event.target as HTMLElement);\n\t}\n\n\tprivate _getMenuElements(): HTMLElement[] {\n\t\tconst menu = this._menu;\n\t\tif (menu == null) {\n\t\t\treturn [];\n\t\t}\n\t\treturn menu.menuItems.filter((item) => !item.disabled).map((item) => item.elementRef.nativeElement);\n\t}\n\n\tprivate _positionMenu() {\n\t\tconst menu = this._menu;\n\t\tif (this.isOpen() && menu) {\n\t\t\tif (this.display === 'dynamic') {\n\t\t\t\tthis._positioning.update();\n\t\t\t\tthis._applyPlacementClasses();\n\t\t\t} else {\n\t\t\t\tthis._applyPlacementClasses(this._getFirstPlacement(this.placement));\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _getFirstPlacement(placement: PlacementArray): Placement {\n\t\treturn Array.isArray(placement) ? placement[0] : (placement.split(' ')[0] as Placement);\n\t}\n\n\tprivate _resetContainer() {\n\t\tconst renderer = this._renderer;\n\t\tif (this._menu) {\n\t\t\tconst dropdownElement = this._elementRef.nativeElement;\n\t\t\tconst dropdownMenuElement = this._menu.nativeElement;\n\n\t\t\trenderer.appendChild(dropdownElement, dropdownMenuElement);\n\t\t}\n\t\tif (this._bodyContainer) {\n\t\t\trenderer.removeChild(this._document.body, this._bodyContainer);\n\t\t\tthis._bodyContainer = null;\n\t\t}\n\t}\n\n\tprivate _applyContainer(container: null | 'body' = null) {\n\t\tthis._resetContainer();\n\t\tif (container === 'body') {\n\t\t\tconst renderer = this._renderer;\n\t\t\tconst dropdownMenuElement = this._menu.nativeElement;\n\t\t\tconst bodyContainer = (this._bodyContainer = this._bodyContainer || renderer.createElement('div'));\n\n\t\t\t// Override some styles to have the positioning working\n\t\t\trenderer.setStyle(bodyContainer, 'position', 'absolute');\n\t\t\trenderer.setStyle(dropdownMenuElement, 'position', 'static');\n\t\t\trenderer.setStyle(bodyContainer, 'z-index', '1055');\n\n\t\t\trenderer.appendChild(bodyContainer, dropdownMenuElement);\n\t\t\trenderer.appendChild(this._document.body, bodyContainer);\n\t\t}\n\n\t\tthis._applyCustomDropdownClass(this.dropdownClass);\n\t}\n\n\tprivate _applyCustomDropdownClass(newClass: string, oldClass?: string) {\n\t\tconst targetElement = this.container === 'body' ? this._bodyContainer : this._elementRef.nativeElement;\n\t\tif (targetElement) {\n\t\t\tif (oldClass) {\n\t\t\t\tthis._renderer.removeClass(targetElement, oldClass);\n\t\t\t}\n\t\t\tif (newClass) {\n\t\t\t\tthis._renderer.addClass(targetElement, newClass);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _applyPlacementClasses(placement?: Placement | null) {\n\t\tconst menu = this._menu;\n\t\tif (menu) {\n\t\t\tif (!placement) {\n\t\t\t\tplacement = this._getFirstPlacement(this.placement);\n\t\t\t}\n\n\t\t\tconst renderer = this._renderer;\n\t\t\tconst dropdownElement = this._elementRef.nativeElement;\n\n\t\t\t// remove the current placement classes\n\t\t\trenderer.removeClass(dropdownElement, 'dropup');\n\t\t\trenderer.removeClass(dropdownElement, 'dropdown');\n\t\t\tconst { nativeElement } = menu;\n\t\t\tif (this.display === 'static') {\n\t\t\t\tmenu.placement = null;\n\t\t\t\trenderer.setAttribute(nativeElement, 'data-bs-popper', 'static');\n\t\t\t} else {\n\t\t\t\tmenu.placement = placement;\n\t\t\t\trenderer.removeAttribute(nativeElement, 'data-bs-popper');\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * apply the new placement\n\t\t\t * in case of top use up-arrow or down-arrow otherwise\n\t\t\t */\n\t\t\tconst dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n\t\t\trenderer.addClass(dropdownElement, dropdownClass);\n\n\t\t\tconst bodyContainer = this._bodyContainer;\n\t\t\tif (bodyContainer) {\n\t\t\t\trenderer.removeClass(bodyContainer, 'dropup');\n\t\t\t\trenderer.removeClass(bodyContainer, 'dropdown');\n\t\t\t\trenderer.addClass(bodyContainer, dropdownClass);\n\t\t\t}\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem } from './dropdown';\n\nexport {\n\tNgbDropdown,\n\tNgbDropdownAnchor,\n\tNgbDropdownToggle,\n\tNgbDropdownMenu,\n\tNgbDropdownItem,\n\t// eslint-disable-next-line deprecation/deprecation\n\tNgbNavbar,\n} from './dropdown';\nexport { NgbDropdownConfig } from './dropdown-config';\n\nconst NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem];\n\n@NgModule({\n\timports: NGB_DROPDOWN_DIRECTIVES,\n\texports: NGB_DROPDOWN_DIRECTIVES,\n})\nexport class NgbDropdownModule {}\n","import {\n\tApplicationRef,\n\tComponentRef,\n\tInjector,\n\tNgZone,\n\tRenderer2,\n\tTemplateRef,\n\tType,\n\tViewContainerRef,\n\tViewRef,\n} from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\nimport { mergeMap, take, tap } from 'rxjs/operators';\n\nimport { ngbRunTransition } from './transition/ngbTransition';\n\nexport class ContentRef {\n\tconstructor(public nodes: Node[][], public viewRef?: ViewRef, public componentRef?: ComponentRef) {}\n}\n\nexport class PopupService {\n\tprivate _windowRef: ComponentRef | null = null;\n\tprivate _contentRef: ContentRef | null = null;\n\n\tconstructor(\n\t\tprivate _componentType: Type,\n\t\tprivate _injector: Injector,\n\t\tprivate _viewContainerRef: ViewContainerRef,\n\t\tprivate _renderer: Renderer2,\n\t\tprivate _ngZone: NgZone,\n\t\tprivate _applicationRef: ApplicationRef,\n\t) {}\n\n\topen(\n\t\tcontent?: string | TemplateRef,\n\t\ttemplateContext?: any,\n\t\tanimation = false,\n\t): { windowRef: ComponentRef; transition$: Observable } {\n\t\tif (!this._windowRef) {\n\t\t\tthis._contentRef = this._getContentRef(content, templateContext);\n\t\t\tthis._windowRef = this._viewContainerRef.createComponent(this._componentType, {\n\t\t\t\tinjector: this._injector,\n\t\t\t\tprojectableNodes: this._contentRef.nodes,\n\t\t\t});\n\t\t}\n\n\t\tconst { nativeElement } = this._windowRef.location;\n\t\tconst transition$ = this._ngZone.onStable.pipe(\n\t\t\ttake(1),\n\t\t\tmergeMap(() =>\n\t\t\t\tngbRunTransition(this._ngZone, nativeElement, ({ classList }) => classList.add('show'), {\n\t\t\t\t\tanimation,\n\t\t\t\t\trunningTransition: 'continue',\n\t\t\t\t}),\n\t\t\t),\n\t\t);\n\n\t\treturn { windowRef: this._windowRef, transition$ };\n\t}\n\n\tclose(animation = false): Observable {\n\t\tif (!this._windowRef) {\n\t\t\treturn of(undefined);\n\t\t}\n\n\t\treturn ngbRunTransition(\n\t\t\tthis._ngZone,\n\t\t\tthis._windowRef.location.nativeElement,\n\t\t\t({ classList }) => classList.remove('show'),\n\t\t\t{ animation, runningTransition: 'stop' },\n\t\t).pipe(\n\t\t\ttap(() => {\n\t\t\t\tif (this._windowRef) {\n\t\t\t\t\t// this is required because of the container='body' option\n\t\t\t\t\tthis._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n\t\t\t\t\tthis._windowRef = null;\n\t\t\t\t}\n\t\t\t\tif (this._contentRef?.viewRef) {\n\t\t\t\t\tthis._applicationRef.detachView(this._contentRef.viewRef);\n\t\t\t\t\tthis._contentRef.viewRef.destroy();\n\t\t\t\t\tthis._contentRef = null;\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\t}\n\n\tprivate _getContentRef(content?: string | TemplateRef, templateContext?: any): ContentRef {\n\t\tif (!content) {\n\t\t\treturn new ContentRef([]);\n\t\t} else if (content instanceof TemplateRef) {\n\t\t\tconst viewRef = content.createEmbeddedView(templateContext);\n\t\t\tthis._applicationRef.attachView(viewRef);\n\t\t\treturn new ContentRef([viewRef.rootNodes], viewRef);\n\t\t} else {\n\t\t\treturn new ContentRef([[this._renderer.createText(`${content}`)]]);\n\t\t}\n\t}\n}\n","import { Component, ElementRef, Input, NgZone, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { ngbRunTransition } from '../util/transition/ngbTransition';\nimport { reflow } from '../util/util';\n\n@Component({\n\tselector: 'ngb-modal-backdrop',\n\tstandalone: true,\n\tencapsulation: ViewEncapsulation.None,\n\ttemplate: '',\n\thost: {\n\t\t'[class]': '\"modal-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n\t\t'[class.show]': '!animation',\n\t\t'[class.fade]': 'animation',\n\t\tstyle: 'z-index: 1055',\n\t},\n})\nexport class NgbModalBackdrop implements OnInit {\n\t@Input() animation: boolean;\n\t@Input() backdropClass: string;\n\n\tconstructor(private _el: ElementRef, private _zone: NgZone) {}\n\n\tngOnInit() {\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tngbRunTransition(\n\t\t\t\t\tthis._zone,\n\t\t\t\t\tthis._el.nativeElement,\n\t\t\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\t\t\tif (animation) {\n\t\t\t\t\t\t\treflow(element);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telement.classList.add('show');\n\t\t\t\t\t},\n\t\t\t\t\t{ animation: this.animation, runningTransition: 'continue' },\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\thide(): Observable {\n\t\treturn ngbRunTransition(this._zone, this._el.nativeElement, ({ classList }) => classList.remove('show'), {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'stop',\n\t\t});\n\t}\n}\n","import { ComponentRef } from '@angular/core';\n\nimport { Observable, of, Subject, zip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NgbModalBackdrop } from './modal-backdrop';\nimport { NgbModalWindow } from './modal-window';\nimport { NgbModalOptions, NgbModalUpdatableOptions } from './modal-config';\nimport { isDefined } from '../util/util';\n\nimport { ContentRef } from '../util/popup';\nimport { isPromise } from '../util/util';\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 `.update()`, `.close()` or `.dismiss()` the modal window from your component.\n */\nexport class NgbActiveModal {\n\t/**\n\t * Updates options of an opened modal.\n\t *\n\t * @since 14.2.0\n\t */\n\tupdate(options: NgbModalUpdatableOptions): void {}\n\t/**\n\t * Closes the modal with an optional `result` value.\n\t *\n\t * The `NgbModalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {}\n\n\t/**\n\t * Dismisses the modal with an optional `reason` value.\n\t *\n\t * The `NgbModalRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {}\n}\n\nconst WINDOW_ATTRIBUTES: string[] = [\n\t'animation',\n\t'ariaLabelledBy',\n\t'ariaDescribedBy',\n\t'backdrop',\n\t'centered',\n\t'fullscreen',\n\t'keyboard',\n\t'scrollable',\n\t'size',\n\t'windowClass',\n\t'modalDialogClass',\n];\nconst BACKDROP_ATTRIBUTES: string[] = ['animation', 'backdropClass'];\n\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nexport class NgbModalRef {\n\tprivate _closed = new Subject();\n\tprivate _dismissed = new Subject();\n\tprivate _hidden = new Subject();\n\tprivate _resolve: (result?: any) => void;\n\tprivate _reject: (reason?: any) => void;\n\n\tprivate _applyWindowOptions(windowInstance: NgbModalWindow, options: NgbModalOptions): void {\n\t\tWINDOW_ATTRIBUTES.forEach((optionName: string) => {\n\t\t\tif (isDefined(options[optionName])) {\n\t\t\t\twindowInstance[optionName] = options[optionName];\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _applyBackdropOptions(backdropInstance: NgbModalBackdrop, options: NgbModalOptions): void {\n\t\tBACKDROP_ATTRIBUTES.forEach((optionName: string) => {\n\t\t\tif (isDefined(options[optionName])) {\n\t\t\t\tbackdropInstance[optionName] = options[optionName];\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Updates options of an opened modal.\n\t *\n\t * @since 14.2.0\n\t */\n\tupdate(options: NgbModalUpdatableOptions): void {\n\t\tthis._applyWindowOptions(this._windowCmptRef.instance, options);\n\t\tif (this._backdropCmptRef && this._backdropCmptRef.instance) {\n\t\t\tthis._applyBackdropOptions(this._backdropCmptRef.instance, options);\n\t\t}\n\t}\n\n\t/**\n\t * The instance of a component used for the modal content.\n\t *\n\t * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n\t */\n\tget componentInstance(): any {\n\t\tif (this._contentRef && this._contentRef.componentRef) {\n\t\t\treturn this._contentRef.componentRef.instance;\n\t\t}\n\t}\n\n\t/**\n\t * The promise that is resolved when the modal is closed and rejected when the modal is dismissed.\n\t */\n\tresult: Promise;\n\n\t/**\n\t * The observable that emits when the modal is closed via the `.close()` method.\n\t *\n\t * It will emit the result passed to the `.close()` method.\n\t *\n\t * @since 8.0.0\n\t */\n\tget closed(): Observable {\n\t\treturn this._closed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n\t *\n\t * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n\t * reasons like backdrop click or ESC key press.\n\t *\n\t * @since 8.0.0\n\t */\n\tget dismissed(): Observable {\n\t\treturn this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when both modal window and backdrop are closed and animations were finished.\n\t * At this point modal and backdrop elements will be removed from the DOM tree.\n\t *\n\t * This observable will be completed after emitting.\n\t *\n\t * @since 8.0.0\n\t */\n\tget hidden(): Observable {\n\t\treturn this._hidden.asObservable();\n\t}\n\n\t/**\n\t * The observable that emits when modal is fully visible and animation was finished.\n\t * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n\t *\n\t * This observable will be completed after emitting.\n\t * It will not emit, if modal is closed before open animation is finished.\n\t *\n\t * @since 8.0.0\n\t */\n\tget shown(): Observable {\n\t\treturn this._windowCmptRef.instance.shown.asObservable();\n\t}\n\n\tconstructor(\n\t\tprivate _windowCmptRef: ComponentRef,\n\t\tprivate _contentRef: ContentRef,\n\t\tprivate _backdropCmptRef?: ComponentRef,\n\t\tprivate _beforeDismiss?: () => boolean | Promise,\n\t) {\n\t\t_windowCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n\t\t\tthis.dismiss(reason);\n\t\t});\n\n\t\tthis.result = new Promise((resolve, reject) => {\n\t\t\tthis._resolve = resolve;\n\t\t\tthis._reject = reject;\n\t\t});\n\t\tthis.result.then(null, () => {});\n\t}\n\n\t/**\n\t * Closes the modal with an optional `result` value.\n\t *\n\t * The `NgbMobalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {\n\t\tif (this._windowCmptRef) {\n\t\t\tthis._closed.next(result);\n\t\t\tthis._resolve(result);\n\t\t\tthis._removeModalElements();\n\t\t}\n\t}\n\n\tprivate _dismiss(reason?: any) {\n\t\tthis._dismissed.next(reason);\n\t\tthis._reject(reason);\n\t\tthis._removeModalElements();\n\t}\n\n\t/**\n\t * Dismisses the modal with an optional `reason` value.\n\t *\n\t * The `NgbModalRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {\n\t\tif (this._windowCmptRef) {\n\t\t\tif (!this._beforeDismiss) {\n\t\t\t\tthis._dismiss(reason);\n\t\t\t} else {\n\t\t\t\tconst dismiss = this._beforeDismiss();\n\t\t\t\tif (isPromise(dismiss)) {\n\t\t\t\t\tdismiss.then(\n\t\t\t\t\t\t(result) => {\n\t\t\t\t\t\t\tif (result !== false) {\n\t\t\t\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {},\n\t\t\t\t\t);\n\t\t\t\t} else if (dismiss !== false) {\n\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _removeModalElements() {\n\t\tconst windowTransition$ = this._windowCmptRef.instance.hide();\n\t\tconst backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n\n\t\t// hiding window\n\t\twindowTransition$.subscribe(() => {\n\t\t\tconst { nativeElement } = this._windowCmptRef.location;\n\t\t\tnativeElement.parentNode.removeChild(nativeElement);\n\t\t\tthis._windowCmptRef.destroy();\n\n\t\t\tif (this._contentRef && this._contentRef.viewRef) {\n\t\t\t\tthis._contentRef.viewRef.destroy();\n\t\t\t}\n\n\t\t\tthis._windowCmptRef = null;\n\t\t\tthis._contentRef = null;\n\t\t});\n\n\t\t// hiding backdrop\n\t\tbackdropTransition$.subscribe(() => {\n\t\t\tif (this._backdropCmptRef) {\n\t\t\t\tconst { nativeElement } = this._backdropCmptRef.location;\n\t\t\t\tnativeElement.parentNode.removeChild(nativeElement);\n\t\t\t\tthis._backdropCmptRef.destroy();\n\t\t\t\tthis._backdropCmptRef = null;\n\t\t\t}\n\t\t});\n\n\t\t// all done\n\t\tzip(windowTransition$, backdropTransition$).subscribe(() => {\n\t\t\tthis._hidden.next();\n\t\t\tthis._hidden.complete();\n\t\t});\n\t}\n}\n","export enum ModalDismissReasons {\n\tBACKDROP_CLICK,\n\tESC,\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInject,\n\tInput,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tViewChild,\n\tViewEncapsulation,\n} from '@angular/core';\n\nimport { fromEvent, Observable, Subject, zip } from 'rxjs';\nimport { filter, switchMap, take, takeUntil, tap } from 'rxjs/operators';\n\nimport { getFocusableBoundaryElements } from '../util/focus-trap';\nimport { Key } from '../util/key';\nimport { ModalDismissReasons } from './modal-dismiss-reasons';\nimport { ngbRunTransition, NgbTransitionOptions } from '../util/transition/ngbTransition';\nimport { isString, reflow } from '../util/util';\n\n@Component({\n\tselector: 'ngb-modal-window',\n\tstandalone: true,\n\thost: {\n\t\t'[class]': '\"modal d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n\t\t'[class.fade]': 'animation',\n\t\trole: 'dialog',\n\t\ttabindex: '-1',\n\t\t'[attr.aria-modal]': 'true',\n\t\t'[attr.aria-labelledby]': 'ariaLabelledBy',\n\t\t'[attr.aria-describedby]': 'ariaDescribedBy',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t
\n\t\t
\n\t`,\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrls: ['./modal.scss'],\n})\nexport class NgbModalWindow implements OnInit, OnDestroy {\n\tprivate _closed$ = new Subject();\n\tprivate _elWithFocus: Element | null = null; // element that is focused prior to modal opening\n\n\t@ViewChild('dialog', { static: true }) private _dialogEl: ElementRef;\n\n\t@Input() animation: boolean;\n\t@Input() ariaLabelledBy: string;\n\t@Input() ariaDescribedBy: string;\n\t@Input() backdrop: boolean | string = true;\n\t@Input() centered: string;\n\t@Input() fullscreen: string | boolean;\n\t@Input() keyboard = true;\n\t@Input() scrollable: string;\n\t@Input() size: string;\n\t@Input() windowClass: string;\n\t@Input() modalDialogClass: string;\n\n\t@Output('dismiss') dismissEvent = new EventEmitter();\n\n\tshown = new Subject();\n\thidden = new Subject();\n\n\tconstructor(\n\t\t@Inject(DOCUMENT) private _document: any,\n\t\tprivate _elRef: ElementRef,\n\t\tprivate _zone: NgZone,\n\t) {}\n\n\tget fullscreenClass(): string {\n\t\treturn this.fullscreen === true\n\t\t\t? ' modal-fullscreen'\n\t\t\t: isString(this.fullscreen)\n\t\t\t? ` modal-fullscreen-${this.fullscreen}-down`\n\t\t\t: '';\n\t}\n\n\tdismiss(reason): void {\n\t\tthis.dismissEvent.emit(reason);\n\t}\n\n\tngOnInit() {\n\t\tthis._elWithFocus = this._document.activeElement;\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._show();\n\t\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis._disableEventHandling();\n\t}\n\n\thide(): Observable {\n\t\tconst { nativeElement } = this._elRef;\n\t\tconst context: NgbTransitionOptions = { animation: this.animation, runningTransition: 'stop' };\n\n\t\tconst windowTransition$ = ngbRunTransition(\n\t\t\tthis._zone,\n\t\t\tnativeElement,\n\t\t\t() => nativeElement.classList.remove('show'),\n\t\t\tcontext,\n\t\t);\n\t\tconst dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => {}, context);\n\n\t\tconst transitions$ = zip(windowTransition$, dialogTransition$);\n\t\ttransitions$.subscribe(() => {\n\t\t\tthis.hidden.next();\n\t\t\tthis.hidden.complete();\n\t\t});\n\n\t\tthis._disableEventHandling();\n\t\tthis._restoreFocus();\n\n\t\treturn transitions$;\n\t}\n\n\tprivate _show() {\n\t\tconst context: NgbTransitionOptions = { animation: this.animation, runningTransition: 'continue' };\n\n\t\tconst windowTransition$ = ngbRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._elRef.nativeElement,\n\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\tif (animation) {\n\t\t\t\t\treflow(element);\n\t\t\t\t}\n\t\t\t\telement.classList.add('show');\n\t\t\t},\n\t\t\tcontext,\n\t\t);\n\t\tconst dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => {}, context);\n\n\t\tzip(windowTransition$, dialogTransition$).subscribe(() => {\n\t\t\tthis.shown.next();\n\t\t\tthis.shown.complete();\n\t\t});\n\n\t\tthis._enableEventHandling();\n\t\tthis._setFocus();\n\t}\n\n\tprivate _enableEventHandling() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tfromEvent(nativeElement, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\t/* eslint-disable-next-line deprecation/deprecation */\n\t\t\t\t\tfilter((e) => e.which === Key.Escape),\n\t\t\t\t)\n\t\t\t\t.subscribe((event) => {\n\t\t\t\t\tif (this.keyboard) {\n\t\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\t\t\tthis._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (this.backdrop === 'static') {\n\t\t\t\t\t\tthis._bumpBackdrop();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t// We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n\t\t\t// inside the modal dialog and releasing it outside\n\t\t\tlet preventClose = false;\n\t\t\tfromEvent(this._dialogEl.nativeElement, 'mousedown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\ttap(() => (preventClose = false)),\n\t\t\t\t\tswitchMap(() => fromEvent(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))),\n\t\t\t\t\tfilter(({ target }) => nativeElement === target),\n\t\t\t\t)\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tpreventClose = true;\n\t\t\t\t});\n\n\t\t\t// We're listening to 'click' to dismiss modal on modal window click, except when:\n\t\t\t// 1. clicking on modal dialog itself\n\t\t\t// 2. closing was prevented by mousedown/up handlers\n\t\t\t// 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n\t\t\tfromEvent(nativeElement, 'click')\n\t\t\t\t.pipe(takeUntil(this._closed$))\n\t\t\t\t.subscribe(({ target }) => {\n\t\t\t\t\tif (nativeElement === target) {\n\t\t\t\t\t\tif (this.backdrop === 'static') {\n\t\t\t\t\t\t\tthis._bumpBackdrop();\n\t\t\t\t\t\t} else if (this.backdrop === true && !preventClose) {\n\t\t\t\t\t\t\tthis._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tpreventClose = false;\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate _disableEventHandling() {\n\t\tthis._closed$.next();\n\t}\n\n\tprivate _setFocus() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tif (!nativeElement.contains(document.activeElement)) {\n\t\t\tconst autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`) as HTMLElement;\n\t\t\tconst firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n\n\t\t\tconst elementToFocus = autoFocusable || firstFocusable || nativeElement;\n\t\t\telementToFocus.focus();\n\t\t}\n\t}\n\n\tprivate _restoreFocus() {\n\t\tconst body = this._document.body;\n\t\tconst elWithFocus = this._elWithFocus;\n\n\t\tlet elementToFocus;\n\t\tif (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n\t\t\telementToFocus = elWithFocus;\n\t\t} else {\n\t\t\telementToFocus = body;\n\t\t}\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tsetTimeout(() => elementToFocus.focus());\n\t\t\tthis._elWithFocus = null;\n\t\t});\n\t}\n\n\tprivate _bumpBackdrop() {\n\t\tif (this.backdrop === 'static') {\n\t\t\tngbRunTransition(\n\t\t\t\tthis._zone,\n\t\t\t\tthis._elRef.nativeElement,\n\t\t\t\t({ classList }) => {\n\t\t\t\t\tclassList.add('modal-static');\n\t\t\t\t\treturn () => classList.remove('modal-static');\n\t\t\t\t},\n\t\t\t\t{ animation: this.animation, runningTransition: 'continue' },\n\t\t\t);\n\t\t}\n\t}\n}\n","import { Injectable, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/** Type for the callback used to revert the scrollbar. */\nexport type ScrollbarReverter = () => void;\n\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to hide the scrollbar and compensate the lack of a vertical scrollbar\n * by adding an equivalent padding on the right of the body, and to revert this change.\n */\n@Injectable({ providedIn: 'root' })\nexport class ScrollBar {\n\tconstructor(@Inject(DOCUMENT) private _document: any) {}\n\n\t/**\n\t * To be called to hide a potential vertical scrollbar:\n\t * - if a scrollbar is there and has a width greater than 0, adds some compensation\n\t * padding to the body to keep the same layout as when the scrollbar is there\n\t * - adds overflow: hidden\n\t *\n\t * @return a callback used to revert the change\n\t */\n\thide(): ScrollbarReverter {\n\t\tconst scrollbarWidth = Math.abs(window.innerWidth - this._document.documentElement.clientWidth);\n\t\tconst body = this._document.body;\n\t\tconst bodyStyle = body.style;\n\t\tconst { overflow, paddingRight } = bodyStyle;\n\t\tif (scrollbarWidth > 0) {\n\t\t\tconst actualPadding = parseFloat(window.getComputedStyle(body).paddingRight);\n\t\t\tbodyStyle.paddingRight = `${actualPadding + scrollbarWidth}px`;\n\t\t}\n\t\tbodyStyle.overflow = 'hidden';\n\t\treturn () => {\n\t\t\tif (scrollbarWidth > 0) {\n\t\t\t\tbodyStyle.paddingRight = paddingRight;\n\t\t\t}\n\t\t\tbodyStyle.overflow = overflow;\n\t\t};\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tApplicationRef,\n\tComponentRef,\n\tcreateComponent,\n\tEnvironmentInjector,\n\tEventEmitter,\n\tInject,\n\tInjectable,\n\tInjector,\n\tNgZone,\n\tRendererFactory2,\n\tTemplateRef,\n\tType,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { ngbFocusTrap } from '../util/focus-trap';\nimport { ContentRef } from '../util/popup';\nimport { ScrollBar } from '../util/scrollbar';\nimport { isDefined, isString } from '../util/util';\nimport { NgbModalBackdrop } from './modal-backdrop';\nimport { NgbModalOptions, NgbModalUpdatableOptions } from './modal-config';\nimport { NgbActiveModal, NgbModalRef } from './modal-ref';\nimport { NgbModalWindow } from './modal-window';\nimport { take } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class NgbModalStack {\n\tprivate _activeWindowCmptHasChanged = new Subject();\n\tprivate _ariaHiddenValues: Map = new Map();\n\tprivate _scrollBarRestoreFn: null | (() => void) = null;\n\tprivate _modalRefs: NgbModalRef[] = [];\n\tprivate _windowCmpts: ComponentRef[] = [];\n\tprivate _activeInstances: EventEmitter = new EventEmitter();\n\n\tconstructor(\n\t\tprivate _applicationRef: ApplicationRef,\n\t\tprivate _injector: Injector,\n\t\tprivate _environmentInjector: EnvironmentInjector,\n\t\t@Inject(DOCUMENT) private _document: any,\n\t\tprivate _scrollBar: ScrollBar,\n\t\tprivate _rendererFactory: RendererFactory2,\n\t\tprivate _ngZone: NgZone,\n\t) {\n\t\t// Trap focus on active WindowCmpt\n\t\tthis._activeWindowCmptHasChanged.subscribe(() => {\n\t\t\tif (this._windowCmpts.length) {\n\t\t\t\tconst activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\n\t\t\t\tngbFocusTrap(this._ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\n\t\t\t\tthis._revertAriaHidden();\n\t\t\t\tthis._setAriaHidden(activeWindowCmpt.location.nativeElement);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _restoreScrollBar() {\n\t\tconst scrollBarRestoreFn = this._scrollBarRestoreFn;\n\t\tif (scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = null;\n\t\t\tscrollBarRestoreFn();\n\t\t}\n\t}\n\n\tprivate _hideScrollBar() {\n\t\tif (!this._scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = this._scrollBar.hide();\n\t\t}\n\t}\n\n\topen(contentInjector: Injector, content: any, options: NgbModalOptions): NgbModalRef {\n\t\tconst containerEl =\n\t\t\toptions.container instanceof HTMLElement\n\t\t\t\t? options.container\n\t\t\t\t: isDefined(options.container)\n\t\t\t\t? this._document.querySelector(options.container)\n\t\t\t\t: this._document.body;\n\t\tconst renderer = this._rendererFactory.createRenderer(null, null);\n\n\t\tif (!containerEl) {\n\t\t\tthrow new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\n\t\t}\n\n\t\tthis._hideScrollBar();\n\n\t\tconst activeModal = new NgbActiveModal();\n\n\t\tcontentInjector = options.injector || contentInjector;\n\t\tconst environmentInjector = contentInjector.get(EnvironmentInjector, null) || this._environmentInjector;\n\t\tconst contentRef = this._getContentRef(contentInjector, environmentInjector, content, activeModal, options);\n\n\t\tlet backdropCmptRef: ComponentRef | undefined =\n\t\t\toptions.backdrop !== false ? this._attachBackdrop(containerEl) : undefined;\n\t\tlet windowCmptRef: ComponentRef = this._attachWindowComponent(containerEl, contentRef.nodes);\n\t\tlet ngbModalRef: NgbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n\n\t\tthis._registerModalRef(ngbModalRef);\n\t\tthis._registerWindowCmpt(windowCmptRef);\n\n\t\t// We have to cleanup DOM after the last modal when BOTH 'hidden' was emitted and 'result' promise was resolved:\n\t\t// - with animations OFF, 'hidden' emits synchronously, then 'result' is resolved asynchronously\n\t\t// - with animations ON, 'result' is resolved asynchronously, then 'hidden' emits asynchronously\n\t\tngbModalRef.hidden.pipe(take(1)).subscribe(() =>\n\t\t\tPromise.resolve(true).then(() => {\n\t\t\t\tif (!this._modalRefs.length) {\n\t\t\t\t\trenderer.removeClass(this._document.body, 'modal-open');\n\t\t\t\t\tthis._restoreScrollBar();\n\t\t\t\t\tthis._revertAriaHidden();\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\n\t\tactiveModal.close = (result: any) => {\n\t\t\tngbModalRef.close(result);\n\t\t};\n\t\tactiveModal.dismiss = (reason: any) => {\n\t\t\tngbModalRef.dismiss(reason);\n\t\t};\n\n\t\tactiveModal.update = (options: NgbModalUpdatableOptions) => {\n\t\t\tngbModalRef.update(options);\n\t\t};\n\n\t\tngbModalRef.update(options);\n\t\tif (this._modalRefs.length === 1) {\n\t\t\trenderer.addClass(this._document.body, 'modal-open');\n\t\t}\n\n\t\tif (backdropCmptRef && backdropCmptRef.instance) {\n\t\t\tbackdropCmptRef.changeDetectorRef.detectChanges();\n\t\t}\n\t\twindowCmptRef.changeDetectorRef.detectChanges();\n\t\treturn ngbModalRef;\n\t}\n\n\tget activeInstances() {\n\t\treturn this._activeInstances;\n\t}\n\n\tdismissAll(reason?: any) {\n\t\tthis._modalRefs.forEach((ngbModalRef) => ngbModalRef.dismiss(reason));\n\t}\n\n\thasOpenModals(): boolean {\n\t\treturn this._modalRefs.length > 0;\n\t}\n\n\tprivate _attachBackdrop(containerEl: Element): ComponentRef {\n\t\tlet backdropCmptRef = createComponent(NgbModalBackdrop, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector,\n\t\t});\n\t\tthis._applicationRef.attachView(backdropCmptRef.hostView);\n\t\tcontainerEl.appendChild(backdropCmptRef.location.nativeElement);\n\t\treturn backdropCmptRef;\n\t}\n\n\tprivate _attachWindowComponent(containerEl: Element, projectableNodes: Node[][]): ComponentRef {\n\t\tlet windowCmptRef = createComponent(NgbModalWindow, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector,\n\t\t\tprojectableNodes,\n\t\t});\n\t\tthis._applicationRef.attachView(windowCmptRef.hostView);\n\t\tcontainerEl.appendChild(windowCmptRef.location.nativeElement);\n\t\treturn windowCmptRef;\n\t}\n\n\tprivate _getContentRef(\n\t\tcontentInjector: Injector,\n\t\tenvironmentInjector: EnvironmentInjector,\n\t\tcontent: Type | TemplateRef | string,\n\t\tactiveModal: NgbActiveModal,\n\t\toptions: NgbModalOptions,\n\t): ContentRef {\n\t\tif (!content) {\n\t\t\treturn new ContentRef([]);\n\t\t} else if (content instanceof TemplateRef) {\n\t\t\treturn this._createFromTemplateRef(content, activeModal);\n\t\t} else if (isString(content)) {\n\t\t\treturn this._createFromString(content);\n\t\t} else {\n\t\t\treturn this._createFromComponent(contentInjector, environmentInjector, content, activeModal, options);\n\t\t}\n\t}\n\n\tprivate _createFromTemplateRef(templateRef: TemplateRef, activeModal: NgbActiveModal): ContentRef {\n\t\tconst context = {\n\t\t\t$implicit: activeModal,\n\t\t\tclose(result) {\n\t\t\t\tactiveModal.close(result);\n\t\t\t},\n\t\t\tdismiss(reason) {\n\t\t\t\tactiveModal.dismiss(reason);\n\t\t\t},\n\t\t};\n\t\tconst viewRef = templateRef.createEmbeddedView(context);\n\t\tthis._applicationRef.attachView(viewRef);\n\t\treturn new ContentRef([viewRef.rootNodes], viewRef);\n\t}\n\n\tprivate _createFromString(content: string): ContentRef {\n\t\tconst component = this._document.createTextNode(`${content}`);\n\t\treturn new ContentRef([[component]]);\n\t}\n\n\tprivate _createFromComponent(\n\t\tcontentInjector: Injector,\n\t\tenvironmentInjector: EnvironmentInjector,\n\t\tcomponentType: Type,\n\t\tcontext: NgbActiveModal,\n\t\toptions: NgbModalOptions,\n\t): ContentRef {\n\t\tconst elementInjector = Injector.create({\n\t\t\tproviders: [{ provide: NgbActiveModal, useValue: context }],\n\t\t\tparent: contentInjector,\n\t\t});\n\t\tconst componentRef = createComponent(componentType, {\n\t\t\tenvironmentInjector,\n\t\t\telementInjector,\n\t\t});\n\t\tconst componentNativeEl = componentRef.location.nativeElement;\n\t\tif (options.scrollable) {\n\t\t\t(componentNativeEl as HTMLElement).classList.add('component-host-scrollable');\n\t\t}\n\t\tthis._applicationRef.attachView(componentRef.hostView);\n\t\t// FIXME: we should here get rid of the component nativeElement\n\t\t// and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n\t\treturn new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n\t}\n\n\tprivate _setAriaHidden(element: Element) {\n\t\tconst parent = element.parentElement;\n\t\tif (parent && element !== this._document.body) {\n\t\t\tArray.from(parent.children).forEach((sibling) => {\n\t\t\t\tif (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n\t\t\t\t\tthis._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n\t\t\t\t\tsibling.setAttribute('aria-hidden', 'true');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis._setAriaHidden(parent);\n\t\t}\n\t}\n\n\tprivate _revertAriaHidden() {\n\t\tthis._ariaHiddenValues.forEach((value, element) => {\n\t\t\tif (value) {\n\t\t\t\telement.setAttribute('aria-hidden', value);\n\t\t\t} else {\n\t\t\t\telement.removeAttribute('aria-hidden');\n\t\t\t}\n\t\t});\n\t\tthis._ariaHiddenValues.clear();\n\t}\n\n\tprivate _registerModalRef(ngbModalRef: NgbModalRef) {\n\t\tconst unregisterModalRef = () => {\n\t\t\tconst index = this._modalRefs.indexOf(ngbModalRef);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._modalRefs.splice(index, 1);\n\t\t\t\tthis._activeInstances.emit(this._modalRefs);\n\t\t\t}\n\t\t};\n\t\tthis._modalRefs.push(ngbModalRef);\n\t\tthis._activeInstances.emit(this._modalRefs);\n\t\tngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n\t}\n\n\tprivate _registerWindowCmpt(ngbWindowCmpt: ComponentRef) {\n\t\tthis._windowCmpts.push(ngbWindowCmpt);\n\t\tthis._activeWindowCmptHasChanged.next();\n\n\t\tngbWindowCmpt.onDestroy(() => {\n\t\t\tconst index = this._windowCmpts.indexOf(ngbWindowCmpt);\n\t\t\tif (index > -1) {\n\t\t\t\tthis._windowCmpts.splice(index, 1);\n\t\t\t\tthis._activeWindowCmptHasChanged.next();\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { NgbConfig } from '../ngb-config';\n\n/**\n * Options available when opening new modal windows with `NgbModal.open()` method.\n */\nexport interface NgbModalOptions {\n\t/**\n\t * If `true`, modal opening and closing will be animated.\n\t *\n\t * @since 8.0.0\n\t */\n\tanimation?: boolean;\n\n\t/**\n\t * `aria-labelledby` attribute value to set on the modal window.\n\t *\n\t * @since 2.2.0\n\t */\n\tariaLabelledBy?: string;\n\n\t/**\n\t * `aria-describedby` attribute value to set on the modal window.\n\t *\n\t * @since 6.1.0\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * If `true`, the backdrop element will be created for a given modal.\n\t *\n\t * Alternatively, specify `'static'` for a backdrop which doesn't close the modal on click.\n\t *\n\t * Default value is `true`.\n\t */\n\tbackdrop?: boolean | 'static';\n\n\t/**\n\t * Callback right before the modal will be dismissed.\n\t *\n\t * If this function returns:\n\t * * `false`\n\t * * a promise resolved with `false`\n\t * * a promise that is rejected\n\t *\n\t * then the modal won't be dismissed.\n\t */\n\tbeforeDismiss?: () => boolean | Promise;\n\n\t/**\n\t * If `true`, the modal will be centered vertically.\n\t *\n\t * Default value is `false`.\n\t *\n\t * @since 1.1.0\n\t */\n\tcentered?: boolean;\n\n\t/**\n\t * A selector specifying the element all new modal windows should be appended to.\n\t * Since v5.3.0 it is also possible to pass the reference to an `HTMLElement`.\n\t *\n\t * If not specified, will be `body`.\n\t */\n\tcontainer?: string | HTMLElement;\n\n\t/**\n\t * If `true` modal will always be displayed in fullscreen mode.\n\t *\n\t * For values like `'md'` it means that modal will be displayed in fullscreen mode\n\t * only if the viewport width is below `'md'`. For custom strings (ex. when passing `'mysize'`)\n\t * it will add a `'modal-fullscreen-mysize-down'` class.\n\t *\n\t * If not specified will be `false`.\n\t *\n\t * @since 12.1.0\n\t */\n\tfullscreen?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string;\n\n\t/**\n\t * The `Injector` to use for modal content.\n\t */\n\tinjector?: Injector;\n\n\t/**\n\t * If `true`, the modal will be closed when `Escape` key is pressed\n\t *\n\t * Default value is `true`.\n\t */\n\tkeyboard?: boolean;\n\n\t/**\n\t * Scrollable modal content (false by default).\n\t *\n\t * @since 5.0.0\n\t */\n\tscrollable?: boolean;\n\n\t/**\n\t * Size of a new modal window.\n\t */\n\tsize?: 'sm' | 'lg' | 'xl' | string;\n\n\t/**\n\t * A custom class to append to the modal window.\n\t */\n\twindowClass?: string;\n\n\t/**\n\t * A custom class to append to the modal dialog.\n\t *\n\t * @since 9.1.0\n\t */\n\tmodalDialogClass?: string;\n\n\t/**\n\t * A custom class to append to the modal backdrop.\n\t *\n\t * @since 1.1.0\n\t */\n\tbackdropClass?: string;\n}\n\n/**\n * Options that can be changed on an opened modal with `NgbModalRef.update()` and `NgbActiveModal.update()` methods.\n *\n * @since 14.2.0\n */\nexport type NgbModalUpdatableOptions = Pick<\n\tNgbModalOptions,\n\t| 'ariaLabelledBy'\n\t| 'ariaDescribedBy'\n\t| 'centered'\n\t| 'fullscreen'\n\t| 'backdropClass'\n\t| 'size'\n\t| 'windowClass'\n\t| 'modalDialogClass'\n>;\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbModalConfig implements Required {\n\tariaLabelledBy: string;\n\tariaDescribedBy: string;\n\tbackdrop: boolean | 'static' = true;\n\tbeforeDismiss: () => boolean | Promise;\n\tcentered: boolean;\n\tcontainer: string | HTMLElement;\n\tfullscreen: 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | boolean | string = false;\n\tinjector: Injector;\n\tkeyboard = true;\n\tscrollable: boolean;\n\tsize: 'sm' | 'lg' | 'xl' | string;\n\twindowClass: string;\n\tmodalDialogClass: string;\n\tbackdropClass: string;\n\n\tprivate _animation: boolean;\n\n\tconstructor(private _ngbConfig: NgbConfig) {}\n\n\tget animation(): boolean {\n\t\treturn this._animation === undefined ? this._ngbConfig.animation : this._animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { NgbModalOptions, NgbModalConfig } from './modal-config';\nimport { NgbModalRef } from './modal-ref';\nimport { NgbModalStack } from './modal-stack';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbModal {\n\tconstructor(private _injector: Injector, private _modalStack: NgbModalStack, private _config: NgbModalConfig) {}\n\n\t/**\n\t * Opens a new modal window with the specified content and supplied options.\n\t *\n\t * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n\t * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n\t * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n\t *\n\t * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n\t */\n\topen(content: any, options: NgbModalOptions = {}): NgbModalRef {\n\t\tconst combinedOptions = { ...this._config, animation: this._config.animation, ...options };\n\t\treturn this._modalStack.open(this._injector, content, combinedOptions);\n\t}\n\n\t/**\n\t * Returns an observable that holds the active modal instances.\n\t */\n\tget activeInstances() {\n\t\treturn this._modalStack.activeInstances;\n\t}\n\n\t/**\n\t * Dismisses all currently displayed modal windows with the supplied reason.\n\t *\n\t * @since 3.1.0\n\t */\n\tdismissAll(reason?: any) {\n\t\tthis._modalStack.dismissAll(reason);\n\t}\n\n\t/**\n\t * Indicates if there are currently any open modal windows in the application.\n\t *\n\t * @since 3.3.0\n\t */\n\thasOpenModals(): boolean {\n\t\treturn this._modalStack.hasOpenModals();\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbModal } from './modal';\n\nexport { NgbModal } from './modal';\nexport { NgbModalConfig, NgbModalOptions, NgbModalUpdatableOptions } from './modal-config';\nexport { NgbModalRef, NgbActiveModal } from './modal-ref';\nexport { ModalDismissReasons } from './modal-dismiss-reasons';\n\n@NgModule({ providers: [NgbModal] })\nexport class NgbModalModule {}\n","import { Injectable } from '@angular/core';\nimport { NgbConfig } from '../ngb-config';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbNavConfig {\n\tdestroyOnHide = true;\n\torientation: 'horizontal' | 'vertical' = 'horizontal';\n\troles: 'tablist' | false = 'tablist';\n\tkeyboard: boolean | 'changeWithArrows' = false;\n\n\tprivate _animation: boolean;\n\n\tconstructor(private _ngbConfig: NgbConfig) {}\n\n\tget animation(): boolean {\n\t\treturn this._animation === undefined ? this._ngbConfig.animation : this._animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import {\n\tAfterContentChecked,\n\tAfterContentInit,\n\tAttribute,\n\tChangeDetectorRef,\n\tContentChildren,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tInject,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tQueryList,\n\tSimpleChanges,\n\tTemplateRef,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { isDefined } from '../util/util';\nimport { NgbNavConfig } from './nav-config';\nimport { Key } from '../util/key';\n\nconst isValidNavId = (id: any) => isDefined(id) && id !== '';\n\nlet navCounter = 0;\n\n/**\n * Context passed to the nav content template.\n *\n * See [this demo](#/components/nav/examples#keep-content) as the example.\n *\n * @since 5.2.0\n */\nexport interface NgbNavContentContext {\n\t/**\n\t * If `true`, current nav content is visible and active\n\t */\n\t$implicit: boolean;\n}\n\n/**\n * This directive must be used to wrap content to be displayed in the nav.\n *\n * @since 5.2.0\n */\n@Directive({ selector: 'ng-template[ngbNavContent]', standalone: true })\nexport class NgbNavContent {\n\tconstructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * This directive applies a specific role on a non-container based ngbNavItem.\n *\n * @since 14.1.0\n */\n@Directive({\n\tselector: '[ngbNavItem]:not(ng-container)',\n\tstandalone: true,\n\thost: {\n\t\t'[attr.role]': `role ? role : nav.roles ? 'presentation' : undefined`,\n\t},\n})\nexport class NgbNavItemRole {\n\tconstructor(@Attribute('role') public role: string, @Inject(forwardRef(() => NgbNav)) public nav: NgbNav) {}\n}\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 */\n@Directive({ selector: '[ngbNavItem]', exportAs: 'ngbNavItem', standalone: true, host: { '[class.nav-item]': 'true' } })\nexport class NgbNavItem implements AfterContentChecked, OnInit {\n\t/**\n\t * If `true`, non-active current nav item content will be removed from DOM\n\t * Otherwise it will just be hidden\n\t */\n\t@Input() destroyOnHide;\n\n\t/**\n\t * If `true`, the current nav item is disabled and can't be toggled by user.\n\t *\n\t * Nevertheless disabled nav can be selected programmatically via the `.select()` method and the `[activeId]` binding.\n\t */\n\t@Input() disabled = false;\n\n\t/**\n\t * The id used for the DOM elements.\n\t * Must be unique inside the document in case you have multiple `ngbNav`s on the page.\n\t *\n\t * Autogenerated as `ngb-nav-XXX` if not provided.\n\t */\n\t@Input() domId: string;\n\n\t/**\n\t * The id used as a model for active nav.\n\t * It can be anything, but must be unique inside one `ngbNav`.\n\t *\n\t * The only limitation is that it is not possible to have the `''` (empty string) as id,\n\t * because ` ngbNavItem `, `ngbNavItem=''` and `[ngbNavItem]=\"''\"` are indistinguishable\n\t */\n\t@Input('ngbNavItem') _id: any;\n\n\t/**\n\t * An event emitted when the fade in transition is finished on the related nav content\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() shown = new EventEmitter();\n\n\t/**\n\t * An event emitted when the fade out transition is finished on the related nav content\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() hidden = new EventEmitter();\n\n\tcontentTpl: NgbNavContent | null;\n\n\t@ContentChildren(NgbNavContent, { descendants: false }) contentTpls: QueryList;\n\n\tconstructor(@Inject(forwardRef(() => NgbNav)) private _nav: NgbNav, public elementRef: ElementRef) {}\n\n\tngAfterContentChecked() {\n\t\t// We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n\t\t// only @ContentChildren allows us to specify the {descendants: false} option.\n\t\t// Without {descendants: false} we are hitting bugs described in:\n\t\t// https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n\t\tthis.contentTpl = this.contentTpls.first;\n\t}\n\n\tngOnInit() {\n\t\tif (!isDefined(this.domId)) {\n\t\t\tthis.domId = `ngb-nav-${navCounter++}`;\n\t\t}\n\t}\n\n\tget active() {\n\t\treturn this._nav.activeId === this.id;\n\t}\n\n\tget id() {\n\t\treturn isValidNavId(this._id) ? this._id : this.domId;\n\t}\n\n\tget panelDomId() {\n\t\treturn `${this.domId}-panel`;\n\t}\n\n\tisPanelInDom() {\n\t\treturn (isDefined(this.destroyOnHide) ? !this.destroyOnHide : !this._nav.destroyOnHide) || this.active;\n\t}\n}\n\n/**\n * A nav directive that helps with implementing tabbed navigation components.\n *\n * @since 5.2.0\n */\n@Directive({\n\tselector: '[ngbNav]',\n\texportAs: 'ngbNav',\n\tstandalone: true,\n\thost: {\n\t\t'[class.nav]': 'true',\n\t\t'[class.flex-column]': `orientation === 'vertical'`,\n\t\t'[attr.aria-orientation]': `orientation === 'vertical' && roles === 'tablist' ? 'vertical' : undefined`,\n\t\t'[attr.role]': `role ? role : roles ? 'tablist' : undefined`,\n\t\t'(keydown.arrowLeft)': 'onKeyDown($event)',\n\t\t'(keydown.arrowRight)': 'onKeyDown($event)',\n\t\t'(keydown.arrowDown)': 'onKeyDown($event)',\n\t\t'(keydown.arrowUp)': 'onKeyDown($event)',\n\t\t'(keydown.Home)': 'onKeyDown($event)',\n\t\t'(keydown.End)': 'onKeyDown($event)',\n\t},\n})\nexport class NgbNav implements AfterContentInit, OnChanges, OnDestroy {\n\tstatic ngAcceptInputType_orientation: string;\n\tstatic ngAcceptInputType_roles: boolean | string;\n\n\t/**\n\t * The id of the nav that should be active\n\t *\n\t * You could also use the `.select()` method and the `(navChange)` event\n\t */\n\t@Input() activeId: any;\n\n\t/**\n\t * The event emitted after the active nav changes\n\t * The payload of the event is the newly active nav id\n\t *\n\t * If you want to prevent nav change, you should use `(navChange)` event\n\t */\n\t@Output() activeIdChange = new EventEmitter();\n\n\t/**\n\t * If `true`, nav change will be animated.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Input() animation: boolean;\n\n\t/**\n\t * If `true`, non-active nav content will be removed from DOM\n\t * Otherwise it will just be hidden\n\t */\n\t@Input() destroyOnHide;\n\n\t/**\n\t * The orientation of navs.\n\t *\n\t * Using `vertical` will also add the `aria-orientation` attribute\n\t */\n\t@Input() orientation: 'horizontal' | 'vertical';\n\n\t/**\n\t * Role attribute generating strategy:\n\t * - `false` - no role attributes will be generated\n\t * - `'tablist'` - 'tablist', 'tab' and 'tabpanel' will be generated (default)\n\t */\n\t@Input() roles: 'tablist' | false;\n\n\t/**\n\t * Keyboard support for nav focus/selection using arrow keys.\n\t *\n\t * * `false` - no keyboard support.\n\t * * `true` - navs will be focused using keyboard arrow keys\n\t * * `'changeWithArrows'` - nav will be selected using keyboard arrow keys\n\t *\n\t * See the [list of available keyboard shortcuts](#/components/nav/overview#keyboard-shortcuts).\n\t *\n\t * @since 6.1.0\n\t */\n\t@Input() keyboard: boolean | 'changeWithArrows';\n\n\t/**\n\t * An event emitted when the fade in transition is finished for one of the items.\n\t *\n\t * Payload of the event is the nav id that was just shown.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() shown = new EventEmitter();\n\n\t/**\n\t * An event emitted when the fade out transition is finished for one of the items.\n\t *\n\t * Payload of the event is the nav id that was just hidden.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() hidden = new EventEmitter();\n\n\t@ContentChildren(NgbNavItem) items: QueryList;\n\t@ContentChildren(forwardRef(() => NgbNavLinkBase), { descendants: true }) links: QueryList;\n\n\tdestroy$ = new Subject();\n\tnavItemChange$ = new Subject();\n\n\tconstructor(\n\t\t@Attribute('role') public role: string,\n\t\tconfig: NgbNavConfig,\n\t\tprivate _cd: ChangeDetectorRef,\n\t\t@Inject(DOCUMENT) private _document: any,\n\t) {\n\t\tthis.animation = config.animation;\n\t\tthis.destroyOnHide = config.destroyOnHide;\n\t\tthis.orientation = config.orientation;\n\t\tthis.roles = config.roles;\n\t\tthis.keyboard = config.keyboard;\n\t}\n\n\t/**\n\t * The nav change event emitted right before the nav change happens on user click.\n\t *\n\t * This event won't be emitted if nav is changed programmatically via `[activeId]` or `.select()`.\n\t *\n\t * See [`NgbNavChangeEvent`](#/components/nav/api#NgbNavChangeEvent) for payload details.\n\t */\n\t@Output() navChange = new EventEmitter();\n\n\tclick(item: NgbNavItem) {\n\t\tif (!item.disabled) {\n\t\t\tthis._updateActiveId(item.id);\n\t\t}\n\t}\n\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif (this.roles !== 'tablist' || !this.keyboard) {\n\t\t\treturn;\n\t\t}\n\t\t/* eslint-disable-next-line deprecation/deprecation */\n\t\tconst key = event.which;\n\t\tconst enabledLinks = this.links.filter((link) => !link.navItem.disabled);\n\t\tconst { length } = enabledLinks;\n\n\t\tlet position = -1;\n\n\t\tenabledLinks.forEach((link, index) => {\n\t\t\tif (link.elRef.nativeElement === this._document.activeElement) {\n\t\t\t\tposition = index;\n\t\t\t}\n\t\t});\n\n\t\tif (length) {\n\t\t\tswitch (key) {\n\t\t\t\tcase Key.ArrowLeft:\n\t\t\t\t\tif (this.orientation === 'vertical') {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tposition = (position - 1 + length) % length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Key.ArrowRight:\n\t\t\t\t\tif (this.orientation === 'vertical') {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tposition = (position + 1) % length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Key.ArrowDown:\n\t\t\t\t\tif (this.orientation === 'horizontal') {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tposition = (position + 1) % length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Key.ArrowUp:\n\t\t\t\t\tif (this.orientation === 'horizontal') {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tposition = (position - 1 + length) % length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Key.Home:\n\t\t\t\t\tposition = 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Key.End:\n\t\t\t\t\tposition = length - 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (this.keyboard === 'changeWithArrows') {\n\t\t\t\tthis.select(enabledLinks[position].navItem.id);\n\t\t\t}\n\t\t\tenabledLinks[position].elRef.nativeElement.focus();\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\t/**\n\t * Selects the nav with the given id and shows its associated pane.\n\t * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\n\t */\n\tselect(id: any) {\n\t\tthis._updateActiveId(id, false);\n\t}\n\n\tngAfterContentInit() {\n\t\tif (!isDefined(this.activeId)) {\n\t\t\tconst nextId = this.items.first ? this.items.first.id : null;\n\t\t\tif (isValidNavId(nextId)) {\n\t\t\t\tthis._updateActiveId(nextId, false);\n\t\t\t\tthis._cd.detectChanges();\n\t\t\t}\n\t\t}\n\n\t\tthis.items.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this._notifyItemChanged(this.activeId));\n\t}\n\n\tngOnChanges({ activeId }: SimpleChanges): void {\n\t\tif (activeId && !activeId.firstChange) {\n\t\t\tthis._notifyItemChanged(activeId.currentValue);\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis.destroy$.next();\n\t}\n\n\tprivate _updateActiveId(nextId: any, emitNavChange = true) {\n\t\tif (this.activeId !== nextId) {\n\t\t\tlet defaultPrevented = false;\n\n\t\t\tif (emitNavChange) {\n\t\t\t\tthis.navChange.emit({\n\t\t\t\t\tactiveId: this.activeId,\n\t\t\t\t\tnextId,\n\t\t\t\t\tpreventDefault: () => {\n\t\t\t\t\t\tdefaultPrevented = true;\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!defaultPrevented) {\n\t\t\t\tthis.activeId = nextId;\n\t\t\t\tthis.activeIdChange.emit(nextId);\n\t\t\t\tthis._notifyItemChanged(nextId);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _notifyItemChanged(nextItemId: any) {\n\t\tthis.navItemChange$.next(this._getItemById(nextItemId));\n\t}\n\n\tprivate _getItemById(itemId: any): NgbNavItem | null {\n\t\treturn (this.items && this.items.find((item) => item.id === itemId)) || null;\n\t}\n}\n\n@Directive({\n\tselector: '[ngbNavLink]',\n\tstandalone: true,\n\thost: {\n\t\t'[id]': 'navItem.domId',\n\t\t'[class.nav-link]': 'true',\n\t\t'[class.nav-item]': 'hasNavItemClass()',\n\t\t'[attr.role]': `role ? role : nav.roles ? 'tab' : undefined`,\n\t\t'[class.active]': 'navItem.active',\n\t\t'[class.disabled]': 'navItem.disabled',\n\t\t'[attr.tabindex]': 'navItem.disabled ? -1 : undefined',\n\t\t'[attr.aria-controls]': 'navItem.isPanelInDom() ? navItem.panelDomId : null',\n\t\t'[attr.aria-selected]': 'navItem.active',\n\t\t'[attr.aria-disabled]': 'navItem.disabled',\n\t},\n})\nexport class NgbNavLinkBase {\n\tconstructor(\n\t\t@Attribute('role') public role: string,\n\t\tpublic navItem: NgbNavItem,\n\t\tpublic nav: NgbNav,\n\t\tpublic elRef: ElementRef,\n\t) {}\n\n\thasNavItemClass() {\n\t\t// with alternative markup we have to add `.nav-item` class, because `ngbNavItem` is on the ng-container\n\t\treturn this.navItem.elementRef.nativeElement.nodeType === Node.COMMENT_NODE;\n\t}\n}\n\n/**\n * A directive to mark the nav link when used on a button element.\n */\n@Directive({\n\tselector: 'button[ngbNavLink]',\n\tstandalone: true,\n\thostDirectives: [NgbNavLinkBase],\n\thost: {\n\t\ttype: 'button',\n\t\t'[disabled]': 'navItem.disabled',\n\t\t'(click)': 'nav.click(navItem)',\n\t},\n})\nexport class NgbNavLinkButton {\n\tconstructor(public navItem: NgbNavItem, public nav: NgbNav) {}\n}\n\n/**\n * A directive to mark the nav link when used on a link element.\n *\n * @since 5.2.0\n */\n@Directive({\n\tselector: 'a[ngbNavLink]',\n\tstandalone: true,\n\thostDirectives: [NgbNavLinkBase],\n\thost: {\n\t\thref: '',\n\t\t'(click)': 'nav.click(navItem); $event.preventDefault()',\n\t},\n})\nexport class NgbNavLink {\n\tconstructor(public navItem: NgbNavItem, public nav: NgbNav) {}\n}\n\n/**\n * The payload of the 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 * @since 5.2.0\n */\nexport interface NgbNavChangeEvent {\n\t/**\n\t * Id of the currently active nav.\n\t */\n\tactiveId: T;\n\n\t/**\n\t * Id of the newly selected nav.\n\t */\n\tnextId: T;\n\n\t/**\n\t * Function that will prevent nav change if called.\n\t */\n\tpreventDefault: () => void;\n}\n","import { NgbTransitionStartFn } from '../util/transition/ngbTransition';\nimport { reflow } from '../util/util';\n\nexport const ngbNavFadeOutTransition: NgbTransitionStartFn = ({ classList }) => {\n\tclassList.remove('show');\n\treturn () => classList.remove('active');\n};\n\nexport const ngbNavFadeInTransition: NgbTransitionStartFn = (element: HTMLElement, animation: boolean) => {\n\tif (animation) {\n\t\treflow(element);\n\t}\n\telement.classList.add('show');\n};\n","import {\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tDirective,\n\tElementRef,\n\tInput,\n\tNgZone,\n\tQueryList,\n\tViewChildren,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { distinctUntilChanged, skip, startWith, takeUntil } from 'rxjs/operators';\n\nimport { ngbNavFadeInTransition, ngbNavFadeOutTransition } from './nav-transition';\nimport { ngbRunTransition, NgbTransitionOptions } from '../util/transition/ngbTransition';\nimport { NgbNav, NgbNavItem } from './nav';\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Directive({\n\tselector: '[ngbNavPane]',\n\tstandalone: true,\n\thost: {\n\t\t'[id]': 'item.panelDomId',\n\t\tclass: 'tab-pane',\n\t\t'[class.fade]': 'nav.animation',\n\t\t'[attr.role]': 'role ? role : nav.roles ? \"tabpanel\" : undefined',\n\t\t'[attr.aria-labelledby]': 'item.domId',\n\t},\n})\nexport class NgbNavPane {\n\t@Input() item: NgbNavItem;\n\t@Input() nav: NgbNav;\n\t@Input() role: string;\n\n\tconstructor(public elRef: ElementRef) {}\n}\n\n/**\n * The outlet where currently active nav content will be displayed.\n *\n * @since 5.2.0\n */\n@Component({\n\tselector: '[ngbNavOutlet]',\n\tstandalone: true,\n\timports: [NgbNavPane, NgFor, NgIf, NgTemplateOutlet],\n\thost: { '[class.tab-content]': 'true' },\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\n\t`,\n})\nexport class NgbNavOutlet implements AfterViewInit {\n\tprivate _activePane: NgbNavPane | null = null;\n\n\t@ViewChildren(NgbNavPane) private _panes: QueryList;\n\n\t/**\n\t * A role to set on the nav pane\n\t */\n\t@Input() paneRole;\n\n\t/**\n\t * Reference to the `NgbNav`\n\t */\n\t@Input('ngbNavOutlet') nav: NgbNav;\n\n\tconstructor(private _cd: ChangeDetectorRef, private _ngZone: NgZone) {}\n\n\tisPanelTransitioning(item: NgbNavItem) {\n\t\treturn this._activePane?.item === item;\n\t}\n\n\tngAfterViewInit() {\n\t\t// initial display\n\t\tthis._updateActivePane();\n\n\t\t// this will be emitted for all 3 types of nav changes: .select(), [activeId] or (click)\n\t\tthis.nav.navItemChange$\n\t\t\t.pipe(takeUntil(this.nav.destroy$), startWith(this._activePane?.item || null), distinctUntilChanged(), skip(1))\n\t\t\t.subscribe((nextItem) => {\n\t\t\t\tconst options: NgbTransitionOptions = { animation: this.nav.animation, runningTransition: 'stop' };\n\n\t\t\t\t// next panel we're switching to will only appear in DOM after the change detection is done\n\t\t\t\t// and `this._panes` will be updated\n\t\t\t\tthis._cd.detectChanges();\n\n\t\t\t\t// fading out\n\t\t\t\tif (this._activePane) {\n\t\t\t\t\tngbRunTransition(\n\t\t\t\t\t\tthis._ngZone,\n\t\t\t\t\t\tthis._activePane.elRef.nativeElement,\n\t\t\t\t\t\tngbNavFadeOutTransition,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t).subscribe(() => {\n\t\t\t\t\t\tconst activeItem = this._activePane?.item;\n\t\t\t\t\t\tthis._activePane = this._getPaneForItem(nextItem);\n\n\t\t\t\t\t\t// mark for check when transition finishes as outlet or parent containers might be OnPush\n\t\t\t\t\t\t// without this the panes that have \"faded out\" will stay in DOM\n\t\t\t\t\t\tthis._cd.markForCheck();\n\n\t\t\t\t\t\t// fading in\n\t\t\t\t\t\tif (this._activePane) {\n\t\t\t\t\t\t\t// we have to add the '.active' class before running the transition,\n\t\t\t\t\t\t\t// because it should be in place before `ngbRunTransition` does `reflow()`\n\t\t\t\t\t\t\tthis._activePane.elRef.nativeElement.classList.add('active');\n\t\t\t\t\t\t\tngbRunTransition(\n\t\t\t\t\t\t\t\tthis._ngZone,\n\t\t\t\t\t\t\t\tthis._activePane.elRef.nativeElement,\n\t\t\t\t\t\t\t\tngbNavFadeInTransition,\n\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t).subscribe(() => {\n\t\t\t\t\t\t\t\tif (nextItem) {\n\t\t\t\t\t\t\t\t\tnextItem.shown.emit();\n\t\t\t\t\t\t\t\t\tthis.nav.shown.emit(nextItem.id);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (activeItem) {\n\t\t\t\t\t\t\tactiveItem.hidden.emit();\n\t\t\t\t\t\t\tthis.nav.hidden.emit(activeItem.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis._updateActivePane();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate _updateActivePane() {\n\t\tthis._activePane = this._getActivePane();\n\t\tthis._activePane?.elRef.nativeElement.classList.add('show');\n\t\tthis._activePane?.elRef.nativeElement.classList.add('active');\n\t}\n\n\tprivate _getPaneForItem(item: NgbNavItem | null) {\n\t\treturn (this._panes && this._panes.find((pane) => pane.item === item)) || null;\n\t}\n\n\tprivate _getActivePane(): NgbNavPane | null {\n\t\treturn (this._panes && this._panes.find((pane) => pane.item.active)) || null;\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbNav, NgbNavContent, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavLinkButton, NgbNavLinkBase } from './nav';\n\nimport { NgbNavOutlet, NgbNavPane } from './nav-outlet';\n\nexport {\n\tNgbNav,\n\tNgbNavContent,\n\tNgbNavContentContext,\n\tNgbNavItem,\n\tNgbNavItemRole,\n\tNgbNavLink,\n\tNgbNavLinkButton,\n\tNgbNavLinkBase,\n\tNgbNavChangeEvent,\n} from './nav';\nexport { NgbNavOutlet, NgbNavPane } from './nav-outlet';\nexport { NgbNavConfig } from './nav-config';\n\nconst NGB_NAV_DIRECTIVES = [\n\tNgbNavContent,\n\tNgbNav,\n\tNgbNavItem,\n\tNgbNavItemRole,\n\tNgbNavLink,\n\tNgbNavLinkButton,\n\tNgbNavLinkBase,\n\tNgbNavOutlet,\n\tNgbNavPane,\n];\n\n@NgModule({\n\timports: NGB_NAV_DIRECTIVES,\n\texports: NGB_NAV_DIRECTIVES,\n})\nexport class NgbNavModule {}\n","import { Injectable } from '@angular/core';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbPaginationConfig {\n\tdisabled = false;\n\tboundaryLinks = false;\n\tdirectionLinks = true;\n\tellipses = true;\n\tmaxSize = 0;\n\tpageSize = 10;\n\trotate = false;\n\tsize: 'sm' | 'lg' | string | null;\n}\n","import {\n\tComponent,\n\tContentChild,\n\tDirective,\n\tEventEmitter,\n\tInput,\n\tOutput,\n\tOnChanges,\n\tChangeDetectionStrategy,\n\tSimpleChanges,\n\tTemplateRef,\n} from '@angular/core';\nimport { getValueInRange, isNumber } from '../util/util';\nimport { NgbPaginationConfig } from './pagination-config';\nimport { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\n\n/**\n * A context for the\n * * `NgbPaginationFirst`\n * * `NgbPaginationPrevious`\n * * `NgbPaginationNext`\n * * `NgbPaginationLast`\n * * `NgbPaginationEllipsis`\n * * `NgbPaginationPages`\n *\n * link templates in case you want to override one.\n *\n * @since 4.1.0\n */\nexport interface NgbPaginationLinkContext {\n\t/**\n\t * Page number displayed by the current link.\n\t */\n\tcurrentPage: number;\n\n\t/**\n\t * If `true`, the current link is disabled.\n\t */\n\tdisabled: boolean;\n}\n\n/**\n * A context for the `NgbPaginationNumber` link template in case you want to override one.\n *\n * Extends `NgbPaginationLinkContext`.\n *\n * @since 4.1.0\n */\nexport interface NgbPaginationNumberContext extends NgbPaginationLinkContext {\n\t/**\n\t * The page number, displayed by the current page link.\n\t */\n\t$implicit: number;\n}\n\n/**\n * A context for the `NgbPaginationPages` pages template in case you want to override\n * the way all pages are displayed.\n *\n * @since 9.1.0\n */\nexport interface NgbPaginationPagesContext {\n\t/**\n\t * The currently selected page number.\n\t */\n\t$implicit: number;\n\n\t/**\n\t * If `true`, pagination is disabled.\n\t */\n\tdisabled: boolean;\n\n\t/**\n\t * Pages numbers that should be rendered starting with 1.\n\t */\n\tpages: number[];\n}\n\n/**\n * A directive to match the 'ellipsis' link template\n *\n * @since 4.1.0\n */\n@Directive({ selector: 'ng-template[ngbPaginationEllipsis]', standalone: true })\nexport class NgbPaginationEllipsis {\n\tconstructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A directive to match the 'first' link template\n *\n * @since 4.1.0\n */\n@Directive({ selector: 'ng-template[ngbPaginationFirst]', standalone: true })\nexport class NgbPaginationFirst {\n\tconstructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A directive to match the 'last' link template\n *\n * @since 4.1.0\n */\n@Directive({ selector: 'ng-template[ngbPaginationLast]', standalone: true })\nexport class NgbPaginationLast {\n\tconstructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A directive to match the 'next' link template\n *\n * @since 4.1.0\n */\n@Directive({ selector: 'ng-template[ngbPaginationNext]', standalone: true })\nexport class NgbPaginationNext {\n\tconstructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A directive to match the page 'number' link template\n *\n * @since 4.1.0\n */\n@Directive({ selector: 'ng-template[ngbPaginationNumber]', standalone: true })\nexport class NgbPaginationNumber {\n\tconstructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A directive to match the 'previous' link template\n *\n * @since 4.1.0\n */\n@Directive({ selector: 'ng-template[ngbPaginationPrevious]', standalone: true })\nexport class NgbPaginationPrevious {\n\tconstructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A directive to match the 'pages' whole content\n *\n * @since 9.1.0\n */\n@Directive({ selector: 'ng-template[ngbPaginationPages]', standalone: true })\nexport class NgbPaginationPages {\n\tconstructor(public templateRef: TemplateRef) {}\n}\n\n/**\n * A component that displays page numbers and allows to customize them in several ways.\n */\n@Component({\n\tselector: 'ngb-pagination',\n\tstandalone: true,\n\timports: [NgIf, NgFor, NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: { role: 'navigation' },\n\ttemplate: `\n\t\t««\n\t\t«\n\t\t»\n\t\t»»\n\t\t...\n\t\t{{ page }}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t
    \n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
  • \n\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
  • \n\t\t\t\n\t\t\t\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
  • \n\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
  • \n\t\t
\n\t`,\n})\nexport class NgbPagination implements OnChanges {\n\tpageCount = 0;\n\tpages: number[] = [];\n\n\t@ContentChild(NgbPaginationEllipsis, { static: false }) tplEllipsis?: NgbPaginationEllipsis;\n\t@ContentChild(NgbPaginationFirst, { static: false }) tplFirst?: NgbPaginationFirst;\n\t@ContentChild(NgbPaginationLast, { static: false }) tplLast?: NgbPaginationLast;\n\t@ContentChild(NgbPaginationNext, { static: false }) tplNext?: NgbPaginationNext;\n\t@ContentChild(NgbPaginationNumber, { static: false }) tplNumber?: NgbPaginationNumber;\n\t@ContentChild(NgbPaginationPrevious, { static: false }) tplPrevious?: NgbPaginationPrevious;\n\t@ContentChild(NgbPaginationPages, { static: false }) tplPages?: NgbPaginationPages;\n\n\t/**\n\t * If `true`, pagination links will be disabled.\n\t */\n\t@Input() disabled: boolean;\n\n\t/**\n\t * If `true`, the \"First\" and \"Last\" page links are shown.\n\t */\n\t@Input() boundaryLinks: boolean;\n\n\t/**\n\t * If `true`, the \"Next\" and \"Previous\" page links are shown.\n\t */\n\t@Input() directionLinks: boolean;\n\n\t/**\n\t * If `true`, the ellipsis symbols and first/last page numbers will be shown when `maxSize` > number of pages.\n\t */\n\t@Input() ellipses: boolean;\n\n\t/**\n\t * Whether to rotate pages when `maxSize` > number of pages.\n\t *\n\t * The current page always stays in the middle if `true`.\n\t */\n\t@Input() rotate: boolean;\n\n\t/**\n\t * The number of items in your paginated collection.\n\t *\n\t * Note, that this is not the number of pages. Page numbers are calculated dynamically based on\n\t * `collectionSize` and `pageSize`. Ex. if you have 100 items in your collection and displaying 20 items per page,\n\t * you'll end up with 5 pages.\n\t */\n\t@Input({ required: true }) collectionSize: number;\n\n\t/**\n\t * The maximum number of pages to display.\n\t */\n\t@Input() maxSize: number;\n\n\t/**\n\t * The current page.\n\t *\n\t * Page numbers start with `1`.\n\t */\n\t@Input() page = 1;\n\n\t/**\n\t * The number of items per page.\n\t */\n\t@Input() pageSize: number;\n\n\t/**\n\t * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n\t *\n\t * Event payload is the number of the newly selected page.\n\t *\n\t * Page numbers start with `1`.\n\t */\n\t@Output() pageChange = new EventEmitter(true);\n\n\t/**\n\t * The pagination display size.\n\t *\n\t * Bootstrap currently supports small and large sizes.\n\t *\n\t * If the passed value is a string (ex. 'custom'), it will just add the `pagination-custom` css class\n\t */\n\t@Input() size: 'sm' | 'lg' | string | null;\n\n\tconstructor(config: NgbPaginationConfig) {\n\t\tthis.disabled = config.disabled;\n\t\tthis.boundaryLinks = config.boundaryLinks;\n\t\tthis.directionLinks = config.directionLinks;\n\t\tthis.ellipses = config.ellipses;\n\t\tthis.maxSize = config.maxSize;\n\t\tthis.pageSize = config.pageSize;\n\t\tthis.rotate = config.rotate;\n\t\tthis.size = config.size;\n\t}\n\n\thasPrevious(): boolean {\n\t\treturn this.page > 1;\n\t}\n\n\thasNext(): boolean {\n\t\treturn this.page < this.pageCount;\n\t}\n\n\tnextDisabled(): boolean {\n\t\treturn !this.hasNext() || this.disabled;\n\t}\n\n\tpreviousDisabled(): boolean {\n\t\treturn !this.hasPrevious() || this.disabled;\n\t}\n\n\tselectPage(pageNumber: number): void {\n\t\tthis._updatePages(pageNumber);\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis._updatePages(this.page);\n\t}\n\n\tisEllipsis(pageNumber): boolean {\n\t\treturn pageNumber === -1;\n\t}\n\n\t/**\n\t * Appends ellipses and first/last page number to the displayed pages\n\t */\n\tprivate _applyEllipses(start: number, end: number) {\n\t\tif (this.ellipses) {\n\t\t\tif (start > 0) {\n\t\t\t\t// The first page will always be included. If the displayed range\n\t\t\t\t// starts after the third page, then add ellipsis. But if the range\n\t\t\t\t// starts on the third page, then add the second page instead of\n\t\t\t\t// an ellipsis, because the ellipsis would only hide a single page.\n\t\t\t\tif (start > 2) {\n\t\t\t\t\tthis.pages.unshift(-1);\n\t\t\t\t} else if (start === 2) {\n\t\t\t\t\tthis.pages.unshift(2);\n\t\t\t\t}\n\t\t\t\tthis.pages.unshift(1);\n\t\t\t}\n\t\t\tif (end < this.pageCount) {\n\t\t\t\t// The last page will always be included. If the displayed range\n\t\t\t\t// ends before the third-last page, then add ellipsis. But if the range\n\t\t\t\t// ends on third-last page, then add the second-last page instead of\n\t\t\t\t// an ellipsis, because the ellipsis would only hide a single page.\n\t\t\t\tif (end < this.pageCount - 2) {\n\t\t\t\t\tthis.pages.push(-1);\n\t\t\t\t} else if (end === this.pageCount - 2) {\n\t\t\t\t\tthis.pages.push(this.pageCount - 1);\n\t\t\t\t}\n\t\t\t\tthis.pages.push(this.pageCount);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Rotates page numbers based on maxSize items visible.\n\t * Currently selected page stays in the middle:\n\t *\n\t * Ex. for selected page = 6:\n\t * [5,*6*,7] for maxSize = 3\n\t * [4,5,*6*,7] for maxSize = 4\n\t */\n\tprivate _applyRotation(): [number, number] {\n\t\tlet start = 0;\n\t\tlet end = this.pageCount;\n\t\tlet leftOffset = Math.floor(this.maxSize / 2);\n\t\tlet rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n\n\t\tif (this.page <= leftOffset) {\n\t\t\t// very beginning, no rotation -> [0..maxSize]\n\t\t\tend = this.maxSize;\n\t\t} else if (this.pageCount - this.page < leftOffset) {\n\t\t\t// very end, no rotation -> [len-maxSize..len]\n\t\t\tstart = this.pageCount - this.maxSize;\n\t\t} else {\n\t\t\t// rotate\n\t\t\tstart = this.page - leftOffset - 1;\n\t\t\tend = this.page + rightOffset;\n\t\t}\n\n\t\treturn [start, end];\n\t}\n\n\t/**\n\t * Paginates page numbers based on maxSize items per page.\n\t */\n\tprivate _applyPagination(): [number, number] {\n\t\tlet page = Math.ceil(this.page / this.maxSize) - 1;\n\t\tlet start = page * this.maxSize;\n\t\tlet end = start + this.maxSize;\n\n\t\treturn [start, end];\n\t}\n\n\tprivate _setPageInRange(newPageNo) {\n\t\tconst prevPageNo = this.page;\n\t\tthis.page = getValueInRange(newPageNo, this.pageCount, 1);\n\n\t\tif (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n\t\t\tthis.pageChange.emit(this.page);\n\t\t}\n\t}\n\n\tprivate _updatePages(newPage: number) {\n\t\tthis.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n\n\t\tif (!isNumber(this.pageCount)) {\n\t\t\tthis.pageCount = 0;\n\t\t}\n\n\t\t// fill-in model needed to render pages\n\t\tthis.pages.length = 0;\n\t\tfor (let i = 1; i <= this.pageCount; i++) {\n\t\t\tthis.pages.push(i);\n\t\t}\n\n\t\t// set page within 1..max range\n\t\tthis._setPageInRange(newPage);\n\n\t\t// apply maxSize if necessary\n\t\tif (this.maxSize > 0 && this.pageCount > this.maxSize) {\n\t\t\tlet start = 0;\n\t\t\tlet end = this.pageCount;\n\n\t\t\t// either paginating or rotating page numbers\n\t\t\tif (this.rotate) {\n\t\t\t\t[start, end] = this._applyRotation();\n\t\t\t} else {\n\t\t\t\t[start, end] = this._applyPagination();\n\t\t\t}\n\n\t\t\tthis.pages = this.pages.slice(start, end);\n\n\t\t\t// adding ellipses\n\t\t\tthis._applyEllipses(start, end);\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport {\n\tNgbPagination,\n\tNgbPaginationEllipsis,\n\tNgbPaginationFirst,\n\tNgbPaginationLast,\n\tNgbPaginationNext,\n\tNgbPaginationNumber,\n\tNgbPaginationPrevious,\n\tNgbPaginationPages,\n} from './pagination';\n\nexport {\n\tNgbPagination,\n\tNgbPaginationEllipsis,\n\tNgbPaginationFirst,\n\tNgbPaginationLast,\n\tNgbPaginationNext,\n\tNgbPaginationNumber,\n\tNgbPaginationPrevious,\n\tNgbPaginationPages,\n} from './pagination';\nexport { NgbPaginationConfig } from './pagination-config';\n\nconst NGB_PAGINATION_DIRECTIVES = [\n\tNgbPagination,\n\tNgbPaginationEllipsis,\n\tNgbPaginationFirst,\n\tNgbPaginationLast,\n\tNgbPaginationNext,\n\tNgbPaginationNumber,\n\tNgbPaginationPrevious,\n\tNgbPaginationPages,\n];\n\n@NgModule({\n\timports: NGB_PAGINATION_DIRECTIVES,\n\texports: NGB_PAGINATION_DIRECTIVES,\n})\nexport class NgbPaginationModule {}\n","const ALIASES = {\n\thover: ['mouseenter', 'mouseleave'],\n\tfocus: ['focusin', 'focusout'],\n};\n\nexport function parseTriggers(triggers: string): [string, string?][] {\n\tconst trimmedTriggers = (triggers || '').trim();\n\n\tif (trimmedTriggers.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst parsedTriggers = trimmedTriggers\n\t\t.split(/\\s+/)\n\t\t.map((trigger) => trigger.split(':'))\n\t\t.map((triggerPair) => (ALIASES[triggerPair[0]] || triggerPair) as [string, string?]);\n\n\tconst manualTriggers = parsedTriggers.filter((triggerPair) => triggerPair.includes('manual'));\n\n\tif (manualTriggers.length > 1) {\n\t\tthrow `Triggers parse error: only one manual trigger is allowed`;\n\t}\n\n\tif (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n\t\tthrow `Triggers parse error: manual trigger can't be mixed with other triggers`;\n\t}\n\n\treturn manualTriggers.length ? [] : parsedTriggers;\n}\n\nexport function listenToTriggers(\n\telement: HTMLElement,\n\ttriggers: string,\n\tisOpenedFn: () => boolean,\n\topenFn: () => void,\n\tcloseFn: () => void,\n\topenDelayMs = 0,\n\tcloseDelayMs = 0,\n) {\n\tconst parsedTriggers = parseTriggers(triggers);\n\n\tif (parsedTriggers.length === 0) {\n\t\treturn () => {};\n\t}\n\n\tconst activeOpenTriggers = new Set();\n\tconst cleanupFns: (() => void)[] = [];\n\tlet timeout: any;\n\n\tfunction addEventListener(name: string, listener: () => void) {\n\t\telement.addEventListener(name, listener);\n\t\tcleanupFns.push(() => element.removeEventListener(name, listener));\n\t}\n\n\tfunction withDelay(fn: () => void, delayMs: number) {\n\t\tclearTimeout(timeout);\n\t\tif (delayMs > 0) {\n\t\t\ttimeout = setTimeout(fn, delayMs);\n\t\t} else {\n\t\t\tfn();\n\t\t}\n\t}\n\n\tfor (const [openTrigger, closeTrigger] of parsedTriggers) {\n\t\tif (!closeTrigger) {\n\t\t\taddEventListener(openTrigger, () =>\n\t\t\t\tisOpenedFn() ? withDelay(closeFn, closeDelayMs) : withDelay(openFn, openDelayMs),\n\t\t\t);\n\t\t} else {\n\t\t\taddEventListener(openTrigger, () => {\n\t\t\t\tactiveOpenTriggers.add(openTrigger);\n\t\t\t\twithDelay(() => activeOpenTriggers.size > 0 && openFn(), openDelayMs);\n\t\t\t});\n\t\t\taddEventListener(closeTrigger, () => {\n\t\t\t\tactiveOpenTriggers.delete(openTrigger);\n\t\t\t\twithDelay(() => activeOpenTriggers.size === 0 && closeFn(), closeDelayMs);\n\t\t\t});\n\t\t}\n\t}\n\n\treturn () => cleanupFns.forEach((cleanupFn) => cleanupFn());\n}\n","import { Injectable } from '@angular/core';\nimport { PlacementArray } from '../util/positioning';\nimport { NgbConfig } from '../ngb-config';\nimport { Options } from '@popperjs/core';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbPopoverConfig {\n\tautoClose: boolean | 'inside' | 'outside' = true;\n\tplacement: PlacementArray = 'auto';\n\tpopperOptions = (options: Partial) => options;\n\ttriggers = 'click';\n\tcontainer: string;\n\tdisablePopover = false;\n\tpopoverClass: string;\n\topenDelay = 0;\n\tcloseDelay = 0;\n\n\tprivate _animation: boolean;\n\n\tconstructor(private _ngbConfig: NgbConfig) {}\n\n\tget animation(): boolean {\n\t\treturn this._animation === undefined ? this._ngbConfig.animation : this._animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import {\n\tApplicationRef,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tComponentRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tInject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tRenderer2,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewContainerRef,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { DOCUMENT, NgIf, NgTemplateOutlet } from '@angular/common';\n\nimport { listenToTriggers } from '../util/triggers';\nimport { ngbAutoClose } from '../util/autoclose';\nimport { ngbPositioning, PlacementArray } from '../util/positioning';\nimport { PopupService } from '../util/popup';\nimport { isString } from '../util/util';\n\nimport { NgbPopoverConfig } from './popover-config';\nimport { Options } from '@popperjs/core';\n\nimport { addPopperOffset } from '../util/positioning-util';\nimport { Subscription } from 'rxjs';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'ngb-popover-window',\n\tstandalone: true,\n\timports: [NgTemplateOutlet, NgIf],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\t'[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")',\n\t\t'[class.fade]': 'animation',\n\t\trole: 'tooltip',\n\t\t'[id]': 'id',\n\t\tstyle: 'position: absolute;',\n\t},\n\ttemplate: `
\n\t\t

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

\n\t\t
`,\n})\nexport class NgbPopoverWindow {\n\t@Input() animation: boolean;\n\t@Input() title: string | TemplateRef | null | undefined;\n\t@Input() id: string;\n\t@Input() popoverClass: string;\n\t@Input() context: any;\n\n\tisTitleTemplate() {\n\t\treturn this.title instanceof TemplateRef;\n\t}\n}\n\n/**\n * A lightweight and extensible directive for fancy popover creation.\n */\n@Directive({ selector: '[ngbPopover]', exportAs: 'ngbPopover', standalone: true })\nexport class NgbPopover implements OnInit, OnDestroy, OnChanges {\n\tstatic ngAcceptInputType_autoClose: boolean | string;\n\n\t/**\n\t * If `true`, popover opening and closing will be animated.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Input() animation: boolean;\n\n\t/**\n\t * Indicates whether the popover should be closed on `Escape` key and inside/outside clicks:\n\t *\n\t * * `true` - closes on both outside and inside clicks as well as `Escape` presses\n\t * * `false` - disables the autoClose feature (NB: triggers still apply)\n\t * * `\"inside\"` - closes on inside clicks as well as Escape presses\n\t * * `\"outside\"` - closes on outside clicks (sometimes also achievable through triggers)\n\t * as well as `Escape` presses\n\t *\n\t * @since 3.0.0\n\t */\n\t@Input() autoClose: boolean | 'inside' | 'outside';\n\n\t/**\n\t * The string content or a `TemplateRef` for the content to be displayed in the popover.\n\t *\n\t * If the title and the content are falsy, the popover won't open.\n\t */\n\t@Input() ngbPopover: string | TemplateRef | null | undefined;\n\n\t/**\n\t * The title of the popover.\n\t *\n\t * If the title and the content are falsy, the popover won't open.\n\t */\n\t@Input() popoverTitle: string | TemplateRef | null | undefined;\n\n\t/**\n\t * The preferred placement of the popover, among the [possible values](#/guides/positioning#api).\n\t *\n\t * The default order of preference is `\"auto\"`.\n\t *\n\t * Please see the [positioning overview](#/positioning) for more details.\n\t */\n\t@Input() placement: PlacementArray;\n\n\t/**\n\t * Allows to change default Popper options when positioning the popover.\n\t * Receives current popper options and returns modified ones.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() popperOptions: (options: Partial) => Partial;\n\n\t/**\n\t * Specifies events that should trigger the tooltip.\n\t *\n\t * Supports a space separated list of event names.\n\t * For more details see the [triggers demo](#/components/popover/examples#triggers).\n\t */\n\t@Input() triggers: string;\n\n\t/**\n\t * A css selector or html element specifying the element the popover should be positioned against.\n\t * By default, the element `ngbPopover` directive is applied to will be set as a target.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() positionTarget?: string | HTMLElement;\n\n\t/**\n\t * A selector specifying the element the popover should be appended to.\n\t *\n\t * Currently only supports `body`.\n\t */\n\t@Input() container: string;\n\n\t/**\n\t * If `true`, popover is disabled and won't be displayed.\n\t *\n\t * @since 1.1.0\n\t */\n\t@Input() disablePopover: boolean;\n\n\t/**\n\t * An optional class applied to the popover window element.\n\t *\n\t * @since 2.2.0\n\t */\n\t@Input() popoverClass: string;\n\n\t/**\n\t * Default template context for `TemplateRef`, can be overridden with `open` method.\n\t *\n\t * @since 15.1.0\n\t */\n\t@Input() popoverContext: any;\n\n\t/**\n\t * The opening delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n\t *\n\t * @since 4.1.0\n\t */\n\t@Input() openDelay: number;\n\n\t/**\n\t * The closing delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n\t *\n\t * @since 4.1.0\n\t */\n\t@Input() closeDelay: number;\n\n\t/**\n\t * An event emitted when the popover opening animation has finished. Contains no payload.\n\t */\n\t@Output() shown = new EventEmitter();\n\n\t/**\n\t * An event emitted when the popover closing animation has finished. Contains no payload.\n\t *\n\t * At this point popover is not in the DOM anymore.\n\t */\n\t@Output() hidden = new EventEmitter();\n\n\tprivate _ngbPopoverWindowId = `ngb-popover-${nextId++}`;\n\tprivate _popupService: PopupService;\n\tprivate _windowRef: ComponentRef | null = null;\n\tprivate _unregisterListenersFn;\n\tprivate _positioning: ReturnType;\n\tprivate _zoneSubscription: Subscription;\n\tprivate _isDisabled(): boolean {\n\t\tif (this.disablePopover) {\n\t\t\treturn true;\n\t\t}\n\t\tif (!this.ngbPopover && !this.popoverTitle) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tconstructor(\n\t\tprivate _elementRef: ElementRef,\n\t\tprivate _renderer: Renderer2,\n\t\tinjector: Injector,\n\t\tviewContainerRef: ViewContainerRef,\n\t\tconfig: NgbPopoverConfig,\n\t\tprivate _ngZone: NgZone,\n\t\t@Inject(DOCUMENT) private _document: any,\n\t\tprivate _changeDetector: ChangeDetectorRef,\n\t\tapplicationRef: ApplicationRef,\n\t) {\n\t\tthis.animation = config.animation;\n\t\tthis.autoClose = config.autoClose;\n\t\tthis.placement = config.placement;\n\t\tthis.popperOptions = config.popperOptions;\n\t\tthis.triggers = config.triggers;\n\t\tthis.container = config.container;\n\t\tthis.disablePopover = config.disablePopover;\n\t\tthis.popoverClass = config.popoverClass;\n\t\tthis.openDelay = config.openDelay;\n\t\tthis.closeDelay = config.closeDelay;\n\t\tthis._positioning = ngbPositioning();\n\t\tthis._popupService = new PopupService(\n\t\t\tNgbPopoverWindow,\n\t\t\tinjector,\n\t\t\tviewContainerRef,\n\t\t\t_renderer,\n\t\t\tthis._ngZone,\n\t\t\tapplicationRef,\n\t\t);\n\t}\n\n\t/**\n\t * Opens the popover.\n\t *\n\t * This is considered to be a \"manual\" triggering.\n\t * The `context` is an optional value to be injected into the popover template when it is created.\n\t */\n\topen(context?: any) {\n\t\tif (!this._windowRef && !this._isDisabled()) {\n\t\t\t// this type assertion is safe because otherwise _isDisabled would return true\n\t\t\tconst { windowRef, transition$ } = this._popupService.open(\n\t\t\t\tthis.ngbPopover as string | TemplateRef,\n\t\t\t\tcontext ?? this.popoverContext,\n\t\t\t\tthis.animation,\n\t\t\t);\n\t\t\tthis._windowRef = windowRef;\n\t\t\tthis._windowRef.setInput('animation', this.animation);\n\t\t\tthis._windowRef.setInput('title', this.popoverTitle);\n\t\t\tthis._windowRef.setInput('context', context ?? this.popoverContext);\n\t\t\tthis._windowRef.setInput('popoverClass', this.popoverClass);\n\t\t\tthis._windowRef.setInput('id', this._ngbPopoverWindowId);\n\n\t\t\tthis._renderer.setAttribute(this._getPositionTargetElement(), 'aria-describedby', this._ngbPopoverWindowId);\n\n\t\t\tif (this.container === 'body') {\n\t\t\t\tthis._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n\t\t\t}\n\n\t\t\t// We need to detect changes, because we don't know where .open() might be called from.\n\t\t\t// Ex. opening popover from one of lifecycle hooks that run after the CD\n\t\t\t// (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n\t\t\tthis._windowRef.changeDetectorRef.detectChanges();\n\n\t\t\t// We need to mark for check, because popover won't work inside the OnPush component.\n\t\t\t// Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n\t\t\t// inside the template of an OnPush component and we change the popover from\n\t\t\t// open -> closed, the expression in question won't be updated unless we explicitly\n\t\t\t// mark the parent component to be checked.\n\t\t\tthis._windowRef.changeDetectorRef.markForCheck();\n\n\t\t\t// Setting up popper and scheduling updates when zone is stable\n\t\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\t\tthis._positioning.createPopper({\n\t\t\t\t\thostElement: this._getPositionTargetElement(),\n\t\t\t\t\ttargetElement: this._windowRef!.location.nativeElement,\n\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\tappendToBody: this.container === 'body',\n\t\t\t\t\tbaseClass: 'bs-popover',\n\t\t\t\t\tupdatePopperOptions: (options) => this.popperOptions(addPopperOffset([0, 8])(options)),\n\t\t\t\t});\n\n\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\t// This update is required for correct arrow placement\n\t\t\t\t\tthis._positioning.update();\n\t\t\t\t\tthis._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [\n\t\t\t\tthis._windowRef.location.nativeElement,\n\t\t\t]);\n\n\t\t\ttransition$.subscribe(() => this.shown.emit());\n\t\t}\n\t}\n\n\t/**\n\t * Closes the popover.\n\t *\n\t * This is considered to be a \"manual\" triggering of the popover.\n\t */\n\tclose(animation = this.animation) {\n\t\tif (this._windowRef) {\n\t\t\tthis._renderer.removeAttribute(this._getPositionTargetElement(), 'aria-describedby');\n\t\t\tthis._popupService.close(animation).subscribe(() => {\n\t\t\t\tthis._windowRef = null;\n\t\t\t\tthis._positioning.destroy();\n\t\t\t\tthis._zoneSubscription?.unsubscribe();\n\t\t\t\tthis.hidden.emit();\n\t\t\t\tthis._changeDetector.markForCheck();\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the popover.\n\t *\n\t * This is considered to be a \"manual\" triggering of the popover.\n\t */\n\ttoggle(): void {\n\t\tif (this._windowRef) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true`, if the popover is currently shown.\n\t */\n\tisOpen(): boolean {\n\t\treturn this._windowRef != null;\n\t}\n\n\tngOnInit() {\n\t\tthis._unregisterListenersFn = listenToTriggers(\n\t\t\tthis._elementRef.nativeElement,\n\t\t\tthis.triggers,\n\t\t\tthis.isOpen.bind(this),\n\t\t\tthis.open.bind(this),\n\t\t\tthis.close.bind(this),\n\t\t\t+this.openDelay,\n\t\t\t+this.closeDelay,\n\t\t);\n\t}\n\n\tngOnChanges({ ngbPopover, popoverTitle, disablePopover, popoverClass }: SimpleChanges) {\n\t\tif (popoverClass && this.isOpen()) {\n\t\t\tthis._windowRef!.instance.popoverClass = popoverClass.currentValue;\n\t\t}\n\t\t// close popover if title and content become empty, or disablePopover set to true\n\t\tif ((ngbPopover || popoverTitle || disablePopover) && this._isDisabled()) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis.close(false);\n\t\t// This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n\t\t// under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n\t\tthis._unregisterListenersFn?.();\n\t}\n\n\tprivate _getPositionTargetElement(): HTMLElement {\n\t\treturn (\n\t\t\t(isString(this.positionTarget) ? this._document.querySelector(this.positionTarget) : this.positionTarget) ||\n\t\t\tthis._elementRef.nativeElement\n\t\t);\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbPopover } from './popover';\n\nexport { NgbPopover } from './popover';\nexport { NgbPopoverConfig } from './popover-config';\nexport { Placement } from '../util/positioning';\n\n@NgModule({\n\timports: [NgbPopover],\n\texports: [NgbPopover],\n})\nexport class NgbPopoverModule {}\n","import { Injectable } from '@angular/core';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbProgressbarConfig {\n\tmax = 100;\n\tanimated = false;\n\tariaLabel = 'progress bar';\n\tstriped = false;\n\ttextType: string;\n\ttype: string;\n\tshowValue = false;\n\theight: string;\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation, HostBinding } from '@angular/core';\nimport { getValueInRange, isNumber } from '../util/util';\nimport { NgbProgressbarConfig } from './progressbar-config';\nimport { NgIf, PercentPipe } from '@angular/common';\n\n/**\n * A directive that provides feedback on the progress of a workflow or an action.\n */\n@Component({\n\tselector: 'ngb-progressbar',\n\tstandalone: true,\n\timports: [NgIf, PercentPipe],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'progress',\n\t\trole: 'progressbar',\n\t\t'[attr.aria-valuenow]': 'getValue()',\n\t\t'aria-valuemin': '0',\n\t\t'[attr.aria-valuemax]': 'max',\n\t\t'[attr.aria-label]': 'ariaLabel',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t{{ getValue() / max | percent }}\n\t\t
\n\t`,\n})\nexport class NgbProgressbar {\n\tprivate _max: number;\n\n\t/**\n\t * The maximal value to be displayed in the progress bar.\n\t *\n\t * Should be a positive number. Will default to 100 otherwise.\n\t */\n\t@Input()\n\tset max(max: number) {\n\t\tthis._max = !isNumber(max) || max <= 0 ? 100 : max;\n\t}\n\n\tget max(): number {\n\t\treturn this._max;\n\t}\n\n\t/**\n\t * If `true`, the stripes on the progress bar are animated.\n\t *\n\t * Takes effect only for browsers supporting CSS3 animations, and if `striped` is `true`.\n\t */\n\t@Input() animated: boolean;\n\n\t/**\n\t * The accessible progress bar name.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() ariaLabel: string;\n\n\t/**\n\t * If `true`, the progress bars will be displayed as striped.\n\t */\n\t@Input() striped: boolean;\n\n\t/**\n\t * If `true`, the current percentage will be shown in the `xx%` format.\n\t */\n\t@Input() showValue: boolean;\n\n\t/**\n\t * Optional text variant type of the progress bar.\n\t *\n\t * Supports types based on Bootstrap background color variants, like:\n\t * `\"success\"`, `\"info\"`, `\"warning\"`, `\"danger\"`, `\"primary\"`, `\"secondary\"`, `\"dark\"` and so on.\n\t *\n\t * @since 5.2.0\n\t */\n\t@Input() textType: string;\n\n\t/**\n\t * The type of the progress bar.\n\t *\n\t * Supports types based on Bootstrap background color variants, like:\n\t * `\"success\"`, `\"info\"`, `\"warning\"`, `\"danger\"`, `\"primary\"`, `\"secondary\"`, `\"dark\"` and so on.\n\t */\n\t@Input() type: string;\n\n\t/**\n\t * The current value for the progress bar.\n\t *\n\t * Should be in the `[0, max]` range.\n\t */\n\t@Input({ required: true }) value = 0;\n\n\t/**\n\t * The height of the progress bar.\n\t *\n\t * Accepts any valid CSS height values, ex. `\"2rem\"`\n\t */\n\t@Input() @HostBinding('style.height') height: string;\n\n\tconstructor(config: NgbProgressbarConfig) {\n\t\tthis.max = config.max;\n\t\tthis.animated = config.animated;\n\t\tthis.ariaLabel = config.ariaLabel;\n\t\tthis.striped = config.striped;\n\t\tthis.textType = config.textType;\n\t\tthis.type = config.type;\n\t\tthis.showValue = config.showValue;\n\t\tthis.height = config.height;\n\t}\n\n\tgetValue() {\n\t\treturn getValueInRange(this.value, this.max);\n\t}\n\n\tgetPercentValue() {\n\t\treturn (100 * this.getValue()) / this.max;\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbProgressbar } from './progressbar';\n\nexport { NgbProgressbar } from './progressbar';\nexport { NgbProgressbarConfig } from './progressbar-config';\n\n@NgModule({\n\timports: [NgbProgressbar],\n\texports: [NgbProgressbar],\n})\nexport class NgbProgressbarModule {}\n","import { Injectable } from '@angular/core';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbRatingConfig {\n\tmax = 10;\n\treadonly = false;\n\tresettable = false;\n\ttabindex: number | string = 0;\n}\n","import {\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChild,\n\tEventEmitter,\n\tforwardRef,\n\tInput,\n\tOnChanges,\n\tOnInit,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { NgbRatingConfig } from './rating-config';\nimport { getValueInRange } from '../util/util';\nimport { Key } from '../util/key';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgFor, NgTemplateOutlet } from '@angular/common';\n\n/**\n * The context for the custom star display template defined in the `starTemplate`.\n */\nexport interface StarTemplateContext {\n\t/**\n\t * The star fill percentage, an integer in the `[0, 100]` range.\n\t */\n\tfill: number;\n\n\t/**\n\t * Index of the star, starts with `0`.\n\t */\n\tindex: number;\n}\n\n/**\n * A directive that helps visualising and interacting with a star rating bar.\n */\n@Component({\n\tselector: 'ngb-rating',\n\tstandalone: true,\n\timports: [NgFor, NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'd-inline-flex',\n\t\t'[tabindex]': 'disabled ? -1 : tabindex',\n\t\trole: 'slider',\n\t\t'aria-valuemin': '0',\n\t\t'[attr.aria-valuemax]': 'max',\n\t\t'[attr.aria-valuenow]': 'nextRate',\n\t\t'[attr.aria-valuetext]': 'ariaValueText(nextRate, max)',\n\t\t'[attr.aria-readonly]': 'readonly && !disabled ? true : null',\n\t\t'[attr.aria-disabled]': 'disabled ? true : null',\n\t\t'(blur)': 'handleBlur()',\n\t\t'(keydown)': 'handleKeyDown($event)',\n\t\t'(mouseleave)': 'reset()',\n\t},\n\ttemplate: `\n\t\t{{ fill === 100 ? '★' : '☆' }}\n\t\t\n\t\t\t({{ index < nextRate ? '*' : ' ' }})\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t`,\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }],\n})\nexport class NgbRating implements ControlValueAccessor, OnInit, OnChanges {\n\tcontexts: StarTemplateContext[] = [];\n\tnextRate: number;\n\n\t/**\n\t * If `true`, the rating can't be changed or focused.\n\t */\n\t@Input() disabled = false;\n\n\t/**\n\t * The maximal rating that can be given.\n\t */\n\t@Input() max: number;\n\n\t/**\n\t * The current rating. Could be a decimal value like `3.75`.\n\t */\n\t@Input() rate: number;\n\n\t/**\n\t * If `true`, the rating can't be changed.\n\t */\n\t@Input() readonly: boolean;\n\n\t/**\n\t * If `true`, the rating can be reset to `0` by mouse clicking currently set rating.\n\t */\n\t@Input() resettable: boolean;\n\n\t/**\n\t * The template to override the way each star is displayed.\n\t *\n\t * Alternatively put an `` as the only child of your `` element\n\t */\n\t@Input() starTemplate: TemplateRef;\n\t@ContentChild(TemplateRef, { static: false }) starTemplateFromContent: TemplateRef;\n\n\t/**\n\t * Allows setting a custom rating tabindex.\n\t * If the component is disabled, `tabindex` will still be set to `-1`.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() tabindex: number | string;\n\n\t/**\n\t * Allows to provide a function to set a custom aria-valuetext\n\t *\n\t * @since 14.1.0\n\t */\n\t@Input() ariaValueText(current: number, max: number) {\n\t\treturn `${current} out of ${max}`;\n\t}\n\n\t/**\n\t * An event emitted when the user is hovering over a given rating.\n\t *\n\t * Event payload equals to the rating being hovered over.\n\t */\n\t@Output() hover = new EventEmitter();\n\n\t/**\n\t * An event emitted when the user stops hovering over a given rating.\n\t *\n\t * Event payload equals to the rating of the last item being hovered over.\n\t */\n\t@Output() leave = new EventEmitter();\n\n\t/**\n\t * An event emitted when the rating is changed.\n\t *\n\t * Event payload equals to the newly selected rating.\n\t */\n\t@Output() rateChange = new EventEmitter(true);\n\n\tonChange = (_: any) => {};\n\tonTouched = () => {};\n\n\tconstructor(config: NgbRatingConfig, private _changeDetectorRef: ChangeDetectorRef) {\n\t\tthis.max = config.max;\n\t\tthis.readonly = config.readonly;\n\t\tthis.tabindex = config.tabindex;\n\t}\n\n\tisInteractive(): boolean {\n\t\treturn !this.readonly && !this.disabled;\n\t}\n\n\tenter(value: number): void {\n\t\tif (this.isInteractive()) {\n\t\t\tthis._updateState(value);\n\t\t}\n\t\tthis.hover.emit(value);\n\t}\n\n\thandleBlur() {\n\t\tthis.onTouched();\n\t}\n\n\thandleClick(value: number) {\n\t\tif (this.isInteractive()) {\n\t\t\tthis.update(this.resettable && this.rate === value ? 0 : value);\n\t\t}\n\t}\n\n\thandleKeyDown(event: KeyboardEvent) {\n\t\t/* eslint-disable-next-line deprecation/deprecation */\n\t\tswitch (event.which) {\n\t\t\tcase Key.ArrowDown:\n\t\t\tcase Key.ArrowLeft:\n\t\t\t\tthis.update(this.rate - 1);\n\t\t\t\tbreak;\n\t\t\tcase Key.ArrowUp:\n\t\t\tcase Key.ArrowRight:\n\t\t\t\tthis.update(this.rate + 1);\n\t\t\t\tbreak;\n\t\t\tcase Key.Home:\n\t\t\t\tthis.update(0);\n\t\t\t\tbreak;\n\t\t\tcase Key.End:\n\t\t\t\tthis.update(this.max);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// note 'return' in default case\n\t\tevent.preventDefault();\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes['rate']) {\n\t\t\tthis.update(this.rate);\n\t\t}\n\t\tif (changes['max']) {\n\t\t\tthis._updateMax();\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tthis._setupContexts();\n\t\tthis._updateState(this.rate);\n\t}\n\n\tregisterOnChange(fn: (value: any) => any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => any): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\treset(): void {\n\t\tthis.leave.emit(this.nextRate);\n\t\tthis._updateState(this.rate);\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\tupdate(value: number, internalChange = true): void {\n\t\tconst newRate = getValueInRange(value, this.max, 0);\n\t\tif (this.isInteractive() && this.rate !== newRate) {\n\t\t\tthis.rate = newRate;\n\t\t\tthis.rateChange.emit(this.rate);\n\t\t}\n\t\tif (internalChange) {\n\t\t\tthis.onChange(this.rate);\n\t\t\tthis.onTouched();\n\t\t}\n\t\tthis._updateState(this.rate);\n\t}\n\n\twriteValue(value) {\n\t\tthis.update(value, false);\n\t\tthis._changeDetectorRef.markForCheck();\n\t}\n\n\tprivate _updateState(nextValue: number) {\n\t\tthis.nextRate = nextValue;\n\t\tthis.contexts.forEach(\n\t\t\t(context, index) => (context.fill = Math.round(getValueInRange(nextValue - index, 1, 0) * 100)),\n\t\t);\n\t}\n\n\tprivate _updateMax() {\n\t\tif (this.max > 0) {\n\t\t\tthis._setupContexts();\n\t\t\tthis.update(this.rate);\n\t\t}\n\t}\n\n\tprivate _setupContexts() {\n\t\tthis.contexts = Array.from({ length: this.max }, (v, k) => ({ fill: 0, index: k }));\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbRating } from './rating';\n\nexport { NgbRating } from './rating';\nexport { NgbRatingConfig } from './rating-config';\n\n@NgModule({\n\timports: [NgbRating],\n\texports: [NgbRating],\n})\nexport class NgbRatingModule {}\n","import { NgbScrollSpyOptions, NgbScrollSpyProcessChanges, NgbScrollSpyService } from './scrollspy.service';\nimport { isString } from '../util/util';\n\nexport function toFragmentElement(container: Element | null, id?: string | HTMLElement | null): HTMLElement | null {\n\tif (!container || id == null) {\n\t\treturn null;\n\t}\n\treturn isString(id) ? container.querySelector(`#${CSS.escape(id)}`) : id;\n}\n\nfunction getOrderedFragments(container: Element, fragments: Set): Element[] {\n\tconst selector = [...fragments].map(({ id }) => `#${CSS.escape(id)}`).join(',');\n\treturn Array.from(container.querySelectorAll(selector));\n}\n\nexport const defaultProcessChanges: NgbScrollSpyProcessChanges = (\n\tstate: {\n\t\tentries: IntersectionObserverEntry[];\n\t\trootElement: HTMLElement;\n\t\tfragments: Set;\n\t\tscrollSpy: NgbScrollSpyService;\n\t\toptions: NgbScrollSpyOptions;\n\t},\n\tchangeActive: (active: string) => void,\n\tctx: {\n\t\tinitialized: boolean;\n\t\tgapFragment: Element | null;\n\t\tvisibleFragments: Set;\n\t},\n) => {\n\tconst { rootElement, fragments, scrollSpy, options, entries } = state;\n\tconst orderedFragments = getOrderedFragments(rootElement, fragments);\n\n\tif (!ctx.initialized) {\n\t\tctx.initialized = true;\n\t\tctx.gapFragment = null;\n\t\tctx.visibleFragments = new Set();\n\n\t\t// special case when one of the fragments was pre-selected\n\t\tconst preSelectedFragment = toFragmentElement(rootElement, options?.initialFragment);\n\t\tif (preSelectedFragment) {\n\t\t\tscrollSpy.scrollTo(preSelectedFragment);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tfor (const entry of entries) {\n\t\tconst { isIntersecting, target: fragment } = entry;\n\n\t\t// 1. an entry became visible\n\t\tif (isIntersecting) {\n\t\t\t// if we were in-between two elements, we have to clear it up\n\t\t\tif (ctx.gapFragment) {\n\t\t\t\tctx.visibleFragments.delete(ctx.gapFragment);\n\t\t\t\tctx.gapFragment = null;\n\t\t\t}\n\n\t\t\tctx.visibleFragments.add(fragment);\n\t\t}\n\n\t\t// 2. an entry became invisible\n\t\telse {\n\t\t\tctx.visibleFragments.delete(fragment);\n\n\t\t\t// nothing is visible anymore, but something just was actually\n\t\t\tif (ctx.visibleFragments.size === 0 && scrollSpy.active !== '') {\n\t\t\t\t// 2.1 scrolling down - keeping the same element\n\t\t\t\tif (entry.boundingClientRect.top < entry.rootBounds!.top) {\n\t\t\t\t\tctx.gapFragment = fragment;\n\t\t\t\t\tctx.visibleFragments.add(ctx.gapFragment);\n\t\t\t\t}\n\t\t\t\t// 2.2 scrolling up - getting the previous element\n\t\t\t\telse {\n\t\t\t\t\t// scrolling up and no more fragments above\n\t\t\t\t\tif (fragment === orderedFragments[0]) {\n\t\t\t\t\t\tctx.gapFragment = null;\n\t\t\t\t\t\tctx.visibleFragments.clear();\n\t\t\t\t\t\tchangeActive('');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// getting previous fragment\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst fragmentIndex = orderedFragments.indexOf(fragment);\n\t\t\t\t\t\tctx.gapFragment = orderedFragments[fragmentIndex - 1] || null;\n\t\t\t\t\t\tif (ctx.gapFragment) {\n\t\t\t\t\t\t\tctx.visibleFragments.add(ctx.gapFragment);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// getting the first visible element in the DOM order of the fragments\n\tfor (const fragment of orderedFragments) {\n\t\tif (ctx.visibleFragments.has(fragment)) {\n\t\t\tchangeActive(fragment.id);\n\t\t\tbreak;\n\t\t}\n\t}\n};\n","import { Injectable } from '@angular/core';\nimport { NgbScrollSpyProcessChanges } from './scrollspy.service';\nimport { defaultProcessChanges } from './scrollspy.utils';\n\n/**\n * A configuration service for the [`NgbScrollSpyService`](#/components/scrollspy/api#NgbScrollSpyService).\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 scrollspies used in the application.\n *\n * @since 15.1.0\n */\n@Injectable({ providedIn: 'root' })\nexport class NgbScrollSpyConfig {\n\tscrollBehavior: 'auto' | 'smooth' = 'smooth';\n\tprocessChanges: NgbScrollSpyProcessChanges = defaultProcessChanges;\n}\n","import { ChangeDetectorRef, inject, Injectable, NgZone, OnDestroy, PLATFORM_ID } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { NgbScrollSpyRef } from './scrollspy';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { NgbScrollSpyConfig } from './scrollspy-config';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { toFragmentElement } from './scrollspy.utils';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nconst MATCH_THRESHOLD = 3;\n\nexport type NgbScrollSpyProcessChanges = (\n\tstate: {\n\t\tentries: IntersectionObserverEntry[];\n\t\trootElement: HTMLElement;\n\t\tfragments: Set;\n\t\tscrollSpy: NgbScrollSpyService;\n\t\toptions: NgbScrollSpyOptions;\n\t},\n\tchangeActive: (active: string) => void,\n\tcontext: object,\n) => void;\n\n/**\n * Options passed to the `NgbScrollSpyService.start()` method for scrollspy initialization.\n *\n * It contains a subset of the `IntersectionObserverInit` options, as well additional optional properties\n * like `changeDetectorRef` or `fragments`\n *\n * @since 15.1.0\n */\nexport interface NgbScrollSpyOptions extends Pick {\n\t/**\n\t * An optional reference to the change detector, that should be marked for check when active fragment changes.\n\t * If it is not provided, the service will try to get it from the DI. Ex. when using the `ngbScrollSpy` directive,\n\t * it will mark for check the directive's host component.\n\t *\n\t * `.markForCheck()` will be called on the change detector when the active fragment changes.\n\t */\n\tchangeDetectorRef?: ChangeDetectorRef;\n\n\t/**\n\t * An optional initial fragment to scroll to when the service starts.\n\t */\n\tinitialFragment?: string | HTMLElement;\n\n\t/**\n\t * An optional list of fragments to observe when the service starts.\n\t * You can alternatively use `.addFragment()` to add fragments.\n\t */\n\tfragments?: (string | HTMLElement)[];\n\n\t/**\n\t * An optional function that is called when the `IntersectionObserver` detects a change.\n\t * It is used to determine if currently active fragment should be changed.\n\t *\n\t * You can override this function to provide your own scrollspy logic.\n\t * It provides:\n\t * - a scrollspy `state` (observer entries, root element, fragments, scrollSpy instance, etc.)\n\t * - a `changeActive` function that should be called with the new active fragment\n\t * - a `context` that is persisted between calls\n\t */\n\tprocessChanges?: NgbScrollSpyProcessChanges;\n\n\t/**\n\t * An optional `IntersectionObserver` root element. If not provided, the document element will be used.\n\t */\n\troot?: HTMLElement;\n\n\t/**\n\t * An optional `IntersectionObserver` margin for the root element.\n\t */\n\trootMargin?: string;\n\n\t/**\n\t * An optional default scroll behavior to use when using the `.scrollTo()` method.\n\t */\n\tscrollBehavior?: 'auto' | 'smooth';\n\n\t/**\n\t * An optional `IntersectionObserver` threshold.\n\t */\n\tthreshold?: number | number[];\n}\n\n/**\n * Scroll options passed to the `.scrollTo()` method.\n * An extension of the standard `ScrollOptions` interface.\n *\n * @since 15.1.0\n */\nexport interface NgbScrollToOptions extends ScrollOptions {\n\t/**\n\t * Scroll behavior as defined in the `ScrollOptions` interface.\n\t */\n\tbehavior?: 'auto' | 'smooth';\n}\n\n/**\n * A scrollspy service that allows tracking of elements scrolling in and out of view.\n *\n * It can be instantiated manually, or automatically by the `ngbScrollSpy` directive.\n *\n * @since 15.1.0\n */\n@Injectable({\n\tprovidedIn: 'root',\n})\nexport class NgbScrollSpyService implements NgbScrollSpyRef, OnDestroy {\n\tprivate _observer: IntersectionObserver | null = null;\n\n\tprivate _containerElement: HTMLElement | null = null;\n\tprivate _fragments = new Set();\n\tprivate _preRegisteredFragments = new Set();\n\n\tprivate _active$ = new Subject();\n\tprivate _distinctActive$ = this._active$.pipe(distinctUntilChanged());\n\tprivate _active = '';\n\n\tprivate _config = inject(NgbScrollSpyConfig);\n\tprivate _document = inject(DOCUMENT);\n\tprivate _platformId = inject(PLATFORM_ID);\n\tprivate _scrollBehavior = this._config.scrollBehavior;\n\tprivate _diChangeDetectorRef = inject(ChangeDetectorRef, { optional: true });\n\tprivate _changeDetectorRef = this._diChangeDetectorRef;\n\tprivate _zone = inject(NgZone);\n\n\tconstructor() {\n\t\tthis._distinctActive$.pipe(takeUntilDestroyed()).subscribe((active) => {\n\t\t\tthis._active = active;\n\t\t\tthis._changeDetectorRef?.markForCheck();\n\t\t});\n\t}\n\n\t/**\n\t * Getter for the currently active fragment id. Returns empty string if none.\n\t */\n\tget active(): string {\n\t\treturn this._active;\n\t}\n\n\t/**\n\t * An observable emitting the currently active fragment. Emits empty string if none.\n\t */\n\tget active$(): Observable {\n\t\treturn this._distinctActive$;\n\t}\n\n\t/**\n\t * Starts the scrollspy service and observes specified fragments.\n\t *\n\t * You can specify a list of options to pass, like the root element, initial fragment, scroll behavior, etc.\n\t * See the [`NgbScrollSpyOptions`](#/components/scrollspy/api#NgbScrollSpyOptions) interface for more details.\n\t */\n\tstart(options?: NgbScrollSpyOptions) {\n\t\tif (isPlatformBrowser(this._platformId)) {\n\t\t\tthis._cleanup();\n\n\t\t\tconst { root, rootMargin, scrollBehavior, threshold, fragments, changeDetectorRef, processChanges } = {\n\t\t\t\t...options,\n\t\t\t};\n\t\t\tthis._containerElement = root ?? this._document.documentElement;\n\t\t\tthis._changeDetectorRef = changeDetectorRef ?? this._diChangeDetectorRef;\n\t\t\tthis._scrollBehavior = scrollBehavior ?? this._config.scrollBehavior;\n\t\t\tconst processChangesFn = processChanges ?? this._config.processChanges;\n\n\t\t\tconst context = {};\n\t\t\tthis._observer = new IntersectionObserver(\n\t\t\t\t(entries) =>\n\t\t\t\t\tprocessChangesFn(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tentries,\n\t\t\t\t\t\t\trootElement: this._containerElement!,\n\t\t\t\t\t\t\tfragments: this._fragments,\n\t\t\t\t\t\t\tscrollSpy: this,\n\t\t\t\t\t\t\toptions: { ...options },\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(active: string) => this._active$.next(active),\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\troot: root ?? this._document,\n\t\t\t\t\t...(rootMargin && { rootMargin }),\n\t\t\t\t\t...(threshold && { threshold }),\n\t\t\t\t},\n\t\t\t);\n\n\t\t\t// merging fragments added before starting and the ones passed as options\n\t\t\tfor (const element of [...this._preRegisteredFragments, ...(fragments ?? [])]) {\n\t\t\t\tthis.observe(element);\n\t\t\t}\n\n\t\t\tthis._preRegisteredFragments.clear();\n\t\t}\n\t}\n\n\t/**\n\t * Stops the service and unobserves all fragments.\n\t */\n\tstop() {\n\t\tthis._cleanup();\n\t\tthis._active$.next('');\n\t}\n\n\t/**\n\t * Scrolls to a fragment, it must be known to the service and contained in the root element.\n\t * An id or an element reference can be passed.\n\t *\n\t * [`NgbScrollToOptions`](#/components/scrollspy/api#NgbScrollToOptions) can be passed.\n\t */\n\tscrollTo(fragment: string | HTMLElement, options?: NgbScrollToOptions) {\n\t\tconst { behavior } = { behavior: this._scrollBehavior, ...options };\n\n\t\tif (this._containerElement) {\n\t\t\tconst fragmentElement = toFragmentElement(this._containerElement, fragment);\n\n\t\t\tif (fragmentElement) {\n\t\t\t\tconst heightPx = fragmentElement.offsetTop - this._containerElement.offsetTop;\n\n\t\t\t\tthis._containerElement.scrollTo({ top: heightPx, behavior });\n\n\t\t\t\tlet lastOffset = this._containerElement.scrollTop;\n\t\t\t\tlet matchCounter = 0;\n\n\t\t\t\t// we should update the active section only after scrolling is finished\n\t\t\t\t// and there is no clean way to do it at the moment\n\t\t\t\tconst containerElement = this._containerElement;\n\t\t\t\tthis._zone.runOutsideAngular(() => {\n\t\t\t\t\tconst updateActiveWhenScrollingIsFinished = () => {\n\t\t\t\t\t\tconst sameOffsetAsLastTime = lastOffset === containerElement.scrollTop;\n\n\t\t\t\t\t\tif (sameOffsetAsLastTime) {\n\t\t\t\t\t\t\tmatchCounter++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmatchCounter = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!sameOffsetAsLastTime || (sameOffsetAsLastTime && matchCounter < MATCH_THRESHOLD)) {\n\t\t\t\t\t\t\tlastOffset = containerElement.scrollTop;\n\n\t\t\t\t\t\t\trequestAnimationFrame(updateActiveWhenScrollingIsFinished);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis._zone.run(() => this._active$.next(fragmentElement.id));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\trequestAnimationFrame(updateActiveWhenScrollingIsFinished);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Adds a fragment to observe. It must be contained in the root element.\n\t * An id or an element reference can be passed.\n\t */\n\tobserve(fragment: string | HTMLElement) {\n\t\tif (!this._observer) {\n\t\t\tthis._preRegisteredFragments.add(fragment);\n\t\t\treturn;\n\t\t}\n\n\t\tconst fragmentElement = toFragmentElement(this._containerElement, fragment);\n\n\t\tif (fragmentElement && !this._fragments.has(fragmentElement)) {\n\t\t\tthis._fragments.add(fragmentElement);\n\t\t\tthis._observer.observe(fragmentElement);\n\t\t}\n\t}\n\n\t/**\n\t * Unobserves a fragment.\n\t * An id or an element reference can be passed.\n\t */\n\tunobserve(fragment: string | HTMLElement) {\n\t\tif (!this._observer) {\n\t\t\tthis._preRegisteredFragments.delete(fragment);\n\t\t\treturn;\n\t\t}\n\n\t\tconst fragmentElement = toFragmentElement(this._containerElement, fragment);\n\n\t\tif (fragmentElement) {\n\t\t\tthis._fragments.delete(fragmentElement);\n\n\t\t\t// we're removing and re-adding all current fragments to recompute active one\n\t\t\tthis._observer.disconnect();\n\n\t\t\tfor (const fragment of this._fragments) {\n\t\t\t\tthis._observer.observe(fragment);\n\t\t\t}\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis._cleanup();\n\t}\n\n\tprivate _cleanup() {\n\t\tthis._fragments.clear();\n\t\tthis._observer?.disconnect();\n\t\tthis._changeDetectorRef = this._diChangeDetectorRef;\n\t\tthis._scrollBehavior = this._config.scrollBehavior;\n\t\tthis._observer = null;\n\t\tthis._containerElement = null;\n\t}\n}\n","import {\n\tAfterViewInit,\n\tChangeDetectorRef,\n\tContentChildren,\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tinject,\n\tInput,\n\tOnInit,\n\tOutput,\n\tQueryList,\n} from '@angular/core';\nimport { NgbScrollSpyProcessChanges, NgbScrollSpyService, NgbScrollToOptions } from './scrollspy.service';\nimport { Observable } from 'rxjs';\nimport { isString } from '../util/util';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * Common interface for the scroll spy API.\n *\n * @internal\n */\nexport interface NgbScrollSpyRef {\n\tget active(): string;\n\tget active$(): Observable;\n\tscrollTo(fragment: string | HTMLElement, options?: NgbScrollToOptions): void;\n}\n\n/**\n * A helper directive to that links menu items and fragments together.\n *\n * It will automatically add the `.active` class to the menu item when the associated fragment becomes active.\n *\n * @since 15.1.0\n */\n@Directive({\n\tselector: '[ngbScrollSpyItem]',\n\tstandalone: true,\n\texportAs: 'ngbScrollSpyItem',\n\thost: {\n\t\t'[class.active]': 'isActive()',\n\t\t'(click)': 'scrollTo();',\n\t},\n})\nexport class NgbScrollSpyItem implements OnInit {\n\tprivate _changeDetector = inject(ChangeDetectorRef);\n\tprivate _scrollSpyMenu = inject(NgbScrollSpyMenu, { optional: true });\n\tprivate _scrollSpyAPI: NgbScrollSpyRef = this._scrollSpyMenu ?? inject(NgbScrollSpyService);\n\tprivate _destroyRef = inject(DestroyRef);\n\n\tprivate _isActive = false;\n\n\t/**\n\t * References the scroll spy directive, the id of the associated fragment and the parent menu item.\n\t *\n\t * Can be used like:\n\t * - `ngbScrollSpyItem=\"fragmentId\"`\n\t * - `[ngbScrollSpyItem]=\"scrollSpy\" fragment=\"fragmentId\"\n\t * - `[ngbScrollSpyItem]=\"[scrollSpy, 'fragmentId']\"` parent=\"parentId\"`\n\t * - `[ngbScrollSpyItem]=\"[scrollSpy, 'fragmentId', 'parentId']\"`\n\t *\n\t * As well as together with `[fragment]` and `[parent]` inputs.\n\t */\n\t@Input('ngbScrollSpyItem') set data(data: NgbScrollSpy | string | [NgbScrollSpy, string, string?]) {\n\t\tif (Array.isArray(data)) {\n\t\t\tthis._scrollSpyAPI = data[0];\n\t\t\tthis.fragment = data[1];\n\t\t\tthis.parent ??= data[2];\n\t\t} else if (data instanceof NgbScrollSpy) {\n\t\t\tthis._scrollSpyAPI = data;\n\t\t} else if (isString(data)) {\n\t\t\tthis.fragment = data;\n\t\t}\n\t}\n\n\t/**\n\t * The id of the associated fragment.\n\t */\n\t@Input() fragment: string;\n\n\t/**\n\t * The id of the parent scroll spy menu item.\n\t */\n\t@Input() parent: string | undefined;\n\n\tngOnInit(): void {\n\t\t// if it is not a part of a bigger menu, it should handle activation itself\n\t\tif (!this._scrollSpyMenu) {\n\t\t\tthis._scrollSpyAPI.active$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((active: string) => {\n\t\t\t\tif (active === this.fragment) {\n\t\t\t\t\tthis._activate();\n\t\t\t\t} else {\n\t\t\t\t\tthis._deactivate();\n\t\t\t\t}\n\t\t\t\tthis._changeDetector.markForCheck();\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\t_activate(): void {\n\t\tthis._isActive = true;\n\t\tif (this._scrollSpyMenu) {\n\t\t\tthis._scrollSpyMenu.getItem(this.parent ?? '')?._activate();\n\t\t}\n\t}\n\n\t/**\n\t * @internal\n\t */\n\t_deactivate(): void {\n\t\tthis._isActive = false;\n\t\tif (this._scrollSpyMenu) {\n\t\t\tthis._scrollSpyMenu.getItem(this.parent ?? '')?._deactivate();\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true`, if the associated fragment is active.\n\t */\n\tisActive(): boolean {\n\t\treturn this._isActive;\n\t}\n\n\t/**\n\t * Scrolls to the associated fragment.\n\t */\n\tscrollTo(options?: NgbScrollToOptions): void {\n\t\tthis._scrollSpyAPI.scrollTo(this.fragment, options);\n\t}\n}\n\n/**\n * An optional scroll spy menu directive to build hierarchical menus\n * and simplify the [`NgbScrollSpyItem`](#/components/scrollspy/api#NgbScrollSpyItem) configuration.\n *\n * @since 15.1.0\n */\n@Directive({\n\tselector: '[ngbScrollSpyMenu]',\n\tstandalone: true,\n})\nexport class NgbScrollSpyMenu implements NgbScrollSpyRef, AfterViewInit {\n\tprivate _scrollSpyRef: NgbScrollSpyRef = inject(NgbScrollSpyService);\n\tprivate _destroyRef = inject(DestroyRef);\n\tprivate _map = new Map();\n\tprivate _lastActiveItem: NgbScrollSpyItem | null = null;\n\n\t@ContentChildren(NgbScrollSpyItem, { descendants: true }) private _items: QueryList;\n\n\t@Input('ngbScrollSpyMenu') set scrollSpy(scrollSpy: NgbScrollSpy) {\n\t\tthis._scrollSpyRef = scrollSpy;\n\t}\n\n\tget active(): string {\n\t\treturn this._scrollSpyRef.active;\n\t}\n\tget active$(): Observable {\n\t\treturn this._scrollSpyRef.active$;\n\t}\n\tscrollTo(fragment: string, options?: NgbScrollToOptions): void {\n\t\tthis._scrollSpyRef.scrollTo(fragment, options);\n\t}\n\n\tgetItem(id: string): NgbScrollSpyItem | undefined {\n\t\treturn this._map.get(id);\n\t}\n\n\tngAfterViewInit() {\n\t\tthis._items.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this._rebuildMap());\n\t\tthis._rebuildMap();\n\n\t\tthis._scrollSpyRef.active$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((activeId) => {\n\t\t\tthis._lastActiveItem?._deactivate();\n\t\t\tconst item = this._map.get(activeId);\n\t\t\tif (item) {\n\t\t\t\titem._activate();\n\t\t\t\tthis._lastActiveItem = item;\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _rebuildMap() {\n\t\tthis._map.clear();\n\t\tfor (let item of this._items) {\n\t\t\tthis._map.set(item.fragment, item);\n\t\t}\n\t}\n}\n\n/**\n * A directive to put on a scrollable container.\n *\n * It will instantiate a [`NgbScrollSpyService`](#/components/scrollspy/api#NgbScrollSpyService).\n *\n * @since 15.1.0\n */\n@Directive({\n\tselector: '[ngbScrollSpy]',\n\tstandalone: true,\n\texportAs: 'ngbScrollSpy',\n\thost: {\n\t\ttabindex: '0',\n\t\tstyle: 'overflow-y: auto',\n\t},\n\tproviders: [NgbScrollSpyService],\n})\nexport class NgbScrollSpy implements NgbScrollSpyRef, AfterViewInit {\n\tstatic ngAcceptInputType_scrollBehavior: string;\n\n\tprivate _initialFragment: string | null = null;\n\tprivate _service = inject(NgbScrollSpyService);\n\tprivate _nativeElement = inject>(ElementRef).nativeElement;\n\n\t/**\n\t * A function that is called when the `IntersectionObserver` detects a change.\n\t *\n\t * See [`NgbScrollSpyOptions`](#/components/scrollspy/api#NgbScrollSpyOptions) for more details.\n\t */\n\t@Input() processChanges: NgbScrollSpyProcessChanges;\n\n\t/**\n\t * An `IntersectionObserver` root margin.\n\t */\n\t@Input() rootMargin: string;\n\n\t/**\n\t * The scroll behavior for the `.scrollTo()` method.\n\t */\n\t@Input() scrollBehavior: 'auto' | 'smooth';\n\n\t/**\n\t * An `IntersectionObserver` threshold.\n\t */\n\t@Input() threshold: number | number[];\n\n\t@Input() set active(fragment: string) {\n\t\tthis._initialFragment = fragment;\n\t\tthis.scrollTo(fragment);\n\t}\n\n\t/**\n\t * An event raised when the active section changes.\n\t *\n\t * Payload is the id of the new active section, empty string if none.\n\t */\n\t@Output() activeChange = this._service.active$;\n\n\t/**\n\t * Getter/setter for the currently active fragment id.\n\t */\n\tget active(): string {\n\t\treturn this._service.active;\n\t}\n\n\t/**\n\t * Returns an observable that emits currently active section id.\n\t */\n\tget active$(): Observable {\n\t\treturn this._service.active$;\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis._service.start({\n\t\t\tprocessChanges: this.processChanges,\n\t\t\troot: this._nativeElement,\n\t\t\trootMargin: this.rootMargin,\n\t\t\tthreshold: this.threshold,\n\t\t\t...(this._initialFragment && { initialFragment: this._initialFragment }),\n\t\t});\n\t}\n\n\t/**\n\t * @internal\n\t */\n\t_registerFragment(fragment: NgbScrollSpyFragment): void {\n\t\tthis._service.observe(fragment.id);\n\t}\n\n\t/**\n\t * @internal\n\t */\n\t_unregisterFragment(fragment: NgbScrollSpyFragment): void {\n\t\tthis._service.unobserve(fragment.id);\n\t}\n\n\t/**\n\t * Scrolls to a fragment that is identified by the `ngbScrollSpyFragment` directive.\n\t * An id or an element reference can be passed.\n\t */\n\tscrollTo(fragment: string | HTMLElement, options?: NgbScrollToOptions): void {\n\t\tthis._service.scrollTo(fragment, {\n\t\t\t...(this.scrollBehavior && { behavior: this.scrollBehavior }),\n\t\t\t...options,\n\t\t});\n\t}\n}\n\n/**\n * A directive to put on a fragment observed inside a scrollspy container.\n *\n * @since 15.1.0\n */\n@Directive({\n\tselector: '[ngbScrollSpyFragment]',\n\tstandalone: true,\n\thost: {\n\t\t'[id]': 'id',\n\t},\n})\nexport class NgbScrollSpyFragment implements AfterViewInit {\n\tprivate _destroyRef = inject(DestroyRef);\n\tprivate _scrollSpy = inject(NgbScrollSpy);\n\n\t/**\n\t * The unique id of the fragment.\n\t * It must be a string unique to the document, as it will be set as the id of the element.\n\t */\n\t@Input('ngbScrollSpyFragment') id: string;\n\n\tngAfterViewInit() {\n\t\tthis._scrollSpy._registerFragment(this);\n\t\tthis._destroyRef.onDestroy(() => this._scrollSpy._unregisterFragment(this));\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbScrollSpy, NgbScrollSpyFragment, NgbScrollSpyItem, NgbScrollSpyMenu } from './scrollspy';\n\nexport { NgbScrollSpy, NgbScrollSpyItem, NgbScrollSpyFragment, NgbScrollSpyMenu } from './scrollspy';\nexport { NgbScrollSpyConfig } from './scrollspy-config';\nexport { NgbScrollSpyService, NgbScrollSpyProcessChanges } from './scrollspy.service';\n\n@NgModule({\n\timports: [NgbScrollSpy, NgbScrollSpyItem, NgbScrollSpyFragment, NgbScrollSpyMenu],\n\texports: [NgbScrollSpy, NgbScrollSpyItem, NgbScrollSpyFragment, NgbScrollSpyMenu],\n})\nexport class NgbScrollSpyModule {}\n","import { isNumber, toInteger } from '../util/util';\n\nexport class NgbTime {\n\thour: number;\n\tminute: number;\n\tsecond: number;\n\n\tconstructor(hour?: number, minute?: number, second?: number) {\n\t\tthis.hour = toInteger(hour);\n\t\tthis.minute = toInteger(minute);\n\t\tthis.second = toInteger(second);\n\t}\n\n\tchangeHour(step = 1) {\n\t\tthis.updateHour((isNaN(this.hour) ? 0 : this.hour) + step);\n\t}\n\n\tupdateHour(hour: number) {\n\t\tif (isNumber(hour)) {\n\t\t\tthis.hour = (hour < 0 ? 24 + hour : hour) % 24;\n\t\t} else {\n\t\t\tthis.hour = NaN;\n\t\t}\n\t}\n\n\tchangeMinute(step = 1) {\n\t\tthis.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step);\n\t}\n\n\tupdateMinute(minute: number) {\n\t\tif (isNumber(minute)) {\n\t\t\tthis.minute = minute % 60 < 0 ? 60 + (minute % 60) : minute % 60;\n\t\t\tthis.changeHour(Math.floor(minute / 60));\n\t\t} else {\n\t\t\tthis.minute = NaN;\n\t\t}\n\t}\n\n\tchangeSecond(step = 1) {\n\t\tthis.updateSecond((isNaN(this.second) ? 0 : this.second) + step);\n\t}\n\n\tupdateSecond(second: number) {\n\t\tif (isNumber(second)) {\n\t\t\tthis.second = second < 0 ? 60 + (second % 60) : second % 60;\n\t\t\tthis.changeMinute(Math.floor(second / 60));\n\t\t} else {\n\t\t\tthis.second = NaN;\n\t\t}\n\t}\n\n\tisValid(checkSecs = true) {\n\t\treturn isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n\t}\n\n\ttoString() {\n\t\treturn `${this.hour || 0}:${this.minute || 0}:${this.second || 0}`;\n\t}\n}\n","import { Injectable } from '@angular/core';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbTimepickerConfig {\n\tmeridian = false;\n\tspinners = true;\n\tseconds = false;\n\thourStep = 1;\n\tminuteStep = 1;\n\tsecondStep = 1;\n\tdisabled = false;\n\treadonlyInputs = false;\n\tsize: 'small' | 'medium' | 'large' = 'medium';\n}\n","import { Injectable } from '@angular/core';\nimport { NgbTimeStruct } from './ngb-time-struct';\nimport { isInteger } from '../util/util';\n\nexport function NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n\treturn new NgbTimeStructAdapter();\n}\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 */\n@Injectable({ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY })\nexport abstract class NgbTimeAdapter {\n\t/**\n\t * Converts a user-model time of type `T` to an `NgbTimeStruct` for internal use.\n\t */\n\tabstract fromModel(value: T | null): NgbTimeStruct | null;\n\n\t/**\n\t * Converts an internal `NgbTimeStruct` time to a user-model time of type `T`.\n\t */\n\tabstract toModel(time: NgbTimeStruct | null): T | null;\n}\n\n@Injectable()\nexport class NgbTimeStructAdapter extends NgbTimeAdapter {\n\t/**\n\t * Converts a NgbTimeStruct value into NgbTimeStruct value\n\t */\n\tfromModel(time: NgbTimeStruct | null): NgbTimeStruct | null {\n\t\treturn time && isInteger(time.hour) && isInteger(time.minute)\n\t\t\t? { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null }\n\t\t\t: null;\n\t}\n\n\t/**\n\t * Converts a NgbTimeStruct value into NgbTimeStruct value\n\t */\n\ttoModel(time: NgbTimeStruct | null): NgbTimeStruct | null {\n\t\treturn time && isInteger(time.hour) && isInteger(time.minute)\n\t\t\t? { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null }\n\t\t\t: null;\n\t}\n}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\nimport { FormStyle, getLocaleDayPeriods, TranslationWidth } from '@angular/common';\n\nexport function NGB_TIMEPICKER_I18N_FACTORY(locale) {\n\treturn new NgbTimepickerI18nDefault(locale);\n}\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 */\n@Injectable({ providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [LOCALE_ID] })\nexport abstract class NgbTimepickerI18n {\n\t/**\n\t * Returns the name for the period before midday.\n\t */\n\tabstract getMorningPeriod(): string;\n\n\t/**\n\t * Returns the name for the period after midday.\n\t */\n\tabstract getAfternoonPeriod(): string;\n}\n\n@Injectable()\nexport class NgbTimepickerI18nDefault extends NgbTimepickerI18n {\n\tprivate _periods: Readonly<[string, string]>;\n\n\tconstructor(@Inject(LOCALE_ID) locale: string) {\n\t\tsuper();\n\n\t\tthis._periods = getLocaleDayPeriods(locale, FormStyle.Standalone, TranslationWidth.Narrow);\n\t}\n\n\tgetMorningPeriod(): string {\n\t\treturn this._periods[0];\n\t}\n\n\tgetAfternoonPeriod(): string {\n\t\treturn this._periods[1];\n\t}\n}\n","import {\n\tChangeDetectorRef,\n\tComponent,\n\tforwardRef,\n\tInput,\n\tOnChanges,\n\tSimpleChanges,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { isInteger, isNumber, padNumber, toInteger } from '../util/util';\nimport { NgbTime } from './ngb-time';\nimport { NgbTimepickerConfig } from './timepicker-config';\nimport { NgbTimeAdapter } from './ngb-time-adapter';\nimport { NgbTimepickerI18n } from './timepicker-i18n';\nimport { NgIf } from '@angular/common';\n\nconst FILTER_REGEX = /[^0-9]/g;\n\n/**\n * A directive that helps with wth picking hours, minutes and seconds.\n */\n@Component({\n\texportAs: 'ngbTimepicker',\n\tselector: 'ngb-timepicker',\n\tstandalone: true,\n\timports: [NgIf],\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrls: ['./timepicker.scss'],\n\ttemplate: `\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tIncrement hours\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDecrement hours\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
:
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tIncrement minutes\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDecrement minutes\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
:
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tIncrement seconds\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\tDecrement seconds\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t= 12; else am\" i18n=\"@@ngb.timepicker.PM\">{{\n\t\t\t\t\t\t\ti18n.getAfternoonPeriod()\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t{{ i18n.getMorningPeriod() }}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t`,\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }],\n})\nexport class NgbTimepicker implements ControlValueAccessor, OnChanges {\n\tstatic ngAcceptInputType_size: string;\n\n\tdisabled: boolean;\n\tmodel?: NgbTime;\n\n\tprivate _hourStep: number;\n\tprivate _minuteStep: number;\n\tprivate _secondStep: number;\n\n\t/**\n\t * Whether to display 12H or 24H mode.\n\t */\n\t@Input() meridian: boolean;\n\n\t/**\n\t * If `true`, the spinners above and below inputs are visible.\n\t */\n\t@Input() spinners: boolean;\n\n\t/**\n\t * If `true`, it is possible to select seconds.\n\t */\n\t@Input() seconds: boolean;\n\n\t/**\n\t * The number of hours to add/subtract when clicking hour spinners.\n\t */\n\t@Input()\n\tset hourStep(step: number) {\n\t\tthis._hourStep = isInteger(step) ? step : this._config.hourStep;\n\t}\n\n\tget hourStep(): number {\n\t\treturn this._hourStep;\n\t}\n\n\t/**\n\t * The number of minutes to add/subtract when clicking minute spinners.\n\t */\n\t@Input()\n\tset minuteStep(step: number) {\n\t\tthis._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n\t}\n\n\tget minuteStep(): number {\n\t\treturn this._minuteStep;\n\t}\n\n\t/**\n\t * The number of seconds to add/subtract when clicking second spinners.\n\t */\n\t@Input()\n\tset secondStep(step: number) {\n\t\tthis._secondStep = isInteger(step) ? step : this._config.secondStep;\n\t}\n\n\tget secondStep(): number {\n\t\treturn this._secondStep;\n\t}\n\n\t/**\n\t * If `true`, the timepicker is readonly and can't be changed.\n\t */\n\t@Input() readonlyInputs: boolean;\n\n\t/**\n\t * The size of inputs and buttons.\n\t */\n\t@Input() size: 'small' | 'medium' | 'large';\n\n\tconstructor(\n\t\tprivate readonly _config: NgbTimepickerConfig,\n\t\tprivate _ngbTimeAdapter: NgbTimeAdapter,\n\t\tprivate _cd: ChangeDetectorRef,\n\t\tpublic i18n: NgbTimepickerI18n,\n\t) {\n\t\tthis.meridian = _config.meridian;\n\t\tthis.spinners = _config.spinners;\n\t\tthis.seconds = _config.seconds;\n\t\tthis.hourStep = _config.hourStep;\n\t\tthis.minuteStep = _config.minuteStep;\n\t\tthis.secondStep = _config.secondStep;\n\t\tthis.disabled = _config.disabled;\n\t\tthis.readonlyInputs = _config.readonlyInputs;\n\t\tthis.size = _config.size;\n\t}\n\n\tonChange = (_: any) => {};\n\tonTouched = () => {};\n\n\twriteValue(value) {\n\t\tconst structValue = this._ngbTimeAdapter.fromModel(value);\n\t\tthis.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n\t\tif (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n\t\t\tthis.model.second = 0;\n\t\t}\n\t\tthis._cd.markForCheck();\n\t}\n\n\tregisterOnChange(fn: (value: any) => any): void {\n\t\tthis.onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => any): void {\n\t\tthis.onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis.disabled = isDisabled;\n\t}\n\n\t/**\n\t * Increments the hours by the given step.\n\t */\n\tchangeHour(step: number) {\n\t\tthis.model?.changeHour(step);\n\t\tthis.propagateModelChange();\n\t}\n\n\t/**\n\t * Increments the minutes by the given step.\n\t */\n\tchangeMinute(step: number) {\n\t\tthis.model?.changeMinute(step);\n\t\tthis.propagateModelChange();\n\t}\n\n\t/**\n\t * Increments the seconds by the given step.\n\t */\n\tchangeSecond(step: number) {\n\t\tthis.model?.changeSecond(step);\n\t\tthis.propagateModelChange();\n\t}\n\n\t/**\n\t * Update hours with the new value.\n\t */\n\tupdateHour(newVal: string) {\n\t\tconst isPM = this.model ? this.model.hour >= 12 : false;\n\t\tconst enteredHour = toInteger(newVal);\n\t\tif (this.meridian && ((isPM && enteredHour < 12) || (!isPM && enteredHour === 12))) {\n\t\t\tthis.model?.updateHour(enteredHour + 12);\n\t\t} else {\n\t\t\tthis.model?.updateHour(enteredHour);\n\t\t}\n\t\tthis.propagateModelChange();\n\t}\n\n\t/**\n\t * Update minutes with the new value.\n\t */\n\tupdateMinute(newVal: string) {\n\t\tthis.model?.updateMinute(toInteger(newVal));\n\t\tthis.propagateModelChange();\n\t}\n\n\t/**\n\t * Update seconds with the new value.\n\t */\n\tupdateSecond(newVal: string) {\n\t\tthis.model?.updateSecond(toInteger(newVal));\n\t\tthis.propagateModelChange();\n\t}\n\n\ttoggleMeridian() {\n\t\tif (this.meridian) {\n\t\t\tthis.changeHour(12);\n\t\t}\n\t}\n\n\tformatInput(input: HTMLInputElement) {\n\t\tinput.value = input.value.replace(FILTER_REGEX, '');\n\t}\n\n\tformatHour(value?: number) {\n\t\tif (isNumber(value)) {\n\t\t\tif (this.meridian) {\n\t\t\t\treturn padNumber(value % 12 === 0 ? 12 : value % 12);\n\t\t\t} else {\n\t\t\t\treturn padNumber(value % 24);\n\t\t\t}\n\t\t} else {\n\t\t\treturn padNumber(NaN);\n\t\t}\n\t}\n\n\tformatMinSec(value?: number) {\n\t\treturn padNumber(isNumber(value) ? value : NaN);\n\t}\n\n\thandleBlur() {\n\t\tthis.onTouched();\n\t}\n\n\tget isSmallSize(): boolean {\n\t\treturn this.size === 'small';\n\t}\n\n\tget isLargeSize(): boolean {\n\t\treturn this.size === 'large';\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n\t\t\tthis.model.second = 0;\n\t\t\tthis.propagateModelChange(false);\n\t\t}\n\t}\n\n\tprivate propagateModelChange(touched = true) {\n\t\tif (touched) {\n\t\t\tthis.onTouched();\n\t\t}\n\t\tif (this.model?.isValid(this.seconds)) {\n\t\t\tthis.onChange(\n\t\t\t\tthis._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }),\n\t\t\t);\n\t\t} else {\n\t\t\tthis.onChange(this._ngbTimeAdapter.toModel(null));\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbTimepicker } from './timepicker';\n\nexport { NgbTimepicker } from './timepicker';\nexport { NgbTimepickerConfig } from './timepicker-config';\nexport { NgbTimeStruct } from './ngb-time-struct';\nexport { NgbTimeAdapter } from './ngb-time-adapter';\nexport { NgbTimepickerI18n } from './timepicker-i18n';\n\n@NgModule({\n\timports: [NgbTimepicker],\n\texports: [NgbTimepicker],\n})\nexport class NgbTimepickerModule {}\n","import { NgbTransitionStartFn } from '../util/transition/ngbTransition';\nimport { reflow } from '../util/util';\n\nexport const ngbToastFadeInTransition: NgbTransitionStartFn = (element: HTMLElement, animation: true) => {\n\tconst { classList } = element;\n\n\tif (animation) {\n\t\tclassList.add('fade');\n\t} else {\n\t\tclassList.add('show');\n\t\treturn;\n\t}\n\n\treflow(element);\n\tclassList.add('show', 'showing');\n\n\treturn () => {\n\t\tclassList.remove('showing');\n\t};\n};\n\nexport const ngbToastFadeOutTransition: NgbTransitionStartFn = ({ classList }: HTMLElement) => {\n\tclassList.add('showing');\n\treturn () => {\n\t\tclassList.remove('show', 'showing');\n\t};\n};\n","import { Injectable } from '@angular/core';\nimport { NgbConfig } from '../ngb-config';\n\n/**\n * Interface used to type all toast config options. See `NgbToastConfig`.\n *\n * @since 5.0.0\n */\nexport interface NgbToastOptions {\n\t/**\n\t * Specify if the toast component should emit the `hide()` output\n\t * after a certain `delay` in ms.\n\t */\n\tautohide?: boolean;\n\n\t/**\n\t * Delay in ms after which the `hide()` output should be emitted.\n\t */\n\tdelay?: number;\n\n\t/**\n\t * Type of aria-live attribute to be used.\n\t *\n\t * Could be one of these 2 values (as string):\n\t * - `polite` (default)\n\t * - `alert`\n\t */\n\tariaLive?: 'polite' | 'alert';\n}\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbToastConfig implements NgbToastOptions {\n\tautohide = true;\n\tdelay = 5000;\n\tariaLive: 'polite' | 'alert' = 'polite';\n\n\tprivate _animation: boolean;\n\n\tconstructor(private _ngbConfig: NgbConfig) {}\n\n\tget animation(): boolean {\n\t\treturn this._animation === undefined ? this._ngbConfig.animation : this._animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import {\n\tAfterContentInit,\n\tAttribute,\n\tComponent,\n\tContentChild,\n\tDirective,\n\tEventEmitter,\n\tInput,\n\tOnChanges,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewEncapsulation,\n\tElementRef,\n\tNgZone,\n} from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { NgbToastConfig } from './toast-config';\nimport { ngbRunTransition } from '../util/transition/ngbTransition';\nimport { ngbToastFadeInTransition, ngbToastFadeOutTransition } from './toast-transition';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\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 */\n@Directive({ selector: '[ngbToastHeader]', standalone: true })\nexport class 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 */\n@Component({\n\tselector: 'ngb-toast',\n\texportAs: 'ngbToast',\n\tstandalone: true,\n\timports: [NgIf, NgTemplateOutlet],\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\trole: 'alert',\n\t\t'[attr.aria-live]': 'ariaLive',\n\t\t'aria-atomic': 'true',\n\t\tclass: 'toast',\n\t\t'[class.fade]': 'animation',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t{{ header }}\n\t\t\n\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t
\n\t`,\n\tstyleUrls: ['./toast.scss'],\n})\nexport class NgbToast implements AfterContentInit, OnChanges {\n\t/**\n\t * If `true`, toast opening and closing will be animated.\n\t *\n\t * Animation is triggered only when the `.hide()` or `.show()` functions are called\n\t *\n\t * @since 8.0.0\n\t */\n\t@Input() animation: boolean;\n\n\tprivate _timeoutID;\n\n\t/**\n\t * Delay after which the toast will hide (ms).\n\t * default: `500` (ms) (inherited from NgbToastConfig)\n\t */\n\t@Input() delay: number;\n\n\t/**\n\t * Auto hide the toast after a delay in ms.\n\t * default: `true` (inherited from NgbToastConfig)\n\t */\n\t@Input() autohide: boolean;\n\n\t/**\n\t * Text to be used as toast's header.\n\t * Ignored if a ContentChild template is specified at the same time.\n\t */\n\t@Input() header: string;\n\n\t/**\n\t * A template like `` can be\n\t * used in the projected content to allow markup usage.\n\t */\n\t@ContentChild(NgbToastHeader, { read: TemplateRef, static: true }) contentHeaderTpl: TemplateRef | null = null;\n\n\t/**\n\t * An event fired after the animation triggered by calling `.show()` method has finished.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() shown = new EventEmitter();\n\n\t/**\n\t * An event fired after the animation triggered by calling `.hide()` method has finished.\n\t *\n\t * It can only occur in 2 different scenarios:\n\t * - `autohide` timeout fires\n\t * - user clicks on a closing cross\n\t *\n\t * Additionally this output is purely informative. The toast won't be removed from DOM automatically, it's up\n\t * to the user to take care of that.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() hidden = new EventEmitter();\n\n\tconstructor(\n\t\t@Attribute('aria-live') public ariaLive: string,\n\t\tconfig: NgbToastConfig,\n\t\tprivate _zone: NgZone,\n\t\tprivate _element: ElementRef,\n\t) {\n\t\tif (this.ariaLive == null) {\n\t\t\tthis.ariaLive = config.ariaLive;\n\t\t}\n\t\tthis.delay = config.delay;\n\t\tthis.autohide = config.autohide;\n\t\tthis.animation = config.animation;\n\t}\n\n\tngAfterContentInit() {\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._init();\n\t\t\t\tthis.show();\n\t\t\t});\n\t}\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif ('autohide' in changes) {\n\t\t\tthis._clearTimeout();\n\t\t\tthis._init();\n\t\t}\n\t}\n\n\t/**\n\t * Triggers toast closing programmatically.\n\t *\n\t * The returned observable will emit and be completed once the closing transition has finished.\n\t * If the animations are turned off this happens synchronously.\n\t *\n\t * Alternatively you could listen or subscribe to the `(hidden)` output\n\t *\n\t * @since 8.0.0\n\t */\n\thide(): Observable {\n\t\tthis._clearTimeout();\n\t\tconst transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeOutTransition, {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'stop',\n\t\t});\n\t\ttransition.subscribe(() => {\n\t\t\tthis.hidden.emit();\n\t\t});\n\t\treturn transition;\n\t}\n\n\t/**\n\t * Triggers toast opening programmatically.\n\t *\n\t * The returned observable will emit and be completed once the opening transition has finished.\n\t * If the animations are turned off this happens synchronously.\n\t *\n\t * Alternatively you could listen or subscribe to the `(shown)` output\n\t *\n\t * @since 8.0.0\n\t */\n\tshow(): Observable {\n\t\tconst transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeInTransition, {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'continue',\n\t\t});\n\t\ttransition.subscribe(() => {\n\t\t\tthis.shown.emit();\n\t\t});\n\t\treturn transition;\n\t}\n\n\tprivate _init() {\n\t\tif (this.autohide && !this._timeoutID) {\n\t\t\tthis._timeoutID = setTimeout(() => this.hide(), this.delay);\n\t\t}\n\t}\n\n\tprivate _clearTimeout() {\n\t\tif (this._timeoutID) {\n\t\t\tclearTimeout(this._timeoutID);\n\t\t\tthis._timeoutID = null;\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbToast, NgbToastHeader } from './toast';\n\nexport { NgbToast, NgbToastHeader } from './toast';\nexport { NgbToastConfig, NgbToastOptions } from './toast-config';\n\n@NgModule({\n\timports: [NgbToast, NgbToastHeader],\n\texports: [NgbToast, NgbToastHeader],\n})\nexport class NgbToastModule {}\n","import { Injectable } from '@angular/core';\nimport { PlacementArray } from '../util/positioning';\nimport { NgbConfig } from '../ngb-config';\nimport { Options } from '@popperjs/core';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbTooltipConfig {\n\tautoClose: boolean | 'inside' | 'outside' = true;\n\tplacement: PlacementArray = 'auto';\n\tpopperOptions = (options: Partial) => options;\n\ttriggers = 'hover focus';\n\tcontainer: string;\n\tdisableTooltip = false;\n\ttooltipClass: string;\n\topenDelay = 0;\n\tcloseDelay = 0;\n\n\tprivate _animation: boolean;\n\n\tconstructor(private _ngbConfig: NgbConfig) {}\n\n\tget animation(): boolean {\n\t\treturn this._animation === undefined ? this._ngbConfig.animation : this._animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import {\n\tApplicationRef,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tComponentRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tInject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tRenderer2,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewContainerRef,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nimport { listenToTriggers } from '../util/triggers';\nimport { ngbAutoClose } from '../util/autoclose';\nimport { ngbPositioning, PlacementArray } from '../util/positioning';\nimport { PopupService } from '../util/popup';\nimport { Options } from '@popperjs/core';\nimport { isString } from '../util/util';\n\nimport { NgbTooltipConfig } from './tooltip-config';\nimport { Subscription } from 'rxjs';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'ngb-tooltip-window',\n\tstandalone: true,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\t'[class]': '\"tooltip\" + (tooltipClass ? \" \" + tooltipClass : \"\")',\n\t\t'[class.fade]': 'animation',\n\t\trole: 'tooltip',\n\t\t'[id]': 'id',\n\t},\n\tstyleUrls: ['./tooltip.scss'],\n\ttemplate: `
`,\n})\nexport class NgbTooltipWindow {\n\t@Input() animation: boolean;\n\t@Input() id: string;\n\t@Input() tooltipClass: string;\n}\n\n/**\n * A lightweight and extensible directive for fancy tooltip creation.\n */\n@Directive({ selector: '[ngbTooltip]', standalone: true, exportAs: 'ngbTooltip' })\nexport class NgbTooltip implements OnInit, OnDestroy, OnChanges {\n\tstatic ngAcceptInputType_autoClose: boolean | string;\n\n\t/**\n\t * If `true`, tooltip opening and closing will be animated.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Input() animation: boolean;\n\n\t/**\n\t * Indicates whether the tooltip should be closed on `Escape` key and inside/outside clicks:\n\t *\n\t * * `true` - closes on both outside and inside clicks as well as `Escape` presses\n\t * * `false` - disables the autoClose feature (NB: triggers still apply)\n\t * * `\"inside\"` - closes on inside clicks as well as Escape presses\n\t * * `\"outside\"` - closes on outside clicks (sometimes also achievable through triggers)\n\t * as well as `Escape` presses\n\t *\n\t * @since 3.0.0\n\t */\n\t@Input() autoClose: boolean | 'inside' | 'outside';\n\n\t/**\n\t * The preferred placement of the tooltip, among the [possible values](#/guides/positioning#api).\n\t *\n\t * The default order of preference is `\"auto\"`.\n\t *\n\t * Please see the [positioning overview](#/positioning) for more details.\n\t */\n\t@Input() placement: PlacementArray;\n\n\t/**\n\t * Allows to change default Popper options when positioning the tooltip.\n\t * Receives current popper options and returns modified ones.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() popperOptions: (options: Partial) => Partial;\n\n\t/**\n\t * Specifies events that should trigger the tooltip.\n\t *\n\t * Supports a space separated list of event names.\n\t * For more details see the [triggers demo](#/components/tooltip/examples#triggers).\n\t */\n\t@Input() triggers: string;\n\n\t/**\n\t * A css selector or html element specifying the element the tooltip should be positioned against.\n\t * By default, the element `ngbTooltip` directive is applied to will be set as a target.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() positionTarget?: string | HTMLElement;\n\n\t/**\n\t * A selector specifying the element the tooltip should be appended to.\n\t *\n\t * Currently only supports `\"body\"`.\n\t */\n\t@Input() container: string;\n\n\t/**\n\t * If `true`, tooltip is disabled and won't be displayed.\n\t *\n\t * @since 1.1.0\n\t */\n\t@Input() disableTooltip: boolean;\n\n\t/**\n\t * An optional class applied to the tooltip window element.\n\t *\n\t * @since 3.2.0\n\t */\n\t@Input() tooltipClass: string;\n\n\t/**\n\t * Default template context for `TemplateRef`, can be overridden with `open` method.\n\t *\n\t * @since 15.1.0\n\t */\n\t@Input() tooltipContext: any;\n\n\t/**\n\t * The opening delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n\t *\n\t * @since 4.1.0\n\t */\n\t@Input() openDelay: number;\n\n\t/**\n\t * The closing delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n\t *\n\t * @since 4.1.0\n\t */\n\t@Input() closeDelay: number;\n\n\t/**\n\t * An event emitted when the tooltip opening animation has finished. Contains no payload.\n\t */\n\t@Output() shown = new EventEmitter();\n\n\t/**\n\t * An event emitted when the tooltip closing animation has finished. Contains no payload.\n\t */\n\t@Output() hidden = new EventEmitter();\n\n\tprivate _ngbTooltip: string | TemplateRef | null | undefined;\n\tprivate _ngbTooltipWindowId = `ngb-tooltip-${nextId++}`;\n\tprivate _popupService: PopupService;\n\tprivate _windowRef: ComponentRef | null = null;\n\tprivate _unregisterListenersFn;\n\tprivate _positioning: ReturnType;\n\tprivate _zoneSubscription: Subscription;\n\n\tconstructor(\n\t\tprivate _elementRef: ElementRef,\n\t\tprivate _renderer: Renderer2,\n\t\tinjector: Injector,\n\t\tviewContainerRef: ViewContainerRef,\n\t\tconfig: NgbTooltipConfig,\n\t\tprivate _ngZone: NgZone,\n\t\t@Inject(DOCUMENT) private _document: any,\n\t\tprivate _changeDetector: ChangeDetectorRef,\n\t\tapplicationRef: ApplicationRef,\n\t) {\n\t\tthis.animation = config.animation;\n\t\tthis.autoClose = config.autoClose;\n\t\tthis.placement = config.placement;\n\t\tthis.popperOptions = config.popperOptions;\n\t\tthis.triggers = config.triggers;\n\t\tthis.container = config.container;\n\t\tthis.disableTooltip = config.disableTooltip;\n\t\tthis.tooltipClass = config.tooltipClass;\n\t\tthis.openDelay = config.openDelay;\n\t\tthis.closeDelay = config.closeDelay;\n\t\tthis._popupService = new PopupService(\n\t\t\tNgbTooltipWindow,\n\t\t\tinjector,\n\t\t\tviewContainerRef,\n\t\t\t_renderer,\n\t\t\tthis._ngZone,\n\t\t\tapplicationRef,\n\t\t);\n\t\tthis._positioning = ngbPositioning();\n\t}\n\n\t/**\n\t * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n\t *\n\t * If the content if falsy, the tooltip won't open.\n\t */\n\t@Input()\n\tset ngbTooltip(value: string | TemplateRef | null | undefined) {\n\t\tthis._ngbTooltip = value;\n\t\tif (!value && this._windowRef) {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tget ngbTooltip() {\n\t\treturn this._ngbTooltip;\n\t}\n\n\t/**\n\t * Opens the tooltip.\n\t *\n\t * This is considered to be a \"manual\" triggering.\n\t * The `context` is an optional value to be injected into the tooltip template when it is created.\n\t */\n\topen(context?: any) {\n\t\tif (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n\t\t\tconst { windowRef, transition$ } = this._popupService.open(\n\t\t\t\tthis._ngbTooltip,\n\t\t\t\tcontext ?? this.tooltipContext,\n\t\t\t\tthis.animation,\n\t\t\t);\n\t\t\tthis._windowRef = windowRef;\n\t\t\tthis._windowRef.setInput('animation', this.animation);\n\t\t\tthis._windowRef.setInput('tooltipClass', this.tooltipClass);\n\t\t\tthis._windowRef.setInput('id', this._ngbTooltipWindowId);\n\n\t\t\tthis._renderer.setAttribute(this._getPositionTargetElement(), 'aria-describedby', this._ngbTooltipWindowId);\n\n\t\t\tif (this.container === 'body') {\n\t\t\t\tthis._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n\t\t\t}\n\n\t\t\t// We need to detect changes, because we don't know where .open() might be called from.\n\t\t\t// Ex. opening tooltip from one of lifecycle hooks that run after the CD\n\t\t\t// (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n\t\t\tthis._windowRef.changeDetectorRef.detectChanges();\n\n\t\t\t// We need to mark for check, because tooltip won't work inside the OnPush component.\n\t\t\t// Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n\t\t\t// inside the template of an OnPush component and we change the tooltip from\n\t\t\t// open -> closed, the expression in question won't be updated unless we explicitly\n\t\t\t// mark the parent component to be checked.\n\t\t\tthis._windowRef.changeDetectorRef.markForCheck();\n\n\t\t\t// Setting up popper and scheduling updates when zone is stable\n\t\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\t\tthis._positioning.createPopper({\n\t\t\t\t\thostElement: this._getPositionTargetElement(),\n\t\t\t\t\ttargetElement: this._windowRef!.location.nativeElement,\n\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\tappendToBody: this.container === 'body',\n\t\t\t\t\tbaseClass: 'bs-tooltip',\n\t\t\t\t\tupdatePopperOptions: (options) => this.popperOptions(options),\n\t\t\t\t});\n\n\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\t// This update is required for correct arrow placement\n\t\t\t\t\tthis._positioning.update();\n\t\t\t\t\tthis._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tngbAutoClose(\n\t\t\t\tthis._ngZone,\n\t\t\t\tthis._document,\n\t\t\t\tthis.autoClose,\n\t\t\t\t() => this.close(),\n\t\t\t\tthis.hidden,\n\t\t\t\t[this._windowRef.location.nativeElement],\n\t\t\t\t[this._elementRef.nativeElement],\n\t\t\t);\n\n\t\t\ttransition$.subscribe(() => this.shown.emit());\n\t\t}\n\t}\n\n\t/**\n\t * Closes the tooltip.\n\t *\n\t * This is considered to be a \"manual\" triggering of the tooltip.\n\t */\n\tclose(animation = this.animation): void {\n\t\tif (this._windowRef != null) {\n\t\t\tthis._renderer.removeAttribute(this._getPositionTargetElement(), 'aria-describedby');\n\t\t\tthis._popupService.close(animation).subscribe(() => {\n\t\t\t\tthis._windowRef = null;\n\t\t\t\tthis._positioning.destroy();\n\t\t\t\tthis._zoneSubscription?.unsubscribe();\n\t\t\t\tthis.hidden.emit();\n\t\t\t\tthis._changeDetector.markForCheck();\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the tooltip.\n\t *\n\t * This is considered to be a \"manual\" triggering of the tooltip.\n\t */\n\ttoggle(): void {\n\t\tif (this._windowRef) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\t/**\n\t * Returns `true`, if the popover is currently shown.\n\t */\n\tisOpen(): boolean {\n\t\treturn this._windowRef != null;\n\t}\n\n\tngOnInit() {\n\t\tthis._unregisterListenersFn = listenToTriggers(\n\t\t\tthis._elementRef.nativeElement,\n\t\t\tthis.triggers,\n\t\t\tthis.isOpen.bind(this),\n\t\t\tthis.open.bind(this),\n\t\t\tthis.close.bind(this),\n\t\t\t+this.openDelay,\n\t\t\t+this.closeDelay,\n\t\t);\n\t}\n\n\tngOnChanges({ tooltipClass }: SimpleChanges) {\n\t\tif (tooltipClass && this.isOpen()) {\n\t\t\tthis._windowRef!.instance.tooltipClass = tooltipClass.currentValue;\n\t\t}\n\t}\n\n\tngOnDestroy() {\n\t\tthis.close(false);\n\t\t// This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n\t\t// under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n\t\tthis._unregisterListenersFn?.();\n\t}\n\n\tprivate _getPositionTargetElement(): HTMLElement {\n\t\treturn (\n\t\t\t(isString(this.positionTarget) ? this._document.querySelector(this.positionTarget) : this.positionTarget) ||\n\t\t\tthis._elementRef.nativeElement\n\t\t);\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbTooltip } from './tooltip';\n\nexport { NgbTooltipConfig } from './tooltip-config';\nexport { NgbTooltip } from './tooltip';\nexport { Placement } from '../util/positioning';\n\n@NgModule({\n\timports: [NgbTooltip],\n\texports: [NgbTooltip],\n})\nexport class NgbTooltipModule {}\n","import { Component, Input, OnChanges, ChangeDetectionStrategy, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { regExpEscape, toString, removeAccents } from '../util/util';\nimport { NgFor, NgIf } from '@angular/common';\n\n/**\n * A component that helps with text highlighting.\n *\n * It 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 */\n@Component({\n\tselector: 'ngb-highlight',\n\tstandalone: true,\n\timports: [NgIf, NgFor],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\ttemplate:\n\t\t`` +\n\t\t`{{part}}{{part}}` +\n\t\t``, // template needs to be formatted in a certain way so we don't add empty text nodes\n\tstyleUrls: ['./highlight.scss'],\n})\nexport class NgbHighlight implements OnChanges {\n\tparts: string[];\n\n\t/**\n\t * The CSS class for `` elements wrapping the `term` inside the `result`.\n\t */\n\t@Input() highlightClass = 'ngb-highlight';\n\n\t/**\n\t * The text highlighting is added to.\n\t *\n\t * If the `term` is found inside this text, it will be highlighted.\n\t * If the `term` contains array then all the items from it will be highlighted inside the text.\n\t */\n\t@Input({ required: true }) result?: string | null;\n\n\t/**\n\t * The term or array of terms to be highlighted.\n\t * Since version `v4.2.0` term could be a `string[]`\n\t */\n\t@Input({ required: true }) term: string | readonly string[];\n\n\t/**\n\t * Boolean option to determine if the highlighting should be sensitive to accents or not.\n\t *\n\t * This feature is only available for browsers that implement the `String.normalize` function\n\t * (typically not Internet Explorer).\n\t * If you want to use this feature in a browser that does not implement `String.normalize`,\n\t * you will have to include a polyfill in your application (`unorm` for example).\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() accentSensitive = true;\n\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (!this.accentSensitive && !String.prototype.normalize) {\n\t\t\tconsole.warn(\n\t\t\t\t'The `accentSensitive` input in `ngb-highlight` cannot be set to `false` in a browser ' +\n\t\t\t\t\t'that does not implement the `String.normalize` function. ' +\n\t\t\t\t\t'You will have to include a polyfill in your application to use this feature in the current browser.',\n\t\t\t);\n\t\t\tthis.accentSensitive = true;\n\t\t}\n\t\tconst result = toString(this.result);\n\n\t\tconst terms = Array.isArray(this.term) ? this.term : [this.term];\n\t\tconst prepareTerm = (term) => (this.accentSensitive ? term : removeAccents(term));\n\t\tconst escapedTerms = terms.map((term) => regExpEscape(prepareTerm(toString(term)))).filter((term) => term);\n\t\tconst toSplit = this.accentSensitive ? result : removeAccents(result);\n\n\t\tconst parts = escapedTerms.length ? toSplit.split(new RegExp(`(${escapedTerms.join('|')})`, 'gmi')) : [result];\n\n\t\tif (this.accentSensitive) {\n\t\t\tthis.parts = parts;\n\t\t} else {\n\t\t\tlet offset = 0;\n\t\t\tthis.parts = parts.map((part) => result.substring(offset, (offset += part.length)));\n\t\t}\n\t}\n}\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport { toString } from '../util/util';\nimport { NgbHighlight } from './highlight';\nimport { NgFor, NgTemplateOutlet } from '@angular/common';\n\n/**\n * The context for the typeahead result template in case you want to override the default one.\n */\nexport interface ResultTemplateContext {\n\t/**\n\t * Your typeahead result item.\n\t */\n\tresult: any;\n\n\t/**\n\t * Search term from the `` used to get current result.\n\t */\n\tterm: string;\n\n\t/**\n\t * The function which transforms the result into a string\n\t */\n\tformatter: (result: any) => string;\n}\n\n@Component({\n\tselector: 'ngb-typeahead-window',\n\texportAs: 'ngbTypeaheadWindow',\n\tstandalone: true,\n\timports: [NgbHighlight, NgFor, NgTemplateOutlet],\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\t'(mousedown)': '$event.preventDefault()',\n\t\t'[class]': '\"dropdown-menu show\" + (popupClass ? \" \" + popupClass : \"\")',\n\t\trole: 'listbox',\n\t\t'[id]': 'id',\n\t},\n\ttemplate: `\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t`,\n})\nexport class NgbTypeaheadWindow implements OnInit {\n\tactiveIdx = 0;\n\n\t/**\n\t * The id for the typeahead window. The id should be unique and the same\n\t * as the associated typeahead's id.\n\t */\n\t@Input() id: string;\n\n\t/**\n\t * Flag indicating if the first row should be active initially\n\t */\n\t@Input() focusFirst = true;\n\n\t/**\n\t * Typeahead match results to be displayed\n\t */\n\t@Input() results;\n\n\t/**\n\t * Search term used to get current results\n\t */\n\t@Input() term: string;\n\n\t/**\n\t * A function used to format a given result before display. This function should return a formatted string without any\n\t * HTML markup\n\t */\n\t@Input() formatter = toString;\n\n\t/**\n\t * A template to override a matching result default display\n\t */\n\t@Input() resultTemplate: TemplateRef;\n\n\t/**\n\t * A custom class to append to the typeahead window\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() popupClass: string;\n\n\t/**\n\t * Event raised when user selects a particular result row\n\t */\n\t@Output('select') selectEvent = new EventEmitter();\n\n\t@Output('activeChange') activeChangeEvent = new EventEmitter();\n\n\thasActive() {\n\t\treturn this.activeIdx > -1 && this.activeIdx < this.results.length;\n\t}\n\n\tgetActive() {\n\t\treturn this.results[this.activeIdx];\n\t}\n\n\tmarkActive(activeIdx: number) {\n\t\tthis.activeIdx = activeIdx;\n\t\tthis._activeChanged();\n\t}\n\n\tnext() {\n\t\tif (this.activeIdx === this.results.length - 1) {\n\t\t\tthis.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n\t\t} else {\n\t\t\tthis.activeIdx++;\n\t\t}\n\t\tthis._activeChanged();\n\t}\n\n\tprev() {\n\t\tif (this.activeIdx < 0) {\n\t\t\tthis.activeIdx = this.results.length - 1;\n\t\t} else if (this.activeIdx === 0) {\n\t\t\tthis.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n\t\t} else {\n\t\t\tthis.activeIdx--;\n\t\t}\n\t\tthis._activeChanged();\n\t}\n\n\tresetActive() {\n\t\tthis.activeIdx = this.focusFirst ? 0 : -1;\n\t\tthis._activeChanged();\n\t}\n\n\tselect(item) {\n\t\tthis.selectEvent.emit(item);\n\t}\n\n\tngOnInit() {\n\t\tthis.resetActive();\n\t}\n\n\tprivate _activeChanged() {\n\t\tthis.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n\t}\n}\n","import { Injectable } from '@angular/core';\nimport { PlacementArray } from '../util/positioning';\nimport { Options } from '@popperjs/core';\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 */\n@Injectable({ providedIn: 'root' })\nexport class NgbTypeaheadConfig {\n\tcontainer;\n\teditable = true;\n\tfocusFirst = true;\n\tselectOnExact = false;\n\tshowHint = false;\n\tplacement: PlacementArray = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n\tpopperOptions = (options: Partial) => options;\n}\n","import { Injectable, Inject, InjectionToken, OnDestroy } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n// usefulness (and default value) of delay documented in Material's CDK\n// https://github.com/angular/material2/blob/6405da9b8e8532a7e5c854c920ee1815c275d734/src/cdk/a11y/live-announcer/live-announcer.ts#L50\nexport type ARIA_LIVE_DELAY_TYPE = number | null;\nexport const ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', {\n\tprovidedIn: 'root',\n\tfactory: ARIA_LIVE_DELAY_FACTORY,\n});\nexport function ARIA_LIVE_DELAY_FACTORY(): number {\n\treturn 100;\n}\n\nfunction getLiveElement(document: any, lazyCreate = false): HTMLElement | null {\n\tlet element = document.body.querySelector('#ngb-live') as HTMLElement;\n\n\tif (element == null && lazyCreate) {\n\t\telement = document.createElement('div');\n\n\t\telement.setAttribute('id', 'ngb-live');\n\t\telement.setAttribute('aria-live', 'polite');\n\t\telement.setAttribute('aria-atomic', 'true');\n\n\t\telement.classList.add('visually-hidden');\n\n\t\tdocument.body.appendChild(element);\n\t}\n\n\treturn element;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class Live implements OnDestroy {\n\tconstructor(@Inject(DOCUMENT) private _document: any, @Inject(ARIA_LIVE_DELAY) private _delay: any) {}\n\n\tngOnDestroy() {\n\t\tconst element = getLiveElement(this._document);\n\t\tif (element) {\n\t\t\t// if exists, it will always be attached to the \n\t\t\telement.parentElement!.removeChild(element);\n\t\t}\n\t}\n\n\tsay(message: string) {\n\t\tconst element = getLiveElement(this._document, true);\n\t\tconst delay = this._delay;\n\n\t\tif (element != null) {\n\t\t\telement.textContent = '';\n\t\t\tconst setText = () => (element.textContent = message);\n\t\t\tif (delay === null) {\n\t\t\t\tsetText();\n\t\t\t} else {\n\t\t\t\tsetTimeout(setText, delay);\n\t\t\t}\n\t\t}\n\t}\n}\n","import {\n\tApplicationRef,\n\tChangeDetectorRef,\n\tComponentRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tforwardRef,\n\tInject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tRenderer2,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DOCUMENT } from '@angular/common';\nimport { BehaviorSubject, fromEvent, Observable, of, OperatorFunction, Subject, Subscription } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\n\nimport { Live } from '../util/accessibility/live';\nimport { ngbAutoClose } from '../util/autoclose';\nimport { Key } from '../util/key';\nimport { PopupService } from '../util/popup';\nimport { ngbPositioning, PlacementArray } from '../util/positioning';\nimport { Options } from '@popperjs/core';\nimport { isDefined, toString } from '../util/util';\n\nimport { NgbTypeaheadConfig } from './typeahead-config';\nimport { NgbTypeaheadWindow, ResultTemplateContext } from './typeahead-window';\nimport { addPopperOffset } from '../util/positioning-util';\n\n/**\n * An event emitted right before an item is selected from the result list.\n */\nexport interface NgbTypeaheadSelectItemEvent {\n\t/**\n\t * The item from the result list about to be selected.\n\t */\n\titem: T;\n\n\t/**\n\t * Calling this function will prevent item selection from happening.\n\t */\n\tpreventDefault: () => void;\n}\n\nlet nextWindowId = 0;\n\n/**\n * A directive providing a simple way of creating powerful typeaheads from any text input.\n */\n@Directive({\n\tselector: 'input[ngbTypeahead]',\n\texportAs: 'ngbTypeahead',\n\tstandalone: true,\n\thost: {\n\t\t'(blur)': 'handleBlur()',\n\t\t'[class.open]': 'isPopupOpen()',\n\t\t'(keydown)': 'handleKeyDown($event)',\n\t\t'[autocomplete]': 'autocomplete',\n\t\tautocapitalize: 'off',\n\t\tautocorrect: 'off',\n\t\trole: 'combobox',\n\t\t'[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n\t\t'[attr.aria-activedescendant]': 'activeDescendant',\n\t\t'[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n\t\t'[attr.aria-expanded]': 'isPopupOpen()',\n\t},\n\tproviders: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }],\n})\nexport class NgbTypeahead implements ControlValueAccessor, OnInit, OnChanges, OnDestroy {\n\tprivate _popupService: PopupService;\n\tprivate _subscription: Subscription | null = null;\n\tprivate _closed$ = new Subject();\n\tprivate _inputValueBackup: string | null = null;\n\tprivate _inputValueForSelectOnExact: string | null = null;\n\tprivate _valueChanges: Observable;\n\tprivate _resubscribeTypeahead: BehaviorSubject;\n\tprivate _windowRef: ComponentRef | null = null;\n\tprivate _zoneSubscription: Subscription;\n\tprivate _positioning: ReturnType;\n\n\t/**\n\t * The value for the `autocomplete` attribute for the `` element.\n\t *\n\t * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n\t *\n\t * @since 2.1.0\n\t */\n\t@Input() autocomplete = 'off';\n\n\t/**\n\t * A selector specifying the element the typeahead popup will be appended to.\n\t *\n\t * Currently only supports `\"body\"`.\n\t */\n\t@Input() container: string;\n\n\t/**\n\t * If `true`, model values will not be restricted only to items selected from the popup.\n\t */\n\t@Input() editable: boolean;\n\n\t/**\n\t * If `true`, the first item in the result list will always stay focused while typing.\n\t */\n\t@Input() focusFirst: boolean;\n\n\t/**\n\t * The function that converts an item from the result list to a `string` to display in the `` field.\n\t *\n\t * It is called when the user selects something in the popup or the model value changes, so the input needs to\n\t * be updated.\n\t */\n\t@Input() inputFormatter: (item: any) => string;\n\n\t/**\n\t * The function that converts a stream of text values from the `` element to the stream of the array of items\n\t * to display in the typeahead popup.\n\t *\n\t * If the resulting observable emits a non-empty array - the popup will be shown. If it emits an empty array - the\n\t * popup will be closed.\n\t *\n\t * See the [basic example](#/components/typeahead/examples#basic) for more details.\n\t *\n\t * Note that the `this` argument is `undefined` so you need to explicitly bind it to a desired \"this\" target.\n\t */\n\t@Input() ngbTypeahead: OperatorFunction | null | undefined;\n\n\t/**\n\t * The function that converts an item from the result list to a `string` to display in the popup.\n\t *\n\t * Must be provided, if your `ngbTypeahead` returns something other than `Observable`.\n\t *\n\t * Alternatively for more complex markup in the popup you should use `resultTemplate`.\n\t */\n\t@Input() resultFormatter: (item: any) => string;\n\n\t/**\n\t * The template to override the way resulting items are displayed in the popup.\n\t *\n\t * See the [ResultTemplateContext](#/components/typeahead/api#ResultTemplateContext) for the template context.\n\t *\n\t * Also see the [template for results demo](#/components/typeahead/examples#template) for more details.\n\t */\n\t@Input() resultTemplate: TemplateRef;\n\n\t/**\n\t * If `true`, automatically selects the item when it is the only one that exactly matches the user input\n\t *\n\t * @since 14.2.0\n\t */\n\t@Input() selectOnExact: boolean;\n\n\t/**\n\t * If `true`, will show the hint in the `` when an item in the result list matches.\n\t */\n\t@Input() showHint: boolean;\n\n\t/**\n\t * The preferred placement of the typeahead, among the [possible values](#/guides/positioning#api).\n\t *\n\t * The default order of preference is `\"bottom-start bottom-end top-start top-end\"`\n\t *\n\t * Please see the [positioning overview](#/positioning) for more details.\n\t */\n\t@Input() placement: PlacementArray = 'bottom-start';\n\n\t/**\n\t * Allows to change default Popper options when positioning the typeahead.\n\t * Receives current popper options and returns modified ones.\n\t *\n\t * @since 13.1.0\n\t */\n\t@Input() popperOptions: (options: Partial) => Partial;\n\n\t/**\n\t * A custom class to append to the typeahead popup window\n\t *\n\t * Accepts a string containing CSS class to be applied on the `ngb-typeahead-window`.\n\t *\n\t * This can be used to provide instance-specific styling, ex. you can override popup window `z-index`\n\t *\n\t * @since 9.1.0\n\t */\n\t@Input() popupClass: string;\n\n\t/**\n\t * An event emitted right before an item is selected from the result list.\n\t *\n\t * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n\t */\n\t@Output() selectItem = new EventEmitter();\n\n\tactiveDescendant: string | null = null;\n\tpopupId = `ngb-typeahead-${nextWindowId++}`;\n\n\tprivate _onTouched = () => {};\n\tprivate _onChange = (_: any) => {};\n\n\tconstructor(\n\t\tprivate _elementRef: ElementRef,\n\t\tviewContainerRef: ViewContainerRef,\n\t\tprivate _renderer: Renderer2,\n\t\tinjector: Injector,\n\t\tconfig: NgbTypeaheadConfig,\n\t\tngZone: NgZone,\n\t\tprivate _live: Live,\n\t\t@Inject(DOCUMENT) private _document: any,\n\t\tprivate _ngZone: NgZone,\n\t\tprivate _changeDetector: ChangeDetectorRef,\n\t\tapplicationRef: ApplicationRef,\n\t) {\n\t\tthis.container = config.container;\n\t\tthis.editable = config.editable;\n\t\tthis.focusFirst = config.focusFirst;\n\t\tthis.selectOnExact = config.selectOnExact;\n\t\tthis.showHint = config.showHint;\n\t\tthis.placement = config.placement;\n\t\tthis.popperOptions = config.popperOptions;\n\n\t\tthis._valueChanges = fromEvent(_elementRef.nativeElement, 'input').pipe(\n\t\t\tmap(($event) => ($event.target as HTMLInputElement).value),\n\t\t);\n\n\t\tthis._resubscribeTypeahead = new BehaviorSubject(null);\n\n\t\tthis._popupService = new PopupService(\n\t\t\tNgbTypeaheadWindow,\n\t\t\tinjector,\n\t\t\tviewContainerRef,\n\t\t\t_renderer,\n\t\t\tthis._ngZone,\n\t\t\tapplicationRef,\n\t\t);\n\t\tthis._positioning = ngbPositioning();\n\t}\n\n\tngOnInit(): void {\n\t\tthis._subscribeToUserInput();\n\t}\n\n\tngOnChanges({ ngbTypeahead }: SimpleChanges): void {\n\t\tif (ngbTypeahead && !ngbTypeahead.firstChange) {\n\t\t\tthis._unsubscribeFromUserInput();\n\t\t\tthis._subscribeToUserInput();\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._closePopup();\n\t\tthis._unsubscribeFromUserInput();\n\t}\n\n\tregisterOnChange(fn: (value: any) => any): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: () => any): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\twriteValue(value) {\n\t\tthis._writeInputValue(this._formatItemForInput(value));\n\t\tif (this.showHint) {\n\t\t\tthis._inputValueBackup = value;\n\t\t}\n\t}\n\n\tsetDisabledState(isDisabled: boolean): void {\n\t\tthis._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n\t}\n\n\t/**\n\t * Dismisses typeahead popup window\n\t */\n\tdismissPopup() {\n\t\tif (this.isPopupOpen()) {\n\t\t\tthis._resubscribeTypeahead.next(null);\n\t\t\tthis._closePopup();\n\t\t\tif (this.showHint && this._inputValueBackup !== null) {\n\t\t\t\tthis._writeInputValue(this._inputValueBackup);\n\t\t\t}\n\t\t\tthis._changeDetector.markForCheck();\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if the typeahead popup window is displayed\n\t */\n\tisPopupOpen() {\n\t\treturn this._windowRef != null;\n\t}\n\n\thandleBlur() {\n\t\tthis._resubscribeTypeahead.next(null);\n\t\tthis._onTouched();\n\t}\n\n\thandleKeyDown(event: KeyboardEvent) {\n\t\tif (!this.isPopupOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\t/* eslint-disable-next-line deprecation/deprecation */\n\t\tswitch (event.which) {\n\t\t\tcase Key.ArrowDown:\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis._windowRef!.instance.next();\n\t\t\t\tthis._showHint();\n\t\t\t\tbreak;\n\t\t\tcase Key.ArrowUp:\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis._windowRef!.instance.prev();\n\t\t\t\tthis._showHint();\n\t\t\t\tbreak;\n\t\t\tcase Key.Enter:\n\t\t\tcase Key.Tab: {\n\t\t\t\tconst result = this._windowRef!.instance.getActive();\n\t\t\t\tif (isDefined(result)) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tthis._selectResult(result);\n\t\t\t\t}\n\t\t\t\tthis._closePopup();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _openPopup() {\n\t\tif (!this.isPopupOpen()) {\n\t\t\tthis._inputValueBackup = this._elementRef.nativeElement.value;\n\t\t\tconst { windowRef } = this._popupService.open();\n\t\t\tthis._windowRef = windowRef;\n\t\t\tthis._windowRef.setInput('id', this.popupId);\n\t\t\tthis._windowRef.setInput('popupClass', this.popupClass);\n\t\t\tthis._windowRef.instance.selectEvent.subscribe((result: any) => this._selectResultClosePopup(result));\n\t\t\tthis._windowRef.instance.activeChangeEvent.subscribe((activeId: string) => (this.activeDescendant = activeId));\n\n\t\t\tif (this.container === 'body') {\n\t\t\t\tthis._renderer.setStyle(this._windowRef.location.nativeElement, 'z-index', '1055');\n\t\t\t\tthis._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n\t\t\t}\n\n\t\t\tthis._changeDetector.markForCheck();\n\n\t\t\t// Setting up popper and scheduling updates when zone is stable\n\t\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\t\tif (this._windowRef) {\n\t\t\t\t\tthis._positioning.createPopper({\n\t\t\t\t\t\thostElement: this._elementRef.nativeElement,\n\t\t\t\t\t\ttargetElement: this._windowRef.location.nativeElement,\n\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\tappendToBody: this.container === 'body',\n\t\t\t\t\t\tupdatePopperOptions: (options) => this.popperOptions(addPopperOffset([0, 2])(options)),\n\t\t\t\t\t});\n\n\t\t\t\t\tthis._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tngbAutoClose(this._ngZone, this._document, 'outside', () => this.dismissPopup(), this._closed$, [\n\t\t\t\tthis._elementRef.nativeElement,\n\t\t\t\tthis._windowRef.location.nativeElement,\n\t\t\t]);\n\t\t}\n\t}\n\n\tprivate _closePopup() {\n\t\tthis._popupService.close().subscribe(() => {\n\t\t\tthis._positioning.destroy();\n\t\t\tthis._zoneSubscription?.unsubscribe();\n\t\t\tthis._closed$.next();\n\t\t\tthis._windowRef = null;\n\t\t\tthis.activeDescendant = null;\n\t\t});\n\t}\n\n\tprivate _selectResult(result: any) {\n\t\tlet defaultPrevented = false;\n\t\tthis.selectItem.emit({\n\t\t\titem: result,\n\t\t\tpreventDefault: () => {\n\t\t\t\tdefaultPrevented = true;\n\t\t\t},\n\t\t});\n\t\tthis._resubscribeTypeahead.next(null);\n\n\t\tif (!defaultPrevented) {\n\t\t\tthis.writeValue(result);\n\t\t\tthis._onChange(result);\n\t\t}\n\t}\n\n\tprivate _selectResultClosePopup(result: any) {\n\t\tthis._selectResult(result);\n\t\tthis._closePopup();\n\t}\n\n\tprivate _showHint() {\n\t\tif (this.showHint && this._windowRef?.instance.hasActive() && this._inputValueBackup != null) {\n\t\t\tconst userInputLowerCase = this._inputValueBackup.toLowerCase();\n\t\t\tconst formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n\n\t\t\tif (userInputLowerCase === formattedVal.substring(0, this._inputValueBackup.length).toLowerCase()) {\n\t\t\t\tthis._writeInputValue(this._inputValueBackup + formattedVal.substring(this._inputValueBackup.length));\n\t\t\t\tthis._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [\n\t\t\t\t\tthis._inputValueBackup.length,\n\t\t\t\t\tformattedVal.length,\n\t\t\t\t]);\n\t\t\t} else {\n\t\t\t\tthis._writeInputValue(formattedVal);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _formatItemForInput(item: any): string {\n\t\treturn item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n\t}\n\n\tprivate _writeInputValue(value: string): void {\n\t\tthis._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\n\t}\n\n\tprivate _subscribeToUserInput(): void {\n\t\tconst results$ = this._valueChanges.pipe(\n\t\t\ttap((value) => {\n\t\t\t\tthis._inputValueBackup = this.showHint ? value : null;\n\t\t\t\tthis._inputValueForSelectOnExact = this.selectOnExact ? value : null;\n\t\t\t\tthis._onChange(this.editable ? value : undefined);\n\t\t\t}),\n\t\t\tthis.ngbTypeahead ? this.ngbTypeahead : () => of([]),\n\t\t);\n\n\t\tthis._subscription = this._resubscribeTypeahead.pipe(switchMap(() => results$)).subscribe((results) => {\n\t\t\tif (!results || results.length === 0) {\n\t\t\t\tthis._closePopup();\n\t\t\t} else {\n\t\t\t\t// when there is only one result and this matches the input value\n\t\t\t\tif (\n\t\t\t\t\tthis.selectOnExact &&\n\t\t\t\t\tresults.length === 1 &&\n\t\t\t\t\tthis._formatItemForInput(results[0]) === this._inputValueForSelectOnExact\n\t\t\t\t) {\n\t\t\t\t\tthis._selectResult(results[0]);\n\t\t\t\t\tthis._closePopup();\n\t\t\t\t} else {\n\t\t\t\t\tthis._openPopup();\n\t\t\t\t\tthis._windowRef!.instance.focusFirst = this.focusFirst;\n\t\t\t\t\tthis._windowRef!.instance.results = results;\n\t\t\t\t\tthis._windowRef!.instance.term = this._elementRef.nativeElement.value;\n\t\t\t\t\tif (this.resultFormatter) {\n\t\t\t\t\t\tthis._windowRef!.instance.formatter = this.resultFormatter;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.resultTemplate) {\n\t\t\t\t\t\tthis._windowRef!.instance.resultTemplate = this.resultTemplate;\n\t\t\t\t\t}\n\t\t\t\t\tthis._windowRef!.instance.resetActive();\n\n\t\t\t\t\t// The observable stream we are subscribing to might have async steps\n\t\t\t\t\t// and if a component containing typeahead is using the OnPush strategy\n\t\t\t\t\t// the change detection turn wouldn't be invoked automatically.\n\t\t\t\t\tthis._windowRef!.changeDetectorRef.detectChanges();\n\n\t\t\t\t\tthis._showHint();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// live announcer\n\t\t\tconst count = results ? results.length : 0;\n\t\t\tthis._live.say(count === 0 ? 'No results available' : `${count} result${count === 1 ? '' : 's'} available`);\n\t\t});\n\t}\n\n\tprivate _unsubscribeFromUserInput() {\n\t\tif (this._subscription) {\n\t\t\tthis._subscription.unsubscribe();\n\t\t}\n\t\tthis._subscription = null;\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { NgbHighlight } from './highlight';\nimport { NgbTypeahead } from './typeahead';\n\nexport { NgbHighlight } from './highlight';\nexport { NgbTypeaheadWindow } from './typeahead-window';\nexport { NgbTypeaheadConfig } from './typeahead-config';\nexport { NgbTypeahead, NgbTypeaheadSelectItemEvent } from './typeahead';\n\n@NgModule({\n\timports: [NgbHighlight, NgbTypeahead],\n\texports: [NgbHighlight, NgbTypeahead],\n})\nexport class NgbTypeaheadModule {}\n","import { ComponentRef } from '@angular/core';\n\nimport { Observable, of, Subject, zip } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ContentRef } from '../util/popup';\nimport { isPromise } from '../util/util';\nimport { NgbOffcanvasBackdrop } from './offcanvas-backdrop';\nimport { NgbOffcanvasPanel } from './offcanvas-panel';\n\n/**\n * A reference to the currently opened (active) offcanvas.\n *\n * Instances of this class can be injected into your component passed as offcanvas content.\n * So you can `.close()` or `.dismiss()` the offcanvas window from your component.\n *\n * @since 12.1.0\n */\nexport class NgbActiveOffcanvas {\n\t/**\n\t * Closes the offcanvas with an optional `result` value.\n\t *\n\t * The `NgbOffcanvasRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {}\n\n\t/**\n\t * Dismisses the offcanvas with an optional `reason` value.\n\t *\n\t * The `NgbOffcanvasRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {}\n}\n\n/**\n * A reference to the newly opened offcanvas returned by the `NgbOffcanvas.open()` method.\n *\n * @since 12.1.0\n */\nexport class NgbOffcanvasRef {\n\tprivate _closed = new Subject();\n\tprivate _dismissed = new Subject();\n\tprivate _hidden = new Subject();\n\tprivate _resolve: (result?: any) => void;\n\tprivate _reject: (reason?: any) => void;\n\n\t/**\n\t * The instance of a component used for the offcanvas content.\n\t *\n\t * When a `TemplateRef` is used as the content or when the offcanvas is closed, will return `undefined`.\n\t */\n\tget componentInstance(): any {\n\t\tif (this._contentRef && this._contentRef.componentRef) {\n\t\t\treturn this._contentRef.componentRef.instance;\n\t\t}\n\t}\n\n\t/**\n\t * The promise that is resolved when the offcanvas is closed and rejected when the offcanvas is dismissed.\n\t */\n\tresult: Promise;\n\n\t/**\n\t * The observable that emits when the offcanvas is closed via the `.close()` method.\n\t *\n\t * It will emit the result passed to the `.close()` method.\n\t */\n\tget closed(): Observable {\n\t\treturn this._closed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when the offcanvas is dismissed via the `.dismiss()` method.\n\t *\n\t * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n\t * reasons like backdrop click or ESC key press.\n\t */\n\tget dismissed(): Observable {\n\t\treturn this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n\t}\n\n\t/**\n\t * The observable that emits when both offcanvas window and backdrop are closed and animations were finished.\n\t * At this point offcanvas and backdrop elements will be removed from the DOM tree.\n\t *\n\t * This observable will be completed after emitting.\n\t */\n\tget hidden(): Observable {\n\t\treturn this._hidden.asObservable();\n\t}\n\n\t/**\n\t * The observable that emits when offcanvas is fully visible and animation was finished.\n\t * The offcanvas DOM element is always available synchronously after calling 'offcanvas.open()' service.\n\t *\n\t * This observable will be completed after emitting.\n\t * It will not emit, if offcanvas is closed before open animation is finished.\n\t */\n\tget shown(): Observable {\n\t\treturn this._panelCmptRef.instance.shown.asObservable();\n\t}\n\n\tconstructor(\n\t\tprivate _panelCmptRef: ComponentRef,\n\t\tprivate _contentRef: ContentRef,\n\t\tprivate _backdropCmptRef?: ComponentRef,\n\t\tprivate _beforeDismiss?: () => boolean | Promise,\n\t) {\n\t\t_panelCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n\t\t\tthis.dismiss(reason);\n\t\t});\n\t\tif (_backdropCmptRef) {\n\t\t\t_backdropCmptRef.instance.dismissEvent.subscribe((reason: any) => {\n\t\t\t\tthis.dismiss(reason);\n\t\t\t});\n\t\t}\n\t\tthis.result = new Promise((resolve, reject) => {\n\t\t\tthis._resolve = resolve;\n\t\t\tthis._reject = reject;\n\t\t});\n\t\tthis.result.then(null, () => {});\n\t}\n\n\t/**\n\t * Closes the offcanvas with an optional `result` value.\n\t *\n\t * The `NgbMobalRef.result` promise will be resolved with the provided value.\n\t */\n\tclose(result?: any): void {\n\t\tif (this._panelCmptRef) {\n\t\t\tthis._closed.next(result);\n\t\t\tthis._resolve(result);\n\t\t\tthis._removeOffcanvasElements();\n\t\t}\n\t}\n\n\tprivate _dismiss(reason?: any) {\n\t\tthis._dismissed.next(reason);\n\t\tthis._reject(reason);\n\t\tthis._removeOffcanvasElements();\n\t}\n\n\t/**\n\t * Dismisses the offcanvas with an optional `reason` value.\n\t *\n\t * The `NgbOffcanvasRef.result` promise will be rejected with the provided value.\n\t */\n\tdismiss(reason?: any): void {\n\t\tif (this._panelCmptRef) {\n\t\t\tif (!this._beforeDismiss) {\n\t\t\t\tthis._dismiss(reason);\n\t\t\t} else {\n\t\t\t\tconst dismiss = this._beforeDismiss();\n\t\t\t\tif (isPromise(dismiss)) {\n\t\t\t\t\tdismiss.then(\n\t\t\t\t\t\t(result) => {\n\t\t\t\t\t\t\tif (result !== false) {\n\t\t\t\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {},\n\t\t\t\t\t);\n\t\t\t\t} else if (dismiss !== false) {\n\t\t\t\t\tthis._dismiss(reason);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _removeOffcanvasElements() {\n\t\tconst panelTransition$ = this._panelCmptRef.instance.hide();\n\t\tconst backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n\n\t\t// hiding panel\n\t\tpanelTransition$.subscribe(() => {\n\t\t\tconst { nativeElement } = this._panelCmptRef.location;\n\t\t\tnativeElement.parentNode.removeChild(nativeElement);\n\t\t\tthis._panelCmptRef.destroy();\n\n\t\t\tif (this._contentRef && this._contentRef.viewRef) {\n\t\t\t\tthis._contentRef.viewRef.destroy();\n\t\t\t}\n\n\t\t\tthis._panelCmptRef = null;\n\t\t\tthis._contentRef = null;\n\t\t});\n\n\t\t// hiding backdrop\n\t\tbackdropTransition$.subscribe(() => {\n\t\t\tif (this._backdropCmptRef) {\n\t\t\t\tconst { nativeElement } = this._backdropCmptRef.location;\n\t\t\t\tnativeElement.parentNode.removeChild(nativeElement);\n\t\t\t\tthis._backdropCmptRef.destroy();\n\t\t\t\tthis._backdropCmptRef = null;\n\t\t\t}\n\t\t});\n\n\t\t// all done\n\t\tzip(panelTransition$, backdropTransition$).subscribe(() => {\n\t\t\tthis._hidden.next();\n\t\t\tthis._hidden.complete();\n\t\t});\n\t}\n}\n","export enum OffcanvasDismissReasons {\n\tBACKDROP_CLICK,\n\tESC,\n}\n","import { Component, ElementRef, EventEmitter, Input, NgZone, OnInit, Output, ViewEncapsulation } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { ngbRunTransition } from '../util/transition/ngbTransition';\nimport { reflow } from '../util/util';\nimport { OffcanvasDismissReasons } from './offcanvas-dismiss-reasons';\n\n@Component({\n\tselector: 'ngb-offcanvas-backdrop',\n\tstandalone: true,\n\tencapsulation: ViewEncapsulation.None,\n\ttemplate: '',\n\thost: {\n\t\t'[class]': '\"offcanvas-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n\t\t'[class.show]': '!animation',\n\t\t'[class.fade]': 'animation',\n\t\t'(mousedown)': 'dismiss()',\n\t},\n})\nexport class NgbOffcanvasBackdrop implements OnInit {\n\t@Input() animation: boolean;\n\t@Input() backdropClass: string;\n\t@Input() static: boolean;\n\n\t@Output('dismiss') dismissEvent = new EventEmitter();\n\n\tconstructor(private _el: ElementRef, private _zone: NgZone) {}\n\n\tngOnInit() {\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tngbRunTransition(\n\t\t\t\t\tthis._zone,\n\t\t\t\t\tthis._el.nativeElement,\n\t\t\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\t\t\tif (animation) {\n\t\t\t\t\t\t\treflow(element);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telement.classList.add('show');\n\t\t\t\t\t},\n\t\t\t\t\t{ animation: this.animation, runningTransition: 'continue' },\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\thide(): Observable {\n\t\treturn ngbRunTransition(this._zone, this._el.nativeElement, ({ classList }) => classList.remove('show'), {\n\t\t\tanimation: this.animation,\n\t\t\trunningTransition: 'stop',\n\t\t});\n\t}\n\n\tdismiss() {\n\t\tif (!this.static) {\n\t\t\tthis.dismissEvent.emit(OffcanvasDismissReasons.BACKDROP_CLICK);\n\t\t}\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tInject,\n\tInput,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tOutput,\n\tViewEncapsulation,\n} from '@angular/core';\n\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\n\nimport { getFocusableBoundaryElements } from '../util/focus-trap';\nimport { Key } from '../util/key';\nimport { OffcanvasDismissReasons } from './offcanvas-dismiss-reasons';\nimport { ngbRunTransition, NgbTransitionOptions } from '../util/transition/ngbTransition';\nimport { reflow } from '../util/util';\n\n@Component({\n\tselector: 'ngb-offcanvas-panel',\n\tstandalone: true,\n\ttemplate: '',\n\tencapsulation: ViewEncapsulation.None,\n\tstyleUrls: [],\n\thost: {\n\t\t'[class]': '\"offcanvas offcanvas-\" + position + (panelClass ? \" \" + panelClass : \"\")',\n\t\trole: 'dialog',\n\t\ttabindex: '-1',\n\t\t'[attr.aria-modal]': 'true',\n\t\t'[attr.aria-labelledby]': 'ariaLabelledBy',\n\t\t'[attr.aria-describedby]': 'ariaDescribedBy',\n\t},\n})\nexport class NgbOffcanvasPanel implements OnInit, OnDestroy {\n\tprivate _closed$ = new Subject();\n\tprivate _elWithFocus: Element | null = null; // element that is focused prior to offcanvas opening\n\n\t@Input() animation: boolean;\n\t@Input() ariaLabelledBy?: string;\n\t@Input() ariaDescribedBy?: string;\n\t@Input() keyboard = true;\n\t@Input() panelClass: string;\n\t@Input() position: 'start' | 'end' | 'top' | 'bottom' = 'start';\n\n\t@Output('dismiss') dismissEvent = new EventEmitter();\n\n\tshown = new Subject();\n\thidden = new Subject();\n\n\tconstructor(\n\t\t@Inject(DOCUMENT) private _document: any,\n\t\tprivate _elRef: ElementRef,\n\t\tprivate _zone: NgZone,\n\t) {}\n\n\tdismiss(reason): void {\n\t\tthis.dismissEvent.emit(reason);\n\t}\n\n\tngOnInit() {\n\t\tthis._elWithFocus = this._document.activeElement;\n\t\tthis._zone.onStable\n\t\t\t.asObservable()\n\t\t\t.pipe(take(1))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis._show();\n\t\t\t});\n\t}\n\n\tngOnDestroy() {\n\t\tthis._disableEventHandling();\n\t}\n\n\thide(): Observable {\n\t\tconst { nativeElement } = this._elRef;\n\t\tconst context: NgbTransitionOptions = { animation: this.animation, runningTransition: 'stop' };\n\n\t\tconst offcanvasTransition$ = ngbRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._elRef.nativeElement,\n\t\t\t(element) => {\n\t\t\t\tnativeElement.classList.remove('showing');\n\t\t\t\tnativeElement.classList.add('hiding');\n\t\t\t\treturn () => nativeElement.classList.remove('show', 'hiding');\n\t\t\t},\n\t\t\tcontext,\n\t\t);\n\n\t\toffcanvasTransition$.subscribe(() => {\n\t\t\tthis.hidden.next();\n\t\t\tthis.hidden.complete();\n\t\t});\n\n\t\tthis._disableEventHandling();\n\t\tthis._restoreFocus();\n\n\t\treturn offcanvasTransition$;\n\t}\n\n\tprivate _show() {\n\t\tconst context: NgbTransitionOptions = { animation: this.animation, runningTransition: 'continue' };\n\n\t\tconst offcanvasTransition$ = ngbRunTransition(\n\t\t\tthis._zone,\n\t\t\tthis._elRef.nativeElement,\n\t\t\t(element: HTMLElement, animation: boolean) => {\n\t\t\t\tif (animation) {\n\t\t\t\t\treflow(element);\n\t\t\t\t}\n\t\t\t\telement.classList.add('show', 'showing');\n\t\t\t\treturn () => element.classList.remove('showing');\n\t\t\t},\n\t\t\tcontext,\n\t\t);\n\n\t\toffcanvasTransition$.subscribe(() => {\n\t\t\tthis.shown.next();\n\t\t\tthis.shown.complete();\n\t\t});\n\n\t\tthis._enableEventHandling();\n\t\tthis._setFocus();\n\t}\n\n\tprivate _enableEventHandling() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tfromEvent(nativeElement, 'keydown')\n\t\t\t\t.pipe(\n\t\t\t\t\ttakeUntil(this._closed$),\n\t\t\t\t\t/* eslint-disable-next-line deprecation/deprecation */\n\t\t\t\t\tfilter((e) => e.which === Key.Escape),\n\t\t\t\t)\n\t\t\t\t.subscribe((event) => {\n\t\t\t\t\tif (this.keyboard) {\n\t\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\t\tif (!event.defaultPrevented) {\n\t\t\t\t\t\t\t\tthis._zone.run(() => this.dismiss(OffcanvasDismissReasons.ESC));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n\t}\n\n\tprivate _disableEventHandling() {\n\t\tthis._closed$.next();\n\t}\n\n\tprivate _setFocus() {\n\t\tconst { nativeElement } = this._elRef;\n\t\tif (!nativeElement.contains(document.activeElement)) {\n\t\t\tconst autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`) as HTMLElement;\n\t\t\tconst firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n\n\t\t\tconst elementToFocus = autoFocusable || firstFocusable || nativeElement;\n\t\t\telementToFocus.focus();\n\t\t}\n\t}\n\n\tprivate _restoreFocus() {\n\t\tconst body = this._document.body;\n\t\tconst elWithFocus = this._elWithFocus;\n\n\t\tlet elementToFocus;\n\t\tif (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n\t\t\telementToFocus = elWithFocus;\n\t\t} else {\n\t\t\telementToFocus = body;\n\t\t}\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tsetTimeout(() => elementToFocus.focus());\n\t\t\tthis._elWithFocus = null;\n\t\t});\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tApplicationRef,\n\tComponentRef,\n\tcreateComponent,\n\tEventEmitter,\n\tInject,\n\tInjectable,\n\tInjector,\n\tNgZone,\n\tTemplateRef,\n\tType,\n} from '@angular/core';\nimport { finalize } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { ngbFocusTrap } from '../util/focus-trap';\nimport { ContentRef } from '../util/popup';\nimport { ScrollBar } from '../util/scrollbar';\nimport { isDefined, isString } from '../util/util';\nimport { NgbActiveOffcanvas, NgbOffcanvasRef } from './offcanvas-ref';\nimport { NgbOffcanvasOptions } from './offcanvas-config';\nimport { NgbOffcanvasBackdrop } from './offcanvas-backdrop';\nimport { NgbOffcanvasPanel } from './offcanvas-panel';\n\n@Injectable({ providedIn: 'root' })\nexport class NgbOffcanvasStack {\n\tprivate _activePanelCmptHasChanged = new Subject();\n\tprivate _scrollBarRestoreFn: null | (() => void) = null;\n\tprivate _backdropAttributes = ['animation', 'backdropClass'];\n\tprivate _offcanvasRef?: NgbOffcanvasRef;\n\tprivate _panelAttributes = ['animation', 'ariaDescribedBy', 'ariaLabelledBy', 'keyboard', 'panelClass', 'position'];\n\tprivate _panelCmpt?: ComponentRef;\n\tprivate _activeInstance: EventEmitter = new EventEmitter();\n\n\tconstructor(\n\t\tprivate _applicationRef: ApplicationRef,\n\t\tprivate _injector: Injector,\n\t\t@Inject(DOCUMENT) private _document: any,\n\t\tprivate _scrollBar: ScrollBar,\n\t\tprivate _ngZone: NgZone,\n\t) {\n\t\t// Trap focus on active PanelCmpt\n\t\tthis._activePanelCmptHasChanged.subscribe(() => {\n\t\t\tif (this._panelCmpt) {\n\t\t\t\tngbFocusTrap(this._ngZone, this._panelCmpt.location.nativeElement, this._activePanelCmptHasChanged);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _restoreScrollBar() {\n\t\tconst scrollBarRestoreFn = this._scrollBarRestoreFn;\n\t\tif (scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = null;\n\t\t\tscrollBarRestoreFn();\n\t\t}\n\t}\n\n\tprivate _hideScrollBar() {\n\t\tif (!this._scrollBarRestoreFn) {\n\t\t\tthis._scrollBarRestoreFn = this._scrollBar.hide();\n\t\t}\n\t}\n\n\topen(contentInjector: Injector, content: any, options: NgbOffcanvasOptions): NgbOffcanvasRef {\n\t\tconst containerEl =\n\t\t\toptions.container instanceof HTMLElement\n\t\t\t\t? options.container\n\t\t\t\t: isDefined(options.container)\n\t\t\t\t? this._document.querySelector(options.container)\n\t\t\t\t: this._document.body;\n\t\tif (!containerEl) {\n\t\t\tthrow new Error(`The specified offcanvas container \"${options.container || 'body'}\" was not found in the DOM.`);\n\t\t}\n\n\t\tif (!options.scroll) {\n\t\t\tthis._hideScrollBar();\n\t\t}\n\n\t\tconst activeOffcanvas = new NgbActiveOffcanvas();\n\t\tconst contentRef = this._getContentRef(options.injector || contentInjector, content, activeOffcanvas);\n\n\t\tlet backdropCmptRef: ComponentRef | undefined =\n\t\t\toptions.backdrop !== false ? this._attachBackdrop(containerEl) : undefined;\n\t\tlet panelCmptRef: ComponentRef = this._attachWindowComponent(containerEl, contentRef.nodes);\n\t\tlet ngbOffcanvasRef: NgbOffcanvasRef = new NgbOffcanvasRef(\n\t\t\tpanelCmptRef,\n\t\t\tcontentRef,\n\t\t\tbackdropCmptRef,\n\t\t\toptions.beforeDismiss,\n\t\t);\n\n\t\tthis._registerOffcanvasRef(ngbOffcanvasRef);\n\t\tthis._registerPanelCmpt(panelCmptRef);\n\t\tngbOffcanvasRef.hidden.pipe(finalize(() => this._restoreScrollBar())).subscribe();\n\t\tactiveOffcanvas.close = (result: any) => {\n\t\t\tngbOffcanvasRef.close(result);\n\t\t};\n\t\tactiveOffcanvas.dismiss = (reason: any) => {\n\t\t\tngbOffcanvasRef.dismiss(reason);\n\t\t};\n\n\t\tthis._applyPanelOptions(panelCmptRef.instance, options);\n\n\t\tif (backdropCmptRef && backdropCmptRef.instance) {\n\t\t\tthis._applyBackdropOptions(backdropCmptRef.instance, options);\n\t\t\tbackdropCmptRef.changeDetectorRef.detectChanges();\n\t\t}\n\t\tpanelCmptRef.changeDetectorRef.detectChanges();\n\t\treturn ngbOffcanvasRef;\n\t}\n\n\tget activeInstance() {\n\t\treturn this._activeInstance;\n\t}\n\n\tdismiss(reason?: any) {\n\t\tthis._offcanvasRef?.dismiss(reason);\n\t}\n\n\thasOpenOffcanvas(): boolean {\n\t\treturn !!this._offcanvasRef;\n\t}\n\n\tprivate _attachBackdrop(containerEl: Element): ComponentRef {\n\t\tlet backdropCmptRef = createComponent(NgbOffcanvasBackdrop, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector,\n\t\t});\n\t\tthis._applicationRef.attachView(backdropCmptRef.hostView);\n\t\tcontainerEl.appendChild(backdropCmptRef.location.nativeElement);\n\t\treturn backdropCmptRef;\n\t}\n\n\tprivate _attachWindowComponent(containerEl: Element, projectableNodes: Node[][]): ComponentRef {\n\t\tlet panelCmptRef = createComponent(NgbOffcanvasPanel, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector: this._injector,\n\t\t\tprojectableNodes,\n\t\t});\n\t\tthis._applicationRef.attachView(panelCmptRef.hostView);\n\t\tcontainerEl.appendChild(panelCmptRef.location.nativeElement);\n\t\treturn panelCmptRef;\n\t}\n\n\tprivate _applyPanelOptions(windowInstance: NgbOffcanvasPanel, options: NgbOffcanvasOptions): void {\n\t\tthis._panelAttributes.forEach((optionName: string) => {\n\t\t\tif (isDefined(options[optionName])) {\n\t\t\t\twindowInstance[optionName] = options[optionName];\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate _applyBackdropOptions(backdropInstance: NgbOffcanvasBackdrop, options: NgbOffcanvasOptions): void {\n\t\tthis._backdropAttributes.forEach((optionName: string) => {\n\t\t\tif (isDefined(options[optionName])) {\n\t\t\t\tbackdropInstance[optionName] = options[optionName];\n\t\t\t}\n\t\t});\n\t\tbackdropInstance.static = options.backdrop === 'static';\n\t}\n\n\tprivate _getContentRef(\n\t\tcontentInjector: Injector,\n\t\tcontent: Type | TemplateRef | string,\n\t\tactiveOffcanvas: NgbActiveOffcanvas,\n\t): ContentRef {\n\t\tif (!content) {\n\t\t\treturn new ContentRef([]);\n\t\t} else if (content instanceof TemplateRef) {\n\t\t\treturn this._createFromTemplateRef(content, activeOffcanvas);\n\t\t} else if (isString(content)) {\n\t\t\treturn this._createFromString(content);\n\t\t} else {\n\t\t\treturn this._createFromComponent(contentInjector, content, activeOffcanvas);\n\t\t}\n\t}\n\n\tprivate _createFromTemplateRef(templateRef: TemplateRef, activeOffcanvas: NgbActiveOffcanvas): ContentRef {\n\t\tconst context = {\n\t\t\t$implicit: activeOffcanvas,\n\t\t\tclose(result) {\n\t\t\t\tactiveOffcanvas.close(result);\n\t\t\t},\n\t\t\tdismiss(reason) {\n\t\t\t\tactiveOffcanvas.dismiss(reason);\n\t\t\t},\n\t\t};\n\t\tconst viewRef = templateRef.createEmbeddedView(context);\n\t\tthis._applicationRef.attachView(viewRef);\n\t\treturn new ContentRef([viewRef.rootNodes], viewRef);\n\t}\n\n\tprivate _createFromString(content: string): ContentRef {\n\t\tconst component = this._document.createTextNode(`${content}`);\n\t\treturn new ContentRef([[component]]);\n\t}\n\n\tprivate _createFromComponent(\n\t\tcontentInjector: Injector,\n\t\tcomponentType: Type,\n\t\tcontext: NgbActiveOffcanvas,\n\t): ContentRef {\n\t\tconst elementInjector = Injector.create({\n\t\t\tproviders: [{ provide: NgbActiveOffcanvas, useValue: context }],\n\t\t\tparent: contentInjector,\n\t\t});\n\t\tconst componentRef = createComponent(componentType, {\n\t\t\tenvironmentInjector: this._applicationRef.injector,\n\t\t\telementInjector,\n\t\t});\n\t\tconst componentNativeEl = componentRef.location.nativeElement;\n\t\tthis._applicationRef.attachView(componentRef.hostView);\n\t\treturn new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n\t}\n\n\tprivate _registerOffcanvasRef(ngbOffcanvasRef: NgbOffcanvasRef) {\n\t\tconst unregisterOffcanvasRef = () => {\n\t\t\tthis._offcanvasRef = undefined;\n\t\t\tthis._activeInstance.emit(this._offcanvasRef);\n\t\t};\n\t\tthis._offcanvasRef = ngbOffcanvasRef;\n\t\tthis._activeInstance.emit(this._offcanvasRef);\n\t\tngbOffcanvasRef.result.then(unregisterOffcanvasRef, unregisterOffcanvasRef);\n\t}\n\n\tprivate _registerPanelCmpt(ngbPanelCmpt: ComponentRef) {\n\t\tthis._panelCmpt = ngbPanelCmpt;\n\t\tthis._activePanelCmptHasChanged.next();\n\n\t\tngbPanelCmpt.onDestroy(() => {\n\t\t\tthis._panelCmpt = undefined;\n\t\t\tthis._activePanelCmptHasChanged.next();\n\t\t});\n\t}\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { NgbConfig } from '../ngb-config';\n\n/**\n * Options available when opening new offcanvas windows with `NgbOffcanvas.open()` method.\n *\n * @since 12.1.0\n */\nexport interface NgbOffcanvasOptions {\n\t/**\n\t * If `true`, opening and closing will be animated.\n\t */\n\tanimation?: boolean;\n\n\t/**\n\t * `aria-describedby` attribute value to set on the offcanvas panel.\n\t */\n\tariaDescribedBy?: string;\n\n\t/**\n\t * `aria-labelledby` attribute value to set on the offcanvas panel.\n\t */\n\tariaLabelledBy?: string;\n\n\t/**\n\t * If `true`, the backdrop element will be created for a given offcanvas.\n\t * If 'static', clicking the backdrop won't close the offcanvas (available since 13.1.0).\n\t *\n\t * Default value is `true`.\n\t */\n\tbackdrop?: boolean | 'static';\n\n\t/**\n\t * A custom class to append to the offcanvas backdrop.\n\t */\n\tbackdropClass?: string;\n\n\t/**\n\t * Callback right before the offcanvas will be dismissed.\n\t *\n\t * If this function returns:\n\t * * `false`\n\t * * a promise resolved with `false`\n\t * * a promise that is rejected\n\t *\n\t * then the offcanvas won't be dismissed.\n\t */\n\tbeforeDismiss?: () => boolean | Promise;\n\n\t/**\n\t * A selector specifying the element all new offcanvas panels and backdrops should be appended to.\n\t *\n\t * If not specified, will be `body`.\n\t */\n\tcontainer?: string | HTMLElement;\n\n\t/**\n\t * The `Injector` to use for offcanvas content.\n\t */\n\tinjector?: Injector;\n\n\t/**\n\t * If `true`, the offcanvas will be closed when `Escape` key is pressed\n\t *\n\t * Default value is `true`.\n\t */\n\tkeyboard?: boolean;\n\n\t/**\n\t * A custom class to append to the offcanvas panel.\n\t */\n\tpanelClass?: string;\n\n\t/**\n\t * The position of the offcanvas\n\t */\n\tposition?: 'start' | 'end' | 'top' | 'bottom';\n\n\t/**\n\t * Scroll content while offcanvas is open (false by default).\n\t */\n\tscroll?: boolean;\n}\n\n/**\n * A configuration service for the [`NgbOffcanvas`](#/components/offcanvas/api#NgbOffcanvas) 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 offcanvases used in the application.\n *\n * @since 12.1.0\n */\n@Injectable({ providedIn: 'root' })\nexport class NgbOffcanvasConfig implements Required {\n\tariaDescribedBy: string;\n\tariaLabelledBy: string;\n\tbackdrop: boolean | 'static' = true;\n\tbackdropClass: string;\n\tbeforeDismiss: () => boolean | Promise;\n\tcontainer: string | HTMLElement;\n\tinjector: Injector;\n\tkeyboard = true;\n\tpanelClass: string;\n\tposition: 'start' | 'end' | 'top' | 'bottom' = 'start';\n\tscroll = false;\n\n\tprivate _animation: boolean;\n\n\tconstructor(private _ngbConfig: NgbConfig) {}\n\n\tget animation(): boolean {\n\t\treturn this._animation === undefined ? this._ngbConfig.animation : this._animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { NgbOffcanvasConfig, NgbOffcanvasOptions } from './offcanvas-config';\nimport { NgbOffcanvasRef } from './offcanvas-ref';\nimport { NgbOffcanvasStack } from './offcanvas-stack';\n\n/**\n * A service for opening an offcanvas.\n *\n * Creating an offcanvas is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n *\n * @since 12.1.0\n */\n@Injectable({ providedIn: 'root' })\nexport class NgbOffcanvas {\n\tconstructor(\n\t\tprivate _injector: Injector,\n\t\tprivate _offcanvasStack: NgbOffcanvasStack,\n\t\tprivate _config: NgbOffcanvasConfig,\n\t) {}\n\n\t/**\n\t * Opens a new offcanvas panel with the specified content and supplied options.\n\t *\n\t * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n\t * then instances of those components can be injected with an instance of the `NgbActiveOffcanvas` class. You can then\n\t * use `NgbActiveOffcanvas` methods to close / dismiss offcanvas from \"inside\" of your component.\n\t *\n\t * Also see the [`NgbOffcanvasOptions`](#/components/offcanvas/api#NgbOffcanvasOptions) for the list of supported\n\t * options.\n\t */\n\topen(content: any, options: NgbOffcanvasOptions = {}): NgbOffcanvasRef {\n\t\tconst combinedOptions = { ...this._config, animation: this._config.animation, ...options };\n\t\treturn this._offcanvasStack.open(this._injector, content, combinedOptions);\n\t}\n\n\t/**\n\t * Returns an observable that holds the active offcanvas instance.\n\t */\n\tget activeInstance() {\n\t\treturn this._offcanvasStack.activeInstance;\n\t}\n\n\t/**\n\t * Dismisses the currently displayed offcanvas with the supplied reason.\n\t */\n\tdismiss(reason?: any) {\n\t\tthis._offcanvasStack.dismiss(reason);\n\t}\n\n\t/**\n\t * Indicates if there is currently an open offcanvas in the application.\n\t */\n\thasOpenOffcanvas(): boolean {\n\t\treturn this._offcanvasStack.hasOpenOffcanvas();\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nexport { NgbOffcanvas } from './offcanvas';\nexport { NgbOffcanvasConfig, NgbOffcanvasOptions } from './offcanvas-config';\nexport { NgbOffcanvasRef, NgbActiveOffcanvas } from './offcanvas-ref';\nexport { OffcanvasDismissReasons } from './offcanvas-dismiss-reasons';\n\n@NgModule({})\nexport class NgbOffcanvasModule {}\n","import { NgModule } from '@angular/core';\n\nimport { NgbAccordionModule } from './accordion/accordion.module';\nimport { NgbAlertModule } from './alert/alert.module';\nimport { NgbCarouselModule } from './carousel/carousel.module';\nimport { NgbCollapseModule } from './collapse/collapse.module';\nimport { NgbDatepickerModule } from './datepicker/datepicker.module';\nimport { NgbDropdownModule } from './dropdown/dropdown.module';\nimport { NgbModalModule } from './modal/modal.module';\nimport { NgbNavModule } from './nav/nav.module';\nimport { NgbPaginationModule } from './pagination/pagination.module';\nimport { NgbPopoverModule } from './popover/popover.module';\nimport { NgbProgressbarModule } from './progressbar/progressbar.module';\nimport { NgbRatingModule } from './rating/rating.module';\nimport { NgbScrollSpyModule } from './scrollspy/scrollspy.module';\nimport { NgbTimepickerModule } from './timepicker/timepicker.module';\nimport { NgbToastModule } from './toast/toast.module';\nimport { NgbTooltipModule } from './tooltip/tooltip.module';\nimport { NgbTypeaheadModule } from './typeahead/typeahead.module';\nimport { NgbOffcanvasModule } from './offcanvas/offcanvas.module';\n\nexport {\n\tNgbAccordionDirective,\n\tNgbAccordionItem,\n\tNgbAccordionHeader,\n\tNgbAccordionToggle,\n\tNgbAccordionCollapse,\n\tNgbAccordionBody,\n\tNgbAccordionButton,\n} from './accordion/accordion.module';\n\n/* eslint-disable deprecation/deprecation */\nexport {\n\tNgbAccordion,\n\tNgbAccordionConfig,\n\tNgbAccordionModule,\n\tNgbPanel,\n\tNgbPanelChangeEvent,\n\tNgbPanelContent,\n\tNgbPanelHeader,\n\tNgbPanelHeaderContext,\n\tNgbPanelTitle,\n\tNgbPanelToggle,\n} from './accordion/accordion.module';\n/* eslint-disable deprecation/deprecation */\nexport { NgbAlert, NgbAlertConfig, NgbAlertModule } from './alert/alert.module';\nexport {\n\tNgbCarousel,\n\tNgbCarouselConfig,\n\tNgbCarouselModule,\n\tNgbSlide,\n\tNgbSlideEvent,\n\tNgbSlideEventDirection,\n\tNgbSlideEventSource,\n} from './carousel/carousel.module';\nexport { NgbCollapse, NgbCollapseConfig, NgbCollapseModule } from './collapse/collapse.module';\nexport {\n\tNgbCalendar,\n\tNgbCalendarGregorian,\n\tNgbCalendarHebrew,\n\tNgbCalendarIslamicCivil,\n\tNgbCalendarIslamicUmalqura,\n\tNgbCalendarPersian,\n\tNgbCalendarBuddhist,\n\tNgbDate,\n\tNgbDateAdapter,\n\tNgbDateStructAdapter,\n\tNgbDateNativeAdapter,\n\tNgbDateNativeUTCAdapter,\n\tNgbDateParserFormatter,\n\tNgbDatepicker,\n\tNgbDatepickerConfig,\n\tNgbInputDatepickerConfig,\n\tNgbDatepickerContent,\n\tNgbDatepickerI18n,\n\tNgbDatepickerI18nDefault,\n\tNgbDatepickerI18nHebrew,\n\tNgbDatepickerKeyboardService,\n\tNgbDatepickerModule,\n\tNgbDatepickerMonth,\n\tNgbDatepickerNavigateEvent,\n\tNgbDatepickerState,\n\tNgbDateStruct,\n\tNgbInputDatepicker,\n\tNgbPeriod,\n} from './datepicker/datepicker.module';\nexport {\n\tNgbDropdown,\n\tNgbDropdownAnchor,\n\tNgbDropdownConfig,\n\tNgbDropdownItem,\n\tNgbDropdownMenu,\n\tNgbDropdownModule,\n\tNgbDropdownToggle,\n\t// eslint-disable-next-line deprecation/deprecation\n\tNgbNavbar,\n} from './dropdown/dropdown.module';\nexport {\n\tModalDismissReasons,\n\tNgbActiveModal,\n\tNgbModal,\n\tNgbModalConfig,\n\tNgbModalModule,\n\tNgbModalOptions,\n\tNgbModalUpdatableOptions,\n\tNgbModalRef,\n} from './modal/modal.module';\nexport {\n\tNgbNavChangeEvent,\n\tNgbNavConfig,\n\tNgbNav,\n\tNgbNavContent,\n\tNgbNavContentContext,\n\tNgbNavItem,\n\tNgbNavItemRole,\n\tNgbNavLink,\n\tNgbNavLinkButton,\n\tNgbNavLinkBase,\n\tNgbNavModule,\n\tNgbNavOutlet,\n\tNgbNavPane,\n} from './nav/nav.module';\nexport {\n\tOffcanvasDismissReasons,\n\tNgbActiveOffcanvas,\n\tNgbOffcanvas,\n\tNgbOffcanvasConfig,\n\tNgbOffcanvasModule,\n\tNgbOffcanvasOptions,\n\tNgbOffcanvasRef,\n} from './offcanvas/offcanvas.module';\nexport {\n\tNgbPagination,\n\tNgbPaginationConfig,\n\tNgbPaginationEllipsis,\n\tNgbPaginationFirst,\n\tNgbPaginationLast,\n\tNgbPaginationModule,\n\tNgbPaginationNext,\n\tNgbPaginationNumber,\n\tNgbPaginationPrevious,\n\tNgbPaginationPages,\n} from './pagination/pagination.module';\nexport { NgbPopover, NgbPopoverConfig, NgbPopoverModule } from './popover/popover.module';\nexport { NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule } from './progressbar/progressbar.module';\nexport { NgbRating, NgbRatingConfig, NgbRatingModule } from './rating/rating.module';\nexport {\n\tNgbScrollSpy,\n\tNgbScrollSpyConfig,\n\tNgbScrollSpyFragment,\n\tNgbScrollSpyItem,\n\tNgbScrollSpyMenu,\n\tNgbScrollSpyModule,\n\tNgbScrollSpyProcessChanges,\n\tNgbScrollSpyService,\n} from './scrollspy/scrollspy.module';\nexport {\n\tNgbTimeAdapter,\n\tNgbTimepickerI18n,\n\tNgbTimepicker,\n\tNgbTimepickerConfig,\n\tNgbTimepickerModule,\n\tNgbTimeStruct,\n} from './timepicker/timepicker.module';\nexport { NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule } from './toast/toast.module';\nexport { NgbTooltip, NgbTooltipConfig, NgbTooltipModule } from './tooltip/tooltip.module';\nexport {\n\tNgbHighlight,\n\tNgbTypeahead,\n\tNgbTypeaheadConfig,\n\tNgbTypeaheadModule,\n\tNgbTypeaheadSelectItemEvent,\n} from './typeahead/typeahead.module';\nexport { Placement } from './util/positioning';\n\nexport { NgbConfig } from './ngb-config';\n\nconst NGB_MODULES = [\n\tNgbAccordionModule,\n\tNgbAlertModule,\n\tNgbCarouselModule,\n\tNgbCollapseModule,\n\tNgbDatepickerModule,\n\tNgbDropdownModule,\n\tNgbModalModule,\n\tNgbNavModule,\n\tNgbOffcanvasModule,\n\tNgbPaginationModule,\n\tNgbPopoverModule,\n\tNgbProgressbarModule,\n\tNgbRatingModule,\n\tNgbScrollSpyModule,\n\tNgbTimepickerModule,\n\tNgbToastModule,\n\tNgbTooltipModule,\n\tNgbTypeaheadModule,\n];\n\n@NgModule({ imports: NGB_MODULES, exports: NGB_MODULES })\nexport class NgbModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NgbConfig","nextId","i1.NgbAccordionConfig","i1.NgbCollapseConfig","i1.NgbCollapse","i2.NgbAccordionConfig","i1.NgbAlertConfig","i1.NgbCalendar","i2.NgbDatepickerI18n","i1.NgbDatepickerI18n","i2.NgbDatepickerKeyboardService","i3.NgbDatepickerService","i4.NgbCalendar","i5.NgbDatepickerConfig","i6.NgbDateAdapter","offset","offsetModifier","i4.NgbInputDatepickerConfig","isGregorianLeapYear","mod","GREGORIAN_EPOCH","toGregorian","fromGregorian","i1.ScrollBar","i1.NgbModalStack","i2.NgbModalConfig","i1.NgbNavConfig","i1.NgbPaginationConfig","i1.NgbProgressbarConfig","i1.NgbRatingConfig","i1.NgbTimepickerConfig","i2.NgbTimeAdapter","i3.NgbTimepickerI18n","i1.NgbToastConfig","i1.NgbOffcanvasStack","i2.NgbOffcanvasConfig"],"mappings":"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ACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;IACd,cAAc;;IAEd,cAAc;IACd,cAAc;IACd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"}