{"version":3,"sources":["node_modules/ngx-bootstrap/utils/fesm2022/ngx-bootstrap-utils.mjs","node_modules/ngx-bootstrap/positioning/fesm2022/ngx-bootstrap-positioning.mjs","node_modules/ngx-bootstrap/component-loader/fesm2022/ngx-bootstrap-component-loader.mjs","node_modules/ngx-bootstrap/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs","node_modules/ngx-bootstrap/modal/fesm2022/ngx-bootstrap-modal.mjs"],"sourcesContent":["import { isDevMode } from '@angular/core';\n\n/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nclass Trigger {\n constructor(open, close) {\n this.open = open;\n this.close = close || open;\n }\n isManual() {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\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 => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n const manualTriggers = parsedTriggers.filter(triggerPair => triggerPair.isManual());\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n return parsedTriggers;\n}\nfunction listenToTriggers(renderer,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntarget, triggers, showFn, hideFn, toggleFn) {\n const parsedTriggers = parseTriggers(triggers);\n const listeners = [];\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n parsedTriggers.forEach(trigger => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n return;\n }\n listeners.push(renderer.listen(target, trigger.open, showFn));\n if (trigger.close) {\n listeners.push(renderer.listen(target, trigger.close, hideFn));\n }\n });\n return () => {\n listeners.forEach(unsubscribeFn => unsubscribeFn());\n };\n}\nfunction listenToTriggersV2(renderer, options) {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n // all listeners\n const listeners = [];\n // lazy listeners registration\n const _registerHide = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach(fn => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n // register open\\close\\toggle listeners\n parsedTriggers.forEach(trigger => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n if (!useToggle && trigger.close && options.hide) {\n const triggerClose = trigger.close;\n const optionsHide = options.hide;\n const _hide = () => renderer.listen(target, triggerClose, optionsHide);\n _registerHide.push(_hide);\n }\n if (showFn) {\n listeners.push(renderer.listen(target, trigger.open, () => showFn(registerHide)));\n }\n });\n return () => {\n listeners.forEach(unsubscribeFn => unsubscribeFn());\n };\n}\nfunction registerOutsideClick(renderer, options) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return renderer.listen('document', 'click', event => {\n if (options.target && options.target.contains(event.target)) {\n return;\n }\n if (options.targets && options.targets.some(target => target.contains(event.target))) {\n return;\n }\n if (options.hide) {\n options.hide();\n }\n });\n}\nfunction registerEscClick(renderer, options) {\n if (!options.outsideEsc) {\n return Function.prototype;\n }\n return renderer.listen('document', 'keyup.esc', event => {\n if (options.target && options.target.contains(event.target)) {\n return;\n }\n if (options.targets && options.targets.some(target => target.contains(event.target))) {\n return;\n }\n if (options.hide) {\n options.hide();\n }\n });\n}\n\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * JS version of browser APIs. This library can only run in the browser.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst win = typeof window !== 'undefined' && window || {};\nconst document = win.document;\nconst location = win.location;\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst gc = win.gc ? () => win.gc() : () => null;\nconst performance = win.performance ? win.performance : null;\nconst Event = win.Event;\nconst MouseEvent = win.MouseEvent;\nconst KeyboardEvent = win.KeyboardEvent;\nconst EventTarget = win.EventTarget;\nconst History = win.History;\nconst Location = win.Location;\nconst EventListener = win.EventListener;\nvar BsVerions = /*#__PURE__*/function (BsVerions) {\n BsVerions[\"isBs4\"] = \"bs4\";\n BsVerions[\"isBs5\"] = \"bs5\";\n return BsVerions;\n}(BsVerions || {});\nlet guessedVersion;\nfunction _guessBsVersion() {\n const spanEl = win.document.createElement('span');\n spanEl.innerText = 'testing bs version';\n spanEl.classList.add('d-none');\n spanEl.classList.add('pl-1');\n win.document.head.appendChild(spanEl);\n const checkPadding = win.getComputedStyle(spanEl).paddingLeft;\n if (checkPadding && parseFloat(checkPadding)) {\n win.document.head.removeChild(spanEl);\n return 'bs4';\n }\n win.document.head.removeChild(spanEl);\n return 'bs5';\n}\nfunction setTheme(theme) {\n guessedVersion = theme;\n}\nfunction isBs4() {\n if (guessedVersion) return guessedVersion === 'bs4';\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs4';\n}\nfunction isBs5() {\n if (guessedVersion) return guessedVersion === 'bs5';\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs5';\n}\nfunction getBsVer() {\n return {\n isBs4: isBs4(),\n isBs5: isBs5()\n };\n}\nfunction currentBsVersion() {\n const bsVer = getBsVer();\n const resVersion = Object.keys(bsVer).find(key => bsVer[key]);\n return BsVerions[resVersion];\n}\nclass LinkedList {\n constructor() {\n this.length = 0;\n this.asArray = [];\n // Array methods overriding END\n }\n get(position) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = current?.next;\n }\n return current?.value;\n }\n add(value, position = this.length) {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n const node = {\n value,\n next: undefined,\n previous: undefined\n };\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n } else {\n if (position === 0 && this.head) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length && this.tail) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n } else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode?.next;\n if (currentPreviousNode && currentNextNode) {\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n remove(position = 0) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n if (position === 0 && this.head) {\n // first node\n this.head = this.head.next;\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n } else {\n // there is no second node\n this.tail = undefined;\n }\n } else if (position === this.length - 1 && this.tail?.previous) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n } else {\n // middle node\n const removedNode = this.getNode(position);\n if (removedNode?.next && removedNode.previous) {\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n }\n this.length--;\n this.createInternalArrayRepresentation();\n }\n set(position, value) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n const node = this.getNode(position);\n if (node) {\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n }\n toArray() {\n return this.asArray;\n }\n findAll(fn) {\n let current = this.head;\n const result = [];\n if (!current) {\n return result;\n }\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return result;\n }\n if (fn(current.value, index)) {\n result.push({\n index,\n value: current.value\n });\n }\n current = current.next;\n }\n return result;\n }\n // Array methods overriding start\n push(...args) {\n args.forEach(arg => {\n this.add(arg);\n });\n return this.length;\n }\n pop() {\n if (this.length === 0) {\n return undefined;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n return last?.value;\n }\n unshift(...args) {\n args.reverse();\n args.forEach(arg => {\n this.add(arg, 0);\n });\n return this.length;\n }\n shift() {\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = this.head?.value;\n this.remove();\n return lastItem;\n }\n forEach(fn) {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return;\n }\n fn(current.value, index);\n current = current.next;\n }\n }\n indexOf(value) {\n let current = this.head;\n let position = -1;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return position;\n }\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n return position;\n }\n some(fn) {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n return result;\n }\n every(fn) {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n return result;\n }\n toString() {\n return '[Linked List]';\n }\n find(fn) {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return;\n }\n if (fn(current.value, index)) {\n return current.value;\n }\n current = current.next;\n }\n }\n findIndex(fn) {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n if (!current) {\n return -1;\n }\n if (fn(current.value, index)) {\n return index;\n }\n current = current.next;\n }\n return -1;\n }\n getNode(position) {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = current?.next;\n }\n return current;\n }\n createInternalArrayRepresentation() {\n const outArray = [];\n let current = this.head;\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction OnChange() {\n const sufix = 'Change';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function OnChangeHandler(target, propertyKey) {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get() {\n return this[_key];\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n set(value) {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\nclass Utils {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static reflow(element) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (bs => bs)(element.offsetHeight);\n }\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n static getStyles(elem) {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = win;\n }\n return view.getComputedStyle(elem);\n }\n static stackOverflowConfig() {\n const bsVer = currentBsVersion();\n return {\n crossorigin: \"anonymous\",\n integrity: bsVer === 'bs5' ? 'sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65' : 'sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2',\n cdnLink: bsVer === 'bs5' ? 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css' : 'https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css'\n };\n }\n}\nconst _messagesHash = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\nfunction warnOnce(msg) {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n _messagesHash[msg] = true;\n console.warn(msg);\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsVerions, LinkedList, OnChange, Trigger, Utils, currentBsVersion, document, getBsVer, listenToTriggers, listenToTriggersV2, parseTriggers, registerEscClick, registerOutsideClick, setTheme, warnOnce, win as window };\n","import { getBsVer } from 'ngx-bootstrap/utils';\nimport * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, ElementRef } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { Subject, merge, fromEvent, of, animationFrameScheduler } from 'rxjs';\nvar MapPlacementInToRL = /*#__PURE__*/function (MapPlacementInToRL) {\n MapPlacementInToRL[\"top\"] = \"top\";\n MapPlacementInToRL[\"bottom\"] = \"bottom\";\n MapPlacementInToRL[\"left\"] = \"left\";\n MapPlacementInToRL[\"right\"] = \"right\";\n MapPlacementInToRL[\"auto\"] = \"auto\";\n MapPlacementInToRL[\"end\"] = \"right\";\n MapPlacementInToRL[\"start\"] = \"left\";\n MapPlacementInToRL[\"top left\"] = \"top left\";\n MapPlacementInToRL[\"top right\"] = \"top right\";\n MapPlacementInToRL[\"right top\"] = \"right top\";\n MapPlacementInToRL[\"right bottom\"] = \"right bottom\";\n MapPlacementInToRL[\"bottom right\"] = \"bottom right\";\n MapPlacementInToRL[\"bottom left\"] = \"bottom left\";\n MapPlacementInToRL[\"left bottom\"] = \"left bottom\";\n MapPlacementInToRL[\"left top\"] = \"left top\";\n MapPlacementInToRL[\"top start\"] = \"top left\";\n MapPlacementInToRL[\"top end\"] = \"top right\";\n MapPlacementInToRL[\"end top\"] = \"right top\";\n MapPlacementInToRL[\"end bottom\"] = \"right bottom\";\n MapPlacementInToRL[\"bottom end\"] = \"bottom right\";\n MapPlacementInToRL[\"bottom start\"] = \"bottom left\";\n MapPlacementInToRL[\"start bottom\"] = \"start bottom\";\n MapPlacementInToRL[\"start top\"] = \"left top\";\n return MapPlacementInToRL;\n}(MapPlacementInToRL || {});\nvar PlacementForBs5 = /*#__PURE__*/function (PlacementForBs5) {\n PlacementForBs5[\"top\"] = \"top\";\n PlacementForBs5[\"bottom\"] = \"bottom\";\n PlacementForBs5[\"left\"] = \"start\";\n PlacementForBs5[\"right\"] = \"end\";\n PlacementForBs5[\"auto\"] = \"auto\";\n PlacementForBs5[\"end\"] = \"end\";\n PlacementForBs5[\"start\"] = \"start\";\n PlacementForBs5[\"top left\"] = \"top start\";\n PlacementForBs5[\"top right\"] = \"top end\";\n PlacementForBs5[\"right top\"] = \"end top\";\n PlacementForBs5[\"right bottom\"] = \"end bottom\";\n PlacementForBs5[\"bottom right\"] = \"bottom end\";\n PlacementForBs5[\"bottom left\"] = \"bottom start\";\n PlacementForBs5[\"left bottom\"] = \"start bottom\";\n PlacementForBs5[\"left top\"] = \"start top\";\n PlacementForBs5[\"top start\"] = \"top start\";\n PlacementForBs5[\"top end\"] = \"top end\";\n PlacementForBs5[\"end top\"] = \"end top\";\n PlacementForBs5[\"end bottom\"] = \"end bottom\";\n PlacementForBs5[\"bottom end\"] = \"bottom end\";\n PlacementForBs5[\"bottom start\"] = \"bottom start\";\n PlacementForBs5[\"start bottom\"] = \"start bottom\";\n PlacementForBs5[\"start top\"] = \"start top\";\n return PlacementForBs5;\n}(PlacementForBs5 || {});\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window?.getComputedStyle(element, null);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return property ? css && css[property] : css;\n}\n\n/**\n * Returns the offset parent of the given element\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n const noOffsetParent = null;\n // NOTE: 1 DOM access here\n let offsetParent = element?.offsetParent;\n // Skip hidden elements which don't have an offsetParent\n let sibling = void 0;\n while (offsetParent === noOffsetParent && element.nextElementSibling && sibling !== element.nextElementSibling) {\n // todo: valorkin fix\n sibling = element.nextElementSibling;\n offsetParent = sibling.offsetParent;\n }\n const nodeName = offsetParent && offsetParent.nodeName;\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return sibling ? sibling.ownerDocument.documentElement : document.documentElement;\n }\n // .offsetParent will return the closest TH, TD or TABLE in case\n if (offsetParent && ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n return offsetParent;\n}\n\n// todo: valorkin fix\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isOffsetContainer(element) {\n const {\n nodeName\n } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n // todo: valorkin fix\n const commonAncestorContainer = range.commonAncestorContainer;\n // Both nodes are inside #document\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n return getOffsetParent(commonAncestorContainer);\n }\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n */\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el?.parentElement && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Helper to detect borders of a given element\n */\nfunction getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n return parseFloat(styles[`border${sideA}Width`]) + parseFloat(styles[`border${sideB}Width`]);\n}\nfunction getSize(axis, body, html) {\n const _body = body;\n const _html = html;\n return Math.max(_body[`offset${axis}`], _body[`scroll${axis}`], _html[`client${axis}`], _html[`offset${axis}`], _html[`scroll${axis}`], 0);\n}\nfunction getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n return {\n height: getSize('Height', body, html),\n width: getSize('Width', body, html)\n };\n}\nfunction getClientRect(offsets) {\n return {\n ...offsets,\n right: (offsets.left || 0) + offsets.width,\n bottom: (offsets.top || 0) + offsets.height\n };\n}\n\n/**\n * Tells if a given input is a number\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(Number(n));\n}\nfunction isNumber(value) {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\n\n/**\n * Get bounding client rect of given element\n */\nfunction getBoundingClientRect(element) {\n const rect = element.getBoundingClientRect();\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n // try {\n // if (isIE(10)) {\n // const scrollTop = getScroll(element, 'top');\n // const scrollLeft = getScroll(element, 'left');\n // if (rect && isNumber(rect.top) && isNumber(rect.left) && isNumber(rect.bottom) && isNumber(rect.right)) {\n // rect.top += scrollTop;\n // rect.left += scrollLeft;\n // rect.bottom += scrollTop;\n // rect.right += scrollLeft;\n // }\n // }\n // } catch (e) {\n // return rect;\n // }\n if (!(rect && isNumber(rect.top) && isNumber(rect.left) && isNumber(rect.bottom) && isNumber(rect.right))) {\n return rect;\n }\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : undefined;\n const width = sizes?.width || element.clientWidth || isNumber(rect.right) && isNumber(result.left) && rect.right - result.left || 0;\n const height = sizes?.height || element.clientHeight || isNumber(rect.bottom) && isNumber(result.top) && rect.bottom - result.top || 0;\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n return getClientRect(result);\n}\nfunction getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top ?? 0, 0);\n parentRect.left = Math.max(parentRect.left ?? 0, 0);\n }\n const offsets = getClientRect({\n top: (childrenRect.top ?? 0) - (parentRect.top ?? 0) - borderTopWidth,\n left: (childrenRect.left ?? 0) - (parentRect.left ?? 0) - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n if (isNumber(offsets.top)) {\n offsets.top -= borderTopWidth - marginTop;\n }\n if (isNumber(offsets.bottom)) {\n offsets.bottom -= borderTopWidth - marginTop;\n }\n if (isNumber(offsets.left)) {\n offsets.left -= borderLeftWidth - marginLeft;\n }\n if (isNumber(offsets.right)) {\n offsets.right -= borderLeftWidth - marginLeft;\n }\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n return offsets;\n}\n\n/**\n * Returns the parentNode or the host of the element\n */\n// todo: valorkin fix\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n */\n// todo: valorkin fix\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n default:\n }\n // Firefox want us to check `-x` and `-y` variations as well\n const {\n overflow,\n overflowX,\n overflowY\n } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(String(overflow) + String(overflowY) + String(overflowX))) {\n return element;\n }\n return getScrollParent(getParentNode(element));\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n */\nfunction getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n return element[upperSide];\n}\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n const offset = {\n top: scrollTop - Number(relativeOffset?.top) + Number(relativeOffset?.marginTop),\n left: scrollLeft - Number(relativeOffset?.left) + Number(relativeOffset?.marginLeft),\n width,\n height\n };\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n */\nfunction isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\nfunction getBoundaries(target, host, padding = 0, boundariesElement, fixedPosition = false) {\n // NOTE: 1 DOM access here\n let boundaries = {\n top: 0,\n left: 0\n };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(target) : findCommonOffsetParent(target, host);\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(host));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = target.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = target.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n const offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n // In case of HTML, we need a different computation\n if (offsets && boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const {\n height,\n width\n } = getWindowSizes(target.ownerDocument);\n if (isNumber(boundaries.top) && isNumber(offsets.top) && isNumber(offsets.marginTop)) {\n boundaries.top += offsets.top - offsets.marginTop;\n }\n if (isNumber(boundaries.top)) {\n boundaries.bottom = Number(height) + Number(offsets.top);\n }\n if (isNumber(boundaries.left) && isNumber(offsets.left) && isNumber(offsets.marginLeft)) {\n boundaries.left += offsets.left - offsets.marginLeft;\n }\n if (isNumber(boundaries.top)) {\n boundaries.right = Number(width) + Number(offsets.left);\n }\n } else if (offsets) {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n // Add paddings\n if (isNumber(boundaries.left)) {\n boundaries.left += padding;\n }\n if (isNumber(boundaries.top)) {\n boundaries.top += padding;\n }\n if (isNumber(boundaries.right)) {\n boundaries.right -= padding;\n }\n if (isNumber(boundaries.bottom)) {\n boundaries.bottom -= padding;\n }\n return boundaries;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n */\nfunction getArea({\n width,\n height\n}) {\n return width * height;\n}\nfunction computeAutoPlacement(placement, refRect, target, host, allowedPositions = ['top', 'bottom', 'right', 'left'], boundariesElement = 'viewport', padding = 0) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n const boundaries = getBoundaries(target, host, padding, boundariesElement);\n const rects = {\n top: {\n width: boundaries?.width ?? 0,\n height: (refRect?.top ?? 0) - (boundaries?.top ?? 0)\n },\n right: {\n width: (boundaries?.right ?? 0) - (refRect?.right ?? 0),\n height: boundaries?.height ?? 0\n },\n bottom: {\n width: boundaries?.width ?? 0,\n height: (boundaries?.bottom ?? 0) - (refRect?.bottom ?? 0)\n },\n left: {\n width: (refRect.left ?? 0) - (boundaries?.left ?? 0),\n height: boundaries?.height ?? 0\n }\n };\n const sortedAreas = Object.keys(rects).map(key => ({\n position: key,\n ...rects[key],\n area: getArea(rects[key])\n })).sort((a, b) => b.area - a.area);\n let filteredAreas = sortedAreas.filter(({\n width,\n height\n }) => {\n return width >= target.clientWidth && height >= target.clientHeight;\n });\n filteredAreas = filteredAreas.filter(({\n position\n }) => {\n return allowedPositions.some(allowedPosition => {\n return allowedPosition === position;\n });\n });\n const computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].position : sortedAreas[0].position;\n const variation = placement.split(' ')[1];\n // for tooltip on auto position\n target.className = target.className.replace(/bs-tooltip-auto/g, `bs-tooltip-${getBsVer().isBs5 ? PlacementForBs5[computedPlacement] : computedPlacement}`);\n return computedPlacement + (variation ? `-${variation}` : '');\n}\nfunction getOffsets(data) {\n return {\n width: data.offsets.target.width,\n height: data.offsets.target.height,\n left: Math.floor(data.offsets.target.left ?? 0),\n top: Math.round(data.offsets.target.top ?? 0),\n bottom: Math.round(data.offsets.target.bottom ?? 0),\n right: Math.floor(data.offsets.target.right ?? 0)\n };\n}\n\n/**\n * Get the opposite placement of the given one\n */\nfunction getOppositePlacement(placement) {\n const hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n\n/**\n * Get the opposite placement variation of the given one\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'right') {\n return 'left';\n } else if (variation === 'left') {\n return 'right';\n }\n return variation;\n}\nconst parse = (value, def = 0) => value ? parseFloat(value) : def;\nfunction getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window?.getComputedStyle(element);\n const x = parse(styles?.marginTop) + parse(styles?.marginBottom);\n const y = parse(styles?.marginLeft) + parse(styles?.marginRight);\n return {\n width: Number(element.offsetWidth) + y,\n height: Number(element.offsetHeight) + x\n };\n}\n\n/**\n * Get offsets to the reference element\n */\nfunction getReferenceOffsets(target, host, fixedPosition) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(target) : findCommonOffsetParent(target, host);\n return getOffsetRectRelativeToArbitraryNode(host, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get offsets to the target\n */\nfunction getTargetOffsets(target, hostOffsets, position) {\n const placement = position.split(' ')[0];\n // Get target node sizes\n const targetRect = getOuterSizes(target);\n // Add position, width and height to our offsets object\n const targetOffsets = {\n width: targetRect.width,\n height: targetRect.height\n };\n // depending by the target placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n targetOffsets[mainSide] = (hostOffsets[mainSide] ?? 0) + hostOffsets[measurement] / 2 - targetRect[measurement] / 2;\n targetOffsets[secondarySide] = placement === secondarySide ? (hostOffsets[secondarySide] ?? 0) - targetRect[secondaryMeasurement] : hostOffsets[getOppositePlacement(secondarySide)] ?? 0;\n return targetOffsets;\n}\nfunction isModifierEnabled(options, modifierName) {\n return !!options.modifiers[modifierName]?.enabled;\n}\nconst availablePositions = {\n top: ['top', 'top start', 'top end'],\n bottom: ['bottom', 'bottom start', 'bottom end'],\n start: ['start', 'start top', 'start bottom'],\n end: ['end', 'end top', 'end bottom']\n};\nfunction checkPopoverMargin(placement, checkPosition) {\n if (!getBsVer().isBs5) {\n return false;\n }\n return availablePositions[checkPosition].includes(placement);\n}\nfunction checkMargins(placement) {\n if (!getBsVer().isBs5) {\n return '';\n }\n if (checkPopoverMargin(placement, 'end')) {\n return 'ms-2';\n }\n if (checkPopoverMargin(placement, 'start')) {\n return 'me-2';\n }\n if (checkPopoverMargin(placement, 'top')) {\n return 'mb-2';\n }\n if (checkPopoverMargin(placement, 'bottom')) {\n return 'mt-2';\n }\n return '';\n}\nfunction updateContainerClass(data, renderer) {\n const target = data.instance.target;\n let containerClass = target.className;\n const dataPlacement = getBsVer().isBs5 ? PlacementForBs5[data.placement] : data.placement;\n if (data.placementAuto) {\n containerClass = containerClass.replace(/bs-popover-auto/g, `bs-popover-${dataPlacement}`);\n containerClass = containerClass.replace(/ms-2|me-2|mb-2|mt-2/g, '');\n containerClass = containerClass.replace(/bs-tooltip-auto/g, `bs-tooltip-${dataPlacement}`);\n containerClass = containerClass.replace(/\\sauto/g, ` ${dataPlacement}`);\n if (containerClass.indexOf('popover') !== -1) {\n containerClass = containerClass + ' ' + checkMargins(dataPlacement);\n }\n if (containerClass.indexOf('popover') !== -1 && containerClass.indexOf('popover-auto') === -1) {\n containerClass += ' popover-auto';\n }\n if (containerClass.indexOf('tooltip') !== -1 && containerClass.indexOf('tooltip-auto') === -1) {\n containerClass += ' tooltip-auto';\n }\n }\n containerClass = containerClass.replace(/left|right|top|bottom|end|start/g, `${dataPlacement.split(' ')[0]}`);\n if (renderer) {\n renderer.setAttribute(target, 'class', containerClass);\n return;\n }\n target.className = containerClass;\n}\nfunction setStyles(element, styles, renderer) {\n if (!element || !styles) {\n return;\n }\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n if (renderer) {\n renderer.setStyle(element, prop, `${String(styles[prop])}${unit}`);\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element.style[prop] = String(styles[prop]) + unit;\n });\n}\nfunction arrow(data) {\n let targetOffsets = data.offsets.target;\n // if arrowElement is a string, suppose it's a CSS selector\n const arrowElement = data.instance.target.querySelector('.arrow');\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n const isVertical = ['left', 'right'].indexOf(data.placement.split(' ')[0]) !== -1;\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n const placementVariation = data.placement.split(' ')[1];\n // top/left side\n if ((data.offsets.host[opSide] ?? 0) - arrowElementSize < (targetOffsets[side] ?? 0)) {\n targetOffsets[side] -= (targetOffsets[side] ?? 0) - ((data.offsets.host[opSide] ?? 0) - arrowElementSize);\n }\n // bottom/right side\n if (Number(data.offsets.host[side]) + Number(arrowElementSize) > (targetOffsets[opSide] ?? 0)) {\n targetOffsets[side] += Number(data.offsets.host[side]) + Number(arrowElementSize) - Number(targetOffsets[opSide]);\n }\n targetOffsets = getClientRect(targetOffsets);\n // Compute the sideValue using the updated target offsets\n // take target margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.target);\n const targetMarginSide = parseFloat(css[`margin${sideCapitalized}`]) || 0;\n const targetBorderSide = parseFloat(css[`border${sideCapitalized}Width`]) || 0;\n // compute center of the target\n let center;\n if (!placementVariation) {\n center = Number(data.offsets.host[side]) + Number(data.offsets.host[len] / 2 - arrowElementSize / 2);\n } else {\n const targetBorderRadius = parseFloat(css[\"borderRadius\"]) || 0;\n const targetSideArrowOffset = Number(targetMarginSide + targetBorderSide + targetBorderRadius);\n center = side === placementVariation ? Number(data.offsets.host[side]) + targetSideArrowOffset : Number(data.offsets.host[side]) + Number(data.offsets.host[len] - targetSideArrowOffset);\n }\n let sideValue = center - (targetOffsets[side] ?? 0) - targetMarginSide - targetBorderSide;\n // prevent arrowElement from being placed not contiguously to its target\n sideValue = Math.max(Math.min(targetOffsets[len] - (arrowElementSize + 5), sideValue), 0);\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '' // make sure to unset any eventual altSide value from the DOM node\n };\n data.instance.arrow = arrowElement;\n return data;\n}\nfunction flip(data) {\n data.offsets.target = getClientRect(data.offsets.target);\n if (!isModifierEnabled(data.options, 'flip')) {\n data.offsets.target = {\n ...data.offsets.target,\n ...getTargetOffsets(data.instance.target, data.offsets.host, data.placement)\n };\n return data;\n }\n const boundaries = getBoundaries(data.instance.target, data.instance.host, 0,\n // padding\n 'viewport', false // positionFixed\n );\n let placement = data.placement.split(' ')[0];\n let variation = data.placement.split(' ')[1] || '';\n const offsetsHost = data.offsets.host;\n const target = data.instance.target;\n const host = data.instance.host;\n const adaptivePosition = computeAutoPlacement('auto', offsetsHost, target, host, data.options.allowedPositions);\n const flipOrder = [placement, adaptivePosition];\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return;\n }\n placement = data.placement.split(' ')[0];\n // using floor because the host offsets may contain decimals we are not going to consider here\n const overlapsRef = placement === 'left' && Math.floor(data.offsets.target.right ?? 0) > Math.floor(data.offsets.host.left ?? 0) || placement === 'right' && Math.floor(data.offsets.target.left ?? 0) < Math.floor(data.offsets.host.right ?? 0) || placement === 'top' && Math.floor(data.offsets.target.bottom ?? 0) > Math.floor(data.offsets.host.top ?? 0) || placement === 'bottom' && Math.floor(data.offsets.target.top ?? 0) < Math.floor(data.offsets.host.bottom ?? 0);\n const overflowsLeft = Math.floor(data.offsets.target.left ?? 0) < Math.floor(boundaries.left ?? 0);\n const overflowsRight = Math.floor(data.offsets.target.right ?? 0) > Math.floor(boundaries.right ?? 0);\n const overflowsTop = Math.floor(data.offsets.target.top ?? 0) < Math.floor(boundaries.top ?? 0);\n const overflowsBottom = Math.floor(data.offsets.target.bottom ?? 0) > Math.floor(boundaries.bottom ?? 0);\n const overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation = isVertical && variation === 'left' && overflowsLeft || isVertical && variation === 'right' && overflowsRight || !isVertical && variation === 'left' && overflowsTop || !isVertical && variation === 'right' && overflowsBottom;\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n data.placement = placement + (variation ? ` ${variation}` : '');\n data.offsets.target = {\n ...data.offsets.target,\n ...getTargetOffsets(data.instance.target, data.offsets.host, data.placement)\n };\n }\n });\n return data;\n}\nfunction initData(targetElement, hostElement, position, options) {\n if (!targetElement || !hostElement) {\n return;\n }\n const hostElPosition = getReferenceOffsets(targetElement, hostElement);\n if (!position.match(/^(auto)*\\s*(left|right|top|bottom|start|end)*$/) && !position.match(/^(left|right|top|bottom|start|end)*(?: (left|right|top|bottom|start|end))*$/)) {\n position = 'auto';\n }\n const placementAuto = !!position.match(/auto/g);\n // support old placements 'auto left|right|top|bottom'\n let placement = position.match(/auto\\s(left|right|top|bottom|start|end)/) ? position.split(' ')[1] || 'auto' : position;\n // Normalize placements that have identical main placement and variation (\"right right\" => \"right\").\n const matches = placement.match(/^(left|right|top|bottom|start|end)* ?(?!\\1)(left|right|top|bottom|start|end)?/);\n if (matches) {\n placement = matches[1] + (matches[2] ? ` ${matches[2]}` : '');\n }\n // \"left right\", \"top bottom\" etc. placements also considered incorrect.\n if (['left right', 'right left', 'top bottom', 'bottom top'].indexOf(placement) !== -1) {\n placement = 'auto';\n }\n placement = computeAutoPlacement(placement, hostElPosition, targetElement, hostElement, options ? options.allowedPositions : undefined);\n const targetOffset = getTargetOffsets(targetElement, hostElPosition, placement);\n return {\n options: options || {\n modifiers: {}\n },\n instance: {\n target: targetElement,\n host: hostElement,\n arrow: void 0\n },\n offsets: {\n target: targetOffset,\n host: hostElPosition,\n arrow: void 0\n },\n positionFixed: false,\n placement,\n placementAuto\n };\n}\nfunction preventOverflow(data) {\n if (!isModifierEnabled(data.options, 'preventOverflow')) {\n return data;\n }\n // NOTE: DOM access here\n // resets the target Offsets's position so that the document size can be calculated excluding\n // the size of the targetOffsets element itself\n const transformProp = 'transform';\n const targetStyles = data.instance.target.style; // assignment to help minification\n const {\n top,\n left,\n [transformProp]: transform\n } = targetStyles;\n targetStyles.top = '';\n targetStyles.left = '';\n targetStyles[transformProp] = '';\n const boundaries = getBoundaries(data.instance.target, data.instance.host, 0,\n // padding\n data.options.modifiers.preventOverflow?.boundariesElement || 'scrollParent', false // positionFixed\n );\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n targetStyles.top = top;\n targetStyles.left = left;\n targetStyles[transformProp] = transform;\n const order = ['left', 'right', 'top', 'bottom'];\n const check = {\n primary(placement) {\n let value = data.offsets.target[placement];\n // options.escapeWithReference\n if ((data.offsets.target[placement] ?? 0) < (boundaries[placement] ?? 0)) {\n value = Math.max(data.offsets.target[placement] ?? 0, boundaries[placement] ?? 0);\n }\n return {\n [placement]: value\n };\n },\n secondary(placement) {\n const isPlacementHorizontal = placement === 'right';\n const mainSide = isPlacementHorizontal ? 'left' : 'top';\n const measurement = isPlacementHorizontal ? 'width' : 'height';\n let value = data.offsets.target[mainSide];\n // escapeWithReference\n if ((data.offsets.target[placement] ?? 0) > (boundaries[placement] ?? 0)) {\n value = Math.min(data.offsets.target[mainSide] ?? 0, (boundaries[placement] ?? 0) - data.offsets.target[measurement]);\n }\n return {\n [mainSide]: value\n };\n }\n };\n order.forEach(placement => {\n const side = ['left', 'top', 'start'].indexOf(placement) !== -1 ? check['primary'] : check['secondary'];\n data.offsets.target = {\n ...data.offsets.target,\n ...side(placement)\n };\n });\n return data;\n}\nfunction shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split(' ')[0];\n const shiftVariation = placement.split(' ')[1];\n if (shiftVariation) {\n const {\n host,\n target\n } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n const shiftOffsets = {\n start: {\n [side]: host[side]\n },\n end: {\n [side]: (host[side] ?? 0) + host[measurement] - target[measurement]\n }\n };\n data.offsets.target = {\n ...target,\n ...{\n [side]: side === shiftVariation ? shiftOffsets.start[side] : shiftOffsets.end[side]\n }\n };\n }\n return data;\n}\nclass Positioning {\n position(hostElement, targetElement /*, round = true*/) {\n return this.offset(hostElement, targetElement /*, false*/);\n }\n offset(hostElement, targetElement /*, round = true*/) {\n return getReferenceOffsets(targetElement, hostElement);\n }\n positionElements(hostElement, targetElement, position, appendToBody, options) {\n const chainOfModifiers = [flip, shift, preventOverflow, arrow];\n const _position = MapPlacementInToRL[position];\n const data = initData(targetElement, hostElement, _position, options);\n if (!data) {\n return;\n }\n return chainOfModifiers.reduce((modifiedData, modifier) => modifier(modifiedData), data);\n }\n}\nconst positionService = new Positioning();\nfunction positionElements(hostElement, targetElement, placement, appendToBody, options, renderer) {\n const data = positionService.positionElements(hostElement, targetElement, placement, appendToBody, options);\n if (!data) {\n return;\n }\n const offsets = getOffsets(data);\n setStyles(targetElement, {\n 'will-change': 'transform',\n top: '0px',\n left: '0px',\n transform: `translate3d(${offsets.left}px, ${offsets.top}px, 0px)`\n }, renderer);\n if (data.instance.arrow) {\n setStyles(data.instance.arrow, data.offsets.arrow, renderer);\n }\n updateContainerClass(data, renderer);\n}\nlet PositioningService = /*#__PURE__*/(() => {\n class PositioningService {\n constructor(ngZone, rendererFactory, platformId) {\n this.update$$ = new Subject();\n this.positionElements = new Map();\n this.isDisabled = false;\n if (isPlatformBrowser(platformId)) {\n ngZone.runOutsideAngular(() => {\n this.triggerEvent$ = merge(fromEvent(window, 'scroll', {\n passive: true\n }), fromEvent(window, 'resize', {\n passive: true\n }), of(0, animationFrameScheduler), this.update$$);\n this.triggerEvent$.subscribe(() => {\n if (this.isDisabled) {\n return;\n }\n this.positionElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .forEach(positionElement => {\n positionElements(_getHtmlElement(positionElement.target), _getHtmlElement(positionElement.element), positionElement.attachment, positionElement.appendToBody, this.options, rendererFactory.createRenderer(null, null));\n });\n });\n });\n }\n }\n position(options) {\n this.addPositionElement(options);\n }\n get event$() {\n return this.triggerEvent$;\n }\n disable() {\n this.isDisabled = true;\n }\n enable() {\n this.isDisabled = false;\n }\n addPositionElement(options) {\n this.positionElements.set(_getHtmlElement(options.element), options);\n }\n calcPosition() {\n this.update$$.next(null);\n }\n deletePositionElement(elRef) {\n this.positionElements.delete(_getHtmlElement(elRef));\n }\n setOptions(options) {\n this.options = options;\n }\n static {\n this.ɵfac = function PositioningService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || PositioningService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(PLATFORM_ID));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PositioningService,\n factory: PositioningService.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return PositioningService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction _getHtmlElement(element) {\n // it means that we got a selector\n if (typeof element === 'string') {\n return document.querySelector(element);\n }\n if (element instanceof ElementRef) {\n return element.nativeElement;\n }\n return element ?? null;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { PlacementForBs5, Positioning, PositioningService, checkMargins, positionElements };\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Injector, ElementRef, TemplateRef, Injectable, Inject } from '@angular/core';\nimport { listenToTriggersV2, registerOutsideClick, registerEscClick } from 'ngx-bootstrap/utils';\nimport * as i1 from 'ngx-bootstrap/positioning';\nimport { DOCUMENT } from '@angular/common';\nclass BsComponentRef {}\n\n/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nclass ContentRef {\n constructor(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodes, viewRef,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\n\n// todo: add delay support\n// todo: merge events onShow, onShown, etc...\n// todo: add global positioning configuration?\nclass ComponentLoader {\n /**\n * Do not use this directly, it should be instanced via\n * `ComponentLoadFactory.attach`\n * @internal\n */\n constructor(_viewContainerRef, _renderer, _elementRef, _injector, _componentFactoryResolver, _ngZone, _applicationRef, _posService, _document) {\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._injector = _injector;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._ngZone = _ngZone;\n this._applicationRef = _applicationRef;\n this._posService = _posService;\n this._document = _document;\n this.onBeforeShow = new EventEmitter();\n this.onShown = new EventEmitter();\n this.onBeforeHide = new EventEmitter();\n this.onHidden = new EventEmitter();\n this._providers = [];\n this._isHiding = false;\n /**\n * A selector used if container element was not found\n */\n this.containerDefaultSelector = 'body';\n this._listenOpts = {};\n this._globalListener = Function.prototype;\n }\n get isShown() {\n if (this._isHiding) {\n return false;\n }\n return !!this._componentRef;\n }\n attach(compType) {\n this._componentFactory = this._componentFactoryResolver.resolveComponentFactory(compType);\n return this;\n }\n // todo: add behaviour: to target element, `body`, custom element\n to(container) {\n this.container = container || this.container;\n return this;\n }\n position(opts) {\n if (!opts) {\n return this;\n }\n this.attachment = opts.attachment || this.attachment;\n this._elementRef = opts.target || this._elementRef;\n return this;\n }\n provide(provider) {\n this._providers.push(provider);\n return this;\n }\n // todo: appendChild to element or document.querySelector(this.container)\n show(opts = {}) {\n this._subscribePositioning();\n this._innerComponent = void 0;\n if (!this._componentRef) {\n this.onBeforeShow.emit();\n this._contentRef = this._getContentRef(opts.content, opts.context, opts.initialState);\n const injector = Injector.create({\n providers: this._providers,\n parent: this._injector\n });\n if (!this._componentFactory) {\n return;\n }\n this._componentRef = this._componentFactory.create(injector, this._contentRef.nodes);\n this._applicationRef.attachView(this._componentRef.hostView);\n // this._componentRef = this._viewContainerRef\n // .createComponent(this._componentFactory, 0, injector, this._contentRef.nodes);\n this.instance = this._componentRef.instance;\n Object.assign(this._componentRef.instance, opts);\n if (this.container instanceof ElementRef) {\n this.container.nativeElement.appendChild(this._componentRef.location.nativeElement);\n }\n if (typeof this.container === 'string' && typeof this._document !== 'undefined') {\n const selectedElement = this._document.querySelector(this.container) || this._document.querySelector(this.containerDefaultSelector);\n if (!selectedElement) {\n return;\n }\n selectedElement.appendChild(this._componentRef.location.nativeElement);\n }\n if (!this.container && this._elementRef && this._elementRef.nativeElement.parentElement) {\n this._elementRef.nativeElement.parentElement.appendChild(this._componentRef.location.nativeElement);\n }\n // we need to manually invoke change detection since events registered\n // via\n // Renderer::listen() are not picked up by change detection with the\n // OnPush strategy\n if (this._contentRef.componentRef) {\n this._innerComponent = this._contentRef.componentRef.instance;\n this._contentRef.componentRef.changeDetectorRef.markForCheck();\n this._contentRef.componentRef.changeDetectorRef.detectChanges();\n }\n this._componentRef.changeDetectorRef.markForCheck();\n this._componentRef.changeDetectorRef.detectChanges();\n this.onShown.emit(opts.id ? {\n id: opts.id\n } : this._componentRef.instance);\n }\n this._registerOutsideClick();\n return this._componentRef;\n }\n hide(id) {\n if (!this._componentRef) {\n return this;\n }\n this._posService.deletePositionElement(this._componentRef.location);\n this.onBeforeHide.emit(this._componentRef.instance);\n const componentEl = this._componentRef.location.nativeElement;\n componentEl.parentNode?.removeChild(componentEl);\n this._contentRef?.componentRef?.destroy();\n if (this._viewContainerRef && this._contentRef?.viewRef) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef));\n }\n this._contentRef?.viewRef?.destroy();\n this._componentRef?.destroy();\n this._contentRef = void 0;\n this._componentRef = void 0;\n this._removeGlobalListener();\n this.onHidden.emit(id ? {\n id\n } : null);\n return this;\n }\n toggle() {\n if (this.isShown) {\n this.hide();\n return;\n }\n this.show();\n }\n dispose() {\n if (this.isShown) {\n this.hide();\n }\n this._unsubscribePositioning();\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n }\n listen(listenOpts) {\n this.triggers = listenOpts.triggers || this.triggers;\n this._listenOpts.outsideClick = listenOpts.outsideClick;\n this._listenOpts.outsideEsc = listenOpts.outsideEsc;\n listenOpts.target = listenOpts.target || this._elementRef?.nativeElement;\n const hide = this._listenOpts.hide = () => listenOpts.hide ? listenOpts.hide() : void this.hide();\n const show = this._listenOpts.show = registerHide => {\n listenOpts.show ? listenOpts.show(registerHide) : this.show(registerHide);\n registerHide();\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const toggle = registerHide => {\n this.isShown ? hide() : show(registerHide);\n };\n if (this._renderer) {\n this._unregisterListenersFn = listenToTriggersV2(this._renderer, {\n target: listenOpts.target,\n triggers: listenOpts.triggers,\n show,\n hide,\n toggle\n });\n }\n return this;\n }\n _removeGlobalListener() {\n if (this._globalListener) {\n this._globalListener();\n this._globalListener = Function.prototype;\n }\n }\n attachInline(vRef,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template) {\n if (vRef && template) {\n this._inlineViewRef = vRef.createEmbeddedView(template);\n }\n return this;\n }\n _registerOutsideClick() {\n if (!this._componentRef || !this._componentRef.location) {\n return;\n }\n let unsubscribeOutsideClick = Function.prototype;\n let unsubscribeEscClick = Function.prototype;\n // why: should run after first event bubble\n if (this._listenOpts.outsideClick) {\n const target = this._componentRef.location.nativeElement;\n setTimeout(() => {\n if (this._renderer && this._elementRef) {\n unsubscribeOutsideClick = registerOutsideClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideClick: this._listenOpts.outsideClick,\n hide: () => this._listenOpts.hide && this._listenOpts.hide()\n });\n }\n });\n }\n if (this._listenOpts.outsideEsc && this._renderer && this._elementRef) {\n const target = this._componentRef.location.nativeElement;\n unsubscribeEscClick = registerEscClick(this._renderer, {\n targets: [target, this._elementRef.nativeElement],\n outsideEsc: this._listenOpts.outsideEsc,\n hide: () => this._listenOpts.hide && this._listenOpts.hide()\n });\n }\n this._globalListener = () => {\n unsubscribeOutsideClick();\n unsubscribeEscClick();\n };\n }\n getInnerComponent() {\n return this._innerComponent;\n }\n _subscribePositioning() {\n if (this._zoneSubscription || !this.attachment) {\n return;\n }\n this.onShown.subscribe(() => {\n this._posService.position({\n element: this._componentRef?.location,\n target: this._elementRef,\n attachment: this.attachment,\n appendToBody: this.container === 'body'\n });\n });\n this._zoneSubscription = this._ngZone.onStable.subscribe(() => {\n if (!this._componentRef) {\n return;\n }\n this._posService.calcPosition();\n });\n }\n _unsubscribePositioning() {\n if (!this._zoneSubscription) {\n return;\n }\n this._zoneSubscription.unsubscribe();\n this._zoneSubscription = void 0;\n }\n _getContentRef(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n content,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n context,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n initialState) {\n if (!content) {\n return new ContentRef([]);\n }\n if (content instanceof TemplateRef) {\n if (this._viewContainerRef) {\n const _viewRef = this._viewContainerRef.createEmbeddedView(content, context);\n _viewRef.markForCheck();\n return new ContentRef([_viewRef.rootNodes], _viewRef);\n }\n const viewRef = content.createEmbeddedView({});\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n if (typeof content === 'function') {\n const contentCmptFactory = this._componentFactoryResolver.resolveComponentFactory(content);\n const modalContentInjector = Injector.create({\n providers: this._providers,\n parent: this._injector\n });\n const componentRef = contentCmptFactory.create(modalContentInjector);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n Object.assign(componentRef.instance, initialState);\n this._applicationRef.attachView(componentRef.hostView);\n return new ContentRef([[componentRef.location.nativeElement]], componentRef.hostView, componentRef);\n }\n const nodes = this._renderer ? [this._renderer.createText(`${content}`)] : [];\n return new ContentRef([nodes]);\n }\n}\nlet ComponentLoaderFactory = /*#__PURE__*/(() => {\n class ComponentLoaderFactory {\n constructor(_componentFactoryResolver, _ngZone, _injector, _posService, _applicationRef, _document) {\n this._componentFactoryResolver = _componentFactoryResolver;\n this._ngZone = _ngZone;\n this._injector = _injector;\n this._posService = _posService;\n this._applicationRef = _applicationRef;\n this._document = _document;\n }\n /**\n *\n * @param _elementRef\n * @param _viewContainerRef\n * @param _renderer\n */\n createLoader(_elementRef, _viewContainerRef, _renderer) {\n return new ComponentLoader(_viewContainerRef, _renderer, _elementRef, this._injector, this._componentFactoryResolver, this._ngZone, this._applicationRef, this._posService, this._document);\n }\n static {\n this.ɵfac = function ComponentLoaderFactory_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ComponentLoaderFactory)(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i1.PositioningService), i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ComponentLoaderFactory,\n factory: ComponentLoaderFactory.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return ComponentLoaderFactory;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsComponentRef, ComponentLoader, ComponentLoaderFactory, ContentRef };\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, Directive, Input, NgModule } from '@angular/core';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nimport { take } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/* eslint-disable */\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n} catch {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nlet Platform = /*#__PURE__*/(() => {\n class Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId ? isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser && !!(window.chrome || hasV8BreakIterator) && typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser && /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n static {\n this.ɵfac = function Platform_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || Platform)(i0.ɵɵinject(PLATFORM_ID));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Platform,\n factory: Platform.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return Platform;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/* eslint-disable */\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n constructor() {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n this.ignoreVisibility = false;\n }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\nlet InteractivityChecker = /*#__PURE__*/(() => {\n class InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return isPotentiallyFocusable(element) && !this.isDisabled(element) && (config?.ignoreVisibility || this.isVisible(element));\n }\n static {\n this.ɵfac = function InteractivityChecker_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || InteractivityChecker)(i0.ɵɵinject(Platform));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InteractivityChecker,\n factory: InteractivityChecker.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return InteractivityChecker;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n } catch {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth || element.offsetHeight || typeof element.getClientRects === 'function' && element.getClientRects().length);\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return nodeName === 'input' || nodeName === 'select' || nodeName === 'button' || nodeName === 'textarea';\n}\n/** Gets whether an element is an ``. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n // IE11 parses tabindex=\"\" as the value \"-32768\"\n if (tabIndex == '-32768') {\n return false;\n }\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return inputType === 'text' || inputType === 'password' || nodeName === 'select' || nodeName === 'textarea';\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return isNativeFormElement(element) || isAnchorWithHref(element) || element.hasAttribute('contenteditable') || hasValidTabIndex(element);\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return node.ownerDocument && node.ownerDocument.defaultView || window;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/* eslint-disable */\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nlet FocusTrapManager = /*#__PURE__*/(() => {\n class FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n static {\n this.ɵfac = function FocusTrapManager_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FocusTrapManager)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FocusTrapManager,\n factory: FocusTrapManager.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return FocusTrapManager;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/* eslint-disable */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to misalign.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change for 11.0.0 Remove this class.\n */\nclass FocusTrap {\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n if (startAnchor.parentNode) {\n startAnchor.parentNode.removeChild(startAnchor);\n }\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n if (endAnchor.parentNode) {\n endAnchor.parentNode.removeChild(endAnchor);\n }\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfuly. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then either focuses the first element that the\n * user specified, or the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady() {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement()));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady() {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement()));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady() {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement()));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n let markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` + `use 'cdkFocusRegion${bound}' instead. The deprecated ` + `attribute will be removed in 8.0.0.`, markers[i]);\n } else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` + `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` + `will be removed in 8.0.0.`, markers[i]);\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length ? markers[markers.length - 1] : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement() {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if (redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` + `use 'cdkFocusInitial' instead. The deprecated attribute ` + `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild?.focus();\n return !!focusableChild;\n }\n redirectToElement.focus();\n return true;\n }\n return this.focusFirstTabbableElement();\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement() {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus();\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement() {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus();\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in DOM order. Note that IE doesn't have `children` for SVG so we fall\n // back to `childNodes` which includes text nodes, comments etc.\n let children = root.children || root.childNodes;\n for (let i = 0; i < children.length; i++) {\n let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getFirstTabbableElement(children[i]) : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n let children = root.children || root.childNodes;\n for (let i = children.length - 1; i >= 0; i--) {\n let tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getLastTabbableElement(children[i]) : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n } else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change for 11.0.0 Remove this class.\n */\nlet FocusTrapFactory = /*#__PURE__*/(() => {\n class FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n static {\n this.ɵfac = function FocusTrapFactory_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FocusTrapFactory)(i0.ɵɵinject(InteractivityChecker), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FocusTrapFactory,\n factory: FocusTrapFactory.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return FocusTrapFactory;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/** Directive for trapping focus within a region. */\nlet FocusTrapDirective = /*#__PURE__*/(() => {\n class FocusTrapDirective {\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap.enabled;\n }\n set enabled(value) {\n this.focusTrap.enabled = coerceBooleanProperty(value);\n }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n get autoCapture() {\n return this._autoCapture;\n }\n set autoCapture(value) {\n this._autoCapture = coerceBooleanProperty(value);\n }\n constructor(_elementRef, _focusTrapFactory, _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this._autoCapture = false;\n this._document = _document;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange && !autoCaptureChange.firstChange && this.autoCapture && this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = this._document.activeElement;\n this.focusTrap.focusInitialElementWhenReady();\n }\n static {\n this.ɵfac = function FocusTrapDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FocusTrapDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(FocusTrapFactory), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FocusTrapDirective,\n selectors: [[\"\", \"focusTrap\", \"\"]],\n inputs: {\n enabled: [0, \"cdkTrapFocus\", \"enabled\"],\n autoCapture: [0, \"cdkTrapFocusAutoCapture\", \"autoCapture\"]\n },\n exportAs: [\"focusTrap\"],\n features: [i0.ɵɵProvidersFeature([FocusTrapManager, Platform, InteractivityChecker]), i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return FocusTrapDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FocusTrapModule = /*#__PURE__*/(() => {\n class FocusTrapModule {\n // @deprecated method not required anymore, will be deleted in v19.0.0\n static forRoot() {\n return {\n ngModule: FocusTrapModule,\n providers: []\n };\n }\n static {\n this.ɵfac = function FocusTrapModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || FocusTrapModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: FocusTrapModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule]\n });\n }\n }\n return FocusTrapModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FocusTrap, FocusTrapDirective, FocusTrapModule };\n","import * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Component, EventEmitter, Optional, Inject, HostListener, Directive, Input, Output, NgModule } from '@angular/core';\nimport * as i1 from 'ngx-bootstrap/component-loader';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { Utils, document, window as window$1 } from 'ngx-bootstrap/utils';\nimport { FocusTrapDirective, FocusTrapModule } from 'ngx-bootstrap/focus-trap';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst _c0 = [\"*\"];\nlet BsModalRef = /*#__PURE__*/(() => {\n class BsModalRef {\n constructor() {\n /**\n * Hides the modal\n */\n this.hide = () => void 0;\n /**\n * Sets new class to modal window\n */\n this.setClass = () => void 0;\n }\n static {\n this.ɵfac = function BsModalRef_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BsModalRef)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BsModalRef,\n factory: BsModalRef.ɵfac,\n providedIn: 'platform'\n });\n }\n }\n return BsModalRef;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass ModalBackdropOptions {\n constructor(options) {\n this.animate = true;\n Object.assign(this, options);\n }\n}\nlet ModalOptions = /*#__PURE__*/(() => {\n class ModalOptions {\n static {\n this.ɵfac = function ModalOptions_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ModalOptions)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ModalOptions,\n factory: ModalOptions.ɵfac,\n providedIn: 'platform'\n });\n }\n }\n return ModalOptions;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst modalConfigDefaults = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: false,\n ignoreBackdropClick: false,\n class: '',\n animated: true,\n initialState: {},\n closeInterceptor: void 0\n};\nconst MODAL_CONFIG_DEFAULT_OVERRIDE = new InjectionToken('override-default-config');\nconst CLASS_NAME = {\n SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n BACKDROP: 'modal-backdrop',\n OPEN: 'modal-open',\n FADE: 'fade',\n IN: 'in',\n SHOW: 'show'\n};\nconst SELECTOR = {\n DIALOG: '.modal-dialog',\n DATA_TOGGLE: '[data-toggle=\"modal\"]',\n DATA_DISMISS: '[data-dismiss=\"modal\"]',\n FIXED_CONTENT: '.navbar-fixed-top, .navbar-fixed-bottom, .is-fixed'\n};\nconst TRANSITION_DURATIONS = {\n MODAL: 300,\n BACKDROP: 150\n};\nconst DISMISS_REASONS = {\n BACKRDOP: 'backdrop-click',\n ESC: 'esc',\n BACK: 'browser-back-navigation-clicked'\n};\n\n/** This component will be added as background layout for modals if enabled */\nlet ModalBackdropComponent = /*#__PURE__*/(() => {\n class ModalBackdropComponent {\n get isAnimated() {\n return this._isAnimated;\n }\n set isAnimated(value) {\n this._isAnimated = value;\n }\n get isShown() {\n return this._isShown;\n }\n set isShown(value) {\n this._isShown = value;\n if (value) {\n this.renderer.addClass(this.element.nativeElement, `${CLASS_NAME.SHOW}`);\n } else {\n this.renderer.removeClass(this.element.nativeElement, `${CLASS_NAME.SHOW}`);\n }\n }\n constructor(element, renderer) {\n this._isAnimated = false;\n this._isShown = false;\n this.element = element;\n this.renderer = renderer;\n }\n ngOnInit() {\n if (this.isAnimated) {\n this.renderer.addClass(this.element.nativeElement, `${CLASS_NAME.FADE}`);\n Utils.reflow(this.element.nativeElement);\n }\n this.isShown = true;\n }\n static {\n this.ɵfac = function ModalBackdropComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ModalBackdropComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ModalBackdropComponent,\n selectors: [[\"bs-modal-backdrop\"]],\n hostAttrs: [1, \"modal-backdrop\"],\n decls: 0,\n vars: 0,\n template: function ModalBackdropComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n }\n }\n return ModalBackdropComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet currentId = 1;\nlet BsModalService = /*#__PURE__*/(() => {\n class BsModalService {\n constructor(rendererFactory, clf, modalDefaultOption) {\n this.clf = clf;\n this.modalDefaultOption = modalDefaultOption;\n this.onShow = new EventEmitter();\n this.onShown = new EventEmitter();\n this.onHide = new EventEmitter();\n this.onHidden = new EventEmitter();\n this.isBodyOverflowing = false;\n this.originalBodyPadding = 0;\n this.scrollbarWidth = 0;\n this.modalsCount = 0;\n this.lastHiddenId = null;\n this.loaders = [];\n this._focusEl = null;\n this._backdropLoader = this.clf.createLoader();\n this._renderer = rendererFactory.createRenderer(null, null);\n this.config = modalDefaultOption ? Object.assign({}, modalConfigDefaults, modalDefaultOption) : modalConfigDefaults;\n }\n /** Shows a modal */\n show(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n content, config) {\n this._focusEl = document.activeElement;\n this.modalsCount++;\n this.lastHiddenId = null;\n this._createLoaders();\n // must be different per every show() call\n const id = config?.id || currentId++;\n this.config = this.modalDefaultOption ? Object.assign({}, modalConfigDefaults, this.modalDefaultOption, config) : Object.assign({}, modalConfigDefaults, config);\n this.config.id = id;\n this._showBackdrop();\n this.lastDismissReason = void 0;\n return this._showModal(content);\n }\n hide(id) {\n if (this.lastHiddenId === id) {\n return;\n }\n this.lastHiddenId = id;\n if (this.modalsCount === 1 || id == null) {\n this._hideBackdrop();\n this.resetScrollbar();\n }\n this.modalsCount = this.modalsCount >= 1 && id != null ? this.modalsCount - 1 : 0;\n setTimeout(() => {\n this._hideModal(id);\n this.removeLoaders(id);\n }, this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0);\n if (this._focusEl) {\n this._focusEl.focus();\n }\n }\n _showBackdrop() {\n const isBackdropEnabled = this.config.backdrop === true || this.config.backdrop === 'static';\n const isBackdropInDOM = !this.backdropRef || !this.backdropRef.instance.isShown;\n if (this.modalsCount === 1) {\n this.removeBackdrop();\n if (isBackdropEnabled && isBackdropInDOM) {\n this._backdropLoader.attach(ModalBackdropComponent).to('body').show({\n isAnimated: this.config.animated\n });\n this.backdropRef = this._backdropLoader._componentRef;\n }\n }\n }\n _hideBackdrop() {\n if (!this.backdropRef) {\n return;\n }\n this.backdropRef.instance.isShown = false;\n const duration = this.config.animated ? TRANSITION_DURATIONS.BACKDROP : 0;\n setTimeout(() => this.removeBackdrop(), duration);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _showModal(content) {\n const modalLoader = this.loaders[this.loaders.length - 1];\n if (this.config && this.config.providers) {\n for (const provider of this.config.providers) {\n modalLoader.provide(provider);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const bsModalRef = new BsModalRef();\n const modalContainerRef = modalLoader.provide({\n provide: ModalOptions,\n useValue: this.config\n }).provide({\n provide: BsModalRef,\n useValue: bsModalRef\n }).attach(ModalContainerComponent).to('body');\n bsModalRef.hide = () => modalContainerRef.instance?.hide();\n bsModalRef.setClass = newClass => {\n if (modalContainerRef.instance) {\n modalContainerRef.instance.config.class = newClass;\n }\n };\n bsModalRef.onHidden = new EventEmitter();\n bsModalRef.onHide = new EventEmitter();\n this.copyEvent(modalLoader.onBeforeHide, bsModalRef.onHide);\n this.copyEvent(modalLoader.onHidden, bsModalRef.onHidden);\n // call 'show' method after assign setClass in bsModalRef.\n // it makes modal component's bsModalRef available to call setClass method\n modalContainerRef.show({\n content,\n isAnimated: this.config.animated,\n initialState: this.config.initialState,\n bsModalService: this,\n id: this.config.id\n });\n if (modalContainerRef.instance) {\n modalContainerRef.instance.level = this.getModalsCount();\n bsModalRef.content = modalLoader.getInnerComponent();\n bsModalRef.id = modalContainerRef.instance.config?.id;\n }\n return bsModalRef;\n }\n _hideModal(id) {\n if (id != null) {\n const indexToRemove = this.loaders.findIndex(loader => loader.instance?.config.id === id);\n const modalLoader = this.loaders[indexToRemove];\n if (modalLoader) {\n modalLoader.hide(id);\n }\n } else {\n this.loaders.forEach(loader => {\n if (loader.instance) {\n loader.hide(loader.instance.config.id);\n }\n });\n }\n }\n getModalsCount() {\n return this.modalsCount;\n }\n setDismissReason(reason) {\n this.lastDismissReason = reason;\n }\n removeBackdrop() {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document.body, 'overflow-y', '');\n this._backdropLoader.hide();\n this.backdropRef = void 0;\n }\n /** Checks if the body is overflowing and sets scrollbar width */\n /** @internal */\n checkScrollbar() {\n this.isBodyOverflowing = document.body.clientWidth < window.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n setScrollbar() {\n if (!document) {\n return;\n }\n this.originalBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right') || '0', 10);\n if (this.isBodyOverflowing) {\n document.body.style.paddingRight = `${this.originalBodyPadding + this.scrollbarWidth}px`;\n }\n }\n resetScrollbar() {\n document.body.style.paddingRight = `${this.originalBodyPadding}px`;\n }\n // thx d.walsh\n getScrollbarWidth() {\n const scrollDiv = this._renderer.createElement('div');\n this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);\n this._renderer.appendChild(document.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document.body, scrollDiv);\n return scrollbarWidth;\n }\n _createLoaders() {\n const loader = this.clf.createLoader();\n this.copyEvent(loader.onBeforeShow, this.onShow);\n this.copyEvent(loader.onShown, this.onShown);\n this.copyEvent(loader.onBeforeHide, this.onHide);\n this.copyEvent(loader.onHidden, this.onHidden);\n this.loaders.push(loader);\n }\n removeLoaders(id) {\n if (id != null) {\n const indexToRemove = this.loaders.findIndex(loader => loader.instance?.config.id === id);\n if (indexToRemove >= 0) {\n this.loaders.splice(indexToRemove, 1);\n this.loaders.forEach((loader, i) => {\n if (loader.instance) {\n loader.instance.level = i + 1;\n }\n });\n }\n } else {\n this.loaders.splice(0, this.loaders.length);\n }\n }\n copyEvent(from, to) {\n from.subscribe(data => {\n to.emit(this.lastDismissReason || data);\n });\n }\n static {\n this.ɵfac = function BsModalService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || BsModalService)(i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(i1.ComponentLoaderFactory), i0.ɵɵinject(MODAL_CONFIG_DEFAULT_OVERRIDE, 8));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: BsModalService,\n factory: BsModalService.ɵfac,\n providedIn: 'platform'\n });\n }\n }\n return BsModalService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ModalContainerComponent = /*#__PURE__*/(() => {\n class ModalContainerComponent {\n constructor(options, _element, _renderer) {\n this._element = _element;\n this._renderer = _renderer;\n this.isShown = false;\n this.isAnimated = false;\n this._focusEl = null;\n this.isModalHiding = false;\n this.clickStartedInContent = false;\n this.config = Object.assign({}, options);\n }\n ngOnInit() {\n this._focusEl = document.activeElement;\n if (this.isAnimated) {\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.FADE);\n }\n this._renderer.setStyle(this._element.nativeElement, 'display', 'block');\n setTimeout(() => {\n this.isShown = true;\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }, this.isAnimated ? TRANSITION_DURATIONS.BACKDROP : 0);\n if (document && document.body) {\n if (this.bsModalService && this.bsModalService.getModalsCount() === 1) {\n this.bsModalService.checkScrollbar();\n this.bsModalService.setScrollbar();\n }\n this._renderer.addClass(document.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document.body, 'overflow-y', 'hidden');\n }\n if (this._element.nativeElement) {\n this._element.nativeElement.focus();\n }\n }\n onClickStarted(event) {\n this.clickStartedInContent = event.target !== this._element.nativeElement;\n }\n onClickStop(event) {\n const clickedInBackdrop = event.target === this._element.nativeElement && !this.clickStartedInContent;\n if (this.config.ignoreBackdropClick || this.config.backdrop === 'static' || !clickedInBackdrop) {\n this.clickStartedInContent = false;\n return;\n }\n this.bsModalService?.setDismissReason(DISMISS_REASONS.BACKRDOP);\n this.hide();\n }\n onPopState() {\n this.bsModalService?.setDismissReason(DISMISS_REASONS.BACK);\n this.hide();\n }\n onEsc(event) {\n if (!this.isShown) {\n return;\n }\n if (event.keyCode === 27 || event.key === 'Escape') {\n event.preventDefault();\n }\n if (this.config.keyboard && this.level === this.bsModalService?.getModalsCount()) {\n this.bsModalService?.setDismissReason(DISMISS_REASONS.ESC);\n this.hide();\n }\n }\n ngOnDestroy() {\n if (this.isShown) {\n this._hide();\n }\n }\n hide() {\n if (this.isModalHiding) {\n return;\n }\n if (this.config.closeInterceptor) {\n this.config.closeInterceptor().then(() => this._hide(), () => undefined);\n return;\n }\n this._hide();\n }\n _hide() {\n this.isModalHiding = true;\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.SHOW);\n setTimeout(() => {\n this.isShown = false;\n this.bsModalService?.hide(this.config.id);\n if (document && document.body && this.bsModalService?.getModalsCount() === 0) {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document.body, 'overflow-y', '');\n }\n this.bsModalService?.hide(this.config.id);\n this.isModalHiding = false;\n if (this._focusEl) {\n this._focusEl.focus();\n }\n }, this.isAnimated ? TRANSITION_DURATIONS.MODAL : 0);\n }\n static {\n this.ɵfac = function ModalContainerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ModalContainerComponent)(i0.ɵɵdirectiveInject(ModalOptions), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ModalContainerComponent,\n selectors: [[\"modal-container\"]],\n hostAttrs: [\"role\", \"dialog\", \"tabindex\", \"-1\", 1, \"modal\"],\n hostVars: 3,\n hostBindings: function ModalContainerComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mousedown\", function ModalContainerComponent_mousedown_HostBindingHandler($event) {\n return ctx.onClickStarted($event);\n })(\"click\", function ModalContainerComponent_click_HostBindingHandler($event) {\n return ctx.onClickStop($event);\n })(\"popstate\", function ModalContainerComponent_popstate_HostBindingHandler() {\n return ctx.onPopState();\n }, false, i0.ɵɵresolveWindow)(\"keydown.esc\", function ModalContainerComponent_keydown_esc_HostBindingHandler($event) {\n return ctx.onEsc($event);\n }, false, i0.ɵɵresolveWindow);\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-modal\", true)(\"aria-labelledby\", ctx.config.ariaLabelledBy)(\"aria-describedby\", ctx.config.ariaDescribedby);\n }\n },\n features: [i0.ɵɵProvidersFeature([BsModalService])],\n ngContentSelectors: _c0,\n decls: 3,\n vars: 2,\n consts: [[\"role\", \"document\", \"focusTrap\", \"\"], [1, \"modal-content\"]],\n template: function ModalContainerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n i0.ɵɵprojection(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵclassMap(\"modal-dialog\" + (ctx.config.class ? \" \" + ctx.config.class : \"\"));\n }\n },\n dependencies: [FocusTrapDirective],\n encapsulation: 2\n });\n }\n }\n return ModalContainerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// todo: should we support enforce focus in?\n// todo: in original bs there are was a way to prevent modal from showing\n// todo: original modal had resize events\nconst TRANSITION_DURATION = 300;\nconst BACKDROP_TRANSITION_DURATION = 150;\n/** Mark any code with directive to show it's content in modal */\nlet ModalDirective = /*#__PURE__*/(() => {\n class ModalDirective {\n /** allows to set modal configuration via element property */\n set config(conf) {\n this._config = this.getConfig(conf);\n }\n get config() {\n return this._config;\n }\n get isShown() {\n return this._isShown;\n }\n constructor(_element, _viewContainerRef, _renderer, clf, modalDefaultOption) {\n this._element = _element;\n this._renderer = _renderer;\n /** This event fires immediately when the `show` instance method is called. */\n this.onShow = new EventEmitter();\n /** This event is fired when the modal has been made visible to the user\n * (will wait for CSS transitions to complete)\n */\n this.onShown = new EventEmitter();\n /** This event is fired immediately when\n * the hide instance method has been called.\n */\n this.onHide = new EventEmitter();\n /** This event is fired when the modal has finished being\n * hidden from the user (will wait for CSS transitions to complete).\n */\n this.onHidden = new EventEmitter();\n this._isShown = false;\n this.isBodyOverflowing = false;\n this.originalBodyPadding = 0;\n this.scrollbarWidth = 0;\n this.timerHideModal = 0;\n this.timerRmBackDrop = 0;\n this.isNested = false;\n this.clickStartedInContent = false;\n this._focusEl = null;\n this._backdrop = clf.createLoader(_element, _viewContainerRef, _renderer);\n this._config = modalDefaultOption || modalConfigDefaults;\n }\n onClickStarted(event) {\n this.clickStartedInContent = event.target !== this._element.nativeElement;\n }\n onClickStop(event) {\n const clickedInBackdrop = event.target === this._element.nativeElement && !this.clickStartedInContent;\n if (this.config.ignoreBackdropClick || this.config.backdrop === 'static' || !clickedInBackdrop) {\n this.clickStartedInContent = false;\n return;\n }\n this.dismissReason = DISMISS_REASONS.BACKRDOP;\n this.hide(event);\n }\n // todo: consider preventing default and stopping propagation\n onEsc(event) {\n if (!this._isShown) {\n return;\n }\n if (event.keyCode === 27 || event.key === 'Escape') {\n event.preventDefault();\n }\n if (this.config.keyboard) {\n this.dismissReason = DISMISS_REASONS.ESC;\n this.hide();\n }\n }\n ngOnDestroy() {\n if (this._isShown) {\n this._isShown = false;\n this.hideModal();\n this._backdrop.dispose();\n }\n }\n ngOnInit() {\n this._config = this._config || this.getConfig();\n setTimeout(() => {\n if (this._config.show) {\n this.show();\n }\n }, 0);\n }\n /* Public methods */\n /** Allows to manually toggle modal visibility */\n toggle() {\n return this._isShown ? this.hide() : this.show();\n }\n /** Allows to manually open modal */\n show() {\n this.dismissReason = void 0;\n this.onShow.emit(this);\n if (this._isShown) {\n return;\n }\n clearTimeout(this.timerHideModal);\n clearTimeout(this.timerRmBackDrop);\n this._isShown = true;\n this.checkScrollbar();\n this.setScrollbar();\n if (document && document.body) {\n if (document.body.classList.contains(CLASS_NAME.OPEN)) {\n this.isNested = true;\n } else {\n this._renderer.addClass(document.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document.body, 'overflow-y', 'hidden');\n }\n }\n this.showBackdrop(() => {\n this.showElement();\n });\n }\n /** Check if we can close the modal */\n hide(event) {\n if (!this._isShown) {\n return;\n }\n if (event) {\n event.preventDefault();\n }\n if (this.config.closeInterceptor) {\n this.config.closeInterceptor().then(() => this._hide(), () => undefined);\n return;\n }\n this._hide();\n }\n /** Private methods @internal */\n /**\n * Manually close modal\n * @internal\n */\n _hide() {\n this.onHide.emit(this);\n window$1.clearTimeout(this.timerHideModal);\n window$1.clearTimeout(this.timerRmBackDrop);\n this._isShown = false;\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.SHOW);\n if (this._config.animated) {\n this.timerHideModal = window$1.setTimeout(() => this.hideModal(), TRANSITION_DURATION);\n } else {\n this.hideModal();\n }\n if (this._focusEl) {\n this._focusEl.focus();\n }\n }\n getConfig(config) {\n return Object.assign({}, this._config, config);\n }\n /**\n * Show dialog\n * @internal\n */\n showElement() {\n // todo: replace this with component loader usage\n if (!this._element.nativeElement.parentNode || this._element.nativeElement.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // don't move modals dom position\n if (document && document.body) {\n document.body.appendChild(this._element.nativeElement);\n }\n }\n this._renderer.setAttribute(this._element.nativeElement, 'aria-hidden', 'false');\n this._renderer.setAttribute(this._element.nativeElement, 'aria-modal', 'true');\n this._renderer.setStyle(this._element.nativeElement, 'display', 'block');\n this._renderer.setProperty(this._element.nativeElement, 'scrollTop', 0);\n if (this._config.animated) {\n Utils.reflow(this._element.nativeElement);\n }\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.SHOW);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.nativeElement.focus();\n }\n this.onShown.emit(this);\n };\n if (this._config.animated) {\n setTimeout(transitionComplete, TRANSITION_DURATION);\n } else {\n transitionComplete();\n }\n }\n /** @internal */\n hideModal() {\n this._renderer.setAttribute(this._element.nativeElement, 'aria-hidden', 'true');\n this._renderer.setStyle(this._element.nativeElement, 'display', 'none');\n this.showBackdrop(() => {\n if (!this.isNested) {\n if (document && document.body) {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document.body, 'overflow-y', '');\n }\n this.resetScrollbar();\n }\n this.resetAdjustments();\n this.focusOtherModal();\n this.onHidden.emit(this);\n });\n }\n // todo: original show was calling a callback when done, but we can use\n // promise\n /** @internal */\n showBackdrop(callback) {\n if (this._isShown && this.config.backdrop && (!this.backdrop || !this.backdrop.instance.isShown)) {\n this.removeBackdrop();\n this._backdrop.attach(ModalBackdropComponent).to('body').show({\n isAnimated: this._config.animated\n });\n this.backdrop = this._backdrop._componentRef;\n if (!callback) {\n return;\n }\n if (!this._config.animated) {\n callback();\n return;\n }\n setTimeout(callback, BACKDROP_TRANSITION_DURATION);\n } else if (!this._isShown && this.backdrop) {\n this.backdrop.instance.isShown = false;\n const callbackRemove = () => {\n this.removeBackdrop();\n if (callback) {\n callback();\n }\n };\n if (this.backdrop.instance.isAnimated) {\n this.timerRmBackDrop = window$1.setTimeout(callbackRemove, BACKDROP_TRANSITION_DURATION);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n }\n /** @internal */\n removeBackdrop() {\n this._backdrop.hide();\n }\n /** Events tricks */\n // no need for it\n // protected setEscapeEvent():void {\n // if (this._isShown && this._config.keyboard) {\n // $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n // if (event.which === 27) {\n // this.hide()\n // }\n // })\n //\n // } else if (!this._isShown) {\n // $(this._element).off(Event.KEYDOWN_DISMISS)\n // }\n // }\n // protected setResizeEvent():void {\n // console.log(this.renderer.listenGlobal('', Event.RESIZE));\n // if (this._isShown) {\n // $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this))\n // } else {\n // $(window).off(Event.RESIZE)\n // }\n // }\n focusOtherModal() {\n if (this._element.nativeElement.parentElement == null) {\n return;\n }\n const otherOpenedModals = this._element.nativeElement.parentElement.querySelectorAll('.in[bsModal]');\n if (!otherOpenedModals.length) {\n return;\n }\n otherOpenedModals[otherOpenedModals.length - 1].focus();\n }\n /** @internal */\n resetAdjustments() {\n this._renderer.setStyle(this._element.nativeElement, 'paddingLeft', '');\n this._renderer.setStyle(this._element.nativeElement, 'paddingRight', '');\n }\n /** Scroll bar tricks */\n /** @internal */\n checkScrollbar() {\n this.isBodyOverflowing = document.body.clientWidth < window$1.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n setScrollbar() {\n if (!document) {\n return;\n }\n this.originalBodyPadding = parseInt(window$1.getComputedStyle(document.body).getPropertyValue('padding-right') || 0, 10);\n if (this.isBodyOverflowing) {\n document.body.style.paddingRight = `${this.originalBodyPadding + this.scrollbarWidth}px`;\n }\n }\n resetScrollbar() {\n document.body.style.paddingRight = `${this.originalBodyPadding}px`;\n }\n // thx d.walsh\n getScrollbarWidth() {\n const scrollDiv = this._renderer.createElement('div');\n this._renderer.addClass(scrollDiv, CLASS_NAME.SCROLLBAR_MEASURER);\n this._renderer.appendChild(document.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document.body, scrollDiv);\n return scrollbarWidth;\n }\n static {\n this.ɵfac = function ModalDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ModalDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i1.ComponentLoaderFactory), i0.ɵɵdirectiveInject(MODAL_CONFIG_DEFAULT_OVERRIDE, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ModalDirective,\n selectors: [[\"\", \"bsModal\", \"\"]],\n hostBindings: function ModalDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mousedown\", function ModalDirective_mousedown_HostBindingHandler($event) {\n return ctx.onClickStarted($event);\n })(\"mouseup\", function ModalDirective_mouseup_HostBindingHandler($event) {\n return ctx.onClickStop($event);\n })(\"keydown.esc\", function ModalDirective_keydown_esc_HostBindingHandler($event) {\n return ctx.onEsc($event);\n });\n }\n },\n inputs: {\n config: \"config\",\n closeInterceptor: \"closeInterceptor\"\n },\n outputs: {\n onShow: \"onShow\",\n onShown: \"onShown\",\n onHide: \"onHide\",\n onHidden: \"onHidden\"\n },\n exportAs: [\"bs-modal\"]\n });\n }\n }\n return ModalDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ModalModule = /*#__PURE__*/(() => {\n class ModalModule {\n // @deprecated method not required anymore, will be deleted in v19.0.0\n static forRoot() {\n return {\n ngModule: ModalModule,\n providers: [BsModalService, ComponentLoaderFactory, PositioningService]\n };\n }\n // @deprecated method not required anymore, will be deleted in v19.0.0\n static forChild() {\n return {\n ngModule: ModalModule,\n providers: [BsModalService, ComponentLoaderFactory, PositioningService]\n };\n }\n static {\n this.ɵfac = function ModalModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ModalModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ModalModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [FocusTrapModule]\n });\n }\n }\n return ModalModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsModalRef, BsModalService, MODAL_CONFIG_DEFAULT_OVERRIDE, ModalBackdropComponent, ModalBackdropOptions, ModalContainerComponent, ModalDirective, ModalModule, ModalOptions };\n"],"mappings":"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","names":["Trigger","open","close","DEFAULT_ALIASES","parseTriggers","triggers","aliases","trimmedTriggers","parsedTriggers","trigger","triggerPair","alias","manualTriggers","listenToTriggersV2","renderer","options","parsedTriggers","parseTriggers","target","listeners","_registerHide","registerHide","fn","trigger","useToggle","showFn","triggerClose","optionsHide","_hide","unsubscribeFn","registerOutsideClick","event","registerEscClick","win","document","location","gc","performance","Event","MouseEvent","KeyboardEvent","EventTarget","History","Location","EventListener","BsVerions","guessedVersion","_guessBsVersion","spanEl","checkPadding","isBs4","guessedVersion","_guessBsVersion","isBs5","getBsVer","currentBsVersion","bsVer","resVersion","key","BsVerions","Utils","element","elem","view","win","bsVer","currentBsVersion","_hideMsg","MapPlacementInToRL","PlacementForBs5","getStyleComputedProperty","element","property","css","getOffsetParent","noOffsetParent","offsetParent","sibling","nodeName","isOffsetContainer","getRoot","node","findCommonOffsetParent","element1","element2","order","start","end","range","commonAncestorContainer","element1root","getFixedPositionOffsetParent","el","getBordersSize","styles","axis","sideA","sideB","getSize","body","html","_body","_html","getWindowSizes","document","getClientRect","offsets","__spreadProps","__spreadValues","isNumeric","n","isNumber","value","getBoundingClientRect","rect","result","sizes","width","height","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","children","parent","fixedPosition","isHTML","childrenRect","parentRect","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getParentNode","getScrollParent","overflow","overflowX","overflowY","getScroll","side","upperSide","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","scrollTop","scrollLeft","offset","isFixed","getBoundaries","target","host","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","allowedPositions","rects","sortedAreas","key","a","b","filteredAreas","position","allowedPosition","computedPlacement","variation","getBsVer","getOffsets","data","getOppositePlacement","hash","matched","getOppositeVariation","parse","def","getOuterSizes","x","y","getReferenceOffsets","commonOffsetParent","getTargetOffsets","hostOffsets","targetRect","targetOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","isModifierEnabled","options","modifierName","availablePositions","checkPopoverMargin","checkPosition","checkMargins","updateContainerClass","renderer","containerClass","dataPlacement","setStyles","prop","unit","arrow","arrowElement","isVertical","len","sideCapitalized","altSide","opSide","arrowElementSize","placementVariation","targetMarginSide","targetBorderSide","center","targetBorderRadius","targetSideArrowOffset","sideValue","flip","offsetsHost","adaptivePosition","flipOrder","step","index","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","initData","targetElement","hostElement","hostElPosition","placementAuto","matches","targetOffset","preventOverflow","transformProp","targetStyles","top","left","transform","check","isPlacementHorizontal","shift","basePlacement","shiftVariation","shiftOffsets","Positioning","appendToBody","chainOfModifiers","_position","modifiedData","modifier","positionService","positionElements","PositioningService","_PositioningService","ngZone","rendererFactory","platformId","Subject","isPlatformBrowser","merge","fromEvent","of","animationFrameScheduler","positionElement","_getHtmlElement","elRef","__ngFactoryType__","ɵɵinject","NgZone","RendererFactory2","PLATFORM_ID","ɵɵdefineInjectable","ElementRef","ContentRef","nodes","viewRef","componentRef","ComponentLoader","_viewContainerRef","_renderer","_elementRef","_injector","_componentFactoryResolver","_ngZone","_applicationRef","_posService","_document","EventEmitter","compType","container","opts","provider","injector","Injector","ElementRef","selectedElement","id","componentEl","listenOpts","hide","show","registerHide","toggle","listenToTriggersV2","vRef","template","unsubscribeOutsideClick","unsubscribeEscClick","target","registerOutsideClick","registerEscClick","content","context","initialState","TemplateRef","_viewRef","contentCmptFactory","modalContentInjector","ComponentLoaderFactory","_ComponentLoaderFactory","__ngFactoryType__","ɵɵinject","ComponentFactoryResolver$1","NgZone","PositioningService","ApplicationRef","DOCUMENT","ɵɵdefineInjectable","coerceBooleanProperty","value","hasV8BreakIterator","Platform","_Platform","_platformId","isPlatformBrowser","__ngFactoryType__","ɵɵinject","PLATFORM_ID","ɵɵdefineInjectable","InteractivityChecker","_InteractivityChecker","_platform","element","hasGeometry","frameElement","getFrameElement","getWindow","getTabIndexValue","nodeName","tabIndexValue","isPotentiallyTabbableIOS","config","isPotentiallyFocusable","__ngFactoryType__","ɵɵinject","Platform","ɵɵdefineInjectable","window","isNativeFormElement","isHiddenInput","isInputElement","isAnchorWithHref","isAnchorElement","hasValidTabIndex","tabIndex","inputType","node","FocusTrapManager","_FocusTrapManager","focusTrap","ft","stack","i","FocusTrap","value","_element","_checker","_ngZone","_document","deferAnchors","startAnchor","endAnchor","resolve","bound","markers","redirectToElement","focusableChild","root","children","tabbableChild","anchor","isEnabled","enabled","fn","take","FocusTrapFactory","_FocusTrapFactory","deferCaptureElements","NgZone","DOCUMENT","FocusTrapDirective","_FocusTrapDirective","coerceBooleanProperty","_elementRef","_focusTrapFactory","changes","autoCaptureChange","ɵɵdirectiveInject","ElementRef","ɵɵdefineDirective","ɵɵProvidersFeature","ɵɵNgOnChangesFeature","FocusTrapModule","_FocusTrapModule","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","_c0","BsModalRef","_BsModalRef","__ngFactoryType__","ɵɵdefineInjectable","ModalOptions","_ModalOptions","__ngFactoryType__","ɵɵdefineInjectable","modalConfigDefaults","MODAL_CONFIG_DEFAULT_OVERRIDE","InjectionToken","CLASS_NAME","TRANSITION_DURATIONS","DISMISS_REASONS","ModalBackdropComponent","_ModalBackdropComponent","value","CLASS_NAME","element","renderer","Utils","__ngFactoryType__","ɵɵdirectiveInject","ElementRef","Renderer2","ɵɵdefineComponent","rf","ctx","currentId","BsModalService","_BsModalService","rendererFactory","clf","modalDefaultOption","EventEmitter","modalConfigDefaults","content","config","document","id","isBackdropEnabled","isBackdropInDOM","duration","modalLoader","provider","bsModalRef","BsModalRef","modalContainerRef","ModalOptions","ModalContainerComponent","newClass","indexToRemove","loader","reason","scrollDiv","scrollbarWidth","i","from","to","data","ɵɵinject","RendererFactory2","ComponentLoaderFactory","MODAL_CONFIG_DEFAULT_OVERRIDE","ɵɵdefineInjectable","_ModalContainerComponent","options","_element","_renderer","event","clickedInBackdrop","ɵɵlistener","$event","ɵɵresolveWindow","ɵɵattribute","ɵɵProvidersFeature","_c0","ɵɵprojectionDef","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","ɵɵclassMap","FocusTrapDirective","ModalModule","_ModalModule","BsModalService","ComponentLoaderFactory","PositioningService","__ngFactoryType__","ɵɵdefineNgModule","ɵɵdefineInjector","FocusTrapModule"],"x_google_ignoreList":[0,1,2,3,4]}