{"version":3,"file":"1295.5acc6149bb1fb257.js","mappings":"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","names":["constructor","open","close","this","isManual","DEFAULT_ALIASES","hover","focus","win","window","BsVerions","isBs3","isBs4","isBs5","guessedVersion","document","spanEl","createElement","innerText","classList","add","head","appendChild","rect","getBoundingClientRect","checkPadding","getComputedStyle","paddingLeft","top","removeChild","parseFloat","__theme","_guessBsVersion","console","hasV8BreakIterator","FocusTrapManager","_focusTrapStack","register","focusTrap","filter","ft","stack","length","_disable","push","_enable","deregister","i","indexOf","splice","ɵfac","ɵprov","i0","factory","Intl","v8BreakIterator","_a","Platform","_platformId","isBrowser","isPlatformBrowser","EDGE","test","navigator","userAgent","TRIDENT","BLINK","chrome","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","PLATFORM_ID","InteractivityChecker","_platform","isDisabled","element","hasAttribute","isVisible","offsetWidth","offsetHeight","getClientRects","hasGeometry","visibility","isTabbable","frameElement","getFrameElement","node","ownerDocument","defaultView","getWindow","getTabIndexValue","nodeName","toLowerCase","tabIndexValue","inputType","type","isPotentiallyTabbableIOS","tabIndex","isFocusable","config","isInputElement","isHiddenInput","isNativeFormElement","isAnchorElement","isAnchorWithHref","hasValidTabIndex","isPotentiallyFocusable","ignoreVisibility","undefined","getAttribute","isNaN","parseInt","value","_element","_checker","_ngZone","_document","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","_enabled","attachAnchors","enabled","_startAnchor","_endAnchor","_toggleAnchorTabIndex","destroy","startAnchor","endAnchor","removeEventListener","parentNode","runOutsideAngular","_createAnchor","addEventListener","insertBefore","nextSibling","focusInitialElementWhenReady","Promise","resolve","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","querySelectorAll","warn","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","querySelector","focusableChild","hasAttached","root","children","childNodes","tabbableChild","nodeType","ELEMENT_NODE","anchor","setAttribute","isEnabled","removeAttribute","toggleAnchors","fn","isStable","onStable","pipe","take","subscribe","FocusTrapFactory","create","deferCaptureElements","FocusTrap","DOCUMENT","FocusTrapDirective","_elementRef","_focusTrapFactory","_previouslyFocusedElement","_autoCapture","nativeElement","coerceBooleanProperty","autoCapture","ngOnDestroy","ngAfterContentInit","_captureFocus","ngDoCheck","ngOnChanges","changes","autoCaptureChange","firstChange","activeElement","ɵdir","selectors","FocusTrapModule","static","ngModule","providers","ɵmod","ɵinj","CommonModule","MapPlacementInToRL","bottom","left","right","auto","end","start","PlacementForBs5","property","css","documentElement","sibling","offsetParent","nextElementSibling","getStyleComputedProperty","getOffsetParent","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","range","createRange","setStart","setEnd","commonAncestorContainer","contains","firstElementChild","isOffsetContainer","element1root","host","findCommonOffsetParent","parentElement","el","styles","axis","sideA","sideB","body","html","computedStyle","Math","max","height","getSize","width","offsets","Object","assign","prototype","toString","call","isNumber","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","vertScrollbar","getBordersSize","getClientRect","overflow","overflowX","overflowY","String","getScrollParent","getParentNode","parent","fixedPosition","_b","_c","_d","_e","_f","isHTML","childrenRect","parentRect","borderTopWidth","borderLeftWidth","marginTop","marginLeft","side","upperSide","scrollingElement","isFixed","target","padding","boundariesElement","boundaries","getFixedPositionOffsetParent","excludeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","innerWidth","innerHeight","scrollTop","getScroll","scrollLeft","Number","offset","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","o","placement","refRect","allowedPositions","_g","_h","_j","_k","_l","_m","getBoundaries","rects","sortedAreas","keys","map","key","position","area","getArea","sort","a","b","filteredAreas","some","allowedPosition","computedPlacement","variation","split","className","replace","getBsVer","parse","def","x","marginBottom","y","marginRight","hostOffsets","targetRect","getOuterSizes","targetOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","u","hash","matched","getOppositePlacement","options","modifierName","modifiers","availablePositions","checkPosition","includes","renderer","forEach","prop","unit","n","isFinite","isNumeric","setStyle","style","data","arrowElement","instance","isVertical","len","sideCapitalized","altSide","opSide","arrowElementSize","placementVariation","targetMarginSide","targetBorderSide","center","targetBorderRadius","borderRadius","targetSideArrowOffset","sideValue","min","arrow","round","isModifierEnabled","getTargetOffsets","adaptivePosition","computeAutoPlacement","flipOrder","step","index","_o","_p","_q","_r","overlapsRef","floor","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","getOppositeVariation","transformProp","targetStyles","transform","preventOverflow","check","primary","secondary","isPlacementHorizontal","basePlacement","shiftVariation","shiftOffsets","positionService","hostElement","targetElement","getReferenceOffsets","positionElements","appendToBody","chainOfModifiers","flip","shift","hostElPosition","match","placementAuto","matches","positionFixed","initData","reduce","modifiedData","modifier","getOffsets","setStyles","containerClass","dataPlacement","checkPopoverMargin","checkMargins","updateContainerClass","PositioningService","ngZone","rendererFactory","platformId","update$$","Subject","Map","triggerEvent$","merge","fromEvent","passive","of","animationFrameScheduler","positionElement","_getHtmlElement","attachment","createRenderer","addPositionElement","event$","disable","enable","set","calcPosition","next","deletePositionElement","elRef","delete","setOptions","ElementRef","nodes","viewRef","componentRef","_viewContainerRef","_renderer","_injector","_componentFactoryResolver","_applicationRef","_posService","onBeforeShow","EventEmitter","onShown","onBeforeHide","onHidden","_providers","_isHiding","containerDefaultSelector","_listenOpts","_globalListener","Function","isShown","_componentRef","attach","compType","_componentFactory","resolveComponentFactory","to","container","opts","provide","provider","show","_subscribePositioning","_innerComponent","emit","_contentRef","_getContentRef","content","context","initialState","injector","Injector","attachView","hostView","location","selectedElement","changeDetectorRef","markForCheck","detectChanges","id","_registerOutsideClick","hide","componentEl","remove","_removeGlobalListener","toggle","dispose","_unsubscribePositioning","_unregisterListenersFn","listen","listenOpts","triggers","outsideClick","outsideEsc","registerHide","parsedTriggers","aliases","trimmedTriggers","trim","trigger","triggerPair","alias","Trigger","manualTriggers","Error","parseTriggers","listeners","_registerHide","useToggle","showFn","_hide","unsubscribeFn","listenToTriggersV2","attachInline","vRef","template","_inlineViewRef","createEmbeddedView","setTimeout","event","targets","registerOutsideClick","registerEscClick","getInnerComponent","_zoneSubscription","unsubscribe","ContentRef","TemplateRef","_viewRef","rootNodes","contentCmptFactory","modalContentInjector","createText","ComponentLoaderFactory","createLoader","ComponentLoader","i1","BsModalRef","setClass","ModalOptions","modalConfigDefaults","backdrop","keyboard","ignoreBackdropClick","class","animated","closeInterceptor","MODAL_CONFIG_DEFAULT_OVERRIDE","InjectionToken","ModalContainerComponent","isAnimated","isModalHiding","clickStartedInContent","ngOnInit","addClass","SHOW","bsModalService","getModalsCount","checkScrollbar","setScrollbar","onClickStarted","onClickStop","setDismissReason","onPopState","onEsc","keyCode","preventDefault","level","then","removeClass","ɵcmp","directives","i2","encapsulation","ModalBackdropComponent","_isAnimated","_isShown","e","elem","view","opener","bsVer","resVersion","find","currentBsVersion","crossorigin","integrity","cdnLink","Utils","currentId","BsModalService","clf","modalDefaultOption","onShow","onHide","isBodyOverflowing","originalBodyPadding","scrollbarWidth","modalsCount","loaders","_backdropLoader","_createLoaders","_showBackdrop","lastDismissReason","_showModal","_hideBackdrop","resetScrollbar","_hideModal","removeLoaders","isBackdropEnabled","isBackdropInDOM","backdropRef","removeBackdrop","duration","modalLoader","bsModalRef","modalContainerRef","useValue","newClass","copyEvent","indexToRemove","findIndex","loader","reason","getScrollbarWidth","getPropertyValue","paddingRight","scrollDiv","from","ModalModule"],"sourceRoot":"webpack:///","sources":["./node_modules/ngx-bootstrap/utils/fesm2015/ngx-bootstrap-utils.mjs","./node_modules/ngx-bootstrap/focus-trap/fesm2015/ngx-bootstrap-focus-trap.mjs","./node_modules/ngx-bootstrap/positioning/fesm2015/ngx-bootstrap-positioning.mjs","./node_modules/ngx-bootstrap/component-loader/fesm2015/ngx-bootstrap-component-loader.mjs","./node_modules/ngx-bootstrap/modal/fesm2015/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}\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\n .split(/\\s+/)\n .map((trigger) => trigger.split(':'))\n .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 _hide = renderer.listen(target, trigger.close, options.hide);\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 &&\n 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 &&\n 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;\n\nvar BsVerions;\n(function (BsVerions) {\n BsVerions[\"isBs3\"] = \"bs3\";\n BsVerions[\"isBs4\"] = \"bs4\";\n BsVerions[\"isBs5\"] = \"bs5\";\n})(BsVerions || (BsVerions = {}));\nlet guessedVersion;\nfunction _guessBsVersion() {\n if (typeof win.document === 'undefined') {\n return 'bs4';\n }\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 rect = spanEl.getBoundingClientRect();\n const checkPadding = win.getComputedStyle(spanEl).paddingLeft;\n if (!rect || (rect && rect.top !== 0)) {\n win.document.head.removeChild(spanEl);\n return 'bs3';\n }\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}\n// todo: in ngx-bootstrap, bs4 will became a default one\nfunction isBs3() {\n if (typeof win === 'undefined') {\n return true;\n }\n if (typeof win.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs3';\n }\n return win.__theme === 'bs3';\n}\nfunction isBs4() {\n if (isBs3())\n return false;\n if (guessedVersion)\n return guessedVersion === 'bs4';\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs4';\n}\nfunction isBs5() {\n if (isBs3() || isBs4())\n return false;\n if (guessedVersion)\n return guessedVersion === 'bs5';\n guessedVersion = _guessBsVersion();\n return guessedVersion === 'bs5';\n}\nfunction getBsVer() {\n return {\n isBs3: isBs3(),\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}\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 === null || current === void 0 ? void 0 : current.next;\n }\n return current === null || current === void 0 ? void 0 : 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 }\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 }\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 }\n else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode === null || currentPreviousNode === void 0 ? void 0 : 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 var _a;\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 }\n else {\n // there is no second node\n this.tail = undefined;\n }\n }\n else if (position === this.length - 1 && ((_a = this.tail) === null || _a === void 0 ? void 0 : _a.previous)) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n }\n else {\n // middle node\n const removedNode = this.getNode(position);\n if ((removedNode === null || removedNode === void 0 ? void 0 : 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({ index, value: current.value });\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 === null || last === void 0 ? void 0 : 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 var _a;\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = (_a = this.head) === null || _a === void 0 ? void 0 : _a.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 === null || current === void 0 ? void 0 : 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}\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: bsVer !== 'bs3' ? \"anonymous\" : undefined,\n integrity: bsVer === 'bs5' ? 'sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We' : bsVer === 'bs4' ? 'sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2' : undefined,\n cdnLink: bsVer === 'bs5' ? 'https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css' : bsVer === 'bs4' ? 'https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css' : 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css',\n };\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, isBs3, listenToTriggers, listenToTriggersV2, parseTriggers, registerEscClick, registerOutsideClick, setTheme, warnOnce, win as window };\n","import * as i0 from '@angular/core';\nimport { Injectable, PLATFORM_ID, 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/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass 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}\nFocusTrapManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\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// 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}\ncatch (_a) {\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 */\nclass 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 ?\n 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) &&\n 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 &&\n /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) &&\n !('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}\nPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: Platform, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: Platform, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }];\n } });\n\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 */\nclass 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) &&\n ((config === null || config === void 0 ? void 0 : config.ignoreVisibility) || this.isVisible(element));\n }\n}\nInteractivityChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: InteractivityChecker, deps: [{ token: Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nInteractivityChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: InteractivityChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: Platform }]; } });\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 }\n catch (_a) {\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 ||\n (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' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n 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'\n || inputType === 'password'\n || nodeName === 'select'\n || 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) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n 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/** 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/**\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 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 /** 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 /** 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}], ` +\n `[cdkFocusRegion${bound}], ` +\n `[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}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `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 ?\n 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], ` +\n `[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', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `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 === null || focusableChild === void 0 ? void 0 : 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 ?\n this._getFirstTabbableElement(children[i]) :\n 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 ?\n this._getLastTabbableElement(children[i]) :\n 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 }\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 */\nclass 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}\nFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n/** Directive for trapping focus within a region. */\nclass FocusTrapDirective {\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 /** 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 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 &&\n this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = this._document.activeElement;\n this.focusTrap.focusInitialElementWhenReady();\n }\n}\nFocusTrapDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapDirective, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nFocusTrapDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: FocusTrapDirective, selector: \"[focusTrap]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"focusTrap\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[focusTrap]',\n exportAs: 'focusTrap'\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { enabled: [{\n type: Input,\n args: ['cdkTrapFocus']\n }], autoCapture: [{\n type: Input,\n args: ['cdkTrapFocusAutoCapture']\n }] } });\n\nclass FocusTrapModule {\n static forRoot() {\n return {\n ngModule: FocusTrapModule,\n providers: [\n FocusTrapManager,\n Platform,\n InteractivityChecker\n ]\n };\n }\n}\nFocusTrapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nFocusTrapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapModule, declarations: [FocusTrapDirective], imports: [CommonModule], exports: [FocusTrapDirective] });\nFocusTrapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: FocusTrapModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [FocusTrapDirective],\n exports: [FocusTrapDirective]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FocusTrap, FocusTrapDirective, FocusTrapModule };\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';\n\nvar MapPlacementInToRL;\n(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})(MapPlacementInToRL || (MapPlacementInToRL = {}));\nvar PlacementForBs5;\n(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})(PlacementForBs5 || (PlacementForBs5 = {}));\n\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 === null || window === void 0 ? void 0 : 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 === null || element === void 0 ? void 0 : element.offsetParent;\n // Skip hidden elements which don't have an offsetParent\n let sibling = void 0;\n while (offsetParent === noOffsetParent\n && element.nextElementSibling\n && 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 &&\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n 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 { nodeName } = 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 &&\n element2 !== commonAncestorContainer) ||\n 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 }\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 === null || el === void 0 ? void 0 : 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`]) +\n parseFloat(styles[`border${sideB}Width`]));\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n const _body = body;\n const _html = html;\n const _computedStyle = computedStyle;\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 const computedStyle = void 0;\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nfunction getClientRect(offsets) {\n return Object.assign(Object.assign({}, offsets), { right: (offsets.left || 0) + offsets.width, bottom: (offsets.top || 0) + offsets.height });\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}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\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 === null || sizes === void 0 ? void 0 : sizes.width) || element.clientWidth\n || isNumber(rect.right) && isNumber(result.left) && rect.right - result.left || 0;\n const height = (sizes === null || sizes === void 0 ? void 0 : sizes.height) || element.clientHeight\n || 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}\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 { overflow, overflowX, overflowY } = 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\nfunction getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n var _a, _b, _c, _d, _e, _f;\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\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((_a = parentRect.top) !== null && _a !== void 0 ? _a : 0, 0);\n parentRect.left = Math.max((_b = parentRect.left) !== null && _b !== void 0 ? _b : 0, 0);\n }\n const offsets = getClientRect({\n top: ((_c = childrenRect.top) !== null && _c !== void 0 ? _c : 0) - ((_d = parentRect.top) !== null && _d !== void 0 ? _d : 0) - borderTopWidth,\n left: ((_e = childrenRect.left) !== null && _e !== void 0 ? _e : 0) - ((_f = parentRect.left) !== null && _f !== void 0 ? _f : 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 * 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}\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 === null || relativeOffset === void 0 ? void 0 : relativeOffset.top) + Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : relativeOffset.marginTop),\n left: scrollLeft - Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : relativeOffset.left) + Number(relativeOffset === null || relativeOffset === void 0 ? void 0 : 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}\n\nfunction getBoundaries(target, host, padding = 0, boundariesElement, fixedPosition = false) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(target) : findCommonOffsetParent(target, host);\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\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 }\n else if (boundariesElement === 'window') {\n boundariesNode = target.ownerDocument.documentElement;\n }\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 { height, width } = 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 }\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({ width, height }) {\n return width * height;\n}\nfunction computeAutoPlacement(placement, refRect, target, host, allowedPositions = ['top', 'bottom', 'right', 'left'], boundariesElement = 'viewport', padding = 0) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\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: (_a = boundaries === null || boundaries === void 0 ? void 0 : boundaries.width) !== null && _a !== void 0 ? _a : 0,\n height: ((_b = refRect === null || refRect === void 0 ? void 0 : refRect.top) !== null && _b !== void 0 ? _b : 0) - ((_c = boundaries === null || boundaries === void 0 ? void 0 : boundaries.top) !== null && _c !== void 0 ? _c : 0)\n },\n right: {\n width: ((_d = boundaries === null || boundaries === void 0 ? void 0 : boundaries.right) !== null && _d !== void 0 ? _d : 0) - ((_e = refRect === null || refRect === void 0 ? void 0 : refRect.right) !== null && _e !== void 0 ? _e : 0),\n height: (_f = boundaries === null || boundaries === void 0 ? void 0 : boundaries.height) !== null && _f !== void 0 ? _f : 0\n },\n bottom: {\n width: (_g = boundaries === null || boundaries === void 0 ? void 0 : boundaries.width) !== null && _g !== void 0 ? _g : 0,\n height: ((_h = boundaries === null || boundaries === void 0 ? void 0 : boundaries.bottom) !== null && _h !== void 0 ? _h : 0) - ((_j = refRect === null || refRect === void 0 ? void 0 : refRect.bottom) !== null && _j !== void 0 ? _j : 0)\n },\n left: {\n width: ((_k = refRect.left) !== null && _k !== void 0 ? _k : 0) - ((_l = boundaries === null || boundaries === void 0 ? void 0 : boundaries.left) !== null && _l !== void 0 ? _l : 0),\n height: (_m = boundaries === null || boundaries === void 0 ? void 0 : boundaries.height) !== null && _m !== void 0 ? _m : 0\n }\n };\n const sortedAreas = Object.keys(rects)\n .map((key) => (Object.assign(Object.assign({ position: key }, rects[key]), { area: getArea(rects[key]) })))\n .sort((a, b) => b.area - a.area);\n let filteredAreas = sortedAreas.filter(({ width, height }) => {\n return width >= target.clientWidth && height >= target.clientHeight;\n });\n filteredAreas = filteredAreas.filter(({ position }) => {\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}\n\nfunction getOffsets(data) {\n var _a, _b, _c, _d;\n return {\n width: data.offsets.target.width,\n height: data.offsets.target.height,\n left: Math.floor((_a = data.offsets.target.left) !== null && _a !== void 0 ? _a : 0),\n top: Math.round((_b = data.offsets.target.top) !== null && _b !== void 0 ? _b : 0),\n bottom: Math.round((_c = data.offsets.target.bottom) !== null && _c !== void 0 ? _c : 0),\n right: Math.floor((_d = data.offsets.target.right) !== null && _d !== void 0 ? _d : 0)\n };\n}\n\n/**\n * Get the opposite placement of the given one\n */\nfunction getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\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 }\n else if (variation === 'left') {\n return 'right';\n }\n return variation;\n}\n\nconst parse = (value, def = 0) => value ? parseFloat(value) : def;\nfunction getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window === null || window === void 0 ? void 0 : window.getComputedStyle(element);\n const x = parse(styles === null || styles === void 0 ? void 0 : styles.marginTop) + parse(styles === null || styles === void 0 ? void 0 : styles.marginBottom);\n const y = parse(styles === null || styles === void 0 ? void 0 : styles.marginLeft) + parse(styles === null || styles === void 0 ? void 0 : 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\n ? getFixedPositionOffsetParent(target)\n : 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 var _a, _b, _c;\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] =\n ((_a = hostOffsets[mainSide]) !== null && _a !== void 0 ? _a : 0) +\n hostOffsets[measurement] / 2 -\n targetRect[measurement] / 2;\n targetOffsets[secondarySide] = placement === secondarySide\n ? ((_b = hostOffsets[secondarySide]) !== null && _b !== void 0 ? _b : 0) - targetRect[secondaryMeasurement]\n : (_c = hostOffsets[getOppositePlacement(secondarySide)]) !== null && _c !== void 0 ? _c : 0;\n return targetOffsets;\n}\n\nfunction isModifierEnabled(options, modifierName) {\n var _a;\n return !!((_a = options.modifiers[modifierName]) === null || _a === void 0 ? void 0 : _a.enabled);\n}\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}\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}\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 &&\n 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}\n\nfunction arrow(data) {\n var _a, _b, _c, _d, _e, _f;\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 (((_a = data.offsets.host[opSide]) !== null && _a !== void 0 ? _a : 0) - arrowElementSize < ((_b = targetOffsets[side]) !== null && _b !== void 0 ? _b : 0)) {\n (targetOffsets)[side] -=\n ((_c = targetOffsets[side]) !== null && _c !== void 0 ? _c : 0) - (((_d = data.offsets.host[opSide]) !== null && _d !== void 0 ? _d : 0) - arrowElementSize);\n }\n // bottom/right side\n if (Number((data).offsets.host[side]) + Number(arrowElementSize) > ((_e = targetOffsets[opSide]) !== null && _e !== void 0 ? _e : 0)) {\n (targetOffsets)[side] +=\n 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 }\n else {\n const targetBorderRadius = parseFloat(css[\"borderRadius\"]) || 0;\n const targetSideArrowOffset = Number(targetMarginSide + targetBorderSide + targetBorderRadius);\n center = side === placementVariation ?\n Number((data).offsets.host[side]) + targetSideArrowOffset :\n Number((data).offsets.host[side]) + Number(data.offsets.host[len] - targetSideArrowOffset);\n }\n let sideValue = center - ((_f = targetOffsets[side]) !== null && _f !== void 0 ? _f : 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}\n\nfunction flip(data) {\n data.offsets.target = getClientRect(data.offsets.target);\n if (!isModifierEnabled(data.options, 'flip')) {\n data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), getTargetOffsets(data.instance.target, data.offsets.host, data.placement));\n return data;\n }\n const boundaries = getBoundaries(data.instance.target, data.instance.host, 0, // 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 var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\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' &&\n Math.floor((_a = data.offsets.target.right) !== null && _a !== void 0 ? _a : 0) > Math.floor((_b = data.offsets.host.left) !== null && _b !== void 0 ? _b : 0)) ||\n (placement === 'right' &&\n Math.floor((_c = data.offsets.target.left) !== null && _c !== void 0 ? _c : 0) < Math.floor((_d = data.offsets.host.right) !== null && _d !== void 0 ? _d : 0)) ||\n (placement === 'top' &&\n Math.floor((_e = data.offsets.target.bottom) !== null && _e !== void 0 ? _e : 0) > Math.floor((_f = data.offsets.host.top) !== null && _f !== void 0 ? _f : 0)) ||\n (placement === 'bottom' &&\n Math.floor((_g = data.offsets.target.top) !== null && _g !== void 0 ? _g : 0) < Math.floor((_h = data.offsets.host.bottom) !== null && _h !== void 0 ? _h : 0));\n const overflowsLeft = Math.floor((_j = data.offsets.target.left) !== null && _j !== void 0 ? _j : 0) < Math.floor((_k = boundaries.left) !== null && _k !== void 0 ? _k : 0);\n const overflowsRight = Math.floor((_l = data.offsets.target.right) !== null && _l !== void 0 ? _l : 0) > Math.floor((_m = boundaries.right) !== null && _m !== void 0 ? _m : 0);\n const overflowsTop = Math.floor((_o = data.offsets.target.top) !== null && _o !== void 0 ? _o : 0) < Math.floor((_p = boundaries.top) !== null && _p !== void 0 ? _p : 0);\n const overflowsBottom = Math.floor((_q = data.offsets.target.bottom) !== null && _q !== void 0 ? _q : 0) > Math.floor((_r = boundaries.bottom) !== null && _r !== void 0 ? _r : 0);\n const overflowsBoundaries = (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation = ((isVertical && variation === 'left' && overflowsLeft) ||\n (isVertical && variation === 'right' && overflowsRight) ||\n (!isVertical && variation === 'left' && overflowsTop) ||\n (!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 = Object.assign(Object.assign({}, data.offsets.target), getTargetOffsets(data.instance.target, data.offsets.host, data.placement));\n }\n });\n return data;\n}\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)*$/)\n && !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)/)\n ? position.split(' ')[1] || 'auto'\n : 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 || { modifiers: {} },\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}\n\nfunction preventOverflow(data) {\n var _a;\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 { top, left, [transformProp]: transform } = targetStyles;\n targetStyles.top = '';\n targetStyles.left = '';\n targetStyles[transformProp] = '';\n const boundaries = getBoundaries(data.instance.target, data.instance.host, 0, // padding\n ((_a = data.options.modifiers.preventOverflow) === null || _a === void 0 ? void 0 : _a.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 var _a, _b, _c, _d;\n let value = data.offsets.target[placement];\n // options.escapeWithReference\n if (((_a = data.offsets.target[placement]) !== null && _a !== void 0 ? _a : 0) < ((_b = boundaries[placement]) !== null && _b !== void 0 ? _b : 0)) {\n value = Math.max((_c = data.offsets.target[placement]) !== null && _c !== void 0 ? _c : 0, (_d = boundaries[placement]) !== null && _d !== void 0 ? _d : 0);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n var _a, _b, _c, _d;\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 (((_a = data.offsets.target[placement]) !== null && _a !== void 0 ? _a : 0) > ((_b = boundaries[placement]) !== null && _b !== void 0 ? _b : 0)) {\n value = Math.min((_c = data.offsets.target[mainSide]) !== null && _c !== void 0 ? _c : 0, ((_d = boundaries[placement]) !== null && _d !== void 0 ? _d : 0) - data.offsets.target[measurement]);\n }\n return { [mainSide]: value };\n }\n };\n order.forEach((placement) => {\n const side = ['left', 'top', 'start'].indexOf(placement) !== -1 ? check['primary'] : check['secondary'];\n data.offsets.target = Object.assign(Object.assign({}, data.offsets.target), side(placement));\n });\n return data;\n}\n\nfunction shift(data) {\n var _a;\n const placement = data.placement;\n const basePlacement = placement.split(' ')[0];\n const shiftVariation = placement.split(' ')[1];\n if (shiftVariation) {\n const { host, target } = 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: { [side]: host[side] },\n end: {\n [side]: ((_a = host[side]) !== null && _a !== void 0 ? _a : 0) + host[measurement] - target[measurement]\n }\n };\n data.offsets.target = Object.assign(Object.assign({}, target), {\n [side]: (side === shiftVariation ? shiftOffsets.start[side] : shiftOffsets.end[side])\n });\n }\n return data;\n}\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}\n\nclass 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', { passive: true }), fromEvent(window, 'resize', { passive: true }), 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}\nPositioningService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PositioningService, deps: [{ token: i0.NgZone }, { token: i0.RendererFactory2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPositioningService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PositioningService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: PositioningService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }];\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 && element !== void 0 ? 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 } from '@angular/core';\nimport { listenToTriggersV2, registerOutsideClick, registerEscClick } from 'ngx-bootstrap/utils';\nimport * as i1 from 'ngx-bootstrap/positioning';\n\nclass BsComponentRef {\n}\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\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) {\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.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\n .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 document !== 'undefined') {\n const selectedElement = document.querySelector(this.container) ||\n document.querySelector(this.containerDefaultSelector);\n if (!selectedElement) {\n return;\n }\n selectedElement.appendChild(this._componentRef.location.nativeElement);\n }\n if (!this.container &&\n this._elementRef &&\n 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 ? { id: opts.id } : this._componentRef.instance);\n }\n this._registerOutsideClick();\n return this._componentRef;\n }\n hide(id) {\n var _a, _b, _c, _d, _e, _f;\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 (_a = componentEl.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(componentEl);\n (_c = (_b = this._contentRef) === null || _b === void 0 ? void 0 : _b.componentRef) === null || _c === void 0 ? void 0 : _c.destroy();\n if (this._viewContainerRef && ((_d = this._contentRef) === null || _d === void 0 ? void 0 : _d.viewRef)) {\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._contentRef.viewRef));\n }\n (_f = (_e = this._contentRef) === null || _e === void 0 ? void 0 : _e.viewRef) === null || _f === void 0 ? void 0 : _f.destroy();\n this._contentRef = void 0;\n this._componentRef = void 0;\n this._removeGlobalListener();\n this.onHidden.emit(id ? { id } : 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 var _a;\n this.triggers = listenOpts.triggers || this.triggers;\n this._listenOpts.outsideClick = listenOpts.outsideClick;\n this._listenOpts.outsideEsc = listenOpts.outsideEsc;\n listenOpts.target = listenOpts.target || ((_a = this._elementRef) === null || _a === void 0 ? void 0 : _a.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 // 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 this._globalListener = 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 this._globalListener = 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 }\n getInnerComponent() {\n return this._innerComponent;\n }\n _subscribePositioning() {\n if (this._zoneSubscription || !this.attachment) {\n return;\n }\n this.onShown.subscribe(() => {\n var _a;\n this._posService.position({\n element: (_a = this._componentRef) === null || _a === void 0 ? void 0 : _a.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\n .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 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\n ? [this._renderer.createText(`${content}`)]\n : [];\n return new ContentRef([nodes]);\n }\n}\n\nclass ComponentLoaderFactory {\n constructor(_componentFactoryResolver, _ngZone, _injector, _posService, _applicationRef) {\n this._componentFactoryResolver = _componentFactoryResolver;\n this._ngZone = _ngZone;\n this._injector = _injector;\n this._posService = _posService;\n this._applicationRef = _applicationRef;\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);\n }\n}\nComponentLoaderFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ComponentLoaderFactory, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.NgZone }, { token: i0.Injector }, { token: i1.PositioningService }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });\nComponentLoaderFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ComponentLoaderFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ComponentLoaderFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.NgZone }, { type: i0.Injector }, { type: i1.PositioningService }, { type: i0.ApplicationRef }]; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BsComponentRef, ComponentLoader, ComponentLoaderFactory, ContentRef };\n","import * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Component, HostListener, EventEmitter, Directive, Optional, Inject, Input, Output, NgModule } from '@angular/core';\nimport { isBs3, Utils, document as document$1, window as window$1 } from 'ngx-bootstrap/utils';\nimport * as i2 from 'ngx-bootstrap/focus-trap';\nimport { FocusTrapModule } from 'ngx-bootstrap/focus-trap';\nimport * as i1 from 'ngx-bootstrap/component-loader';\nimport { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';\nimport { PositioningService } from 'ngx-bootstrap/positioning';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nclass 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}\nBsModalRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nBsModalRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalRef, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalRef, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }] });\n\nclass ModalBackdropOptions {\n constructor(options) {\n this.animate = true;\n Object.assign(this, options);\n }\n}\n\nclass ModalOptions {\n}\nModalOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nModalOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalOptions, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalOptions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\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' // bs4\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\nclass ModalContainerComponent {\n constructor(options, _element, _renderer) {\n this._element = _element;\n this._renderer = _renderer;\n this.isShown = false;\n this.isAnimated = false;\n this.isModalHiding = false;\n this.clickStartedInContent = false;\n this.config = Object.assign({}, options);\n }\n ngOnInit() {\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, isBs3() ? CLASS_NAME.IN : 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 var _a;\n const clickedInBackdrop = event.target === this._element.nativeElement && !this.clickStartedInContent;\n if (this.config.ignoreBackdropClick ||\n this.config.backdrop === 'static' ||\n !clickedInBackdrop) {\n this.clickStartedInContent = false;\n return;\n }\n (_a = this.bsModalService) === null || _a === void 0 ? void 0 : _a.setDismissReason(DISMISS_REASONS.BACKRDOP);\n this.hide();\n }\n onPopState() {\n var _a;\n (_a = this.bsModalService) === null || _a === void 0 ? void 0 : _a.setDismissReason(DISMISS_REASONS.BACK);\n this.hide();\n }\n onEsc(event) {\n var _a, _b;\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.level === ((_a = this.bsModalService) === null || _a === void 0 ? void 0 : _a.getModalsCount())) {\n (_b = this.bsModalService) === null || _b === void 0 ? void 0 : _b.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 || !this.isShown) {\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, isBs3() ? CLASS_NAME.IN : CLASS_NAME.SHOW);\n setTimeout(() => {\n var _a, _b;\n this.isShown = false;\n if (document &&\n document.body &&\n ((_a = this.bsModalService) === null || _a === void 0 ? void 0 : _a.getModalsCount()) === 1) {\n this._renderer.removeClass(document.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document.body, 'overflow-y', '');\n }\n (_b = this.bsModalService) === null || _b === void 0 ? void 0 : _b.hide(this.config.id);\n this.isModalHiding = false;\n }, this.isAnimated ? TRANSITION_DURATIONS.MODAL : 0);\n }\n}\nModalContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalContainerComponent, deps: [{ token: ModalOptions }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nModalContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: ModalContainerComponent, selector: \"modal-container\", host: { attributes: { \"role\": \"dialog\", \"tabindex\": \"-1\" }, listeners: { \"mousedown\": \"onClickStarted($event)\", \"click\": \"onClickStop($event)\", \"window:popstate\": \"onPopState()\", \"window:keydown.esc\": \"onEsc($event)\" }, properties: { \"attr.aria-modal\": \"true\", \"attr.aria-labelledby\": \"config.ariaLabelledBy\", \"attr.aria-describedby\": \"config.ariaDescribedby\" }, classAttribute: \"modal\" }, ngImport: i0, template: `\n
\n
\n \n
\n
\n `, isInline: true, directives: [{ type: i2.FocusTrapDirective, selector: \"[focusTrap]\", inputs: [\"cdkTrapFocus\", \"cdkTrapFocusAutoCapture\"], exportAs: [\"focusTrap\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'modal-container',\n template: `\n
\n
\n \n
\n
\n `,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n class: 'modal',\n role: 'dialog',\n tabindex: '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'config.ariaLabelledBy',\n '[attr.aria-describedby]': 'config.ariaDescribedby'\n }\n }]\n }], ctorParameters: function () { return [{ type: ModalOptions }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { onClickStarted: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], onClickStop: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], onPopState: [{\n type: HostListener,\n args: ['window:popstate']\n }], onEsc: [{\n type: HostListener,\n args: ['window:keydown.esc', ['$event']]\n }] } });\n\n/** This component will be added as background layout for modals if enabled */\nclass ModalBackdropComponent {\n constructor(element, renderer) {\n this._isAnimated = false;\n this._isShown = false;\n this.element = element;\n this.renderer = renderer;\n }\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.IN}`);\n }\n else {\n this.renderer.removeClass(this.element.nativeElement, `${CLASS_NAME.IN}`);\n }\n if (!isBs3()) {\n if (value) {\n this.renderer.addClass(this.element.nativeElement, `${CLASS_NAME.SHOW}`);\n }\n else {\n this.renderer.removeClass(this.element.nativeElement, `${CLASS_NAME.SHOW}`);\n }\n }\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}\nModalBackdropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalBackdropComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });\nModalBackdropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.1.1\", type: ModalBackdropComponent, selector: \"bs-modal-backdrop\", host: { classAttribute: \"modal-backdrop\" }, ngImport: i0, template: ' ', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalBackdropComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'bs-modal-backdrop',\n template: ' ',\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: { class: CLASS_NAME.BACKDROP }\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; } });\n\n// todo: should we support enforce focus in?\nconst TRANSITION_DURATION = 300;\nconst BACKDROP_TRANSITION_DURATION = 150;\n/** Mark any code with directive to show it's content in modal */\nclass ModalDirective {\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._backdrop = clf.createLoader(_element, _viewContainerRef, _renderer);\n this._config = modalDefaultOption || modalConfigDefaults;\n }\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 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 ||\n this.config.backdrop === 'static' ||\n !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$1 && document$1.body) {\n if (document$1.body.classList.contains(CLASS_NAME.OPEN)) {\n this.isNested = true;\n }\n else {\n this._renderer.addClass(document$1.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document$1.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.IN);\n if (!isBs3()) {\n this._renderer.removeClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }\n // this._addClassIn = false;\n if (this._config.animated) {\n this.timerHideModal = window$1.setTimeout(() => this.hideModal(), TRANSITION_DURATION);\n }\n else {\n this.hideModal();\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 ||\n this._element.nativeElement.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // don't move modals dom position\n if (document$1 && document$1.body) {\n document$1.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._addClassIn = true;\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.IN);\n if (!isBs3()) {\n this._renderer.addClass(this._element.nativeElement, CLASS_NAME.SHOW);\n }\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 }\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$1 && document$1.body) {\n this._renderer.removeClass(document$1.body, CLASS_NAME.OPEN);\n this._renderer.setStyle(document$1.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 &&\n this.config.backdrop &&\n (!this.backdrop || !this.backdrop.instance.isShown)) {\n this.removeBackdrop();\n this._backdrop\n .attach(ModalBackdropComponent)\n .to('body')\n .show({ isAnimated: this._config.animated });\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 }\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 }\n else {\n callbackRemove();\n }\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$1.body.clientWidth < window$1.innerWidth;\n this.scrollbarWidth = this.getScrollbarWidth();\n }\n setScrollbar() {\n if (!document$1) {\n return;\n }\n this.originalBodyPadding = parseInt(window$1\n .getComputedStyle(document$1.body)\n .getPropertyValue('padding-right') || 0, 10);\n if (this.isBodyOverflowing) {\n document$1.body.style.paddingRight = `${this.originalBodyPadding +\n this.scrollbarWidth}px`;\n }\n }\n resetScrollbar() {\n document$1.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$1.body, scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n this._renderer.removeChild(document$1.body, scrollDiv);\n return scrollbarWidth;\n }\n}\nModalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }, { token: i1.ComponentLoaderFactory }, { token: MODAL_CONFIG_DEFAULT_OVERRIDE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nModalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.1.1\", type: ModalDirective, selector: \"[bsModal]\", inputs: { config: \"config\", closeInterceptor: \"closeInterceptor\" }, outputs: { onShow: \"onShow\", onShown: \"onShown\", onHide: \"onHide\", onHidden: \"onHidden\" }, host: { listeners: { \"mousedown\": \"onClickStarted($event)\", \"mouseup\": \"onClickStop($event)\", \"keydown.esc\": \"onEsc($event)\" } }, exportAs: [\"bs-modal\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[bsModal]',\n exportAs: 'bs-modal'\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }, { type: i1.ComponentLoaderFactory }, { type: ModalOptions, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MODAL_CONFIG_DEFAULT_OVERRIDE]\n }] }];\n }, propDecorators: { config: [{\n type: Input\n }], closeInterceptor: [{\n type: Input\n }], onShow: [{\n type: Output\n }], onShown: [{\n type: Output\n }], onHide: [{\n type: Output\n }], onHidden: [{\n type: Output\n }], onClickStarted: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], onClickStop: [{\n type: HostListener,\n args: ['mouseup', ['$event']]\n }], onEsc: [{\n type: HostListener,\n args: ['keydown.esc', ['$event']]\n }] } });\n\nlet currentId = 1;\nclass 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.loaders = [];\n this._backdropLoader = this.clf.createLoader();\n this._renderer = rendererFactory.createRenderer(null, null);\n this.config = modalDefaultOption ?\n (Object.assign({}, modalConfigDefaults, modalDefaultOption)) :\n modalConfigDefaults;\n }\n /** Shows a modal */\n show(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n content, config) {\n this.modalsCount++;\n this._createLoaders();\n // must be different per every show() call\n const id = (config === null || config === void 0 ? void 0 : config.id) || currentId++;\n this.config = this.modalDefaultOption ?\n Object.assign({}, modalConfigDefaults, this.modalDefaultOption, config) :\n 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.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 }\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\n .attach(ModalBackdropComponent)\n .to('body')\n .show({ isAnimated: this.config.animated });\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 var _a;\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\n .provide({ provide: ModalOptions, useValue: this.config })\n .provide({ provide: BsModalRef, useValue: bsModalRef })\n .attach(ModalContainerComponent)\n .to('body');\n bsModalRef.hide = () => { var _a; return (_a = modalContainerRef.instance) === null || _a === void 0 ? void 0 : _a.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 = (_a = modalContainerRef.instance.config) === null || _a === void 0 ? void 0 : _a.id;\n }\n return bsModalRef;\n }\n _hideModal(id) {\n if (id != null) {\n const indexToRemove = this.loaders.findIndex(loader => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });\n const modalLoader = this.loaders[indexToRemove];\n if (modalLoader) {\n modalLoader.hide(id);\n }\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\n .getComputedStyle(document.body)\n .getPropertyValue('padding-right') || '0', 10);\n if (this.isBodyOverflowing) {\n document.body.style.paddingRight = `${this.originalBodyPadding +\n 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 => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.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 }\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}\nBsModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalService, deps: [{ token: i0.RendererFactory2 }, { token: i1.ComponentLoaderFactory }, { token: MODAL_CONFIG_DEFAULT_OVERRIDE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nBsModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalService, providedIn: 'platform' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: BsModalService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'platform' }]\n }], ctorParameters: function () {\n return [{ type: i0.RendererFactory2 }, { type: i1.ComponentLoaderFactory }, { type: ModalOptions, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MODAL_CONFIG_DEFAULT_OVERRIDE]\n }] }];\n } });\n\nconst focusTrapModule = FocusTrapModule.forRoot();\nclass ModalModule {\n static forRoot() {\n return {\n ngModule: ModalModule,\n providers: [BsModalService, ComponentLoaderFactory, PositioningService]\n };\n }\n static forChild() {\n return {\n ngModule: ModalModule,\n providers: [BsModalService, ComponentLoaderFactory, PositioningService]\n };\n }\n}\nModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalModule, declarations: [ModalBackdropComponent,\n ModalDirective,\n ModalContainerComponent], imports: [FocusTrapModule], exports: [ModalBackdropComponent, ModalDirective] });\nModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalModule, imports: [[FocusTrapModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: ModalModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [FocusTrapModule],\n declarations: [\n ModalBackdropComponent,\n ModalDirective,\n ModalContainerComponent\n ],\n exports: [ModalBackdropComponent, ModalDirective],\n entryComponents: [ModalBackdropComponent, ModalContainerComponent]\n }]\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"]}