{"version":3,"sources":["node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs","src/app/_pipes/safe-html.pipe.ts","node_modules/@popperjs/core/lib/enums.js","node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","node_modules/@popperjs/core/lib/dom-utils/getWindow.js","node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","node_modules/@popperjs/core/lib/modifiers/applyStyles.js","node_modules/@popperjs/core/lib/utils/getBasePlacement.js","node_modules/@popperjs/core/lib/utils/math.js","node_modules/@popperjs/core/lib/utils/userAgent.js","node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","node_modules/@popperjs/core/lib/dom-utils/contains.js","node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","node_modules/@popperjs/core/lib/utils/within.js","node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","node_modules/@popperjs/core/lib/utils/expandToHashMap.js","node_modules/@popperjs/core/lib/modifiers/arrow.js","node_modules/@popperjs/core/lib/utils/getVariation.js","node_modules/@popperjs/core/lib/modifiers/computeStyles.js","node_modules/@popperjs/core/lib/modifiers/eventListeners.js","node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","node_modules/@popperjs/core/lib/utils/rectToClientRect.js","node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","node_modules/@popperjs/core/lib/utils/computeOffsets.js","node_modules/@popperjs/core/lib/utils/detectOverflow.js","node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","node_modules/@popperjs/core/lib/modifiers/flip.js","node_modules/@popperjs/core/lib/modifiers/offset.js","node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","node_modules/@popperjs/core/lib/utils/getAltAxis.js","node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","node_modules/@popperjs/core/lib/utils/orderModifiers.js","node_modules/@popperjs/core/lib/utils/debounce.js","node_modules/@popperjs/core/lib/utils/mergeByName.js","node_modules/@popperjs/core/lib/createPopper.js","node_modules/@popperjs/core/lib/popper-lite.js","node_modules/@ng-bootstrap/ng-bootstrap/fesm2022/ng-bootstrap.mjs","node_modules/@angular/animations/fesm2022/animations.mjs","node_modules/ngx-toastr/fesm2022/ngx-toastr.mjs"],"sourcesContent":["/**\n * @license Angular v17.3.4\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ɵglobal, ɵRuntimeError, Injectable, InjectionToken, Inject, APP_ID, CSP_NONCE, PLATFORM_ID, Optional, ViewEncapsulation, RendererStyleFlags2, ɵinternalCreateApplication, ErrorHandler, ɵsetDocument, PLATFORM_INITIALIZER, createPlatformFactory, platformCore, ɵTESTABILITY_GETTER, ɵTESTABILITY, Testability, NgZone, TestabilityRegistry, ɵINJECTOR_SCOPE, RendererFactory2, ApplicationModule, NgModule, SkipSelf, ApplicationRef, ɵConsole, forwardRef, ɵXSS_SECURITY_URL, SecurityContext, ɵallowSanitizationBypassAndThrow, ɵunwrapSafeValue, ɵ_sanitizeUrl, ɵ_sanitizeHtml, ɵbypassSanitizationTrustHtml, ɵbypassSanitizationTrustStyle, ɵbypassSanitizationTrustScript, ɵbypassSanitizationTrustUrl, ɵbypassSanitizationTrustResourceUrl, ENVIRONMENT_INITIALIZER, inject, ɵformatRuntimeError, makeEnvironmentProviders, ɵwithDomHydration, Version, makeStateKey as makeStateKey$1, TransferState as TransferState$1 } from '@angular/core';\nimport { ɵDomAdapter, ɵsetRootDomAdapter, ɵparseCookieValue, ɵgetDOM, isPlatformServer, DOCUMENT, ɵPLATFORM_BROWSER_ID, XhrFactory, CommonModule } from '@angular/common';\nexport { ɵgetDOM } from '@angular/common';\nimport { ɵwithHttpTransferCache } from '@angular/common/http';\n\n/**\n * Provides DOM operations in any browser environment.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass GenericBrowserDomAdapter extends ɵDomAdapter {\n constructor() {\n super(...arguments);\n this.supportsDOMEvents = true;\n }\n}\n\n/**\n * A `DomAdapter` powered by full browser DOM APIs.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\n/* tslint:disable:requireParameterType no-console */\nclass BrowserDomAdapter extends GenericBrowserDomAdapter {\n static makeCurrent() {\n ɵsetRootDomAdapter(new BrowserDomAdapter());\n }\n onAndCancel(el, evt, listener) {\n el.addEventListener(evt, listener);\n return () => {\n el.removeEventListener(evt, listener);\n };\n }\n dispatchEvent(el, evt) {\n el.dispatchEvent(evt);\n }\n remove(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n createElement(tagName, doc) {\n doc = doc || this.getDefaultDocument();\n return doc.createElement(tagName);\n }\n createHtmlDocument() {\n return document.implementation.createHTMLDocument('fakeTitle');\n }\n getDefaultDocument() {\n return document;\n }\n isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n }\n isShadowRoot(node) {\n return node instanceof DocumentFragment;\n }\n /** @deprecated No longer being used in Ivy code. To be removed in version 14. */\n getGlobalEventTarget(doc, target) {\n if (target === 'window') {\n return window;\n }\n if (target === 'document') {\n return doc;\n }\n if (target === 'body') {\n return doc.body;\n }\n return null;\n }\n getBaseHref(doc) {\n const href = getBaseElementHref();\n return href == null ? null : relativePath(href);\n }\n resetBaseElement() {\n baseElement = null;\n }\n getUserAgent() {\n return window.navigator.userAgent;\n }\n getCookie(name) {\n return ɵparseCookieValue(document.cookie, name);\n }\n}\nlet baseElement = null;\nfunction getBaseElementHref() {\n baseElement = baseElement || document.querySelector('base');\n return baseElement ? baseElement.getAttribute('href') : null;\n}\nfunction relativePath(url) {\n // The base URL doesn't really matter, we just need it so relative paths have something\n // to resolve against. In the browser `HTMLBaseElement.href` is always absolute.\n return new URL(url, document.baseURI).pathname;\n}\nclass BrowserGetTestability {\n addToWindow(registry) {\n ɵglobal['getAngularTestability'] = (elem, findInAncestors = true) => {\n const testability = registry.findTestabilityInTree(elem, findInAncestors);\n if (testability == null) {\n throw new ɵRuntimeError(5103 /* RuntimeErrorCode.TESTABILITY_NOT_FOUND */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Could not find testability for element.');\n }\n return testability;\n };\n ɵglobal['getAllAngularTestabilities'] = () => registry.getAllTestabilities();\n ɵglobal['getAllAngularRootElements'] = () => registry.getAllRootElements();\n const whenAllStable = callback => {\n const testabilities = ɵglobal['getAllAngularTestabilities']();\n let count = testabilities.length;\n const decrement = function () {\n count--;\n if (count == 0) {\n callback();\n }\n };\n testabilities.forEach(testability => {\n testability.whenStable(decrement);\n });\n };\n if (!ɵglobal['frameworkStabilizers']) {\n ɵglobal['frameworkStabilizers'] = [];\n }\n ɵglobal['frameworkStabilizers'].push(whenAllStable);\n }\n findTestabilityInTree(registry, elem, findInAncestors) {\n if (elem == null) {\n return null;\n }\n const t = registry.getTestability(elem);\n if (t != null) {\n return t;\n } else if (!findInAncestors) {\n return null;\n }\n if (ɵgetDOM().isShadowRoot(elem)) {\n return this.findTestabilityInTree(registry, elem.host, true);\n }\n return this.findTestabilityInTree(registry, elem.parentElement, true);\n }\n}\n\n/**\n * A factory for `HttpXhrBackend` that uses the `XMLHttpRequest` browser API.\n */\nlet BrowserXhr = /*#__PURE__*/(() => {\n class BrowserXhr {\n build() {\n return new XMLHttpRequest();\n }\n static {\n this.ɵfac = function BrowserXhr_Factory(t) {\n return new (t || BrowserXhr)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BrowserXhr,\n factory: BrowserXhr.ɵfac\n });\n }\n }\n return BrowserXhr;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The injection token for plugins of the `EventManager` service.\n *\n * @publicApi\n */\nconst EVENT_MANAGER_PLUGINS = /*#__PURE__*/new InjectionToken(ngDevMode ? 'EventManagerPlugins' : '');\n/**\n * An injectable service that provides event management for Angular\n * through a browser plug-in.\n *\n * @publicApi\n */\nlet EventManager = /*#__PURE__*/(() => {\n class EventManager {\n /**\n * Initializes an instance of the event-manager service.\n */\n constructor(plugins, _zone) {\n this._zone = _zone;\n this._eventNameToPlugin = new Map();\n plugins.forEach(plugin => {\n plugin.manager = this;\n });\n this._plugins = plugins.slice().reverse();\n }\n /**\n * Registers a handler for a specific element and event.\n *\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @returns A callback function that can be used to remove the handler.\n */\n addEventListener(element, eventName, handler) {\n const plugin = this._findPluginFor(eventName);\n return plugin.addEventListener(element, eventName, handler);\n }\n /**\n * Retrieves the compilation zone in which event listeners are registered.\n */\n getZone() {\n return this._zone;\n }\n /** @internal */\n _findPluginFor(eventName) {\n let plugin = this._eventNameToPlugin.get(eventName);\n if (plugin) {\n return plugin;\n }\n const plugins = this._plugins;\n plugin = plugins.find(plugin => plugin.supports(eventName));\n if (!plugin) {\n throw new ɵRuntimeError(5101 /* RuntimeErrorCode.NO_PLUGIN_FOR_EVENT */, (typeof ngDevMode === 'undefined' || ngDevMode) && `No event manager plugin found for event ${eventName}`);\n }\n this._eventNameToPlugin.set(eventName, plugin);\n return plugin;\n }\n static {\n this.ɵfac = function EventManager_Factory(t) {\n return new (t || EventManager)(i0.ɵɵinject(EVENT_MANAGER_PLUGINS), i0.ɵɵinject(i0.NgZone));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EventManager,\n factory: EventManager.ɵfac\n });\n }\n }\n return EventManager;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * The plugin definition for the `EventManager` class\n *\n * It can be used as a base class to create custom manager plugins, i.e. you can create your own\n * class that extends the `EventManagerPlugin` one.\n *\n * @publicApi\n */\nclass EventManagerPlugin {\n // TODO: remove (has some usage in G3)\n constructor(_doc) {\n this._doc = _doc;\n }\n}\n\n/** The style elements attribute name used to set value of `APP_ID` token. */\nconst APP_ID_ATTRIBUTE_NAME = 'ng-app-id';\nlet SharedStylesHost = /*#__PURE__*/(() => {\n class SharedStylesHost {\n constructor(doc, appId, nonce, platformId = {}) {\n this.doc = doc;\n this.appId = appId;\n this.nonce = nonce;\n this.platformId = platformId;\n // Maps all registered host nodes to a list of style nodes that have been added to the host node.\n this.styleRef = new Map();\n this.hostNodes = new Set();\n this.styleNodesInDOM = this.collectServerRenderedStyles();\n this.platformIsServer = isPlatformServer(platformId);\n this.resetHostNodes();\n }\n addStyles(styles) {\n for (const style of styles) {\n const usageCount = this.changeUsageCount(style, 1);\n if (usageCount === 1) {\n this.onStyleAdded(style);\n }\n }\n }\n removeStyles(styles) {\n for (const style of styles) {\n const usageCount = this.changeUsageCount(style, -1);\n if (usageCount <= 0) {\n this.onStyleRemoved(style);\n }\n }\n }\n ngOnDestroy() {\n const styleNodesInDOM = this.styleNodesInDOM;\n if (styleNodesInDOM) {\n styleNodesInDOM.forEach(node => node.remove());\n styleNodesInDOM.clear();\n }\n for (const style of this.getAllStyles()) {\n this.onStyleRemoved(style);\n }\n this.resetHostNodes();\n }\n addHost(hostNode) {\n this.hostNodes.add(hostNode);\n for (const style of this.getAllStyles()) {\n this.addStyleToHost(hostNode, style);\n }\n }\n removeHost(hostNode) {\n this.hostNodes.delete(hostNode);\n }\n getAllStyles() {\n return this.styleRef.keys();\n }\n onStyleAdded(style) {\n for (const host of this.hostNodes) {\n this.addStyleToHost(host, style);\n }\n }\n onStyleRemoved(style) {\n const styleRef = this.styleRef;\n styleRef.get(style)?.elements?.forEach(node => node.remove());\n styleRef.delete(style);\n }\n collectServerRenderedStyles() {\n const styles = this.doc.head?.querySelectorAll(`style[${APP_ID_ATTRIBUTE_NAME}=\"${this.appId}\"]`);\n if (styles?.length) {\n const styleMap = new Map();\n styles.forEach(style => {\n if (style.textContent != null) {\n styleMap.set(style.textContent, style);\n }\n });\n return styleMap;\n }\n return null;\n }\n changeUsageCount(style, delta) {\n const map = this.styleRef;\n if (map.has(style)) {\n const styleRefValue = map.get(style);\n styleRefValue.usage += delta;\n return styleRefValue.usage;\n }\n map.set(style, {\n usage: delta,\n elements: []\n });\n return delta;\n }\n getStyleElement(host, style) {\n const styleNodesInDOM = this.styleNodesInDOM;\n const styleEl = styleNodesInDOM?.get(style);\n if (styleEl?.parentNode === host) {\n // `styleNodesInDOM` cannot be undefined due to the above `styleNodesInDOM?.get`.\n styleNodesInDOM.delete(style);\n styleEl.removeAttribute(APP_ID_ATTRIBUTE_NAME);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // This attribute is solely used for debugging purposes.\n styleEl.setAttribute('ng-style-reused', '');\n }\n return styleEl;\n } else {\n const styleEl = this.doc.createElement('style');\n if (this.nonce) {\n styleEl.setAttribute('nonce', this.nonce);\n }\n styleEl.textContent = style;\n if (this.platformIsServer) {\n styleEl.setAttribute(APP_ID_ATTRIBUTE_NAME, this.appId);\n }\n host.appendChild(styleEl);\n return styleEl;\n }\n }\n addStyleToHost(host, style) {\n const styleEl = this.getStyleElement(host, style);\n const styleRef = this.styleRef;\n const styleElRef = styleRef.get(style)?.elements;\n if (styleElRef) {\n styleElRef.push(styleEl);\n } else {\n styleRef.set(style, {\n elements: [styleEl],\n usage: 1\n });\n }\n }\n resetHostNodes() {\n const hostNodes = this.hostNodes;\n hostNodes.clear();\n // Re-add the head element back since this is the default host.\n hostNodes.add(this.doc.head);\n }\n static {\n this.ɵfac = function SharedStylesHost_Factory(t) {\n return new (t || SharedStylesHost)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(APP_ID), i0.ɵɵinject(CSP_NONCE, 8), i0.ɵɵinject(PLATFORM_ID));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SharedStylesHost,\n factory: SharedStylesHost.ɵfac\n });\n }\n }\n return SharedStylesHost;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst NAMESPACE_URIS = {\n 'svg': 'http://www.w3.org/2000/svg',\n 'xhtml': 'http://www.w3.org/1999/xhtml',\n 'xlink': 'http://www.w3.org/1999/xlink',\n 'xml': 'http://www.w3.org/XML/1998/namespace',\n 'xmlns': 'http://www.w3.org/2000/xmlns/',\n 'math': 'http://www.w3.org/1998/MathML/'\n};\nconst COMPONENT_REGEX = /%COMP%/g;\nconst COMPONENT_VARIABLE = '%COMP%';\nconst HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;\nconst CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;\n/**\n * The default value for the `REMOVE_STYLES_ON_COMPONENT_DESTROY` DI token.\n */\nconst REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT = true;\n/**\n * A [DI token](guide/glossary#di-token \"DI token definition\") that indicates whether styles\n * of destroyed components should be removed from DOM.\n *\n * By default, the value is set to `true`.\n * @publicApi\n */\nconst REMOVE_STYLES_ON_COMPONENT_DESTROY = /*#__PURE__*/new InjectionToken(ngDevMode ? 'RemoveStylesOnCompDestroy' : '', {\n providedIn: 'root',\n factory: () => REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT\n});\nfunction shimContentAttribute(componentShortId) {\n return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\nfunction shimHostAttribute(componentShortId) {\n return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\nfunction shimStylesContent(compId, styles) {\n return styles.map(s => s.replace(COMPONENT_REGEX, compId));\n}\nlet DomRendererFactory2 = /*#__PURE__*/(() => {\n class DomRendererFactory2 {\n constructor(eventManager, sharedStylesHost, appId, removeStylesOnCompDestroy, doc, platformId, ngZone, nonce = null) {\n this.eventManager = eventManager;\n this.sharedStylesHost = sharedStylesHost;\n this.appId = appId;\n this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;\n this.doc = doc;\n this.platformId = platformId;\n this.ngZone = ngZone;\n this.nonce = nonce;\n this.rendererByCompId = new Map();\n this.platformIsServer = isPlatformServer(platformId);\n this.defaultRenderer = new DefaultDomRenderer2(eventManager, doc, ngZone, this.platformIsServer);\n }\n createRenderer(element, type) {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n if (this.platformIsServer && type.encapsulation === ViewEncapsulation.ShadowDom) {\n // Domino does not support shadow DOM.\n type = {\n ...type,\n encapsulation: ViewEncapsulation.Emulated\n };\n }\n const renderer = this.getOrCreateRenderer(element, type);\n // Renderers have different logic due to different encapsulation behaviours.\n // Ex: for emulated, an attribute is added to the element.\n if (renderer instanceof EmulatedEncapsulationDomRenderer2) {\n renderer.applyToHost(element);\n } else if (renderer instanceof NoneEncapsulationDomRenderer) {\n renderer.applyStyles();\n }\n return renderer;\n }\n getOrCreateRenderer(element, type) {\n const rendererByCompId = this.rendererByCompId;\n let renderer = rendererByCompId.get(type.id);\n if (!renderer) {\n const doc = this.doc;\n const ngZone = this.ngZone;\n const eventManager = this.eventManager;\n const sharedStylesHost = this.sharedStylesHost;\n const removeStylesOnCompDestroy = this.removeStylesOnCompDestroy;\n const platformIsServer = this.platformIsServer;\n switch (type.encapsulation) {\n case ViewEncapsulation.Emulated:\n renderer = new EmulatedEncapsulationDomRenderer2(eventManager, sharedStylesHost, type, this.appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer);\n break;\n case ViewEncapsulation.ShadowDom:\n return new ShadowDomRenderer(eventManager, sharedStylesHost, element, type, doc, ngZone, this.nonce, platformIsServer);\n default:\n renderer = new NoneEncapsulationDomRenderer(eventManager, sharedStylesHost, type, removeStylesOnCompDestroy, doc, ngZone, platformIsServer);\n break;\n }\n rendererByCompId.set(type.id, renderer);\n }\n return renderer;\n }\n ngOnDestroy() {\n this.rendererByCompId.clear();\n }\n static {\n this.ɵfac = function DomRendererFactory2_Factory(t) {\n return new (t || DomRendererFactory2)(i0.ɵɵinject(EventManager), i0.ɵɵinject(SharedStylesHost), i0.ɵɵinject(APP_ID), i0.ɵɵinject(REMOVE_STYLES_ON_COMPONENT_DESTROY), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(PLATFORM_ID), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(CSP_NONCE));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DomRendererFactory2,\n factory: DomRendererFactory2.ɵfac\n });\n }\n }\n return DomRendererFactory2;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass DefaultDomRenderer2 {\n constructor(eventManager, doc, ngZone, platformIsServer) {\n this.eventManager = eventManager;\n this.doc = doc;\n this.ngZone = ngZone;\n this.platformIsServer = platformIsServer;\n this.data = Object.create(null);\n /**\n * By default this renderer throws when encountering synthetic properties\n * This can be disabled for example by the AsyncAnimationRendererFactory\n */\n this.throwOnSyntheticProps = true;\n this.destroyNode = null;\n }\n destroy() {}\n createElement(name, namespace) {\n if (namespace) {\n // TODO: `|| namespace` was added in\n // https://github.com/angular/angular/commit/2b9cc8503d48173492c29f5a271b61126104fbdb to\n // support how Ivy passed around the namespace URI rather than short name at the time. It did\n // not, however extend the support to other parts of the system (setAttribute, setAttribute,\n // and the ServerRenderer). We should decide what exactly the semantics for dealing with\n // namespaces should be and make it consistent.\n // Related issues:\n // https://github.com/angular/angular/issues/44028\n // https://github.com/angular/angular/issues/44883\n return this.doc.createElementNS(NAMESPACE_URIS[namespace] || namespace, name);\n }\n return this.doc.createElement(name);\n }\n createComment(value) {\n return this.doc.createComment(value);\n }\n createText(value) {\n return this.doc.createTextNode(value);\n }\n appendChild(parent, newChild) {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.appendChild(newChild);\n }\n insertBefore(parent, newChild, refChild) {\n if (parent) {\n const targetParent = isTemplateNode(parent) ? parent.content : parent;\n targetParent.insertBefore(newChild, refChild);\n }\n }\n removeChild(parent, oldChild) {\n if (parent) {\n parent.removeChild(oldChild);\n }\n }\n selectRootElement(selectorOrNode, preserveContent) {\n let el = typeof selectorOrNode === 'string' ? this.doc.querySelector(selectorOrNode) : selectorOrNode;\n if (!el) {\n throw new ɵRuntimeError(-5104 /* RuntimeErrorCode.ROOT_NODE_NOT_FOUND */, (typeof ngDevMode === 'undefined' || ngDevMode) && `The selector \"${selectorOrNode}\" did not match any elements`);\n }\n if (!preserveContent) {\n el.textContent = '';\n }\n return el;\n }\n parentNode(node) {\n return node.parentNode;\n }\n nextSibling(node) {\n return node.nextSibling;\n }\n setAttribute(el, name, value, namespace) {\n if (namespace) {\n name = namespace + ':' + name;\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.setAttributeNS(namespaceUri, name, value);\n } else {\n el.setAttribute(name, value);\n }\n } else {\n el.setAttribute(name, value);\n }\n }\n removeAttribute(el, name, namespace) {\n if (namespace) {\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.removeAttributeNS(namespaceUri, name);\n } else {\n el.removeAttribute(`${namespace}:${name}`);\n }\n } else {\n el.removeAttribute(name);\n }\n }\n addClass(el, name) {\n el.classList.add(name);\n }\n removeClass(el, name) {\n el.classList.remove(name);\n }\n setStyle(el, style, value, flags) {\n if (flags & (RendererStyleFlags2.DashCase | RendererStyleFlags2.Important)) {\n el.style.setProperty(style, value, flags & RendererStyleFlags2.Important ? 'important' : '');\n } else {\n el.style[style] = value;\n }\n }\n removeStyle(el, style, flags) {\n if (flags & RendererStyleFlags2.DashCase) {\n // removeProperty has no effect when used on camelCased properties.\n el.style.removeProperty(style);\n } else {\n el.style[style] = '';\n }\n }\n setProperty(el, name, value) {\n if (el == null) {\n return;\n }\n (typeof ngDevMode === 'undefined' || ngDevMode) && this.throwOnSyntheticProps && checkNoSyntheticProp(name, 'property');\n el[name] = value;\n }\n setValue(node, value) {\n node.nodeValue = value;\n }\n listen(target, event, callback) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && this.throwOnSyntheticProps && checkNoSyntheticProp(event, 'listener');\n if (typeof target === 'string') {\n target = ɵgetDOM().getGlobalEventTarget(this.doc, target);\n if (!target) {\n throw new Error(`Unsupported event target ${target} for event ${event}`);\n }\n }\n return this.eventManager.addEventListener(target, event, this.decoratePreventDefault(callback));\n }\n decoratePreventDefault(eventHandler) {\n // `DebugNode.triggerEventHandler` needs to know if the listener was created with\n // decoratePreventDefault or is a listener added outside the Angular context so it can handle\n // the two differently. In the first case, the special '__ngUnwrap__' token is passed to the\n // unwrap the listener (see below).\n return event => {\n // Ivy uses '__ngUnwrap__' as a special token that allows us to unwrap the function\n // so that it can be invoked programmatically by `DebugNode.triggerEventHandler`. The\n // debug_node can inspect the listener toString contents for the existence of this special\n // token. Because the token is a string literal, it is ensured to not be modified by compiled\n // code.\n if (event === '__ngUnwrap__') {\n return eventHandler;\n }\n // Run the event handler inside the ngZone because event handlers are not patched\n // by Zone on the server. This is required only for tests.\n const allowDefaultBehavior = this.platformIsServer ? this.ngZone.runGuarded(() => eventHandler(event)) : eventHandler(event);\n if (allowDefaultBehavior === false) {\n event.preventDefault();\n }\n return undefined;\n };\n }\n}\nconst AT_CHARCODE = /*#__PURE__*/(() => '@'.charCodeAt(0))();\nfunction checkNoSyntheticProp(name, nameKind) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new ɵRuntimeError(5105 /* RuntimeErrorCode.UNEXPECTED_SYNTHETIC_PROPERTY */, `Unexpected synthetic ${nameKind} ${name} found. Please make sure that:\n - Either \\`BrowserAnimationsModule\\` or \\`NoopAnimationsModule\\` are imported in your application.\n - There is corresponding configuration for the animation named \\`${name}\\` defined in the \\`animations\\` field of the \\`@Component\\` decorator (see https://angular.io/api/core/Component#animations).`);\n }\n}\nfunction isTemplateNode(node) {\n return node.tagName === 'TEMPLATE' && node.content !== undefined;\n}\nclass ShadowDomRenderer extends DefaultDomRenderer2 {\n constructor(eventManager, sharedStylesHost, hostEl, component, doc, ngZone, nonce, platformIsServer) {\n super(eventManager, doc, ngZone, platformIsServer);\n this.sharedStylesHost = sharedStylesHost;\n this.hostEl = hostEl;\n this.shadowRoot = hostEl.attachShadow({\n mode: 'open'\n });\n this.sharedStylesHost.addHost(this.shadowRoot);\n const styles = shimStylesContent(component.id, component.styles);\n for (const style of styles) {\n const styleEl = document.createElement('style');\n if (nonce) {\n styleEl.setAttribute('nonce', nonce);\n }\n styleEl.textContent = style;\n this.shadowRoot.appendChild(styleEl);\n }\n }\n nodeOrShadowRoot(node) {\n return node === this.hostEl ? this.shadowRoot : node;\n }\n appendChild(parent, newChild) {\n return super.appendChild(this.nodeOrShadowRoot(parent), newChild);\n }\n insertBefore(parent, newChild, refChild) {\n return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);\n }\n removeChild(parent, oldChild) {\n return super.removeChild(this.nodeOrShadowRoot(parent), oldChild);\n }\n parentNode(node) {\n return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));\n }\n destroy() {\n this.sharedStylesHost.removeHost(this.shadowRoot);\n }\n}\nclass NoneEncapsulationDomRenderer extends DefaultDomRenderer2 {\n constructor(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, compId) {\n super(eventManager, doc, ngZone, platformIsServer);\n this.sharedStylesHost = sharedStylesHost;\n this.removeStylesOnCompDestroy = removeStylesOnCompDestroy;\n this.styles = compId ? shimStylesContent(compId, component.styles) : component.styles;\n }\n applyStyles() {\n this.sharedStylesHost.addStyles(this.styles);\n }\n destroy() {\n if (!this.removeStylesOnCompDestroy) {\n return;\n }\n this.sharedStylesHost.removeStyles(this.styles);\n }\n}\nclass EmulatedEncapsulationDomRenderer2 extends NoneEncapsulationDomRenderer {\n constructor(eventManager, sharedStylesHost, component, appId, removeStylesOnCompDestroy, doc, ngZone, platformIsServer) {\n const compId = appId + '-' + component.id;\n super(eventManager, sharedStylesHost, component, removeStylesOnCompDestroy, doc, ngZone, platformIsServer, compId);\n this.contentAttr = shimContentAttribute(compId);\n this.hostAttr = shimHostAttribute(compId);\n }\n applyToHost(element) {\n this.applyStyles();\n this.setAttribute(element, this.hostAttr, '');\n }\n createElement(parent, name) {\n const el = super.createElement(parent, name);\n super.setAttribute(el, this.contentAttr, '');\n return el;\n }\n}\nlet DomEventsPlugin = /*#__PURE__*/(() => {\n class DomEventsPlugin extends EventManagerPlugin {\n constructor(doc) {\n super(doc);\n }\n // This plugin should come last in the list of plugins, because it accepts all\n // events.\n supports(eventName) {\n return true;\n }\n addEventListener(element, eventName, handler) {\n element.addEventListener(eventName, handler, false);\n return () => this.removeEventListener(element, eventName, handler);\n }\n removeEventListener(target, eventName, callback) {\n return target.removeEventListener(eventName, callback);\n }\n static {\n this.ɵfac = function DomEventsPlugin_Factory(t) {\n return new (t || DomEventsPlugin)(i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DomEventsPlugin,\n factory: DomEventsPlugin.ɵfac\n });\n }\n }\n return DomEventsPlugin;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Defines supported modifiers for key events.\n */\nconst MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];\n// The following values are here for cross-browser compatibility and to match the W3C standard\n// cf https://www.w3.org/TR/DOM-Level-3-Events-key/\nconst _keyMap = {\n '\\b': 'Backspace',\n '\\t': 'Tab',\n '\\x7F': 'Delete',\n '\\x1B': 'Escape',\n 'Del': 'Delete',\n 'Esc': 'Escape',\n 'Left': 'ArrowLeft',\n 'Right': 'ArrowRight',\n 'Up': 'ArrowUp',\n 'Down': 'ArrowDown',\n 'Menu': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'Win': 'OS'\n};\n/**\n * Retrieves modifiers from key-event objects.\n */\nconst MODIFIER_KEY_GETTERS = {\n 'alt': event => event.altKey,\n 'control': event => event.ctrlKey,\n 'meta': event => event.metaKey,\n 'shift': event => event.shiftKey\n};\n/**\n * A browser plug-in that provides support for handling of key events in Angular.\n */\nlet KeyEventsPlugin = /*#__PURE__*/(() => {\n class KeyEventsPlugin extends EventManagerPlugin {\n /**\n * Initializes an instance of the browser plug-in.\n * @param doc The document in which key events will be detected.\n */\n constructor(doc) {\n super(doc);\n }\n /**\n * Reports whether a named key event is supported.\n * @param eventName The event name to query.\n * @return True if the named key event is supported.\n */\n supports(eventName) {\n return KeyEventsPlugin.parseEventName(eventName) != null;\n }\n /**\n * Registers a handler for a specific element and key event.\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the key event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @returns The key event that was registered.\n */\n addEventListener(element, eventName, handler) {\n const parsedEvent = KeyEventsPlugin.parseEventName(eventName);\n const outsideHandler = KeyEventsPlugin.eventCallback(parsedEvent['fullKey'], handler, this.manager.getZone());\n return this.manager.getZone().runOutsideAngular(() => {\n return ɵgetDOM().onAndCancel(element, parsedEvent['domEventName'], outsideHandler);\n });\n }\n /**\n * Parses the user provided full keyboard event definition and normalizes it for\n * later internal use. It ensures the string is all lowercase, converts special\n * characters to a standard spelling, and orders all the values consistently.\n *\n * @param eventName The name of the key event to listen for.\n * @returns an object with the full, normalized string, and the dom event name\n * or null in the case when the event doesn't match a keyboard event.\n */\n static parseEventName(eventName) {\n const parts = eventName.toLowerCase().split('.');\n const domEventName = parts.shift();\n if (parts.length === 0 || !(domEventName === 'keydown' || domEventName === 'keyup')) {\n return null;\n }\n const key = KeyEventsPlugin._normalizeKey(parts.pop());\n let fullKey = '';\n let codeIX = parts.indexOf('code');\n if (codeIX > -1) {\n parts.splice(codeIX, 1);\n fullKey = 'code.';\n }\n MODIFIER_KEYS.forEach(modifierName => {\n const index = parts.indexOf(modifierName);\n if (index > -1) {\n parts.splice(index, 1);\n fullKey += modifierName + '.';\n }\n });\n fullKey += key;\n if (parts.length != 0 || key.length === 0) {\n // returning null instead of throwing to let another plugin process the event\n return null;\n }\n // NOTE: Please don't rewrite this as so, as it will break JSCompiler property renaming.\n // The code must remain in the `result['domEventName']` form.\n // return {domEventName, fullKey};\n const result = {};\n result['domEventName'] = domEventName;\n result['fullKey'] = fullKey;\n return result;\n }\n /**\n * Determines whether the actual keys pressed match the configured key code string.\n * The `fullKeyCode` event is normalized in the `parseEventName` method when the\n * event is attached to the DOM during the `addEventListener` call. This is unseen\n * by the end user and is normalized for internal consistency and parsing.\n *\n * @param event The keyboard event.\n * @param fullKeyCode The normalized user defined expected key event string\n * @returns boolean.\n */\n static matchEventFullKeyCode(event, fullKeyCode) {\n let keycode = _keyMap[event.key] || event.key;\n let key = '';\n if (fullKeyCode.indexOf('code.') > -1) {\n keycode = event.code;\n key = 'code.';\n }\n // the keycode could be unidentified so we have to check here\n if (keycode == null || !keycode) return false;\n keycode = keycode.toLowerCase();\n if (keycode === ' ') {\n keycode = 'space'; // for readability\n } else if (keycode === '.') {\n keycode = 'dot'; // because '.' is used as a separator in event names\n }\n MODIFIER_KEYS.forEach(modifierName => {\n if (modifierName !== keycode) {\n const modifierGetter = MODIFIER_KEY_GETTERS[modifierName];\n if (modifierGetter(event)) {\n key += modifierName + '.';\n }\n }\n });\n key += keycode;\n return key === fullKeyCode;\n }\n /**\n * Configures a handler callback for a key event.\n * @param fullKey The event name that combines all simultaneous keystrokes.\n * @param handler The function that responds to the key event.\n * @param zone The zone in which the event occurred.\n * @returns A callback function.\n */\n static eventCallback(fullKey, handler, zone) {\n return event => {\n if (KeyEventsPlugin.matchEventFullKeyCode(event, fullKey)) {\n zone.runGuarded(() => handler(event));\n }\n };\n }\n /** @internal */\n static _normalizeKey(keyName) {\n return keyName === 'esc' ? 'escape' : keyName;\n }\n static {\n this.ɵfac = function KeyEventsPlugin_Factory(t) {\n return new (t || KeyEventsPlugin)(i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: KeyEventsPlugin,\n factory: KeyEventsPlugin.ɵfac\n });\n }\n }\n return KeyEventsPlugin;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Bootstraps an instance of an Angular application and renders a standalone component as the\n * application's root component. More information about standalone components can be found in [this\n * guide](guide/standalone-components).\n *\n * @usageNotes\n * The root component passed into this function *must* be a standalone one (should have the\n * `standalone: true` flag in the `@Component` decorator config).\n *\n * ```typescript\n * @Component({\n * standalone: true,\n * template: 'Hello world!'\n * })\n * class RootComponent {}\n *\n * const appRef: ApplicationRef = await bootstrapApplication(RootComponent);\n * ```\n *\n * You can add the list of providers that should be available in the application injector by\n * specifying the `providers` field in an object passed as the second argument:\n *\n * ```typescript\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * {provide: BACKEND_URL, useValue: 'https://yourdomain.com/api'}\n * ]\n * });\n * ```\n *\n * The `importProvidersFrom` helper method can be used to collect all providers from any\n * existing NgModule (and transitively from all NgModules that it imports):\n *\n * ```typescript\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * importProvidersFrom(SomeNgModule)\n * ]\n * });\n * ```\n *\n * Note: the `bootstrapApplication` method doesn't include [Testability](api/core/Testability) by\n * default. You can add [Testability](api/core/Testability) by getting the list of necessary\n * providers using `provideProtractorTestingSupport()` function and adding them into the `providers`\n * array, for example:\n *\n * ```typescript\n * import {provideProtractorTestingSupport} from '@angular/platform-browser';\n *\n * await bootstrapApplication(RootComponent, {providers: [provideProtractorTestingSupport()]});\n * ```\n *\n * @param rootComponent A reference to a standalone component that should be rendered.\n * @param options Extra configuration for the bootstrap operation, see `ApplicationConfig` for\n * additional info.\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n *\n * @publicApi\n */\nfunction bootstrapApplication(rootComponent, options) {\n return ɵinternalCreateApplication({\n rootComponent,\n ...createProvidersConfig(options)\n });\n}\n/**\n * Create an instance of an Angular application without bootstrapping any components. This is useful\n * for the situation where one wants to decouple application environment creation (a platform and\n * associated injectors) from rendering components on a screen. Components can be subsequently\n * bootstrapped on the returned `ApplicationRef`.\n *\n * @param options Extra configuration for the application environment, see `ApplicationConfig` for\n * additional info.\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n *\n * @publicApi\n */\nfunction createApplication(options) {\n return ɵinternalCreateApplication(createProvidersConfig(options));\n}\nfunction createProvidersConfig(options) {\n return {\n appProviders: [...BROWSER_MODULE_PROVIDERS, ...(options?.providers ?? [])],\n platformProviders: INTERNAL_BROWSER_PLATFORM_PROVIDERS\n };\n}\n/**\n * Returns a set of providers required to setup [Testability](api/core/Testability) for an\n * application bootstrapped using the `bootstrapApplication` function. The set of providers is\n * needed to support testing an application with Protractor (which relies on the Testability APIs\n * to be present).\n *\n * @returns An array of providers required to setup Testability for an application and make it\n * available for testing using Protractor.\n *\n * @publicApi\n */\nfunction provideProtractorTestingSupport() {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideProtractorTestingSupport` call results in app\n // code.\n return [...TESTABILITY_PROVIDERS];\n}\nfunction initDomAdapter() {\n BrowserDomAdapter.makeCurrent();\n}\nfunction errorHandler() {\n return new ErrorHandler();\n}\nfunction _document() {\n // Tell ivy about the global document\n ɵsetDocument(document);\n return document;\n}\nconst INTERNAL_BROWSER_PLATFORM_PROVIDERS = [{\n provide: PLATFORM_ID,\n useValue: ɵPLATFORM_BROWSER_ID\n}, {\n provide: PLATFORM_INITIALIZER,\n useValue: initDomAdapter,\n multi: true\n}, {\n provide: DOCUMENT,\n useFactory: _document,\n deps: []\n}];\n/**\n * A factory function that returns a `PlatformRef` instance associated with browser service\n * providers.\n *\n * @publicApi\n */\nconst platformBrowser = /*#__PURE__*/createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);\n/**\n * Internal marker to signal whether providers from the `BrowserModule` are already present in DI.\n * This is needed to avoid loading `BrowserModule` providers twice. We can't rely on the\n * `BrowserModule` presence itself, since the standalone-based bootstrap just imports\n * `BrowserModule` providers without referencing the module itself.\n */\nconst BROWSER_MODULE_PROVIDERS_MARKER = /*#__PURE__*/new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'BrowserModule Providers Marker' : '');\nconst TESTABILITY_PROVIDERS = [{\n provide: ɵTESTABILITY_GETTER,\n useClass: BrowserGetTestability,\n deps: []\n}, {\n provide: ɵTESTABILITY,\n useClass: Testability,\n deps: [NgZone, TestabilityRegistry, ɵTESTABILITY_GETTER]\n}, {\n provide: Testability,\n // Also provide as `Testability` for backwards-compatibility.\n useClass: Testability,\n deps: [NgZone, TestabilityRegistry, ɵTESTABILITY_GETTER]\n}];\nconst BROWSER_MODULE_PROVIDERS = [{\n provide: ɵINJECTOR_SCOPE,\n useValue: 'root'\n}, {\n provide: ErrorHandler,\n useFactory: errorHandler,\n deps: []\n}, {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: DomEventsPlugin,\n multi: true,\n deps: [DOCUMENT, NgZone, PLATFORM_ID]\n}, {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: KeyEventsPlugin,\n multi: true,\n deps: [DOCUMENT]\n}, DomRendererFactory2, SharedStylesHost, EventManager, {\n provide: RendererFactory2,\n useExisting: DomRendererFactory2\n}, {\n provide: XhrFactory,\n useClass: BrowserXhr,\n deps: []\n}, typeof ngDevMode === 'undefined' || ngDevMode ? {\n provide: BROWSER_MODULE_PROVIDERS_MARKER,\n useValue: true\n} : []];\n/**\n * Exports required infrastructure for all Angular apps.\n * Included by default in all Angular apps created with the CLI\n * `new` command.\n * Re-exports `CommonModule` and `ApplicationModule`, making their\n * exports and providers available to all apps.\n *\n * @publicApi\n */\nlet BrowserModule = /*#__PURE__*/(() => {\n class BrowserModule {\n constructor(providersAlreadyPresent) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && providersAlreadyPresent) {\n throw new ɵRuntimeError(5100 /* RuntimeErrorCode.BROWSER_MODULE_ALREADY_LOADED */, `Providers from the \\`BrowserModule\\` have already been loaded. If you need access ` + `to common directives such as NgIf and NgFor, import the \\`CommonModule\\` instead.`);\n }\n }\n /**\n * Configures a browser-based app to transition from a server-rendered app, if\n * one is present on the page.\n *\n * @param params An object containing an identifier for the app to transition.\n * The ID must match between the client and server versions of the app.\n * @returns The reconfigured `BrowserModule` to import into the app's root `AppModule`.\n *\n * @deprecated Use {@link APP_ID} instead to set the application ID.\n */\n static withServerTransition(params) {\n return {\n ngModule: BrowserModule,\n providers: [{\n provide: APP_ID,\n useValue: params.appId\n }]\n };\n }\n static {\n this.ɵfac = function BrowserModule_Factory(t) {\n return new (t || BrowserModule)(i0.ɵɵinject(BROWSER_MODULE_PROVIDERS_MARKER, 12));\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: BrowserModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],\n imports: [CommonModule, ApplicationModule]\n });\n }\n }\n return BrowserModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A service for managing HTML `` tags.\n *\n * Properties of the `MetaDefinition` object match the attributes of the\n * HTML `` tag. These tags define document metadata that is important for\n * things like configuring a Content Security Policy, defining browser compatibility\n * and security settings, setting HTTP Headers, defining rich content for social sharing,\n * and Search Engine Optimization (SEO).\n *\n * To identify specific `` tags in a document, use an attribute selection\n * string in the format `\"tag_attribute='value string'\"`.\n * For example, an `attrSelector` value of `\"name='description'\"` matches a tag\n * whose `name` attribute has the value `\"description\"`.\n * Selectors are used with the `querySelector()` Document method,\n * in the format `meta[{attrSelector}]`.\n *\n * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)\n * @see [Document.querySelector()](https://developer.mozilla.org/docs/Web/API/Document/querySelector)\n *\n *\n * @publicApi\n */\nlet Meta = /*#__PURE__*/(() => {\n class Meta {\n constructor(_doc) {\n this._doc = _doc;\n this._dom = ɵgetDOM();\n }\n /**\n * Retrieves or creates a specific `` tag element in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * If an existing element is found, it is returned and is not modified in any way.\n * @param tag The definition of a `` element to match or create.\n * @param forceCreation True to create a new element without checking whether one already exists.\n * @returns The existing element with the same attributes and values if found,\n * the new element if no match is found, or `null` if the tag parameter is not defined.\n */\n addTag(tag, forceCreation = false) {\n if (!tag) return null;\n return this._getOrCreateElement(tag, forceCreation);\n }\n /**\n * Retrieves or creates a set of `` tag elements in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * @param tags An array of tag definitions to match or create.\n * @param forceCreation True to create new elements without checking whether they already exist.\n * @returns The matching elements if found, or the new elements.\n */\n addTags(tags, forceCreation = false) {\n if (!tags) return [];\n return tags.reduce((result, tag) => {\n if (tag) {\n result.push(this._getOrCreateElement(tag, forceCreation));\n }\n return result;\n }, []);\n }\n /**\n * Retrieves a `` tag element in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching element, if any.\n */\n getTag(attrSelector) {\n if (!attrSelector) return null;\n return this._doc.querySelector(`meta[${attrSelector}]`) || null;\n }\n /**\n * Retrieves a set of `` tag elements in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching elements, if any.\n */\n getTags(attrSelector) {\n if (!attrSelector) return [];\n const list /*NodeList*/ = this._doc.querySelectorAll(`meta[${attrSelector}]`);\n return list ? [].slice.call(list) : [];\n }\n /**\n * Modifies an existing `` tag element in the current HTML document.\n * @param tag The tag description with which to replace the existing tag content.\n * @param selector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n * If not supplied, matches a tag with the same `name` or `property` attribute value as the\n * replacement tag.\n * @return The modified element.\n */\n updateTag(tag, selector) {\n if (!tag) return null;\n selector = selector || this._parseSelector(tag);\n const meta = this.getTag(selector);\n if (meta) {\n return this._setMetaElementAttributes(tag, meta);\n }\n return this._getOrCreateElement(tag, true);\n }\n /**\n * Removes an existing `` tag element from the current HTML document.\n * @param attrSelector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n */\n removeTag(attrSelector) {\n this.removeTagElement(this.getTag(attrSelector));\n }\n /**\n * Removes an existing `` tag element from the current HTML document.\n * @param meta The tag definition to match against to identify an existing tag.\n */\n removeTagElement(meta) {\n if (meta) {\n this._dom.remove(meta);\n }\n }\n _getOrCreateElement(meta, forceCreation = false) {\n if (!forceCreation) {\n const selector = this._parseSelector(meta);\n // It's allowed to have multiple elements with the same name so it's not enough to\n // just check that element with the same name already present on the page. We also need to\n // check if element has tag attributes\n const elem = this.getTags(selector).filter(elem => this._containsAttributes(meta, elem))[0];\n if (elem !== undefined) return elem;\n }\n const element = this._dom.createElement('meta');\n this._setMetaElementAttributes(meta, element);\n const head = this._doc.getElementsByTagName('head')[0];\n head.appendChild(element);\n return element;\n }\n _setMetaElementAttributes(tag, el) {\n Object.keys(tag).forEach(prop => el.setAttribute(this._getMetaKeyMap(prop), tag[prop]));\n return el;\n }\n _parseSelector(tag) {\n const attr = tag.name ? 'name' : 'property';\n return `${attr}=\"${tag[attr]}\"`;\n }\n _containsAttributes(tag, elem) {\n return Object.keys(tag).every(key => elem.getAttribute(this._getMetaKeyMap(key)) === tag[key]);\n }\n _getMetaKeyMap(prop) {\n return META_KEYS_MAP[prop] || prop;\n }\n static {\n this.ɵfac = function Meta_Factory(t) {\n return new (t || Meta)(i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Meta,\n factory: Meta.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return Meta;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Mapping for MetaDefinition properties with their correct meta attribute names\n */\nconst META_KEYS_MAP = {\n httpEquiv: 'http-equiv'\n};\n\n/**\n * A service that can be used to get and set the title of a current HTML document.\n *\n * Since an Angular application can't be bootstrapped on the entire HTML document (`` tag)\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\n * (representing the `` tag). Instead, this service can be used to set and get the current\n * title value.\n *\n * @publicApi\n */\nlet Title = /*#__PURE__*/(() => {\n class Title {\n constructor(_doc) {\n this._doc = _doc;\n }\n /**\n * Get the title of the current HTML document.\n */\n getTitle() {\n return this._doc.title;\n }\n /**\n * Set the title of the current HTML document.\n * @param newTitle\n */\n setTitle(newTitle) {\n this._doc.title = newTitle || '';\n }\n static {\n this.ɵfac = function Title_Factory(t) {\n return new (t || Title)(i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Title,\n factory: Title.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return Title;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if\n * `name` is `'probe'`.\n * @param name Name under which it will be exported. Keep in mind this will be a property of the\n * global `ng` object.\n * @param value The value to export.\n */\nfunction exportNgVar(name, value) {\n if (typeof COMPILED === 'undefined' || !COMPILED) {\n // Note: we can't export `ng` when using closure enhanced optimization as:\n // - closure declares globals itself for minified names, which sometimes clobber our `ng` global\n // - we can't declare a closure extern as the namespace `ng` is already used within Google\n // for typings for angularJS (via `goog.provide('ng....')`).\n const ng = ɵglobal['ng'] = ɵglobal['ng'] || {};\n ng[name] = value;\n }\n}\nclass ChangeDetectionPerfRecord {\n constructor(msPerTick, numTicks) {\n this.msPerTick = msPerTick;\n this.numTicks = numTicks;\n }\n}\n/**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nclass AngularProfiler {\n constructor(ref) {\n this.appRef = ref.injector.get(ApplicationRef);\n }\n // tslint:disable:no-console\n /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n */\n timeChangeDetection(config) {\n const record = config && config['record'];\n const profileName = 'Change Detection';\n // Profiler is not available in Android browsers without dev tools opened\n if (record && 'profile' in console && typeof console.profile === 'function') {\n console.profile(profileName);\n }\n const start = performance.now();\n let numTicks = 0;\n while (numTicks < 5 || performance.now() - start < 500) {\n this.appRef.tick();\n numTicks++;\n }\n const end = performance.now();\n if (record && 'profileEnd' in console && typeof console.profileEnd === 'function') {\n console.profileEnd(profileName);\n }\n const msPerTick = (end - start) / numTicks;\n console.log(`ran ${numTicks} change detection cycles`);\n console.log(`${msPerTick.toFixed(2)} ms per check`);\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\n }\n}\nconst PROFILER_GLOBAL_NAME = 'profiler';\n/**\n * Enabled Angular debug tools that are accessible via your browser's\n * developer console.\n *\n * Usage:\n *\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\n * then hit Enter.\n *\n * @publicApi\n */\nfunction enableDebugTools(ref) {\n exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));\n return ref;\n}\n/**\n * Disables Angular tools.\n *\n * @publicApi\n */\nfunction disableDebugTools() {\n exportNgVar(PROFILER_GLOBAL_NAME, null);\n}\n\n/**\n * Predicates for use with {@link DebugElement}'s query functions.\n *\n * @publicApi\n */\nclass By {\n /**\n * Match all nodes.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n */\n static all() {\n return () => true;\n }\n /**\n * Match elements by the given CSS selector.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n */\n static css(selector) {\n return debugElement => {\n return debugElement.nativeElement != null ? elementMatches(debugElement.nativeElement, selector) : false;\n };\n }\n /**\n * Match nodes that have the given directive present.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n */\n static directive(type) {\n return debugNode => debugNode.providerTokens.indexOf(type) !== -1;\n }\n}\nfunction elementMatches(n, selector) {\n if (ɵgetDOM().isElementNode(n)) {\n return n.matches && n.matches(selector) || n.msMatchesSelector && n.msMatchesSelector(selector) || n.webkitMatchesSelector && n.webkitMatchesSelector(selector);\n }\n return false;\n}\n\n/**\n * Supported HammerJS recognizer event names.\n */\nconst EVENT_NAMES = {\n // pan\n 'pan': true,\n 'panstart': true,\n 'panmove': true,\n 'panend': true,\n 'pancancel': true,\n 'panleft': true,\n 'panright': true,\n 'panup': true,\n 'pandown': true,\n // pinch\n 'pinch': true,\n 'pinchstart': true,\n 'pinchmove': true,\n 'pinchend': true,\n 'pinchcancel': true,\n 'pinchin': true,\n 'pinchout': true,\n // press\n 'press': true,\n 'pressup': true,\n // rotate\n 'rotate': true,\n 'rotatestart': true,\n 'rotatemove': true,\n 'rotateend': true,\n 'rotatecancel': true,\n // swipe\n 'swipe': true,\n 'swipeleft': true,\n 'swiperight': true,\n 'swipeup': true,\n 'swipedown': true,\n // tap\n 'tap': true,\n 'doubletap': true\n};\n/**\n * DI token for providing [HammerJS](https://hammerjs.github.io/) support to Angular.\n * @see {@link HammerGestureConfig}\n *\n * @ngModule HammerModule\n * @publicApi\n */\nconst HAMMER_GESTURE_CONFIG = /*#__PURE__*/new InjectionToken('HammerGestureConfig');\n/**\n * Injection token used to provide a {@link HammerLoader} to Angular.\n *\n * @publicApi\n */\nconst HAMMER_LOADER = /*#__PURE__*/new InjectionToken('HammerLoader');\n/**\n * An injectable [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * for gesture recognition. Configures specific event recognition.\n * @publicApi\n */\nlet HammerGestureConfig = /*#__PURE__*/(() => {\n class HammerGestureConfig {\n constructor() {\n /**\n * A set of supported event names for gestures to be used in Angular.\n * Angular supports all built-in recognizers, as listed in\n * [HammerJS documentation](https://hammerjs.github.io/).\n */\n this.events = [];\n /**\n * Maps gesture event names to a set of configuration options\n * that specify overrides to the default values for specific properties.\n *\n * The key is a supported event name to be configured,\n * and the options object contains a set of properties, with override values\n * to be applied to the named recognizer event.\n * For example, to disable recognition of the rotate event, specify\n * `{\"rotate\": {\"enable\": false}}`.\n *\n * Properties that are not present take the HammerJS default values.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](https://hammerjs.github.io/).\n *\n */\n this.overrides = {};\n }\n /**\n * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * and attaches it to a given HTML element.\n * @param element The element that will recognize gestures.\n * @returns A HammerJS event-manager object.\n */\n buildHammer(element) {\n const mc = new Hammer(element, this.options);\n mc.get('pinch').set({\n enable: true\n });\n mc.get('rotate').set({\n enable: true\n });\n for (const eventName in this.overrides) {\n mc.get(eventName).set(this.overrides[eventName]);\n }\n return mc;\n }\n static {\n this.ɵfac = function HammerGestureConfig_Factory(t) {\n return new (t || HammerGestureConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HammerGestureConfig,\n factory: HammerGestureConfig.ɵfac\n });\n }\n }\n return HammerGestureConfig;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Event plugin that adds Hammer support to an application.\n *\n * @ngModule HammerModule\n */\nlet HammerGesturesPlugin = /*#__PURE__*/(() => {\n class HammerGesturesPlugin extends EventManagerPlugin {\n constructor(doc, _config, console, loader) {\n super(doc);\n this._config = _config;\n this.console = console;\n this.loader = loader;\n this._loaderPromise = null;\n }\n supports(eventName) {\n if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {\n return false;\n }\n if (!window.Hammer && !this.loader) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The \"${eventName}\" event cannot be bound because Hammer.JS is not ` + `loaded and no custom loader has been specified.`);\n }\n return false;\n }\n return true;\n }\n addEventListener(element, eventName, handler) {\n const zone = this.manager.getZone();\n eventName = eventName.toLowerCase();\n // If Hammer is not present but a loader is specified, we defer adding the event listener\n // until Hammer is loaded.\n if (!window.Hammer && this.loader) {\n this._loaderPromise = this._loaderPromise || zone.runOutsideAngular(() => this.loader());\n // This `addEventListener` method returns a function to remove the added listener.\n // Until Hammer is loaded, the returned function needs to *cancel* the registration rather\n // than remove anything.\n let cancelRegistration = false;\n let deregister = () => {\n cancelRegistration = true;\n };\n zone.runOutsideAngular(() => this._loaderPromise.then(() => {\n // If Hammer isn't actually loaded when the custom loader resolves, give up.\n if (!window.Hammer) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);\n }\n deregister = () => {};\n return;\n }\n if (!cancelRegistration) {\n // Now that Hammer is loaded and the listener is being loaded for real,\n // the deregistration function changes from canceling registration to\n // removal.\n deregister = this.addEventListener(element, eventName, handler);\n }\n }).catch(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n this.console.warn(`The \"${eventName}\" event cannot be bound because the custom ` + `Hammer.JS loader failed.`);\n }\n deregister = () => {};\n }));\n // Return a function that *executes* `deregister` (and not `deregister` itself) so that we\n // can change the behavior of `deregister` once the listener is added. Using a closure in\n // this way allows us to avoid any additional data structures to track listener removal.\n return () => {\n deregister();\n };\n }\n return zone.runOutsideAngular(() => {\n // Creating the manager bind events, must be done outside of angular\n const mc = this._config.buildHammer(element);\n const callback = function (eventObj) {\n zone.runGuarded(function () {\n handler(eventObj);\n });\n };\n mc.on(eventName, callback);\n return () => {\n mc.off(eventName, callback);\n // destroy mc to prevent memory leak\n if (typeof mc.destroy === 'function') {\n mc.destroy();\n }\n };\n });\n }\n isCustomEvent(eventName) {\n return this._config.events.indexOf(eventName) > -1;\n }\n static {\n this.ɵfac = function HammerGesturesPlugin_Factory(t) {\n return new (t || HammerGesturesPlugin)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(HAMMER_GESTURE_CONFIG), i0.ɵɵinject(i0.ɵConsole), i0.ɵɵinject(HAMMER_LOADER, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HammerGesturesPlugin,\n factory: HammerGesturesPlugin.ɵfac\n });\n }\n }\n return HammerGesturesPlugin;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Adds support for HammerJS.\n *\n * Import this module at the root of your application so that Angular can work with\n * HammerJS to detect gesture events.\n *\n * Note that applications still need to include the HammerJS script itself. This module\n * simply sets up the coordination layer between HammerJS and Angular's `EventManager`.\n *\n * @publicApi\n */\nlet HammerModule = /*#__PURE__*/(() => {\n class HammerModule {\n static {\n this.ɵfac = function HammerModule_Factory(t) {\n return new (t || HammerModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: HammerModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [{\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, ɵConsole, [new Optional(), HAMMER_LOADER]]\n }, {\n provide: HAMMER_GESTURE_CONFIG,\n useClass: HammerGestureConfig,\n deps: []\n }]\n });\n }\n }\n return HammerModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](https://g.co/ng/security).\n *\n * @publicApi\n */\nlet DomSanitizer = /*#__PURE__*/(() => {\n class DomSanitizer {\n static {\n this.ɵfac = function DomSanitizer_Factory(t) {\n return new (t || DomSanitizer)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DomSanitizer,\n factory: function DomSanitizer_Factory(t) {\n let r = null;\n if (t) {\n r = new (t || DomSanitizer)();\n } else {\n r = i0.ɵɵinject(DomSanitizerImpl);\n }\n return r;\n },\n providedIn: 'root'\n });\n }\n }\n return DomSanitizer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet DomSanitizerImpl = /*#__PURE__*/(() => {\n class DomSanitizerImpl extends DomSanitizer {\n constructor(_doc) {\n super();\n this._doc = _doc;\n }\n sanitize(ctx, value) {\n if (value == null) return null;\n switch (ctx) {\n case SecurityContext.NONE:\n return value;\n case SecurityContext.HTML:\n if (ɵallowSanitizationBypassAndThrow(value, \"HTML\" /* BypassType.Html */)) {\n return ɵunwrapSafeValue(value);\n }\n return ɵ_sanitizeHtml(this._doc, String(value)).toString();\n case SecurityContext.STYLE:\n if (ɵallowSanitizationBypassAndThrow(value, \"Style\" /* BypassType.Style */)) {\n return ɵunwrapSafeValue(value);\n }\n return value;\n case SecurityContext.SCRIPT:\n if (ɵallowSanitizationBypassAndThrow(value, \"Script\" /* BypassType.Script */)) {\n return ɵunwrapSafeValue(value);\n }\n throw new ɵRuntimeError(5200 /* RuntimeErrorCode.SANITIZATION_UNSAFE_SCRIPT */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'unsafe value used in a script context');\n case SecurityContext.URL:\n if (ɵallowSanitizationBypassAndThrow(value, \"URL\" /* BypassType.Url */)) {\n return ɵunwrapSafeValue(value);\n }\n return ɵ_sanitizeUrl(String(value));\n case SecurityContext.RESOURCE_URL:\n if (ɵallowSanitizationBypassAndThrow(value, \"ResourceURL\" /* BypassType.ResourceUrl */)) {\n return ɵunwrapSafeValue(value);\n }\n throw new ɵRuntimeError(5201 /* RuntimeErrorCode.SANITIZATION_UNSAFE_RESOURCE_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) && `unsafe value used in a resource URL context (see ${ɵXSS_SECURITY_URL})`);\n default:\n throw new ɵRuntimeError(5202 /* RuntimeErrorCode.SANITIZATION_UNEXPECTED_CTX */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Unexpected SecurityContext ${ctx} (see ${ɵXSS_SECURITY_URL})`);\n }\n }\n bypassSecurityTrustHtml(value) {\n return ɵbypassSanitizationTrustHtml(value);\n }\n bypassSecurityTrustStyle(value) {\n return ɵbypassSanitizationTrustStyle(value);\n }\n bypassSecurityTrustScript(value) {\n return ɵbypassSanitizationTrustScript(value);\n }\n bypassSecurityTrustUrl(value) {\n return ɵbypassSanitizationTrustUrl(value);\n }\n bypassSecurityTrustResourceUrl(value) {\n return ɵbypassSanitizationTrustResourceUrl(value);\n }\n static {\n this.ɵfac = function DomSanitizerImpl_Factory(t) {\n return new (t || DomSanitizerImpl)(i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DomSanitizerImpl,\n factory: DomSanitizerImpl.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return DomSanitizerImpl;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The list of features as an enum to uniquely type each `HydrationFeature`.\n * @see {@link HydrationFeature}\n *\n * @publicApi\n */\nvar HydrationFeatureKind = /*#__PURE__*/function (HydrationFeatureKind) {\n HydrationFeatureKind[HydrationFeatureKind[\"NoHttpTransferCache\"] = 0] = \"NoHttpTransferCache\";\n HydrationFeatureKind[HydrationFeatureKind[\"HttpTransferCacheOptions\"] = 1] = \"HttpTransferCacheOptions\";\n return HydrationFeatureKind;\n}(HydrationFeatureKind || {});\n/**\n * Helper function to create an object that represents a Hydration feature.\n */\nfunction hydrationFeature(ɵkind, ɵproviders = [], ɵoptions = {}) {\n return {\n ɵkind,\n ɵproviders\n };\n}\n/**\n * Disables HTTP transfer cache. Effectively causes HTTP requests to be performed twice: once on the\n * server and other one on the browser.\n *\n * @publicApi\n */\nfunction withNoHttpTransferCache() {\n // This feature has no providers and acts as a flag that turns off\n // HTTP transfer cache (which otherwise is turned on by default).\n return hydrationFeature(HydrationFeatureKind.NoHttpTransferCache);\n}\n/**\n * The function accepts a an object, which allows to configure cache parameters,\n * such as which headers should be included (no headers are included by default),\n * wether POST requests should be cached or a callback function to determine if a\n * particular request should be cached.\n *\n * @publicApi\n */\nfunction withHttpTransferCacheOptions(options) {\n // This feature has no providers and acts as a flag to pass options to the HTTP transfer cache.\n return hydrationFeature(HydrationFeatureKind.HttpTransferCacheOptions, ɵwithHttpTransferCache(options));\n}\n/**\n * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function\n * that verifies whether compatible ZoneJS was used in an application\n * and logs a warning in a console if it's not the case.\n */\nfunction provideZoneJsCompatibilityDetector() {\n return [{\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => {\n const ngZone = inject(NgZone);\n // Checking `ngZone instanceof NgZone` would be insufficient here,\n // because custom implementations might use NgZone as a base class.\n if (ngZone.constructor !== NgZone) {\n const console = inject(ɵConsole);\n const message = ɵformatRuntimeError(-5000 /* RuntimeErrorCode.UNSUPPORTED_ZONEJS_INSTANCE */, 'Angular detected that hydration was enabled for an application ' + 'that uses a custom or a noop Zone.js implementation. ' + 'This is not yet a fully supported configuration.');\n // tslint:disable-next-line:no-console\n console.warn(message);\n }\n },\n multi: true\n }];\n}\n/**\n * Sets up providers necessary to enable hydration functionality for the application.\n *\n * By default, the function enables the recommended set of features for the optimal\n * performance for most of the applications. It includes the following features:\n *\n * * Reconciling DOM hydration. Learn more about it [here](guide/hydration).\n * * [`HttpClient`](api/common/http/HttpClient) response caching while running on the server and\n * transferring this cache to the client to avoid extra HTTP requests. Learn more about data caching\n * [here](/guide/ssr#caching-data-when-using-httpclient).\n *\n * These functions allow you to disable some of the default features or configure features\n * * {@link withNoHttpTransferCache} to disable HTTP transfer cache\n * * {@link withHttpTransferCacheOptions} to configure some HTTP transfer cache options\n *\n * @usageNotes\n *\n * Basic example of how you can enable hydration in your application when\n * `bootstrapApplication` function is used:\n * ```\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration()]\n * });\n * ```\n *\n * Alternatively if you are using NgModules, you would add `provideClientHydration`\n * to your root app module's provider list.\n * ```\n * @NgModule({\n * declarations: [RootCmp],\n * bootstrap: [RootCmp],\n * providers: [provideClientHydration()],\n * })\n * export class AppModule {}\n * ```\n *\n * @see {@link withNoHttpTransferCache}\n * @see {@link withHttpTransferCacheOptions}\n *\n * @param features Optional features to configure additional router behaviors.\n * @returns A set of providers to enable hydration.\n *\n * @publicApi\n */\nfunction provideClientHydration(...features) {\n const providers = [];\n const featuresKind = new Set();\n const hasHttpTransferCacheOptions = featuresKind.has(HydrationFeatureKind.HttpTransferCacheOptions);\n for (const {\n ɵproviders,\n ɵkind\n } of features) {\n featuresKind.add(ɵkind);\n if (ɵproviders.length) {\n providers.push(ɵproviders);\n }\n }\n if (typeof ngDevMode !== 'undefined' && ngDevMode && featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) && hasHttpTransferCacheOptions) {\n // TODO: Make this a runtime error\n throw new Error('Configuration error: found both withHttpTransferCacheOptions() and withNoHttpTransferCache() in the same call to provideClientHydration(), which is a contradiction.');\n }\n return makeEnvironmentProviders([typeof ngDevMode !== 'undefined' && ngDevMode ? provideZoneJsCompatibilityDetector() : [], ɵwithDomHydration(), featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) || hasHttpTransferCacheOptions ? [] : ɵwithHttpTransferCache({}), providers]);\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the platform-browser package.\n */\n/**\n * @publicApi\n */\nconst VERSION = /*#__PURE__*/new Version('17.3.4');\n\n// Re-export TransferState to the public API of the `platform-browser` for backwards-compatibility.\n/**\n * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.\n *\n * Example:\n *\n * ```\n * const COUNTER_KEY = makeStateKey<number>('counter');\n * let value = 10;\n *\n * transferState.set(COUNTER_KEY, value);\n * ```\n *\n * @publicApi\n * @deprecated `makeStateKey` has moved, please import `makeStateKey` from `@angular/core` instead.\n */\n// The below is a workaround to add a deprecated message.\nconst makeStateKey = makeStateKey$1;\n// The below type is needed for G3 due to JSC_CONFORMANCE_VIOLATION.\nconst TransferState = TransferState$1;\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BrowserModule, By, DomSanitizer, EVENT_MANAGER_PLUGINS, EventManager, EventManagerPlugin, HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerModule, HydrationFeatureKind, Meta, REMOVE_STYLES_ON_COMPONENT_DESTROY, Title, TransferState, VERSION, bootstrapApplication, createApplication, disableDebugTools, enableDebugTools, makeStateKey, platformBrowser, provideClientHydration, provideProtractorTestingSupport, withHttpTransferCacheOptions, withNoHttpTransferCache, BrowserDomAdapter as ɵBrowserDomAdapter, BrowserGetTestability as ɵBrowserGetTestability, DomEventsPlugin as ɵDomEventsPlugin, DomRendererFactory2 as ɵDomRendererFactory2, DomSanitizerImpl as ɵDomSanitizerImpl, HammerGesturesPlugin as ɵHammerGesturesPlugin, INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, KeyEventsPlugin as ɵKeyEventsPlugin, SharedStylesHost as ɵSharedStylesHost, initDomAdapter as ɵinitDomAdapter };\n","import { inject } from '@angular/core';\r\nimport { Pipe, PipeTransform, SecurityContext } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safeHtml',\r\n pure: true,\r\n standalone: true\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n private readonly dom: DomSanitizer = inject(DomSanitizer);\r\n constructor() {}\r\n\r\n transform(value: string): string | null {\r\n return this.dom.sanitize(SecurityContext.HTML, value);\r\n }\r\n\r\n}\r\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n return node;\n}","import getWindow from \"./getWindow.js\";\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument :\n // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n return (\n // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot ||\n // step into the shadow DOM of the parent of a slotted node\n element.parentNode || (\n // DOM Element detected\n isShadowRoot(element) ? element.host : null) ||\n // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) ||\n // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n var currentNode = getParentNode(element);\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\nfunction arrow(_ref) {\n var _state$modifiersData$;\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n if (!arrowElement || !popperOffsets) {\n return;\n }\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n if (!arrowElement) {\n return;\n }\n }\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n offsetParent = offsetParent;\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height :\n // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width :\n // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n x = _ref4.x;\n y = _ref4.y;\n if (gpuAcceleration) {\n var _Object$assign;\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n if (list === void 0) {\n list = [];\n }\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList :\n // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n default:\n }\n }\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n if (state.modifiersData[name]._skip) {\n return;\n }\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n var _basePlacement = getBasePlacement(placement);\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n checksMap.set(placement, checks);\n }\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n if (_ret === \"break\") break;\n }\n }\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n if (!popperOffsets) {\n return;\n }\n if (checkMainAxis) {\n var _offsetModifierState$;\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n if (checkAltAxis) {\n var _offsetModifierState$2;\n var _mainSide = mainAxis === 'x' ? top : left;\n var _altSide = mainAxis === 'x' ? bottom : right;\n var _offset = popperOffsets[altAxis];\n var _len = altAxis === 'y' ? 'height' : 'width';\n var _min = _offset + overflow[_mainSide];\n var _max = _offset - overflow[_altSide];\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' ||\n // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n var noopFn = function noopFn() {};\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import * as i0 from '@angular/core';\nimport { Injectable, inject, ElementRef, NgZone, EventEmitter, Directive, Input, Output, ViewContainerRef, TemplateRef, ContentChild, ChangeDetectorRef, DestroyRef, ContentChildren, NgModule, Component, ChangeDetectionStrategy, ViewEncapsulation, PLATFORM_ID, LOCALE_ID, ViewChild, Injector, forwardRef, ApplicationRef, EnvironmentInjector, createComponent, Attribute, ViewChildren, HostBinding, InjectionToken } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, EMPTY, of, Subject, fromEvent, timer, race, BehaviorSubject, combineLatest, NEVER, zip, merge } from 'rxjs';\nimport { endWith, takeUntil, filter, map, distinctUntilChanged, startWith, switchMap, take, tap, withLatestFrom, delay, mergeMap, skip, finalize } from 'rxjs/operators';\nimport { isPlatformBrowser, NgTemplateOutlet, FormStyle, TranslationWidth, getLocaleMonthNames, getLocaleDayNames, formatDate, DOCUMENT, PercentPipe, getLocaleDayPeriods } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { flip, preventOverflow, arrow, createPopperLite, offset } from '@popperjs/core';\nconst _c0 = [\"*\"];\nfunction NgbAlert_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 1);\n i0.ɵɵlistener(\"click\", function NgbAlert_Conditional_1_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.close());\n });\n i0.ɵɵelementEnd();\n }\n}\nfunction NgbCarousel_For_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 7);\n i0.ɵɵlistener(\"click\", function NgbCarousel_For_2_Template_button_click_0_listener() {\n const slide_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n ctx_r2.focus();\n return i0.ɵɵresetView(ctx_r2.select(slide_r2.id, ctx_r2.NgbSlideEventSource.INDICATOR));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const slide_r2 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"active\", slide_r2.id === ctx_r2.activeId);\n i0.ɵɵattribute(\"aria-labelledby\", \"slide-\" + slide_r2.id)(\"aria-controls\", \"slide-\" + slide_r2.id)(\"aria-selected\", slide_r2.id === ctx_r2.activeId);\n }\n}\nfunction NgbCarousel_For_5_ng_template_3_Template(rf, ctx) {}\nfunction NgbCarousel_For_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 6)(1, \"span\", 8);\n i0.ɵɵi18n(2, 0);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, NgbCarousel_For_5_ng_template_3_Template, 0, 0, \"ng-template\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const slide_r4 = ctx.$implicit;\n const i_r5 = ctx.$index;\n const c_r6 = ctx.$count;\n i0.ɵɵproperty(\"id\", \"slide-\" + slide_r4.id);\n i0.ɵɵadvance(2);\n i0.ɵɵi18nExp(i_r5 + 1)(c_r6);\n i0.ɵɵi18nApply(2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", slide_r4.templateRef);\n }\n}\nfunction NgbCarousel_Conditional_6_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 10);\n i0.ɵɵlistener(\"click\", function NgbCarousel_Conditional_6_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r7);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.arrowLeft());\n });\n i0.ɵɵelement(1, \"span\", 11);\n i0.ɵɵelementStart(2, \"span\", 12);\n i0.ɵɵi18n(3, 1);\n i0.ɵɵelementEnd()();\n i0.ɵɵelementStart(4, \"button\", 13);\n i0.ɵɵlistener(\"click\", function NgbCarousel_Conditional_6_Template_button_click_4_listener() {\n i0.ɵɵrestoreView(_r7);\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.arrowRight());\n });\n i0.ɵɵelement(5, \"span\", 14);\n i0.ɵɵelementStart(6, \"span\", 12);\n i0.ɵɵi18n(7, 2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵattribute(\"aria-labelledby\", ctx_r2.id + \"-previous\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"id\", ctx_r2.id + \"-previous\");\n i0.ɵɵadvance(2);\n i0.ɵɵattribute(\"aria-labelledby\", ctx_r2.id + \"-next\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"id\", ctx_r2.id + \"-next\");\n }\n}\nconst _c1 = [\"ngbDatepickerDayView\", \"\"];\nconst _c2 = [\"month\"];\nconst _c3 = [\"year\"];\nfunction NgbDatepickerNavigationSelect_For_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 3);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const m_r2 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"value\", m_r2);\n i0.ɵɵattribute(\"aria-label\", ctx_r2.i18n.getMonthFullName(m_r2, ctx_r2.date.year));\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r2.i18n.getMonthShortName(m_r2, ctx_r2.date.year));\n }\n}\nfunction NgbDatepickerNavigationSelect_For_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 3);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const y_r4 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"value\", y_r4);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r2.i18n.getYearNumerals(y_r4));\n }\n}\nfunction NgbDatepickerNavigation_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"ngb-datepicker-navigation-select\", 6);\n i0.ɵɵlistener(\"select\", function NgbDatepickerNavigation_Conditional_3_Template_ngb_datepicker_navigation_select_select_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.select.emit($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"date\", ctx_r1.date)(\"disabled\", ctx_r1.disabled)(\"months\", ctx_r1.selectBoxes.months)(\"years\", ctx_r1.selectBoxes.years);\n }\n}\nfunction NgbDatepickerNavigation_Conditional_4_For_1_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 7);\n }\n}\nfunction NgbDatepickerNavigation_Conditional_4_For_1_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 7);\n }\n}\nfunction NgbDatepickerNavigation_Conditional_4_For_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgbDatepickerNavigation_Conditional_4_For_1_Conditional_0_Template, 1, 0, \"div\", 7);\n i0.ɵɵelementStart(1, \"div\", 8);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, NgbDatepickerNavigation_Conditional_4_For_1_Conditional_3_Template, 1, 0, \"div\", 7);\n }\n if (rf & 2) {\n const month_r3 = ctx.$implicit;\n const i_r4 = ctx.$index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵconditional(0, i_r4 > 0 ? 0 : -1);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.i18n.getMonthLabel(month_r3.firstDate), \" \");\n i0.ɵɵadvance();\n i0.ɵɵconditional(3, i_r4 !== ctx_r1.months.length - 1 ? 3 : -1);\n }\n}\nfunction NgbDatepickerNavigation_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵrepeaterCreate(0, NgbDatepickerNavigation_Conditional_4_For_1_Template, 4, 3, null, null, i0.ɵɵrepeaterTrackByIdentity);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵrepeater(ctx_r1.months);\n }\n}\nfunction NgbDatepickerMonth_Conditional_0_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.i18n.getWeekLabel());\n }\n}\nfunction NgbDatepickerMonth_Conditional_0_For_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 2);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const weekday_r2 = ctx.$implicit;\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(weekday_r2);\n }\n}\nfunction NgbDatepickerMonth_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtemplate(1, NgbDatepickerMonth_Conditional_0_Conditional_1_Template, 2, 1, \"div\", 1);\n i0.ɵɵrepeaterCreate(2, NgbDatepickerMonth_Conditional_0_For_3_Template, 2, 1, \"div\", 2, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵconditional(1, ctx_r0.datepicker.showWeekNumbers ? 1 : -1);\n i0.ɵɵadvance();\n i0.ɵɵrepeater(ctx_r0.viewModel.weekdays);\n }\n}\nfunction NgbDatepickerMonth_For_2_Conditional_0_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 4);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const week_r3 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.i18n.getWeekNumerals(week_r3.number));\n }\n}\nfunction NgbDatepickerMonth_For_2_Conditional_0_For_3_Conditional_1_ng_template_0_Template(rf, ctx) {}\nfunction NgbDatepickerMonth_For_2_Conditional_0_For_3_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgbDatepickerMonth_For_2_Conditional_0_For_3_Conditional_1_ng_template_0_Template, 0, 0, \"ng-template\", 7);\n }\n if (rf & 2) {\n const day_r5 = i0.ɵɵnextContext().$implicit;\n const ctx_r0 = i0.ɵɵnextContext(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.datepicker.dayTemplate)(\"ngTemplateOutletContext\", day_r5.context);\n }\n}\nfunction NgbDatepickerMonth_For_2_Conditional_0_For_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 6);\n i0.ɵɵlistener(\"click\", function NgbDatepickerMonth_For_2_Conditional_0_For_3_Template_div_click_0_listener($event) {\n const day_r5 = i0.ɵɵrestoreView(_r4).$implicit;\n const ctx_r0 = i0.ɵɵnextContext(3);\n ctx_r0.doSelect(day_r5);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵtemplate(1, NgbDatepickerMonth_For_2_Conditional_0_For_3_Conditional_1_Template, 1, 2, null, 7);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const day_r5 = ctx.$implicit;\n i0.ɵɵclassProp(\"disabled\", day_r5.context.disabled)(\"hidden\", day_r5.hidden)(\"ngb-dp-today\", day_r5.context.today);\n i0.ɵɵproperty(\"tabindex\", day_r5.tabindex);\n i0.ɵɵattribute(\"aria-label\", day_r5.ariaLabel);\n i0.ɵɵadvance();\n i0.ɵɵconditional(1, !day_r5.hidden ? 1 : -1);\n }\n}\nfunction NgbDatepickerMonth_For_2_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 3);\n i0.ɵɵtemplate(1, NgbDatepickerMonth_For_2_Conditional_0_Conditional_1_Template, 2, 1, \"div\", 4);\n i0.ɵɵrepeaterCreate(2, NgbDatepickerMonth_For_2_Conditional_0_For_3_Template, 2, 9, \"div\", 5, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const week_r3 = i0.ɵɵnextContext().$implicit;\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵconditional(1, ctx_r0.datepicker.showWeekNumbers ? 1 : -1);\n i0.ɵɵadvance();\n i0.ɵɵrepeater(week_r3.days);\n }\n}\nfunction NgbDatepickerMonth_For_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgbDatepickerMonth_For_2_Conditional_0_Template, 4, 1, \"div\", 3);\n }\n if (rf & 2) {\n const week_r3 = ctx.$implicit;\n i0.ɵɵconditional(0, !week_r3.collapsed ? 0 : -1);\n }\n}\nconst _c4 = [\"defaultDayTemplate\"];\nconst _c5 = [\"content\"];\nconst _c6 = a0 => ({\n $implicit: a0\n});\nfunction NgbDatepicker_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 8);\n }\n if (rf & 2) {\n const date_r1 = ctx.date;\n const currentMonth_r2 = ctx.currentMonth;\n const selected_r3 = ctx.selected;\n const disabled_r4 = ctx.disabled;\n const focused_r5 = ctx.focused;\n i0.ɵɵproperty(\"date\", date_r1)(\"currentMonth\", currentMonth_r2)(\"selected\", selected_r3)(\"disabled\", disabled_r4)(\"focused\", focused_r5);\n }\n}\nfunction NgbDatepicker_ng_template_2_For_1_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 10);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const month_r6 = i0.ɵɵnextContext().$implicit;\n const ctx_r6 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r6.i18n.getMonthLabel(month_r6.firstDate), \" \");\n }\n}\nfunction NgbDatepicker_ng_template_2_For_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 9);\n i0.ɵɵtemplate(1, NgbDatepicker_ng_template_2_For_1_Conditional_1_Template, 2, 1, \"div\", 10);\n i0.ɵɵelement(2, \"ngb-datepicker-month\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const month_r6 = ctx.$implicit;\n const ctx_r6 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵconditional(1, ctx_r6.navigation === \"none\" || ctx_r6.displayMonths > 1 && ctx_r6.navigation === \"select\" ? 1 : -1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"month\", month_r6.firstDate);\n }\n}\nfunction NgbDatepicker_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵrepeaterCreate(0, NgbDatepicker_ng_template_2_For_1_Template, 3, 2, \"div\", 9, i0.ɵɵrepeaterTrackByIdentity);\n }\n if (rf & 2) {\n const ctx_r6 = i0.ɵɵnextContext();\n i0.ɵɵrepeater(ctx_r6.model.months);\n }\n}\nfunction NgbDatepicker_Conditional_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"ngb-datepicker-navigation\", 12);\n i0.ɵɵlistener(\"navigate\", function NgbDatepicker_Conditional_5_Template_ngb_datepicker_navigation_navigate_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r6 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r6.onNavigateEvent($event));\n })(\"select\", function NgbDatepicker_Conditional_5_Template_ngb_datepicker_navigation_select_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r6 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r6.onNavigateDateSelect($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r6 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"date\", ctx_r6.model.firstDate)(\"months\", ctx_r6.model.months)(\"disabled\", ctx_r6.model.disabled)(\"showSelect\", ctx_r6.model.navigation === \"select\")(\"prevDisabled\", ctx_r6.model.prevDisabled)(\"nextDisabled\", ctx_r6.model.nextDisabled)(\"selectBoxes\", ctx_r6.model.selectBoxes);\n }\n}\nfunction NgbDatepicker_ng_template_8_Template(rf, ctx) {}\nfunction NgbDatepicker_ng_template_9_Template(rf, ctx) {}\nconst _c7 = [\"dialog\"];\nconst _c8 = [\"ngbNavOutlet\", \"\"];\nfunction NgbNavOutlet_For_1_Conditional_0_ng_template_1_Template(rf, ctx) {}\nfunction NgbNavOutlet_For_1_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtemplate(1, NgbNavOutlet_For_1_Conditional_0_ng_template_1_Template, 0, 0, \"ng-template\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const item_r1 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"item\", item_r1)(\"nav\", ctx_r1.nav)(\"role\", ctx_r1.paneRole);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", (item_r1.contentTpl == null ? null : item_r1.contentTpl.templateRef) || null)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(5, _c6, item_r1.active || ctx_r1.isPanelTransitioning(item_r1)));\n }\n}\nfunction NgbNavOutlet_For_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgbNavOutlet_For_1_Conditional_0_Template, 2, 7, \"div\", 0);\n }\n if (rf & 2) {\n const item_r1 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵconditional(0, item_r1.isPanelInDom() || ctx_r1.isPanelTransitioning(item_r1) ? 0 : -1);\n }\n}\nconst _c9 = (a0, a1, a2) => ({\n $implicit: a0,\n pages: a1,\n disabled: a2\n});\nconst _c10 = a0 => ({\n disabled: true,\n currentPage: a0\n});\nconst _c11 = (a0, a1, a2) => ({\n disabled: a0,\n $implicit: a1,\n currentPage: a2\n});\nconst _c12 = (a0, a1) => ({\n disabled: a0,\n currentPage: a1\n});\nconst _c13 = a0 => ({\n disabled: a0\n});\nfunction NgbPagination_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 13);\n i0.ɵɵi18n(1, 7);\n i0.ɵɵelementEnd();\n }\n}\nfunction NgbPagination_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 13);\n i0.ɵɵi18n(1, 8);\n i0.ɵɵelementEnd();\n }\n}\nfunction NgbPagination_ng_template_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 13);\n i0.ɵɵi18n(1, 9);\n i0.ɵɵelementEnd();\n }\n}\nfunction NgbPagination_ng_template_6_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 13);\n i0.ɵɵi18n(1, 10);\n i0.ɵɵelementEnd();\n }\n}\nfunction NgbPagination_ng_template_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0, \"...\");\n }\n}\nfunction NgbPagination_ng_template_10_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const page_r1 = ctx.$implicit;\n i0.ɵɵtextInterpolate(page_r1);\n }\n}\nfunction NgbPagination_ng_template_12_For_1_Conditional_1_ng_template_1_Template(rf, ctx) {}\nfunction NgbPagination_ng_template_12_For_1_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"a\", 16);\n i0.ɵɵtemplate(1, NgbPagination_ng_template_12_For_1_Conditional_1_ng_template_1_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const page_r2 = i0.ɵɵnextContext(2).$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n const ellipsis_r4 = i0.ɵɵreference(9);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r2.tplEllipsis == null ? null : ctx_r2.tplEllipsis.templateRef) || ellipsis_r4)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(2, _c10, page_r2));\n }\n}\nfunction NgbPagination_ng_template_12_For_1_Conditional_2_ng_template_1_Template(rf, ctx) {}\nfunction NgbPagination_ng_template_12_For_1_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"a\", 17);\n i0.ɵɵlistener(\"click\", function NgbPagination_ng_template_12_For_1_Conditional_2_Template_a_click_0_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const pageNumber_r6 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext(2);\n ctx_r2.selectPage(pageNumber_r6);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵtemplate(1, NgbPagination_ng_template_12_For_1_Conditional_2_ng_template_1_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const pageNumber_r6 = i0.ɵɵnextContext().$implicit;\n const ctx_r6 = i0.ɵɵnextContext();\n const page_r2 = ctx_r6.$implicit;\n const disabled_r8 = ctx_r6.disabled;\n const ctx_r2 = i0.ɵɵnextContext();\n const defaultNumber_r9 = i0.ɵɵreference(11);\n i0.ɵɵattribute(\"tabindex\", disabled_r8 ? \"-1\" : null)(\"aria-disabled\", disabled_r8 ? \"true\" : null);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r2.tplNumber == null ? null : ctx_r2.tplNumber.templateRef) || defaultNumber_r9)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(4, _c11, disabled_r8, pageNumber_r6, page_r2));\n }\n}\nfunction NgbPagination_ng_template_12_For_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"li\", 15);\n i0.ɵɵtemplate(1, NgbPagination_ng_template_12_For_1_Conditional_1_Template, 2, 4, \"a\", 16)(2, NgbPagination_ng_template_12_For_1_Conditional_2_Template, 2, 8);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const pageNumber_r6 = ctx.$implicit;\n const ctx_r6 = i0.ɵɵnextContext();\n const page_r2 = ctx_r6.$implicit;\n const disabled_r8 = ctx_r6.disabled;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"active\", pageNumber_r6 === page_r2)(\"disabled\", ctx_r2.isEllipsis(pageNumber_r6) || disabled_r8);\n i0.ɵɵattribute(\"aria-current\", pageNumber_r6 === page_r2 ? \"page\" : null);\n i0.ɵɵadvance();\n i0.ɵɵconditional(1, ctx_r2.isEllipsis(pageNumber_r6) ? 1 : 2);\n }\n}\nfunction NgbPagination_ng_template_12_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵrepeaterCreate(0, NgbPagination_ng_template_12_For_1_Template, 3, 6, \"li\", 14, i0.ɵɵrepeaterTrackByIdentity);\n }\n if (rf & 2) {\n const pages_r10 = ctx.pages;\n i0.ɵɵrepeater(pages_r10);\n }\n}\nfunction NgbPagination_Conditional_15_ng_template_2_Template(rf, ctx) {}\nfunction NgbPagination_Conditional_15_Template(rf, ctx) {\n if (rf & 1) {\n const _r11 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\", 15)(1, \"a\", 18);\n i0.ɵɵlistener(\"click\", function NgbPagination_Conditional_15_Template_a_click_1_listener($event) {\n i0.ɵɵrestoreView(_r11);\n const ctx_r2 = i0.ɵɵnextContext();\n ctx_r2.selectPage(1);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵtemplate(2, NgbPagination_Conditional_15_ng_template_2_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n const first_r12 = i0.ɵɵreference(1);\n i0.ɵɵclassProp(\"disabled\", ctx_r2.previousDisabled());\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"tabindex\", ctx_r2.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r2.previousDisabled() ? \"true\" : null);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r2.tplFirst == null ? null : ctx_r2.tplFirst.templateRef) || first_r12)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(6, _c12, ctx_r2.previousDisabled(), ctx_r2.page));\n }\n}\nfunction NgbPagination_Conditional_16_ng_template_2_Template(rf, ctx) {}\nfunction NgbPagination_Conditional_16_Template(rf, ctx) {\n if (rf & 1) {\n const _r13 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\", 15)(1, \"a\", 19);\n i0.ɵɵlistener(\"click\", function NgbPagination_Conditional_16_Template_a_click_1_listener($event) {\n i0.ɵɵrestoreView(_r13);\n const ctx_r2 = i0.ɵɵnextContext();\n ctx_r2.selectPage(ctx_r2.page - 1);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵtemplate(2, NgbPagination_Conditional_16_ng_template_2_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n const previous_r14 = i0.ɵɵreference(3);\n i0.ɵɵclassProp(\"disabled\", ctx_r2.previousDisabled());\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"tabindex\", ctx_r2.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r2.previousDisabled() ? \"true\" : null);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r2.tplPrevious == null ? null : ctx_r2.tplPrevious.templateRef) || previous_r14)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(6, _c13, ctx_r2.previousDisabled()));\n }\n}\nfunction NgbPagination_ng_template_17_Template(rf, ctx) {}\nfunction NgbPagination_Conditional_18_ng_template_2_Template(rf, ctx) {}\nfunction NgbPagination_Conditional_18_Template(rf, ctx) {\n if (rf & 1) {\n const _r15 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\", 15)(1, \"a\", 20);\n i0.ɵɵlistener(\"click\", function NgbPagination_Conditional_18_Template_a_click_1_listener($event) {\n i0.ɵɵrestoreView(_r15);\n const ctx_r2 = i0.ɵɵnextContext();\n ctx_r2.selectPage(ctx_r2.page + 1);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵtemplate(2, NgbPagination_Conditional_18_ng_template_2_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n const next_r16 = i0.ɵɵreference(5);\n i0.ɵɵclassProp(\"disabled\", ctx_r2.nextDisabled());\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"tabindex\", ctx_r2.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r2.nextDisabled() ? \"true\" : null);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r2.tplNext == null ? null : ctx_r2.tplNext.templateRef) || next_r16)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(6, _c12, ctx_r2.nextDisabled(), ctx_r2.page));\n }\n}\nfunction NgbPagination_Conditional_19_ng_template_2_Template(rf, ctx) {}\nfunction NgbPagination_Conditional_19_Template(rf, ctx) {\n if (rf & 1) {\n const _r17 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"li\", 15)(1, \"a\", 21);\n i0.ɵɵlistener(\"click\", function NgbPagination_Conditional_19_Template_a_click_1_listener($event) {\n i0.ɵɵrestoreView(_r17);\n const ctx_r2 = i0.ɵɵnextContext();\n ctx_r2.selectPage(ctx_r2.pageCount);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵtemplate(2, NgbPagination_Conditional_19_ng_template_2_Template, 0, 0, \"ng-template\", 12);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n const last_r18 = i0.ɵɵreference(7);\n i0.ɵɵclassProp(\"disabled\", ctx_r2.nextDisabled());\n i0.ɵɵadvance();\n i0.ɵɵattribute(\"tabindex\", ctx_r2.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r2.nextDisabled() ? \"true\" : null);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r2.tplLast == null ? null : ctx_r2.tplLast.templateRef) || last_r18)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction2(6, _c12, ctx_r2.nextDisabled(), ctx_r2.page));\n }\n}\nfunction NgbPopoverWindow_Conditional_1_ng_template_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext(2);\n i0.ɵɵtextInterpolate(ctx_r0.title);\n }\n}\nfunction NgbPopoverWindow_Conditional_1_ng_template_3_Template(rf, ctx) {}\nfunction NgbPopoverWindow_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"h3\", 2);\n i0.ɵɵtemplate(1, NgbPopoverWindow_Conditional_1_ng_template_1_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(3, NgbPopoverWindow_Conditional_1_ng_template_3_Template, 0, 0, \"ng-template\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const simpleTitle_r2 = i0.ɵɵreference(2);\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.isTitleTemplate() ? ctx_r0.title : simpleTitle_r2)(\"ngTemplateOutletContext\", ctx_r0.context);\n }\n}\nfunction NgbProgressbar_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\");\n i0.ɵɵi18n(1, 0);\n i0.ɵɵpipe(2, \"percent\");\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵi18nExp(i0.ɵɵpipeBind1(2, 1, ctx_r0.getValue() / ctx_r0.max));\n i0.ɵɵi18nApply(1);\n }\n}\nfunction NgbRating_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n const fill_r1 = ctx.fill;\n i0.ɵɵtextInterpolate(fill_r1 === 100 ? \"\\u2605\" : \"\\u2606\");\n }\n}\nfunction NgbRating_For_3_ng_template_3_Template(rf, ctx) {}\nfunction NgbRating_For_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 1);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(2, \"span\", 2);\n i0.ɵɵlistener(\"mouseenter\", function NgbRating_For_3_Template_span_mouseenter_2_listener() {\n const index_r3 = i0.ɵɵrestoreView(_r2).$index;\n const ctx_r3 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r3.enter(index_r3 + 1));\n })(\"click\", function NgbRating_For_3_Template_span_click_2_listener() {\n const index_r3 = i0.ɵɵrestoreView(_r2).$index;\n const ctx_r3 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r3.handleClick(index_r3 + 1));\n });\n i0.ɵɵtemplate(3, NgbRating_For_3_ng_template_3_Template, 0, 0, \"ng-template\", 3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const index_r3 = ctx.$index;\n const ctx_r3 = i0.ɵɵnextContext();\n const t_r5 = i0.ɵɵreference(1);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\"(\", index_r3 < ctx_r3.nextRate ? \"*\" : \" \", \")\");\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"cursor\", ctx_r3.isInteractive() ? \"pointer\" : \"default\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.starTemplate || ctx_r3.starTemplateFromContent || t_r5)(\"ngTemplateOutletContext\", ctx_r3.contexts[index_r3]);\n }\n}\nfunction NgbTimepicker_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 15);\n i0.ɵɵlistener(\"click\", function NgbTimepicker_Conditional_3_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.changeHour(ctx_r1.hourStep));\n });\n i0.ɵɵelement(1, \"span\", 16);\n i0.ɵɵelementStart(2, \"span\", 17);\n i0.ɵɵi18n(3, 0);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n i0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n }\n}\nfunction NgbTimepicker_Conditional_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 15);\n i0.ɵɵlistener(\"click\", function NgbTimepicker_Conditional_5_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.changeHour(-ctx_r1.hourStep));\n });\n i0.ɵɵelement(1, \"span\", 18);\n i0.ɵɵelementStart(2, \"span\", 17);\n i0.ɵɵi18n(3, 1);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n i0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n }\n}\nfunction NgbTimepicker_Conditional_9_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 15);\n i0.ɵɵlistener(\"click\", function NgbTimepicker_Conditional_9_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r4);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.changeMinute(ctx_r1.minuteStep));\n });\n i0.ɵɵelement(1, \"span\", 16);\n i0.ɵɵelementStart(2, \"span\", 17);\n i0.ɵɵi18n(3, 2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n i0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n }\n}\nfunction NgbTimepicker_Conditional_11_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 15);\n i0.ɵɵlistener(\"click\", function NgbTimepicker_Conditional_11_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.changeMinute(-ctx_r1.minuteStep));\n });\n i0.ɵɵelement(1, \"span\", 18);\n i0.ɵɵelementStart(2, \"span\", 17);\n i0.ɵɵi18n(3, 3);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n i0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n }\n}\nfunction NgbTimepicker_Conditional_12_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 15);\n i0.ɵɵlistener(\"click\", function NgbTimepicker_Conditional_12_Conditional_3_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.changeSecond(ctx_r1.secondStep));\n });\n i0.ɵɵelement(1, \"span\", 16);\n i0.ɵɵelementStart(2, \"span\", 17);\n i0.ɵɵi18n(3, 4);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n i0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n }\n}\nfunction NgbTimepicker_Conditional_12_Conditional_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 15);\n i0.ɵɵlistener(\"click\", function NgbTimepicker_Conditional_12_Conditional_5_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.changeSecond(-ctx_r1.secondStep));\n });\n i0.ɵɵelement(1, \"span\", 18);\n i0.ɵɵelementStart(2, \"span\", 17);\n i0.ɵɵi18n(3, 5);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n i0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n }\n}\nfunction NgbTimepicker_Conditional_12_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 12);\n i0.ɵɵtext(1, \":\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(2, \"div\", 19);\n i0.ɵɵtemplate(3, NgbTimepicker_Conditional_12_Conditional_3_Template, 4, 7, \"button\", 10);\n i0.ɵɵelementStart(4, \"input\", 20);\n i0.ɵɵlistener(\"change\", function NgbTimepicker_Conditional_12_Template_input_change_4_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.updateSecond($event.target.value));\n })(\"blur\", function NgbTimepicker_Conditional_12_Template_input_blur_4_listener() {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.handleBlur());\n })(\"input\", function NgbTimepicker_Conditional_12_Template_input_input_4_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.formatInput($event.target));\n })(\"keydown.ArrowUp\", function NgbTimepicker_Conditional_12_Template_input_keydown_ArrowUp_4_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext();\n ctx_r1.changeSecond(ctx_r1.secondStep);\n return i0.ɵɵresetView($event.preventDefault());\n })(\"keydown.ArrowDown\", function NgbTimepicker_Conditional_12_Template_input_keydown_ArrowDown_4_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext();\n ctx_r1.changeSecond(-ctx_r1.secondStep);\n return i0.ɵɵresetView($event.preventDefault());\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, NgbTimepicker_Conditional_12_Conditional_5_Template, 4, 7, \"button\", 10);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(3);\n i0.ɵɵconditional(3, ctx_r1.spinners ? 3 : -1);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"form-control-sm\", ctx_r1.isSmallSize)(\"form-control-lg\", ctx_r1.isLargeSize);\n i0.ɵɵproperty(\"value\", ctx_r1.formatMinSec(ctx_r1.model == null ? null : ctx_r1.model.second))(\"readOnly\", ctx_r1.readonlyInputs)(\"disabled\", ctx_r1.disabled);\n i0.ɵɵadvance();\n i0.ɵɵconditional(5, ctx_r1.spinners ? 5 : -1);\n }\n}\nfunction NgbTimepicker_Conditional_13_Conditional_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵi18n(1, 6);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵi18nExp(ctx_r1.i18n.getAfternoonPeriod());\n i0.ɵɵi18nApply(1);\n }\n}\nfunction NgbTimepicker_Conditional_13_Conditional_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.i18n.getMorningPeriod());\n }\n}\nfunction NgbTimepicker_Conditional_13_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelement(0, \"div\", 12);\n i0.ɵɵelementStart(1, \"div\", 21)(2, \"button\", 22);\n i0.ɵɵlistener(\"click\", function NgbTimepicker_Conditional_13_Template_button_click_2_listener() {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.toggleMeridian());\n });\n i0.ɵɵtemplate(3, NgbTimepicker_Conditional_13_Conditional_3_Template, 2, 1, \"ng-container\")(4, NgbTimepicker_Conditional_13_Conditional_4_Template, 2, 1);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n i0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n i0.ɵɵadvance();\n i0.ɵɵconditional(3, ctx_r1.model && ctx_r1.model.hour >= 12 ? 3 : 4);\n }\n}\nfunction NgbToast_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"strong\", 3);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r0.header);\n }\n}\nfunction NgbToast_Conditional_2_ng_template_1_Template(rf, ctx) {}\nfunction NgbToast_Conditional_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 1);\n i0.ɵɵtemplate(1, NgbToast_Conditional_2_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n i0.ɵɵelementStart(2, \"button\", 5);\n i0.ɵɵlistener(\"click\", function NgbToast_Conditional_2_Template_button_click_2_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r0 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r0.hide());\n });\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n const headerTpl_r3 = i0.ɵɵreference(1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.contentHeaderTpl || headerTpl_r3);\n }\n}\nfunction NgbHighlight_For_1_Conditional_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const part_r1 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1.highlightClass);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(part_r1);\n }\n}\nfunction NgbHighlight_For_1_Conditional_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const part_r1 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(part_r1);\n }\n}\nfunction NgbHighlight_For_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgbHighlight_For_1_Conditional_0_Template, 2, 4, \"span\", 0)(1, NgbHighlight_For_1_Conditional_1_Template, 2, 1);\n }\n if (rf & 2) {\n const ɵ$index_1_r3 = ctx.$index;\n i0.ɵɵconditional(0, ɵ$index_1_r3 % 2 !== 0 ? 0 : 1);\n }\n}\nconst _c14 = (a0, a1, a2) => ({\n result: a0,\n term: a1,\n formatter: a2\n});\nfunction NgbTypeaheadWindow_ng_template_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"ngb-highlight\", 2);\n }\n if (rf & 2) {\n const result_r1 = ctx.result;\n const term_r2 = ctx.term;\n const formatter_r3 = ctx.formatter;\n i0.ɵɵproperty(\"result\", formatter_r3(result_r1))(\"term\", term_r2);\n }\n}\nfunction NgbTypeaheadWindow_For_3_ng_template_1_Template(rf, ctx) {}\nfunction NgbTypeaheadWindow_For_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 3);\n i0.ɵɵlistener(\"mouseenter\", function NgbTypeaheadWindow_For_3_Template_button_mouseenter_0_listener() {\n const idx_r5 = i0.ɵɵrestoreView(_r4).$index;\n const ctx_r5 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r5.markActive(idx_r5));\n })(\"click\", function NgbTypeaheadWindow_For_3_Template_button_click_0_listener() {\n const result_r7 = i0.ɵɵrestoreView(_r4).$implicit;\n const ctx_r5 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r5.select(result_r7));\n });\n i0.ɵɵtemplate(1, NgbTypeaheadWindow_For_3_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const result_r7 = ctx.$implicit;\n const idx_r5 = ctx.$index;\n const ctx_r5 = i0.ɵɵnextContext();\n const rt_r8 = i0.ɵɵreference(1);\n i0.ɵɵclassProp(\"active\", idx_r5 === ctx_r5.activeIdx);\n i0.ɵɵproperty(\"id\", ctx_r5.id + \"-\" + idx_r5);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.resultTemplate || rt_r8)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(5, _c14, result_r7, ctx_r5.term, ctx_r5.formatter));\n }\n}\nconst environment = {\n animation: true,\n transitionTimerDelayMs: 5\n};\n\n/**\n * Global ng-bootstrap config\n *\n * @since 8.0.0\n */\nlet NgbConfig = /*#__PURE__*/(() => {\n class NgbConfig {\n constructor() {\n this.animation = environment.animation;\n }\n static {\n this.ɵfac = function NgbConfig_Factory(t) {\n return new (t || NgbConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbConfig,\n factory: NgbConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbAccordionConfig = /*#__PURE__*/(() => {\n class NgbAccordionConfig {\n constructor() {\n this._ngbConfig = inject(NgbConfig);\n this.closeOthers = false;\n this.destroyOnHide = true;\n }\n get animation() {\n return this._animation ?? this._ngbConfig.animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n static {\n this.ɵfac = function NgbAccordionConfig_Factory(t) {\n return new (t || NgbAccordionConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbAccordionConfig,\n factory: NgbAccordionConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbAccordionConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction getTransitionDurationMs(element) {\n const {\n transitionDelay,\n transitionDuration\n } = window.getComputedStyle(element);\n const transitionDelaySec = parseFloat(transitionDelay);\n const transitionDurationSec = parseFloat(transitionDuration);\n return (transitionDelaySec + transitionDurationSec) * 1000;\n}\nfunction toInteger(value) {\n return parseInt(`${value}`, 10);\n}\nfunction toString(value) {\n return value !== undefined && value !== null ? `${value}` : '';\n}\nfunction getValueInRange(value, max, min = 0) {\n return Math.max(Math.min(value, max), min);\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction isNumber(value) {\n return !isNaN(toInteger(value));\n}\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isPromise(v) {\n return v && v.then;\n}\nfunction padNumber(value) {\n if (isNumber(value)) {\n return `0${value}`.slice(-2);\n } else {\n return '';\n }\n}\nfunction regExpEscape(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\nfunction closest(element, selector) {\n if (!selector) {\n return null;\n }\n /*\n * In certain browsers (e.g. Edge 44.18362.449.0) HTMLDocument does\n * not support `Element.prototype.closest`. To emulate the correct behaviour\n * we return null when the method is missing.\n *\n * Note that in evergreen browsers `closest(document.documentElement, 'html')`\n * will return the document element whilst in Edge null will be returned. This\n * compromise was deemed good enough.\n */\n if (typeof element.closest === 'undefined') {\n return null;\n }\n return element.closest(selector);\n}\n/**\n * Force a browser reflow\n * @param element element where to apply the reflow\n */\nfunction reflow(element) {\n return (element || document.body).getBoundingClientRect();\n}\n/**\n * Creates an observable where all callbacks are executed inside a given zone\n *\n * @param zone\n */\nfunction runInZone(zone) {\n return source => {\n return new Observable(observer => {\n const next = value => zone.run(() => observer.next(value));\n const error = e => zone.run(() => observer.error(e));\n const complete = () => zone.run(() => observer.complete());\n return source.subscribe({\n next,\n error,\n complete\n });\n });\n };\n}\nfunction removeAccents(str) {\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\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 */\nfunction getActiveElement(root = document) {\n const activeEl = root?.activeElement;\n if (!activeEl) {\n return null;\n }\n return activeEl.shadowRoot ? getActiveElement(activeEl.shadowRoot) : activeEl;\n}\nconst noopFn = () => {};\nconst {\n transitionTimerDelayMs\n} = environment;\nconst runningTransitions = new Map();\nconst ngbRunTransition = (zone, element, startFn, options) => {\n // Getting initial context from options\n let context = options.context || {};\n // Checking if there are already running transitions on the given element.\n const running = runningTransitions.get(element);\n if (running) {\n switch (options.runningTransition) {\n // If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\n // We're not emitting any values, but simply completing the observable (EMPTY).\n case 'continue':\n return EMPTY;\n // If there is one running and we want for it to 'stop', we have to complete the running one.\n // We're simply completing the running one and not emitting any values and merging newly provided context\n // with the one coming from currently running transition.\n case 'stop':\n zone.run(() => running.transition$.complete());\n context = Object.assign(running.context, context);\n runningTransitions.delete(element);\n }\n }\n // Running the start function\n const endFn = startFn(element, options.animation, context) || noopFn;\n // If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\n // If animations are disabled, we have to emit a value and complete the observable\n // In this case we have to call the end function, but can finish immediately by emitting a value,\n // completing the observable and executing end functions synchronously.\n if (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\n zone.run(() => endFn());\n return of(undefined).pipe(runInZone(zone));\n }\n // Starting a new transition\n const transition$ = new Subject();\n const finishTransition$ = new Subject();\n const stop$ = transition$.pipe(endWith(true));\n runningTransitions.set(element, {\n transition$,\n complete: () => {\n finishTransition$.next();\n finishTransition$.complete();\n },\n context\n });\n const transitionDurationMs = getTransitionDurationMs(element);\n // 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\n // because 'transitionend' event might not be fired in some browsers, if the transitioning\n // element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\n // guarantees, that we'll release the DOM element and complete 'ngbRunTransition'.\n // 2. We need to filter transition end events, because they might bubble from shorter transitions\n // on inner DOM elements. We're only interested in the transition on the 'element' itself.\n zone.runOutsideAngular(() => {\n const transitionEnd$ = fromEvent(element, 'transitionend').pipe(takeUntil(stop$), filter(({\n target\n }) => target === element));\n const timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\n race(timer$, transitionEnd$, finishTransition$).pipe(takeUntil(stop$)).subscribe(() => {\n runningTransitions.delete(element);\n zone.run(() => {\n endFn();\n transition$.next();\n transition$.complete();\n });\n });\n });\n return transition$.asObservable();\n};\nconst ngbCompleteTransition = element => {\n runningTransitions.get(element)?.complete();\n};\nfunction measureCollapsingElementDimensionPx(element, dimension) {\n // SSR fix for without injecting the PlatformId\n if (typeof navigator === 'undefined') {\n return '0px';\n }\n const {\n classList\n } = element;\n const hasShownClass = classList.contains('show');\n if (!hasShownClass) {\n classList.add('show');\n }\n element.style[dimension] = '';\n const dimensionSize = element.getBoundingClientRect()[dimension] + 'px';\n if (!hasShownClass) {\n classList.remove('show');\n }\n return dimensionSize;\n}\nconst ngbCollapsingTransition = (element, animation, context) => {\n let {\n direction,\n maxSize,\n dimension\n } = context;\n const {\n classList\n } = element;\n function setInitialClasses() {\n classList.add('collapse');\n if (direction === 'show') {\n classList.add('show');\n } else {\n classList.remove('show');\n }\n }\n // without animations we just need to set initial classes\n if (!animation) {\n setInitialClasses();\n return;\n }\n // No maxHeight -> running the transition for the first time\n if (!maxSize) {\n maxSize = measureCollapsingElementDimensionPx(element, dimension);\n context.maxSize = maxSize;\n // Fix the height before starting the animation\n element.style[dimension] = direction !== 'show' ? maxSize : '0px';\n classList.remove('collapse');\n classList.remove('collapsing');\n classList.remove('show');\n reflow(element);\n // Start the animation\n classList.add('collapsing');\n }\n // Start or revert the animation\n element.style[dimension] = direction === 'show' ? maxSize : '0px';\n return () => {\n setInitialClasses();\n classList.remove('collapsing');\n element.style[dimension] = '';\n };\n};\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 */\nlet NgbCollapseConfig = /*#__PURE__*/(() => {\n class NgbCollapseConfig {\n constructor() {\n this._ngbConfig = inject(NgbConfig);\n this.horizontal = false;\n }\n get animation() {\n return this._animation ?? this._ngbConfig.animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n static {\n this.ɵfac = function NgbCollapseConfig_Factory(t) {\n return new (t || NgbCollapseConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCollapseConfig,\n factory: NgbCollapseConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbCollapseConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive to provide a simple way of hiding and showing elements on the\n * page.\n */\nlet NgbCollapse = /*#__PURE__*/(() => {\n class NgbCollapse {\n constructor() {\n this._config = inject(NgbCollapseConfig);\n this._element = inject(ElementRef);\n this._zone = inject(NgZone);\n /**\n * If `true`, collapse will be animated.\n *\n * Animation is triggered only when clicked on triggering element\n * or via the `.toggle()` function\n *\n * @since 8.0.0\n */\n this.animation = this._config.animation;\n /**\n * Flag used to track if the collapse setter is invoked during initialization\n * or not. This distinction is made in order to avoid running the transition during initialization.\n */\n this._afterInit = false;\n this._isCollapsed = false;\n this.ngbCollapseChange = new EventEmitter();\n /**\n * If `true`, will collapse horizontally.\n *\n * @since 13.1.0\n */\n this.horizontal = this._config.horizontal;\n /**\n * An event emitted when the collapse element is shown, after the transition.\n * It has no payload.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the collapse element is hidden, after the transition.\n * It has no payload.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n }\n /**\n * If `true`, will collapse the element or show it otherwise.\n */\n set collapsed(isCollapsed) {\n if (this._isCollapsed !== isCollapsed) {\n this._isCollapsed = isCollapsed;\n if (this._afterInit) {\n this._runTransitionWithEvents(isCollapsed, this.animation);\n }\n }\n }\n ngOnInit() {\n this._runTransition(this._isCollapsed, false);\n this._afterInit = true;\n }\n /**\n * Triggers collapsing programmatically.\n *\n * If there is a collapsing transition running already, it will be reversed.\n * If the animations are turned off this happens synchronously.\n *\n * @since 8.0.0\n */\n toggle(open = this._isCollapsed) {\n this.collapsed = !open;\n this.ngbCollapseChange.next(this._isCollapsed);\n }\n _runTransition(collapsed, animation) {\n return ngbRunTransition(this._zone, this._element.nativeElement, ngbCollapsingTransition, {\n animation,\n runningTransition: 'stop',\n context: {\n direction: collapsed ? 'hide' : 'show',\n dimension: this.horizontal ? 'width' : 'height'\n }\n });\n }\n _runTransitionWithEvents(collapsed, animation) {\n this._runTransition(collapsed, animation).subscribe(() => {\n if (collapsed) {\n this.hidden.emit();\n } else {\n this.shown.emit();\n }\n });\n }\n static {\n this.ɵfac = function NgbCollapse_Factory(t) {\n return new (t || NgbCollapse)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbCollapse,\n selectors: [[\"\", \"ngbCollapse\", \"\"]],\n hostVars: 2,\n hostBindings: function NgbCollapse_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"collapse-horizontal\", ctx.horizontal);\n }\n },\n inputs: {\n animation: \"animation\",\n collapsed: [i0.ɵɵInputFlags.None, \"ngbCollapse\", \"collapsed\"],\n horizontal: \"horizontal\"\n },\n outputs: {\n ngbCollapseChange: \"ngbCollapseChange\",\n shown: \"shown\",\n hidden: \"hidden\"\n },\n exportAs: [\"ngbCollapse\"],\n standalone: true\n });\n }\n }\n return NgbCollapse;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet nextId$3 = 0;\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 */\nlet NgbAccordionBody = /*#__PURE__*/(() => {\n class NgbAccordionBody {\n constructor() {\n this._vcr = inject(ViewContainerRef);\n this._element = inject(ElementRef).nativeElement;\n this._item = inject(NgbAccordionItem);\n this._viewRef = null;\n }\n ngAfterContentChecked() {\n if (this._bodyTpl) {\n if (this._item._shouldBeInDOM) {\n this._createViewIfNotExists();\n } else {\n this._destroyViewIfExists();\n }\n }\n }\n ngOnDestroy() {\n this._destroyViewIfExists();\n }\n _destroyViewIfExists() {\n if (this._viewRef) {\n this._viewRef.destroy();\n this._viewRef = null;\n }\n }\n _createViewIfNotExists() {\n if (!this._viewRef) {\n this._viewRef = this._vcr.createEmbeddedView(this._bodyTpl);\n this._viewRef.detectChanges();\n for (const node of this._viewRef.rootNodes) {\n this._element.appendChild(node);\n }\n }\n }\n static {\n this.ɵfac = function NgbAccordionBody_Factory(t) {\n return new (t || NgbAccordionBody)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbAccordionBody,\n selectors: [[\"\", \"ngbAccordionBody\", \"\"]],\n contentQueries: function NgbAccordionBody_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, TemplateRef, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._bodyTpl = _t.first);\n }\n },\n hostVars: 2,\n hostBindings: function NgbAccordionBody_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"accordion-body\", true);\n }\n },\n standalone: true\n });\n }\n }\n return NgbAccordionBody;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbAccordionCollapse = /*#__PURE__*/(() => {\n class NgbAccordionCollapse {\n constructor() {\n this.item = inject(NgbAccordionItem);\n this.ngbCollapse = inject(NgbCollapse);\n }\n static {\n this.ɵfac = function NgbAccordionCollapse_Factory(t) {\n return new (t || NgbAccordionCollapse)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbAccordionCollapse,\n selectors: [[\"\", \"ngbAccordionCollapse\", \"\"]],\n hostAttrs: [\"role\", \"region\"],\n hostVars: 4,\n hostBindings: function NgbAccordionCollapse_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.item.collapseId);\n i0.ɵɵattribute(\"aria-labelledby\", ctx.item.toggleId);\n i0.ɵɵclassProp(\"accordion-collapse\", true);\n }\n },\n exportAs: [\"ngbAccordionCollapse\"],\n standalone: true,\n features: [i0.ɵɵHostDirectivesFeature([NgbCollapse])]\n });\n }\n }\n return NgbAccordionCollapse;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbAccordionToggle = /*#__PURE__*/(() => {\n class NgbAccordionToggle {\n constructor() {\n this.item = inject(NgbAccordionItem);\n this.accordion = inject(NgbAccordionDirective);\n }\n static {\n this.ɵfac = function NgbAccordionToggle_Factory(t) {\n return new (t || NgbAccordionToggle)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbAccordionToggle,\n selectors: [[\"\", \"ngbAccordionToggle\", \"\"]],\n hostVars: 5,\n hostBindings: function NgbAccordionToggle_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function NgbAccordionToggle_click_HostBindingHandler() {\n return !ctx.item.disabled && ctx.accordion.toggle(ctx.item.id);\n });\n }\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.item.toggleId);\n i0.ɵɵattribute(\"aria-controls\", ctx.item.collapseId)(\"aria-expanded\", !ctx.item.collapsed);\n i0.ɵɵclassProp(\"collapsed\", ctx.item.collapsed);\n }\n },\n standalone: true\n });\n }\n }\n return NgbAccordionToggle;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbAccordionButton = /*#__PURE__*/(() => {\n class NgbAccordionButton {\n constructor() {\n this.item = inject(NgbAccordionItem);\n }\n static {\n this.ɵfac = function NgbAccordionButton_Factory(t) {\n return new (t || NgbAccordionButton)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbAccordionButton,\n selectors: [[\"button\", \"ngbAccordionButton\", \"\"]],\n hostAttrs: [\"type\", \"button\"],\n hostVars: 3,\n hostBindings: function NgbAccordionButton_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"disabled\", ctx.item.disabled);\n i0.ɵɵclassProp(\"accordion-button\", true);\n }\n },\n standalone: true,\n features: [i0.ɵɵHostDirectivesFeature([NgbAccordionToggle])]\n });\n }\n }\n return NgbAccordionButton;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive that wraps an accordion item's header.\n *\n * @since 14.1.0\n */\nlet NgbAccordionHeader = /*#__PURE__*/(() => {\n class NgbAccordionHeader {\n constructor() {\n this.item = inject(NgbAccordionItem);\n }\n static {\n this.ɵfac = function NgbAccordionHeader_Factory(t) {\n return new (t || NgbAccordionHeader)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbAccordionHeader,\n selectors: [[\"\", \"ngbAccordionHeader\", \"\"]],\n hostAttrs: [\"role\", \"heading\"],\n hostVars: 4,\n hostBindings: function NgbAccordionHeader_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"accordion-header\", true)(\"collapsed\", ctx.item.collapsed);\n }\n },\n standalone: true\n });\n }\n }\n return NgbAccordionHeader;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbAccordionItem = /*#__PURE__*/(() => {\n class NgbAccordionItem {\n constructor() {\n this._accordion = inject(NgbAccordionDirective);\n this._cd = inject(ChangeDetectorRef);\n this._destroyRef = inject(DestroyRef);\n this._collapsed = true;\n this._id = `ngb-accordion-item-${nextId$3++}`;\n this._collapseAnimationRunning = false;\n /**\n * If `true`, the accordion item will be disabled.\n * It won't react to user's clicks, but still will be toggelable programmatically.\n */\n this.disabled = false;\n /**\n * Event emitted before the expanding animation starts. It has no payload.\n *\n * @since 15.1.0\n */\n this.show = new EventEmitter();\n /**\n * Event emitted when the expanding animation is finished. It has no payload.\n */\n this.shown = new EventEmitter();\n /**\n * Event emitted before the collapsing animation starts. It has no payload.\n *\n * @since 15.1.0\n */\n this.hide = new EventEmitter();\n /**\n * Event emitted when the collapsing animation is finished and before the content is removed from DOM.\n * It has no payload.\n */\n this.hidden = new EventEmitter();\n }\n /**\n * Sets the custom ID of the accordion item. It must be unique for the document.\n *\n * @param id The ID of the accordion item, must be a non-empty string\n */\n set id(id) {\n if (isString(id) && id !== '') {\n this._id = id;\n }\n }\n /**\n * If `true`, the content of the accordion item's body will be removed from the DOM. It will be just hidden otherwise.\n *\n * This property can also be set up on the parent [`NgbAccordion` directive](#/components/accordion/api#NgbAccordionDirective).\n */\n set destroyOnHide(destroyOnHide) {\n this._destroyOnHide = destroyOnHide;\n }\n get destroyOnHide() {\n return this._destroyOnHide === undefined ? this._accordion.destroyOnHide : this._destroyOnHide;\n }\n /**\n *\tIf `true`, the accordion item will be collapsed. Otherwise, it will be expanded.\n *\n * @param collapsed New state of the accordion item.\n */\n set collapsed(collapsed) {\n if (collapsed) {\n this.collapse();\n } else {\n this.expand();\n }\n }\n get collapsed() {\n return this._collapsed;\n }\n get id() {\n return `${this._id}`;\n }\n get toggleId() {\n return `${this.id}-toggle`;\n }\n get collapseId() {\n return `${this.id}-collapse`;\n }\n get _shouldBeInDOM() {\n return !this.collapsed || this._collapseAnimationRunning || !this.destroyOnHide;\n }\n ngAfterContentInit() {\n const {\n ngbCollapse\n } = this._collapse;\n // we need to disable the animation for the first init\n ngbCollapse.animation = false;\n ngbCollapse.collapsed = this.collapsed;\n // we set the animation to the default of the accordion\n ngbCollapse.animation = this._accordion.animation;\n // event forwarding from 'ngbCollapse' to 'ngbAccordion'\n ngbCollapse.hidden.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n // when the animation finishes we can remove the template from DOM\n this._collapseAnimationRunning = false;\n this.hidden.emit();\n this._accordion.hidden.emit(this.id);\n });\n ngbCollapse.shown.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this.shown.emit();\n this._accordion.shown.emit(this.id);\n });\n }\n /**\n * Toggles an accordion item.\n */\n toggle() {\n this.collapsed = !this.collapsed;\n }\n /**\n * Expands an accordion item.\n */\n expand() {\n if (this.collapsed) {\n // checking if accordion allows to expand the panel in respect to 'closeOthers' flag\n if (!this._accordion._ensureCanExpand(this)) {\n return;\n }\n this._collapsed = false;\n // need if the accordion is used inside a component having OnPush change detection strategy\n this._cd.markForCheck();\n // we need force CD to get template into DOM before starting animation to calculate its height correctly\n // this will synchronously put the item body into DOM, because `this._collapsed` was flipped to `false`\n this._cd.detectChanges();\n // firing events before starting animations\n this.show.emit();\n this._accordion.show.emit(this.id);\n // we also need to make sure 'animation' flag is up-to- date\n this._collapse.ngbCollapse.animation = this._accordion.animation;\n this._collapse.ngbCollapse.collapsed = false;\n }\n }\n /**\n * Collapses an accordion item.\n */\n collapse() {\n if (!this.collapsed) {\n this._collapsed = true;\n this._collapseAnimationRunning = true;\n // need if the accordion is used inside a component having OnPush change detection strategy\n this._cd.markForCheck();\n // firing events before starting animations\n this.hide.emit();\n this._accordion.hide.emit(this.id);\n // we also need to make sure 'animation' flag is up-to- date\n this._collapse.ngbCollapse.animation = this._accordion.animation;\n this._collapse.ngbCollapse.collapsed = true;\n }\n }\n static {\n this.ɵfac = function NgbAccordionItem_Factory(t) {\n return new (t || NgbAccordionItem)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbAccordionItem,\n selectors: [[\"\", \"ngbAccordionItem\", \"\"]],\n contentQueries: function NgbAccordionItem_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbAccordionCollapse, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._collapse = _t.first);\n }\n },\n hostVars: 3,\n hostBindings: function NgbAccordionItem_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.id);\n i0.ɵɵclassProp(\"accordion-item\", true);\n }\n },\n inputs: {\n id: [i0.ɵɵInputFlags.None, \"ngbAccordionItem\", \"id\"],\n destroyOnHide: \"destroyOnHide\",\n disabled: \"disabled\",\n collapsed: \"collapsed\"\n },\n outputs: {\n show: \"show\",\n shown: \"shown\",\n hide: \"hide\",\n hidden: \"hidden\"\n },\n exportAs: [\"ngbAccordionItem\"],\n standalone: true\n });\n }\n }\n return NgbAccordionItem;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbAccordionDirective = /*#__PURE__*/(() => {\n class NgbAccordionDirective {\n constructor() {\n this._config = inject(NgbAccordionConfig);\n this._anItemWasAlreadyExpandedDuringInitialisation = false;\n /**\n * If `true`, accordion will be animated.\n */\n this.animation = this._config.animation;\n /**\n * If `true`, only one item at the time can stay open.\n */\n this.closeOthers = this._config.closeOthers;\n /**\n * If `true`, the content of the accordion items body will be removed from the DOM. It will be just hidden otherwise.\n *\n * This property can be overwritten at the [`NgbAccordionItem`](#/components/accordion/api#NgbAccordionItem) level\n */\n this.destroyOnHide = this._config.destroyOnHide;\n /**\n * Event emitted before expanding animation starts. The payload is the id of shown accordion item.\n *\n * @since 15.1.0\n */\n this.show = new EventEmitter();\n /**\n * Event emitted when the expanding animation is finished. The payload is the id of shown accordion item.\n */\n this.shown = new EventEmitter();\n /**\n * Event emitted before the collapsing animation starts. The payload is the id of hidden accordion item.\n *\n * @since 15.1.0\n */\n this.hide = new EventEmitter();\n /**\n * Event emitted when the collapsing animation is finished and before the content is removed from DOM.\n * The payload is the id of hidden accordion item.\n */\n this.hidden = new EventEmitter();\n }\n /**\n * Toggles an item with the given id.\n *\n * It will toggle an item, even if it is disabled.\n *\n * @param itemId The id of the item to toggle.\n */\n toggle(itemId) {\n this._getItem(itemId)?.toggle();\n }\n /**\n * Expands an item with the given id.\n *\n * If `closeOthers` is `true`, it will collapse other panels.\n *\n * @param itemId The id of the item to expand.\n */\n expand(itemId) {\n this._getItem(itemId)?.expand();\n }\n /**\n * Expands all items.\n *\n * If `closeOthers` is `true` and all items are closed, it will open the first one. Otherwise, it will keep the opened one.\n */\n expandAll() {\n if (this._items) {\n if (this.closeOthers) {\n // we check if there is an item open and if it is not we can expand the first item\n // (otherwise we toggle nothing)\n if (!this._items.find(item => !item.collapsed)) {\n this._items.first.expand();\n }\n } else {\n this._items.forEach(item => item.expand());\n }\n }\n }\n /**\n * Collapses an item with the given id.\n *\n * Has no effect if the `itemId` does not correspond to any item.\n *\n * @param itemId The id of the item to collapse.\n */\n collapse(itemId) {\n this._getItem(itemId)?.collapse();\n }\n /**\n * Collapses all items.\n */\n collapseAll() {\n this._items?.forEach(item => item.collapse());\n }\n /**\n * Checks if an item with the given id is expanded.\n *\n * If the `itemId` does not correspond to any item, it returns `false`.\n *\n * @param itemId The id of the item to check.\n */\n isExpanded(itemId) {\n const item = this._getItem(itemId);\n return item ? !item.collapsed : false;\n }\n /**\n * It checks, if the item can be expanded in the current state of the accordion.\n * With `closeOthers` there can be only one expanded item at a time.\n *\n * @internal\n */\n _ensureCanExpand(toExpand) {\n if (!this.closeOthers) {\n return true;\n }\n // special case during the initialization of the [collapse]=\"false\" inputs\n // `this._items` QueryList is not yet initialized, but we need to ensure only one item can be expanded at a time\n if (!this._items) {\n if (!this._anItemWasAlreadyExpandedDuringInitialisation) {\n this._anItemWasAlreadyExpandedDuringInitialisation = true;\n return true;\n }\n return false;\n }\n // if there is an expanded item, we need to collapse it first\n this._items.find(item => !item.collapsed && toExpand !== item)?.collapse();\n return true;\n }\n _getItem(itemId) {\n return this._items?.find(item => item.id === itemId);\n }\n static {\n this.ɵfac = function NgbAccordionDirective_Factory(t) {\n return new (t || NgbAccordionDirective)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbAccordionDirective,\n selectors: [[\"\", \"ngbAccordion\", \"\"]],\n contentQueries: function NgbAccordionDirective_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbAccordionItem, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._items = _t);\n }\n },\n hostVars: 2,\n hostBindings: function NgbAccordionDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"accordion\", true);\n }\n },\n inputs: {\n animation: \"animation\",\n closeOthers: \"closeOthers\",\n destroyOnHide: \"destroyOnHide\"\n },\n outputs: {\n show: \"show\",\n shown: \"shown\",\n hide: \"hide\",\n hidden: \"hidden\"\n },\n exportAs: [\"ngbAccordion\"],\n standalone: true\n });\n }\n }\n return NgbAccordionDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst NGB_ACCORDION_DIRECTIVES = [NgbAccordionButton, NgbAccordionDirective, NgbAccordionItem, NgbAccordionHeader, NgbAccordionToggle, NgbAccordionBody, NgbAccordionCollapse];\nlet NgbAccordionModule = /*#__PURE__*/(() => {\n class NgbAccordionModule {\n static {\n this.ɵfac = function NgbAccordionModule_Factory(t) {\n return new (t || NgbAccordionModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbAccordionModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbAccordionModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbAlertConfig = /*#__PURE__*/(() => {\n class NgbAlertConfig {\n constructor() {\n this._ngbConfig = inject(NgbConfig);\n this.dismissible = true;\n this.type = 'warning';\n }\n get animation() {\n return this._animation ?? this._ngbConfig.animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n static {\n this.ɵfac = function NgbAlertConfig_Factory(t) {\n return new (t || NgbAlertConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbAlertConfig,\n factory: NgbAlertConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbAlertConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst ngbAlertFadingTransition = ({\n classList\n}) => {\n classList.remove('show');\n};\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 */\nlet NgbAlert = /*#__PURE__*/(() => {\n class NgbAlert {\n constructor() {\n this._config = inject(NgbAlertConfig);\n this._elementRef = inject(ElementRef);\n this._zone = inject(NgZone);\n /**\n * If `true`, alert closing will be animated.\n *\n * Animation is triggered only when clicked on the close button (×)\n * or via the `.close()` function\n *\n * @since 8.0.0\n */\n this.animation = this._config.animation;\n /**\n * If `true`, alert can be dismissed by the user.\n *\n * The close button (×) will be displayed and you can be notified\n * of the event with the `(closed)` output.\n */\n this.dismissible = this._config.dismissible;\n /**\n * Type of the alert.\n *\n * Bootstrap provides styles for the following types: `'success'`, `'info'`, `'warning'`, `'danger'`, `'primary'`,\n * `'secondary'`, `'light'` and `'dark'`.\n */\n this.type = this._config.type;\n /**\n * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n *\n * @since 8.0.0\n */\n this.closed = new EventEmitter();\n }\n /**\n * Triggers alert closing programmatically (same as clicking on the close button (×)).\n *\n * The returned observable will emit and be completed once the closing transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(closed)` output\n *\n * @since 8.0.0\n */\n close() {\n const transition = ngbRunTransition(this._zone, this._elementRef.nativeElement, ngbAlertFadingTransition, {\n animation: this.animation,\n runningTransition: 'continue'\n });\n transition.subscribe(() => this.closed.emit());\n return transition;\n }\n static {\n this.ɵfac = function NgbAlert_Factory(t) {\n return new (t || NgbAlert)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbAlert,\n selectors: [[\"ngb-alert\"]],\n hostAttrs: [\"role\", \"alert\"],\n hostVars: 6,\n hostBindings: function NgbAlert_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassMap(\"alert show\" + (ctx.type ? \" alert-\" + ctx.type : \"\"));\n i0.ɵɵclassProp(\"fade\", ctx.animation)(\"alert-dismissible\", ctx.dismissible);\n }\n },\n inputs: {\n animation: \"animation\",\n dismissible: \"dismissible\",\n type: \"type\"\n },\n outputs: {\n closed: \"closed\"\n },\n exportAs: [\"ngbAlert\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 2,\n vars: 1,\n consts: () => {\n let i18n_0;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_0 = goog.getMsg(\"Close\");\n i18n_0 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_0;\n } else {\n i18n_0 = $localize`:@@ngb.alert.close:Close`;\n }\n return [[\"type\", \"button\", \"aria-label\", i18n_0, 1, \"btn-close\"], [\"type\", \"button\", \"aria-label\", i18n_0, 1, \"btn-close\", 3, \"click\"]];\n },\n template: function NgbAlert_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n i0.ɵɵtemplate(1, NgbAlert_Conditional_1_Template, 1, 0, \"button\", 0);\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵconditional(1, ctx.dismissible ? 1 : -1);\n }\n },\n styles: [\"ngb-alert{display:block}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbAlert;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbAlertModule = /*#__PURE__*/(() => {\n class NgbAlertModule {\n static {\n this.ɵfac = function NgbAlertModule_Factory(t) {\n return new (t || NgbAlertModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbAlertModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbAlertModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbCarouselConfig = /*#__PURE__*/(() => {\n class NgbCarouselConfig {\n constructor() {\n this._ngbConfig = inject(NgbConfig);\n this.interval = 5000;\n this.wrap = true;\n this.keyboard = true;\n this.pauseOnHover = true;\n this.pauseOnFocus = true;\n this.showNavigationArrows = true;\n this.showNavigationIndicators = true;\n }\n get animation() {\n return this._animation ?? this._ngbConfig.animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n static {\n this.ɵfac = function NgbCarouselConfig_Factory(t) {\n return new (t || NgbCarouselConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCarouselConfig,\n factory: NgbCarouselConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbCarouselConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Defines the carousel slide transition direction.\n */\nvar NgbSlideEventDirection = /*#__PURE__*/function (NgbSlideEventDirection) {\n NgbSlideEventDirection[\"START\"] = \"start\";\n NgbSlideEventDirection[\"END\"] = \"end\";\n return NgbSlideEventDirection;\n}(NgbSlideEventDirection || {});\nconst isBeingAnimated = ({\n classList\n}) => {\n return classList.contains('carousel-item-start') || classList.contains('carousel-item-end');\n};\nconst removeDirectionClasses = classList => {\n classList.remove('carousel-item-start');\n classList.remove('carousel-item-end');\n};\nconst removeClasses = classList => {\n removeDirectionClasses(classList);\n classList.remove('carousel-item-prev');\n classList.remove('carousel-item-next');\n};\nconst ngbCarouselTransitionIn = (element, animation, {\n direction\n}) => {\n const {\n classList\n } = element;\n if (!animation) {\n removeDirectionClasses(classList);\n removeClasses(classList);\n classList.add('active');\n return;\n }\n if (isBeingAnimated(element)) {\n // Revert the transition\n removeDirectionClasses(classList);\n } else {\n // For the 'in' transition, a 'pre-class' is applied to the element to ensure its visibility\n classList.add('carousel-item-' + (direction === NgbSlideEventDirection.START ? 'next' : 'prev'));\n reflow(element);\n classList.add('carousel-item-' + direction);\n }\n return () => {\n removeClasses(classList);\n classList.add('active');\n };\n};\nconst ngbCarouselTransitionOut = (element, animation, {\n direction\n}) => {\n const {\n classList\n } = element;\n if (!animation) {\n removeDirectionClasses(classList);\n removeClasses(classList);\n classList.remove('active');\n return;\n }\n // direction is left or right, depending on the way the slide goes out.\n if (isBeingAnimated(element)) {\n // Revert the transition\n removeDirectionClasses(classList);\n } else {\n classList.add('carousel-item-' + direction);\n }\n return () => {\n removeClasses(classList);\n classList.remove('active');\n };\n};\nlet nextId$2 = 0;\nlet carouselId = 0;\n/**\n * A directive that wraps the individual carousel slide.\n */\nlet NgbSlide = /*#__PURE__*/(() => {\n class NgbSlide {\n constructor() {\n this.templateRef = inject(TemplateRef);\n /**\n * Slide id that must be unique for the entire document.\n *\n * If not provided, will be generated in the `ngb-slide-xx` format.\n */\n this.id = `ngb-slide-${nextId$2++}`;\n /**\n * An event emitted when the slide transition is finished\n *\n * @since 8.0.0\n */\n this.slid = new EventEmitter();\n }\n static {\n this.ɵfac = function NgbSlide_Factory(t) {\n return new (t || NgbSlide)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbSlide,\n selectors: [[\"ng-template\", \"ngbSlide\", \"\"]],\n inputs: {\n id: \"id\"\n },\n outputs: {\n slid: \"slid\"\n },\n standalone: true\n });\n }\n }\n return NgbSlide;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbCarousel = /*#__PURE__*/(() => {\n class NgbCarousel {\n constructor() {\n this.NgbSlideEventSource = NgbSlideEventSource;\n this._config = inject(NgbCarouselConfig);\n this._platformId = inject(PLATFORM_ID);\n this._ngZone = inject(NgZone);\n this._cd = inject(ChangeDetectorRef);\n this._container = inject(ElementRef);\n this._destroyRef = inject(DestroyRef);\n this._interval$ = new BehaviorSubject(this._config.interval);\n this._mouseHover$ = new BehaviorSubject(false);\n this._focused$ = new BehaviorSubject(false);\n this._pauseOnHover$ = new BehaviorSubject(this._config.pauseOnHover);\n this._pauseOnFocus$ = new BehaviorSubject(this._config.pauseOnFocus);\n this._pause$ = new BehaviorSubject(false);\n this._wrap$ = new BehaviorSubject(this._config.wrap);\n this.id = `ngb-carousel-${carouselId++}`;\n /**\n * A flag to enable/disable the animations.\n *\n * @since 8.0.0\n */\n this.animation = this._config.animation;\n /**\n * If `true`, allows to interact with carousel using keyboard 'arrow left' and 'arrow right'.\n */\n this.keyboard = this._config.keyboard;\n /**\n * If `true`, 'previous' and 'next' navigation arrows will be visible on the slide.\n *\n * @since 2.2.0\n */\n this.showNavigationArrows = this._config.showNavigationArrows;\n /**\n * If `true`, navigation indicators at the bottom of the slide will be visible.\n *\n * @since 2.2.0\n */\n this.showNavigationIndicators = this._config.showNavigationIndicators;\n /**\n * An event emitted just before the slide transition starts.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n */\n this.slide = new EventEmitter();\n /**\n * An event emitted right after the slide transition is completed.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n *\n * @since 8.0.0\n */\n this.slid = new EventEmitter();\n /*\n * Keep the ids of the panels currently transitionning\n * in order to allow only the transition revertion\n */\n this._transitionIds = null;\n }\n /**\n * Time in milliseconds before the next slide is shown.\n */\n set interval(value) {\n this._interval$.next(value);\n }\n get interval() {\n return this._interval$.value;\n }\n /**\n * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n */\n set wrap(value) {\n this._wrap$.next(value);\n }\n get wrap() {\n return this._wrap$.value;\n }\n /**\n * If `true`, will pause slide switching when mouse cursor hovers the slide.\n *\n * @since 2.2.0\n */\n set pauseOnHover(value) {\n this._pauseOnHover$.next(value);\n }\n get pauseOnHover() {\n return this._pauseOnHover$.value;\n }\n /**\n * If `true`, will pause slide switching when the focus is inside the carousel.\n */\n set pauseOnFocus(value) {\n this._pauseOnFocus$.next(value);\n }\n get pauseOnFocus() {\n return this._pauseOnFocus$.value;\n }\n set mouseHover(value) {\n this._mouseHover$.next(value);\n }\n get mouseHover() {\n return this._mouseHover$.value;\n }\n set focused(value) {\n this._focused$.next(value);\n }\n get focused() {\n return this._focused$.value;\n }\n arrowLeft() {\n this.focus();\n this.prev(NgbSlideEventSource.ARROW_LEFT);\n }\n arrowRight() {\n this.focus();\n this.next(NgbSlideEventSource.ARROW_RIGHT);\n }\n ngAfterContentInit() {\n // setInterval() doesn't play well with SSR and protractor,\n // so we should run it in the browser and outside Angular\n if (isPlatformBrowser(this._platformId)) {\n this._ngZone.runOutsideAngular(() => {\n const hasNextSlide$ = combineLatest([this.slide.pipe(map(slideEvent => slideEvent.current), startWith(this.activeId)), this._wrap$, this.slides.changes.pipe(startWith(null))]).pipe(map(([currentSlideId, wrap]) => {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n return wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\n }), distinctUntilChanged());\n combineLatest([this._pause$, this._pauseOnHover$, this._mouseHover$, this._pauseOnFocus$, this._focused$, this._interval$, hasNextSlide$]).pipe(map(([pause, pauseOnHover, mouseHover, pauseOnFocus, focused, interval, hasNextSlide]) => pause || pauseOnHover && mouseHover || pauseOnFocus && focused || !hasNextSlide ? 0 : interval), distinctUntilChanged(), switchMap(interval => interval > 0 ? timer(interval, interval) : NEVER), takeUntilDestroyed(this._destroyRef)).subscribe(() => this._ngZone.run(() => this.next(NgbSlideEventSource.TIMER)));\n });\n }\n this.slides.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._transitionIds?.forEach(id => ngbCompleteTransition(this._getSlideElement(id)));\n this._transitionIds = null;\n this._cd.markForCheck();\n // The following code need to be done asynchronously, after the dom becomes stable,\n // otherwise all changes will be undone.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n for (const {\n id\n } of this.slides) {\n const element = this._getSlideElement(id);\n if (id === this.activeId) {\n element.classList.add('active');\n } else {\n element.classList.remove('active');\n }\n }\n });\n });\n }\n ngAfterContentChecked() {\n let activeSlide = this._getSlideById(this.activeId);\n this.activeId = activeSlide ? activeSlide.id : this.slides.length ? this.slides.first.id : '';\n }\n ngAfterViewInit() {\n // Initialize the 'active' class (not managed by the template)\n if (this.activeId) {\n const element = this._getSlideElement(this.activeId);\n if (element) {\n element.classList.add('active');\n }\n }\n }\n /**\n * Navigates to a slide with the specified identifier.\n */\n select(slideId, source) {\n this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\n }\n /**\n * Navigates to the previous slide.\n */\n prev(source) {\n this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.END, source);\n }\n /**\n * Navigates to the next slide.\n */\n next(source) {\n this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.START, source);\n }\n /**\n * Pauses cycling through the slides.\n */\n pause() {\n this._pause$.next(true);\n }\n /**\n * Restarts cycling through the slides from start to end.\n */\n cycle() {\n this._pause$.next(false);\n }\n /**\n * Set the focus on the carousel.\n */\n focus() {\n this._container.nativeElement.focus();\n }\n _cycleToSelected(slideIdx, direction, source) {\n const transitionIds = this._transitionIds;\n if (transitionIds && (transitionIds[0] !== slideIdx || transitionIds[1] !== this.activeId)) {\n // Revert prevented\n return;\n }\n let selectedSlide = this._getSlideById(slideIdx);\n if (selectedSlide && selectedSlide.id !== this.activeId) {\n this._transitionIds = [this.activeId, slideIdx];\n this.slide.emit({\n prev: this.activeId,\n current: selectedSlide.id,\n direction: direction,\n paused: this._pause$.value,\n source\n });\n const options = {\n animation: this.animation,\n runningTransition: 'stop',\n context: {\n direction\n }\n };\n const transitions = [];\n const activeSlide = this._getSlideById(this.activeId);\n if (activeSlide) {\n const activeSlideTransition = ngbRunTransition(this._ngZone, this._getSlideElement(activeSlide.id), ngbCarouselTransitionOut, options);\n activeSlideTransition.subscribe(() => {\n activeSlide.slid.emit({\n isShown: false,\n direction,\n source\n });\n });\n transitions.push(activeSlideTransition);\n }\n const previousId = this.activeId;\n this.activeId = selectedSlide.id;\n const nextSlide = this._getSlideById(this.activeId);\n const transition = ngbRunTransition(this._ngZone, this._getSlideElement(selectedSlide.id), ngbCarouselTransitionIn, options);\n transition.subscribe(() => {\n nextSlide?.slid.emit({\n isShown: true,\n direction,\n source\n });\n });\n transitions.push(transition);\n zip(...transitions).pipe(take(1)).subscribe(() => {\n this._transitionIds = null;\n this.slid.emit({\n prev: previousId,\n current: selectedSlide.id,\n direction: direction,\n paused: this._pause$.value,\n source\n });\n });\n }\n // we get here after the interval fires or any external API call like next(), prev() or select()\n this._cd.markForCheck();\n }\n _getSlideEventDirection(currentActiveSlideId, nextActiveSlideId) {\n const currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n const nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.END : NgbSlideEventDirection.START;\n }\n _getSlideById(slideId) {\n return this.slides.find(slide => slide.id === slideId) || null;\n }\n _getSlideIdxById(slideId) {\n const slide = this._getSlideById(slideId);\n return slide != null ? this.slides.toArray().indexOf(slide) : -1;\n }\n _getNextSlide(currentSlideId) {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n const isLastSlide = currentSlideIdx === slideArr.length - 1;\n return isLastSlide ? this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id : slideArr[currentSlideIdx + 1].id;\n }\n _getPrevSlide(currentSlideId) {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n const isFirstSlide = currentSlideIdx === 0;\n return isFirstSlide ? this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id : slideArr[currentSlideIdx - 1].id;\n }\n _getSlideElement(slideId) {\n return this._container.nativeElement.querySelector(`#slide-${slideId}`);\n }\n static {\n this.ɵfac = function NgbCarousel_Factory(t) {\n return new (t || NgbCarousel)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbCarousel,\n selectors: [[\"ngb-carousel\"]],\n contentQueries: function NgbCarousel_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbSlide, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slides = _t);\n }\n },\n hostAttrs: [\"tabIndex\", \"0\", 1, \"carousel\", \"slide\"],\n hostVars: 3,\n hostBindings: function NgbCarousel_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown.arrowLeft\", function NgbCarousel_keydown_arrowLeft_HostBindingHandler() {\n return ctx.keyboard && ctx.arrowLeft();\n })(\"keydown.arrowRight\", function NgbCarousel_keydown_arrowRight_HostBindingHandler() {\n return ctx.keyboard && ctx.arrowRight();\n })(\"mouseenter\", function NgbCarousel_mouseenter_HostBindingHandler() {\n return ctx.mouseHover = true;\n })(\"mouseleave\", function NgbCarousel_mouseleave_HostBindingHandler() {\n return ctx.mouseHover = false;\n })(\"focusin\", function NgbCarousel_focusin_HostBindingHandler() {\n return ctx.focused = true;\n })(\"focusout\", function NgbCarousel_focusout_HostBindingHandler() {\n return ctx.focused = false;\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-activedescendant\", \"slide-\" + ctx.activeId);\n i0.ɵɵstyleProp(\"display\", \"block\");\n }\n },\n inputs: {\n animation: \"animation\",\n activeId: \"activeId\",\n interval: \"interval\",\n wrap: \"wrap\",\n keyboard: \"keyboard\",\n pauseOnHover: \"pauseOnHover\",\n pauseOnFocus: \"pauseOnFocus\",\n showNavigationArrows: \"showNavigationArrows\",\n showNavigationIndicators: \"showNavigationIndicators\"\n },\n outputs: {\n slide: \"slide\",\n slid: \"slid\"\n },\n exportAs: [\"ngbCarousel\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 7,\n vars: 3,\n consts: () => {\n let i18n_1;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc Currently selected slide number read by screen reader\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_1 = goog.getMsg(\" Slide {$interpolation} of {$interpolation_1} \", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\",\n \"interpolation_1\": \"\\uFFFD1\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ i + 1 }}\",\n \"interpolation_1\": \"{{ c }}\"\n }\n });\n i18n_1 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_1;\n } else {\n i18n_1 = $localize`:Currently selected slide number read by screen reader@@ngb.carousel.slide-number: Slide ${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION: of ${\"\\uFFFD1\\uFFFD\"}:INTERPOLATION_1: `;\n }\n let i18n_2;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_2 = goog.getMsg(\"Previous\");\n i18n_2 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_2;\n } else {\n i18n_2 = $localize`:@@ngb.carousel.previous:Previous`;\n }\n let i18n_3;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_3 = goog.getMsg(\"Next\");\n i18n_3 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_3;\n } else {\n i18n_3 = $localize`:@@ngb.carousel.next:Next`;\n }\n return [i18n_1, i18n_2, i18n_3, [\"role\", \"tablist\", 1, \"carousel-indicators\"], [\"type\", \"button\", \"data-bs-target\", \"\", \"role\", \"tab\", 3, \"active\"], [1, \"carousel-inner\"], [\"role\", \"tabpanel\", 1, \"carousel-item\", 3, \"id\"], [\"type\", \"button\", \"data-bs-target\", \"\", \"role\", \"tab\", 3, \"click\"], [1, \"visually-hidden\"], [3, \"ngTemplateOutlet\"], [\"type\", \"button\", 1, \"carousel-control-prev\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-prev-icon\"], [1, \"visually-hidden\", 3, \"id\"], [\"type\", \"button\", 1, \"carousel-control-next\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-next-icon\"]];\n },\n template: function NgbCarousel_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 3);\n i0.ɵɵrepeaterCreate(1, NgbCarousel_For_2_Template, 1, 5, \"button\", 4, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"div\", 5);\n i0.ɵɵrepeaterCreate(4, NgbCarousel_For_5_Template, 4, 4, \"div\", 6, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(6, NgbCarousel_Conditional_6_Template, 8, 4);\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"visually-hidden\", !ctx.showNavigationIndicators);\n i0.ɵɵadvance();\n i0.ɵɵrepeater(ctx.slides);\n i0.ɵɵadvance(3);\n i0.ɵɵrepeater(ctx.slides);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(6, ctx.showNavigationArrows ? 6 : -1);\n }\n },\n dependencies: [NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbCarousel;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nvar NgbSlideEventSource = /*#__PURE__*/function (NgbSlideEventSource) {\n NgbSlideEventSource[\"TIMER\"] = \"timer\";\n NgbSlideEventSource[\"ARROW_LEFT\"] = \"arrowLeft\";\n NgbSlideEventSource[\"ARROW_RIGHT\"] = \"arrowRight\";\n NgbSlideEventSource[\"INDICATOR\"] = \"indicator\";\n return NgbSlideEventSource;\n}(NgbSlideEventSource || {});\nlet NgbCarouselModule = /*#__PURE__*/(() => {\n class NgbCarouselModule {\n static {\n this.ɵfac = function NgbCarouselModule_Factory(t) {\n return new (t || NgbCarouselModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbCarouselModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbCarouselModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbCollapseModule = /*#__PURE__*/(() => {\n class NgbCollapseModule {\n static {\n this.ɵfac = function NgbCollapseModule_Factory(t) {\n return new (t || NgbCollapseModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbCollapseModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbCollapseModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nclass NgbDate {\n /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n */\n static from(date) {\n if (date instanceof NgbDate) {\n return date;\n }\n return date ? new NgbDate(date.year, date.month, date.day) : null;\n }\n constructor(year, month, day) {\n this.year = isInteger(year) ? year : null;\n this.month = isInteger(month) ? month : null;\n this.day = isInteger(day) ? day : null;\n }\n /**\n * Checks if the current date is equal to another date.\n */\n equals(other) {\n return other != null && this.year === other.year && this.month === other.month && this.day === other.day;\n }\n /**\n * Checks if the current date is before another date.\n */\n before(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day < other.day;\n } else {\n return this.month < other.month;\n }\n } else {\n return this.year < other.year;\n }\n }\n /**\n * Checks if the current date is after another date.\n */\n after(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day > other.day;\n } else {\n return this.month > other.month;\n }\n } else {\n return this.year > other.year;\n }\n }\n}\nfunction fromJSDate(jsDate) {\n return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\nfunction toJSDate(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // this is done avoid 30 -> 1930 conversion\n if (!isNaN(jsDate.getTime())) {\n jsDate.setFullYear(date.year);\n }\n return jsDate;\n}\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\n return new NgbCalendarGregorian();\n}\n/**\n * A service that represents the calendar used by the datepicker.\n *\n * The default implementation uses the Gregorian calendar. You can inject it in your own\n * implementations if necessary to simplify `NgbDate` calculations.\n */\nlet NgbCalendar = /*#__PURE__*/(() => {\n class NgbCalendar {\n static {\n this.ɵfac = function NgbCalendar_Factory(t) {\n return new (t || NgbCalendar)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCalendar,\n factory: () => NGB_DATEPICKER_CALENDAR_FACTORY(),\n providedIn: 'root'\n });\n }\n }\n return NgbCalendar;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbCalendarGregorian = /*#__PURE__*/(() => {\n class NgbCalendarGregorian extends NgbCalendar {\n getDaysPerWeek() {\n return 7;\n }\n getMonths() {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n getWeeksPerMonth() {\n return 6;\n }\n getNext(date, period = 'd', number = 1) {\n let jsDate = toJSDate(date);\n let checkMonth = true;\n let expectedMonth = jsDate.getMonth();\n switch (period) {\n case 'y':\n jsDate.setFullYear(jsDate.getFullYear() + number);\n break;\n case 'm':\n expectedMonth += number;\n jsDate.setMonth(expectedMonth);\n expectedMonth = expectedMonth % 12;\n if (expectedMonth < 0) {\n expectedMonth = expectedMonth + 12;\n }\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n checkMonth = false;\n break;\n default:\n return date;\n }\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n // this means the destination month has less days than the initial month\n // let's go back to the end of the previous month:\n jsDate.setDate(0);\n }\n return fromJSDate(jsDate);\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n let jsDate = toJSDate(date);\n let day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n let date = week[thursdayIndex];\n const jsDate = toJSDate(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() {\n return fromJSDate(new Date());\n }\n isValid(date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n const jsDate = toJSDate(date);\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month && jsDate.getDate() === date.day;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbCalendarGregorian_BaseFactory;\n return function NgbCalendarGregorian_Factory(t) {\n return (ɵNgbCalendarGregorian_BaseFactory || (ɵNgbCalendarGregorian_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarGregorian)))(t || NgbCalendarGregorian);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCalendarGregorian,\n factory: NgbCalendarGregorian.ɵfac\n });\n }\n }\n return NgbCalendarGregorian;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction isChangedDate(prev, next) {\n return !dateComparator(prev, next);\n}\nfunction isChangedMonth(prev, next) {\n return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\nfunction dateComparator(prev, next) {\n return !prev && !next || !!prev && !!next && prev.equals(next);\n}\nfunction checkMinBeforeMax(minDate, maxDate) {\n if (maxDate && minDate && maxDate.before(minDate)) {\n throw new Error(`'maxDate' ${maxDate} should be greater than 'minDate' ${minDate}`);\n }\n}\nfunction checkDateInRange(date, minDate, maxDate) {\n if (date && minDate && date.before(minDate)) {\n return minDate;\n }\n if (date && maxDate && date.after(maxDate)) {\n return maxDate;\n }\n return date || null;\n}\nfunction isDateSelectable(date, state) {\n const {\n minDate,\n maxDate,\n disabled,\n markDisabled\n } = state;\n return !(date === null || date === undefined || disabled || markDisabled && markDisabled(date, {\n year: date.year,\n month: date.month\n }) || minDate && date.before(minDate) || maxDate && date.after(maxDate));\n}\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n let months = calendar.getMonths(date.year);\n if (minDate && date.year === minDate.year) {\n const index = months.findIndex(month => month === minDate.month);\n months = months.slice(index);\n }\n if (maxDate && date.year === maxDate.year) {\n const index = months.findIndex(month => month === maxDate.month);\n months = months.slice(0, index + 1);\n }\n return months;\n}\nfunction generateSelectBoxYears(date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n const start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\n const end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\n const length = end - start + 1;\n const numbers = Array(length);\n for (let i = 0; i < length; i++) {\n numbers[i] = start + i;\n }\n return numbers;\n}\nfunction nextMonthDisabled(calendar, date, maxDate) {\n const nextDate = Object.assign(calendar.getNext(date, 'm'), {\n day: 1\n });\n return maxDate != null && nextDate.after(maxDate);\n}\nfunction prevMonthDisabled(calendar, date, minDate) {\n const prevDate = Object.assign(calendar.getPrev(date, 'm'), {\n day: 1\n });\n return minDate != null && (prevDate.year === minDate.year && prevDate.month < minDate.month || prevDate.year < minDate.year && minDate.month === 1);\n}\nfunction buildMonths(calendar, date, state, i18n, force) {\n const {\n displayMonths,\n months\n } = state;\n // move old months to a temporary array\n const monthsToReuse = months.splice(0, months.length);\n // generate new first dates, nullify or reuse months\n const firstDates = Array.from({\n length: displayMonths\n }, (_, i) => {\n const firstDate = Object.assign(calendar.getNext(date, 'm', i), {\n day: 1\n });\n months[i] = null;\n if (!force) {\n const reusedIndex = monthsToReuse.findIndex(month => month.firstDate.equals(firstDate));\n // move reused month back to months\n if (reusedIndex !== -1) {\n months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n }\n }\n return firstDate;\n });\n // rebuild nullified months\n firstDates.forEach((firstDate, i) => {\n if (months[i] === null) {\n months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || {});\n }\n });\n return months;\n}\nfunction buildMonth(calendar, date, state, i18n, month = {}) {\n const {\n dayTemplateData,\n minDate,\n maxDate,\n firstDayOfWeek,\n markDisabled,\n outsideDays,\n weekdayWidth,\n weekdaysVisible\n } = state;\n const calendarToday = calendar.getToday();\n month.firstDate = null;\n month.lastDate = null;\n month.number = date.month;\n month.year = date.year;\n month.weeks = month.weeks || [];\n month.weekdays = month.weekdays || [];\n date = getFirstViewDate(calendar, date, firstDayOfWeek);\n // clearing weekdays, if not visible\n if (!weekdaysVisible) {\n month.weekdays.length = 0;\n }\n // month has weeks\n for (let week = 0; week < calendar.getWeeksPerMonth(); week++) {\n let weekObject = month.weeks[week];\n if (!weekObject) {\n weekObject = month.weeks[week] = {\n number: 0,\n days: [],\n collapsed: true\n };\n }\n const days = weekObject.days;\n // week has days\n for (let day = 0; day < calendar.getDaysPerWeek(); day++) {\n if (week === 0 && weekdaysVisible) {\n month.weekdays[day] = i18n.getWeekdayLabel(calendar.getWeekday(date), weekdayWidth);\n }\n const newDate = new NgbDate(date.year, date.month, date.day);\n const nextDate = calendar.getNext(newDate);\n const ariaLabel = i18n.getDayAriaLabel(newDate);\n // marking date as disabled\n let disabled = !!(minDate && newDate.before(minDate) || maxDate && newDate.after(maxDate));\n if (!disabled && markDisabled) {\n disabled = markDisabled(newDate, {\n month: month.number,\n year: month.year\n });\n }\n // today\n let today = newDate.equals(calendarToday);\n // adding user-provided data to the context\n let contextUserData = dayTemplateData ? dayTemplateData(newDate, {\n month: month.number,\n year: month.year\n }) : undefined;\n // saving first date of the month\n if (month.firstDate === null && newDate.month === month.number) {\n month.firstDate = newDate;\n }\n // saving last date of the month\n if (newDate.month === month.number && nextDate.month !== month.number) {\n month.lastDate = newDate;\n }\n let dayObject = days[day];\n if (!dayObject) {\n dayObject = days[day] = {};\n }\n dayObject.date = newDate;\n dayObject.context = Object.assign(dayObject.context || {}, {\n $implicit: newDate,\n date: newDate,\n data: contextUserData,\n currentMonth: month.number,\n currentYear: month.year,\n disabled,\n focused: false,\n selected: false,\n today\n });\n dayObject.tabindex = -1;\n dayObject.ariaLabel = ariaLabel;\n dayObject.hidden = false;\n date = nextDate;\n }\n weekObject.number = calendar.getWeekNumber(days.map(day => day.date), firstDayOfWeek);\n // marking week as collapsed\n weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number && days[days.length - 1].date.month !== month.number;\n }\n return month;\n}\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\n const daysPerWeek = calendar.getDaysPerWeek();\n const firstMonthDate = new NgbDate(date.year, date.month, 1);\n const dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\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 */\nlet NgbDatepickerI18n = /*#__PURE__*/(() => {\n class NgbDatepickerI18n {\n /**\n * Returns the text label to display above the day view.\n *\n * @since 9.1.0\n */\n getMonthLabel(date) {\n return `${this.getMonthFullName(date.month, date.year)} ${this.getYearNumerals(date.year)}`;\n }\n /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * @since 3.0.0\n */\n getDayNumerals(date) {\n return `${date.day}`;\n }\n /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * @since 3.0.0\n */\n getWeekNumerals(weekNumber) {\n return `${weekNumber}`;\n }\n /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * @since 3.0.0\n */\n getYearNumerals(year) {\n return `${year}`;\n }\n /**\n * Returns the week label to display in the heading of the month view.\n *\n * @since 9.1.0\n */\n getWeekLabel() {\n return '';\n }\n static {\n this.ɵfac = function NgbDatepickerI18n_Factory(t) {\n return new (t || NgbDatepickerI18n)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDatepickerI18n,\n factory: () => (() => new NgbDatepickerI18nDefault())(),\n providedIn: 'root'\n });\n }\n }\n return NgbDatepickerI18n;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbDatepickerI18nDefault = /*#__PURE__*/(() => {\n class NgbDatepickerI18nDefault extends NgbDatepickerI18n {\n constructor() {\n super(...arguments);\n this._locale = inject(LOCALE_ID);\n this._monthsShort = getLocaleMonthNames(this._locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\n this._monthsFull = getLocaleMonthNames(this._locale, FormStyle.Standalone, TranslationWidth.Wide);\n }\n getWeekdayLabel(weekday, width) {\n const weekdaysStartingOnSunday = getLocaleDayNames(this._locale, FormStyle.Standalone, width === undefined ? TranslationWidth.Short : width);\n const weekdays = weekdaysStartingOnSunday.map((day, index) => weekdaysStartingOnSunday[(index + 1) % 7]);\n return weekdays[weekday - 1] || '';\n }\n getMonthShortName(month) {\n return this._monthsShort[month - 1] || '';\n }\n getMonthFullName(month) {\n return this._monthsFull[month - 1] || '';\n }\n getDayAriaLabel(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day);\n return formatDate(jsDate, 'fullDate', this._locale);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbDatepickerI18nDefault_BaseFactory;\n return function NgbDatepickerI18nDefault_Factory(t) {\n return (ɵNgbDatepickerI18nDefault_BaseFactory || (ɵNgbDatepickerI18nDefault_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDatepickerI18nDefault)))(t || NgbDatepickerI18nDefault);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDatepickerI18nDefault,\n factory: NgbDatepickerI18nDefault.ɵfac\n });\n }\n }\n return NgbDatepickerI18nDefault;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbDatepickerService = /*#__PURE__*/(() => {\n class NgbDatepickerService {\n constructor() {\n this._VALIDATORS = {\n dayTemplateData: dayTemplateData => {\n if (this._state.dayTemplateData !== dayTemplateData) {\n return {\n dayTemplateData\n };\n }\n },\n displayMonths: displayMonths => {\n displayMonths = toInteger(displayMonths);\n if (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\n return {\n displayMonths\n };\n }\n },\n disabled: disabled => {\n if (this._state.disabled !== disabled) {\n return {\n disabled\n };\n }\n },\n firstDayOfWeek: firstDayOfWeek => {\n firstDayOfWeek = toInteger(firstDayOfWeek);\n if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\n return {\n firstDayOfWeek\n };\n }\n },\n focusVisible: focusVisible => {\n if (this._state.focusVisible !== focusVisible && !this._state.disabled) {\n return {\n focusVisible\n };\n }\n },\n markDisabled: markDisabled => {\n if (this._state.markDisabled !== markDisabled) {\n return {\n markDisabled\n };\n }\n },\n maxDate: date => {\n const maxDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.maxDate, maxDate)) {\n return {\n maxDate\n };\n }\n },\n minDate: date => {\n const minDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.minDate, minDate)) {\n return {\n minDate\n };\n }\n },\n navigation: navigation => {\n if (this._state.navigation !== navigation) {\n return {\n navigation\n };\n }\n },\n outsideDays: outsideDays => {\n if (this._state.outsideDays !== outsideDays) {\n return {\n outsideDays\n };\n }\n },\n weekdays: weekdays => {\n const weekdayWidth = weekdays === true || weekdays === false ? TranslationWidth.Short : weekdays;\n const weekdaysVisible = weekdays === true || weekdays === false ? weekdays : true;\n if (this._state.weekdayWidth !== weekdayWidth || this._state.weekdaysVisible !== weekdaysVisible) {\n return {\n weekdayWidth,\n weekdaysVisible\n };\n }\n }\n };\n this._calendar = inject(NgbCalendar);\n this._i18n = inject(NgbDatepickerI18n);\n this._model$ = new Subject();\n this._dateSelect$ = new Subject();\n this._state = {\n dayTemplateData: null,\n markDisabled: null,\n maxDate: null,\n minDate: null,\n disabled: false,\n displayMonths: 1,\n firstDate: null,\n firstDayOfWeek: 1,\n lastDate: null,\n focusDate: null,\n focusVisible: false,\n months: [],\n navigation: 'select',\n outsideDays: 'visible',\n prevDisabled: false,\n nextDisabled: false,\n selectedDate: null,\n selectBoxes: {\n years: [],\n months: []\n },\n weekdayWidth: TranslationWidth.Short,\n weekdaysVisible: true\n };\n }\n get model$() {\n return this._model$.pipe(filter(model => model.months.length > 0));\n }\n get dateSelect$() {\n return this._dateSelect$.pipe(filter(date => date !== null));\n }\n set(options) {\n let patch = Object.keys(options).map(key => this._VALIDATORS[key](options[key])).reduce((obj, part) => ({\n ...obj,\n ...part\n }), {});\n if (Object.keys(patch).length > 0) {\n this._nextState(patch);\n }\n }\n focus(date) {\n const focusedDate = this.toValidDate(date, null);\n if (focusedDate != null && !this._state.disabled && isChangedDate(this._state.focusDate, focusedDate)) {\n this._nextState({\n focusDate: date\n });\n }\n }\n focusSelect() {\n if (isDateSelectable(this._state.focusDate, this._state)) {\n this.select(this._state.focusDate, {\n emitEvent: true\n });\n }\n }\n open(date) {\n const firstDate = this.toValidDate(date, this._calendar.getToday());\n if (firstDate != null && !this._state.disabled && (!this._state.firstDate || isChangedMonth(this._state.firstDate, firstDate))) {\n this._nextState({\n firstDate\n });\n }\n }\n select(date, options = {}) {\n const selectedDate = this.toValidDate(date, null);\n if (selectedDate != null && !this._state.disabled) {\n if (isChangedDate(this._state.selectedDate, selectedDate)) {\n this._nextState({\n selectedDate\n });\n }\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n this._dateSelect$.next(selectedDate);\n }\n }\n }\n toValidDate(date, defaultValue) {\n const ngbDate = NgbDate.from(date);\n if (defaultValue === undefined) {\n defaultValue = this._calendar.getToday();\n }\n return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n }\n getMonth(struct) {\n for (let month of this._state.months) {\n if (struct.month === month.number && struct.year === month.year) {\n return month;\n }\n }\n throw new Error(`month ${struct.month} of year ${struct.year} not found`);\n }\n _nextState(patch) {\n const newState = this._updateState(patch);\n this._patchContexts(newState);\n this._state = newState;\n this._model$.next(this._state);\n }\n _patchContexts(state) {\n const {\n months,\n displayMonths,\n selectedDate,\n focusDate,\n focusVisible,\n disabled,\n outsideDays\n } = state;\n state.months.forEach(month => {\n month.weeks.forEach(week => {\n week.days.forEach(day => {\n // patch focus flag\n if (focusDate) {\n day.context.focused = focusDate.equals(day.date) && focusVisible;\n }\n // calculating tabindex\n day.tabindex = !disabled && focusDate && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n // override context disabled\n if (disabled === true) {\n day.context.disabled = true;\n }\n // patch selection flag\n if (selectedDate !== undefined) {\n day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n }\n // visibility\n if (month.number !== day.date.month) {\n day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' || displayMonths > 1 && day.date.after(months[0].firstDate) && day.date.before(months[displayMonths - 1].lastDate);\n }\n });\n });\n });\n }\n _updateState(patch) {\n // patching fields\n const state = Object.assign({}, this._state, patch);\n let startDate = state.firstDate;\n // min/max dates changed\n if ('minDate' in patch || 'maxDate' in patch) {\n checkMinBeforeMax(state.minDate, state.maxDate);\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n }\n // disabled\n if ('disabled' in patch) {\n state.focusVisible = false;\n }\n // initial rebuild via 'select()'\n if ('selectedDate' in patch && this._state.months.length === 0) {\n startDate = state.selectedDate;\n }\n // terminate early if only focus visibility was changed\n if ('focusVisible' in patch) {\n return state;\n }\n // focus date changed\n if ('focusDate' in patch) {\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n // nothing to rebuild if only focus changed and it is still visible\n if (state.months.length !== 0 && state.focusDate && !state.focusDate.before(state.firstDate) && !state.focusDate.after(state.lastDate)) {\n return state;\n }\n }\n // first date changed\n if ('firstDate' in patch) {\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.firstDate;\n }\n // rebuilding months\n if (startDate) {\n const forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch || 'weekdaysVisible' in patch;\n const months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n // updating months and boundary dates\n state.months = months;\n state.firstDate = months[0].firstDate;\n state.lastDate = months[months.length - 1].lastDate;\n // reset selected date if 'markDisabled' returns true\n if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n state.selectedDate = null;\n }\n // adjusting focus after months were built\n if ('firstDate' in patch) {\n if (!state.focusDate || state.focusDate.before(state.firstDate) || state.focusDate.after(state.lastDate)) {\n state.focusDate = startDate;\n }\n }\n // adjusting months/years for the select box navigation\n const yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n const monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n if (state.navigation === 'select') {\n // years -> boundaries (min/max were changed)\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n }\n // months -> when current year or boundaries change\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n state.selectBoxes.months = generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\n }\n } else {\n state.selectBoxes = {\n years: [],\n months: []\n };\n }\n // updating navigation arrows -> boundaries change (min/max) or month/year changes\n if ((state.navigation === 'arrows' || state.navigation === 'select') && (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\n state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n }\n }\n return state;\n }\n static {\n this.ɵfac = function NgbDatepickerService_Factory(t) {\n return new (t || NgbDatepickerService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDatepickerService,\n factory: NgbDatepickerService.ɵfac\n });\n }\n }\n return NgbDatepickerService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nvar NavigationEvent = /*#__PURE__*/function (NavigationEvent) {\n NavigationEvent[NavigationEvent[\"PREV\"] = 0] = \"PREV\";\n NavigationEvent[NavigationEvent[\"NEXT\"] = 1] = \"NEXT\";\n return NavigationEvent;\n}(NavigationEvent || {});\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 */\nlet NgbDatepickerConfig = /*#__PURE__*/(() => {\n class NgbDatepickerConfig {\n constructor() {\n this.displayMonths = 1;\n this.firstDayOfWeek = 1;\n this.navigation = 'select';\n this.outsideDays = 'visible';\n this.showWeekNumbers = false;\n this.weekdays = TranslationWidth.Short;\n }\n static {\n this.ɵfac = function NgbDatepickerConfig_Factory(t) {\n return new (t || NgbDatepickerConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDatepickerConfig,\n factory: NgbDatepickerConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbDatepickerConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n return new NgbDateStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n * any provided user date model `D`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding datepicker to a form control,\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n *\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n */\nlet NgbDateAdapter = /*#__PURE__*/(() => {\n class NgbDateAdapter {\n static {\n this.ɵfac = function NgbDateAdapter_Factory(t) {\n return new (t || NgbDateAdapter)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDateAdapter,\n factory: () => NGB_DATEPICKER_DATE_ADAPTER_FACTORY(),\n providedIn: 'root'\n });\n }\n }\n return NgbDateAdapter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbDateStructAdapter = /*#__PURE__*/(() => {\n class NgbDateStructAdapter extends NgbDateAdapter {\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n fromModel(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? {\n year: date.year,\n month: date.month,\n day: date.day\n } : null;\n }\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n toModel(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? {\n year: date.year,\n month: date.month,\n day: date.day\n } : null;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbDateStructAdapter_BaseFactory;\n return function NgbDateStructAdapter_Factory(t) {\n return (ɵNgbDateStructAdapter_BaseFactory || (ɵNgbDateStructAdapter_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDateStructAdapter)))(t || NgbDateStructAdapter);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDateStructAdapter,\n factory: NgbDateStructAdapter.ɵfac\n });\n }\n }\n return NgbDateStructAdapter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nvar Key = /*#__PURE__*/function (Key) {\n Key[Key[\"Tab\"] = 9] = \"Tab\";\n Key[Key[\"Enter\"] = 13] = \"Enter\";\n Key[Key[\"Escape\"] = 27] = \"Escape\";\n Key[Key[\"Space\"] = 32] = \"Space\";\n Key[Key[\"PageUp\"] = 33] = \"PageUp\";\n Key[Key[\"PageDown\"] = 34] = \"PageDown\";\n Key[Key[\"End\"] = 35] = \"End\";\n Key[Key[\"Home\"] = 36] = \"Home\";\n Key[Key[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\n Key[Key[\"ArrowUp\"] = 38] = \"ArrowUp\";\n Key[Key[\"ArrowRight\"] = 39] = \"ArrowRight\";\n Key[Key[\"ArrowDown\"] = 40] = \"ArrowDown\";\n return Key;\n}(Key || {});\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 */\nlet NgbDatepickerKeyboardService = /*#__PURE__*/(() => {\n class NgbDatepickerKeyboardService {\n /**\n * Processes a keyboard event.\n */\n processKey(event, datepicker) {\n const {\n state,\n calendar\n } = datepicker;\n /* eslint-disable-next-line deprecation/deprecation */\n switch (event.which) {\n case Key.PageUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.PageDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.End:\n datepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\n break;\n case Key.Home:\n datepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\n break;\n case Key.ArrowLeft:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.ArrowRight:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.Enter:\n case Key.Space:\n datepicker.focusSelect();\n break;\n default:\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n }\n static {\n this.ɵfac = function NgbDatepickerKeyboardService_Factory(t) {\n return new (t || NgbDatepickerKeyboardService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDatepickerKeyboardService,\n factory: NgbDatepickerKeyboardService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbDatepickerKeyboardService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbDatepickerDayView = /*#__PURE__*/(() => {\n class NgbDatepickerDayView {\n constructor() {\n this.i18n = inject(NgbDatepickerI18n);\n }\n isMuted() {\n return !this.selected && (this.date.month !== this.currentMonth || this.disabled);\n }\n static {\n this.ɵfac = function NgbDatepickerDayView_Factory(t) {\n return new (t || NgbDatepickerDayView)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbDatepickerDayView,\n selectors: [[\"\", \"ngbDatepickerDayView\", \"\"]],\n hostAttrs: [1, \"btn-light\"],\n hostVars: 10,\n hostBindings: function NgbDatepickerDayView_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"bg-primary\", ctx.selected)(\"text-white\", ctx.selected)(\"text-muted\", ctx.isMuted())(\"outside\", ctx.isMuted())(\"active\", ctx.focused);\n }\n },\n inputs: {\n currentMonth: \"currentMonth\",\n date: \"date\",\n disabled: \"disabled\",\n focused: \"focused\",\n selected: \"selected\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c1,\n decls: 1,\n vars: 1,\n template: function NgbDatepickerDayView_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n }\n if (rf & 2) {\n i0.ɵɵtextInterpolate(ctx.i18n.getDayNumerals(ctx.date));\n }\n },\n styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:transparent}[ngbDatepickerDayView]:hover:not(.bg-primary),[ngbDatepickerDayView].active:not(.bg-primary){background-color:var(--bs-tertiary-bg);outline:1px solid var(--bs-border-color)}[ngbDatepickerDayView].outside{opacity:.5}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbDatepickerDayView;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbDatepickerNavigationSelect = /*#__PURE__*/(() => {\n class NgbDatepickerNavigationSelect {\n constructor() {\n this._month = -1;\n this._year = -1;\n this.i18n = inject(NgbDatepickerI18n);\n this.select = new EventEmitter();\n }\n changeMonth(month) {\n this.select.emit(new NgbDate(this.date.year, toInteger(month), 1));\n }\n changeYear(year) {\n this.select.emit(new NgbDate(toInteger(year), this.date.month, 1));\n }\n ngAfterViewChecked() {\n if (this.date) {\n if (this.date.month !== this._month) {\n this._month = this.date.month;\n this.monthSelect.nativeElement.value = `${this._month}`;\n }\n if (this.date.year !== this._year) {\n this._year = this.date.year;\n this.yearSelect.nativeElement.value = `${this._year}`;\n }\n }\n }\n static {\n this.ɵfac = function NgbDatepickerNavigationSelect_Factory(t) {\n return new (t || NgbDatepickerNavigationSelect)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbDatepickerNavigationSelect,\n selectors: [[\"ngb-datepicker-navigation-select\"]],\n viewQuery: function NgbDatepickerNavigationSelect_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c2, 7, ElementRef);\n i0.ɵɵviewQuery(_c3, 7, ElementRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.monthSelect = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.yearSelect = _t.first);\n }\n },\n inputs: {\n date: \"date\",\n disabled: \"disabled\",\n months: \"months\",\n years: \"years\"\n },\n outputs: {\n select: \"select\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 8,\n vars: 2,\n consts: () => {\n let i18n_4;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_4 = goog.getMsg(\"Select month\");\n i18n_4 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_4;\n } else {\n i18n_4 = $localize`:@@ngb.datepicker.select-month:Select month`;\n }\n let i18n_5;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_5 = goog.getMsg(\"Select month\");\n i18n_5 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_5;\n } else {\n i18n_5 = $localize`:@@ngb.datepicker.select-month:Select month`;\n }\n let i18n_6;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_6 = goog.getMsg(\"Select year\");\n i18n_6 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_6;\n } else {\n i18n_6 = $localize`:@@ngb.datepicker.select-year:Select year`;\n }\n let i18n_7;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_7 = goog.getMsg(\"Select year\");\n i18n_7 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_7;\n } else {\n i18n_7 = $localize`:@@ngb.datepicker.select-year:Select year`;\n }\n return [[\"month\", \"\"], [\"year\", \"\"], [\"aria-label\", i18n_4, \"title\", i18n_5, 1, \"form-select\", 3, \"change\", \"disabled\"], [3, \"value\"], [\"aria-label\", i18n_6, \"title\", i18n_7, 1, \"form-select\", 3, \"change\", \"disabled\"]];\n },\n template: function NgbDatepickerNavigationSelect_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"select\", 2, 0);\n i0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.changeMonth($event.target.value));\n });\n i0.ɵɵrepeaterCreate(2, NgbDatepickerNavigationSelect_For_3_Template, 2, 3, \"option\", 3, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"select\", 4, 1);\n i0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_4_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.changeYear($event.target.value));\n });\n i0.ɵɵrepeaterCreate(6, NgbDatepickerNavigationSelect_For_7_Template, 2, 2, \"option\", 3, i0.ɵɵrepeaterTrackByIdentity);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"disabled\", ctx.disabled);\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(ctx.months);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"disabled\", ctx.disabled);\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(ctx.years);\n }\n },\n styles: [\"ngb-datepicker-navigation-select>.form-select{flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.form-select:focus{z-index:1}ngb-datepicker-navigation-select>.form-select::-ms-value{background-color:transparent!important}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbDatepickerNavigationSelect;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbDatepickerNavigation = /*#__PURE__*/(() => {\n class NgbDatepickerNavigation {\n constructor() {\n this.navigation = NavigationEvent;\n this.i18n = inject(NgbDatepickerI18n);\n this.months = [];\n this.navigate = new EventEmitter();\n this.select = new EventEmitter();\n }\n onClickPrev(event) {\n event.currentTarget.focus();\n this.navigate.emit(this.navigation.PREV);\n }\n onClickNext(event) {\n event.currentTarget.focus();\n this.navigate.emit(this.navigation.NEXT);\n }\n static {\n this.ɵfac = function NgbDatepickerNavigation_Factory(t) {\n return new (t || NgbDatepickerNavigation)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbDatepickerNavigation,\n selectors: [[\"ngb-datepicker-navigation\"]],\n inputs: {\n date: \"date\",\n disabled: \"disabled\",\n months: \"months\",\n showSelect: \"showSelect\",\n prevDisabled: \"prevDisabled\",\n nextDisabled: \"nextDisabled\",\n selectBoxes: \"selectBoxes\"\n },\n outputs: {\n navigate: \"navigate\",\n select: \"select\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 8,\n vars: 4,\n consts: () => {\n let i18n_8;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_8 = goog.getMsg(\"Previous month\");\n i18n_8 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_8;\n } else {\n i18n_8 = $localize`:@@ngb.datepicker.previous-month:Previous month`;\n }\n let i18n_9;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_9 = goog.getMsg(\"Previous month\");\n i18n_9 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_9;\n } else {\n i18n_9 = $localize`:@@ngb.datepicker.previous-month:Previous month`;\n }\n let i18n_10;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_10 = goog.getMsg(\"Next month\");\n i18n_10 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_10;\n } else {\n i18n_10 = $localize`:@@ngb.datepicker.next-month:Next month`;\n }\n let i18n_11;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_11 = goog.getMsg(\"Next month\");\n i18n_11 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_11;\n } else {\n i18n_11 = $localize`:@@ngb.datepicker.next-month:Next month`;\n }\n return [[1, \"ngb-dp-arrow\", \"ngb-dp-arrow-prev\"], [\"type\", \"button\", \"aria-label\", i18n_8, \"title\", i18n_9, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"click\", \"disabled\"], [1, \"ngb-dp-navigation-chevron\"], [1, \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\"], [1, \"ngb-dp-arrow\", \"ngb-dp-arrow-next\"], [\"type\", \"button\", \"aria-label\", i18n_10, \"title\", i18n_11, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"click\", \"disabled\"], [1, \"ngb-dp-navigation-select\", 3, \"select\", \"date\", \"disabled\", \"months\", \"years\"], [1, \"ngb-dp-arrow\"], [1, \"ngb-dp-month-name\"]];\n },\n template: function NgbDatepickerNavigation_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"button\", 1);\n i0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_1_listener($event) {\n return ctx.onClickPrev($event);\n });\n i0.ɵɵelement(2, \"span\", 2);\n i0.ɵɵelementEnd()();\n i0.ɵɵtemplate(3, NgbDatepickerNavigation_Conditional_3_Template, 1, 4, \"ngb-datepicker-navigation-select\", 3)(4, NgbDatepickerNavigation_Conditional_4_Template, 2, 0);\n i0.ɵɵelementStart(5, \"div\", 4)(6, \"button\", 5);\n i0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_6_listener($event) {\n return ctx.onClickNext($event);\n });\n i0.ɵɵelement(7, \"span\", 2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"disabled\", ctx.prevDisabled);\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(3, ctx.showSelect ? 3 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(4, !ctx.showSelect ? 4 : -1);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"disabled\", ctx.nextDisabled);\n }\n },\n dependencies: [NgbDatepickerNavigationSelect],\n styles: [\"ngb-datepicker-navigation{display:flex;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg)}.ngb-dp-arrow{display:flex;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow-next{justify-content:flex-end}.ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbDatepickerNavigation;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbDatepickerContent = /*#__PURE__*/(() => {\n class NgbDatepickerContent {\n constructor() {\n this.templateRef = inject(TemplateRef);\n }\n static {\n this.ɵfac = function NgbDatepickerContent_Factory(t) {\n return new (t || NgbDatepickerContent)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbDatepickerContent,\n selectors: [[\"ng-template\", \"ngbDatepickerContent\", \"\"]],\n standalone: true\n });\n }\n }\n return NgbDatepickerContent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A component that renders one month including all the days, weekdays and week numbers. Can be used inside\n * the `<ng-template ngbDatepickerMonths></ng-template>` 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 */\nlet NgbDatepickerMonth = /*#__PURE__*/(() => {\n class NgbDatepickerMonth {\n constructor() {\n this._keyboardService = inject(NgbDatepickerKeyboardService);\n this._service = inject(NgbDatepickerService);\n this.i18n = inject(NgbDatepickerI18n);\n this.datepicker = inject(NgbDatepicker);\n }\n /**\n * The first date of month to be rendered.\n *\n * This month must one of the months present in the\n * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\n */\n set month(month) {\n this.viewModel = this._service.getMonth(month);\n }\n onKeyDown(event) {\n this._keyboardService.processKey(event, this.datepicker);\n }\n doSelect(day) {\n if (!day.context.disabled && !day.hidden) {\n this.datepicker.onDateSelect(day.date);\n }\n }\n static {\n this.ɵfac = function NgbDatepickerMonth_Factory(t) {\n return new (t || NgbDatepickerMonth)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbDatepickerMonth,\n selectors: [[\"ngb-datepicker-month\"]],\n hostAttrs: [\"role\", \"grid\"],\n hostBindings: function NgbDatepickerMonth_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown\", function NgbDatepickerMonth_keydown_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n });\n }\n },\n inputs: {\n month: \"month\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 3,\n vars: 1,\n consts: [[\"role\", \"row\", 1, \"ngb-dp-week\", \"ngb-dp-weekdays\"], [1, \"ngb-dp-weekday\", \"ngb-dp-showweek\", \"small\"], [\"role\", \"columnheader\", 1, \"ngb-dp-weekday\", \"small\"], [\"role\", \"row\", 1, \"ngb-dp-week\"], [1, \"ngb-dp-week-number\", \"small\", \"text-muted\"], [\"role\", \"gridcell\", 1, \"ngb-dp-day\", 3, \"disabled\", \"tabindex\", \"hidden\", \"ngb-dp-today\"], [\"role\", \"gridcell\", 1, \"ngb-dp-day\", 3, \"click\", \"tabindex\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function NgbDatepickerMonth_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgbDatepickerMonth_Conditional_0_Template, 4, 1, \"div\", 0);\n i0.ɵɵrepeaterCreate(1, NgbDatepickerMonth_For_2_Template, 1, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);\n }\n if (rf & 2) {\n i0.ɵɵconditional(0, ctx.viewModel.weekdays.length > 0 ? 0 : -1);\n i0.ɵɵadvance();\n i0.ɵɵrepeater(ctx.viewModel.weeks);\n }\n },\n dependencies: [NgTemplateOutlet],\n styles: [\"ngb-datepicker-month{display:block}.ngb-dp-weekday,.ngb-dp-week-number{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:var(--bs-info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{border-bottom:1px solid var(--bs-border-color);border-radius:0;background-color:var(--bs-tertiary-bg)}.ngb-dp-day,.ngb-dp-weekday,.ngb-dp-week-number{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\\n\"],\n encapsulation: 2\n });\n }\n }\n return NgbDatepickerMonth;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbDatepicker = /*#__PURE__*/(() => {\n class NgbDatepicker {\n constructor() {\n this.injector = inject(Injector);\n this._service = inject(NgbDatepickerService);\n this._calendar = inject(NgbCalendar);\n this._i18n = inject(NgbDatepickerI18n);\n this._config = inject(NgbDatepickerConfig);\n this._nativeElement = inject(ElementRef).nativeElement;\n this._ngbDateAdapter = inject(NgbDateAdapter);\n this._ngZone = inject(NgZone);\n this._destroyRef = inject(DestroyRef);\n this._controlValue = null;\n this._publicState = {};\n /**\n * The reference to a custom template for the day.\n *\n * Allows to completely override the way a day 'cell' in the calendar is displayed.\n *\n * See [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext) for the data you get inside.\n */\n this.dayTemplate = this._config.dayTemplate;\n /**\n * The callback to pass any arbitrary data to the template cell via the\n * [`DayTemplateContext`](#/components/datepicker/api#DayTemplateContext)'s `data` parameter.\n *\n * `current` is the month that is currently displayed by the datepicker.\n *\n * @since 3.3.0\n */\n this.dayTemplateData = this._config.dayTemplateData;\n /**\n * The number of months to display.\n */\n this.displayMonths = this._config.displayMonths;\n /**\n * The first day of the week.\n *\n * With default calendar we use ISO 8601: 'weekday' is 1=Mon ... 7=Sun.\n */\n this.firstDayOfWeek = this._config.firstDayOfWeek;\n /**\n * The reference to the custom template for the datepicker footer.\n *\n * @since 3.3.0\n */\n this.footerTemplate = this._config.footerTemplate;\n /**\n * The callback to mark some dates as disabled.\n *\n * It is called for each new date when navigating to a different month.\n *\n * `current` is the month that is currently displayed by the datepicker.\n */\n this.markDisabled = this._config.markDisabled;\n /**\n * The latest date that can be displayed or selected.\n *\n * If not provided, 'year' select box will display 10 years after the current month.\n */\n this.maxDate = this._config.maxDate;\n /**\n * The earliest date that can be displayed or selected.\n *\n * If not provided, 'year' select box will display 10 years before the current month.\n */\n this.minDate = this._config.minDate;\n /**\n * Navigation type.\n *\n * * `\"select\"` - select boxes for month and navigation arrows\n * * `\"arrows\"` - only navigation arrows\n * * `\"none\"` - no navigation visible at all\n */\n this.navigation = this._config.navigation;\n /**\n * The way of displaying days that don't belong to the current month.\n *\n * * `\"visible\"` - days are visible\n * * `\"hidden\"` - days are hidden, white space preserved\n * * `\"collapsed\"` - days are collapsed, so the datepicker height might change between months\n *\n * For the 2+ months view, days in between months are never shown.\n */\n this.outsideDays = this._config.outsideDays;\n /**\n * If `true`, week numbers will be displayed.\n */\n this.showWeekNumbers = this._config.showWeekNumbers;\n /**\n * The date to open calendar with.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date is provided, calendar will open with current month.\n *\n * You could use `navigateTo(date)` method as an alternative.\n */\n this.startDate = this._config.startDate;\n /**\n * The way weekdays should be displayed.\n *\n * * `true` - weekdays are displayed using default width\n * * `false` - weekdays are not displayed\n * * `TranslationWidth` - weekdays are displayed using specified width\n *\n * @since 9.1.0\n */\n this.weekdays = this._config.weekdays;\n /**\n * An event emitted right before the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @since 5.2.0\n */\n this.dateSelect = new EventEmitter();\n this.onChange = _ => {};\n this.onTouched = () => {};\n const cd = inject(ChangeDetectorRef);\n this._service.dateSelect$.pipe(takeUntilDestroyed()).subscribe(date => {\n this.dateSelect.emit(date);\n });\n this._service.model$.pipe(takeUntilDestroyed()).subscribe(model => {\n const newDate = model.firstDate;\n const oldDate = this.model ? this.model.firstDate : null;\n // update public state\n this._publicState = {\n maxDate: model.maxDate,\n minDate: model.minDate,\n firstDate: model.firstDate,\n lastDate: model.lastDate,\n focusedDate: model.focusDate,\n months: model.months.map(viewModel => viewModel.firstDate)\n };\n let navigationPrevented = false;\n // emitting navigation event if the first month changes\n if (!newDate.equals(oldDate)) {\n this.navigate.emit({\n current: oldDate ? {\n year: oldDate.year,\n month: oldDate.month\n } : null,\n next: {\n year: newDate.year,\n month: newDate.month\n },\n preventDefault: () => navigationPrevented = true\n });\n // can't prevent the very first navigation\n if (navigationPrevented && oldDate !== null) {\n this._service.open(oldDate);\n return;\n }\n }\n const newSelectedDate = model.selectedDate;\n const newFocusedDate = model.focusDate;\n const oldFocusedDate = this.model ? this.model.focusDate : null;\n this.model = model;\n // handling selection change\n if (isChangedDate(newSelectedDate, this._controlValue)) {\n this._controlValue = newSelectedDate;\n this.onTouched();\n this.onChange(this._ngbDateAdapter.toModel(newSelectedDate));\n }\n // handling focus change\n if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n this.focus();\n }\n cd.markForCheck();\n });\n }\n /**\n * Returns the readonly public state of the datepicker\n *\n * @since 5.2.0\n */\n get state() {\n return this._publicState;\n }\n /**\n * Returns the calendar service used in the specific datepicker instance.\n *\n * @since 5.3.0\n */\n get calendar() {\n return this._calendar;\n }\n /**\n * Returns the i18n service used in the specific datepicker instance.\n *\n * @since 14.2.0\n */\n get i18n() {\n return this._i18n;\n }\n /**\n * Focuses on given date.\n */\n focusDate(date) {\n this._service.focus(NgbDate.from(date));\n }\n /**\n * Selects focused date.\n */\n focusSelect() {\n this._service.focusSelect();\n }\n focus() {\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => this._nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]')?.focus());\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n navigateTo(date) {\n this._service.open(NgbDate.from(date ? date.day ? date : {\n ...date,\n day: 1\n } : null));\n }\n ngAfterViewInit() {\n this._ngZone.runOutsideAngular(() => {\n const focusIns$ = fromEvent(this._contentEl.nativeElement, 'focusin');\n const focusOuts$ = fromEvent(this._contentEl.nativeElement, 'focusout');\n // we're changing 'focusVisible' only when entering or leaving months view\n // and ignoring all focus events where both 'target' and 'related' target are day cells\n merge(focusIns$, focusOuts$).pipe(filter(focusEvent => {\n const target = focusEvent.target;\n const relatedTarget = focusEvent.relatedTarget;\n return !(target?.classList.contains('ngb-dp-day') && relatedTarget?.classList.contains('ngb-dp-day') && this._nativeElement.contains(target) && this._nativeElement.contains(relatedTarget));\n }), takeUntilDestroyed(this._destroyRef)).subscribe(({\n type\n }) => this._ngZone.run(() => this._service.set({\n focusVisible: type === 'focusin'\n })));\n });\n }\n ngOnInit() {\n if (this.model === undefined) {\n const inputs = {};\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate', 'outsideDays', 'weekdays'].forEach(name => inputs[name] = this[name]);\n this._service.set(inputs);\n this.navigateTo(this.startDate);\n }\n if (!this.dayTemplate) {\n this.dayTemplate = this._defaultDayTemplate;\n }\n }\n ngOnChanges(changes) {\n const inputs = {};\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate', 'outsideDays', 'weekdays'].filter(name => name in changes).forEach(name => inputs[name] = this[name]);\n this._service.set(inputs);\n if ('startDate' in changes) {\n const {\n currentValue,\n previousValue\n } = changes.startDate;\n if (isChangedMonth(previousValue, currentValue)) {\n this.navigateTo(this.startDate);\n }\n }\n }\n onDateSelect(date) {\n this._service.focus(date);\n this._service.select(date, {\n emitEvent: true\n });\n }\n onNavigateDateSelect(date) {\n this._service.open(date);\n }\n onNavigateEvent(event) {\n switch (event) {\n case NavigationEvent.PREV:\n this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\n break;\n case NavigationEvent.NEXT:\n this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\n break;\n }\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(disabled) {\n this._service.set({\n disabled\n });\n }\n writeValue(value) {\n this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n this._service.select(this._controlValue);\n }\n static {\n this.ɵfac = function NgbDatepicker_Factory(t) {\n return new (t || NgbDatepicker)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbDatepicker,\n selectors: [[\"ngb-datepicker\"]],\n contentQueries: function NgbDatepicker_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbDatepickerContent, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentTemplateFromContent = _t.first);\n }\n },\n viewQuery: function NgbDatepicker_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c4, 7);\n i0.ɵɵviewQuery(_c5, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._defaultDayTemplate = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._contentEl = _t.first);\n }\n },\n hostVars: 2,\n hostBindings: function NgbDatepicker_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"disabled\", ctx.model.disabled);\n }\n },\n inputs: {\n contentTemplate: \"contentTemplate\",\n dayTemplate: \"dayTemplate\",\n dayTemplateData: \"dayTemplateData\",\n displayMonths: \"displayMonths\",\n firstDayOfWeek: \"firstDayOfWeek\",\n footerTemplate: \"footerTemplate\",\n markDisabled: \"markDisabled\",\n maxDate: \"maxDate\",\n minDate: \"minDate\",\n navigation: \"navigation\",\n outsideDays: \"outsideDays\",\n showWeekNumbers: \"showWeekNumbers\",\n startDate: \"startDate\",\n weekdays: \"weekdays\"\n },\n outputs: {\n navigate: \"navigate\",\n dateSelect: \"dateSelect\"\n },\n exportAs: [\"ngbDatepicker\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbDatepicker),\n multi: true\n }, NgbDatepickerService]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 10,\n vars: 9,\n consts: [[\"defaultDayTemplate\", \"\"], [\"defaultContentTemplate\", \"\"], [\"content\", \"\"], [1, \"ngb-dp-header\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\"], [1, \"ngb-dp-content\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\", \"ngTemplateOutletInjector\"], [3, \"ngTemplateOutlet\"], [\"ngbDatepickerDayView\", \"\", 3, \"date\", \"currentMonth\", \"selected\", \"disabled\", \"focused\"], [1, \"ngb-dp-month\"], [1, \"ngb-dp-month-name\"], [3, \"month\"], [3, \"navigate\", \"select\", \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\"]],\n template: function NgbDatepicker_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgbDatepicker_ng_template_0_Template, 1, 5, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, NgbDatepicker_ng_template_2_Template, 2, 0, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementStart(4, \"div\", 3);\n i0.ɵɵtemplate(5, NgbDatepicker_Conditional_5_Template, 1, 7, \"ngb-datepicker-navigation\", 4);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"div\", 5, 2);\n i0.ɵɵtemplate(8, NgbDatepicker_ng_template_8_Template, 0, 0, \"ng-template\", 6);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(9, NgbDatepicker_ng_template_9_Template, 0, 0, \"ng-template\", 7);\n }\n if (rf & 2) {\n const defaultContentTemplate_r9 = i0.ɵɵreference(3);\n i0.ɵɵadvance(5);\n i0.ɵɵconditional(5, ctx.navigation !== \"none\" ? 5 : -1);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"ngb-dp-months\", !ctx.contentTemplate);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.contentTemplate || (ctx.contentTemplateFromContent == null ? null : ctx.contentTemplateFromContent.templateRef) || defaultContentTemplate_r9)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(7, _c6, ctx))(\"ngTemplateOutletInjector\", ctx.injector);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.footerTemplate);\n }\n },\n dependencies: [NgTemplateOutlet, NgbDatepickerDayView, NgbDatepickerMonth, NgbDatepickerNavigation],\n styles: [\"ngb-datepicker{border:1px solid var(--bs-border-color);border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}ngb-datepicker.disabled .ngb-dp-weekday,ngb-datepicker.disabled .ngb-dp-week-number,ngb-datepicker.disabled .ngb-dp-month-name{color:var(--bs-text-muted)}.ngb-dp-body{z-index:1055}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:var(--bs-tertiary-bg)}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:var(--bs-tertiary-bg)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbDatepicker;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst isContainedIn = (element, array) => array ? array.some(item => item.contains(element)) : false;\nconst matchesSelectorIfAny = (element, selector) => !selector || closest(element, selector) != null;\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 const isIOS = () => /iPad|iPhone|iPod/.test(navigator.userAgent) || /Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2;\n const isAndroid = () => /Android/.test(navigator.userAgent);\n return typeof navigator !== 'undefined' ? !!navigator.userAgent && (isIOS() || isAndroid()) : false;\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;\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\n // closing on ESC and outside clicks\n if (type) {\n zone.runOutsideAngular(wrapAsyncForMobile(() => {\n const shouldCloseOnClick = event => {\n const element = event.target;\n if (event.button === 2 || isContainedIn(element, ignoreElements)) {\n return false;\n }\n if (type === 'inside') {\n return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n } else if (type === 'outside') {\n return !isContainedIn(element, insideElements);\n } /* if (type === true) */else {\n return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n }\n };\n const escapes$ = fromEvent(document, 'keydown').pipe(takeUntil(closed$), /* eslint-disable-next-line deprecation/deprecation */\n filter(e => e.which === Key.Escape), tap(e => e.preventDefault()));\n // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown',\n // because on 'mouseup' DOM nodes might be detached\n const mouseDowns$ = fromEvent(document, 'mousedown').pipe(map(shouldCloseOnClick), takeUntil(closed$));\n const closeableClicks$ = fromEvent(document, 'mouseup').pipe(withLatestFrom(mouseDowns$), filter(([_, shouldClose]) => shouldClose), delay(0), takeUntil(closed$));\n race([escapes$.pipe(map(_ => 0 /* SOURCE.ESCAPE */)), closeableClicks$.pipe(map(_ => 1 /* SOURCE.CLICK */))]).subscribe(source => zone.run(() => close(source)));\n }));\n }\n}\nconst FOCUSABLE_ELEMENTS_SELECTOR = ['a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])', 'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'].join(', ');\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nfunction getFocusableBoundaryElements(element) {\n const list = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR)).filter(el => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n}\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param zone Angular zone\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nconst ngbFocusTrap = (zone, element, stopFocusTrap$, refocusOnClick = false) => {\n zone.runOutsideAngular(() => {\n // last focused element\n const lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map(e => e.target));\n // 'tab' / 'shift+tab' stream\n fromEvent(element, 'keydown').pipe(takeUntil(stopFocusTrap$), /* eslint-disable-next-line deprecation/deprecation */\n filter(e => e.which === Key.Tab), withLatestFrom(lastFocusedElement$)).subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n last.focus();\n tabEvent.preventDefault();\n }\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click').pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map(arr => arr[1])).subscribe(lastFocusedElement => lastFocusedElement.focus());\n }\n });\n};\nlet NgbRTL = /*#__PURE__*/(() => {\n class NgbRTL {\n constructor() {\n this._element = inject(DOCUMENT).documentElement;\n }\n isRTL() {\n return (this._element.getAttribute('dir') || '').toLowerCase() === 'rtl';\n }\n static {\n this.ɵfac = function NgbRTL_Factory(t) {\n return new (t || NgbRTL)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbRTL,\n factory: NgbRTL.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbRTL;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst placementSeparator = /\\s+/;\nconst spacesRegExp = / +/gi;\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 top: ['top'],\n bottom: ['bottom'],\n start: ['left', 'right'],\n left: ['left'],\n end: ['right', 'left'],\n right: ['right'],\n 'top-start': ['top-start', 'top-end'],\n 'top-left': ['top-start'],\n 'top-end': ['top-end', 'top-start'],\n 'top-right': ['top-end'],\n 'bottom-start': ['bottom-start', 'bottom-end'],\n 'bottom-left': ['bottom-start'],\n 'bottom-end': ['bottom-end', 'bottom-start'],\n 'bottom-right': ['bottom-end'],\n 'start-top': ['left-start', 'right-start'],\n 'left-top': ['left-start'],\n 'start-bottom': ['left-end', 'right-end'],\n 'left-bottom': ['left-end'],\n 'end-top': ['right-start', 'left-start'],\n 'right-top': ['right-start'],\n 'end-bottom': ['right-end', 'left-end'],\n 'right-bottom': ['right-end']\n};\nfunction getPopperClassPlacement(placement, isRTL) {\n const [leftClass, rightClass] = bootstrapPopperMatches[placement];\n return isRTL ? rightClass || leftClass : leftClass;\n}\nconst popperStartPrimaryPlacement = /^left/;\nconst popperEndPrimaryPlacement = /^right/;\nconst popperStartSecondaryPlacement = /^start/;\nconst popperEndSecondaryPlacement = /^end/;\nfunction getBootstrapBaseClassPlacement(baseClass, placement) {\n let [primary, secondary] = placement.split('-');\n const newPrimary = primary.replace(popperStartPrimaryPlacement, 'start').replace(popperEndPrimaryPlacement, 'end');\n let classnames = [newPrimary];\n if (secondary) {\n let newSecondary = secondary;\n if (primary === 'left' || primary === 'right') {\n newSecondary = newSecondary.replace(popperStartSecondaryPlacement, 'top').replace(popperEndSecondaryPlacement, 'bottom');\n }\n classnames.push(`${newPrimary}-${newSecondary}`);\n }\n if (baseClass) {\n classnames = classnames.map(classname => `${baseClass}-${classname}`);\n }\n return classnames.join(' ');\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 * */\nfunction getPopperOptions({\n placement,\n baseClass\n}, rtl) {\n let placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\n // No need to consider left and right here, as start and end are enough, and it is used for 'auto' placement only\n const allowedPlacements = ['top', 'bottom', 'start', 'end', 'top-start', 'top-end', 'bottom-start', 'bottom-end', 'start-top', 'start-bottom', 'end-top', 'end-bottom'];\n // replace auto placement with other placements\n let hasAuto = placementVals.findIndex(val => val === 'auto');\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(val => val.search('^' + obj) !== -1) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n const popperPlacements = placementVals.map(_placement => {\n return getPopperClassPlacement(_placement, rtl.isRTL());\n });\n let mainPlacement = popperPlacements.shift();\n const bsModifier = {\n name: 'bootstrapClasses',\n enabled: !!baseClass,\n phase: 'write',\n fn({\n state\n }) {\n const bsClassRegExp = new RegExp(baseClass + '(-[a-z]+)*', 'gi');\n const popperElement = state.elements.popper;\n const popperPlacement = state.placement;\n let className = popperElement.className;\n // Remove old bootstrap classes\n className = className.replace(bsClassRegExp, '');\n // Add current placements\n className += ` ${getBootstrapBaseClassPlacement(baseClass, popperPlacement)}`;\n // Remove multiple spaces\n className = className.trim().replace(spacesRegExp, ' ');\n // Reassign\n popperElement.className = className;\n }\n };\n return {\n placement: mainPlacement,\n modifiers: [bsModifier, flip, preventOverflow, arrow, {\n enabled: true,\n name: 'flip',\n options: {\n fallbackPlacements: popperPlacements\n }\n }, {\n enabled: true,\n name: 'preventOverflow',\n phase: 'main',\n fn: function () {}\n }]\n };\n}\nfunction noop(arg) {\n return arg;\n}\nfunction ngbPositioning() {\n const rtl = inject(NgbRTL);\n let popperInstance = null;\n return {\n createPopper(positioningOption) {\n if (!popperInstance) {\n const updatePopperOptions = positioningOption.updatePopperOptions || noop;\n let popperOptions = updatePopperOptions(getPopperOptions(positioningOption, rtl));\n popperInstance = createPopperLite(positioningOption.hostElement, positioningOption.targetElement, popperOptions);\n }\n },\n update() {\n if (popperInstance) {\n popperInstance.update();\n }\n },\n setOptions(positioningOption) {\n if (popperInstance) {\n const updatePopperOptions = positioningOption.updatePopperOptions || noop;\n let popperOptions = updatePopperOptions(getPopperOptions(positioningOption, rtl));\n popperInstance.setOptions(popperOptions);\n }\n },\n destroy() {\n if (popperInstance) {\n popperInstance.destroy();\n popperInstance = null;\n }\n }\n };\n}\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new NgbDateISOParserFormatter();\n}\n/**\n * An abstract service for parsing and formatting dates for the\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n * input element.\n *\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n * in the input.\n *\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n * to use an alternative string format or a custom parsing logic.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n */\nlet NgbDateParserFormatter = /*#__PURE__*/(() => {\n class NgbDateParserFormatter {\n static {\n this.ɵfac = function NgbDateParserFormatter_Factory(t) {\n return new (t || NgbDateParserFormatter)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDateParserFormatter,\n factory: () => NGB_DATEPICKER_PARSER_FORMATTER_FACTORY(),\n providedIn: 'root'\n });\n }\n }\n return NgbDateParserFormatter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbDateISOParserFormatter = /*#__PURE__*/(() => {\n class NgbDateISOParserFormatter extends NgbDateParserFormatter {\n parse(value) {\n if (value != null) {\n const dateParts = value.trim().split('-');\n if (dateParts.length === 1 && isNumber(dateParts[0])) {\n return {\n year: toInteger(dateParts[0]),\n month: null,\n day: null\n };\n } else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n return {\n year: toInteger(dateParts[0]),\n month: toInteger(dateParts[1]),\n day: null\n };\n } else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n return {\n year: toInteger(dateParts[0]),\n month: toInteger(dateParts[1]),\n day: toInteger(dateParts[2])\n };\n }\n }\n return null;\n }\n format(date) {\n return date ? `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${isNumber(date.day) ? padNumber(date.day) : ''}` : '';\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbDateISOParserFormatter_BaseFactory;\n return function NgbDateISOParserFormatter_Factory(t) {\n return (ɵNgbDateISOParserFormatter_BaseFactory || (ɵNgbDateISOParserFormatter_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDateISOParserFormatter)))(t || NgbDateISOParserFormatter);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDateISOParserFormatter,\n factory: NgbDateISOParserFormatter.ɵfac\n });\n }\n }\n return NgbDateISOParserFormatter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbInputDatepickerConfig = /*#__PURE__*/(() => {\n class NgbInputDatepickerConfig extends NgbDatepickerConfig {\n constructor() {\n super(...arguments);\n this.autoClose = true;\n this.placement = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n this.popperOptions = options => options;\n this.restoreFocus = true;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbInputDatepickerConfig_BaseFactory;\n return function NgbInputDatepickerConfig_Factory(t) {\n return (ɵNgbInputDatepickerConfig_BaseFactory || (ɵNgbInputDatepickerConfig_BaseFactory = i0.ɵɵgetInheritedFactory(NgbInputDatepickerConfig)))(t || NgbInputDatepickerConfig);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbInputDatepickerConfig,\n factory: NgbInputDatepickerConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbInputDatepickerConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction addPopperOffset(offset$1) {\n return options => {\n options.modifiers.push(offset, {\n name: 'offset',\n options: {\n offset: () => offset$1\n }\n });\n return options;\n };\n}\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 */\nlet NgbInputDatepicker = /*#__PURE__*/(() => {\n class NgbInputDatepicker {\n constructor() {\n this._parserFormatter = inject(NgbDateParserFormatter);\n this._elRef = inject(ElementRef);\n this._vcRef = inject(ViewContainerRef);\n this._ngZone = inject(NgZone);\n this._calendar = inject(NgbCalendar);\n this._dateAdapter = inject(NgbDateAdapter);\n this._document = inject(DOCUMENT);\n this._changeDetector = inject(ChangeDetectorRef);\n this._config = inject(NgbInputDatepickerConfig);\n this._cRef = null;\n this._disabled = false;\n this._elWithFocus = null;\n this._model = null;\n this._positioning = ngbPositioning();\n this._destroyCloseHandlers$ = new Subject();\n /**\n * Indicates whether the datepicker popup should be closed automatically after date selection / outside click or not.\n *\n * * `true` - the popup will close on both date selection and outside click.\n * * `false` - the popup can only be closed manually via `close()` or `toggle()` methods.\n * * `\"inside\"` - the popup will close on date selection, but not outside clicks.\n * * `\"outside\"` - the popup will close only on the outside click and not on date selection/inside clicks.\n *\n * @since 3.0.0\n */\n this.autoClose = this._config.autoClose;\n /**\n * The preferred placement of the datepicker popup, among the [possible values](#/guides/positioning#api).\n *\n * The default order of preference is `\"bottom-start bottom-end top-start top-end\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = this._config.placement;\n /**\n * Allows to change default Popper options when positioning the popup.\n * Receives current popper options and returns modified ones.\n *\n * @since 13.1.0\n */\n this.popperOptions = this._config.popperOptions;\n /**\n * A selector specifying the element the datepicker popup should be appended to.\n *\n * Currently only supports `\"body\"`.\n */\n this.container = this._config.container;\n /**\n * A css selector or html element specifying the element the datepicker popup should be positioned against.\n *\n * By default the input is used as a target.\n *\n * @since 4.2.0\n */\n this.positionTarget = this._config.positionTarget;\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @since 1.1.1\n */\n this.dateSelect = new EventEmitter();\n /**\n * Event emitted right after the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event fired after closing datepicker window.\n *\n * @since 4.2.0\n */\n this.closed = new EventEmitter();\n this._onChange = _ => {};\n this._onTouched = () => {};\n this._validatorChange = () => {};\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value === '' || value && value !== 'false';\n if (this.isOpen()) {\n this._cRef.instance.setDisabledState(this._disabled);\n }\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n registerOnValidatorChange(fn) {\n this._validatorChange = fn;\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n validate(c) {\n const {\n value\n } = c;\n if (value != null) {\n const ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n if (!ngbDate) {\n return {\n ngbDate: {\n invalid: value\n }\n };\n }\n if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n return {\n ngbDate: {\n minDate: {\n minDate: this.minDate,\n actual: value\n }\n }\n };\n }\n if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n return {\n ngbDate: {\n maxDate: {\n maxDate: this.maxDate,\n actual: value\n }\n }\n };\n }\n }\n return null;\n }\n writeValue(value) {\n this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n this._writeModelValue(this._model);\n }\n manualDateChange(value, updateView = false) {\n const inputValueChanged = value !== this._inputValue;\n if (inputValueChanged) {\n this._inputValue = value;\n this._model = this._fromDateStruct(this._parserFormatter.parse(value));\n }\n if (inputValueChanged || !updateView) {\n this._onChange(this._model ? this._dateAdapter.toModel(this._model) : value === '' ? null : value);\n }\n if (updateView && this._model) {\n this._writeModelValue(this._model);\n }\n }\n isOpen() {\n return !!this._cRef;\n }\n /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n */\n open() {\n if (!this.isOpen()) {\n this._cRef = this._vcRef.createComponent(NgbDatepicker);\n this._applyPopupStyling(this._cRef.location.nativeElement);\n this._applyDatepickerInputs(this._cRef);\n this._subscribeForDatepickerOutputs(this._cRef.instance);\n this._cRef.instance.ngOnInit();\n this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n // date selection event handling\n this._cRef.instance.registerOnChange(selectedDate => {\n this.writeValue(selectedDate);\n this._onChange(selectedDate);\n this._onTouched();\n });\n this._cRef.changeDetectorRef.detectChanges();\n this._cRef.instance.setDisabledState(this.disabled);\n if (this.container === 'body') {\n this._document.querySelector(this.container)?.appendChild(this._cRef.location.nativeElement);\n }\n // focus handling\n this._elWithFocus = this._document.activeElement;\n ngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\n setTimeout(() => this._cRef?.instance.focus());\n let hostElement;\n if (isString(this.positionTarget)) {\n hostElement = this._document.querySelector(this.positionTarget);\n } else if (this.positionTarget instanceof HTMLElement) {\n hostElement = this.positionTarget;\n } else {\n hostElement = this._elRef.nativeElement;\n }\n if (this.positionTarget && !hostElement) {\n throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n }\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n if (this._cRef && hostElement) {\n this._positioning.createPopper({\n hostElement,\n targetElement: this._cRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n updatePopperOptions: options => this.popperOptions(addPopperOffset([0, 2])(options))\n });\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n }\n });\n this._setCloseHandlers();\n }\n }\n /**\n * Closes the datepicker popup.\n */\n close() {\n if (this.isOpen()) {\n this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\n this._cRef = null;\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this._destroyCloseHandlers$.next();\n this.closed.emit();\n this._changeDetector.markForCheck();\n // restore focus\n let elementToFocus = this._elWithFocus;\n if (isString(this.restoreFocus)) {\n elementToFocus = this._document.querySelector(this.restoreFocus);\n } else if (this.restoreFocus !== undefined) {\n elementToFocus = this.restoreFocus;\n }\n // in IE document.activeElement can contain an object without 'focus()' sometimes\n if (elementToFocus && elementToFocus['focus']) {\n elementToFocus.focus();\n } else {\n this._document.body.focus();\n }\n }\n }\n /**\n * Toggles the datepicker popup.\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n navigateTo(date) {\n if (this.isOpen()) {\n this._cRef.instance.navigateTo(date);\n }\n }\n onBlur() {\n this._onTouched();\n }\n onFocus() {\n this._elWithFocus = this._elRef.nativeElement;\n }\n ngOnChanges(changes) {\n if (changes['minDate'] || changes['maxDate']) {\n this._validatorChange();\n if (this.isOpen()) {\n if (changes['minDate']) {\n this._cRef.setInput('minDate', this.minDate);\n }\n if (changes['maxDate']) {\n this._cRef.setInput('maxDate', this.maxDate);\n }\n }\n }\n if (changes['datepickerClass']) {\n const {\n currentValue,\n previousValue\n } = changes['datepickerClass'];\n this._applyPopupClass(currentValue, previousValue);\n }\n if (changes['autoClose'] && this.isOpen()) {\n this._setCloseHandlers();\n }\n }\n ngOnDestroy() {\n this.close();\n }\n _applyDatepickerInputs(datepickerComponentRef) {\n ['contentTemplate', 'dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate', 'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekNumbers', 'weekdays'].forEach(inputName => {\n if (this[inputName] !== undefined) {\n datepickerComponentRef.setInput(inputName, this[inputName]);\n }\n });\n datepickerComponentRef.setInput('startDate', this.startDate || this._model);\n }\n _applyPopupClass(newClass, oldClass) {\n const popupEl = this._cRef?.location.nativeElement;\n if (popupEl) {\n if (newClass) {\n popupEl.classList.add(newClass);\n }\n if (oldClass) {\n popupEl.classList.remove(oldClass);\n }\n }\n }\n _applyPopupStyling(nativeElement) {\n nativeElement.classList.add('dropdown-menu', 'show');\n if (this.container === 'body') {\n nativeElement.classList.add('ngb-dp-body');\n }\n this._applyPopupClass(this.datepickerClass);\n }\n _subscribeForDatepickerOutputs(datepickerInstance) {\n datepickerInstance.navigate.subscribe(navigateEvent => this.navigate.emit(navigateEvent));\n datepickerInstance.dateSelect.subscribe(date => {\n this.dateSelect.emit(date);\n if (this.autoClose === true || this.autoClose === 'inside') {\n this.close();\n }\n });\n }\n _writeModelValue(model) {\n const value = this._parserFormatter.format(model);\n this._inputValue = value;\n this._elRef.nativeElement.value = value;\n if (this.isOpen()) {\n this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\n this._onTouched();\n }\n }\n _fromDateStruct(date) {\n const ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n return this._calendar.isValid(ngbDate) ? ngbDate : null;\n }\n _setCloseHandlers() {\n this._destroyCloseHandlers$.next();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this._destroyCloseHandlers$, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\n }\n static {\n this.ɵfac = function NgbInputDatepicker_Factory(t) {\n return new (t || NgbInputDatepicker)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbInputDatepicker,\n selectors: [[\"input\", \"ngbDatepicker\", \"\"]],\n hostVars: 1,\n hostBindings: function NgbInputDatepicker_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"input\", function NgbInputDatepicker_input_HostBindingHandler($event) {\n return ctx.manualDateChange($event.target.value);\n })(\"change\", function NgbInputDatepicker_change_HostBindingHandler($event) {\n return ctx.manualDateChange($event.target.value, true);\n })(\"focus\", function NgbInputDatepicker_focus_HostBindingHandler() {\n return ctx.onFocus();\n })(\"blur\", function NgbInputDatepicker_blur_HostBindingHandler() {\n return ctx.onBlur();\n });\n }\n if (rf & 2) {\n i0.ɵɵhostProperty(\"disabled\", ctx.disabled);\n }\n },\n inputs: {\n autoClose: \"autoClose\",\n contentTemplate: \"contentTemplate\",\n datepickerClass: \"datepickerClass\",\n dayTemplate: \"dayTemplate\",\n dayTemplateData: \"dayTemplateData\",\n displayMonths: \"displayMonths\",\n firstDayOfWeek: \"firstDayOfWeek\",\n footerTemplate: \"footerTemplate\",\n markDisabled: \"markDisabled\",\n minDate: \"minDate\",\n maxDate: \"maxDate\",\n navigation: \"navigation\",\n outsideDays: \"outsideDays\",\n placement: \"placement\",\n popperOptions: \"popperOptions\",\n restoreFocus: \"restoreFocus\",\n showWeekNumbers: \"showWeekNumbers\",\n startDate: \"startDate\",\n container: \"container\",\n positionTarget: \"positionTarget\",\n weekdays: \"weekdays\",\n disabled: \"disabled\"\n },\n outputs: {\n dateSelect: \"dateSelect\",\n navigate: \"navigate\",\n closed: \"closed\"\n },\n exportAs: [\"ngbDatepicker\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbInputDatepicker),\n multi: true\n }, {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NgbInputDatepicker),\n multi: true\n }, {\n provide: NgbDatepickerConfig,\n useExisting: NgbInputDatepickerConfig\n }]), i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return NgbInputDatepicker;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbCalendarHijri = /*#__PURE__*/(() => {\n class NgbCalendarHijri extends NgbCalendar {\n getDaysPerWeek() {\n return 7;\n }\n getMonths() {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n getWeeksPerMonth() {\n return 6;\n }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = this._setYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = this._setMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return this._setDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n const day = this.toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = this.toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1)); // Compare with Muharram 1\n return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() {\n return this.fromGregorian(new Date());\n }\n isValid(date) {\n return date != null && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) && !isNaN(this.toGregorian(date).getTime());\n }\n _setDay(date, day) {\n day = +day;\n let mDays = this.getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = this._setMonth(date, date.month - 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n } else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = this._setMonth(date, date.month + 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n }\n _setMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n }\n _setYear(date, year) {\n date.year = +year;\n return date;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbCalendarHijri_BaseFactory;\n return function NgbCalendarHijri_Factory(t) {\n return (ɵNgbCalendarHijri_BaseFactory || (ɵNgbCalendarHijri_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarHijri)))(t || NgbCalendarHijri);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCalendarHijri,\n factory: NgbCalendarHijri.ɵfac\n });\n }\n }\n return NgbCalendarHijri;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Checks if islamic year is a leap year\n */\nfunction isIslamicLeapYear(hYear) {\n return (14 + 11 * hYear) % 30 < 11;\n}\n/**\n * Checks if gregorian years is a leap year\n */\nfunction isGregorianLeapYear$1(gDate) {\n const year = gDate.getFullYear();\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * Returns the start of Hijri Month.\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\nfunction getIslamicMonthStart(hYear, hMonth) {\n return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n */\nfunction getIslamicYearStart(year) {\n return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\nfunction mod$1(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * The civil calendar is one type of Hijri calendars used in islamic countries.\n * Uses a fixed cycle of alternating 29- and 30-day months,\n * with a leap day added to the last month of 11 out of every 30 years.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n * Dershowitz.\n */\nconst GREGORIAN_EPOCH$1 = 1721425.5;\nconst ISLAMIC_EPOCH = 1948439.5;\nlet NgbCalendarIslamicCivil = /*#__PURE__*/(() => {\n class NgbCalendarIslamicCivil extends NgbCalendarHijri {\n /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n */\n fromGregorian(gDate) {\n const gYear = gDate.getFullYear(),\n gMonth = gDate.getMonth(),\n gDay = gDate.getDate();\n let julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) + -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) + Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gDate) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay) + 0.5;\n const days = julianDay - ISLAMIC_EPOCH;\n const hYear = Math.floor((30 * days + 10646) / 10631.0);\n let hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n hMonth = Math.min(hMonth, 11);\n const hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n */\n toGregorian(hDate) {\n const hYear = hDate.year;\n const hMonth = hDate.month - 1;\n const hDay = hDate.day;\n const julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n const wjd = Math.floor(julianDay - 0.5) + 0.5,\n depoch = wjd - GREGORIAN_EPOCH$1,\n quadricent = Math.floor(depoch / 146097),\n dqc = mod$1(depoch, 146097),\n cent = Math.floor(dqc / 36524),\n dcent = mod$1(dqc, 36524),\n quad = Math.floor(dcent / 1461),\n dquad = mod$1(dcent, 1461),\n yindex = Math.floor(dquad / 365);\n let year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n if (!(cent === 4 || yindex === 4)) {\n year++;\n }\n const gYearStart = GREGORIAN_EPOCH$1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) + Math.floor((year - 1) / 400);\n const yearday = wjd - gYearStart;\n const tjd = GREGORIAN_EPOCH$1 - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) + Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear$1(new Date(year, 3, 1)) ? -1 : -2) + 1);\n const leapadj = wjd < tjd ? 0 : isGregorianLeapYear$1(new Date(year, 3, 1)) ? 1 : 2;\n const month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n const tjd2 = GREGORIAN_EPOCH$1 - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) + Math.floor((year - 1) / 400) + Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear$1(new Date(year, month - 1, 1)) ? -1 : -2) + 1);\n const day = wjd - tjd2 + 1;\n return new Date(year, month - 1, day);\n }\n /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n */\n getDaysPerMonth(month, year) {\n year = year + Math.floor(month / 13);\n month = (month - 1) % 12 + 1;\n let length = 29 + month % 2;\n if (month === 12 && isIslamicLeapYear(year)) {\n length++;\n }\n return length;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbCalendarIslamicCivil_BaseFactory;\n return function NgbCalendarIslamicCivil_Factory(t) {\n return (ɵNgbCalendarIslamicCivil_BaseFactory || (ɵNgbCalendarIslamicCivil_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarIslamicCivil)))(t || NgbCalendarIslamicCivil);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCalendarIslamicCivil,\n factory: NgbCalendarIslamicCivil.ɵfac\n });\n }\n }\n return NgbCalendarIslamicCivil;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\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;\nconst MONTH_LENGTH = [\n// 1300-1304\n'101010101010', '110101010100', '111011001001', '011011010100', '011011101010',\n// 1305-1309\n'001101101100', '101010101101', '010101010101', '011010101001', '011110010010',\n// 1310-1314\n'101110101001', '010111010100', '101011011010', '010101011100', '110100101101',\n// 1315-1319\n'011010010101', '011101001010', '101101010100', '101101101010', '010110101101',\n// 1320-1324\n'010010101110', '101001001111', '010100010111', '011010001011', '011010100101',\n// 1325-1329\n'101011010101', '001011010110', '100101011011', '010010011101', '101001001101',\n// 1330-1334\n'110100100110', '110110010101', '010110101100', '100110110110', '001010111010',\n// 1335-1339\n'101001011011', '010100101011', '101010010101', '011011001010', '101011101001',\n// 1340-1344\n'001011110100', '100101110110', '001010110110', '100101010110', '101011001010',\n// 1345-1349\n'101110100100', '101111010010', '010111011001', '001011011100', '100101101101',\n// 1350-1354\n'010101001101', '101010100101', '101101010010', '101110100101', '010110110100',\n// 1355-1359\n'100110110110', '010101010111', '001010010111', '010101001011', '011010100011',\n// 1360-1364\n'011101010010', '101101100101', '010101101010', '101010101011', '010100101011',\n// 1365-1369\n'110010010101', '110101001010', '110110100101', '010111001010', '101011010110',\n// 1370-1374\n'100101010111', '010010101011', '100101001011', '101010100101', '101101010010',\n// 1375-1379\n'101101101010', '010101110101', '001001110110', '100010110111', '010001011011',\n// 1380-1384\n'010101010101', '010110101001', '010110110100', '100111011010', '010011011101',\n// 1385-1389\n'001001101110', '100100110110', '101010101010', '110101010100', '110110110010',\n// 1390-1394\n'010111010101', '001011011010', '100101011011', '010010101011', '101001010101',\n// 1395-1399\n'101101001001', '101101100100', '101101110001', '010110110100', '101010110101',\n// 1400-1404\n'101001010101', '110100100101', '111010010010', '111011001001', '011011010100',\n// 1405-1409\n'101011101001', '100101101011', '010010101011', '101010010011', '110101001001',\n// 1410-1414\n'110110100100', '110110110010', '101010111001', '010010111010', '101001011011',\n// 1415-1419\n'010100101011', '101010010101', '101100101010', '101101010101', '010101011100',\n// 1420-1424\n'010010111101', '001000111101', '100100011101', '101010010101', '101101001010',\n// 1425-1429\n'101101011010', '010101101101', '001010110110', '100100111011', '010010011011',\n// 1430-1434\n'011001010101', '011010101001', '011101010100', '101101101010', '010101101100',\n// 1435-1439\n'101010101101', '010101010101', '101100101001', '101110010010', '101110101001',\n// 1440-1444\n'010111010100', '101011011010', '010101011010', '101010101011', '010110010101',\n// 1445-1449\n'011101001001', '011101100100', '101110101010', '010110110101', '001010110110',\n// 1450-1454\n'101001010110', '111001001101', '101100100101', '101101010010', '101101101010',\n// 1455-1459\n'010110101101', '001010101110', '100100101111', '010010010111', '011001001011',\n// 1460-1464\n'011010100101', '011010101100', '101011010110', '010101011101', '010010011101',\n// 1465-1469\n'101001001101', '110100010110', '110110010101', '010110101010', '010110110101',\n// 1470-1474\n'001011011010', '100101011011', '010010101101', '010110010101', '011011001010',\n// 1475-1479\n'011011100100', '101011101010', '010011110101', '001010110110', '100101010110',\n// 1480-1484\n'101010101010', '101101010100', '101111010010', '010111011001', '001011101010',\n// 1485-1489\n'100101101101', '010010101101', '101010010101', '101101001010', '101110100101',\n// 1490-1494\n'010110110010', '100110110101', '010011010110', '101010010111', '010101000111',\n// 1495-1499\n'011010010011', '011101001001', '101101010101', '010101101010', '101001101011',\n// 1500-1504\n'010100101011', '101010001011', '110101000110', '110110100011', '010111001010',\n// 1505-1509\n'101011010110', '010011011011', '001001101011', '100101001011', '101010100101',\n// 1510-1514\n'101101010010', '101101101001', '010101110101', '000101110110', '100010110111',\n// 1515-1519\n'001001011011', '010100101011', '010101100101', '010110110100', '100111011010',\n// 1520-1524\n'010011101101', '000101101101', '100010110110', '101010100110', '110101010010',\n// 1525-1529\n'110110101001', '010111010100', '101011011010', '100101011011', '010010101011',\n// 1530-1534\n'011001010011', '011100101001', '011101100010', '101110101001', '010110110010',\n// 1535-1539\n'101010110101', '010101010101', '101100100101', '110110010010', '111011001001',\n// 1540-1544\n'011011010010', '101011101001', '010101101011', '010010101011', '101001010101',\n// 1545-1549\n'110100101001', '110101010100', '110110101010', '100110110101', '010010111010',\n// 1550-1554\n'101000111011', '010010011011', '101001001101', '101010101010', '101011010101',\n// 1555-1559\n'001011011010', '100101011101', '010001011110', '101000101110', '110010011010',\n// 1560-1564\n'110101010101', '011010110010', '011010111001', '010010111010', '101001011101',\n// 1565-1569\n'010100101101', '101010010101', '101101010010', '101110101000', '101110110100',\n// 1570-1574\n'010110111001', '001011011010', '100101011010', '101101001010', '110110100100',\n// 1575-1579\n'111011010001', '011011101000', '101101101010', '010101101101', '010100110101',\n// 1580-1584\n'011010010101', '110101001010', '110110101000', '110111010100', '011011011010',\n// 1585-1589\n'010101011011', '001010011101', '011000101011', '101100010101', '101101001010',\n// 1590-1594\n'101110010101', '010110101010', '101010101110', '100100101110', '110010001111',\n// 1595-1599\n'010100100111', '011010010101', '011010101010', '101011010110', '010101011101',\n// 1600\n'001010011101'];\nfunction getDaysDiff(date1, date2) {\n // Ignores the time part in date1 and date2:\n const time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\n const diff = Math.abs(time1 - time2);\n return Math.round(diff / ONE_DAY);\n}\nlet NgbCalendarIslamicUmalqura = /*#__PURE__*/(() => {\n class NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\n /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n */\n fromGregorian(gDate) {\n let hDay = 1,\n hMonth = 0,\n hYear = 1300;\n let daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n let year = 1300;\n for (let i = 0; i < MONTH_LENGTH.length; i++, year++) {\n for (let j = 0; j < 12; j++) {\n let numOfDays = +MONTH_LENGTH[i][j] + 29;\n if (daysDiff <= numOfDays) {\n hDay = daysDiff + 1;\n if (hDay > numOfDays) {\n hDay = 1;\n j++;\n }\n if (j > 11) {\n j = 0;\n year++;\n }\n hMonth = j;\n hYear = year;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n daysDiff = daysDiff - numOfDays;\n }\n }\n return null;\n } else {\n return super.fromGregorian(gDate);\n }\n }\n /**\n * Converts the current Hijri date to Gregorian.\n */\n toGregorian(hDate) {\n const hYear = hDate.year;\n const hMonth = hDate.month - 1;\n const hDay = hDate.day;\n let gDate = new Date(GREGORIAN_FIRST_DATE);\n let dayDiff = hDay - 1;\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n for (let y = 0; y < hYear - HIJRI_BEGIN; y++) {\n for (let m = 0; m < 12; m++) {\n dayDiff += +MONTH_LENGTH[y][m] + 29;\n }\n }\n for (let m = 0; m < hMonth; m++) {\n dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n }\n gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n } else {\n gDate = super.toGregorian(hDate);\n }\n return gDate;\n }\n /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\n getDaysPerMonth(hMonth, hYear) {\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n const pos = hYear - HIJRI_BEGIN;\n return +MONTH_LENGTH[pos][hMonth - 1] + 29;\n }\n return super.getDaysPerMonth(hMonth, hYear);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbCalendarIslamicUmalqura_BaseFactory;\n return function NgbCalendarIslamicUmalqura_Factory(t) {\n return (ɵNgbCalendarIslamicUmalqura_BaseFactory || (ɵNgbCalendarIslamicUmalqura_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarIslamicUmalqura)))(t || NgbCalendarIslamicUmalqura);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCalendarIslamicUmalqura,\n factory: NgbCalendarIslamicUmalqura.ɵfac\n });\n }\n }\n return NgbCalendarIslamicUmalqura;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nfunction toGregorian$3(jalaliDate) {\n let jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n let date = julianToGregorian$1(jdn);\n date.setHours(6, 30, 3, 200);\n return date;\n}\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n */\nfunction fromGregorian$3(gdate) {\n let g2d = gregorianToJulian$1(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n return julianToJalali(g2d);\n}\nfunction setJalaliYear(date, yearValue) {\n date.year = +yearValue;\n return date;\n}\nfunction setJalaliMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n}\nfunction setJalaliDay(date, day) {\n let mDays = getDaysPerMonth$1(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = setJalaliMonth(date, date.month - 1);\n mDays = getDaysPerMonth$1(date.month, date.year);\n day += mDays;\n }\n } else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = setJalaliMonth(date, date.month + 1);\n mDays = getDaysPerMonth$1(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n}\nfunction mod(a, b) {\n return a - b * Math.floor(a / b);\n}\nfunction div(a, b) {\n return Math.trunc(a / b);\n}\n/*\n This function determines if the Jalali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalali year (jalaliYear).\n @param jalaliYear Jalali calendar year (-61 to 3177)\n @return\n leap: number of years since the last leap year (0 to 4)\n gYear: Gregorian year of the beginning of Jalali year\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\nfunction jalCal(jalaliYear) {\n // Jalali years starting the 33-year rule.\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\n const breaksLength = breaks.length;\n const gYear = jalaliYear + 621;\n let leapJ = -14;\n let jp = breaks[0];\n if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n throw new Error('Invalid Jalali year ' + jalaliYear);\n }\n // Find the limiting years for the Jalali year jalaliYear.\n let jump;\n for (let i = 1; i < breaksLength; i += 1) {\n const jm = breaks[i];\n jump = jm - jp;\n if (jalaliYear < jm) {\n break;\n }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4);\n jp = jm;\n }\n let n = jalaliYear - jp;\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4);\n if (mod(jump, 33) === 4 && jump - n === 4) {\n leapJ += 1;\n }\n // And the same in the Gregorian calendar (until the year gYear).\n const leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n // Determine the Gregorian date of Farvardin the 1st.\n const march = 20 + leapJ - leapG;\n // Find how many years have passed since the last leap year.\n if (jump - n < 6) {\n n = n - jump + div(jump + 4, 33) * 33;\n }\n let leap = mod(mod(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return {\n leap: leap,\n gy: gYear,\n 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$1(julianDayNumber) {\n let j = 4 * julianDayNumber + 139361631;\n j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n const i = div(mod(j, 1461), 4) * 5 + 308;\n const gDay = div(mod(i, 153), 5) + 1;\n const gMonth = mod(div(i, 153), 12) + 1;\n const gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n return new Date(gYear, gMonth - 1, gDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jy Jalali year (1 to 3100)\n @param jm Jalali month (1 to 12)\n @param jd Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction gregorianToJulian$1(gy, gm, gd) {\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod(gm + 9, 12) + 2, 5) + gd - 34840408;\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n}\n/*\n Converts the Julian Day number to a date in the Jalali calendar.\n @param julianDayNumber Julian Day number\n @return\n jalaliYear: Jalali year (1 to 3100)\n jalaliMonth: Jalali month (1 to 12)\n jalaliDay: Jalali day (1 to 29/31)\n */\nfunction julianToJalali(julianDayNumber) {\n let gy = julianToGregorian$1(julianDayNumber).getFullYear(),\n // Calculate Gregorian year (gy).\n jalaliYear = gy - 621,\n r = jalCal(jalaliYear),\n gregorianDay = gregorianToJulian$1(gy, 3, r.march),\n jalaliDay,\n jalaliMonth,\n numberOfDays;\n // Find number of days that passed since 1 Farvardin.\n numberOfDays = julianDayNumber - gregorianDay;\n if (numberOfDays >= 0) {\n if (numberOfDays <= 185) {\n // The first 6 months.\n jalaliMonth = 1 + div(numberOfDays, 31);\n jalaliDay = mod(numberOfDays, 31) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n } else {\n // The remaining months.\n numberOfDays -= 186;\n }\n } else {\n // Previous Jalali year.\n jalaliYear -= 1;\n numberOfDays += 179;\n if (r.leap === 1) {\n numberOfDays += 1;\n }\n }\n jalaliMonth = 7 + div(numberOfDays, 30);\n jalaliDay = mod(numberOfDays, 30) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jYear Jalali year (1 to 3100)\n @param jMonth Jalali month (1 to 12)\n @param jDay Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction jalaliToJulian(jYear, jMonth, jDay) {\n let r = jalCal(jYear);\n return gregorianToJulian$1(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n/**\n * Returns the number of days in a specific jalali month.\n */\nfunction getDaysPerMonth$1(month, year) {\n if (month <= 6) {\n return 31;\n }\n if (month <= 11) {\n return 30;\n }\n if (jalCal(year).leap === 0) {\n return 30;\n }\n return 29;\n}\nlet NgbCalendarPersian = /*#__PURE__*/(() => {\n class NgbCalendarPersian extends NgbCalendar {\n getDaysPerWeek() {\n return 7;\n }\n getMonths() {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n getWeeksPerMonth() {\n return 6;\n }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = setJalaliYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setJalaliMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return setJalaliDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n const day = toGregorian$3(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = toGregorian$3(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const startDate = toGregorian$3(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() {\n return fromGregorian$3(new Date());\n }\n isValid(date) {\n return date != null && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) && !isNaN(toGregorian$3(date).getTime());\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbCalendarPersian_BaseFactory;\n return function NgbCalendarPersian_Factory(t) {\n return (ɵNgbCalendarPersian_BaseFactory || (ɵNgbCalendarPersian_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarPersian)))(t || NgbCalendarPersian);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCalendarPersian,\n factory: NgbCalendarPersian.ɵfac\n });\n }\n }\n return NgbCalendarPersian;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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;\nfunction isGregorianLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nfunction numberOfFirstDayInYear(year) {\n let monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n let fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n let dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n let timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n let dayOfWeek = dayNumber % 7; // 0 == Monday\n if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n dayNumber++;\n dayOfWeek = dayNumber % 7;\n }\n if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n dayNumber += 2;\n } else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n dayNumber++;\n }\n return dayNumber;\n}\nfunction getDaysInGregorianMonth(month, year) {\n let days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (isGregorianLeapYear(year)) {\n days[1]++;\n }\n return days[month - 1];\n}\nfunction getHebrewMonths(year) {\n return isHebrewLeapYear(year) ? 13 : 12;\n}\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewYear(year) {\n return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\nfunction isHebrewLeapYear(year) {\n if (year != null) {\n let b = (year * 12 + 17) % 19;\n return b >= (b < 0 ? -7 : 12);\n }\n return false;\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 */\nfunction getDaysInHebrewMonth(month, year) {\n let yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n let yearType = (yearLength <= 380 ? yearLength : yearLength - 30) - 353;\n let leapYear = isHebrewLeapYear(year);\n let daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] : [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n if (yearType > 0) {\n daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n }\n if (yearType > 1) {\n daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n }\n return daysInMonth[month - 1];\n}\nfunction getDayNumberInHebrewYear(date) {\n let numberOfDay = 0;\n for (let i = 1; i < date.month; i++) {\n numberOfDay += getDaysInHebrewMonth(i, date.year);\n }\n return numberOfDay + date.day;\n}\nfunction setHebrewMonth(date, val) {\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getHebrewMonths(date.year) - date.month) {\n val -= getHebrewMonths(date.year) - date.month + 1;\n date.year++;\n date.month = 1;\n } else {\n date.month += val;\n val = 0;\n }\n } else {\n if (val >= date.month) {\n date.year--;\n val -= date.month;\n date.month = getHebrewMonths(date.year);\n } else {\n date.month -= val;\n val = 0;\n }\n }\n }\n return date;\n}\nfunction setHebrewDay(date, val) {\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n date.year++;\n date.month = 1;\n date.day = 1;\n } else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n date.month++;\n date.day = 1;\n } else {\n date.day += val;\n val = 0;\n }\n } else {\n if (val >= date.day) {\n val -= date.day;\n date.month--;\n if (date.month === 0) {\n date.year--;\n date.month = getHebrewMonths(date.year);\n }\n date.day = getDaysInHebrewMonth(date.month, date.year);\n } else {\n date.day -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n */\nfunction fromGregorian$2(gdate) {\n const date = new Date(gdate);\n const gYear = date.getFullYear(),\n gMonth = date.getMonth(),\n gDay = date.getDate();\n let julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) - Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) + Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gYear) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay + 0.5);\n let daysSinceHebEpoch = julianDay - 347997;\n let monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\n let hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n let firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n let dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n while (dayOfYear < 1) {\n hYear--;\n firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n }\n let hMonth = 1;\n let hDay = dayOfYear;\n while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n hDay -= getDaysInHebrewMonth(hMonth, hYear);\n hMonth++;\n }\n return new NgbDate(hYear, hMonth, hDay);\n}\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n */\nfunction toGregorian$2(hebrewDate) {\n const hYear = hebrewDate.year;\n const hMonth = hebrewDate.month;\n const hDay = hebrewDate.day;\n let days = numberOfFirstDayInYear(hYear);\n for (let i = 1; i < hMonth; i++) {\n days += getDaysInHebrewMonth(i, hYear);\n }\n days += hDay;\n let diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n let after = diffDays >= 0;\n if (!after) {\n diffDays = -diffDays;\n }\n let gYear = 1970;\n let gMonth = 1;\n let gDay = 1;\n while (diffDays > 0) {\n if (after) {\n if (diffDays >= (isGregorianLeapYear(gYear) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear(gYear) ? 366 : 365;\n gYear++;\n } else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n gMonth++;\n } else {\n gDay += diffDays;\n diffDays = 0;\n }\n } else {\n if (diffDays >= (isGregorianLeapYear(gYear - 1) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear(gYear - 1) ? 366 : 365;\n gYear--;\n } else {\n if (gMonth > 1) {\n gMonth--;\n } else {\n gMonth = 12;\n gYear--;\n }\n if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n } else {\n gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n diffDays = 0;\n }\n }\n }\n }\n return new Date(gYear, gMonth - 1, gDay);\n}\nfunction hebrewNumerals(numerals) {\n if (!numerals) {\n return '';\n }\n const hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n const hArray10_19 = ['\\u05d9', '\\u05d9\\u05d0', '\\u05d9\\u05d1', '\\u05d9\\u05d2', '\\u05d9\\u05d3', '\\u05d8\\u05d5', '\\u05d8\\u05d6', '\\u05d9\\u05d6', '\\u05d9\\u05d7', '\\u05d9\\u05d8'];\n const hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n const hArray100_900 = ['', '\\u05e7', '\\u05e8', '\\u05e9', '\\u05ea', '\\u05ea\\u05e7', '\\u05ea\\u05e8', '\\u05ea\\u05e9', '\\u05ea\\u05ea', '\\u05ea\\u05ea\\u05e7'];\n const hArray1000_9000 = ['', '\\u05d0', '\\u05d1', '\\u05d1\\u05d0', '\\u05d1\\u05d1', '\\u05d4', '\\u05d4\\u05d0', '\\u05d4\\u05d1', '\\u05d4\\u05d1\\u05d0', '\\u05d4\\u05d1\\u05d1'];\n const geresh = '\\u05f3',\n gershaim = '\\u05f4';\n let mem = 0;\n let result = [];\n let step = 0;\n while (numerals > 0) {\n let m = numerals % 10;\n if (step === 0) {\n mem = m;\n } else if (step === 1) {\n if (m !== 1) {\n result.unshift(hArray20_90[m], hArray0_9[mem]);\n } else {\n result.unshift(hArray10_19[mem]);\n }\n } else if (step === 2) {\n result.unshift(hArray100_900[m]);\n } else {\n if (m !== 5) {\n result.unshift(hArray1000_9000[m], geresh, ' ');\n }\n break;\n }\n numerals = Math.floor(numerals / 10);\n if (step === 0 && numerals === 0) {\n result.unshift(hArray0_9[m]);\n }\n step++;\n }\n result = result.join('').split('');\n if (result.length === 1) {\n result.push(geresh);\n } else if (result.length > 1) {\n result.splice(result.length - 1, 0, gershaim);\n }\n return result.join('');\n}\n\n/**\n * @since 3.2.0\n */\nlet NgbCalendarHebrew = /*#__PURE__*/(() => {\n class NgbCalendarHebrew extends NgbCalendar {\n getDaysPerWeek() {\n return 7;\n }\n getMonths(year) {\n if (year && isHebrewLeapYear(year)) {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n } else {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n }\n getWeeksPerMonth() {\n return 6;\n }\n isValid(date) {\n if (date != null) {\n let b = isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n return b && !isNaN(toGregorian$2(date).getTime());\n }\n return false;\n }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date.year += number;\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setHebrewMonth(date, number);\n date.day = 1;\n return date;\n case 'd':\n return setHebrewDay(date, number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n const day = toGregorian$2(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n const date = week[week.length - 1];\n return Math.ceil(getDayNumberInHebrewYear(date) / 7);\n }\n getToday() {\n return fromGregorian$2(new Date());\n }\n /**\n * @since 3.4.0\n */\n toGregorian(date) {\n return fromJSDate(toGregorian$2(date));\n }\n /**\n * @since 3.4.0\n */\n fromGregorian(date) {\n return fromGregorian$2(toJSDate(date));\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbCalendarHebrew_BaseFactory;\n return function NgbCalendarHebrew_Factory(t) {\n return (ɵNgbCalendarHebrew_BaseFactory || (ɵNgbCalendarHebrew_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarHebrew)))(t || NgbCalendarHebrew);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCalendarHebrew,\n factory: NgbCalendarHebrew.ɵfac\n });\n }\n }\n return NgbCalendarHebrew;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst WEEKDAYS$1 = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\nconst MONTHS$1 = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\nconst MONTHS_LEAP = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר א׳', 'אדר ב׳', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n/**\n * @since 3.2.0\n */\nlet NgbDatepickerI18nHebrew = /*#__PURE__*/(() => {\n class NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\n getMonthShortName(month, year) {\n return this.getMonthFullName(month, year);\n }\n getMonthFullName(month, year) {\n return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] || '' : MONTHS$1[month - 1] || '';\n }\n getWeekdayLabel(weekday, width) {\n return WEEKDAYS$1[weekday - 1] || '';\n }\n getDayAriaLabel(date) {\n return `${hebrewNumerals(date.day)} ${this.getMonthFullName(date.month, date.year)} ${hebrewNumerals(date.year)}`;\n }\n getDayNumerals(date) {\n return hebrewNumerals(date.day);\n }\n getWeekNumerals(weekNumber) {\n return hebrewNumerals(weekNumber);\n }\n getYearNumerals(year) {\n return hebrewNumerals(year);\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbDatepickerI18nHebrew_BaseFactory;\n return function NgbDatepickerI18nHebrew_Factory(t) {\n return (ɵNgbDatepickerI18nHebrew_BaseFactory || (ɵNgbDatepickerI18nHebrew_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDatepickerI18nHebrew)))(t || NgbDatepickerI18nHebrew);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDatepickerI18nHebrew,\n factory: NgbDatepickerI18nHebrew.ɵfac\n });\n }\n }\n return NgbDatepickerI18nHebrew;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nfunction toGregorian$1(date) {\n return new Date(date.year - 543, date.month - 1, date.day);\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 */\nfunction fromGregorian$1(gdate) {\n return new NgbDate(gdate.getFullYear() + 543, gdate.getMonth() + 1, gdate.getDate());\n}\n\n/**\n * @since 9.1.0\n */\nlet NgbCalendarBuddhist = /*#__PURE__*/(() => {\n class NgbCalendarBuddhist extends NgbCalendarGregorian {\n getToday() {\n return fromGregorian$1(new Date());\n }\n getNext(date, period = 'd', number = 1) {\n let jsDate = toGregorian$1(date);\n let checkMonth = true;\n let expectedMonth = jsDate.getMonth();\n switch (period) {\n case 'y':\n jsDate.setFullYear(jsDate.getFullYear() + number);\n break;\n case 'm':\n expectedMonth += number;\n jsDate.setMonth(expectedMonth);\n expectedMonth = expectedMonth % 12;\n if (expectedMonth < 0) {\n expectedMonth = expectedMonth + 12;\n }\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n checkMonth = false;\n break;\n default:\n return date;\n }\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n // this means the destination month has less days than the initial month\n // let's go back to the end of the previous month:\n jsDate.setDate(0);\n }\n return fromGregorian$1(jsDate);\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n let jsDate = toGregorian$1(date);\n let day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n let date = week[thursdayIndex];\n const jsDate = toGregorian$1(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n }\n isValid(date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n const jsDate = toGregorian$1(date);\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year - 543 && jsDate.getMonth() + 1 === date.month && jsDate.getDate() === date.day;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbCalendarBuddhist_BaseFactory;\n return function NgbCalendarBuddhist_Factory(t) {\n return (ɵNgbCalendarBuddhist_BaseFactory || (ɵNgbCalendarBuddhist_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarBuddhist)))(t || NgbCalendarBuddhist);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCalendarBuddhist,\n factory: NgbCalendarBuddhist.ɵfac\n });\n }\n }\n return NgbCalendarBuddhist;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst JD_EPOCH = 1724220.5;\nconst DAYSPERMONTH = [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 5];\n/**\n * Determine whether this date is in a leap year.\n * * `year` is the year to examine\n * returns boolean - true if this is a leap year, false if not\n * */\nfunction isEthiopianLeapYear(year) {\n if (year != null) {\n return year % 4 == 3 || year % 4 == -1;\n }\n return false;\n}\n/**\n * Sets the Ethiopian year.\n * * `date` is Ethiopian date\n * * `yearValue` incremented year\n * returns NgbDate - ethiopian date\n * */\nfunction setEthiopianYear(date, yearValue) {\n date.year = +yearValue;\n return date;\n}\n/**\n * Sets the Ethiopian month.\n * * `date` is Ethiopian date\n * * `val` incremented month\n * returns NgbDate - Ethiopian date\n * */\nfunction setEthiopianMonth(date, val) {\n val = +val;\n date.year = date.year + Math.floor((val - 1) / 13);\n date.month = Math.floor(((val - 1) % 13 + 13) % 13) + 1;\n return date;\n}\n/**\n * Sets the Ethiopian day.\n * * `date` is Ethiopian date\n * * `day` incremented day\n * returns NgbDate - Ethiopian date\n * */\nfunction setEthiopianDay(date, day) {\n let mDays = getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = setEthiopianMonth(date, date.month - 1);\n mDays = getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n } else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = setEthiopianMonth(date, date.month + 1);\n mDays = getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n}\nfunction getDaysPerMonth(month, year) {\n let leapYear = isEthiopianLeapYear(year);\n return DAYSPERMONTH[month - 1] + (month === 13 && leapYear ? 1 : 0);\n}\nfunction toGregorian(ethiopianDate) {\n let jdn = ethiopianToJulian(ethiopianDate.year, ethiopianDate.month, ethiopianDate.day);\n let date = julianToGregorian(jdn);\n date.setHours(6, 30, 3, 200);\n return date;\n}\nfunction fromGregorian(gdate) {\n let g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n return juilianToEthiopia(g2d);\n}\nfunction ethiopianToJulian(year, month, day) {\n if (year < 0) {\n year++;\n } // No year zero\n return day + (month - 1) * 30 + (year - 1) * 365 + Math.floor(year / 4) + JD_EPOCH - 1;\n}\nfunction juilianToEthiopia(jd) {\n let c = Math.floor(jd) + 0.5 - JD_EPOCH;\n let year = Math.floor((c - Math.floor((c + 366) / 1461)) / 365) + 1;\n if (year <= 0) {\n year--;\n } // No year zero\n c = Math.floor(jd) + 0.5 - ethiopianToJulian(year, 1, 1);\n let month = Math.floor(c / 30) + 1;\n let day = c - (month - 1) * 30 + 1;\n return new NgbDate(year, month, day);\n}\nfunction julianToGregorian(jd) {\n let z = Math.floor(jd + 0.5);\n let a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n let b = a + 1524;\n let c = Math.floor((b - 122.1) / 365.25);\n let d = Math.floor(365.25 * c);\n let e = Math.floor((b - d) / 30.6001);\n let day = b - d - Math.floor(e * 30.6001);\n let month = e - (e > 13.5 ? 13 : 1);\n let year = c - (month > 2.5 ? 4716 : 4715);\n if (year <= 0) {\n year--;\n } // No year zero\n return new Date(year, month, day);\n}\nfunction gregorianToJulian(year, month, day) {\n if (year < 0) {\n year++;\n } // No year zero\n // Jean Meeus algorithm, \"Astronomical Algorithms\", 1991\n if (month < 3) {\n month += 12;\n year--;\n }\n let a = Math.floor(year / 100);\n let b = 2 - a + Math.floor(a / 4);\n return Math.floor(365.25 * (year + 4716)) + Math.floor(30.6001 * (month + 1)) + day + b - 1524.5;\n}\n\n/**\n * @since 16.0.0\n */\nlet NgbCalendarEthiopian = /*#__PURE__*/(() => {\n class NgbCalendarEthiopian extends NgbCalendar {\n getDaysPerWeek() {\n return 7;\n }\n getMonths(year) {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = setEthiopianYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setEthiopianMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return setEthiopianDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) {\n return this.getNext(date, period, -number);\n }\n getWeekday(date) {\n const dt = Math.floor(ethiopianToJulian(date.year, date.month, date.day) + 3) % 7;\n return dt === 0 ? 7 : dt;\n }\n getWeekNumber(week, firstDayOfWeek) {\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const startDate = toGregorian(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n }\n getWeeksPerMonth() {\n return 6;\n }\n getToday() {\n return fromGregorian(new Date());\n }\n isValid(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) && !isNaN(toGregorian(date).getTime());\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbCalendarEthiopian_BaseFactory;\n return function NgbCalendarEthiopian_Factory(t) {\n return (ɵNgbCalendarEthiopian_BaseFactory || (ɵNgbCalendarEthiopian_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarEthiopian)))(t || NgbCalendarEthiopian);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbCalendarEthiopian,\n factory: NgbCalendarEthiopian.ɵfac\n });\n }\n }\n return NgbCalendarEthiopian;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst WEEKDAYS = ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሓሙስ', 'ዓርብ', 'ቅዳሜ'];\nconst MONTHS = ['መስከረም', 'ጥቅምት', 'ኅዳር', 'ታህሣሥ', 'ጥር', 'የካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰኔ', 'ሐምሌ', 'ነሐሴ', 'ጳጉሜ'];\n/**\n * @since 16.0.0\n */\nlet NgbDatepickerI18nAmharic = /*#__PURE__*/(() => {\n class NgbDatepickerI18nAmharic extends NgbDatepickerI18n {\n getMonthShortName(month, year) {\n return this.getMonthFullName(month, year);\n }\n getMonthFullName(month, year) {\n return MONTHS[month - 1];\n }\n getWeekdayLabel(weekday, width) {\n return WEEKDAYS[weekday - 1];\n }\n getDayAriaLabel(date) {\n return `${date.day} ${this.getMonthFullName(date.month, date.year)} ${date.year}`;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbDatepickerI18nAmharic_BaseFactory;\n return function NgbDatepickerI18nAmharic_Factory(t) {\n return (ɵNgbDatepickerI18nAmharic_BaseFactory || (ɵNgbDatepickerI18nAmharic_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDatepickerI18nAmharic)))(t || NgbDatepickerI18nAmharic);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDatepickerI18nAmharic,\n factory: NgbDatepickerI18nAmharic.ɵfac\n });\n }\n }\n return NgbDatepickerI18nAmharic;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\nlet NgbDateNativeAdapter = /*#__PURE__*/(() => {\n class NgbDateNativeAdapter extends NgbDateAdapter {\n /**\n * Converts a native `Date` to a `NgbDateStruct`.\n */\n fromModel(date) {\n return date instanceof Date && !isNaN(date.getTime()) ? this._fromNativeDate(date) : null;\n }\n /**\n * Converts a `NgbDateStruct` to a native `Date`.\n */\n toModel(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) : null;\n }\n _fromNativeDate(date) {\n return {\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate()\n };\n }\n _toNativeDate(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // avoid 30 -> 1930 conversion\n jsDate.setFullYear(date.year);\n return jsDate;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbDateNativeAdapter_BaseFactory;\n return function NgbDateNativeAdapter_Factory(t) {\n return (ɵNgbDateNativeAdapter_BaseFactory || (ɵNgbDateNativeAdapter_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDateNativeAdapter)))(t || NgbDateNativeAdapter);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDateNativeAdapter,\n factory: NgbDateNativeAdapter.ɵfac\n });\n }\n }\n return NgbDateNativeAdapter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * @since 3.2.0\n */\nlet NgbDateNativeUTCAdapter = /*#__PURE__*/(() => {\n class NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\n _fromNativeDate(date) {\n return {\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n day: date.getUTCDate()\n };\n }\n _toNativeDate(date) {\n const jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n // avoid 30 -> 1930 conversion\n jsDate.setUTCFullYear(date.year);\n return jsDate;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbDateNativeUTCAdapter_BaseFactory;\n return function NgbDateNativeUTCAdapter_Factory(t) {\n return (ɵNgbDateNativeUTCAdapter_BaseFactory || (ɵNgbDateNativeUTCAdapter_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDateNativeUTCAdapter)))(t || NgbDateNativeUTCAdapter);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDateNativeUTCAdapter,\n factory: NgbDateNativeUTCAdapter.ɵfac\n });\n }\n }\n return NgbDateNativeUTCAdapter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst NGB_DATEPICKER_DIRECTIVES = [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth];\nlet NgbDatepickerModule = /*#__PURE__*/(() => {\n class NgbDatepickerModule {\n static {\n this.ɵfac = function NgbDatepickerModule_Factory(t) {\n return new (t || NgbDatepickerModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbDatepickerModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbDatepickerModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbDropdownConfig = /*#__PURE__*/(() => {\n class NgbDropdownConfig {\n constructor() {\n this.autoClose = true;\n this.placement = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n this.popperOptions = options => options;\n this.container = null;\n }\n static {\n this.ɵfac = function NgbDropdownConfig_Factory(t) {\n return new (t || NgbDropdownConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbDropdownConfig,\n factory: NgbDropdownConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbDropdownConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbDropdownItem = /*#__PURE__*/(() => {\n class NgbDropdownItem {\n constructor() {\n this._disabled = false;\n this.nativeElement = inject(ElementRef).nativeElement;\n this.tabindex = 0;\n }\n set disabled(value) {\n this._disabled = value === '' || value === true; // accept an empty attribute as true\n }\n get disabled() {\n return this._disabled;\n }\n static {\n this.ɵfac = function NgbDropdownItem_Factory(t) {\n return new (t || NgbDropdownItem)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbDropdownItem,\n selectors: [[\"\", \"ngbDropdownItem\", \"\"]],\n hostAttrs: [1, \"dropdown-item\"],\n hostVars: 3,\n hostBindings: function NgbDropdownItem_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"tabIndex\", ctx.disabled ? -1 : ctx.tabindex);\n i0.ɵɵclassProp(\"disabled\", ctx.disabled);\n }\n },\n inputs: {\n tabindex: \"tabindex\",\n disabled: \"disabled\"\n },\n standalone: true\n });\n }\n }\n return NgbDropdownItem;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive that will be applied if dropdown item is a button.\n * It will only set the disabled property.\n */\nlet NgbDropdownButtonItem = /*#__PURE__*/(() => {\n class NgbDropdownButtonItem {\n constructor() {\n this.item = inject(NgbDropdownItem);\n }\n static {\n this.ɵfac = function NgbDropdownButtonItem_Factory(t) {\n return new (t || NgbDropdownButtonItem)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbDropdownButtonItem,\n selectors: [[\"button\", \"ngbDropdownItem\", \"\"]],\n hostVars: 1,\n hostBindings: function NgbDropdownButtonItem_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"disabled\", ctx.item.disabled);\n }\n },\n standalone: true\n });\n }\n }\n return NgbDropdownButtonItem;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\nlet NgbDropdownMenu = /*#__PURE__*/(() => {\n class NgbDropdownMenu {\n constructor() {\n this.dropdown = inject(NgbDropdown);\n this.nativeElement = inject(ElementRef).nativeElement;\n }\n static {\n this.ɵfac = function NgbDropdownMenu_Factory(t) {\n return new (t || NgbDropdownMenu)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbDropdownMenu,\n selectors: [[\"\", \"ngbDropdownMenu\", \"\"]],\n contentQueries: function NgbDropdownMenu_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbDropdownItem, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.menuItems = _t);\n }\n },\n hostVars: 4,\n hostBindings: function NgbDropdownMenu_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown.ArrowUp\", function NgbDropdownMenu_keydown_ArrowUp_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.ArrowDown\", function NgbDropdownMenu_keydown_ArrowDown_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.Home\", function NgbDropdownMenu_keydown_Home_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.End\", function NgbDropdownMenu_keydown_End_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.Enter\", function NgbDropdownMenu_keydown_Enter_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.Space\", function NgbDropdownMenu_keydown_Space_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.Tab\", function NgbDropdownMenu_keydown_Tab_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.Shift.Tab\", function NgbDropdownMenu_keydown_Shift_Tab_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"dropdown-menu\", true)(\"show\", ctx.dropdown.isOpen());\n }\n },\n standalone: true\n });\n }\n }\n return NgbDropdownMenu;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbDropdownAnchor = /*#__PURE__*/(() => {\n class NgbDropdownAnchor {\n constructor() {\n this.dropdown = inject(NgbDropdown);\n this.nativeElement = inject(ElementRef).nativeElement;\n }\n static {\n this.ɵfac = function NgbDropdownAnchor_Factory(t) {\n return new (t || NgbDropdownAnchor)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbDropdownAnchor,\n selectors: [[\"\", \"ngbDropdownAnchor\", \"\"]],\n hostAttrs: [1, \"dropdown-toggle\"],\n hostVars: 3,\n hostBindings: function NgbDropdownAnchor_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n i0.ɵɵclassProp(\"show\", ctx.dropdown.isOpen());\n }\n },\n standalone: true\n });\n }\n }\n return NgbDropdownAnchor;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbDropdownToggle = /*#__PURE__*/(() => {\n class NgbDropdownToggle extends NgbDropdownAnchor {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbDropdownToggle_BaseFactory;\n return function NgbDropdownToggle_Factory(t) {\n return (ɵNgbDropdownToggle_BaseFactory || (ɵNgbDropdownToggle_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDropdownToggle)))(t || NgbDropdownToggle);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbDropdownToggle,\n selectors: [[\"\", \"ngbDropdownToggle\", \"\"]],\n hostAttrs: [1, \"dropdown-toggle\"],\n hostVars: 3,\n hostBindings: function NgbDropdownToggle_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function NgbDropdownToggle_click_HostBindingHandler() {\n return ctx.dropdown.toggle();\n })(\"keydown.ArrowUp\", function NgbDropdownToggle_keydown_ArrowUp_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.ArrowDown\", function NgbDropdownToggle_keydown_ArrowDown_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.Home\", function NgbDropdownToggle_keydown_Home_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.End\", function NgbDropdownToggle_keydown_End_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.Tab\", function NgbDropdownToggle_keydown_Tab_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n })(\"keydown.Shift.Tab\", function NgbDropdownToggle_keydown_Shift_Tab_HostBindingHandler($event) {\n return ctx.dropdown.onKeyDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n i0.ɵɵclassProp(\"show\", ctx.dropdown.isOpen());\n }\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NgbDropdownAnchor,\n useExisting: forwardRef(() => NgbDropdownToggle)\n }]), i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return NgbDropdownToggle;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\nlet NgbDropdown = /*#__PURE__*/(() => {\n class NgbDropdown {\n constructor() {\n this._changeDetector = inject(ChangeDetectorRef);\n this._config = inject(NgbDropdownConfig);\n this._document = inject(DOCUMENT);\n this._ngZone = inject(NgZone);\n this._nativeElement = inject(ElementRef).nativeElement;\n this._destroyCloseHandlers$ = new Subject();\n this._bodyContainer = null;\n this._positioning = ngbPositioning();\n /**\n * Indicates whether the dropdown should be closed when clicking one of dropdown items or pressing ESC.\n *\n * * `true` - the dropdown will close on both outside and inside (menu) clicks.\n * * `false` - the dropdown can only be closed manually via `close()` or `toggle()` methods.\n * * `\"inside\"` - the dropdown will close on inside menu clicks, but not outside clicks.\n * * `\"outside\"` - the dropdown will close only on the outside clicks and not on menu clicks.\n */\n this.autoClose = this._config.autoClose;\n /**\n * Defines whether or not the dropdown menu is opened initially.\n */\n this._open = false;\n /**\n * The preferred placement of the dropdown, among the [possible values](#/guides/positioning#api).\n *\n * The default order of preference is `\"bottom-start bottom-end top-start top-end\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = this._config.placement;\n /**\n * Allows to change default Popper options when positioning the dropdown.\n * Receives current popper options and returns modified ones.\n *\n * @since 13.1.0\n */\n this.popperOptions = this._config.popperOptions;\n /**\n * A selector specifying the element the dropdown should be appended to.\n * Currently only supports \"body\".\n *\n * @since 4.1.0\n */\n this.container = this._config.container;\n /**\n * An event fired when the dropdown is opened or closed.\n *\n * The event payload is a `boolean`:\n * * `true` - the dropdown was opened\n * * `false` - the dropdown was closed\n */\n this.openChange = new EventEmitter();\n }\n ngOnInit() {\n if (!this.display) {\n this.display = this._nativeElement.closest('.navbar') ? 'static' : 'dynamic';\n }\n }\n ngAfterContentInit() {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._applyPlacementClasses();\n if (this._open) {\n this._setCloseHandlers();\n }\n });\n }\n ngOnChanges(changes) {\n if (changes.container && this._open) {\n this._applyContainer(this.container);\n }\n if (changes.placement && !changes.placement.firstChange) {\n this._positioning.setOptions({\n hostElement: this._anchor.nativeElement,\n targetElement: this._bodyContainer || this._menu.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body'\n });\n this._applyPlacementClasses();\n }\n if (changes.dropdownClass) {\n const {\n currentValue,\n previousValue\n } = changes.dropdownClass;\n this._applyCustomDropdownClass(currentValue, previousValue);\n }\n if (changes.autoClose && this._open) {\n this.autoClose = changes.autoClose.currentValue;\n this._setCloseHandlers();\n }\n }\n /**\n * Checks if the dropdown menu is open.\n */\n isOpen() {\n return this._open;\n }\n /**\n * Opens the dropdown menu.\n */\n open() {\n if (!this._open) {\n this._open = true;\n this._applyContainer(this.container);\n this.openChange.emit(true);\n this._setCloseHandlers();\n if (this._anchor) {\n this._anchor.nativeElement.focus();\n if (this.display === 'dynamic') {\n this._ngZone.runOutsideAngular(() => {\n this._positioning.createPopper({\n hostElement: this._anchor.nativeElement,\n targetElement: this._bodyContainer || this._menu.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n updatePopperOptions: options => this.popperOptions(addPopperOffset([0, 2])(options))\n });\n this._applyPlacementClasses();\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positionMenu());\n });\n }\n }\n }\n }\n _setCloseHandlers() {\n this._destroyCloseHandlers$.next(); // destroy any existing close handlers\n ngbAutoClose(this._ngZone, this._document, this.autoClose, source => {\n this.close();\n if (source === 0 /* SOURCE.ESCAPE */) {\n this._anchor.nativeElement.focus();\n }\n }, this._destroyCloseHandlers$, this._menu ? [this._menu.nativeElement] : [], this._anchor ? [this._anchor.nativeElement] : [], '.dropdown-item,.dropdown-divider');\n }\n /**\n * Closes the dropdown menu.\n */\n close() {\n if (this._open) {\n this._open = false;\n this._resetContainer();\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this._destroyCloseHandlers$.next();\n this.openChange.emit(false);\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the dropdown menu.\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n ngOnDestroy() {\n this.close();\n }\n onKeyDown(event) {\n /* eslint-disable-next-line deprecation/deprecation */\n const key = event.which;\n const itemElements = this._getMenuElements();\n let position = -1;\n let itemElement = null;\n const isEventFromToggle = this._isEventFromToggle(event);\n if (!isEventFromToggle && itemElements.length) {\n itemElements.forEach((item, index) => {\n if (item.contains(event.target)) {\n itemElement = item;\n }\n if (item === getActiveElement(this._document)) {\n position = index;\n }\n });\n }\n // closing on Enter / Space\n if (key === Key.Space || key === Key.Enter) {\n if (itemElement && (this.autoClose === true || this.autoClose === 'inside')) {\n // Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\n // So we have to register a one-time click handler that will fire after any user defined click handlers\n // to close the dropdown\n fromEvent(itemElement, 'click').pipe(take(1)).subscribe(() => this.close());\n }\n return;\n }\n if (key === Key.Tab) {\n if (event.target && this.isOpen() && this.autoClose) {\n if (this._anchor.nativeElement === event.target) {\n if (this.container === 'body' && !event.shiftKey) {\n /* 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 this._menu.nativeElement.setAttribute('tabindex', '0');\n this._menu.nativeElement.focus();\n this._menu.nativeElement.removeAttribute('tabindex');\n } else if (event.shiftKey) {\n this.close();\n }\n return;\n } else if (this.container === 'body') {\n const focusableElements = this._menu.nativeElement.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR);\n if (event.shiftKey && event.target === focusableElements[0]) {\n this._anchor.nativeElement.focus();\n event.preventDefault();\n } else if (!event.shiftKey && event.target === focusableElements[focusableElements.length - 1]) {\n this._anchor.nativeElement.focus();\n this.close();\n }\n } else {\n fromEvent(event.target, 'focusout').pipe(take(1)).subscribe(({\n relatedTarget\n }) => {\n if (!this._nativeElement.contains(relatedTarget)) {\n this.close();\n }\n });\n }\n }\n return;\n }\n // opening / navigating\n if (isEventFromToggle || itemElement) {\n this.open();\n if (itemElements.length) {\n switch (key) {\n case Key.ArrowDown:\n position = Math.min(position + 1, itemElements.length - 1);\n break;\n case Key.ArrowUp:\n if (this._isDropup() && position === -1) {\n position = itemElements.length - 1;\n break;\n }\n position = Math.max(position - 1, 0);\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = itemElements.length - 1;\n break;\n }\n itemElements[position].focus();\n }\n event.preventDefault();\n }\n }\n _isDropup() {\n return this._nativeElement.classList.contains('dropup');\n }\n _isEventFromToggle(event) {\n return this._anchor.nativeElement.contains(event.target);\n }\n _getMenuElements() {\n return this._menu ? this._menu.menuItems.filter(({\n disabled\n }) => !disabled).map(({\n nativeElement\n }) => nativeElement) : [];\n }\n _positionMenu() {\n const menu = this._menu;\n if (this.isOpen() && menu) {\n if (this.display === 'dynamic') {\n this._positioning.update();\n this._applyPlacementClasses();\n } else {\n this._applyPlacementClasses(this._getFirstPlacement(this.placement));\n }\n }\n }\n _getFirstPlacement(placement) {\n return Array.isArray(placement) ? placement[0] : placement.split(' ')[0];\n }\n _resetContainer() {\n if (this._menu) {\n this._nativeElement.appendChild(this._menu.nativeElement);\n }\n if (this._bodyContainer) {\n this._document.body.removeChild(this._bodyContainer);\n this._bodyContainer = null;\n }\n }\n _applyContainer(container = null) {\n this._resetContainer();\n if (container === 'body') {\n const dropdownMenuElement = this._menu.nativeElement;\n const bodyContainer = this._bodyContainer = this._bodyContainer || this._document.createElement('div');\n // Override some styles to have the positioning working\n bodyContainer.style.position = 'absolute';\n dropdownMenuElement.style.position = 'static';\n bodyContainer.style.zIndex = '1055';\n bodyContainer.appendChild(dropdownMenuElement);\n this._document.body.appendChild(bodyContainer);\n }\n this._applyCustomDropdownClass(this.dropdownClass);\n }\n _applyCustomDropdownClass(newClass, oldClass) {\n const targetElement = this.container === 'body' ? this._bodyContainer : this._nativeElement;\n if (targetElement) {\n if (oldClass) {\n targetElement.classList.remove(oldClass);\n }\n if (newClass) {\n targetElement.classList.add(newClass);\n }\n }\n }\n _applyPlacementClasses(placement) {\n if (this._menu) {\n if (!placement) {\n placement = this._getFirstPlacement(this.placement);\n }\n // remove the current placement classes\n this._nativeElement.classList.remove('dropup', 'dropdown');\n if (this.display === 'static') {\n this._menu.nativeElement.setAttribute('data-bs-popper', 'static');\n } else {\n this._menu.nativeElement.removeAttribute('data-bs-popper');\n }\n /*\n * apply the new placement\n * in case of top use up-arrow or down-arrow otherwise\n */\n const dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n this._nativeElement.classList.add(dropdownClass);\n if (this._bodyContainer) {\n this._bodyContainer.classList.remove('dropup', 'dropdown');\n this._bodyContainer.classList.add(dropdownClass);\n }\n }\n }\n static {\n this.ɵfac = function NgbDropdown_Factory(t) {\n return new (t || NgbDropdown)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbDropdown,\n selectors: [[\"\", \"ngbDropdown\", \"\"]],\n contentQueries: function NgbDropdown_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbDropdownMenu, 5);\n i0.ɵɵcontentQuery(dirIndex, NgbDropdownAnchor, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._menu = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._anchor = _t.first);\n }\n },\n hostVars: 2,\n hostBindings: function NgbDropdown_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"show\", ctx.isOpen());\n }\n },\n inputs: {\n autoClose: \"autoClose\",\n dropdownClass: \"dropdownClass\",\n _open: [i0.ɵɵInputFlags.None, \"open\", \"_open\"],\n placement: \"placement\",\n popperOptions: \"popperOptions\",\n container: \"container\",\n display: \"display\"\n },\n outputs: {\n openChange: \"openChange\"\n },\n exportAs: [\"ngbDropdown\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return NgbDropdown;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbDropdownButtonItem];\nlet NgbDropdownModule = /*#__PURE__*/(() => {\n class NgbDropdownModule {\n static {\n this.ɵfac = function NgbDropdownModule_Factory(t) {\n return new (t || NgbDropdownModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbDropdownModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbDropdownModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbModalConfig = /*#__PURE__*/(() => {\n class NgbModalConfig {\n constructor() {\n this._ngbConfig = inject(NgbConfig);\n this.backdrop = true;\n this.fullscreen = false;\n this.keyboard = true;\n }\n get animation() {\n return this._animation ?? this._ngbConfig.animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n static {\n this.ɵfac = function NgbModalConfig_Factory(t) {\n return new (t || NgbModalConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbModalConfig,\n factory: NgbModalConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbModalConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass ContentRef {\n constructor(nodes, viewRef, componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\nclass PopupService {\n constructor(_componentType) {\n this._componentType = _componentType;\n this._windowRef = null;\n this._contentRef = null;\n this._document = inject(DOCUMENT);\n this._applicationRef = inject(ApplicationRef);\n this._injector = inject(Injector);\n this._viewContainerRef = inject(ViewContainerRef);\n this._ngZone = inject(NgZone);\n }\n open(content, templateContext, animation = false) {\n if (!this._windowRef) {\n this._contentRef = this._getContentRef(content, templateContext);\n this._windowRef = this._viewContainerRef.createComponent(this._componentType, {\n injector: this._injector,\n projectableNodes: this._contentRef.nodes\n });\n }\n const {\n nativeElement\n } = this._windowRef.location;\n const transition$ = this._ngZone.onStable.pipe(take(1), mergeMap(() => ngbRunTransition(this._ngZone, nativeElement, ({\n classList\n }) => classList.add('show'), {\n animation,\n runningTransition: 'continue'\n })));\n return {\n windowRef: this._windowRef,\n transition$\n };\n }\n close(animation = false) {\n if (!this._windowRef) {\n return of(undefined);\n }\n return ngbRunTransition(this._ngZone, this._windowRef.location.nativeElement, ({\n classList\n }) => classList.remove('show'), {\n animation,\n runningTransition: 'stop'\n }).pipe(tap(() => {\n if (this._windowRef) {\n // this is required because of the container='body' option\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n this._windowRef = null;\n }\n if (this._contentRef?.viewRef) {\n this._applicationRef.detachView(this._contentRef.viewRef);\n this._contentRef.viewRef.destroy();\n this._contentRef = null;\n }\n }));\n }\n _getContentRef(content, templateContext) {\n if (!content) {\n return new ContentRef([]);\n } else if (content instanceof TemplateRef) {\n const viewRef = content.createEmbeddedView(templateContext);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n } else {\n return new ContentRef([[this._document.createTextNode(`${content}`)]]);\n }\n }\n}\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 */\nlet ScrollBar = /*#__PURE__*/(() => {\n class ScrollBar {\n constructor() {\n this._document = inject(DOCUMENT);\n }\n /**\n * To be called to hide a potential vertical scrollbar:\n * - if a scrollbar is there and has a width greater than 0, adds some compensation\n * padding to the body to keep the same layout as when the scrollbar is there\n * - adds overflow: hidden\n *\n * @return a callback used to revert the change\n */\n hide() {\n const scrollbarWidth = Math.abs(window.innerWidth - this._document.documentElement.clientWidth);\n const body = this._document.body;\n const bodyStyle = body.style;\n const {\n overflow,\n paddingRight\n } = bodyStyle;\n if (scrollbarWidth > 0) {\n const actualPadding = parseFloat(window.getComputedStyle(body).paddingRight);\n bodyStyle.paddingRight = `${actualPadding + scrollbarWidth}px`;\n }\n bodyStyle.overflow = 'hidden';\n return () => {\n if (scrollbarWidth > 0) {\n bodyStyle.paddingRight = paddingRight;\n }\n bodyStyle.overflow = overflow;\n };\n }\n static {\n this.ɵfac = function ScrollBar_Factory(t) {\n return new (t || ScrollBar)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ScrollBar,\n factory: ScrollBar.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ScrollBar;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbModalBackdrop = /*#__PURE__*/(() => {\n class NgbModalBackdrop {\n constructor() {\n this._nativeElement = inject(ElementRef).nativeElement;\n this._zone = inject(NgZone);\n }\n ngOnInit() {\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n ngbRunTransition(this._zone, this._nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, {\n animation: this.animation,\n runningTransition: 'continue'\n });\n });\n }\n hide() {\n return ngbRunTransition(this._zone, this._nativeElement, ({\n classList\n }) => classList.remove('show'), {\n animation: this.animation,\n runningTransition: 'stop'\n });\n }\n static {\n this.ɵfac = function NgbModalBackdrop_Factory(t) {\n return new (t || NgbModalBackdrop)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbModalBackdrop,\n selectors: [[\"ngb-modal-backdrop\"]],\n hostAttrs: [2, \"z-index\", \"1055\"],\n hostVars: 6,\n hostBindings: function NgbModalBackdrop_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassMap(\"modal-backdrop\" + (ctx.backdropClass ? \" \" + ctx.backdropClass : \"\"));\n i0.ɵɵclassProp(\"show\", !ctx.animation)(\"fade\", ctx.animation);\n }\n },\n inputs: {\n animation: \"animation\",\n backdropClass: \"backdropClass\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function NgbModalBackdrop_Template(rf, ctx) {},\n encapsulation: 2\n });\n }\n }\n return NgbModalBackdrop;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nclass NgbActiveModal {\n /**\n * Updates options of an opened modal.\n *\n * @since 14.2.0\n */\n update(options) {}\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbModalRef.result` promise will be resolved with the provided value.\n */\n close(result) {}\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) {}\n}\nconst WINDOW_ATTRIBUTES = ['animation', 'ariaLabelledBy', 'ariaDescribedBy', 'backdrop', 'centered', 'fullscreen', 'keyboard', 'scrollable', 'size', 'windowClass', 'modalDialogClass'];\nconst BACKDROP_ATTRIBUTES = ['animation', 'backdropClass'];\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nclass NgbModalRef {\n _applyWindowOptions(windowInstance, options) {\n WINDOW_ATTRIBUTES.forEach(optionName => {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n });\n }\n _applyBackdropOptions(backdropInstance, options) {\n BACKDROP_ATTRIBUTES.forEach(optionName => {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n });\n }\n /**\n * Updates options of an opened modal.\n *\n * @since 14.2.0\n */\n update(options) {\n this._applyWindowOptions(this._windowCmptRef.instance, options);\n if (this._backdropCmptRef && this._backdropCmptRef.instance) {\n this._applyBackdropOptions(this._backdropCmptRef.instance, options);\n }\n }\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n */\n get componentInstance() {\n if (this._contentRef && this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n /**\n * The observable that emits when the modal is closed via the `.close()` method.\n *\n * It will emit the result passed to the `.close()` method.\n *\n * @since 8.0.0\n */\n get closed() {\n return this._closed.asObservable().pipe(takeUntil(this._hidden));\n }\n /**\n * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n *\n * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n * reasons like backdrop click or ESC key press.\n *\n * @since 8.0.0\n */\n get dismissed() {\n return this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n }\n /**\n * The observable that emits when both modal window and backdrop are closed and animations were finished.\n * At this point modal and backdrop elements will be removed from the DOM tree.\n *\n * This observable will be completed after emitting.\n *\n * @since 8.0.0\n */\n get hidden() {\n return this._hidden.asObservable();\n }\n /**\n * The observable that emits when modal is fully visible and animation was finished.\n * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n *\n * This observable will be completed after emitting.\n * It will not emit, if modal is closed before open animation is finished.\n *\n * @since 8.0.0\n */\n get shown() {\n return this._windowCmptRef.instance.shown.asObservable();\n }\n constructor(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n this._windowCmptRef = _windowCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n this._closed = new Subject();\n this._dismissed = new Subject();\n this._hidden = new Subject();\n _windowCmptRef.instance.dismissEvent.subscribe(reason => {\n this.dismiss(reason);\n });\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => {});\n }\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result) {\n if (this._windowCmptRef) {\n this._closed.next(result);\n this._resolve(result);\n this._removeModalElements();\n }\n }\n _dismiss(reason) {\n this._dismissed.next(reason);\n this._reject(reason);\n this._removeModalElements();\n }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (isPromise(dismiss)) {\n dismiss.then(result => {\n if (result !== false) {\n this._dismiss(reason);\n }\n }, () => {});\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n _removeModalElements() {\n const windowTransition$ = this._windowCmptRef.instance.hide();\n const backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n // hiding window\n windowTransition$.subscribe(() => {\n const {\n nativeElement\n } = this._windowCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._windowCmptRef.destroy();\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._windowCmptRef = null;\n this._contentRef = null;\n });\n // hiding backdrop\n backdropTransition$.subscribe(() => {\n if (this._backdropCmptRef) {\n const {\n nativeElement\n } = this._backdropCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._backdropCmptRef.destroy();\n this._backdropCmptRef = null;\n }\n });\n // all done\n zip(windowTransition$, backdropTransition$).subscribe(() => {\n this._hidden.next();\n this._hidden.complete();\n });\n }\n}\nvar ModalDismissReasons = /*#__PURE__*/function (ModalDismissReasons) {\n ModalDismissReasons[ModalDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\n ModalDismissReasons[ModalDismissReasons[\"ESC\"] = 1] = \"ESC\";\n return ModalDismissReasons;\n}(ModalDismissReasons || {});\nlet NgbModalWindow = /*#__PURE__*/(() => {\n class NgbModalWindow {\n constructor() {\n this._document = inject(DOCUMENT);\n this._elRef = inject(ElementRef);\n this._zone = inject(NgZone);\n this._closed$ = new Subject();\n this._elWithFocus = null; // element that is focused prior to modal opening\n this.backdrop = true;\n this.keyboard = true;\n this.dismissEvent = new EventEmitter();\n this.shown = new Subject();\n this.hidden = new Subject();\n }\n get fullscreenClass() {\n return this.fullscreen === true ? ' modal-fullscreen' : isString(this.fullscreen) ? ` modal-fullscreen-${this.fullscreen}-down` : '';\n }\n dismiss(reason) {\n this.dismissEvent.emit(reason);\n }\n ngOnInit() {\n this._elWithFocus = this._document.activeElement;\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this._show();\n });\n }\n ngOnDestroy() {\n this._disableEventHandling();\n }\n hide() {\n const {\n nativeElement\n } = this._elRef;\n const context = {\n animation: this.animation,\n runningTransition: 'stop'\n };\n const windowTransition$ = ngbRunTransition(this._zone, nativeElement, () => nativeElement.classList.remove('show'), context);\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => {}, context);\n const transitions$ = zip(windowTransition$, dialogTransition$);\n transitions$.subscribe(() => {\n this.hidden.next();\n this.hidden.complete();\n });\n this._disableEventHandling();\n this._restoreFocus();\n return transitions$;\n }\n _show() {\n const context = {\n animation: this.animation,\n runningTransition: 'continue'\n };\n const windowTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, context);\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => {}, context);\n zip(windowTransition$, dialogTransition$).subscribe(() => {\n this.shown.next();\n this.shown.complete();\n });\n this._enableEventHandling();\n this._setFocus();\n }\n _enableEventHandling() {\n const {\n nativeElement\n } = this._elRef;\n this._zone.runOutsideAngular(() => {\n fromEvent(nativeElement, 'keydown').pipe(takeUntil(this._closed$), /* eslint-disable-next-line deprecation/deprecation */\n filter(e => e.which === Key.Escape)).subscribe(event => {\n if (this.keyboard) {\n requestAnimationFrame(() => {\n if (!event.defaultPrevented) {\n this._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\n }\n });\n } else if (this.backdrop === 'static') {\n this._bumpBackdrop();\n }\n });\n // We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n // inside the modal dialog and releasing it outside\n let preventClose = false;\n fromEvent(this._dialogEl.nativeElement, 'mousedown').pipe(takeUntil(this._closed$), tap(() => preventClose = false), switchMap(() => fromEvent(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))), filter(({\n target\n }) => nativeElement === target)).subscribe(() => {\n preventClose = true;\n });\n // We're listening to 'click' to dismiss modal on modal window click, except when:\n // 1. clicking on modal dialog itself\n // 2. closing was prevented by mousedown/up handlers\n // 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n fromEvent(nativeElement, 'click').pipe(takeUntil(this._closed$)).subscribe(({\n target\n }) => {\n if (nativeElement === target) {\n if (this.backdrop === 'static') {\n this._bumpBackdrop();\n } else if (this.backdrop === true && !preventClose) {\n this._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\n }\n }\n preventClose = false;\n });\n });\n }\n _disableEventHandling() {\n this._closed$.next();\n }\n _setFocus() {\n const {\n nativeElement\n } = this._elRef;\n if (!nativeElement.contains(document.activeElement)) {\n const autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`);\n const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n const elementToFocus = autoFocusable || firstFocusable || nativeElement;\n elementToFocus.focus();\n }\n }\n _restoreFocus() {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n let elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n } else {\n elementToFocus = body;\n }\n this._zone.runOutsideAngular(() => {\n setTimeout(() => elementToFocus.focus());\n this._elWithFocus = null;\n });\n }\n _bumpBackdrop() {\n if (this.backdrop === 'static') {\n ngbRunTransition(this._zone, this._elRef.nativeElement, ({\n classList\n }) => {\n classList.add('modal-static');\n return () => classList.remove('modal-static');\n }, {\n animation: this.animation,\n runningTransition: 'continue'\n });\n }\n }\n static {\n this.ɵfac = function NgbModalWindow_Factory(t) {\n return new (t || NgbModalWindow)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbModalWindow,\n selectors: [[\"ngb-modal-window\"]],\n viewQuery: function NgbModalWindow_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c7, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._dialogEl = _t.first);\n }\n },\n hostAttrs: [\"role\", \"dialog\", \"tabindex\", \"-1\"],\n hostVars: 7,\n hostBindings: function NgbModalWindow_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-modal\", true)(\"aria-labelledby\", ctx.ariaLabelledBy)(\"aria-describedby\", ctx.ariaDescribedBy);\n i0.ɵɵclassMap(\"modal d-block\" + (ctx.windowClass ? \" \" + ctx.windowClass : \"\"));\n i0.ɵɵclassProp(\"fade\", ctx.animation);\n }\n },\n inputs: {\n animation: \"animation\",\n ariaLabelledBy: \"ariaLabelledBy\",\n ariaDescribedBy: \"ariaDescribedBy\",\n backdrop: \"backdrop\",\n centered: \"centered\",\n fullscreen: \"fullscreen\",\n keyboard: \"keyboard\",\n scrollable: \"scrollable\",\n size: \"size\",\n windowClass: \"windowClass\",\n modalDialogClass: \"modalDialogClass\"\n },\n outputs: {\n dismissEvent: \"dismiss\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 4,\n vars: 2,\n consts: [[\"dialog\", \"\"], [\"role\", \"document\"], [1, \"modal-content\"]],\n template: function NgbModalWindow_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 1, 0)(2, \"div\", 2);\n i0.ɵɵprojection(3);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵclassMap(\"modal-dialog\" + (ctx.size ? \" modal-\" + ctx.size : \"\") + (ctx.centered ? \" modal-dialog-centered\" : \"\") + ctx.fullscreenClass + (ctx.scrollable ? \" modal-dialog-scrollable\" : \"\") + (ctx.modalDialogClass ? \" \" + ctx.modalDialogClass : \"\"));\n }\n },\n styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\\n\"],\n encapsulation: 2\n });\n }\n }\n return NgbModalWindow;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbModalStack = /*#__PURE__*/(() => {\n class NgbModalStack {\n constructor() {\n this._applicationRef = inject(ApplicationRef);\n this._injector = inject(Injector);\n this._environmentInjector = inject(EnvironmentInjector);\n this._document = inject(DOCUMENT);\n this._scrollBar = inject(ScrollBar);\n this._activeWindowCmptHasChanged = new Subject();\n this._ariaHiddenValues = new Map();\n this._scrollBarRestoreFn = null;\n this._modalRefs = [];\n this._windowCmpts = [];\n this._activeInstances = new EventEmitter();\n const ngZone = inject(NgZone);\n // Trap focus on active WindowCmpt\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\n ngbFocusTrap(ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n _restoreScrollBar() {\n const scrollBarRestoreFn = this._scrollBarRestoreFn;\n if (scrollBarRestoreFn) {\n this._scrollBarRestoreFn = null;\n scrollBarRestoreFn();\n }\n }\n _hideScrollBar() {\n if (!this._scrollBarRestoreFn) {\n this._scrollBarRestoreFn = this._scrollBar.hide();\n }\n }\n open(contentInjector, content, options) {\n const containerEl = options.container instanceof HTMLElement ? options.container : isDefined(options.container) ? this._document.querySelector(options.container) : this._document.body;\n if (!containerEl) {\n throw new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\n }\n this._hideScrollBar();\n const activeModal = new NgbActiveModal();\n contentInjector = options.injector || contentInjector;\n const environmentInjector = contentInjector.get(EnvironmentInjector, null) || this._environmentInjector;\n const contentRef = this._getContentRef(contentInjector, environmentInjector, content, activeModal, options);\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(containerEl) : undefined;\n let windowCmptRef = this._attachWindowComponent(containerEl, contentRef.nodes);\n let ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerModalRef(ngbModalRef);\n this._registerWindowCmpt(windowCmptRef);\n // We have to cleanup DOM after the last modal when BOTH 'hidden' was emitted and 'result' promise was resolved:\n // - with animations OFF, 'hidden' emits synchronously, then 'result' is resolved asynchronously\n // - with animations ON, 'result' is resolved asynchronously, then 'hidden' emits asynchronously\n ngbModalRef.hidden.pipe(take(1)).subscribe(() => Promise.resolve(true).then(() => {\n if (!this._modalRefs.length) {\n this._document.body.classList.remove('modal-open');\n this._restoreScrollBar();\n this._revertAriaHidden();\n }\n }));\n activeModal.close = result => {\n ngbModalRef.close(result);\n };\n activeModal.dismiss = reason => {\n ngbModalRef.dismiss(reason);\n };\n activeModal.update = options => {\n ngbModalRef.update(options);\n };\n ngbModalRef.update(options);\n if (this._modalRefs.length === 1) {\n this._document.body.classList.add('modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n return ngbModalRef;\n }\n get activeInstances() {\n return this._activeInstances;\n }\n dismissAll(reason) {\n this._modalRefs.forEach(ngbModalRef => ngbModalRef.dismiss(reason));\n }\n hasOpenModals() {\n return this._modalRefs.length > 0;\n }\n _attachBackdrop(containerEl) {\n let backdropCmptRef = createComponent(NgbModalBackdrop, {\n environmentInjector: this._applicationRef.injector,\n elementInjector: this._injector\n });\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n _attachWindowComponent(containerEl, projectableNodes) {\n let windowCmptRef = createComponent(NgbModalWindow, {\n environmentInjector: this._applicationRef.injector,\n elementInjector: this._injector,\n projectableNodes\n });\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n _getContentRef(contentInjector, environmentInjector, content, activeModal, options) {\n if (!content) {\n return new ContentRef([]);\n } else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeModal);\n } else if (isString(content)) {\n return this._createFromString(content);\n } else {\n return this._createFromComponent(contentInjector, environmentInjector, content, activeModal, options);\n }\n }\n _createFromTemplateRef(templateRef, activeModal) {\n const context = {\n $implicit: activeModal,\n close(result) {\n activeModal.close(result);\n },\n dismiss(reason) {\n activeModal.dismiss(reason);\n }\n };\n const viewRef = templateRef.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n _createFromString(content) {\n const component = this._document.createTextNode(`${content}`);\n return new ContentRef([[component]]);\n }\n _createFromComponent(contentInjector, environmentInjector, componentType, context, options) {\n const elementInjector = Injector.create({\n providers: [{\n provide: NgbActiveModal,\n useValue: context\n }],\n parent: contentInjector\n });\n const componentRef = createComponent(componentType, {\n environmentInjector,\n elementInjector\n });\n const componentNativeEl = componentRef.location.nativeElement;\n if (options.scrollable) {\n componentNativeEl.classList.add('component-host-scrollable');\n }\n this._applicationRef.attachView(componentRef.hostView);\n // FIXME: we should here get rid of the component nativeElement\n // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n }\n _setAriaHidden(element) {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach(sibling => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n _revertAriaHidden() {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n _registerModalRef(ngbModalRef) {\n const unregisterModalRef = () => {\n const index = this._modalRefs.indexOf(ngbModalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n this._activeInstances.emit(this._modalRefs);\n }\n };\n this._modalRefs.push(ngbModalRef);\n this._activeInstances.emit(this._modalRefs);\n ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n _registerWindowCmpt(ngbWindowCmpt) {\n this._windowCmpts.push(ngbWindowCmpt);\n this._activeWindowCmptHasChanged.next();\n ngbWindowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(ngbWindowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n static {\n this.ɵfac = function NgbModalStack_Factory(t) {\n return new (t || NgbModalStack)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbModalStack,\n factory: NgbModalStack.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbModalStack;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbModal = /*#__PURE__*/(() => {\n class NgbModal {\n constructor() {\n this._injector = inject(Injector);\n this._modalStack = inject(NgbModalStack);\n this._config = inject(NgbModalConfig);\n }\n /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n */\n open(content, options = {}) {\n const combinedOptions = {\n ...this._config,\n animation: this._config.animation,\n ...options\n };\n return this._modalStack.open(this._injector, content, combinedOptions);\n }\n /**\n * Returns an observable that holds the active modal instances.\n */\n get activeInstances() {\n return this._modalStack.activeInstances;\n }\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * @since 3.1.0\n */\n dismissAll(reason) {\n this._modalStack.dismissAll(reason);\n }\n /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * @since 3.3.0\n */\n hasOpenModals() {\n return this._modalStack.hasOpenModals();\n }\n static {\n this.ɵfac = function NgbModal_Factory(t) {\n return new (t || NgbModal)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbModal,\n factory: NgbModal.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbModal;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbModalModule = /*#__PURE__*/(() => {\n class NgbModalModule {\n static {\n this.ɵfac = function NgbModalModule_Factory(t) {\n return new (t || NgbModalModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbModalModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [NgbModal]\n });\n }\n }\n return NgbModalModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbNavConfig = /*#__PURE__*/(() => {\n class NgbNavConfig {\n constructor() {\n this._ngbConfig = inject(NgbConfig);\n this.destroyOnHide = true;\n this.orientation = 'horizontal';\n this.roles = 'tablist';\n this.keyboard = true;\n }\n get animation() {\n return this._animation ?? this._ngbConfig.animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n static {\n this.ɵfac = function NgbNavConfig_Factory(t) {\n return new (t || NgbNavConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbNavConfig,\n factory: NgbNavConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbNavConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst isValidNavId = id => isDefined(id) && id !== '';\nlet navCounter = 0;\n/**\n * This directive must be used to wrap content to be displayed in the nav.\n *\n * @since 5.2.0\n */\nlet NgbNavContent = /*#__PURE__*/(() => {\n class NgbNavContent {\n constructor() {\n this.templateRef = inject(TemplateRef);\n }\n static {\n this.ɵfac = function NgbNavContent_Factory(t) {\n return new (t || NgbNavContent)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbNavContent,\n selectors: [[\"ng-template\", \"ngbNavContent\", \"\"]],\n standalone: true\n });\n }\n }\n return NgbNavContent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * This directive applies a specific role on a non-container based ngbNavItem.\n *\n * @since 14.1.0\n */\nlet NgbNavItemRole = /*#__PURE__*/(() => {\n class NgbNavItemRole {\n constructor(role) {\n this.role = role;\n this.nav = inject(NgbNav);\n }\n static {\n this.ɵfac = function NgbNavItemRole_Factory(t) {\n return new (t || NgbNavItemRole)(i0.ɵɵinjectAttribute('role'));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbNavItemRole,\n selectors: [[\"\", \"ngbNavItem\", \"\", 5, \"ng-container\"]],\n hostVars: 1,\n hostBindings: function NgbNavItemRole_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"presentation\" : undefined);\n }\n },\n standalone: true\n });\n }\n }\n return NgbNavItemRole;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbNavItem = /*#__PURE__*/(() => {\n class NgbNavItem {\n constructor() {\n this._nav = inject(NgbNav);\n this._nativeElement = inject(ElementRef).nativeElement;\n /**\n * If `true`, the current nav item is disabled and can't be toggled by user.\n *\n * Nevertheless disabled nav can be selected programmatically via the `.select()` method and the `[activeId]` binding.\n */\n this.disabled = false;\n /**\n * An event emitted when the fade in transition is finished on the related nav content\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the fade out transition is finished on the related nav content\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n }\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.contentTpl = this.contentTpls.first;\n }\n ngOnInit() {\n if (!isDefined(this.domId)) {\n this.domId = `ngb-nav-${navCounter++}`;\n }\n }\n get active() {\n return this._nav.activeId === this.id;\n }\n get id() {\n return isValidNavId(this._id) ? this._id : this.domId;\n }\n get panelDomId() {\n return `${this.domId}-panel`;\n }\n isPanelInDom() {\n return (isDefined(this.destroyOnHide) ? !this.destroyOnHide : !this._nav.destroyOnHide) || this.active;\n }\n /**\n * @internal\n */\n isNgContainer() {\n return this._nativeElement.nodeType === Node.COMMENT_NODE;\n }\n static {\n this.ɵfac = function NgbNavItem_Factory(t) {\n return new (t || NgbNavItem)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbNavItem,\n selectors: [[\"\", \"ngbNavItem\", \"\"]],\n contentQueries: function NgbNavItem_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbNavContent, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n }\n },\n hostVars: 2,\n hostBindings: function NgbNavItem_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"nav-item\", true);\n }\n },\n inputs: {\n destroyOnHide: \"destroyOnHide\",\n disabled: \"disabled\",\n domId: \"domId\",\n _id: [i0.ɵɵInputFlags.None, \"ngbNavItem\", \"_id\"]\n },\n outputs: {\n shown: \"shown\",\n hidden: \"hidden\"\n },\n exportAs: [\"ngbNavItem\"],\n standalone: true\n });\n }\n }\n return NgbNavItem;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A nav directive that helps with implementing tabbed navigation components.\n *\n * @since 5.2.0\n */\nlet NgbNav = /*#__PURE__*/(() => {\n class NgbNav {\n constructor(role) {\n this.role = role;\n this._config = inject(NgbNavConfig);\n this._cd = inject(ChangeDetectorRef);\n this._document = inject(DOCUMENT);\n this._nativeElement = inject(ElementRef).nativeElement;\n this.destroyRef = inject(DestroyRef);\n this._navigatingWithKeyboard = false;\n /**\n * The event emitted after the active nav changes\n * The payload of the event is the newly active nav id\n *\n * If you want to prevent nav change, you should use `(navChange)` event\n */\n this.activeIdChange = new EventEmitter();\n /**\n * If `true`, nav change will be animated.\n *\n * @since 8.0.0\n */\n this.animation = this._config.animation;\n /**\n * If `true`, non-active nav content will be removed from DOM\n * Otherwise it will just be hidden\n */\n this.destroyOnHide = this._config.destroyOnHide;\n /**\n * The orientation of navs.\n *\n * Using `vertical` will also add the `aria-orientation` attribute\n */\n this.orientation = this._config.orientation;\n /**\n * Role attribute generating strategy:\n * - `false` - no role attributes will be generated\n * - `'tablist'` - 'tablist', 'tab' and 'tabpanel' will be generated (default)\n */\n this.roles = this._config.roles;\n /**\n * Keyboard support for nav focus/selection using arrow keys.\n *\n * * `true` - navs will be focused using keyboard arrow keys\n * * `false` - no keyboard support\n * * `'changeWithArrows'` - nav will be selected using keyboard arrow keys\n *\n * See the [list of available keyboard shortcuts](#/components/nav/overview#keyboard-shortcuts).\n *\n * @since 6.1.0\n */\n this.keyboard = this._config.keyboard;\n /**\n * An event emitted when the fade in transition is finished for one of the items.\n *\n * Payload of the event is the nav id that was just shown.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the fade out transition is finished for one of the items.\n *\n * Payload of the event is the nav id that was just hidden.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.navItemChange$ = new Subject();\n /**\n * The nav change event emitted right before the nav change happens on user click.\n *\n * This event won't be emitted if nav is changed programmatically via `[activeId]` or `.select()`.\n *\n * See [`NgbNavChangeEvent`](#/components/nav/api#NgbNavChangeEvent) for payload details.\n */\n this.navChange = new EventEmitter();\n }\n click(item) {\n if (!item.disabled) {\n this._updateActiveId(item.id);\n }\n }\n onFocusout({\n relatedTarget\n }) {\n if (!this._nativeElement.contains(relatedTarget)) {\n this._navigatingWithKeyboard = false;\n }\n }\n onKeyDown(event) {\n if (this.roles !== 'tablist' || !this.keyboard) {\n return;\n }\n /* eslint-disable-next-line deprecation/deprecation */\n const key = event.which;\n const enabledLinks = this.links.filter(link => !link.navItem.disabled);\n const {\n length\n } = enabledLinks;\n let position = -1;\n enabledLinks.forEach((link, index) => {\n if (link.nativeElement === this._document.activeElement) {\n position = index;\n }\n });\n if (length) {\n switch (key) {\n case Key.ArrowUp:\n case Key.ArrowLeft:\n position = (position - 1 + length) % length;\n break;\n case Key.ArrowRight:\n case Key.ArrowDown:\n position = (position + 1) % length;\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = length - 1;\n break;\n }\n if (this.keyboard === 'changeWithArrows') {\n this.select(enabledLinks[position].navItem.id);\n }\n enabledLinks[position].nativeElement.focus();\n this._navigatingWithKeyboard = true;\n event.preventDefault();\n }\n }\n /**\n * Selects the nav with the given id and shows its associated pane.\n * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\n */\n select(id) {\n this._updateActiveId(id, false);\n }\n ngAfterContentInit() {\n if (!isDefined(this.activeId)) {\n const nextId = this.items.first ? this.items.first.id : null;\n if (isValidNavId(nextId)) {\n this._updateActiveId(nextId, false);\n this._cd.detectChanges();\n }\n }\n this.items.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this._notifyItemChanged(this.activeId));\n }\n ngOnChanges({\n activeId\n }) {\n if (activeId && !activeId.firstChange) {\n this._notifyItemChanged(activeId.currentValue);\n }\n }\n _updateActiveId(nextId, emitNavChange = true) {\n if (this.activeId !== nextId) {\n let defaultPrevented = false;\n if (emitNavChange) {\n this.navChange.emit({\n activeId: this.activeId,\n nextId,\n preventDefault: () => {\n defaultPrevented = true;\n }\n });\n }\n if (!defaultPrevented) {\n this.activeId = nextId;\n this.activeIdChange.emit(nextId);\n this._notifyItemChanged(nextId);\n }\n }\n }\n _notifyItemChanged(nextItemId) {\n this.navItemChange$.next(this._getItemById(nextItemId));\n }\n _getItemById(itemId) {\n return this.items && this.items.find(item => item.id === itemId) || null;\n }\n static {\n this.ɵfac = function NgbNav_Factory(t) {\n return new (t || NgbNav)(i0.ɵɵinjectAttribute('role'));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbNav,\n selectors: [[\"\", \"ngbNav\", \"\"]],\n contentQueries: function NgbNav_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbNavItem, 4);\n i0.ɵɵcontentQuery(dirIndex, NgbNavLinkBase, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.items = _t);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.links = _t);\n }\n },\n hostVars: 6,\n hostBindings: function NgbNav_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keydown.arrowLeft\", function NgbNav_keydown_arrowLeft_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n })(\"keydown.arrowRight\", function NgbNav_keydown_arrowRight_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n })(\"keydown.arrowDown\", function NgbNav_keydown_arrowDown_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n })(\"keydown.arrowUp\", function NgbNav_keydown_arrowUp_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n })(\"keydown.Home\", function NgbNav_keydown_Home_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n })(\"keydown.End\", function NgbNav_keydown_End_HostBindingHandler($event) {\n return ctx.onKeyDown($event);\n })(\"focusout\", function NgbNav_focusout_HostBindingHandler($event) {\n return ctx.onFocusout($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-orientation\", ctx.orientation === \"vertical\" && ctx.roles === \"tablist\" ? \"vertical\" : undefined)(\"role\", ctx.role ? ctx.role : ctx.roles ? \"tablist\" : undefined);\n i0.ɵɵclassProp(\"nav\", true)(\"flex-column\", ctx.orientation === \"vertical\");\n }\n },\n inputs: {\n activeId: \"activeId\",\n animation: \"animation\",\n destroyOnHide: \"destroyOnHide\",\n orientation: \"orientation\",\n roles: \"roles\",\n keyboard: \"keyboard\"\n },\n outputs: {\n activeIdChange: \"activeIdChange\",\n shown: \"shown\",\n hidden: \"hidden\",\n navChange: \"navChange\"\n },\n exportAs: [\"ngbNav\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return NgbNav;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbNavLinkBase = /*#__PURE__*/(() => {\n class NgbNavLinkBase {\n constructor(role) {\n this.role = role;\n this.navItem = inject(NgbNavItem);\n this.nav = inject(NgbNav);\n this.nativeElement = inject(ElementRef).nativeElement;\n }\n get tabindex() {\n if (this.nav.keyboard === false) {\n return this.navItem.disabled ? -1 : undefined;\n }\n if (this.nav._navigatingWithKeyboard) {\n return -1;\n }\n return this.navItem.disabled || !this.navItem.active ? -1 : undefined;\n }\n static {\n this.ɵfac = function NgbNavLinkBase_Factory(t) {\n return new (t || NgbNavLinkBase)(i0.ɵɵinjectAttribute('role'));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbNavLinkBase,\n selectors: [[\"\", \"ngbNavLink\", \"\"]],\n hostVars: 14,\n hostBindings: function NgbNavLinkBase_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.navItem.domId);\n i0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tab\" : undefined)(\"tabindex\", ctx.tabindex)(\"aria-controls\", ctx.navItem.isPanelInDom() ? ctx.navItem.panelDomId : null)(\"aria-selected\", ctx.navItem.active)(\"aria-disabled\", ctx.navItem.disabled);\n i0.ɵɵclassProp(\"nav-link\", true)(\"nav-item\", ctx.navItem.isNgContainer())(\"active\", ctx.navItem.active)(\"disabled\", ctx.navItem.disabled);\n }\n },\n standalone: true\n });\n }\n }\n return NgbNavLinkBase;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive to mark the nav link when used on a button element.\n */\nlet NgbNavLinkButton = /*#__PURE__*/(() => {\n class NgbNavLinkButton extends NgbNavLinkBase {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbNavLinkButton_BaseFactory;\n return function NgbNavLinkButton_Factory(t) {\n return (ɵNgbNavLinkButton_BaseFactory || (ɵNgbNavLinkButton_BaseFactory = i0.ɵɵgetInheritedFactory(NgbNavLinkButton)))(t || NgbNavLinkButton);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbNavLinkButton,\n selectors: [[\"button\", \"ngbNavLink\", \"\"]],\n hostAttrs: [\"type\", \"button\"],\n hostVars: 1,\n hostBindings: function NgbNavLinkButton_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function NgbNavLinkButton_click_HostBindingHandler() {\n return ctx.nav.click(ctx.navItem);\n });\n }\n if (rf & 2) {\n i0.ɵɵhostProperty(\"disabled\", ctx.navItem.disabled);\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return NgbNavLinkButton;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive to mark the nav link when used on a link element.\n *\n * @since 5.2.0\n */\nlet NgbNavLink = /*#__PURE__*/(() => {\n class NgbNavLink extends NgbNavLinkBase {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbNavLink_BaseFactory;\n return function NgbNavLink_Factory(t) {\n return (ɵNgbNavLink_BaseFactory || (ɵNgbNavLink_BaseFactory = i0.ɵɵgetInheritedFactory(NgbNavLink)))(t || NgbNavLink);\n };\n })();\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbNavLink,\n selectors: [[\"a\", \"ngbNavLink\", \"\"]],\n hostAttrs: [\"href\", \"\"],\n hostBindings: function NgbNavLink_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function NgbNavLink_click_HostBindingHandler($event) {\n ctx.nav.click(ctx.navItem);\n return $event.preventDefault();\n });\n }\n },\n standalone: true,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n }\n return NgbNavLink;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst ngbNavFadeOutTransition = ({\n classList\n}) => {\n classList.remove('show');\n return () => classList.remove('active');\n};\nconst ngbNavFadeInTransition = (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n};\nlet NgbNavPane = /*#__PURE__*/(() => {\n class NgbNavPane {\n constructor() {\n this.nativeElement = inject(ElementRef).nativeElement;\n }\n static {\n this.ɵfac = function NgbNavPane_Factory(t) {\n return new (t || NgbNavPane)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbNavPane,\n selectors: [[\"\", \"ngbNavPane\", \"\"]],\n hostAttrs: [1, \"tab-pane\"],\n hostVars: 5,\n hostBindings: function NgbNavPane_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.item.panelDomId);\n i0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tabpanel\" : undefined)(\"aria-labelledby\", ctx.item.domId);\n i0.ɵɵclassProp(\"fade\", ctx.nav.animation);\n }\n },\n inputs: {\n item: \"item\",\n nav: \"nav\",\n role: \"role\"\n },\n standalone: true\n });\n }\n }\n return NgbNavPane;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * The outlet where currently active nav content will be displayed.\n *\n * @since 5.2.0\n */\nlet NgbNavOutlet = /*#__PURE__*/(() => {\n class NgbNavOutlet {\n constructor() {\n this._cd = inject(ChangeDetectorRef);\n this._ngZone = inject(NgZone);\n this._activePane = null;\n }\n isPanelTransitioning(item) {\n return this._activePane?.item === item;\n }\n ngAfterViewInit() {\n // initial display\n this._updateActivePane();\n // this will be emitted for all 3 types of nav changes: .select(), [activeId] or (click)\n this.nav.navItemChange$.pipe(takeUntilDestroyed(this.nav.destroyRef), startWith(this._activePane?.item || null), distinctUntilChanged(), skip(1)).subscribe(nextItem => {\n const options = {\n animation: this.nav.animation,\n runningTransition: 'stop'\n };\n // next panel we're switching to will only appear in DOM after the change detection is done\n // and `this._panes` will be updated\n this._cd.detectChanges();\n // fading out\n if (this._activePane) {\n ngbRunTransition(this._ngZone, this._activePane.nativeElement, ngbNavFadeOutTransition, options).subscribe(() => {\n const activeItem = this._activePane?.item;\n this._activePane = this._getPaneForItem(nextItem);\n // mark for check when transition finishes as outlet or parent containers might be OnPush\n // without this the panes that have \"faded out\" will stay in DOM\n this._cd.markForCheck();\n // fading in\n if (this._activePane) {\n // we have to add the '.active' class before running the transition,\n // because it should be in place before `ngbRunTransition` does `reflow()`\n this._activePane.nativeElement.classList.add('active');\n ngbRunTransition(this._ngZone, this._activePane.nativeElement, ngbNavFadeInTransition, options).subscribe(() => {\n if (nextItem) {\n nextItem.shown.emit();\n this.nav.shown.emit(nextItem.id);\n }\n });\n }\n if (activeItem) {\n activeItem.hidden.emit();\n this.nav.hidden.emit(activeItem.id);\n }\n });\n } else {\n this._updateActivePane();\n }\n });\n }\n _updateActivePane() {\n this._activePane = this._getActivePane();\n this._activePane?.nativeElement.classList.add('show');\n this._activePane?.nativeElement.classList.add('active');\n }\n _getPaneForItem(item) {\n return this._panes && this._panes.find(pane => pane.item === item) || null;\n }\n _getActivePane() {\n return this._panes && this._panes.find(pane => pane.item.active) || null;\n }\n static {\n this.ɵfac = function NgbNavOutlet_Factory(t) {\n return new (t || NgbNavOutlet)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbNavOutlet,\n selectors: [[\"\", \"ngbNavOutlet\", \"\"]],\n viewQuery: function NgbNavOutlet_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(NgbNavPane, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._panes = _t);\n }\n },\n hostVars: 2,\n hostBindings: function NgbNavOutlet_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"tab-content\", true);\n }\n },\n inputs: {\n paneRole: \"paneRole\",\n nav: [i0.ɵɵInputFlags.None, \"ngbNavOutlet\", \"nav\"]\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c8,\n decls: 2,\n vars: 0,\n consts: [[\"ngbNavPane\", \"\", 3, \"item\", \"nav\", \"role\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function NgbNavOutlet_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵrepeaterCreate(0, NgbNavOutlet_For_1_Template, 1, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);\n }\n if (rf & 2) {\n i0.ɵɵrepeater(ctx.nav.items);\n }\n },\n dependencies: [NgbNavPane, NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbNavOutlet;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst NGB_NAV_DIRECTIVES = [NgbNavContent, NgbNav, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavLinkButton, NgbNavLinkBase, NgbNavOutlet, NgbNavPane];\nlet NgbNavModule = /*#__PURE__*/(() => {\n class NgbNavModule {\n static {\n this.ɵfac = function NgbNavModule_Factory(t) {\n return new (t || NgbNavModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbNavModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbNavModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbPaginationConfig = /*#__PURE__*/(() => {\n class NgbPaginationConfig {\n constructor() {\n this.disabled = false;\n this.boundaryLinks = false;\n this.directionLinks = true;\n this.ellipses = true;\n this.maxSize = 0;\n this.pageSize = 10;\n this.rotate = false;\n }\n static {\n this.ɵfac = function NgbPaginationConfig_Factory(t) {\n return new (t || NgbPaginationConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbPaginationConfig,\n factory: NgbPaginationConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbPaginationConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive to match the 'ellipsis' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationEllipsis = /*#__PURE__*/(() => {\n class NgbPaginationEllipsis {\n constructor() {\n this.templateRef = inject(TemplateRef);\n }\n static {\n this.ɵfac = function NgbPaginationEllipsis_Factory(t) {\n return new (t || NgbPaginationEllipsis)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbPaginationEllipsis,\n selectors: [[\"ng-template\", \"ngbPaginationEllipsis\", \"\"]],\n standalone: true\n });\n }\n }\n return NgbPaginationEllipsis;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive to match the 'first' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationFirst = /*#__PURE__*/(() => {\n class NgbPaginationFirst {\n constructor() {\n this.templateRef = inject(TemplateRef);\n }\n static {\n this.ɵfac = function NgbPaginationFirst_Factory(t) {\n return new (t || NgbPaginationFirst)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbPaginationFirst,\n selectors: [[\"ng-template\", \"ngbPaginationFirst\", \"\"]],\n standalone: true\n });\n }\n }\n return NgbPaginationFirst;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive to match the 'last' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationLast = /*#__PURE__*/(() => {\n class NgbPaginationLast {\n constructor() {\n this.templateRef = inject(TemplateRef);\n }\n static {\n this.ɵfac = function NgbPaginationLast_Factory(t) {\n return new (t || NgbPaginationLast)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbPaginationLast,\n selectors: [[\"ng-template\", \"ngbPaginationLast\", \"\"]],\n standalone: true\n });\n }\n }\n return NgbPaginationLast;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive to match the 'next' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationNext = /*#__PURE__*/(() => {\n class NgbPaginationNext {\n constructor() {\n this.templateRef = inject(TemplateRef);\n }\n static {\n this.ɵfac = function NgbPaginationNext_Factory(t) {\n return new (t || NgbPaginationNext)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbPaginationNext,\n selectors: [[\"ng-template\", \"ngbPaginationNext\", \"\"]],\n standalone: true\n });\n }\n }\n return NgbPaginationNext;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive to match the page 'number' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationNumber = /*#__PURE__*/(() => {\n class NgbPaginationNumber {\n constructor() {\n this.templateRef = inject(TemplateRef);\n }\n static {\n this.ɵfac = function NgbPaginationNumber_Factory(t) {\n return new (t || NgbPaginationNumber)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbPaginationNumber,\n selectors: [[\"ng-template\", \"ngbPaginationNumber\", \"\"]],\n standalone: true\n });\n }\n }\n return NgbPaginationNumber;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive to match the 'previous' link template\n *\n * @since 4.1.0\n */\nlet NgbPaginationPrevious = /*#__PURE__*/(() => {\n class NgbPaginationPrevious {\n constructor() {\n this.templateRef = inject(TemplateRef);\n }\n static {\n this.ɵfac = function NgbPaginationPrevious_Factory(t) {\n return new (t || NgbPaginationPrevious)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbPaginationPrevious,\n selectors: [[\"ng-template\", \"ngbPaginationPrevious\", \"\"]],\n standalone: true\n });\n }\n }\n return NgbPaginationPrevious;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive to match the 'pages' whole content\n *\n * @since 9.1.0\n */\nlet NgbPaginationPages = /*#__PURE__*/(() => {\n class NgbPaginationPages {\n constructor() {\n this.templateRef = inject(TemplateRef);\n }\n static {\n this.ɵfac = function NgbPaginationPages_Factory(t) {\n return new (t || NgbPaginationPages)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbPaginationPages,\n selectors: [[\"ng-template\", \"ngbPaginationPages\", \"\"]],\n standalone: true\n });\n }\n }\n return NgbPaginationPages;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A component that displays page numbers and allows to customize them in several ways.\n */\nlet NgbPagination = /*#__PURE__*/(() => {\n class NgbPagination {\n constructor() {\n this._config = inject(NgbPaginationConfig);\n this.pageCount = 0;\n this.pages = [];\n /**\n * If `true`, pagination links will be disabled.\n */\n this.disabled = this._config.disabled;\n /**\n * If `true`, the \"First\" and \"Last\" page links are shown.\n */\n this.boundaryLinks = this._config.boundaryLinks;\n /**\n * If `true`, the \"Next\" and \"Previous\" page links are shown.\n */\n this.directionLinks = this._config.directionLinks;\n /**\n * If `true`, the ellipsis symbols and first/last page numbers will be shown when `maxSize` > number of pages.\n */\n this.ellipses = this._config.ellipses;\n /**\n * Whether to rotate pages when `maxSize` > number of pages.\n *\n * The current page always stays in the middle if `true`.\n */\n this.rotate = this._config.rotate;\n /**\n * The maximum number of pages to display.\n */\n this.maxSize = this._config.maxSize;\n /**\n * The current page.\n *\n * Page numbers start with `1`.\n */\n this.page = 1;\n /**\n * The number of items per page.\n */\n this.pageSize = this._config.pageSize;\n /**\n * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n *\n * Event payload is the number of the newly selected page.\n *\n * Page numbers start with `1`.\n */\n this.pageChange = new EventEmitter(true);\n /**\n * The pagination display size.\n *\n * Bootstrap currently supports small and large sizes.\n *\n * If the passed value is a string (ex. 'custom'), it will just add the `pagination-custom` css class\n */\n this.size = this._config.size;\n }\n hasPrevious() {\n return this.page > 1;\n }\n hasNext() {\n return this.page < this.pageCount;\n }\n nextDisabled() {\n return !this.hasNext() || this.disabled;\n }\n previousDisabled() {\n return !this.hasPrevious() || this.disabled;\n }\n selectPage(pageNumber) {\n this._updatePages(pageNumber);\n }\n ngOnChanges(changes) {\n this._updatePages(this.page);\n }\n isEllipsis(pageNumber) {\n return pageNumber === -1;\n }\n /**\n * Appends ellipses and first/last page number to the displayed pages\n */\n _applyEllipses(start, end) {\n if (this.ellipses) {\n if (start > 0) {\n // The first page will always be included. If the displayed range\n // starts after the third page, then add ellipsis. But if the range\n // starts on the third page, then add the second page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (start > 2) {\n this.pages.unshift(-1);\n } else if (start === 2) {\n this.pages.unshift(2);\n }\n this.pages.unshift(1);\n }\n if (end < this.pageCount) {\n // The last page will always be included. If the displayed range\n // ends before the third-last page, then add ellipsis. But if the range\n // ends on third-last page, then add the second-last page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (end < this.pageCount - 2) {\n this.pages.push(-1);\n } else if (end === this.pageCount - 2) {\n this.pages.push(this.pageCount - 1);\n }\n this.pages.push(this.pageCount);\n }\n }\n }\n /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n */\n _applyRotation() {\n let start = 0;\n let end = this.pageCount;\n let leftOffset = Math.floor(this.maxSize / 2);\n let rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n if (this.page <= leftOffset) {\n // very beginning, no rotation -> [0..maxSize]\n end = this.maxSize;\n } else if (this.pageCount - this.page < leftOffset) {\n // very end, no rotation -> [len-maxSize..len]\n start = this.pageCount - this.maxSize;\n } else {\n // rotate\n start = this.page - leftOffset - 1;\n end = this.page + rightOffset;\n }\n return [start, end];\n }\n /**\n * Paginates page numbers based on maxSize items per page.\n */\n _applyPagination() {\n let page = Math.ceil(this.page / this.maxSize) - 1;\n let start = page * this.maxSize;\n let end = start + this.maxSize;\n return [start, end];\n }\n _setPageInRange(newPageNo) {\n const prevPageNo = this.page;\n this.page = getValueInRange(newPageNo, this.pageCount, 1);\n if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n this.pageChange.emit(this.page);\n }\n }\n _updatePages(newPage) {\n this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n if (!isNumber(this.pageCount)) {\n this.pageCount = 0;\n }\n // fill-in model needed to render pages\n this.pages.length = 0;\n for (let i = 1; i <= this.pageCount; i++) {\n this.pages.push(i);\n }\n // set page within 1..max range\n this._setPageInRange(newPage);\n // apply maxSize if necessary\n if (this.maxSize > 0 && this.pageCount > this.maxSize) {\n let start = 0;\n let end = this.pageCount;\n // either paginating or rotating page numbers\n if (this.rotate) {\n [start, end] = this._applyRotation();\n } else {\n [start, end] = this._applyPagination();\n }\n this.pages = this.pages.slice(start, end);\n // adding ellipses\n this._applyEllipses(start, end);\n }\n }\n static {\n this.ɵfac = function NgbPagination_Factory(t) {\n return new (t || NgbPagination)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbPagination,\n selectors: [[\"ngb-pagination\"]],\n contentQueries: function NgbPagination_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbPaginationEllipsis, 5);\n i0.ɵɵcontentQuery(dirIndex, NgbPaginationFirst, 5);\n i0.ɵɵcontentQuery(dirIndex, NgbPaginationLast, 5);\n i0.ɵɵcontentQuery(dirIndex, NgbPaginationNext, 5);\n i0.ɵɵcontentQuery(dirIndex, NgbPaginationNumber, 5);\n i0.ɵɵcontentQuery(dirIndex, NgbPaginationPrevious, 5);\n i0.ɵɵcontentQuery(dirIndex, NgbPaginationPages, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tplEllipsis = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tplFirst = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tplLast = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tplNext = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tplNumber = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tplPrevious = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tplPages = _t.first);\n }\n },\n hostAttrs: [\"role\", \"navigation\"],\n inputs: {\n disabled: \"disabled\",\n boundaryLinks: \"boundaryLinks\",\n directionLinks: \"directionLinks\",\n ellipses: \"ellipses\",\n rotate: \"rotate\",\n collectionSize: \"collectionSize\",\n maxSize: \"maxSize\",\n page: \"page\",\n pageSize: \"pageSize\",\n size: \"size\"\n },\n outputs: {\n pageChange: \"pageChange\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 20,\n vars: 12,\n consts: () => {\n let i18n_12;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_12 = goog.getMsg(\"\\xAB\\xAB\");\n i18n_12 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_12;\n } else {\n i18n_12 = $localize`:@@ngb.pagination.first:««`;\n }\n let i18n_13;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_13 = goog.getMsg(\"\\xAB\");\n i18n_13 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_13;\n } else {\n i18n_13 = $localize`:@@ngb.pagination.previous:«`;\n }\n let i18n_14;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_14 = goog.getMsg(\"\\xBB\");\n i18n_14 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_14;\n } else {\n i18n_14 = $localize`:@@ngb.pagination.next:»`;\n }\n let i18n_15;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_15 = goog.getMsg(\"\\xBB\\xBB\");\n i18n_15 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_15;\n } else {\n i18n_15 = $localize`:@@ngb.pagination.last:»»`;\n }\n let i18n_16;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_16 = goog.getMsg(\"First\");\n i18n_16 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_16;\n } else {\n i18n_16 = $localize`:@@ngb.pagination.first-aria:First`;\n }\n let i18n_17;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_17 = goog.getMsg(\"Previous\");\n i18n_17 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_17;\n } else {\n i18n_17 = $localize`:@@ngb.pagination.previous-aria:Previous`;\n }\n let i18n_18;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_18 = goog.getMsg(\"Next\");\n i18n_18 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_18;\n } else {\n i18n_18 = $localize`:@@ngb.pagination.next-aria:Next`;\n }\n let i18n_19;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_19 = goog.getMsg(\"Last\");\n i18n_19 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_19;\n } else {\n i18n_19 = $localize`:@@ngb.pagination.last-aria:Last`;\n }\n return [[\"first\", \"\"], [\"previous\", \"\"], [\"next\", \"\"], [\"last\", \"\"], [\"ellipsis\", \"\"], [\"defaultNumber\", \"\"], [\"defaultPages\", \"\"], i18n_12, i18n_13, i18n_14, i18n_15, [1, \"page-item\", 3, \"disabled\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"aria-hidden\", \"true\"], [1, \"page-item\", 3, \"active\", \"disabled\"], [1, \"page-item\"], [\"tabindex\", \"-1\", \"aria-disabled\", \"true\", 1, \"page-link\"], [\"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_16, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_17, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_18, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_19, \"href\", \"\", 1, \"page-link\", 3, \"click\"]];\n },\n template: function NgbPagination_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgbPagination_ng_template_0_Template, 2, 0, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, NgbPagination_ng_template_2_Template, 2, 0, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor)(4, NgbPagination_ng_template_4_Template, 2, 0, \"ng-template\", null, 2, i0.ɵɵtemplateRefExtractor)(6, NgbPagination_ng_template_6_Template, 2, 0, \"ng-template\", null, 3, i0.ɵɵtemplateRefExtractor)(8, NgbPagination_ng_template_8_Template, 1, 0, \"ng-template\", null, 4, i0.ɵɵtemplateRefExtractor)(10, NgbPagination_ng_template_10_Template, 1, 1, \"ng-template\", null, 5, i0.ɵɵtemplateRefExtractor)(12, NgbPagination_ng_template_12_Template, 2, 0, \"ng-template\", null, 6, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵelementStart(14, \"ul\");\n i0.ɵɵtemplate(15, NgbPagination_Conditional_15_Template, 3, 9, \"li\", 11)(16, NgbPagination_Conditional_16_Template, 3, 8, \"li\", 11)(17, NgbPagination_ng_template_17_Template, 0, 0, \"ng-template\", 12)(18, NgbPagination_Conditional_18_Template, 3, 9, \"li\", 11)(19, NgbPagination_Conditional_19_Template, 3, 9, \"li\", 11);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const defaultPages_r19 = i0.ɵɵreference(13);\n i0.ɵɵadvance(14);\n i0.ɵɵclassMap(\"pagination\" + (ctx.size ? \" pagination-\" + ctx.size : \"\"));\n i0.ɵɵadvance();\n i0.ɵɵconditional(15, ctx.boundaryLinks ? 15 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(16, ctx.directionLinks ? 16 : -1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", (ctx.tplPages == null ? null : ctx.tplPages.templateRef) || defaultPages_r19)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction3(8, _c9, ctx.page, ctx.pages, ctx.disabled));\n i0.ɵɵadvance();\n i0.ɵɵconditional(18, ctx.directionLinks ? 18 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(19, ctx.boundaryLinks ? 19 : -1);\n }\n },\n dependencies: [NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbPagination;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst NGB_PAGINATION_DIRECTIVES = [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPaginationPages];\nlet NgbPaginationModule = /*#__PURE__*/(() => {\n class NgbPaginationModule {\n static {\n this.ɵfac = function NgbPaginationModule_Factory(t) {\n return new (t || NgbPaginationModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbPaginationModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbPaginationModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst ALIASES = {\n hover: ['mouseenter', 'mouseleave'],\n focus: ['focusin', 'focusout']\n};\nfunction parseTriggers(triggers) {\n const trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n const parsedTriggers = trimmedTriggers.split(/\\s+/).map(trigger => trigger.split(':')).map(triggerPair => ALIASES[triggerPair[0]] || triggerPair);\n const manualTriggers = parsedTriggers.filter(triggerPair => triggerPair.includes('manual'));\n if (manualTriggers.length > 1) {\n throw `Triggers parse error: only one manual trigger is allowed`;\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw `Triggers parse error: manual trigger can't be mixed with other triggers`;\n }\n return manualTriggers.length ? [] : parsedTriggers;\n}\nfunction listenToTriggers(element, triggers, isOpenedFn, openFn, closeFn, openDelayMs = 0, closeDelayMs = 0) {\n const parsedTriggers = parseTriggers(triggers);\n if (parsedTriggers.length === 0) {\n return () => {};\n }\n const activeOpenTriggers = new Set();\n const cleanupFns = [];\n let timeout;\n function addEventListener(name, listener) {\n element.addEventListener(name, listener);\n cleanupFns.push(() => element.removeEventListener(name, listener));\n }\n function withDelay(fn, delayMs) {\n clearTimeout(timeout);\n if (delayMs > 0) {\n timeout = setTimeout(fn, delayMs);\n } else {\n fn();\n }\n }\n for (const [openTrigger, closeTrigger] of parsedTriggers) {\n if (!closeTrigger) {\n addEventListener(openTrigger, () => isOpenedFn() ? withDelay(closeFn, closeDelayMs) : withDelay(openFn, openDelayMs));\n } else {\n addEventListener(openTrigger, () => {\n activeOpenTriggers.add(openTrigger);\n withDelay(() => activeOpenTriggers.size > 0 && openFn(), openDelayMs);\n });\n addEventListener(closeTrigger, () => {\n activeOpenTriggers.delete(openTrigger);\n withDelay(() => activeOpenTriggers.size === 0 && closeFn(), closeDelayMs);\n });\n }\n }\n return () => cleanupFns.forEach(cleanupFn => cleanupFn());\n}\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 */\nlet NgbPopoverConfig = /*#__PURE__*/(() => {\n class NgbPopoverConfig {\n constructor() {\n this._ngbConfig = inject(NgbConfig);\n this.autoClose = true;\n this.placement = 'auto';\n this.popperOptions = options => options;\n this.triggers = 'click';\n this.disablePopover = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n get animation() {\n return this._animation ?? this._ngbConfig.animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n static {\n this.ɵfac = function NgbPopoverConfig_Factory(t) {\n return new (t || NgbPopoverConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbPopoverConfig,\n factory: NgbPopoverConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbPopoverConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet nextId$1 = 0;\nlet NgbPopoverWindow = /*#__PURE__*/(() => {\n class NgbPopoverWindow {\n isTitleTemplate() {\n return this.title instanceof TemplateRef;\n }\n static {\n this.ɵfac = function NgbPopoverWindow_Factory(t) {\n return new (t || NgbPopoverWindow)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbPopoverWindow,\n selectors: [[\"ngb-popover-window\"]],\n hostAttrs: [\"role\", \"tooltip\", 2, \"position\", \"absolute\"],\n hostVars: 5,\n hostBindings: function NgbPopoverWindow_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.id);\n i0.ɵɵclassMap(\"popover\" + (ctx.popoverClass ? \" \" + ctx.popoverClass : \"\"));\n i0.ɵɵclassProp(\"fade\", ctx.animation);\n }\n },\n inputs: {\n animation: \"animation\",\n title: \"title\",\n id: \"id\",\n popoverClass: \"popoverClass\",\n context: \"context\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 4,\n vars: 1,\n consts: [[\"simpleTitle\", \"\"], [\"data-popper-arrow\", \"\", 1, \"popover-arrow\"], [1, \"popover-header\"], [1, \"popover-body\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function NgbPopoverWindow_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelement(0, \"div\", 1);\n i0.ɵɵtemplate(1, NgbPopoverWindow_Conditional_1_Template, 4, 2, \"h3\", 2);\n i0.ɵɵelementStart(2, \"div\", 3);\n i0.ɵɵprojection(3);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵconditional(1, ctx.title ? 1 : -1);\n }\n },\n dependencies: [NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbPopoverWindow;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A lightweight and extensible directive for fancy popover creation.\n */\nlet NgbPopover = /*#__PURE__*/(() => {\n class NgbPopover {\n constructor() {\n this._config = inject(NgbPopoverConfig);\n /**\n * If `true`, popover opening and closing will be animated.\n *\n * @since 8.0.0\n */\n this.animation = this._config.animation;\n /**\n * Indicates whether the popover should be closed on `Escape` key and inside/outside clicks:\n *\n * * `true` - closes on both outside and inside clicks as well as `Escape` presses\n * * `false` - disables the autoClose feature (NB: triggers still apply)\n * * `\"inside\"` - closes on inside clicks as well as Escape presses\n * * `\"outside\"` - closes on outside clicks (sometimes also achievable through triggers)\n * as well as `Escape` presses\n *\n * @since 3.0.0\n */\n this.autoClose = this._config.autoClose;\n /**\n * The preferred placement of the popover, among the [possible values](#/guides/positioning#api).\n *\n * The default order of preference is `\"auto\"`.\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = this._config.placement;\n /**\n * Allows to change default Popper options when positioning the popover.\n * Receives current popper options and returns modified ones.\n *\n * @since 13.1.0\n */\n this.popperOptions = this._config.popperOptions;\n /**\n * Specifies events that should trigger the tooltip.\n *\n * Supports a space separated list of event names.\n * For more details see the [triggers demo](#/components/popover/examples#triggers).\n */\n this.triggers = this._config.triggers;\n /**\n * A selector specifying the element the popover should be appended to.\n *\n * Currently only supports `body`.\n */\n this.container = this._config.container;\n /**\n * If `true`, popover is disabled and won't be displayed.\n *\n * @since 1.1.0\n */\n this.disablePopover = this._config.disablePopover;\n /**\n * An optional class applied to the popover window element.\n *\n * @since 2.2.0\n */\n this.popoverClass = this._config.popoverClass;\n /**\n * The opening delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n *\n * @since 4.1.0\n */\n this.openDelay = this._config.openDelay;\n /**\n * The closing delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n *\n * @since 4.1.0\n */\n this.closeDelay = this._config.closeDelay;\n /**\n * An event emitted when the popover opening animation has finished. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover closing animation has finished. Contains no payload.\n *\n * At this point popover is not in the DOM anymore.\n */\n this.hidden = new EventEmitter();\n this._nativeElement = inject(ElementRef).nativeElement;\n this._ngZone = inject(NgZone);\n this._document = inject(DOCUMENT);\n this._changeDetector = inject(ChangeDetectorRef);\n this._ngbPopoverWindowId = `ngb-popover-${nextId$1++}`;\n this._popupService = new PopupService(NgbPopoverWindow);\n this._windowRef = null;\n this._positioning = ngbPositioning();\n }\n /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n */\n open(context) {\n if (!this._windowRef && !this._isDisabled()) {\n // this type assertion is safe because otherwise _isDisabled would return true\n const {\n windowRef,\n transition$\n } = this._popupService.open(this.ngbPopover, context ?? this.popoverContext, this.animation);\n this._windowRef = windowRef;\n this._windowRef.setInput('animation', this.animation);\n this._windowRef.setInput('title', this.popoverTitle);\n this._windowRef.setInput('context', context ?? this.popoverContext);\n this._windowRef.setInput('popoverClass', this.popoverClass);\n this._windowRef.setInput('id', this._ngbPopoverWindowId);\n this._getPositionTargetElement().setAttribute('aria-describedby', this._ngbPopoverWindowId);\n if (this.container === 'body') {\n this._document.body.appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening popover from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because popover won't work inside the OnPush component.\n // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the popover from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n this._positioning.createPopper({\n hostElement: this._getPositionTargetElement(),\n targetElement: this._windowRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n baseClass: 'bs-popover',\n updatePopperOptions: options => this.popperOptions(addPopperOffset([0, 8])(options))\n });\n Promise.resolve().then(() => {\n // This update is required for correct arrow placement\n this._positioning.update();\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n });\n });\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\n transition$.subscribe(() => this.shown.emit());\n }\n }\n /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n close(animation = this.animation) {\n if (this._windowRef) {\n this._getPositionTargetElement().removeAttribute('aria-describedby');\n this._popupService.close(animation).subscribe(() => {\n this._windowRef = null;\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this.hidden.emit();\n this._changeDetector.markForCheck();\n });\n }\n }\n /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n } else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n */\n isOpen() {\n return this._windowRef != null;\n }\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n ngOnChanges({\n ngbPopover,\n popoverTitle,\n disablePopover,\n popoverClass\n }) {\n if (popoverClass && this.isOpen()) {\n this._windowRef.setInput('popoverClass', popoverClass.currentValue);\n }\n // close popover if title and content become empty, or disablePopover set to true\n if ((ngbPopover || popoverTitle || disablePopover) && this._isDisabled()) {\n this.close();\n }\n }\n ngOnDestroy() {\n this.close(false);\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n this._unregisterListenersFn?.();\n }\n _isDisabled() {\n return this.disablePopover ? true : !this.ngbPopover && !this.popoverTitle;\n }\n _getPositionTargetElement() {\n return (isString(this.positionTarget) ? this._document.querySelector(this.positionTarget) : this.positionTarget) || this._nativeElement;\n }\n static {\n this.ɵfac = function NgbPopover_Factory(t) {\n return new (t || NgbPopover)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbPopover,\n selectors: [[\"\", \"ngbPopover\", \"\"]],\n inputs: {\n animation: \"animation\",\n autoClose: \"autoClose\",\n ngbPopover: \"ngbPopover\",\n popoverTitle: \"popoverTitle\",\n placement: \"placement\",\n popperOptions: \"popperOptions\",\n triggers: \"triggers\",\n positionTarget: \"positionTarget\",\n container: \"container\",\n disablePopover: \"disablePopover\",\n popoverClass: \"popoverClass\",\n popoverContext: \"popoverContext\",\n openDelay: \"openDelay\",\n closeDelay: \"closeDelay\"\n },\n outputs: {\n shown: \"shown\",\n hidden: \"hidden\"\n },\n exportAs: [\"ngbPopover\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return NgbPopover;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbPopoverModule = /*#__PURE__*/(() => {\n class NgbPopoverModule {\n static {\n this.ɵfac = function NgbPopoverModule_Factory(t) {\n return new (t || NgbPopoverModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbPopoverModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbPopoverModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbProgressbarConfig = /*#__PURE__*/(() => {\n class NgbProgressbarConfig {\n constructor() {\n this.max = 100;\n this.animated = false;\n this.ariaLabel = 'progress bar';\n this.striped = false;\n this.showValue = false;\n }\n static {\n this.ɵfac = function NgbProgressbarConfig_Factory(t) {\n return new (t || NgbProgressbarConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbProgressbarConfig,\n factory: NgbProgressbarConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbProgressbarConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive that provides feedback on the progress of a workflow or an action.\n */\nlet NgbProgressbar = /*#__PURE__*/(() => {\n class NgbProgressbar {\n /**\n * The maximal value to be displayed in the progress bar.\n *\n * Should be a positive number. Will default to 100 otherwise.\n */\n set max(max) {\n this._max = !isNumber(max) || max <= 0 ? 100 : max;\n }\n get max() {\n return this._max;\n }\n constructor() {\n this._config = inject(NgbProgressbarConfig);\n this.stacked = inject(NgbProgressbarStacked, {\n optional: true\n });\n /**\n * If `true`, the stripes on the progress bar are animated.\n *\n * Takes effect only for browsers supporting CSS3 animations, and if `striped` is `true`.\n */\n this.animated = this._config.animated;\n /**\n * The accessible progress bar name.\n *\n * @since 13.1.0\n */\n this.ariaLabel = this._config.ariaLabel;\n /**\n * If `true`, the progress bars will be displayed as striped.\n */\n this.striped = this._config.striped;\n /**\n * If `true`, the current percentage will be shown in the `xx%` format.\n */\n this.showValue = this._config.showValue;\n /**\n * Optional text variant type of the progress bar.\n *\n * Supports types based on Bootstrap background color variants, like:\n * `\"success\"`, `\"info\"`, `\"warning\"`, `\"danger\"`, `\"primary\"`, `\"secondary\"`, `\"dark\"` and so on.\n *\n * @since 5.2.0\n */\n this.textType = this._config.textType;\n /**\n * The type of the progress bar.\n *\n * Supports types based on Bootstrap background color variants, like:\n * `\"success\"`, `\"info\"`, `\"warning\"`, `\"danger\"`, `\"primary\"`, `\"secondary\"`, `\"dark\"` and so on.\n */\n this.type = this._config.type;\n /**\n * The current value for the progress bar.\n *\n * Should be in the `[0, max]` range.\n */\n this.value = 0;\n /**\n * The height of the progress bar.\n *\n * Accepts any valid CSS height values, ex. `\"2rem\"`\n */\n this.height = this._config.height;\n this.max = this._config.max;\n }\n getValue() {\n return getValueInRange(this.value, this.max);\n }\n getPercentValue() {\n return 100 * this.getValue() / this.max;\n }\n static {\n this.ɵfac = function NgbProgressbar_Factory(t) {\n return new (t || NgbProgressbar)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbProgressbar,\n selectors: [[\"ngb-progressbar\"]],\n hostAttrs: [\"role\", \"progressbar\", \"aria-valuemin\", \"0\", 1, \"progress\"],\n hostVars: 7,\n hostBindings: function NgbProgressbar_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-valuenow\", ctx.getValue())(\"aria-valuemax\", ctx.max)(\"aria-label\", ctx.ariaLabel);\n i0.ɵɵstyleProp(\"width\", ctx.stacked ? ctx.getPercentValue() : null, \"%\")(\"height\", ctx.height);\n }\n },\n inputs: {\n max: \"max\",\n animated: \"animated\",\n ariaLabel: \"ariaLabel\",\n striped: \"striped\",\n showValue: \"showValue\",\n textType: \"textType\",\n type: \"type\",\n value: \"value\",\n height: \"height\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 3,\n vars: 11,\n consts: () => {\n let i18n_20;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_20 = goog.getMsg(\"{$interpolation}\", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ getValue() / max | percent }}\"\n }\n });\n i18n_20 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_20;\n } else {\n i18n_20 = $localize`:@@ngb.progressbar.value:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n }\n return [i18n_20];\n },\n template: function NgbProgressbar_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtemplate(1, NgbProgressbar_Conditional_1_Template, 3, 3, \"span\");\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵclassMapInterpolate2(\"progress-bar\", ctx.type ? ctx.textType ? \" bg-\" + ctx.type : \" text-bg-\" + ctx.type : \"\", \"\", ctx.textType ? \" text-\" + ctx.textType : \"\", \"\");\n i0.ɵɵstyleProp(\"width\", !ctx.stacked ? ctx.getPercentValue() : null, \"%\");\n i0.ɵɵclassProp(\"progress-bar-animated\", ctx.animated)(\"progress-bar-striped\", ctx.striped);\n i0.ɵɵadvance();\n i0.ɵɵconditional(1, ctx.showValue ? 1 : -1);\n }\n },\n dependencies: [PercentPipe],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbProgressbar;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive that allow to stack progress bars.\n *\n * @since 16.0.0\n */\nlet NgbProgressbarStacked = /*#__PURE__*/(() => {\n class NgbProgressbarStacked {\n static {\n this.ɵfac = function NgbProgressbarStacked_Factory(t) {\n return new (t || NgbProgressbarStacked)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbProgressbarStacked,\n selectors: [[\"ngb-progressbar-stacked\"]],\n hostAttrs: [1, \"progress-stacked\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NgbProgressbarStacked_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbProgressbarStacked;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbProgressbarModule = /*#__PURE__*/(() => {\n class NgbProgressbarModule {\n static {\n this.ɵfac = function NgbProgressbarModule_Factory(t) {\n return new (t || NgbProgressbarModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbProgressbarModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbProgressbarModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbRatingConfig = /*#__PURE__*/(() => {\n class NgbRatingConfig {\n constructor() {\n this.max = 10;\n this.readonly = false;\n this.resettable = false;\n this.tabindex = 0;\n }\n static {\n this.ɵfac = function NgbRatingConfig_Factory(t) {\n return new (t || NgbRatingConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbRatingConfig,\n factory: NgbRatingConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbRatingConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A directive that helps visualising and interacting with a star rating bar.\n */\nlet NgbRating = /*#__PURE__*/(() => {\n class NgbRating {\n constructor() {\n this.contexts = [];\n this._config = inject(NgbRatingConfig);\n this._changeDetectorRef = inject(ChangeDetectorRef);\n /**\n * If `true`, the rating can't be changed or focused.\n */\n this.disabled = false;\n /**\n * The maximal rating that can be given.\n */\n this.max = this._config.max;\n /**\n * If `true`, the rating can't be changed.\n */\n this.readonly = this._config.readonly;\n /**\n * If `true`, the rating can be reset to `0` by mouse clicking currently set rating.\n */\n this.resettable = this._config.resettable;\n /**\n * Allows setting a custom rating tabindex.\n * If the component is disabled, `tabindex` will still be set to `-1`.\n *\n * @since 13.1.0\n */\n this.tabindex = this._config.tabindex;\n /**\n * An event emitted when the user is hovering over a given rating.\n *\n * Event payload equals to the rating being hovered over.\n */\n this.hover = new EventEmitter();\n /**\n * An event emitted when the user stops hovering over a given rating.\n *\n * Event payload equals to the rating of the last item being hovered over.\n */\n this.leave = new EventEmitter();\n /**\n * An event emitted when the rating is changed.\n *\n * Event payload equals to the newly selected rating.\n */\n this.rateChange = new EventEmitter(true);\n this.onChange = _ => {};\n this.onTouched = () => {};\n }\n /**\n * Allows to provide a function to set a custom aria-valuetext\n *\n * @since 14.1.0\n */\n ariaValueText(current, max) {\n return `${current} out of ${max}`;\n }\n isInteractive() {\n return !this.readonly && !this.disabled;\n }\n enter(value) {\n if (this.isInteractive()) {\n this._updateState(value);\n }\n this.hover.emit(value);\n }\n handleBlur() {\n this.onTouched();\n }\n handleClick(value) {\n if (this.isInteractive()) {\n this.update(this.resettable && this.rate === value ? 0 : value);\n }\n }\n handleKeyDown(event) {\n /* eslint-disable-next-line deprecation/deprecation */\n switch (event.which) {\n case Key.ArrowDown:\n case Key.ArrowLeft:\n this.update(this.rate - 1);\n break;\n case Key.ArrowUp:\n case Key.ArrowRight:\n this.update(this.rate + 1);\n break;\n case Key.Home:\n this.update(0);\n break;\n case Key.End:\n this.update(this.max);\n break;\n default:\n return;\n }\n // note 'return' in default case\n event.preventDefault();\n }\n ngOnChanges(changes) {\n if (changes['rate']) {\n this.update(this.rate);\n }\n if (changes['max']) {\n this._updateMax();\n }\n }\n ngOnInit() {\n this._setupContexts();\n this._updateState(this.rate);\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n reset() {\n this.leave.emit(this.nextRate);\n this._updateState(this.rate);\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n update(value, internalChange = true) {\n const newRate = getValueInRange(value, this.max, 0);\n if (this.isInteractive() && this.rate !== newRate) {\n this.rate = newRate;\n this.rateChange.emit(this.rate);\n }\n if (internalChange) {\n this.onChange(this.rate);\n this.onTouched();\n }\n this._updateState(this.rate);\n }\n writeValue(value) {\n this.update(value, false);\n this._changeDetectorRef.markForCheck();\n }\n _updateState(nextValue) {\n this.nextRate = nextValue;\n this.contexts.forEach((context, index) => context.fill = Math.round(getValueInRange(nextValue - index, 1, 0) * 100));\n }\n _updateMax() {\n if (this.max > 0) {\n this._setupContexts();\n this.update(this.rate);\n }\n }\n _setupContexts() {\n this.contexts = Array.from({\n length: this.max\n }, (v, k) => ({\n fill: 0,\n index: k\n }));\n }\n static {\n this.ɵfac = function NgbRating_Factory(t) {\n return new (t || NgbRating)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbRating,\n selectors: [[\"ngb-rating\"]],\n contentQueries: function NgbRating_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, TemplateRef, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.starTemplateFromContent = _t.first);\n }\n },\n hostAttrs: [\"role\", \"slider\", \"aria-valuemin\", \"0\", 1, \"d-inline-flex\"],\n hostVars: 6,\n hostBindings: function NgbRating_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"blur\", function NgbRating_blur_HostBindingHandler() {\n return ctx.handleBlur();\n })(\"keydown\", function NgbRating_keydown_HostBindingHandler($event) {\n return ctx.handleKeyDown($event);\n })(\"mouseleave\", function NgbRating_mouseleave_HostBindingHandler() {\n return ctx.reset();\n });\n }\n if (rf & 2) {\n i0.ɵɵhostProperty(\"tabindex\", ctx.disabled ? -1 : ctx.tabindex);\n i0.ɵɵattribute(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.nextRate)(\"aria-valuetext\", ctx.ariaValueText(ctx.nextRate, ctx.max))(\"aria-readonly\", ctx.readonly && !ctx.disabled ? true : null)(\"aria-disabled\", ctx.disabled ? true : null);\n }\n },\n inputs: {\n disabled: \"disabled\",\n max: \"max\",\n rate: \"rate\",\n readonly: \"readonly\",\n resettable: \"resettable\",\n starTemplate: \"starTemplate\",\n tabindex: \"tabindex\",\n ariaValueText: \"ariaValueText\"\n },\n outputs: {\n hover: \"hover\",\n leave: \"leave\",\n rateChange: \"rateChange\"\n },\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbRating),\n multi: true\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 4,\n vars: 0,\n consts: [[\"t\", \"\"], [1, \"visually-hidden\"], [3, \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function NgbRating_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgbRating_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵrepeaterCreate(2, NgbRating_For_3_Template, 4, 5, null, null, i0.ɵɵrepeaterTrackByIdentity);\n }\n if (rf & 2) {\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(ctx.contexts);\n }\n },\n dependencies: [NgTemplateOutlet],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbRating;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbRatingModule = /*#__PURE__*/(() => {\n class NgbRatingModule {\n static {\n this.ɵfac = function NgbRatingModule_Factory(t) {\n return new (t || NgbRatingModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbRatingModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbRatingModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction toFragmentElement(container, id) {\n if (!container || id == null) {\n return null;\n }\n return isString(id) ? container.querySelector(`#${CSS.escape(id)}`) : id;\n}\nfunction getOrderedFragments(container, fragments) {\n const selector = [...fragments].map(({\n id\n }) => `#${CSS.escape(id)}`).join(',');\n return Array.from(container.querySelectorAll(selector));\n}\nconst defaultProcessChanges = (state, changeActive, ctx) => {\n const {\n rootElement,\n fragments,\n scrollSpy,\n options,\n entries\n } = state;\n const orderedFragments = getOrderedFragments(rootElement, fragments);\n if (!ctx.initialized) {\n ctx.initialized = true;\n ctx.gapFragment = null;\n ctx.visibleFragments = new Set();\n // special case when one of the fragments was pre-selected\n const preSelectedFragment = toFragmentElement(rootElement, options?.initialFragment);\n if (preSelectedFragment) {\n scrollSpy.scrollTo(preSelectedFragment);\n return;\n }\n }\n for (const entry of entries) {\n const {\n isIntersecting,\n target: fragment\n } = entry;\n // 1. an entry became visible\n if (isIntersecting) {\n // if we were in-between two elements, we have to clear it up\n if (ctx.gapFragment) {\n ctx.visibleFragments.delete(ctx.gapFragment);\n ctx.gapFragment = null;\n }\n ctx.visibleFragments.add(fragment);\n }\n // 2. an entry became invisible\n else {\n ctx.visibleFragments.delete(fragment);\n // nothing is visible anymore, but something just was actually\n if (ctx.visibleFragments.size === 0 && scrollSpy.active !== '') {\n // 2.1 scrolling down - keeping the same element\n if (entry.boundingClientRect.top < entry.rootBounds.top) {\n ctx.gapFragment = fragment;\n ctx.visibleFragments.add(ctx.gapFragment);\n }\n // 2.2 scrolling up - getting the previous element\n else {\n // scrolling up and no more fragments above\n if (fragment === orderedFragments[0]) {\n ctx.gapFragment = null;\n ctx.visibleFragments.clear();\n changeActive('');\n return;\n }\n // getting previous fragment\n else {\n const fragmentIndex = orderedFragments.indexOf(fragment);\n ctx.gapFragment = orderedFragments[fragmentIndex - 1] || null;\n if (ctx.gapFragment) {\n ctx.visibleFragments.add(ctx.gapFragment);\n }\n }\n }\n }\n }\n }\n // getting the first visible element in the DOM order of the fragments\n for (const fragment of orderedFragments) {\n if (ctx.visibleFragments.has(fragment)) {\n changeActive(fragment.id);\n break;\n }\n }\n};\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 */\nlet NgbScrollSpyConfig = /*#__PURE__*/(() => {\n class NgbScrollSpyConfig {\n constructor() {\n this.scrollBehavior = 'smooth';\n this.processChanges = defaultProcessChanges;\n }\n static {\n this.ɵfac = function NgbScrollSpyConfig_Factory(t) {\n return new (t || NgbScrollSpyConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbScrollSpyConfig,\n factory: NgbScrollSpyConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbScrollSpyConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst MATCH_THRESHOLD = 3;\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 */\nlet NgbScrollSpyService = /*#__PURE__*/(() => {\n class NgbScrollSpyService {\n constructor() {\n this._observer = null;\n this._containerElement = null;\n this._fragments = new Set();\n this._preRegisteredFragments = new Set();\n this._active$ = new Subject();\n this._distinctActive$ = this._active$.pipe(distinctUntilChanged());\n this._active = '';\n this._config = inject(NgbScrollSpyConfig);\n this._document = inject(DOCUMENT);\n this._platformId = inject(PLATFORM_ID);\n this._scrollBehavior = this._config.scrollBehavior;\n this._diChangeDetectorRef = inject(ChangeDetectorRef, {\n optional: true\n });\n this._changeDetectorRef = this._diChangeDetectorRef;\n this._zone = inject(NgZone);\n this._distinctActive$.pipe(takeUntilDestroyed()).subscribe(active => {\n this._active = active;\n this._changeDetectorRef?.markForCheck();\n });\n }\n /**\n * Getter for the currently active fragment id. Returns empty string if none.\n */\n get active() {\n return this._active;\n }\n /**\n * An observable emitting the currently active fragment. Emits empty string if none.\n */\n get active$() {\n return this._distinctActive$;\n }\n /**\n * Starts the scrollspy service and observes specified fragments.\n *\n * You can specify a list of options to pass, like the root element, initial fragment, scroll behavior, etc.\n * See the [`NgbScrollSpyOptions`](#/components/scrollspy/api#NgbScrollSpyOptions) interface for more details.\n */\n start(options) {\n if (isPlatformBrowser(this._platformId)) {\n this._cleanup();\n const {\n root,\n rootMargin,\n scrollBehavior,\n threshold,\n fragments,\n changeDetectorRef,\n processChanges\n } = {\n ...options\n };\n this._containerElement = root ?? this._document.documentElement;\n this._changeDetectorRef = changeDetectorRef ?? this._diChangeDetectorRef;\n this._scrollBehavior = scrollBehavior ?? this._config.scrollBehavior;\n const processChangesFn = processChanges ?? this._config.processChanges;\n const context = {};\n this._observer = new IntersectionObserver(entries => processChangesFn({\n entries,\n rootElement: this._containerElement,\n fragments: this._fragments,\n scrollSpy: this,\n options: {\n ...options\n }\n }, active => this._active$.next(active), context), {\n root: root ?? this._document,\n ...(rootMargin && {\n rootMargin\n }),\n ...(threshold && {\n threshold\n })\n });\n // merging fragments added before starting and the ones passed as options\n for (const element of [...this._preRegisteredFragments, ...(fragments ?? [])]) {\n this.observe(element);\n }\n this._preRegisteredFragments.clear();\n }\n }\n /**\n * Stops the service and unobserves all fragments.\n */\n stop() {\n this._cleanup();\n this._active$.next('');\n }\n /**\n * Scrolls to a fragment, it must be known to the service and contained in the root element.\n * An id or an element reference can be passed.\n *\n * [`NgbScrollToOptions`](#/components/scrollspy/api#NgbScrollToOptions) can be passed.\n */\n scrollTo(fragment, options) {\n const {\n behavior\n } = {\n behavior: this._scrollBehavior,\n ...options\n };\n if (this._containerElement) {\n const fragmentElement = toFragmentElement(this._containerElement, fragment);\n if (fragmentElement) {\n const heightPx = fragmentElement.offsetTop - this._containerElement.offsetTop;\n this._containerElement.scrollTo({\n top: heightPx,\n behavior\n });\n let lastOffset = this._containerElement.scrollTop;\n let matchCounter = 0;\n // we should update the active section only after scrolling is finished\n // and there is no clean way to do it at the moment\n const containerElement = this._containerElement;\n this._zone.runOutsideAngular(() => {\n const updateActiveWhenScrollingIsFinished = () => {\n const sameOffsetAsLastTime = lastOffset === containerElement.scrollTop;\n if (sameOffsetAsLastTime) {\n matchCounter++;\n } else {\n matchCounter = 0;\n }\n if (!sameOffsetAsLastTime || sameOffsetAsLastTime && matchCounter < MATCH_THRESHOLD) {\n lastOffset = containerElement.scrollTop;\n requestAnimationFrame(updateActiveWhenScrollingIsFinished);\n } else {\n this._zone.run(() => this._active$.next(fragmentElement.id));\n }\n };\n requestAnimationFrame(updateActiveWhenScrollingIsFinished);\n });\n }\n }\n }\n /**\n * Adds a fragment to observe. It must be contained in the root element.\n * An id or an element reference can be passed.\n */\n observe(fragment) {\n if (!this._observer) {\n this._preRegisteredFragments.add(fragment);\n return;\n }\n const fragmentElement = toFragmentElement(this._containerElement, fragment);\n if (fragmentElement && !this._fragments.has(fragmentElement)) {\n this._fragments.add(fragmentElement);\n this._observer.observe(fragmentElement);\n }\n }\n /**\n * Unobserves a fragment.\n * An id or an element reference can be passed.\n */\n unobserve(fragment) {\n if (!this._observer) {\n this._preRegisteredFragments.delete(fragment);\n return;\n }\n const fragmentElement = toFragmentElement(this._containerElement, fragment);\n if (fragmentElement) {\n this._fragments.delete(fragmentElement);\n // we're removing and re-adding all current fragments to recompute active one\n this._observer.disconnect();\n for (const fragment of this._fragments) {\n this._observer.observe(fragment);\n }\n }\n }\n ngOnDestroy() {\n this._cleanup();\n }\n _cleanup() {\n this._fragments.clear();\n this._observer?.disconnect();\n this._changeDetectorRef = this._diChangeDetectorRef;\n this._scrollBehavior = this._config.scrollBehavior;\n this._observer = null;\n this._containerElement = null;\n }\n static {\n this.ɵfac = function NgbScrollSpyService_Factory(t) {\n return new (t || NgbScrollSpyService)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbScrollSpyService,\n factory: NgbScrollSpyService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbScrollSpyService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbScrollSpyItem = /*#__PURE__*/(() => {\n class NgbScrollSpyItem {\n constructor() {\n this._changeDetector = inject(ChangeDetectorRef);\n this._scrollSpyMenu = inject(NgbScrollSpyMenu, {\n optional: true\n });\n this._scrollSpyAPI = this._scrollSpyMenu ?? inject(NgbScrollSpyService);\n this._destroyRef = inject(DestroyRef);\n this._isActive = false;\n }\n /**\n * References the scroll spy directive, the id of the associated fragment and the parent menu item.\n *\n * Can be used like:\n * - `ngbScrollSpyItem=\"fragmentId\"`\n * - `[ngbScrollSpyItem]=\"scrollSpy\" fragment=\"fragmentId\"\n * - `[ngbScrollSpyItem]=\"[scrollSpy, 'fragmentId']\"` parent=\"parentId\"`\n * - `[ngbScrollSpyItem]=\"[scrollSpy, 'fragmentId', 'parentId']\"`\n *\n * As well as together with `[fragment]` and `[parent]` inputs.\n */\n set data(data) {\n if (Array.isArray(data)) {\n this._scrollSpyAPI = data[0];\n this.fragment = data[1];\n this.parent ??= data[2];\n } else if (data instanceof NgbScrollSpy) {\n this._scrollSpyAPI = data;\n } else if (isString(data)) {\n this.fragment = data;\n }\n }\n ngOnInit() {\n // if it is not a part of a bigger menu, it should handle activation itself\n if (!this._scrollSpyMenu) {\n this._scrollSpyAPI.active$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(active => {\n if (active === this.fragment) {\n this._activate();\n } else {\n this._deactivate();\n }\n this._changeDetector.markForCheck();\n });\n }\n }\n /**\n * @internal\n */\n _activate() {\n this._isActive = true;\n if (this._scrollSpyMenu) {\n this._scrollSpyMenu.getItem(this.parent ?? '')?._activate();\n }\n }\n /**\n * @internal\n */\n _deactivate() {\n this._isActive = false;\n if (this._scrollSpyMenu) {\n this._scrollSpyMenu.getItem(this.parent ?? '')?._deactivate();\n }\n }\n /**\n * Returns `true`, if the associated fragment is active.\n */\n isActive() {\n return this._isActive;\n }\n /**\n * Scrolls to the associated fragment.\n */\n scrollTo(options) {\n this._scrollSpyAPI.scrollTo(this.fragment, options);\n }\n static {\n this.ɵfac = function NgbScrollSpyItem_Factory(t) {\n return new (t || NgbScrollSpyItem)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbScrollSpyItem,\n selectors: [[\"\", \"ngbScrollSpyItem\", \"\"]],\n hostVars: 2,\n hostBindings: function NgbScrollSpyItem_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function NgbScrollSpyItem_click_HostBindingHandler() {\n return ctx.scrollTo();\n });\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"active\", ctx.isActive());\n }\n },\n inputs: {\n data: [i0.ɵɵInputFlags.None, \"ngbScrollSpyItem\", \"data\"],\n fragment: \"fragment\",\n parent: \"parent\"\n },\n exportAs: [\"ngbScrollSpyItem\"],\n standalone: true\n });\n }\n }\n return NgbScrollSpyItem;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbScrollSpyMenu = /*#__PURE__*/(() => {\n class NgbScrollSpyMenu {\n constructor() {\n this._scrollSpyRef = inject(NgbScrollSpyService);\n this._destroyRef = inject(DestroyRef);\n this._map = new Map();\n this._lastActiveItem = null;\n }\n set scrollSpy(scrollSpy) {\n this._scrollSpyRef = scrollSpy;\n }\n get active() {\n return this._scrollSpyRef.active;\n }\n get active$() {\n return this._scrollSpyRef.active$;\n }\n scrollTo(fragment, options) {\n this._scrollSpyRef.scrollTo(fragment, options);\n }\n getItem(id) {\n return this._map.get(id);\n }\n ngAfterViewInit() {\n this._items.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this._rebuildMap());\n this._rebuildMap();\n this._scrollSpyRef.active$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(activeId => {\n this._lastActiveItem?._deactivate();\n const item = this._map.get(activeId);\n if (item) {\n item._activate();\n this._lastActiveItem = item;\n }\n });\n }\n _rebuildMap() {\n this._map.clear();\n for (let item of this._items) {\n this._map.set(item.fragment, item);\n }\n }\n static {\n this.ɵfac = function NgbScrollSpyMenu_Factory(t) {\n return new (t || NgbScrollSpyMenu)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbScrollSpyMenu,\n selectors: [[\"\", \"ngbScrollSpyMenu\", \"\"]],\n contentQueries: function NgbScrollSpyMenu_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbScrollSpyItem, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._items = _t);\n }\n },\n inputs: {\n scrollSpy: [i0.ɵɵInputFlags.None, \"ngbScrollSpyMenu\", \"scrollSpy\"]\n },\n standalone: true\n });\n }\n }\n return NgbScrollSpyMenu;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbScrollSpy = /*#__PURE__*/(() => {\n class NgbScrollSpy {\n constructor() {\n this._initialFragment = null;\n this._service = inject(NgbScrollSpyService);\n this._nativeElement = inject(ElementRef).nativeElement;\n /**\n * An event raised when the active section changes.\n *\n * Payload is the id of the new active section, empty string if none.\n */\n this.activeChange = this._service.active$;\n }\n set active(fragment) {\n this._initialFragment = fragment;\n this.scrollTo(fragment);\n }\n /**\n * Getter/setter for the currently active fragment id.\n */\n get active() {\n return this._service.active;\n }\n /**\n * Returns an observable that emits currently active section id.\n */\n get active$() {\n return this._service.active$;\n }\n ngAfterViewInit() {\n this._service.start({\n processChanges: this.processChanges,\n root: this._nativeElement,\n rootMargin: this.rootMargin,\n threshold: this.threshold,\n ...(this._initialFragment && {\n initialFragment: this._initialFragment\n })\n });\n }\n /**\n * @internal\n */\n _registerFragment(fragment) {\n this._service.observe(fragment.id);\n }\n /**\n * @internal\n */\n _unregisterFragment(fragment) {\n this._service.unobserve(fragment.id);\n }\n /**\n * Scrolls to a fragment that is identified by the `ngbScrollSpyFragment` directive.\n * An id or an element reference can be passed.\n */\n scrollTo(fragment, options) {\n this._service.scrollTo(fragment, {\n ...(this.scrollBehavior && {\n behavior: this.scrollBehavior\n }),\n ...options\n });\n }\n static {\n this.ɵfac = function NgbScrollSpy_Factory(t) {\n return new (t || NgbScrollSpy)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbScrollSpy,\n selectors: [[\"\", \"ngbScrollSpy\", \"\"]],\n hostAttrs: [\"tabindex\", \"0\", 2, \"overflow-y\", \"auto\"],\n inputs: {\n processChanges: \"processChanges\",\n rootMargin: \"rootMargin\",\n scrollBehavior: \"scrollBehavior\",\n threshold: \"threshold\",\n active: \"active\"\n },\n outputs: {\n activeChange: \"activeChange\"\n },\n exportAs: [\"ngbScrollSpy\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([NgbScrollSpyService])]\n });\n }\n }\n return NgbScrollSpy;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A directive to put on a fragment observed inside a scrollspy container.\n *\n * @since 15.1.0\n */\nlet NgbScrollSpyFragment = /*#__PURE__*/(() => {\n class NgbScrollSpyFragment {\n constructor() {\n this._destroyRef = inject(DestroyRef);\n this._scrollSpy = inject(NgbScrollSpy);\n }\n ngAfterViewInit() {\n this._scrollSpy._registerFragment(this);\n this._destroyRef.onDestroy(() => this._scrollSpy._unregisterFragment(this));\n }\n static {\n this.ɵfac = function NgbScrollSpyFragment_Factory(t) {\n return new (t || NgbScrollSpyFragment)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbScrollSpyFragment,\n selectors: [[\"\", \"ngbScrollSpyFragment\", \"\"]],\n hostVars: 1,\n hostBindings: function NgbScrollSpyFragment_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.id);\n }\n },\n inputs: {\n id: [i0.ɵɵInputFlags.None, \"ngbScrollSpyFragment\", \"id\"]\n },\n standalone: true\n });\n }\n }\n return NgbScrollSpyFragment;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbScrollSpyModule = /*#__PURE__*/(() => {\n class NgbScrollSpyModule {\n static {\n this.ɵfac = function NgbScrollSpyModule_Factory(t) {\n return new (t || NgbScrollSpyModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbScrollSpyModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbScrollSpyModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass NgbTime {\n constructor(hour, minute, second) {\n this.hour = toInteger(hour);\n this.minute = toInteger(minute);\n this.second = toInteger(second);\n }\n changeHour(step = 1) {\n this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step);\n }\n updateHour(hour) {\n if (isNumber(hour)) {\n this.hour = (hour < 0 ? 24 + hour : hour) % 24;\n } else {\n this.hour = NaN;\n }\n }\n changeMinute(step = 1) {\n this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step);\n }\n updateMinute(minute) {\n if (isNumber(minute)) {\n this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\n this.changeHour(Math.floor(minute / 60));\n } else {\n this.minute = NaN;\n }\n }\n changeSecond(step = 1) {\n this.updateSecond((isNaN(this.second) ? 0 : this.second) + step);\n }\n updateSecond(second) {\n if (isNumber(second)) {\n this.second = second < 0 ? 60 + second % 60 : second % 60;\n this.changeMinute(Math.floor(second / 60));\n } else {\n this.second = NaN;\n }\n }\n isValid(checkSecs = true) {\n return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n }\n toString() {\n return `${this.hour || 0}:${this.minute || 0}:${this.second || 0}`;\n }\n}\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 */\nlet NgbTimepickerConfig = /*#__PURE__*/(() => {\n class NgbTimepickerConfig {\n constructor() {\n this.meridian = false;\n this.spinners = true;\n this.seconds = false;\n this.hourStep = 1;\n this.minuteStep = 1;\n this.secondStep = 1;\n this.disabled = false;\n this.readonlyInputs = false;\n this.size = 'medium';\n }\n static {\n this.ɵfac = function NgbTimepickerConfig_Factory(t) {\n return new (t || NgbTimepickerConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbTimepickerConfig,\n factory: NgbTimepickerConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbTimepickerConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n return new NgbTimeStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\n * any provided user time model `T`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding timepicker to a form control,\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\n *\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\n *\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\n *\n * @since 2.2.0\n */\nlet NgbTimeAdapter = /*#__PURE__*/(() => {\n class NgbTimeAdapter {\n static {\n this.ɵfac = function NgbTimeAdapter_Factory(t) {\n return new (t || NgbTimeAdapter)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbTimeAdapter,\n factory: () => NGB_DATEPICKER_TIME_ADAPTER_FACTORY(),\n providedIn: 'root'\n });\n }\n }\n return NgbTimeAdapter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbTimeStructAdapter = /*#__PURE__*/(() => {\n class NgbTimeStructAdapter extends NgbTimeAdapter {\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n fromModel(time) {\n return time && isInteger(time.hour) && isInteger(time.minute) ? {\n hour: time.hour,\n minute: time.minute,\n second: isInteger(time.second) ? time.second : null\n } : null;\n }\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n toModel(time) {\n return time && isInteger(time.hour) && isInteger(time.minute) ? {\n hour: time.hour,\n minute: time.minute,\n second: isInteger(time.second) ? time.second : null\n } : null;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbTimeStructAdapter_BaseFactory;\n return function NgbTimeStructAdapter_Factory(t) {\n return (ɵNgbTimeStructAdapter_BaseFactory || (ɵNgbTimeStructAdapter_BaseFactory = i0.ɵɵgetInheritedFactory(NgbTimeStructAdapter)))(t || NgbTimeStructAdapter);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbTimeStructAdapter,\n factory: NgbTimeStructAdapter.ɵfac\n });\n }\n }\n return NgbTimeStructAdapter;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbTimepickerI18n = /*#__PURE__*/(() => {\n class NgbTimepickerI18n {\n static {\n this.ɵfac = function NgbTimepickerI18n_Factory(t) {\n return new (t || NgbTimepickerI18n)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbTimepickerI18n,\n factory: () => (() => new NgbTimepickerI18nDefault())(),\n providedIn: 'root'\n });\n }\n }\n return NgbTimepickerI18n;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbTimepickerI18nDefault = /*#__PURE__*/(() => {\n class NgbTimepickerI18nDefault extends NgbTimepickerI18n {\n constructor() {\n super(...arguments);\n this._periods = getLocaleDayPeriods(inject(LOCALE_ID), FormStyle.Standalone, TranslationWidth.Narrow);\n }\n getMorningPeriod() {\n return this._periods[0];\n }\n getAfternoonPeriod() {\n return this._periods[1];\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵNgbTimepickerI18nDefault_BaseFactory;\n return function NgbTimepickerI18nDefault_Factory(t) {\n return (ɵNgbTimepickerI18nDefault_BaseFactory || (ɵNgbTimepickerI18nDefault_BaseFactory = i0.ɵɵgetInheritedFactory(NgbTimepickerI18nDefault)))(t || NgbTimepickerI18nDefault);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbTimepickerI18nDefault,\n factory: NgbTimepickerI18nDefault.ɵfac\n });\n }\n }\n return NgbTimepickerI18nDefault;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst FILTER_REGEX = /[^0-9]/g;\n/**\n * A directive that helps with wth picking hours, minutes and seconds.\n */\nlet NgbTimepicker = /*#__PURE__*/(() => {\n class NgbTimepicker {\n /**\n * The number of hours to add/subtract when clicking hour spinners.\n */\n set hourStep(step) {\n this._hourStep = isInteger(step) ? step : this._config.hourStep;\n }\n get hourStep() {\n return this._hourStep;\n }\n /**\n * The number of minutes to add/subtract when clicking minute spinners.\n */\n set minuteStep(step) {\n this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n }\n get minuteStep() {\n return this._minuteStep;\n }\n /**\n * The number of seconds to add/subtract when clicking second spinners.\n */\n set secondStep(step) {\n this._secondStep = isInteger(step) ? step : this._config.secondStep;\n }\n get secondStep() {\n return this._secondStep;\n }\n constructor(_config, _ngbTimeAdapter, _cd, i18n) {\n this._config = _config;\n this._ngbTimeAdapter = _ngbTimeAdapter;\n this._cd = _cd;\n this.i18n = i18n;\n this.onChange = _ => {};\n this.onTouched = () => {};\n this.meridian = _config.meridian;\n this.spinners = _config.spinners;\n this.seconds = _config.seconds;\n this.hourStep = _config.hourStep;\n this.minuteStep = _config.minuteStep;\n this.secondStep = _config.secondStep;\n this.disabled = _config.disabled;\n this.readonlyInputs = _config.readonlyInputs;\n this.size = _config.size;\n }\n writeValue(value) {\n const structValue = this._ngbTimeAdapter.fromModel(value);\n this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n this.model.second = 0;\n }\n this._cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onChange = fn;\n }\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Increments the hours by the given step.\n */\n changeHour(step) {\n this.model?.changeHour(step);\n this.propagateModelChange();\n }\n /**\n * Increments the minutes by the given step.\n */\n changeMinute(step) {\n this.model?.changeMinute(step);\n this.propagateModelChange();\n }\n /**\n * Increments the seconds by the given step.\n */\n changeSecond(step) {\n this.model?.changeSecond(step);\n this.propagateModelChange();\n }\n /**\n * Update hours with the new value.\n */\n updateHour(newVal) {\n const isPM = this.model ? this.model.hour >= 12 : false;\n const enteredHour = toInteger(newVal);\n if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\n this.model?.updateHour(enteredHour + 12);\n } else {\n this.model?.updateHour(enteredHour);\n }\n this.propagateModelChange();\n }\n /**\n * Update minutes with the new value.\n */\n updateMinute(newVal) {\n this.model?.updateMinute(toInteger(newVal));\n this.propagateModelChange();\n }\n /**\n * Update seconds with the new value.\n */\n updateSecond(newVal) {\n this.model?.updateSecond(toInteger(newVal));\n this.propagateModelChange();\n }\n toggleMeridian() {\n if (this.meridian) {\n this.changeHour(12);\n }\n }\n formatInput(input) {\n input.value = input.value.replace(FILTER_REGEX, '');\n }\n formatHour(value) {\n if (isNumber(value)) {\n if (this.meridian) {\n return padNumber(value % 12 === 0 ? 12 : value % 12);\n } else {\n return padNumber(value % 24);\n }\n } else {\n return padNumber(NaN);\n }\n }\n formatMinSec(value) {\n return padNumber(isNumber(value) ? value : NaN);\n }\n handleBlur() {\n this.onTouched();\n }\n get isSmallSize() {\n return this.size === 'small';\n }\n get isLargeSize() {\n return this.size === 'large';\n }\n ngOnChanges(changes) {\n if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n this.model.second = 0;\n this.propagateModelChange(false);\n }\n }\n propagateModelChange(touched = true) {\n if (touched) {\n this.onTouched();\n }\n if (this.model?.isValid(this.seconds)) {\n this.onChange(this._ngbTimeAdapter.toModel({\n hour: this.model.hour,\n minute: this.model.minute,\n second: this.model.second\n }));\n } else {\n this.onChange(this._ngbTimeAdapter.toModel(null));\n }\n }\n static {\n this.ɵfac = function NgbTimepicker_Factory(t) {\n return new (t || NgbTimepicker)(i0.ɵɵdirectiveInject(NgbTimepickerConfig), i0.ɵɵdirectiveInject(NgbTimeAdapter), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(NgbTimepickerI18n));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbTimepicker,\n selectors: [[\"ngb-timepicker\"]],\n inputs: {\n meridian: \"meridian\",\n spinners: \"spinners\",\n seconds: \"seconds\",\n hourStep: \"hourStep\",\n minuteStep: \"minuteStep\",\n secondStep: \"secondStep\",\n readonlyInputs: \"readonlyInputs\",\n size: \"size\"\n },\n exportAs: [\"ngbTimepicker\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbTimepicker),\n multi: true\n }]), i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 14,\n vars: 23,\n consts: () => {\n let i18n_21;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_21 = goog.getMsg(\"HH\");\n i18n_21 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_21;\n } else {\n i18n_21 = $localize`:@@ngb.timepicker.HH:HH`;\n }\n let i18n_22;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_22 = goog.getMsg(\"Hours\");\n i18n_22 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_22;\n } else {\n i18n_22 = $localize`:@@ngb.timepicker.hours:Hours`;\n }\n let i18n_23;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_23 = goog.getMsg(\"MM\");\n i18n_23 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_23;\n } else {\n i18n_23 = $localize`:@@ngb.timepicker.MM:MM`;\n }\n let i18n_24;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_24 = goog.getMsg(\"Minutes\");\n i18n_24 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_24;\n } else {\n i18n_24 = $localize`:@@ngb.timepicker.minutes:Minutes`;\n }\n let i18n_25;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_25 = goog.getMsg(\"Increment hours\");\n i18n_25 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_25;\n } else {\n i18n_25 = $localize`:@@ngb.timepicker.increment-hours:Increment hours`;\n }\n let i18n_26;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_26 = goog.getMsg(\"Decrement hours\");\n i18n_26 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_26;\n } else {\n i18n_26 = $localize`:@@ngb.timepicker.decrement-hours:Decrement hours`;\n }\n let i18n_27;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_27 = goog.getMsg(\"Increment minutes\");\n i18n_27 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_27;\n } else {\n i18n_27 = $localize`:@@ngb.timepicker.increment-minutes:Increment minutes`;\n }\n let i18n_28;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_28 = goog.getMsg(\"Decrement minutes\");\n i18n_28 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_28;\n } else {\n i18n_28 = $localize`:@@ngb.timepicker.decrement-minutes:Decrement minutes`;\n }\n let i18n_29;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_29 = goog.getMsg(\"SS\");\n i18n_29 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_29;\n } else {\n i18n_29 = $localize`:@@ngb.timepicker.SS:SS`;\n }\n let i18n_30;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_30 = goog.getMsg(\"Seconds\");\n i18n_30 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_30;\n } else {\n i18n_30 = $localize`:@@ngb.timepicker.seconds:Seconds`;\n }\n let i18n_31;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_31 = goog.getMsg(\"Increment seconds\");\n i18n_31 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_31;\n } else {\n i18n_31 = $localize`:@@ngb.timepicker.increment-seconds:Increment seconds`;\n }\n let i18n_32;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_32 = goog.getMsg(\"Decrement seconds\");\n i18n_32 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_32;\n } else {\n i18n_32 = $localize`:@@ngb.timepicker.decrement-seconds:Decrement seconds`;\n }\n let i18n_33;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_33 = goog.getMsg(\"{$interpolation}\", {\n \"interpolation\": \"\\uFFFD0\\uFFFD\"\n }, {\n original_code: {\n \"interpolation\": \"{{ i18n.getAfternoonPeriod() }}\"\n }\n });\n i18n_33 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_33;\n } else {\n i18n_33 = $localize`:@@ngb.timepicker.PM:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n }\n return [i18n_25, i18n_26, i18n_27, i18n_28, i18n_31, i18n_32, i18n_33, [3, \"disabled\"], [1, \"ngb-tp\"], [1, \"ngb-tp-input-container\", \"ngb-tp-hour\"], [\"tabindex\", \"-1\", \"type\", \"button\", 1, \"btn\", \"btn-link\", 3, \"btn-sm\", \"btn-lg\", \"disabled\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_21, \"aria-label\", i18n_22, 1, \"ngb-tp-input\", \"form-control\", 3, \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\", \"value\", \"readOnly\", \"disabled\"], [1, \"ngb-tp-spacer\"], [1, \"ngb-tp-input-container\", \"ngb-tp-minute\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_23, \"aria-label\", i18n_24, 1, \"ngb-tp-input\", \"form-control\", 3, \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\", \"value\", \"readOnly\", \"disabled\"], [\"tabindex\", \"-1\", \"type\", \"button\", 1, \"btn\", \"btn-link\", 3, \"click\", \"disabled\"], [1, \"chevron\", \"ngb-tp-chevron\"], [1, \"visually-hidden\"], [1, \"chevron\", \"ngb-tp-chevron\", \"bottom\"], [1, \"ngb-tp-input-container\", \"ngb-tp-second\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_29, \"aria-label\", i18n_30, 1, \"ngb-tp-input\", \"form-control\", 3, \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\", \"value\", \"readOnly\", \"disabled\"], [1, \"ngb-tp-meridian\"], [\"type\", \"button\", 1, \"btn\", \"btn-outline-primary\", 3, \"click\", \"disabled\"]];\n },\n template: function NgbTimepicker_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"fieldset\", 7)(1, \"div\", 8)(2, \"div\", 9);\n i0.ɵɵtemplate(3, NgbTimepicker_Conditional_3_Template, 4, 7, \"button\", 10);\n i0.ɵɵelementStart(4, \"input\", 11);\n i0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_4_listener($event) {\n return ctx.updateHour($event.target.value);\n })(\"blur\", function NgbTimepicker_Template_input_blur_4_listener() {\n return ctx.handleBlur();\n })(\"input\", function NgbTimepicker_Template_input_input_4_listener($event) {\n return ctx.formatInput($event.target);\n })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_4_listener($event) {\n ctx.changeHour(ctx.hourStep);\n return $event.preventDefault();\n })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_4_listener($event) {\n ctx.changeHour(-ctx.hourStep);\n return $event.preventDefault();\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, NgbTimepicker_Conditional_5_Template, 4, 7, \"button\", 10);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"div\", 12);\n i0.ɵɵtext(7, \":\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(8, \"div\", 13);\n i0.ɵɵtemplate(9, NgbTimepicker_Conditional_9_Template, 4, 7, \"button\", 10);\n i0.ɵɵelementStart(10, \"input\", 14);\n i0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_10_listener($event) {\n return ctx.updateMinute($event.target.value);\n })(\"blur\", function NgbTimepicker_Template_input_blur_10_listener() {\n return ctx.handleBlur();\n })(\"input\", function NgbTimepicker_Template_input_input_10_listener($event) {\n return ctx.formatInput($event.target);\n })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_10_listener($event) {\n ctx.changeMinute(ctx.minuteStep);\n return $event.preventDefault();\n })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_10_listener($event) {\n ctx.changeMinute(-ctx.minuteStep);\n return $event.preventDefault();\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(11, NgbTimepicker_Conditional_11_Template, 4, 7, \"button\", 10);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(12, NgbTimepicker_Conditional_12_Template, 6, 9)(13, NgbTimepicker_Conditional_13_Template, 5, 8);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵclassProp(\"disabled\", ctx.disabled);\n i0.ɵɵproperty(\"disabled\", ctx.disabled);\n i0.ɵɵadvance(3);\n i0.ɵɵconditional(3, ctx.spinners ? 3 : -1);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n i0.ɵɵproperty(\"value\", ctx.formatHour(ctx.model == null ? null : ctx.model.hour))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n i0.ɵɵadvance();\n i0.ɵɵconditional(5, ctx.spinners ? 5 : -1);\n i0.ɵɵadvance(4);\n i0.ɵɵconditional(9, ctx.spinners ? 9 : -1);\n i0.ɵɵadvance();\n i0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n i0.ɵɵproperty(\"value\", ctx.formatMinSec(ctx.model == null ? null : ctx.model.minute))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n i0.ɵɵadvance();\n i0.ɵɵconditional(11, ctx.spinners ? 11 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(12, ctx.seconds ? 12 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(13, ctx.meridian ? 13 : -1);\n }\n },\n styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:flex;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-minute,.ngb-tp-second,.ngb-tp-meridian{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\\n\"],\n encapsulation: 2\n });\n }\n }\n return NgbTimepicker;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbTimepickerModule = /*#__PURE__*/(() => {\n class NgbTimepickerModule {\n static {\n this.ɵfac = function NgbTimepickerModule_Factory(t) {\n return new (t || NgbTimepickerModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbTimepickerModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbTimepickerModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbToastConfig = /*#__PURE__*/(() => {\n class NgbToastConfig {\n constructor() {\n this._ngbConfig = inject(NgbConfig);\n this.autohide = true;\n this.delay = 5000;\n this.ariaLive = 'polite';\n }\n get animation() {\n return this._animation ?? this._ngbConfig.animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n static {\n this.ɵfac = function NgbToastConfig_Factory(t) {\n return new (t || NgbToastConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbToastConfig,\n factory: NgbToastConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbToastConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst ngbToastFadeInTransition = (element, animation) => {\n const {\n classList\n } = element;\n if (animation) {\n classList.add('fade');\n } else {\n classList.add('show');\n return;\n }\n reflow(element);\n classList.add('show', 'showing');\n return () => {\n classList.remove('showing');\n };\n};\nconst ngbToastFadeOutTransition = ({\n classList\n}) => {\n classList.add('showing');\n return () => {\n classList.remove('show', 'showing');\n };\n};\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 */\nlet NgbToastHeader = /*#__PURE__*/(() => {\n class NgbToastHeader {\n static {\n this.ɵfac = function NgbToastHeader_Factory(t) {\n return new (t || NgbToastHeader)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbToastHeader,\n selectors: [[\"\", \"ngbToastHeader\", \"\"]],\n standalone: true\n });\n }\n }\n return NgbToastHeader;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbToast = /*#__PURE__*/(() => {\n class NgbToast {\n constructor(ariaLive) {\n this.ariaLive = ariaLive;\n this._config = inject(NgbToastConfig);\n this._zone = inject(NgZone);\n this._element = inject(ElementRef);\n /**\n * If `true`, toast opening and closing will be animated.\n *\n * Animation is triggered only when the `.hide()` or `.show()` functions are called\n *\n * @since 8.0.0\n */\n this.animation = this._config.animation;\n /**\n * Delay after which the toast will hide (ms).\n * default: `500` (ms) (inherited from NgbToastConfig)\n */\n this.delay = this._config.delay;\n /**\n * Auto hide the toast after a delay in ms.\n * default: `true` (inherited from NgbToastConfig)\n */\n this.autohide = this._config.autohide;\n /**\n * A template like `<ng-template ngbToastHeader></ng-template>` can be\n * used in the projected content to allow markup usage.\n */\n this.contentHeaderTpl = null;\n /**\n * An event fired after the animation triggered by calling `.show()` method has finished.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event fired after the animation triggered by calling `.hide()` method has finished.\n *\n * It can only occur in 2 different scenarios:\n * - `autohide` timeout fires\n * - user clicks on a closing cross\n *\n * Additionally this output is purely informative. The toast won't be removed from DOM automatically, it's up\n * to the user to take care of that.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.ariaLive ??= this._config.ariaLive;\n }\n ngAfterContentInit() {\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this._init();\n this.show();\n });\n }\n ngOnChanges(changes) {\n if ('autohide' in changes) {\n this._clearTimeout();\n this._init();\n }\n }\n /**\n * Triggers toast closing programmatically.\n *\n * The returned observable will emit and be completed once the closing transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(hidden)` output\n *\n * @since 8.0.0\n */\n hide() {\n this._clearTimeout();\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeOutTransition, {\n animation: this.animation,\n runningTransition: 'stop'\n });\n transition.subscribe(() => {\n this.hidden.emit();\n });\n return transition;\n }\n /**\n * Triggers toast opening programmatically.\n *\n * The returned observable will emit and be completed once the opening transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(shown)` output\n *\n * @since 8.0.0\n */\n show() {\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeInTransition, {\n animation: this.animation,\n runningTransition: 'continue'\n });\n transition.subscribe(() => {\n this.shown.emit();\n });\n return transition;\n }\n _init() {\n if (this.autohide && !this._timeoutID) {\n this._timeoutID = setTimeout(() => this.hide(), this.delay);\n }\n }\n _clearTimeout() {\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n }\n static {\n this.ɵfac = function NgbToast_Factory(t) {\n return new (t || NgbToast)(i0.ɵɵinjectAttribute('aria-live'));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbToast,\n selectors: [[\"ngb-toast\"]],\n contentQueries: function NgbToast_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, NgbToastHeader, 7, TemplateRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentHeaderTpl = _t.first);\n }\n },\n hostAttrs: [\"role\", \"alert\", \"aria-atomic\", \"true\", 1, \"toast\"],\n hostVars: 3,\n hostBindings: function NgbToast_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-live\", ctx.ariaLive);\n i0.ɵɵclassProp(\"fade\", ctx.animation);\n }\n },\n inputs: {\n animation: \"animation\",\n delay: \"delay\",\n autohide: \"autohide\",\n header: \"header\"\n },\n outputs: {\n shown: \"shown\",\n hidden: \"hidden\"\n },\n exportAs: [\"ngbToast\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 5,\n vars: 1,\n consts: () => {\n let i18n_34;\n if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_34 = goog.getMsg(\"Close\");\n i18n_34 = MSG_C__USERS_JOSEP_DOCUMENTS_PROJECTS_KAVITAORG_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_34;\n } else {\n i18n_34 = $localize`:@@ngb.toast.close-aria:Close`;\n }\n return [[\"headerTpl\", \"\"], [1, \"toast-header\"], [1, \"toast-body\"], [1, \"me-auto\"], [3, \"ngTemplateOutlet\"], [\"type\", \"button\", \"aria-label\", i18n_34, 1, \"btn-close\", 3, \"click\"]];\n },\n template: function NgbToast_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, NgbToast_ng_template_0_Template, 2, 1, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor)(2, NgbToast_Conditional_2_Template, 3, 1, \"div\", 1);\n i0.ɵɵelementStart(3, \"div\", 2);\n i0.ɵɵprojection(4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance(2);\n i0.ɵɵconditional(2, ctx.contentHeaderTpl || ctx.header ? 2 : -1);\n }\n },\n dependencies: [NgTemplateOutlet],\n styles: [\"ngb-toast{display:block}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\\n\"],\n encapsulation: 2\n });\n }\n }\n return NgbToast;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbToastModule = /*#__PURE__*/(() => {\n class NgbToastModule {\n static {\n this.ɵfac = function NgbToastModule_Factory(t) {\n return new (t || NgbToastModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbToastModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbToastModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbTooltipConfig = /*#__PURE__*/(() => {\n class NgbTooltipConfig {\n constructor() {\n this._ngbConfig = inject(NgbConfig);\n this.autoClose = true;\n this.placement = 'auto';\n this.popperOptions = options => options;\n this.triggers = 'hover focus';\n this.disableTooltip = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n get animation() {\n return this._animation ?? this._ngbConfig.animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n static {\n this.ɵfac = function NgbTooltipConfig_Factory(t) {\n return new (t || NgbTooltipConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbTooltipConfig,\n factory: NgbTooltipConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbTooltipConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet nextId = 0;\nlet NgbTooltipWindow = /*#__PURE__*/(() => {\n class NgbTooltipWindow {\n static {\n this.ɵfac = function NgbTooltipWindow_Factory(t) {\n return new (t || NgbTooltipWindow)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbTooltipWindow,\n selectors: [[\"ngb-tooltip-window\"]],\n hostAttrs: [\"role\", \"tooltip\"],\n hostVars: 5,\n hostBindings: function NgbTooltipWindow_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.id);\n i0.ɵɵclassMap(\"tooltip\" + (ctx.tooltipClass ? \" \" + ctx.tooltipClass : \"\"));\n i0.ɵɵclassProp(\"fade\", ctx.animation);\n }\n },\n inputs: {\n animation: \"animation\",\n id: \"id\",\n tooltipClass: \"tooltipClass\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 3,\n vars: 0,\n consts: [[\"data-popper-arrow\", \"\", 1, \"tooltip-arrow\"], [1, \"tooltip-inner\"]],\n template: function NgbTooltipWindow_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelement(0, \"div\", 0);\n i0.ɵɵelementStart(1, \"div\", 1);\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd();\n }\n },\n styles: [\"ngb-tooltip-window{pointer-events:none;position:absolute}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-top,ngb-tooltip-window.bs-tooltip-bottom{padding-left:0;padding-right:0}ngb-tooltip-window.bs-tooltip-start,ngb-tooltip-window.bs-tooltip-end{padding-top:0;padding-bottom:0}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbTooltipWindow;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A lightweight and extensible directive for fancy tooltip creation.\n */\nlet NgbTooltip = /*#__PURE__*/(() => {\n class NgbTooltip {\n constructor() {\n this._config = inject(NgbTooltipConfig);\n /**\n * If `true`, tooltip opening and closing will be animated.\n *\n * @since 8.0.0\n */\n this.animation = this._config.animation;\n /**\n * Indicates whether the tooltip should be closed on `Escape` key and inside/outside clicks:\n *\n * * `true` - closes on both outside and inside clicks as well as `Escape` presses\n * * `false` - disables the autoClose feature (NB: triggers still apply)\n * * `\"inside\"` - closes on inside clicks as well as Escape presses\n * * `\"outside\"` - closes on outside clicks (sometimes also achievable through triggers)\n * as well as `Escape` presses\n *\n * @since 3.0.0\n */\n this.autoClose = this._config.autoClose;\n /**\n * The preferred placement of the tooltip, among the [possible values](#/guides/positioning#api).\n *\n * The default order of preference is `\"auto\"`.\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = this._config.placement;\n /**\n * Allows to change default Popper options when positioning the tooltip.\n * Receives current popper options and returns modified ones.\n *\n * @since 13.1.0\n */\n this.popperOptions = this._config.popperOptions;\n /**\n * Specifies events that should trigger the tooltip.\n *\n * Supports a space separated list of event names.\n * For more details see the [triggers demo](#/components/tooltip/examples#triggers).\n */\n this.triggers = this._config.triggers;\n /**\n * A selector specifying the element the tooltip should be appended to.\n *\n * Currently only supports `\"body\"`.\n */\n this.container = this._config.container;\n /**\n * If `true`, tooltip is disabled and won't be displayed.\n *\n * @since 1.1.0\n */\n this.disableTooltip = this._config.disableTooltip;\n /**\n * An optional class applied to the tooltip window element.\n *\n * @since 3.2.0\n */\n this.tooltipClass = this._config.tooltipClass;\n /**\n * The opening delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n *\n * @since 4.1.0\n */\n this.openDelay = this._config.openDelay;\n /**\n * The closing delay in ms. Works only for \"non-manual\" opening triggers defined by the `triggers` input.\n *\n * @since 4.1.0\n */\n this.closeDelay = this._config.closeDelay;\n /**\n * An event emitted when the tooltip opening animation has finished. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the tooltip closing animation has finished. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._nativeElement = inject(ElementRef).nativeElement;\n this._ngZone = inject(NgZone);\n this._document = inject(DOCUMENT);\n this._changeDetector = inject(ChangeDetectorRef);\n this._ngbTooltipWindowId = `ngb-tooltip-${nextId++}`;\n this._popupService = new PopupService(NgbTooltipWindow);\n this._windowRef = null;\n this._positioning = ngbPositioning();\n }\n /**\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n *\n * If the content if falsy, the tooltip won't open.\n */\n set ngbTooltip(value) {\n this._ngbTooltip = value;\n if (!value && this._windowRef) {\n this.close();\n }\n }\n get ngbTooltip() {\n return this._ngbTooltip;\n }\n /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n */\n open(context) {\n if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n const {\n windowRef,\n transition$\n } = this._popupService.open(this._ngbTooltip, context ?? this.tooltipContext, this.animation);\n this._windowRef = windowRef;\n this._windowRef.setInput('animation', this.animation);\n this._windowRef.setInput('tooltipClass', this.tooltipClass);\n this._windowRef.setInput('id', this._ngbTooltipWindowId);\n this._getPositionTargetElement().setAttribute('aria-describedby', this._ngbTooltipWindowId);\n if (this.container === 'body') {\n this._document.body.appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening tooltip from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because tooltip won't work inside the OnPush component.\n // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the tooltip from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n this._positioning.createPopper({\n hostElement: this._getPositionTargetElement(),\n targetElement: this._windowRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n baseClass: 'bs-tooltip',\n updatePopperOptions: options => this.popperOptions(addPopperOffset([0, 6])(options))\n });\n Promise.resolve().then(() => {\n // This update is required for correct arrow placement\n this._positioning.update();\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n });\n });\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement], [this._nativeElement]);\n transition$.subscribe(() => this.shown.emit());\n }\n }\n /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n close(animation = this.animation) {\n if (this._windowRef != null) {\n this._getPositionTargetElement().removeAttribute('aria-describedby');\n this._popupService.close(animation).subscribe(() => {\n this._windowRef = null;\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this.hidden.emit();\n this._changeDetector.markForCheck();\n });\n }\n }\n /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n } else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n */\n isOpen() {\n return this._windowRef != null;\n }\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n ngOnChanges({\n tooltipClass\n }) {\n if (tooltipClass && this.isOpen()) {\n this._windowRef.setInput('tooltipClass', tooltipClass.currentValue);\n }\n }\n ngOnDestroy() {\n this.close(false);\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n this._unregisterListenersFn?.();\n }\n _getPositionTargetElement() {\n return (isString(this.positionTarget) ? this._document.querySelector(this.positionTarget) : this.positionTarget) || this._nativeElement;\n }\n static {\n this.ɵfac = function NgbTooltip_Factory(t) {\n return new (t || NgbTooltip)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbTooltip,\n selectors: [[\"\", \"ngbTooltip\", \"\"]],\n inputs: {\n animation: \"animation\",\n autoClose: \"autoClose\",\n placement: \"placement\",\n popperOptions: \"popperOptions\",\n triggers: \"triggers\",\n positionTarget: \"positionTarget\",\n container: \"container\",\n disableTooltip: \"disableTooltip\",\n tooltipClass: \"tooltipClass\",\n tooltipContext: \"tooltipContext\",\n openDelay: \"openDelay\",\n closeDelay: \"closeDelay\",\n ngbTooltip: \"ngbTooltip\"\n },\n outputs: {\n shown: \"shown\",\n hidden: \"hidden\"\n },\n exportAs: [\"ngbTooltip\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return NgbTooltip;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbTooltipModule = /*#__PURE__*/(() => {\n class NgbTooltipModule {\n static {\n this.ɵfac = function NgbTooltipModule_Factory(t) {\n return new (t || NgbTooltipModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbTooltipModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbTooltipModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 `Al<span class=\"ngb-highlight\">as</span>ka`.\n */\nlet NgbHighlight = /*#__PURE__*/(() => {\n class NgbHighlight {\n constructor() {\n /**\n * The CSS class for `<span>` elements wrapping the `term` inside the `result`.\n */\n this.highlightClass = 'ngb-highlight';\n /**\n * Boolean option to determine if the highlighting should be sensitive to accents or not.\n *\n * This feature is only available for browsers that implement the `String.normalize` function\n * (typically not Internet Explorer).\n * If you want to use this feature in a browser that does not implement `String.normalize`,\n * you will have to include a polyfill in your application (`unorm` for example).\n *\n * @since 9.1.0\n */\n this.accentSensitive = true;\n }\n ngOnChanges(changes) {\n if (!this.accentSensitive && !String.prototype.normalize) {\n console.warn('The `accentSensitive` input in `ngb-highlight` cannot be set to `false` in a browser ' + 'that does not implement the `String.normalize` function. ' + 'You will have to include a polyfill in your application to use this feature in the current browser.');\n this.accentSensitive = true;\n }\n const result = toString(this.result);\n const terms = Array.isArray(this.term) ? this.term : [this.term];\n const prepareTerm = term => this.accentSensitive ? term : removeAccents(term);\n const escapedTerms = terms.map(term => regExpEscape(prepareTerm(toString(term)))).filter(term => term);\n const toSplit = this.accentSensitive ? result : removeAccents(result);\n const parts = escapedTerms.length ? toSplit.split(new RegExp(`(${escapedTerms.join('|')})`, 'gmi')) : [result];\n if (this.accentSensitive) {\n this.parts = parts;\n } else {\n let offset = 0;\n this.parts = parts.map(part => result.substring(offset, offset += part.length));\n }\n }\n static {\n this.ɵfac = function NgbHighlight_Factory(t) {\n return new (t || NgbHighlight)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbHighlight,\n selectors: [[\"ngb-highlight\"]],\n inputs: {\n highlightClass: \"highlightClass\",\n result: \"result\",\n term: \"term\",\n accentSensitive: \"accentSensitive\"\n },\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature, i0.ɵɵStandaloneFeature],\n decls: 2,\n vars: 0,\n consts: [[3, \"class\"]],\n template: function NgbHighlight_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵrepeaterCreate(0, NgbHighlight_For_1_Template, 2, 1, null, null, i0.ɵɵrepeaterTrackByIdentity);\n }\n if (rf & 2) {\n i0.ɵɵrepeater(ctx.parts);\n }\n },\n styles: [\".ngb-highlight{font-weight:700}\\n\"],\n encapsulation: 2,\n changeDetection: 0\n });\n }\n }\n return NgbHighlight;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', {\n providedIn: 'root',\n factory: () => 100\n});\nfunction getLiveElement(document, lazyCreate = false) {\n let element = document.body.querySelector('#ngb-live');\n if (element == null && lazyCreate) {\n element = document.createElement('div');\n element.setAttribute('id', 'ngb-live');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n element.classList.add('visually-hidden');\n document.body.appendChild(element);\n }\n return element;\n}\nlet Live = /*#__PURE__*/(() => {\n class Live {\n constructor() {\n this._document = inject(DOCUMENT);\n this._delay = inject(ARIA_LIVE_DELAY);\n }\n ngOnDestroy() {\n const element = getLiveElement(this._document);\n if (element) {\n // if exists, it will always be attached to the <body>\n element.parentElement.removeChild(element);\n }\n }\n say(message) {\n const element = getLiveElement(this._document, true);\n const delay = this._delay;\n if (element != null) {\n element.textContent = '';\n const setText = () => element.textContent = message;\n if (delay === null) {\n setText();\n } else {\n setTimeout(setText, delay);\n }\n }\n }\n static {\n this.ɵfac = function Live_Factory(t) {\n return new (t || Live)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Live,\n factory: Live.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return Live;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbTypeaheadConfig = /*#__PURE__*/(() => {\n class NgbTypeaheadConfig {\n constructor() {\n this.editable = true;\n this.focusFirst = true;\n this.selectOnExact = false;\n this.showHint = false;\n this.placement = ['bottom-start', 'bottom-end', 'top-start', 'top-end'];\n this.popperOptions = options => options;\n }\n static {\n this.ɵfac = function NgbTypeaheadConfig_Factory(t) {\n return new (t || NgbTypeaheadConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbTypeaheadConfig,\n factory: NgbTypeaheadConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbTypeaheadConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbTypeaheadWindow = /*#__PURE__*/(() => {\n class NgbTypeaheadWindow {\n constructor() {\n this.activeIdx = 0;\n /**\n * Flag indicating if the first row should be active initially\n */\n this.focusFirst = true;\n /**\n * A function used to format a given result before display. This function should return a formatted string without any\n * HTML markup\n */\n this.formatter = toString;\n /**\n * Event raised when user selects a particular result row\n */\n this.selectEvent = new EventEmitter();\n this.activeChangeEvent = new EventEmitter();\n }\n hasActive() {\n return this.activeIdx > -1 && this.activeIdx < this.results.length;\n }\n getActive() {\n return this.results[this.activeIdx];\n }\n markActive(activeIdx) {\n this.activeIdx = activeIdx;\n this._activeChanged();\n }\n next() {\n if (this.activeIdx === this.results.length - 1) {\n this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n } else {\n this.activeIdx++;\n }\n this._activeChanged();\n }\n prev() {\n if (this.activeIdx < 0) {\n this.activeIdx = this.results.length - 1;\n } else if (this.activeIdx === 0) {\n this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n } else {\n this.activeIdx--;\n }\n this._activeChanged();\n }\n resetActive() {\n this.activeIdx = this.focusFirst ? 0 : -1;\n this._activeChanged();\n }\n select(item) {\n this.selectEvent.emit(item);\n }\n ngOnInit() {\n this.resetActive();\n }\n _activeChanged() {\n this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n }\n static {\n this.ɵfac = function NgbTypeaheadWindow_Factory(t) {\n return new (t || NgbTypeaheadWindow)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbTypeaheadWindow,\n selectors: [[\"ngb-typeahead-window\"]],\n hostAttrs: [\"role\", \"listbox\"],\n hostVars: 3,\n hostBindings: function NgbTypeaheadWindow_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mousedown\", function NgbTypeaheadWindow_mousedown_HostBindingHandler($event) {\n return $event.preventDefault();\n });\n }\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.id);\n i0.ɵɵclassMap(\"dropdown-menu show\" + (ctx.popupClass ? \" \" + ctx.popupClass : \"\"));\n }\n },\n inputs: {\n id: \"id\",\n focusFirst: \"focusFirst\",\n results: \"results\",\n term: \"term\",\n formatter: \"formatter\",\n resultTemplate: \"resultTemplate\",\n popupClass: \"popupClass\"\n },\n outputs: {\n selectEvent: \"select\",\n activeChangeEvent: \"activeChange\"\n },\n exportAs: [\"ngbTypeaheadWindow\"],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 4,\n vars: 0,\n consts: [[\"rt\", \"\"], [\"type\", \"button\", \"role\", \"option\", 1, \"dropdown-item\", 3, \"id\", \"active\"], [3, \"result\", \"term\"], [\"type\", \"button\", \"role\", \"option\", 1, \"dropdown-item\", 3, \"mouseenter\", \"click\", \"id\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n template: function NgbTypeaheadWindow_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, NgbTypeaheadWindow_ng_template_0_Template, 1, 2, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n i0.ɵɵrepeaterCreate(2, NgbTypeaheadWindow_For_3_Template, 2, 9, \"button\", 1, i0.ɵɵrepeaterTrackByIdentity);\n }\n if (rf & 2) {\n i0.ɵɵadvance(2);\n i0.ɵɵrepeater(ctx.results);\n }\n },\n dependencies: [NgbHighlight, NgTemplateOutlet],\n encapsulation: 2\n });\n }\n }\n return NgbTypeaheadWindow;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet nextWindowId = 0;\n/**\n * A directive providing a simple way of creating powerful typeaheads from any text input.\n */\nlet NgbTypeahead = /*#__PURE__*/(() => {\n class NgbTypeahead {\n constructor() {\n this._nativeElement = inject(ElementRef).nativeElement;\n this._config = inject(NgbTypeaheadConfig);\n this._live = inject(Live);\n this._document = inject(DOCUMENT);\n this._ngZone = inject(NgZone);\n this._changeDetector = inject(ChangeDetectorRef);\n this._popupService = new PopupService(NgbTypeaheadWindow);\n this._positioning = ngbPositioning();\n this._subscription = null;\n this._closed$ = new Subject();\n this._inputValueBackup = null;\n this._inputValueForSelectOnExact = null;\n this._valueChanges$ = fromEvent(this._nativeElement, 'input').pipe(map($event => $event.target.value));\n this._resubscribeTypeahead$ = new BehaviorSubject(null);\n this._windowRef = null;\n /**\n * The value for the `autocomplete` attribute for the `<input>` element.\n *\n * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n *\n * @since 2.1.0\n */\n this.autocomplete = 'off';\n /**\n * A selector specifying the element the typeahead popup will be appended to.\n *\n * Currently only supports `\"body\"`.\n */\n this.container = this._config.container;\n /**\n * If `true`, model values will not be restricted only to items selected from the popup.\n */\n this.editable = this._config.editable;\n /**\n * If `true`, the first item in the result list will always stay focused while typing.\n */\n this.focusFirst = this._config.focusFirst;\n /**\n * If `true`, automatically selects the item when it is the only one that exactly matches the user input\n *\n * @since 14.2.0\n */\n this.selectOnExact = this._config.selectOnExact;\n /**\n * If `true`, will show the hint in the `<input>` when an item in the result list matches.\n */\n this.showHint = this._config.showHint;\n /**\n * The preferred placement of the typeahead, among the [possible values](#/guides/positioning#api).\n *\n * The default order of preference is `\"bottom-start bottom-end top-start top-end\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = this._config.placement;\n /**\n * Allows to change default Popper options when positioning the typeahead.\n * Receives current popper options and returns modified ones.\n *\n * @since 13.1.0\n */\n this.popperOptions = this._config.popperOptions;\n /**\n * An event emitted right before an item is selected from the result list.\n *\n * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n */\n this.selectItem = new EventEmitter();\n this.activeDescendant = null;\n this.popupId = `ngb-typeahead-${nextWindowId++}`;\n this._onTouched = () => {};\n this._onChange = _ => {};\n }\n ngOnInit() {\n this._subscribeToUserInput();\n }\n ngOnChanges({\n ngbTypeahead\n }) {\n if (ngbTypeahead && !ngbTypeahead.firstChange) {\n this._unsubscribeFromUserInput();\n this._subscribeToUserInput();\n }\n }\n ngOnDestroy() {\n this._closePopup();\n this._unsubscribeFromUserInput();\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n writeValue(value) {\n this._writeInputValue(this._formatItemForInput(value));\n if (this.showHint) {\n this._inputValueBackup = value;\n }\n }\n setDisabledState(isDisabled) {\n this._nativeElement.disabled = isDisabled;\n }\n /**\n * Dismisses typeahead popup window\n */\n dismissPopup() {\n if (this.isPopupOpen()) {\n this._resubscribeTypeahead$.next(null);\n this._closePopup();\n if (this.showHint && this._inputValueBackup !== null) {\n this._writeInputValue(this._inputValueBackup);\n }\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Returns true if the typeahead popup window is displayed\n */\n isPopupOpen() {\n return this._windowRef != null;\n }\n handleBlur() {\n this._resubscribeTypeahead$.next(null);\n this._onTouched();\n }\n handleKeyDown(event) {\n if (!this.isPopupOpen()) {\n return;\n }\n /* eslint-disable-next-line deprecation/deprecation */\n switch (event.which) {\n case Key.ArrowDown:\n event.preventDefault();\n this._windowRef.instance.next();\n this._showHint();\n break;\n case Key.ArrowUp:\n event.preventDefault();\n this._windowRef.instance.prev();\n this._showHint();\n break;\n case Key.Enter:\n case Key.Tab:\n {\n const result = this._windowRef.instance.getActive();\n if (isDefined(result)) {\n event.preventDefault();\n event.stopPropagation();\n this._selectResult(result);\n }\n this._closePopup();\n break;\n }\n }\n }\n _openPopup() {\n if (!this.isPopupOpen()) {\n this._inputValueBackup = this._nativeElement.value;\n const {\n windowRef\n } = this._popupService.open();\n this._windowRef = windowRef;\n this._windowRef.setInput('id', this.popupId);\n this._windowRef.setInput('popupClass', this.popupClass);\n this._windowRef.instance.selectEvent.subscribe(result => this._selectResultClosePopup(result));\n this._windowRef.instance.activeChangeEvent.subscribe(activeId => this.activeDescendant = activeId);\n if (this.container === 'body') {\n this._windowRef.location.nativeElement.style.zIndex = '1055';\n this._document.body.appendChild(this._windowRef.location.nativeElement);\n }\n this._changeDetector.markForCheck();\n // Setting up popper and scheduling updates when zone is stable\n this._ngZone.runOutsideAngular(() => {\n if (this._windowRef) {\n this._positioning.createPopper({\n hostElement: this._nativeElement,\n targetElement: this._windowRef.location.nativeElement,\n placement: this.placement,\n appendToBody: this.container === 'body',\n updatePopperOptions: options => this.popperOptions(addPopperOffset([0, 2])(options))\n });\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => this._positioning.update());\n }\n });\n ngbAutoClose(this._ngZone, this._document, 'outside', () => this.dismissPopup(), this._closed$, [this._nativeElement, this._windowRef.location.nativeElement]);\n }\n }\n _closePopup() {\n this._popupService.close().subscribe(() => {\n this._positioning.destroy();\n this._zoneSubscription?.unsubscribe();\n this._closed$.next();\n this._windowRef = null;\n this.activeDescendant = null;\n });\n }\n _selectResult(result) {\n let defaultPrevented = false;\n this.selectItem.emit({\n item: result,\n preventDefault: () => {\n defaultPrevented = true;\n }\n });\n this._resubscribeTypeahead$.next(null);\n if (!defaultPrevented) {\n this.writeValue(result);\n this._onChange(result);\n }\n }\n _selectResultClosePopup(result) {\n this._selectResult(result);\n this._closePopup();\n }\n _showHint() {\n if (this.showHint && this._windowRef?.instance.hasActive() && this._inputValueBackup != null) {\n const userInputLowerCase = this._inputValueBackup.toLowerCase();\n const formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n if (userInputLowerCase === formattedVal.substring(0, this._inputValueBackup.length).toLowerCase()) {\n this._writeInputValue(this._inputValueBackup + formattedVal.substring(this._inputValueBackup.length));\n this._nativeElement['setSelectionRange'].apply(this._nativeElement, [this._inputValueBackup.length, formattedVal.length]);\n } else {\n this._writeInputValue(formattedVal);\n }\n }\n }\n _formatItemForInput(item) {\n return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n }\n _writeInputValue(value) {\n this._nativeElement.value = toString(value);\n }\n _subscribeToUserInput() {\n const results$ = this._valueChanges$.pipe(tap(value => {\n this._inputValueBackup = this.showHint ? value : null;\n this._inputValueForSelectOnExact = this.selectOnExact ? value : null;\n this._onChange(this.editable ? value : undefined);\n }), this.ngbTypeahead ? this.ngbTypeahead : () => of([]));\n this._subscription = this._resubscribeTypeahead$.pipe(switchMap(() => results$)).subscribe(results => {\n if (!results || results.length === 0) {\n this._closePopup();\n } else {\n // when there is only one result and this matches the input value\n if (this.selectOnExact && results.length === 1 && this._formatItemForInput(results[0]) === this._inputValueForSelectOnExact) {\n this._selectResult(results[0]);\n this._closePopup();\n } else {\n this._openPopup();\n this._windowRef.setInput('focusFirst', this.focusFirst);\n this._windowRef.setInput('results', results);\n this._windowRef.setInput('term', this._nativeElement.value);\n if (this.resultFormatter) {\n this._windowRef.setInput('formatter', this.resultFormatter);\n }\n if (this.resultTemplate) {\n this._windowRef.setInput('resultTemplate', this.resultTemplate);\n }\n this._windowRef.instance.resetActive();\n // The observable stream we are subscribing to might have async steps\n // and if a component containing typeahead is using the OnPush strategy\n // the change detection turn wouldn't be invoked automatically.\n this._windowRef.changeDetectorRef.detectChanges();\n this._showHint();\n }\n }\n // live announcer\n const count = results ? results.length : 0;\n this._live.say(count === 0 ? 'No results available' : `${count} result${count === 1 ? '' : 's'} available`);\n });\n }\n _unsubscribeFromUserInput() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n this._subscription = null;\n }\n static {\n this.ɵfac = function NgbTypeahead_Factory(t) {\n return new (t || NgbTypeahead)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbTypeahead,\n selectors: [[\"input\", \"ngbTypeahead\", \"\"]],\n hostAttrs: [\"autocapitalize\", \"off\", \"autocorrect\", \"off\", \"role\", \"combobox\"],\n hostVars: 7,\n hostBindings: function NgbTypeahead_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"blur\", function NgbTypeahead_blur_HostBindingHandler() {\n return ctx.handleBlur();\n })(\"keydown\", function NgbTypeahead_keydown_HostBindingHandler($event) {\n return ctx.handleKeyDown($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵhostProperty(\"autocomplete\", ctx.autocomplete);\n i0.ɵɵattribute(\"aria-autocomplete\", ctx.showHint ? \"both\" : \"list\")(\"aria-activedescendant\", ctx.activeDescendant)(\"aria-owns\", ctx.isPopupOpen() ? ctx.popupId : null)(\"aria-expanded\", ctx.isPopupOpen());\n i0.ɵɵclassProp(\"open\", ctx.isPopupOpen());\n }\n },\n inputs: {\n autocomplete: \"autocomplete\",\n container: \"container\",\n editable: \"editable\",\n focusFirst: \"focusFirst\",\n inputFormatter: \"inputFormatter\",\n ngbTypeahead: \"ngbTypeahead\",\n resultFormatter: \"resultFormatter\",\n resultTemplate: \"resultTemplate\",\n selectOnExact: \"selectOnExact\",\n showHint: \"showHint\",\n placement: \"placement\",\n popperOptions: \"popperOptions\",\n popupClass: \"popupClass\"\n },\n outputs: {\n selectItem: \"selectItem\"\n },\n exportAs: [\"ngbTypeahead\"],\n standalone: true,\n features: [i0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgbTypeahead),\n multi: true\n }]), i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return NgbTypeahead;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbTypeaheadModule = /*#__PURE__*/(() => {\n class NgbTypeaheadModule {\n static {\n this.ɵfac = function NgbTypeaheadModule_Factory(t) {\n return new (t || NgbTypeaheadModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbTypeaheadModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbTypeaheadModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\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 */\nlet NgbOffcanvasConfig = /*#__PURE__*/(() => {\n class NgbOffcanvasConfig {\n constructor() {\n this._ngbConfig = inject(NgbConfig);\n this.backdrop = true;\n this.keyboard = true;\n this.position = 'start';\n this.scroll = false;\n }\n get animation() {\n return this._animation ?? this._ngbConfig.animation;\n }\n set animation(animation) {\n this._animation = animation;\n }\n static {\n this.ɵfac = function NgbOffcanvasConfig_Factory(t) {\n return new (t || NgbOffcanvasConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbOffcanvasConfig,\n factory: NgbOffcanvasConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbOffcanvasConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nclass NgbActiveOffcanvas {\n /**\n * Closes the offcanvas with an optional `result` value.\n *\n * The `NgbOffcanvasRef.result` promise will be resolved with the provided value.\n */\n close(result) {}\n /**\n * Dismisses the offcanvas with an optional `reason` value.\n *\n * The `NgbOffcanvasRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) {}\n}\n/**\n * A reference to the newly opened offcanvas returned by the `NgbOffcanvas.open()` method.\n *\n * @since 12.1.0\n */\nclass NgbOffcanvasRef {\n /**\n * The instance of a component used for the offcanvas content.\n *\n * When a `TemplateRef` is used as the content or when the offcanvas is closed, will return `undefined`.\n */\n get componentInstance() {\n if (this._contentRef && this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n /**\n * The observable that emits when the offcanvas is closed via the `.close()` method.\n *\n * It will emit the result passed to the `.close()` method.\n */\n get closed() {\n return this._closed.asObservable().pipe(takeUntil(this._hidden));\n }\n /**\n * The observable that emits when the offcanvas is dismissed via the `.dismiss()` method.\n *\n * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n * reasons like backdrop click or ESC key press.\n */\n get dismissed() {\n return this._dismissed.asObservable().pipe(takeUntil(this._hidden));\n }\n /**\n * The observable that emits when both offcanvas window and backdrop are closed and animations were finished.\n * At this point offcanvas and backdrop elements will be removed from the DOM tree.\n *\n * This observable will be completed after emitting.\n */\n get hidden() {\n return this._hidden.asObservable();\n }\n /**\n * The observable that emits when offcanvas is fully visible and animation was finished.\n * The offcanvas DOM element is always available synchronously after calling 'offcanvas.open()' service.\n *\n * This observable will be completed after emitting.\n * It will not emit, if offcanvas is closed before open animation is finished.\n */\n get shown() {\n return this._panelCmptRef.instance.shown.asObservable();\n }\n constructor(_panelCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n this._panelCmptRef = _panelCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n this._closed = new Subject();\n this._dismissed = new Subject();\n this._hidden = new Subject();\n _panelCmptRef.instance.dismissEvent.subscribe(reason => {\n this.dismiss(reason);\n });\n if (_backdropCmptRef) {\n _backdropCmptRef.instance.dismissEvent.subscribe(reason => {\n this.dismiss(reason);\n });\n }\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => {});\n }\n /**\n * Closes the offcanvas with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result) {\n if (this._panelCmptRef) {\n this._closed.next(result);\n this._resolve(result);\n this._removeOffcanvasElements();\n }\n }\n _dismiss(reason) {\n this._dismissed.next(reason);\n this._reject(reason);\n this._removeOffcanvasElements();\n }\n /**\n * Dismisses the offcanvas with an optional `reason` value.\n *\n * The `NgbOffcanvasRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) {\n if (this._panelCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n } else {\n const dismiss = this._beforeDismiss();\n if (isPromise(dismiss)) {\n dismiss.then(result => {\n if (result !== false) {\n this._dismiss(reason);\n }\n }, () => {});\n } else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n _removeOffcanvasElements() {\n const panelTransition$ = this._panelCmptRef.instance.hide();\n const backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n // hiding panel\n panelTransition$.subscribe(() => {\n const {\n nativeElement\n } = this._panelCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._panelCmptRef.destroy();\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._panelCmptRef = null;\n this._contentRef = null;\n });\n // hiding backdrop\n backdropTransition$.subscribe(() => {\n if (this._backdropCmptRef) {\n const {\n nativeElement\n } = this._backdropCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._backdropCmptRef.destroy();\n this._backdropCmptRef = null;\n }\n });\n // all done\n zip(panelTransition$, backdropTransition$).subscribe(() => {\n this._hidden.next();\n this._hidden.complete();\n });\n }\n}\nvar OffcanvasDismissReasons = /*#__PURE__*/function (OffcanvasDismissReasons) {\n OffcanvasDismissReasons[OffcanvasDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\n OffcanvasDismissReasons[OffcanvasDismissReasons[\"ESC\"] = 1] = \"ESC\";\n return OffcanvasDismissReasons;\n}(OffcanvasDismissReasons || {});\nlet NgbOffcanvasBackdrop = /*#__PURE__*/(() => {\n class NgbOffcanvasBackdrop {\n constructor() {\n this._nativeElement = inject(ElementRef).nativeElement;\n this._zone = inject(NgZone);\n this.dismissEvent = new EventEmitter();\n }\n ngOnInit() {\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n ngbRunTransition(this._zone, this._nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, {\n animation: this.animation,\n runningTransition: 'continue'\n });\n });\n }\n hide() {\n return ngbRunTransition(this._zone, this._nativeElement, ({\n classList\n }) => classList.remove('show'), {\n animation: this.animation,\n runningTransition: 'stop'\n });\n }\n dismiss() {\n if (!this.static) {\n this.dismissEvent.emit(OffcanvasDismissReasons.BACKDROP_CLICK);\n }\n }\n static {\n this.ɵfac = function NgbOffcanvasBackdrop_Factory(t) {\n return new (t || NgbOffcanvasBackdrop)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbOffcanvasBackdrop,\n selectors: [[\"ngb-offcanvas-backdrop\"]],\n hostVars: 6,\n hostBindings: function NgbOffcanvasBackdrop_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mousedown\", function NgbOffcanvasBackdrop_mousedown_HostBindingHandler() {\n return ctx.dismiss();\n });\n }\n if (rf & 2) {\n i0.ɵɵclassMap(\"offcanvas-backdrop\" + (ctx.backdropClass ? \" \" + ctx.backdropClass : \"\"));\n i0.ɵɵclassProp(\"show\", !ctx.animation)(\"fade\", ctx.animation);\n }\n },\n inputs: {\n animation: \"animation\",\n backdropClass: \"backdropClass\",\n static: \"static\"\n },\n outputs: {\n dismissEvent: \"dismiss\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 0,\n vars: 0,\n template: function NgbOffcanvasBackdrop_Template(rf, ctx) {},\n encapsulation: 2\n });\n }\n }\n return NgbOffcanvasBackdrop;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbOffcanvasPanel = /*#__PURE__*/(() => {\n class NgbOffcanvasPanel {\n constructor() {\n this._document = inject(DOCUMENT);\n this._elRef = inject(ElementRef);\n this._zone = inject(NgZone);\n this._closed$ = new Subject();\n this._elWithFocus = null; // element that is focused prior to offcanvas opening\n this.keyboard = true;\n this.position = 'start';\n this.dismissEvent = new EventEmitter();\n this.shown = new Subject();\n this.hidden = new Subject();\n }\n dismiss(reason) {\n this.dismissEvent.emit(reason);\n }\n ngOnInit() {\n this._elWithFocus = this._document.activeElement;\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this._show();\n });\n }\n ngOnDestroy() {\n this._disableEventHandling();\n }\n hide() {\n const context = {\n animation: this.animation,\n runningTransition: 'stop'\n };\n const offcanvasTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, element => {\n element.classList.remove('showing');\n element.classList.add('hiding');\n return () => element.classList.remove('show', 'hiding');\n }, context);\n offcanvasTransition$.subscribe(() => {\n this.hidden.next();\n this.hidden.complete();\n });\n this._disableEventHandling();\n this._restoreFocus();\n return offcanvasTransition$;\n }\n _show() {\n const context = {\n animation: this.animation,\n runningTransition: 'continue'\n };\n const offcanvasTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show', 'showing');\n return () => element.classList.remove('showing');\n }, context);\n offcanvasTransition$.subscribe(() => {\n this.shown.next();\n this.shown.complete();\n });\n this._enableEventHandling();\n this._setFocus();\n }\n _enableEventHandling() {\n const {\n nativeElement\n } = this._elRef;\n this._zone.runOutsideAngular(() => {\n fromEvent(nativeElement, 'keydown').pipe(takeUntil(this._closed$), /* eslint-disable-next-line deprecation/deprecation */\n filter(e => e.which === Key.Escape)).subscribe(event => {\n if (this.keyboard) {\n requestAnimationFrame(() => {\n if (!event.defaultPrevented) {\n this._zone.run(() => this.dismiss(OffcanvasDismissReasons.ESC));\n }\n });\n }\n });\n });\n }\n _disableEventHandling() {\n this._closed$.next();\n }\n _setFocus() {\n const {\n nativeElement\n } = this._elRef;\n if (!nativeElement.contains(document.activeElement)) {\n const autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`);\n const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n const elementToFocus = autoFocusable || firstFocusable || nativeElement;\n elementToFocus.focus();\n }\n }\n _restoreFocus() {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n let elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n } else {\n elementToFocus = body;\n }\n this._zone.runOutsideAngular(() => {\n setTimeout(() => elementToFocus.focus());\n this._elWithFocus = null;\n });\n }\n static {\n this.ɵfac = function NgbOffcanvasPanel_Factory(t) {\n return new (t || NgbOffcanvasPanel)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgbOffcanvasPanel,\n selectors: [[\"ngb-offcanvas-panel\"]],\n hostAttrs: [\"role\", \"dialog\", \"tabindex\", \"-1\"],\n hostVars: 5,\n hostBindings: function NgbOffcanvasPanel_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-modal\", true)(\"aria-labelledby\", ctx.ariaLabelledBy)(\"aria-describedby\", ctx.ariaDescribedBy);\n i0.ɵɵclassMap(\"offcanvas offcanvas-\" + ctx.position + (ctx.panelClass ? \" \" + ctx.panelClass : \"\"));\n }\n },\n inputs: {\n animation: \"animation\",\n ariaLabelledBy: \"ariaLabelledBy\",\n ariaDescribedBy: \"ariaDescribedBy\",\n keyboard: \"keyboard\",\n panelClass: \"panelClass\",\n position: \"position\"\n },\n outputs: {\n dismissEvent: \"dismiss\"\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function NgbOffcanvasPanel_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n }\n }\n return NgbOffcanvasPanel;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbOffcanvasStack = /*#__PURE__*/(() => {\n class NgbOffcanvasStack {\n constructor() {\n this._applicationRef = inject(ApplicationRef);\n this._injector = inject(Injector);\n this._document = inject(DOCUMENT);\n this._scrollBar = inject(ScrollBar);\n this._activePanelCmptHasChanged = new Subject();\n this._scrollBarRestoreFn = null;\n this._backdropAttributes = ['animation', 'backdropClass'];\n this._panelAttributes = ['animation', 'ariaDescribedBy', 'ariaLabelledBy', 'keyboard', 'panelClass', 'position'];\n this._activeInstance = new EventEmitter();\n const ngZone = inject(NgZone);\n // Trap focus on active PanelCmpt\n this._activePanelCmptHasChanged.subscribe(() => {\n if (this._panelCmpt) {\n ngbFocusTrap(ngZone, this._panelCmpt.location.nativeElement, this._activePanelCmptHasChanged);\n }\n });\n }\n _restoreScrollBar() {\n const scrollBarRestoreFn = this._scrollBarRestoreFn;\n if (scrollBarRestoreFn) {\n this._scrollBarRestoreFn = null;\n scrollBarRestoreFn();\n }\n }\n _hideScrollBar() {\n if (!this._scrollBarRestoreFn) {\n this._scrollBarRestoreFn = this._scrollBar.hide();\n }\n }\n open(contentInjector, content, options) {\n const containerEl = options.container instanceof HTMLElement ? options.container : isDefined(options.container) ? this._document.querySelector(options.container) : this._document.body;\n if (!containerEl) {\n throw new Error(`The specified offcanvas container \"${options.container || 'body'}\" was not found in the DOM.`);\n }\n if (!options.scroll) {\n this._hideScrollBar();\n }\n const activeOffcanvas = new NgbActiveOffcanvas();\n const contentRef = this._getContentRef(options.injector || contentInjector, content, activeOffcanvas);\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(containerEl) : undefined;\n let panelCmptRef = this._attachWindowComponent(containerEl, contentRef.nodes);\n let ngbOffcanvasRef = new NgbOffcanvasRef(panelCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerOffcanvasRef(ngbOffcanvasRef);\n this._registerPanelCmpt(panelCmptRef);\n ngbOffcanvasRef.hidden.pipe(finalize(() => this._restoreScrollBar())).subscribe();\n activeOffcanvas.close = result => {\n ngbOffcanvasRef.close(result);\n };\n activeOffcanvas.dismiss = reason => {\n ngbOffcanvasRef.dismiss(reason);\n };\n this._applyPanelOptions(panelCmptRef.instance, options);\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n panelCmptRef.changeDetectorRef.detectChanges();\n return ngbOffcanvasRef;\n }\n get activeInstance() {\n return this._activeInstance;\n }\n dismiss(reason) {\n this._offcanvasRef?.dismiss(reason);\n }\n hasOpenOffcanvas() {\n return !!this._offcanvasRef;\n }\n _attachBackdrop(containerEl) {\n let backdropCmptRef = createComponent(NgbOffcanvasBackdrop, {\n environmentInjector: this._applicationRef.injector,\n elementInjector: this._injector\n });\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n _attachWindowComponent(containerEl, projectableNodes) {\n let panelCmptRef = createComponent(NgbOffcanvasPanel, {\n environmentInjector: this._applicationRef.injector,\n elementInjector: this._injector,\n projectableNodes\n });\n this._applicationRef.attachView(panelCmptRef.hostView);\n containerEl.appendChild(panelCmptRef.location.nativeElement);\n return panelCmptRef;\n }\n _applyPanelOptions(windowInstance, options) {\n this._panelAttributes.forEach(optionName => {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n });\n }\n _applyBackdropOptions(backdropInstance, options) {\n this._backdropAttributes.forEach(optionName => {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n });\n backdropInstance.static = options.backdrop === 'static';\n }\n _getContentRef(contentInjector, content, activeOffcanvas) {\n if (!content) {\n return new ContentRef([]);\n } else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeOffcanvas);\n } else if (isString(content)) {\n return this._createFromString(content);\n } else {\n return this._createFromComponent(contentInjector, content, activeOffcanvas);\n }\n }\n _createFromTemplateRef(templateRef, activeOffcanvas) {\n const context = {\n $implicit: activeOffcanvas,\n close(result) {\n activeOffcanvas.close(result);\n },\n dismiss(reason) {\n activeOffcanvas.dismiss(reason);\n }\n };\n const viewRef = templateRef.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n _createFromString(content) {\n const component = this._document.createTextNode(`${content}`);\n return new ContentRef([[component]]);\n }\n _createFromComponent(contentInjector, componentType, context) {\n const elementInjector = Injector.create({\n providers: [{\n provide: NgbActiveOffcanvas,\n useValue: context\n }],\n parent: contentInjector\n });\n const componentRef = createComponent(componentType, {\n environmentInjector: this._applicationRef.injector,\n elementInjector\n });\n const componentNativeEl = componentRef.location.nativeElement;\n this._applicationRef.attachView(componentRef.hostView);\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n }\n _registerOffcanvasRef(ngbOffcanvasRef) {\n const unregisterOffcanvasRef = () => {\n this._offcanvasRef = undefined;\n this._activeInstance.emit(this._offcanvasRef);\n };\n this._offcanvasRef = ngbOffcanvasRef;\n this._activeInstance.emit(this._offcanvasRef);\n ngbOffcanvasRef.result.then(unregisterOffcanvasRef, unregisterOffcanvasRef);\n }\n _registerPanelCmpt(ngbPanelCmpt) {\n this._panelCmpt = ngbPanelCmpt;\n this._activePanelCmptHasChanged.next();\n ngbPanelCmpt.onDestroy(() => {\n this._panelCmpt = undefined;\n this._activePanelCmptHasChanged.next();\n });\n }\n static {\n this.ɵfac = function NgbOffcanvasStack_Factory(t) {\n return new (t || NgbOffcanvasStack)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbOffcanvasStack,\n factory: NgbOffcanvasStack.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbOffcanvasStack;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\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 */\nlet NgbOffcanvas = /*#__PURE__*/(() => {\n class NgbOffcanvas {\n constructor() {\n this._injector = inject(Injector);\n this._offcanvasStack = inject(NgbOffcanvasStack);\n this._config = inject(NgbOffcanvasConfig);\n }\n /**\n * Opens a new offcanvas panel with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveOffcanvas` class. You can then\n * use `NgbActiveOffcanvas` methods to close / dismiss offcanvas from \"inside\" of your component.\n *\n * Also see the [`NgbOffcanvasOptions`](#/components/offcanvas/api#NgbOffcanvasOptions) for the list of supported\n * options.\n */\n open(content, options = {}) {\n const combinedOptions = {\n ...this._config,\n animation: this._config.animation,\n ...options\n };\n return this._offcanvasStack.open(this._injector, content, combinedOptions);\n }\n /**\n * Returns an observable that holds the active offcanvas instance.\n */\n get activeInstance() {\n return this._offcanvasStack.activeInstance;\n }\n /**\n * Dismisses the currently displayed offcanvas with the supplied reason.\n */\n dismiss(reason) {\n this._offcanvasStack.dismiss(reason);\n }\n /**\n * Indicates if there is currently an open offcanvas in the application.\n */\n hasOpenOffcanvas() {\n return this._offcanvasStack.hasOpenOffcanvas();\n }\n static {\n this.ɵfac = function NgbOffcanvas_Factory(t) {\n return new (t || NgbOffcanvas)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NgbOffcanvas,\n factory: NgbOffcanvas.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return NgbOffcanvas;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgbOffcanvasModule = /*#__PURE__*/(() => {\n class NgbOffcanvasModule {\n static {\n this.ɵfac = function NgbOffcanvasModule_Factory(t) {\n return new (t || NgbOffcanvasModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbOffcanvasModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return NgbOffcanvasModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst NGB_MODULES = [NgbAccordionModule, NgbAlertModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbOffcanvasModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbScrollSpyModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule];\nlet NgbModule = /*#__PURE__*/(() => {\n class NgbModule {\n static {\n this.ɵfac = function NgbModule_Factory(t) {\n return new (t || NgbModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgbModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [NGB_MODULES, NgbAccordionModule, NgbAlertModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbOffcanvasModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbScrollSpyModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule]\n });\n }\n }\n return NgbModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ModalDismissReasons, NgbAccordionBody, NgbAccordionButton, NgbAccordionCollapse, NgbAccordionConfig, NgbAccordionDirective, NgbAccordionHeader, NgbAccordionItem, NgbAccordionModule, NgbAccordionToggle, NgbActiveModal, NgbActiveOffcanvas, NgbAlert, NgbAlertConfig, NgbAlertModule, NgbCalendar, NgbCalendarBuddhist, NgbCalendarEthiopian, NgbCalendarGregorian, NgbCalendarHebrew, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarPersian, NgbCarousel, NgbCarouselConfig, NgbCarouselModule, NgbCollapse, NgbCollapseConfig, NgbCollapseModule, NgbConfig, NgbDate, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDateParserFormatter, NgbDateStructAdapter, NgbDatepicker, NgbDatepickerConfig, NgbDatepickerContent, NgbDatepickerI18n, NgbDatepickerI18nAmharic, NgbDatepickerI18nDefault, NgbDatepickerI18nHebrew, NgbDatepickerKeyboardService, NgbDatepickerModule, NgbDatepickerMonth, NgbDropdown, NgbDropdownAnchor, NgbDropdownButtonItem, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownModule, NgbDropdownToggle, NgbHighlight, NgbInputDatepicker, NgbInputDatepickerConfig, NgbModal, NgbModalConfig, NgbModalModule, NgbModalRef, NgbModule, NgbNav, NgbNavConfig, NgbNavContent, NgbNavItem, NgbNavItemRole, NgbNavLink, NgbNavLinkBase, NgbNavLinkButton, NgbNavModule, NgbNavOutlet, NgbNavPane, NgbOffcanvas, NgbOffcanvasConfig, NgbOffcanvasModule, NgbOffcanvasRef, NgbPagination, NgbPaginationConfig, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationModule, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPages, NgbPaginationPrevious, NgbPopover, NgbPopoverConfig, NgbPopoverModule, NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule, NgbProgressbarStacked, NgbRating, NgbRatingConfig, NgbRatingModule, NgbScrollSpy, NgbScrollSpyConfig, NgbScrollSpyFragment, NgbScrollSpyItem, NgbScrollSpyMenu, NgbScrollSpyModule, NgbScrollSpyService, NgbSlide, NgbSlideEventDirection, NgbSlideEventSource, NgbTimeAdapter, NgbTimepicker, NgbTimepickerConfig, NgbTimepickerI18n, NgbTimepickerModule, NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule, NgbTooltip, NgbTooltipConfig, NgbTooltipModule, NgbTypeahead, NgbTypeaheadConfig, NgbTypeaheadModule, OffcanvasDismissReasons };\n","/**\n * @license Angular v17.3.4\n * (c) 2010-2024 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, Injectable, ANIMATION_MODULE_TYPE, ViewEncapsulation, ɵRuntimeError, Inject } from '@angular/core';\n\n/**\n * @description Constants for the categories of parameters that can be defined for animations.\n *\n * A corresponding function defines a set of parameters for each category, and\n * collects them into a corresponding `AnimationMetadata` object.\n *\n * @publicApi\n */\nvar AnimationMetadataType = /*#__PURE__*/function (AnimationMetadataType) {\n /**\n * Associates a named animation state with a set of CSS styles.\n * See [`state()`](api/animations/state)\n */\n AnimationMetadataType[AnimationMetadataType[\"State\"] = 0] = \"State\";\n /**\n * Data for a transition from one animation state to another.\n * See `transition()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Transition\"] = 1] = \"Transition\";\n /**\n * Contains a set of animation steps.\n * See `sequence()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Sequence\"] = 2] = \"Sequence\";\n /**\n * Contains a set of animation steps.\n * See `{@link animations/group group()}`\n */\n AnimationMetadataType[AnimationMetadataType[\"Group\"] = 3] = \"Group\";\n /**\n * Contains an animation step.\n * See `animate()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Animate\"] = 4] = \"Animate\";\n /**\n * Contains a set of animation steps.\n * See `keyframes()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Keyframes\"] = 5] = \"Keyframes\";\n /**\n * Contains a set of CSS property-value pairs into a named style.\n * See `style()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Style\"] = 6] = \"Style\";\n /**\n * Associates an animation with an entry trigger that can be attached to an element.\n * See `trigger()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Trigger\"] = 7] = \"Trigger\";\n /**\n * Contains a re-usable animation.\n * See `animation()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Reference\"] = 8] = \"Reference\";\n /**\n * Contains data to use in executing child animations returned by a query.\n * See `animateChild()`\n */\n AnimationMetadataType[AnimationMetadataType[\"AnimateChild\"] = 9] = \"AnimateChild\";\n /**\n * Contains animation parameters for a re-usable animation.\n * See `useAnimation()`\n */\n AnimationMetadataType[AnimationMetadataType[\"AnimateRef\"] = 10] = \"AnimateRef\";\n /**\n * Contains child-animation query data.\n * See `query()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Query\"] = 11] = \"Query\";\n /**\n * Contains data for staggering an animation sequence.\n * See `stagger()`\n */\n AnimationMetadataType[AnimationMetadataType[\"Stagger\"] = 12] = \"Stagger\";\n return AnimationMetadataType;\n}(AnimationMetadataType || {});\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * <!-- somewhere inside of my-component-tpl.html -->\n * <div [@myAnimationTrigger]=\"myStatusExp\">...</div>\n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n * <div [@.disabled]=\"isDisabled\">\n * <div [@childAnimation]=\"exp\"></div>\n * </div>\n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return {\n type: AnimationMetadataType.Trigger,\n name,\n definitions,\n options: {}\n };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return {\n type: AnimationMetadataType.Animate,\n styles,\n timings\n };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return {\n type: AnimationMetadataType.Group,\n steps,\n options\n };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return {\n type: AnimationMetadataType.Sequence,\n steps,\n options\n };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return {\n type: AnimationMetadataType.Style,\n styles: tokens,\n offset: null\n };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return {\n type: AnimationMetadataType.State,\n name,\n styles,\n options\n };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return {\n type: AnimationMetadataType.Keyframes,\n steps\n };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n * <div class=\"alert is-helpful\">\n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n * </div>\n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```HTML\n * <div [@myAnimationTrigger]=\"myStatusExp\">\n * ...\n * </div>\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```HTML\n * <div [@myAnimationTrigger]=\"{\n * value: stepName,\n * params: { target: currentTarget }\n * }\">\n * ...\n * </div>\n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return {\n type: AnimationMetadataType.Transition,\n expr: stateChangeExpr,\n animation: steps,\n options\n };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return {\n type: AnimationMetadataType.Reference,\n animation: steps,\n options\n };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return {\n type: AnimationMetadataType.AnimateChild,\n options\n };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return {\n type: AnimationMetadataType.AnimateRef,\n animation,\n options\n };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n * <div class=\"alert is-helpful\">\n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n * </div>\n *\n * <div class=\"alert is-important\">\n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n * </div>\n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n * <div [@queryAnimation]=\"exp\">\n * <h1>Title</h1>\n * <div class=\"content\">\n * Blah blah blah\n * </div>\n * </div>\n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return {\n type: AnimationMetadataType.Query,\n selector,\n animation,\n options\n };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * <!-- list.component.html -->\n * <button (click)=\"toggle()\">Show / Hide Items</button>\n * <hr />\n * <div [@listAnimation]=\"items.length\">\n * <div *ngFor=\"let item of items\">\n * {{ item }}\n * </div>\n * </div>\n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return {\n type: AnimationMetadataType.Stagger,\n timings,\n animation\n };\n}\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code> method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nlet AnimationBuilder = /*#__PURE__*/(() => {\n class AnimationBuilder {\n static {\n this.ɵfac = function AnimationBuilder_Factory(t) {\n return new (t || AnimationBuilder)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AnimationBuilder,\n factory: () => (() => inject(BrowserAnimationBuilder))(),\n providedIn: 'root'\n });\n }\n }\n return AnimationBuilder;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * A factory object returned from the\n * <code>[AnimationBuilder.build](api/animations/AnimationBuilder#build)()</code>\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {}\nlet BrowserAnimationBuilder = /*#__PURE__*/(() => {\n class BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this.animationModuleType = inject(ANIMATION_MODULE_TYPE, {\n optional: true\n });\n this._nextAnimationId = 0;\n const typeData = {\n id: '0',\n encapsulation: ViewEncapsulation.None,\n styles: [],\n data: {\n animation: []\n }\n };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n if (this.animationModuleType === null && !isAnimationRenderer(this._renderer)) {\n // We only support AnimationRenderer & DynamicDelegationRenderer for this AnimationBuilder\n throw new ɵRuntimeError(3600 /* RuntimeErrorCode.BROWSER_ANIMATION_BUILDER_INJECTED_WITHOUT_ANIMATIONS */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Angular detected that the `AnimationBuilder` was injected, but animation support was not enabled. ' + 'Please make sure that you enable animations in your application by calling `provideAnimations()` or `provideAnimationsAsync()` function.');\n }\n }\n build(animation) {\n const id = this._nextAnimationId;\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n static {\n this.ɵfac = function BrowserAnimationBuilder_Factory(t) {\n return new (t || BrowserAnimationBuilder)(i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BrowserAnimationBuilder,\n factory: BrowserAnimationBuilder.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return BrowserAnimationBuilder;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n return unwrapAnimationRenderer(this._renderer)?.engine?.players[this.id]?.getPosition() ?? 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n/**\n * The following 2 methods cannot reference their correct types (AnimationRenderer &\n * DynamicDelegationRenderer) since this would introduce a import cycle.\n */\nfunction unwrapAnimationRenderer(renderer) {\n const type = renderer.ɵtype;\n if (type === 0 /* AnimationRendererType.Regular */) {\n return renderer;\n } else if (type === 1 /* AnimationRendererType.Delegated */) {\n return renderer.animationRenderer;\n }\n return null;\n}\nfunction isAnimationRenderer(renderer) {\n const type = renderer.ɵtype;\n return type === 0 /* AnimationRendererType.Regular */ || type === 1 /* AnimationRendererType.Delegated */;\n}\n\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see {@link animate}\n * @see {@link AnimationPlayer}\n * @see {@link ɵAnimationGroupPlayer AnimationGroupPlayer}\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._originalOnDoneFns = [];\n this._originalOnStartFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._originalOnStartFns.push(fn);\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._originalOnDoneFns.push(fn);\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() {}\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n queueMicrotask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() {}\n restart() {}\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n this._finished = false;\n this._onStartFns = this._originalOnStartFns;\n this._onDoneFns = this._originalOnDoneFns;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see {@link AnimationPlayer}\n * @see {@link animations/group group}\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n queueMicrotask(() => this._onFinish());\n } else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\nconst ɵPRE_STYLE = '!';\n\n/**\n * @module\n * @description\n * Entry point for all animation APIs of the animation package.\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, AnimationMetadataType, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, ɵPRE_STYLE };\n","import * as i0 from '@angular/core';\nimport { Directive, InjectionToken, inject, Injectable, ComponentFactoryResolver, ApplicationRef, SecurityContext, Injector, Inject, Component, HostBinding, HostListener, makeEnvironmentProviders, NgModule } from '@angular/core';\nimport { style, state, animate, transition, trigger } from '@angular/animations';\nimport { DOCUMENT, NgIf } from '@angular/common';\nimport { Subject } from 'rxjs';\nimport * as i2 from '@angular/platform-browser';\nconst _c0 = [\"toast-component\", \"\"];\nfunction Toast_button_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 5);\n i0.ɵɵlistener(\"click\", function Toast_button_0_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.remove());\n });\n i0.ɵɵelementStart(1, \"span\", 6);\n i0.ɵɵtext(2, \"\\xD7\");\n i0.ɵɵelementEnd()();\n }\n}\nfunction Toast_div_1_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\"[\", ctx_r1.duplicatesCount + 1, \"]\");\n }\n}\nfunction Toast_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1);\n i0.ɵɵtemplate(2, Toast_div_1_ng_container_2_Template, 2, 1, \"ng-container\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1.options.titleClass);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.title);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.title, \" \");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.duplicatesCount);\n }\n}\nfunction Toast_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 7);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1.options.messageClass);\n i0.ɵɵproperty(\"innerHTML\", ctx_r1.message, i0.ɵɵsanitizeHtml);\n }\n}\nfunction Toast_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 8);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1.options.messageClass);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.message);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.message, \" \");\n }\n}\nfunction Toast_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵelement(1, \"div\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"width\", ctx_r1.width + \"%\");\n }\n}\nfunction ToastNoAnimation_button_0_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 5);\n i0.ɵɵlistener(\"click\", function ToastNoAnimation_button_0_Template_button_click_0_listener() {\n i0.ɵɵrestoreView(_r1);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.remove());\n });\n i0.ɵɵelementStart(1, \"span\", 6);\n i0.ɵɵtext(2, \"\\xD7\");\n i0.ɵɵelementEnd()();\n }\n}\nfunction ToastNoAnimation_div_1_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\"[\", ctx_r1.duplicatesCount + 1, \"]\");\n }\n}\nfunction ToastNoAnimation_div_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1);\n i0.ɵɵtemplate(2, ToastNoAnimation_div_1_ng_container_2_Template, 2, 1, \"ng-container\", 4);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1.options.titleClass);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.title);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.title, \" \");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.duplicatesCount);\n }\n}\nfunction ToastNoAnimation_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 7);\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1.options.messageClass);\n i0.ɵɵproperty(\"innerHTML\", ctx_r1.message, i0.ɵɵsanitizeHtml);\n }\n}\nfunction ToastNoAnimation_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 8);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1.options.messageClass);\n i0.ɵɵattribute(\"aria-label\", ctx_r1.message);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.message, \" \");\n }\n}\nfunction ToastNoAnimation_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵelement(1, \"div\", 9);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"width\", ctx_r1.width + \"%\");\n }\n}\nlet ToastContainerDirective = /*#__PURE__*/(() => {\n class ToastContainerDirective {\n el;\n constructor(el) {\n this.el = el;\n }\n getContainerElement() {\n return this.el.nativeElement;\n }\n static ɵfac = function ToastContainerDirective_Factory(t) {\n return new (t || ToastContainerDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ToastContainerDirective,\n selectors: [[\"\", \"toastContainer\", \"\"]],\n exportAs: [\"toastContainer\"],\n standalone: true\n });\n }\n return ToastContainerDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal {\n _attachedHost;\n /** The type of the component that will be instantiated for attachment. */\n component;\n /**\n * [Optional] Where the attached component should live in Angular's *logical* component tree.\n * This is different from where the component *renders*, which is determined by the PortalHost.\n * The origin necessary when the host is outside of the Angular application context.\n */\n viewContainerRef;\n /** Injector used for the instantiation of the component. */\n injector;\n constructor(component, injector) {\n this.component = component;\n this.injector = injector;\n }\n /** Attach this portal to a host. */\n attach(host, newestOnTop) {\n this._attachedHost = host;\n return host.attach(this, newestOnTop);\n }\n /** Detach this portal from its host */\n detach() {\n const host = this._attachedHost;\n if (host) {\n this._attachedHost = undefined;\n return host.detach();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalHost reference without performing `attach()`. This is used directly by\n * the PortalHost when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * Partial implementation of PortalHost that only deals with attaching a\n * ComponentPortal\n */\nclass BasePortalHost {\n /** The portal currently attached to the host. */\n _attachedPortal;\n /** A function that will permanently dispose this host. */\n _disposeFn;\n attach(portal, newestOnTop) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal, newestOnTop);\n }\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost();\n }\n this._attachedPortal = undefined;\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = undefined;\n }\n }\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n}\n\n/**\n * Reference to a toast opened via the Toastr service.\n */\nclass ToastRef {\n _overlayRef;\n /** The instance of component opened into the toast. */\n componentInstance;\n /** Count of duplicates of this toast */\n duplicatesCount = 0;\n /** Subject for notifying the user that the toast has finished closing. */\n _afterClosed = new Subject();\n /** triggered when toast is activated */\n _activate = new Subject();\n /** notifies the toast that it should close before the timeout */\n _manualClose = new Subject();\n /** notifies the toast that it should reset the timeouts */\n _resetTimeout = new Subject();\n /** notifies the toast that it should count a duplicate toast */\n _countDuplicate = new Subject();\n constructor(_overlayRef) {\n this._overlayRef = _overlayRef;\n }\n manualClose() {\n this._manualClose.next();\n this._manualClose.complete();\n }\n manualClosed() {\n return this._manualClose.asObservable();\n }\n timeoutReset() {\n return this._resetTimeout.asObservable();\n }\n countDuplicate() {\n return this._countDuplicate.asObservable();\n }\n /**\n * Close the toast.\n */\n close() {\n this._overlayRef.detach();\n this._afterClosed.next();\n this._manualClose.next();\n this._afterClosed.complete();\n this._manualClose.complete();\n this._activate.complete();\n this._resetTimeout.complete();\n this._countDuplicate.complete();\n }\n /** Gets an observable that is notified when the toast is finished closing. */\n afterClosed() {\n return this._afterClosed.asObservable();\n }\n isInactive() {\n return this._activate.isStopped;\n }\n activate() {\n this._activate.next();\n this._activate.complete();\n }\n /** Gets an observable that is notified when the toast has started opening. */\n afterActivate() {\n return this._activate.asObservable();\n }\n /** Reset the toast timouts and count duplicates */\n onDuplicate(resetTimeout, countDuplicate) {\n if (resetTimeout) {\n this._resetTimeout.next();\n }\n if (countDuplicate) {\n this._countDuplicate.next(++this.duplicatesCount);\n }\n }\n}\n\n/**\n * Everything a toast needs to launch\n */\nclass ToastPackage {\n toastId;\n config;\n message;\n title;\n toastType;\n toastRef;\n _onTap = new Subject();\n _onAction = new Subject();\n constructor(toastId, config, message, title, toastType, toastRef) {\n this.toastId = toastId;\n this.config = config;\n this.message = message;\n this.title = title;\n this.toastType = toastType;\n this.toastRef = toastRef;\n this.toastRef.afterClosed().subscribe(() => {\n this._onAction.complete();\n this._onTap.complete();\n });\n }\n /** Fired on click */\n triggerTap() {\n this._onTap.next();\n if (this.config.tapToDismiss) {\n this._onTap.complete();\n }\n }\n onTap() {\n return this._onTap.asObservable();\n }\n /** available for use in custom toast */\n triggerAction(action) {\n this._onAction.next(action);\n }\n onAction() {\n return this._onAction.asObservable();\n }\n}\nconst DefaultNoComponentGlobalConfig = {\n maxOpened: 0,\n autoDismiss: false,\n newestOnTop: true,\n preventDuplicates: false,\n countDuplicates: false,\n resetTimeoutOnDuplicate: false,\n includeTitleDuplicates: false,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n // Individual\n closeButton: false,\n disableTimeOut: false,\n timeOut: 5000,\n extendedTimeOut: 1000,\n enableHtml: false,\n progressBar: false,\n toastClass: 'ngx-toastr',\n positionClass: 'toast-top-right',\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n easing: 'ease-in',\n easeTime: 300,\n tapToDismiss: true,\n onActivateTick: false,\n progressAnimation: 'decreasing'\n};\nconst TOAST_CONFIG = new InjectionToken('ToastConfig');\n\n/**\n * A PortalHost for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n *\n * This is the only part of the portal core that directly touches the DOM.\n */\nclass DomPortalHost extends BasePortalHost {\n _hostDomElement;\n _componentFactoryResolver;\n _appRef;\n constructor(_hostDomElement, _componentFactoryResolver, _appRef) {\n super();\n this._hostDomElement = _hostDomElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n */\n attachComponentPortal(portal, newestOnTop) {\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the ChangeDetector for that component to the application (which\n // happens automatically when using a ViewContainer).\n componentRef = componentFactory.create(portal.injector);\n // When creating a component outside of a ViewContainer, we need to manually register\n // its ChangeDetector with the application. This API is unfortunately not yet published\n // in Angular core. The change detector must also be deregistered when the component\n // is destroyed to prevent memory leaks.\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n if (newestOnTop) {\n this._hostDomElement.insertBefore(this._getComponentRootNode(componentRef), this._hostDomElement.firstChild);\n } else {\n this._hostDomElement.appendChild(this._getComponentRootNode(componentRef));\n }\n return componentRef;\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n\n/** Container inside which all toasts will render. */\nlet OverlayContainer = /*#__PURE__*/(() => {\n class OverlayContainer {\n _document = inject(DOCUMENT);\n _containerElement;\n ngOnDestroy() {\n if (this._containerElement && this._containerElement.parentNode) {\n this._containerElement.parentNode.removeChild(this._containerElement);\n }\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body\n * and 'aria-live=\"polite\"'\n */\n _createContainer() {\n const container = this._document.createElement('div');\n container.classList.add('overlay-container');\n container.setAttribute('aria-live', 'polite');\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n static ɵfac = function OverlayContainer_Factory(t) {\n return new (t || OverlayContainer)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: OverlayContainer,\n factory: OverlayContainer.ɵfac,\n providedIn: 'root'\n });\n }\n return OverlayContainer;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n _portalHost;\n constructor(_portalHost) {\n this._portalHost = _portalHost;\n }\n attach(portal, newestOnTop = true) {\n return this._portalHost.attach(portal, newestOnTop);\n }\n /**\n * Detaches an overlay from a portal.\n * @returns Resolves when the overlay has been detached.\n */\n detach() {\n return this._portalHost.detach();\n }\n}\n\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalHost, so any kind of Portal can be loaded into one.\n */\nlet Overlay = /*#__PURE__*/(() => {\n class Overlay {\n _overlayContainer = inject(OverlayContainer);\n _componentFactoryResolver = inject(ComponentFactoryResolver);\n _appRef = inject(ApplicationRef);\n _document = inject(DOCUMENT);\n // Namespace panes by overlay container\n _paneElements = new Map();\n /**\n * Creates an overlay.\n * @returns A reference to the created overlay.\n */\n create(positionClass, overlayContainer) {\n // get existing pane if possible\n return this._createOverlayRef(this.getPaneElement(positionClass, overlayContainer));\n }\n getPaneElement(positionClass = '', overlayContainer) {\n if (!this._paneElements.get(overlayContainer)) {\n this._paneElements.set(overlayContainer, {});\n }\n if (!this._paneElements.get(overlayContainer)[positionClass]) {\n this._paneElements.get(overlayContainer)[positionClass] = this._createPaneElement(positionClass, overlayContainer);\n }\n return this._paneElements.get(overlayContainer)[positionClass];\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(positionClass, overlayContainer) {\n const pane = this._document.createElement('div');\n pane.id = 'toast-container';\n pane.classList.add(positionClass);\n pane.classList.add('toast-container');\n if (!overlayContainer) {\n this._overlayContainer.getContainerElement().appendChild(pane);\n } else {\n overlayContainer.getContainerElement().appendChild(pane);\n }\n return pane;\n }\n /**\n * Create a DomPortalHost into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal host.\n * @returns A portal host for the given DOM element.\n */\n _createPortalHost(pane) {\n return new DomPortalHost(pane, this._componentFactoryResolver, this._appRef);\n }\n /**\n * Creates an OverlayRef for an overlay in the given DOM element.\n * @param pane DOM element for the overlay\n */\n _createOverlayRef(pane) {\n return new OverlayRef(this._createPortalHost(pane));\n }\n static ɵfac = function Overlay_Factory(t) {\n return new (t || Overlay)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Overlay,\n factory: Overlay.ɵfac,\n providedIn: 'root'\n });\n }\n return Overlay;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ToastrService = /*#__PURE__*/(() => {\n class ToastrService {\n overlay;\n _injector;\n sanitizer;\n ngZone;\n toastrConfig;\n currentlyActive = 0;\n toasts = [];\n overlayContainer;\n previousToastMessage;\n index = 0;\n constructor(token, overlay, _injector, sanitizer, ngZone) {\n this.overlay = overlay;\n this._injector = _injector;\n this.sanitizer = sanitizer;\n this.ngZone = ngZone;\n this.toastrConfig = {\n ...token.default,\n ...token.config\n };\n if (token.config.iconClasses) {\n this.toastrConfig.iconClasses = {\n ...token.default.iconClasses,\n ...token.config.iconClasses\n };\n }\n }\n /** show toast */\n show(message, title, override = {}, type = '') {\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show successful toast */\n success(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.success || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show error toast */\n error(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.error || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show info toast */\n info(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.info || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /** show warning toast */\n warning(message, title, override = {}) {\n const type = this.toastrConfig.iconClasses.warning || '';\n return this._preBuildNotification(type, message, title, this.applyConfig(override));\n }\n /**\n * Remove all or a single toast by id\n */\n clear(toastId) {\n // Call every toastRef manualClose function\n for (const toast of this.toasts) {\n if (toastId !== undefined) {\n if (toast.toastId === toastId) {\n toast.toastRef.manualClose();\n return;\n }\n } else {\n toast.toastRef.manualClose();\n }\n }\n }\n /**\n * Remove and destroy a single toast by id\n */\n remove(toastId) {\n const found = this._findToast(toastId);\n if (!found) {\n return false;\n }\n found.activeToast.toastRef.close();\n this.toasts.splice(found.index, 1);\n this.currentlyActive = this.currentlyActive - 1;\n if (!this.toastrConfig.maxOpened || !this.toasts.length) {\n return false;\n }\n if (this.currentlyActive < this.toastrConfig.maxOpened && this.toasts[this.currentlyActive]) {\n const p = this.toasts[this.currentlyActive].toastRef;\n if (!p.isInactive()) {\n this.currentlyActive = this.currentlyActive + 1;\n p.activate();\n }\n }\n return true;\n }\n /**\n * Determines if toast message is already shown\n */\n findDuplicate(title = '', message = '', resetOnDuplicate, countDuplicates) {\n const {\n includeTitleDuplicates\n } = this.toastrConfig;\n for (const toast of this.toasts) {\n const hasDuplicateTitle = includeTitleDuplicates && toast.title === title;\n if ((!includeTitleDuplicates || hasDuplicateTitle) && toast.message === message) {\n toast.toastRef.onDuplicate(resetOnDuplicate, countDuplicates);\n return toast;\n }\n }\n return null;\n }\n /** create a clone of global config and apply individual settings */\n applyConfig(override = {}) {\n return {\n ...this.toastrConfig,\n ...override\n };\n }\n /**\n * Find toast object by id\n */\n _findToast(toastId) {\n for (let i = 0; i < this.toasts.length; i++) {\n if (this.toasts[i].toastId === toastId) {\n return {\n index: i,\n activeToast: this.toasts[i]\n };\n }\n }\n return null;\n }\n /**\n * Determines the need to run inside angular's zone then builds the toast\n */\n _preBuildNotification(toastType, message, title, config) {\n if (config.onActivateTick) {\n return this.ngZone.run(() => this._buildNotification(toastType, message, title, config));\n }\n return this._buildNotification(toastType, message, title, config);\n }\n /**\n * Creates and attaches toast data to component\n * returns the active toast, or in case preventDuplicates is enabled the original/non-duplicate active toast.\n */\n _buildNotification(toastType, message, title, config) {\n if (!config.toastComponent) {\n throw new Error('toastComponent required');\n }\n // max opened and auto dismiss = true\n // if timeout = 0 resetting it would result in setting this.hideTime = Date.now(). Hence, we only want to reset timeout if there is\n // a timeout at all\n const duplicate = this.findDuplicate(title, message, this.toastrConfig.resetTimeoutOnDuplicate && config.timeOut > 0, this.toastrConfig.countDuplicates);\n if ((this.toastrConfig.includeTitleDuplicates && title || message) && this.toastrConfig.preventDuplicates && duplicate !== null) {\n return duplicate;\n }\n this.previousToastMessage = message;\n let keepInactive = false;\n if (this.toastrConfig.maxOpened && this.currentlyActive >= this.toastrConfig.maxOpened) {\n keepInactive = true;\n if (this.toastrConfig.autoDismiss) {\n this.clear(this.toasts[0].toastId);\n }\n }\n const overlayRef = this.overlay.create(config.positionClass, this.overlayContainer);\n this.index = this.index + 1;\n let sanitizedMessage = message;\n if (message && config.enableHtml) {\n sanitizedMessage = this.sanitizer.sanitize(SecurityContext.HTML, message);\n }\n const toastRef = new ToastRef(overlayRef);\n const toastPackage = new ToastPackage(this.index, config, sanitizedMessage, title, toastType, toastRef);\n /** New injector that contains an instance of `ToastPackage`. */\n const providers = [{\n provide: ToastPackage,\n useValue: toastPackage\n }];\n const toastInjector = Injector.create({\n providers,\n parent: this._injector\n });\n const component = new ComponentPortal(config.toastComponent, toastInjector);\n const portal = overlayRef.attach(component, config.newestOnTop);\n toastRef.componentInstance = portal.instance;\n const ins = {\n toastId: this.index,\n title: title || '',\n message: message || '',\n toastRef,\n onShown: toastRef.afterActivate(),\n onHidden: toastRef.afterClosed(),\n onTap: toastPackage.onTap(),\n onAction: toastPackage.onAction(),\n portal\n };\n if (!keepInactive) {\n this.currentlyActive = this.currentlyActive + 1;\n setTimeout(() => {\n ins.toastRef.activate();\n });\n }\n this.toasts.push(ins);\n return ins;\n }\n static ɵfac = function ToastrService_Factory(t) {\n return new (t || ToastrService)(i0.ɵɵinject(TOAST_CONFIG), i0.ɵɵinject(Overlay), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i2.DomSanitizer), i0.ɵɵinject(i0.NgZone));\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ToastrService,\n factory: ToastrService.ɵfac,\n providedIn: 'root'\n });\n }\n return ToastrService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet Toast = /*#__PURE__*/(() => {\n class Toast {\n toastrService;\n toastPackage;\n ngZone;\n message;\n title;\n options;\n duplicatesCount;\n originalTimeout;\n /** width of progress bar */\n width = -1;\n /** a combination of toast type and options.toastClass */\n toastClasses = '';\n /** controls animation */\n state;\n /** hides component when waiting to be displayed */\n get displayStyle() {\n if (this.state.value === 'inactive') {\n return 'none';\n }\n return;\n }\n timeout;\n intervalId;\n hideTime;\n sub;\n sub1;\n sub2;\n sub3;\n constructor(toastrService, toastPackage, ngZone) {\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.ngZone = ngZone;\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n this.duplicatesCount = count;\n });\n this.state = {\n value: 'inactive',\n params: {\n easeTime: this.toastPackage.config.easeTime,\n easing: 'ease-in'\n }\n };\n }\n ngOnDestroy() {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n this.sub3.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n this.state = {\n ...this.state,\n value: 'active'\n };\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.outsideTimeout(() => this.remove(), this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress() {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = remaining / this.options.timeOut * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n }\n resetTimeout() {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = {\n ...this.state,\n value: 'active'\n };\n this.outsideTimeout(() => this.remove(), this.originalTimeout);\n this.options.timeOut = this.originalTimeout;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state.value === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = {\n ...this.state,\n value: 'removed'\n };\n this.outsideTimeout(() => this.toastrService.remove(this.toastPackage.toastId), +this.toastPackage.config.easeTime);\n }\n tapToast() {\n if (this.state.value === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n }\n stickAround() {\n if (this.state.value === 'removed') {\n return;\n }\n if (this.options.disableTimeOut !== 'extendedTimeOut') {\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n }\n delayedHideToast() {\n if (this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut' || this.options.extendedTimeOut === 0 || this.state.value === 'removed') {\n return;\n }\n this.outsideTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.outsideInterval(() => this.updateProgress(), 10);\n }\n }\n outsideTimeout(func, timeout) {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => this.timeout = setTimeout(() => this.runInsideAngular(func), timeout));\n } else {\n this.timeout = setTimeout(() => func(), timeout);\n }\n }\n outsideInterval(func, timeout) {\n if (this.ngZone) {\n this.ngZone.runOutsideAngular(() => this.intervalId = setInterval(() => this.runInsideAngular(func), timeout));\n } else {\n this.intervalId = setInterval(() => func(), timeout);\n }\n }\n runInsideAngular(func) {\n if (this.ngZone) {\n this.ngZone.run(() => func());\n } else {\n func();\n }\n }\n static ɵfac = function Toast_Factory(t) {\n return new (t || Toast)(i0.ɵɵdirectiveInject(ToastrService), i0.ɵɵdirectiveInject(ToastPackage), i0.ɵɵdirectiveInject(i0.NgZone));\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: Toast,\n selectors: [[\"\", \"toast-component\", \"\"]],\n hostVars: 5,\n hostBindings: function Toast_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function Toast_click_HostBindingHandler() {\n return ctx.tapToast();\n })(\"mouseenter\", function Toast_mouseenter_HostBindingHandler() {\n return ctx.stickAround();\n })(\"mouseleave\", function Toast_mouseleave_HostBindingHandler() {\n return ctx.delayedHideToast();\n });\n }\n if (rf & 2) {\n i0.ɵɵsyntheticHostProperty(\"@flyInOut\", ctx.state);\n i0.ɵɵclassMap(ctx.toastClasses);\n i0.ɵɵstyleProp(\"display\", ctx.displayStyle);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c0,\n decls: 5,\n vars: 5,\n consts: [[\"type\", \"button\", \"class\", \"toast-close-button\", \"aria-label\", \"Close\", 3, \"click\", 4, \"ngIf\"], [3, \"class\", 4, \"ngIf\"], [\"role\", \"alert\", 3, \"class\", \"innerHTML\", 4, \"ngIf\"], [\"role\", \"alert\", 3, \"class\", 4, \"ngIf\"], [4, \"ngIf\"], [\"type\", \"button\", \"aria-label\", \"Close\", 1, \"toast-close-button\", 3, \"click\"], [\"aria-hidden\", \"true\"], [\"role\", \"alert\", 3, \"innerHTML\"], [\"role\", \"alert\"], [1, \"toast-progress\"]],\n template: function Toast_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, Toast_button_0_Template, 3, 0, \"button\", 0)(1, Toast_div_1_Template, 3, 5, \"div\", 1)(2, Toast_div_2_Template, 1, 3, \"div\", 2)(3, Toast_div_3_Template, 2, 4, \"div\", 3)(4, Toast_div_4_Template, 2, 2, \"div\", 4);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.options.closeButton);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.title);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.message && ctx.options.enableHtml);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.message && !ctx.options.enableHtml);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.options.progressBar);\n }\n },\n dependencies: [NgIf],\n encapsulation: 2,\n data: {\n animation: [trigger('flyInOut', [state('inactive', style({\n opacity: 0\n })), state('active', style({\n opacity: 1\n })), state('removed', style({\n opacity: 0\n })), transition('inactive => active', animate('{{ easeTime }}ms {{ easing }}')), transition('active => removed', animate('{{ easeTime }}ms {{ easing }}'))])]\n }\n });\n }\n return Toast;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DefaultGlobalConfig = {\n ...DefaultNoComponentGlobalConfig,\n toastComponent: Toast\n};\n/**\n * @description\n * Provides the `TOAST_CONFIG` token with the given config.\n *\n * @param config The config to configure toastr.\n * @returns The environment providers.\n *\n * @example\n * ```ts\n * import { provideToastr } from 'ngx-toastr';\n *\n * bootstrap(AppComponent, {\n * providers: [\n * provideToastr({\n * timeOut: 2000,\n * positionClass: 'toast-top-right',\n * }),\n * ],\n * })\n */\nconst provideToastr = (config = {}) => {\n const providers = [{\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultGlobalConfig,\n config\n }\n }];\n return makeEnvironmentProviders(providers);\n};\nlet ToastrModule = /*#__PURE__*/(() => {\n class ToastrModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastrModule,\n providers: [provideToastr(config)]\n };\n }\n static ɵfac = function ToastrModule_Factory(t) {\n return new (t || ToastrModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ToastrModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n return ToastrModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ToastrComponentlessModule = /*#__PURE__*/(() => {\n class ToastrComponentlessModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastrModule,\n providers: [{\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoComponentGlobalConfig,\n config\n }\n }]\n };\n }\n static ɵfac = function ToastrComponentlessModule_Factory(t) {\n return new (t || ToastrComponentlessModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ToastrComponentlessModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n return ToastrComponentlessModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ToastNoAnimation = /*#__PURE__*/(() => {\n class ToastNoAnimation {\n toastrService;\n toastPackage;\n appRef;\n message;\n title;\n options;\n duplicatesCount;\n originalTimeout;\n /** width of progress bar */\n width = -1;\n /** a combination of toast type and options.toastClass */\n toastClasses = '';\n /** hides component when waiting to be displayed */\n get displayStyle() {\n if (this.state === 'inactive') {\n return 'none';\n }\n return null;\n }\n /** controls animation */\n state = 'inactive';\n timeout;\n intervalId;\n hideTime;\n sub;\n sub1;\n sub2;\n sub3;\n constructor(toastrService, toastPackage, appRef) {\n this.toastrService = toastrService;\n this.toastPackage = toastPackage;\n this.appRef = appRef;\n this.message = toastPackage.message;\n this.title = toastPackage.title;\n this.options = toastPackage.config;\n this.originalTimeout = toastPackage.config.timeOut;\n this.toastClasses = `${toastPackage.toastType} ${toastPackage.config.toastClass}`;\n this.sub = toastPackage.toastRef.afterActivate().subscribe(() => {\n this.activateToast();\n });\n this.sub1 = toastPackage.toastRef.manualClosed().subscribe(() => {\n this.remove();\n });\n this.sub2 = toastPackage.toastRef.timeoutReset().subscribe(() => {\n this.resetTimeout();\n });\n this.sub3 = toastPackage.toastRef.countDuplicate().subscribe(count => {\n this.duplicatesCount = count;\n });\n }\n ngOnDestroy() {\n this.sub.unsubscribe();\n this.sub1.unsubscribe();\n this.sub2.unsubscribe();\n this.sub3.unsubscribe();\n clearInterval(this.intervalId);\n clearTimeout(this.timeout);\n }\n /**\n * activates toast and sets timeout\n */\n activateToast() {\n this.state = 'active';\n if (!(this.options.disableTimeOut === true || this.options.disableTimeOut === 'timeOut') && this.options.timeOut) {\n this.timeout = setTimeout(() => {\n this.remove();\n }, this.options.timeOut);\n this.hideTime = new Date().getTime() + this.options.timeOut;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n if (this.options.onActivateTick) {\n this.appRef.tick();\n }\n }\n /**\n * updates progress bar width\n */\n updateProgress() {\n if (this.width === 0 || this.width === 100 || !this.options.timeOut) {\n return;\n }\n const now = new Date().getTime();\n const remaining = this.hideTime - now;\n this.width = remaining / this.options.timeOut * 100;\n if (this.options.progressAnimation === 'increasing') {\n this.width = 100 - this.width;\n }\n if (this.width <= 0) {\n this.width = 0;\n }\n if (this.width >= 100) {\n this.width = 100;\n }\n }\n resetTimeout() {\n clearTimeout(this.timeout);\n clearInterval(this.intervalId);\n this.state = 'active';\n this.options.timeOut = this.originalTimeout;\n this.timeout = setTimeout(() => this.remove(), this.originalTimeout);\n this.hideTime = new Date().getTime() + (this.originalTimeout || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n /**\n * tells toastrService to remove this toast after animation time\n */\n remove() {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.state = 'removed';\n this.timeout = setTimeout(() => this.toastrService.remove(this.toastPackage.toastId));\n }\n tapToast() {\n if (this.state === 'removed') {\n return;\n }\n this.toastPackage.triggerTap();\n if (this.options.tapToDismiss) {\n this.remove();\n }\n }\n stickAround() {\n if (this.state === 'removed') {\n return;\n }\n clearTimeout(this.timeout);\n this.options.timeOut = 0;\n this.hideTime = 0;\n // disable progressBar\n clearInterval(this.intervalId);\n this.width = 0;\n }\n delayedHideToast() {\n if (this.options.disableTimeOut === true || this.options.disableTimeOut === 'extendedTimeOut' || this.options.extendedTimeOut === 0 || this.state === 'removed') {\n return;\n }\n this.timeout = setTimeout(() => this.remove(), this.options.extendedTimeOut);\n this.options.timeOut = this.options.extendedTimeOut;\n this.hideTime = new Date().getTime() + (this.options.timeOut || 0);\n this.width = -1;\n if (this.options.progressBar) {\n this.intervalId = setInterval(() => this.updateProgress(), 10);\n }\n }\n static ɵfac = function ToastNoAnimation_Factory(t) {\n return new (t || ToastNoAnimation)(i0.ɵɵdirectiveInject(ToastrService), i0.ɵɵdirectiveInject(ToastPackage), i0.ɵɵdirectiveInject(i0.ApplicationRef));\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ToastNoAnimation,\n selectors: [[\"\", \"toast-component\", \"\"]],\n hostVars: 4,\n hostBindings: function ToastNoAnimation_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function ToastNoAnimation_click_HostBindingHandler() {\n return ctx.tapToast();\n })(\"mouseenter\", function ToastNoAnimation_mouseenter_HostBindingHandler() {\n return ctx.stickAround();\n })(\"mouseleave\", function ToastNoAnimation_mouseleave_HostBindingHandler() {\n return ctx.delayedHideToast();\n });\n }\n if (rf & 2) {\n i0.ɵɵclassMap(ctx.toastClasses);\n i0.ɵɵstyleProp(\"display\", ctx.displayStyle);\n }\n },\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n attrs: _c0,\n decls: 5,\n vars: 5,\n consts: [[\"type\", \"button\", \"class\", \"toast-close-button\", \"aria-label\", \"Close\", 3, \"click\", 4, \"ngIf\"], [3, \"class\", 4, \"ngIf\"], [\"role\", \"alert\", 3, \"class\", \"innerHTML\", 4, \"ngIf\"], [\"role\", \"alert\", 3, \"class\", 4, \"ngIf\"], [4, \"ngIf\"], [\"type\", \"button\", \"aria-label\", \"Close\", 1, \"toast-close-button\", 3, \"click\"], [\"aria-hidden\", \"true\"], [\"role\", \"alert\", 3, \"innerHTML\"], [\"role\", \"alert\"], [1, \"toast-progress\"]],\n template: function ToastNoAnimation_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, ToastNoAnimation_button_0_Template, 3, 0, \"button\", 0)(1, ToastNoAnimation_div_1_Template, 3, 5, \"div\", 1)(2, ToastNoAnimation_div_2_Template, 1, 3, \"div\", 2)(3, ToastNoAnimation_div_3_Template, 2, 4, \"div\", 3)(4, ToastNoAnimation_div_4_Template, 2, 2, \"div\", 4);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngIf\", ctx.options.closeButton);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.title);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.message && ctx.options.enableHtml);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.message && !ctx.options.enableHtml);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.options.progressBar);\n }\n },\n dependencies: [NgIf],\n encapsulation: 2\n });\n }\n return ToastNoAnimation;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst DefaultNoAnimationsGlobalConfig = {\n ...DefaultNoComponentGlobalConfig,\n toastComponent: ToastNoAnimation\n};\nlet ToastNoAnimationModule = /*#__PURE__*/(() => {\n class ToastNoAnimationModule {\n static forRoot(config = {}) {\n return {\n ngModule: ToastNoAnimationModule,\n providers: [{\n provide: TOAST_CONFIG,\n useValue: {\n default: DefaultNoAnimationsGlobalConfig,\n config\n }\n }]\n };\n }\n static ɵfac = function ToastNoAnimationModule_Factory(t) {\n return new (t || ToastNoAnimationModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ToastNoAnimationModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n return ToastNoAnimationModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, ComponentPortal, DefaultGlobalConfig, DefaultNoAnimationsGlobalConfig, DefaultNoComponentGlobalConfig, Overlay, OverlayContainer, OverlayRef, TOAST_CONFIG, Toast, ToastContainerDirective, ToastNoAnimation, ToastNoAnimationModule, ToastPackage, ToastRef, ToastrComponentlessModule, ToastrModule, ToastrService, provideToastr };\n"],"mappings":"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","names":["GenericBrowserDomAdapter","DomAdapter","BrowserDomAdapter","_BrowserDomAdapter","setRootDomAdapter","el","evt","listener","node","tagName","doc","target","href","getBaseElementHref","relativePath","baseElement","name","parseCookieValue","url","BrowserGetTestability","registry","_global","elem","findInAncestors","testability","RuntimeError","whenAllStable","callback","testabilities","count","decrement","t","getDOM","BrowserXhr","_BrowserXhr","ɵɵdefineInjectable","EVENT_MANAGER_PLUGINS","InjectionToken","EventManager","_EventManager","plugins","_zone","plugin","element","eventName","handler","ɵɵinject","NgZone","EventManagerPlugin","_doc","APP_ID_ATTRIBUTE_NAME","SharedStylesHost","_SharedStylesHost","appId","nonce","platformId","isPlatformServer","styles","style","styleNodesInDOM","hostNode","host","styleRef","styleMap","delta","map","styleRefValue","styleEl","styleElRef","hostNodes","DOCUMENT","APP_ID","CSP_NONCE","PLATFORM_ID","NAMESPACE_URIS","COMPONENT_REGEX","COMPONENT_VARIABLE","HOST_ATTR","CONTENT_ATTR","REMOVE_STYLES_ON_COMPONENT_DESTROY_DEFAULT","REMOVE_STYLES_ON_COMPONENT_DESTROY","shimContentAttribute","componentShortId","shimHostAttribute","shimStylesContent","compId","s","DomRendererFactory2","_DomRendererFactory2","eventManager","sharedStylesHost","removeStylesOnCompDestroy","ngZone","DefaultDomRenderer2","type","ViewEncapsulation$1","__spreadProps","__spreadValues","renderer","EmulatedEncapsulationDomRenderer2","NoneEncapsulationDomRenderer","rendererByCompId","platformIsServer","ShadowDomRenderer","namespace","value","parent","newChild","isTemplateNode","refChild","oldChild","selectorOrNode","preserveContent","namespaceUri","flags","RendererStyleFlags2","event","eventHandler","isTemplateNode","node","ShadowDomRenderer","DefaultDomRenderer2","eventManager","sharedStylesHost","hostEl","component","doc","ngZone","nonce","platformIsServer","styles","shimStylesContent","style","styleEl","parent","newChild","refChild","oldChild","NoneEncapsulationDomRenderer","removeStylesOnCompDestroy","compId","EmulatedEncapsulationDomRenderer2","appId","shimContentAttribute","shimHostAttribute","element","name","el","DomEventsPlugin","_DomEventsPlugin","EventManagerPlugin","eventName","handler","target","callback","t","ɵɵinject","DOCUMENT","ɵɵdefineInjectable","MODIFIER_KEYS","_keyMap","MODIFIER_KEY_GETTERS","event","KeyEventsPlugin","_KeyEventsPlugin","parsedEvent","outsideHandler","getDOM","parts","domEventName","key","fullKey","codeIX","modifierName","index","result","fullKeyCode","keycode","modifierGetter","zone","keyName","bootstrapApplication","rootComponent","options","internalCreateApplication","__spreadValues","createProvidersConfig","createProvidersConfig","options","BROWSER_MODULE_PROVIDERS","INTERNAL_BROWSER_PLATFORM_PROVIDERS","initDomAdapter","BrowserDomAdapter","errorHandler","ErrorHandler","_document","setDocument","INTERNAL_BROWSER_PLATFORM_PROVIDERS","PLATFORM_ID","PLATFORM_BROWSER_ID","PLATFORM_INITIALIZER","DOCUMENT","BROWSER_MODULE_PROVIDERS_MARKER","InjectionToken","TESTABILITY_PROVIDERS","TESTABILITY_GETTER","BrowserGetTestability","TESTABILITY","Testability","NgZone","TestabilityRegistry","BROWSER_MODULE_PROVIDERS","INJECTOR_SCOPE","ErrorHandler","errorHandler","EVENT_MANAGER_PLUGINS","DomEventsPlugin","DOCUMENT","PLATFORM_ID","KeyEventsPlugin","DomRendererFactory2","SharedStylesHost","EventManager","RendererFactory2","XhrFactory","BrowserXhr","BrowserModule","_BrowserModule","providersAlreadyPresent","params","APP_ID","t","ɵɵinject","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","ApplicationModule","Title","_Title","_doc","newTitle","t","ɵɵinject","DOCUMENT","ɵɵdefineInjectable","DomSanitizer","_DomSanitizer","t","ɵɵdefineInjectable","r","ɵɵinject","DomSanitizerImpl","_DomSanitizerImpl","_doc","ctx","value","SecurityContext","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","RuntimeError","_sanitizeUrl","bypassSanitizationTrustHtml","bypassSanitizationTrustStyle","bypassSanitizationTrustScript","bypassSanitizationTrustUrl","bypassSanitizationTrustResourceUrl","DOCUMENT","SafeHtmlPipe","constructor","dom","inject","DomSanitizer","transform","value","sanitize","SecurityContext","HTML","pure","standalone","_SafeHtmlPipe","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","getWindow","node","ownerDocument","isElement","node","OwnElement","getWindow","isHTMLElement","isShadowRoot","applyStyles","_ref","state","name","style","attributes","element","isHTMLElement","getNodeName","value","effect","_ref2","initialStyles","styleProperties","property","attribute","applyStyles_default","getBasePlacement","placement","max","min","round","getUAString","uaData","item","isLayoutViewport","getUAString","getBoundingClientRect","element","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","isHTMLElement","round","_ref","isElement","getWindow","visualViewport","addVisualOffsets","isLayoutViewport","x","y","width","height","getLayoutRect","element","clientRect","getBoundingClientRect","width","height","contains","parent","child","rootNode","isShadowRoot","next","getComputedStyle","element","getWindow","isTableElement","element","getNodeName","getDocumentElement","element","isElement","getParentNode","element","getNodeName","isShadowRoot","getDocumentElement","getTrueOffsetParent","element","isHTMLElement","getComputedStyle","getContainingBlock","isFirefox","getUAString","isIE","elementCss","currentNode","getParentNode","isShadowRoot","getNodeName","css","getOffsetParent","window","getWindow","offsetParent","isTableElement","getMainAxisFromPlacement","placement","within","min","value","max","withinMaxClamp","v","getFreshSideObject","mergePaddingObject","paddingObject","getFreshSideObject","expandToHashMap","value","keys","hashMap","key","toPaddingObject","padding","state","mergePaddingObject","expandToHashMap","basePlacements","arrow","_ref","_state$modifiersData$","name","options","arrowElement","popperOffsets","basePlacement","getBasePlacement","axis","getMainAxisFromPlacement","isVertical","left","right","len","paddingObject","arrowRect","getLayoutRect","minProp","top","maxProp","bottom","endDiff","startDiff","arrowOffsetParent","getOffsetParent","clientSize","centerToReference","min","max","center","offset","within","axisProp","effect","_ref2","_options$element","contains","arrow_default","getVariation","placement","unsetSides","roundOffsetsByDPR","_ref","win","x","y","dpr","round","mapToStyles","_ref2","_Object$assign2","popper","popperRect","placement","variation","offsets","position","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","left","sideY","top","offsetParent","getOffsetParent","heightProp","widthProp","getWindow","getDocumentElement","getComputedStyle","right","end","bottom","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","state","options","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","getBasePlacement","getVariation","computeStyles_default","passive","effect","_ref","state","instance","options","_options$scroll","scroll","_options$resize","resize","window","getWindow","scrollParents","scrollParent","eventListeners_default","hash","getOppositePlacement","placement","matched","hash","getOppositeVariationPlacement","placement","matched","getWindowScroll","node","win","getWindow","scrollLeft","scrollTop","getWindowScrollBarX","element","getBoundingClientRect","getDocumentElement","getWindowScroll","getViewportRect","element","strategy","win","getWindow","html","getDocumentElement","visualViewport","width","height","x","y","layoutViewport","isLayoutViewport","getWindowScrollBarX","getDocumentRect","element","_element$ownerDocumen","html","getDocumentElement","winScroll","getWindowScroll","body","width","max","height","x","getWindowScrollBarX","y","getComputedStyle","isScrollParent","element","_getComputedStyle","getComputedStyle","overflow","overflowX","overflowY","getScrollParent","node","getNodeName","isHTMLElement","isScrollParent","getParentNode","listScrollParents","element","list","_element$ownerDocumen","scrollParent","getScrollParent","isBody","win","getWindow","target","isScrollParent","updatedList","getParentNode","rectToClientRect","rect","getInnerBoundingClientRect","element","strategy","rect","getBoundingClientRect","getClientRectFromMixedType","clippingParent","viewport","rectToClientRect","getViewportRect","isElement","getDocumentRect","getDocumentElement","getClippingParents","clippingParents","listScrollParents","getParentNode","canEscapeClipping","getComputedStyle","clipperElement","isHTMLElement","getOffsetParent","contains","getNodeName","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","max","min","computeOffsets","_ref","reference","element","placement","basePlacement","getBasePlacement","variation","getVariation","commonX","commonY","offsets","top","bottom","right","left","mainAxis","getMainAxisFromPlacement","len","start","end","detectOverflow","state","options","_options","_options$placement","placement","_options$strategy","strategy","_options$boundary","boundary","clippingParents","_options$rootBoundary","rootBoundary","viewport","_options$elementConte","elementContext","popper","_options$altBoundary","altBoundary","_options$padding","padding","paddingObject","mergePaddingObject","expandToHashMap","basePlacements","altContext","reference","popperRect","element","clippingClientRect","getClippingRect","isElement","getDocumentElement","referenceClientRect","getBoundingClientRect","popperOffsets","computeOffsets","popperClientRect","rectToClientRect","elementClientRect","overflowOffsets","offsetData","offset","key","multiply","right","bottom","axis","top","computeAutoPlacement","state","options","_options","placement","boundary","rootBoundary","padding","flipVariations","_options$allowedAutoP","allowedAutoPlacements","placements","variation","getVariation","variationPlacements","basePlacements","allowedPlacements","overflows","acc","detectOverflow","getBasePlacement","a","b","getExpandedFallbackPlacements","placement","getBasePlacement","auto","oppositePlacement","getOppositePlacement","getOppositeVariationPlacement","flip","_ref","state","options","name","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","padding","boundary","rootBoundary","altBoundary","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","basePlacement","isBasePlacement","fallbackPlacements","placements","acc","computeAutoPlacement","referenceRect","popperRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","_basePlacement","isStartVariation","getVariation","start","isVertical","top","bottom","len","overflow","detectOverflow","mainVariationSide","right","left","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip_default","distanceAndSkiddingToXY","placement","rects","offset","basePlacement","getBasePlacement","invertDistance","left","top","_ref","skidding","distance","right","_ref2","state","options","name","_options$offset","data","placements","acc","_data$state$placement","x","y","offset_default","popperOffsets","_ref","state","name","computeOffsets","popperOffsets_default","getAltAxis","axis","preventOverflow","_ref","state","options","name","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","boundary","rootBoundary","altBoundary","padding","_options$tether","tether","_options$tetherOffset","tetherOffset","overflow","detectOverflow","basePlacement","getBasePlacement","variation","getVariation","isBasePlacement","mainAxis","getMainAxisFromPlacement","altAxis","getAltAxis","popperOffsets","referenceRect","popperRect","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","data","_offsetModifierState$","mainSide","top","left","altSide","bottom","right","len","offset","min","max","additive","minLen","start","maxLen","arrowElement","arrowRect","getLayoutRect","arrowPaddingObject","getFreshSideObject","arrowPaddingMin","arrowPaddingMax","arrowLen","within","minOffset","maxOffset","arrowOffsetParent","getOffsetParent","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","preventOverflow_default","getHTMLElementScroll","element","getNodeScroll","node","getWindow","isHTMLElement","getWindowScroll","getHTMLElementScroll","isElementScaled","element","rect","scaleX","round","scaleY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","isHTMLElement","offsetParentIsScaled","documentElement","getDocumentElement","getBoundingClientRect","scroll","offsets","getNodeName","isScrollParent","getNodeScroll","getWindowScrollBarX","order","modifiers","map","visited","result","modifier","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","modifierPhases","acc","phase","debounce","fn","pending","resolve","mergeByName","modifiers","merged","current","existing","key","DEFAULT_OPTIONS","areValidElements","_len","args","_key","element","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","popper","options","state","effectCleanupFns","isDestroyed","instance","setOptionsAction","cleanupModifierEffects","isElement","listScrollParents","orderedModifiers","orderModifiers","mergeByName","m","runModifierEffects","_state$elements","getCompositeRect","getOffsetParent","getLayoutRect","modifier","index","_state$orderedModifie","fn","_state$orderedModifie2","_options","name","debounce","resolve","_ref","_ref$options","effect","cleanupFn","noopFn","defaultModifiers","eventListeners_default","popperOffsets_default","computeStyles_default","applyStyles_default","createPopper","popperGenerator","_c0","_c1","_c2","_c3","NgbDatepickerNavigationSelect_For_3_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","m_r2","ctx_r2","ɵɵnextContext","ɵɵproperty","ɵɵattribute","ɵɵadvance","ɵɵtextInterpolate","NgbDatepickerNavigationSelect_For_7_Template","y_r4","NgbDatepickerNavigation_Conditional_3_Template","_r1","ɵɵgetCurrentView","ɵɵlistener","$event","ɵɵrestoreView","ctx_r1","ɵɵresetView","NgbDatepickerNavigation_Conditional_4_For_1_Conditional_0_Template","ɵɵelement","NgbDatepickerNavigation_Conditional_4_For_1_Conditional_3_Template","NgbDatepickerNavigation_Conditional_4_For_1_Template","ɵɵtemplate","month_r3","i_r4","ɵɵconditional","ɵɵtextInterpolate1","NgbDatepickerNavigation_Conditional_4_Template","ɵɵrepeaterCreate","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","NgbDatepickerMonth_Conditional_0_Conditional_1_Template","ctx_r0","NgbDatepickerMonth_Conditional_0_For_3_Template","weekday_r2","NgbDatepickerMonth_Conditional_0_Template","NgbDatepickerMonth_For_2_Conditional_0_Conditional_1_Template","week_r3","NgbDatepickerMonth_For_2_Conditional_0_For_3_Conditional_1_ng_template_0_Template","NgbDatepickerMonth_For_2_Conditional_0_For_3_Conditional_1_Template","day_r5","NgbDatepickerMonth_For_2_Conditional_0_For_3_Template","_r4","ɵɵclassProp","NgbDatepickerMonth_For_2_Conditional_0_Template","NgbDatepickerMonth_For_2_Template","_c4","_c5","_c6","a0","NgbDatepicker_ng_template_0_Template","date_r1","currentMonth_r2","selected_r3","disabled_r4","focused_r5","NgbDatepicker_ng_template_2_For_1_Conditional_1_Template","month_r6","ctx_r6","NgbDatepicker_ng_template_2_For_1_Template","NgbDatepicker_ng_template_2_Template","NgbDatepicker_Conditional_5_Template","_r8","NgbDatepicker_ng_template_8_Template","NgbDatepicker_ng_template_9_Template","_c7","_c8","NgbNavOutlet_For_1_Conditional_0_ng_template_1_Template","NgbNavOutlet_For_1_Conditional_0_Template","item_r1","ɵɵpureFunction1","NgbNavOutlet_For_1_Template","_c9","a1","a2","_c10","_c11","_c12","_c13","NgbPagination_ng_template_0_Template","ɵɵi18n","NgbPagination_ng_template_2_Template","NgbPagination_ng_template_4_Template","NgbPagination_ng_template_6_Template","NgbPagination_ng_template_8_Template","NgbPagination_ng_template_10_Template","page_r1","NgbPagination_ng_template_12_For_1_Conditional_1_ng_template_1_Template","NgbPagination_ng_template_12_For_1_Conditional_1_Template","page_r2","ellipsis_r4","ɵɵreference","NgbPagination_ng_template_12_For_1_Conditional_2_ng_template_1_Template","NgbPagination_ng_template_12_For_1_Conditional_2_Template","_r5","pageNumber_r6","disabled_r8","defaultNumber_r9","ɵɵpureFunction3","NgbPagination_ng_template_12_For_1_Template","NgbPagination_ng_template_12_Template","pages_r10","NgbPagination_Conditional_15_ng_template_2_Template","NgbPagination_Conditional_15_Template","_r11","first_r12","ɵɵpureFunction2","NgbPagination_Conditional_16_ng_template_2_Template","NgbPagination_Conditional_16_Template","_r13","previous_r14","NgbPagination_ng_template_17_Template","NgbPagination_Conditional_18_ng_template_2_Template","NgbPagination_Conditional_18_Template","_r15","next_r16","NgbPagination_Conditional_19_ng_template_2_Template","NgbPagination_Conditional_19_Template","_r17","last_r18","NgbPopoverWindow_Conditional_1_ng_template_1_Template","NgbPopoverWindow_Conditional_1_ng_template_3_Template","NgbPopoverWindow_Conditional_1_Template","ɵɵtemplateRefExtractor","simpleTitle_r2","NgbProgressbar_Conditional_1_Template","ɵɵpipe","ɵɵi18nExp","ɵɵpipeBind1","ɵɵi18nApply","NgbHighlight_For_1_Conditional_0_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","part_r1","ɵɵnextContext","ctx_r1","ɵɵclassMap","ɵɵadvance","ɵɵtextInterpolate","NgbHighlight_For_1_Conditional_1_Template","ɵɵelementContainerStart","ɵɵelementContainerEnd","NgbHighlight_For_1_Template","ɵɵtemplate","ɵ$index_1_r3","ɵɵconditional","_c14","a0","a1","a2","NgbTypeaheadWindow_ng_template_0_Template","ɵɵelement","result_r1","term_r2","formatter_r3","ɵɵproperty","NgbTypeaheadWindow_For_3_ng_template_1_Template","NgbTypeaheadWindow_For_3_Template","_r4","ɵɵgetCurrentView","ɵɵlistener","idx_r5","ɵɵrestoreView","ctx_r5","ɵɵresetView","result_r7","rt_r8","ɵɵreference","ɵɵclassProp","ɵɵpureFunction3","environment","NgbConfig","_NgbConfig","t","ɵɵdefineInjectable","NgbAccordionConfig","_NgbAccordionConfig","inject","animation","getTransitionDurationMs","element","transitionDelay","transitionDuration","transitionDelaySec","transitionDurationSec","toInteger","value","toString","getValueInRange","max","min","isString","isNumber","isInteger","isDefined","isPromise","v","padNumber","regExpEscape","text","closest","selector","reflow","runInZone","zone","source","Observable","observer","next","error","e","complete","removeAccents","str","getActiveElement","root","activeEl","noopFn","transitionTimerDelayMs","runningTransitions","ngbRunTransition","startFn","options","context","running","EMPTY","endFn","of","transition$","Subject","finishTransition$","stop$","endWith","transitionDurationMs","transitionEnd$","fromEvent","takeUntil","filter","target","timer$","timer","race","measureCollapsingElementDimensionPx","element","dimension","classList","hasShownClass","dimensionSize","ngbCollapsingTransition","animation","context","direction","maxSize","setInitialClasses","reflow","NgbCollapseConfig","_NgbCollapseConfig","inject","NgbConfig","t","ɵɵdefineInjectable","NgbCollapse","_NgbCollapse","ElementRef","NgZone","EventEmitter","isCollapsed","open","collapsed","ngbRunTransition","ɵɵdefineDirective","rf","ctx","ɵɵclassProp","InputFlags","nextId$3","NgbAccordionBody","_NgbAccordionBody","ViewContainerRef","NgbAccordionItem","node","dirIndex","ɵɵcontentQuery","TemplateRef","_t","ɵɵqueryRefresh","ɵɵloadQuery","NgbAccordionCollapse","_NgbAccordionCollapse","ɵɵhostProperty","ɵɵattribute","ɵɵHostDirectivesFeature","NgbAccordionToggle","_NgbAccordionToggle","NgbAccordionDirective","ɵɵlistener","NgbAccordionButton","_NgbAccordionButton","NgbAccordionHeader","_NgbAccordionHeader","_NgbAccordionItem","ChangeDetectorRef","DestroyRef","id","isString","destroyOnHide","ngbCollapse","takeUntilDestroyed","_NgbAccordionDirective","NgbAccordionConfig","itemId","item","toExpand","NgbDate","_NgbDate","date","year","month","day","isInteger","other","fromJSDate","jsDate","toJSDate","NGB_DATEPICKER_CALENDAR_FACTORY","NgbCalendarGregorian","NgbCalendar","_NgbCalendar","t","ɵɵdefineInjectable","_NgbCalendarGregorian","period","number","checkMonth","expectedMonth","week","firstDayOfWeek","thursdayIndex","time","ɵNgbCalendarGregorian_BaseFactory","ɵɵgetInheritedFactory","isChangedDate","prev","next","dateComparator","isChangedMonth","checkMinBeforeMax","minDate","maxDate","checkDateInRange","isDateSelectable","state","disabled","markDisabled","generateSelectBoxMonths","calendar","months","index","generateSelectBoxYears","start","length","numbers","i","nextMonthDisabled","nextDate","prevMonthDisabled","prevDate","buildMonths","i18n","force","displayMonths","monthsToReuse","_","firstDate","reusedIndex","buildMonth","dayTemplateData","outsideDays","weekdayWidth","weekdaysVisible","calendarToday","getFirstViewDate","weekObject","days","newDate","ariaLabel","today","contextUserData","dayObject","daysPerWeek","firstMonthDate","dayOfWeek","NgbDatepickerI18n","_NgbDatepickerI18n","weekNumber","NgbDatepickerI18nDefault","_NgbDatepickerI18nDefault","inject","LOCALE_ID","getLocaleMonthNames","FormStyle","TranslationWidth","weekday","width","weekdaysStartingOnSunday","getLocaleDayNames","formatDate","ɵNgbDatepickerI18nDefault_BaseFactory","NgbDatepickerService","_NgbDatepickerService","toInteger","focusVisible","navigation","weekdays","Subject","filter","model","options","patch","key","obj","part","__spreadValues","focusedDate","selectedDate","defaultValue","ngbDate","struct","newState","focusDate","startDate","forceRebuild","yearChanged","monthChanged","NavigationEvent","NgbDatepickerConfig","_NgbDatepickerConfig","NGB_DATEPICKER_DATE_ADAPTER_FACTORY","NgbDateStructAdapter","NgbDateAdapter","_NgbDateAdapter","_NgbDateStructAdapter","ɵNgbDateStructAdapter_BaseFactory","Key","NgbDatepickerKeyboardService","_NgbDatepickerKeyboardService","event","datepicker","NgbDatepickerDayView","_NgbDatepickerDayView","ɵɵdefineComponent","rf","ctx","ɵɵclassProp","ɵɵStandaloneFeature","_c1","ɵɵtext","ɵɵtextInterpolate","NgbDatepickerNavigationSelect","_NgbDatepickerNavigationSelect","EventEmitter","ɵɵviewQuery","_c2","ElementRef","_c3","_t","ɵɵqueryRefresh","ɵɵloadQuery","i18n_4","i18n_5","i18n_6","i18n_7","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","ɵɵresetView","ɵɵrepeaterCreate","NgbDatepickerNavigationSelect_For_3_Template","ɵɵrepeaterTrackByIdentity","ɵɵelementEnd","NgbDatepickerNavigationSelect_For_7_Template","ɵɵproperty","ɵɵadvance","ɵɵrepeater","NgbDatepickerNavigation","_NgbDatepickerNavigation","i18n_8","i18n_9","i18n_10","i18n_11","ɵɵelement","ɵɵtemplate","NgbDatepickerNavigation_Conditional_3_Template","NgbDatepickerNavigation_Conditional_4_Template","ɵɵconditional","NgbDatepickerContent","_NgbDatepickerContent","TemplateRef","ɵɵdefineDirective","NgbDatepickerMonth","_NgbDatepickerMonth","NgbDatepicker","NgbDatepickerMonth_Conditional_0_Template","NgbDatepickerMonth_For_2_Template","NgTemplateOutlet","_NgbDatepicker","Injector","NgZone","DestroyRef","cd","ChangeDetectorRef","takeUntilDestroyed","oldDate","viewModel","navigationPrevented","newSelectedDate","newFocusedDate","oldFocusedDate","take","__spreadProps","focusIns$","fromEvent","focusOuts$","merge","focusEvent","target","relatedTarget","type","inputs","name","changes","currentValue","previousValue","fn","value","dirIndex","ɵɵcontentQuery","_c4","_c5","ɵɵProvidersFeature","NG_VALUE_ACCESSOR","forwardRef","ɵɵNgOnChangesFeature","NgbDatepicker_ng_template_0_Template","ɵɵtemplateRefExtractor","NgbDatepicker_ng_template_2_Template","NgbDatepicker_Conditional_5_Template","NgbDatepicker_ng_template_8_Template","NgbDatepicker_ng_template_9_Template","defaultContentTemplate_r9","ɵɵreference","ɵɵpureFunction1","_c6","isContainedIn","element","array","item","matchesSelectorIfAny","selector","closest","isMobile","isIOS","isAndroid","wrapAsyncForMobile","ngbAutoClose","zone","document","close","closed$","insideElements","ignoreElements","insideSelector","shouldCloseOnClick","escapes$","takeUntil","e","tap","mouseDowns$","map","closeableClicks$","withLatestFrom","shouldClose","delay","race","source","FOCUSABLE_ELEMENTS_SELECTOR","getFocusableBoundaryElements","list","el","ngbFocusTrap","stopFocusTrap$","refocusOnClick","lastFocusedElement$","tabEvent","focusedElement","first","last","arr","lastFocusedElement","NgbRTL","_NgbRTL","DOCUMENT","placementSeparator","spacesRegExp","bootstrapPopperMatches","getPopperClassPlacement","placement","isRTL","leftClass","rightClass","popperStartPrimaryPlacement","popperEndPrimaryPlacement","popperStartSecondaryPlacement","popperEndSecondaryPlacement","getBootstrapBaseClassPlacement","baseClass","primary","secondary","newPrimary","classnames","newSecondary","classname","getPopperOptions","rtl","placementVals","allowedPlacements","hasAuto","val","popperPlacements","_placement","bsClassRegExp","popperElement","popperPlacement","className","flip_default","preventOverflow_default","arrow_default","noop","arg","ngbPositioning","popperInstance","positioningOption","popperOptions","createPopper","NGB_DATEPICKER_PARSER_FORMATTER_FACTORY","NgbDateISOParserFormatter","NgbDateParserFormatter","_NgbDateParserFormatter","_NgbDateISOParserFormatter","dateParts","isNumber","padNumber","ɵNgbDateISOParserFormatter_BaseFactory","NgbInputDatepickerConfig","_NgbInputDatepickerConfig","ɵNgbInputDatepickerConfig_BaseFactory","addPopperOffset","offset$1","offset_default","NgbInputDatepicker","_NgbInputDatepicker","ViewContainerRef","isDisabled","c","updateView","inputValueChanged","hostElement","isString","elementToFocus","datepickerComponentRef","inputName","newClass","oldClass","popupEl","nativeElement","datepickerInstance","navigateEvent","ɵɵhostProperty","NG_VALIDATORS","GREGORIAN_FIRST_DATE","GREGORIAN_LAST_DATE","ONE_DAY","PARTS_PER_HOUR","PARTS_PER_DAY","PARTS_FRACTIONAL_MONTH","PARTS_PER_MONTH","BAHARAD","NgbDropdownConfig","_NgbDropdownConfig","options","t","ɵɵdefineInjectable","NgbDropdownItem","_NgbDropdownItem","inject","ElementRef","value","ɵɵdefineDirective","rf","ctx","ɵɵhostProperty","ɵɵclassProp","NgbDropdownMenu","_NgbDropdownMenu","inject","NgbDropdown","ElementRef","t","ɵɵdefineDirective","rf","ctx","dirIndex","ɵɵcontentQuery","NgbDropdownItem","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵlistener","$event","ɵɵclassProp","NgbDropdownAnchor","_NgbDropdownAnchor","ɵɵattribute","NgbDropdownToggle","_NgbDropdownToggle","ɵNgbDropdownToggle_BaseFactory","ɵɵgetInheritedFactory","ɵɵProvidersFeature","forwardRef","ɵɵInheritDefinitionFeature","_NgbDropdown","ChangeDetectorRef","NgbDropdownConfig","DOCUMENT","NgZone","Subject","ngbPositioning","EventEmitter","take","changes","currentValue","previousValue","options","addPopperOffset","ngbAutoClose","source","event","key","itemElements","position","itemElement","isEventFromToggle","item","index","getActiveElement","Key","fromEvent","focusableElements","FOCUSABLE_ELEMENTS_SELECTOR","relatedTarget","disabled","nativeElement","menu","placement","container","dropdownMenuElement","bodyContainer","newClass","oldClass","targetElement","dropdownClass","InputFlags","ɵɵNgOnChangesFeature","NgbModalConfig","_NgbModalConfig","inject","NgbConfig","animation","t","ɵɵdefineInjectable","ContentRef","nodes","viewRef","componentRef","PopupService","_componentType","DOCUMENT","ApplicationRef","Injector","ViewContainerRef","NgZone","content","templateContext","nativeElement","transition$","take","mergeMap","ngbRunTransition","classList","tap","of","TemplateRef","ScrollBar","_ScrollBar","scrollbarWidth","body","bodyStyle","overflow","paddingRight","actualPadding","NgbModalBackdrop","_NgbModalBackdrop","ElementRef","element","reflow","ɵɵdefineComponent","rf","ctx","ɵɵclassMap","ɵɵclassProp","ɵɵStandaloneFeature","NgbActiveModal","options","result","reason","WINDOW_ATTRIBUTES","BACKDROP_ATTRIBUTES","NgbModalRef","windowInstance","optionName","isDefined","backdropInstance","takeUntil","_windowCmptRef","_contentRef","_backdropCmptRef","_beforeDismiss","Subject","resolve","reject","dismiss","isPromise","windowTransition$","backdropTransition$","zip","ModalDismissReasons","NgbModalWindow","_NgbModalWindow","EventEmitter","isString","context","dialogTransition$","transitions$","fromEvent","filter","e","Key","event","preventClose","switchMap","target","autoFocusable","firstFocusable","getFocusableBoundaryElements","elWithFocus","elementToFocus","ɵɵviewQuery","_c7","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵattribute","_c0","ɵɵprojectionDef","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","NgbModalStack","_NgbModalStack","EnvironmentInjector","ngZone","activeWindowCmpt","ngbFocusTrap","scrollBarRestoreFn","contentInjector","containerEl","activeModal","environmentInjector","contentRef","backdropCmptRef","windowCmptRef","ngbModalRef","createComponent","projectableNodes","templateRef","component","componentType","elementInjector","componentNativeEl","parent","sibling","value","unregisterModalRef","index","ngbWindowCmpt","NgbModal","_NgbModal","combinedOptions","__spreadValues","__spreadProps","NgbModalModule","_NgbModalModule","ɵɵdefineNgModule","ɵɵdefineInjector","NgbNavConfig","_NgbNavConfig","isValidNavId","id","navCounter","NgbNavContent","_NgbNavContent","ɵɵdefineDirective","NgbNavItemRole","_NgbNavItemRole","role","NgbNav","ɵɵinjectAttribute","NgbNavItem","_NgbNavItem","dirIndex","ɵɵcontentQuery","InputFlags","_NgbNav","ChangeDetectorRef","DestroyRef","item","relatedTarget","key","enabledLinks","link","length","position","nextId","takeUntilDestroyed","activeId","emitNavChange","defaultPrevented","nextItemId","itemId","NgbNavLinkBase","ɵɵlistener","$event","ɵɵNgOnChangesFeature","_NgbNavLinkBase","ɵɵhostProperty","NgbNavLink","_NgbNavLink","NgbNavLinkBase","ɵNgbNavLink_BaseFactory","t","ɵɵgetInheritedFactory","ɵɵdefineDirective","rf","ctx","ɵɵlistener","$event","ɵɵInheritDefinitionFeature","ngbNavFadeOutTransition","classList","ngbNavFadeInTransition","element","animation","reflow","NgbNavPane","_NgbNavPane","inject","ElementRef","ɵɵhostProperty","ɵɵattribute","ɵɵclassProp","NgbNavOutlet","_NgbNavOutlet","ChangeDetectorRef","NgZone","item","takeUntilDestroyed","startWith","distinctUntilChanged","skip","nextItem","options","ngbRunTransition","activeItem","pane","ɵɵdefineComponent","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","InputFlags","ɵɵStandaloneFeature","_c8","ɵɵrepeaterCreate","NgbNavOutlet_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","NgTemplateOutlet","NgbPaginationConfig","_NgbPaginationConfig","t","ɵɵdefineInjectable","NgbPaginationEllipsis","_NgbPaginationEllipsis","inject","TemplateRef","ɵɵdefineDirective","NgbPaginationFirst","_NgbPaginationFirst","NgbPaginationLast","_NgbPaginationLast","NgbPaginationNext","_NgbPaginationNext","NgbPaginationNumber","_NgbPaginationNumber","NgbPaginationPrevious","_NgbPaginationPrevious","NgbPaginationPages","_NgbPaginationPages","NgbPagination","_NgbPagination","EventEmitter","pageNumber","changes","start","end","leftOffset","rightOffset","newPageNo","prevPageNo","getValueInRange","isNumber","newPage","ɵɵdefineComponent","rf","ctx","dirIndex","ɵɵcontentQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","i18n_12","i18n_13","i18n_14","i18n_15","i18n_16","i18n_17","i18n_18","i18n_19","ɵɵtemplate","NgbPagination_ng_template_0_Template","ɵɵtemplateRefExtractor","NgbPagination_ng_template_2_Template","NgbPagination_ng_template_4_Template","NgbPagination_ng_template_6_Template","NgbPagination_ng_template_8_Template","NgbPagination_ng_template_10_Template","NgbPagination_ng_template_12_Template","ɵɵelementStart","NgbPagination_Conditional_15_Template","NgbPagination_Conditional_16_Template","NgbPagination_ng_template_17_Template","NgbPagination_Conditional_18_Template","NgbPagination_Conditional_19_Template","ɵɵelementEnd","defaultPages_r19","ɵɵreference","ɵɵadvance","ɵɵclassMap","ɵɵconditional","ɵɵproperty","ɵɵpureFunction3","_c9","NgTemplateOutlet","ALIASES","parseTriggers","triggers","trimmedTriggers","parsedTriggers","trigger","triggerPair","manualTriggers","listenToTriggers","element","isOpenedFn","openFn","closeFn","openDelayMs","closeDelayMs","activeOpenTriggers","cleanupFns","timeout","addEventListener","name","listener","withDelay","fn","delayMs","openTrigger","closeTrigger","cleanupFn","NgbPopoverConfig","_NgbPopoverConfig","inject","NgbConfig","options","animation","t","ɵɵdefineInjectable","nextId$1","NgbPopoverWindow","_NgbPopoverWindow","TemplateRef","ɵɵdefineComponent","rf","ctx","ɵɵhostProperty","ɵɵclassMap","ɵɵclassProp","ɵɵStandaloneFeature","_c0","ɵɵprojectionDef","ɵɵelement","ɵɵtemplate","NgbPopoverWindow_Conditional_1_Template","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","ɵɵadvance","ɵɵconditional","NgTemplateOutlet","NgbPopover","_NgbPopover","EventEmitter","ElementRef","NgZone","DOCUMENT","ChangeDetectorRef","PopupService","ngbPositioning","context","windowRef","transition$","addPopperOffset","ngbAutoClose","ngbPopover","popoverTitle","disablePopover","popoverClass","isString","ɵɵdefineDirective","ɵɵNgOnChangesFeature","NgbProgressbarConfig","_NgbProgressbarConfig","t","ɵɵdefineInjectable","NgbProgressbar","_NgbProgressbar","max","isNumber","inject","NgbProgressbarStacked","getValueInRange","ɵɵdefineComponent","rf","ctx","ɵɵattribute","ɵɵstyleProp","ɵɵStandaloneFeature","_c0","i18n_20","ɵɵprojectionDef","ɵɵelementStart","ɵɵtemplate","NgbProgressbar_Conditional_1_Template","ɵɵprojection","ɵɵelementEnd","ɵɵclassMapInterpolate2","ɵɵclassProp","ɵɵadvance","ɵɵconditional","PercentPipe","_NgbProgressbarStacked","NgbRatingConfig","_NgbRatingConfig","t","ɵɵdefineInjectable","NgbTooltipConfig","_NgbTooltipConfig","inject","NgbConfig","options","animation","t","ɵɵdefineInjectable","nextId","NgbTooltipWindow","_NgbTooltipWindow","ɵɵdefineComponent","rf","ctx","ɵɵhostProperty","ɵɵclassMap","ɵɵclassProp","ɵɵStandaloneFeature","_c0","ɵɵprojectionDef","ɵɵelement","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","NgbTooltip","_NgbTooltip","EventEmitter","ElementRef","NgZone","DOCUMENT","ChangeDetectorRef","PopupService","ngbPositioning","value","context","windowRef","transition$","addPopperOffset","ngbAutoClose","listenToTriggers","tooltipClass","isString","ɵɵdefineDirective","ɵɵNgOnChangesFeature","NgbHighlight","_NgbHighlight","changes","result","toString","terms","prepareTerm","term","removeAccents","escapedTerms","regExpEscape","toSplit","parts","offset","part","t","ɵɵdefineComponent","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","rf","ctx","ɵɵrepeaterCreate","NgbHighlight_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","ARIA_LIVE_DELAY","InjectionToken","getLiveElement","document","lazyCreate","element","Live","_Live","inject","DOCUMENT","message","delay","setText","ɵɵdefineInjectable","NgbTypeaheadConfig","_NgbTypeaheadConfig","options","NgbTypeaheadWindow","_NgbTypeaheadWindow","EventEmitter","activeIdx","item","ɵɵlistener","$event","ɵɵhostProperty","ɵɵclassMap","ɵɵtemplate","NgbTypeaheadWindow_ng_template_0_Template","ɵɵtemplateRefExtractor","NgbTypeaheadWindow_For_3_Template","ɵɵadvance","NgTemplateOutlet","nextWindowId","NgbTypeahead","_NgbTypeahead","ElementRef","NgZone","ChangeDetectorRef","PopupService","ngbPositioning","Subject","fromEvent","map","BehaviorSubject","_","ngbTypeahead","fn","value","isDisabled","event","Key","isDefined","windowRef","activeId","addPopperOffset","ngbAutoClose","defaultPrevented","userInputLowerCase","formattedVal","results$","tap","of","switchMap","results","count","ɵɵdefineDirective","ɵɵattribute","ɵɵclassProp","ɵɵProvidersFeature","NG_VALUE_ACCESSOR","forwardRef","NgbOffcanvasConfig","_NgbOffcanvasConfig","inject","NgbConfig","animation","t","ɵɵdefineInjectable","NgbActiveOffcanvas","result","reason","NgbOffcanvasRef","takeUntil","_panelCmptRef","_contentRef","_backdropCmptRef","_beforeDismiss","Subject","resolve","reject","dismiss","isPromise","panelTransition$","backdropTransition$","of","nativeElement","zip","OffcanvasDismissReasons","NgbOffcanvasBackdrop","_NgbOffcanvasBackdrop","ElementRef","NgZone","EventEmitter","take","ngbRunTransition","element","reflow","classList","ɵɵdefineComponent","rf","ctx","ɵɵlistener","ɵɵclassMap","ɵɵclassProp","ɵɵStandaloneFeature","NgbOffcanvasPanel","_NgbOffcanvasPanel","DOCUMENT","context","offcanvasTransition$","fromEvent","filter","e","Key","event","autoFocusable","firstFocusable","getFocusableBoundaryElements","body","elWithFocus","elementToFocus","ɵɵattribute","_c0","ɵɵprojectionDef","ɵɵprojection","NgbOffcanvasStack","_NgbOffcanvasStack","ApplicationRef","Injector","ScrollBar","ngZone","ngbFocusTrap","scrollBarRestoreFn","contentInjector","content","options","containerEl","isDefined","activeOffcanvas","contentRef","backdropCmptRef","panelCmptRef","ngbOffcanvasRef","finalize","createComponent","projectableNodes","windowInstance","optionName","backdropInstance","TemplateRef","isString","ContentRef","templateRef","viewRef","component","componentType","elementInjector","componentRef","componentNativeEl","unregisterOffcanvasRef","ngbPanelCmpt","NgbOffcanvas","_NgbOffcanvas","combinedOptions","__spreadValues","__spreadProps","AnimationMetadataType","AUTO_STYLE","trigger","name","definitions","animate","timings","styles","sequence","steps","options","AnimationMetadataType","style","tokens","state","name","styles","transition","stateChangeExpr","steps","options","AnimationMetadataType","query","selector","animation","options","AnimationMetadataType","stagger","timings","NoopAnimationPlayer","duration","delay","fn","position","phaseName","methods","AnimationGroupPlayer","_players","doneCount","destroyCount","startCount","total","player","time","p","timeAtPosition","longestPlayer","longestSoFar","ɵPRE_STYLE","_c0","Toast_button_0_Template","rf","ctx","_r1","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","ctx_r1","ɵɵnextContext","ɵɵresetView","ɵɵtext","ɵɵelementEnd","Toast_div_1_ng_container_2_Template","ɵɵelementContainerStart","ɵɵelementContainerEnd","ɵɵadvance","ɵɵtextInterpolate1","Toast_div_1_Template","ɵɵtemplate","ɵɵclassMap","ɵɵattribute","ɵɵproperty","Toast_div_2_Template","ɵɵelement","ɵɵsanitizeHtml","Toast_div_3_Template","Toast_div_4_Template","ɵɵstyleProp","ToastNoAnimation_button_0_Template","ToastNoAnimation_div_1_ng_container_2_Template","ToastNoAnimation_div_1_Template","ToastNoAnimation_div_2_Template","ToastNoAnimation_div_3_Template","ToastNoAnimation_div_4_Template","ComponentPortal","component","injector","host","newestOnTop","BasePortalHost","portal","fn","ToastRef","Subject","_overlayRef","resetTimeout","countDuplicate","ToastPackage","toastId","config","message","title","toastType","toastRef","action","DefaultNoComponentGlobalConfig","TOAST_CONFIG","InjectionToken","DomPortalHost","_hostDomElement","_componentFactoryResolver","_appRef","componentFactory","componentRef","OverlayContainer","inject","DOCUMENT","container","ɵɵdefineInjectable","OverlayRef","_portalHost","Overlay","ComponentFactoryResolver$1","ApplicationRef","positionClass","overlayContainer","pane","ToastrService","token","overlay","_injector","sanitizer","ngZone","__spreadValues","override","type","toast","found","p","resetOnDuplicate","countDuplicates","includeTitleDuplicates","hasDuplicateTitle","i","duplicate","keepInactive","overlayRef","sanitizedMessage","SecurityContext","toastPackage","providers","toastInjector","Injector","ins","ɵɵinject","DomSanitizer","NgZone","Toast","toastrService","count","__spreadProps","now","remaining","func","timeout","ɵɵdirectiveInject","ɵɵdefineComponent","rf","ctx","ɵɵlistener","ɵɵsyntheticHostProperty","ɵɵclassMap","ɵɵstyleProp","ɵɵStandaloneFeature","_c0","ɵɵtemplate","Toast_button_0_Template","Toast_div_1_Template","Toast_div_2_Template","Toast_div_3_Template","Toast_div_4_Template","ɵɵproperty","ɵɵadvance","NgIf","trigger","state","style","transition","animate","DefaultGlobalConfig","provideToastr","makeEnvironmentProviders","ToastrModule","ɵɵdefineNgModule","ɵɵdefineInjector","ToastNoAnimation","toastrService","toastPackage","appRef","count","now","remaining","ɵɵdirectiveInject","ToastrService","ToastPackage","ApplicationRef","ɵɵdefineComponent","rf","ctx","ɵɵlistener","ɵɵclassMap","ɵɵstyleProp","ɵɵStandaloneFeature","_c0","ɵɵtemplate","ToastNoAnimation_button_0_Template","ToastNoAnimation_div_1_Template","ToastNoAnimation_div_2_Template","ToastNoAnimation_div_3_Template","ToastNoAnimation_div_4_Template","ɵɵproperty","ɵɵadvance","NgIf","DefaultNoAnimationsGlobalConfig","__spreadProps","__spreadValues","DefaultNoComponentGlobalConfig"],"x_google_ignoreList":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57]}