{"version":3,"sources":["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","src/app/shared/confirm-dialog/confirm-dialog.component.ts","src/app/shared/confirm-dialog/confirm-dialog.component.html","src/app/shared/confirm-dialog/_models/confirm-config.ts","src/app/shared/confirm.service.ts"],"sourcesContent":["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 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 \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 `` and `` 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, Injector, afterNextRender, AfterRenderPhase, LOCALE_ID, ViewChild, forwardRef, afterRender, ApplicationRef, EnvironmentInjector, createComponent, Attribute, ViewChildren, 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, startWith, distinctUntilChanged, switchMap, take, tap, withLatestFrom, delay, mergeMap, skip, finalize } from 'rxjs/operators';\nimport { isPlatformBrowser, NgTemplateOutlet, formatDate, DOCUMENT, PercentPipe } 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 ɵ$index_8_r5 = ctx.$index;\n const ɵ$count_8_r6 = ctx.$count;\n i0.ɵɵproperty(\"id\", \"slide-\" + slide_r4.id);\n i0.ɵɵadvance(2);\n i0.ɵɵi18nExp(ɵ$index_8_r5 + 1)(ɵ$count_8_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 ɵ$index_11_r4 = ctx.$index;\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵconditional(ɵ$index_11_r4 > 0 ? 0 : -1);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.i18n.getMonthLabel(month_r3.firstDate), \" \");\n i0.ɵɵadvance();\n i0.ɵɵconditional(ɵ$index_11_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.ɵɵrepeaterTrackByIndex);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵconditional(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(!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(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(!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(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(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\", 18);\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, \"a\", 17);\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(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.ɵɵrepeaterTrackByIndex);\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\", 19);\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\", 20);\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\", 21);\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\", 22);\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_4_r3 = i0.ɵɵrestoreView(_r2).$index;\n const ctx_r3 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r3.enter(ɵ$index_4_r3 + 1));\n })(\"click\", function NgbRating_For_3_Template_span_click_2_listener() {\n const ɵ$index_4_r3 = i0.ɵɵrestoreView(_r2).$index;\n const ctx_r3 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r3.handleClick(ɵ$index_4_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_4_r3 = ctx.$index;\n const ctx_r3 = i0.ɵɵnextContext();\n const t_r5 = i0.ɵɵreference(1);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\"(\", ɵ$index_4_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_4_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(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(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, \"ng-container\");\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(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, \"ng-container\");\n }\n if (rf & 2) {\n const ɵ$index_1_r3 = ctx.$index;\n i0.ɵɵconditional(ɵ$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 $index_r5 = i0.ɵɵrestoreView(_r4).$index;\n const ctx_r5 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r5.markActive($index_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 $index_r5 = ctx.$index;\n const ctx_r5 = i0.ɵɵnextContext();\n const rt_r8 = i0.ɵɵreference(1);\n i0.ɵɵclassProp(\"active\", $index_r5 === ctx_r5.activeIdx);\n i0.ɵɵproperty(\"id\", ctx_r5.id + \"-\" + $index_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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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', 'collapsing', '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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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: [0, \"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 this._viewRef?.destroy();\n this._viewRef = null;\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 hostAttrs: [1, \"accordion-body\"],\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgbAccordionCollapse)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbAccordionCollapse,\n selectors: [[\"\", \"ngbAccordionCollapse\", \"\"]],\n hostAttrs: [\"role\", \"region\", 1, \"accordion-collapse\"],\n hostVars: 2,\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 }\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgbAccordionButton)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbAccordionButton,\n selectors: [[\"button\", \"ngbAccordionButton\", \"\"]],\n hostAttrs: [\"type\", \"button\", 1, \"accordion-button\"],\n hostVars: 1,\n hostBindings: function NgbAccordionButton_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"disabled\", ctx.item.disabled);\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgbAccordionHeader)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbAccordionHeader,\n selectors: [[\"\", \"ngbAccordionHeader\", \"\"]],\n hostAttrs: [\"role\", \"heading\", 1, \"accordion-header\"],\n hostVars: 2,\n hostBindings: function NgbAccordionHeader_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 hostAttrs: [1, \"accordion-item\"],\n hostVars: 1,\n hostBindings: function NgbAccordionItem_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.id);\n }\n },\n inputs: {\n id: [0, \"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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 hostAttrs: [1, \"accordion\"],\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_0 = goog.getMsg(\"Close\");\n i18n_0 = MSG__HOME_RUNNER_WORK_KAVITA_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(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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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', 'carousel-item-end');\n};\nconst removeClasses = classList => {\n removeDirectionClasses(classList);\n classList.remove('carousel-item-prev', 'carousel-item-next');\n};\nconst ngbCarouselTransitionIn = (element, animation, {\n direction\n}) => {\n const {\n classList\n } = element;\n if (!animation) {\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 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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._injector = inject(Injector);\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 afterNextRender(() => {\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 phase: AfterRenderPhase.MixedReadWrite,\n injector: this._injector\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_2 = goog.getMsg(\"Previous\");\n i18n_2 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_3 = goog.getMsg(\"Next\");\n i18n_3 = MSG__HOME_RUNNER_WORK_KAVITA_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(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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbCalendarGregorian_BaseFactory || (ɵNgbCalendarGregorian_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarGregorian)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 = [...Array(12).keys()].map(month => Intl.DateTimeFormat(this._locale, {\n month: 'short',\n timeZone: 'UTC'\n }).format(Date.UTC(2000, month)));\n this._monthsFull = [...Array(12).keys()].map(month => Intl.DateTimeFormat(this._locale, {\n month: 'long',\n timeZone: 'UTC'\n }).format(Date.UTC(2000, month)));\n }\n getWeekdayLabel(weekday, width = 'narrow') {\n // 1 MAY 2000 is a Monday\n const weekdays = [1, 2, 3, 4, 5, 6, 7].map(day => Intl.DateTimeFormat(this._locale, {\n weekday: width,\n timeZone: 'UTC'\n }).format(Date.UTC(2000, 4, day)));\n // `weekday` is 1 (Mon) to 7 (Sun)\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(__ngFactoryType__) {\n return (ɵNgbDatepickerI18nDefault_BaseFactory || (ɵNgbDatepickerI18nDefault_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDatepickerI18nDefault)))(__ngFactoryType__ || 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 ? 'narrow' : 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: 'narrow',\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 = 'narrow';\n }\n static {\n this.ɵfac = function NgbDatepickerConfig_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbDateStructAdapter_BaseFactory || (ɵNgbDateStructAdapter_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDateStructAdapter)))(__ngFactoryType__ || 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})();\n\n/**\n * A service that represents the keyboard navigation.\n *\n * Default keyboard shortcuts [are documented in the overview](#/components/datepicker/overview#keyboard-shortcuts)\n *\n * @since 5.2.0\n */\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 switch (event.key) {\n case 'PageUp':\n datepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case 'PageDown':\n datepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case 'End':\n datepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\n break;\n case 'Home':\n datepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\n break;\n case 'ArrowLeft':\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\n break;\n case 'ArrowUp':\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case 'ArrowRight':\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\n break;\n case 'ArrowDown':\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case 'Enter':\n case ' ':\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_4 = goog.getMsg(\"Select month\");\n i18n_4 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_5 = goog.getMsg(\"Select month\");\n i18n_5 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_6 = goog.getMsg(\"Select year\");\n i18n_6 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_7 = goog.getMsg(\"Select year\");\n i18n_7 = MSG__HOME_RUNNER_WORK_KAVITA_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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_8 = goog.getMsg(\"Previous month\");\n i18n_8 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_9 = goog.getMsg(\"Previous month\");\n i18n_9 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_10 = goog.getMsg(\"Next month\");\n i18n_10 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_11 = goog.getMsg(\"Next month\");\n i18n_11 = MSG__HOME_RUNNER_WORK_KAVITA_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(ctx.showSelect ? 3 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(!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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 `` 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(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._injector = inject(Injector);\n this._controlValue = null;\n this._publicState = {};\n this._initialized = false;\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 * * `\"short\" | \"long\" | \"narrow\"` - 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 afterNextRender(() => {\n this._nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]')?.focus();\n }, {\n phase: AfterRenderPhase.Read,\n injector: this._injector\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 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 this._initialized = true;\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 && this._initialized) {\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(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$), filter(e => e.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$), filter(e => e.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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbDateISOParserFormatter_BaseFactory || (ɵNgbDateISOParserFormatter_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDateISOParserFormatter)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbInputDatepickerConfig_BaseFactory || (ɵNgbInputDatepickerConfig_BaseFactory = i0.ɵɵgetInheritedFactory(NgbInputDatepickerConfig)))(__ngFactoryType__ || 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._injector = inject(Injector);\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 injector: this._injector\n });\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 updatePopperOptions: options => this.popperOptions(addPopperOffset([0, 2])(options))\n });\n this._afterRenderRef = afterRender(() => {\n this._positioning.update();\n }, {\n phase: AfterRenderPhase.MixedReadWrite,\n injector: this._injector\n });\n }\n });\n this._setCloseHandlers();\n }\n }\n /**\n * Closes the datepicker popup.\n */\n close() {\n if (this.isOpen()) {\n this._cRef?.destroy();\n this._cRef = null;\n this._positioning.destroy();\n this._afterRenderRef?.destroy();\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbCalendarHijri_BaseFactory || (ɵNgbCalendarHijri_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarHijri)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbCalendarIslamicCivil_BaseFactory || (ɵNgbCalendarIslamicCivil_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarIslamicCivil)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbCalendarIslamicUmalqura_BaseFactory || (ɵNgbCalendarIslamicUmalqura_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarIslamicUmalqura)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbCalendarPersian_BaseFactory || (ɵNgbCalendarPersian_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarPersian)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbCalendarHebrew_BaseFactory || (ɵNgbCalendarHebrew_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarHebrew)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbDatepickerI18nHebrew_BaseFactory || (ɵNgbDatepickerI18nHebrew_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDatepickerI18nHebrew)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbCalendarBuddhist_BaseFactory || (ɵNgbCalendarBuddhist_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarBuddhist)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbCalendarEthiopian_BaseFactory || (ɵNgbCalendarEthiopian_BaseFactory = i0.ɵɵgetInheritedFactory(NgbCalendarEthiopian)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbDatepickerI18nAmharic_BaseFactory || (ɵNgbDatepickerI18nAmharic_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDatepickerI18nAmharic)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbDateNativeAdapter_BaseFactory || (ɵNgbDateNativeAdapter_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDateNativeAdapter)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbDateNativeUTCAdapter_BaseFactory || (ɵNgbDateNativeUTCAdapter_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDateNativeUTCAdapter)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 hostAttrs: [1, \"dropdown-menu\"],\n hostVars: 2,\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(\"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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbDropdownToggle_BaseFactory || (ɵNgbDropdownToggle_BaseFactory = i0.ɵɵgetInheritedFactory(NgbDropdownToggle)))(__ngFactoryType__ || 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._injector = inject(Injector);\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 afterNextRender(() => {\n this._applyPlacementClasses();\n if (this._open) {\n this._setCloseHandlers();\n }\n }, {\n phase: AfterRenderPhase.Write,\n injector: this._injector\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 });\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 updatePopperOptions: options => this.popperOptions(addPopperOffset([0, 2])(options))\n });\n this._applyPlacementClasses();\n this._afterRenderRef = afterRender(() => {\n this._positionMenu();\n }, {\n phase: AfterRenderPhase.Write,\n injector: this._injector\n });\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._afterRenderRef?.destroy();\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 const {\n key\n } = event;\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 === '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 === '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 'ArrowDown':\n position = Math.min(position + 1, itemElements.length - 1);\n break;\n case '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 'Home':\n position = 0;\n break;\n case '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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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: [0, \"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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 nextRenderSubject = new Subject();\n afterNextRender(() => {\n nextRenderSubject.next();\n nextRenderSubject.complete();\n }, {\n injector: this._injector,\n phase: AfterRenderPhase.MixedReadWrite\n });\n const transition$ = nextRenderSubject.pipe(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 this._windowRef?.destroy();\n this._contentRef?.viewRef?.destroy();\n this._windowRef = null;\n this._contentRef = null;\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 this._injector = inject(Injector);\n }\n ngOnInit() {\n afterNextRender(() => 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 injector: this._injector,\n phase: AfterRenderPhase.MixedReadWrite\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 this._contentRef?.viewRef?.destroy();\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._injector = inject(Injector);\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 afterNextRender(() => this._show(), {\n injector: this._injector,\n phase: AfterRenderPhase.MixedReadWrite\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$), filter(e => e.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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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.contentTpl = _t.first);\n }\n },\n hostAttrs: [1, \"nav-item\"],\n inputs: {\n destroyOnHide: \"destroyOnHide\",\n disabled: \"disabled\",\n domId: \"domId\",\n _id: [0, \"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 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 (event.key) {\n case 'ArrowUp':\n case 'ArrowLeft':\n position = (position - 1 + length) % length;\n break;\n case 'ArrowRight':\n case 'ArrowDown':\n position = (position + 1) % length;\n break;\n case 'Home':\n position = 0;\n break;\n case '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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 hostAttrs: [1, \"nav\"],\n hostVars: 4,\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(\"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(__ngFactoryType__) {\n return new (__ngFactoryType__ || NgbNavLinkBase)(i0.ɵɵinjectAttribute('role'));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: NgbNavLinkBase,\n selectors: [[\"\", \"ngbNavLink\", \"\"]],\n hostAttrs: [1, \"nav-link\"],\n hostVars: 12,\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-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(__ngFactoryType__) {\n return (ɵNgbNavLinkButton_BaseFactory || (ɵNgbNavLinkButton_BaseFactory = i0.ɵɵgetInheritedFactory(NgbNavLinkButton)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbNavLink_BaseFactory || (ɵNgbNavLink_BaseFactory = i0.ɵɵgetInheritedFactory(NgbNavLink)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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', '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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 hostAttrs: [1, \"tab-content\"],\n inputs: {\n paneRole: \"paneRole\",\n nav: [0, \"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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_12 = goog.getMsg(\"\\xAB\\xAB\");\n i18n_12 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_13 = goog.getMsg(\"\\xAB\");\n i18n_13 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_14 = goog.getMsg(\"\\xBB\");\n i18n_14 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_15 = goog.getMsg(\"\\xBB\\xBB\");\n i18n_15 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_16 = goog.getMsg(\"First\");\n i18n_16 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_17 = goog.getMsg(\"Previous\");\n i18n_17 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_18 = goog.getMsg(\"Next\");\n i18n_18 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_19 = goog.getMsg(\"Last\");\n i18n_19 = MSG__HOME_RUNNER_WORK_KAVITA_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\"], [\"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(ctx.boundaryLinks ? 15 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(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(ctx.directionLinks ? 18 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(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._injector = inject(Injector);\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 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 });\n this._afterRenderRef = afterRender(() => {\n this._positioning.update();\n }, {\n phase: AfterRenderPhase.MixedReadWrite,\n injector: this._injector\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._afterRenderRef?.destroy();\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_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(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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 switch (event.key) {\n case 'ArrowDown':\n case 'ArrowLeft':\n this.update(this.rate - 1);\n break;\n case 'ArrowUp':\n case 'ArrowRight':\n this.update(this.rate + 1);\n break;\n case 'Home':\n this.update(0);\n break;\n case '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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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: [0, \"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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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: [0, \"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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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: [0, \"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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return (ɵNgbTimeStructAdapter_BaseFactory || (ɵNgbTimeStructAdapter_BaseFactory = i0.ɵɵgetInheritedFactory(NgbTimeStructAdapter)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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._locale = inject(LOCALE_ID);\n this._periods = [formatDate(new Date(3600000), 'a', this._locale, 'UTC'), formatDate(new Date(3600000 * 13), 'a', this._locale, 'UTC')];\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(__ngFactoryType__) {\n return (ɵNgbTimepickerI18nDefault_BaseFactory || (ɵNgbTimepickerI18nDefault_BaseFactory = i0.ɵɵgetInheritedFactory(NgbTimepickerI18nDefault)))(__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_21 = goog.getMsg(\"HH\");\n i18n_21 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_22 = goog.getMsg(\"Hours\");\n i18n_22 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_23 = goog.getMsg(\"MM\");\n i18n_23 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_24 = goog.getMsg(\"Minutes\");\n i18n_24 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_25 = goog.getMsg(\"Increment hours\");\n i18n_25 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_26 = goog.getMsg(\"Decrement hours\");\n i18n_26 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_27 = goog.getMsg(\"Increment minutes\");\n i18n_27 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_28 = goog.getMsg(\"Decrement minutes\");\n i18n_28 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_29 = goog.getMsg(\"SS\");\n i18n_29 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_30 = goog.getMsg(\"Seconds\");\n i18n_30 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_31 = goog.getMsg(\"Increment seconds\");\n i18n_31 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_32 = goog.getMsg(\"Decrement seconds\");\n i18n_32 = MSG__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_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__HOME_RUNNER_WORK_KAVITA_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(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(ctx.spinners ? 5 : -1);\n i0.ɵɵadvance(4);\n i0.ɵɵconditional(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(ctx.spinners ? 11 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(ctx.seconds ? 12 : -1);\n i0.ɵɵadvance();\n i0.ɵɵconditional(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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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._injector = inject(Injector);\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 `` 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 afterNextRender(() => {\n this._init();\n this.show();\n }, {\n phase: AfterRenderPhase.MixedReadWrite,\n injector: this._injector\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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__HOME_RUNNER_WORK_KAVITA_KAVITA_UI_WEB_NODE_MODULES__NG_BOOTSTRAP_NG_BOOTSTRAP_FESM2022_NG_BOOTSTRAP_MJS_34 = goog.getMsg(\"Close\");\n i18n_34 = MSG__HOME_RUNNER_WORK_KAVITA_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(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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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._injector = inject(Injector);\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 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 });\n this._afterRenderRef = afterRender(() => {\n this._positioning.update();\n }, {\n phase: AfterRenderPhase.MixedReadWrite,\n injector: this._injector\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._afterRenderRef?.destroy();\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 necessary because it's possible that ngOnDestroy could be invoked 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 `Alaska`.\n */\nlet NgbHighlight = /*#__PURE__*/(() => {\n class NgbHighlight {\n constructor() {\n /**\n * The CSS class for `` 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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.ɵɵrepeaterTrackByIndex);\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 \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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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.ɵɵrepeaterTrackByIndex);\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._injector = inject(Injector);\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 `` 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 `` 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 switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this._windowRef.instance.next();\n this._showHint();\n break;\n case 'ArrowUp':\n event.preventDefault();\n this._windowRef.instance.prev();\n this._showHint();\n break;\n case 'Enter':\n case '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 updatePopperOptions: options => this.popperOptions(addPopperOffset([0, 2])(options))\n });\n this._afterRenderRef = afterRender(() => {\n this._positioning.update();\n }, {\n phase: AfterRenderPhase.MixedReadWrite,\n injector: this._injector\n });\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._afterRenderRef?.destroy();\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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 this._contentRef?.viewRef?.destroy();\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._injector = inject(Injector);\n this.dismissEvent = new EventEmitter();\n }\n ngOnInit() {\n afterNextRender(() => 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 injector: this._injector,\n phase: AfterRenderPhase.MixedReadWrite\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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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._injector = inject(Injector);\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 afterNextRender(() => this._show(), {\n injector: this._injector,\n phase: AfterRenderPhase.MixedReadWrite\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$), filter(e => e.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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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(__ngFactoryType__) {\n return new (__ngFactoryType__ || 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","import { Component, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport { ConfirmButton } from './_models/confirm-button';\nimport { ConfirmConfig } from './_models/confirm-config';\nimport {CommonModule} from \"@angular/common\";\nimport {SafeHtmlPipe} from \"../../_pipes/safe-html.pipe\";\nimport {TranslocoDirective} from \"@jsverse/transloco\";\n\n@Component({\n selector: 'app-confirm-dialog',\n standalone: true,\n imports: [CommonModule, SafeHtmlPipe, TranslocoDirective],\n templateUrl: './confirm-dialog.component.html',\n styleUrls: ['./confirm-dialog.component.scss']\n})\nexport class ConfirmDialogComponent implements OnInit {\n\n config!: ConfirmConfig;\n\n constructor(public modal: NgbActiveModal) {}\n\n ngOnInit(): void {\n if (this.config) {\n this.config.buttons.sort(this._button_sort);\n }\n }\n\n private _button_sort(x: ConfirmButton, y: ConfirmButton) {\n const xIsSecondary = x.type === 'secondary';\n const yIsSecondary = y.type === 'secondary';\n if (xIsSecondary && !yIsSecondary) {\n return -1;\n } else if (!xIsSecondary && yIsSecondary) {\n return 1;\n }\n return 0;\n }\n\n clickButton(button: ConfirmButton) {\n this.modal.close(button.type === 'primary');\n }\n\n close() {\n this.modal.close(false);\n }\n\n}\n","\n
\n

{{config.header}}

\n \n
\n
\n
\n
\n
\n \n
\n
\n\n
\n","import { ConfirmButton } from './confirm-button';\n\nexport class ConfirmConfig {\n _type: 'confirm' | 'alert' = 'confirm';\n header: string = 'Confirm';\n content: string = '';\n buttons: Array = [];\n /**\n * If the close button shouldn't be rendered\n */\n disableEscape: boolean = false;\n}\n","import { Injectable } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { take } from 'rxjs/operators';\nimport { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport { ConfirmConfig } from './confirm-dialog/_models/confirm-config';\nimport {translate} from \"@jsverse/transloco\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmService {\n\n defaultConfirm = new ConfirmConfig();\n defaultAlert = new ConfirmConfig();\n\n constructor(private modalService: NgbModal) {\n this.defaultConfirm.buttons.push({text: 'Cancel', type: 'secondary'});\n this.defaultConfirm.buttons.push({text: 'Confirm', type: 'primary'});\n\n this.defaultAlert._type = 'alert';\n this.defaultAlert.header = 'Alert';\n this.defaultAlert.buttons.push({text: 'Ok', type: 'primary'});\n\n }\n\n public async confirm(content?: string, config?: ConfirmConfig): Promise {\n\n return new Promise((resolve, reject) => {\n if (content === undefined && config === undefined) {\n console.error('Confirm must have either text or a config object passed');\n return reject(false);\n }\n\n if (content !== undefined && config === undefined) {\n config = this.defaultConfirm;\n config.header = translate('confirm.confirm');\n config.content = content;\n }\n if (content !== undefined && content !== '' && config!.content === '') {\n config!.content = content;\n }\n\n const modalRef = this.modalService.open(ConfirmDialogComponent);\n modalRef.componentInstance.config = config;\n modalRef.closed.pipe(take(1)).subscribe(result => {\n return resolve(result);\n });\n modalRef.dismissed.pipe(take(1)).subscribe(() => {\n return resolve(false);\n });\n });\n\n }\n\n public async alert(content?: string, config?: ConfirmConfig): Promise {\n return new Promise((resolve, reject) => {\n if (content === undefined && config === undefined) {\n console.error('Alert must have either text or a config object passed');\n return reject(false);\n }\n\n if (content !== undefined && config === undefined) {\n config = this.defaultAlert;\n config.header = translate('confirm.alert');\n config.content = content;\n }\n\n const modalRef = this.modalService.open(ConfirmDialogComponent, {size: \"lg\", fullscreen: \"md\"});\n modalRef.componentInstance.config = config;\n modalRef.closed.pipe(take(1)).subscribe(result => {\n return resolve(result);\n });\n modalRef.dismissed.pipe(take(1)).subscribe(() => {\n return resolve(false);\n });\n })\n }\n}\n"],"mappings":"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","names":["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","ɵ$index_11_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","ɵɵrepeaterTrackByIndex","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","$index_r5","ɵɵrestoreView","ctx_r5","ɵɵresetView","result_r7","rt_r8","ɵɵreference","ɵɵclassProp","ɵɵpureFunction3","environment","NgbConfig","__ngFactoryType__","ɵɵdefineInjectable","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","inject","NgbConfig","__ngFactoryType__","ɵɵdefineInjectable","NgbCollapse","ElementRef","NgZone","EventEmitter","isCollapsed","open","collapsed","ngbRunTransition","ɵɵdefineDirective","rf","ctx","ɵɵclassProp","nextId$3","NgbAccordionBody","ViewContainerRef","NgbAccordionItem","node","dirIndex","ɵɵcontentQuery","TemplateRef","_t","ɵɵqueryRefresh","ɵɵloadQuery","NgbAccordionCollapse","ɵɵhostProperty","ɵɵattribute","ɵɵHostDirectivesFeature","NgbAccordionToggle","NgbAccordionDirective","ɵɵlistener","NgbAccordionButton","NgbAccordionHeader","ChangeDetectorRef","DestroyRef","id","isString","destroyOnHide","ngbCollapse","takeUntilDestroyed","NgbAccordionConfig","itemId","item","toExpand","NgbDate","_NgbDate","date","year","month","day","isInteger","other","fromJSDate","jsDate","toJSDate","NGB_DATEPICKER_CALENDAR_FACTORY","NgbCalendarGregorian","NgbCalendar","__ngFactoryType__","ɵɵdefineInjectable","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","weekNumber","NgbDatepickerI18nDefault","inject","LOCALE_ID","weekday","width","formatDate","ɵNgbDatepickerI18nDefault_BaseFactory","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","NGB_DATEPICKER_DATE_ADAPTER_FACTORY","NgbDateStructAdapter","NgbDateAdapter","ɵNgbDateStructAdapter_BaseFactory","NgbDatepickerKeyboardService","event","datepicker","NgbDatepickerDayView","ɵɵdefineComponent","rf","ctx","ɵɵclassProp","ɵɵStandaloneFeature","_c1","ɵɵtext","ɵɵtextInterpolate","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","i18n_8","i18n_9","i18n_10","i18n_11","ɵɵelement","ɵɵtemplate","NgbDatepickerNavigation_Conditional_3_Template","NgbDatepickerNavigation_Conditional_4_Template","ɵɵconditional","NgbDatepickerContent","TemplateRef","ɵɵdefineDirective","NgbDatepickerMonth","NgbDatepicker","NgbDatepickerMonth_Conditional_0_Template","NgbDatepickerMonth_For_2_Template","NgTemplateOutlet","Injector","NgZone","DestroyRef","cd","ChangeDetectorRef","takeUntilDestroyed","oldDate","viewModel","navigationPrevented","newSelectedDate","newFocusedDate","oldFocusedDate","afterNextRender","AfterRenderPhase","__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","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","dateParts","isNumber","padNumber","ɵNgbDateISOParserFormatter_BaseFactory","NgbInputDatepickerConfig","ɵNgbInputDatepickerConfig_BaseFactory","addPopperOffset","offset$1","offset_default","NgbInputDatepicker","ViewContainerRef","isDisabled","c","updateView","inputValueChanged","hostElement","isString","afterRender","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","options","__ngFactoryType__","ɵɵdefineInjectable","NgbDropdownItem","inject","ElementRef","value","ɵɵdefineDirective","rf","ctx","ɵɵhostProperty","ɵɵclassProp","NgbDropdownMenu","inject","NgbDropdown","ElementRef","__ngFactoryType__","ɵɵdefineDirective","rf","ctx","dirIndex","ɵɵcontentQuery","NgbDropdownItem","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵlistener","$event","ɵɵclassProp","NgbDropdownAnchor","ɵɵattribute","NgbDropdownToggle","ɵNgbDropdownToggle_BaseFactory","ɵɵgetInheritedFactory","ɵɵProvidersFeature","forwardRef","ɵɵInheritDefinitionFeature","ChangeDetectorRef","NgbDropdownConfig","DOCUMENT","Injector","NgZone","Subject","ngbPositioning","EventEmitter","afterNextRender","AfterRenderPhase","changes","currentValue","previousValue","options","addPopperOffset","afterRender","ngbAutoClose","source","event","key","itemElements","position","itemElement","isEventFromToggle","item","index","getActiveElement","fromEvent","take","focusableElements","FOCUSABLE_ELEMENTS_SELECTOR","relatedTarget","disabled","nativeElement","menu","placement","container","dropdownMenuElement","bodyContainer","newClass","oldClass","targetElement","dropdownClass","ɵɵNgOnChangesFeature","NgbModalConfig","inject","NgbConfig","animation","__ngFactoryType__","ɵɵdefineInjectable","ContentRef","nodes","viewRef","componentRef","PopupService","_componentType","DOCUMENT","ApplicationRef","Injector","ViewContainerRef","NgZone","content","templateContext","nativeElement","nextRenderSubject","Subject","afterNextRender","AfterRenderPhase","transition$","mergeMap","ngbRunTransition","classList","tap","of","TemplateRef","ScrollBar","scrollbarWidth","body","bodyStyle","overflow","paddingRight","actualPadding","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","resolve","reject","dismiss","isPromise","windowTransition$","backdropTransition$","zip","ModalDismissReasons","NgbModalWindow","EventEmitter","isString","context","dialogTransition$","transitions$","fromEvent","filter","e","event","preventClose","switchMap","take","target","autoFocusable","firstFocusable","getFocusableBoundaryElements","elWithFocus","elementToFocus","ɵɵviewQuery","_c7","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵattribute","_c0","ɵɵprojectionDef","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","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","combinedOptions","__spreadValues","__spreadProps","NgbModalModule","ɵɵdefineNgModule","ɵɵdefineInjector","NgbNavConfig","isValidNavId","id","navCounter","NgbNavContent","ɵɵdefineDirective","NgbNavItemRole","role","NgbNav","ɵɵinjectAttribute","NgbNavItem","dirIndex","ɵɵcontentQuery","ChangeDetectorRef","DestroyRef","item","relatedTarget","enabledLinks","link","length","position","nextId","takeUntilDestroyed","activeId","emitNavChange","defaultPrevented","nextItemId","itemId","NgbNavLinkBase","ɵɵlistener","$event","ɵɵNgOnChangesFeature","ɵɵhostProperty","NgbNavLink","NgbNavLinkBase","ɵNgbNavLink_BaseFactory","__ngFactoryType__","ɵɵgetInheritedFactory","ɵɵdefineDirective","rf","ctx","ɵɵlistener","$event","ɵɵInheritDefinitionFeature","ngbNavFadeOutTransition","classList","ngbNavFadeInTransition","element","animation","reflow","NgbNavPane","inject","ElementRef","ɵɵhostProperty","ɵɵattribute","ɵɵclassProp","NgbNavOutlet","ChangeDetectorRef","NgZone","item","takeUntilDestroyed","startWith","distinctUntilChanged","skip","nextItem","options","ngbRunTransition","activeItem","pane","ɵɵdefineComponent","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵStandaloneFeature","_c8","ɵɵrepeaterCreate","NgbNavOutlet_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","NgTemplateOutlet","NgbPaginationConfig","__ngFactoryType__","ɵɵdefineInjectable","NgbPaginationEllipsis","inject","TemplateRef","ɵɵdefineDirective","NgbPaginationFirst","NgbPaginationLast","NgbPaginationNext","NgbPaginationNumber","NgbPaginationPrevious","NgbPaginationPages","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","inject","NgbConfig","options","animation","__ngFactoryType__","ɵɵdefineInjectable","nextId$1","NgbPopoverWindow","TemplateRef","ɵɵdefineComponent","rf","ctx","ɵɵhostProperty","ɵɵclassMap","ɵɵclassProp","ɵɵStandaloneFeature","_c0","ɵɵprojectionDef","ɵɵelement","ɵɵtemplate","NgbPopoverWindow_Conditional_1_Template","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","ɵɵadvance","ɵɵconditional","NgTemplateOutlet","NgbPopover","EventEmitter","ElementRef","NgZone","DOCUMENT","ChangeDetectorRef","Injector","PopupService","ngbPositioning","context","windowRef","transition$","addPopperOffset","afterRender","AfterRenderPhase","ngbAutoClose","ngbPopover","popoverTitle","disablePopover","popoverClass","isString","ɵɵdefineDirective","ɵɵNgOnChangesFeature","NgbProgressbarConfig","__ngFactoryType__","ɵɵdefineInjectable","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","NgbRatingConfig","__ngFactoryType__","ɵɵdefineInjectable","NgbTooltipConfig","inject","NgbConfig","options","animation","__ngFactoryType__","ɵɵdefineInjectable","nextId","NgbTooltipWindow","ɵɵdefineComponent","rf","ctx","ɵɵhostProperty","ɵɵclassMap","ɵɵclassProp","ɵɵStandaloneFeature","_c0","ɵɵprojectionDef","ɵɵelement","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","NgbTooltip","EventEmitter","ElementRef","NgZone","DOCUMENT","ChangeDetectorRef","Injector","PopupService","ngbPositioning","value","context","windowRef","transition$","addPopperOffset","afterRender","AfterRenderPhase","ngbAutoClose","listenToTriggers","tooltipClass","isString","ɵɵdefineDirective","ɵɵNgOnChangesFeature","NgbHighlight","changes","result","toString","terms","prepareTerm","term","removeAccents","escapedTerms","regExpEscape","toSplit","parts","offset","part","__ngFactoryType__","ɵɵdefineComponent","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","rf","ctx","ɵɵrepeaterCreate","NgbHighlight_For_1_Template","ɵɵrepeaterTrackByIndex","ɵɵrepeater","ARIA_LIVE_DELAY","InjectionToken","getLiveElement","document","lazyCreate","element","Live","inject","DOCUMENT","message","delay","setText","ɵɵdefineInjectable","NgbTypeaheadConfig","options","NgbTypeaheadWindow","EventEmitter","activeIdx","item","ɵɵlistener","$event","ɵɵhostProperty","ɵɵclassMap","ɵɵtemplate","NgbTypeaheadWindow_ng_template_0_Template","ɵɵtemplateRefExtractor","NgbTypeaheadWindow_For_3_Template","ɵɵadvance","NgTemplateOutlet","nextWindowId","NgbTypeahead","ElementRef","NgZone","ChangeDetectorRef","Injector","PopupService","ngbPositioning","Subject","fromEvent","map","BehaviorSubject","_","ngbTypeahead","fn","value","isDisabled","event","isDefined","windowRef","activeId","addPopperOffset","afterRender","AfterRenderPhase","ngbAutoClose","defaultPrevented","userInputLowerCase","formattedVal","results$","tap","of","switchMap","results","count","ɵɵdefineDirective","ɵɵattribute","ɵɵclassProp","ɵɵProvidersFeature","NG_VALUE_ACCESSOR","forwardRef","NgbOffcanvasConfig","inject","NgbConfig","animation","__ngFactoryType__","ɵɵdefineInjectable","NgbActiveOffcanvas","result","reason","NgbOffcanvasRef","takeUntil","_panelCmptRef","_contentRef","_backdropCmptRef","_beforeDismiss","Subject","resolve","reject","dismiss","isPromise","panelTransition$","backdropTransition$","of","nativeElement","zip","OffcanvasDismissReasons","NgbOffcanvasBackdrop","ElementRef","NgZone","Injector","EventEmitter","afterNextRender","ngbRunTransition","element","reflow","AfterRenderPhase","classList","ɵɵdefineComponent","rf","ctx","ɵɵlistener","ɵɵclassMap","ɵɵclassProp","ɵɵStandaloneFeature","NgbOffcanvasPanel","DOCUMENT","context","offcanvasTransition$","fromEvent","filter","e","event","autoFocusable","firstFocusable","getFocusableBoundaryElements","body","elWithFocus","elementToFocus","ɵɵattribute","_c0","ɵɵprojectionDef","ɵɵprojection","NgbOffcanvasStack","ApplicationRef","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","combinedOptions","__spreadValues","__spreadProps","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","close","ɵɵelementEnd","btn_r5","_r4","$implicit","clickButton","ɵɵtext","ɵɵadvance","ɵɵclassMapInterpolate1","type","ɵɵtextInterpolate","text","ɵɵelementContainerStart","ɵɵtemplate","ConfirmDialogComponent_ng_container_0_button_4_Template","ɵɵelement","ConfirmDialogComponent_ng_container_0_div_8_Template","config","header","ɵɵproperty","disableEscape","ɵɵpipeBind1","content","ɵɵsanitizeHtml","buttons","ConfirmDialogComponent","constructor","modal","ngOnInit","sort","_button_sort","x","y","xIsSecondary","yIsSecondary","button","ɵɵdirectiveInject","NgbActiveModal","selectors","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","ConfirmDialogComponent_ng_container_0_Template","CommonModule","NgForOf","NgIf","SafeHtmlPipe","TranslocoDirective","ConfirmConfig","constructor","_type","header","content","buttons","disableEscape","ConfirmService","constructor","modalService","defaultConfirm","ConfirmConfig","defaultAlert","buttons","push","text","type","_type","header","confirm","content","config","__async","Promise","resolve","reject","undefined","console","error","translate","modalRef","open","ConfirmDialogComponent","componentInstance","closed","pipe","take","subscribe","result","dismissed","alert","size","fullscreen","ɵɵinject","NgbModal","factory","ɵfac","providedIn"],"x_google_ignoreList":[0,1,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]}