Index: trip-planner-front/node_modules/.cache/babel-webpack/1ce9b5548c86cd5bd8d1ac64274eb9b3.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/1ce9b5548c86cd5bd8d1ac64274eb9b3.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/1ce9b5548c86cd5bd8d1ac64274eb9b3.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { ZIndexUtils, UniqueComponentId } from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { trigger, transition, style, animate } from '@angular/animations';\nconst _c0 = [\"mask\"];\n\nconst _c1 = function (a0, a1) {\n  return {\n    showTransitionParams: a0,\n    hideTransitionParams: a1\n  };\n};\n\nconst _c2 = function (a1) {\n  return {\n    value: \"visible\",\n    params: a1\n  };\n};\n\nfunction Galleria_div_0_div_1_p_galleriaContent_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r7 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"p-galleriaContent\", 6);\n    i0.ɵɵlistener(\"@animation.start\", function Galleria_div_0_div_1_p_galleriaContent_2_Template_p_galleriaContent_animation_animation_start_0_listener($event) {\n      i0.ɵɵrestoreView(_r7);\n      const ctx_r6 = i0.ɵɵnextContext(3);\n      return ctx_r6.onAnimationStart($event);\n    })(\"@animation.done\", function Galleria_div_0_div_1_p_galleriaContent_2_Template_p_galleriaContent_animation_animation_done_0_listener($event) {\n      i0.ɵɵrestoreView(_r7);\n      const ctx_r8 = i0.ɵɵnextContext(3);\n      return ctx_r8.onAnimationEnd($event);\n    })(\"maskHide\", function Galleria_div_0_div_1_p_galleriaContent_2_Template_p_galleriaContent_maskHide_0_listener() {\n      i0.ɵɵrestoreView(_r7);\n      const ctx_r9 = i0.ɵɵnextContext(3);\n      return ctx_r9.onMaskHide();\n    })(\"activeItemChange\", function Galleria_div_0_div_1_p_galleriaContent_2_Template_p_galleriaContent_activeItemChange_0_listener($event) {\n      i0.ɵɵrestoreView(_r7);\n      const ctx_r10 = i0.ɵɵnextContext(3);\n      return ctx_r10.onActiveItemChange($event);\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r5 = i0.ɵɵnextContext(3);\n    i0.ɵɵproperty(\"@animation\", i0.ɵɵpureFunction1(8, _c2, i0.ɵɵpureFunction2(5, _c1, ctx_r5.showTransitionOptions, ctx_r5.hideTransitionOptions)))(\"value\", ctx_r5.value)(\"activeIndex\", ctx_r5.activeIndex)(\"numVisible\", ctx_r5.numVisible)(\"ngStyle\", ctx_r5.containerStyle);\n  }\n}\n\nconst _c3 = function (a1) {\n  return {\n    \"p-galleria-mask p-component-overlay p-component-overlay-enter\": true,\n    \"p-galleria-visible\": a1\n  };\n};\n\nfunction Galleria_div_0_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 3, 4);\n    i0.ɵɵtemplate(2, Galleria_div_0_div_1_p_galleriaContent_2_Template, 1, 10, \"p-galleriaContent\", 5);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext(2);\n    i0.ɵɵclassMap(ctx_r3.maskClass);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(4, _c3, ctx_r3.visible));\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngIf\", ctx_r3.visible);\n  }\n}\n\nfunction Galleria_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\");\n    i0.ɵɵtemplate(1, Galleria_div_0_div_1_Template, 3, 6, \"div\", 2);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.maskVisible);\n  }\n}\n\nfunction Galleria_ng_template_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r12 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"p-galleriaContent\", 7);\n    i0.ɵɵlistener(\"activeItemChange\", function Galleria_ng_template_1_Template_p_galleriaContent_activeItemChange_0_listener($event) {\n      i0.ɵɵrestoreView(_r12);\n      const ctx_r11 = i0.ɵɵnextContext();\n      return ctx_r11.onActiveItemChange($event);\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r2 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"value\", ctx_r2.value)(\"activeIndex\", ctx_r2.activeIndex)(\"numVisible\", ctx_r2.numVisible);\n  }\n}\n\nfunction GalleriaContent_div_0_button_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r6 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 8);\n    i0.ɵɵlistener(\"click\", function GalleriaContent_div_0_button_1_Template_button_click_0_listener() {\n      i0.ɵɵrestoreView(_r6);\n      const ctx_r5 = i0.ɵɵnextContext(2);\n      return ctx_r5.maskHide.emit();\n    });\n    i0.ɵɵelement(1, \"span\", 9);\n    i0.ɵɵelementEnd();\n  }\n}\n\nfunction GalleriaContent_div_0_div_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 10);\n    i0.ɵɵelement(1, \"p-galleriaItemSlot\", 11);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r2 = i0.ɵɵnextContext(2);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"templates\", ctx_r2.galleria.templates);\n  }\n}\n\nfunction GalleriaContent_div_0_p_galleriaThumbnails_5_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r8 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"p-galleriaThumbnails\", 12);\n    i0.ɵɵlistener(\"onActiveIndexChange\", function GalleriaContent_div_0_p_galleriaThumbnails_5_Template_p_galleriaThumbnails_onActiveIndexChange_0_listener($event) {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r7 = i0.ɵɵnextContext(2);\n      return ctx_r7.onActiveIndexChange($event);\n    })(\"stopSlideShow\", function GalleriaContent_div_0_p_galleriaThumbnails_5_Template_p_galleriaThumbnails_stopSlideShow_0_listener() {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r9 = i0.ɵɵnextContext(2);\n      return ctx_r9.stopSlideShow();\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext(2);\n    i0.ɵɵproperty(\"containerId\", ctx_r3.id)(\"value\", ctx_r3.value)(\"activeIndex\", ctx_r3.activeIndex)(\"templates\", ctx_r3.galleria.templates)(\"numVisible\", ctx_r3.numVisible)(\"responsiveOptions\", ctx_r3.galleria.responsiveOptions)(\"circular\", ctx_r3.galleria.circular)(\"isVertical\", ctx_r3.isVertical())(\"contentHeight\", ctx_r3.galleria.verticalThumbnailViewPortHeight)(\"showThumbnailNavigators\", ctx_r3.galleria.showThumbnailNavigators)(\"slideShowActive\", ctx_r3.slideShowActive);\n  }\n}\n\nfunction GalleriaContent_div_0_div_6_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 13);\n    i0.ɵɵelement(1, \"p-galleriaItemSlot\", 14);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r4 = i0.ɵɵnextContext(2);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"templates\", ctx_r4.galleria.templates);\n  }\n}\n\nconst _c4 = function (a1, a2, a3) {\n  return {\n    \"p-galleria p-component\": true,\n    \"p-galleria-fullscreen\": a1,\n    \"p-galleria-indicator-onitem\": a2,\n    \"p-galleria-item-nav-onhover\": a3\n  };\n};\n\nconst _c5 = function () {\n  return {};\n};\n\nfunction GalleriaContent_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r11 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"div\", 1);\n    i0.ɵɵtemplate(1, GalleriaContent_div_0_button_1_Template, 2, 0, \"button\", 2);\n    i0.ɵɵtemplate(2, GalleriaContent_div_0_div_2_Template, 2, 1, \"div\", 3);\n    i0.ɵɵelementStart(3, \"div\", 4);\n    i0.ɵɵelementStart(4, \"p-galleriaItem\", 5);\n    i0.ɵɵlistener(\"onActiveIndexChange\", function GalleriaContent_div_0_Template_p_galleriaItem_onActiveIndexChange_4_listener($event) {\n      i0.ɵɵrestoreView(_r11);\n      const ctx_r10 = i0.ɵɵnextContext();\n      return ctx_r10.onActiveIndexChange($event);\n    })(\"startSlideShow\", function GalleriaContent_div_0_Template_p_galleriaItem_startSlideShow_4_listener() {\n      i0.ɵɵrestoreView(_r11);\n      const ctx_r12 = i0.ɵɵnextContext();\n      return ctx_r12.startSlideShow();\n    })(\"stopSlideShow\", function GalleriaContent_div_0_Template_p_galleriaItem_stopSlideShow_4_listener() {\n      i0.ɵɵrestoreView(_r11);\n      const ctx_r13 = i0.ɵɵnextContext();\n      return ctx_r13.stopSlideShow();\n    });\n    i0.ɵɵelementEnd();\n    i0.ɵɵtemplate(5, GalleriaContent_div_0_p_galleriaThumbnails_5_Template, 1, 11, \"p-galleriaThumbnails\", 6);\n    i0.ɵɵelementEnd();\n    i0.ɵɵtemplate(6, GalleriaContent_div_0_div_6_Template, 2, 1, \"div\", 7);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵclassMap(ctx_r0.galleriaClass());\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction3(20, _c4, ctx_r0.galleria.fullScreen, ctx_r0.galleria.showIndicatorsOnItem, ctx_r0.galleria.showItemNavigatorsOnHover && !ctx_r0.galleria.fullScreen))(\"ngStyle\", !ctx_r0.galleria.fullScreen ? ctx_r0.galleria.containerStyle : i0.ɵɵpureFunction0(24, _c5));\n    i0.ɵɵattribute(\"id\", ctx_r0.id);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.galleria.fullScreen);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.galleria.templates && ctx_r0.galleria.headerFacet);\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"value\", ctx_r0.value)(\"activeIndex\", ctx_r0.activeIndex)(\"circular\", ctx_r0.galleria.circular)(\"templates\", ctx_r0.galleria.templates)(\"showIndicators\", ctx_r0.galleria.showIndicators)(\"changeItemOnIndicatorHover\", ctx_r0.galleria.changeItemOnIndicatorHover)(\"indicatorFacet\", ctx_r0.galleria.indicatorFacet)(\"captionFacet\", ctx_r0.galleria.captionFacet)(\"showItemNavigators\", ctx_r0.galleria.showItemNavigators)(\"autoPlay\", ctx_r0.galleria.autoPlay)(\"slideShowActive\", ctx_r0.slideShowActive);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.galleria.showThumbnails);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.galleria.templates && ctx_r0.galleria.footerFacet);\n  }\n}\n\nfunction GalleriaItemSlot_ng_container_0_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction GalleriaItemSlot_ng_container_0_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, GalleriaItemSlot_ng_container_0_ng_container_1_Template, 1, 0, \"ng-container\", 1);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.contentTemplate)(\"ngTemplateOutletContext\", ctx_r0.context);\n  }\n}\n\nconst _c6 = function (a1) {\n  return {\n    \"p-galleria-item-prev p-galleria-item-nav p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nfunction GalleriaItem_button_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r5 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 6);\n    i0.ɵɵlistener(\"click\", function GalleriaItem_button_2_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r4 = i0.ɵɵnextContext();\n      return ctx_r4.navBackward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 7);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(2, _c6, ctx_r0.isNavBackwardDisabled()))(\"disabled\", ctx_r0.isNavBackwardDisabled());\n  }\n}\n\nconst _c7 = function (a1) {\n  return {\n    \"p-galleria-item-next p-galleria-item-nav p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nfunction GalleriaItem_button_4_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r7 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 6);\n    i0.ɵɵlistener(\"click\", function GalleriaItem_button_4_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r7);\n      const ctx_r6 = i0.ɵɵnextContext();\n      return ctx_r6.navForward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 8);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(2, _c7, ctx_r1.isNavForwardDisabled()))(\"disabled\", ctx_r1.isNavForwardDisabled());\n  }\n}\n\nfunction GalleriaItem_div_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 9);\n    i0.ɵɵelement(1, \"p-galleriaItemSlot\", 10);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r2 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"item\", ctx_r2.activeItem)(\"templates\", ctx_r2.templates);\n  }\n}\n\nfunction GalleriaItem_ul_6_li_1_button_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"button\", 16);\n  }\n}\n\nconst _c8 = function (a1) {\n  return {\n    \"p-galleria-indicator\": true,\n    \"p-highlight\": a1\n  };\n};\n\nfunction GalleriaItem_ul_6_li_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r13 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"li\", 13);\n    i0.ɵɵlistener(\"click\", function GalleriaItem_ul_6_li_1_Template_li_click_0_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r13);\n      const index_r10 = restoredCtx.index;\n      const ctx_r12 = i0.ɵɵnextContext(2);\n      return ctx_r12.onIndicatorClick(index_r10);\n    })(\"mouseenter\", function GalleriaItem_ul_6_li_1_Template_li_mouseenter_0_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r13);\n      const index_r10 = restoredCtx.index;\n      const ctx_r14 = i0.ɵɵnextContext(2);\n      return ctx_r14.onIndicatorMouseEnter(index_r10);\n    })(\"keydown.enter\", function GalleriaItem_ul_6_li_1_Template_li_keydown_enter_0_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r13);\n      const index_r10 = restoredCtx.index;\n      const ctx_r15 = i0.ɵɵnextContext(2);\n      return ctx_r15.onIndicatorKeyDown(index_r10);\n    });\n    i0.ɵɵtemplate(1, GalleriaItem_ul_6_li_1_button_1_Template, 1, 0, \"button\", 14);\n    i0.ɵɵelement(2, \"p-galleriaItemSlot\", 15);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const index_r10 = ctx.index;\n    const ctx_r8 = i0.ɵɵnextContext(2);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(4, _c8, ctx_r8.isIndicatorItemActive(index_r10)));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !ctx_r8.indicatorFacet);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"index\", index_r10)(\"templates\", ctx_r8.templates);\n  }\n}\n\nfunction GalleriaItem_ul_6_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"ul\", 11);\n    i0.ɵɵtemplate(1, GalleriaItem_ul_6_li_1_Template, 3, 6, \"li\", 12);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngForOf\", ctx_r3.value);\n  }\n}\n\nconst _c9 = [\"itemsContainer\"];\n\nconst _c10 = function (a1) {\n  return {\n    \"p-galleria-thumbnail-prev p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nconst _c11 = function (a1, a2) {\n  return {\n    \"p-galleria-thumbnail-prev-icon pi\": true,\n    \"pi-chevron-left\": a1,\n    \"pi-chevron-up\": a2\n  };\n};\n\nfunction GalleriaThumbnails_button_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r5 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 7);\n    i0.ɵɵlistener(\"click\", function GalleriaThumbnails_button_2_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r4 = i0.ɵɵnextContext();\n      return ctx_r4.navBackward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 8);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(3, _c10, ctx_r0.isNavBackwardDisabled()))(\"disabled\", ctx_r0.isNavBackwardDisabled());\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(5, _c11, !ctx_r0.isVertical, ctx_r0.isVertical));\n  }\n}\n\nconst _c12 = function (a1, a2, a3, a4) {\n  return {\n    \"p-galleria-thumbnail-item\": true,\n    \"p-galleria-thumbnail-item-current\": a1,\n    \"p-galleria-thumbnail-item-active\": a2,\n    \"p-galleria-thumbnail-item-start\": a3,\n    \"p-galleria-thumbnail-item-end\": a4\n  };\n};\n\nfunction GalleriaThumbnails_div_6_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r9 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"div\", 8);\n    i0.ɵɵelementStart(1, \"div\", 9);\n    i0.ɵɵlistener(\"click\", function GalleriaThumbnails_div_6_Template_div_click_1_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r9);\n      const index_r7 = restoredCtx.index;\n      const ctx_r8 = i0.ɵɵnextContext();\n      return ctx_r8.onItemClick(index_r7);\n    })(\"keydown.enter\", function GalleriaThumbnails_div_6_Template_div_keydown_enter_1_listener() {\n      const restoredCtx = i0.ɵɵrestoreView(_r9);\n      const index_r7 = restoredCtx.index;\n      const ctx_r10 = i0.ɵɵnextContext();\n      return ctx_r10.onItemClick(index_r7);\n    });\n    i0.ɵɵelement(2, \"p-galleriaItemSlot\", 10);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const item_r6 = ctx.$implicit;\n    const index_r7 = ctx.index;\n    const ctx_r2 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction4(4, _c12, ctx_r2.activeIndex === index_r7, ctx_r2.isItemActive(index_r7), ctx_r2.firstItemAciveIndex() === index_r7, ctx_r2.lastItemActiveIndex() === index_r7));\n    i0.ɵɵadvance(1);\n    i0.ɵɵattribute(\"tabindex\", ctx_r2.getTabIndex(index_r7));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"item\", item_r6)(\"templates\", ctx_r2.templates);\n  }\n}\n\nconst _c13 = function (a1) {\n  return {\n    \"p-galleria-thumbnail-next p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nconst _c14 = function (a1, a2) {\n  return {\n    \"p-galleria-thumbnail-next-icon pi\": true,\n    \"pi-chevron-right\": a1,\n    \"pi-chevron-down\": a2\n  };\n};\n\nfunction GalleriaThumbnails_button_7_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r12 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 7);\n    i0.ɵɵlistener(\"click\", function GalleriaThumbnails_button_7_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r12);\n      const ctx_r11 = i0.ɵɵnextContext();\n      return ctx_r11.navForward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 8);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(3, _c13, ctx_r3.isNavForwardDisabled()))(\"disabled\", ctx_r3.isNavForwardDisabled());\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(5, _c14, !ctx_r3.isVertical, ctx_r3.isVertical));\n  }\n}\n\nconst _c15 = function (a0) {\n  return {\n    \"height\": a0\n  };\n};\n\nclass Galleria {\n  constructor(element, cd, config) {\n    this.element = element;\n    this.cd = cd;\n    this.config = config;\n    this.fullScreen = false;\n    this.numVisible = 3;\n    this.showItemNavigators = false;\n    this.showThumbnailNavigators = true;\n    this.showItemNavigatorsOnHover = false;\n    this.changeItemOnIndicatorHover = false;\n    this.circular = false;\n    this.autoPlay = false;\n    this.transitionInterval = 4000;\n    this.showThumbnails = true;\n    this.thumbnailsPosition = \"bottom\";\n    this.verticalThumbnailViewPortHeight = \"300px\";\n    this.showIndicators = false;\n    this.showIndicatorsOnItem = false;\n    this.indicatorsPosition = \"bottom\";\n    this.baseZIndex = 0;\n    this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n    this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n    this.activeIndexChange = new EventEmitter();\n    this.visibleChange = new EventEmitter();\n    this._visible = false;\n    this._activeIndex = 0;\n    this.maskVisible = false;\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(activeIndex) {\n    this._activeIndex = activeIndex;\n  }\n\n  get visible() {\n    return this._visible;\n  }\n\n  set visible(visible) {\n    this._visible = visible;\n\n    if (this._visible && !this.maskVisible) {\n      this.maskVisible = true;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'header':\n          this.headerFacet = item.template;\n          break;\n\n        case 'footer':\n          this.footerFacet = item.template;\n          break;\n\n        case 'indicator':\n          this.indicatorFacet = item.template;\n          break;\n\n        case 'caption':\n          this.captionFacet = item.template;\n          break;\n      }\n    });\n  }\n\n  ngOnChanges(simpleChanges) {\n    if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {\n      this.numVisible = simpleChanges.value.currentValue.length;\n    }\n  }\n\n  onMaskHide() {\n    this.visible = false;\n    this.visibleChange.emit(false);\n  }\n\n  onActiveItemChange(index) {\n    if (this.activeIndex !== index) {\n      this.activeIndex = index;\n      this.activeIndexChange.emit(index);\n    }\n  }\n\n  onAnimationStart(event) {\n    switch (event.toState) {\n      case 'visible':\n        this.enableModality();\n        break;\n\n      case 'void':\n        DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');\n        break;\n    }\n  }\n\n  onAnimationEnd(event) {\n    switch (event.toState) {\n      case 'void':\n        this.disableModality();\n        break;\n    }\n  }\n\n  enableModality() {\n    DomHandler.addClass(document.body, 'p-overflow-hidden');\n    this.cd.markForCheck();\n\n    if (this.mask) {\n      ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n    }\n  }\n\n  disableModality() {\n    DomHandler.removeClass(document.body, 'p-overflow-hidden');\n    this.maskVisible = false;\n    this.cd.markForCheck();\n\n    if (this.mask) {\n      ZIndexUtils.clear(this.mask.nativeElement);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.fullScreen) {\n      DomHandler.removeClass(document.body, 'p-overflow-hidden');\n    }\n\n    if (this.mask) {\n      this.disableModality();\n    }\n  }\n\n}\n\nGalleria.ɵfac = function Galleria_Factory(t) {\n  return new (t || Galleria)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.PrimeNGConfig));\n};\n\nGalleria.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Galleria,\n  selectors: [[\"p-galleria\"]],\n  contentQueries: function Galleria_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  viewQuery: function Galleria_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.mask = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    activeIndex: \"activeIndex\",\n    fullScreen: \"fullScreen\",\n    id: \"id\",\n    value: \"value\",\n    numVisible: \"numVisible\",\n    responsiveOptions: \"responsiveOptions\",\n    showItemNavigators: \"showItemNavigators\",\n    showThumbnailNavigators: \"showThumbnailNavigators\",\n    showItemNavigatorsOnHover: \"showItemNavigatorsOnHover\",\n    changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\",\n    circular: \"circular\",\n    autoPlay: \"autoPlay\",\n    transitionInterval: \"transitionInterval\",\n    showThumbnails: \"showThumbnails\",\n    thumbnailsPosition: \"thumbnailsPosition\",\n    verticalThumbnailViewPortHeight: \"verticalThumbnailViewPortHeight\",\n    showIndicators: \"showIndicators\",\n    showIndicatorsOnItem: \"showIndicatorsOnItem\",\n    indicatorsPosition: \"indicatorsPosition\",\n    baseZIndex: \"baseZIndex\",\n    maskClass: \"maskClass\",\n    containerClass: \"containerClass\",\n    containerStyle: \"containerStyle\",\n    showTransitionOptions: \"showTransitionOptions\",\n    hideTransitionOptions: \"hideTransitionOptions\",\n    visible: \"visible\"\n  },\n  outputs: {\n    activeIndexChange: \"activeIndexChange\",\n    visibleChange: \"visibleChange\"\n  },\n  features: [i0.ɵɵNgOnChangesFeature],\n  decls: 3,\n  vars: 2,\n  consts: [[4, \"ngIf\", \"ngIfElse\"], [\"windowed\", \"\"], [3, \"ngClass\", \"class\", 4, \"ngIf\"], [3, \"ngClass\"], [\"mask\", \"\"], [3, \"value\", \"activeIndex\", \"numVisible\", \"ngStyle\", \"maskHide\", \"activeItemChange\", 4, \"ngIf\"], [3, \"value\", \"activeIndex\", \"numVisible\", \"ngStyle\", \"maskHide\", \"activeItemChange\"], [3, \"value\", \"activeIndex\", \"numVisible\", \"activeItemChange\"]],\n  template: function Galleria_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵtemplate(0, Galleria_div_0_Template, 2, 1, \"div\", 0);\n      i0.ɵɵtemplate(1, Galleria_ng_template_1_Template, 1, 3, \"ng-template\", null, 1, i0.ɵɵtemplateRefExtractor);\n    }\n\n    if (rf & 2) {\n      const _r1 = i0.ɵɵreference(2);\n\n      i0.ɵɵproperty(\"ngIf\", ctx.fullScreen)(\"ngIfElse\", _r1);\n    }\n  },\n  directives: function () {\n    return [i2.NgIf, i2.NgClass, GalleriaContent, i2.NgStyle];\n  },\n  styles: [\".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\\n\"],\n  encapsulation: 2,\n  data: {\n    animation: [trigger('animation', [transition('void => visible', [style({\n      transform: 'scale(0.7)',\n      opacity: 0\n    }), animate('{{showTransitionParams}}')]), transition('visible => void', [animate('{{hideTransitionParams}}', style({\n      transform: 'scale(0.7)',\n      opacity: 0\n    }))])])]\n  },\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Galleria, [{\n    type: Component,\n    args: [{\n      selector: 'p-galleria',\n      template: `\n        <div *ngIf=\"fullScreen;else windowed\">\n            <div *ngIf=\"maskVisible\" #mask [ngClass]=\"{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}\" [class]=\"maskClass\">\n                <p-galleriaContent *ngIf=\"visible\" [@animation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\"\n                    [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (maskHide)=\"onMaskHide()\" (activeItemChange)=\"onActiveItemChange($event)\" [ngStyle]=\"containerStyle\"></p-galleriaContent>\n            </div>\n        </div>\n\n        <ng-template #windowed>\n            <p-galleriaContent [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (activeItemChange)=\"onActiveItemChange($event)\"></p-galleriaContent>\n        </ng-template>\n    `,\n      animations: [trigger('animation', [transition('void => visible', [style({\n        transform: 'scale(0.7)',\n        opacity: 0\n      }), animate('{{showTransitionParams}}')]), transition('visible => void', [animate('{{hideTransitionParams}}', style({\n        transform: 'scale(0.7)',\n        opacity: 0\n      }))])])],\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.ChangeDetectorRef\n    }, {\n      type: i1.PrimeNGConfig\n    }];\n  }, {\n    activeIndex: [{\n      type: Input\n    }],\n    fullScreen: [{\n      type: Input\n    }],\n    id: [{\n      type: Input\n    }],\n    value: [{\n      type: Input\n    }],\n    numVisible: [{\n      type: Input\n    }],\n    responsiveOptions: [{\n      type: Input\n    }],\n    showItemNavigators: [{\n      type: Input\n    }],\n    showThumbnailNavigators: [{\n      type: Input\n    }],\n    showItemNavigatorsOnHover: [{\n      type: Input\n    }],\n    changeItemOnIndicatorHover: [{\n      type: Input\n    }],\n    circular: [{\n      type: Input\n    }],\n    autoPlay: [{\n      type: Input\n    }],\n    transitionInterval: [{\n      type: Input\n    }],\n    showThumbnails: [{\n      type: Input\n    }],\n    thumbnailsPosition: [{\n      type: Input\n    }],\n    verticalThumbnailViewPortHeight: [{\n      type: Input\n    }],\n    showIndicators: [{\n      type: Input\n    }],\n    showIndicatorsOnItem: [{\n      type: Input\n    }],\n    indicatorsPosition: [{\n      type: Input\n    }],\n    baseZIndex: [{\n      type: Input\n    }],\n    maskClass: [{\n      type: Input\n    }],\n    containerClass: [{\n      type: Input\n    }],\n    containerStyle: [{\n      type: Input\n    }],\n    showTransitionOptions: [{\n      type: Input\n    }],\n    hideTransitionOptions: [{\n      type: Input\n    }],\n    mask: [{\n      type: ViewChild,\n      args: ['mask']\n    }],\n    visible: [{\n      type: Input\n    }],\n    activeIndexChange: [{\n      type: Output\n    }],\n    visibleChange: [{\n      type: Output\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }]\n  });\n})();\n\nclass GalleriaContent {\n  constructor(galleria, cd) {\n    this.galleria = galleria;\n    this.cd = cd;\n    this.value = [];\n    this.maskHide = new EventEmitter();\n    this.activeItemChange = new EventEmitter();\n    this.id = this.galleria.id || UniqueComponentId();\n    this.slideShowActicve = false;\n    this._activeIndex = 0;\n    this.slideShowActive = true;\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(activeIndex) {\n    this._activeIndex = activeIndex;\n  }\n\n  galleriaClass() {\n    const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);\n    const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);\n    return (this.galleria.containerClass ? this.galleria.containerClass + \" \" : '') + (thumbnailsPosClass ? thumbnailsPosClass + \" \" : '') + (indicatorPosClass ? indicatorPosClass + \" \" : '');\n  }\n\n  startSlideShow() {\n    this.interval = setInterval(() => {\n      let activeIndex = this.galleria.circular && this.value.length - 1 === this.activeIndex ? 0 : this.activeIndex + 1;\n      this.onActiveIndexChange(activeIndex);\n      this.activeIndex = activeIndex;\n    }, this.galleria.transitionInterval);\n    this.slideShowActive = true;\n  }\n\n  stopSlideShow() {\n    if (this.interval) {\n      clearInterval(this.interval);\n    }\n\n    this.slideShowActive = false;\n  }\n\n  getPositionClass(preClassName, position) {\n    const positions = ['top', 'left', 'bottom', 'right'];\n    const pos = positions.find(item => item === position);\n    return pos ? `${preClassName}-${pos}` : '';\n  }\n\n  isVertical() {\n    return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';\n  }\n\n  onActiveIndexChange(index) {\n    if (this.activeIndex !== index) {\n      this.activeIndex = index;\n      this.activeItemChange.emit(this.activeIndex);\n    }\n  }\n\n}\n\nGalleriaContent.ɵfac = function GalleriaContent_Factory(t) {\n  return new (t || GalleriaContent)(i0.ɵɵdirectiveInject(Galleria), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nGalleriaContent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: GalleriaContent,\n  selectors: [[\"p-galleriaContent\"]],\n  inputs: {\n    activeIndex: \"activeIndex\",\n    value: \"value\",\n    numVisible: \"numVisible\"\n  },\n  outputs: {\n    maskHide: \"maskHide\",\n    activeItemChange: \"activeItemChange\"\n  },\n  decls: 1,\n  vars: 1,\n  consts: [[3, \"ngClass\", \"ngStyle\", \"class\", 4, \"ngIf\"], [3, \"ngClass\", \"ngStyle\"], [\"type\", \"button\", \"class\", \"p-galleria-close p-link\", \"pRipple\", \"\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"p-galleria-header\", 4, \"ngIf\"], [1, \"p-galleria-content\"], [3, \"value\", \"activeIndex\", \"circular\", \"templates\", \"showIndicators\", \"changeItemOnIndicatorHover\", \"indicatorFacet\", \"captionFacet\", \"showItemNavigators\", \"autoPlay\", \"slideShowActive\", \"onActiveIndexChange\", \"startSlideShow\", \"stopSlideShow\"], [3, \"containerId\", \"value\", \"activeIndex\", \"templates\", \"numVisible\", \"responsiveOptions\", \"circular\", \"isVertical\", \"contentHeight\", \"showThumbnailNavigators\", \"slideShowActive\", \"onActiveIndexChange\", \"stopSlideShow\", 4, \"ngIf\"], [\"class\", \"p-galleria-footer\", 4, \"ngIf\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-galleria-close\", \"p-link\", 3, \"click\"], [1, \"p-galleria-close-icon\", \"pi\", \"pi-times\"], [1, \"p-galleria-header\"], [\"type\", \"header\", 3, \"templates\"], [3, \"containerId\", \"value\", \"activeIndex\", \"templates\", \"numVisible\", \"responsiveOptions\", \"circular\", \"isVertical\", \"contentHeight\", \"showThumbnailNavigators\", \"slideShowActive\", \"onActiveIndexChange\", \"stopSlideShow\"], [1, \"p-galleria-footer\"], [\"type\", \"footer\", 3, \"templates\"]],\n  template: function GalleriaContent_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵtemplate(0, GalleriaContent_div_0_Template, 7, 25, \"div\", 0);\n    }\n\n    if (rf & 2) {\n      i0.ɵɵproperty(\"ngIf\", ctx.value && ctx.value.length > 0);\n    }\n  },\n  directives: function () {\n    return [i2.NgIf, i2.NgClass, i2.NgStyle, GalleriaItem, i3.Ripple, GalleriaItemSlot, GalleriaThumbnails];\n  },\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(GalleriaContent, [{\n    type: Component,\n    args: [{\n      selector: 'p-galleriaContent',\n      template: `\n        <div [attr.id]=\"id\" *ngIf=\"value && value.length > 0\" [ngClass]=\"{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,\n            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}\"\n            [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\" [class]=\"galleriaClass()\">\n            <button *ngIf=\"galleria.fullScreen\" type=\"button\" class=\"p-galleria-close p-link\" (click)=\"maskHide.emit()\" pRipple>\n                <span class=\"p-galleria-close-icon pi pi-times\"></span>\n            </button>\n            <div *ngIf=\"galleria.templates && galleria.headerFacet\" class=\"p-galleria-header\">\n                <p-galleriaItemSlot type=\"header\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n            <div class=\"p-galleria-content\">\n                <p-galleriaItem [value]=\"value\" [activeIndex]=\"activeIndex\" [circular]=\"galleria.circular\" [templates]=\"galleria.templates\" (onActiveIndexChange)=\"onActiveIndexChange($event)\"\n                    [showIndicators]=\"galleria.showIndicators\" [changeItemOnIndicatorHover]=\"galleria.changeItemOnIndicatorHover\" [indicatorFacet]=\"galleria.indicatorFacet\"\n                    [captionFacet]=\"galleria.captionFacet\" [showItemNavigators]=\"galleria.showItemNavigators\" [autoPlay]=\"galleria.autoPlay\" [slideShowActive]=\"slideShowActive\"\n                    (startSlideShow)=\"startSlideShow()\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaItem>\n\n                <p-galleriaThumbnails *ngIf=\"galleria.showThumbnails\" [containerId]=\"id\" [value]=\"value\" (onActiveIndexChange)=\"onActiveIndexChange($event)\" [activeIndex]=\"activeIndex\" [templates]=\"galleria.templates\"\n                    [numVisible]=\"numVisible\" [responsiveOptions]=\"galleria.responsiveOptions\" [circular]=\"galleria.circular\"\n                    [isVertical]=\"isVertical()\" [contentHeight]=\"galleria.verticalThumbnailViewPortHeight\" [showThumbnailNavigators]=\"galleria.showThumbnailNavigators\"\n                    [slideShowActive]=\"slideShowActive\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaThumbnails>\n            </div>\n            <div *ngIf=\"galleria.templates && galleria.footerFacet\" class=\"p-galleria-footer\">\n                <p-galleriaItemSlot type=\"footer\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n        </div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush\n    }]\n  }], function () {\n    return [{\n      type: Galleria\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    activeIndex: [{\n      type: Input\n    }],\n    value: [{\n      type: Input\n    }],\n    numVisible: [{\n      type: Input\n    }],\n    maskHide: [{\n      type: Output\n    }],\n    activeItemChange: [{\n      type: Output\n    }]\n  });\n})();\n\nclass GalleriaItemSlot {\n  get item() {\n    return this._item;\n  }\n\n  set item(item) {\n    this._item = item;\n\n    if (this.templates) {\n      this.templates.forEach(item => {\n        if (item.getType() === this.type) {\n          switch (this.type) {\n            case 'item':\n            case 'caption':\n            case 'thumbnail':\n              this.context = {\n                $implicit: this.item\n              };\n              this.contentTemplate = item.template;\n              break;\n          }\n        }\n      });\n    }\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      if (item.getType() === this.type) {\n        switch (this.type) {\n          case 'item':\n          case 'caption':\n          case 'thumbnail':\n            this.context = {\n              $implicit: this.item\n            };\n            this.contentTemplate = item.template;\n            break;\n\n          case 'indicator':\n            this.context = {\n              $implicit: this.index\n            };\n            this.contentTemplate = item.template;\n            break;\n\n          default:\n            this.context = {};\n            this.contentTemplate = item.template;\n            break;\n        }\n      }\n    });\n  }\n\n}\n\nGalleriaItemSlot.ɵfac = function GalleriaItemSlot_Factory(t) {\n  return new (t || GalleriaItemSlot)();\n};\n\nGalleriaItemSlot.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: GalleriaItemSlot,\n  selectors: [[\"p-galleriaItemSlot\"]],\n  inputs: {\n    templates: \"templates\",\n    index: \"index\",\n    item: \"item\",\n    type: \"type\"\n  },\n  decls: 1,\n  vars: 1,\n  consts: [[4, \"ngIf\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]],\n  template: function GalleriaItemSlot_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵtemplate(0, GalleriaItemSlot_ng_container_0_Template, 2, 2, \"ng-container\", 0);\n    }\n\n    if (rf & 2) {\n      i0.ɵɵproperty(\"ngIf\", ctx.contentTemplate);\n    }\n  },\n  directives: [i2.NgIf, i2.NgTemplateOutlet],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(GalleriaItemSlot, [{\n    type: Component,\n    args: [{\n      selector: 'p-galleriaItemSlot',\n      template: `\n        <ng-container *ngIf=\"contentTemplate\">\n            <ng-container *ngTemplateOutlet=\"contentTemplate; context: context\"></ng-container>\n        </ng-container>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush\n    }]\n  }], null, {\n    templates: [{\n      type: Input\n    }],\n    index: [{\n      type: Input\n    }],\n    item: [{\n      type: Input\n    }],\n    type: [{\n      type: Input\n    }]\n  });\n})();\n\nclass GalleriaItem {\n  constructor() {\n    this.circular = false;\n    this.showItemNavigators = false;\n    this.showIndicators = true;\n    this.slideShowActive = true;\n    this.changeItemOnIndicatorHover = true;\n    this.autoPlay = false;\n    this.startSlideShow = new EventEmitter();\n    this.stopSlideShow = new EventEmitter();\n    this.onActiveIndexChange = new EventEmitter();\n    this._activeIndex = 0;\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(activeIndex) {\n    this._activeIndex = activeIndex;\n    this.activeItem = this.value[this._activeIndex];\n  }\n\n  ngOnInit() {\n    if (this.autoPlay) {\n      this.startSlideShow.emit();\n    }\n  }\n\n  next() {\n    let nextItemIndex = this.activeIndex + 1;\n    let activeIndex = this.circular && this.value.length - 1 === this.activeIndex ? 0 : nextItemIndex;\n    this.onActiveIndexChange.emit(activeIndex);\n  }\n\n  prev() {\n    let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;\n    let activeIndex = this.circular && this.activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n    this.onActiveIndexChange.emit(activeIndex);\n  }\n\n  stopTheSlideShow() {\n    if (this.slideShowActive && this.stopSlideShow) {\n      this.stopSlideShow.emit();\n    }\n  }\n\n  navForward(e) {\n    this.stopTheSlideShow();\n    this.next();\n\n    if (e && e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  navBackward(e) {\n    this.stopTheSlideShow();\n    this.prev();\n\n    if (e && e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onIndicatorClick(index) {\n    this.stopTheSlideShow();\n    this.onActiveIndexChange.emit(index);\n  }\n\n  onIndicatorMouseEnter(index) {\n    if (this.changeItemOnIndicatorHover) {\n      this.stopTheSlideShow();\n      this.onActiveIndexChange.emit(index);\n    }\n  }\n\n  onIndicatorKeyDown(index) {\n    this.stopTheSlideShow();\n    this.onActiveIndexChange.emit(index);\n  }\n\n  isNavForwardDisabled() {\n    return !this.circular && this.activeIndex === this.value.length - 1;\n  }\n\n  isNavBackwardDisabled() {\n    return !this.circular && this.activeIndex === 0;\n  }\n\n  isIndicatorItemActive(index) {\n    return this.activeIndex === index;\n  }\n\n}\n\nGalleriaItem.ɵfac = function GalleriaItem_Factory(t) {\n  return new (t || GalleriaItem)();\n};\n\nGalleriaItem.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: GalleriaItem,\n  selectors: [[\"p-galleriaItem\"]],\n  inputs: {\n    circular: \"circular\",\n    value: \"value\",\n    showItemNavigators: \"showItemNavigators\",\n    showIndicators: \"showIndicators\",\n    slideShowActive: \"slideShowActive\",\n    changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\",\n    autoPlay: \"autoPlay\",\n    templates: \"templates\",\n    indicatorFacet: \"indicatorFacet\",\n    captionFacet: \"captionFacet\",\n    activeIndex: \"activeIndex\"\n  },\n  outputs: {\n    startSlideShow: \"startSlideShow\",\n    stopSlideShow: \"stopSlideShow\",\n    onActiveIndexChange: \"onActiveIndexChange\"\n  },\n  decls: 7,\n  vars: 6,\n  consts: [[1, \"p-galleria-item-wrapper\"], [1, \"p-galleria-item-container\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\", 4, \"ngIf\"], [\"type\", \"item\", 1, \"p-galleria-item\", 3, \"item\", \"templates\"], [\"class\", \"p-galleria-caption\", 4, \"ngIf\"], [\"class\", \"p-galleria-indicators p-reset\", 4, \"ngIf\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\"], [1, \"p-galleria-item-prev-icon\", \"pi\", \"pi-chevron-left\"], [1, \"p-galleria-item-next-icon\", \"pi\", \"pi-chevron-right\"], [1, \"p-galleria-caption\"], [\"type\", \"caption\", 3, \"item\", \"templates\"], [1, \"p-galleria-indicators\", \"p-reset\"], [\"tabindex\", \"0\", 3, \"ngClass\", \"click\", \"mouseenter\", \"keydown.enter\", 4, \"ngFor\", \"ngForOf\"], [\"tabindex\", \"0\", 3, \"ngClass\", \"click\", \"mouseenter\", \"keydown.enter\"], [\"type\", \"button\", \"tabIndex\", \"-1\", \"class\", \"p-link\", 4, \"ngIf\"], [\"type\", \"indicator\", 3, \"index\", \"templates\"], [\"type\", \"button\", \"tabIndex\", \"-1\", 1, \"p-link\"]],\n  template: function GalleriaItem_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵelementStart(1, \"div\", 1);\n      i0.ɵɵtemplate(2, GalleriaItem_button_2_Template, 2, 4, \"button\", 2);\n      i0.ɵɵelement(3, \"p-galleriaItemSlot\", 3);\n      i0.ɵɵtemplate(4, GalleriaItem_button_4_Template, 2, 4, \"button\", 2);\n      i0.ɵɵtemplate(5, GalleriaItem_div_5_Template, 2, 2, \"div\", 4);\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(6, GalleriaItem_ul_6_Template, 2, 1, \"ul\", 5);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngIf\", ctx.showItemNavigators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"item\", ctx.activeItem)(\"templates\", ctx.templates);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.showItemNavigators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.captionFacet);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.showIndicators);\n    }\n  },\n  directives: [i2.NgIf, GalleriaItemSlot, i3.Ripple, i2.NgClass, i2.NgForOf],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(GalleriaItem, [{\n    type: Component,\n    args: [{\n      selector: 'p-galleriaItem',\n      template: `\n        <div class=\"p-galleria-item-wrapper\">\n            <div class=\"p-galleria-item-container\">\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-prev-icon pi pi-chevron-left\"></span>\n                </button>\n                <p-galleriaItemSlot type=\"item\" [item]=\"activeItem\" [templates]=\"templates\" class=\"p-galleria-item\"></p-galleriaItemSlot>\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\"  [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-next-icon pi pi-chevron-right\"></span>\n                </button>\n                <div class=\"p-galleria-caption\" *ngIf=\"captionFacet\">\n                    <p-galleriaItemSlot type=\"caption\" [item]=\"activeItem\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </div>\n            </div>\n            <ul *ngIf=\"showIndicators\" class=\"p-galleria-indicators p-reset\">\n                <li *ngFor=\"let item of value; let index = index;\" tabindex=\"0\"\n                    (click)=\"onIndicatorClick(index)\" (mouseenter)=\"onIndicatorMouseEnter(index)\" (keydown.enter)=\"onIndicatorKeyDown(index)\"\n                    [ngClass]=\"{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}\">\n                    <button type=\"button\" tabIndex=\"-1\" class=\"p-link\" *ngIf=\"!indicatorFacet\">\n                    </button>\n                    <p-galleriaItemSlot type=\"indicator\" [index]=\"index\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </li>\n            </ul>\n        </div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush\n    }]\n  }], null, {\n    circular: [{\n      type: Input\n    }],\n    value: [{\n      type: Input\n    }],\n    showItemNavigators: [{\n      type: Input\n    }],\n    showIndicators: [{\n      type: Input\n    }],\n    slideShowActive: [{\n      type: Input\n    }],\n    changeItemOnIndicatorHover: [{\n      type: Input\n    }],\n    autoPlay: [{\n      type: Input\n    }],\n    templates: [{\n      type: Input\n    }],\n    indicatorFacet: [{\n      type: Input\n    }],\n    captionFacet: [{\n      type: Input\n    }],\n    startSlideShow: [{\n      type: Output\n    }],\n    stopSlideShow: [{\n      type: Output\n    }],\n    onActiveIndexChange: [{\n      type: Output\n    }],\n    activeIndex: [{\n      type: Input\n    }]\n  });\n})();\n\nclass GalleriaThumbnails {\n  constructor(cd) {\n    this.cd = cd;\n    this.isVertical = false;\n    this.slideShowActive = false;\n    this.circular = false;\n    this.contentHeight = \"300px\";\n    this.showThumbnailNavigators = true;\n    this.onActiveIndexChange = new EventEmitter();\n    this.stopSlideShow = new EventEmitter();\n    this.startPos = null;\n    this.thumbnailsStyle = null;\n    this.sortedResponsiveOptions = null;\n    this.totalShiftedItems = 0;\n    this.page = 0;\n    this._numVisible = 0;\n    this.d_numVisible = 0;\n    this._oldNumVisible = 0;\n    this._activeIndex = 0;\n    this._oldactiveIndex = 0;\n  }\n\n  get numVisible() {\n    return this._numVisible;\n  }\n\n  set numVisible(numVisible) {\n    this._numVisible = numVisible;\n    this._oldNumVisible = this.d_numVisible;\n    this.d_numVisible = numVisible;\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(activeIndex) {\n    this._oldactiveIndex = this._activeIndex;\n    this._activeIndex = activeIndex;\n  }\n\n  ngOnInit() {\n    this.createStyle();\n\n    if (this.responsiveOptions) {\n      this.bindDocumentListeners();\n    }\n  }\n\n  ngAfterContentChecked() {\n    let totalShiftedItems = this.totalShiftedItems;\n\n    if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {\n      if (this._activeIndex <= this.getMedianItemIndex()) {\n        totalShiftedItems = 0;\n      } else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {\n        totalShiftedItems = this.d_numVisible - this.value.length;\n      } else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {\n        totalShiftedItems = this._activeIndex * -1 + this.getMedianItemIndex() + 1;\n      } else {\n        totalShiftedItems = this._activeIndex * -1 + this.getMedianItemIndex();\n      }\n\n      if (totalShiftedItems !== this.totalShiftedItems) {\n        this.totalShiftedItems = totalShiftedItems;\n      }\n\n      if (this.itemsContainer && this.itemsContainer.nativeElement) {\n        this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n      }\n\n      if (this._oldactiveIndex !== this._activeIndex) {\n        DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n        this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n      }\n\n      this._oldactiveIndex = this._activeIndex;\n      this._oldNumVisible = this.d_numVisible;\n    }\n  }\n\n  ngAfterViewInit() {\n    this.calculatePosition();\n  }\n\n  createStyle() {\n    if (!this.thumbnailsStyle) {\n      this.thumbnailsStyle = document.createElement('style');\n      this.thumbnailsStyle.type = 'text/css';\n      document.body.appendChild(this.thumbnailsStyle);\n    }\n\n    let innerHTML = `\n            #${this.containerId} .p-galleria-thumbnail-item {\n                flex: 1 0 ${100 / this.d_numVisible}%\n            }\n        `;\n\n    if (this.responsiveOptions) {\n      this.sortedResponsiveOptions = [...this.responsiveOptions];\n      this.sortedResponsiveOptions.sort((data1, data2) => {\n        const value1 = data1.breakpoint;\n        const value2 = data2.breakpoint;\n        let result = null;\n        if (value1 == null && value2 != null) result = -1;else if (value1 != null && value2 == null) result = 1;else if (value1 == null && value2 == null) result = 0;else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2, undefined, {\n          numeric: true\n        });else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n        return -1 * result;\n      });\n\n      for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n        let res = this.sortedResponsiveOptions[i];\n        innerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.containerId} .p-galleria-thumbnail-item {\n                            flex: 1 0 ${100 / res.numVisible}%\n                        }\n                    }\n                `;\n      }\n    }\n\n    this.thumbnailsStyle.innerHTML = innerHTML;\n  }\n\n  calculatePosition() {\n    if (this.itemsContainer && this.sortedResponsiveOptions) {\n      let windowWidth = window.innerWidth;\n      let matchedResponsiveData = {\n        numVisible: this._numVisible\n      };\n\n      for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n        let res = this.sortedResponsiveOptions[i];\n\n        if (parseInt(res.breakpoint, 10) >= windowWidth) {\n          matchedResponsiveData = res;\n        }\n      }\n\n      if (this.d_numVisible !== matchedResponsiveData.numVisible) {\n        this.d_numVisible = matchedResponsiveData.numVisible;\n        this.cd.markForCheck();\n      }\n    }\n  }\n\n  getTabIndex(index) {\n    return this.isItemActive(index) ? 0 : null;\n  }\n\n  navForward(e) {\n    this.stopTheSlideShow();\n    let nextItemIndex = this._activeIndex + 1;\n\n    if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && (-1 * this.totalShiftedItems < this.getTotalPageNumber() - 1 || this.circular)) {\n      this.step(-1);\n    }\n\n    let activeIndex = this.circular && this.value.length - 1 === this._activeIndex ? 0 : nextItemIndex;\n    this.onActiveIndexChange.emit(activeIndex);\n\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  navBackward(e) {\n    this.stopTheSlideShow();\n    let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;\n    let diff = prevItemIndex + this.totalShiftedItems;\n\n    if (this.d_numVisible - diff - 1 > this.getMedianItemIndex() && (-1 * this.totalShiftedItems !== 0 || this.circular)) {\n      this.step(1);\n    }\n\n    let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n    this.onActiveIndexChange.emit(activeIndex);\n\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onItemClick(index) {\n    this.stopTheSlideShow();\n    let selectedItemIndex = index;\n\n    if (selectedItemIndex !== this._activeIndex) {\n      const diff = selectedItemIndex + this.totalShiftedItems;\n      let dir = 0;\n\n      if (selectedItemIndex < this._activeIndex) {\n        dir = this.d_numVisible - diff - 1 - this.getMedianItemIndex();\n\n        if (dir > 0 && -1 * this.totalShiftedItems !== 0) {\n          this.step(dir);\n        }\n      } else {\n        dir = this.getMedianItemIndex() - diff;\n\n        if (dir < 0 && -1 * this.totalShiftedItems < this.getTotalPageNumber() - 1) {\n          this.step(dir);\n        }\n      }\n\n      this.activeIndex = selectedItemIndex;\n      this.onActiveIndexChange.emit(this.activeIndex);\n    }\n  }\n\n  step(dir) {\n    let totalShiftedItems = this.totalShiftedItems + dir;\n\n    if (dir < 0 && -1 * totalShiftedItems + this.d_numVisible > this.value.length - 1) {\n      totalShiftedItems = this.d_numVisible - this.value.length;\n    } else if (dir > 0 && totalShiftedItems > 0) {\n      totalShiftedItems = 0;\n    }\n\n    if (this.circular) {\n      if (dir < 0 && this.value.length - 1 === this._activeIndex) {\n        totalShiftedItems = 0;\n      } else if (dir > 0 && this._activeIndex === 0) {\n        totalShiftedItems = this.d_numVisible - this.value.length;\n      }\n    }\n\n    if (this.itemsContainer) {\n      DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n      this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n      this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n    }\n\n    this.totalShiftedItems = totalShiftedItems;\n  }\n\n  stopTheSlideShow() {\n    if (this.slideShowActive && this.stopSlideShow) {\n      this.stopSlideShow.emit();\n    }\n  }\n\n  changePageOnTouch(e, diff) {\n    if (diff < 0) {\n      // left\n      this.navForward(e);\n    } else {\n      // right\n      this.navBackward(e);\n    }\n  }\n\n  getTotalPageNumber() {\n    return this.value.length > this.d_numVisible ? this.value.length - this.d_numVisible + 1 : 0;\n  }\n\n  getMedianItemIndex() {\n    let index = Math.floor(this.d_numVisible / 2);\n    return this.d_numVisible % 2 ? index : index - 1;\n  }\n\n  onTransitionEnd() {\n    if (this.itemsContainer && this.itemsContainer.nativeElement) {\n      DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n      this.itemsContainer.nativeElement.style.transition = '';\n    }\n  }\n\n  onTouchEnd(e) {\n    let touchobj = e.changedTouches[0];\n\n    if (this.isVertical) {\n      this.changePageOnTouch(e, touchobj.pageY - this.startPos.y);\n    } else {\n      this.changePageOnTouch(e, touchobj.pageX - this.startPos.x);\n    }\n  }\n\n  onTouchMove(e) {\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onTouchStart(e) {\n    let touchobj = e.changedTouches[0];\n    this.startPos = {\n      x: touchobj.pageX,\n      y: touchobj.pageY\n    };\n  }\n\n  isNavBackwardDisabled() {\n    return !this.circular && this._activeIndex === 0 || this.value.length <= this.d_numVisible;\n  }\n\n  isNavForwardDisabled() {\n    return !this.circular && this._activeIndex === this.value.length - 1 || this.value.length <= this.d_numVisible;\n  }\n\n  firstItemAciveIndex() {\n    return this.totalShiftedItems * -1;\n  }\n\n  lastItemActiveIndex() {\n    return this.firstItemAciveIndex() + this.d_numVisible - 1;\n  }\n\n  isItemActive(index) {\n    return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;\n  }\n\n  bindDocumentListeners() {\n    if (!this.documentResizeListener) {\n      this.documentResizeListener = () => {\n        this.calculatePosition();\n      };\n\n      window.addEventListener('resize', this.documentResizeListener);\n    }\n  }\n\n  unbindDocumentListeners() {\n    if (this.documentResizeListener) {\n      window.removeEventListener('resize', this.documentResizeListener);\n      this.documentResizeListener = null;\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.responsiveOptions) {\n      this.unbindDocumentListeners();\n    }\n\n    if (this.thumbnailsStyle) {\n      this.thumbnailsStyle.parentNode.removeChild(this.thumbnailsStyle);\n    }\n  }\n\n}\n\nGalleriaThumbnails.ɵfac = function GalleriaThumbnails_Factory(t) {\n  return new (t || GalleriaThumbnails)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nGalleriaThumbnails.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: GalleriaThumbnails,\n  selectors: [[\"p-galleriaThumbnails\"]],\n  viewQuery: function GalleriaThumbnails_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c9, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemsContainer = _t.first);\n    }\n  },\n  inputs: {\n    containerId: \"containerId\",\n    value: \"value\",\n    isVertical: \"isVertical\",\n    slideShowActive: \"slideShowActive\",\n    circular: \"circular\",\n    responsiveOptions: \"responsiveOptions\",\n    contentHeight: \"contentHeight\",\n    showThumbnailNavigators: \"showThumbnailNavigators\",\n    templates: \"templates\",\n    numVisible: \"numVisible\",\n    activeIndex: \"activeIndex\"\n  },\n  outputs: {\n    onActiveIndexChange: \"onActiveIndexChange\",\n    stopSlideShow: \"stopSlideShow\"\n  },\n  decls: 8,\n  vars: 6,\n  consts: [[1, \"p-galleria-thumbnail-wrapper\"], [1, \"p-galleria-thumbnail-container\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\", 4, \"ngIf\"], [1, \"p-galleria-thumbnail-items-container\", 3, \"ngStyle\"], [1, \"p-galleria-thumbnail-items\", 3, \"transitionend\", \"touchstart\", \"touchmove\", \"touchend\"], [\"itemsContainer\", \"\"], [3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\"], [3, \"ngClass\"], [1, \"p-galleria-thumbnail-item-content\", 3, \"click\", \"keydown.enter\"], [\"type\", \"thumbnail\", 3, \"item\", \"templates\"]],\n  template: function GalleriaThumbnails_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵelementStart(1, \"div\", 1);\n      i0.ɵɵtemplate(2, GalleriaThumbnails_button_2_Template, 2, 8, \"button\", 2);\n      i0.ɵɵelementStart(3, \"div\", 3);\n      i0.ɵɵelementStart(4, \"div\", 4, 5);\n      i0.ɵɵlistener(\"transitionend\", function GalleriaThumbnails_Template_div_transitionend_4_listener() {\n        return ctx.onTransitionEnd();\n      })(\"touchstart\", function GalleriaThumbnails_Template_div_touchstart_4_listener($event) {\n        return ctx.onTouchStart($event);\n      })(\"touchmove\", function GalleriaThumbnails_Template_div_touchmove_4_listener($event) {\n        return ctx.onTouchMove($event);\n      })(\"touchend\", function GalleriaThumbnails_Template_div_touchend_4_listener($event) {\n        return ctx.onTouchEnd($event);\n      });\n      i0.ɵɵtemplate(6, GalleriaThumbnails_div_6_Template, 3, 9, \"div\", 6);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(7, GalleriaThumbnails_button_7_Template, 2, 8, \"button\", 2);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngIf\", ctx.showThumbnailNavigators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction1(4, _c15, ctx.isVertical ? ctx.contentHeight : \"\"));\n      i0.ɵɵadvance(3);\n      i0.ɵɵproperty(\"ngForOf\", ctx.value);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.showThumbnailNavigators);\n    }\n  },\n  directives: [i2.NgIf, i2.NgStyle, i2.NgForOf, i3.Ripple, i2.NgClass, GalleriaItemSlot],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(GalleriaThumbnails, [{\n    type: Component,\n    args: [{\n      selector: 'p-galleriaThumbnails',\n      template: `\n        <div class=\"p-galleria-thumbnail-wrapper\">\n            <div class=\"p-galleria-thumbnail-container\">\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}\"></span>\n                </button>\n                <div class=\"p-galleria-thumbnail-items-container\" [ngStyle]=\"{'height': isVertical ? contentHeight : ''}\">\n                    <div #itemsContainer class=\"p-galleria-thumbnail-items\" (transitionend)=\"onTransitionEnd()\"\n                        (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\">\n                        <div *ngFor=\"let item of value; let index = index;\" [ngClass]=\"{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),\n                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }\">\n                            <div class=\"p-galleria-thumbnail-item-content\" [attr.tabindex]=\"getTabIndex(index)\" (click)=\"onItemClick(index)\" (keydown.enter)=\"onItemClick(index)\">\n                                <p-galleriaItemSlot type=\"thumbnail\" [item]=\"item\" [templates]=\"templates\"></p-galleriaItemSlot>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\" [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush\n    }]\n  }], function () {\n    return [{\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    containerId: [{\n      type: Input\n    }],\n    value: [{\n      type: Input\n    }],\n    isVertical: [{\n      type: Input\n    }],\n    slideShowActive: [{\n      type: Input\n    }],\n    circular: [{\n      type: Input\n    }],\n    responsiveOptions: [{\n      type: Input\n    }],\n    contentHeight: [{\n      type: Input\n    }],\n    showThumbnailNavigators: [{\n      type: Input\n    }],\n    templates: [{\n      type: Input\n    }],\n    onActiveIndexChange: [{\n      type: Output\n    }],\n    stopSlideShow: [{\n      type: Output\n    }],\n    itemsContainer: [{\n      type: ViewChild,\n      args: ['itemsContainer']\n    }],\n    numVisible: [{\n      type: Input\n    }],\n    activeIndex: [{\n      type: Input\n    }]\n  });\n})();\n\nclass GalleriaModule {}\n\nGalleriaModule.ɵfac = function GalleriaModule_Factory(t) {\n  return new (t || GalleriaModule)();\n};\n\nGalleriaModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: GalleriaModule\n});\nGalleriaModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(GalleriaModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, SharedModule, RippleModule],\n      exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],\n      declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Galleria, GalleriaContent, GalleriaItem, GalleriaItemSlot, GalleriaModule, GalleriaThumbnails };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-galleria.mjs"],"names":["i0","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","Input","ViewChild","Output","ContentChildren","NgModule","i2","CommonModule","i1","PrimeTemplate","SharedModule","ZIndexUtils","UniqueComponentId","DomHandler","i3","RippleModule","trigger","transition","style","animate","Galleria","constructor","element","cd","config","fullScreen","numVisible","showItemNavigators","showThumbnailNavigators","showItemNavigatorsOnHover","changeItemOnIndicatorHover","circular","autoPlay","transitionInterval","showThumbnails","thumbnailsPosition","verticalThumbnailViewPortHeight","showIndicators","showIndicatorsOnItem","indicatorsPosition","baseZIndex","showTransitionOptions","hideTransitionOptions","activeIndexChange","visibleChange","_visible","_activeIndex","maskVisible","activeIndex","visible","ngAfterContentInit","templates","forEach","item","getType","headerFacet","template","footerFacet","indicatorFacet","captionFacet","ngOnChanges","simpleChanges","value","currentValue","length","onMaskHide","emit","onActiveItemChange","index","onAnimationStart","event","toState","enableModality","addClass","mask","nativeElement","onAnimationEnd","disableModality","document","body","markForCheck","set","zIndex","modal","removeClass","clear","ngOnDestroy","ɵfac","ElementRef","ChangeDetectorRef","PrimeNGConfig","ɵcmp","NgIf","NgClass","GalleriaContent","NgStyle","transform","opacity","type","args","selector","animations","changeDetection","OnPush","encapsulation","None","host","styles","id","responsiveOptions","maskClass","containerClass","containerStyle","galleria","maskHide","activeItemChange","slideShowActicve","slideShowActive","galleriaClass","thumbnailsPosClass","getPositionClass","indicatorPosClass","startSlideShow","interval","setInterval","onActiveIndexChange","stopSlideShow","clearInterval","preClassName","position","positions","pos","find","isVertical","GalleriaItem","Ripple","GalleriaItemSlot","GalleriaThumbnails","_item","context","$implicit","contentTemplate","NgTemplateOutlet","activeItem","ngOnInit","next","nextItemIndex","prev","prevItemIndex","stopTheSlideShow","navForward","e","cancelable","preventDefault","navBackward","onIndicatorClick","onIndicatorMouseEnter","onIndicatorKeyDown","isNavForwardDisabled","isNavBackwardDisabled","isIndicatorItemActive","NgForOf","contentHeight","startPos","thumbnailsStyle","sortedResponsiveOptions","totalShiftedItems","page","_numVisible","d_numVisible","_oldNumVisible","_oldactiveIndex","createStyle","bindDocumentListeners","ngAfterContentChecked","itemsContainer","getMedianItemIndex","ngAfterViewInit","calculatePosition","createElement","appendChild","innerHTML","containerId","sort","data1","data2","value1","breakpoint","value2","result","localeCompare","undefined","numeric","i","res","windowWidth","window","innerWidth","matchedResponsiveData","parseInt","getTabIndex","isItemActive","getTotalPageNumber","step","diff","onItemClick","selectedItemIndex","dir","changePageOnTouch","Math","floor","onTransitionEnd","onTouchEnd","touchobj","changedTouches","pageY","y","pageX","x","onTouchMove","onTouchStart","firstItemAciveIndex","lastItemActiveIndex","documentResizeListener","addEventListener","unbindDocumentListeners","removeEventListener","parentNode","removeChild","GalleriaModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, Output, ContentChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { ZIndexUtils, UniqueComponentId } from 'primeng/utils';\nimport { DomHandler } from 'primeng/dom';\nimport * as i3 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { trigger, transition, style, animate } from '@angular/animations';\n\nclass Galleria {\n    constructor(element, cd, config) {\n        this.element = element;\n        this.cd = cd;\n        this.config = config;\n        this.fullScreen = false;\n        this.numVisible = 3;\n        this.showItemNavigators = false;\n        this.showThumbnailNavigators = true;\n        this.showItemNavigatorsOnHover = false;\n        this.changeItemOnIndicatorHover = false;\n        this.circular = false;\n        this.autoPlay = false;\n        this.transitionInterval = 4000;\n        this.showThumbnails = true;\n        this.thumbnailsPosition = \"bottom\";\n        this.verticalThumbnailViewPortHeight = \"300px\";\n        this.showIndicators = false;\n        this.showIndicatorsOnItem = false;\n        this.indicatorsPosition = \"bottom\";\n        this.baseZIndex = 0;\n        this.showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n        this.hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';\n        this.activeIndexChange = new EventEmitter();\n        this.visibleChange = new EventEmitter();\n        this._visible = false;\n        this._activeIndex = 0;\n        this.maskVisible = false;\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    ;\n    set activeIndex(activeIndex) {\n        this._activeIndex = activeIndex;\n    }\n    get visible() {\n        return this._visible;\n    }\n    ;\n    set visible(visible) {\n        this._visible = visible;\n        if (this._visible && !this.maskVisible) {\n            this.maskVisible = true;\n        }\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'header':\n                    this.headerFacet = item.template;\n                    break;\n                case 'footer':\n                    this.footerFacet = item.template;\n                    break;\n                case 'indicator':\n                    this.indicatorFacet = item.template;\n                    break;\n                case 'caption':\n                    this.captionFacet = item.template;\n                    break;\n            }\n        });\n    }\n    ngOnChanges(simpleChanges) {\n        if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {\n            this.numVisible = simpleChanges.value.currentValue.length;\n        }\n    }\n    onMaskHide() {\n        this.visible = false;\n        this.visibleChange.emit(false);\n    }\n    onActiveItemChange(index) {\n        if (this.activeIndex !== index) {\n            this.activeIndex = index;\n            this.activeIndexChange.emit(index);\n        }\n    }\n    onAnimationStart(event) {\n        switch (event.toState) {\n            case 'visible':\n                this.enableModality();\n                break;\n            case 'void':\n                DomHandler.addClass(this.mask.nativeElement, 'p-component-overlay-leave');\n                break;\n        }\n    }\n    onAnimationEnd(event) {\n        switch (event.toState) {\n            case 'void':\n                this.disableModality();\n                break;\n        }\n    }\n    enableModality() {\n        DomHandler.addClass(document.body, 'p-overflow-hidden');\n        this.cd.markForCheck();\n        if (this.mask) {\n            ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n        }\n    }\n    disableModality() {\n        DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        this.maskVisible = false;\n        this.cd.markForCheck();\n        if (this.mask) {\n            ZIndexUtils.clear(this.mask.nativeElement);\n        }\n    }\n    ngOnDestroy() {\n        if (this.fullScreen) {\n            DomHandler.removeClass(document.body, 'p-overflow-hidden');\n        }\n        if (this.mask) {\n            this.disableModality();\n        }\n    }\n}\nGalleria.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Galleria, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\nGalleria.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Galleria, selector: \"p-galleria\", inputs: { activeIndex: \"activeIndex\", fullScreen: \"fullScreen\", id: \"id\", value: \"value\", numVisible: \"numVisible\", responsiveOptions: \"responsiveOptions\", showItemNavigators: \"showItemNavigators\", showThumbnailNavigators: \"showThumbnailNavigators\", showItemNavigatorsOnHover: \"showItemNavigatorsOnHover\", changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\", circular: \"circular\", autoPlay: \"autoPlay\", transitionInterval: \"transitionInterval\", showThumbnails: \"showThumbnails\", thumbnailsPosition: \"thumbnailsPosition\", verticalThumbnailViewPortHeight: \"verticalThumbnailViewPortHeight\", showIndicators: \"showIndicators\", showIndicatorsOnItem: \"showIndicatorsOnItem\", indicatorsPosition: \"indicatorsPosition\", baseZIndex: \"baseZIndex\", maskClass: \"maskClass\", containerClass: \"containerClass\", containerStyle: \"containerStyle\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", visible: \"visible\" }, outputs: { activeIndexChange: \"activeIndexChange\", visibleChange: \"visibleChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"mask\", first: true, predicate: [\"mask\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n        <div *ngIf=\"fullScreen;else windowed\">\n            <div *ngIf=\"maskVisible\" #mask [ngClass]=\"{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}\" [class]=\"maskClass\">\n                <p-galleriaContent *ngIf=\"visible\" [@animation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\"\n                    [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (maskHide)=\"onMaskHide()\" (activeItemChange)=\"onActiveItemChange($event)\" [ngStyle]=\"containerStyle\"></p-galleriaContent>\n            </div>\n        </div>\n\n        <ng-template #windowed>\n            <p-galleriaContent [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (activeItemChange)=\"onActiveItemChange($event)\"></p-galleriaContent>\n        </ng-template>\n    `, isInline: true, styles: [\".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\\n\"], components: [{ type: i0.forwardRef(function () { return GalleriaContent; }), selector: \"p-galleriaContent\", inputs: [\"activeIndex\", \"value\", \"numVisible\"], outputs: [\"maskHide\", \"activeItemChange\"] }], directives: [{ type: i0.forwardRef(function () { return i2.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i0.forwardRef(function () { return i2.NgClass; }), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i0.forwardRef(function () { return i2.NgStyle; }), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], animations: [\n        trigger('animation', [\n            transition('void => visible', [\n                style({ transform: 'scale(0.7)', opacity: 0 }),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('visible => void', [\n                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))\n            ])\n        ])\n    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Galleria, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-galleria', template: `\n        <div *ngIf=\"fullScreen;else windowed\">\n            <div *ngIf=\"maskVisible\" #mask [ngClass]=\"{'p-galleria-mask p-component-overlay p-component-overlay-enter':true, 'p-galleria-visible': this.visible}\" [class]=\"maskClass\">\n                <p-galleriaContent *ngIf=\"visible\" [@animation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" (@animation.start)=\"onAnimationStart($event)\" (@animation.done)=\"onAnimationEnd($event)\"\n                    [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (maskHide)=\"onMaskHide()\" (activeItemChange)=\"onActiveItemChange($event)\" [ngStyle]=\"containerStyle\"></p-galleriaContent>\n            </div>\n        </div>\n\n        <ng-template #windowed>\n            <p-galleriaContent [value]=\"value\" [activeIndex]=\"activeIndex\" [numVisible]=\"numVisible\" (activeItemChange)=\"onActiveItemChange($event)\"></p-galleriaContent>\n        </ng-template>\n    `, animations: [\n                        trigger('animation', [\n                            transition('void => visible', [\n                                style({ transform: 'scale(0.7)', opacity: 0 }),\n                                animate('{{showTransitionParams}}')\n                            ]),\n                            transition('visible => void', [\n                                animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))\n                            ])\n                        ])\n                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.PrimeNGConfig }]; }, propDecorators: { activeIndex: [{\n                type: Input\n            }], fullScreen: [{\n                type: Input\n            }], id: [{\n                type: Input\n            }], value: [{\n                type: Input\n            }], numVisible: [{\n                type: Input\n            }], responsiveOptions: [{\n                type: Input\n            }], showItemNavigators: [{\n                type: Input\n            }], showThumbnailNavigators: [{\n                type: Input\n            }], showItemNavigatorsOnHover: [{\n                type: Input\n            }], changeItemOnIndicatorHover: [{\n                type: Input\n            }], circular: [{\n                type: Input\n            }], autoPlay: [{\n                type: Input\n            }], transitionInterval: [{\n                type: Input\n            }], showThumbnails: [{\n                type: Input\n            }], thumbnailsPosition: [{\n                type: Input\n            }], verticalThumbnailViewPortHeight: [{\n                type: Input\n            }], showIndicators: [{\n                type: Input\n            }], showIndicatorsOnItem: [{\n                type: Input\n            }], indicatorsPosition: [{\n                type: Input\n            }], baseZIndex: [{\n                type: Input\n            }], maskClass: [{\n                type: Input\n            }], containerClass: [{\n                type: Input\n            }], containerStyle: [{\n                type: Input\n            }], showTransitionOptions: [{\n                type: Input\n            }], hideTransitionOptions: [{\n                type: Input\n            }], mask: [{\n                type: ViewChild,\n                args: ['mask']\n            }], visible: [{\n                type: Input\n            }], activeIndexChange: [{\n                type: Output\n            }], visibleChange: [{\n                type: Output\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }] } });\nclass GalleriaContent {\n    constructor(galleria, cd) {\n        this.galleria = galleria;\n        this.cd = cd;\n        this.value = [];\n        this.maskHide = new EventEmitter();\n        this.activeItemChange = new EventEmitter();\n        this.id = this.galleria.id || UniqueComponentId();\n        this.slideShowActicve = false;\n        this._activeIndex = 0;\n        this.slideShowActive = true;\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    ;\n    set activeIndex(activeIndex) {\n        this._activeIndex = activeIndex;\n    }\n    galleriaClass() {\n        const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);\n        const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);\n        return (this.galleria.containerClass ? this.galleria.containerClass + \" \" : '') + (thumbnailsPosClass ? thumbnailsPosClass + \" \" : '') + (indicatorPosClass ? indicatorPosClass + \" \" : '');\n    }\n    startSlideShow() {\n        this.interval = setInterval(() => {\n            let activeIndex = (this.galleria.circular && (this.value.length - 1) === this.activeIndex) ? 0 : (this.activeIndex + 1);\n            this.onActiveIndexChange(activeIndex);\n            this.activeIndex = activeIndex;\n        }, this.galleria.transitionInterval);\n        this.slideShowActive = true;\n    }\n    stopSlideShow() {\n        if (this.interval) {\n            clearInterval(this.interval);\n        }\n        this.slideShowActive = false;\n    }\n    getPositionClass(preClassName, position) {\n        const positions = ['top', 'left', 'bottom', 'right'];\n        const pos = positions.find(item => item === position);\n        return pos ? `${preClassName}-${pos}` : '';\n    }\n    isVertical() {\n        return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';\n    }\n    onActiveIndexChange(index) {\n        if (this.activeIndex !== index) {\n            this.activeIndex = index;\n            this.activeItemChange.emit(this.activeIndex);\n        }\n    }\n}\nGalleriaContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaContent, deps: [{ token: Galleria }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nGalleriaContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: GalleriaContent, selector: \"p-galleriaContent\", inputs: { activeIndex: \"activeIndex\", value: \"value\", numVisible: \"numVisible\" }, outputs: { maskHide: \"maskHide\", activeItemChange: \"activeItemChange\" }, ngImport: i0, template: `\n        <div [attr.id]=\"id\" *ngIf=\"value && value.length > 0\" [ngClass]=\"{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,\n            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}\"\n            [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\" [class]=\"galleriaClass()\">\n            <button *ngIf=\"galleria.fullScreen\" type=\"button\" class=\"p-galleria-close p-link\" (click)=\"maskHide.emit()\" pRipple>\n                <span class=\"p-galleria-close-icon pi pi-times\"></span>\n            </button>\n            <div *ngIf=\"galleria.templates && galleria.headerFacet\" class=\"p-galleria-header\">\n                <p-galleriaItemSlot type=\"header\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n            <div class=\"p-galleria-content\">\n                <p-galleriaItem [value]=\"value\" [activeIndex]=\"activeIndex\" [circular]=\"galleria.circular\" [templates]=\"galleria.templates\" (onActiveIndexChange)=\"onActiveIndexChange($event)\"\n                    [showIndicators]=\"galleria.showIndicators\" [changeItemOnIndicatorHover]=\"galleria.changeItemOnIndicatorHover\" [indicatorFacet]=\"galleria.indicatorFacet\"\n                    [captionFacet]=\"galleria.captionFacet\" [showItemNavigators]=\"galleria.showItemNavigators\" [autoPlay]=\"galleria.autoPlay\" [slideShowActive]=\"slideShowActive\"\n                    (startSlideShow)=\"startSlideShow()\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaItem>\n\n                <p-galleriaThumbnails *ngIf=\"galleria.showThumbnails\" [containerId]=\"id\" [value]=\"value\" (onActiveIndexChange)=\"onActiveIndexChange($event)\" [activeIndex]=\"activeIndex\" [templates]=\"galleria.templates\"\n                    [numVisible]=\"numVisible\" [responsiveOptions]=\"galleria.responsiveOptions\" [circular]=\"galleria.circular\"\n                    [isVertical]=\"isVertical()\" [contentHeight]=\"galleria.verticalThumbnailViewPortHeight\" [showThumbnailNavigators]=\"galleria.showThumbnailNavigators\"\n                    [slideShowActive]=\"slideShowActive\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaThumbnails>\n            </div>\n            <div *ngIf=\"galleria.templates && galleria.footerFacet\" class=\"p-galleria-footer\">\n                <p-galleriaItemSlot type=\"footer\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n        </div>\n    `, isInline: true, components: [{ type: i0.forwardRef(function () { return GalleriaItemSlot; }), selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }, { type: i0.forwardRef(function () { return GalleriaItem; }), selector: \"p-galleriaItem\", inputs: [\"circular\", \"value\", \"showItemNavigators\", \"showIndicators\", \"slideShowActive\", \"changeItemOnIndicatorHover\", \"autoPlay\", \"templates\", \"indicatorFacet\", \"captionFacet\", \"activeIndex\"], outputs: [\"startSlideShow\", \"stopSlideShow\", \"onActiveIndexChange\"] }, { type: i0.forwardRef(function () { return GalleriaThumbnails; }), selector: \"p-galleriaThumbnails\", inputs: [\"containerId\", \"value\", \"isVertical\", \"slideShowActive\", \"circular\", \"responsiveOptions\", \"contentHeight\", \"showThumbnailNavigators\", \"templates\", \"numVisible\", \"activeIndex\"], outputs: [\"onActiveIndexChange\", \"stopSlideShow\"] }], directives: [{ type: i0.forwardRef(function () { return i2.NgIf; }), selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i0.forwardRef(function () { return i2.NgClass; }), selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i0.forwardRef(function () { return i2.NgStyle; }), selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i0.forwardRef(function () { return i3.Ripple; }), selector: \"[pRipple]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaContent, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-galleriaContent',\n                    template: `\n        <div [attr.id]=\"id\" *ngIf=\"value && value.length > 0\" [ngClass]=\"{'p-galleria p-component': true, 'p-galleria-fullscreen': this.galleria.fullScreen,\n            'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem, 'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen}\"\n            [ngStyle]=\"!galleria.fullScreen ? galleria.containerStyle : {}\" [class]=\"galleriaClass()\">\n            <button *ngIf=\"galleria.fullScreen\" type=\"button\" class=\"p-galleria-close p-link\" (click)=\"maskHide.emit()\" pRipple>\n                <span class=\"p-galleria-close-icon pi pi-times\"></span>\n            </button>\n            <div *ngIf=\"galleria.templates && galleria.headerFacet\" class=\"p-galleria-header\">\n                <p-galleriaItemSlot type=\"header\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n            <div class=\"p-galleria-content\">\n                <p-galleriaItem [value]=\"value\" [activeIndex]=\"activeIndex\" [circular]=\"galleria.circular\" [templates]=\"galleria.templates\" (onActiveIndexChange)=\"onActiveIndexChange($event)\"\n                    [showIndicators]=\"galleria.showIndicators\" [changeItemOnIndicatorHover]=\"galleria.changeItemOnIndicatorHover\" [indicatorFacet]=\"galleria.indicatorFacet\"\n                    [captionFacet]=\"galleria.captionFacet\" [showItemNavigators]=\"galleria.showItemNavigators\" [autoPlay]=\"galleria.autoPlay\" [slideShowActive]=\"slideShowActive\"\n                    (startSlideShow)=\"startSlideShow()\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaItem>\n\n                <p-galleriaThumbnails *ngIf=\"galleria.showThumbnails\" [containerId]=\"id\" [value]=\"value\" (onActiveIndexChange)=\"onActiveIndexChange($event)\" [activeIndex]=\"activeIndex\" [templates]=\"galleria.templates\"\n                    [numVisible]=\"numVisible\" [responsiveOptions]=\"galleria.responsiveOptions\" [circular]=\"galleria.circular\"\n                    [isVertical]=\"isVertical()\" [contentHeight]=\"galleria.verticalThumbnailViewPortHeight\" [showThumbnailNavigators]=\"galleria.showThumbnailNavigators\"\n                    [slideShowActive]=\"slideShowActive\" (stopSlideShow)=\"stopSlideShow()\"></p-galleriaThumbnails>\n            </div>\n            <div *ngIf=\"galleria.templates && galleria.footerFacet\" class=\"p-galleria-footer\">\n                <p-galleriaItemSlot type=\"footer\" [templates]=\"galleria.templates\"></p-galleriaItemSlot>\n            </div>\n        </div>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush\n                }]\n        }], ctorParameters: function () { return [{ type: Galleria }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { activeIndex: [{\n                type: Input\n            }], value: [{\n                type: Input\n            }], numVisible: [{\n                type: Input\n            }], maskHide: [{\n                type: Output\n            }], activeItemChange: [{\n                type: Output\n            }] } });\nclass GalleriaItemSlot {\n    get item() {\n        return this._item;\n    }\n    ;\n    set item(item) {\n        this._item = item;\n        if (this.templates) {\n            this.templates.forEach((item) => {\n                if (item.getType() === this.type) {\n                    switch (this.type) {\n                        case 'item':\n                        case 'caption':\n                        case 'thumbnail':\n                            this.context = { $implicit: this.item };\n                            this.contentTemplate = item.template;\n                            break;\n                    }\n                }\n            });\n        }\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            if (item.getType() === this.type) {\n                switch (this.type) {\n                    case 'item':\n                    case 'caption':\n                    case 'thumbnail':\n                        this.context = { $implicit: this.item };\n                        this.contentTemplate = item.template;\n                        break;\n                    case 'indicator':\n                        this.context = { $implicit: this.index };\n                        this.contentTemplate = item.template;\n                        break;\n                    default:\n                        this.context = {};\n                        this.contentTemplate = item.template;\n                        break;\n                }\n            }\n        });\n    }\n}\nGalleriaItemSlot.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaItemSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGalleriaItemSlot.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: GalleriaItemSlot, selector: \"p-galleriaItemSlot\", inputs: { templates: \"templates\", index: \"index\", item: \"item\", type: \"type\" }, ngImport: i0, template: `\n        <ng-container *ngIf=\"contentTemplate\">\n            <ng-container *ngTemplateOutlet=\"contentTemplate; context: context\"></ng-container>\n        </ng-container>\n    `, isInline: true, directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaItemSlot, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-galleriaItemSlot',\n                    template: `\n        <ng-container *ngIf=\"contentTemplate\">\n            <ng-container *ngTemplateOutlet=\"contentTemplate; context: context\"></ng-container>\n        </ng-container>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush\n                }]\n        }], propDecorators: { templates: [{\n                type: Input\n            }], index: [{\n                type: Input\n            }], item: [{\n                type: Input\n            }], type: [{\n                type: Input\n            }] } });\nclass GalleriaItem {\n    constructor() {\n        this.circular = false;\n        this.showItemNavigators = false;\n        this.showIndicators = true;\n        this.slideShowActive = true;\n        this.changeItemOnIndicatorHover = true;\n        this.autoPlay = false;\n        this.startSlideShow = new EventEmitter();\n        this.stopSlideShow = new EventEmitter();\n        this.onActiveIndexChange = new EventEmitter();\n        this._activeIndex = 0;\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    ;\n    set activeIndex(activeIndex) {\n        this._activeIndex = activeIndex;\n        this.activeItem = this.value[this._activeIndex];\n    }\n    ngOnInit() {\n        if (this.autoPlay) {\n            this.startSlideShow.emit();\n        }\n    }\n    next() {\n        let nextItemIndex = this.activeIndex + 1;\n        let activeIndex = this.circular && this.value.length - 1 === this.activeIndex\n            ? 0\n            : nextItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n    }\n    prev() {\n        let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;\n        let activeIndex = this.circular && this.activeIndex === 0\n            ? this.value.length - 1\n            : prevItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n    }\n    stopTheSlideShow() {\n        if (this.slideShowActive && this.stopSlideShow) {\n            this.stopSlideShow.emit();\n        }\n    }\n    navForward(e) {\n        this.stopTheSlideShow();\n        this.next();\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    navBackward(e) {\n        this.stopTheSlideShow();\n        this.prev();\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    onIndicatorClick(index) {\n        this.stopTheSlideShow();\n        this.onActiveIndexChange.emit(index);\n    }\n    onIndicatorMouseEnter(index) {\n        if (this.changeItemOnIndicatorHover) {\n            this.stopTheSlideShow();\n            this.onActiveIndexChange.emit(index);\n        }\n    }\n    onIndicatorKeyDown(index) {\n        this.stopTheSlideShow();\n        this.onActiveIndexChange.emit(index);\n    }\n    isNavForwardDisabled() {\n        return !this.circular && this.activeIndex === (this.value.length - 1);\n    }\n    isNavBackwardDisabled() {\n        return !this.circular && this.activeIndex === 0;\n    }\n    isIndicatorItemActive(index) {\n        return this.activeIndex === index;\n    }\n}\nGalleriaItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaItem, deps: [], target: i0.ɵɵFactoryTarget.Component });\nGalleriaItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: GalleriaItem, selector: \"p-galleriaItem\", inputs: { circular: \"circular\", value: \"value\", showItemNavigators: \"showItemNavigators\", showIndicators: \"showIndicators\", slideShowActive: \"slideShowActive\", changeItemOnIndicatorHover: \"changeItemOnIndicatorHover\", autoPlay: \"autoPlay\", templates: \"templates\", indicatorFacet: \"indicatorFacet\", captionFacet: \"captionFacet\", activeIndex: \"activeIndex\" }, outputs: { startSlideShow: \"startSlideShow\", stopSlideShow: \"stopSlideShow\", onActiveIndexChange: \"onActiveIndexChange\" }, ngImport: i0, template: `\n        <div class=\"p-galleria-item-wrapper\">\n            <div class=\"p-galleria-item-container\">\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-prev-icon pi pi-chevron-left\"></span>\n                </button>\n                <p-galleriaItemSlot type=\"item\" [item]=\"activeItem\" [templates]=\"templates\" class=\"p-galleria-item\"></p-galleriaItemSlot>\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\"  [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-next-icon pi pi-chevron-right\"></span>\n                </button>\n                <div class=\"p-galleria-caption\" *ngIf=\"captionFacet\">\n                    <p-galleriaItemSlot type=\"caption\" [item]=\"activeItem\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </div>\n            </div>\n            <ul *ngIf=\"showIndicators\" class=\"p-galleria-indicators p-reset\">\n                <li *ngFor=\"let item of value; let index = index;\" tabindex=\"0\"\n                    (click)=\"onIndicatorClick(index)\" (mouseenter)=\"onIndicatorMouseEnter(index)\" (keydown.enter)=\"onIndicatorKeyDown(index)\"\n                    [ngClass]=\"{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}\">\n                    <button type=\"button\" tabIndex=\"-1\" class=\"p-link\" *ngIf=\"!indicatorFacet\">\n                    </button>\n                    <p-galleriaItemSlot type=\"indicator\" [index]=\"index\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </li>\n            </ul>\n        </div>\n    `, isInline: true, components: [{ type: GalleriaItemSlot, selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.Ripple, selector: \"[pRipple]\" }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaItem, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-galleriaItem',\n                    template: `\n        <div class=\"p-galleria-item-wrapper\">\n            <div class=\"p-galleria-item-container\">\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-prev-icon pi pi-chevron-left\"></span>\n                </button>\n                <p-galleriaItemSlot type=\"item\" [item]=\"activeItem\" [templates]=\"templates\" class=\"p-galleria-item\"></p-galleriaItemSlot>\n                <button *ngIf=\"showItemNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-item-next p-galleria-item-nav p-link': true,'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\"  [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span class=\"p-galleria-item-next-icon pi pi-chevron-right\"></span>\n                </button>\n                <div class=\"p-galleria-caption\" *ngIf=\"captionFacet\">\n                    <p-galleriaItemSlot type=\"caption\" [item]=\"activeItem\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </div>\n            </div>\n            <ul *ngIf=\"showIndicators\" class=\"p-galleria-indicators p-reset\">\n                <li *ngFor=\"let item of value; let index = index;\" tabindex=\"0\"\n                    (click)=\"onIndicatorClick(index)\" (mouseenter)=\"onIndicatorMouseEnter(index)\" (keydown.enter)=\"onIndicatorKeyDown(index)\"\n                    [ngClass]=\"{'p-galleria-indicator': true,'p-highlight': isIndicatorItemActive(index)}\">\n                    <button type=\"button\" tabIndex=\"-1\" class=\"p-link\" *ngIf=\"!indicatorFacet\">\n                    </button>\n                    <p-galleriaItemSlot type=\"indicator\" [index]=\"index\" [templates]=\"templates\"></p-galleriaItemSlot>\n                </li>\n            </ul>\n        </div>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush\n                }]\n        }], propDecorators: { circular: [{\n                type: Input\n            }], value: [{\n                type: Input\n            }], showItemNavigators: [{\n                type: Input\n            }], showIndicators: [{\n                type: Input\n            }], slideShowActive: [{\n                type: Input\n            }], changeItemOnIndicatorHover: [{\n                type: Input\n            }], autoPlay: [{\n                type: Input\n            }], templates: [{\n                type: Input\n            }], indicatorFacet: [{\n                type: Input\n            }], captionFacet: [{\n                type: Input\n            }], startSlideShow: [{\n                type: Output\n            }], stopSlideShow: [{\n                type: Output\n            }], onActiveIndexChange: [{\n                type: Output\n            }], activeIndex: [{\n                type: Input\n            }] } });\nclass GalleriaThumbnails {\n    constructor(cd) {\n        this.cd = cd;\n        this.isVertical = false;\n        this.slideShowActive = false;\n        this.circular = false;\n        this.contentHeight = \"300px\";\n        this.showThumbnailNavigators = true;\n        this.onActiveIndexChange = new EventEmitter();\n        this.stopSlideShow = new EventEmitter();\n        this.startPos = null;\n        this.thumbnailsStyle = null;\n        this.sortedResponsiveOptions = null;\n        this.totalShiftedItems = 0;\n        this.page = 0;\n        this._numVisible = 0;\n        this.d_numVisible = 0;\n        this._oldNumVisible = 0;\n        this._activeIndex = 0;\n        this._oldactiveIndex = 0;\n    }\n    get numVisible() {\n        return this._numVisible;\n    }\n    ;\n    set numVisible(numVisible) {\n        this._numVisible = numVisible;\n        this._oldNumVisible = this.d_numVisible;\n        this.d_numVisible = numVisible;\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    ;\n    set activeIndex(activeIndex) {\n        this._oldactiveIndex = this._activeIndex;\n        this._activeIndex = activeIndex;\n    }\n    ngOnInit() {\n        this.createStyle();\n        if (this.responsiveOptions) {\n            this.bindDocumentListeners();\n        }\n    }\n    ngAfterContentChecked() {\n        let totalShiftedItems = this.totalShiftedItems;\n        if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {\n            if (this._activeIndex <= this.getMedianItemIndex()) {\n                totalShiftedItems = 0;\n            }\n            else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {\n                totalShiftedItems = this.d_numVisible - this.value.length;\n            }\n            else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {\n                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex() + 1;\n            }\n            else {\n                totalShiftedItems = (this._activeIndex * -1) + this.getMedianItemIndex();\n            }\n            if (totalShiftedItems !== this.totalShiftedItems) {\n                this.totalShiftedItems = totalShiftedItems;\n            }\n            if (this.itemsContainer && this.itemsContainer.nativeElement) {\n                this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n            }\n            if (this._oldactiveIndex !== this._activeIndex) {\n                DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n                this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n            }\n            this._oldactiveIndex = this._activeIndex;\n            this._oldNumVisible = this.d_numVisible;\n        }\n    }\n    ngAfterViewInit() {\n        this.calculatePosition();\n    }\n    createStyle() {\n        if (!this.thumbnailsStyle) {\n            this.thumbnailsStyle = document.createElement('style');\n            this.thumbnailsStyle.type = 'text/css';\n            document.body.appendChild(this.thumbnailsStyle);\n        }\n        let innerHTML = `\n            #${this.containerId} .p-galleria-thumbnail-item {\n                flex: 1 0 ${(100 / this.d_numVisible)}%\n            }\n        `;\n        if (this.responsiveOptions) {\n            this.sortedResponsiveOptions = [...this.responsiveOptions];\n            this.sortedResponsiveOptions.sort((data1, data2) => {\n                const value1 = data1.breakpoint;\n                const value2 = data2.breakpoint;\n                let result = null;\n                if (value1 == null && value2 != null)\n                    result = -1;\n                else if (value1 != null && value2 == null)\n                    result = 1;\n                else if (value1 == null && value2 == null)\n                    result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string')\n                    result = value1.localeCompare(value2, undefined, { numeric: true });\n                else\n                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n                return -1 * result;\n            });\n            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n                let res = this.sortedResponsiveOptions[i];\n                innerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.containerId} .p-galleria-thumbnail-item {\n                            flex: 1 0 ${(100 / res.numVisible)}%\n                        }\n                    }\n                `;\n            }\n        }\n        this.thumbnailsStyle.innerHTML = innerHTML;\n    }\n    calculatePosition() {\n        if (this.itemsContainer && this.sortedResponsiveOptions) {\n            let windowWidth = window.innerWidth;\n            let matchedResponsiveData = {\n                numVisible: this._numVisible\n            };\n            for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {\n                let res = this.sortedResponsiveOptions[i];\n                if (parseInt(res.breakpoint, 10) >= windowWidth) {\n                    matchedResponsiveData = res;\n                }\n            }\n            if (this.d_numVisible !== matchedResponsiveData.numVisible) {\n                this.d_numVisible = matchedResponsiveData.numVisible;\n                this.cd.markForCheck();\n            }\n        }\n    }\n    getTabIndex(index) {\n        return this.isItemActive(index) ? 0 : null;\n    }\n    navForward(e) {\n        this.stopTheSlideShow();\n        let nextItemIndex = this._activeIndex + 1;\n        if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1 || this.circular)) {\n            this.step(-1);\n        }\n        let activeIndex = this.circular && (this.value.length - 1) === this._activeIndex ? 0 : nextItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    navBackward(e) {\n        this.stopTheSlideShow();\n        let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;\n        let diff = prevItemIndex + this.totalShiftedItems;\n        if ((this.d_numVisible - diff - 1) > this.getMedianItemIndex() && ((-1 * this.totalShiftedItems) !== 0 || this.circular)) {\n            this.step(1);\n        }\n        let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;\n        this.onActiveIndexChange.emit(activeIndex);\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    onItemClick(index) {\n        this.stopTheSlideShow();\n        let selectedItemIndex = index;\n        if (selectedItemIndex !== this._activeIndex) {\n            const diff = selectedItemIndex + this.totalShiftedItems;\n            let dir = 0;\n            if (selectedItemIndex < this._activeIndex) {\n                dir = (this.d_numVisible - diff - 1) - this.getMedianItemIndex();\n                if (dir > 0 && (-1 * this.totalShiftedItems) !== 0) {\n                    this.step(dir);\n                }\n            }\n            else {\n                dir = this.getMedianItemIndex() - diff;\n                if (dir < 0 && (-1 * this.totalShiftedItems) < this.getTotalPageNumber() - 1) {\n                    this.step(dir);\n                }\n            }\n            this.activeIndex = selectedItemIndex;\n            this.onActiveIndexChange.emit(this.activeIndex);\n        }\n    }\n    step(dir) {\n        let totalShiftedItems = this.totalShiftedItems + dir;\n        if (dir < 0 && (-1 * totalShiftedItems) + this.d_numVisible > (this.value.length - 1)) {\n            totalShiftedItems = this.d_numVisible - this.value.length;\n        }\n        else if (dir > 0 && totalShiftedItems > 0) {\n            totalShiftedItems = 0;\n        }\n        if (this.circular) {\n            if (dir < 0 && this.value.length - 1 === this._activeIndex) {\n                totalShiftedItems = 0;\n            }\n            else if (dir > 0 && this._activeIndex === 0) {\n                totalShiftedItems = this.d_numVisible - this.value.length;\n            }\n        }\n        if (this.itemsContainer) {\n            DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n            this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;\n            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n        }\n        this.totalShiftedItems = totalShiftedItems;\n    }\n    stopTheSlideShow() {\n        if (this.slideShowActive && this.stopSlideShow) {\n            this.stopSlideShow.emit();\n        }\n    }\n    changePageOnTouch(e, diff) {\n        if (diff < 0) { // left\n            this.navForward(e);\n        }\n        else { // right\n            this.navBackward(e);\n        }\n    }\n    getTotalPageNumber() {\n        return this.value.length > this.d_numVisible ? (this.value.length - this.d_numVisible) + 1 : 0;\n    }\n    getMedianItemIndex() {\n        let index = Math.floor(this.d_numVisible / 2);\n        return (this.d_numVisible % 2) ? index : index - 1;\n    }\n    onTransitionEnd() {\n        if (this.itemsContainer && this.itemsContainer.nativeElement) {\n            DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');\n            this.itemsContainer.nativeElement.style.transition = '';\n        }\n    }\n    onTouchEnd(e) {\n        let touchobj = e.changedTouches[0];\n        if (this.isVertical) {\n            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));\n        }\n        else {\n            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));\n        }\n    }\n    onTouchMove(e) {\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    onTouchStart(e) {\n        let touchobj = e.changedTouches[0];\n        this.startPos = {\n            x: touchobj.pageX,\n            y: touchobj.pageY\n        };\n    }\n    isNavBackwardDisabled() {\n        return (!this.circular && this._activeIndex === 0) || (this.value.length <= this.d_numVisible);\n    }\n    isNavForwardDisabled() {\n        return (!this.circular && this._activeIndex === (this.value.length - 1)) || (this.value.length <= this.d_numVisible);\n    }\n    firstItemAciveIndex() {\n        return this.totalShiftedItems * -1;\n    }\n    lastItemActiveIndex() {\n        return this.firstItemAciveIndex() + this.d_numVisible - 1;\n    }\n    isItemActive(index) {\n        return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;\n    }\n    bindDocumentListeners() {\n        if (!this.documentResizeListener) {\n            this.documentResizeListener = () => {\n                this.calculatePosition();\n            };\n            window.addEventListener('resize', this.documentResizeListener);\n        }\n    }\n    unbindDocumentListeners() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n    ngOnDestroy() {\n        if (this.responsiveOptions) {\n            this.unbindDocumentListeners();\n        }\n        if (this.thumbnailsStyle) {\n            this.thumbnailsStyle.parentNode.removeChild(this.thumbnailsStyle);\n        }\n    }\n}\nGalleriaThumbnails.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaThumbnails, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nGalleriaThumbnails.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: GalleriaThumbnails, selector: \"p-galleriaThumbnails\", inputs: { containerId: \"containerId\", value: \"value\", isVertical: \"isVertical\", slideShowActive: \"slideShowActive\", circular: \"circular\", responsiveOptions: \"responsiveOptions\", contentHeight: \"contentHeight\", showThumbnailNavigators: \"showThumbnailNavigators\", templates: \"templates\", numVisible: \"numVisible\", activeIndex: \"activeIndex\" }, outputs: { onActiveIndexChange: \"onActiveIndexChange\", stopSlideShow: \"stopSlideShow\" }, viewQueries: [{ propertyName: \"itemsContainer\", first: true, predicate: [\"itemsContainer\"], descendants: true }], ngImport: i0, template: `\n        <div class=\"p-galleria-thumbnail-wrapper\">\n            <div class=\"p-galleria-thumbnail-container\">\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}\"></span>\n                </button>\n                <div class=\"p-galleria-thumbnail-items-container\" [ngStyle]=\"{'height': isVertical ? contentHeight : ''}\">\n                    <div #itemsContainer class=\"p-galleria-thumbnail-items\" (transitionend)=\"onTransitionEnd()\"\n                        (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\">\n                        <div *ngFor=\"let item of value; let index = index;\" [ngClass]=\"{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),\n                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }\">\n                            <div class=\"p-galleria-thumbnail-item-content\" [attr.tabindex]=\"getTabIndex(index)\" (click)=\"onItemClick(index)\" (keydown.enter)=\"onItemClick(index)\">\n                                <p-galleriaItemSlot type=\"thumbnail\" [item]=\"item\" [templates]=\"templates\"></p-galleriaItemSlot>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\" [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}\"></span>\n                </button>\n            </div>\n        </div>\n    `, isInline: true, components: [{ type: GalleriaItemSlot, selector: \"p-galleriaItemSlot\", inputs: [\"templates\", \"index\", \"item\", \"type\"] }], directives: [{ type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.Ripple, selector: \"[pRipple]\" }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaThumbnails, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-galleriaThumbnails',\n                    template: `\n        <div class=\"p-galleria-thumbnail-wrapper\">\n            <div class=\"p-galleria-thumbnail-container\">\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled()}\" (click)=\"navBackward($event)\" [disabled]=\"isNavBackwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-prev-icon pi': true, 'pi-chevron-left': !this.isVertical, 'pi-chevron-up': this.isVertical}\"></span>\n                </button>\n                <div class=\"p-galleria-thumbnail-items-container\" [ngStyle]=\"{'height': isVertical ? contentHeight : ''}\">\n                    <div #itemsContainer class=\"p-galleria-thumbnail-items\" (transitionend)=\"onTransitionEnd()\"\n                        (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\">\n                        <div *ngFor=\"let item of value; let index = index;\" [ngClass]=\"{'p-galleria-thumbnail-item': true, 'p-galleria-thumbnail-item-current': activeIndex === index, 'p-galleria-thumbnail-item-active': isItemActive(index),\n                            'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index, 'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index }\">\n                            <div class=\"p-galleria-thumbnail-item-content\" [attr.tabindex]=\"getTabIndex(index)\" (click)=\"onItemClick(index)\" (keydown.enter)=\"onItemClick(index)\">\n                                <p-galleriaItemSlot type=\"thumbnail\" [item]=\"item\" [templates]=\"templates\"></p-galleriaItemSlot>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <button *ngIf=\"showThumbnailNavigators\" type=\"button\" [ngClass]=\"{'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled()}\" (click)=\"navForward($event)\" [disabled]=\"isNavForwardDisabled()\" pRipple>\n                    <span [ngClass]=\"{'p-galleria-thumbnail-next-icon pi': true, 'pi-chevron-right': !this.isVertical, 'pi-chevron-down': this.isVertical}\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { containerId: [{\n                type: Input\n            }], value: [{\n                type: Input\n            }], isVertical: [{\n                type: Input\n            }], slideShowActive: [{\n                type: Input\n            }], circular: [{\n                type: Input\n            }], responsiveOptions: [{\n                type: Input\n            }], contentHeight: [{\n                type: Input\n            }], showThumbnailNavigators: [{\n                type: Input\n            }], templates: [{\n                type: Input\n            }], onActiveIndexChange: [{\n                type: Output\n            }], stopSlideShow: [{\n                type: Output\n            }], itemsContainer: [{\n                type: ViewChild,\n                args: ['itemsContainer']\n            }], numVisible: [{\n                type: Input\n            }], activeIndex: [{\n                type: Input\n            }] } });\nclass GalleriaModule {\n}\nGalleriaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nGalleriaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaModule, declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule] });\nGalleriaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaModule, imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: GalleriaModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, SharedModule, RippleModule],\n                    exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],\n                    declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Galleria, GalleriaContent, GalleriaItem, GalleriaItemSlot, GalleriaModule, GalleriaThumbnails };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/20cce459a73117880e512df751112cb6.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/20cce459a73117880e512df751112cb6.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/20cce459a73117880e512df751112cb6.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, ElementRef, ApplicationRef, InjectionToken, Directive, EventEmitter, Optional, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\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\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\n\nclass BlockScrollStrategy {\n  constructor(_viewportRuler, document) {\n    this._viewportRuler = _viewportRuler;\n    this._previousHTMLStyles = {\n      top: '',\n      left: ''\n    };\n    this._isEnabled = false;\n    this._document = document;\n  }\n  /** Attaches this scroll strategy to an overlay. */\n\n\n  attach() {}\n  /** Blocks page-level scroll while the attached overlay is open. */\n\n\n  enable() {\n    if (this._canBeEnabled()) {\n      const root = this._document.documentElement;\n      this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition(); // Cache the previous inline styles in case the user had set them.\n\n      this._previousHTMLStyles.left = root.style.left || '';\n      this._previousHTMLStyles.top = root.style.top || ''; // Note: we're using the `html` node, instead of the `body`, because the `body` may\n      // have the user agent margin, whereas the `html` is guaranteed not to have one.\n\n      root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n      root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n      root.classList.add('cdk-global-scrollblock');\n      this._isEnabled = true;\n    }\n  }\n  /** Unblocks page-level scroll while the attached overlay is open. */\n\n\n  disable() {\n    if (this._isEnabled) {\n      const html = this._document.documentElement;\n      const body = this._document.body;\n      const htmlStyle = html.style;\n      const bodyStyle = body.style;\n      const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n      const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n      this._isEnabled = false;\n      htmlStyle.left = this._previousHTMLStyles.left;\n      htmlStyle.top = this._previousHTMLStyles.top;\n      html.classList.remove('cdk-global-scrollblock'); // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n      // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n      // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n      // because it can throw off feature detections in `supportsScrollBehavior` which\n      // checks for `'scrollBehavior' in documentElement.style`.\n\n      if (scrollBehaviorSupported) {\n        htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n      }\n\n      window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n\n      if (scrollBehaviorSupported) {\n        htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n        bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n      }\n    }\n  }\n\n  _canBeEnabled() {\n    // Since the scroll strategies can't be singletons, we have to use a global CSS class\n    // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n    // scrolling multiple times.\n    const html = this._document.documentElement;\n\n    if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n      return false;\n    }\n\n    const body = this._document.body;\n\n    const viewport = this._viewportRuler.getViewportSize();\n\n    return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n  }\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/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\n\n\nfunction getMatScrollStrategyAlreadyAttachedError() {\n  return Error(`Scroll strategy has already been attached.`);\n}\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\n\n\nclass CloseScrollStrategy {\n  constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n    this._scrollDispatcher = _scrollDispatcher;\n    this._ngZone = _ngZone;\n    this._viewportRuler = _viewportRuler;\n    this._config = _config;\n    this._scrollSubscription = null;\n    /** Detaches the overlay ref and disables the scroll strategy. */\n\n    this._detach = () => {\n      this.disable();\n\n      if (this._overlayRef.hasAttached()) {\n        this._ngZone.run(() => this._overlayRef.detach());\n      }\n    };\n  }\n  /** Attaches this scroll strategy to an overlay. */\n\n\n  attach(overlayRef) {\n    if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getMatScrollStrategyAlreadyAttachedError();\n    }\n\n    this._overlayRef = overlayRef;\n  }\n  /** Enables the closing of the attached overlay on scroll. */\n\n\n  enable() {\n    if (this._scrollSubscription) {\n      return;\n    }\n\n    const stream = this._scrollDispatcher.scrolled(0);\n\n    if (this._config && this._config.threshold && this._config.threshold > 1) {\n      this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n      this._scrollSubscription = stream.subscribe(() => {\n        const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n\n        if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n          this._detach();\n        } else {\n          this._overlayRef.updatePosition();\n        }\n      });\n    } else {\n      this._scrollSubscription = stream.subscribe(this._detach);\n    }\n  }\n  /** Disables the closing the attached overlay on scroll. */\n\n\n  disable() {\n    if (this._scrollSubscription) {\n      this._scrollSubscription.unsubscribe();\n\n      this._scrollSubscription = null;\n    }\n  }\n\n  detach() {\n    this.disable();\n    this._overlayRef = null;\n  }\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/** Scroll strategy that doesn't do anything. */\n\n\nclass NoopScrollStrategy {\n  /** Does nothing, as this scroll strategy is a no-op. */\n  enable() {}\n  /** Does nothing, as this scroll strategy is a no-op. */\n\n\n  disable() {}\n  /** Does nothing, as this scroll strategy is a no-op. */\n\n\n  attach() {}\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/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\n\n\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n  return scrollContainers.some(containerBounds => {\n    const outsideAbove = element.bottom < containerBounds.top;\n    const outsideBelow = element.top > containerBounds.bottom;\n    const outsideLeft = element.right < containerBounds.left;\n    const outsideRight = element.left > containerBounds.right;\n    return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n  });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\n\n\nfunction isElementClippedByScrolling(element, scrollContainers) {\n  return scrollContainers.some(scrollContainerRect => {\n    const clippedAbove = element.top < scrollContainerRect.top;\n    const clippedBelow = element.bottom > scrollContainerRect.bottom;\n    const clippedLeft = element.left < scrollContainerRect.left;\n    const clippedRight = element.right > scrollContainerRect.right;\n    return clippedAbove || clippedBelow || clippedLeft || clippedRight;\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/**\n * Strategy that will update the element position as the user is scrolling.\n */\n\n\nclass RepositionScrollStrategy {\n  constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n    this._scrollDispatcher = _scrollDispatcher;\n    this._viewportRuler = _viewportRuler;\n    this._ngZone = _ngZone;\n    this._config = _config;\n    this._scrollSubscription = null;\n  }\n  /** Attaches this scroll strategy to an overlay. */\n\n\n  attach(overlayRef) {\n    if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getMatScrollStrategyAlreadyAttachedError();\n    }\n\n    this._overlayRef = overlayRef;\n  }\n  /** Enables repositioning of the attached overlay on scroll. */\n\n\n  enable() {\n    if (!this._scrollSubscription) {\n      const throttle = this._config ? this._config.scrollThrottle : 0;\n      this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n        this._overlayRef.updatePosition(); // TODO(crisbeto): make `close` on by default once all components can handle it.\n\n\n        if (this._config && this._config.autoClose) {\n          const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n\n          const {\n            width,\n            height\n          } = this._viewportRuler.getViewportSize(); // TODO(crisbeto): include all ancestor scroll containers here once\n          // we have a way of exposing the trigger element to the scroll strategy.\n\n\n          const parentRects = [{\n            width,\n            height,\n            bottom: height,\n            right: width,\n            top: 0,\n            left: 0\n          }];\n\n          if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n            this.disable();\n\n            this._ngZone.run(() => this._overlayRef.detach());\n          }\n        }\n      });\n    }\n  }\n  /** Disables repositioning of the attached overlay on scroll. */\n\n\n  disable() {\n    if (this._scrollSubscription) {\n      this._scrollSubscription.unsubscribe();\n\n      this._scrollSubscription = null;\n    }\n  }\n\n  detach() {\n    this.disable();\n    this._overlayRef = null;\n  }\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/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\n\n\nclass ScrollStrategyOptions {\n  constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n    this._scrollDispatcher = _scrollDispatcher;\n    this._viewportRuler = _viewportRuler;\n    this._ngZone = _ngZone;\n    /** Do nothing on scroll. */\n\n    this.noop = () => new NoopScrollStrategy();\n    /**\n     * Close the overlay as soon as the user scrolls.\n     * @param config Configuration to be used inside the scroll strategy.\n     */\n\n\n    this.close = config => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n    /** Block scrolling. */\n\n\n    this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n    /**\n     * Update the overlay's position on scroll.\n     * @param config Configuration to be used inside the scroll strategy.\n     * Allows debouncing the reposition calls.\n     */\n\n\n    this.reposition = config => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n\n    this._document = document;\n  }\n\n}\n\nScrollStrategyOptions.ɵfac = function ScrollStrategyOptions_Factory(t) {\n  return new (t || ScrollStrategyOptions)(i0.ɵɵinject(i1.ScrollDispatcher), i0.ɵɵinject(i1.ViewportRuler), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT));\n};\n\nScrollStrategyOptions.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ScrollStrategyOptions,\n  factory: ScrollStrategyOptions.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollStrategyOptions, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.ScrollDispatcher\n    }, {\n      type: i1.ViewportRuler\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\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/**\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/** Initial configuration used when creating an overlay. */\n\n\nclass OverlayConfig {\n  constructor(config) {\n    /** Strategy to be used when handling scroll events while the overlay is open. */\n    this.scrollStrategy = new NoopScrollStrategy();\n    /** Custom class to add to the overlay pane. */\n\n    this.panelClass = '';\n    /** Whether the overlay has a backdrop. */\n\n    this.hasBackdrop = false;\n    /** Custom class to add to the backdrop */\n\n    this.backdropClass = 'cdk-overlay-dark-backdrop';\n    /**\n     * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n     * Note that this usually doesn't include clicking on links (unless the user is using\n     * the `HashLocationStrategy`).\n     */\n\n    this.disposeOnNavigation = false;\n\n    if (config) {\n      // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n      // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n      // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n      const configKeys = Object.keys(config);\n\n      for (const key of configKeys) {\n        if (config[key] !== undefined) {\n          // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n          // as \"I don't know *which* key this is, so the only valid value is the intersection\n          // of all the posible values.\" In this case, that happens to be `undefined`. TypeScript\n          // is not smart enough to see that the right-hand-side is actually an access of the same\n          // exact type with the same exact key, meaning that the value type must be identical.\n          // So we use `any` to work around this.\n          this[key] = config[key];\n        }\n      }\n    }\n  }\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/** The points of the origin element and the overlay element to connect. */\n\n\nclass ConnectionPositionPair {\n  constructor(origin, overlay,\n  /** Offset along the X axis. */\n  offsetX,\n  /** Offset along the Y axis. */\n  offsetY,\n  /** Class(es) to be applied to the panel while this position is active. */\n  panelClass) {\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n    this.panelClass = panelClass;\n    this.originX = origin.originX;\n    this.originY = origin.originY;\n    this.overlayX = overlay.overlayX;\n    this.overlayY = overlay.overlayY;\n  }\n\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n *       -----------                    -----------\n *       | outside |                    | clipped |\n *       |  view   |              --------------------------\n *       |         |              |     |         |        |\n *       ----------               |     -----------        |\n *  --------------------------    |                        |\n *  |                        |    |      Scrollable        |\n *  |                        |    |                        |\n *  |                        |     --------------------------\n *  |      Scrollable        |\n *  |                        |\n *  --------------------------\n *\n *  @docs-private\n */\n\n\nclass ScrollingVisibility {}\n/** The change event emitted by the strategy when a fallback position is used. */\n\n\nclass ConnectedOverlayPositionChange {\n  constructor(\n  /** The position used as a result of this change. */\n  connectionPair,\n  /** @docs-private */\n  scrollableViewProperties) {\n    this.connectionPair = connectionPair;\n    this.scrollableViewProperties = scrollableViewProperties;\n  }\n\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\n\n\nfunction validateVerticalPosition(property, value) {\n  if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n    throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` + `Expected \"top\", \"bottom\" or \"center\".`);\n  }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\n\n\nfunction validateHorizontalPosition(property, value) {\n  if (value !== 'start' && value !== 'end' && value !== 'center') {\n    throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` + `Expected \"start\", \"end\" or \"center\".`);\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/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\n\n\nclass BaseOverlayDispatcher {\n  constructor(document) {\n    /** Currently attached overlays in the order they were attached. */\n    this._attachedOverlays = [];\n    this._document = document;\n  }\n\n  ngOnDestroy() {\n    this.detach();\n  }\n  /** Add a new overlay to the list of attached overlay refs. */\n\n\n  add(overlayRef) {\n    // Ensure that we don't get the same overlay multiple times.\n    this.remove(overlayRef);\n\n    this._attachedOverlays.push(overlayRef);\n  }\n  /** Remove an overlay from the list of attached overlay refs. */\n\n\n  remove(overlayRef) {\n    const index = this._attachedOverlays.indexOf(overlayRef);\n\n    if (index > -1) {\n      this._attachedOverlays.splice(index, 1);\n    } // Remove the global listener once there are no more overlays.\n\n\n    if (this._attachedOverlays.length === 0) {\n      this.detach();\n    }\n  }\n\n}\n\nBaseOverlayDispatcher.ɵfac = function BaseOverlayDispatcher_Factory(t) {\n  return new (t || BaseOverlayDispatcher)(i0.ɵɵinject(DOCUMENT));\n};\n\nBaseOverlayDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: BaseOverlayDispatcher,\n  factory: BaseOverlayDispatcher.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BaseOverlayDispatcher, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\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/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\n\n\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n  constructor(document) {\n    super(document);\n    /** Keyboard event listener that will be attached to the body. */\n\n    this._keydownListener = event => {\n      const overlays = this._attachedOverlays;\n\n      for (let i = overlays.length - 1; i > -1; i--) {\n        // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n        // We want to target the most recent overlay, rather than trying to match where the event came\n        // from, because some components might open an overlay, but keep focus on a trigger element\n        // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n        // because we don't want overlays that don't handle keyboard events to block the ones below\n        // them that do.\n        if (overlays[i]._keydownEvents.observers.length > 0) {\n          overlays[i]._keydownEvents.next(event);\n\n          break;\n        }\n      }\n    };\n  }\n  /** Add a new overlay to the list of attached overlay refs. */\n\n\n  add(overlayRef) {\n    super.add(overlayRef); // Lazily start dispatcher once first overlay is added\n\n    if (!this._isAttached) {\n      this._document.body.addEventListener('keydown', this._keydownListener);\n\n      this._isAttached = true;\n    }\n  }\n  /** Detaches the global keyboard event listener. */\n\n\n  detach() {\n    if (this._isAttached) {\n      this._document.body.removeEventListener('keydown', this._keydownListener);\n\n      this._isAttached = false;\n    }\n  }\n\n}\n\nOverlayKeyboardDispatcher.ɵfac = function OverlayKeyboardDispatcher_Factory(t) {\n  return new (t || OverlayKeyboardDispatcher)(i0.ɵɵinject(DOCUMENT));\n};\n\nOverlayKeyboardDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: OverlayKeyboardDispatcher,\n  factory: OverlayKeyboardDispatcher.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayKeyboardDispatcher, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\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/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\n\n\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n  constructor(document, _platform) {\n    super(document);\n    this._platform = _platform;\n    this._cursorStyleIsSet = false;\n    /** Store pointerdown event target to track origin of click. */\n\n    this._pointerDownListener = event => {\n      this._pointerDownEventTarget = _getEventTarget(event);\n    };\n    /** Click event listener that will be attached to the body propagate phase. */\n\n\n    this._clickListener = event => {\n      const target = _getEventTarget(event); // In case of a click event, we want to check the origin of the click\n      // (e.g. in case where a user starts a click inside the overlay and\n      // releases the click outside of it).\n      // This is done by using the event target of the preceding pointerdown event.\n      // Every click event caused by a pointer device has a preceding pointerdown\n      // event, unless the click was programmatically triggered (e.g. in a unit test).\n\n\n      const origin = event.type === 'click' && this._pointerDownEventTarget ? this._pointerDownEventTarget : target; // Reset the stored pointerdown event target, to avoid having it interfere\n      // in subsequent events.\n\n      this._pointerDownEventTarget = null; // We copy the array because the original may be modified asynchronously if the\n      // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n      // the for loop.\n\n      const overlays = this._attachedOverlays.slice(); // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n      // We want to target all overlays for which the click could be considered as outside click.\n      // As soon as we reach an overlay for which the click is not outside click we break off\n      // the loop.\n\n\n      for (let i = overlays.length - 1; i > -1; i--) {\n        const overlayRef = overlays[i];\n\n        if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n          continue;\n        } // If it's a click inside the overlay, just break - we should do nothing\n        // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n        // and proceed with the next overlay\n\n\n        if (overlayRef.overlayElement.contains(target) || overlayRef.overlayElement.contains(origin)) {\n          break;\n        }\n\n        overlayRef._outsidePointerEvents.next(event);\n      }\n    };\n  }\n  /** Add a new overlay to the list of attached overlay refs. */\n\n\n  add(overlayRef) {\n    super.add(overlayRef); // Safari on iOS does not generate click events for non-interactive\n    // elements. However, we want to receive a click for any element outside\n    // the overlay. We can force a \"clickable\" state by setting\n    // `cursor: pointer` on the document body. See:\n    // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n    // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n\n    if (!this._isAttached) {\n      const body = this._document.body;\n      body.addEventListener('pointerdown', this._pointerDownListener, true);\n      body.addEventListener('click', this._clickListener, true);\n      body.addEventListener('auxclick', this._clickListener, true);\n      body.addEventListener('contextmenu', this._clickListener, true); // click event is not fired on iOS. To make element \"clickable\" we are\n      // setting the cursor to pointer\n\n      if (this._platform.IOS && !this._cursorStyleIsSet) {\n        this._cursorOriginalValue = body.style.cursor;\n        body.style.cursor = 'pointer';\n        this._cursorStyleIsSet = true;\n      }\n\n      this._isAttached = true;\n    }\n  }\n  /** Detaches the global keyboard event listener. */\n\n\n  detach() {\n    if (this._isAttached) {\n      const body = this._document.body;\n      body.removeEventListener('pointerdown', this._pointerDownListener, true);\n      body.removeEventListener('click', this._clickListener, true);\n      body.removeEventListener('auxclick', this._clickListener, true);\n      body.removeEventListener('contextmenu', this._clickListener, true);\n\n      if (this._platform.IOS && this._cursorStyleIsSet) {\n        body.style.cursor = this._cursorOriginalValue;\n        this._cursorStyleIsSet = false;\n      }\n\n      this._isAttached = false;\n    }\n  }\n\n}\n\nOverlayOutsideClickDispatcher.ɵfac = function OverlayOutsideClickDispatcher_Factory(t) {\n  return new (t || OverlayOutsideClickDispatcher)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform));\n};\n\nOverlayOutsideClickDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: OverlayOutsideClickDispatcher,\n  factory: OverlayOutsideClickDispatcher.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayOutsideClickDispatcher, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: i1$1.Platform\n    }];\n  }, null);\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/** Container inside which all overlays will render. */\n\n\nclass OverlayContainer {\n  constructor(document, _platform) {\n    this._platform = _platform;\n    this._document = document;\n  }\n\n  ngOnDestroy() {\n    this._containerElement?.remove();\n  }\n  /**\n   * This method returns the overlay container element. It will lazily\n   * create the element the first time it is called to facilitate using\n   * the container in non-browser environments.\n   * @returns the container element\n   */\n\n\n  getContainerElement() {\n    if (!this._containerElement) {\n      this._createContainer();\n    }\n\n    return this._containerElement;\n  }\n  /**\n   * Create the overlay container element, which is simply a div\n   * with the 'cdk-overlay-container' class on the document body.\n   */\n\n\n  _createContainer() {\n    const containerClass = 'cdk-overlay-container'; // TODO(crisbeto): remove the testing check once we have an overlay testing\n    // module or Angular starts tearing down the testing `NgModule`. See:\n    // https://github.com/angular/angular/issues/18831\n\n    if (this._platform.isBrowser || _isTestEnvironment()) {\n      const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`); // Remove any old containers from the opposite platform.\n      // This can happen when transitioning from the server to the client.\n\n\n      for (let i = 0; i < oppositePlatformContainers.length; i++) {\n        oppositePlatformContainers[i].remove();\n      }\n    }\n\n    const container = this._document.createElement('div');\n\n    container.classList.add(containerClass); // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n    // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n    // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n    // To mitigate the problem we made it so that only containers from a different platform are\n    // cleared, but the side-effect was that people started depending on the overly-aggressive\n    // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n    // module which does the cleanup, we try to detect that we're in a test environment and we\n    // always clear the container. See #17006.\n    // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n\n    if (_isTestEnvironment()) {\n      container.setAttribute('platform', 'test');\n    } else if (!this._platform.isBrowser) {\n      container.setAttribute('platform', 'server');\n    }\n\n    this._document.body.appendChild(container);\n\n    this._containerElement = container;\n  }\n\n}\n\nOverlayContainer.ɵfac = function OverlayContainer_Factory(t) {\n  return new (t || OverlayContainer)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform));\n};\n\nOverlayContainer.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: OverlayContainer,\n  factory: OverlayContainer.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayContainer, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: i1$1.Platform\n    }];\n  }, null);\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/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\n\n\nclass OverlayRef {\n  constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher) {\n    this._portalOutlet = _portalOutlet;\n    this._host = _host;\n    this._pane = _pane;\n    this._config = _config;\n    this._ngZone = _ngZone;\n    this._keyboardDispatcher = _keyboardDispatcher;\n    this._document = _document;\n    this._location = _location;\n    this._outsideClickDispatcher = _outsideClickDispatcher;\n    this._backdropElement = null;\n    this._backdropClick = new Subject();\n    this._attachments = new Subject();\n    this._detachments = new Subject();\n    this._locationChanges = Subscription.EMPTY;\n\n    this._backdropClickHandler = event => this._backdropClick.next(event);\n    /** Stream of keydown events dispatched to this overlay. */\n\n\n    this._keydownEvents = new Subject();\n    /** Stream of mouse outside events dispatched to this overlay. */\n\n    this._outsidePointerEvents = new Subject();\n\n    if (_config.scrollStrategy) {\n      this._scrollStrategy = _config.scrollStrategy;\n\n      this._scrollStrategy.attach(this);\n    }\n\n    this._positionStrategy = _config.positionStrategy;\n  }\n  /** The overlay's HTML element */\n\n\n  get overlayElement() {\n    return this._pane;\n  }\n  /** The overlay's backdrop HTML element. */\n\n\n  get backdropElement() {\n    return this._backdropElement;\n  }\n  /**\n   * Wrapper around the panel element. Can be used for advanced\n   * positioning where a wrapper with specific styling is\n   * required around the overlay pane.\n   */\n\n\n  get hostElement() {\n    return this._host;\n  }\n  /**\n   * Attaches content, given via a Portal, to the overlay.\n   * If the overlay is configured to have a backdrop, it will be created.\n   *\n   * @param portal Portal instance to which to attach the overlay.\n   * @returns The portal attachment result.\n   */\n\n\n  attach(portal) {\n    let attachResult = this._portalOutlet.attach(portal); // Update the pane element with the given configuration.\n\n\n    if (!this._host.parentElement && this._previousHostParent) {\n      this._previousHostParent.appendChild(this._host);\n    }\n\n    if (this._positionStrategy) {\n      this._positionStrategy.attach(this);\n    }\n\n    this._updateStackingOrder();\n\n    this._updateElementSize();\n\n    this._updateElementDirection();\n\n    if (this._scrollStrategy) {\n      this._scrollStrategy.enable();\n    } // Update the position once the zone is stable so that the overlay will be fully rendered\n    // before attempting to position it, as the position may depend on the size of the rendered\n    // content.\n\n\n    this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n      // The overlay could've been detached before the zone has stabilized.\n      if (this.hasAttached()) {\n        this.updatePosition();\n      }\n    }); // Enable pointer events for the overlay pane element.\n\n\n    this._togglePointerEvents(true);\n\n    if (this._config.hasBackdrop) {\n      this._attachBackdrop();\n    }\n\n    if (this._config.panelClass) {\n      this._toggleClasses(this._pane, this._config.panelClass, true);\n    } // Only emit the `attachments` event once all other setup is done.\n\n\n    this._attachments.next(); // Track this overlay by the keyboard dispatcher\n\n\n    this._keyboardDispatcher.add(this);\n\n    if (this._config.disposeOnNavigation) {\n      this._locationChanges = this._location.subscribe(() => this.dispose());\n    }\n\n    this._outsideClickDispatcher.add(this);\n\n    return attachResult;\n  }\n  /**\n   * Detaches an overlay from a portal.\n   * @returns The portal detachment result.\n   */\n\n\n  detach() {\n    if (!this.hasAttached()) {\n      return;\n    }\n\n    this.detachBackdrop(); // When the overlay is detached, the pane element should disable pointer events.\n    // This is necessary because otherwise the pane element will cover the page and disable\n    // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n\n    this._togglePointerEvents(false);\n\n    if (this._positionStrategy && this._positionStrategy.detach) {\n      this._positionStrategy.detach();\n    }\n\n    if (this._scrollStrategy) {\n      this._scrollStrategy.disable();\n    }\n\n    const detachmentResult = this._portalOutlet.detach(); // Only emit after everything is detached.\n\n\n    this._detachments.next(); // Remove this overlay from keyboard dispatcher tracking.\n\n\n    this._keyboardDispatcher.remove(this); // Keeping the host element in the DOM can cause scroll jank, because it still gets\n    // rendered, even though it's transparent and unclickable which is why we remove it.\n\n\n    this._detachContentWhenStable();\n\n    this._locationChanges.unsubscribe();\n\n    this._outsideClickDispatcher.remove(this);\n\n    return detachmentResult;\n  }\n  /** Cleans up the overlay from the DOM. */\n\n\n  dispose() {\n    const isAttached = this.hasAttached();\n\n    if (this._positionStrategy) {\n      this._positionStrategy.dispose();\n    }\n\n    this._disposeScrollStrategy();\n\n    this._disposeBackdrop(this._backdropElement);\n\n    this._locationChanges.unsubscribe();\n\n    this._keyboardDispatcher.remove(this);\n\n    this._portalOutlet.dispose();\n\n    this._attachments.complete();\n\n    this._backdropClick.complete();\n\n    this._keydownEvents.complete();\n\n    this._outsidePointerEvents.complete();\n\n    this._outsideClickDispatcher.remove(this);\n\n    this._host?.remove();\n    this._previousHostParent = this._pane = this._host = null;\n\n    if (isAttached) {\n      this._detachments.next();\n    }\n\n    this._detachments.complete();\n  }\n  /** Whether the overlay has attached content. */\n\n\n  hasAttached() {\n    return this._portalOutlet.hasAttached();\n  }\n  /** Gets an observable that emits when the backdrop has been clicked. */\n\n\n  backdropClick() {\n    return this._backdropClick;\n  }\n  /** Gets an observable that emits when the overlay has been attached. */\n\n\n  attachments() {\n    return this._attachments;\n  }\n  /** Gets an observable that emits when the overlay has been detached. */\n\n\n  detachments() {\n    return this._detachments;\n  }\n  /** Gets an observable of keydown events targeted to this overlay. */\n\n\n  keydownEvents() {\n    return this._keydownEvents;\n  }\n  /** Gets an observable of pointer events targeted outside this overlay. */\n\n\n  outsidePointerEvents() {\n    return this._outsidePointerEvents;\n  }\n  /** Gets the current overlay configuration, which is immutable. */\n\n\n  getConfig() {\n    return this._config;\n  }\n  /** Updates the position of the overlay based on the position strategy. */\n\n\n  updatePosition() {\n    if (this._positionStrategy) {\n      this._positionStrategy.apply();\n    }\n  }\n  /** Switches to a new position strategy and updates the overlay position. */\n\n\n  updatePositionStrategy(strategy) {\n    if (strategy === this._positionStrategy) {\n      return;\n    }\n\n    if (this._positionStrategy) {\n      this._positionStrategy.dispose();\n    }\n\n    this._positionStrategy = strategy;\n\n    if (this.hasAttached()) {\n      strategy.attach(this);\n      this.updatePosition();\n    }\n  }\n  /** Update the size properties of the overlay. */\n\n\n  updateSize(sizeConfig) {\n    this._config = { ...this._config,\n      ...sizeConfig\n    };\n\n    this._updateElementSize();\n  }\n  /** Sets the LTR/RTL direction for the overlay. */\n\n\n  setDirection(dir) {\n    this._config = { ...this._config,\n      direction: dir\n    };\n\n    this._updateElementDirection();\n  }\n  /** Add a CSS class or an array of classes to the overlay pane. */\n\n\n  addPanelClass(classes) {\n    if (this._pane) {\n      this._toggleClasses(this._pane, classes, true);\n    }\n  }\n  /** Remove a CSS class or an array of classes from the overlay pane. */\n\n\n  removePanelClass(classes) {\n    if (this._pane) {\n      this._toggleClasses(this._pane, classes, false);\n    }\n  }\n  /**\n   * Returns the layout direction of the overlay panel.\n   */\n\n\n  getDirection() {\n    const direction = this._config.direction;\n\n    if (!direction) {\n      return 'ltr';\n    }\n\n    return typeof direction === 'string' ? direction : direction.value;\n  }\n  /** Switches to a new scroll strategy. */\n\n\n  updateScrollStrategy(strategy) {\n    if (strategy === this._scrollStrategy) {\n      return;\n    }\n\n    this._disposeScrollStrategy();\n\n    this._scrollStrategy = strategy;\n\n    if (this.hasAttached()) {\n      strategy.attach(this);\n      strategy.enable();\n    }\n  }\n  /** Updates the text direction of the overlay panel. */\n\n\n  _updateElementDirection() {\n    this._host.setAttribute('dir', this.getDirection());\n  }\n  /** Updates the size of the overlay element based on the overlay config. */\n\n\n  _updateElementSize() {\n    if (!this._pane) {\n      return;\n    }\n\n    const style = this._pane.style;\n    style.width = coerceCssPixelValue(this._config.width);\n    style.height = coerceCssPixelValue(this._config.height);\n    style.minWidth = coerceCssPixelValue(this._config.minWidth);\n    style.minHeight = coerceCssPixelValue(this._config.minHeight);\n    style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n    style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n  }\n  /** Toggles the pointer events for the overlay pane element. */\n\n\n  _togglePointerEvents(enablePointer) {\n    this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n  }\n  /** Attaches a backdrop for this overlay. */\n\n\n  _attachBackdrop() {\n    const showingClass = 'cdk-overlay-backdrop-showing';\n    this._backdropElement = this._document.createElement('div');\n\n    this._backdropElement.classList.add('cdk-overlay-backdrop');\n\n    if (this._config.backdropClass) {\n      this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n    } // Insert the backdrop before the pane in the DOM order,\n    // in order to handle stacked overlays properly.\n\n\n    this._host.parentElement.insertBefore(this._backdropElement, this._host); // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n    // action desired when such a click occurs (usually closing the overlay).\n\n\n    this._backdropElement.addEventListener('click', this._backdropClickHandler); // Add class to fade-in the backdrop after one frame.\n\n\n    if (typeof requestAnimationFrame !== 'undefined') {\n      this._ngZone.runOutsideAngular(() => {\n        requestAnimationFrame(() => {\n          if (this._backdropElement) {\n            this._backdropElement.classList.add(showingClass);\n          }\n        });\n      });\n    } else {\n      this._backdropElement.classList.add(showingClass);\n    }\n  }\n  /**\n   * Updates the stacking order of the element, moving it to the top if necessary.\n   * This is required in cases where one overlay was detached, while another one,\n   * that should be behind it, was destroyed. The next time both of them are opened,\n   * the stacking will be wrong, because the detached element's pane will still be\n   * in its original DOM position.\n   */\n\n\n  _updateStackingOrder() {\n    if (this._host.nextSibling) {\n      this._host.parentNode.appendChild(this._host);\n    }\n  }\n  /** Detaches the backdrop (if any) associated with the overlay. */\n\n\n  detachBackdrop() {\n    const backdropToDetach = this._backdropElement;\n\n    if (!backdropToDetach) {\n      return;\n    }\n\n    let timeoutId;\n\n    const finishDetach = () => {\n      // It may not be attached to anything in certain cases (e.g. unit tests).\n      if (backdropToDetach) {\n        backdropToDetach.removeEventListener('click', this._backdropClickHandler);\n        backdropToDetach.removeEventListener('transitionend', finishDetach);\n\n        this._disposeBackdrop(backdropToDetach);\n      }\n\n      if (this._config.backdropClass) {\n        this._toggleClasses(backdropToDetach, this._config.backdropClass, false);\n      }\n\n      clearTimeout(timeoutId);\n    };\n\n    backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n\n    this._ngZone.runOutsideAngular(() => {\n      backdropToDetach.addEventListener('transitionend', finishDetach);\n    }); // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n    // In this case we make it unclickable and we try to remove it after a delay.\n\n\n    backdropToDetach.style.pointerEvents = 'none'; // Run this outside the Angular zone because there's nothing that Angular cares about.\n    // If it were to run inside the Angular zone, every test that used Overlay would have to be\n    // either async or fakeAsync.\n\n    timeoutId = this._ngZone.runOutsideAngular(() => setTimeout(finishDetach, 500));\n  }\n  /** Toggles a single CSS class or an array of classes on an element. */\n\n\n  _toggleClasses(element, cssClasses, isAdd) {\n    const classes = coerceArray(cssClasses || []).filter(c => !!c);\n\n    if (classes.length) {\n      isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n    }\n  }\n  /** Detaches the overlay content next time the zone stabilizes. */\n\n\n  _detachContentWhenStable() {\n    // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n    // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n    // be patched to run inside the zone, which will throw us into an infinite loop.\n    this._ngZone.runOutsideAngular(() => {\n      // We can't remove the host here immediately, because the overlay pane's content\n      // might still be animating. This stream helps us avoid interrupting the animation\n      // by waiting for the pane to become empty.\n      const subscription = this._ngZone.onStable.pipe(takeUntil(merge(this._attachments, this._detachments))).subscribe(() => {\n        // Needs a couple of checks for the pane and host, because\n        // they may have been removed by the time the zone stabilizes.\n        if (!this._pane || !this._host || this._pane.children.length === 0) {\n          if (this._pane && this._config.panelClass) {\n            this._toggleClasses(this._pane, this._config.panelClass, false);\n          }\n\n          if (this._host && this._host.parentElement) {\n            this._previousHostParent = this._host.parentElement;\n\n            this._host.remove();\n          }\n\n          subscription.unsubscribe();\n        }\n      });\n    });\n  }\n  /** Disposes of a scroll strategy. */\n\n\n  _disposeScrollStrategy() {\n    const scrollStrategy = this._scrollStrategy;\n\n    if (scrollStrategy) {\n      scrollStrategy.disable();\n\n      if (scrollStrategy.detach) {\n        scrollStrategy.detach();\n      }\n    }\n  }\n  /** Removes a backdrop element from the DOM. */\n\n\n  _disposeBackdrop(backdrop) {\n    if (backdrop) {\n      backdrop.remove(); // It is possible that a new portal has been attached to this overlay since we started\n      // removing the backdrop. If that is the case, only clear the backdrop reference if it\n      // is still the same instance that we started to remove.\n\n      if (this._backdropElement === backdrop) {\n        this._backdropElement = null;\n      }\n    }\n  }\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// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n\n/** Class to be added to the overlay bounding box. */\n\n\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\n\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\n\nclass FlexibleConnectedPositionStrategy {\n  constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n    this._viewportRuler = _viewportRuler;\n    this._document = _document;\n    this._platform = _platform;\n    this._overlayContainer = _overlayContainer;\n    /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n\n    this._lastBoundingBoxSize = {\n      width: 0,\n      height: 0\n    };\n    /** Whether the overlay was pushed in a previous positioning. */\n\n    this._isPushed = false;\n    /** Whether the overlay can be pushed on-screen on the initial open. */\n\n    this._canPush = true;\n    /** Whether the overlay can grow via flexible width/height after the initial open. */\n\n    this._growAfterOpen = false;\n    /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n\n    this._hasFlexibleDimensions = true;\n    /** Whether the overlay position is locked. */\n\n    this._positionLocked = false;\n    /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n\n    this._viewportMargin = 0;\n    /** The Scrollable containers used to check scrollable view properties on position change. */\n\n    this._scrollables = [];\n    /** Ordered list of preferred positions, from most to least desirable. */\n\n    this._preferredPositions = [];\n    /** Subject that emits whenever the position changes. */\n\n    this._positionChanges = new Subject();\n    /** Subscription to viewport size changes. */\n\n    this._resizeSubscription = Subscription.EMPTY;\n    /** Default offset for the overlay along the x axis. */\n\n    this._offsetX = 0;\n    /** Default offset for the overlay along the y axis. */\n\n    this._offsetY = 0;\n    /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n\n    this._appliedPanelClasses = [];\n    /** Observable sequence of position changes. */\n\n    this.positionChanges = this._positionChanges;\n    this.setOrigin(connectedTo);\n  }\n  /** Ordered list of preferred positions, from most to least desirable. */\n\n\n  get positions() {\n    return this._preferredPositions;\n  }\n  /** Attaches this position strategy to an overlay. */\n\n\n  attach(overlayRef) {\n    if (this._overlayRef && overlayRef !== this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('This position strategy is already attached to an overlay');\n    }\n\n    this._validatePositions();\n\n    overlayRef.hostElement.classList.add(boundingBoxClass);\n    this._overlayRef = overlayRef;\n    this._boundingBox = overlayRef.hostElement;\n    this._pane = overlayRef.overlayElement;\n    this._isDisposed = false;\n    this._isInitialRender = true;\n    this._lastPosition = null;\n\n    this._resizeSubscription.unsubscribe();\n\n    this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n      // When the window is resized, we want to trigger the next reposition as if it\n      // was an initial render, in order for the strategy to pick a new optimal position,\n      // otherwise position locking will cause it to stay at the old one.\n      this._isInitialRender = true;\n      this.apply();\n    });\n  }\n  /**\n   * Updates the position of the overlay element, using whichever preferred position relative\n   * to the origin best fits on-screen.\n   *\n   * The selection of a position goes as follows:\n   *  - If any positions fit completely within the viewport as-is,\n   *      choose the first position that does so.\n   *  - If flexible dimensions are enabled and at least one satifies the given minimum width/height,\n   *      choose the position with the greatest available size modified by the positions' weight.\n   *  - If pushing is enabled, take the position that went off-screen the least and push it\n   *      on-screen.\n   *  - If none of the previous criteria were met, use the position that goes off-screen the least.\n   * @docs-private\n   */\n\n\n  apply() {\n    // We shouldn't do anything if the strategy was disposed or we're on the server.\n    if (this._isDisposed || !this._platform.isBrowser) {\n      return;\n    } // If the position has been applied already (e.g. when the overlay was opened) and the\n    // consumer opted into locking in the position, re-use the old position, in order to\n    // prevent the overlay from jumping around.\n\n\n    if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n      this.reapplyLastPosition();\n      return;\n    }\n\n    this._clearPanelClasses();\n\n    this._resetOverlayElementStyles();\n\n    this._resetBoundingBoxStyles(); // We need the bounding rects for the origin and the overlay to determine how to position\n    // the overlay relative to the origin.\n    // We use the viewport rect to determine whether a position would go off-screen.\n\n\n    this._viewportRect = this._getNarrowedViewportRect();\n    this._originRect = this._getOriginRect();\n    this._overlayRect = this._pane.getBoundingClientRect();\n    const originRect = this._originRect;\n    const overlayRect = this._overlayRect;\n    const viewportRect = this._viewportRect; // Positions where the overlay will fit with flexible dimensions.\n\n    const flexibleFits = []; // Fallback if none of the preferred positions fit within the viewport.\n\n    let fallback; // Go through each of the preferred positions looking for a good fit.\n    // If a good fit is found, it will be applied immediately.\n\n    for (let pos of this._preferredPositions) {\n      // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n      let originPoint = this._getOriginPoint(originRect, pos); // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n      // overlay in this position. We use the top-left corner for calculations and later translate\n      // this into an appropriate (top, left, bottom, right) style.\n\n\n      let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos); // Calculate how well the overlay would fit into the viewport with this point.\n\n\n      let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos); // If the overlay, without any further work, fits into the viewport, use this position.\n\n\n      if (overlayFit.isCompletelyWithinViewport) {\n        this._isPushed = false;\n\n        this._applyPosition(pos, originPoint);\n\n        return;\n      } // If the overlay has flexible dimensions, we can use this position\n      // so long as there's enough space for the minimum dimensions.\n\n\n      if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n        // Save positions where the overlay will fit with flexible dimensions. We will use these\n        // if none of the positions fit *without* flexible dimensions.\n        flexibleFits.push({\n          position: pos,\n          origin: originPoint,\n          overlayRect,\n          boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos)\n        });\n        continue;\n      } // If the current preferred position does not fit on the screen, remember the position\n      // if it has more visible area on-screen than we've seen and move onto the next preferred\n      // position.\n\n\n      if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n        fallback = {\n          overlayFit,\n          overlayPoint,\n          originPoint,\n          position: pos,\n          overlayRect\n        };\n      }\n    } // If there are any positions where the overlay would fit with flexible dimensions, choose the\n    // one that has the greatest area available modified by the position's weight\n\n\n    if (flexibleFits.length) {\n      let bestFit = null;\n      let bestScore = -1;\n\n      for (const fit of flexibleFits) {\n        const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n\n        if (score > bestScore) {\n          bestScore = score;\n          bestFit = fit;\n        }\n      }\n\n      this._isPushed = false;\n\n      this._applyPosition(bestFit.position, bestFit.origin);\n\n      return;\n    } // When none of the preferred positions fit within the viewport, take the position\n    // that went off-screen the least and attempt to push it on-screen.\n\n\n    if (this._canPush) {\n      // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n      this._isPushed = true;\n\n      this._applyPosition(fallback.position, fallback.originPoint);\n\n      return;\n    } // All options for getting the overlay within the viewport have been exhausted, so go with the\n    // position that went off-screen the least.\n\n\n    this._applyPosition(fallback.position, fallback.originPoint);\n  }\n\n  detach() {\n    this._clearPanelClasses();\n\n    this._lastPosition = null;\n    this._previousPushAmount = null;\n\n    this._resizeSubscription.unsubscribe();\n  }\n  /** Cleanup after the element gets destroyed. */\n\n\n  dispose() {\n    if (this._isDisposed) {\n      return;\n    } // We can't use `_resetBoundingBoxStyles` here, because it resets\n    // some properties to zero, rather than removing them.\n\n\n    if (this._boundingBox) {\n      extendStyles(this._boundingBox.style, {\n        top: '',\n        left: '',\n        right: '',\n        bottom: '',\n        height: '',\n        width: '',\n        alignItems: '',\n        justifyContent: ''\n      });\n    }\n\n    if (this._pane) {\n      this._resetOverlayElementStyles();\n    }\n\n    if (this._overlayRef) {\n      this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n    }\n\n    this.detach();\n\n    this._positionChanges.complete();\n\n    this._overlayRef = this._boundingBox = null;\n    this._isDisposed = true;\n  }\n  /**\n   * This re-aligns the overlay element with the trigger in its last calculated position,\n   * even if a position higher in the \"preferred positions\" list would now fit. This\n   * allows one to re-align the panel without changing the orientation of the panel.\n   */\n\n\n  reapplyLastPosition() {\n    if (!this._isDisposed && (!this._platform || this._platform.isBrowser)) {\n      this._originRect = this._getOriginRect();\n      this._overlayRect = this._pane.getBoundingClientRect();\n      this._viewportRect = this._getNarrowedViewportRect();\n      const lastPosition = this._lastPosition || this._preferredPositions[0];\n\n      const originPoint = this._getOriginPoint(this._originRect, lastPosition);\n\n      this._applyPosition(lastPosition, originPoint);\n    }\n  }\n  /**\n   * Sets the list of Scrollable containers that host the origin element so that\n   * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n   * Scrollable must be an ancestor element of the strategy's origin element.\n   */\n\n\n  withScrollableContainers(scrollables) {\n    this._scrollables = scrollables;\n    return this;\n  }\n  /**\n   * Adds new preferred positions.\n   * @param positions List of positions options for this overlay.\n   */\n\n\n  withPositions(positions) {\n    this._preferredPositions = positions; // If the last calculated position object isn't part of the positions anymore, clear\n    // it in order to avoid it being picked up if the consumer tries to re-apply.\n\n    if (positions.indexOf(this._lastPosition) === -1) {\n      this._lastPosition = null;\n    }\n\n    this._validatePositions();\n\n    return this;\n  }\n  /**\n   * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n   * @param margin Required margin between the overlay and the viewport edge in pixels.\n   */\n\n\n  withViewportMargin(margin) {\n    this._viewportMargin = margin;\n    return this;\n  }\n  /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n\n\n  withFlexibleDimensions(flexibleDimensions = true) {\n    this._hasFlexibleDimensions = flexibleDimensions;\n    return this;\n  }\n  /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n\n\n  withGrowAfterOpen(growAfterOpen = true) {\n    this._growAfterOpen = growAfterOpen;\n    return this;\n  }\n  /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n\n\n  withPush(canPush = true) {\n    this._canPush = canPush;\n    return this;\n  }\n  /**\n   * Sets whether the overlay's position should be locked in after it is positioned\n   * initially. When an overlay is locked in, it won't attempt to reposition itself\n   * when the position is re-applied (e.g. when the user scrolls away).\n   * @param isLocked Whether the overlay should locked in.\n   */\n\n\n  withLockedPosition(isLocked = true) {\n    this._positionLocked = isLocked;\n    return this;\n  }\n  /**\n   * Sets the origin, relative to which to position the overlay.\n   * Using an element origin is useful for building components that need to be positioned\n   * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n   * used for cases like contextual menus which open relative to the user's pointer.\n   * @param origin Reference to the new origin.\n   */\n\n\n  setOrigin(origin) {\n    this._origin = origin;\n    return this;\n  }\n  /**\n   * Sets the default offset for the overlay's connection point on the x-axis.\n   * @param offset New offset in the X axis.\n   */\n\n\n  withDefaultOffsetX(offset) {\n    this._offsetX = offset;\n    return this;\n  }\n  /**\n   * Sets the default offset for the overlay's connection point on the y-axis.\n   * @param offset New offset in the Y axis.\n   */\n\n\n  withDefaultOffsetY(offset) {\n    this._offsetY = offset;\n    return this;\n  }\n  /**\n   * Configures that the position strategy should set a `transform-origin` on some elements\n   * inside the overlay, depending on the current position that is being applied. This is\n   * useful for the cases where the origin of an animation can change depending on the\n   * alignment of the overlay.\n   * @param selector CSS selector that will be used to find the target\n   *    elements onto which to set the transform origin.\n   */\n\n\n  withTransformOriginOn(selector) {\n    this._transformOriginSelector = selector;\n    return this;\n  }\n  /**\n   * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n   */\n\n\n  _getOriginPoint(originRect, pos) {\n    let x;\n\n    if (pos.originX == 'center') {\n      // Note: when centering we should always use the `left`\n      // offset, otherwise the position will be wrong in RTL.\n      x = originRect.left + originRect.width / 2;\n    } else {\n      const startX = this._isRtl() ? originRect.right : originRect.left;\n      const endX = this._isRtl() ? originRect.left : originRect.right;\n      x = pos.originX == 'start' ? startX : endX;\n    }\n\n    let y;\n\n    if (pos.originY == 'center') {\n      y = originRect.top + originRect.height / 2;\n    } else {\n      y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n    }\n\n    return {\n      x,\n      y\n    };\n  }\n  /**\n   * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n   * origin point to which the overlay should be connected.\n   */\n\n\n  _getOverlayPoint(originPoint, overlayRect, pos) {\n    // Calculate the (overlayStartX, overlayStartY), the start of the\n    // potential overlay position relative to the origin point.\n    let overlayStartX;\n\n    if (pos.overlayX == 'center') {\n      overlayStartX = -overlayRect.width / 2;\n    } else if (pos.overlayX === 'start') {\n      overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n    } else {\n      overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n    }\n\n    let overlayStartY;\n\n    if (pos.overlayY == 'center') {\n      overlayStartY = -overlayRect.height / 2;\n    } else {\n      overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n    } // The (x, y) coordinates of the overlay.\n\n\n    return {\n      x: originPoint.x + overlayStartX,\n      y: originPoint.y + overlayStartY\n    };\n  }\n  /** Gets how well an overlay at the given point will fit within the viewport. */\n\n\n  _getOverlayFit(point, rawOverlayRect, viewport, position) {\n    // Round the overlay rect when comparing against the\n    // viewport, because the viewport is always rounded.\n    const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n    let {\n      x,\n      y\n    } = point;\n\n    let offsetX = this._getOffset(position, 'x');\n\n    let offsetY = this._getOffset(position, 'y'); // Account for the offsets since they could push the overlay out of the viewport.\n\n\n    if (offsetX) {\n      x += offsetX;\n    }\n\n    if (offsetY) {\n      y += offsetY;\n    } // How much the overlay would overflow at this position, on each side.\n\n\n    let leftOverflow = 0 - x;\n    let rightOverflow = x + overlay.width - viewport.width;\n    let topOverflow = 0 - y;\n    let bottomOverflow = y + overlay.height - viewport.height; // Visible parts of the element on each axis.\n\n    let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n\n    let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n\n    let visibleArea = visibleWidth * visibleHeight;\n    return {\n      visibleArea,\n      isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n      fitsInViewportVertically: visibleHeight === overlay.height,\n      fitsInViewportHorizontally: visibleWidth == overlay.width\n    };\n  }\n  /**\n   * Whether the overlay can fit within the viewport when it may resize either its width or height.\n   * @param fit How well the overlay fits in the viewport at some position.\n   * @param point The (x, y) coordinates of the overlat at some position.\n   * @param viewport The geometry of the viewport.\n   */\n\n\n  _canFitWithFlexibleDimensions(fit, point, viewport) {\n    if (this._hasFlexibleDimensions) {\n      const availableHeight = viewport.bottom - point.y;\n      const availableWidth = viewport.right - point.x;\n      const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n      const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n      const verticalFit = fit.fitsInViewportVertically || minHeight != null && minHeight <= availableHeight;\n      const horizontalFit = fit.fitsInViewportHorizontally || minWidth != null && minWidth <= availableWidth;\n      return verticalFit && horizontalFit;\n    }\n\n    return false;\n  }\n  /**\n   * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n   * the viewport, the top-left corner will be pushed on-screen (with overflow occuring on the\n   * right and bottom).\n   *\n   * @param start Starting point from which the overlay is pushed.\n   * @param overlay Dimensions of the overlay.\n   * @param scrollPosition Current viewport scroll position.\n   * @returns The point at which to position the overlay after pushing. This is effectively a new\n   *     originPoint.\n   */\n\n\n  _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n    // If the position is locked and we've pushed the overlay already, reuse the previous push\n    // amount, rather than pushing it again. If we were to continue pushing, the element would\n    // remain in the viewport, which goes against the expectations when position locking is enabled.\n    if (this._previousPushAmount && this._positionLocked) {\n      return {\n        x: start.x + this._previousPushAmount.x,\n        y: start.y + this._previousPushAmount.y\n      };\n    } // Round the overlay rect when comparing against the\n    // viewport, because the viewport is always rounded.\n\n\n    const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n    const viewport = this._viewportRect; // Determine how much the overlay goes outside the viewport on each\n    // side, which we'll use to decide which direction to push it.\n\n    const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n    const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n    const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n    const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0); // Amount by which to push the overlay in each axis such that it remains on-screen.\n\n    let pushX = 0;\n    let pushY = 0; // If the overlay fits completely within the bounds of the viewport, push it from whichever\n    // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n    // viewport and allow for the trailing end of the overlay to go out of bounds.\n\n    if (overlay.width <= viewport.width) {\n      pushX = overflowLeft || -overflowRight;\n    } else {\n      pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n    }\n\n    if (overlay.height <= viewport.height) {\n      pushY = overflowTop || -overflowBottom;\n    } else {\n      pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n    }\n\n    this._previousPushAmount = {\n      x: pushX,\n      y: pushY\n    };\n    return {\n      x: start.x + pushX,\n      y: start.y + pushY\n    };\n  }\n  /**\n   * Applies a computed position to the overlay and emits a position change.\n   * @param position The position preference\n   * @param originPoint The point on the origin element where the overlay is connected.\n   */\n\n\n  _applyPosition(position, originPoint) {\n    this._setTransformOrigin(position);\n\n    this._setOverlayElementStyles(originPoint, position);\n\n    this._setBoundingBoxStyles(originPoint, position);\n\n    if (position.panelClass) {\n      this._addPanelClasses(position.panelClass);\n    } // Save the last connected position in case the position needs to be re-calculated.\n\n\n    this._lastPosition = position; // Notify that the position has been changed along with its change properties.\n    // We only emit if we've got any subscriptions, because the scroll visibility\n    // calculcations can be somewhat expensive.\n\n    if (this._positionChanges.observers.length) {\n      const scrollableViewProperties = this._getScrollVisibility();\n\n      const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n\n      this._positionChanges.next(changeEvent);\n    }\n\n    this._isInitialRender = false;\n  }\n  /** Sets the transform origin based on the configured selector and the passed-in position.  */\n\n\n  _setTransformOrigin(position) {\n    if (!this._transformOriginSelector) {\n      return;\n    }\n\n    const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n\n    let xOrigin;\n    let yOrigin = position.overlayY;\n\n    if (position.overlayX === 'center') {\n      xOrigin = 'center';\n    } else if (this._isRtl()) {\n      xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n    } else {\n      xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n    }\n\n    for (let i = 0; i < elements.length; i++) {\n      elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n    }\n  }\n  /**\n   * Gets the position and size of the overlay's sizing container.\n   *\n   * This method does no measuring and applies no styles so that we can cheaply compute the\n   * bounds for all positions and choose the best fit based on these results.\n   */\n\n\n  _calculateBoundingBoxRect(origin, position) {\n    const viewport = this._viewportRect;\n\n    const isRtl = this._isRtl();\n\n    let height, top, bottom;\n\n    if (position.overlayY === 'top') {\n      // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n      top = origin.y;\n      height = viewport.height - top + this._viewportMargin;\n    } else if (position.overlayY === 'bottom') {\n      // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n      // the viewport margin back in, because the viewport rect is narrowed down to remove the\n      // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n      bottom = viewport.height - origin.y + this._viewportMargin * 2;\n      height = viewport.height - bottom + this._viewportMargin;\n    } else {\n      // If neither top nor bottom, it means that the overlay is vertically centered on the\n      // origin point. Note that we want the position relative to the viewport, rather than\n      // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n      // `origin.y - viewport.top`.\n      const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n      const previousHeight = this._lastBoundingBoxSize.height;\n      height = smallestDistanceToViewportEdge * 2;\n      top = origin.y - smallestDistanceToViewportEdge;\n\n      if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n        top = origin.y - previousHeight / 2;\n      }\n    } // The overlay is opening 'right-ward' (the content flows to the right).\n\n\n    const isBoundedByRightViewportEdge = position.overlayX === 'start' && !isRtl || position.overlayX === 'end' && isRtl; // The overlay is opening 'left-ward' (the content flows to the left).\n\n    const isBoundedByLeftViewportEdge = position.overlayX === 'end' && !isRtl || position.overlayX === 'start' && isRtl;\n    let width, left, right;\n\n    if (isBoundedByLeftViewportEdge) {\n      right = viewport.width - origin.x + this._viewportMargin;\n      width = origin.x - this._viewportMargin;\n    } else if (isBoundedByRightViewportEdge) {\n      left = origin.x;\n      width = viewport.right - origin.x;\n    } else {\n      // If neither start nor end, it means that the overlay is horizontally centered on the\n      // origin point. Note that we want the position relative to the viewport, rather than\n      // the page, which is why we don't use something like `viewport.right - origin.x` and\n      // `origin.x - viewport.left`.\n      const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n      const previousWidth = this._lastBoundingBoxSize.width;\n      width = smallestDistanceToViewportEdge * 2;\n      left = origin.x - smallestDistanceToViewportEdge;\n\n      if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n        left = origin.x - previousWidth / 2;\n      }\n    }\n\n    return {\n      top: top,\n      left: left,\n      bottom: bottom,\n      right: right,\n      width,\n      height\n    };\n  }\n  /**\n   * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n   * origin's connection point and stetches to the bounds of the viewport.\n   *\n   * @param origin The point on the origin element where the overlay is connected.\n   * @param position The position preference\n   */\n\n\n  _setBoundingBoxStyles(origin, position) {\n    const boundingBoxRect = this._calculateBoundingBoxRect(origin, position); // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n    // when applying a new size.\n\n\n    if (!this._isInitialRender && !this._growAfterOpen) {\n      boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n      boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n    }\n\n    const styles = {};\n\n    if (this._hasExactPosition()) {\n      styles.top = styles.left = '0';\n      styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n      styles.width = styles.height = '100%';\n    } else {\n      const maxHeight = this._overlayRef.getConfig().maxHeight;\n\n      const maxWidth = this._overlayRef.getConfig().maxWidth;\n\n      styles.height = coerceCssPixelValue(boundingBoxRect.height);\n      styles.top = coerceCssPixelValue(boundingBoxRect.top);\n      styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n      styles.width = coerceCssPixelValue(boundingBoxRect.width);\n      styles.left = coerceCssPixelValue(boundingBoxRect.left);\n      styles.right = coerceCssPixelValue(boundingBoxRect.right); // Push the pane content towards the proper direction.\n\n      if (position.overlayX === 'center') {\n        styles.alignItems = 'center';\n      } else {\n        styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n      }\n\n      if (position.overlayY === 'center') {\n        styles.justifyContent = 'center';\n      } else {\n        styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n      }\n\n      if (maxHeight) {\n        styles.maxHeight = coerceCssPixelValue(maxHeight);\n      }\n\n      if (maxWidth) {\n        styles.maxWidth = coerceCssPixelValue(maxWidth);\n      }\n    }\n\n    this._lastBoundingBoxSize = boundingBoxRect;\n    extendStyles(this._boundingBox.style, styles);\n  }\n  /** Resets the styles for the bounding box so that a new positioning can be computed. */\n\n\n  _resetBoundingBoxStyles() {\n    extendStyles(this._boundingBox.style, {\n      top: '0',\n      left: '0',\n      right: '0',\n      bottom: '0',\n      height: '',\n      width: '',\n      alignItems: '',\n      justifyContent: ''\n    });\n  }\n  /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n\n\n  _resetOverlayElementStyles() {\n    extendStyles(this._pane.style, {\n      top: '',\n      left: '',\n      bottom: '',\n      right: '',\n      position: '',\n      transform: ''\n    });\n  }\n  /** Sets positioning styles to the overlay element. */\n\n\n  _setOverlayElementStyles(originPoint, position) {\n    const styles = {};\n\n    const hasExactPosition = this._hasExactPosition();\n\n    const hasFlexibleDimensions = this._hasFlexibleDimensions;\n\n    const config = this._overlayRef.getConfig();\n\n    if (hasExactPosition) {\n      const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n\n      extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n      extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n    } else {\n      styles.position = 'static';\n    } // Use a transform to apply the offsets. We do this because the `center` positions rely on\n    // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n    // off the position. We also can't use margins, because they won't have an effect in some\n    // cases where the element doesn't have anything to \"push off of\". Finally, this works\n    // better both with flexible and non-flexible positioning.\n\n\n    let transformString = '';\n\n    let offsetX = this._getOffset(position, 'x');\n\n    let offsetY = this._getOffset(position, 'y');\n\n    if (offsetX) {\n      transformString += `translateX(${offsetX}px) `;\n    }\n\n    if (offsetY) {\n      transformString += `translateY(${offsetY}px)`;\n    }\n\n    styles.transform = transformString.trim(); // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n    // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n    // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n    // Note that this doesn't apply when we have an exact position, in which case we do want to\n    // apply them because they'll be cleared from the bounding box.\n\n    if (config.maxHeight) {\n      if (hasExactPosition) {\n        styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n      } else if (hasFlexibleDimensions) {\n        styles.maxHeight = '';\n      }\n    }\n\n    if (config.maxWidth) {\n      if (hasExactPosition) {\n        styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n      } else if (hasFlexibleDimensions) {\n        styles.maxWidth = '';\n      }\n    }\n\n    extendStyles(this._pane.style, styles);\n  }\n  /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n\n\n  _getExactOverlayY(position, originPoint, scrollPosition) {\n    // Reset any existing styles. This is necessary in case the\n    // preferred position has changed since the last `apply`.\n    let styles = {\n      top: '',\n      bottom: ''\n    };\n\n    let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n\n    if (this._isPushed) {\n      overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n    }\n\n    let virtualKeyboardOffset = this._overlayContainer.getContainerElement().getBoundingClientRect().top; // Normally this would be zero, however when the overlay is attached to an input (e.g. in an\n    // autocomplete), mobile browsers will shift everything in order to put the input in the middle\n    // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n    // otherwise our positioning will be thrown off.\n\n\n    overlayPoint.y -= virtualKeyboardOffset; // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n    // above or below the origin and the direction in which the element will expand.\n\n    if (position.overlayY === 'bottom') {\n      // When using `bottom`, we adjust the y position such that it is the distance\n      // from the bottom of the viewport rather than the top.\n      const documentHeight = this._document.documentElement.clientHeight;\n      styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n    } else {\n      styles.top = coerceCssPixelValue(overlayPoint.y);\n    }\n\n    return styles;\n  }\n  /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n\n\n  _getExactOverlayX(position, originPoint, scrollPosition) {\n    // Reset any existing styles. This is necessary in case the preferred position has\n    // changed since the last `apply`.\n    let styles = {\n      left: '',\n      right: ''\n    };\n\n    let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n\n    if (this._isPushed) {\n      overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n    } // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n    // or \"after\" the origin, which determines the direction in which the element will expand.\n    // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n    // page is in RTL or LTR.\n\n\n    let horizontalStyleProperty;\n\n    if (this._isRtl()) {\n      horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n    } else {\n      horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n    } // When we're setting `right`, we adjust the x position such that it is the distance\n    // from the right edge of the viewport rather than the left edge.\n\n\n    if (horizontalStyleProperty === 'right') {\n      const documentWidth = this._document.documentElement.clientWidth;\n      styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n    } else {\n      styles.left = coerceCssPixelValue(overlayPoint.x);\n    }\n\n    return styles;\n  }\n  /**\n   * Gets the view properties of the trigger and overlay, including whether they are clipped\n   * or completely outside the view of any of the strategy's scrollables.\n   */\n\n\n  _getScrollVisibility() {\n    // Note: needs fresh rects since the position could've changed.\n    const originBounds = this._getOriginRect();\n\n    const overlayBounds = this._pane.getBoundingClientRect(); // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n    // every time, we should be able to use the scrollTop of the containers if the size of those\n    // containers hasn't changed.\n\n\n    const scrollContainerBounds = this._scrollables.map(scrollable => {\n      return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n    });\n\n    return {\n      isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n      isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n      isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n      isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds)\n    };\n  }\n  /** Subtracts the amount that an element is overflowing on an axis from its length. */\n\n\n  _subtractOverflows(length, ...overflows) {\n    return overflows.reduce((currentValue, currentOverflow) => {\n      return currentValue - Math.max(currentOverflow, 0);\n    }, length);\n  }\n  /** Narrows the given viewport rect by the current _viewportMargin. */\n\n\n  _getNarrowedViewportRect() {\n    // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n    // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n    // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n    // and `innerHeight` that do. This is necessary, because the overlay container uses\n    // 100% `width` and `height` which don't include the scrollbar either.\n    const width = this._document.documentElement.clientWidth;\n    const height = this._document.documentElement.clientHeight;\n\n    const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n\n    return {\n      top: scrollPosition.top + this._viewportMargin,\n      left: scrollPosition.left + this._viewportMargin,\n      right: scrollPosition.left + width - this._viewportMargin,\n      bottom: scrollPosition.top + height - this._viewportMargin,\n      width: width - 2 * this._viewportMargin,\n      height: height - 2 * this._viewportMargin\n    };\n  }\n  /** Whether the we're dealing with an RTL context */\n\n\n  _isRtl() {\n    return this._overlayRef.getDirection() === 'rtl';\n  }\n  /** Determines whether the overlay uses exact or flexible positioning. */\n\n\n  _hasExactPosition() {\n    return !this._hasFlexibleDimensions || this._isPushed;\n  }\n  /** Retrieves the offset of a position along the x or y axis. */\n\n\n  _getOffset(position, axis) {\n    if (axis === 'x') {\n      // We don't do something like `position['offset' + axis]` in\n      // order to avoid breking minifiers that rename properties.\n      return position.offsetX == null ? this._offsetX : position.offsetX;\n    }\n\n    return position.offsetY == null ? this._offsetY : position.offsetY;\n  }\n  /** Validates that the current position match the expected values. */\n\n\n  _validatePositions() {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (!this._preferredPositions.length) {\n        throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n      } // TODO(crisbeto): remove these once Angular's template type\n      // checking is advanced enough to catch these cases.\n\n\n      this._preferredPositions.forEach(pair => {\n        validateHorizontalPosition('originX', pair.originX);\n        validateVerticalPosition('originY', pair.originY);\n        validateHorizontalPosition('overlayX', pair.overlayX);\n        validateVerticalPosition('overlayY', pair.overlayY);\n      });\n    }\n  }\n  /** Adds a single CSS class or an array of classes on the overlay panel. */\n\n\n  _addPanelClasses(cssClasses) {\n    if (this._pane) {\n      coerceArray(cssClasses).forEach(cssClass => {\n        if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n          this._appliedPanelClasses.push(cssClass);\n\n          this._pane.classList.add(cssClass);\n        }\n      });\n    }\n  }\n  /** Clears the classes that the position strategy has applied from the overlay panel. */\n\n\n  _clearPanelClasses() {\n    if (this._pane) {\n      this._appliedPanelClasses.forEach(cssClass => {\n        this._pane.classList.remove(cssClass);\n      });\n\n      this._appliedPanelClasses = [];\n    }\n  }\n  /** Returns the ClientRect of the current origin. */\n\n\n  _getOriginRect() {\n    const origin = this._origin;\n\n    if (origin instanceof ElementRef) {\n      return origin.nativeElement.getBoundingClientRect();\n    } // Check for Element so SVG elements are also supported.\n\n\n    if (origin instanceof Element) {\n      return origin.getBoundingClientRect();\n    }\n\n    const width = origin.width || 0;\n    const height = origin.height || 0; // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n\n    return {\n      top: origin.y,\n      bottom: origin.y + height,\n      left: origin.x,\n      right: origin.x + width,\n      height,\n      width\n    };\n  }\n\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\n\n\nfunction extendStyles(destination, source) {\n  for (let key in source) {\n    if (source.hasOwnProperty(key)) {\n      destination[key] = source[key];\n    }\n  }\n\n  return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\n\n\nfunction getPixelValue(input) {\n  if (typeof input !== 'number' && input != null) {\n    const [value, units] = input.split(cssUnitPattern);\n    return !units || units === 'px' ? parseFloat(value) : null;\n  }\n\n  return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\n\n\nfunction getRoundedBoundingClientRect(clientRect) {\n  return {\n    top: Math.floor(clientRect.top),\n    right: Math.floor(clientRect.right),\n    bottom: Math.floor(clientRect.bottom),\n    left: Math.floor(clientRect.left),\n    width: Math.floor(clientRect.width),\n    height: Math.floor(clientRect.height)\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 to be added to the overlay pane wrapper. */\n\n\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\n\nclass GlobalPositionStrategy {\n  constructor() {\n    this._cssPosition = 'static';\n    this._topOffset = '';\n    this._bottomOffset = '';\n    this._leftOffset = '';\n    this._rightOffset = '';\n    this._alignItems = '';\n    this._justifyContent = '';\n    this._width = '';\n    this._height = '';\n  }\n\n  attach(overlayRef) {\n    const config = overlayRef.getConfig();\n    this._overlayRef = overlayRef;\n\n    if (this._width && !config.width) {\n      overlayRef.updateSize({\n        width: this._width\n      });\n    }\n\n    if (this._height && !config.height) {\n      overlayRef.updateSize({\n        height: this._height\n      });\n    }\n\n    overlayRef.hostElement.classList.add(wrapperClass);\n    this._isDisposed = false;\n  }\n  /**\n   * Sets the top position of the overlay. Clears any previously set vertical position.\n   * @param value New top offset.\n   */\n\n\n  top(value = '') {\n    this._bottomOffset = '';\n    this._topOffset = value;\n    this._alignItems = 'flex-start';\n    return this;\n  }\n  /**\n   * Sets the left position of the overlay. Clears any previously set horizontal position.\n   * @param value New left offset.\n   */\n\n\n  left(value = '') {\n    this._rightOffset = '';\n    this._leftOffset = value;\n    this._justifyContent = 'flex-start';\n    return this;\n  }\n  /**\n   * Sets the bottom position of the overlay. Clears any previously set vertical position.\n   * @param value New bottom offset.\n   */\n\n\n  bottom(value = '') {\n    this._topOffset = '';\n    this._bottomOffset = value;\n    this._alignItems = 'flex-end';\n    return this;\n  }\n  /**\n   * Sets the right position of the overlay. Clears any previously set horizontal position.\n   * @param value New right offset.\n   */\n\n\n  right(value = '') {\n    this._leftOffset = '';\n    this._rightOffset = value;\n    this._justifyContent = 'flex-end';\n    return this;\n  }\n  /**\n   * Sets the overlay width and clears any previously set width.\n   * @param value New width for the overlay\n   * @deprecated Pass the `width` through the `OverlayConfig`.\n   * @breaking-change 8.0.0\n   */\n\n\n  width(value = '') {\n    if (this._overlayRef) {\n      this._overlayRef.updateSize({\n        width: value\n      });\n    } else {\n      this._width = value;\n    }\n\n    return this;\n  }\n  /**\n   * Sets the overlay height and clears any previously set height.\n   * @param value New height for the overlay\n   * @deprecated Pass the `height` through the `OverlayConfig`.\n   * @breaking-change 8.0.0\n   */\n\n\n  height(value = '') {\n    if (this._overlayRef) {\n      this._overlayRef.updateSize({\n        height: value\n      });\n    } else {\n      this._height = value;\n    }\n\n    return this;\n  }\n  /**\n   * Centers the overlay horizontally with an optional offset.\n   * Clears any previously set horizontal position.\n   *\n   * @param offset Overlay offset from the horizontal center.\n   */\n\n\n  centerHorizontally(offset = '') {\n    this.left(offset);\n    this._justifyContent = 'center';\n    return this;\n  }\n  /**\n   * Centers the overlay vertically with an optional offset.\n   * Clears any previously set vertical position.\n   *\n   * @param offset Overlay offset from the vertical center.\n   */\n\n\n  centerVertically(offset = '') {\n    this.top(offset);\n    this._alignItems = 'center';\n    return this;\n  }\n  /**\n   * Apply the position to the element.\n   * @docs-private\n   */\n\n\n  apply() {\n    // Since the overlay ref applies the strategy asynchronously, it could\n    // have been disposed before it ends up being applied. If that is the\n    // case, we shouldn't do anything.\n    if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n      return;\n    }\n\n    const styles = this._overlayRef.overlayElement.style;\n    const parentStyles = this._overlayRef.hostElement.style;\n\n    const config = this._overlayRef.getConfig();\n\n    const {\n      width,\n      height,\n      maxWidth,\n      maxHeight\n    } = config;\n    const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') && (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n    const shouldBeFlushVertically = (height === '100%' || height === '100vh') && (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n    styles.position = this._cssPosition;\n    styles.marginLeft = shouldBeFlushHorizontally ? '0' : this._leftOffset;\n    styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n    styles.marginBottom = this._bottomOffset;\n    styles.marginRight = this._rightOffset;\n\n    if (shouldBeFlushHorizontally) {\n      parentStyles.justifyContent = 'flex-start';\n    } else if (this._justifyContent === 'center') {\n      parentStyles.justifyContent = 'center';\n    } else if (this._overlayRef.getConfig().direction === 'rtl') {\n      // In RTL the browser will invert `flex-start` and `flex-end` automatically, but we\n      // don't want that because our positioning is explicitly `left` and `right`, hence\n      // why we do another inversion to ensure that the overlay stays in the same position.\n      // TODO: reconsider this if we add `start` and `end` methods.\n      if (this._justifyContent === 'flex-start') {\n        parentStyles.justifyContent = 'flex-end';\n      } else if (this._justifyContent === 'flex-end') {\n        parentStyles.justifyContent = 'flex-start';\n      }\n    } else {\n      parentStyles.justifyContent = this._justifyContent;\n    }\n\n    parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n  }\n  /**\n   * Cleans up the DOM changes from the position strategy.\n   * @docs-private\n   */\n\n\n  dispose() {\n    if (this._isDisposed || !this._overlayRef) {\n      return;\n    }\n\n    const styles = this._overlayRef.overlayElement.style;\n    const parent = this._overlayRef.hostElement;\n    const parentStyles = parent.style;\n    parent.classList.remove(wrapperClass);\n    parentStyles.justifyContent = parentStyles.alignItems = styles.marginTop = styles.marginBottom = styles.marginLeft = styles.marginRight = styles.position = '';\n    this._overlayRef = null;\n    this._isDisposed = true;\n  }\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/** Builder for overlay position strategy. */\n\n\nclass OverlayPositionBuilder {\n  constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n    this._viewportRuler = _viewportRuler;\n    this._document = _document;\n    this._platform = _platform;\n    this._overlayContainer = _overlayContainer;\n  }\n  /**\n   * Creates a global position strategy.\n   */\n\n\n  global() {\n    return new GlobalPositionStrategy();\n  }\n  /**\n   * Creates a flexible position strategy.\n   * @param origin Origin relative to which to position the overlay.\n   */\n\n\n  flexibleConnectedTo(origin) {\n    return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n  }\n\n}\n\nOverlayPositionBuilder.ɵfac = function OverlayPositionBuilder_Factory(t) {\n  return new (t || OverlayPositionBuilder)(i0.ɵɵinject(i1.ViewportRuler), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform), i0.ɵɵinject(OverlayContainer));\n};\n\nOverlayPositionBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: OverlayPositionBuilder,\n  factory: OverlayPositionBuilder.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayPositionBuilder, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.ViewportRuler\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: i1$1.Platform\n    }, {\n      type: OverlayContainer\n    }];\n  }, null);\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/** Next overlay unique ID. */\n\n\nlet nextUniqueId = 0; // Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\n\nclass Overlay {\n  constructor(\n  /** Scrolling strategies that can be used when creating an overlay. */\n  scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher) {\n    this.scrollStrategies = scrollStrategies;\n    this._overlayContainer = _overlayContainer;\n    this._componentFactoryResolver = _componentFactoryResolver;\n    this._positionBuilder = _positionBuilder;\n    this._keyboardDispatcher = _keyboardDispatcher;\n    this._injector = _injector;\n    this._ngZone = _ngZone;\n    this._document = _document;\n    this._directionality = _directionality;\n    this._location = _location;\n    this._outsideClickDispatcher = _outsideClickDispatcher;\n  }\n  /**\n   * Creates an overlay.\n   * @param config Configuration applied to the overlay.\n   * @returns Reference to the created overlay.\n   */\n\n\n  create(config) {\n    const host = this._createHostElement();\n\n    const pane = this._createPaneElement(host);\n\n    const portalOutlet = this._createPortalOutlet(pane);\n\n    const overlayConfig = new OverlayConfig(config);\n    overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n    return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher);\n  }\n  /**\n   * Gets a position builder that can be used, via fluent API,\n   * to construct and configure a position strategy.\n   * @returns An overlay position builder.\n   */\n\n\n  position() {\n    return this._positionBuilder;\n  }\n  /**\n   * Creates the DOM element for an overlay and appends it to the overlay container.\n   * @returns Newly-created pane element\n   */\n\n\n  _createPaneElement(host) {\n    const pane = this._document.createElement('div');\n\n    pane.id = `cdk-overlay-${nextUniqueId++}`;\n    pane.classList.add('cdk-overlay-pane');\n    host.appendChild(pane);\n    return pane;\n  }\n  /**\n   * Creates the host element that wraps around an overlay\n   * and can be used for advanced positioning.\n   * @returns Newly-create host element.\n   */\n\n\n  _createHostElement() {\n    const host = this._document.createElement('div');\n\n    this._overlayContainer.getContainerElement().appendChild(host);\n\n    return host;\n  }\n  /**\n   * Create a DomPortalOutlet into which the overlay content can be loaded.\n   * @param pane The DOM element to turn into a portal outlet.\n   * @returns A portal outlet for the given DOM element.\n   */\n\n\n  _createPortalOutlet(pane) {\n    // We have to resolve the ApplicationRef later in order to allow people\n    // to use overlay-based providers during app initialization.\n    if (!this._appRef) {\n      this._appRef = this._injector.get(ApplicationRef);\n    }\n\n    return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n  }\n\n}\n\nOverlay.ɵfac = function Overlay_Factory(t) {\n  return new (t || Overlay)(i0.ɵɵinject(ScrollStrategyOptions), i0.ɵɵinject(OverlayContainer), i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(OverlayPositionBuilder), i0.ɵɵinject(OverlayKeyboardDispatcher), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i5.Directionality), i0.ɵɵinject(i6.Location), i0.ɵɵinject(OverlayOutsideClickDispatcher));\n};\n\nOverlay.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: Overlay,\n  factory: Overlay.ɵfac\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Overlay, [{\n    type: Injectable\n  }], function () {\n    return [{\n      type: ScrollStrategyOptions\n    }, {\n      type: OverlayContainer\n    }, {\n      type: i0.ComponentFactoryResolver\n    }, {\n      type: OverlayPositionBuilder\n    }, {\n      type: OverlayKeyboardDispatcher\n    }, {\n      type: i0.Injector\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: i5.Directionality\n    }, {\n      type: i6.Location\n    }, {\n      type: OverlayOutsideClickDispatcher\n    }];\n  }, null);\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/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\n\n\nconst defaultPositionList = [{\n  originX: 'start',\n  originY: 'bottom',\n  overlayX: 'start',\n  overlayY: 'top'\n}, {\n  originX: 'start',\n  originY: 'top',\n  overlayX: 'start',\n  overlayY: 'bottom'\n}, {\n  originX: 'end',\n  originY: 'top',\n  overlayX: 'end',\n  overlayY: 'bottom'\n}, {\n  originX: 'end',\n  originY: 'bottom',\n  overlayX: 'end',\n  overlayY: 'top'\n}];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\n\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy');\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\n\nclass CdkOverlayOrigin {\n  constructor(\n  /** Reference to the element on which the directive is applied. */\n  elementRef) {\n    this.elementRef = elementRef;\n  }\n\n}\n\nCdkOverlayOrigin.ɵfac = function CdkOverlayOrigin_Factory(t) {\n  return new (t || CdkOverlayOrigin)(i0.ɵɵdirectiveInject(i0.ElementRef));\n};\n\nCdkOverlayOrigin.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkOverlayOrigin,\n  selectors: [[\"\", \"cdk-overlay-origin\", \"\"], [\"\", \"overlay-origin\", \"\"], [\"\", \"cdkOverlayOrigin\", \"\"]],\n  exportAs: [\"cdkOverlayOrigin\"]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkOverlayOrigin, [{\n    type: Directive,\n    args: [{\n      selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n      exportAs: 'cdkOverlayOrigin'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }];\n  }, null);\n})();\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\n\n\nclass CdkConnectedOverlay {\n  // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n  constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n    this._overlay = _overlay;\n    this._dir = _dir;\n    this._hasBackdrop = false;\n    this._lockPosition = false;\n    this._growAfterOpen = false;\n    this._flexibleDimensions = false;\n    this._push = false;\n    this._backdropSubscription = Subscription.EMPTY;\n    this._attachSubscription = Subscription.EMPTY;\n    this._detachSubscription = Subscription.EMPTY;\n    this._positionSubscription = Subscription.EMPTY;\n    /** Margin between the overlay and the viewport edges. */\n\n    this.viewportMargin = 0;\n    /** Whether the overlay is open. */\n\n    this.open = false;\n    /** Whether the overlay can be closed by user interaction. */\n\n    this.disableClose = false;\n    /** Event emitted when the backdrop is clicked. */\n\n    this.backdropClick = new EventEmitter();\n    /** Event emitted when the position has changed. */\n\n    this.positionChange = new EventEmitter();\n    /** Event emitted when the overlay has been attached. */\n\n    this.attach = new EventEmitter();\n    /** Event emitted when the overlay has been detached. */\n\n    this.detach = new EventEmitter();\n    /** Emits when there are keyboard events that are targeted at the overlay. */\n\n    this.overlayKeydown = new EventEmitter();\n    /** Emits when there are mouse outside click events that are targeted at the overlay. */\n\n    this.overlayOutsideClick = new EventEmitter();\n    this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n    this._scrollStrategyFactory = scrollStrategyFactory;\n    this.scrollStrategy = this._scrollStrategyFactory();\n  }\n  /** The offset in pixels for the overlay connection point on the x-axis */\n\n\n  get offsetX() {\n    return this._offsetX;\n  }\n\n  set offsetX(offsetX) {\n    this._offsetX = offsetX;\n\n    if (this._position) {\n      this._updatePositionStrategy(this._position);\n    }\n  }\n  /** The offset in pixels for the overlay connection point on the y-axis */\n\n\n  get offsetY() {\n    return this._offsetY;\n  }\n\n  set offsetY(offsetY) {\n    this._offsetY = offsetY;\n\n    if (this._position) {\n      this._updatePositionStrategy(this._position);\n    }\n  }\n  /** Whether or not the overlay should attach a backdrop. */\n\n\n  get hasBackdrop() {\n    return this._hasBackdrop;\n  }\n\n  set hasBackdrop(value) {\n    this._hasBackdrop = coerceBooleanProperty(value);\n  }\n  /** Whether or not the overlay should be locked when scrolling. */\n\n\n  get lockPosition() {\n    return this._lockPosition;\n  }\n\n  set lockPosition(value) {\n    this._lockPosition = coerceBooleanProperty(value);\n  }\n  /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n\n\n  get flexibleDimensions() {\n    return this._flexibleDimensions;\n  }\n\n  set flexibleDimensions(value) {\n    this._flexibleDimensions = coerceBooleanProperty(value);\n  }\n  /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n\n\n  get growAfterOpen() {\n    return this._growAfterOpen;\n  }\n\n  set growAfterOpen(value) {\n    this._growAfterOpen = coerceBooleanProperty(value);\n  }\n  /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n\n\n  get push() {\n    return this._push;\n  }\n\n  set push(value) {\n    this._push = coerceBooleanProperty(value);\n  }\n  /** The associated overlay reference. */\n\n\n  get overlayRef() {\n    return this._overlayRef;\n  }\n  /** The element's layout direction. */\n\n\n  get dir() {\n    return this._dir ? this._dir.value : 'ltr';\n  }\n\n  ngOnDestroy() {\n    this._attachSubscription.unsubscribe();\n\n    this._detachSubscription.unsubscribe();\n\n    this._backdropSubscription.unsubscribe();\n\n    this._positionSubscription.unsubscribe();\n\n    if (this._overlayRef) {\n      this._overlayRef.dispose();\n    }\n  }\n\n  ngOnChanges(changes) {\n    if (this._position) {\n      this._updatePositionStrategy(this._position);\n\n      this._overlayRef.updateSize({\n        width: this.width,\n        minWidth: this.minWidth,\n        height: this.height,\n        minHeight: this.minHeight\n      });\n\n      if (changes['origin'] && this.open) {\n        this._position.apply();\n      }\n    }\n\n    if (changes['open']) {\n      this.open ? this._attachOverlay() : this._detachOverlay();\n    }\n  }\n  /** Creates an overlay */\n\n\n  _createOverlay() {\n    if (!this.positions || !this.positions.length) {\n      this.positions = defaultPositionList;\n    }\n\n    const overlayRef = this._overlayRef = this._overlay.create(this._buildConfig());\n\n    this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n    this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n    overlayRef.keydownEvents().subscribe(event => {\n      this.overlayKeydown.next(event);\n\n      if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n        event.preventDefault();\n\n        this._detachOverlay();\n      }\n    });\n\n    this._overlayRef.outsidePointerEvents().subscribe(event => {\n      this.overlayOutsideClick.next(event);\n    });\n  }\n  /** Builds the overlay config based on the directive's inputs */\n\n\n  _buildConfig() {\n    const positionStrategy = this._position = this.positionStrategy || this._createPositionStrategy();\n\n    const overlayConfig = new OverlayConfig({\n      direction: this._dir,\n      positionStrategy,\n      scrollStrategy: this.scrollStrategy,\n      hasBackdrop: this.hasBackdrop\n    });\n\n    if (this.width || this.width === 0) {\n      overlayConfig.width = this.width;\n    }\n\n    if (this.height || this.height === 0) {\n      overlayConfig.height = this.height;\n    }\n\n    if (this.minWidth || this.minWidth === 0) {\n      overlayConfig.minWidth = this.minWidth;\n    }\n\n    if (this.minHeight || this.minHeight === 0) {\n      overlayConfig.minHeight = this.minHeight;\n    }\n\n    if (this.backdropClass) {\n      overlayConfig.backdropClass = this.backdropClass;\n    }\n\n    if (this.panelClass) {\n      overlayConfig.panelClass = this.panelClass;\n    }\n\n    return overlayConfig;\n  }\n  /** Updates the state of a position strategy, based on the values of the directive inputs. */\n\n\n  _updatePositionStrategy(positionStrategy) {\n    const positions = this.positions.map(currentPosition => ({\n      originX: currentPosition.originX,\n      originY: currentPosition.originY,\n      overlayX: currentPosition.overlayX,\n      overlayY: currentPosition.overlayY,\n      offsetX: currentPosition.offsetX || this.offsetX,\n      offsetY: currentPosition.offsetY || this.offsetY,\n      panelClass: currentPosition.panelClass || undefined\n    }));\n    return positionStrategy.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(positions).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector);\n  }\n  /** Returns the position strategy of the overlay to be set on the overlay config */\n\n\n  _createPositionStrategy() {\n    const strategy = this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n\n    this._updatePositionStrategy(strategy);\n\n    return strategy;\n  }\n\n  _getFlexibleConnectedPositionStrategyOrigin() {\n    if (this.origin instanceof CdkOverlayOrigin) {\n      return this.origin.elementRef;\n    } else {\n      return this.origin;\n    }\n  }\n  /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n\n\n  _attachOverlay() {\n    if (!this._overlayRef) {\n      this._createOverlay();\n    } else {\n      // Update the overlay size, in case the directive's inputs have changed\n      this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n    }\n\n    if (!this._overlayRef.hasAttached()) {\n      this._overlayRef.attach(this._templatePortal);\n    }\n\n    if (this.hasBackdrop) {\n      this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n        this.backdropClick.emit(event);\n      });\n    } else {\n      this._backdropSubscription.unsubscribe();\n    }\n\n    this._positionSubscription.unsubscribe(); // Only subscribe to `positionChanges` if requested, because putting\n    // together all the information for it can be expensive.\n\n\n    if (this.positionChange.observers.length > 0) {\n      this._positionSubscription = this._position.positionChanges.pipe(takeWhile(() => this.positionChange.observers.length > 0)).subscribe(position => {\n        this.positionChange.emit(position);\n\n        if (this.positionChange.observers.length === 0) {\n          this._positionSubscription.unsubscribe();\n        }\n      });\n    }\n  }\n  /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n\n\n  _detachOverlay() {\n    if (this._overlayRef) {\n      this._overlayRef.detach();\n    }\n\n    this._backdropSubscription.unsubscribe();\n\n    this._positionSubscription.unsubscribe();\n  }\n\n}\n\nCdkConnectedOverlay.ɵfac = function CdkConnectedOverlay_Factory(t) {\n  return new (t || CdkConnectedOverlay)(i0.ɵɵdirectiveInject(Overlay), i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY), i0.ɵɵdirectiveInject(i5.Directionality, 8));\n};\n\nCdkConnectedOverlay.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkConnectedOverlay,\n  selectors: [[\"\", \"cdk-connected-overlay\", \"\"], [\"\", \"connected-overlay\", \"\"], [\"\", \"cdkConnectedOverlay\", \"\"]],\n  inputs: {\n    origin: [\"cdkConnectedOverlayOrigin\", \"origin\"],\n    positions: [\"cdkConnectedOverlayPositions\", \"positions\"],\n    positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"],\n    offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"],\n    offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"],\n    width: [\"cdkConnectedOverlayWidth\", \"width\"],\n    height: [\"cdkConnectedOverlayHeight\", \"height\"],\n    minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"],\n    minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"],\n    backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"],\n    panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"],\n    viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"],\n    scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"],\n    open: [\"cdkConnectedOverlayOpen\", \"open\"],\n    disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"],\n    transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"],\n    hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\"],\n    lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\"],\n    flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\"],\n    growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\"],\n    push: [\"cdkConnectedOverlayPush\", \"push\"]\n  },\n  outputs: {\n    backdropClick: \"backdropClick\",\n    positionChange: \"positionChange\",\n    attach: \"attach\",\n    detach: \"detach\",\n    overlayKeydown: \"overlayKeydown\",\n    overlayOutsideClick: \"overlayOutsideClick\"\n  },\n  exportAs: [\"cdkConnectedOverlay\"],\n  features: [i0.ɵɵNgOnChangesFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkConnectedOverlay, [{\n    type: Directive,\n    args: [{\n      selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n      exportAs: 'cdkConnectedOverlay'\n    }]\n  }], function () {\n    return [{\n      type: Overlay\n    }, {\n      type: i0.TemplateRef\n    }, {\n      type: i0.ViewContainerRef\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n      }]\n    }, {\n      type: i5.Directionality,\n      decorators: [{\n        type: Optional\n      }]\n    }];\n  }, {\n    origin: [{\n      type: Input,\n      args: ['cdkConnectedOverlayOrigin']\n    }],\n    positions: [{\n      type: Input,\n      args: ['cdkConnectedOverlayPositions']\n    }],\n    positionStrategy: [{\n      type: Input,\n      args: ['cdkConnectedOverlayPositionStrategy']\n    }],\n    offsetX: [{\n      type: Input,\n      args: ['cdkConnectedOverlayOffsetX']\n    }],\n    offsetY: [{\n      type: Input,\n      args: ['cdkConnectedOverlayOffsetY']\n    }],\n    width: [{\n      type: Input,\n      args: ['cdkConnectedOverlayWidth']\n    }],\n    height: [{\n      type: Input,\n      args: ['cdkConnectedOverlayHeight']\n    }],\n    minWidth: [{\n      type: Input,\n      args: ['cdkConnectedOverlayMinWidth']\n    }],\n    minHeight: [{\n      type: Input,\n      args: ['cdkConnectedOverlayMinHeight']\n    }],\n    backdropClass: [{\n      type: Input,\n      args: ['cdkConnectedOverlayBackdropClass']\n    }],\n    panelClass: [{\n      type: Input,\n      args: ['cdkConnectedOverlayPanelClass']\n    }],\n    viewportMargin: [{\n      type: Input,\n      args: ['cdkConnectedOverlayViewportMargin']\n    }],\n    scrollStrategy: [{\n      type: Input,\n      args: ['cdkConnectedOverlayScrollStrategy']\n    }],\n    open: [{\n      type: Input,\n      args: ['cdkConnectedOverlayOpen']\n    }],\n    disableClose: [{\n      type: Input,\n      args: ['cdkConnectedOverlayDisableClose']\n    }],\n    transformOriginSelector: [{\n      type: Input,\n      args: ['cdkConnectedOverlayTransformOriginOn']\n    }],\n    hasBackdrop: [{\n      type: Input,\n      args: ['cdkConnectedOverlayHasBackdrop']\n    }],\n    lockPosition: [{\n      type: Input,\n      args: ['cdkConnectedOverlayLockPosition']\n    }],\n    flexibleDimensions: [{\n      type: Input,\n      args: ['cdkConnectedOverlayFlexibleDimensions']\n    }],\n    growAfterOpen: [{\n      type: Input,\n      args: ['cdkConnectedOverlayGrowAfterOpen']\n    }],\n    push: [{\n      type: Input,\n      args: ['cdkConnectedOverlayPush']\n    }],\n    backdropClick: [{\n      type: Output\n    }],\n    positionChange: [{\n      type: Output\n    }],\n    attach: [{\n      type: Output\n    }],\n    detach: [{\n      type: Output\n    }],\n    overlayKeydown: [{\n      type: Output\n    }],\n    overlayOutsideClick: [{\n      type: Output\n    }]\n  });\n})();\n/** @docs-private */\n\n\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n  return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\n\n\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n  provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY\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\nclass OverlayModule {}\n\nOverlayModule.ɵfac = function OverlayModule_Factory(t) {\n  return new (t || OverlayModule)();\n};\n\nOverlayModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: OverlayModule\n});\nOverlayModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n  imports: [[BidiModule, PortalModule, ScrollingModule], ScrollingModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayModule, [{\n    type: NgModule,\n    args: [{\n      imports: [BidiModule, PortalModule, ScrollingModule],\n      exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n      declarations: [CdkConnectedOverlay, CdkOverlayOrigin],\n      providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER]\n    }]\n  }], null, null);\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/**\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/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\n\n\nclass FullscreenOverlayContainer extends OverlayContainer {\n  constructor(_document, platform) {\n    super(_document, platform);\n  }\n\n  ngOnDestroy() {\n    super.ngOnDestroy();\n\n    if (this._fullScreenEventName && this._fullScreenListener) {\n      this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n    }\n  }\n\n  _createContainer() {\n    super._createContainer();\n\n    this._adjustParentForFullscreenChange();\n\n    this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n  }\n\n  _adjustParentForFullscreenChange() {\n    if (!this._containerElement) {\n      return;\n    }\n\n    const fullscreenElement = this.getFullscreenElement();\n    const parent = fullscreenElement || this._document.body;\n    parent.appendChild(this._containerElement);\n  }\n\n  _addFullscreenChangeListener(fn) {\n    const eventName = this._getEventName();\n\n    if (eventName) {\n      if (this._fullScreenListener) {\n        this._document.removeEventListener(eventName, this._fullScreenListener);\n      }\n\n      this._document.addEventListener(eventName, fn);\n\n      this._fullScreenListener = fn;\n    }\n  }\n\n  _getEventName() {\n    if (!this._fullScreenEventName) {\n      const _document = this._document;\n\n      if (_document.fullscreenEnabled) {\n        this._fullScreenEventName = 'fullscreenchange';\n      } else if (_document.webkitFullscreenEnabled) {\n        this._fullScreenEventName = 'webkitfullscreenchange';\n      } else if (_document.mozFullScreenEnabled) {\n        this._fullScreenEventName = 'mozfullscreenchange';\n      } else if (_document.msFullscreenEnabled) {\n        this._fullScreenEventName = 'MSFullscreenChange';\n      }\n    }\n\n    return this._fullScreenEventName;\n  }\n  /**\n   * When the page is put into fullscreen mode, a specific element is specified.\n   * Only that element and its children are visible when in fullscreen mode.\n   */\n\n\n  getFullscreenElement() {\n    const _document = this._document;\n    return _document.fullscreenElement || _document.webkitFullscreenElement || _document.mozFullScreenElement || _document.msFullscreenElement || null;\n  }\n\n}\n\nFullscreenOverlayContainer.ɵfac = function FullscreenOverlayContainer_Factory(t) {\n  return new (t || FullscreenOverlayContainer)(i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(i1$1.Platform));\n};\n\nFullscreenOverlayContainer.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FullscreenOverlayContainer,\n  factory: FullscreenOverlayContainer.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FullscreenOverlayContainer, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: i1$1.Platform\n    }];\n  }, null);\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/overlay.mjs"],"names":["i1","ScrollingModule","CdkScrollable","ScrollDispatcher","ViewportRuler","i6","DOCUMENT","i0","Injectable","Inject","ElementRef","ApplicationRef","InjectionToken","Directive","EventEmitter","Optional","Input","Output","NgModule","coerceCssPixelValue","coerceArray","coerceBooleanProperty","i1$1","supportsScrollBehavior","_getEventTarget","_isTestEnvironment","i5","BidiModule","DomPortalOutlet","TemplatePortal","PortalModule","Subject","Subscription","merge","take","takeUntil","takeWhile","ESCAPE","hasModifierKey","scrollBehaviorSupported","BlockScrollStrategy","constructor","_viewportRuler","document","_previousHTMLStyles","top","left","_isEnabled","_document","attach","enable","_canBeEnabled","root","documentElement","_previousScrollPosition","getViewportScrollPosition","style","classList","add","disable","html","body","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","remove","window","scroll","contains","viewport","getViewportSize","scrollHeight","height","scrollWidth","width","getMatScrollStrategyAlreadyAttachedError","Error","CloseScrollStrategy","_scrollDispatcher","_ngZone","_config","_scrollSubscription","_detach","_overlayRef","hasAttached","run","detach","overlayRef","ngDevMode","stream","scrolled","threshold","_initialScrollPosition","subscribe","scrollPosition","Math","abs","updatePosition","unsubscribe","NoopScrollStrategy","isElementScrolledOutsideView","element","scrollContainers","some","containerBounds","outsideAbove","bottom","outsideBelow","outsideLeft","right","outsideRight","isElementClippedByScrolling","scrollContainerRect","clippedAbove","clippedBelow","clippedLeft","clippedRight","RepositionScrollStrategy","throttle","scrollThrottle","autoClose","overlayRect","overlayElement","getBoundingClientRect","parentRects","ScrollStrategyOptions","noop","close","config","block","reposition","ɵfac","NgZone","ɵprov","type","args","providedIn","undefined","decorators","OverlayConfig","scrollStrategy","panelClass","hasBackdrop","backdropClass","disposeOnNavigation","configKeys","Object","keys","key","ConnectionPositionPair","origin","overlay","offsetX","offsetY","originX","originY","overlayX","overlayY","ScrollingVisibility","ConnectedOverlayPositionChange","connectionPair","scrollableViewProperties","validateVerticalPosition","property","value","validateHorizontalPosition","BaseOverlayDispatcher","_attachedOverlays","ngOnDestroy","push","index","indexOf","splice","length","OverlayKeyboardDispatcher","_keydownListener","event","overlays","i","_keydownEvents","observers","next","_isAttached","addEventListener","removeEventListener","OverlayOutsideClickDispatcher","_platform","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","target","slice","_outsidePointerEvents","IOS","_cursorOriginalValue","cursor","Platform","OverlayContainer","_containerElement","getContainerElement","_createContainer","containerClass","isBrowser","oppositePlatformContainers","querySelectorAll","container","createElement","setAttribute","appendChild","OverlayRef","_portalOutlet","_host","_pane","_keyboardDispatcher","_location","_outsideClickDispatcher","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","EMPTY","_backdropClickHandler","_scrollStrategy","_positionStrategy","positionStrategy","backdropElement","hostElement","portal","attachResult","parentElement","_previousHostParent","_updateStackingOrder","_updateElementSize","_updateElementDirection","onStable","pipe","_togglePointerEvents","_attachBackdrop","_toggleClasses","dispose","detachBackdrop","detachmentResult","_detachContentWhenStable","isAttached","_disposeScrollStrategy","_disposeBackdrop","complete","backdropClick","attachments","detachments","keydownEvents","outsidePointerEvents","getConfig","apply","updatePositionStrategy","strategy","updateSize","sizeConfig","setDirection","dir","direction","addPanelClass","classes","removePanelClass","getDirection","updateScrollStrategy","minWidth","minHeight","maxWidth","maxHeight","enablePointer","pointerEvents","showingClass","insertBefore","requestAnimationFrame","runOutsideAngular","nextSibling","parentNode","backdropToDetach","timeoutId","finishDetach","clearTimeout","setTimeout","cssClasses","isAdd","filter","c","subscription","children","backdrop","boundingBoxClass","cssUnitPattern","FlexibleConnectedPositionStrategy","connectedTo","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_preferredPositions","_positionChanges","_resizeSubscription","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","positions","_validatePositions","_boundingBox","_isDisposed","_isInitialRender","_lastPosition","change","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","originRect","viewportRect","flexibleFits","fallback","pos","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","position","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","fit","score","weight","_previousPushAmount","extendStyles","alignItems","justifyContent","lastPosition","withScrollableContainers","scrollables","withPositions","withViewportMargin","margin","withFlexibleDimensions","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withLockedPosition","isLocked","_origin","withDefaultOffsetX","offset","withDefaultOffsetY","withTransformOriginOn","selector","_transformOriginSelector","x","startX","_isRtl","endX","y","overlayStartX","overlayStartY","point","rawOverlayRect","getRoundedBoundingClientRect","_getOffset","leftOverflow","rightOverflow","topOverflow","bottomOverflow","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","verticalFit","horizontalFit","_pushOverlayOnScreen","start","overflowRight","max","overflowBottom","overflowTop","overflowLeft","pushX","pushY","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","elements","xOrigin","yOrigin","transformOrigin","isRtl","smallestDistanceToViewportEdge","min","previousHeight","isBoundedByRightViewportEdge","isBoundedByLeftViewportEdge","previousWidth","styles","_hasExactPosition","transform","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","trim","virtualKeyboardOffset","documentHeight","clientHeight","horizontalStyleProperty","documentWidth","clientWidth","originBounds","overlayBounds","scrollContainerBounds","map","scrollable","getElementRef","nativeElement","isOriginClipped","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","reduce","currentValue","currentOverflow","axis","forEach","pair","cssClass","Element","destination","source","hasOwnProperty","input","units","split","parseFloat","clientRect","floor","wrapperClass","GlobalPositionStrategy","_cssPosition","_topOffset","_bottomOffset","_leftOffset","_rightOffset","_alignItems","_justifyContent","_width","_height","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","marginLeft","marginTop","marginBottom","marginRight","parent","OverlayPositionBuilder","global","flexibleConnectedTo","nextUniqueId","Overlay","scrollStrategies","_componentFactoryResolver","_positionBuilder","_injector","_directionality","create","host","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","id","_appRef","get","ComponentFactoryResolver","Injector","Directionality","Location","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","elementRef","ɵdir","exportAs","CdkConnectedOverlay","_overlay","templateRef","viewContainerRef","scrollStrategyFactory","_dir","_hasBackdrop","_lockPosition","_flexibleDimensions","_push","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","open","disableClose","positionChange","overlayKeydown","overlayOutsideClick","_templatePortal","_scrollStrategyFactory","_position","_updatePositionStrategy","lockPosition","ngOnChanges","changes","_attachOverlay","_detachOverlay","_createOverlay","_buildConfig","emit","keyCode","preventDefault","_createPositionStrategy","currentPosition","_getFlexibleConnectedPositionStrategyOrigin","transformOriginSelector","TemplateRef","ViewContainerRef","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","provide","deps","useFactory","OverlayModule","ɵmod","ɵinj","imports","exports","declarations","providers","FullscreenOverlayContainer","platform","_fullScreenEventName","_fullScreenListener","_adjustParentForFullscreenChange","_addFullscreenChangeListener","fullscreenElement","getFullscreenElement","fn","eventName","_getEventName","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"],"mappings":"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","sourcesContent":["import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, ElementRef, ApplicationRef, InjectionToken, Directive, EventEmitter, Optional, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\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 */\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n    constructor(_viewportRuler, document) {\n        this._viewportRuler = _viewportRuler;\n        this._previousHTMLStyles = { top: '', left: '' };\n        this._isEnabled = false;\n        this._document = document;\n    }\n    /** Attaches this scroll strategy to an overlay. */\n    attach() { }\n    /** Blocks page-level scroll while the attached overlay is open. */\n    enable() {\n        if (this._canBeEnabled()) {\n            const root = this._document.documentElement;\n            this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n            // Cache the previous inline styles in case the user had set them.\n            this._previousHTMLStyles.left = root.style.left || '';\n            this._previousHTMLStyles.top = root.style.top || '';\n            // Note: we're using the `html` node, instead of the `body`, because the `body` may\n            // have the user agent margin, whereas the `html` is guaranteed not to have one.\n            root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n            root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n            root.classList.add('cdk-global-scrollblock');\n            this._isEnabled = true;\n        }\n    }\n    /** Unblocks page-level scroll while the attached overlay is open. */\n    disable() {\n        if (this._isEnabled) {\n            const html = this._document.documentElement;\n            const body = this._document.body;\n            const htmlStyle = html.style;\n            const bodyStyle = body.style;\n            const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n            const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n            this._isEnabled = false;\n            htmlStyle.left = this._previousHTMLStyles.left;\n            htmlStyle.top = this._previousHTMLStyles.top;\n            html.classList.remove('cdk-global-scrollblock');\n            // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n            // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n            // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n            // because it can throw off feature detections in `supportsScrollBehavior` which\n            // checks for `'scrollBehavior' in documentElement.style`.\n            if (scrollBehaviorSupported) {\n                htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n            }\n            window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n            if (scrollBehaviorSupported) {\n                htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n                bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n            }\n        }\n    }\n    _canBeEnabled() {\n        // Since the scroll strategies can't be singletons, we have to use a global CSS class\n        // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n        // scrolling multiple times.\n        const html = this._document.documentElement;\n        if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n            return false;\n        }\n        const body = this._document.body;\n        const viewport = this._viewportRuler.getViewportSize();\n        return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n    }\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 * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n    return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n    constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n        this._scrollDispatcher = _scrollDispatcher;\n        this._ngZone = _ngZone;\n        this._viewportRuler = _viewportRuler;\n        this._config = _config;\n        this._scrollSubscription = null;\n        /** Detaches the overlay ref and disables the scroll strategy. */\n        this._detach = () => {\n            this.disable();\n            if (this._overlayRef.hasAttached()) {\n                this._ngZone.run(() => this._overlayRef.detach());\n            }\n        };\n    }\n    /** Attaches this scroll strategy to an overlay. */\n    attach(overlayRef) {\n        if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw getMatScrollStrategyAlreadyAttachedError();\n        }\n        this._overlayRef = overlayRef;\n    }\n    /** Enables the closing of the attached overlay on scroll. */\n    enable() {\n        if (this._scrollSubscription) {\n            return;\n        }\n        const stream = this._scrollDispatcher.scrolled(0);\n        if (this._config && this._config.threshold && this._config.threshold > 1) {\n            this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n            this._scrollSubscription = stream.subscribe(() => {\n                const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n                if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n                    this._detach();\n                }\n                else {\n                    this._overlayRef.updatePosition();\n                }\n            });\n        }\n        else {\n            this._scrollSubscription = stream.subscribe(this._detach);\n        }\n    }\n    /** Disables the closing the attached overlay on scroll. */\n    disable() {\n        if (this._scrollSubscription) {\n            this._scrollSubscription.unsubscribe();\n            this._scrollSubscription = null;\n        }\n    }\n    detach() {\n        this.disable();\n        this._overlayRef = null;\n    }\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/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n    /** Does nothing, as this scroll strategy is a no-op. */\n    enable() { }\n    /** Does nothing, as this scroll strategy is a no-op. */\n    disable() { }\n    /** Does nothing, as this scroll strategy is a no-op. */\n    attach() { }\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 * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n    return scrollContainers.some(containerBounds => {\n        const outsideAbove = element.bottom < containerBounds.top;\n        const outsideBelow = element.top > containerBounds.bottom;\n        const outsideLeft = element.right < containerBounds.left;\n        const outsideRight = element.left > containerBounds.right;\n        return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n    });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n    return scrollContainers.some(scrollContainerRect => {\n        const clippedAbove = element.top < scrollContainerRect.top;\n        const clippedBelow = element.bottom > scrollContainerRect.bottom;\n        const clippedLeft = element.left < scrollContainerRect.left;\n        const clippedRight = element.right > scrollContainerRect.right;\n        return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n    });\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 * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n    constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n        this._scrollDispatcher = _scrollDispatcher;\n        this._viewportRuler = _viewportRuler;\n        this._ngZone = _ngZone;\n        this._config = _config;\n        this._scrollSubscription = null;\n    }\n    /** Attaches this scroll strategy to an overlay. */\n    attach(overlayRef) {\n        if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw getMatScrollStrategyAlreadyAttachedError();\n        }\n        this._overlayRef = overlayRef;\n    }\n    /** Enables repositioning of the attached overlay on scroll. */\n    enable() {\n        if (!this._scrollSubscription) {\n            const throttle = this._config ? this._config.scrollThrottle : 0;\n            this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n                this._overlayRef.updatePosition();\n                // TODO(crisbeto): make `close` on by default once all components can handle it.\n                if (this._config && this._config.autoClose) {\n                    const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n                    const { width, height } = this._viewportRuler.getViewportSize();\n                    // TODO(crisbeto): include all ancestor scroll containers here once\n                    // we have a way of exposing the trigger element to the scroll strategy.\n                    const parentRects = [{ width, height, bottom: height, right: width, top: 0, left: 0 }];\n                    if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n                        this.disable();\n                        this._ngZone.run(() => this._overlayRef.detach());\n                    }\n                }\n            });\n        }\n    }\n    /** Disables repositioning of the attached overlay on scroll. */\n    disable() {\n        if (this._scrollSubscription) {\n            this._scrollSubscription.unsubscribe();\n            this._scrollSubscription = null;\n        }\n    }\n    detach() {\n        this.disable();\n        this._overlayRef = null;\n    }\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 * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n    constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n        this._scrollDispatcher = _scrollDispatcher;\n        this._viewportRuler = _viewportRuler;\n        this._ngZone = _ngZone;\n        /** Do nothing on scroll. */\n        this.noop = () => new NoopScrollStrategy();\n        /**\n         * Close the overlay as soon as the user scrolls.\n         * @param config Configuration to be used inside the scroll strategy.\n         */\n        this.close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n        /** Block scrolling. */\n        this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n        /**\n         * Update the overlay's position on scroll.\n         * @param config Configuration to be used inside the scroll strategy.\n         * Allows debouncing the reposition calls.\n         */\n        this.reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n        this._document = document;\n    }\n}\nScrollStrategyOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollStrategyOptions, deps: [{ token: i1.ScrollDispatcher }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollStrategyOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollStrategyOptions, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.ScrollDispatcher }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\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/**\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/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n    constructor(config) {\n        /** Strategy to be used when handling scroll events while the overlay is open. */\n        this.scrollStrategy = new NoopScrollStrategy();\n        /** Custom class to add to the overlay pane. */\n        this.panelClass = '';\n        /** Whether the overlay has a backdrop. */\n        this.hasBackdrop = false;\n        /** Custom class to add to the backdrop */\n        this.backdropClass = 'cdk-overlay-dark-backdrop';\n        /**\n         * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n         * Note that this usually doesn't include clicking on links (unless the user is using\n         * the `HashLocationStrategy`).\n         */\n        this.disposeOnNavigation = false;\n        if (config) {\n            // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n            // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n            // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n            const configKeys = Object.keys(config);\n            for (const key of configKeys) {\n                if (config[key] !== undefined) {\n                    // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n                    // as \"I don't know *which* key this is, so the only valid value is the intersection\n                    // of all the posible values.\" In this case, that happens to be `undefined`. TypeScript\n                    // is not smart enough to see that the right-hand-side is actually an access of the same\n                    // exact type with the same exact key, meaning that the value type must be identical.\n                    // So we use `any` to work around this.\n                    this[key] = config[key];\n                }\n            }\n        }\n    }\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/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n    constructor(origin, overlay, \n    /** Offset along the X axis. */\n    offsetX, \n    /** Offset along the Y axis. */\n    offsetY, \n    /** Class(es) to be applied to the panel while this position is active. */\n    panelClass) {\n        this.offsetX = offsetX;\n        this.offsetY = offsetY;\n        this.panelClass = panelClass;\n        this.originX = origin.originX;\n        this.originY = origin.originY;\n        this.overlayX = overlay.overlayX;\n        this.overlayY = overlay.overlayY;\n    }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n *       -----------                    -----------\n *       | outside |                    | clipped |\n *       |  view   |              --------------------------\n *       |         |              |     |         |        |\n *       ----------               |     -----------        |\n *  --------------------------    |                        |\n *  |                        |    |      Scrollable        |\n *  |                        |    |                        |\n *  |                        |     --------------------------\n *  |      Scrollable        |\n *  |                        |\n *  --------------------------\n *\n *  @docs-private\n */\nclass ScrollingVisibility {\n}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n    constructor(\n    /** The position used as a result of this change. */\n    connectionPair, \n    /** @docs-private */\n    scrollableViewProperties) {\n        this.connectionPair = connectionPair;\n        this.scrollableViewProperties = scrollableViewProperties;\n    }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n    if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n        throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n            `Expected \"top\", \"bottom\" or \"center\".`);\n    }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n    if (value !== 'start' && value !== 'end' && value !== 'center') {\n        throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n            `Expected \"start\", \"end\" or \"center\".`);\n    }\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 * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n    constructor(document) {\n        /** Currently attached overlays in the order they were attached. */\n        this._attachedOverlays = [];\n        this._document = document;\n    }\n    ngOnDestroy() {\n        this.detach();\n    }\n    /** Add a new overlay to the list of attached overlay refs. */\n    add(overlayRef) {\n        // Ensure that we don't get the same overlay multiple times.\n        this.remove(overlayRef);\n        this._attachedOverlays.push(overlayRef);\n    }\n    /** Remove an overlay from the list of attached overlay refs. */\n    remove(overlayRef) {\n        const index = this._attachedOverlays.indexOf(overlayRef);\n        if (index > -1) {\n            this._attachedOverlays.splice(index, 1);\n        }\n        // Remove the global listener once there are no more overlays.\n        if (this._attachedOverlays.length === 0) {\n            this.detach();\n        }\n    }\n}\nBaseOverlayDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BaseOverlayDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBaseOverlayDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\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 * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n    constructor(document) {\n        super(document);\n        /** Keyboard event listener that will be attached to the body. */\n        this._keydownListener = (event) => {\n            const overlays = this._attachedOverlays;\n            for (let i = overlays.length - 1; i > -1; i--) {\n                // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n                // We want to target the most recent overlay, rather than trying to match where the event came\n                // from, because some components might open an overlay, but keep focus on a trigger element\n                // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n                // because we don't want overlays that don't handle keyboard events to block the ones below\n                // them that do.\n                if (overlays[i]._keydownEvents.observers.length > 0) {\n                    overlays[i]._keydownEvents.next(event);\n                    break;\n                }\n            }\n        };\n    }\n    /** Add a new overlay to the list of attached overlay refs. */\n    add(overlayRef) {\n        super.add(overlayRef);\n        // Lazily start dispatcher once first overlay is added\n        if (!this._isAttached) {\n            this._document.body.addEventListener('keydown', this._keydownListener);\n            this._isAttached = true;\n        }\n    }\n    /** Detaches the global keyboard event listener. */\n    detach() {\n        if (this._isAttached) {\n            this._document.body.removeEventListener('keydown', this._keydownListener);\n            this._isAttached = false;\n        }\n    }\n}\nOverlayKeyboardDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayKeyboardDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\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 * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n    constructor(document, _platform) {\n        super(document);\n        this._platform = _platform;\n        this._cursorStyleIsSet = false;\n        /** Store pointerdown event target to track origin of click. */\n        this._pointerDownListener = (event) => {\n            this._pointerDownEventTarget = _getEventTarget(event);\n        };\n        /** Click event listener that will be attached to the body propagate phase. */\n        this._clickListener = (event) => {\n            const target = _getEventTarget(event);\n            // In case of a click event, we want to check the origin of the click\n            // (e.g. in case where a user starts a click inside the overlay and\n            // releases the click outside of it).\n            // This is done by using the event target of the preceding pointerdown event.\n            // Every click event caused by a pointer device has a preceding pointerdown\n            // event, unless the click was programmatically triggered (e.g. in a unit test).\n            const origin = event.type === 'click' && this._pointerDownEventTarget\n                ? this._pointerDownEventTarget : target;\n            // Reset the stored pointerdown event target, to avoid having it interfere\n            // in subsequent events.\n            this._pointerDownEventTarget = null;\n            // We copy the array because the original may be modified asynchronously if the\n            // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n            // the for loop.\n            const overlays = this._attachedOverlays.slice();\n            // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n            // We want to target all overlays for which the click could be considered as outside click.\n            // As soon as we reach an overlay for which the click is not outside click we break off\n            // the loop.\n            for (let i = overlays.length - 1; i > -1; i--) {\n                const overlayRef = overlays[i];\n                if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n                    continue;\n                }\n                // If it's a click inside the overlay, just break - we should do nothing\n                // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n                // and proceed with the next overlay\n                if (overlayRef.overlayElement.contains(target) ||\n                    overlayRef.overlayElement.contains(origin)) {\n                    break;\n                }\n                overlayRef._outsidePointerEvents.next(event);\n            }\n        };\n    }\n    /** Add a new overlay to the list of attached overlay refs. */\n    add(overlayRef) {\n        super.add(overlayRef);\n        // Safari on iOS does not generate click events for non-interactive\n        // elements. However, we want to receive a click for any element outside\n        // the overlay. We can force a \"clickable\" state by setting\n        // `cursor: pointer` on the document body. See:\n        // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n        // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n        if (!this._isAttached) {\n            const body = this._document.body;\n            body.addEventListener('pointerdown', this._pointerDownListener, true);\n            body.addEventListener('click', this._clickListener, true);\n            body.addEventListener('auxclick', this._clickListener, true);\n            body.addEventListener('contextmenu', this._clickListener, true);\n            // click event is not fired on iOS. To make element \"clickable\" we are\n            // setting the cursor to pointer\n            if (this._platform.IOS && !this._cursorStyleIsSet) {\n                this._cursorOriginalValue = body.style.cursor;\n                body.style.cursor = 'pointer';\n                this._cursorStyleIsSet = true;\n            }\n            this._isAttached = true;\n        }\n    }\n    /** Detaches the global keyboard event listener. */\n    detach() {\n        if (this._isAttached) {\n            const body = this._document.body;\n            body.removeEventListener('pointerdown', this._pointerDownListener, true);\n            body.removeEventListener('click', this._clickListener, true);\n            body.removeEventListener('auxclick', this._clickListener, true);\n            body.removeEventListener('contextmenu', this._clickListener, true);\n            if (this._platform.IOS && this._cursorStyleIsSet) {\n                body.style.cursor = this._cursorOriginalValue;\n                this._cursorStyleIsSet = false;\n            }\n            this._isAttached = false;\n        }\n    }\n}\nOverlayOutsideClickDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayOutsideClickDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: i1$1.Platform }]; } });\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/** Container inside which all overlays will render. */\nclass OverlayContainer {\n    constructor(document, _platform) {\n        this._platform = _platform;\n        this._document = document;\n    }\n    ngOnDestroy() {\n        this._containerElement?.remove();\n    }\n    /**\n     * This method returns the overlay container element. It will lazily\n     * create the element the first time it is called to facilitate using\n     * the container in non-browser environments.\n     * @returns the container element\n     */\n    getContainerElement() {\n        if (!this._containerElement) {\n            this._createContainer();\n        }\n        return this._containerElement;\n    }\n    /**\n     * Create the overlay container element, which is simply a div\n     * with the 'cdk-overlay-container' class on the document body.\n     */\n    _createContainer() {\n        const containerClass = 'cdk-overlay-container';\n        // TODO(crisbeto): remove the testing check once we have an overlay testing\n        // module or Angular starts tearing down the testing `NgModule`. See:\n        // https://github.com/angular/angular/issues/18831\n        if (this._platform.isBrowser || _isTestEnvironment()) {\n            const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n            // Remove any old containers from the opposite platform.\n            // This can happen when transitioning from the server to the client.\n            for (let i = 0; i < oppositePlatformContainers.length; i++) {\n                oppositePlatformContainers[i].remove();\n            }\n        }\n        const container = this._document.createElement('div');\n        container.classList.add(containerClass);\n        // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n        // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n        // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n        // To mitigate the problem we made it so that only containers from a different platform are\n        // cleared, but the side-effect was that people started depending on the overly-aggressive\n        // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n        // module which does the cleanup, we try to detect that we're in a test environment and we\n        // always clear the container. See #17006.\n        // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n        if (_isTestEnvironment()) {\n            container.setAttribute('platform', 'test');\n        }\n        else if (!this._platform.isBrowser) {\n            container.setAttribute('platform', 'server');\n        }\n        this._document.body.appendChild(container);\n        this._containerElement = container;\n    }\n}\nOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayContainer, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: i1$1.Platform }]; } });\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 * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n    constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher) {\n        this._portalOutlet = _portalOutlet;\n        this._host = _host;\n        this._pane = _pane;\n        this._config = _config;\n        this._ngZone = _ngZone;\n        this._keyboardDispatcher = _keyboardDispatcher;\n        this._document = _document;\n        this._location = _location;\n        this._outsideClickDispatcher = _outsideClickDispatcher;\n        this._backdropElement = null;\n        this._backdropClick = new Subject();\n        this._attachments = new Subject();\n        this._detachments = new Subject();\n        this._locationChanges = Subscription.EMPTY;\n        this._backdropClickHandler = (event) => this._backdropClick.next(event);\n        /** Stream of keydown events dispatched to this overlay. */\n        this._keydownEvents = new Subject();\n        /** Stream of mouse outside events dispatched to this overlay. */\n        this._outsidePointerEvents = new Subject();\n        if (_config.scrollStrategy) {\n            this._scrollStrategy = _config.scrollStrategy;\n            this._scrollStrategy.attach(this);\n        }\n        this._positionStrategy = _config.positionStrategy;\n    }\n    /** The overlay's HTML element */\n    get overlayElement() {\n        return this._pane;\n    }\n    /** The overlay's backdrop HTML element. */\n    get backdropElement() {\n        return this._backdropElement;\n    }\n    /**\n     * Wrapper around the panel element. Can be used for advanced\n     * positioning where a wrapper with specific styling is\n     * required around the overlay pane.\n     */\n    get hostElement() {\n        return this._host;\n    }\n    /**\n     * Attaches content, given via a Portal, to the overlay.\n     * If the overlay is configured to have a backdrop, it will be created.\n     *\n     * @param portal Portal instance to which to attach the overlay.\n     * @returns The portal attachment result.\n     */\n    attach(portal) {\n        let attachResult = this._portalOutlet.attach(portal);\n        // Update the pane element with the given configuration.\n        if (!this._host.parentElement && this._previousHostParent) {\n            this._previousHostParent.appendChild(this._host);\n        }\n        if (this._positionStrategy) {\n            this._positionStrategy.attach(this);\n        }\n        this._updateStackingOrder();\n        this._updateElementSize();\n        this._updateElementDirection();\n        if (this._scrollStrategy) {\n            this._scrollStrategy.enable();\n        }\n        // Update the position once the zone is stable so that the overlay will be fully rendered\n        // before attempting to position it, as the position may depend on the size of the rendered\n        // content.\n        this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n            // The overlay could've been detached before the zone has stabilized.\n            if (this.hasAttached()) {\n                this.updatePosition();\n            }\n        });\n        // Enable pointer events for the overlay pane element.\n        this._togglePointerEvents(true);\n        if (this._config.hasBackdrop) {\n            this._attachBackdrop();\n        }\n        if (this._config.panelClass) {\n            this._toggleClasses(this._pane, this._config.panelClass, true);\n        }\n        // Only emit the `attachments` event once all other setup is done.\n        this._attachments.next();\n        // Track this overlay by the keyboard dispatcher\n        this._keyboardDispatcher.add(this);\n        if (this._config.disposeOnNavigation) {\n            this._locationChanges = this._location.subscribe(() => this.dispose());\n        }\n        this._outsideClickDispatcher.add(this);\n        return attachResult;\n    }\n    /**\n     * Detaches an overlay from a portal.\n     * @returns The portal detachment result.\n     */\n    detach() {\n        if (!this.hasAttached()) {\n            return;\n        }\n        this.detachBackdrop();\n        // When the overlay is detached, the pane element should disable pointer events.\n        // This is necessary because otherwise the pane element will cover the page and disable\n        // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n        this._togglePointerEvents(false);\n        if (this._positionStrategy && this._positionStrategy.detach) {\n            this._positionStrategy.detach();\n        }\n        if (this._scrollStrategy) {\n            this._scrollStrategy.disable();\n        }\n        const detachmentResult = this._portalOutlet.detach();\n        // Only emit after everything is detached.\n        this._detachments.next();\n        // Remove this overlay from keyboard dispatcher tracking.\n        this._keyboardDispatcher.remove(this);\n        // Keeping the host element in the DOM can cause scroll jank, because it still gets\n        // rendered, even though it's transparent and unclickable which is why we remove it.\n        this._detachContentWhenStable();\n        this._locationChanges.unsubscribe();\n        this._outsideClickDispatcher.remove(this);\n        return detachmentResult;\n    }\n    /** Cleans up the overlay from the DOM. */\n    dispose() {\n        const isAttached = this.hasAttached();\n        if (this._positionStrategy) {\n            this._positionStrategy.dispose();\n        }\n        this._disposeScrollStrategy();\n        this._disposeBackdrop(this._backdropElement);\n        this._locationChanges.unsubscribe();\n        this._keyboardDispatcher.remove(this);\n        this._portalOutlet.dispose();\n        this._attachments.complete();\n        this._backdropClick.complete();\n        this._keydownEvents.complete();\n        this._outsidePointerEvents.complete();\n        this._outsideClickDispatcher.remove(this);\n        this._host?.remove();\n        this._previousHostParent = this._pane = this._host = null;\n        if (isAttached) {\n            this._detachments.next();\n        }\n        this._detachments.complete();\n    }\n    /** Whether the overlay has attached content. */\n    hasAttached() {\n        return this._portalOutlet.hasAttached();\n    }\n    /** Gets an observable that emits when the backdrop has been clicked. */\n    backdropClick() {\n        return this._backdropClick;\n    }\n    /** Gets an observable that emits when the overlay has been attached. */\n    attachments() {\n        return this._attachments;\n    }\n    /** Gets an observable that emits when the overlay has been detached. */\n    detachments() {\n        return this._detachments;\n    }\n    /** Gets an observable of keydown events targeted to this overlay. */\n    keydownEvents() {\n        return this._keydownEvents;\n    }\n    /** Gets an observable of pointer events targeted outside this overlay. */\n    outsidePointerEvents() {\n        return this._outsidePointerEvents;\n    }\n    /** Gets the current overlay configuration, which is immutable. */\n    getConfig() {\n        return this._config;\n    }\n    /** Updates the position of the overlay based on the position strategy. */\n    updatePosition() {\n        if (this._positionStrategy) {\n            this._positionStrategy.apply();\n        }\n    }\n    /** Switches to a new position strategy and updates the overlay position. */\n    updatePositionStrategy(strategy) {\n        if (strategy === this._positionStrategy) {\n            return;\n        }\n        if (this._positionStrategy) {\n            this._positionStrategy.dispose();\n        }\n        this._positionStrategy = strategy;\n        if (this.hasAttached()) {\n            strategy.attach(this);\n            this.updatePosition();\n        }\n    }\n    /** Update the size properties of the overlay. */\n    updateSize(sizeConfig) {\n        this._config = { ...this._config, ...sizeConfig };\n        this._updateElementSize();\n    }\n    /** Sets the LTR/RTL direction for the overlay. */\n    setDirection(dir) {\n        this._config = { ...this._config, direction: dir };\n        this._updateElementDirection();\n    }\n    /** Add a CSS class or an array of classes to the overlay pane. */\n    addPanelClass(classes) {\n        if (this._pane) {\n            this._toggleClasses(this._pane, classes, true);\n        }\n    }\n    /** Remove a CSS class or an array of classes from the overlay pane. */\n    removePanelClass(classes) {\n        if (this._pane) {\n            this._toggleClasses(this._pane, classes, false);\n        }\n    }\n    /**\n     * Returns the layout direction of the overlay panel.\n     */\n    getDirection() {\n        const direction = this._config.direction;\n        if (!direction) {\n            return 'ltr';\n        }\n        return typeof direction === 'string' ? direction : direction.value;\n    }\n    /** Switches to a new scroll strategy. */\n    updateScrollStrategy(strategy) {\n        if (strategy === this._scrollStrategy) {\n            return;\n        }\n        this._disposeScrollStrategy();\n        this._scrollStrategy = strategy;\n        if (this.hasAttached()) {\n            strategy.attach(this);\n            strategy.enable();\n        }\n    }\n    /** Updates the text direction of the overlay panel. */\n    _updateElementDirection() {\n        this._host.setAttribute('dir', this.getDirection());\n    }\n    /** Updates the size of the overlay element based on the overlay config. */\n    _updateElementSize() {\n        if (!this._pane) {\n            return;\n        }\n        const style = this._pane.style;\n        style.width = coerceCssPixelValue(this._config.width);\n        style.height = coerceCssPixelValue(this._config.height);\n        style.minWidth = coerceCssPixelValue(this._config.minWidth);\n        style.minHeight = coerceCssPixelValue(this._config.minHeight);\n        style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n        style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n    }\n    /** Toggles the pointer events for the overlay pane element. */\n    _togglePointerEvents(enablePointer) {\n        this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n    }\n    /** Attaches a backdrop for this overlay. */\n    _attachBackdrop() {\n        const showingClass = 'cdk-overlay-backdrop-showing';\n        this._backdropElement = this._document.createElement('div');\n        this._backdropElement.classList.add('cdk-overlay-backdrop');\n        if (this._config.backdropClass) {\n            this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n        }\n        // Insert the backdrop before the pane in the DOM order,\n        // in order to handle stacked overlays properly.\n        this._host.parentElement.insertBefore(this._backdropElement, this._host);\n        // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n        // action desired when such a click occurs (usually closing the overlay).\n        this._backdropElement.addEventListener('click', this._backdropClickHandler);\n        // Add class to fade-in the backdrop after one frame.\n        if (typeof requestAnimationFrame !== 'undefined') {\n            this._ngZone.runOutsideAngular(() => {\n                requestAnimationFrame(() => {\n                    if (this._backdropElement) {\n                        this._backdropElement.classList.add(showingClass);\n                    }\n                });\n            });\n        }\n        else {\n            this._backdropElement.classList.add(showingClass);\n        }\n    }\n    /**\n     * Updates the stacking order of the element, moving it to the top if necessary.\n     * This is required in cases where one overlay was detached, while another one,\n     * that should be behind it, was destroyed. The next time both of them are opened,\n     * the stacking will be wrong, because the detached element's pane will still be\n     * in its original DOM position.\n     */\n    _updateStackingOrder() {\n        if (this._host.nextSibling) {\n            this._host.parentNode.appendChild(this._host);\n        }\n    }\n    /** Detaches the backdrop (if any) associated with the overlay. */\n    detachBackdrop() {\n        const backdropToDetach = this._backdropElement;\n        if (!backdropToDetach) {\n            return;\n        }\n        let timeoutId;\n        const finishDetach = () => {\n            // It may not be attached to anything in certain cases (e.g. unit tests).\n            if (backdropToDetach) {\n                backdropToDetach.removeEventListener('click', this._backdropClickHandler);\n                backdropToDetach.removeEventListener('transitionend', finishDetach);\n                this._disposeBackdrop(backdropToDetach);\n            }\n            if (this._config.backdropClass) {\n                this._toggleClasses(backdropToDetach, this._config.backdropClass, false);\n            }\n            clearTimeout(timeoutId);\n        };\n        backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n        this._ngZone.runOutsideAngular(() => {\n            backdropToDetach.addEventListener('transitionend', finishDetach);\n        });\n        // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n        // In this case we make it unclickable and we try to remove it after a delay.\n        backdropToDetach.style.pointerEvents = 'none';\n        // Run this outside the Angular zone because there's nothing that Angular cares about.\n        // If it were to run inside the Angular zone, every test that used Overlay would have to be\n        // either async or fakeAsync.\n        timeoutId = this._ngZone.runOutsideAngular(() => setTimeout(finishDetach, 500));\n    }\n    /** Toggles a single CSS class or an array of classes on an element. */\n    _toggleClasses(element, cssClasses, isAdd) {\n        const classes = coerceArray(cssClasses || []).filter(c => !!c);\n        if (classes.length) {\n            isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n        }\n    }\n    /** Detaches the overlay content next time the zone stabilizes. */\n    _detachContentWhenStable() {\n        // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n        // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n        // be patched to run inside the zone, which will throw us into an infinite loop.\n        this._ngZone.runOutsideAngular(() => {\n            // We can't remove the host here immediately, because the overlay pane's content\n            // might still be animating. This stream helps us avoid interrupting the animation\n            // by waiting for the pane to become empty.\n            const subscription = this._ngZone.onStable\n                .pipe(takeUntil(merge(this._attachments, this._detachments)))\n                .subscribe(() => {\n                // Needs a couple of checks for the pane and host, because\n                // they may have been removed by the time the zone stabilizes.\n                if (!this._pane || !this._host || this._pane.children.length === 0) {\n                    if (this._pane && this._config.panelClass) {\n                        this._toggleClasses(this._pane, this._config.panelClass, false);\n                    }\n                    if (this._host && this._host.parentElement) {\n                        this._previousHostParent = this._host.parentElement;\n                        this._host.remove();\n                    }\n                    subscription.unsubscribe();\n                }\n            });\n        });\n    }\n    /** Disposes of a scroll strategy. */\n    _disposeScrollStrategy() {\n        const scrollStrategy = this._scrollStrategy;\n        if (scrollStrategy) {\n            scrollStrategy.disable();\n            if (scrollStrategy.detach) {\n                scrollStrategy.detach();\n            }\n        }\n    }\n    /** Removes a backdrop element from the DOM. */\n    _disposeBackdrop(backdrop) {\n        if (backdrop) {\n            backdrop.remove();\n            // It is possible that a new portal has been attached to this overlay since we started\n            // removing the backdrop. If that is the case, only clear the backdrop reference if it\n            // is still the same instance that we started to remove.\n            if (this._backdropElement === backdrop) {\n                this._backdropElement = null;\n            }\n        }\n    }\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// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n    constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n        this._viewportRuler = _viewportRuler;\n        this._document = _document;\n        this._platform = _platform;\n        this._overlayContainer = _overlayContainer;\n        /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n        this._lastBoundingBoxSize = { width: 0, height: 0 };\n        /** Whether the overlay was pushed in a previous positioning. */\n        this._isPushed = false;\n        /** Whether the overlay can be pushed on-screen on the initial open. */\n        this._canPush = true;\n        /** Whether the overlay can grow via flexible width/height after the initial open. */\n        this._growAfterOpen = false;\n        /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n        this._hasFlexibleDimensions = true;\n        /** Whether the overlay position is locked. */\n        this._positionLocked = false;\n        /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n        this._viewportMargin = 0;\n        /** The Scrollable containers used to check scrollable view properties on position change. */\n        this._scrollables = [];\n        /** Ordered list of preferred positions, from most to least desirable. */\n        this._preferredPositions = [];\n        /** Subject that emits whenever the position changes. */\n        this._positionChanges = new Subject();\n        /** Subscription to viewport size changes. */\n        this._resizeSubscription = Subscription.EMPTY;\n        /** Default offset for the overlay along the x axis. */\n        this._offsetX = 0;\n        /** Default offset for the overlay along the y axis. */\n        this._offsetY = 0;\n        /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n        this._appliedPanelClasses = [];\n        /** Observable sequence of position changes. */\n        this.positionChanges = this._positionChanges;\n        this.setOrigin(connectedTo);\n    }\n    /** Ordered list of preferred positions, from most to least desirable. */\n    get positions() {\n        return this._preferredPositions;\n    }\n    /** Attaches this position strategy to an overlay. */\n    attach(overlayRef) {\n        if (this._overlayRef &&\n            overlayRef !== this._overlayRef &&\n            (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw Error('This position strategy is already attached to an overlay');\n        }\n        this._validatePositions();\n        overlayRef.hostElement.classList.add(boundingBoxClass);\n        this._overlayRef = overlayRef;\n        this._boundingBox = overlayRef.hostElement;\n        this._pane = overlayRef.overlayElement;\n        this._isDisposed = false;\n        this._isInitialRender = true;\n        this._lastPosition = null;\n        this._resizeSubscription.unsubscribe();\n        this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n            // When the window is resized, we want to trigger the next reposition as if it\n            // was an initial render, in order for the strategy to pick a new optimal position,\n            // otherwise position locking will cause it to stay at the old one.\n            this._isInitialRender = true;\n            this.apply();\n        });\n    }\n    /**\n     * Updates the position of the overlay element, using whichever preferred position relative\n     * to the origin best fits on-screen.\n     *\n     * The selection of a position goes as follows:\n     *  - If any positions fit completely within the viewport as-is,\n     *      choose the first position that does so.\n     *  - If flexible dimensions are enabled and at least one satifies the given minimum width/height,\n     *      choose the position with the greatest available size modified by the positions' weight.\n     *  - If pushing is enabled, take the position that went off-screen the least and push it\n     *      on-screen.\n     *  - If none of the previous criteria were met, use the position that goes off-screen the least.\n     * @docs-private\n     */\n    apply() {\n        // We shouldn't do anything if the strategy was disposed or we're on the server.\n        if (this._isDisposed || !this._platform.isBrowser) {\n            return;\n        }\n        // If the position has been applied already (e.g. when the overlay was opened) and the\n        // consumer opted into locking in the position, re-use the old position, in order to\n        // prevent the overlay from jumping around.\n        if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n            this.reapplyLastPosition();\n            return;\n        }\n        this._clearPanelClasses();\n        this._resetOverlayElementStyles();\n        this._resetBoundingBoxStyles();\n        // We need the bounding rects for the origin and the overlay to determine how to position\n        // the overlay relative to the origin.\n        // We use the viewport rect to determine whether a position would go off-screen.\n        this._viewportRect = this._getNarrowedViewportRect();\n        this._originRect = this._getOriginRect();\n        this._overlayRect = this._pane.getBoundingClientRect();\n        const originRect = this._originRect;\n        const overlayRect = this._overlayRect;\n        const viewportRect = this._viewportRect;\n        // Positions where the overlay will fit with flexible dimensions.\n        const flexibleFits = [];\n        // Fallback if none of the preferred positions fit within the viewport.\n        let fallback;\n        // Go through each of the preferred positions looking for a good fit.\n        // If a good fit is found, it will be applied immediately.\n        for (let pos of this._preferredPositions) {\n            // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n            let originPoint = this._getOriginPoint(originRect, pos);\n            // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n            // overlay in this position. We use the top-left corner for calculations and later translate\n            // this into an appropriate (top, left, bottom, right) style.\n            let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n            // Calculate how well the overlay would fit into the viewport with this point.\n            let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n            // If the overlay, without any further work, fits into the viewport, use this position.\n            if (overlayFit.isCompletelyWithinViewport) {\n                this._isPushed = false;\n                this._applyPosition(pos, originPoint);\n                return;\n            }\n            // If the overlay has flexible dimensions, we can use this position\n            // so long as there's enough space for the minimum dimensions.\n            if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n                // Save positions where the overlay will fit with flexible dimensions. We will use these\n                // if none of the positions fit *without* flexible dimensions.\n                flexibleFits.push({\n                    position: pos,\n                    origin: originPoint,\n                    overlayRect,\n                    boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),\n                });\n                continue;\n            }\n            // If the current preferred position does not fit on the screen, remember the position\n            // if it has more visible area on-screen than we've seen and move onto the next preferred\n            // position.\n            if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n                fallback = { overlayFit, overlayPoint, originPoint, position: pos, overlayRect };\n            }\n        }\n        // If there are any positions where the overlay would fit with flexible dimensions, choose the\n        // one that has the greatest area available modified by the position's weight\n        if (flexibleFits.length) {\n            let bestFit = null;\n            let bestScore = -1;\n            for (const fit of flexibleFits) {\n                const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n                if (score > bestScore) {\n                    bestScore = score;\n                    bestFit = fit;\n                }\n            }\n            this._isPushed = false;\n            this._applyPosition(bestFit.position, bestFit.origin);\n            return;\n        }\n        // When none of the preferred positions fit within the viewport, take the position\n        // that went off-screen the least and attempt to push it on-screen.\n        if (this._canPush) {\n            // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n            this._isPushed = true;\n            this._applyPosition(fallback.position, fallback.originPoint);\n            return;\n        }\n        // All options for getting the overlay within the viewport have been exhausted, so go with the\n        // position that went off-screen the least.\n        this._applyPosition(fallback.position, fallback.originPoint);\n    }\n    detach() {\n        this._clearPanelClasses();\n        this._lastPosition = null;\n        this._previousPushAmount = null;\n        this._resizeSubscription.unsubscribe();\n    }\n    /** Cleanup after the element gets destroyed. */\n    dispose() {\n        if (this._isDisposed) {\n            return;\n        }\n        // We can't use `_resetBoundingBoxStyles` here, because it resets\n        // some properties to zero, rather than removing them.\n        if (this._boundingBox) {\n            extendStyles(this._boundingBox.style, {\n                top: '',\n                left: '',\n                right: '',\n                bottom: '',\n                height: '',\n                width: '',\n                alignItems: '',\n                justifyContent: '',\n            });\n        }\n        if (this._pane) {\n            this._resetOverlayElementStyles();\n        }\n        if (this._overlayRef) {\n            this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n        }\n        this.detach();\n        this._positionChanges.complete();\n        this._overlayRef = this._boundingBox = null;\n        this._isDisposed = true;\n    }\n    /**\n     * This re-aligns the overlay element with the trigger in its last calculated position,\n     * even if a position higher in the \"preferred positions\" list would now fit. This\n     * allows one to re-align the panel without changing the orientation of the panel.\n     */\n    reapplyLastPosition() {\n        if (!this._isDisposed && (!this._platform || this._platform.isBrowser)) {\n            this._originRect = this._getOriginRect();\n            this._overlayRect = this._pane.getBoundingClientRect();\n            this._viewportRect = this._getNarrowedViewportRect();\n            const lastPosition = this._lastPosition || this._preferredPositions[0];\n            const originPoint = this._getOriginPoint(this._originRect, lastPosition);\n            this._applyPosition(lastPosition, originPoint);\n        }\n    }\n    /**\n     * Sets the list of Scrollable containers that host the origin element so that\n     * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n     * Scrollable must be an ancestor element of the strategy's origin element.\n     */\n    withScrollableContainers(scrollables) {\n        this._scrollables = scrollables;\n        return this;\n    }\n    /**\n     * Adds new preferred positions.\n     * @param positions List of positions options for this overlay.\n     */\n    withPositions(positions) {\n        this._preferredPositions = positions;\n        // If the last calculated position object isn't part of the positions anymore, clear\n        // it in order to avoid it being picked up if the consumer tries to re-apply.\n        if (positions.indexOf(this._lastPosition) === -1) {\n            this._lastPosition = null;\n        }\n        this._validatePositions();\n        return this;\n    }\n    /**\n     * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n     * @param margin Required margin between the overlay and the viewport edge in pixels.\n     */\n    withViewportMargin(margin) {\n        this._viewportMargin = margin;\n        return this;\n    }\n    /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n    withFlexibleDimensions(flexibleDimensions = true) {\n        this._hasFlexibleDimensions = flexibleDimensions;\n        return this;\n    }\n    /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n    withGrowAfterOpen(growAfterOpen = true) {\n        this._growAfterOpen = growAfterOpen;\n        return this;\n    }\n    /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n    withPush(canPush = true) {\n        this._canPush = canPush;\n        return this;\n    }\n    /**\n     * Sets whether the overlay's position should be locked in after it is positioned\n     * initially. When an overlay is locked in, it won't attempt to reposition itself\n     * when the position is re-applied (e.g. when the user scrolls away).\n     * @param isLocked Whether the overlay should locked in.\n     */\n    withLockedPosition(isLocked = true) {\n        this._positionLocked = isLocked;\n        return this;\n    }\n    /**\n     * Sets the origin, relative to which to position the overlay.\n     * Using an element origin is useful for building components that need to be positioned\n     * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n     * used for cases like contextual menus which open relative to the user's pointer.\n     * @param origin Reference to the new origin.\n     */\n    setOrigin(origin) {\n        this._origin = origin;\n        return this;\n    }\n    /**\n     * Sets the default offset for the overlay's connection point on the x-axis.\n     * @param offset New offset in the X axis.\n     */\n    withDefaultOffsetX(offset) {\n        this._offsetX = offset;\n        return this;\n    }\n    /**\n     * Sets the default offset for the overlay's connection point on the y-axis.\n     * @param offset New offset in the Y axis.\n     */\n    withDefaultOffsetY(offset) {\n        this._offsetY = offset;\n        return this;\n    }\n    /**\n     * Configures that the position strategy should set a `transform-origin` on some elements\n     * inside the overlay, depending on the current position that is being applied. This is\n     * useful for the cases where the origin of an animation can change depending on the\n     * alignment of the overlay.\n     * @param selector CSS selector that will be used to find the target\n     *    elements onto which to set the transform origin.\n     */\n    withTransformOriginOn(selector) {\n        this._transformOriginSelector = selector;\n        return this;\n    }\n    /**\n     * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n     */\n    _getOriginPoint(originRect, pos) {\n        let x;\n        if (pos.originX == 'center') {\n            // Note: when centering we should always use the `left`\n            // offset, otherwise the position will be wrong in RTL.\n            x = originRect.left + originRect.width / 2;\n        }\n        else {\n            const startX = this._isRtl() ? originRect.right : originRect.left;\n            const endX = this._isRtl() ? originRect.left : originRect.right;\n            x = pos.originX == 'start' ? startX : endX;\n        }\n        let y;\n        if (pos.originY == 'center') {\n            y = originRect.top + originRect.height / 2;\n        }\n        else {\n            y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n        }\n        return { x, y };\n    }\n    /**\n     * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n     * origin point to which the overlay should be connected.\n     */\n    _getOverlayPoint(originPoint, overlayRect, pos) {\n        // Calculate the (overlayStartX, overlayStartY), the start of the\n        // potential overlay position relative to the origin point.\n        let overlayStartX;\n        if (pos.overlayX == 'center') {\n            overlayStartX = -overlayRect.width / 2;\n        }\n        else if (pos.overlayX === 'start') {\n            overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n        }\n        else {\n            overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n        }\n        let overlayStartY;\n        if (pos.overlayY == 'center') {\n            overlayStartY = -overlayRect.height / 2;\n        }\n        else {\n            overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n        }\n        // The (x, y) coordinates of the overlay.\n        return {\n            x: originPoint.x + overlayStartX,\n            y: originPoint.y + overlayStartY,\n        };\n    }\n    /** Gets how well an overlay at the given point will fit within the viewport. */\n    _getOverlayFit(point, rawOverlayRect, viewport, position) {\n        // Round the overlay rect when comparing against the\n        // viewport, because the viewport is always rounded.\n        const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n        let { x, y } = point;\n        let offsetX = this._getOffset(position, 'x');\n        let offsetY = this._getOffset(position, 'y');\n        // Account for the offsets since they could push the overlay out of the viewport.\n        if (offsetX) {\n            x += offsetX;\n        }\n        if (offsetY) {\n            y += offsetY;\n        }\n        // How much the overlay would overflow at this position, on each side.\n        let leftOverflow = 0 - x;\n        let rightOverflow = x + overlay.width - viewport.width;\n        let topOverflow = 0 - y;\n        let bottomOverflow = y + overlay.height - viewport.height;\n        // Visible parts of the element on each axis.\n        let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n        let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n        let visibleArea = visibleWidth * visibleHeight;\n        return {\n            visibleArea,\n            isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n            fitsInViewportVertically: visibleHeight === overlay.height,\n            fitsInViewportHorizontally: visibleWidth == overlay.width,\n        };\n    }\n    /**\n     * Whether the overlay can fit within the viewport when it may resize either its width or height.\n     * @param fit How well the overlay fits in the viewport at some position.\n     * @param point The (x, y) coordinates of the overlat at some position.\n     * @param viewport The geometry of the viewport.\n     */\n    _canFitWithFlexibleDimensions(fit, point, viewport) {\n        if (this._hasFlexibleDimensions) {\n            const availableHeight = viewport.bottom - point.y;\n            const availableWidth = viewport.right - point.x;\n            const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n            const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n            const verticalFit = fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);\n            const horizontalFit = fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);\n            return verticalFit && horizontalFit;\n        }\n        return false;\n    }\n    /**\n     * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n     * the viewport, the top-left corner will be pushed on-screen (with overflow occuring on the\n     * right and bottom).\n     *\n     * @param start Starting point from which the overlay is pushed.\n     * @param overlay Dimensions of the overlay.\n     * @param scrollPosition Current viewport scroll position.\n     * @returns The point at which to position the overlay after pushing. This is effectively a new\n     *     originPoint.\n     */\n    _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n        // If the position is locked and we've pushed the overlay already, reuse the previous push\n        // amount, rather than pushing it again. If we were to continue pushing, the element would\n        // remain in the viewport, which goes against the expectations when position locking is enabled.\n        if (this._previousPushAmount && this._positionLocked) {\n            return {\n                x: start.x + this._previousPushAmount.x,\n                y: start.y + this._previousPushAmount.y,\n            };\n        }\n        // Round the overlay rect when comparing against the\n        // viewport, because the viewport is always rounded.\n        const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n        const viewport = this._viewportRect;\n        // Determine how much the overlay goes outside the viewport on each\n        // side, which we'll use to decide which direction to push it.\n        const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n        const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n        const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n        const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n        // Amount by which to push the overlay in each axis such that it remains on-screen.\n        let pushX = 0;\n        let pushY = 0;\n        // If the overlay fits completely within the bounds of the viewport, push it from whichever\n        // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n        // viewport and allow for the trailing end of the overlay to go out of bounds.\n        if (overlay.width <= viewport.width) {\n            pushX = overflowLeft || -overflowRight;\n        }\n        else {\n            pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n        }\n        if (overlay.height <= viewport.height) {\n            pushY = overflowTop || -overflowBottom;\n        }\n        else {\n            pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n        }\n        this._previousPushAmount = { x: pushX, y: pushY };\n        return {\n            x: start.x + pushX,\n            y: start.y + pushY,\n        };\n    }\n    /**\n     * Applies a computed position to the overlay and emits a position change.\n     * @param position The position preference\n     * @param originPoint The point on the origin element where the overlay is connected.\n     */\n    _applyPosition(position, originPoint) {\n        this._setTransformOrigin(position);\n        this._setOverlayElementStyles(originPoint, position);\n        this._setBoundingBoxStyles(originPoint, position);\n        if (position.panelClass) {\n            this._addPanelClasses(position.panelClass);\n        }\n        // Save the last connected position in case the position needs to be re-calculated.\n        this._lastPosition = position;\n        // Notify that the position has been changed along with its change properties.\n        // We only emit if we've got any subscriptions, because the scroll visibility\n        // calculcations can be somewhat expensive.\n        if (this._positionChanges.observers.length) {\n            const scrollableViewProperties = this._getScrollVisibility();\n            const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n            this._positionChanges.next(changeEvent);\n        }\n        this._isInitialRender = false;\n    }\n    /** Sets the transform origin based on the configured selector and the passed-in position.  */\n    _setTransformOrigin(position) {\n        if (!this._transformOriginSelector) {\n            return;\n        }\n        const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n        let xOrigin;\n        let yOrigin = position.overlayY;\n        if (position.overlayX === 'center') {\n            xOrigin = 'center';\n        }\n        else if (this._isRtl()) {\n            xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n        }\n        else {\n            xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n        }\n        for (let i = 0; i < elements.length; i++) {\n            elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n        }\n    }\n    /**\n     * Gets the position and size of the overlay's sizing container.\n     *\n     * This method does no measuring and applies no styles so that we can cheaply compute the\n     * bounds for all positions and choose the best fit based on these results.\n     */\n    _calculateBoundingBoxRect(origin, position) {\n        const viewport = this._viewportRect;\n        const isRtl = this._isRtl();\n        let height, top, bottom;\n        if (position.overlayY === 'top') {\n            // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n            top = origin.y;\n            height = viewport.height - top + this._viewportMargin;\n        }\n        else if (position.overlayY === 'bottom') {\n            // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n            // the viewport margin back in, because the viewport rect is narrowed down to remove the\n            // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n            bottom = viewport.height - origin.y + this._viewportMargin * 2;\n            height = viewport.height - bottom + this._viewportMargin;\n        }\n        else {\n            // If neither top nor bottom, it means that the overlay is vertically centered on the\n            // origin point. Note that we want the position relative to the viewport, rather than\n            // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n            // `origin.y - viewport.top`.\n            const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n            const previousHeight = this._lastBoundingBoxSize.height;\n            height = smallestDistanceToViewportEdge * 2;\n            top = origin.y - smallestDistanceToViewportEdge;\n            if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n                top = origin.y - previousHeight / 2;\n            }\n        }\n        // The overlay is opening 'right-ward' (the content flows to the right).\n        const isBoundedByRightViewportEdge = (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);\n        // The overlay is opening 'left-ward' (the content flows to the left).\n        const isBoundedByLeftViewportEdge = (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);\n        let width, left, right;\n        if (isBoundedByLeftViewportEdge) {\n            right = viewport.width - origin.x + this._viewportMargin;\n            width = origin.x - this._viewportMargin;\n        }\n        else if (isBoundedByRightViewportEdge) {\n            left = origin.x;\n            width = viewport.right - origin.x;\n        }\n        else {\n            // If neither start nor end, it means that the overlay is horizontally centered on the\n            // origin point. Note that we want the position relative to the viewport, rather than\n            // the page, which is why we don't use something like `viewport.right - origin.x` and\n            // `origin.x - viewport.left`.\n            const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n            const previousWidth = this._lastBoundingBoxSize.width;\n            width = smallestDistanceToViewportEdge * 2;\n            left = origin.x - smallestDistanceToViewportEdge;\n            if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n                left = origin.x - previousWidth / 2;\n            }\n        }\n        return { top: top, left: left, bottom: bottom, right: right, width, height };\n    }\n    /**\n     * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n     * origin's connection point and stetches to the bounds of the viewport.\n     *\n     * @param origin The point on the origin element where the overlay is connected.\n     * @param position The position preference\n     */\n    _setBoundingBoxStyles(origin, position) {\n        const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n        // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n        // when applying a new size.\n        if (!this._isInitialRender && !this._growAfterOpen) {\n            boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n            boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n        }\n        const styles = {};\n        if (this._hasExactPosition()) {\n            styles.top = styles.left = '0';\n            styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n            styles.width = styles.height = '100%';\n        }\n        else {\n            const maxHeight = this._overlayRef.getConfig().maxHeight;\n            const maxWidth = this._overlayRef.getConfig().maxWidth;\n            styles.height = coerceCssPixelValue(boundingBoxRect.height);\n            styles.top = coerceCssPixelValue(boundingBoxRect.top);\n            styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n            styles.width = coerceCssPixelValue(boundingBoxRect.width);\n            styles.left = coerceCssPixelValue(boundingBoxRect.left);\n            styles.right = coerceCssPixelValue(boundingBoxRect.right);\n            // Push the pane content towards the proper direction.\n            if (position.overlayX === 'center') {\n                styles.alignItems = 'center';\n            }\n            else {\n                styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n            }\n            if (position.overlayY === 'center') {\n                styles.justifyContent = 'center';\n            }\n            else {\n                styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n            }\n            if (maxHeight) {\n                styles.maxHeight = coerceCssPixelValue(maxHeight);\n            }\n            if (maxWidth) {\n                styles.maxWidth = coerceCssPixelValue(maxWidth);\n            }\n        }\n        this._lastBoundingBoxSize = boundingBoxRect;\n        extendStyles(this._boundingBox.style, styles);\n    }\n    /** Resets the styles for the bounding box so that a new positioning can be computed. */\n    _resetBoundingBoxStyles() {\n        extendStyles(this._boundingBox.style, {\n            top: '0',\n            left: '0',\n            right: '0',\n            bottom: '0',\n            height: '',\n            width: '',\n            alignItems: '',\n            justifyContent: '',\n        });\n    }\n    /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n    _resetOverlayElementStyles() {\n        extendStyles(this._pane.style, {\n            top: '',\n            left: '',\n            bottom: '',\n            right: '',\n            position: '',\n            transform: '',\n        });\n    }\n    /** Sets positioning styles to the overlay element. */\n    _setOverlayElementStyles(originPoint, position) {\n        const styles = {};\n        const hasExactPosition = this._hasExactPosition();\n        const hasFlexibleDimensions = this._hasFlexibleDimensions;\n        const config = this._overlayRef.getConfig();\n        if (hasExactPosition) {\n            const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n            extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n            extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n        }\n        else {\n            styles.position = 'static';\n        }\n        // Use a transform to apply the offsets. We do this because the `center` positions rely on\n        // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n        // off the position. We also can't use margins, because they won't have an effect in some\n        // cases where the element doesn't have anything to \"push off of\". Finally, this works\n        // better both with flexible and non-flexible positioning.\n        let transformString = '';\n        let offsetX = this._getOffset(position, 'x');\n        let offsetY = this._getOffset(position, 'y');\n        if (offsetX) {\n            transformString += `translateX(${offsetX}px) `;\n        }\n        if (offsetY) {\n            transformString += `translateY(${offsetY}px)`;\n        }\n        styles.transform = transformString.trim();\n        // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n        // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n        // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n        // Note that this doesn't apply when we have an exact position, in which case we do want to\n        // apply them because they'll be cleared from the bounding box.\n        if (config.maxHeight) {\n            if (hasExactPosition) {\n                styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n            }\n            else if (hasFlexibleDimensions) {\n                styles.maxHeight = '';\n            }\n        }\n        if (config.maxWidth) {\n            if (hasExactPosition) {\n                styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n            }\n            else if (hasFlexibleDimensions) {\n                styles.maxWidth = '';\n            }\n        }\n        extendStyles(this._pane.style, styles);\n    }\n    /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n    _getExactOverlayY(position, originPoint, scrollPosition) {\n        // Reset any existing styles. This is necessary in case the\n        // preferred position has changed since the last `apply`.\n        let styles = { top: '', bottom: '' };\n        let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n        if (this._isPushed) {\n            overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n        }\n        let virtualKeyboardOffset = this._overlayContainer\n            .getContainerElement()\n            .getBoundingClientRect().top;\n        // Normally this would be zero, however when the overlay is attached to an input (e.g. in an\n        // autocomplete), mobile browsers will shift everything in order to put the input in the middle\n        // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n        // otherwise our positioning will be thrown off.\n        overlayPoint.y -= virtualKeyboardOffset;\n        // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n        // above or below the origin and the direction in which the element will expand.\n        if (position.overlayY === 'bottom') {\n            // When using `bottom`, we adjust the y position such that it is the distance\n            // from the bottom of the viewport rather than the top.\n            const documentHeight = this._document.documentElement.clientHeight;\n            styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n        }\n        else {\n            styles.top = coerceCssPixelValue(overlayPoint.y);\n        }\n        return styles;\n    }\n    /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n    _getExactOverlayX(position, originPoint, scrollPosition) {\n        // Reset any existing styles. This is necessary in case the preferred position has\n        // changed since the last `apply`.\n        let styles = { left: '', right: '' };\n        let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n        if (this._isPushed) {\n            overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n        }\n        // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n        // or \"after\" the origin, which determines the direction in which the element will expand.\n        // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n        // page is in RTL or LTR.\n        let horizontalStyleProperty;\n        if (this._isRtl()) {\n            horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n        }\n        else {\n            horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n        }\n        // When we're setting `right`, we adjust the x position such that it is the distance\n        // from the right edge of the viewport rather than the left edge.\n        if (horizontalStyleProperty === 'right') {\n            const documentWidth = this._document.documentElement.clientWidth;\n            styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n        }\n        else {\n            styles.left = coerceCssPixelValue(overlayPoint.x);\n        }\n        return styles;\n    }\n    /**\n     * Gets the view properties of the trigger and overlay, including whether they are clipped\n     * or completely outside the view of any of the strategy's scrollables.\n     */\n    _getScrollVisibility() {\n        // Note: needs fresh rects since the position could've changed.\n        const originBounds = this._getOriginRect();\n        const overlayBounds = this._pane.getBoundingClientRect();\n        // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n        // every time, we should be able to use the scrollTop of the containers if the size of those\n        // containers hasn't changed.\n        const scrollContainerBounds = this._scrollables.map(scrollable => {\n            return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n        });\n        return {\n            isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n            isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n            isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n            isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n        };\n    }\n    /** Subtracts the amount that an element is overflowing on an axis from its length. */\n    _subtractOverflows(length, ...overflows) {\n        return overflows.reduce((currentValue, currentOverflow) => {\n            return currentValue - Math.max(currentOverflow, 0);\n        }, length);\n    }\n    /** Narrows the given viewport rect by the current _viewportMargin. */\n    _getNarrowedViewportRect() {\n        // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n        // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n        // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n        // and `innerHeight` that do. This is necessary, because the overlay container uses\n        // 100% `width` and `height` which don't include the scrollbar either.\n        const width = this._document.documentElement.clientWidth;\n        const height = this._document.documentElement.clientHeight;\n        const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n        return {\n            top: scrollPosition.top + this._viewportMargin,\n            left: scrollPosition.left + this._viewportMargin,\n            right: scrollPosition.left + width - this._viewportMargin,\n            bottom: scrollPosition.top + height - this._viewportMargin,\n            width: width - 2 * this._viewportMargin,\n            height: height - 2 * this._viewportMargin,\n        };\n    }\n    /** Whether the we're dealing with an RTL context */\n    _isRtl() {\n        return this._overlayRef.getDirection() === 'rtl';\n    }\n    /** Determines whether the overlay uses exact or flexible positioning. */\n    _hasExactPosition() {\n        return !this._hasFlexibleDimensions || this._isPushed;\n    }\n    /** Retrieves the offset of a position along the x or y axis. */\n    _getOffset(position, axis) {\n        if (axis === 'x') {\n            // We don't do something like `position['offset' + axis]` in\n            // order to avoid breking minifiers that rename properties.\n            return position.offsetX == null ? this._offsetX : position.offsetX;\n        }\n        return position.offsetY == null ? this._offsetY : position.offsetY;\n    }\n    /** Validates that the current position match the expected values. */\n    _validatePositions() {\n        if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            if (!this._preferredPositions.length) {\n                throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n            }\n            // TODO(crisbeto): remove these once Angular's template type\n            // checking is advanced enough to catch these cases.\n            this._preferredPositions.forEach(pair => {\n                validateHorizontalPosition('originX', pair.originX);\n                validateVerticalPosition('originY', pair.originY);\n                validateHorizontalPosition('overlayX', pair.overlayX);\n                validateVerticalPosition('overlayY', pair.overlayY);\n            });\n        }\n    }\n    /** Adds a single CSS class or an array of classes on the overlay panel. */\n    _addPanelClasses(cssClasses) {\n        if (this._pane) {\n            coerceArray(cssClasses).forEach(cssClass => {\n                if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n                    this._appliedPanelClasses.push(cssClass);\n                    this._pane.classList.add(cssClass);\n                }\n            });\n        }\n    }\n    /** Clears the classes that the position strategy has applied from the overlay panel. */\n    _clearPanelClasses() {\n        if (this._pane) {\n            this._appliedPanelClasses.forEach(cssClass => {\n                this._pane.classList.remove(cssClass);\n            });\n            this._appliedPanelClasses = [];\n        }\n    }\n    /** Returns the ClientRect of the current origin. */\n    _getOriginRect() {\n        const origin = this._origin;\n        if (origin instanceof ElementRef) {\n            return origin.nativeElement.getBoundingClientRect();\n        }\n        // Check for Element so SVG elements are also supported.\n        if (origin instanceof Element) {\n            return origin.getBoundingClientRect();\n        }\n        const width = origin.width || 0;\n        const height = origin.height || 0;\n        // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n        return {\n            top: origin.y,\n            bottom: origin.y + height,\n            left: origin.x,\n            right: origin.x + width,\n            height,\n            width,\n        };\n    }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n    for (let key in source) {\n        if (source.hasOwnProperty(key)) {\n            destination[key] = source[key];\n        }\n    }\n    return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n    if (typeof input !== 'number' && input != null) {\n        const [value, units] = input.split(cssUnitPattern);\n        return !units || units === 'px' ? parseFloat(value) : null;\n    }\n    return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n    return {\n        top: Math.floor(clientRect.top),\n        right: Math.floor(clientRect.right),\n        bottom: Math.floor(clientRect.bottom),\n        left: Math.floor(clientRect.left),\n        width: Math.floor(clientRect.width),\n        height: Math.floor(clientRect.height),\n    };\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/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n    constructor() {\n        this._cssPosition = 'static';\n        this._topOffset = '';\n        this._bottomOffset = '';\n        this._leftOffset = '';\n        this._rightOffset = '';\n        this._alignItems = '';\n        this._justifyContent = '';\n        this._width = '';\n        this._height = '';\n    }\n    attach(overlayRef) {\n        const config = overlayRef.getConfig();\n        this._overlayRef = overlayRef;\n        if (this._width && !config.width) {\n            overlayRef.updateSize({ width: this._width });\n        }\n        if (this._height && !config.height) {\n            overlayRef.updateSize({ height: this._height });\n        }\n        overlayRef.hostElement.classList.add(wrapperClass);\n        this._isDisposed = false;\n    }\n    /**\n     * Sets the top position of the overlay. Clears any previously set vertical position.\n     * @param value New top offset.\n     */\n    top(value = '') {\n        this._bottomOffset = '';\n        this._topOffset = value;\n        this._alignItems = 'flex-start';\n        return this;\n    }\n    /**\n     * Sets the left position of the overlay. Clears any previously set horizontal position.\n     * @param value New left offset.\n     */\n    left(value = '') {\n        this._rightOffset = '';\n        this._leftOffset = value;\n        this._justifyContent = 'flex-start';\n        return this;\n    }\n    /**\n     * Sets the bottom position of the overlay. Clears any previously set vertical position.\n     * @param value New bottom offset.\n     */\n    bottom(value = '') {\n        this._topOffset = '';\n        this._bottomOffset = value;\n        this._alignItems = 'flex-end';\n        return this;\n    }\n    /**\n     * Sets the right position of the overlay. Clears any previously set horizontal position.\n     * @param value New right offset.\n     */\n    right(value = '') {\n        this._leftOffset = '';\n        this._rightOffset = value;\n        this._justifyContent = 'flex-end';\n        return this;\n    }\n    /**\n     * Sets the overlay width and clears any previously set width.\n     * @param value New width for the overlay\n     * @deprecated Pass the `width` through the `OverlayConfig`.\n     * @breaking-change 8.0.0\n     */\n    width(value = '') {\n        if (this._overlayRef) {\n            this._overlayRef.updateSize({ width: value });\n        }\n        else {\n            this._width = value;\n        }\n        return this;\n    }\n    /**\n     * Sets the overlay height and clears any previously set height.\n     * @param value New height for the overlay\n     * @deprecated Pass the `height` through the `OverlayConfig`.\n     * @breaking-change 8.0.0\n     */\n    height(value = '') {\n        if (this._overlayRef) {\n            this._overlayRef.updateSize({ height: value });\n        }\n        else {\n            this._height = value;\n        }\n        return this;\n    }\n    /**\n     * Centers the overlay horizontally with an optional offset.\n     * Clears any previously set horizontal position.\n     *\n     * @param offset Overlay offset from the horizontal center.\n     */\n    centerHorizontally(offset = '') {\n        this.left(offset);\n        this._justifyContent = 'center';\n        return this;\n    }\n    /**\n     * Centers the overlay vertically with an optional offset.\n     * Clears any previously set vertical position.\n     *\n     * @param offset Overlay offset from the vertical center.\n     */\n    centerVertically(offset = '') {\n        this.top(offset);\n        this._alignItems = 'center';\n        return this;\n    }\n    /**\n     * Apply the position to the element.\n     * @docs-private\n     */\n    apply() {\n        // Since the overlay ref applies the strategy asynchronously, it could\n        // have been disposed before it ends up being applied. If that is the\n        // case, we shouldn't do anything.\n        if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n            return;\n        }\n        const styles = this._overlayRef.overlayElement.style;\n        const parentStyles = this._overlayRef.hostElement.style;\n        const config = this._overlayRef.getConfig();\n        const { width, height, maxWidth, maxHeight } = config;\n        const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') &&\n            (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n        const shouldBeFlushVertically = (height === '100%' || height === '100vh') &&\n            (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n        styles.position = this._cssPosition;\n        styles.marginLeft = shouldBeFlushHorizontally ? '0' : this._leftOffset;\n        styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n        styles.marginBottom = this._bottomOffset;\n        styles.marginRight = this._rightOffset;\n        if (shouldBeFlushHorizontally) {\n            parentStyles.justifyContent = 'flex-start';\n        }\n        else if (this._justifyContent === 'center') {\n            parentStyles.justifyContent = 'center';\n        }\n        else if (this._overlayRef.getConfig().direction === 'rtl') {\n            // In RTL the browser will invert `flex-start` and `flex-end` automatically, but we\n            // don't want that because our positioning is explicitly `left` and `right`, hence\n            // why we do another inversion to ensure that the overlay stays in the same position.\n            // TODO: reconsider this if we add `start` and `end` methods.\n            if (this._justifyContent === 'flex-start') {\n                parentStyles.justifyContent = 'flex-end';\n            }\n            else if (this._justifyContent === 'flex-end') {\n                parentStyles.justifyContent = 'flex-start';\n            }\n        }\n        else {\n            parentStyles.justifyContent = this._justifyContent;\n        }\n        parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n    }\n    /**\n     * Cleans up the DOM changes from the position strategy.\n     * @docs-private\n     */\n    dispose() {\n        if (this._isDisposed || !this._overlayRef) {\n            return;\n        }\n        const styles = this._overlayRef.overlayElement.style;\n        const parent = this._overlayRef.hostElement;\n        const parentStyles = parent.style;\n        parent.classList.remove(wrapperClass);\n        parentStyles.justifyContent =\n            parentStyles.alignItems =\n                styles.marginTop =\n                    styles.marginBottom =\n                        styles.marginLeft =\n                            styles.marginRight =\n                                styles.position =\n                                    '';\n        this._overlayRef = null;\n        this._isDisposed = true;\n    }\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/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n    constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n        this._viewportRuler = _viewportRuler;\n        this._document = _document;\n        this._platform = _platform;\n        this._overlayContainer = _overlayContainer;\n    }\n    /**\n     * Creates a global position strategy.\n     */\n    global() {\n        return new GlobalPositionStrategy();\n    }\n    /**\n     * Creates a flexible position strategy.\n     * @param origin Origin relative to which to position the overlay.\n     */\n    flexibleConnectedTo(origin) {\n        return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n    }\n}\nOverlayPositionBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayPositionBuilder, deps: [{ token: i1.ViewportRuler }, { token: DOCUMENT }, { token: i1$1.Platform }, { token: OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayPositionBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayPositionBuilder, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.ViewportRuler }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: i1$1.Platform }, { type: OverlayContainer }]; } });\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/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n    constructor(\n    /** Scrolling strategies that can be used when creating an overlay. */\n    scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher) {\n        this.scrollStrategies = scrollStrategies;\n        this._overlayContainer = _overlayContainer;\n        this._componentFactoryResolver = _componentFactoryResolver;\n        this._positionBuilder = _positionBuilder;\n        this._keyboardDispatcher = _keyboardDispatcher;\n        this._injector = _injector;\n        this._ngZone = _ngZone;\n        this._document = _document;\n        this._directionality = _directionality;\n        this._location = _location;\n        this._outsideClickDispatcher = _outsideClickDispatcher;\n    }\n    /**\n     * Creates an overlay.\n     * @param config Configuration applied to the overlay.\n     * @returns Reference to the created overlay.\n     */\n    create(config) {\n        const host = this._createHostElement();\n        const pane = this._createPaneElement(host);\n        const portalOutlet = this._createPortalOutlet(pane);\n        const overlayConfig = new OverlayConfig(config);\n        overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n        return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher);\n    }\n    /**\n     * Gets a position builder that can be used, via fluent API,\n     * to construct and configure a position strategy.\n     * @returns An overlay position builder.\n     */\n    position() {\n        return this._positionBuilder;\n    }\n    /**\n     * Creates the DOM element for an overlay and appends it to the overlay container.\n     * @returns Newly-created pane element\n     */\n    _createPaneElement(host) {\n        const pane = this._document.createElement('div');\n        pane.id = `cdk-overlay-${nextUniqueId++}`;\n        pane.classList.add('cdk-overlay-pane');\n        host.appendChild(pane);\n        return pane;\n    }\n    /**\n     * Creates the host element that wraps around an overlay\n     * and can be used for advanced positioning.\n     * @returns Newly-create host element.\n     */\n    _createHostElement() {\n        const host = this._document.createElement('div');\n        this._overlayContainer.getContainerElement().appendChild(host);\n        return host;\n    }\n    /**\n     * Create a DomPortalOutlet into which the overlay content can be loaded.\n     * @param pane The DOM element to turn into a portal outlet.\n     * @returns A portal outlet for the given DOM element.\n     */\n    _createPortalOutlet(pane) {\n        // We have to resolve the ApplicationRef later in order to allow people\n        // to use overlay-based providers during app initialization.\n        if (!this._appRef) {\n            this._appRef = this._injector.get(ApplicationRef);\n        }\n        return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n    }\n}\nOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Overlay, deps: [{ token: ScrollStrategyOptions }, { token: OverlayContainer }, { token: i0.ComponentFactoryResolver }, { token: OverlayPositionBuilder }, { token: OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i5.Directionality }, { token: i6.Location }, { token: OverlayOutsideClickDispatcher }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlay.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Overlay });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Overlay, decorators: [{\n            type: Injectable\n        }], ctorParameters: function () { return [{ type: ScrollStrategyOptions }, { type: OverlayContainer }, { type: i0.ComponentFactoryResolver }, { type: OverlayPositionBuilder }, { type: OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: i5.Directionality }, { type: i6.Location }, { type: OverlayOutsideClickDispatcher }]; } });\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/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [\n    {\n        originX: 'start',\n        originY: 'bottom',\n        overlayX: 'start',\n        overlayY: 'top',\n    },\n    {\n        originX: 'start',\n        originY: 'top',\n        overlayX: 'start',\n        overlayY: 'bottom',\n    },\n    {\n        originX: 'end',\n        originY: 'top',\n        overlayX: 'end',\n        overlayY: 'bottom',\n    },\n    {\n        originX: 'end',\n        originY: 'bottom',\n        overlayX: 'end',\n        overlayY: 'top',\n    },\n];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy');\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n    constructor(\n    /** Reference to the element on which the directive is applied. */\n    elementRef) {\n        this.elementRef = elementRef;\n    }\n}\nCdkOverlayOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkOverlayOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkOverlayOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkOverlayOrigin, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkOverlayOrigin, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n                    exportAs: 'cdkOverlayOrigin',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n    // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n    constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n        this._overlay = _overlay;\n        this._dir = _dir;\n        this._hasBackdrop = false;\n        this._lockPosition = false;\n        this._growAfterOpen = false;\n        this._flexibleDimensions = false;\n        this._push = false;\n        this._backdropSubscription = Subscription.EMPTY;\n        this._attachSubscription = Subscription.EMPTY;\n        this._detachSubscription = Subscription.EMPTY;\n        this._positionSubscription = Subscription.EMPTY;\n        /** Margin between the overlay and the viewport edges. */\n        this.viewportMargin = 0;\n        /** Whether the overlay is open. */\n        this.open = false;\n        /** Whether the overlay can be closed by user interaction. */\n        this.disableClose = false;\n        /** Event emitted when the backdrop is clicked. */\n        this.backdropClick = new EventEmitter();\n        /** Event emitted when the position has changed. */\n        this.positionChange = new EventEmitter();\n        /** Event emitted when the overlay has been attached. */\n        this.attach = new EventEmitter();\n        /** Event emitted when the overlay has been detached. */\n        this.detach = new EventEmitter();\n        /** Emits when there are keyboard events that are targeted at the overlay. */\n        this.overlayKeydown = new EventEmitter();\n        /** Emits when there are mouse outside click events that are targeted at the overlay. */\n        this.overlayOutsideClick = new EventEmitter();\n        this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n        this._scrollStrategyFactory = scrollStrategyFactory;\n        this.scrollStrategy = this._scrollStrategyFactory();\n    }\n    /** The offset in pixels for the overlay connection point on the x-axis */\n    get offsetX() {\n        return this._offsetX;\n    }\n    set offsetX(offsetX) {\n        this._offsetX = offsetX;\n        if (this._position) {\n            this._updatePositionStrategy(this._position);\n        }\n    }\n    /** The offset in pixels for the overlay connection point on the y-axis */\n    get offsetY() {\n        return this._offsetY;\n    }\n    set offsetY(offsetY) {\n        this._offsetY = offsetY;\n        if (this._position) {\n            this._updatePositionStrategy(this._position);\n        }\n    }\n    /** Whether or not the overlay should attach a backdrop. */\n    get hasBackdrop() {\n        return this._hasBackdrop;\n    }\n    set hasBackdrop(value) {\n        this._hasBackdrop = coerceBooleanProperty(value);\n    }\n    /** Whether or not the overlay should be locked when scrolling. */\n    get lockPosition() {\n        return this._lockPosition;\n    }\n    set lockPosition(value) {\n        this._lockPosition = coerceBooleanProperty(value);\n    }\n    /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n    get flexibleDimensions() {\n        return this._flexibleDimensions;\n    }\n    set flexibleDimensions(value) {\n        this._flexibleDimensions = coerceBooleanProperty(value);\n    }\n    /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n    get growAfterOpen() {\n        return this._growAfterOpen;\n    }\n    set growAfterOpen(value) {\n        this._growAfterOpen = coerceBooleanProperty(value);\n    }\n    /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n    get push() {\n        return this._push;\n    }\n    set push(value) {\n        this._push = coerceBooleanProperty(value);\n    }\n    /** The associated overlay reference. */\n    get overlayRef() {\n        return this._overlayRef;\n    }\n    /** The element's layout direction. */\n    get dir() {\n        return this._dir ? this._dir.value : 'ltr';\n    }\n    ngOnDestroy() {\n        this._attachSubscription.unsubscribe();\n        this._detachSubscription.unsubscribe();\n        this._backdropSubscription.unsubscribe();\n        this._positionSubscription.unsubscribe();\n        if (this._overlayRef) {\n            this._overlayRef.dispose();\n        }\n    }\n    ngOnChanges(changes) {\n        if (this._position) {\n            this._updatePositionStrategy(this._position);\n            this._overlayRef.updateSize({\n                width: this.width,\n                minWidth: this.minWidth,\n                height: this.height,\n                minHeight: this.minHeight,\n            });\n            if (changes['origin'] && this.open) {\n                this._position.apply();\n            }\n        }\n        if (changes['open']) {\n            this.open ? this._attachOverlay() : this._detachOverlay();\n        }\n    }\n    /** Creates an overlay */\n    _createOverlay() {\n        if (!this.positions || !this.positions.length) {\n            this.positions = defaultPositionList;\n        }\n        const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));\n        this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n        this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n        overlayRef.keydownEvents().subscribe((event) => {\n            this.overlayKeydown.next(event);\n            if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n                event.preventDefault();\n                this._detachOverlay();\n            }\n        });\n        this._overlayRef.outsidePointerEvents().subscribe((event) => {\n            this.overlayOutsideClick.next(event);\n        });\n    }\n    /** Builds the overlay config based on the directive's inputs */\n    _buildConfig() {\n        const positionStrategy = (this._position =\n            this.positionStrategy || this._createPositionStrategy());\n        const overlayConfig = new OverlayConfig({\n            direction: this._dir,\n            positionStrategy,\n            scrollStrategy: this.scrollStrategy,\n            hasBackdrop: this.hasBackdrop,\n        });\n        if (this.width || this.width === 0) {\n            overlayConfig.width = this.width;\n        }\n        if (this.height || this.height === 0) {\n            overlayConfig.height = this.height;\n        }\n        if (this.minWidth || this.minWidth === 0) {\n            overlayConfig.minWidth = this.minWidth;\n        }\n        if (this.minHeight || this.minHeight === 0) {\n            overlayConfig.minHeight = this.minHeight;\n        }\n        if (this.backdropClass) {\n            overlayConfig.backdropClass = this.backdropClass;\n        }\n        if (this.panelClass) {\n            overlayConfig.panelClass = this.panelClass;\n        }\n        return overlayConfig;\n    }\n    /** Updates the state of a position strategy, based on the values of the directive inputs. */\n    _updatePositionStrategy(positionStrategy) {\n        const positions = this.positions.map(currentPosition => ({\n            originX: currentPosition.originX,\n            originY: currentPosition.originY,\n            overlayX: currentPosition.overlayX,\n            overlayY: currentPosition.overlayY,\n            offsetX: currentPosition.offsetX || this.offsetX,\n            offsetY: currentPosition.offsetY || this.offsetY,\n            panelClass: currentPosition.panelClass || undefined,\n        }));\n        return positionStrategy\n            .setOrigin(this._getFlexibleConnectedPositionStrategyOrigin())\n            .withPositions(positions)\n            .withFlexibleDimensions(this.flexibleDimensions)\n            .withPush(this.push)\n            .withGrowAfterOpen(this.growAfterOpen)\n            .withViewportMargin(this.viewportMargin)\n            .withLockedPosition(this.lockPosition)\n            .withTransformOriginOn(this.transformOriginSelector);\n    }\n    /** Returns the position strategy of the overlay to be set on the overlay config */\n    _createPositionStrategy() {\n        const strategy = this._overlay\n            .position()\n            .flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n        this._updatePositionStrategy(strategy);\n        return strategy;\n    }\n    _getFlexibleConnectedPositionStrategyOrigin() {\n        if (this.origin instanceof CdkOverlayOrigin) {\n            return this.origin.elementRef;\n        }\n        else {\n            return this.origin;\n        }\n    }\n    /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n    _attachOverlay() {\n        if (!this._overlayRef) {\n            this._createOverlay();\n        }\n        else {\n            // Update the overlay size, in case the directive's inputs have changed\n            this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n        }\n        if (!this._overlayRef.hasAttached()) {\n            this._overlayRef.attach(this._templatePortal);\n        }\n        if (this.hasBackdrop) {\n            this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n                this.backdropClick.emit(event);\n            });\n        }\n        else {\n            this._backdropSubscription.unsubscribe();\n        }\n        this._positionSubscription.unsubscribe();\n        // Only subscribe to `positionChanges` if requested, because putting\n        // together all the information for it can be expensive.\n        if (this.positionChange.observers.length > 0) {\n            this._positionSubscription = this._position.positionChanges\n                .pipe(takeWhile(() => this.positionChange.observers.length > 0))\n                .subscribe(position => {\n                this.positionChange.emit(position);\n                if (this.positionChange.observers.length === 0) {\n                    this._positionSubscription.unsubscribe();\n                }\n            });\n        }\n    }\n    /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n    _detachOverlay() {\n        if (this._overlayRef) {\n            this._overlayRef.detach();\n        }\n        this._backdropSubscription.unsubscribe();\n        this._positionSubscription.unsubscribe();\n    }\n}\nCdkConnectedOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkConnectedOverlay, deps: [{ token: Overlay }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY }, { token: i5.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkConnectedOverlay.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: { origin: [\"cdkConnectedOverlayOrigin\", \"origin\"], positions: [\"cdkConnectedOverlayPositions\", \"positions\"], positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"], offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"], offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"], width: [\"cdkConnectedOverlayWidth\", \"width\"], height: [\"cdkConnectedOverlayHeight\", \"height\"], minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"], minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"], backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"], panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"], viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"], scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"], open: [\"cdkConnectedOverlayOpen\", \"open\"], disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"], transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"], hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\"], lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\"], flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\"], growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\"], push: [\"cdkConnectedOverlayPush\", \"push\"] }, outputs: { backdropClick: \"backdropClick\", positionChange: \"positionChange\", attach: \"attach\", detach: \"detach\", overlayKeydown: \"overlayKeydown\", overlayOutsideClick: \"overlayOutsideClick\" }, exportAs: [\"cdkConnectedOverlay\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkConnectedOverlay, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n                    exportAs: 'cdkConnectedOverlay',\n                }]\n        }], ctorParameters: function () { return [{ type: Overlay }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n                }] }, { type: i5.Directionality, decorators: [{\n                    type: Optional\n                }] }]; }, propDecorators: { origin: [{\n                type: Input,\n                args: ['cdkConnectedOverlayOrigin']\n            }], positions: [{\n                type: Input,\n                args: ['cdkConnectedOverlayPositions']\n            }], positionStrategy: [{\n                type: Input,\n                args: ['cdkConnectedOverlayPositionStrategy']\n            }], offsetX: [{\n                type: Input,\n                args: ['cdkConnectedOverlayOffsetX']\n            }], offsetY: [{\n                type: Input,\n                args: ['cdkConnectedOverlayOffsetY']\n            }], width: [{\n                type: Input,\n                args: ['cdkConnectedOverlayWidth']\n            }], height: [{\n                type: Input,\n                args: ['cdkConnectedOverlayHeight']\n            }], minWidth: [{\n                type: Input,\n                args: ['cdkConnectedOverlayMinWidth']\n            }], minHeight: [{\n                type: Input,\n                args: ['cdkConnectedOverlayMinHeight']\n            }], backdropClass: [{\n                type: Input,\n                args: ['cdkConnectedOverlayBackdropClass']\n            }], panelClass: [{\n                type: Input,\n                args: ['cdkConnectedOverlayPanelClass']\n            }], viewportMargin: [{\n                type: Input,\n                args: ['cdkConnectedOverlayViewportMargin']\n            }], scrollStrategy: [{\n                type: Input,\n                args: ['cdkConnectedOverlayScrollStrategy']\n            }], open: [{\n                type: Input,\n                args: ['cdkConnectedOverlayOpen']\n            }], disableClose: [{\n                type: Input,\n                args: ['cdkConnectedOverlayDisableClose']\n            }], transformOriginSelector: [{\n                type: Input,\n                args: ['cdkConnectedOverlayTransformOriginOn']\n            }], hasBackdrop: [{\n                type: Input,\n                args: ['cdkConnectedOverlayHasBackdrop']\n            }], lockPosition: [{\n                type: Input,\n                args: ['cdkConnectedOverlayLockPosition']\n            }], flexibleDimensions: [{\n                type: Input,\n                args: ['cdkConnectedOverlayFlexibleDimensions']\n            }], growAfterOpen: [{\n                type: Input,\n                args: ['cdkConnectedOverlayGrowAfterOpen']\n            }], push: [{\n                type: Input,\n                args: ['cdkConnectedOverlayPush']\n            }], backdropClick: [{\n                type: Output\n            }], positionChange: [{\n                type: Output\n            }], attach: [{\n                type: Output\n            }], detach: [{\n                type: Output\n            }], overlayKeydown: [{\n                type: Output\n            }], overlayOutsideClick: [{\n                type: Output\n            }] } });\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n    return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n    provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n    deps: [Overlay],\n    useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\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 */\nclass OverlayModule {\n}\nOverlayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, declarations: [CdkConnectedOverlay, CdkOverlayOrigin], imports: [BidiModule, PortalModule, ScrollingModule], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] });\nOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [[BidiModule, PortalModule, ScrollingModule], ScrollingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [BidiModule, PortalModule, ScrollingModule],\n                    exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n                    declarations: [CdkConnectedOverlay, CdkOverlayOrigin],\n                    providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n                }]\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/**\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 * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n    constructor(_document, platform) {\n        super(_document, platform);\n    }\n    ngOnDestroy() {\n        super.ngOnDestroy();\n        if (this._fullScreenEventName && this._fullScreenListener) {\n            this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n        }\n    }\n    _createContainer() {\n        super._createContainer();\n        this._adjustParentForFullscreenChange();\n        this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n    }\n    _adjustParentForFullscreenChange() {\n        if (!this._containerElement) {\n            return;\n        }\n        const fullscreenElement = this.getFullscreenElement();\n        const parent = fullscreenElement || this._document.body;\n        parent.appendChild(this._containerElement);\n    }\n    _addFullscreenChangeListener(fn) {\n        const eventName = this._getEventName();\n        if (eventName) {\n            if (this._fullScreenListener) {\n                this._document.removeEventListener(eventName, this._fullScreenListener);\n            }\n            this._document.addEventListener(eventName, fn);\n            this._fullScreenListener = fn;\n        }\n    }\n    _getEventName() {\n        if (!this._fullScreenEventName) {\n            const _document = this._document;\n            if (_document.fullscreenEnabled) {\n                this._fullScreenEventName = 'fullscreenchange';\n            }\n            else if (_document.webkitFullscreenEnabled) {\n                this._fullScreenEventName = 'webkitfullscreenchange';\n            }\n            else if (_document.mozFullScreenEnabled) {\n                this._fullScreenEventName = 'mozfullscreenchange';\n            }\n            else if (_document.msFullscreenEnabled) {\n                this._fullScreenEventName = 'MSFullscreenChange';\n            }\n        }\n        return this._fullScreenEventName;\n    }\n    /**\n     * When the page is put into fullscreen mode, a specific element is specified.\n     * Only that element and its children are visible when in fullscreen mode.\n     */\n    getFullscreenElement() {\n        const _document = this._document;\n        return (_document.fullscreenElement ||\n            _document.webkitFullscreenElement ||\n            _document.mozFullScreenElement ||\n            _document.msFullscreenElement ||\n            null);\n    }\n}\nFullscreenOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FullscreenOverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nFullscreenOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: i1$1.Platform }]; } });\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/2af2a2feb8d48719324a884911c3b853.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/2af2a2feb8d48719324a884911c3b853.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/2af2a2feb8d48719324a884911c3b853.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { UniqueComponentId } from 'primeng/utils';\nconst _c0 = [\"itemsContainer\"];\n\nfunction Carousel_div_1_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction Carousel_div_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 11);\n    i0.ɵɵprojection(1);\n    i0.ɵɵtemplate(2, Carousel_div_1_ng_container_2_Template, 1, 0, \"ng-container\", 12);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.headerTemplate);\n  }\n}\n\nconst _c1 = function (a1) {\n  return {\n    \"p-carousel-prev p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nconst _c2 = function (a1, a2) {\n  return {\n    \"p-carousel-prev-icon pi\": true,\n    \"pi-chevron-left\": a1,\n    \"pi-chevron-up\": a2\n  };\n};\n\nfunction Carousel_button_4_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r11 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 13);\n    i0.ɵɵlistener(\"click\", function Carousel_button_4_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r11);\n      const ctx_r10 = i0.ɵɵnextContext();\n      return ctx_r10.navBackward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 2);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(3, _c1, ctx_r1.isBackwardNavDisabled()))(\"disabled\", ctx_r1.isBackwardNavDisabled());\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(5, _c2, !ctx_r1.isVertical(), ctx_r1.isVertical()));\n  }\n}\n\nfunction Carousel_div_8_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nconst _c3 = function (a1, a2, a3) {\n  return {\n    \"p-carousel-item p-carousel-item-cloned\": true,\n    \"p-carousel-item-active\": a1,\n    \"p-carousel-item-start\": a2,\n    \"p-carousel-item-end\": a3\n  };\n};\n\nconst _c4 = function (a0) {\n  return {\n    $implicit: a0\n  };\n};\n\nfunction Carousel_div_8_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 2);\n    i0.ɵɵtemplate(1, Carousel_div_8_ng_container_1_Template, 1, 0, \"ng-container\", 14);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const item_r12 = ctx.$implicit;\n    const index_r13 = ctx.index;\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction3(3, _c3, ctx_r3.totalShiftedItems * -1 === ctx_r3.value.length, 0 === index_r13, ctx_r3.clonedItemsForStarting.length - 1 === index_r13));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.itemTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(7, _c4, item_r12));\n  }\n}\n\nfunction Carousel_div_9_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nconst _c5 = function (a1, a2, a3) {\n  return {\n    \"p-carousel-item\": true,\n    \"p-carousel-item-active\": a1,\n    \"p-carousel-item-start\": a2,\n    \"p-carousel-item-end\": a3\n  };\n};\n\nfunction Carousel_div_9_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 2);\n    i0.ɵɵtemplate(1, Carousel_div_9_ng_container_1_Template, 1, 0, \"ng-container\", 14);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const item_r15 = ctx.$implicit;\n    const index_r16 = ctx.index;\n    const ctx_r4 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction3(3, _c5, ctx_r4.firstIndex() <= index_r16 && ctx_r4.lastIndex() >= index_r16, ctx_r4.firstIndex() === index_r16, ctx_r4.lastIndex() === index_r16));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.itemTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(7, _c4, item_r15));\n  }\n}\n\nfunction Carousel_div_10_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction Carousel_div_10_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 2);\n    i0.ɵɵtemplate(1, Carousel_div_10_ng_container_1_Template, 1, 0, \"ng-container\", 14);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const item_r18 = ctx.$implicit;\n    const index_r19 = ctx.index;\n    const ctx_r5 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction3(3, _c3, ctx_r5.totalShiftedItems * -1 === ctx_r5.numVisible, 0 === index_r19, ctx_r5.clonedItemsForFinishing.length - 1 === index_r19));\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r5.itemTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(7, _c4, item_r18));\n  }\n}\n\nconst _c6 = function (a1) {\n  return {\n    \"p-carousel-next p-link\": true,\n    \"p-disabled\": a1\n  };\n};\n\nconst _c7 = function (a1, a2) {\n  return {\n    \"p-carousel-prev-icon pi\": true,\n    \"pi-chevron-right\": a1,\n    \"pi-chevron-down\": a2\n  };\n};\n\nfunction Carousel_button_11_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r22 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 13);\n    i0.ɵɵlistener(\"click\", function Carousel_button_11_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r22);\n      const ctx_r21 = i0.ɵɵnextContext();\n      return ctx_r21.navForward($event);\n    });\n    i0.ɵɵelement(1, \"span\", 2);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r6 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(3, _c6, ctx_r6.isForwardNavDisabled()))(\"disabled\", ctx_r6.isForwardNavDisabled());\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(5, _c7, !ctx_r6.isVertical(), ctx_r6.isVertical()));\n  }\n}\n\nconst _c8 = function (a1) {\n  return {\n    \"p-carousel-indicator\": true,\n    \"p-highlight\": a1\n  };\n};\n\nfunction Carousel_ul_12_li_1_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r27 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"li\", 2);\n    i0.ɵɵelementStart(1, \"button\", 15);\n    i0.ɵɵlistener(\"click\", function Carousel_ul_12_li_1_Template_button_click_1_listener($event) {\n      const restoredCtx = i0.ɵɵrestoreView(_r27);\n      const i_r25 = restoredCtx.index;\n      const ctx_r26 = i0.ɵɵnextContext(2);\n      return ctx_r26.onDotClick($event, i_r25);\n    });\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const i_r25 = ctx.index;\n    const ctx_r23 = i0.ɵɵnextContext(2);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(5, _c8, ctx_r23._page === i_r25));\n    i0.ɵɵadvance(1);\n    i0.ɵɵclassMap(ctx_r23.indicatorStyleClass);\n    i0.ɵɵproperty(\"ngClass\", \"p-link\")(\"ngStyle\", ctx_r23.indicatorStyle);\n  }\n}\n\nfunction Carousel_ul_12_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"ul\", 0);\n    i0.ɵɵtemplate(1, Carousel_ul_12_li_1_Template, 2, 7, \"li\", 8);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r7 = i0.ɵɵnextContext();\n    i0.ɵɵclassMap(ctx_r7.indicatorsContentClass);\n    i0.ɵɵproperty(\"ngClass\", \"p-carousel-indicators p-reset\")(\"ngStyle\", ctx_r7.indicatorsContentStyle);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngForOf\", ctx_r7.totalDotsArray());\n  }\n}\n\nfunction Carousel_div_13_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction Carousel_div_13_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 16);\n    i0.ɵɵprojection(1, 1);\n    i0.ɵɵtemplate(2, Carousel_div_13_ng_container_2_Template, 1, 0, \"ng-container\", 12);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r8 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r8.footerTemplate);\n  }\n}\n\nconst _c9 = [[[\"p-header\"]], [[\"p-footer\"]]];\n\nconst _c10 = function (a1, a2) {\n  return {\n    \"p-carousel p-component\": true,\n    \"p-carousel-vertical\": a1,\n    \"p-carousel-horizontal\": a2\n  };\n};\n\nconst _c11 = function (a0) {\n  return {\n    \"height\": a0\n  };\n};\n\nconst _c12 = [\"p-header\", \"p-footer\"];\n\nclass Carousel {\n  constructor(el, zone, cd) {\n    this.el = el;\n    this.zone = zone;\n    this.cd = cd;\n    this.orientation = \"horizontal\";\n    this.verticalViewPortHeight = \"300px\";\n    this.contentClass = \"\";\n    this.indicatorsContentClass = \"\";\n    this.indicatorStyleClass = \"\";\n    this.circular = false;\n    this.showIndicators = true;\n    this.showNavigators = true;\n    this.autoplayInterval = 0;\n    this.onPage = new EventEmitter();\n    this._numVisible = 1;\n    this._numScroll = 1;\n    this._oldNumScroll = 0;\n    this.prevState = {\n      numScroll: 0,\n      numVisible: 0,\n      value: []\n    };\n    this.defaultNumScroll = 1;\n    this.defaultNumVisible = 1;\n    this._page = 0;\n    this.isRemainingItemsAdded = false;\n    this.remainingItems = 0;\n    this.swipeThreshold = 20;\n    this.totalShiftedItems = this.page * this.numScroll * -1;\n  }\n\n  get page() {\n    return this._page;\n  }\n\n  set page(val) {\n    if (this.isCreated && val !== this._page) {\n      if (this.autoplayInterval) {\n        this.stopAutoplay();\n        this.allowAutoplay = false;\n      }\n\n      if (val > this._page && val <= this.totalDots() - 1) {\n        this.step(-1, val);\n      } else if (val < this._page) {\n        this.step(1, val);\n      }\n    }\n\n    this._page = val;\n  }\n\n  get numVisible() {\n    return this._numVisible;\n  }\n\n  set numVisible(val) {\n    this._numVisible = val;\n  }\n\n  get numScroll() {\n    return this._numVisible;\n  }\n\n  set numScroll(val) {\n    this._numScroll = val;\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n  }\n\n  ngOnChanges(simpleChange) {\n    if (simpleChange.value) {\n      if (this.circular && this._value) {\n        this.setCloneItems();\n      }\n    }\n\n    if (this.isCreated) {\n      if (simpleChange.numVisible) {\n        if (this.responsiveOptions) {\n          this.defaultNumVisible = this.numVisible;\n        }\n\n        if (this.isCircular()) {\n          this.setCloneItems();\n        }\n\n        this.createStyle();\n        this.calculatePosition();\n      }\n\n      if (simpleChange.numScroll) {\n        if (this.responsiveOptions) {\n          this.defaultNumScroll = this.numScroll;\n        }\n      }\n    }\n  }\n\n  ngAfterContentInit() {\n    this.id = UniqueComponentId();\n    this.allowAutoplay = !!this.autoplayInterval;\n\n    if (this.circular) {\n      this.setCloneItems();\n    }\n\n    if (this.responsiveOptions) {\n      this.defaultNumScroll = this._numScroll;\n      this.defaultNumVisible = this._numVisible;\n    }\n\n    this.createStyle();\n    this.calculatePosition();\n\n    if (this.responsiveOptions) {\n      this.bindDocumentListeners();\n    }\n\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'item':\n          this.itemTemplate = item.template;\n          break;\n\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        case 'footer':\n          this.footerTemplate = item.template;\n          break;\n\n        default:\n          this.itemTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  ngAfterContentChecked() {\n    const isCircular = this.isCircular();\n    let totalShiftedItems = this.totalShiftedItems;\n\n    if (this.value && this.itemsContainer && (this.prevState.numScroll !== this._numScroll || this.prevState.numVisible !== this._numVisible || this.prevState.value.length !== this.value.length)) {\n      if (this.autoplayInterval) {\n        this.stopAutoplay();\n      }\n\n      this.remainingItems = (this.value.length - this._numVisible) % this._numScroll;\n      let page = this._page;\n\n      if (this.totalDots() !== 0 && page >= this.totalDots()) {\n        page = this.totalDots() - 1;\n        this._page = page;\n        this.onPage.emit({\n          page: this.page\n        });\n      }\n\n      totalShiftedItems = page * this._numScroll * -1;\n\n      if (isCircular) {\n        totalShiftedItems -= this._numVisible;\n      }\n\n      if (page === this.totalDots() - 1 && this.remainingItems > 0) {\n        totalShiftedItems += -1 * this.remainingItems + this._numScroll;\n        this.isRemainingItemsAdded = true;\n      } else {\n        this.isRemainingItemsAdded = false;\n      }\n\n      if (totalShiftedItems !== this.totalShiftedItems) {\n        this.totalShiftedItems = totalShiftedItems;\n      }\n\n      this._oldNumScroll = this._numScroll;\n      this.prevState.numScroll = this._numScroll;\n      this.prevState.numVisible = this._numVisible;\n      this.prevState.value = [...this._value];\n\n      if (this.totalDots() > 0 && this.itemsContainer.nativeElement) {\n        this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n      }\n\n      this.isCreated = true;\n\n      if (this.autoplayInterval && this.isAutoplay()) {\n        this.startAutoplay();\n      }\n    }\n\n    if (isCircular) {\n      if (this.page === 0) {\n        totalShiftedItems = -1 * this._numVisible;\n      } else if (totalShiftedItems === 0) {\n        totalShiftedItems = -1 * this.value.length;\n\n        if (this.remainingItems > 0) {\n          this.isRemainingItemsAdded = true;\n        }\n      }\n\n      if (totalShiftedItems !== this.totalShiftedItems) {\n        this.totalShiftedItems = totalShiftedItems;\n      }\n    }\n  }\n\n  createStyle() {\n    if (!this.carouselStyle) {\n      this.carouselStyle = document.createElement('style');\n      this.carouselStyle.type = 'text/css';\n      document.body.appendChild(this.carouselStyle);\n    }\n\n    let innerHTML = `\n            #${this.id} .p-carousel-item {\n\t\t\t\tflex: 1 0 ${100 / this.numVisible}%\n\t\t\t}\n        `;\n\n    if (this.responsiveOptions) {\n      this.responsiveOptions.sort((data1, data2) => {\n        const value1 = data1.breakpoint;\n        const value2 = data2.breakpoint;\n        let result = null;\n        if (value1 == null && value2 != null) result = -1;else if (value1 != null && value2 == null) result = 1;else if (value1 == null && value2 == null) result = 0;else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2, undefined, {\n          numeric: true\n        });else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\n        return -1 * result;\n      });\n\n      for (let i = 0; i < this.responsiveOptions.length; i++) {\n        let res = this.responsiveOptions[i];\n        innerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.id} .p-carousel-item {\n                            flex: 1 0 ${100 / res.numVisible}%\n                        }\n                    }\n                `;\n      }\n    }\n\n    this.carouselStyle.innerHTML = innerHTML;\n  }\n\n  calculatePosition() {\n    if (this.responsiveOptions) {\n      let windowWidth = window.innerWidth;\n      let matchedResponsiveData = {\n        numVisible: this.defaultNumVisible,\n        numScroll: this.defaultNumScroll\n      };\n\n      for (let i = 0; i < this.responsiveOptions.length; i++) {\n        let res = this.responsiveOptions[i];\n\n        if (parseInt(res.breakpoint, 10) >= windowWidth) {\n          matchedResponsiveData = res;\n        }\n      }\n\n      if (this._numScroll !== matchedResponsiveData.numScroll) {\n        let page = this._page;\n        page = Math.floor(page * this._numScroll / matchedResponsiveData.numScroll);\n        let totalShiftedItems = matchedResponsiveData.numScroll * this.page * -1;\n\n        if (this.isCircular()) {\n          totalShiftedItems -= matchedResponsiveData.numVisible;\n        }\n\n        this.totalShiftedItems = totalShiftedItems;\n        this._numScroll = matchedResponsiveData.numScroll;\n        this._page = page;\n        this.onPage.emit({\n          page: this.page\n        });\n      }\n\n      if (this._numVisible !== matchedResponsiveData.numVisible) {\n        this._numVisible = matchedResponsiveData.numVisible;\n        this.setCloneItems();\n      }\n\n      this.cd.markForCheck();\n    }\n  }\n\n  setCloneItems() {\n    this.clonedItemsForStarting = [];\n    this.clonedItemsForFinishing = [];\n\n    if (this.isCircular()) {\n      this.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));\n      this.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));\n    }\n  }\n\n  firstIndex() {\n    return this.isCircular() ? -1 * (this.totalShiftedItems + this.numVisible) : this.totalShiftedItems * -1;\n  }\n\n  lastIndex() {\n    return this.firstIndex() + this.numVisible - 1;\n  }\n\n  totalDots() {\n    return this.value ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;\n  }\n\n  totalDotsArray() {\n    const totalDots = this.totalDots();\n    return totalDots <= 0 ? [] : Array(totalDots).fill(0);\n  }\n\n  isVertical() {\n    return this.orientation === 'vertical';\n  }\n\n  isCircular() {\n    return this.circular && this.value && this.value.length >= this.numVisible;\n  }\n\n  isAutoplay() {\n    return this.autoplayInterval && this.allowAutoplay;\n  }\n\n  isForwardNavDisabled() {\n    return this.isEmpty() || this._page >= this.totalDots() - 1 && !this.isCircular();\n  }\n\n  isBackwardNavDisabled() {\n    return this.isEmpty() || this._page <= 0 && !this.isCircular();\n  }\n\n  isEmpty() {\n    return !this.value || this.value.length === 0;\n  }\n\n  navForward(e, index) {\n    if (this.isCircular() || this._page < this.totalDots() - 1) {\n      this.step(-1, index);\n    }\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n      this.allowAutoplay = false;\n    }\n\n    if (e && e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  navBackward(e, index) {\n    if (this.isCircular() || this._page !== 0) {\n      this.step(1, index);\n    }\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n      this.allowAutoplay = false;\n    }\n\n    if (e && e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onDotClick(e, index) {\n    let page = this._page;\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n      this.allowAutoplay = false;\n    }\n\n    if (index > page) {\n      this.navForward(e, index);\n    } else if (index < page) {\n      this.navBackward(e, index);\n    }\n  }\n\n  step(dir, page) {\n    let totalShiftedItems = this.totalShiftedItems;\n    const isCircular = this.isCircular();\n\n    if (page != null) {\n      totalShiftedItems = this._numScroll * page * -1;\n\n      if (isCircular) {\n        totalShiftedItems -= this._numVisible;\n      }\n\n      this.isRemainingItemsAdded = false;\n    } else {\n      totalShiftedItems += this._numScroll * dir;\n\n      if (this.isRemainingItemsAdded) {\n        totalShiftedItems += this.remainingItems - this._numScroll * dir;\n        this.isRemainingItemsAdded = false;\n      }\n\n      let originalShiftedItems = isCircular ? totalShiftedItems + this._numVisible : totalShiftedItems;\n      page = Math.abs(Math.floor(originalShiftedItems / this._numScroll));\n    }\n\n    if (isCircular && this.page === this.totalDots() - 1 && dir === -1) {\n      totalShiftedItems = -1 * (this.value.length + this._numVisible);\n      page = 0;\n    } else if (isCircular && this.page === 0 && dir === 1) {\n      totalShiftedItems = 0;\n      page = this.totalDots() - 1;\n    } else if (page === this.totalDots() - 1 && this.remainingItems > 0) {\n      totalShiftedItems += this.remainingItems * -1 - this._numScroll * dir;\n      this.isRemainingItemsAdded = true;\n    }\n\n    if (this.itemsContainer) {\n      this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n      this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n    }\n\n    this.totalShiftedItems = totalShiftedItems;\n    this._page = page;\n    this.onPage.emit({\n      page: this.page\n    });\n  }\n\n  startAutoplay() {\n    this.interval = setInterval(() => {\n      if (this.totalDots() > 0) {\n        if (this.page === this.totalDots() - 1) {\n          this.step(-1, 0);\n        } else {\n          this.step(-1, this.page + 1);\n        }\n      }\n    }, this.autoplayInterval);\n  }\n\n  stopAutoplay() {\n    if (this.interval) {\n      clearInterval(this.interval);\n    }\n  }\n\n  onTransitionEnd() {\n    if (this.itemsContainer) {\n      this.itemsContainer.nativeElement.style.transition = '';\n\n      if ((this.page === 0 || this.page === this.totalDots() - 1) && this.isCircular()) {\n        this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${this.totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${this.totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n      }\n    }\n  }\n\n  onTouchStart(e) {\n    let touchobj = e.changedTouches[0];\n    this.startPos = {\n      x: touchobj.pageX,\n      y: touchobj.pageY\n    };\n  }\n\n  onTouchMove(e) {\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n  }\n\n  onTouchEnd(e) {\n    let touchobj = e.changedTouches[0];\n\n    if (this.isVertical()) {\n      this.changePageOnTouch(e, touchobj.pageY - this.startPos.y);\n    } else {\n      this.changePageOnTouch(e, touchobj.pageX - this.startPos.x);\n    }\n  }\n\n  changePageOnTouch(e, diff) {\n    if (Math.abs(diff) > this.swipeThreshold) {\n      if (diff < 0) {\n        this.navForward(e);\n      } else {\n        this.navBackward(e);\n      }\n    }\n  }\n\n  bindDocumentListeners() {\n    if (!this.documentResizeListener) {\n      this.documentResizeListener = e => {\n        this.calculatePosition();\n      };\n\n      window.addEventListener('resize', this.documentResizeListener);\n    }\n  }\n\n  unbindDocumentListeners() {\n    if (this.documentResizeListener) {\n      window.removeEventListener('resize', this.documentResizeListener);\n      this.documentResizeListener = null;\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.responsiveOptions) {\n      this.unbindDocumentListeners();\n    }\n\n    if (this.autoplayInterval) {\n      this.stopAutoplay();\n    }\n  }\n\n}\n\nCarousel.ɵfac = function Carousel_Factory(t) {\n  return new (t || Carousel)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nCarousel.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Carousel,\n  selectors: [[\"p-carousel\"]],\n  contentQueries: function Carousel_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, Header, 5);\n      i0.ɵɵcontentQuery(dirIndex, Footer, 5);\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerFacet = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.footerFacet = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  viewQuery: function Carousel_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemsContainer = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    page: \"page\",\n    numVisible: \"numVisible\",\n    numScroll: \"numScroll\",\n    responsiveOptions: \"responsiveOptions\",\n    orientation: \"orientation\",\n    verticalViewPortHeight: \"verticalViewPortHeight\",\n    contentClass: \"contentClass\",\n    indicatorsContentClass: \"indicatorsContentClass\",\n    indicatorsContentStyle: \"indicatorsContentStyle\",\n    indicatorStyleClass: \"indicatorStyleClass\",\n    indicatorStyle: \"indicatorStyle\",\n    value: \"value\",\n    circular: \"circular\",\n    showIndicators: \"showIndicators\",\n    showNavigators: \"showNavigators\",\n    autoplayInterval: \"autoplayInterval\",\n    style: \"style\",\n    styleClass: \"styleClass\"\n  },\n  outputs: {\n    onPage: \"onPage\"\n  },\n  features: [i0.ɵɵNgOnChangesFeature],\n  ngContentSelectors: _c12,\n  decls: 14,\n  vars: 22,\n  consts: [[3, \"ngClass\", \"ngStyle\"], [\"class\", \"p-carousel-header\", 4, \"ngIf\"], [3, \"ngClass\"], [1, \"p-carousel-container\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\", 4, \"ngIf\"], [1, \"p-carousel-items-content\", 3, \"ngStyle\"], [1, \"p-carousel-items-container\", 3, \"transitionend\", \"touchend\", \"touchstart\", \"touchmove\"], [\"itemsContainer\", \"\"], [3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [3, \"ngClass\", \"class\", \"ngStyle\", 4, \"ngIf\"], [\"class\", \"p-carousel-footer\", 4, \"ngIf\"], [1, \"p-carousel-header\"], [4, \"ngTemplateOutlet\"], [\"type\", \"button\", \"pRipple\", \"\", 3, \"ngClass\", \"disabled\", \"click\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"type\", \"button\", 3, \"ngClass\", \"ngStyle\", \"click\"], [1, \"p-carousel-footer\"]],\n  template: function Carousel_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef(_c9);\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵtemplate(1, Carousel_div_1_Template, 3, 1, \"div\", 1);\n      i0.ɵɵelementStart(2, \"div\", 2);\n      i0.ɵɵelementStart(3, \"div\", 3);\n      i0.ɵɵtemplate(4, Carousel_button_4_Template, 2, 8, \"button\", 4);\n      i0.ɵɵelementStart(5, \"div\", 5);\n      i0.ɵɵelementStart(6, \"div\", 6, 7);\n      i0.ɵɵlistener(\"transitionend\", function Carousel_Template_div_transitionend_6_listener() {\n        return ctx.onTransitionEnd();\n      })(\"touchend\", function Carousel_Template_div_touchend_6_listener($event) {\n        return ctx.onTouchEnd($event);\n      })(\"touchstart\", function Carousel_Template_div_touchstart_6_listener($event) {\n        return ctx.onTouchStart($event);\n      })(\"touchmove\", function Carousel_Template_div_touchmove_6_listener($event) {\n        return ctx.onTouchMove($event);\n      });\n      i0.ɵɵtemplate(8, Carousel_div_8_Template, 2, 9, \"div\", 8);\n      i0.ɵɵtemplate(9, Carousel_div_9_Template, 2, 9, \"div\", 8);\n      i0.ɵɵtemplate(10, Carousel_div_10_Template, 2, 9, \"div\", 8);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(11, Carousel_button_11_Template, 2, 8, \"button\", 4);\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(12, Carousel_ul_12_Template, 2, 5, \"ul\", 9);\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(13, Carousel_div_13_Template, 3, 1, \"div\", 10);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(17, _c10, ctx.isVertical(), !ctx.isVertical()))(\"ngStyle\", ctx.style);\n      i0.ɵɵattribute(\"id\", ctx.id);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.headerFacet || ctx.headerTemplate);\n      i0.ɵɵadvance(1);\n      i0.ɵɵclassMap(ctx.contentClass);\n      i0.ɵɵproperty(\"ngClass\", \"p-carousel-content\");\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngIf\", ctx.showNavigators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngStyle\", i0.ɵɵpureFunction1(20, _c11, ctx.isVertical() ? ctx.verticalViewPortHeight : \"auto\"));\n      i0.ɵɵadvance(3);\n      i0.ɵɵproperty(\"ngForOf\", ctx.clonedItemsForStarting);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngForOf\", ctx.value);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngForOf\", ctx.clonedItemsForFinishing);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.showNavigators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.showIndicators);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.footerFacet || ctx.footerTemplate);\n    }\n  },\n  directives: [i1.NgClass, i1.NgStyle, i1.NgIf, i1.NgForOf, i1.NgTemplateOutlet, i2.Ripple],\n  styles: [\".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\\n\"],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Carousel, [{\n    type: Component,\n    args: [{\n      selector: 'p-carousel',\n      template: `\n\t\t<div [attr.id]=\"id\" [ngClass]=\"{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n\t\t\t<div class=\"p-carousel-header\" *ngIf=\"headerFacet || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t\t<div [class]=\"contentClass\" [ngClass]=\"'p-carousel-content'\">\n\t\t\t\t<div class=\"p-carousel-container\">\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}\" [disabled]=\"isBackwardNavDisabled()\" (click)=\"navBackward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div class=\"p-carousel-items-content\" [ngStyle]=\"{'height': isVertical() ? verticalViewPortHeight : 'auto'}\">\n\t\t\t\t\t\t<div #itemsContainer class=\"p-carousel-items-container\" (transitionend)=\"onTransitionEnd()\" (touchend)=\"onTouchEnd($event)\" (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\">\n                            <div *ngFor=\"let item of clonedItemsForStarting; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of value; let index = index\" [ngClass]= \"{'p-carousel-item': true,\n                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),\n\t\t\t\t\t\t\t    'p-carousel-item-start': firstIndex() === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': lastIndex() === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of clonedItemsForFinishing; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}\" [disabled]=\"isForwardNavDisabled()\" (click)=\"navForward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<ul [ngClass]=\"'p-carousel-indicators p-reset'\" [class]=\"indicatorsContentClass\" [ngStyle]=\"indicatorsContentStyle\" *ngIf=\"showIndicators\">\n\t\t\t\t\t<li *ngFor=\"let totalDot of totalDotsArray(); let i = index\" [ngClass]=\"{'p-carousel-indicator':true,'p-highlight': _page === i}\">\n\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"'p-link'\" (click)=\"onDotClick($event, i)\" [class]=\"indicatorStyleClass\" [ngStyle]=\"indicatorStyle\"></button>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"p-carousel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t</div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.NgZone\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    page: [{\n      type: Input\n    }],\n    numVisible: [{\n      type: Input\n    }],\n    numScroll: [{\n      type: Input\n    }],\n    responsiveOptions: [{\n      type: Input\n    }],\n    orientation: [{\n      type: Input\n    }],\n    verticalViewPortHeight: [{\n      type: Input\n    }],\n    contentClass: [{\n      type: Input\n    }],\n    indicatorsContentClass: [{\n      type: Input\n    }],\n    indicatorsContentStyle: [{\n      type: Input\n    }],\n    indicatorStyleClass: [{\n      type: Input\n    }],\n    indicatorStyle: [{\n      type: Input\n    }],\n    value: [{\n      type: Input\n    }],\n    circular: [{\n      type: Input\n    }],\n    showIndicators: [{\n      type: Input\n    }],\n    showNavigators: [{\n      type: Input\n    }],\n    autoplayInterval: [{\n      type: Input\n    }],\n    style: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    onPage: [{\n      type: Output\n    }],\n    itemsContainer: [{\n      type: ViewChild,\n      args: ['itemsContainer']\n    }],\n    headerFacet: [{\n      type: ContentChild,\n      args: [Header]\n    }],\n    footerFacet: [{\n      type: ContentChild,\n      args: [Footer]\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }]\n  });\n})();\n\nclass CarouselModule {}\n\nCarouselModule.ɵfac = function CarouselModule_Factory(t) {\n  return new (t || CarouselModule)();\n};\n\nCarouselModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: CarouselModule\n});\nCarouselModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CarouselModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, SharedModule, RippleModule],\n      exports: [CommonModule, Carousel, SharedModule],\n      declarations: [Carousel]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Carousel, CarouselModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-carousel.mjs"],"names":["i0","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","Input","Output","ViewChild","ContentChild","ContentChildren","NgModule","Header","Footer","PrimeTemplate","SharedModule","i2","RippleModule","i1","CommonModule","UniqueComponentId","Carousel","constructor","el","zone","cd","orientation","verticalViewPortHeight","contentClass","indicatorsContentClass","indicatorStyleClass","circular","showIndicators","showNavigators","autoplayInterval","onPage","_numVisible","_numScroll","_oldNumScroll","prevState","numScroll","numVisible","value","defaultNumScroll","defaultNumVisible","_page","isRemainingItemsAdded","remainingItems","swipeThreshold","totalShiftedItems","page","val","isCreated","stopAutoplay","allowAutoplay","totalDots","step","_value","ngOnChanges","simpleChange","setCloneItems","responsiveOptions","isCircular","createStyle","calculatePosition","ngAfterContentInit","id","bindDocumentListeners","templates","forEach","item","getType","itemTemplate","template","headerTemplate","footerTemplate","ngAfterContentChecked","itemsContainer","length","emit","nativeElement","style","transform","isVertical","isAutoplay","startAutoplay","carouselStyle","document","createElement","type","body","appendChild","innerHTML","sort","data1","data2","value1","breakpoint","value2","result","localeCompare","undefined","numeric","i","res","windowWidth","window","innerWidth","matchedResponsiveData","parseInt","Math","floor","markForCheck","clonedItemsForStarting","clonedItemsForFinishing","push","slice","firstIndex","lastIndex","ceil","totalDotsArray","Array","fill","isForwardNavDisabled","isEmpty","isBackwardNavDisabled","navForward","e","index","cancelable","preventDefault","navBackward","onDotClick","dir","originalShiftedItems","abs","transition","interval","setInterval","clearInterval","onTransitionEnd","onTouchStart","touchobj","changedTouches","startPos","x","pageX","y","pageY","onTouchMove","onTouchEnd","changePageOnTouch","diff","documentResizeListener","addEventListener","unbindDocumentListeners","removeEventListener","ngOnDestroy","ɵfac","ElementRef","NgZone","ChangeDetectorRef","ɵcmp","NgClass","NgStyle","NgIf","NgForOf","NgTemplateOutlet","Ripple","args","selector","changeDetection","OnPush","encapsulation","None","host","styles","indicatorsContentStyle","indicatorStyle","styleClass","headerFacet","footerFacet","CarouselModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ViewChild, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { Header, Footer, PrimeTemplate, SharedModule } from 'primeng/api';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { UniqueComponentId } from 'primeng/utils';\n\nclass Carousel {\n    constructor(el, zone, cd) {\n        this.el = el;\n        this.zone = zone;\n        this.cd = cd;\n        this.orientation = \"horizontal\";\n        this.verticalViewPortHeight = \"300px\";\n        this.contentClass = \"\";\n        this.indicatorsContentClass = \"\";\n        this.indicatorStyleClass = \"\";\n        this.circular = false;\n        this.showIndicators = true;\n        this.showNavigators = true;\n        this.autoplayInterval = 0;\n        this.onPage = new EventEmitter();\n        this._numVisible = 1;\n        this._numScroll = 1;\n        this._oldNumScroll = 0;\n        this.prevState = {\n            numScroll: 0,\n            numVisible: 0,\n            value: []\n        };\n        this.defaultNumScroll = 1;\n        this.defaultNumVisible = 1;\n        this._page = 0;\n        this.isRemainingItemsAdded = false;\n        this.remainingItems = 0;\n        this.swipeThreshold = 20;\n        this.totalShiftedItems = this.page * this.numScroll * -1;\n    }\n    get page() {\n        return this._page;\n    }\n    set page(val) {\n        if (this.isCreated && val !== this._page) {\n            if (this.autoplayInterval) {\n                this.stopAutoplay();\n                this.allowAutoplay = false;\n            }\n            if (val > this._page && val <= (this.totalDots() - 1)) {\n                this.step(-1, val);\n            }\n            else if (val < this._page) {\n                this.step(1, val);\n            }\n        }\n        this._page = val;\n    }\n    get numVisible() {\n        return this._numVisible;\n    }\n    set numVisible(val) {\n        this._numVisible = val;\n    }\n    get numScroll() {\n        return this._numVisible;\n    }\n    set numScroll(val) {\n        this._numScroll = val;\n    }\n    get value() {\n        return this._value;\n    }\n    ;\n    set value(val) {\n        this._value = val;\n    }\n    ngOnChanges(simpleChange) {\n        if (simpleChange.value) {\n            if (this.circular && this._value) {\n                this.setCloneItems();\n            }\n        }\n        if (this.isCreated) {\n            if (simpleChange.numVisible) {\n                if (this.responsiveOptions) {\n                    this.defaultNumVisible = this.numVisible;\n                }\n                if (this.isCircular()) {\n                    this.setCloneItems();\n                }\n                this.createStyle();\n                this.calculatePosition();\n            }\n            if (simpleChange.numScroll) {\n                if (this.responsiveOptions) {\n                    this.defaultNumScroll = this.numScroll;\n                }\n            }\n        }\n    }\n    ngAfterContentInit() {\n        this.id = UniqueComponentId();\n        this.allowAutoplay = !!this.autoplayInterval;\n        if (this.circular) {\n            this.setCloneItems();\n        }\n        if (this.responsiveOptions) {\n            this.defaultNumScroll = this._numScroll;\n            this.defaultNumVisible = this._numVisible;\n        }\n        this.createStyle();\n        this.calculatePosition();\n        if (this.responsiveOptions) {\n            this.bindDocumentListeners();\n        }\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'item':\n                    this.itemTemplate = item.template;\n                    break;\n                case 'header':\n                    this.headerTemplate = item.template;\n                    break;\n                case 'footer':\n                    this.footerTemplate = item.template;\n                    break;\n                default:\n                    this.itemTemplate = item.template;\n                    break;\n            }\n        });\n    }\n    ngAfterContentChecked() {\n        const isCircular = this.isCircular();\n        let totalShiftedItems = this.totalShiftedItems;\n        if (this.value && this.itemsContainer && (this.prevState.numScroll !== this._numScroll || this.prevState.numVisible !== this._numVisible || this.prevState.value.length !== this.value.length)) {\n            if (this.autoplayInterval) {\n                this.stopAutoplay();\n            }\n            this.remainingItems = (this.value.length - this._numVisible) % this._numScroll;\n            let page = this._page;\n            if (this.totalDots() !== 0 && page >= this.totalDots()) {\n                page = this.totalDots() - 1;\n                this._page = page;\n                this.onPage.emit({\n                    page: this.page\n                });\n            }\n            totalShiftedItems = (page * this._numScroll) * -1;\n            if (isCircular) {\n                totalShiftedItems -= this._numVisible;\n            }\n            if (page === (this.totalDots() - 1) && this.remainingItems > 0) {\n                totalShiftedItems += (-1 * this.remainingItems) + this._numScroll;\n                this.isRemainingItemsAdded = true;\n            }\n            else {\n                this.isRemainingItemsAdded = false;\n            }\n            if (totalShiftedItems !== this.totalShiftedItems) {\n                this.totalShiftedItems = totalShiftedItems;\n            }\n            this._oldNumScroll = this._numScroll;\n            this.prevState.numScroll = this._numScroll;\n            this.prevState.numVisible = this._numVisible;\n            this.prevState.value = [...this._value];\n            if (this.totalDots() > 0 && this.itemsContainer.nativeElement) {\n                this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n            }\n            this.isCreated = true;\n            if (this.autoplayInterval && this.isAutoplay()) {\n                this.startAutoplay();\n            }\n        }\n        if (isCircular) {\n            if (this.page === 0) {\n                totalShiftedItems = -1 * this._numVisible;\n            }\n            else if (totalShiftedItems === 0) {\n                totalShiftedItems = -1 * this.value.length;\n                if (this.remainingItems > 0) {\n                    this.isRemainingItemsAdded = true;\n                }\n            }\n            if (totalShiftedItems !== this.totalShiftedItems) {\n                this.totalShiftedItems = totalShiftedItems;\n            }\n        }\n    }\n    createStyle() {\n        if (!this.carouselStyle) {\n            this.carouselStyle = document.createElement('style');\n            this.carouselStyle.type = 'text/css';\n            document.body.appendChild(this.carouselStyle);\n        }\n        let innerHTML = `\n            #${this.id} .p-carousel-item {\n\t\t\t\tflex: 1 0 ${(100 / this.numVisible)}%\n\t\t\t}\n        `;\n        if (this.responsiveOptions) {\n            this.responsiveOptions.sort((data1, data2) => {\n                const value1 = data1.breakpoint;\n                const value2 = data2.breakpoint;\n                let result = null;\n                if (value1 == null && value2 != null)\n                    result = -1;\n                else if (value1 != null && value2 == null)\n                    result = 1;\n                else if (value1 == null && value2 == null)\n                    result = 0;\n                else if (typeof value1 === 'string' && typeof value2 === 'string')\n                    result = value1.localeCompare(value2, undefined, { numeric: true });\n                else\n                    result = (value1 < value2) ? -1 : (value1 > value2) ? 1 : 0;\n                return -1 * result;\n            });\n            for (let i = 0; i < this.responsiveOptions.length; i++) {\n                let res = this.responsiveOptions[i];\n                innerHTML += `\n                    @media screen and (max-width: ${res.breakpoint}) {\n                        #${this.id} .p-carousel-item {\n                            flex: 1 0 ${(100 / res.numVisible)}%\n                        }\n                    }\n                `;\n            }\n        }\n        this.carouselStyle.innerHTML = innerHTML;\n    }\n    calculatePosition() {\n        if (this.responsiveOptions) {\n            let windowWidth = window.innerWidth;\n            let matchedResponsiveData = {\n                numVisible: this.defaultNumVisible,\n                numScroll: this.defaultNumScroll\n            };\n            for (let i = 0; i < this.responsiveOptions.length; i++) {\n                let res = this.responsiveOptions[i];\n                if (parseInt(res.breakpoint, 10) >= windowWidth) {\n                    matchedResponsiveData = res;\n                }\n            }\n            if (this._numScroll !== matchedResponsiveData.numScroll) {\n                let page = this._page;\n                page = Math.floor((page * this._numScroll) / matchedResponsiveData.numScroll);\n                let totalShiftedItems = (matchedResponsiveData.numScroll * this.page) * -1;\n                if (this.isCircular()) {\n                    totalShiftedItems -= matchedResponsiveData.numVisible;\n                }\n                this.totalShiftedItems = totalShiftedItems;\n                this._numScroll = matchedResponsiveData.numScroll;\n                this._page = page;\n                this.onPage.emit({\n                    page: this.page\n                });\n            }\n            if (this._numVisible !== matchedResponsiveData.numVisible) {\n                this._numVisible = matchedResponsiveData.numVisible;\n                this.setCloneItems();\n            }\n            this.cd.markForCheck();\n        }\n    }\n    setCloneItems() {\n        this.clonedItemsForStarting = [];\n        this.clonedItemsForFinishing = [];\n        if (this.isCircular()) {\n            this.clonedItemsForStarting.push(...this.value.slice(-1 * this._numVisible));\n            this.clonedItemsForFinishing.push(...this.value.slice(0, this._numVisible));\n        }\n    }\n    firstIndex() {\n        return this.isCircular() ? (-1 * (this.totalShiftedItems + this.numVisible)) : (this.totalShiftedItems * -1);\n    }\n    lastIndex() {\n        return this.firstIndex() + this.numVisible - 1;\n    }\n    totalDots() {\n        return this.value ? Math.ceil((this.value.length - this._numVisible) / this._numScroll) + 1 : 0;\n    }\n    totalDotsArray() {\n        const totalDots = this.totalDots();\n        return totalDots <= 0 ? [] : Array(totalDots).fill(0);\n    }\n    isVertical() {\n        return this.orientation === 'vertical';\n    }\n    isCircular() {\n        return this.circular && this.value && this.value.length >= this.numVisible;\n    }\n    isAutoplay() {\n        return this.autoplayInterval && this.allowAutoplay;\n    }\n    isForwardNavDisabled() {\n        return this.isEmpty() || (this._page >= (this.totalDots() - 1) && !this.isCircular());\n    }\n    isBackwardNavDisabled() {\n        return this.isEmpty() || (this._page <= 0 && !this.isCircular());\n    }\n    isEmpty() {\n        return !this.value || this.value.length === 0;\n    }\n    navForward(e, index) {\n        if (this.isCircular() || this._page < (this.totalDots() - 1)) {\n            this.step(-1, index);\n        }\n        if (this.autoplayInterval) {\n            this.stopAutoplay();\n            this.allowAutoplay = false;\n        }\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    navBackward(e, index) {\n        if (this.isCircular() || this._page !== 0) {\n            this.step(1, index);\n        }\n        if (this.autoplayInterval) {\n            this.stopAutoplay();\n            this.allowAutoplay = false;\n        }\n        if (e && e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    onDotClick(e, index) {\n        let page = this._page;\n        if (this.autoplayInterval) {\n            this.stopAutoplay();\n            this.allowAutoplay = false;\n        }\n        if (index > page) {\n            this.navForward(e, index);\n        }\n        else if (index < page) {\n            this.navBackward(e, index);\n        }\n    }\n    step(dir, page) {\n        let totalShiftedItems = this.totalShiftedItems;\n        const isCircular = this.isCircular();\n        if (page != null) {\n            totalShiftedItems = (this._numScroll * page) * -1;\n            if (isCircular) {\n                totalShiftedItems -= this._numVisible;\n            }\n            this.isRemainingItemsAdded = false;\n        }\n        else {\n            totalShiftedItems += (this._numScroll * dir);\n            if (this.isRemainingItemsAdded) {\n                totalShiftedItems += this.remainingItems - (this._numScroll * dir);\n                this.isRemainingItemsAdded = false;\n            }\n            let originalShiftedItems = isCircular ? (totalShiftedItems + this._numVisible) : totalShiftedItems;\n            page = Math.abs(Math.floor((originalShiftedItems / this._numScroll)));\n        }\n        if (isCircular && this.page === (this.totalDots() - 1) && dir === -1) {\n            totalShiftedItems = -1 * (this.value.length + this._numVisible);\n            page = 0;\n        }\n        else if (isCircular && this.page === 0 && dir === 1) {\n            totalShiftedItems = 0;\n            page = (this.totalDots() - 1);\n        }\n        else if (page === (this.totalDots() - 1) && this.remainingItems > 0) {\n            totalShiftedItems += ((this.remainingItems * -1) - (this._numScroll * dir));\n            this.isRemainingItemsAdded = true;\n        }\n        if (this.itemsContainer) {\n            this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n            this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';\n        }\n        this.totalShiftedItems = totalShiftedItems;\n        this._page = page;\n        this.onPage.emit({\n            page: this.page\n        });\n    }\n    startAutoplay() {\n        this.interval = setInterval(() => {\n            if (this.totalDots() > 0) {\n                if (this.page === (this.totalDots() - 1)) {\n                    this.step(-1, 0);\n                }\n                else {\n                    this.step(-1, this.page + 1);\n                }\n            }\n        }, this.autoplayInterval);\n    }\n    stopAutoplay() {\n        if (this.interval) {\n            clearInterval(this.interval);\n        }\n    }\n    onTransitionEnd() {\n        if (this.itemsContainer) {\n            this.itemsContainer.nativeElement.style.transition = '';\n            if ((this.page === 0 || this.page === (this.totalDots() - 1)) && this.isCircular()) {\n                this.itemsContainer.nativeElement.style.transform = this.isVertical() ? `translate3d(0, ${this.totalShiftedItems * (100 / this._numVisible)}%, 0)` : `translate3d(${this.totalShiftedItems * (100 / this._numVisible)}%, 0, 0)`;\n            }\n        }\n    }\n    onTouchStart(e) {\n        let touchobj = e.changedTouches[0];\n        this.startPos = {\n            x: touchobj.pageX,\n            y: touchobj.pageY\n        };\n    }\n    onTouchMove(e) {\n        if (e.cancelable) {\n            e.preventDefault();\n        }\n    }\n    onTouchEnd(e) {\n        let touchobj = e.changedTouches[0];\n        if (this.isVertical()) {\n            this.changePageOnTouch(e, (touchobj.pageY - this.startPos.y));\n        }\n        else {\n            this.changePageOnTouch(e, (touchobj.pageX - this.startPos.x));\n        }\n    }\n    changePageOnTouch(e, diff) {\n        if (Math.abs(diff) > this.swipeThreshold) {\n            if (diff < 0) {\n                this.navForward(e);\n            }\n            else {\n                this.navBackward(e);\n            }\n        }\n    }\n    bindDocumentListeners() {\n        if (!this.documentResizeListener) {\n            this.documentResizeListener = (e) => {\n                this.calculatePosition();\n            };\n            window.addEventListener('resize', this.documentResizeListener);\n        }\n    }\n    unbindDocumentListeners() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n    ngOnDestroy() {\n        if (this.responsiveOptions) {\n            this.unbindDocumentListeners();\n        }\n        if (this.autoplayInterval) {\n            this.stopAutoplay();\n        }\n    }\n}\nCarousel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Carousel, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nCarousel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Carousel, selector: \"p-carousel\", inputs: { page: \"page\", numVisible: \"numVisible\", numScroll: \"numScroll\", responsiveOptions: \"responsiveOptions\", orientation: \"orientation\", verticalViewPortHeight: \"verticalViewPortHeight\", contentClass: \"contentClass\", indicatorsContentClass: \"indicatorsContentClass\", indicatorsContentStyle: \"indicatorsContentStyle\", indicatorStyleClass: \"indicatorStyleClass\", indicatorStyle: \"indicatorStyle\", value: \"value\", circular: \"circular\", showIndicators: \"showIndicators\", showNavigators: \"showNavigators\", autoplayInterval: \"autoplayInterval\", style: \"style\", styleClass: \"styleClass\" }, outputs: { onPage: \"onPage\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"headerFacet\", first: true, predicate: Header, descendants: true }, { propertyName: \"footerFacet\", first: true, predicate: Footer, descendants: true }, { propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"itemsContainer\", first: true, predicate: [\"itemsContainer\"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `\n\t\t<div [attr.id]=\"id\" [ngClass]=\"{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n\t\t\t<div class=\"p-carousel-header\" *ngIf=\"headerFacet || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t\t<div [class]=\"contentClass\" [ngClass]=\"'p-carousel-content'\">\n\t\t\t\t<div class=\"p-carousel-container\">\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}\" [disabled]=\"isBackwardNavDisabled()\" (click)=\"navBackward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div class=\"p-carousel-items-content\" [ngStyle]=\"{'height': isVertical() ? verticalViewPortHeight : 'auto'}\">\n\t\t\t\t\t\t<div #itemsContainer class=\"p-carousel-items-container\" (transitionend)=\"onTransitionEnd()\" (touchend)=\"onTouchEnd($event)\" (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\">\n                            <div *ngFor=\"let item of clonedItemsForStarting; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of value; let index = index\" [ngClass]= \"{'p-carousel-item': true,\n                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),\n\t\t\t\t\t\t\t    'p-carousel-item-start': firstIndex() === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': lastIndex() === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of clonedItemsForFinishing; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}\" [disabled]=\"isForwardNavDisabled()\" (click)=\"navForward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<ul [ngClass]=\"'p-carousel-indicators p-reset'\" [class]=\"indicatorsContentClass\" [ngStyle]=\"indicatorsContentStyle\" *ngIf=\"showIndicators\">\n\t\t\t\t\t<li *ngFor=\"let totalDot of totalDotsArray(); let i = index\" [ngClass]=\"{'p-carousel-indicator':true,'p-highlight': _page === i}\">\n\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"'p-link'\" (click)=\"onDotClick($event, i)\" [class]=\"indicatorStyleClass\" [ngStyle]=\"indicatorStyle\"></button>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"p-carousel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t</div>\n    `, isInline: true, styles: [\".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\\n\"], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.Ripple, selector: \"[pRipple]\" }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Carousel, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-carousel', template: `\n\t\t<div [attr.id]=\"id\" [ngClass]=\"{'p-carousel p-component':true, 'p-carousel-vertical': isVertical(), 'p-carousel-horizontal': !isVertical()}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n\t\t\t<div class=\"p-carousel-header\" *ngIf=\"headerFacet || headerTemplate\">\n                <ng-content select=\"p-header\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t\t<div [class]=\"contentClass\" [ngClass]=\"'p-carousel-content'\">\n\t\t\t\t<div class=\"p-carousel-container\">\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-prev p-link':true, 'p-disabled': isBackwardNavDisabled()}\" [disabled]=\"isBackwardNavDisabled()\" (click)=\"navBackward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-left': !isVertical(), 'pi-chevron-up': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div class=\"p-carousel-items-content\" [ngStyle]=\"{'height': isVertical() ? verticalViewPortHeight : 'auto'}\">\n\t\t\t\t\t\t<div #itemsContainer class=\"p-carousel-items-container\" (transitionend)=\"onTransitionEnd()\" (touchend)=\"onTouchEnd($event)\" (touchstart)=\"onTouchStart($event)\" (touchmove)=\"onTouchMove($event)\">\n                            <div *ngFor=\"let item of clonedItemsForStarting; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': (totalShiftedItems * -1) === (value.length),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForStarting.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of value; let index = index\" [ngClass]= \"{'p-carousel-item': true,\n                                'p-carousel-item-active': (firstIndex() <= index && lastIndex() >= index),\n\t\t\t\t\t\t\t    'p-carousel-item-start': firstIndex() === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': lastIndex() === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n                            <div *ngFor=\"let item of clonedItemsForFinishing; let index = index\" [ngClass]= \"{'p-carousel-item p-carousel-item-cloned': true,\n                                'p-carousel-item-active': ((totalShiftedItems *-1) === numVisible),\n\t\t\t\t\t\t\t    'p-carousel-item-start': 0 === index,\n\t\t\t\t\t\t\t    'p-carousel-item-end': (clonedItemsForFinishing.length - 1) === index}\">\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<button type=\"button\" *ngIf=\"showNavigators\" [ngClass]=\"{'p-carousel-next p-link': true, 'p-disabled': isForwardNavDisabled()}\" [disabled]=\"isForwardNavDisabled()\" (click)=\"navForward($event)\" pRipple>\n\t\t\t\t\t\t<span [ngClass]=\"{'p-carousel-prev-icon pi': true, 'pi-chevron-right': !isVertical(), 'pi-chevron-down': isVertical()}\"></span>\n\t\t\t\t\t</button>\n\t\t\t\t</div>\n\t\t\t\t<ul [ngClass]=\"'p-carousel-indicators p-reset'\" [class]=\"indicatorsContentClass\" [ngStyle]=\"indicatorsContentStyle\" *ngIf=\"showIndicators\">\n\t\t\t\t\t<li *ngFor=\"let totalDot of totalDotsArray(); let i = index\" [ngClass]=\"{'p-carousel-indicator':true,'p-highlight': _page === i}\">\n\t\t\t\t\t\t<button type=\"button\" [ngClass]=\"'p-link'\" (click)=\"onDotClick($event, i)\" [class]=\"indicatorStyleClass\" [ngStyle]=\"indicatorStyle\"></button>\n\t\t\t\t\t</li>\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t\t<div class=\"p-carousel-footer\" *ngIf=\"footerFacet || footerTemplate\">\n                <ng-content select=\"p-footer\"></ng-content>\n                <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n\t\t\t</div>\n\t\t</div>\n    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-carousel{display:flex;flex-direction:column}.p-carousel-content{display:flex;flex-direction:column;overflow:auto}.p-carousel-prev,.p-carousel-next{align-self:center;flex-grow:0;flex-shrink:0;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-carousel-container{display:flex;flex-direction:row}.p-carousel-items-content{overflow:hidden;width:100%}.p-carousel-items-container{display:flex;flex-direction:row}.p-carousel-indicators{display:flex;flex-direction:row;justify-content:center;flex-wrap:wrap}.p-carousel-indicator>button{display:flex;align-items:center;justify-content:center}.p-carousel-vertical .p-carousel-container{flex-direction:column}.p-carousel-vertical .p-carousel-items-container{flex-direction:column;height:100%}.p-items-hidden .p-carousel-item{visibility:hidden}.p-items-hidden .p-carousel-item.p-carousel-item-active{visibility:visible}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { page: [{\n                type: Input\n            }], numVisible: [{\n                type: Input\n            }], numScroll: [{\n                type: Input\n            }], responsiveOptions: [{\n                type: Input\n            }], orientation: [{\n                type: Input\n            }], verticalViewPortHeight: [{\n                type: Input\n            }], contentClass: [{\n                type: Input\n            }], indicatorsContentClass: [{\n                type: Input\n            }], indicatorsContentStyle: [{\n                type: Input\n            }], indicatorStyleClass: [{\n                type: Input\n            }], indicatorStyle: [{\n                type: Input\n            }], value: [{\n                type: Input\n            }], circular: [{\n                type: Input\n            }], showIndicators: [{\n                type: Input\n            }], showNavigators: [{\n                type: Input\n            }], autoplayInterval: [{\n                type: Input\n            }], style: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], onPage: [{\n                type: Output\n            }], itemsContainer: [{\n                type: ViewChild,\n                args: ['itemsContainer']\n            }], headerFacet: [{\n                type: ContentChild,\n                args: [Header]\n            }], footerFacet: [{\n                type: ContentChild,\n                args: [Footer]\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }] } });\nclass CarouselModule {\n}\nCarouselModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CarouselModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCarouselModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CarouselModule, declarations: [Carousel], imports: [CommonModule, SharedModule, RippleModule], exports: [CommonModule, Carousel, SharedModule] });\nCarouselModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CarouselModule, imports: [[CommonModule, SharedModule, RippleModule], CommonModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CarouselModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, SharedModule, RippleModule],\n                    exports: [CommonModule, Carousel, SharedModule],\n                    declarations: [Carousel]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Carousel, CarouselModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/38833365828c81c9921fdec6ff22e7c2.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/38833365828c81c9921fdec6ff22e7c2.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/38833365828c81c9921fdec6ff22e7c2.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Directive, Optional, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport * as i1 from 'primeng/api';\n\nclass Ripple {\n  constructor(el, zone, config) {\n    this.el = el;\n    this.zone = zone;\n    this.config = config;\n  }\n\n  ngAfterViewInit() {\n    if (this.config && this.config.ripple) {\n      this.zone.runOutsideAngular(() => {\n        this.create();\n        this.mouseDownListener = this.onMouseDown.bind(this);\n        this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n      });\n    }\n  }\n\n  onMouseDown(event) {\n    let ink = this.getInk();\n\n    if (!ink || getComputedStyle(ink, null).display === 'none') {\n      return;\n    }\n\n    DomHandler.removeClass(ink, 'p-ink-active');\n\n    if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {\n      let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));\n      ink.style.height = d + 'px';\n      ink.style.width = d + 'px';\n    }\n\n    let offset = DomHandler.getOffset(this.el.nativeElement);\n    let x = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(ink) / 2;\n    let y = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(ink) / 2;\n    ink.style.top = y + 'px';\n    ink.style.left = x + 'px';\n    DomHandler.addClass(ink, 'p-ink-active');\n  }\n\n  getInk() {\n    for (let i = 0; i < this.el.nativeElement.children.length; i++) {\n      if (this.el.nativeElement.children[i].className.indexOf('p-ink') !== -1) {\n        return this.el.nativeElement.children[i];\n      }\n    }\n\n    return null;\n  }\n\n  resetInk() {\n    let ink = this.getInk();\n\n    if (ink) {\n      DomHandler.removeClass(ink, 'p-ink-active');\n    }\n  }\n\n  onAnimationEnd(event) {\n    DomHandler.removeClass(event.currentTarget, 'p-ink-active');\n  }\n\n  create() {\n    let ink = document.createElement('span');\n    ink.className = 'p-ink';\n    this.el.nativeElement.appendChild(ink);\n    this.animationListener = this.onAnimationEnd.bind(this);\n    ink.addEventListener('animationend', this.animationListener);\n  }\n\n  remove() {\n    let ink = this.getInk();\n\n    if (ink) {\n      this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);\n      ink.removeEventListener('animationend', this.animationListener);\n      DomHandler.removeElement(ink);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.config && this.config.ripple) {\n      this.remove();\n    }\n  }\n\n}\n\nRipple.ɵfac = function Ripple_Factory(t) {\n  return new (t || Ripple)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.PrimeNGConfig, 8));\n};\n\nRipple.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: Ripple,\n  selectors: [[\"\", \"pRipple\", \"\"]],\n  hostAttrs: [1, \"p-ripple\", \"p-element\"]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Ripple, [{\n    type: Directive,\n    args: [{\n      selector: '[pRipple]',\n      host: {\n        'class': 'p-ripple p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.NgZone\n    }, {\n      type: i1.PrimeNGConfig,\n      decorators: [{\n        type: Optional\n      }]\n    }];\n  }, null);\n})();\n\nclass RippleModule {}\n\nRippleModule.ɵfac = function RippleModule_Factory(t) {\n  return new (t || RippleModule)();\n};\n\nRippleModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: RippleModule\n});\nRippleModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RippleModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule],\n      exports: [Ripple],\n      declarations: [Ripple]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Ripple, RippleModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-ripple.mjs"],"names":["i0","Directive","Optional","NgModule","CommonModule","DomHandler","i1","Ripple","constructor","el","zone","config","ngAfterViewInit","ripple","runOutsideAngular","create","mouseDownListener","onMouseDown","bind","nativeElement","addEventListener","event","ink","getInk","getComputedStyle","display","removeClass","getHeight","getWidth","d","Math","max","getOuterWidth","getOuterHeight","style","height","width","offset","getOffset","x","pageX","left","document","body","scrollTop","y","pageY","top","scrollLeft","addClass","i","children","length","className","indexOf","resetInk","onAnimationEnd","currentTarget","createElement","appendChild","animationListener","remove","removeEventListener","removeElement","ngOnDestroy","ɵfac","ElementRef","NgZone","PrimeNGConfig","ɵdir","type","args","selector","host","decorators","RippleModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { Directive, Optional, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from 'primeng/dom';\nimport * as i1 from 'primeng/api';\n\nclass Ripple {\n    constructor(el, zone, config) {\n        this.el = el;\n        this.zone = zone;\n        this.config = config;\n    }\n    ngAfterViewInit() {\n        if (this.config && this.config.ripple) {\n            this.zone.runOutsideAngular(() => {\n                this.create();\n                this.mouseDownListener = this.onMouseDown.bind(this);\n                this.el.nativeElement.addEventListener('mousedown', this.mouseDownListener);\n            });\n        }\n    }\n    onMouseDown(event) {\n        let ink = this.getInk();\n        if (!ink || getComputedStyle(ink, null).display === 'none') {\n            return;\n        }\n        DomHandler.removeClass(ink, 'p-ink-active');\n        if (!DomHandler.getHeight(ink) && !DomHandler.getWidth(ink)) {\n            let d = Math.max(DomHandler.getOuterWidth(this.el.nativeElement), DomHandler.getOuterHeight(this.el.nativeElement));\n            ink.style.height = d + 'px';\n            ink.style.width = d + 'px';\n        }\n        let offset = DomHandler.getOffset(this.el.nativeElement);\n        let x = event.pageX - offset.left + document.body.scrollTop - DomHandler.getWidth(ink) / 2;\n        let y = event.pageY - offset.top + document.body.scrollLeft - DomHandler.getHeight(ink) / 2;\n        ink.style.top = y + 'px';\n        ink.style.left = x + 'px';\n        DomHandler.addClass(ink, 'p-ink-active');\n    }\n    getInk() {\n        for (let i = 0; i < this.el.nativeElement.children.length; i++) {\n            if (this.el.nativeElement.children[i].className.indexOf('p-ink') !== -1) {\n                return this.el.nativeElement.children[i];\n            }\n        }\n        return null;\n    }\n    resetInk() {\n        let ink = this.getInk();\n        if (ink) {\n            DomHandler.removeClass(ink, 'p-ink-active');\n        }\n    }\n    onAnimationEnd(event) {\n        DomHandler.removeClass(event.currentTarget, 'p-ink-active');\n    }\n    create() {\n        let ink = document.createElement('span');\n        ink.className = 'p-ink';\n        this.el.nativeElement.appendChild(ink);\n        this.animationListener = this.onAnimationEnd.bind(this);\n        ink.addEventListener('animationend', this.animationListener);\n    }\n    remove() {\n        let ink = this.getInk();\n        if (ink) {\n            this.el.nativeElement.removeEventListener('mousedown', this.mouseDownListener);\n            ink.removeEventListener('animationend', this.animationListener);\n            DomHandler.removeElement(ink);\n        }\n    }\n    ngOnDestroy() {\n        if (this.config && this.config.ripple) {\n            this.remove();\n        }\n    }\n}\nRipple.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Ripple, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nRipple.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Ripple, selector: \"[pRipple]\", host: { classAttribute: \"p-ripple p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Ripple, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[pRipple]',\n                    host: {\n                        'class': 'p-ripple p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig, decorators: [{\n                    type: Optional\n                }] }]; } });\nclass RippleModule {\n}\nRippleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nRippleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RippleModule, declarations: [Ripple], imports: [CommonModule], exports: [Ripple] });\nRippleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RippleModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: RippleModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule],\n                    exports: [Ripple],\n                    declarations: [Ripple]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Ripple, RippleModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/3f8c382f484779be8439cb9251cd2a55.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/3f8c382f484779be8439cb9251cd2a55.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/3f8c382f484779be8439cb9251cd2a55.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\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/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\n\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n  providedIn: 'root',\n  factory: DIR_DOCUMENT_FACTORY\n});\n/** @docs-private */\n\nfunction DIR_DOCUMENT_FACTORY() {\n  return inject(DOCUMENT);\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/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\n\n\nclass Directionality {\n  constructor(_document) {\n    /** The current 'ltr' or 'rtl' value. */\n    this.value = 'ltr';\n    /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n\n    this.change = new EventEmitter();\n\n    if (_document) {\n      // TODO: handle 'auto' value -\n      // We still need to account for dir=\"auto\".\n      // It looks like HTMLElemenet.dir is also \"auto\" when that's set to the attribute,\n      // but getComputedStyle return either \"ltr\" or \"rtl\". avoiding getComputedStyle for now\n      const bodyDir = _document.body ? _document.body.dir : null;\n      const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n      const value = bodyDir || htmlDir;\n      this.value = value === 'ltr' || value === 'rtl' ? value : 'ltr';\n    }\n  }\n\n  ngOnDestroy() {\n    this.change.complete();\n  }\n\n}\n\nDirectionality.ɵfac = function Directionality_Factory(t) {\n  return new (t || Directionality)(i0.ɵɵinject(DIR_DOCUMENT, 8));\n};\n\nDirectionality.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: Directionality,\n  factory: Directionality.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Directionality, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [DIR_DOCUMENT]\n      }]\n    }];\n  }, null);\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/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\n\n\nclass Dir {\n  constructor() {\n    /** Normalized direction that accounts for invalid/unsupported values. */\n    this._dir = 'ltr';\n    /** Whether the `value` has been set to its initial value. */\n\n    this._isInitialized = false;\n    /** Event emitted when the direction changes. */\n\n    this.change = new EventEmitter();\n  }\n  /** @docs-private */\n\n\n  get dir() {\n    return this._dir;\n  }\n\n  set dir(value) {\n    const old = this._dir;\n    const normalizedValue = value ? value.toLowerCase() : value;\n    this._rawDir = value;\n    this._dir = normalizedValue === 'ltr' || normalizedValue === 'rtl' ? normalizedValue : 'ltr';\n\n    if (old !== this._dir && this._isInitialized) {\n      this.change.emit(this._dir);\n    }\n  }\n  /** Current layout direction of the element. */\n\n\n  get value() {\n    return this.dir;\n  }\n  /** Initialize once default value has been set. */\n\n\n  ngAfterContentInit() {\n    this._isInitialized = true;\n  }\n\n  ngOnDestroy() {\n    this.change.complete();\n  }\n\n}\n\nDir.ɵfac = function Dir_Factory(t) {\n  return new (t || Dir)();\n};\n\nDir.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: Dir,\n  selectors: [[\"\", \"dir\", \"\"]],\n  hostVars: 1,\n  hostBindings: function Dir_HostBindings(rf, ctx) {\n    if (rf & 2) {\n      i0.ɵɵattribute(\"dir\", ctx._rawDir);\n    }\n  },\n  inputs: {\n    dir: \"dir\"\n  },\n  outputs: {\n    change: \"dirChange\"\n  },\n  exportAs: [\"dir\"],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: Directionality,\n    useExisting: Dir\n  }])]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Dir, [{\n    type: Directive,\n    args: [{\n      selector: '[dir]',\n      providers: [{\n        provide: Directionality,\n        useExisting: Dir\n      }],\n      host: {\n        '[attr.dir]': '_rawDir'\n      },\n      exportAs: 'dir'\n    }]\n  }], null, {\n    change: [{\n      type: Output,\n      args: ['dirChange']\n    }],\n    dir: [{\n      type: Input\n    }]\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\nclass BidiModule {}\n\nBidiModule.ɵfac = function BidiModule_Factory(t) {\n  return new (t || BidiModule)();\n};\n\nBidiModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: BidiModule\n});\nBidiModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(BidiModule, [{\n    type: NgModule,\n    args: [{\n      exports: [Dir],\n      declarations: [Dir]\n    }]\n  }], null, null);\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/bidi.mjs"],"names":["i0","InjectionToken","inject","EventEmitter","Injectable","Optional","Inject","Directive","Output","Input","NgModule","DOCUMENT","DIR_DOCUMENT","providedIn","factory","DIR_DOCUMENT_FACTORY","Directionality","constructor","_document","value","change","bodyDir","body","dir","htmlDir","documentElement","ngOnDestroy","complete","ɵfac","ɵprov","type","args","undefined","decorators","Dir","_dir","_isInitialized","old","normalizedValue","toLowerCase","_rawDir","emit","ngAfterContentInit","ɵdir","provide","useExisting","selector","providers","host","exportAs","BidiModule","ɵmod","ɵinj","exports","declarations"],"mappings":"AAAA,OAAO,KAAKA,EAAZ,MAAoB,eAApB;AACA,SAASC,cAAT,EAAyBC,MAAzB,EAAiCC,YAAjC,EAA+CC,UAA/C,EAA2DC,QAA3D,EAAqEC,MAArE,EAA6EC,SAA7E,EAAwFC,MAAxF,EAAgGC,KAAhG,EAAuGC,QAAvG,QAAuH,eAAvH;AACA,SAASC,QAAT,QAAyB,iBAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,YAAY,GAAG,IAAIX,cAAJ,CAAmB,aAAnB,EAAkC;AACnDY,EAAAA,UAAU,EAAE,MADuC;AAEnDC,EAAAA,OAAO,EAAEC;AAF0C,CAAlC,CAArB;AAIA;;AACA,SAASA,oBAAT,GAAgC;AAC5B,SAAOb,MAAM,CAACS,QAAD,CAAb;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;;AACA,MAAMK,cAAN,CAAqB;AACjBC,EAAAA,WAAW,CAACC,SAAD,EAAY;AACnB;AACA,SAAKC,KAAL,GAAa,KAAb;AACA;;AACA,SAAKC,MAAL,GAAc,IAAIjB,YAAJ,EAAd;;AACA,QAAIe,SAAJ,EAAe;AACX;AACA;AACA;AACA;AACA,YAAMG,OAAO,GAAGH,SAAS,CAACI,IAAV,GAAiBJ,SAAS,CAACI,IAAV,CAAeC,GAAhC,GAAsC,IAAtD;AACA,YAAMC,OAAO,GAAGN,SAAS,CAACO,eAAV,GAA4BP,SAAS,CAACO,eAAV,CAA0BF,GAAtD,GAA4D,IAA5E;AACA,YAAMJ,KAAK,GAAGE,OAAO,IAAIG,OAAzB;AACA,WAAKL,KAAL,GAAaA,KAAK,KAAK,KAAV,IAAmBA,KAAK,KAAK,KAA7B,GAAqCA,KAArC,GAA6C,KAA1D;AACH;AACJ;;AACDO,EAAAA,WAAW,GAAG;AACV,SAAKN,MAAL,CAAYO,QAAZ;AACH;;AAnBgB;;AAqBrBX,cAAc,CAACY,IAAf;AAAA,mBAA2GZ,cAA3G,EAAiGhB,EAAjG,UAA2IY,YAA3I;AAAA;;AACAI,cAAc,CAACa,KAAf,kBADiG7B,EACjG;AAAA,SAA+GgB,cAA/G;AAAA,WAA+GA,cAA/G;AAAA,cAA2I;AAA3I;;AACA;AAAA,qDAFiGhB,EAEjG,mBAA2FgB,cAA3F,EAAuH,CAAC;AAC5Gc,IAAAA,IAAI,EAAE1B,UADsG;AAE5G2B,IAAAA,IAAI,EAAE,CAAC;AAAElB,MAAAA,UAAU,EAAE;AAAd,KAAD;AAFsG,GAAD,CAAvH,EAG4B,YAAY;AAAE,WAAO,CAAC;AAAEiB,MAAAA,IAAI,EAAEE,SAAR;AAAmBC,MAAAA,UAAU,EAAE,CAAC;AAC9DH,QAAAA,IAAI,EAAEzB;AADwD,OAAD,EAE9D;AACCyB,QAAAA,IAAI,EAAExB,MADP;AAECyB,QAAAA,IAAI,EAAE,CAACnB,YAAD;AAFP,OAF8D;AAA/B,KAAD,CAAP;AAKlB,GARxB;AAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMsB,GAAN,CAAU;AACNjB,EAAAA,WAAW,GAAG;AACV;AACA,SAAKkB,IAAL,GAAY,KAAZ;AACA;;AACA,SAAKC,cAAL,GAAsB,KAAtB;AACA;;AACA,SAAKhB,MAAL,GAAc,IAAIjB,YAAJ,EAAd;AACH;AACD;;;AACO,MAAHoB,GAAG,GAAG;AACN,WAAO,KAAKY,IAAZ;AACH;;AACM,MAAHZ,GAAG,CAACJ,KAAD,EAAQ;AACX,UAAMkB,GAAG,GAAG,KAAKF,IAAjB;AACA,UAAMG,eAAe,GAAGnB,KAAK,GAAGA,KAAK,CAACoB,WAAN,EAAH,GAAyBpB,KAAtD;AACA,SAAKqB,OAAL,GAAerB,KAAf;AACA,SAAKgB,IAAL,GAAYG,eAAe,KAAK,KAApB,IAA6BA,eAAe,KAAK,KAAjD,GAAyDA,eAAzD,GAA2E,KAAvF;;AACA,QAAID,GAAG,KAAK,KAAKF,IAAb,IAAqB,KAAKC,cAA9B,EAA8C;AAC1C,WAAKhB,MAAL,CAAYqB,IAAZ,CAAiB,KAAKN,IAAtB;AACH;AACJ;AACD;;;AACS,MAALhB,KAAK,GAAG;AACR,WAAO,KAAKI,GAAZ;AACH;AACD;;;AACAmB,EAAAA,kBAAkB,GAAG;AACjB,SAAKN,cAAL,GAAsB,IAAtB;AACH;;AACDV,EAAAA,WAAW,GAAG;AACV,SAAKN,MAAL,CAAYO,QAAZ;AACH;;AAhCK;;AAkCVO,GAAG,CAACN,IAAJ;AAAA,mBAAgGM,GAAhG;AAAA;;AACAA,GAAG,CAACS,IAAJ,kBA5DiG3C,EA4DjG;AAAA,QAAoFkC,GAApF;AAAA;AAAA;AAAA;AAAA;AA5DiGlC,MAAAA,EA4DjG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aA5DiGA,EA4DjG,oBAAkO,CAAC;AAAE4C,IAAAA,OAAO,EAAE5B,cAAX;AAA2B6B,IAAAA,WAAW,EAAEX;AAAxC,GAAD,CAAlO;AAAA;;AACA;AAAA,qDA7DiGlC,EA6DjG,mBAA2FkC,GAA3F,EAA4G,CAAC;AACjGJ,IAAAA,IAAI,EAAEvB,SAD2F;AAEjGwB,IAAAA,IAAI,EAAE,CAAC;AACCe,MAAAA,QAAQ,EAAE,OADX;AAECC,MAAAA,SAAS,EAAE,CAAC;AAAEH,QAAAA,OAAO,EAAE5B,cAAX;AAA2B6B,QAAAA,WAAW,EAAEX;AAAxC,OAAD,CAFZ;AAGCc,MAAAA,IAAI,EAAE;AAAE,sBAAc;AAAhB,OAHP;AAICC,MAAAA,QAAQ,EAAE;AAJX,KAAD;AAF2F,GAAD,CAA5G,QAQ4B;AAAE7B,IAAAA,MAAM,EAAE,CAAC;AACvBU,MAAAA,IAAI,EAAEtB,MADiB;AAEvBuB,MAAAA,IAAI,EAAE,CAAC,WAAD;AAFiB,KAAD,CAAV;AAGZR,IAAAA,GAAG,EAAE,CAAC;AACNO,MAAAA,IAAI,EAAErB;AADA,KAAD;AAHO,GAR5B;AAAA;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMyC,UAAN,CAAiB;;AAEjBA,UAAU,CAACtB,IAAX;AAAA,mBAAuGsB,UAAvG;AAAA;;AACAA,UAAU,CAACC,IAAX,kBAtFiGnD,EAsFjG;AAAA,QAAwGkD;AAAxG;AACAA,UAAU,CAACE,IAAX,kBAvFiGpD,EAuFjG;;AACA;AAAA,qDAxFiGA,EAwFjG,mBAA2FkD,UAA3F,EAAmH,CAAC;AACxGpB,IAAAA,IAAI,EAAEpB,QADkG;AAExGqB,IAAAA,IAAI,EAAE,CAAC;AACCsB,MAAAA,OAAO,EAAE,CAACnB,GAAD,CADV;AAECoB,MAAAA,YAAY,EAAE,CAACpB,GAAD;AAFf,KAAD;AAFkG,GAAD,CAAnH;AAAA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAEA,SAASgB,UAAT,EAAqBtC,YAArB,EAAmCsB,GAAnC,EAAwClB,cAAxC","sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\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 * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n    providedIn: 'root',\n    factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n    return inject(DOCUMENT);\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 * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n    constructor(_document) {\n        /** The current 'ltr' or 'rtl' value. */\n        this.value = 'ltr';\n        /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n        this.change = new EventEmitter();\n        if (_document) {\n            // TODO: handle 'auto' value -\n            // We still need to account for dir=\"auto\".\n            // It looks like HTMLElemenet.dir is also \"auto\" when that's set to the attribute,\n            // but getComputedStyle return either \"ltr\" or \"rtl\". avoiding getComputedStyle for now\n            const bodyDir = _document.body ? _document.body.dir : null;\n            const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n            const value = bodyDir || htmlDir;\n            this.value = value === 'ltr' || value === 'rtl' ? value : 'ltr';\n        }\n    }\n    ngOnDestroy() {\n        this.change.complete();\n    }\n}\nDirectionality.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Directionality, deps: [{ token: DIR_DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nDirectionality.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Directionality, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Directionality, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [DIR_DOCUMENT]\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 * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n    constructor() {\n        /** Normalized direction that accounts for invalid/unsupported values. */\n        this._dir = 'ltr';\n        /** Whether the `value` has been set to its initial value. */\n        this._isInitialized = false;\n        /** Event emitted when the direction changes. */\n        this.change = new EventEmitter();\n    }\n    /** @docs-private */\n    get dir() {\n        return this._dir;\n    }\n    set dir(value) {\n        const old = this._dir;\n        const normalizedValue = value ? value.toLowerCase() : value;\n        this._rawDir = value;\n        this._dir = normalizedValue === 'ltr' || normalizedValue === 'rtl' ? normalizedValue : 'ltr';\n        if (old !== this._dir && this._isInitialized) {\n            this.change.emit(this._dir);\n        }\n    }\n    /** Current layout direction of the element. */\n    get value() {\n        return this.dir;\n    }\n    /** Initialize once default value has been set. */\n    ngAfterContentInit() {\n        this._isInitialized = true;\n    }\n    ngOnDestroy() {\n        this.change.complete();\n    }\n}\nDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: Dir, selector: \"[dir]\", inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, host: { properties: { \"attr.dir\": \"_rawDir\" } }, providers: [{ provide: Directionality, useExisting: Dir }], exportAs: [\"dir\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Dir, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[dir]',\n                    providers: [{ provide: Directionality, useExisting: Dir }],\n                    host: { '[attr.dir]': '_rawDir' },\n                    exportAs: 'dir',\n                }]\n        }], propDecorators: { change: [{\n                type: Output,\n                args: ['dirChange']\n            }], dir: [{\n                type: Input\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 */\nclass BidiModule {\n}\nBidiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBidiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule, declarations: [Dir], exports: [Dir] });\nBidiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    exports: [Dir],\n                    declarations: [Dir],\n                }]\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/47810ec49506fc071b263995f40cdbb6.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/47810ec49506fc071b263995f40cdbb6.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/47810ec49506fc071b263995f40cdbb6.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { Header, PrimeTemplate, SharedModule } from 'primeng/api';\n\nfunction AccordionTab_span_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 9);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate1(\" \", ctx_r0.header, \" \");\n  }\n}\n\nfunction AccordionTab_ng_container_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction AccordionTab_ng_content_6_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵprojection(0, 1, [\"*ngIf\", \"hasHeaderFacet\"]);\n  }\n}\n\nfunction AccordionTab_ng_container_10_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction AccordionTab_ng_container_10_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, AccordionTab_ng_container_10_ng_container_1_Template, 1, 0, \"ng-container\", 5);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.contentTemplate);\n  }\n}\n\nconst _c0 = [\"*\", [[\"p-header\"]]];\n\nconst _c1 = function (a0) {\n  return {\n    \"p-accordion-tab-active\": a0\n  };\n};\n\nconst _c2 = function (a0, a1) {\n  return {\n    \"p-highlight\": a0,\n    \"p-disabled\": a1\n  };\n};\n\nconst _c3 = function (a0) {\n  return {\n    transitionParams: a0\n  };\n};\n\nconst _c4 = function (a1) {\n  return {\n    value: \"visible\",\n    params: a1\n  };\n};\n\nconst _c5 = function (a1) {\n  return {\n    value: \"hidden\",\n    params: a1\n  };\n};\n\nconst _c6 = [\"*\", \"p-header\"];\nconst _c7 = [\"*\"];\nlet idx = 0;\n\nclass AccordionTab {\n  constructor(accordion, changeDetector) {\n    this.changeDetector = changeDetector;\n    this.cache = true;\n    this.selectedChange = new EventEmitter();\n    this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n    this.id = `p-accordiontab-${idx++}`;\n    this.accordion = accordion;\n  }\n\n  get selected() {\n    return this._selected;\n  }\n\n  set selected(val) {\n    this._selected = val;\n\n    if (!this.loaded) {\n      if (this._selected && this.cache) {\n        this.loaded = true;\n      }\n\n      this.changeDetector.detectChanges();\n    }\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'content':\n          this.contentTemplate = item.template;\n          break;\n\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        default:\n          this.contentTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  toggle(event) {\n    if (this.disabled) {\n      return false;\n    }\n\n    let index = this.findTabIndex();\n\n    if (this.selected) {\n      this.selected = false;\n      this.accordion.onClose.emit({\n        originalEvent: event,\n        index: index\n      });\n    } else {\n      if (!this.accordion.multiple) {\n        for (var i = 0; i < this.accordion.tabs.length; i++) {\n          this.accordion.tabs[i].selected = false;\n          this.accordion.tabs[i].selectedChange.emit(false);\n          this.accordion.tabs[i].changeDetector.markForCheck();\n        }\n      }\n\n      this.selected = true;\n      this.loaded = true;\n      this.accordion.onOpen.emit({\n        originalEvent: event,\n        index: index\n      });\n    }\n\n    this.selectedChange.emit(this.selected);\n    this.accordion.updateActiveIndex();\n    this.changeDetector.markForCheck();\n    event.preventDefault();\n  }\n\n  findTabIndex() {\n    let index = -1;\n\n    for (var i = 0; i < this.accordion.tabs.length; i++) {\n      if (this.accordion.tabs[i] == this) {\n        index = i;\n        break;\n      }\n    }\n\n    return index;\n  }\n\n  get hasHeaderFacet() {\n    return this.headerFacet && this.headerFacet.length > 0;\n  }\n\n  onKeydown(event) {\n    if (event.which === 32 || event.which === 13) {\n      this.toggle(event);\n      event.preventDefault();\n    }\n  }\n\n  ngOnDestroy() {\n    this.accordion.tabs.splice(this.findTabIndex(), 1);\n  }\n\n}\n\nAccordionTab.ɵfac = function AccordionTab_Factory(t) {\n  return new (t || AccordionTab)(i0.ɵɵdirectiveInject(forwardRef(() => Accordion)), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nAccordionTab.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: AccordionTab,\n  selectors: [[\"p-accordionTab\"]],\n  contentQueries: function AccordionTab_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, Header, 4);\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.headerFacet = _t);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    header: \"header\",\n    disabled: \"disabled\",\n    cache: \"cache\",\n    transitionOptions: \"transitionOptions\",\n    selected: \"selected\"\n  },\n  outputs: {\n    selectedChange: \"selectedChange\"\n  },\n  ngContentSelectors: _c6,\n  decls: 11,\n  vars: 28,\n  consts: [[1, \"p-accordion-tab\", 3, \"ngClass\"], [1, \"p-accordion-header\", 3, \"ngClass\"], [\"role\", \"tab\", 1, \"p-accordion-header-link\", 3, \"click\", \"keydown\"], [1, \"p-accordion-toggle-icon\", 3, \"ngClass\"], [\"class\", \"p-accordion-header-text\", 4, \"ngIf\"], [4, \"ngTemplateOutlet\"], [4, \"ngIf\"], [\"role\", \"region\", 1, \"p-toggleable-content\"], [1, \"p-accordion-content\"], [1, \"p-accordion-header-text\"]],\n  template: function AccordionTab_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef(_c0);\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵelementStart(1, \"div\", 1);\n      i0.ɵɵelementStart(2, \"a\", 2);\n      i0.ɵɵlistener(\"click\", function AccordionTab_Template_a_click_2_listener($event) {\n        return ctx.toggle($event);\n      })(\"keydown\", function AccordionTab_Template_a_keydown_2_listener($event) {\n        return ctx.onKeydown($event);\n      });\n      i0.ɵɵelement(3, \"span\", 3);\n      i0.ɵɵtemplate(4, AccordionTab_span_4_Template, 2, 1, \"span\", 4);\n      i0.ɵɵtemplate(5, AccordionTab_ng_container_5_Template, 1, 0, \"ng-container\", 5);\n      i0.ɵɵtemplate(6, AccordionTab_ng_content_6_Template, 1, 0, \"ng-content\", 6);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(7, \"div\", 7);\n      i0.ɵɵelementStart(8, \"div\", 8);\n      i0.ɵɵprojection(9);\n      i0.ɵɵtemplate(10, AccordionTab_ng_container_10_Template, 2, 1, \"ng-container\", 6);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(15, _c1, ctx.selected));\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(17, _c2, ctx.selected, ctx.disabled));\n      i0.ɵɵadvance(1);\n      i0.ɵɵattribute(\"tabindex\", ctx.disabled ? null : 0)(\"id\", ctx.id)(\"aria-controls\", ctx.id + \"-content\")(\"aria-expanded\", ctx.selected);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngClass\", ctx.selected ? ctx.accordion.collapseIcon : ctx.accordion.expandIcon);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", !ctx.hasHeaderFacet);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.headerTemplate);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.hasHeaderFacet);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"@tabContent\", ctx.selected ? i0.ɵɵpureFunction1(22, _c4, i0.ɵɵpureFunction1(20, _c3, ctx.transitionOptions)) : i0.ɵɵpureFunction1(26, _c5, i0.ɵɵpureFunction1(24, _c3, ctx.transitionOptions)));\n      i0.ɵɵattribute(\"id\", ctx.id + \"-content\")(\"aria-hidden\", !ctx.selected)(\"aria-labelledby\", ctx.id);\n      i0.ɵɵadvance(3);\n      i0.ɵɵproperty(\"ngIf\", ctx.contentTemplate && (ctx.cache ? ctx.loaded : ctx.selected));\n    }\n  },\n  directives: [i1.NgClass, i1.NgIf, i1.NgTemplateOutlet],\n  styles: [\".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\\n\"],\n  encapsulation: 2,\n  data: {\n    animation: [trigger('tabContent', [state('hidden', style({\n      height: '0',\n      overflow: 'hidden'\n    })), state('visible', style({\n      height: '*'\n    })), transition('visible <=> hidden', [style({\n      overflow: 'hidden'\n    }), animate('{{transitionParams}}')]), transition('void => *', animate(0))])]\n  },\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AccordionTab, [{\n    type: Component,\n    args: [{\n      selector: 'p-accordionTab',\n      template: `\n        <div class=\"p-accordion-tab\" [ngClass]=\"{'p-accordion-tab-active': selected}\">\n            <div class=\"p-accordion-header\" [ngClass]=\"{'p-highlight': selected, 'p-disabled': disabled}\">\n                <a role=\"tab\" class=\"p-accordion-header-link\" (click)=\"toggle($event)\" (keydown)=\"onKeydown($event)\" [attr.tabindex]=\"disabled ? null : 0\"\n                    [attr.id]=\"id\" [attr.aria-controls]=\"id + '-content'\" [attr.aria-expanded]=\"selected\">\n                    <span class=\"p-accordion-toggle-icon\" [ngClass]=\"selected ? accordion.collapseIcon : accordion.expandIcon\"></span>\n                    <span class=\"p-accordion-header-text\" *ngIf=\"!hasHeaderFacet\">\n                        {{header}}\n                    </span>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <ng-content select=\"p-header\" *ngIf=\"hasHeaderFacet\"></ng-content>\n                </a>\n            </div>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@tabContent]=\"selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}\"\n                role=\"region\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id\">\n                <div class=\"p-accordion-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n    `,\n      animations: [trigger('tabContent', [state('hidden', style({\n        height: '0',\n        overflow: 'hidden'\n      })), state('visible', style({\n        height: '*'\n      })), transition('visible <=> hidden', [style({\n        overflow: 'hidden'\n      }), animate('{{transitionParams}}')]), transition('void => *', animate(0))])],\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [forwardRef(() => Accordion)]\n      }]\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    header: [{\n      type: Input\n    }],\n    disabled: [{\n      type: Input\n    }],\n    cache: [{\n      type: Input\n    }],\n    selectedChange: [{\n      type: Output\n    }],\n    transitionOptions: [{\n      type: Input\n    }],\n    headerFacet: [{\n      type: ContentChildren,\n      args: [Header]\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }],\n    selected: [{\n      type: Input\n    }]\n  });\n})();\n\nclass Accordion {\n  constructor(el, changeDetector) {\n    this.el = el;\n    this.changeDetector = changeDetector;\n    this.onClose = new EventEmitter();\n    this.onOpen = new EventEmitter();\n    this.expandIcon = 'pi pi-fw pi-chevron-right';\n    this.collapseIcon = 'pi pi-fw pi-chevron-down';\n    this.activeIndexChange = new EventEmitter();\n    this.tabs = [];\n  }\n\n  ngAfterContentInit() {\n    this.initTabs();\n    this.tabListSubscription = this.tabList.changes.subscribe(_ => {\n      this.initTabs();\n    });\n  }\n\n  initTabs() {\n    this.tabs = this.tabList.toArray();\n    this.updateSelectionState();\n    this.changeDetector.markForCheck();\n  }\n\n  getBlockableElement() {\n    return this.el.nativeElement.children[0];\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(val) {\n    this._activeIndex = val;\n\n    if (this.preventActiveIndexPropagation) {\n      this.preventActiveIndexPropagation = false;\n      return;\n    }\n\n    this.updateSelectionState();\n  }\n\n  updateSelectionState() {\n    if (this.tabs && this.tabs.length && this._activeIndex != null) {\n      for (let i = 0; i < this.tabs.length; i++) {\n        let selected = this.multiple ? this._activeIndex.includes(i) : i === this._activeIndex;\n        let changed = selected !== this.tabs[i].selected;\n\n        if (changed) {\n          this.tabs[i].selected = selected;\n          this.tabs[i].selectedChange.emit(selected);\n          this.tabs[i].changeDetector.markForCheck();\n        }\n      }\n    }\n  }\n\n  updateActiveIndex() {\n    let index = this.multiple ? [] : null;\n    this.tabs.forEach((tab, i) => {\n      if (tab.selected) {\n        if (this.multiple) {\n          index.push(i);\n        } else {\n          index = i;\n          return;\n        }\n      }\n    });\n    this.preventActiveIndexPropagation = true;\n    this.activeIndexChange.emit(index);\n  }\n\n  ngOnDestroy() {\n    if (this.tabListSubscription) {\n      this.tabListSubscription.unsubscribe();\n    }\n  }\n\n}\n\nAccordion.ɵfac = function Accordion_Factory(t) {\n  return new (t || Accordion)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nAccordion.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Accordion,\n  selectors: [[\"p-accordion\"]],\n  contentQueries: function Accordion_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, AccordionTab, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabList = _t);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    multiple: \"multiple\",\n    style: \"style\",\n    styleClass: \"styleClass\",\n    expandIcon: \"expandIcon\",\n    collapseIcon: \"collapseIcon\",\n    activeIndex: \"activeIndex\"\n  },\n  outputs: {\n    onClose: \"onClose\",\n    onOpen: \"onOpen\",\n    activeIndexChange: \"activeIndexChange\"\n  },\n  ngContentSelectors: _c7,\n  decls: 2,\n  vars: 4,\n  consts: [[\"role\", \"tablist\", 3, \"ngClass\", \"ngStyle\"]],\n  template: function Accordion_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵprojection(1);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngClass\", \"p-accordion p-component\")(\"ngStyle\", ctx.style);\n    }\n  },\n  directives: [i1.NgClass, i1.NgStyle],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Accordion, [{\n    type: Component,\n    args: [{\n      selector: 'p-accordion',\n      template: `\n        <div [ngClass]=\"'p-accordion p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"tablist\">\n            <ng-content></ng-content>\n        </div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    multiple: [{\n      type: Input\n    }],\n    onClose: [{\n      type: Output\n    }],\n    onOpen: [{\n      type: Output\n    }],\n    style: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    expandIcon: [{\n      type: Input\n    }],\n    collapseIcon: [{\n      type: Input\n    }],\n    activeIndexChange: [{\n      type: Output\n    }],\n    tabList: [{\n      type: ContentChildren,\n      args: [AccordionTab]\n    }],\n    activeIndex: [{\n      type: Input\n    }]\n  });\n})();\n\nclass AccordionModule {}\n\nAccordionModule.ɵfac = function AccordionModule_Factory(t) {\n  return new (t || AccordionModule)();\n};\n\nAccordionModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: AccordionModule\n});\nAccordionModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule], SharedModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AccordionModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule],\n      exports: [Accordion, AccordionTab, SharedModule],\n      declarations: [Accordion, AccordionTab]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Accordion, AccordionModule, AccordionTab };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-accordion.mjs"],"names":["i0","EventEmitter","forwardRef","Component","ChangeDetectionStrategy","ViewEncapsulation","Inject","Input","Output","ContentChildren","NgModule","trigger","state","style","transition","animate","i1","CommonModule","Header","PrimeTemplate","SharedModule","idx","AccordionTab","constructor","accordion","changeDetector","cache","selectedChange","transitionOptions","id","selected","_selected","val","loaded","detectChanges","ngAfterContentInit","templates","forEach","item","getType","contentTemplate","template","headerTemplate","toggle","event","disabled","index","findTabIndex","onClose","emit","originalEvent","multiple","i","tabs","length","markForCheck","onOpen","updateActiveIndex","preventDefault","hasHeaderFacet","headerFacet","onKeydown","which","ngOnDestroy","splice","ɵfac","Accordion","ChangeDetectorRef","ɵcmp","NgClass","NgIf","NgTemplateOutlet","height","overflow","type","args","selector","animations","changeDetection","OnPush","encapsulation","None","host","styles","undefined","decorators","header","el","expandIcon","collapseIcon","activeIndexChange","initTabs","tabListSubscription","tabList","changes","subscribe","_","toArray","updateSelectionState","getBlockableElement","nativeElement","children","activeIndex","_activeIndex","preventActiveIndexPropagation","includes","changed","tab","push","unsubscribe","ElementRef","NgStyle","styleClass","AccordionModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, Input, Output, ContentChildren, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { Header, PrimeTemplate, SharedModule } from 'primeng/api';\n\nlet idx = 0;\nclass AccordionTab {\n    constructor(accordion, changeDetector) {\n        this.changeDetector = changeDetector;\n        this.cache = true;\n        this.selectedChange = new EventEmitter();\n        this.transitionOptions = '400ms cubic-bezier(0.86, 0, 0.07, 1)';\n        this.id = `p-accordiontab-${idx++}`;\n        this.accordion = accordion;\n    }\n    get selected() {\n        return this._selected;\n    }\n    set selected(val) {\n        this._selected = val;\n        if (!this.loaded) {\n            if (this._selected && this.cache) {\n                this.loaded = true;\n            }\n            this.changeDetector.detectChanges();\n        }\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                    break;\n                case 'header':\n                    this.headerTemplate = item.template;\n                    break;\n                default:\n                    this.contentTemplate = item.template;\n                    break;\n            }\n        });\n    }\n    toggle(event) {\n        if (this.disabled) {\n            return false;\n        }\n        let index = this.findTabIndex();\n        if (this.selected) {\n            this.selected = false;\n            this.accordion.onClose.emit({ originalEvent: event, index: index });\n        }\n        else {\n            if (!this.accordion.multiple) {\n                for (var i = 0; i < this.accordion.tabs.length; i++) {\n                    this.accordion.tabs[i].selected = false;\n                    this.accordion.tabs[i].selectedChange.emit(false);\n                    this.accordion.tabs[i].changeDetector.markForCheck();\n                }\n            }\n            this.selected = true;\n            this.loaded = true;\n            this.accordion.onOpen.emit({ originalEvent: event, index: index });\n        }\n        this.selectedChange.emit(this.selected);\n        this.accordion.updateActiveIndex();\n        this.changeDetector.markForCheck();\n        event.preventDefault();\n    }\n    findTabIndex() {\n        let index = -1;\n        for (var i = 0; i < this.accordion.tabs.length; i++) {\n            if (this.accordion.tabs[i] == this) {\n                index = i;\n                break;\n            }\n        }\n        return index;\n    }\n    get hasHeaderFacet() {\n        return this.headerFacet && this.headerFacet.length > 0;\n    }\n    onKeydown(event) {\n        if (event.which === 32 || event.which === 13) {\n            this.toggle(event);\n            event.preventDefault();\n        }\n    }\n    ngOnDestroy() {\n        this.accordion.tabs.splice(this.findTabIndex(), 1);\n    }\n}\nAccordionTab.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionTab, deps: [{ token: forwardRef(() => Accordion) }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nAccordionTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: AccordionTab, selector: \"p-accordionTab\", inputs: { header: \"header\", disabled: \"disabled\", cache: \"cache\", transitionOptions: \"transitionOptions\", selected: \"selected\" }, outputs: { selectedChange: \"selectedChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"headerFacet\", predicate: Header }, { propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n        <div class=\"p-accordion-tab\" [ngClass]=\"{'p-accordion-tab-active': selected}\">\n            <div class=\"p-accordion-header\" [ngClass]=\"{'p-highlight': selected, 'p-disabled': disabled}\">\n                <a role=\"tab\" class=\"p-accordion-header-link\" (click)=\"toggle($event)\" (keydown)=\"onKeydown($event)\" [attr.tabindex]=\"disabled ? null : 0\"\n                    [attr.id]=\"id\" [attr.aria-controls]=\"id + '-content'\" [attr.aria-expanded]=\"selected\">\n                    <span class=\"p-accordion-toggle-icon\" [ngClass]=\"selected ? accordion.collapseIcon : accordion.expandIcon\"></span>\n                    <span class=\"p-accordion-header-text\" *ngIf=\"!hasHeaderFacet\">\n                        {{header}}\n                    </span>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <ng-content select=\"p-header\" *ngIf=\"hasHeaderFacet\"></ng-content>\n                </a>\n            </div>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@tabContent]=\"selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}\"\n                role=\"region\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id\">\n                <div class=\"p-accordion-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n    `, isInline: true, styles: [\".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\\n\"], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], animations: [\n        trigger('tabContent', [\n            state('hidden', style({\n                height: '0',\n                overflow: 'hidden'\n            })),\n            state('visible', style({\n                height: '*'\n            })),\n            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),\n            transition('void => *', animate(0))\n        ])\n    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionTab, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-accordionTab', template: `\n        <div class=\"p-accordion-tab\" [ngClass]=\"{'p-accordion-tab-active': selected}\">\n            <div class=\"p-accordion-header\" [ngClass]=\"{'p-highlight': selected, 'p-disabled': disabled}\">\n                <a role=\"tab\" class=\"p-accordion-header-link\" (click)=\"toggle($event)\" (keydown)=\"onKeydown($event)\" [attr.tabindex]=\"disabled ? null : 0\"\n                    [attr.id]=\"id\" [attr.aria-controls]=\"id + '-content'\" [attr.aria-expanded]=\"selected\">\n                    <span class=\"p-accordion-toggle-icon\" [ngClass]=\"selected ? accordion.collapseIcon : accordion.expandIcon\"></span>\n                    <span class=\"p-accordion-header-text\" *ngIf=\"!hasHeaderFacet\">\n                        {{header}}\n                    </span>\n                    <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n                    <ng-content select=\"p-header\" *ngIf=\"hasHeaderFacet\"></ng-content>\n                </a>\n            </div>\n            <div [attr.id]=\"id + '-content'\" class=\"p-toggleable-content\" [@tabContent]=\"selected ? {value: 'visible', params: {transitionParams: transitionOptions}} : {value: 'hidden', params: {transitionParams: transitionOptions}}\"\n                role=\"region\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id\">\n                <div class=\"p-accordion-content\">\n                    <ng-content></ng-content>\n                    <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                        <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n                    </ng-container>\n                </div>\n            </div>\n        </div>\n    `, animations: [\n                        trigger('tabContent', [\n                            state('hidden', style({\n                                height: '0',\n                                overflow: 'hidden'\n                            })),\n                            state('visible', style({\n                                height: '*'\n                            })),\n                            transition('visible <=> hidden', [style({ overflow: 'hidden' }), animate('{{transitionParams}}')]),\n                            transition('void => *', animate(0))\n                        ])\n                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-accordion-header-link{cursor:pointer;display:flex;align-items:center;-webkit-user-select:none;-ms-user-select:none;user-select:none;position:relative;text-decoration:none}.p-accordion-header-link:focus{z-index:1}.p-accordion-header-text{line-height:1}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [forwardRef(() => Accordion)]\n                }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { header: [{\n                type: Input\n            }], disabled: [{\n                type: Input\n            }], cache: [{\n                type: Input\n            }], selectedChange: [{\n                type: Output\n            }], transitionOptions: [{\n                type: Input\n            }], headerFacet: [{\n                type: ContentChildren,\n                args: [Header]\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }], selected: [{\n                type: Input\n            }] } });\nclass Accordion {\n    constructor(el, changeDetector) {\n        this.el = el;\n        this.changeDetector = changeDetector;\n        this.onClose = new EventEmitter();\n        this.onOpen = new EventEmitter();\n        this.expandIcon = 'pi pi-fw pi-chevron-right';\n        this.collapseIcon = 'pi pi-fw pi-chevron-down';\n        this.activeIndexChange = new EventEmitter();\n        this.tabs = [];\n    }\n    ngAfterContentInit() {\n        this.initTabs();\n        this.tabListSubscription = this.tabList.changes.subscribe(_ => {\n            this.initTabs();\n        });\n    }\n    initTabs() {\n        this.tabs = this.tabList.toArray();\n        this.updateSelectionState();\n        this.changeDetector.markForCheck();\n    }\n    getBlockableElement() {\n        return this.el.nativeElement.children[0];\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    set activeIndex(val) {\n        this._activeIndex = val;\n        if (this.preventActiveIndexPropagation) {\n            this.preventActiveIndexPropagation = false;\n            return;\n        }\n        this.updateSelectionState();\n    }\n    updateSelectionState() {\n        if (this.tabs && this.tabs.length && this._activeIndex != null) {\n            for (let i = 0; i < this.tabs.length; i++) {\n                let selected = this.multiple ? this._activeIndex.includes(i) : (i === this._activeIndex);\n                let changed = selected !== this.tabs[i].selected;\n                if (changed) {\n                    this.tabs[i].selected = selected;\n                    this.tabs[i].selectedChange.emit(selected);\n                    this.tabs[i].changeDetector.markForCheck();\n                }\n            }\n        }\n    }\n    updateActiveIndex() {\n        let index = this.multiple ? [] : null;\n        this.tabs.forEach((tab, i) => {\n            if (tab.selected) {\n                if (this.multiple) {\n                    index.push(i);\n                }\n                else {\n                    index = i;\n                    return;\n                }\n            }\n        });\n        this.preventActiveIndexPropagation = true;\n        this.activeIndexChange.emit(index);\n    }\n    ngOnDestroy() {\n        if (this.tabListSubscription) {\n            this.tabListSubscription.unsubscribe();\n        }\n    }\n}\nAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Accordion, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nAccordion.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Accordion, selector: \"p-accordion\", inputs: { multiple: \"multiple\", style: \"style\", styleClass: \"styleClass\", expandIcon: \"expandIcon\", collapseIcon: \"collapseIcon\", activeIndex: \"activeIndex\" }, outputs: { onClose: \"onClose\", onOpen: \"onOpen\", activeIndexChange: \"activeIndexChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"tabList\", predicate: AccordionTab }], ngImport: i0, template: `\n        <div [ngClass]=\"'p-accordion p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"tablist\">\n            <ng-content></ng-content>\n        </div>\n    `, isInline: true, directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Accordion, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-accordion',\n                    template: `\n        <div [ngClass]=\"'p-accordion p-component'\" [ngStyle]=\"style\" [class]=\"styleClass\" role=\"tablist\">\n            <ng-content></ng-content>\n        </div>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { multiple: [{\n                type: Input\n            }], onClose: [{\n                type: Output\n            }], onOpen: [{\n                type: Output\n            }], style: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], expandIcon: [{\n                type: Input\n            }], collapseIcon: [{\n                type: Input\n            }], activeIndexChange: [{\n                type: Output\n            }], tabList: [{\n                type: ContentChildren,\n                args: [AccordionTab]\n            }], activeIndex: [{\n                type: Input\n            }] } });\nclass AccordionModule {\n}\nAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionModule, declarations: [Accordion, AccordionTab], imports: [CommonModule], exports: [Accordion, AccordionTab, SharedModule] });\nAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionModule, imports: [[CommonModule], SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: AccordionModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule],\n                    exports: [Accordion, AccordionTab, SharedModule],\n                    declarations: [Accordion, AccordionTab]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Accordion, AccordionModule, AccordionTab };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/4eade5afb8240d90689cd0aacafe2106.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/4eade5afb8240d90689cd0aacafe2106.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/4eade5afb8240d90689cd0aacafe2106.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Directive, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output, NgModule } from '@angular/core';\nimport { DomHandler } from 'primeng/dom';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { PrimeTemplate } from 'primeng/api';\n\nfunction Button_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nconst _c0 = function (a1, a2, a3, a4) {\n  return {\n    \"p-button-icon\": true,\n    \"p-button-icon-left\": a1,\n    \"p-button-icon-right\": a2,\n    \"p-button-icon-top\": a3,\n    \"p-button-icon-bottom\": a4\n  };\n};\n\nfunction Button_span_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"span\", 4);\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵclassMap(ctx_r1.loading ? \"p-button-loading-icon \" + ctx_r1.loadingIcon : ctx_r1.icon);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction4(4, _c0, ctx_r1.iconPos === \"left\" && ctx_r1.label, ctx_r1.iconPos === \"right\" && ctx_r1.label, ctx_r1.iconPos === \"top\" && ctx_r1.label, ctx_r1.iconPos === \"bottom\" && ctx_r1.label));\n    i0.ɵɵattribute(\"aria-hidden\", true);\n  }\n}\n\nfunction Button_span_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 5);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r2 = i0.ɵɵnextContext();\n    i0.ɵɵattribute(\"aria-hidden\", ctx_r2.icon && !ctx_r2.label);\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate(ctx_r2.label || \"\\xA0\");\n  }\n}\n\nfunction Button_span_5_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"span\", 4);\n    i0.ɵɵtext(1);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r3 = i0.ɵɵnextContext();\n    i0.ɵɵclassMap(ctx_r3.badgeClass);\n    i0.ɵɵproperty(\"ngClass\", ctx_r3.badgeStyleClass());\n    i0.ɵɵadvance(1);\n    i0.ɵɵtextInterpolate(ctx_r3.badge);\n  }\n}\n\nconst _c1 = function (a1, a2, a3, a4, a5) {\n  return {\n    \"p-button p-component\": true,\n    \"p-button-icon-only\": a1,\n    \"p-button-vertical\": a2,\n    \"p-disabled\": a3,\n    \"p-button-loading\": a4,\n    \"p-button-loading-label-only\": a5\n  };\n};\n\nconst _c2 = [\"*\"];\n\nclass ButtonDirective {\n  constructor(el) {\n    this.el = el;\n    this.iconPos = 'left';\n    this.loadingIcon = \"pi pi-spinner pi-spin\";\n    this._loading = false;\n  }\n\n  ngAfterViewInit() {\n    this._initialStyleClass = this.el.nativeElement.className;\n    DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());\n\n    if (this.icon || this.loading) {\n      this.createIconEl();\n    }\n\n    let labelElement = document.createElement(\"span\");\n\n    if (this.icon && !this.label) {\n      labelElement.setAttribute('aria-hidden', 'true');\n    }\n\n    labelElement.className = 'p-button-label';\n    if (this.label) labelElement.appendChild(document.createTextNode(this.label));else labelElement.innerHTML = '&nbsp;';\n    this.el.nativeElement.appendChild(labelElement);\n    this.initialized = true;\n  }\n\n  getStyleClass() {\n    let styleClass = 'p-button p-component';\n\n    if (this.icon && !this.label) {\n      styleClass = styleClass + ' p-button-icon-only';\n    }\n\n    if (this.loading) {\n      styleClass = styleClass + ' p-disabled p-button-loading';\n      if (!this.icon && this.label) styleClass = styleClass + ' p-button-loading-label-only';\n    }\n\n    return styleClass;\n  }\n\n  setStyleClass() {\n    let styleClass = this.getStyleClass();\n    this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;\n  }\n\n  createIconEl() {\n    let iconElement = document.createElement(\"span\");\n    iconElement.className = 'p-button-icon';\n    iconElement.setAttribute(\"aria-hidden\", \"true\");\n    let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n\n    if (iconPosClass) {\n      DomHandler.addClass(iconElement, iconPosClass);\n    }\n\n    let iconClass = this.getIconClass();\n\n    if (iconClass) {\n      DomHandler.addMultipleClasses(iconElement, iconClass);\n    }\n\n    let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label');\n    if (labelEl) this.el.nativeElement.insertBefore(iconElement, labelEl);else this.el.nativeElement.appendChild(iconElement);\n  }\n\n  getIconClass() {\n    return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;\n  }\n\n  setIconClass() {\n    let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n\n    if (iconElement) {\n      if (this.iconPos) iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();else iconElement.className = 'p-button-icon ' + this.getIconClass();\n    } else {\n      this.createIconEl();\n    }\n  }\n\n  removeIconElement() {\n    let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n    this.el.nativeElement.removeChild(iconElement);\n  }\n\n  get label() {\n    return this._label;\n  }\n\n  set label(val) {\n    this._label = val;\n\n    if (this.initialized) {\n      DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || '&nbsp;';\n\n      if (this.loading || this.icon) {\n        this.setIconClass();\n      }\n\n      this.setStyleClass();\n    }\n  }\n\n  get icon() {\n    return this._icon;\n  }\n\n  set icon(val) {\n    this._icon = val;\n\n    if (this.initialized) {\n      this.setIconClass();\n      this.setStyleClass();\n    }\n  }\n\n  get loading() {\n    return this._loading;\n  }\n\n  set loading(val) {\n    this._loading = val;\n\n    if (this.initialized) {\n      if (this.loading || this.icon) this.setIconClass();else this.removeIconElement();\n      this.setStyleClass();\n    }\n  }\n\n  ngOnDestroy() {\n    this.initialized = false;\n  }\n\n}\n\nButtonDirective.ɵfac = function ButtonDirective_Factory(t) {\n  return new (t || ButtonDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n};\n\nButtonDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: ButtonDirective,\n  selectors: [[\"\", \"pButton\", \"\"]],\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    iconPos: \"iconPos\",\n    loadingIcon: \"loadingIcon\",\n    label: \"label\",\n    icon: \"icon\",\n    loading: \"loading\"\n  }\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ButtonDirective, [{\n    type: Directive,\n    args: [{\n      selector: '[pButton]',\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }];\n  }, {\n    iconPos: [{\n      type: Input\n    }],\n    loadingIcon: [{\n      type: Input\n    }],\n    label: [{\n      type: Input\n    }],\n    icon: [{\n      type: Input\n    }],\n    loading: [{\n      type: Input\n    }]\n  });\n})();\n\nclass Button {\n  constructor() {\n    this.type = \"button\";\n    this.iconPos = 'left';\n    this.loading = false;\n    this.loadingIcon = \"pi pi-spinner pi-spin\";\n    this.onClick = new EventEmitter();\n    this.onFocus = new EventEmitter();\n    this.onBlur = new EventEmitter();\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'content':\n          this.contentTemplate = item.template;\n          break;\n\n        default:\n          this.contentTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  badgeStyleClass() {\n    return {\n      'p-badge p-component': true,\n      'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n    };\n  }\n\n}\n\nButton.ɵfac = function Button_Factory(t) {\n  return new (t || Button)();\n};\n\nButton.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Button,\n  selectors: [[\"p-button\"]],\n  contentQueries: function Button_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    type: \"type\",\n    iconPos: \"iconPos\",\n    icon: \"icon\",\n    badge: \"badge\",\n    label: \"label\",\n    disabled: \"disabled\",\n    loading: \"loading\",\n    loadingIcon: \"loadingIcon\",\n    style: \"style\",\n    styleClass: \"styleClass\",\n    badgeClass: \"badgeClass\"\n  },\n  outputs: {\n    onClick: \"onClick\",\n    onFocus: \"onFocus\",\n    onBlur: \"onBlur\"\n  },\n  ngContentSelectors: _c2,\n  decls: 6,\n  vars: 16,\n  consts: [[\"pRipple\", \"\", 3, \"ngStyle\", \"disabled\", \"ngClass\", \"click\", \"focus\", \"blur\"], [4, \"ngTemplateOutlet\"], [3, \"ngClass\", \"class\", 4, \"ngIf\"], [\"class\", \"p-button-label\", 4, \"ngIf\"], [3, \"ngClass\"], [1, \"p-button-label\"]],\n  template: function Button_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵelementStart(0, \"button\", 0);\n      i0.ɵɵlistener(\"click\", function Button_Template_button_click_0_listener($event) {\n        return ctx.onClick.emit($event);\n      })(\"focus\", function Button_Template_button_focus_0_listener($event) {\n        return ctx.onFocus.emit($event);\n      })(\"blur\", function Button_Template_button_blur_0_listener($event) {\n        return ctx.onBlur.emit($event);\n      });\n      i0.ɵɵprojection(1);\n      i0.ɵɵtemplate(2, Button_ng_container_2_Template, 1, 0, \"ng-container\", 1);\n      i0.ɵɵtemplate(3, Button_span_3_Template, 1, 9, \"span\", 2);\n      i0.ɵɵtemplate(4, Button_span_4_Template, 2, 2, \"span\", 3);\n      i0.ɵɵtemplate(5, Button_span_5_Template, 2, 4, \"span\", 2);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngStyle\", ctx.style)(\"disabled\", ctx.disabled || ctx.loading)(\"ngClass\", i0.ɵɵpureFunction5(10, _c1, ctx.icon && !ctx.label, (ctx.iconPos === \"top\" || ctx.iconPos === \"bottom\") && ctx.label, ctx.disabled || ctx.loading, ctx.loading, ctx.loading && !ctx.icon && ctx.label));\n      i0.ɵɵattribute(\"type\", ctx.type);\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.contentTemplate);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", !ctx.contentTemplate && (ctx.icon || ctx.loading));\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", !ctx.contentTemplate);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", !ctx.contentTemplate && ctx.badge);\n    }\n  },\n  directives: [i1.Ripple, i2.NgStyle, i2.NgClass, i2.NgTemplateOutlet, i2.NgIf],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Button, [{\n    type: Component,\n    args: [{\n      selector: 'p-button',\n      template: `\n        <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled || loading\"\n            [ngClass]=\"{'p-button p-component':true,\n                        'p-button-icon-only': (icon && !label),\n                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,\n                        'p-disabled': this.disabled || this.loading,\n                        'p-button-loading': this.loading,\n                        'p-button-loading-label-only': this.loading && !this.icon && this.label}\"\n                        (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            <span [ngClass]=\"{'p-button-icon': true,\n                        'p-button-icon-left': iconPos === 'left' && label,\n                        'p-button-icon-right': iconPos === 'right' && label,\n                        'p-button-icon-top': iconPos === 'top' && label,\n                        'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n                        [class]=\"loading ? 'p-button-loading-icon ' + loadingIcon : icon\" *ngIf=\"!contentTemplate && (icon||loading)\" [attr.aria-hidden]=\"true\"></span>\n            <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\" *ngIf=\"!contentTemplate\">{{label||'&nbsp;'}}</span>\n            <span [ngClass]=\"badgeStyleClass()\" [class]=\"badgeClass\" *ngIf=\"!contentTemplate && badge\">{{badge}}</span>\n        </button>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], null, {\n    type: [{\n      type: Input\n    }],\n    iconPos: [{\n      type: Input\n    }],\n    icon: [{\n      type: Input\n    }],\n    badge: [{\n      type: Input\n    }],\n    label: [{\n      type: Input\n    }],\n    disabled: [{\n      type: Input\n    }],\n    loading: [{\n      type: Input\n    }],\n    loadingIcon: [{\n      type: Input\n    }],\n    style: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    badgeClass: [{\n      type: Input\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }],\n    onClick: [{\n      type: Output\n    }],\n    onFocus: [{\n      type: Output\n    }],\n    onBlur: [{\n      type: Output\n    }]\n  });\n})();\n\nclass ButtonModule {}\n\nButtonModule.ɵfac = function ButtonModule_Factory(t) {\n  return new (t || ButtonModule)();\n};\n\nButtonModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: ButtonModule\n});\nButtonModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, RippleModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ButtonModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, RippleModule],\n      exports: [ButtonDirective, Button],\n      declarations: [ButtonDirective, Button]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Button, ButtonDirective, ButtonModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-button.mjs"],"names":["i0","Directive","Input","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","ContentChildren","Output","NgModule","DomHandler","i2","CommonModule","i1","RippleModule","PrimeTemplate","ButtonDirective","constructor","el","iconPos","loadingIcon","_loading","ngAfterViewInit","_initialStyleClass","nativeElement","className","addMultipleClasses","getStyleClass","icon","loading","createIconEl","labelElement","document","createElement","label","setAttribute","appendChild","createTextNode","innerHTML","initialized","styleClass","setStyleClass","iconElement","iconPosClass","addClass","iconClass","getIconClass","labelEl","findSingle","insertBefore","_icon","setIconClass","removeIconElement","removeChild","_label","val","textContent","ngOnDestroy","ɵfac","ElementRef","ɵdir","type","args","selector","host","Button","onClick","onFocus","onBlur","ngAfterContentInit","templates","forEach","item","getType","contentTemplate","template","badgeStyleClass","badge","String","length","ɵcmp","Ripple","NgStyle","NgClass","NgTemplateOutlet","NgIf","changeDetection","OnPush","encapsulation","None","disabled","style","badgeClass","ButtonModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { Directive, Input, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChildren, Output, NgModule } from '@angular/core';\nimport { DomHandler } from 'primeng/dom';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i1 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { PrimeTemplate } from 'primeng/api';\n\nclass ButtonDirective {\n    constructor(el) {\n        this.el = el;\n        this.iconPos = 'left';\n        this.loadingIcon = \"pi pi-spinner pi-spin\";\n        this._loading = false;\n    }\n    ngAfterViewInit() {\n        this._initialStyleClass = this.el.nativeElement.className;\n        DomHandler.addMultipleClasses(this.el.nativeElement, this.getStyleClass());\n        if (this.icon || this.loading) {\n            this.createIconEl();\n        }\n        let labelElement = document.createElement(\"span\");\n        if (this.icon && !this.label) {\n            labelElement.setAttribute('aria-hidden', 'true');\n        }\n        labelElement.className = 'p-button-label';\n        if (this.label)\n            labelElement.appendChild(document.createTextNode(this.label));\n        else\n            labelElement.innerHTML = '&nbsp;';\n        this.el.nativeElement.appendChild(labelElement);\n        this.initialized = true;\n    }\n    getStyleClass() {\n        let styleClass = 'p-button p-component';\n        if (this.icon && !this.label) {\n            styleClass = styleClass + ' p-button-icon-only';\n        }\n        if (this.loading) {\n            styleClass = styleClass + ' p-disabled p-button-loading';\n            if (!this.icon && this.label)\n                styleClass = styleClass + ' p-button-loading-label-only';\n        }\n        return styleClass;\n    }\n    setStyleClass() {\n        let styleClass = this.getStyleClass();\n        this.el.nativeElement.className = styleClass + ' ' + this._initialStyleClass;\n    }\n    createIconEl() {\n        let iconElement = document.createElement(\"span\");\n        iconElement.className = 'p-button-icon';\n        iconElement.setAttribute(\"aria-hidden\", \"true\");\n        let iconPosClass = this.label ? 'p-button-icon-' + this.iconPos : null;\n        if (iconPosClass) {\n            DomHandler.addClass(iconElement, iconPosClass);\n        }\n        let iconClass = this.getIconClass();\n        if (iconClass) {\n            DomHandler.addMultipleClasses(iconElement, iconClass);\n        }\n        let labelEl = DomHandler.findSingle(this.el.nativeElement, '.p-button-label');\n        if (labelEl)\n            this.el.nativeElement.insertBefore(iconElement, labelEl);\n        else\n            this.el.nativeElement.appendChild(iconElement);\n    }\n    getIconClass() {\n        return this.loading ? 'p-button-loading-icon ' + this.loadingIcon : this._icon;\n    }\n    setIconClass() {\n        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n        if (iconElement) {\n            if (this.iconPos)\n                iconElement.className = 'p-button-icon p-button-icon-' + this.iconPos + ' ' + this.getIconClass();\n            else\n                iconElement.className = 'p-button-icon ' + this.getIconClass();\n        }\n        else {\n            this.createIconEl();\n        }\n    }\n    removeIconElement() {\n        let iconElement = DomHandler.findSingle(this.el.nativeElement, '.p-button-icon');\n        this.el.nativeElement.removeChild(iconElement);\n    }\n    get label() {\n        return this._label;\n    }\n    set label(val) {\n        this._label = val;\n        if (this.initialized) {\n            DomHandler.findSingle(this.el.nativeElement, '.p-button-label').textContent = this._label || '&nbsp;';\n            if (this.loading || this.icon) {\n                this.setIconClass();\n            }\n            this.setStyleClass();\n        }\n    }\n    get icon() {\n        return this._icon;\n    }\n    set icon(val) {\n        this._icon = val;\n        if (this.initialized) {\n            this.setIconClass();\n            this.setStyleClass();\n        }\n    }\n    get loading() {\n        return this._loading;\n    }\n    set loading(val) {\n        this._loading = val;\n        if (this.initialized) {\n            if (this.loading || this.icon)\n                this.setIconClass();\n            else\n                this.removeIconElement();\n            this.setStyleClass();\n        }\n    }\n    ngOnDestroy() {\n        this.initialized = false;\n    }\n}\nButtonDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nButtonDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.0\", type: ButtonDirective, selector: \"[pButton]\", inputs: { iconPos: \"iconPos\", loadingIcon: \"loadingIcon\", label: \"label\", icon: \"icon\", loading: \"loading\" }, host: { classAttribute: \"p-element\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[pButton]',\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { iconPos: [{\n                type: Input\n            }], loadingIcon: [{\n                type: Input\n            }], label: [{\n                type: Input\n            }], icon: [{\n                type: Input\n            }], loading: [{\n                type: Input\n            }] } });\nclass Button {\n    constructor() {\n        this.type = \"button\";\n        this.iconPos = 'left';\n        this.loading = false;\n        this.loadingIcon = \"pi pi-spinner pi-spin\";\n        this.onClick = new EventEmitter();\n        this.onFocus = new EventEmitter();\n        this.onBlur = new EventEmitter();\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'content':\n                    this.contentTemplate = item.template;\n                    break;\n                default:\n                    this.contentTemplate = item.template;\n                    break;\n            }\n        });\n    }\n    badgeStyleClass() {\n        return {\n            'p-badge p-component': true,\n            'p-badge-no-gutter': this.badge && String(this.badge).length === 1\n        };\n    }\n}\nButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });\nButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Button, selector: \"p-button\", inputs: { type: \"type\", iconPos: \"iconPos\", icon: \"icon\", badge: \"badge\", label: \"label\", disabled: \"disabled\", loading: \"loading\", loadingIcon: \"loadingIcon\", style: \"style\", styleClass: \"styleClass\", badgeClass: \"badgeClass\" }, outputs: { onClick: \"onClick\", onFocus: \"onFocus\", onBlur: \"onBlur\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n        <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled || loading\"\n            [ngClass]=\"{'p-button p-component':true,\n                        'p-button-icon-only': (icon && !label),\n                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,\n                        'p-disabled': this.disabled || this.loading,\n                        'p-button-loading': this.loading,\n                        'p-button-loading-label-only': this.loading && !this.icon && this.label}\"\n                        (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            <span [ngClass]=\"{'p-button-icon': true,\n                        'p-button-icon-left': iconPos === 'left' && label,\n                        'p-button-icon-right': iconPos === 'right' && label,\n                        'p-button-icon-top': iconPos === 'top' && label,\n                        'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n                        [class]=\"loading ? 'p-button-loading-icon ' + loadingIcon : icon\" *ngIf=\"!contentTemplate && (icon||loading)\" [attr.aria-hidden]=\"true\"></span>\n            <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\" *ngIf=\"!contentTemplate\">{{label||'&nbsp;'}}</span>\n            <span [ngClass]=\"badgeStyleClass()\" [class]=\"badgeClass\" *ngIf=\"!contentTemplate && badge\">{{badge}}</span>\n        </button>\n    `, isInline: true, directives: [{ type: i1.Ripple, selector: \"[pRipple]\" }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Button, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-button',\n                    template: `\n        <button [attr.type]=\"type\" [class]=\"styleClass\" [ngStyle]=\"style\" [disabled]=\"disabled || loading\"\n            [ngClass]=\"{'p-button p-component':true,\n                        'p-button-icon-only': (icon && !label),\n                        'p-button-vertical': (iconPos === 'top' || iconPos === 'bottom') && label,\n                        'p-disabled': this.disabled || this.loading,\n                        'p-button-loading': this.loading,\n                        'p-button-loading-label-only': this.loading && !this.icon && this.label}\"\n                        (click)=\"onClick.emit($event)\" (focus)=\"onFocus.emit($event)\" (blur)=\"onBlur.emit($event)\" pRipple>\n            <ng-content></ng-content>\n            <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            <span [ngClass]=\"{'p-button-icon': true,\n                        'p-button-icon-left': iconPos === 'left' && label,\n                        'p-button-icon-right': iconPos === 'right' && label,\n                        'p-button-icon-top': iconPos === 'top' && label,\n                        'p-button-icon-bottom': iconPos === 'bottom' && label}\"\n                        [class]=\"loading ? 'p-button-loading-icon ' + loadingIcon : icon\" *ngIf=\"!contentTemplate && (icon||loading)\" [attr.aria-hidden]=\"true\"></span>\n            <span class=\"p-button-label\" [attr.aria-hidden]=\"icon && !label\" *ngIf=\"!contentTemplate\">{{label||'&nbsp;'}}</span>\n            <span [ngClass]=\"badgeStyleClass()\" [class]=\"badgeClass\" *ngIf=\"!contentTemplate && badge\">{{badge}}</span>\n        </button>\n    `,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    encapsulation: ViewEncapsulation.None,\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], propDecorators: { type: [{\n                type: Input\n            }], iconPos: [{\n                type: Input\n            }], icon: [{\n                type: Input\n            }], badge: [{\n                type: Input\n            }], label: [{\n                type: Input\n            }], disabled: [{\n                type: Input\n            }], loading: [{\n                type: Input\n            }], loadingIcon: [{\n                type: Input\n            }], style: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], badgeClass: [{\n                type: Input\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }], onClick: [{\n                type: Output\n            }], onFocus: [{\n                type: Output\n            }], onBlur: [{\n                type: Output\n            }] } });\nclass ButtonModule {\n}\nButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonModule, declarations: [ButtonDirective, Button], imports: [CommonModule, RippleModule], exports: [ButtonDirective, Button] });\nButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonModule, imports: [[CommonModule, RippleModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ButtonModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, RippleModule],\n                    exports: [ButtonDirective, Button],\n                    declarations: [ButtonDirective, Button]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Button, ButtonDirective, ButtonModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/4f80b520d7a3ca907b841f87a34d9490.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/4f80b520d7a3ca907b841f87a34d9490.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/4f80b520d7a3ca907b841f87a34d9490.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, QueryList, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot, PlatformModule } from '@angular/cdk/platform';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\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/** IDs are delimited by an empty space, as per the spec. */\n\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\n\nfunction addAriaReferencedId(el, attr, id) {\n  const ids = getAriaReferenceIds(el, attr);\n\n  if (ids.some(existingId => existingId.trim() == id.trim())) {\n    return;\n  }\n\n  ids.push(id.trim());\n  el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\n\n\nfunction removeAriaReferencedId(el, attr, id) {\n  const ids = getAriaReferenceIds(el, attr);\n  const filteredIds = ids.filter(val => val != id.trim());\n\n  if (filteredIds.length) {\n    el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n  } else {\n    el.removeAttribute(attr);\n  }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\n\n\nfunction getAriaReferenceIds(el, attr) {\n  // Get string array of all individual ids (whitespace delimited) in the attribute value\n  return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\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/** ID used for the body container where all messages are appended. */\n\n\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/** ID prefix used for each created message element. */\n\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/** Attribute given to each host element that is described by a message element. */\n\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\n\nlet nextId = 0;\n/** Global map of all registered message elements that have been placed into the document. */\n\nconst messageRegistry = new Map();\n/** Container for all registered messages. */\n\nlet messagesContainer = null;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\n\nclass AriaDescriber {\n  constructor(_document) {\n    this._document = _document;\n  }\n\n  describe(hostElement, message, role) {\n    if (!this._canBeDescribed(hostElement, message)) {\n      return;\n    }\n\n    const key = getKey(message, role);\n\n    if (typeof message !== 'string') {\n      // We need to ensure that the element has an ID.\n      setMessageId(message);\n      messageRegistry.set(key, {\n        messageElement: message,\n        referenceCount: 0\n      });\n    } else if (!messageRegistry.has(key)) {\n      this._createMessageElement(message, role);\n    }\n\n    if (!this._isElementDescribedByMessage(hostElement, key)) {\n      this._addMessageReference(hostElement, key);\n    }\n  }\n\n  removeDescription(hostElement, message, role) {\n    if (!message || !this._isElementNode(hostElement)) {\n      return;\n    }\n\n    const key = getKey(message, role);\n\n    if (this._isElementDescribedByMessage(hostElement, key)) {\n      this._removeMessageReference(hostElement, key);\n    } // If the message is a string, it means that it's one that we created for the\n    // consumer so we can remove it safely, otherwise we should leave it in place.\n\n\n    if (typeof message === 'string') {\n      const registeredMessage = messageRegistry.get(key);\n\n      if (registeredMessage && registeredMessage.referenceCount === 0) {\n        this._deleteMessageElement(key);\n      }\n    }\n\n    if (messagesContainer && messagesContainer.childNodes.length === 0) {\n      this._deleteMessagesContainer();\n    }\n  }\n  /** Unregisters all created message elements and removes the message container. */\n\n\n  ngOnDestroy() {\n    const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}]`);\n\n    for (let i = 0; i < describedElements.length; i++) {\n      this._removeCdkDescribedByReferenceIds(describedElements[i]);\n\n      describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n    }\n\n    if (messagesContainer) {\n      this._deleteMessagesContainer();\n    }\n\n    messageRegistry.clear();\n  }\n  /**\n   * Creates a new element in the visually hidden message container element with the message\n   * as its content and adds it to the message registry.\n   */\n\n\n  _createMessageElement(message, role) {\n    const messageElement = this._document.createElement('div');\n\n    setMessageId(messageElement);\n    messageElement.textContent = message;\n\n    if (role) {\n      messageElement.setAttribute('role', role);\n    }\n\n    this._createMessagesContainer();\n\n    messagesContainer.appendChild(messageElement);\n    messageRegistry.set(getKey(message, role), {\n      messageElement,\n      referenceCount: 0\n    });\n  }\n  /** Deletes the message element from the global messages container. */\n\n\n  _deleteMessageElement(key) {\n    const registeredMessage = messageRegistry.get(key);\n    registeredMessage?.messageElement?.remove();\n    messageRegistry.delete(key);\n  }\n  /** Creates the global container for all aria-describedby messages. */\n\n\n  _createMessagesContainer() {\n    if (!messagesContainer) {\n      const preExistingContainer = this._document.getElementById(MESSAGES_CONTAINER_ID); // When going from the server to the client, we may end up in a situation where there's\n      // already a container on the page, but we don't have a reference to it. Clear the\n      // old container so we don't get duplicates. Doing this, instead of emptying the previous\n      // container, should be slightly faster.\n\n\n      preExistingContainer?.remove();\n      messagesContainer = this._document.createElement('div');\n      messagesContainer.id = MESSAGES_CONTAINER_ID; // We add `visibility: hidden` in order to prevent text in this container from\n      // being searchable by the browser's Ctrl + F functionality.\n      // Screen-readers will still read the description for elements with aria-describedby even\n      // when the description element is not visible.\n\n      messagesContainer.style.visibility = 'hidden'; // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n      // the description element doesn't impact page layout.\n\n      messagesContainer.classList.add('cdk-visually-hidden');\n\n      this._document.body.appendChild(messagesContainer);\n    }\n  }\n  /** Deletes the global messages container. */\n\n\n  _deleteMessagesContainer() {\n    if (messagesContainer) {\n      messagesContainer.remove();\n      messagesContainer = null;\n    }\n  }\n  /** Removes all cdk-describedby messages that are hosted through the element. */\n\n\n  _removeCdkDescribedByReferenceIds(element) {\n    // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n    const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n    element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n  }\n  /**\n   * Adds a message reference to the element using aria-describedby and increments the registered\n   * message's reference count.\n   */\n\n\n  _addMessageReference(element, key) {\n    const registeredMessage = messageRegistry.get(key); // Add the aria-describedby reference and set the\n    // describedby_host attribute to mark the element.\n\n    addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n    element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, '');\n    registeredMessage.referenceCount++;\n  }\n  /**\n   * Removes a message reference from the element using aria-describedby\n   * and decrements the registered message's reference count.\n   */\n\n\n  _removeMessageReference(element, key) {\n    const registeredMessage = messageRegistry.get(key);\n    registeredMessage.referenceCount--;\n    removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n    element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n  }\n  /** Returns true if the element has been described by the provided message ID. */\n\n\n  _isElementDescribedByMessage(element, key) {\n    const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n    const registeredMessage = messageRegistry.get(key);\n    const messageId = registeredMessage && registeredMessage.messageElement.id;\n    return !!messageId && referenceIds.indexOf(messageId) != -1;\n  }\n  /** Determines whether a message can be described on a particular element. */\n\n\n  _canBeDescribed(element, message) {\n    if (!this._isElementNode(element)) {\n      return false;\n    }\n\n    if (message && typeof message === 'object') {\n      // We'd have to make some assumptions about the description element's text, if the consumer\n      // passed in an element. Assume that if an element is passed in, the consumer has verified\n      // that it can be used as a description.\n      return true;\n    }\n\n    const trimmedMessage = message == null ? '' : `${message}`.trim();\n    const ariaLabel = element.getAttribute('aria-label'); // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n    // element, because screen readers will end up reading out the same text twice in a row.\n\n    return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n  }\n  /** Checks whether a node is an Element node. */\n\n\n  _isElementNode(element) {\n    return element.nodeType === this._document.ELEMENT_NODE;\n  }\n\n}\n\nAriaDescriber.ɵfac = function AriaDescriber_Factory(t) {\n  return new (t || AriaDescriber)(i0.ɵɵinject(DOCUMENT));\n};\n\nAriaDescriber.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: AriaDescriber,\n  factory: AriaDescriber.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AriaDescriber, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/** Gets a key that can be used to look messages up in the registry. */\n\n\nfunction getKey(message, role) {\n  return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\n\n\nfunction setMessageId(element) {\n  if (!element.id) {\n    element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${nextId++}`;\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/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\n\n\nclass ListKeyManager {\n  constructor(_items) {\n    this._items = _items;\n    this._activeItemIndex = -1;\n    this._activeItem = null;\n    this._wrap = false;\n    this._letterKeyStream = new Subject();\n    this._typeaheadSubscription = Subscription.EMPTY;\n    this._vertical = true;\n    this._allowedModifierKeys = [];\n    this._homeAndEnd = false;\n    /**\n     * Predicate function that can be used to check whether an item should be skipped\n     * by the key manager. By default, disabled items are skipped.\n     */\n\n    this._skipPredicateFn = item => item.disabled; // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n\n\n    this._pressedLetters = [];\n    /**\n     * Stream that emits any time the TAB key is pressed, so components can react\n     * when focus is shifted off of the list.\n     */\n\n    this.tabOut = new Subject();\n    /** Stream that emits whenever the active item of the list manager changes. */\n\n    this.change = new Subject(); // We allow for the items to be an array because, in some cases, the consumer may\n    // not have access to a QueryList of the items they want to manage (e.g. when the\n    // items aren't being collected via `ViewChildren` or `ContentChildren`).\n\n    if (_items instanceof QueryList) {\n      _items.changes.subscribe(newItems => {\n        if (this._activeItem) {\n          const itemArray = newItems.toArray();\n          const newIndex = itemArray.indexOf(this._activeItem);\n\n          if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n            this._activeItemIndex = newIndex;\n          }\n        }\n      });\n    }\n  }\n  /**\n   * Sets the predicate function that determines which items should be skipped by the\n   * list key manager.\n   * @param predicate Function that determines whether the given item should be skipped.\n   */\n\n\n  skipPredicate(predicate) {\n    this._skipPredicateFn = predicate;\n    return this;\n  }\n  /**\n   * Configures wrapping mode, which determines whether the active item will wrap to\n   * the other end of list when there are no more items in the given direction.\n   * @param shouldWrap Whether the list should wrap when reaching the end.\n   */\n\n\n  withWrap(shouldWrap = true) {\n    this._wrap = shouldWrap;\n    return this;\n  }\n  /**\n   * Configures whether the key manager should be able to move the selection vertically.\n   * @param enabled Whether vertical selection should be enabled.\n   */\n\n\n  withVerticalOrientation(enabled = true) {\n    this._vertical = enabled;\n    return this;\n  }\n  /**\n   * Configures the key manager to move the selection horizontally.\n   * Passing in `null` will disable horizontal movement.\n   * @param direction Direction in which the selection can be moved.\n   */\n\n\n  withHorizontalOrientation(direction) {\n    this._horizontal = direction;\n    return this;\n  }\n  /**\n   * Modifier keys which are allowed to be held down and whose default actions will be prevented\n   * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n   */\n\n\n  withAllowedModifierKeys(keys) {\n    this._allowedModifierKeys = keys;\n    return this;\n  }\n  /**\n   * Turns on typeahead mode which allows users to set the active item by typing.\n   * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n   */\n\n\n  withTypeAhead(debounceInterval = 200) {\n    if ((typeof ngDevMode === 'undefined' || ngDevMode) && this._items.length && this._items.some(item => typeof item.getLabel !== 'function')) {\n      throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n    }\n\n    this._typeaheadSubscription.unsubscribe(); // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n    // and convert those letters back into a string. Afterwards find the first item that starts\n    // with that string and select it.\n\n\n    this._typeaheadSubscription = this._letterKeyStream.pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join(''))).subscribe(inputString => {\n      const items = this._getItemsArray(); // Start at 1 because we want to start searching at the item immediately\n      // following the current active item.\n\n\n      for (let i = 1; i < items.length + 1; i++) {\n        const index = (this._activeItemIndex + i) % items.length;\n        const item = items[index];\n\n        if (!this._skipPredicateFn(item) && item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n          this.setActiveItem(index);\n          break;\n        }\n      }\n\n      this._pressedLetters = [];\n    });\n    return this;\n  }\n  /**\n   * Configures the key manager to activate the first and last items\n   * respectively when the Home or End key is pressed.\n   * @param enabled Whether pressing the Home or End key activates the first/last item.\n   */\n\n\n  withHomeAndEnd(enabled = true) {\n    this._homeAndEnd = enabled;\n    return this;\n  }\n\n  setActiveItem(item) {\n    const previousActiveItem = this._activeItem;\n    this.updateActiveItem(item);\n\n    if (this._activeItem !== previousActiveItem) {\n      this.change.next(this._activeItemIndex);\n    }\n  }\n  /**\n   * Sets the active item depending on the key event passed in.\n   * @param event Keyboard event to be used for determining which element should be active.\n   */\n\n\n  onKeydown(event) {\n    const keyCode = event.keyCode;\n    const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n    const isModifierAllowed = modifiers.every(modifier => {\n      return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n    });\n\n    switch (keyCode) {\n      case TAB:\n        this.tabOut.next();\n        return;\n\n      case DOWN_ARROW:\n        if (this._vertical && isModifierAllowed) {\n          this.setNextItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      case UP_ARROW:\n        if (this._vertical && isModifierAllowed) {\n          this.setPreviousItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      case RIGHT_ARROW:\n        if (this._horizontal && isModifierAllowed) {\n          this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      case LEFT_ARROW:\n        if (this._horizontal && isModifierAllowed) {\n          this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      case HOME:\n        if (this._homeAndEnd && isModifierAllowed) {\n          this.setFirstItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      case END:\n        if (this._homeAndEnd && isModifierAllowed) {\n          this.setLastItemActive();\n          break;\n        } else {\n          return;\n        }\n\n      default:\n        if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n          // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n          // otherwise fall back to resolving alphanumeric characters via the keyCode.\n          if (event.key && event.key.length === 1) {\n            this._letterKeyStream.next(event.key.toLocaleUpperCase());\n          } else if (keyCode >= A && keyCode <= Z || keyCode >= ZERO && keyCode <= NINE) {\n            this._letterKeyStream.next(String.fromCharCode(keyCode));\n          }\n        } // Note that we return here, in order to avoid preventing\n        // the default action of non-navigational keys.\n\n\n        return;\n    }\n\n    this._pressedLetters = [];\n    event.preventDefault();\n  }\n  /** Index of the currently active item. */\n\n\n  get activeItemIndex() {\n    return this._activeItemIndex;\n  }\n  /** The active item. */\n\n\n  get activeItem() {\n    return this._activeItem;\n  }\n  /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n\n\n  isTyping() {\n    return this._pressedLetters.length > 0;\n  }\n  /** Sets the active item to the first enabled item in the list. */\n\n\n  setFirstItemActive() {\n    this._setActiveItemByIndex(0, 1);\n  }\n  /** Sets the active item to the last enabled item in the list. */\n\n\n  setLastItemActive() {\n    this._setActiveItemByIndex(this._items.length - 1, -1);\n  }\n  /** Sets the active item to the next enabled item in the list. */\n\n\n  setNextItemActive() {\n    this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n  }\n  /** Sets the active item to a previous enabled item in the list. */\n\n\n  setPreviousItemActive() {\n    this._activeItemIndex < 0 && this._wrap ? this.setLastItemActive() : this._setActiveItemByDelta(-1);\n  }\n\n  updateActiveItem(item) {\n    const itemArray = this._getItemsArray();\n\n    const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n    const activeItem = itemArray[index]; // Explicitly check for `null` and `undefined` because other falsy values are valid.\n\n    this._activeItem = activeItem == null ? null : activeItem;\n    this._activeItemIndex = index;\n  }\n  /**\n   * This method sets the active item, given a list of items and the delta between the\n   * currently active item and the new active item. It will calculate differently\n   * depending on whether wrap mode is turned on.\n   */\n\n\n  _setActiveItemByDelta(delta) {\n    this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n  }\n  /**\n   * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n   * down the list until it finds an item that is not disabled, and it will wrap if it\n   * encounters either end of the list.\n   */\n\n\n  _setActiveInWrapMode(delta) {\n    const items = this._getItemsArray();\n\n    for (let i = 1; i <= items.length; i++) {\n      const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n      const item = items[index];\n\n      if (!this._skipPredicateFn(item)) {\n        this.setActiveItem(index);\n        return;\n      }\n    }\n  }\n  /**\n   * Sets the active item properly given the default mode. In other words, it will\n   * continue to move down the list until it finds an item that is not disabled. If\n   * it encounters either end of the list, it will stop and not wrap.\n   */\n\n\n  _setActiveInDefaultMode(delta) {\n    this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n  }\n  /**\n   * Sets the active item to the first enabled item starting at the index specified. If the\n   * item is disabled, it will move in the fallbackDelta direction until it either\n   * finds an enabled item or encounters the end of the list.\n   */\n\n\n  _setActiveItemByIndex(index, fallbackDelta) {\n    const items = this._getItemsArray();\n\n    if (!items[index]) {\n      return;\n    }\n\n    while (this._skipPredicateFn(items[index])) {\n      index += fallbackDelta;\n\n      if (!items[index]) {\n        return;\n      }\n    }\n\n    this.setActiveItem(index);\n  }\n  /** Returns the items as an array. */\n\n\n  _getItemsArray() {\n    return this._items instanceof QueryList ? this._items.toArray() : this._items;\n  }\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\nclass ActiveDescendantKeyManager extends ListKeyManager {\n  setActiveItem(index) {\n    if (this.activeItem) {\n      this.activeItem.setInactiveStyles();\n    }\n\n    super.setActiveItem(index);\n\n    if (this.activeItem) {\n      this.activeItem.setActiveStyles();\n    }\n  }\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\nclass FocusKeyManager extends ListKeyManager {\n  constructor() {\n    super(...arguments);\n    this._origin = 'program';\n  }\n  /**\n   * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n   * @param origin Focus origin to be used when focusing items.\n   */\n\n\n  setFocusOrigin(origin) {\n    this._origin = origin;\n    return this;\n  }\n\n  setActiveItem(item) {\n    super.setActiveItem(item);\n\n    if (this.activeItem) {\n      this.activeItem.focus(this._origin);\n    }\n  }\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/**\n * Configuration for the isFocusable method.\n */\n\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/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\n\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\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\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\n\n  isTabbable(element) {\n    // Nothing is tabbable on the server 😎\n    if (!this._platform.isBrowser) {\n      return false;\n    }\n\n    const frameElement = getFrameElement(getWindow(element));\n\n    if (frameElement) {\n      // Frame elements inherit their tabindex onto all child elements.\n      if (getTabIndexValue(frameElement) === -1) {\n        return false;\n      } // Browsers disable tabbing to an element inside of an invisible frame.\n\n\n      if (!this.isVisible(frameElement)) {\n        return false;\n      }\n    }\n\n    let nodeName = element.nodeName.toLowerCase();\n    let tabIndexValue = getTabIndexValue(element);\n\n    if (element.hasAttribute('contenteditable')) {\n      return tabIndexValue !== -1;\n    }\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    } // In iOS, the browser only considers some specific elements as tabbable.\n\n\n    if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n      return false;\n    }\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      } // Audio elements with controls are by default tabbable unless the\n      // tabindex attribute is set to `-1` explicitly.\n\n\n      return tabIndexValue !== -1;\n    }\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      } // 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\n\n      if (tabIndexValue !== null) {\n        return true;\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\n\n      return this._platform.FIREFOX || element.hasAttribute('controls');\n    }\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\n\n  isFocusable(element, config) {\n    // Perform checks in order of left to most expensive.\n    // Again, naive approach that does not capture many edge cases and browser quirks.\n    return isPotentiallyFocusable(element) && !this.isDisabled(element) && (config?.ignoreVisibility || this.isVisible(element));\n  }\n\n}\n\nInteractivityChecker.ɵfac = function InteractivityChecker_Factory(t) {\n  return new (t || InteractivityChecker)(i0.ɵɵinject(i1.Platform));\n};\n\nInteractivityChecker.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: InteractivityChecker,\n  factory: InteractivityChecker.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(InteractivityChecker, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.Platform\n    }];\n  }, null);\n})();\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\n\n\nfunction getFrameElement(window) {\n  try {\n    return window.frameElement;\n  } catch {\n    return null;\n  }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\n\n\nfunction hasGeometry(element) {\n  // Use logic from jQuery to check for an invisible element.\n  // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n  return !!(element.offsetWidth || element.offsetHeight || typeof element.getClientRects === 'function' && element.getClientRects().length);\n}\n/** Gets whether an element's  */\n\n\nfunction isNativeFormElement(element) {\n  let nodeName = element.nodeName.toLowerCase();\n  return nodeName === 'input' || nodeName === 'select' || nodeName === 'button' || nodeName === 'textarea';\n}\n/** Gets whether an element is an `<input type=\"hidden\">`. */\n\n\nfunction isHiddenInput(element) {\n  return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\n\n\nfunction isAnchorWithHref(element) {\n  return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\n\n\nfunction isInputElement(element) {\n  return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\n\n\nfunction isAnchorElement(element) {\n  return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\n\n\nfunction hasValidTabIndex(element) {\n  if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n    return false;\n  }\n\n  let tabIndex = element.getAttribute('tabindex');\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 */\n\n\nfunction getTabIndexValue(element) {\n  if (!hasValidTabIndex(element)) {\n    return null;\n  } // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n\n\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 */\n\n\nfunction isPotentiallyTabbableIOS(element) {\n  let nodeName = element.nodeName.toLowerCase();\n  let inputType = nodeName === 'input' && element.type;\n  return inputType === 'text' || inputType === 'password' || nodeName === 'select' || nodeName === 'textarea';\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\n\n\nfunction isPotentiallyFocusable(element) {\n  // Inputs are potentially focusable *unless* they're type=\"hidden\".\n  if (isHiddenInput(element)) {\n    return false;\n  }\n\n  return isNativeFormElement(element) || isAnchorWithHref(element) || element.hasAttribute('contenteditable') || hasValidTabIndex(element);\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\n\n\nfunction getWindow(node) {\n  // ownerDocument is null if `node` itself *is* a document.\n  return node.ownerDocument && node.ownerDocument.defaultView || window;\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/**\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 be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\n\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; // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n\n    this.startAnchorListener = () => this.focusLastTabbableElement();\n\n    this.endAnchorListener = () => this.focusFirstTabbableElement();\n\n    this._enabled = true;\n\n    if (!deferAnchors) {\n      this.attachAnchors();\n    }\n  }\n  /** Whether the focus trap is active. */\n\n\n  get enabled() {\n    return this._enabled;\n  }\n\n  set enabled(value) {\n    this._enabled = value;\n\n    if (this._startAnchor && this._endAnchor) {\n      this._toggleAnchorTabIndex(value, this._startAnchor);\n\n      this._toggleAnchorTabIndex(value, this._endAnchor);\n    }\n  }\n  /** Destroys the focus trap by cleaning up the anchors. */\n\n\n  destroy() {\n    const startAnchor = this._startAnchor;\n    const endAnchor = this._endAnchor;\n\n    if (startAnchor) {\n      startAnchor.removeEventListener('focus', this.startAnchorListener);\n      startAnchor.remove();\n    }\n\n    if (endAnchor) {\n      endAnchor.removeEventListener('focus', this.endAnchorListener);\n      endAnchor.remove();\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 successfully. This may not be the case\n   * if the target element isn't currently in the DOM.\n   */\n\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\n    this._ngZone.runOutsideAngular(() => {\n      if (!this._startAnchor) {\n        this._startAnchor = this._createAnchor();\n\n        this._startAnchor.addEventListener('focus', this.startAnchorListener);\n      }\n\n      if (!this._endAnchor) {\n        this._endAnchor = this._createAnchor();\n\n        this._endAnchor.addEventListener('focus', this.endAnchorListener);\n      }\n    });\n\n    if (this._element.parentNode) {\n      this._element.parentNode.insertBefore(this._startAnchor, this._element);\n\n      this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n\n      this._hasAttached = true;\n    }\n\n    return this._hasAttached;\n  }\n  /**\n   * Waits for the zone to stabilize, then focuses the first tabbable element.\n   * @returns Returns a promise that resolves with a boolean, depending\n   * on whether focus was moved successfully.\n   */\n\n\n  focusInitialElementWhenReady(options) {\n    return new Promise(resolve => {\n      this._executeOnStable(() => resolve(this.focusInitialElement(options)));\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\n\n  focusFirstTabbableElementWhenReady(options) {\n    return new Promise(resolve => {\n      this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\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\n\n  focusLastTabbableElementWhenReady(options) {\n    return new Promise(resolve => {\n      this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\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\n\n  _getRegionBoundary(bound) {\n    // Contains the deprecated version of selector, for temporary backwards comparability.\n    let markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n\n    for (let i = 0; i < markers.length; i++) {\n      // @breaking-change 8.0.0\n      if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n        console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` + `use 'cdkFocusRegion${bound}' instead. The deprecated ` + `attribute will be removed in 8.0.0.`, markers[i]);\n      } else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n        console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` + `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` + `will be removed in 8.0.0.`, markers[i]);\n      }\n    }\n\n    if (bound == 'start') {\n      return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n    }\n\n    return markers.length ? markers[markers.length - 1] : this._getLastTabbableElement(this._element);\n  }\n  /**\n   * Focuses the element that should be focused when the focus trap is initialized.\n   * @returns Whether focus was moved successfully.\n   */\n\n\n  focusInitialElement(options) {\n    // Contains the deprecated version of selector, for temporary backwards comparability.\n    const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n\n    if (redirectToElement) {\n      // @breaking-change 8.0.0\n      if (redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n        console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` + `use 'cdkFocusInitial' instead. The deprecated attribute ` + `will be removed in 8.0.0`, redirectToElement);\n      } // Warn the consumer if the element they've pointed to\n      // isn't focusable, when not in production mode.\n\n\n      if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._checker.isFocusable(redirectToElement)) {\n        console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n      }\n\n      if (!this._checker.isFocusable(redirectToElement)) {\n        const focusableChild = this._getFirstTabbableElement(redirectToElement);\n\n        focusableChild?.focus(options);\n        return !!focusableChild;\n      }\n\n      redirectToElement.focus(options);\n      return true;\n    }\n\n    return this.focusFirstTabbableElement(options);\n  }\n  /**\n   * Focuses the first tabbable element within the focus trap region.\n   * @returns Whether focus was moved successfully.\n   */\n\n\n  focusFirstTabbableElement(options) {\n    const redirectToElement = this._getRegionBoundary('start');\n\n    if (redirectToElement) {\n      redirectToElement.focus(options);\n    }\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\n\n  focusLastTabbableElement(options) {\n    const redirectToElement = this._getRegionBoundary('end');\n\n    if (redirectToElement) {\n      redirectToElement.focus(options);\n    }\n\n    return !!redirectToElement;\n  }\n  /**\n   * Checks whether the focus trap has successfully been attached.\n   */\n\n\n  hasAttached() {\n    return this._hasAttached;\n  }\n  /** Get the first tabbable element from a DOM subtree (inclusive). */\n\n\n  _getFirstTabbableElement(root) {\n    if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n      return root;\n    }\n\n    const children = root.children;\n\n    for (let i = 0; i < children.length; i++) {\n      const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getFirstTabbableElement(children[i]) : null;\n\n      if (tabbableChild) {\n        return tabbableChild;\n      }\n    }\n\n    return null;\n  }\n  /** Get the last tabbable element from a DOM subtree (inclusive). */\n\n\n  _getLastTabbableElement(root) {\n    if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n      return root;\n    } // Iterate in reverse DOM order.\n\n\n    const children = root.children;\n\n    for (let i = children.length - 1; i >= 0; i--) {\n      const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getLastTabbableElement(children[i]) : null;\n\n      if (tabbableChild) {\n        return tabbableChild;\n      }\n    }\n\n    return null;\n  }\n  /** Creates an anchor element. */\n\n\n  _createAnchor() {\n    const anchor = this._document.createElement('div');\n\n    this._toggleAnchorTabIndex(this._enabled, anchor);\n\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\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\n\n  toggleAnchors(enabled) {\n    if (this._startAnchor && this._endAnchor) {\n      this._toggleAnchorTabIndex(enabled, this._startAnchor);\n\n      this._toggleAnchorTabIndex(enabled, this._endAnchor);\n    }\n  }\n  /** Executes a function when the zone is stable. */\n\n\n  _executeOnStable(fn) {\n    if (this._ngZone.isStable) {\n      fn();\n    } else {\n      this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n    }\n  }\n\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\n\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\n\n  create(element, deferCaptureElements = false) {\n    return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n  }\n\n}\n\nFocusTrapFactory.ɵfac = function FocusTrapFactory_Factory(t) {\n  return new (t || FocusTrapFactory)(i0.ɵɵinject(InteractivityChecker), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT));\n};\n\nFocusTrapFactory.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FocusTrapFactory,\n  factory: FocusTrapFactory.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FocusTrapFactory, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: InteractivityChecker\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\n})();\n/** Directive for trapping focus within a region. */\n\n\nclass CdkTrapFocus {\n  constructor(_elementRef, _focusTrapFactory,\n  /**\n   * @deprecated No longer being used. To be removed.\n   * @breaking-change 13.0.0\n   */\n  _document) {\n    this._elementRef = _elementRef;\n    this._focusTrapFactory = _focusTrapFactory;\n    /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n\n    this._previouslyFocusedElement = null;\n    this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n  }\n  /** Whether the focus trap is active. */\n\n\n  get enabled() {\n    return this.focusTrap.enabled;\n  }\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\n\n  get autoCapture() {\n    return this._autoCapture;\n  }\n\n  set autoCapture(value) {\n    this._autoCapture = coerceBooleanProperty(value);\n  }\n\n  ngOnDestroy() {\n    this.focusTrap.destroy(); // 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\n    if (this._previouslyFocusedElement) {\n      this._previouslyFocusedElement.focus();\n\n      this._previouslyFocusedElement = null;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.focusTrap.attachAnchors();\n\n    if (this.autoCapture) {\n      this._captureFocus();\n    }\n  }\n\n  ngDoCheck() {\n    if (!this.focusTrap.hasAttached()) {\n      this.focusTrap.attachAnchors();\n    }\n  }\n\n  ngOnChanges(changes) {\n    const autoCaptureChange = changes['autoCapture'];\n\n    if (autoCaptureChange && !autoCaptureChange.firstChange && this.autoCapture && this.focusTrap.hasAttached()) {\n      this._captureFocus();\n    }\n  }\n\n  _captureFocus() {\n    this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n    this.focusTrap.focusInitialElementWhenReady();\n  }\n\n}\n\nCdkTrapFocus.ɵfac = function CdkTrapFocus_Factory(t) {\n  return new (t || CdkTrapFocus)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(FocusTrapFactory), i0.ɵɵdirectiveInject(DOCUMENT));\n};\n\nCdkTrapFocus.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkTrapFocus,\n  selectors: [[\"\", \"cdkTrapFocus\", \"\"]],\n  inputs: {\n    enabled: [\"cdkTrapFocus\", \"enabled\"],\n    autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"]\n  },\n  exportAs: [\"cdkTrapFocus\"],\n  features: [i0.ɵɵNgOnChangesFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkTrapFocus, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkTrapFocus]',\n      exportAs: 'cdkTrapFocus'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: FocusTrapFactory\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, {\n    enabled: [{\n      type: Input,\n      args: ['cdkTrapFocus']\n    }],\n    autoCapture: [{\n      type: Input,\n      args: ['cdkTrapFocusAutoCapture']\n    }]\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/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\n\n\nclass ConfigurableFocusTrap extends FocusTrap {\n  constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n    super(_element, _checker, _ngZone, _document, config.defer);\n    this._focusTrapManager = _focusTrapManager;\n    this._inertStrategy = _inertStrategy;\n\n    this._focusTrapManager.register(this);\n  }\n  /** Whether the FocusTrap is enabled. */\n\n\n  get enabled() {\n    return this._enabled;\n  }\n\n  set enabled(value) {\n    this._enabled = value;\n\n    if (this._enabled) {\n      this._focusTrapManager.register(this);\n    } else {\n      this._focusTrapManager.deregister(this);\n    }\n  }\n  /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n\n\n  destroy() {\n    this._focusTrapManager.deregister(this);\n\n    super.destroy();\n  }\n  /** @docs-private Implemented as part of ManagedFocusTrap. */\n\n\n  _enable() {\n    this._inertStrategy.preventFocus(this);\n\n    this.toggleAnchors(true);\n  }\n  /** @docs-private Implemented as part of ManagedFocusTrap. */\n\n\n  _disable() {\n    this._inertStrategy.allowFocus(this);\n\n    this.toggleAnchors(false);\n  }\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/**\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/** The injection token used to specify the inert strategy. */\n\n\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\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/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\n\nclass EventListenerFocusTrapInertStrategy {\n  constructor() {\n    /** Focus event handler. */\n    this._listener = null;\n  }\n  /** Adds a document event listener that keeps focus inside the FocusTrap. */\n\n\n  preventFocus(focusTrap) {\n    // Ensure there's only one listener per document\n    if (this._listener) {\n      focusTrap._document.removeEventListener('focus', this._listener, true);\n    }\n\n    this._listener = e => this._trapFocus(focusTrap, e);\n\n    focusTrap._ngZone.runOutsideAngular(() => {\n      focusTrap._document.addEventListener('focus', this._listener, true);\n    });\n  }\n  /** Removes the event listener added in preventFocus. */\n\n\n  allowFocus(focusTrap) {\n    if (!this._listener) {\n      return;\n    }\n\n    focusTrap._document.removeEventListener('focus', this._listener, true);\n\n    this._listener = null;\n  }\n  /**\n   * Refocuses the first element in the FocusTrap if the focus event target was outside\n   * the FocusTrap.\n   *\n   * This is an event listener callback. The event listener is added in runOutsideAngular,\n   * so all this code runs outside Angular as well.\n   */\n\n\n  _trapFocus(focusTrap, event) {\n    const target = event.target;\n    const focusTrapRoot = focusTrap._element; // Don't refocus if target was in an overlay, because the overlay might be associated\n    // with an element inside the FocusTrap, ex. mat-select.\n\n    if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n      // Some legacy FocusTrap usages have logic that focuses some element on the page\n      // just before FocusTrap is destroyed. For backwards compatibility, wait\n      // to be sure FocusTrap is still enabled before refocusing.\n      setTimeout(() => {\n        // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n        if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n          focusTrap.focusFirstTabbableElement();\n        }\n      });\n    }\n  }\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/** Injectable that ensures only the most recently enabled FocusTrap is active. */\n\n\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\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\n    if (stack.length) {\n      stack[stack.length - 1]._disable();\n    }\n\n    stack.push(focusTrap);\n\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\n\n  deregister(focusTrap) {\n    focusTrap._disable();\n\n    const stack = this._focusTrapStack;\n    const i = stack.indexOf(focusTrap);\n\n    if (i !== -1) {\n      stack.splice(i, 1);\n\n      if (stack.length) {\n        stack[stack.length - 1]._enable();\n      }\n    }\n  }\n\n}\n\nFocusTrapManager.ɵfac = function FocusTrapManager_Factory(t) {\n  return new (t || FocusTrapManager)();\n};\n\nFocusTrapManager.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FocusTrapManager,\n  factory: FocusTrapManager.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FocusTrapManager, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\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/** Factory that allows easy instantiation of configurable focus traps. */\n\n\nclass ConfigurableFocusTrapFactory {\n  constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n    this._checker = _checker;\n    this._ngZone = _ngZone;\n    this._focusTrapManager = _focusTrapManager;\n    this._document = _document; // TODO split up the strategies into different modules, similar to DateAdapter.\n\n    this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n  }\n\n  create(element, config = {\n    defer: false\n  }) {\n    let configObject;\n\n    if (typeof config === 'boolean') {\n      configObject = {\n        defer: config\n      };\n    } else {\n      configObject = config;\n    }\n\n    return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n  }\n\n}\n\nConfigurableFocusTrapFactory.ɵfac = function ConfigurableFocusTrapFactory_Factory(t) {\n  return new (t || ConfigurableFocusTrapFactory)(i0.ɵɵinject(InteractivityChecker), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(FocusTrapManager), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(FOCUS_TRAP_INERT_STRATEGY, 8));\n};\n\nConfigurableFocusTrapFactory.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ConfigurableFocusTrapFactory,\n  factory: ConfigurableFocusTrapFactory.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ConfigurableFocusTrapFactory, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: InteractivityChecker\n    }, {\n      type: i0.NgZone\n    }, {\n      type: FocusTrapManager\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [FOCUS_TRAP_INERT_STRATEGY]\n      }]\n    }];\n  }, null);\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/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\n\n\nfunction isFakeMousedownFromScreenReader(event) {\n  // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n  // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n  // zero. Note that there's an edge case where the user could click the 0x0 spot of the screen\n  // themselves, but that is unlikely to contain interaction elements. Historically we used to\n  // check `event.buttons === 0`, however that no longer works on recent versions of NVDA.\n  return event.offsetX === 0 && event.offsetY === 0;\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\n\n\nfunction isFakeTouchstartFromScreenReader(event) {\n  const touch = event.touches && event.touches[0] || event.changedTouches && event.changedTouches[0]; // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n  // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n  // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n  // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n\n  return !!touch && touch.identifier === -1 && (touch.radiusX == null || touch.radiusX === 1) && (touch.radiusY == null || touch.radiusY === 1);\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/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\n\n\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n *    in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n *    confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n *    these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\n\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n  ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT]\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\n\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\n\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n  passive: true,\n  capture: true\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\n\nclass InputModalityDetector {\n  constructor(_platform, ngZone, document, options) {\n    this._platform = _platform;\n    /**\n     * The most recently detected input modality event target. Is null if no input modality has been\n     * detected or if the associated event target is null for some unknown reason.\n     */\n\n    this._mostRecentTarget = null;\n    /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n\n    this._modality = new BehaviorSubject(null);\n    /**\n     * The timestamp of the last touch input modality. Used to determine whether mousedown events\n     * should be attributed to mouse or touch.\n     */\n\n    this._lastTouchMs = 0;\n    /**\n     * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n     * bound.\n     */\n\n    this._onKeydown = event => {\n      // If this is one of the keys we should ignore, then ignore it and don't update the input\n      // modality to keyboard.\n      if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n        return;\n      }\n\n      this._modality.next('keyboard');\n\n      this._mostRecentTarget = _getEventTarget(event);\n    };\n    /**\n     * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n     * gets bound.\n     */\n\n\n    this._onMousedown = event => {\n      // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n      // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n      // after the previous touch event.\n      if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n        return;\n      } // Fake mousedown events are fired by some screen readers when controls are activated by the\n      // screen reader. Attribute them to keyboard input modality.\n\n\n      this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n\n      this._mostRecentTarget = _getEventTarget(event);\n    };\n    /**\n     * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n     * gets bound.\n     */\n\n\n    this._onTouchstart = event => {\n      // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n      // events are fired. Again, attribute to keyboard input modality.\n      if (isFakeTouchstartFromScreenReader(event)) {\n        this._modality.next('keyboard');\n\n        return;\n      } // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n      // triggered via mouse vs touch.\n\n\n      this._lastTouchMs = Date.now();\n\n      this._modality.next('touch');\n\n      this._mostRecentTarget = _getEventTarget(event);\n    };\n\n    this._options = { ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n      ...options\n    }; // Skip the first emission as it's null.\n\n    this.modalityDetected = this._modality.pipe(skip(1));\n    this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged()); // If we're not in a browser, this service should do nothing, as there's no relevant input\n    // modality to detect.\n\n    if (_platform.isBrowser) {\n      ngZone.runOutsideAngular(() => {\n        document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n        document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n        document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n      });\n    }\n  }\n  /** The most recently detected input modality. */\n\n\n  get mostRecentModality() {\n    return this._modality.value;\n  }\n\n  ngOnDestroy() {\n    this._modality.complete();\n\n    if (this._platform.isBrowser) {\n      document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n      document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n      document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n    }\n  }\n\n}\n\nInputModalityDetector.ɵfac = function InputModalityDetector_Factory(t) {\n  return new (t || InputModalityDetector)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(INPUT_MODALITY_DETECTOR_OPTIONS, 8));\n};\n\nInputModalityDetector.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: InputModalityDetector,\n  factory: InputModalityDetector.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(InputModalityDetector, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.Platform\n    }, {\n      type: i0.NgZone\n    }, {\n      type: Document,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n      }]\n    }];\n  }, null);\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\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n  providedIn: 'root',\n  factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY\n});\n/** @docs-private */\n\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n  return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\n\n\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\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\nclass LiveAnnouncer {\n  constructor(elementToken, _ngZone, _document, _defaultOptions) {\n    this._ngZone = _ngZone;\n    this._defaultOptions = _defaultOptions; // We inject the live element and document as `any` because the constructor signature cannot\n    // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n    // a class decorator causes TypeScript to preserve the constructor signature types.\n\n    this._document = _document;\n    this._liveElement = elementToken || this._createLiveElement();\n  }\n\n  announce(message, ...args) {\n    const defaultOptions = this._defaultOptions;\n    let politeness;\n    let duration;\n\n    if (args.length === 1 && typeof args[0] === 'number') {\n      duration = args[0];\n    } else {\n      [politeness, duration] = args;\n    }\n\n    this.clear();\n    clearTimeout(this._previousTimeout);\n\n    if (!politeness) {\n      politeness = defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n    }\n\n    if (duration == null && defaultOptions) {\n      duration = defaultOptions.duration;\n    } // TODO: ensure changing the politeness works on all environments we support.\n\n\n    this._liveElement.setAttribute('aria-live', politeness); // This 100ms timeout is necessary for some browser + screen-reader combinations:\n    // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n    // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n    //   second time without clearing and then using a non-zero delay.\n    // (using JAWS 17 at time of this writing).\n\n\n    return this._ngZone.runOutsideAngular(() => {\n      return new Promise(resolve => {\n        clearTimeout(this._previousTimeout);\n        this._previousTimeout = setTimeout(() => {\n          this._liveElement.textContent = message;\n          resolve();\n\n          if (typeof duration === 'number') {\n            this._previousTimeout = setTimeout(() => this.clear(), duration);\n          }\n        }, 100);\n      });\n    });\n  }\n  /**\n   * Clears the current text from the announcer element. Can be used to prevent\n   * screen readers from reading the text out again while the user is going\n   * through the page landmarks.\n   */\n\n\n  clear() {\n    if (this._liveElement) {\n      this._liveElement.textContent = '';\n    }\n  }\n\n  ngOnDestroy() {\n    clearTimeout(this._previousTimeout);\n    this._liveElement?.remove();\n    this._liveElement = null;\n  }\n\n  _createLiveElement() {\n    const elementClass = 'cdk-live-announcer-element';\n\n    const previousElements = this._document.getElementsByClassName(elementClass);\n\n    const liveEl = this._document.createElement('div'); // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n\n\n    for (let i = 0; i < previousElements.length; i++) {\n      previousElements[i].remove();\n    }\n\n    liveEl.classList.add(elementClass);\n    liveEl.classList.add('cdk-visually-hidden');\n    liveEl.setAttribute('aria-atomic', 'true');\n    liveEl.setAttribute('aria-live', 'polite');\n\n    this._document.body.appendChild(liveEl);\n\n    return liveEl;\n  }\n\n}\n\nLiveAnnouncer.ɵfac = function LiveAnnouncer_Factory(t) {\n  return new (t || LiveAnnouncer)(i0.ɵɵinject(LIVE_ANNOUNCER_ELEMENT_TOKEN, 8), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT), i0.ɵɵinject(LIVE_ANNOUNCER_DEFAULT_OPTIONS, 8));\n};\n\nLiveAnnouncer.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: LiveAnnouncer,\n  factory: LiveAnnouncer.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(LiveAnnouncer, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n      }]\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n      }]\n    }];\n  }, null);\n})();\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\n\n\nclass CdkAriaLive {\n  constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n    this._elementRef = _elementRef;\n    this._liveAnnouncer = _liveAnnouncer;\n    this._contentObserver = _contentObserver;\n    this._ngZone = _ngZone;\n    this._politeness = 'polite';\n  }\n  /** The aria-live politeness level to use when announcing messages. */\n\n\n  get politeness() {\n    return this._politeness;\n  }\n\n  set politeness(value) {\n    this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n\n    if (this._politeness === 'off') {\n      if (this._subscription) {\n        this._subscription.unsubscribe();\n\n        this._subscription = null;\n      }\n    } else if (!this._subscription) {\n      this._subscription = this._ngZone.runOutsideAngular(() => {\n        return this._contentObserver.observe(this._elementRef).subscribe(() => {\n          // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n          const elementText = this._elementRef.nativeElement.textContent; // The `MutationObserver` fires also for attribute\n          // changes which we don't want to announce.\n\n          if (elementText !== this._previousAnnouncedText) {\n            this._liveAnnouncer.announce(elementText, this._politeness);\n\n            this._previousAnnouncedText = elementText;\n          }\n        });\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._subscription) {\n      this._subscription.unsubscribe();\n    }\n  }\n\n}\n\nCdkAriaLive.ɵfac = function CdkAriaLive_Factory(t) {\n  return new (t || CdkAriaLive)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(LiveAnnouncer), i0.ɵɵdirectiveInject(i1$1.ContentObserver), i0.ɵɵdirectiveInject(i0.NgZone));\n};\n\nCdkAriaLive.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkAriaLive,\n  selectors: [[\"\", \"cdkAriaLive\", \"\"]],\n  inputs: {\n    politeness: [\"cdkAriaLive\", \"politeness\"]\n  },\n  exportAs: [\"cdkAriaLive\"]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkAriaLive, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkAriaLive]',\n      exportAs: 'cdkAriaLive'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: LiveAnnouncer\n    }, {\n      type: i1$1.ContentObserver\n    }, {\n      type: i0.NgZone\n    }];\n  }, {\n    politeness: [{\n      type: Input,\n      args: ['cdkAriaLive']\n    }]\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/** InjectionToken for FocusMonitorOptions. */\n\n\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\n\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n  passive: true,\n  capture: true\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\n\nclass FocusMonitor {\n  constructor(_ngZone, _platform, _inputModalityDetector,\n  /** @breaking-change 11.0.0 make document required */\n  document, options) {\n    this._ngZone = _ngZone;\n    this._platform = _platform;\n    this._inputModalityDetector = _inputModalityDetector;\n    /** The focus origin that the next focus event is a result of. */\n\n    this._origin = null;\n    /** Whether the window has just been focused. */\n\n    this._windowFocused = false;\n    /**\n     * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n     * focus events to touch interactions requires special logic.\n     */\n\n    this._originFromTouchInteraction = false;\n    /** Map of elements being monitored to their info. */\n\n    this._elementInfo = new Map();\n    /** The number of elements currently being monitored. */\n\n    this._monitoredElementCount = 0;\n    /**\n     * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n     * as well as the number of monitored elements that they contain. We have to treat focus/blur\n     * handlers differently from the rest of the events, because the browser won't emit events\n     * to the document when focus moves inside of a shadow root.\n     */\n\n    this._rootNodeFocusListenerCount = new Map();\n    /**\n     * Event listener for `focus` events on the window.\n     * Needs to be an arrow function in order to preserve the context when it gets bound.\n     */\n\n    this._windowFocusListener = () => {\n      // Make a note of when the window regains focus, so we can\n      // restore the origin info for the focused element.\n      this._windowFocused = true;\n      this._windowFocusTimeoutId = setTimeout(() => this._windowFocused = false);\n    };\n    /** Subject for stopping our InputModalityDetector subscription. */\n\n\n    this._stopInputModalityDetector = new Subject();\n    /**\n     * Event listener for `focus` and 'blur' events on the document.\n     * Needs to be an arrow function in order to preserve the context when it gets bound.\n     */\n\n    this._rootNodeFocusAndBlurListener = event => {\n      const target = _getEventTarget(event);\n\n      const handler = event.type === 'focus' ? this._onFocus : this._onBlur; // We need to walk up the ancestor chain in order to support `checkChildren`.\n\n      for (let element = target; element; element = element.parentElement) {\n        handler.call(this, event, element);\n      }\n    };\n\n    this._document = document;\n    this._detectionMode = options?.detectionMode || 0\n    /* IMMEDIATE */\n    ;\n  }\n\n  monitor(element, checkChildren = false) {\n    const nativeElement = coerceElement(element); // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n\n    if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n      return of(null);\n    } // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n    // the shadow root, rather than the `document`, because the browser won't emit focus events\n    // to the `document`, if focus is moving within the same shadow root.\n\n\n    const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n\n    const cachedInfo = this._elementInfo.get(nativeElement); // Check if we're already monitoring this element.\n\n\n    if (cachedInfo) {\n      if (checkChildren) {\n        // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n        // observers into ones that behave as if `checkChildren` was turned on. We need a more\n        // robust solution.\n        cachedInfo.checkChildren = true;\n      }\n\n      return cachedInfo.subject;\n    } // Create monitored element info.\n\n\n    const info = {\n      checkChildren: checkChildren,\n      subject: new Subject(),\n      rootNode\n    };\n\n    this._elementInfo.set(nativeElement, info);\n\n    this._registerGlobalListeners(info);\n\n    return info.subject;\n  }\n\n  stopMonitoring(element) {\n    const nativeElement = coerceElement(element);\n\n    const elementInfo = this._elementInfo.get(nativeElement);\n\n    if (elementInfo) {\n      elementInfo.subject.complete();\n\n      this._setClasses(nativeElement);\n\n      this._elementInfo.delete(nativeElement);\n\n      this._removeGlobalListeners(elementInfo);\n    }\n  }\n\n  focusVia(element, origin, options) {\n    const nativeElement = coerceElement(element);\n\n    const focusedElement = this._getDocument().activeElement; // If the element is focused already, calling `focus` again won't trigger the event listener\n    // which means that the focus classes won't be updated. If that's the case, update the classes\n    // directly without waiting for an event.\n\n\n    if (nativeElement === focusedElement) {\n      this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n    } else {\n      this._setOrigin(origin); // `focus` isn't available on the server\n\n\n      if (typeof nativeElement.focus === 'function') {\n        nativeElement.focus(options);\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n  }\n  /** Access injected document if available or fallback to global document reference */\n\n\n  _getDocument() {\n    return this._document || document;\n  }\n  /** Use defaultView of injected document if available or fallback to global window reference */\n\n\n  _getWindow() {\n    const doc = this._getDocument();\n\n    return doc.defaultView || window;\n  }\n\n  _getFocusOrigin(focusEventTarget) {\n    if (this._origin) {\n      // If the origin was realized via a touch interaction, we need to perform additional checks\n      // to determine whether the focus origin should be attributed to touch or program.\n      if (this._originFromTouchInteraction) {\n        return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n      } else {\n        return this._origin;\n      }\n    } // If the window has just regained focus, we can restore the most recent origin from before the\n    // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n    // focus. This typically means one of two things happened:\n    //\n    // 1) The element was programmatically focused, or\n    // 2) The element was focused via screen reader navigation (which generally doesn't fire\n    //    events).\n    //\n    // Because we can't distinguish between these two cases, we default to setting `program`.\n\n\n    return this._windowFocused && this._lastFocusOrigin ? this._lastFocusOrigin : 'program';\n  }\n  /**\n   * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n   * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n   * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n   * event was directly caused by the touch interaction or (2) the focus event was caused by a\n   * subsequent programmatic focus call triggered by the touch interaction.\n   * @param focusEventTarget The target of the focus event under examination.\n   */\n\n\n  _shouldBeAttributedToTouch(focusEventTarget) {\n    // Please note that this check is not perfect. Consider the following edge case:\n    //\n    // <div #parent tabindex=\"0\">\n    //   <div #child tabindex=\"0\" (click)=\"#parent.focus()\"></div>\n    // </div>\n    //\n    // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n    // #child, #parent is programmatically focused. This code will attribute the focus to touch\n    // instead of program. This is a relatively minor edge-case that can be worked around by using\n    // focusVia(parent, 'program') to focus #parent.\n    return this._detectionMode === 1\n    /* EVENTUAL */\n    || !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget);\n  }\n  /**\n   * Sets the focus classes on the element based on the given focus origin.\n   * @param element The element to update the classes on.\n   * @param origin The focus origin.\n   */\n\n\n  _setClasses(element, origin) {\n    element.classList.toggle('cdk-focused', !!origin);\n    element.classList.toggle('cdk-touch-focused', origin === 'touch');\n    element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n    element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n    element.classList.toggle('cdk-program-focused', origin === 'program');\n  }\n  /**\n   * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n   * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n   * the origin being set.\n   * @param origin The origin to set.\n   * @param isFromInteraction Whether we are setting the origin from an interaction event.\n   */\n\n\n  _setOrigin(origin, isFromInteraction = false) {\n    this._ngZone.runOutsideAngular(() => {\n      this._origin = origin;\n      this._originFromTouchInteraction = origin === 'touch' && isFromInteraction; // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n      // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n      // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n      // a touch event because when a touch event is fired, the associated focus event isn't yet in\n      // the event queue. Before doing so, clear any pending timeouts.\n\n      if (this._detectionMode === 0\n      /* IMMEDIATE */\n      ) {\n        clearTimeout(this._originTimeoutId);\n        const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n        this._originTimeoutId = setTimeout(() => this._origin = null, ms);\n      }\n    });\n  }\n  /**\n   * Handles focus events on a registered element.\n   * @param event The focus event.\n   * @param element The monitored element.\n   */\n\n\n  _onFocus(event, element) {\n    // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n    // focus event affecting the monitored element. If we want to use the origin of the first event\n    // instead we should check for the cdk-focused class here and return if the element already has\n    // it. (This only matters for elements that have includesChildren = true).\n    // If we are not counting child-element-focus as focused, make sure that the event target is the\n    // monitored element itself.\n    const elementInfo = this._elementInfo.get(element);\n\n    const focusEventTarget = _getEventTarget(event);\n\n    if (!elementInfo || !elementInfo.checkChildren && element !== focusEventTarget) {\n      return;\n    }\n\n    this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n  }\n  /**\n   * Handles blur events on a registered element.\n   * @param event The blur event.\n   * @param element The monitored element.\n   */\n\n\n  _onBlur(event, element) {\n    // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n    // order to focus another child of the monitored element.\n    const elementInfo = this._elementInfo.get(element);\n\n    if (!elementInfo || elementInfo.checkChildren && event.relatedTarget instanceof Node && element.contains(event.relatedTarget)) {\n      return;\n    }\n\n    this._setClasses(element);\n\n    this._emitOrigin(elementInfo.subject, null);\n  }\n\n  _emitOrigin(subject, origin) {\n    this._ngZone.run(() => subject.next(origin));\n  }\n\n  _registerGlobalListeners(elementInfo) {\n    if (!this._platform.isBrowser) {\n      return;\n    }\n\n    const rootNode = elementInfo.rootNode;\n    const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n\n    if (!rootNodeFocusListeners) {\n      this._ngZone.runOutsideAngular(() => {\n        rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n        rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n      });\n    }\n\n    this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1); // Register global listeners when first element is monitored.\n\n\n    if (++this._monitoredElementCount === 1) {\n      // Note: we listen to events in the capture phase so we\n      // can detect them even if the user stops propagation.\n      this._ngZone.runOutsideAngular(() => {\n        const window = this._getWindow();\n\n        window.addEventListener('focus', this._windowFocusListener);\n      }); // The InputModalityDetector is also just a collection of global listeners.\n\n\n      this._inputModalityDetector.modalityDetected.pipe(takeUntil(this._stopInputModalityDetector)).subscribe(modality => {\n        this._setOrigin(modality, true\n        /* isFromInteraction */\n        );\n      });\n    }\n  }\n\n  _removeGlobalListeners(elementInfo) {\n    const rootNode = elementInfo.rootNode;\n\n    if (this._rootNodeFocusListenerCount.has(rootNode)) {\n      const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n\n      if (rootNodeFocusListeners > 1) {\n        this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n      } else {\n        rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n        rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n\n        this._rootNodeFocusListenerCount.delete(rootNode);\n      }\n    } // Unregister global listeners when last element is unmonitored.\n\n\n    if (! --this._monitoredElementCount) {\n      const window = this._getWindow();\n\n      window.removeEventListener('focus', this._windowFocusListener); // Equivalently, stop our InputModalityDetector subscription.\n\n      this._stopInputModalityDetector.next(); // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n\n\n      clearTimeout(this._windowFocusTimeoutId);\n      clearTimeout(this._originTimeoutId);\n    }\n  }\n  /** Updates all the state on an element once its focus origin has changed. */\n\n\n  _originChanged(element, origin, elementInfo) {\n    this._setClasses(element, origin);\n\n    this._emitOrigin(elementInfo.subject, origin);\n\n    this._lastFocusOrigin = origin;\n  }\n  /**\n   * Collects the `MonitoredElementInfo` of a particular element and\n   * all of its ancestors that have enabled `checkChildren`.\n   * @param element Element from which to start the search.\n   */\n\n\n  _getClosestElementsInfo(element) {\n    const results = [];\n\n    this._elementInfo.forEach((info, currentElement) => {\n      if (currentElement === element || info.checkChildren && currentElement.contains(element)) {\n        results.push([currentElement, info]);\n      }\n    });\n\n    return results;\n  }\n\n}\n\nFocusMonitor.ɵfac = function FocusMonitor_Factory(t) {\n  return new (t || FocusMonitor)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(InputModalityDetector), i0.ɵɵinject(DOCUMENT, 8), i0.ɵɵinject(FOCUS_MONITOR_DEFAULT_OPTIONS, 8));\n};\n\nFocusMonitor.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FocusMonitor,\n  factory: FocusMonitor.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FocusMonitor, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i0.NgZone\n    }, {\n      type: i1.Platform\n    }, {\n      type: InputModalityDetector\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n      }]\n    }];\n  }, null);\n})();\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n *    focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\n\n\nclass CdkMonitorFocus {\n  constructor(_elementRef, _focusMonitor) {\n    this._elementRef = _elementRef;\n    this._focusMonitor = _focusMonitor;\n    this.cdkFocusChange = new EventEmitter();\n  }\n\n  ngAfterViewInit() {\n    const element = this._elementRef.nativeElement;\n    this._monitorSubscription = this._focusMonitor.monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus')).subscribe(origin => this.cdkFocusChange.emit(origin));\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n\n    if (this._monitorSubscription) {\n      this._monitorSubscription.unsubscribe();\n    }\n  }\n\n}\n\nCdkMonitorFocus.ɵfac = function CdkMonitorFocus_Factory(t) {\n  return new (t || CdkMonitorFocus)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(FocusMonitor));\n};\n\nCdkMonitorFocus.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkMonitorFocus,\n  selectors: [[\"\", \"cdkMonitorElementFocus\", \"\"], [\"\", \"cdkMonitorSubtreeFocus\", \"\"]],\n  outputs: {\n    cdkFocusChange: \"cdkFocusChange\"\n  }\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkMonitorFocus, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: FocusMonitor\n    }];\n  }, {\n    cdkFocusChange: [{\n      type: Output\n    }]\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/** CSS class applied to the document body when in black-on-white high-contrast mode. */\n\n\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\n\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\n\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\n\nclass HighContrastModeDetector {\n  constructor(_platform, document) {\n    this._platform = _platform;\n    this._document = document;\n  }\n  /** Gets the current high-contrast-mode for the page. */\n\n\n  getHighContrastMode() {\n    if (!this._platform.isBrowser) {\n      return 0\n      /* NONE */\n      ;\n    } // Create a test element with an arbitrary background-color that is neither black nor\n    // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n    // appending the test element to the DOM does not affect layout by absolutely positioning it\n\n\n    const testElement = this._document.createElement('div');\n\n    testElement.style.backgroundColor = 'rgb(1,2,3)';\n    testElement.style.position = 'absolute';\n\n    this._document.body.appendChild(testElement); // Get the computed style for the background color, collapsing spaces to normalize between\n    // browsers. Once we get this color, we no longer need the test element. Access the `window`\n    // via the document so we can fake it in tests. Note that we have extra null checks, because\n    // this logic will likely run during app bootstrap and throwing can break the entire app.\n\n\n    const documentWindow = this._document.defaultView || window;\n    const computedStyle = documentWindow && documentWindow.getComputedStyle ? documentWindow.getComputedStyle(testElement) : null;\n    const computedColor = (computedStyle && computedStyle.backgroundColor || '').replace(/ /g, '');\n    testElement.remove();\n\n    switch (computedColor) {\n      case 'rgb(0,0,0)':\n        return 2\n        /* WHITE_ON_BLACK */\n        ;\n\n      case 'rgb(255,255,255)':\n        return 1\n        /* BLACK_ON_WHITE */\n        ;\n    }\n\n    return 0\n    /* NONE */\n    ;\n  }\n  /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n\n\n  _applyBodyHighContrastModeCssClasses() {\n    if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n      const bodyClasses = this._document.body.classList; // IE11 doesn't support `classList` operations with multiple arguments\n\n      bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n      bodyClasses.remove(BLACK_ON_WHITE_CSS_CLASS);\n      bodyClasses.remove(WHITE_ON_BLACK_CSS_CLASS);\n      this._hasCheckedHighContrastMode = true;\n      const mode = this.getHighContrastMode();\n\n      if (mode === 1\n      /* BLACK_ON_WHITE */\n      ) {\n        bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n        bodyClasses.add(BLACK_ON_WHITE_CSS_CLASS);\n      } else if (mode === 2\n      /* WHITE_ON_BLACK */\n      ) {\n        bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n        bodyClasses.add(WHITE_ON_BLACK_CSS_CLASS);\n      }\n    }\n  }\n\n}\n\nHighContrastModeDetector.ɵfac = function HighContrastModeDetector_Factory(t) {\n  return new (t || HighContrastModeDetector)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(DOCUMENT));\n};\n\nHighContrastModeDetector.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: HighContrastModeDetector,\n  factory: HighContrastModeDetector.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(HighContrastModeDetector, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.Platform\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\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\nclass A11yModule {\n  constructor(highContrastModeDetector) {\n    highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n  }\n\n}\n\nA11yModule.ɵfac = function A11yModule_Factory(t) {\n  return new (t || A11yModule)(i0.ɵɵinject(HighContrastModeDetector));\n};\n\nA11yModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: A11yModule\n});\nA11yModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[PlatformModule, ObserversModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(A11yModule, [{\n    type: NgModule,\n    args: [{\n      imports: [PlatformModule, ObserversModule],\n      declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n      exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus]\n    }]\n  }], function () {\n    return [{\n      type: HighContrastModeDetector\n    }];\n  }, null);\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/a11y.mjs"],"names":["DOCUMENT","i0","Injectable","Inject","QueryList","Directive","Input","InjectionToken","Optional","EventEmitter","Output","NgModule","Subject","Subscription","BehaviorSubject","of","hasModifierKey","A","Z","ZERO","NINE","END","HOME","LEFT_ARROW","RIGHT_ARROW","UP_ARROW","DOWN_ARROW","TAB","ALT","CONTROL","MAC_META","META","SHIFT","tap","debounceTime","filter","map","take","skip","distinctUntilChanged","takeUntil","coerceBooleanProperty","coerceElement","i1","_getFocusedElementPierceShadowDom","normalizePassiveListenerOptions","_getEventTarget","_getShadowRoot","PlatformModule","i1$1","ObserversModule","ID_DELIMITER","addAriaReferencedId","el","attr","id","ids","getAriaReferenceIds","some","existingId","trim","push","setAttribute","join","removeAriaReferencedId","filteredIds","val","length","removeAttribute","getAttribute","match","MESSAGES_CONTAINER_ID","CDK_DESCRIBEDBY_ID_PREFIX","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","nextId","messageRegistry","Map","messagesContainer","AriaDescriber","constructor","_document","describe","hostElement","message","role","_canBeDescribed","key","getKey","setMessageId","set","messageElement","referenceCount","has","_createMessageElement","_isElementDescribedByMessage","_addMessageReference","removeDescription","_isElementNode","_removeMessageReference","registeredMessage","get","_deleteMessageElement","childNodes","_deleteMessagesContainer","ngOnDestroy","describedElements","querySelectorAll","i","_removeCdkDescribedByReferenceIds","clear","createElement","textContent","_createMessagesContainer","appendChild","remove","delete","preExistingContainer","getElementById","style","visibility","classList","add","body","element","originalReferenceIds","indexOf","referenceIds","messageId","trimmedMessage","ariaLabel","nodeType","ELEMENT_NODE","ɵfac","ɵprov","type","args","providedIn","undefined","decorators","ListKeyManager","_items","_activeItemIndex","_activeItem","_wrap","_letterKeyStream","_typeaheadSubscription","EMPTY","_vertical","_allowedModifierKeys","_homeAndEnd","_skipPredicateFn","item","disabled","_pressedLetters","tabOut","change","changes","subscribe","newItems","itemArray","toArray","newIndex","skipPredicate","predicate","withWrap","shouldWrap","withVerticalOrientation","enabled","withHorizontalOrientation","direction","_horizontal","withAllowedModifierKeys","keys","withTypeAhead","debounceInterval","ngDevMode","getLabel","Error","unsubscribe","pipe","letter","inputString","items","_getItemsArray","index","toUpperCase","setActiveItem","withHomeAndEnd","previousActiveItem","updateActiveItem","next","onKeydown","event","keyCode","modifiers","isModifierAllowed","every","modifier","setNextItemActive","setPreviousItemActive","setFirstItemActive","setLastItemActive","toLocaleUpperCase","String","fromCharCode","preventDefault","activeItemIndex","activeItem","isTyping","_setActiveItemByIndex","_setActiveItemByDelta","delta","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ActiveDescendantKeyManager","setInactiveStyles","setActiveStyles","FocusKeyManager","arguments","_origin","setFocusOrigin","origin","focus","IsFocusableConfig","ignoreVisibility","InteractivityChecker","_platform","isDisabled","hasAttribute","isVisible","hasGeometry","getComputedStyle","isTabbable","isBrowser","frameElement","getFrameElement","getWindow","getTabIndexValue","nodeName","toLowerCase","tabIndexValue","WEBKIT","IOS","isPotentiallyTabbableIOS","FIREFOX","tabIndex","isFocusable","config","isPotentiallyFocusable","Platform","window","offsetWidth","offsetHeight","getClientRects","isNativeFormElement","isHiddenInput","isInputElement","isAnchorWithHref","isAnchorElement","hasValidTabIndex","isNaN","parseInt","inputType","node","ownerDocument","defaultView","FocusTrap","_element","_checker","_ngZone","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","_enabled","attachAnchors","value","_startAnchor","_endAnchor","_toggleAnchorTabIndex","destroy","startAnchor","endAnchor","removeEventListener","runOutsideAngular","_createAnchor","addEventListener","parentNode","insertBefore","nextSibling","focusInitialElementWhenReady","options","Promise","resolve","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","console","warn","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","querySelector","focusableChild","hasAttached","root","children","tabbableChild","anchor","isEnabled","toggleAnchors","fn","isStable","onStable","FocusTrapFactory","create","deferCaptureElements","NgZone","CdkTrapFocus","_elementRef","_focusTrapFactory","_previouslyFocusedElement","focusTrap","nativeElement","autoCapture","_autoCapture","ngAfterContentInit","_captureFocus","ngDoCheck","ngOnChanges","autoCaptureChange","firstChange","ElementRef","ɵdir","selector","exportAs","ConfigurableFocusTrap","_focusTrapManager","_inertStrategy","defer","register","deregister","_enable","preventFocus","_disable","allowFocus","FOCUS_TRAP_INERT_STRATEGY","EventListenerFocusTrapInertStrategy","_listener","e","_trapFocus","target","focusTrapRoot","contains","closest","setTimeout","activeElement","FocusTrapManager","_focusTrapStack","ft","stack","splice","ConfigurableFocusTrapFactory","configObject","isFakeMousedownFromScreenReader","offsetX","offsetY","isFakeTouchstartFromScreenReader","touch","touches","changedTouches","identifier","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","TOUCH_BUFFER_MS","modalityEventListenerOptions","passive","capture","InputModalityDetector","ngZone","document","_mostRecentTarget","_modality","_lastTouchMs","_onKeydown","_options","_onMousedown","Date","now","_onTouchstart","modalityDetected","modalityChanged","mostRecentModality","complete","Document","LIVE_ANNOUNCER_ELEMENT_TOKEN","factory","LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY","LIVE_ANNOUNCER_DEFAULT_OPTIONS","LiveAnnouncer","elementToken","_defaultOptions","_liveElement","_createLiveElement","announce","defaultOptions","politeness","duration","clearTimeout","_previousTimeout","elementClass","previousElements","getElementsByClassName","liveEl","CdkAriaLive","_liveAnnouncer","_contentObserver","_politeness","_subscription","observe","elementText","_previousAnnouncedText","ContentObserver","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","handler","_onFocus","_onBlur","parentElement","call","_detectionMode","detectionMode","monitor","checkChildren","rootNode","_getDocument","cachedInfo","subject","info","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","focusedElement","_getClosestElementsInfo","forEach","currentElement","_originChanged","_setOrigin","_info","_getWindow","doc","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","toggle","isFromInteraction","_originTimeoutId","ms","relatedTarget","Node","_emitOrigin","run","rootNodeFocusListeners","modality","results","CdkMonitorFocus","_focusMonitor","cdkFocusChange","ngAfterViewInit","_monitorSubscription","emit","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","getHighContrastMode","testElement","backgroundColor","position","documentWindow","computedStyle","computedColor","replace","_applyBodyHighContrastModeCssClasses","_hasCheckedHighContrastMode","bodyClasses","mode","A11yModule","highContrastModeDetector","ɵmod","ɵinj","imports","declarations","exports"],"mappings":"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","sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, QueryList, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot, PlatformModule } from '@angular/cdk/platform';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\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/** IDs are delimited by an empty space, as per the spec. */\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n    const ids = getAriaReferenceIds(el, attr);\n    if (ids.some(existingId => existingId.trim() == id.trim())) {\n        return;\n    }\n    ids.push(id.trim());\n    el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n    const ids = getAriaReferenceIds(el, attr);\n    const filteredIds = ids.filter(val => val != id.trim());\n    if (filteredIds.length) {\n        el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n    }\n    else {\n        el.removeAttribute(attr);\n    }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n    // Get string array of all individual ids (whitespace delimited) in the attribute value\n    return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\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/** ID used for the body container where all messages are appended. */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/** ID prefix used for each created message element. */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/** Attribute given to each host element that is described by a message element. */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/** Global map of all registered message elements that have been placed into the document. */\nconst messageRegistry = new Map();\n/** Container for all registered messages. */\nlet messagesContainer = null;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n    constructor(_document) {\n        this._document = _document;\n    }\n    describe(hostElement, message, role) {\n        if (!this._canBeDescribed(hostElement, message)) {\n            return;\n        }\n        const key = getKey(message, role);\n        if (typeof message !== 'string') {\n            // We need to ensure that the element has an ID.\n            setMessageId(message);\n            messageRegistry.set(key, { messageElement: message, referenceCount: 0 });\n        }\n        else if (!messageRegistry.has(key)) {\n            this._createMessageElement(message, role);\n        }\n        if (!this._isElementDescribedByMessage(hostElement, key)) {\n            this._addMessageReference(hostElement, key);\n        }\n    }\n    removeDescription(hostElement, message, role) {\n        if (!message || !this._isElementNode(hostElement)) {\n            return;\n        }\n        const key = getKey(message, role);\n        if (this._isElementDescribedByMessage(hostElement, key)) {\n            this._removeMessageReference(hostElement, key);\n        }\n        // If the message is a string, it means that it's one that we created for the\n        // consumer so we can remove it safely, otherwise we should leave it in place.\n        if (typeof message === 'string') {\n            const registeredMessage = messageRegistry.get(key);\n            if (registeredMessage && registeredMessage.referenceCount === 0) {\n                this._deleteMessageElement(key);\n            }\n        }\n        if (messagesContainer && messagesContainer.childNodes.length === 0) {\n            this._deleteMessagesContainer();\n        }\n    }\n    /** Unregisters all created message elements and removes the message container. */\n    ngOnDestroy() {\n        const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}]`);\n        for (let i = 0; i < describedElements.length; i++) {\n            this._removeCdkDescribedByReferenceIds(describedElements[i]);\n            describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n        }\n        if (messagesContainer) {\n            this._deleteMessagesContainer();\n        }\n        messageRegistry.clear();\n    }\n    /**\n     * Creates a new element in the visually hidden message container element with the message\n     * as its content and adds it to the message registry.\n     */\n    _createMessageElement(message, role) {\n        const messageElement = this._document.createElement('div');\n        setMessageId(messageElement);\n        messageElement.textContent = message;\n        if (role) {\n            messageElement.setAttribute('role', role);\n        }\n        this._createMessagesContainer();\n        messagesContainer.appendChild(messageElement);\n        messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });\n    }\n    /** Deletes the message element from the global messages container. */\n    _deleteMessageElement(key) {\n        const registeredMessage = messageRegistry.get(key);\n        registeredMessage?.messageElement?.remove();\n        messageRegistry.delete(key);\n    }\n    /** Creates the global container for all aria-describedby messages. */\n    _createMessagesContainer() {\n        if (!messagesContainer) {\n            const preExistingContainer = this._document.getElementById(MESSAGES_CONTAINER_ID);\n            // When going from the server to the client, we may end up in a situation where there's\n            // already a container on the page, but we don't have a reference to it. Clear the\n            // old container so we don't get duplicates. Doing this, instead of emptying the previous\n            // container, should be slightly faster.\n            preExistingContainer?.remove();\n            messagesContainer = this._document.createElement('div');\n            messagesContainer.id = MESSAGES_CONTAINER_ID;\n            // We add `visibility: hidden` in order to prevent text in this container from\n            // being searchable by the browser's Ctrl + F functionality.\n            // Screen-readers will still read the description for elements with aria-describedby even\n            // when the description element is not visible.\n            messagesContainer.style.visibility = 'hidden';\n            // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n            // the description element doesn't impact page layout.\n            messagesContainer.classList.add('cdk-visually-hidden');\n            this._document.body.appendChild(messagesContainer);\n        }\n    }\n    /** Deletes the global messages container. */\n    _deleteMessagesContainer() {\n        if (messagesContainer) {\n            messagesContainer.remove();\n            messagesContainer = null;\n        }\n    }\n    /** Removes all cdk-describedby messages that are hosted through the element. */\n    _removeCdkDescribedByReferenceIds(element) {\n        // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n        const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n        element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n    }\n    /**\n     * Adds a message reference to the element using aria-describedby and increments the registered\n     * message's reference count.\n     */\n    _addMessageReference(element, key) {\n        const registeredMessage = messageRegistry.get(key);\n        // Add the aria-describedby reference and set the\n        // describedby_host attribute to mark the element.\n        addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n        element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, '');\n        registeredMessage.referenceCount++;\n    }\n    /**\n     * Removes a message reference from the element using aria-describedby\n     * and decrements the registered message's reference count.\n     */\n    _removeMessageReference(element, key) {\n        const registeredMessage = messageRegistry.get(key);\n        registeredMessage.referenceCount--;\n        removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n        element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n    }\n    /** Returns true if the element has been described by the provided message ID. */\n    _isElementDescribedByMessage(element, key) {\n        const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n        const registeredMessage = messageRegistry.get(key);\n        const messageId = registeredMessage && registeredMessage.messageElement.id;\n        return !!messageId && referenceIds.indexOf(messageId) != -1;\n    }\n    /** Determines whether a message can be described on a particular element. */\n    _canBeDescribed(element, message) {\n        if (!this._isElementNode(element)) {\n            return false;\n        }\n        if (message && typeof message === 'object') {\n            // We'd have to make some assumptions about the description element's text, if the consumer\n            // passed in an element. Assume that if an element is passed in, the consumer has verified\n            // that it can be used as a description.\n            return true;\n        }\n        const trimmedMessage = message == null ? '' : `${message}`.trim();\n        const ariaLabel = element.getAttribute('aria-label');\n        // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n        // element, because screen readers will end up reading out the same text twice in a row.\n        return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n    }\n    /** Checks whether a node is an Element node. */\n    _isElementNode(element) {\n        return element.nodeType === this._document.ELEMENT_NODE;\n    }\n}\nAriaDescriber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AriaDescriber, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nAriaDescriber.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AriaDescriber, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AriaDescriber, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; } });\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n    return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element) {\n    if (!element.id) {\n        element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${nextId++}`;\n    }\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 * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n    constructor(_items) {\n        this._items = _items;\n        this._activeItemIndex = -1;\n        this._activeItem = null;\n        this._wrap = false;\n        this._letterKeyStream = new Subject();\n        this._typeaheadSubscription = Subscription.EMPTY;\n        this._vertical = true;\n        this._allowedModifierKeys = [];\n        this._homeAndEnd = false;\n        /**\n         * Predicate function that can be used to check whether an item should be skipped\n         * by the key manager. By default, disabled items are skipped.\n         */\n        this._skipPredicateFn = (item) => item.disabled;\n        // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n        this._pressedLetters = [];\n        /**\n         * Stream that emits any time the TAB key is pressed, so components can react\n         * when focus is shifted off of the list.\n         */\n        this.tabOut = new Subject();\n        /** Stream that emits whenever the active item of the list manager changes. */\n        this.change = new Subject();\n        // We allow for the items to be an array because, in some cases, the consumer may\n        // not have access to a QueryList of the items they want to manage (e.g. when the\n        // items aren't being collected via `ViewChildren` or `ContentChildren`).\n        if (_items instanceof QueryList) {\n            _items.changes.subscribe((newItems) => {\n                if (this._activeItem) {\n                    const itemArray = newItems.toArray();\n                    const newIndex = itemArray.indexOf(this._activeItem);\n                    if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n                        this._activeItemIndex = newIndex;\n                    }\n                }\n            });\n        }\n    }\n    /**\n     * Sets the predicate function that determines which items should be skipped by the\n     * list key manager.\n     * @param predicate Function that determines whether the given item should be skipped.\n     */\n    skipPredicate(predicate) {\n        this._skipPredicateFn = predicate;\n        return this;\n    }\n    /**\n     * Configures wrapping mode, which determines whether the active item will wrap to\n     * the other end of list when there are no more items in the given direction.\n     * @param shouldWrap Whether the list should wrap when reaching the end.\n     */\n    withWrap(shouldWrap = true) {\n        this._wrap = shouldWrap;\n        return this;\n    }\n    /**\n     * Configures whether the key manager should be able to move the selection vertically.\n     * @param enabled Whether vertical selection should be enabled.\n     */\n    withVerticalOrientation(enabled = true) {\n        this._vertical = enabled;\n        return this;\n    }\n    /**\n     * Configures the key manager to move the selection horizontally.\n     * Passing in `null` will disable horizontal movement.\n     * @param direction Direction in which the selection can be moved.\n     */\n    withHorizontalOrientation(direction) {\n        this._horizontal = direction;\n        return this;\n    }\n    /**\n     * Modifier keys which are allowed to be held down and whose default actions will be prevented\n     * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n     */\n    withAllowedModifierKeys(keys) {\n        this._allowedModifierKeys = keys;\n        return this;\n    }\n    /**\n     * Turns on typeahead mode which allows users to set the active item by typing.\n     * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n     */\n    withTypeAhead(debounceInterval = 200) {\n        if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n            this._items.length &&\n            this._items.some(item => typeof item.getLabel !== 'function')) {\n            throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n        }\n        this._typeaheadSubscription.unsubscribe();\n        // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n        // and convert those letters back into a string. Afterwards find the first item that starts\n        // with that string and select it.\n        this._typeaheadSubscription = this._letterKeyStream\n            .pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join('')))\n            .subscribe(inputString => {\n            const items = this._getItemsArray();\n            // Start at 1 because we want to start searching at the item immediately\n            // following the current active item.\n            for (let i = 1; i < items.length + 1; i++) {\n                const index = (this._activeItemIndex + i) % items.length;\n                const item = items[index];\n                if (!this._skipPredicateFn(item) &&\n                    item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n                    this.setActiveItem(index);\n                    break;\n                }\n            }\n            this._pressedLetters = [];\n        });\n        return this;\n    }\n    /**\n     * Configures the key manager to activate the first and last items\n     * respectively when the Home or End key is pressed.\n     * @param enabled Whether pressing the Home or End key activates the first/last item.\n     */\n    withHomeAndEnd(enabled = true) {\n        this._homeAndEnd = enabled;\n        return this;\n    }\n    setActiveItem(item) {\n        const previousActiveItem = this._activeItem;\n        this.updateActiveItem(item);\n        if (this._activeItem !== previousActiveItem) {\n            this.change.next(this._activeItemIndex);\n        }\n    }\n    /**\n     * Sets the active item depending on the key event passed in.\n     * @param event Keyboard event to be used for determining which element should be active.\n     */\n    onKeydown(event) {\n        const keyCode = event.keyCode;\n        const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n        const isModifierAllowed = modifiers.every(modifier => {\n            return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n        });\n        switch (keyCode) {\n            case TAB:\n                this.tabOut.next();\n                return;\n            case DOWN_ARROW:\n                if (this._vertical && isModifierAllowed) {\n                    this.setNextItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            case UP_ARROW:\n                if (this._vertical && isModifierAllowed) {\n                    this.setPreviousItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            case RIGHT_ARROW:\n                if (this._horizontal && isModifierAllowed) {\n                    this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            case LEFT_ARROW:\n                if (this._horizontal && isModifierAllowed) {\n                    this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            case HOME:\n                if (this._homeAndEnd && isModifierAllowed) {\n                    this.setFirstItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            case END:\n                if (this._homeAndEnd && isModifierAllowed) {\n                    this.setLastItemActive();\n                    break;\n                }\n                else {\n                    return;\n                }\n            default:\n                if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n                    // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n                    // otherwise fall back to resolving alphanumeric characters via the keyCode.\n                    if (event.key && event.key.length === 1) {\n                        this._letterKeyStream.next(event.key.toLocaleUpperCase());\n                    }\n                    else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n                        this._letterKeyStream.next(String.fromCharCode(keyCode));\n                    }\n                }\n                // Note that we return here, in order to avoid preventing\n                // the default action of non-navigational keys.\n                return;\n        }\n        this._pressedLetters = [];\n        event.preventDefault();\n    }\n    /** Index of the currently active item. */\n    get activeItemIndex() {\n        return this._activeItemIndex;\n    }\n    /** The active item. */\n    get activeItem() {\n        return this._activeItem;\n    }\n    /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n    isTyping() {\n        return this._pressedLetters.length > 0;\n    }\n    /** Sets the active item to the first enabled item in the list. */\n    setFirstItemActive() {\n        this._setActiveItemByIndex(0, 1);\n    }\n    /** Sets the active item to the last enabled item in the list. */\n    setLastItemActive() {\n        this._setActiveItemByIndex(this._items.length - 1, -1);\n    }\n    /** Sets the active item to the next enabled item in the list. */\n    setNextItemActive() {\n        this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n    }\n    /** Sets the active item to a previous enabled item in the list. */\n    setPreviousItemActive() {\n        this._activeItemIndex < 0 && this._wrap\n            ? this.setLastItemActive()\n            : this._setActiveItemByDelta(-1);\n    }\n    updateActiveItem(item) {\n        const itemArray = this._getItemsArray();\n        const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n        const activeItem = itemArray[index];\n        // Explicitly check for `null` and `undefined` because other falsy values are valid.\n        this._activeItem = activeItem == null ? null : activeItem;\n        this._activeItemIndex = index;\n    }\n    /**\n     * This method sets the active item, given a list of items and the delta between the\n     * currently active item and the new active item. It will calculate differently\n     * depending on whether wrap mode is turned on.\n     */\n    _setActiveItemByDelta(delta) {\n        this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n    }\n    /**\n     * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n     * down the list until it finds an item that is not disabled, and it will wrap if it\n     * encounters either end of the list.\n     */\n    _setActiveInWrapMode(delta) {\n        const items = this._getItemsArray();\n        for (let i = 1; i <= items.length; i++) {\n            const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n            const item = items[index];\n            if (!this._skipPredicateFn(item)) {\n                this.setActiveItem(index);\n                return;\n            }\n        }\n    }\n    /**\n     * Sets the active item properly given the default mode. In other words, it will\n     * continue to move down the list until it finds an item that is not disabled. If\n     * it encounters either end of the list, it will stop and not wrap.\n     */\n    _setActiveInDefaultMode(delta) {\n        this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n    }\n    /**\n     * Sets the active item to the first enabled item starting at the index specified. If the\n     * item is disabled, it will move in the fallbackDelta direction until it either\n     * finds an enabled item or encounters the end of the list.\n     */\n    _setActiveItemByIndex(index, fallbackDelta) {\n        const items = this._getItemsArray();\n        if (!items[index]) {\n            return;\n        }\n        while (this._skipPredicateFn(items[index])) {\n            index += fallbackDelta;\n            if (!items[index]) {\n                return;\n            }\n        }\n        this.setActiveItem(index);\n    }\n    /** Returns the items as an array. */\n    _getItemsArray() {\n        return this._items instanceof QueryList ? this._items.toArray() : this._items;\n    }\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 */\nclass ActiveDescendantKeyManager extends ListKeyManager {\n    setActiveItem(index) {\n        if (this.activeItem) {\n            this.activeItem.setInactiveStyles();\n        }\n        super.setActiveItem(index);\n        if (this.activeItem) {\n            this.activeItem.setActiveStyles();\n        }\n    }\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 */\nclass FocusKeyManager extends ListKeyManager {\n    constructor() {\n        super(...arguments);\n        this._origin = 'program';\n    }\n    /**\n     * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n     * @param origin Focus origin to be used when focusing items.\n     */\n    setFocusOrigin(origin) {\n        this._origin = origin;\n        return this;\n    }\n    setActiveItem(item) {\n        super.setActiveItem(item);\n        if (this.activeItem) {\n            this.activeItem.focus(this._origin);\n        }\n    }\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 * 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) &&\n            !this.isDisabled(element) &&\n            (config?.ignoreVisibility || this.isVisible(element)));\n    }\n}\nInteractivityChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InteractivityChecker, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nInteractivityChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InteractivityChecker, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.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 {\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 ||\n        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 `<input type=\"hidden\">`. */\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    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/**\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 be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\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            startAnchor.remove();\n        }\n        if (endAnchor) {\n            endAnchor.removeEventListener('focus', this.endAnchorListener);\n            endAnchor.remove();\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 successfully. 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 focuses 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(options) {\n        return new Promise(resolve => {\n            this._executeOnStable(() => resolve(this.focusInitialElement(options)));\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(options) {\n        return new Promise(resolve => {\n            this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\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(options) {\n        return new Promise(resolve => {\n            this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n        });\n    }\n    /**\n     * Get the specified boundary element of the trapped region.\n     * @param bound The boundary to get (start or end of trapped region).\n     * @returns The boundary element.\n     */\n    _getRegionBoundary(bound) {\n        // Contains the deprecated version of selector, for temporary backwards comparability.\n        let markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n        for (let i = 0; i < markers.length; i++) {\n            // @breaking-change 8.0.0\n            if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n                console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\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]\n            : 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(options) {\n        // Contains the deprecated version of selector, for temporary backwards comparability.\n        const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n        if (redirectToElement) {\n            // @breaking-change 8.0.0\n            if (redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n                console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\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 ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n                !this._checker.isFocusable(redirectToElement)) {\n                console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n            }\n            if (!this._checker.isFocusable(redirectToElement)) {\n                const focusableChild = this._getFirstTabbableElement(redirectToElement);\n                focusableChild?.focus(options);\n                return !!focusableChild;\n            }\n            redirectToElement.focus(options);\n            return true;\n        }\n        return this.focusFirstTabbableElement(options);\n    }\n    /**\n     * Focuses the first tabbable element within the focus trap region.\n     * @returns Whether focus was moved successfully.\n     */\n    focusFirstTabbableElement(options) {\n        const redirectToElement = this._getRegionBoundary('start');\n        if (redirectToElement) {\n            redirectToElement.focus(options);\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(options) {\n        const redirectToElement = this._getRegionBoundary('end');\n        if (redirectToElement) {\n            redirectToElement.focus(options);\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        const children = root.children;\n        for (let i = 0; i < children.length; i++) {\n            const 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        const children = root.children;\n        for (let i = children.length - 1; i >= 0; i--) {\n            const 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 11.0.0\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.0.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.0.1\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; } });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n    constructor(_elementRef, _focusTrapFactory, \n    /**\n     * @deprecated No longer being used. To be removed.\n     * @breaking-change 13.0.0\n     */\n    _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.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 &&\n            !autoCaptureChange.firstChange &&\n            this.autoCapture &&\n            this.focusTrap.hasAttached()) {\n            this._captureFocus();\n        }\n    }\n    _captureFocus() {\n        this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n        this.focusTrap.focusInitialElementWhenReady();\n    }\n}\nCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkTrapFocus]',\n                    exportAs: 'cdkTrapFocus',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; }, propDecorators: { enabled: [{\n                type: Input,\n                args: ['cdkTrapFocus']\n            }], autoCapture: [{\n                type: Input,\n                args: ['cdkTrapFocusAutoCapture']\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 uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n    constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n        super(_element, _checker, _ngZone, _document, config.defer);\n        this._focusTrapManager = _focusTrapManager;\n        this._inertStrategy = _inertStrategy;\n        this._focusTrapManager.register(this);\n    }\n    /** Whether the FocusTrap is enabled. */\n    get enabled() {\n        return this._enabled;\n    }\n    set enabled(value) {\n        this._enabled = value;\n        if (this._enabled) {\n            this._focusTrapManager.register(this);\n        }\n        else {\n            this._focusTrapManager.deregister(this);\n        }\n    }\n    /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n    destroy() {\n        this._focusTrapManager.deregister(this);\n        super.destroy();\n    }\n    /** @docs-private Implemented as part of ManagedFocusTrap. */\n    _enable() {\n        this._inertStrategy.preventFocus(this);\n        this.toggleAnchors(true);\n    }\n    /** @docs-private Implemented as part of ManagedFocusTrap. */\n    _disable() {\n        this._inertStrategy.allowFocus(this);\n        this.toggleAnchors(false);\n    }\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/**\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/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\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 * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n    constructor() {\n        /** Focus event handler. */\n        this._listener = null;\n    }\n    /** Adds a document event listener that keeps focus inside the FocusTrap. */\n    preventFocus(focusTrap) {\n        // Ensure there's only one listener per document\n        if (this._listener) {\n            focusTrap._document.removeEventListener('focus', this._listener, true);\n        }\n        this._listener = (e) => this._trapFocus(focusTrap, e);\n        focusTrap._ngZone.runOutsideAngular(() => {\n            focusTrap._document.addEventListener('focus', this._listener, true);\n        });\n    }\n    /** Removes the event listener added in preventFocus. */\n    allowFocus(focusTrap) {\n        if (!this._listener) {\n            return;\n        }\n        focusTrap._document.removeEventListener('focus', this._listener, true);\n        this._listener = null;\n    }\n    /**\n     * Refocuses the first element in the FocusTrap if the focus event target was outside\n     * the FocusTrap.\n     *\n     * This is an event listener callback. The event listener is added in runOutsideAngular,\n     * so all this code runs outside Angular as well.\n     */\n    _trapFocus(focusTrap, event) {\n        const target = event.target;\n        const focusTrapRoot = focusTrap._element;\n        // Don't refocus if target was in an overlay, because the overlay might be associated\n        // with an element inside the FocusTrap, ex. mat-select.\n        if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n            // Some legacy FocusTrap usages have logic that focuses some element on the page\n            // just before FocusTrap is destroyed. For backwards compatibility, wait\n            // to be sure FocusTrap is still enabled before refocusing.\n            setTimeout(() => {\n                // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n                if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n                    focusTrap.focusFirstTabbableElement();\n                }\n            });\n        }\n    }\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/** 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.0.1\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.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/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n    constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n        this._checker = _checker;\n        this._ngZone = _ngZone;\n        this._focusTrapManager = _focusTrapManager;\n        this._document = _document;\n        // TODO split up the strategies into different modules, similar to DateAdapter.\n        this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n    }\n    create(element, config = { defer: false }) {\n        let configObject;\n        if (typeof config === 'boolean') {\n            configObject = { defer: config };\n        }\n        else {\n            configObject = config;\n        }\n        return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n    }\n}\nConfigurableFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: FocusTrapManager }, { token: DOCUMENT }, { token: FOCUS_TRAP_INERT_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigurableFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: FocusTrapManager }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [FOCUS_TRAP_INERT_STRATEGY]\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/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n    // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n    // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n    // zero. Note that there's an edge case where the user could click the 0x0 spot of the screen\n    // themselves, but that is unlikely to contain interaction elements. Historically we used to\n    // check `event.buttons === 0`, however that no longer works on recent versions of NVDA.\n    return event.offsetX === 0 && event.offsetY === 0;\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n    const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);\n    // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n    // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n    // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n    // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n    return (!!touch &&\n        touch.identifier === -1 &&\n        (touch.radiusX == null || touch.radiusX === 1) &&\n        (touch.radiusY == null || touch.radiusY === 1));\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 * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n *    in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n *    confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n *    these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n    ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n    passive: true,\n    capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n    constructor(_platform, ngZone, document, options) {\n        this._platform = _platform;\n        /**\n         * The most recently detected input modality event target. Is null if no input modality has been\n         * detected or if the associated event target is null for some unknown reason.\n         */\n        this._mostRecentTarget = null;\n        /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n        this._modality = new BehaviorSubject(null);\n        /**\n         * The timestamp of the last touch input modality. Used to determine whether mousedown events\n         * should be attributed to mouse or touch.\n         */\n        this._lastTouchMs = 0;\n        /**\n         * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n         * bound.\n         */\n        this._onKeydown = (event) => {\n            // If this is one of the keys we should ignore, then ignore it and don't update the input\n            // modality to keyboard.\n            if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n                return;\n            }\n            this._modality.next('keyboard');\n            this._mostRecentTarget = _getEventTarget(event);\n        };\n        /**\n         * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n         * gets bound.\n         */\n        this._onMousedown = (event) => {\n            // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n            // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n            // after the previous touch event.\n            if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n                return;\n            }\n            // Fake mousedown events are fired by some screen readers when controls are activated by the\n            // screen reader. Attribute them to keyboard input modality.\n            this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n            this._mostRecentTarget = _getEventTarget(event);\n        };\n        /**\n         * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n         * gets bound.\n         */\n        this._onTouchstart = (event) => {\n            // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n            // events are fired. Again, attribute to keyboard input modality.\n            if (isFakeTouchstartFromScreenReader(event)) {\n                this._modality.next('keyboard');\n                return;\n            }\n            // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n            // triggered via mouse vs touch.\n            this._lastTouchMs = Date.now();\n            this._modality.next('touch');\n            this._mostRecentTarget = _getEventTarget(event);\n        };\n        this._options = {\n            ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n            ...options,\n        };\n        // Skip the first emission as it's null.\n        this.modalityDetected = this._modality.pipe(skip(1));\n        this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n        // If we're not in a browser, this service should do nothing, as there's no relevant input\n        // modality to detect.\n        if (_platform.isBrowser) {\n            ngZone.runOutsideAngular(() => {\n                document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n                document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n                document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n            });\n        }\n    }\n    /** The most recently detected input modality. */\n    get mostRecentModality() {\n        return this._modality.value;\n    }\n    ngOnDestroy() {\n        this._modality.complete();\n        if (this._platform.isBrowser) {\n            document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n            document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n            document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n        }\n    }\n}\nInputModalityDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InputModalityDetector, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT }, { token: INPUT_MODALITY_DETECTOR_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nInputModalityDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InputModalityDetector, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: Document, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [INPUT_MODALITY_DETECTOR_OPTIONS]\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 */\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n    providedIn: 'root',\n    factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n    return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\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 */\nclass LiveAnnouncer {\n    constructor(elementToken, _ngZone, _document, _defaultOptions) {\n        this._ngZone = _ngZone;\n        this._defaultOptions = _defaultOptions;\n        // We inject the live element and document as `any` because the constructor signature cannot\n        // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n        // a class decorator causes TypeScript to preserve the constructor signature types.\n        this._document = _document;\n        this._liveElement = elementToken || this._createLiveElement();\n    }\n    announce(message, ...args) {\n        const defaultOptions = this._defaultOptions;\n        let politeness;\n        let duration;\n        if (args.length === 1 && typeof args[0] === 'number') {\n            duration = args[0];\n        }\n        else {\n            [politeness, duration] = args;\n        }\n        this.clear();\n        clearTimeout(this._previousTimeout);\n        if (!politeness) {\n            politeness =\n                defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n        }\n        if (duration == null && defaultOptions) {\n            duration = defaultOptions.duration;\n        }\n        // TODO: ensure changing the politeness works on all environments we support.\n        this._liveElement.setAttribute('aria-live', politeness);\n        // This 100ms timeout is necessary for some browser + screen-reader combinations:\n        // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n        // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n        //   second time without clearing and then using a non-zero delay.\n        // (using JAWS 17 at time of this writing).\n        return this._ngZone.runOutsideAngular(() => {\n            return new Promise(resolve => {\n                clearTimeout(this._previousTimeout);\n                this._previousTimeout = setTimeout(() => {\n                    this._liveElement.textContent = message;\n                    resolve();\n                    if (typeof duration === 'number') {\n                        this._previousTimeout = setTimeout(() => this.clear(), duration);\n                    }\n                }, 100);\n            });\n        });\n    }\n    /**\n     * Clears the current text from the announcer element. Can be used to prevent\n     * screen readers from reading the text out again while the user is going\n     * through the page landmarks.\n     */\n    clear() {\n        if (this._liveElement) {\n            this._liveElement.textContent = '';\n        }\n    }\n    ngOnDestroy() {\n        clearTimeout(this._previousTimeout);\n        this._liveElement?.remove();\n        this._liveElement = null;\n    }\n    _createLiveElement() {\n        const elementClass = 'cdk-live-announcer-element';\n        const previousElements = this._document.getElementsByClassName(elementClass);\n        const liveEl = this._document.createElement('div');\n        // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n        for (let i = 0; i < previousElements.length; i++) {\n            previousElements[i].remove();\n        }\n        liveEl.classList.add(elementClass);\n        liveEl.classList.add('cdk-visually-hidden');\n        liveEl.setAttribute('aria-atomic', 'true');\n        liveEl.setAttribute('aria-live', 'polite');\n        this._document.body.appendChild(liveEl);\n        return liveEl;\n    }\n}\nLiveAnnouncer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LiveAnnouncer, deps: [{ token: LIVE_ANNOUNCER_ELEMENT_TOKEN, optional: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: LIVE_ANNOUNCER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nLiveAnnouncer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n                }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n                }] }]; } });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n    constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n        this._elementRef = _elementRef;\n        this._liveAnnouncer = _liveAnnouncer;\n        this._contentObserver = _contentObserver;\n        this._ngZone = _ngZone;\n        this._politeness = 'polite';\n    }\n    /** The aria-live politeness level to use when announcing messages. */\n    get politeness() {\n        return this._politeness;\n    }\n    set politeness(value) {\n        this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n        if (this._politeness === 'off') {\n            if (this._subscription) {\n                this._subscription.unsubscribe();\n                this._subscription = null;\n            }\n        }\n        else if (!this._subscription) {\n            this._subscription = this._ngZone.runOutsideAngular(() => {\n                return this._contentObserver.observe(this._elementRef).subscribe(() => {\n                    // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n                    const elementText = this._elementRef.nativeElement.textContent;\n                    // The `MutationObserver` fires also for attribute\n                    // changes which we don't want to announce.\n                    if (elementText !== this._previousAnnouncedText) {\n                        this._liveAnnouncer.announce(elementText, this._politeness);\n                        this._previousAnnouncedText = elementText;\n                    }\n                });\n            });\n        }\n    }\n    ngOnDestroy() {\n        if (this._subscription) {\n            this._subscription.unsubscribe();\n        }\n    }\n}\nCdkAriaLive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAriaLive, deps: [{ token: i0.ElementRef }, { token: LiveAnnouncer }, { token: i1$1.ContentObserver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAriaLive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkAriaLive, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAriaLive, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkAriaLive]',\n                    exportAs: 'cdkAriaLive',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: LiveAnnouncer }, { type: i1$1.ContentObserver }, { type: i0.NgZone }]; }, propDecorators: { politeness: [{\n                type: Input,\n                args: ['cdkAriaLive']\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/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n    passive: true,\n    capture: true,\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n    constructor(_ngZone, _platform, _inputModalityDetector, \n    /** @breaking-change 11.0.0 make document required */\n    document, options) {\n        this._ngZone = _ngZone;\n        this._platform = _platform;\n        this._inputModalityDetector = _inputModalityDetector;\n        /** The focus origin that the next focus event is a result of. */\n        this._origin = null;\n        /** Whether the window has just been focused. */\n        this._windowFocused = false;\n        /**\n         * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n         * focus events to touch interactions requires special logic.\n         */\n        this._originFromTouchInteraction = false;\n        /** Map of elements being monitored to their info. */\n        this._elementInfo = new Map();\n        /** The number of elements currently being monitored. */\n        this._monitoredElementCount = 0;\n        /**\n         * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n         * as well as the number of monitored elements that they contain. We have to treat focus/blur\n         * handlers differently from the rest of the events, because the browser won't emit events\n         * to the document when focus moves inside of a shadow root.\n         */\n        this._rootNodeFocusListenerCount = new Map();\n        /**\n         * Event listener for `focus` events on the window.\n         * Needs to be an arrow function in order to preserve the context when it gets bound.\n         */\n        this._windowFocusListener = () => {\n            // Make a note of when the window regains focus, so we can\n            // restore the origin info for the focused element.\n            this._windowFocused = true;\n            this._windowFocusTimeoutId = setTimeout(() => (this._windowFocused = false));\n        };\n        /** Subject for stopping our InputModalityDetector subscription. */\n        this._stopInputModalityDetector = new Subject();\n        /**\n         * Event listener for `focus` and 'blur' events on the document.\n         * Needs to be an arrow function in order to preserve the context when it gets bound.\n         */\n        this._rootNodeFocusAndBlurListener = (event) => {\n            const target = _getEventTarget(event);\n            const handler = event.type === 'focus' ? this._onFocus : this._onBlur;\n            // We need to walk up the ancestor chain in order to support `checkChildren`.\n            for (let element = target; element; element = element.parentElement) {\n                handler.call(this, event, element);\n            }\n        };\n        this._document = document;\n        this._detectionMode = options?.detectionMode || 0 /* IMMEDIATE */;\n    }\n    monitor(element, checkChildren = false) {\n        const nativeElement = coerceElement(element);\n        // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n        if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n            return of(null);\n        }\n        // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n        // the shadow root, rather than the `document`, because the browser won't emit focus events\n        // to the `document`, if focus is moving within the same shadow root.\n        const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n        const cachedInfo = this._elementInfo.get(nativeElement);\n        // Check if we're already monitoring this element.\n        if (cachedInfo) {\n            if (checkChildren) {\n                // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n                // observers into ones that behave as if `checkChildren` was turned on. We need a more\n                // robust solution.\n                cachedInfo.checkChildren = true;\n            }\n            return cachedInfo.subject;\n        }\n        // Create monitored element info.\n        const info = {\n            checkChildren: checkChildren,\n            subject: new Subject(),\n            rootNode,\n        };\n        this._elementInfo.set(nativeElement, info);\n        this._registerGlobalListeners(info);\n        return info.subject;\n    }\n    stopMonitoring(element) {\n        const nativeElement = coerceElement(element);\n        const elementInfo = this._elementInfo.get(nativeElement);\n        if (elementInfo) {\n            elementInfo.subject.complete();\n            this._setClasses(nativeElement);\n            this._elementInfo.delete(nativeElement);\n            this._removeGlobalListeners(elementInfo);\n        }\n    }\n    focusVia(element, origin, options) {\n        const nativeElement = coerceElement(element);\n        const focusedElement = this._getDocument().activeElement;\n        // If the element is focused already, calling `focus` again won't trigger the event listener\n        // which means that the focus classes won't be updated. If that's the case, update the classes\n        // directly without waiting for an event.\n        if (nativeElement === focusedElement) {\n            this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n        }\n        else {\n            this._setOrigin(origin);\n            // `focus` isn't available on the server\n            if (typeof nativeElement.focus === 'function') {\n                nativeElement.focus(options);\n            }\n        }\n    }\n    ngOnDestroy() {\n        this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n    }\n    /** Access injected document if available or fallback to global document reference */\n    _getDocument() {\n        return this._document || document;\n    }\n    /** Use defaultView of injected document if available or fallback to global window reference */\n    _getWindow() {\n        const doc = this._getDocument();\n        return doc.defaultView || window;\n    }\n    _getFocusOrigin(focusEventTarget) {\n        if (this._origin) {\n            // If the origin was realized via a touch interaction, we need to perform additional checks\n            // to determine whether the focus origin should be attributed to touch or program.\n            if (this._originFromTouchInteraction) {\n                return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n            }\n            else {\n                return this._origin;\n            }\n        }\n        // If the window has just regained focus, we can restore the most recent origin from before the\n        // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n        // focus. This typically means one of two things happened:\n        //\n        // 1) The element was programmatically focused, or\n        // 2) The element was focused via screen reader navigation (which generally doesn't fire\n        //    events).\n        //\n        // Because we can't distinguish between these two cases, we default to setting `program`.\n        return this._windowFocused && this._lastFocusOrigin ? this._lastFocusOrigin : 'program';\n    }\n    /**\n     * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n     * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n     * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n     * event was directly caused by the touch interaction or (2) the focus event was caused by a\n     * subsequent programmatic focus call triggered by the touch interaction.\n     * @param focusEventTarget The target of the focus event under examination.\n     */\n    _shouldBeAttributedToTouch(focusEventTarget) {\n        // Please note that this check is not perfect. Consider the following edge case:\n        //\n        // <div #parent tabindex=\"0\">\n        //   <div #child tabindex=\"0\" (click)=\"#parent.focus()\"></div>\n        // </div>\n        //\n        // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n        // #child, #parent is programmatically focused. This code will attribute the focus to touch\n        // instead of program. This is a relatively minor edge-case that can be worked around by using\n        // focusVia(parent, 'program') to focus #parent.\n        return (this._detectionMode === 1 /* EVENTUAL */ ||\n            !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget));\n    }\n    /**\n     * Sets the focus classes on the element based on the given focus origin.\n     * @param element The element to update the classes on.\n     * @param origin The focus origin.\n     */\n    _setClasses(element, origin) {\n        element.classList.toggle('cdk-focused', !!origin);\n        element.classList.toggle('cdk-touch-focused', origin === 'touch');\n        element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n        element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n        element.classList.toggle('cdk-program-focused', origin === 'program');\n    }\n    /**\n     * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n     * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n     * the origin being set.\n     * @param origin The origin to set.\n     * @param isFromInteraction Whether we are setting the origin from an interaction event.\n     */\n    _setOrigin(origin, isFromInteraction = false) {\n        this._ngZone.runOutsideAngular(() => {\n            this._origin = origin;\n            this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n            // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n            // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n            // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n            // a touch event because when a touch event is fired, the associated focus event isn't yet in\n            // the event queue. Before doing so, clear any pending timeouts.\n            if (this._detectionMode === 0 /* IMMEDIATE */) {\n                clearTimeout(this._originTimeoutId);\n                const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n                this._originTimeoutId = setTimeout(() => (this._origin = null), ms);\n            }\n        });\n    }\n    /**\n     * Handles focus events on a registered element.\n     * @param event The focus event.\n     * @param element The monitored element.\n     */\n    _onFocus(event, element) {\n        // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n        // focus event affecting the monitored element. If we want to use the origin of the first event\n        // instead we should check for the cdk-focused class here and return if the element already has\n        // it. (This only matters for elements that have includesChildren = true).\n        // If we are not counting child-element-focus as focused, make sure that the event target is the\n        // monitored element itself.\n        const elementInfo = this._elementInfo.get(element);\n        const focusEventTarget = _getEventTarget(event);\n        if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n            return;\n        }\n        this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n    }\n    /**\n     * Handles blur events on a registered element.\n     * @param event The blur event.\n     * @param element The monitored element.\n     */\n    _onBlur(event, element) {\n        // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n        // order to focus another child of the monitored element.\n        const elementInfo = this._elementInfo.get(element);\n        if (!elementInfo ||\n            (elementInfo.checkChildren &&\n                event.relatedTarget instanceof Node &&\n                element.contains(event.relatedTarget))) {\n            return;\n        }\n        this._setClasses(element);\n        this._emitOrigin(elementInfo.subject, null);\n    }\n    _emitOrigin(subject, origin) {\n        this._ngZone.run(() => subject.next(origin));\n    }\n    _registerGlobalListeners(elementInfo) {\n        if (!this._platform.isBrowser) {\n            return;\n        }\n        const rootNode = elementInfo.rootNode;\n        const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n        if (!rootNodeFocusListeners) {\n            this._ngZone.runOutsideAngular(() => {\n                rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n                rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n            });\n        }\n        this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n        // Register global listeners when first element is monitored.\n        if (++this._monitoredElementCount === 1) {\n            // Note: we listen to events in the capture phase so we\n            // can detect them even if the user stops propagation.\n            this._ngZone.runOutsideAngular(() => {\n                const window = this._getWindow();\n                window.addEventListener('focus', this._windowFocusListener);\n            });\n            // The InputModalityDetector is also just a collection of global listeners.\n            this._inputModalityDetector.modalityDetected\n                .pipe(takeUntil(this._stopInputModalityDetector))\n                .subscribe(modality => {\n                this._setOrigin(modality, true /* isFromInteraction */);\n            });\n        }\n    }\n    _removeGlobalListeners(elementInfo) {\n        const rootNode = elementInfo.rootNode;\n        if (this._rootNodeFocusListenerCount.has(rootNode)) {\n            const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n            if (rootNodeFocusListeners > 1) {\n                this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n            }\n            else {\n                rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n                rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n                this._rootNodeFocusListenerCount.delete(rootNode);\n            }\n        }\n        // Unregister global listeners when last element is unmonitored.\n        if (!--this._monitoredElementCount) {\n            const window = this._getWindow();\n            window.removeEventListener('focus', this._windowFocusListener);\n            // Equivalently, stop our InputModalityDetector subscription.\n            this._stopInputModalityDetector.next();\n            // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n            clearTimeout(this._windowFocusTimeoutId);\n            clearTimeout(this._originTimeoutId);\n        }\n    }\n    /** Updates all the state on an element once its focus origin has changed. */\n    _originChanged(element, origin, elementInfo) {\n        this._setClasses(element, origin);\n        this._emitOrigin(elementInfo.subject, origin);\n        this._lastFocusOrigin = origin;\n    }\n    /**\n     * Collects the `MonitoredElementInfo` of a particular element and\n     * all of its ancestors that have enabled `checkChildren`.\n     * @param element Element from which to start the search.\n     */\n    _getClosestElementsInfo(element) {\n        const results = [];\n        this._elementInfo.forEach((info, currentElement) => {\n            if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n                results.push([currentElement, info]);\n            }\n        });\n        return results;\n    }\n}\nFocusMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusMonitor, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: InputModalityDetector }, { token: DOCUMENT, optional: true }, { token: FOCUS_MONITOR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusMonitor, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: InputModalityDetector }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n                }] }]; } });\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n *    focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n    constructor(_elementRef, _focusMonitor) {\n        this._elementRef = _elementRef;\n        this._focusMonitor = _focusMonitor;\n        this.cdkFocusChange = new EventEmitter();\n    }\n    ngAfterViewInit() {\n        const element = this._elementRef.nativeElement;\n        this._monitorSubscription = this._focusMonitor\n            .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n            .subscribe(origin => this.cdkFocusChange.emit(origin));\n    }\n    ngOnDestroy() {\n        this._focusMonitor.stopMonitoring(this._elementRef);\n        if (this._monitorSubscription) {\n            this._monitorSubscription.unsubscribe();\n        }\n    }\n}\nCdkMonitorFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkMonitorFocus, deps: [{ token: i0.ElementRef }, { token: FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkMonitorFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: { cdkFocusChange: \"cdkFocusChange\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkMonitorFocus, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusMonitor }]; }, propDecorators: { cdkFocusChange: [{\n                type: Output\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/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n    constructor(_platform, document) {\n        this._platform = _platform;\n        this._document = document;\n    }\n    /** Gets the current high-contrast-mode for the page. */\n    getHighContrastMode() {\n        if (!this._platform.isBrowser) {\n            return 0 /* NONE */;\n        }\n        // Create a test element with an arbitrary background-color that is neither black nor\n        // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n        // appending the test element to the DOM does not affect layout by absolutely positioning it\n        const testElement = this._document.createElement('div');\n        testElement.style.backgroundColor = 'rgb(1,2,3)';\n        testElement.style.position = 'absolute';\n        this._document.body.appendChild(testElement);\n        // Get the computed style for the background color, collapsing spaces to normalize between\n        // browsers. Once we get this color, we no longer need the test element. Access the `window`\n        // via the document so we can fake it in tests. Note that we have extra null checks, because\n        // this logic will likely run during app bootstrap and throwing can break the entire app.\n        const documentWindow = this._document.defaultView || window;\n        const computedStyle = documentWindow && documentWindow.getComputedStyle\n            ? documentWindow.getComputedStyle(testElement)\n            : null;\n        const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(/ /g, '');\n        testElement.remove();\n        switch (computedColor) {\n            case 'rgb(0,0,0)':\n                return 2 /* WHITE_ON_BLACK */;\n            case 'rgb(255,255,255)':\n                return 1 /* BLACK_ON_WHITE */;\n        }\n        return 0 /* NONE */;\n    }\n    /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n    _applyBodyHighContrastModeCssClasses() {\n        if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n            const bodyClasses = this._document.body.classList;\n            // IE11 doesn't support `classList` operations with multiple arguments\n            bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n            bodyClasses.remove(BLACK_ON_WHITE_CSS_CLASS);\n            bodyClasses.remove(WHITE_ON_BLACK_CSS_CLASS);\n            this._hasCheckedHighContrastMode = true;\n            const mode = this.getHighContrastMode();\n            if (mode === 1 /* BLACK_ON_WHITE */) {\n                bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n                bodyClasses.add(BLACK_ON_WHITE_CSS_CLASS);\n            }\n            else if (mode === 2 /* WHITE_ON_BLACK */) {\n                bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n                bodyClasses.add(WHITE_ON_BLACK_CSS_CLASS);\n            }\n        }\n    }\n}\nHighContrastModeDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: HighContrastModeDetector, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nHighContrastModeDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: HighContrastModeDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: HighContrastModeDetector, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.Platform }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\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 */\nclass A11yModule {\n    constructor(highContrastModeDetector) {\n        highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n    }\n}\nA11yModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, deps: [{ token: HighContrastModeDetector }], target: i0.ɵɵFactoryTarget.NgModule });\nA11yModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], imports: [PlatformModule, ObserversModule], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] });\nA11yModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, imports: [[PlatformModule, ObserversModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [PlatformModule, ObserversModule],\n                    declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n                    exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n                }]\n        }], ctorParameters: function () { return [{ type: HighContrastModeDetector }]; } });\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/5ba4da4d1bf064eae6eb9ece04754c6f.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/5ba4da4d1bf064eae6eb9ece04754c6f.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/5ba4da4d1bf064eae6eb9ece04754c6f.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { trigger, state, style, transition, animate, query, animateChild } from '@angular/animations';\nconst _c0 = [\"container\"];\n\nconst _c1 = function (a0, a1, a2, a3) {\n  return {\n    \"pi-info-circle\": a0,\n    \"pi-exclamation-triangle\": a1,\n    \"pi-times-circle\": a2,\n    \"pi-check\": a3\n  };\n};\n\nfunction ToastItem_ng_container_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵelement(1, \"span\", 6);\n    i0.ɵɵelementStart(2, \"div\", 7);\n    i0.ɵɵelementStart(3, \"div\", 8);\n    i0.ɵɵtext(4);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementStart(5, \"div\", 9);\n    i0.ɵɵtext(6);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵadvance(1);\n    i0.ɵɵclassMap(\"p-toast-message-icon pi\" + (ctx_r1.message.icon ? \" \" + ctx_r1.message.icon : \"\"));\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction4(5, _c1, ctx_r1.message.severity == \"info\", ctx_r1.message.severity == \"warn\", ctx_r1.message.severity == \"error\", ctx_r1.message.severity == \"success\"));\n    i0.ɵɵadvance(3);\n    i0.ɵɵtextInterpolate(ctx_r1.message.summary);\n    i0.ɵɵadvance(2);\n    i0.ɵɵtextInterpolate(ctx_r1.message.detail);\n  }\n}\n\nfunction ToastItem_ng_container_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction ToastItem_button_5_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r5 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 10);\n    i0.ɵɵlistener(\"click\", function ToastItem_button_5_Template_button_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r4 = i0.ɵɵnextContext();\n      return ctx_r4.onCloseIconClick($event);\n    })(\"keydown.enter\", function ToastItem_button_5_Template_button_keydown_enter_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r6 = i0.ɵɵnextContext();\n      return ctx_r6.onCloseIconClick($event);\n    });\n    i0.ɵɵelement(1, \"span\", 11);\n    i0.ɵɵelementEnd();\n  }\n}\n\nconst _c2 = function (a0) {\n  return [a0, \"p-toast-message\"];\n};\n\nconst _c3 = function (a0, a1, a2, a3) {\n  return {\n    showTransformParams: a0,\n    hideTransformParams: a1,\n    showTransitionParams: a2,\n    hideTransitionParams: a3\n  };\n};\n\nconst _c4 = function (a1) {\n  return {\n    value: \"visible\",\n    params: a1\n  };\n};\n\nconst _c5 = function (a0) {\n  return {\n    $implicit: a0\n  };\n};\n\nfunction Toast_p_toastItem_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r5 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"p-toastItem\", 3);\n    i0.ɵɵlistener(\"onClose\", function Toast_p_toastItem_2_Template_p_toastItem_onClose_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r4 = i0.ɵɵnextContext();\n      return ctx_r4.onMessageClose($event);\n    })(\"@toastAnimation.start\", function Toast_p_toastItem_2_Template_p_toastItem_animation_toastAnimation_start_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r6 = i0.ɵɵnextContext();\n      return ctx_r6.onAnimationStart($event);\n    })(\"@toastAnimation.done\", function Toast_p_toastItem_2_Template_p_toastItem_animation_toastAnimation_done_0_listener($event) {\n      i0.ɵɵrestoreView(_r5);\n      const ctx_r7 = i0.ɵɵnextContext();\n      return ctx_r7.onAnimationEnd($event);\n    });\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const msg_r2 = ctx.$implicit;\n    const i_r3 = ctx.index;\n    const ctx_r1 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"message\", msg_r2)(\"index\", i_r3)(\"template\", ctx_r1.template)(\"@toastAnimation\", undefined)(\"showTransformOptions\", ctx_r1.showTransformOptions)(\"hideTransformOptions\", ctx_r1.hideTransformOptions)(\"showTransitionOptions\", ctx_r1.showTransitionOptions)(\"hideTransitionOptions\", ctx_r1.hideTransitionOptions);\n  }\n}\n\nclass ToastItem {\n  constructor(zone) {\n    this.zone = zone;\n    this.onClose = new EventEmitter();\n  }\n\n  ngAfterViewInit() {\n    this.initTimeout();\n  }\n\n  initTimeout() {\n    if (!this.message.sticky) {\n      this.zone.runOutsideAngular(() => {\n        this.timeout = setTimeout(() => {\n          this.onClose.emit({\n            index: this.index,\n            message: this.message\n          });\n        }, this.message.life || 3000);\n      });\n    }\n  }\n\n  clearTimeout() {\n    if (this.timeout) {\n      clearTimeout(this.timeout);\n      this.timeout = null;\n    }\n  }\n\n  onMouseEnter() {\n    this.clearTimeout();\n  }\n\n  onMouseLeave() {\n    this.initTimeout();\n  }\n\n  onCloseIconClick(event) {\n    this.clearTimeout();\n    this.onClose.emit({\n      index: this.index,\n      message: this.message\n    });\n    event.preventDefault();\n  }\n\n  ngOnDestroy() {\n    this.clearTimeout();\n  }\n\n}\n\nToastItem.ɵfac = function ToastItem_Factory(t) {\n  return new (t || ToastItem)(i0.ɵɵdirectiveInject(i0.NgZone));\n};\n\nToastItem.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: ToastItem,\n  selectors: [[\"p-toastItem\"]],\n  viewQuery: function ToastItem_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerViewChild = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    message: \"message\",\n    index: \"index\",\n    template: \"template\",\n    showTransformOptions: \"showTransformOptions\",\n    hideTransformOptions: \"hideTransformOptions\",\n    showTransitionOptions: \"showTransitionOptions\",\n    hideTransitionOptions: \"hideTransitionOptions\"\n  },\n  outputs: {\n    onClose: \"onClose\"\n  },\n  decls: 6,\n  vars: 21,\n  consts: [[3, \"ngClass\", \"mouseenter\", \"mouseleave\"], [\"container\", \"\"], [\"role\", \"alert\", \"aria-live\", \"assertive\", \"aria-atomic\", \"true\", 1, \"p-toast-message-content\", 3, \"ngClass\"], [4, \"ngIf\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"type\", \"button\", \"class\", \"p-toast-icon-close p-link\", \"pRipple\", \"\", 3, \"click\", \"keydown.enter\", 4, \"ngIf\"], [3, \"ngClass\"], [1, \"p-toast-message-text\"], [1, \"p-toast-summary\"], [1, \"p-toast-detail\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-toast-icon-close\", \"p-link\", 3, \"click\", \"keydown.enter\"], [1, \"p-toast-icon-close-icon\", \"pi\", \"pi-times\"]],\n  template: function ToastItem_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"div\", 0, 1);\n      i0.ɵɵlistener(\"mouseenter\", function ToastItem_Template_div_mouseenter_0_listener() {\n        return ctx.onMouseEnter();\n      })(\"mouseleave\", function ToastItem_Template_div_mouseleave_0_listener() {\n        return ctx.onMouseLeave();\n      });\n      i0.ɵɵelementStart(2, \"div\", 2);\n      i0.ɵɵtemplate(3, ToastItem_ng_container_3_Template, 7, 10, \"ng-container\", 3);\n      i0.ɵɵtemplate(4, ToastItem_ng_container_4_Template, 1, 0, \"ng-container\", 4);\n      i0.ɵɵtemplate(5, ToastItem_button_5_Template, 2, 0, \"button\", 5);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.message.styleClass);\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(10, _c2, \"p-toast-message-\" + ctx.message.severity))(\"@messageState\", i0.ɵɵpureFunction1(17, _c4, i0.ɵɵpureFunction4(12, _c3, ctx.showTransformOptions, ctx.hideTransformOptions, ctx.showTransitionOptions, ctx.hideTransitionOptions)));\n      i0.ɵɵattribute(\"id\", ctx.message.id);\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngClass\", ctx.message.contentStyleClass);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", !ctx.template);\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngTemplateOutlet\", ctx.template)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(19, _c5, ctx.message));\n      i0.ɵɵadvance(1);\n      i0.ɵɵproperty(\"ngIf\", ctx.message.closable !== false);\n    }\n  },\n  directives: [i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, i2.Ripple],\n  encapsulation: 2,\n  data: {\n    animation: [trigger('messageState', [state('visible', style({\n      transform: 'translateY(0)',\n      opacity: 1\n    })), transition('void => *', [style({\n      transform: '{{showTransformParams}}',\n      opacity: 0\n    }), animate('{{showTransitionParams}}')]), transition('* => void', [animate('{{hideTransitionParams}}', style({\n      height: 0,\n      opacity: 0,\n      transform: '{{hideTransformParams}}'\n    }))])])]\n  },\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ToastItem, [{\n    type: Component,\n    args: [{\n      selector: 'p-toastItem',\n      template: `\n        <div #container [attr.id]=\"message.id\" [class]=\"message.styleClass\" [ngClass]=\"['p-toast-message-' + message.severity, 'p-toast-message']\" [@messageState]=\"{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n            <div class=\"p-toast-message-content\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"  [ngClass]=\"message.contentStyleClass\">\n                <ng-container *ngIf=\"!template\">\n                    <span [class]=\"'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')\" [ngClass]=\"{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',\n                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}\"></span>\n                    <div class=\"p-toast-message-text\">\n                        <div class=\"p-toast-summary\">{{message.summary}}</div>\n                        <div class=\"p-toast-detail\">{{message.detail}}</div>\n                    </div>\n                </ng-container>\n                <ng-container *ngTemplateOutlet=\"template; context: {$implicit: message}\"></ng-container>\n                <button type=\"button\" class=\"p-toast-icon-close p-link\" (click)=\"onCloseIconClick($event)\" (keydown.enter)=\"onCloseIconClick($event)\" *ngIf=\"message.closable !== false\" pRipple>\n                    <span class=\"p-toast-icon-close-icon pi pi-times\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n      animations: [trigger('messageState', [state('visible', style({\n        transform: 'translateY(0)',\n        opacity: 1\n      })), transition('void => *', [style({\n        transform: '{{showTransformParams}}',\n        opacity: 0\n      }), animate('{{showTransitionParams}}')]), transition('* => void', [animate('{{hideTransitionParams}}', style({\n        height: 0,\n        opacity: 0,\n        transform: '{{hideTransformParams}}'\n      }))])])],\n      encapsulation: ViewEncapsulation.None,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.NgZone\n    }];\n  }, {\n    message: [{\n      type: Input\n    }],\n    index: [{\n      type: Input\n    }],\n    template: [{\n      type: Input\n    }],\n    showTransformOptions: [{\n      type: Input\n    }],\n    hideTransformOptions: [{\n      type: Input\n    }],\n    showTransitionOptions: [{\n      type: Input\n    }],\n    hideTransitionOptions: [{\n      type: Input\n    }],\n    onClose: [{\n      type: Output\n    }],\n    containerViewChild: [{\n      type: ViewChild,\n      args: ['container']\n    }]\n  });\n})();\n\nclass Toast {\n  constructor(messageService, cd, config) {\n    this.messageService = messageService;\n    this.cd = cd;\n    this.config = config;\n    this.autoZIndex = true;\n    this.baseZIndex = 0;\n    this.position = 'top-right';\n    this.preventOpenDuplicates = false;\n    this.preventDuplicates = false;\n    this.showTransformOptions = 'translateY(100%)';\n    this.hideTransformOptions = 'translateY(-100%)';\n    this.showTransitionOptions = '300ms ease-out';\n    this.hideTransitionOptions = '250ms ease-in';\n    this.onClose = new EventEmitter();\n    this.id = UniqueComponentId();\n  }\n\n  ngOnInit() {\n    this.messageSubscription = this.messageService.messageObserver.subscribe(messages => {\n      if (messages) {\n        if (messages instanceof Array) {\n          const filteredMessages = messages.filter(m => this.canAdd(m));\n          this.add(filteredMessages);\n        } else if (this.canAdd(messages)) {\n          this.add([messages]);\n        }\n      }\n    });\n    this.clearSubscription = this.messageService.clearObserver.subscribe(key => {\n      if (key) {\n        if (this.key === key) {\n          this.messages = null;\n        }\n      } else {\n        this.messages = null;\n      }\n\n      this.cd.markForCheck();\n    });\n  }\n\n  ngAfterViewInit() {\n    if (this.breakpoints) {\n      this.createStyle();\n    }\n  }\n\n  add(messages) {\n    this.messages = this.messages ? [...this.messages, ...messages] : [...messages];\n\n    if (this.preventDuplicates) {\n      this.messagesArchieve = this.messagesArchieve ? [...this.messagesArchieve, ...messages] : [...messages];\n    }\n\n    this.cd.markForCheck();\n  }\n\n  canAdd(message) {\n    let allow = this.key === message.key;\n\n    if (allow && this.preventOpenDuplicates) {\n      allow = !this.containsMessage(this.messages, message);\n    }\n\n    if (allow && this.preventDuplicates) {\n      allow = !this.containsMessage(this.messagesArchieve, message);\n    }\n\n    return allow;\n  }\n\n  containsMessage(collection, message) {\n    if (!collection) {\n      return false;\n    }\n\n    return collection.find(m => {\n      return m.summary === message.summary && m.detail == message.detail && m.severity === message.severity;\n    }) != null;\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'message':\n          this.template = item.template;\n          break;\n\n        default:\n          this.template = item.template;\n          break;\n      }\n    });\n  }\n\n  onMessageClose(event) {\n    this.messages.splice(event.index, 1);\n    this.onClose.emit({\n      message: event.message\n    });\n    this.cd.detectChanges();\n  }\n\n  onAnimationStart(event) {\n    if (event.fromState === 'void') {\n      this.containerViewChild.nativeElement.setAttribute(this.id, '');\n\n      if (this.autoZIndex) {\n        ZIndexUtils.set('modal', this.containerViewChild.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n      }\n    }\n  }\n\n  onAnimationEnd(event) {\n    if (event.toState === 'void') {\n      if (this.autoZIndex) {\n        ZIndexUtils.clear(this.containerViewChild.nativeElement);\n      }\n    }\n  }\n\n  createStyle() {\n    if (!this.styleElement) {\n      this.styleElement = document.createElement('style');\n      this.styleElement.type = 'text/css';\n      document.head.appendChild(this.styleElement);\n      let innerHTML = '';\n\n      for (let breakpoint in this.breakpoints) {\n        let breakpointStyle = '';\n\n        for (let styleProp in this.breakpoints[breakpoint]) {\n          breakpointStyle += styleProp + ':' + this.breakpoints[breakpoint][styleProp] + ' !important;';\n        }\n\n        innerHTML += `\n                    @media screen and (max-width: ${breakpoint}) {\n                        .p-toast[${this.id}] {\n                           ${breakpointStyle}\n                        }\n                    }\n                `;\n      }\n\n      this.styleElement.innerHTML = innerHTML;\n    }\n  }\n\n  destroyStyle() {\n    if (this.styleElement) {\n      document.head.removeChild(this.styleElement);\n      this.styleElement = null;\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.messageSubscription) {\n      this.messageSubscription.unsubscribe();\n    }\n\n    if (this.containerViewChild && this.autoZIndex) {\n      ZIndexUtils.clear(this.containerViewChild.nativeElement);\n    }\n\n    if (this.clearSubscription) {\n      this.clearSubscription.unsubscribe();\n    }\n\n    this.destroyStyle();\n  }\n\n}\n\nToast.ɵfac = function Toast_Factory(t) {\n  return new (t || Toast)(i0.ɵɵdirectiveInject(i3.MessageService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.PrimeNGConfig));\n};\n\nToast.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Toast,\n  selectors: [[\"p-toast\"]],\n  contentQueries: function Toast_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  viewQuery: function Toast_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerViewChild = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    key: \"key\",\n    autoZIndex: \"autoZIndex\",\n    baseZIndex: \"baseZIndex\",\n    style: \"style\",\n    styleClass: \"styleClass\",\n    position: \"position\",\n    preventOpenDuplicates: \"preventOpenDuplicates\",\n    preventDuplicates: \"preventDuplicates\",\n    showTransformOptions: \"showTransformOptions\",\n    hideTransformOptions: \"hideTransformOptions\",\n    showTransitionOptions: \"showTransitionOptions\",\n    hideTransitionOptions: \"hideTransitionOptions\",\n    breakpoints: \"breakpoints\"\n  },\n  outputs: {\n    onClose: \"onClose\"\n  },\n  decls: 3,\n  vars: 5,\n  consts: [[3, \"ngClass\", \"ngStyle\"], [\"container\", \"\"], [3, \"message\", \"index\", \"template\", \"showTransformOptions\", \"hideTransformOptions\", \"showTransitionOptions\", \"hideTransitionOptions\", \"onClose\", 4, \"ngFor\", \"ngForOf\"], [3, \"message\", \"index\", \"template\", \"showTransformOptions\", \"hideTransformOptions\", \"showTransitionOptions\", \"hideTransitionOptions\", \"onClose\"]],\n  template: function Toast_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵelementStart(0, \"div\", 0, 1);\n      i0.ɵɵtemplate(2, Toast_p_toastItem_2_Template, 1, 8, \"p-toastItem\", 2);\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngClass\", \"p-toast p-component p-toast-\" + ctx.position)(\"ngStyle\", ctx.style);\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngForOf\", ctx.messages);\n    }\n  },\n  directives: [i1.NgClass, i1.NgStyle, i1.NgForOf, ToastItem],\n  styles: [\".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\\n\"],\n  encapsulation: 2,\n  data: {\n    animation: [trigger('toastAnimation', [transition(':enter, :leave', [query('@*', animateChild())])])]\n  },\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Toast, [{\n    type: Component,\n    args: [{\n      selector: 'p-toast',\n      template: `\n        <div #container [ngClass]=\"'p-toast p-component p-toast-' + position\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <p-toastItem *ngFor=\"let msg of messages; let i=index\" [message]=\"msg\" [index]=\"i\" (onClose)=\"onMessageClose($event)\"\n                    [template]=\"template\" @toastAnimation (@toastAnimation.start)=\"onAnimationStart($event)\" (@toastAnimation.done)=\"onAnimationEnd($event)\"\n                    [showTransformOptions]=\"showTransformOptions\" [hideTransformOptions]=\"hideTransformOptions\"\n                    [showTransitionOptions]=\"showTransitionOptions\" [hideTransitionOptions]=\"hideTransitionOptions\"></p-toastItem>\n        </div>\n    `,\n      animations: [trigger('toastAnimation', [transition(':enter, :leave', [query('@*', animateChild())])])],\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i3.MessageService\n    }, {\n      type: i0.ChangeDetectorRef\n    }, {\n      type: i3.PrimeNGConfig\n    }];\n  }, {\n    key: [{\n      type: Input\n    }],\n    autoZIndex: [{\n      type: Input\n    }],\n    baseZIndex: [{\n      type: Input\n    }],\n    style: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    position: [{\n      type: Input\n    }],\n    preventOpenDuplicates: [{\n      type: Input\n    }],\n    preventDuplicates: [{\n      type: Input\n    }],\n    showTransformOptions: [{\n      type: Input\n    }],\n    hideTransformOptions: [{\n      type: Input\n    }],\n    showTransitionOptions: [{\n      type: Input\n    }],\n    hideTransitionOptions: [{\n      type: Input\n    }],\n    breakpoints: [{\n      type: Input\n    }],\n    onClose: [{\n      type: Output\n    }],\n    containerViewChild: [{\n      type: ViewChild,\n      args: ['container']\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }]\n  });\n})();\n\nclass ToastModule {}\n\nToastModule.ɵfac = function ToastModule_Factory(t) {\n  return new (t || ToastModule)();\n};\n\nToastModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: ToastModule\n});\nToastModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, RippleModule], SharedModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ToastModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, RippleModule],\n      exports: [Toast, SharedModule],\n      declarations: [Toast, ToastItem]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Toast, ToastItem, ToastModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-toast.mjs"],"names":["i0","EventEmitter","Component","ViewEncapsulation","ChangeDetectionStrategy","Input","Output","ViewChild","ContentChildren","NgModule","i1","CommonModule","i3","PrimeTemplate","SharedModule","UniqueComponentId","ZIndexUtils","i2","RippleModule","trigger","state","style","transition","animate","query","animateChild","ToastItem","constructor","zone","onClose","ngAfterViewInit","initTimeout","message","sticky","runOutsideAngular","timeout","setTimeout","emit","index","life","clearTimeout","onMouseEnter","onMouseLeave","onCloseIconClick","event","preventDefault","ngOnDestroy","ɵfac","NgZone","ɵcmp","NgClass","NgIf","NgTemplateOutlet","Ripple","transform","opacity","height","type","args","selector","template","animations","encapsulation","None","changeDetection","OnPush","host","showTransformOptions","hideTransformOptions","showTransitionOptions","hideTransitionOptions","containerViewChild","Toast","messageService","cd","config","autoZIndex","baseZIndex","position","preventOpenDuplicates","preventDuplicates","id","ngOnInit","messageSubscription","messageObserver","subscribe","messages","Array","filteredMessages","filter","m","canAdd","add","clearSubscription","clearObserver","key","markForCheck","breakpoints","createStyle","messagesArchieve","allow","containsMessage","collection","find","summary","detail","severity","ngAfterContentInit","templates","forEach","item","getType","onMessageClose","splice","detectChanges","onAnimationStart","fromState","nativeElement","setAttribute","set","zIndex","modal","onAnimationEnd","toState","clear","styleElement","document","createElement","head","appendChild","innerHTML","breakpoint","breakpointStyle","styleProp","destroyStyle","removeChild","unsubscribe","MessageService","ChangeDetectorRef","PrimeNGConfig","NgStyle","NgForOf","styles","styleClass","ToastModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/api';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { UniqueComponentId, ZIndexUtils } from 'primeng/utils';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { trigger, state, style, transition, animate, query, animateChild } from '@angular/animations';\n\nclass ToastItem {\n    constructor(zone) {\n        this.zone = zone;\n        this.onClose = new EventEmitter();\n    }\n    ngAfterViewInit() {\n        this.initTimeout();\n    }\n    initTimeout() {\n        if (!this.message.sticky) {\n            this.zone.runOutsideAngular(() => {\n                this.timeout = setTimeout(() => {\n                    this.onClose.emit({\n                        index: this.index,\n                        message: this.message\n                    });\n                }, this.message.life || 3000);\n            });\n        }\n    }\n    clearTimeout() {\n        if (this.timeout) {\n            clearTimeout(this.timeout);\n            this.timeout = null;\n        }\n    }\n    onMouseEnter() {\n        this.clearTimeout();\n    }\n    onMouseLeave() {\n        this.initTimeout();\n    }\n    onCloseIconClick(event) {\n        this.clearTimeout();\n        this.onClose.emit({\n            index: this.index,\n            message: this.message\n        });\n        event.preventDefault();\n    }\n    ngOnDestroy() {\n        this.clearTimeout();\n    }\n}\nToastItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastItem, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nToastItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: ToastItem, selector: \"p-toastItem\", inputs: { message: \"message\", index: \"index\", template: \"template\", showTransformOptions: \"showTransformOptions\", hideTransformOptions: \"hideTransformOptions\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\" }, outputs: { onClose: \"onClose\" }, host: { classAttribute: \"p-element\" }, viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }], ngImport: i0, template: `\n        <div #container [attr.id]=\"message.id\" [class]=\"message.styleClass\" [ngClass]=\"['p-toast-message-' + message.severity, 'p-toast-message']\" [@messageState]=\"{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n            <div class=\"p-toast-message-content\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"  [ngClass]=\"message.contentStyleClass\">\n                <ng-container *ngIf=\"!template\">\n                    <span [class]=\"'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')\" [ngClass]=\"{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',\n                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}\"></span>\n                    <div class=\"p-toast-message-text\">\n                        <div class=\"p-toast-summary\">{{message.summary}}</div>\n                        <div class=\"p-toast-detail\">{{message.detail}}</div>\n                    </div>\n                </ng-container>\n                <ng-container *ngTemplateOutlet=\"template; context: {$implicit: message}\"></ng-container>\n                <button type=\"button\" class=\"p-toast-icon-close p-link\" (click)=\"onCloseIconClick($event)\" (keydown.enter)=\"onCloseIconClick($event)\" *ngIf=\"message.closable !== false\" pRipple>\n                    <span class=\"p-toast-icon-close-icon pi pi-times\"></span>\n                </button>\n            </div>\n        </div>\n    `, isInline: true, directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.Ripple, selector: \"[pRipple]\" }], animations: [\n        trigger('messageState', [\n            state('visible', style({\n                transform: 'translateY(0)',\n                opacity: 1\n            })),\n            transition('void => *', [\n                style({ transform: '{{showTransformParams}}', opacity: 0 }),\n                animate('{{showTransitionParams}}')\n            ]),\n            transition('* => void', [\n                animate(('{{hideTransitionParams}}'), style({\n                    height: 0,\n                    opacity: 0,\n                    transform: '{{hideTransformParams}}'\n                }))\n            ])\n        ])\n    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastItem, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-toastItem',\n                    template: `\n        <div #container [attr.id]=\"message.id\" [class]=\"message.styleClass\" [ngClass]=\"['p-toast-message-' + message.severity, 'p-toast-message']\" [@messageState]=\"{value: 'visible', params: {showTransformParams: showTransformOptions, hideTransformParams: hideTransformOptions, showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n                (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n            <div class=\"p-toast-message-content\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\"  [ngClass]=\"message.contentStyleClass\">\n                <ng-container *ngIf=\"!template\">\n                    <span [class]=\"'p-toast-message-icon pi' + (message.icon ? ' ' + message.icon : '')\" [ngClass]=\"{'pi-info-circle': message.severity == 'info', 'pi-exclamation-triangle': message.severity == 'warn',\n                        'pi-times-circle': message.severity == 'error', 'pi-check' :message.severity == 'success'}\"></span>\n                    <div class=\"p-toast-message-text\">\n                        <div class=\"p-toast-summary\">{{message.summary}}</div>\n                        <div class=\"p-toast-detail\">{{message.detail}}</div>\n                    </div>\n                </ng-container>\n                <ng-container *ngTemplateOutlet=\"template; context: {$implicit: message}\"></ng-container>\n                <button type=\"button\" class=\"p-toast-icon-close p-link\" (click)=\"onCloseIconClick($event)\" (keydown.enter)=\"onCloseIconClick($event)\" *ngIf=\"message.closable !== false\" pRipple>\n                    <span class=\"p-toast-icon-close-icon pi pi-times\"></span>\n                </button>\n            </div>\n        </div>\n    `,\n                    animations: [\n                        trigger('messageState', [\n                            state('visible', style({\n                                transform: 'translateY(0)',\n                                opacity: 1\n                            })),\n                            transition('void => *', [\n                                style({ transform: '{{showTransformParams}}', opacity: 0 }),\n                                animate('{{showTransitionParams}}')\n                            ]),\n                            transition('* => void', [\n                                animate(('{{hideTransitionParams}}'), style({\n                                    height: 0,\n                                    opacity: 0,\n                                    transform: '{{hideTransformParams}}'\n                                }))\n                            ])\n                        ])\n                    ],\n                    encapsulation: ViewEncapsulation.None,\n                    changeDetection: ChangeDetectionStrategy.OnPush,\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { message: [{\n                type: Input\n            }], index: [{\n                type: Input\n            }], template: [{\n                type: Input\n            }], showTransformOptions: [{\n                type: Input\n            }], hideTransformOptions: [{\n                type: Input\n            }], showTransitionOptions: [{\n                type: Input\n            }], hideTransitionOptions: [{\n                type: Input\n            }], onClose: [{\n                type: Output\n            }], containerViewChild: [{\n                type: ViewChild,\n                args: ['container']\n            }] } });\nclass Toast {\n    constructor(messageService, cd, config) {\n        this.messageService = messageService;\n        this.cd = cd;\n        this.config = config;\n        this.autoZIndex = true;\n        this.baseZIndex = 0;\n        this.position = 'top-right';\n        this.preventOpenDuplicates = false;\n        this.preventDuplicates = false;\n        this.showTransformOptions = 'translateY(100%)';\n        this.hideTransformOptions = 'translateY(-100%)';\n        this.showTransitionOptions = '300ms ease-out';\n        this.hideTransitionOptions = '250ms ease-in';\n        this.onClose = new EventEmitter();\n        this.id = UniqueComponentId();\n    }\n    ngOnInit() {\n        this.messageSubscription = this.messageService.messageObserver.subscribe(messages => {\n            if (messages) {\n                if (messages instanceof Array) {\n                    const filteredMessages = messages.filter(m => this.canAdd(m));\n                    this.add(filteredMessages);\n                }\n                else if (this.canAdd(messages)) {\n                    this.add([messages]);\n                }\n            }\n        });\n        this.clearSubscription = this.messageService.clearObserver.subscribe(key => {\n            if (key) {\n                if (this.key === key) {\n                    this.messages = null;\n                }\n            }\n            else {\n                this.messages = null;\n            }\n            this.cd.markForCheck();\n        });\n    }\n    ngAfterViewInit() {\n        if (this.breakpoints) {\n            this.createStyle();\n        }\n    }\n    add(messages) {\n        this.messages = this.messages ? [...this.messages, ...messages] : [...messages];\n        if (this.preventDuplicates) {\n            this.messagesArchieve = this.messagesArchieve ? [...this.messagesArchieve, ...messages] : [...messages];\n        }\n        this.cd.markForCheck();\n    }\n    canAdd(message) {\n        let allow = this.key === message.key;\n        if (allow && this.preventOpenDuplicates) {\n            allow = !this.containsMessage(this.messages, message);\n        }\n        if (allow && this.preventDuplicates) {\n            allow = !this.containsMessage(this.messagesArchieve, message);\n        }\n        return allow;\n    }\n    containsMessage(collection, message) {\n        if (!collection) {\n            return false;\n        }\n        return collection.find(m => {\n            return ((m.summary === message.summary) && (m.detail == message.detail) && (m.severity === message.severity));\n        }) != null;\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'message':\n                    this.template = item.template;\n                    break;\n                default:\n                    this.template = item.template;\n                    break;\n            }\n        });\n    }\n    onMessageClose(event) {\n        this.messages.splice(event.index, 1);\n        this.onClose.emit({\n            message: event.message\n        });\n        this.cd.detectChanges();\n    }\n    onAnimationStart(event) {\n        if (event.fromState === 'void') {\n            this.containerViewChild.nativeElement.setAttribute(this.id, '');\n            if (this.autoZIndex) {\n                ZIndexUtils.set('modal', this.containerViewChild.nativeElement, this.baseZIndex || this.config.zIndex.modal);\n            }\n        }\n    }\n    onAnimationEnd(event) {\n        if (event.toState === 'void') {\n            if (this.autoZIndex) {\n                ZIndexUtils.clear(this.containerViewChild.nativeElement);\n            }\n        }\n    }\n    createStyle() {\n        if (!this.styleElement) {\n            this.styleElement = document.createElement('style');\n            this.styleElement.type = 'text/css';\n            document.head.appendChild(this.styleElement);\n            let innerHTML = '';\n            for (let breakpoint in this.breakpoints) {\n                let breakpointStyle = '';\n                for (let styleProp in this.breakpoints[breakpoint]) {\n                    breakpointStyle += styleProp + ':' + this.breakpoints[breakpoint][styleProp] + ' !important;';\n                }\n                innerHTML += `\n                    @media screen and (max-width: ${breakpoint}) {\n                        .p-toast[${this.id}] {\n                           ${breakpointStyle}\n                        }\n                    }\n                `;\n            }\n            this.styleElement.innerHTML = innerHTML;\n        }\n    }\n    destroyStyle() {\n        if (this.styleElement) {\n            document.head.removeChild(this.styleElement);\n            this.styleElement = null;\n        }\n    }\n    ngOnDestroy() {\n        if (this.messageSubscription) {\n            this.messageSubscription.unsubscribe();\n        }\n        if (this.containerViewChild && this.autoZIndex) {\n            ZIndexUtils.clear(this.containerViewChild.nativeElement);\n        }\n        if (this.clearSubscription) {\n            this.clearSubscription.unsubscribe();\n        }\n        this.destroyStyle();\n    }\n}\nToast.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Toast, deps: [{ token: i3.MessageService }, { token: i0.ChangeDetectorRef }, { token: i3.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });\nToast.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Toast, selector: \"p-toast\", inputs: { key: \"key\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", style: \"style\", styleClass: \"styleClass\", position: \"position\", preventOpenDuplicates: \"preventOpenDuplicates\", preventDuplicates: \"preventDuplicates\", showTransformOptions: \"showTransformOptions\", hideTransformOptions: \"hideTransformOptions\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", breakpoints: \"breakpoints\" }, outputs: { onClose: \"onClose\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }], ngImport: i0, template: `\n        <div #container [ngClass]=\"'p-toast p-component p-toast-' + position\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <p-toastItem *ngFor=\"let msg of messages; let i=index\" [message]=\"msg\" [index]=\"i\" (onClose)=\"onMessageClose($event)\"\n                    [template]=\"template\" @toastAnimation (@toastAnimation.start)=\"onAnimationStart($event)\" (@toastAnimation.done)=\"onAnimationEnd($event)\"\n                    [showTransformOptions]=\"showTransformOptions\" [hideTransformOptions]=\"hideTransformOptions\"\n                    [showTransitionOptions]=\"showTransitionOptions\" [hideTransitionOptions]=\"hideTransitionOptions\"></p-toastItem>\n        </div>\n    `, isInline: true, styles: [\".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\\n\"], components: [{ type: ToastItem, selector: \"p-toastItem\", inputs: [\"message\", \"index\", \"template\", \"showTransformOptions\", \"hideTransformOptions\", \"showTransitionOptions\", \"hideTransitionOptions\"], outputs: [\"onClose\"] }], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n        trigger('toastAnimation', [\n            transition(':enter, :leave', [\n                query('@*', animateChild())\n            ])\n        ])\n    ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Toast, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-toast', template: `\n        <div #container [ngClass]=\"'p-toast p-component p-toast-' + position\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <p-toastItem *ngFor=\"let msg of messages; let i=index\" [message]=\"msg\" [index]=\"i\" (onClose)=\"onMessageClose($event)\"\n                    [template]=\"template\" @toastAnimation (@toastAnimation.start)=\"onAnimationStart($event)\" (@toastAnimation.done)=\"onAnimationEnd($event)\"\n                    [showTransformOptions]=\"showTransformOptions\" [hideTransformOptions]=\"hideTransformOptions\"\n                    [showTransitionOptions]=\"showTransitionOptions\" [hideTransitionOptions]=\"hideTransitionOptions\"></p-toastItem>\n        </div>\n    `, animations: [\n                        trigger('toastAnimation', [\n                            transition(':enter, :leave', [\n                                query('@*', animateChild())\n                            ])\n                        ])\n                    ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-toast{position:fixed;width:25rem}.p-toast-message{overflow:hidden}.p-toast-message-content{display:flex;align-items:flex-start}.p-toast-message-text{flex:1 1 auto}.p-toast-top-right{top:20px;right:20px}.p-toast-top-left{top:20px;left:20px}.p-toast-bottom-left{bottom:20px;left:20px}.p-toast-bottom-right{bottom:20px;right:20px}.p-toast-top-center{top:20px;left:50%;transform:translate(-50%)}.p-toast-bottom-center{bottom:20px;left:50%;transform:translate(-50%)}.p-toast-center{left:50%;top:50%;min-width:20vw;transform:translate(-50%,-50%)}.p-toast-icon-close{display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.p-toast-icon-close.p-link{cursor:pointer}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i3.MessageService }, { type: i0.ChangeDetectorRef }, { type: i3.PrimeNGConfig }]; }, propDecorators: { key: [{\n                type: Input\n            }], autoZIndex: [{\n                type: Input\n            }], baseZIndex: [{\n                type: Input\n            }], style: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], position: [{\n                type: Input\n            }], preventOpenDuplicates: [{\n                type: Input\n            }], preventDuplicates: [{\n                type: Input\n            }], showTransformOptions: [{\n                type: Input\n            }], hideTransformOptions: [{\n                type: Input\n            }], showTransitionOptions: [{\n                type: Input\n            }], hideTransitionOptions: [{\n                type: Input\n            }], breakpoints: [{\n                type: Input\n            }], onClose: [{\n                type: Output\n            }], containerViewChild: [{\n                type: ViewChild,\n                args: ['container']\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }] } });\nclass ToastModule {\n}\nToastModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nToastModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastModule, declarations: [Toast, ToastItem], imports: [CommonModule, RippleModule], exports: [Toast, SharedModule] });\nToastModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastModule, imports: [[CommonModule, RippleModule], SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ToastModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, RippleModule],\n                    exports: [Toast, SharedModule],\n                    declarations: [Toast, ToastItem]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Toast, ToastItem, ToastModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/7ee093b06a84f61d8e496977c9a25700.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/7ee093b06a84f61d8e496977c9a25700.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/7ee093b06a84f61d8e496977c9a25700.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Injectable, Component, Directive, Input, NgModule } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ObjectUtils } from 'primeng/utils';\nimport { CommonModule } from '@angular/common';\nconst _c0 = [\"*\"];\n\nclass FilterMatchMode {}\n\nFilterMatchMode.STARTS_WITH = 'startsWith';\nFilterMatchMode.CONTAINS = 'contains';\nFilterMatchMode.NOT_CONTAINS = 'notContains';\nFilterMatchMode.ENDS_WITH = 'endsWith';\nFilterMatchMode.EQUALS = 'equals';\nFilterMatchMode.NOT_EQUALS = 'notEquals';\nFilterMatchMode.IN = 'in';\nFilterMatchMode.LESS_THAN = 'lt';\nFilterMatchMode.LESS_THAN_OR_EQUAL_TO = 'lte';\nFilterMatchMode.GREATER_THAN = 'gt';\nFilterMatchMode.GREATER_THAN_OR_EQUAL_TO = 'gte';\nFilterMatchMode.BETWEEN = 'between';\nFilterMatchMode.IS = 'is';\nFilterMatchMode.IS_NOT = 'isNot';\nFilterMatchMode.BEFORE = 'before';\nFilterMatchMode.AFTER = 'after';\nFilterMatchMode.DATE_IS = 'dateIs';\nFilterMatchMode.DATE_IS_NOT = 'dateIsNot';\nFilterMatchMode.DATE_BEFORE = 'dateBefore';\nFilterMatchMode.DATE_AFTER = 'dateAfter';\n\nclass PrimeNGConfig {\n  constructor() {\n    this.ripple = false;\n    this.filterMatchModeOptions = {\n      text: [FilterMatchMode.STARTS_WITH, FilterMatchMode.CONTAINS, FilterMatchMode.NOT_CONTAINS, FilterMatchMode.ENDS_WITH, FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS],\n      numeric: [FilterMatchMode.EQUALS, FilterMatchMode.NOT_EQUALS, FilterMatchMode.LESS_THAN, FilterMatchMode.LESS_THAN_OR_EQUAL_TO, FilterMatchMode.GREATER_THAN, FilterMatchMode.GREATER_THAN_OR_EQUAL_TO],\n      date: [FilterMatchMode.DATE_IS, FilterMatchMode.DATE_IS_NOT, FilterMatchMode.DATE_BEFORE, FilterMatchMode.DATE_AFTER]\n    };\n    this.translation = {\n      startsWith: 'Starts with',\n      contains: 'Contains',\n      notContains: 'Not contains',\n      endsWith: 'Ends with',\n      equals: 'Equals',\n      notEquals: 'Not equals',\n      noFilter: 'No Filter',\n      lt: 'Less than',\n      lte: 'Less than or equal to',\n      gt: 'Greater than',\n      gte: 'Greater than or equal to',\n      is: 'Is',\n      isNot: 'Is not',\n      before: 'Before',\n      after: 'After',\n      dateIs: 'Date is',\n      dateIsNot: 'Date is not',\n      dateBefore: 'Date is before',\n      dateAfter: 'Date is after',\n      clear: 'Clear',\n      apply: 'Apply',\n      matchAll: 'Match All',\n      matchAny: 'Match Any',\n      addRule: 'Add Rule',\n      removeRule: 'Remove Rule',\n      accept: 'Yes',\n      reject: 'No',\n      choose: 'Choose',\n      upload: 'Upload',\n      cancel: 'Cancel',\n      dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n      dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n      dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n      monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n      monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n      dateFormat: 'mm/dd/yy',\n      today: 'Today',\n      weekHeader: 'Wk',\n      weak: 'Weak',\n      medium: 'Medium',\n      strong: 'Strong',\n      passwordPrompt: 'Enter a password',\n      emptyMessage: 'No results found',\n      emptyFilterMessage: 'No results found'\n    };\n    this.zIndex = {\n      modal: 1100,\n      overlay: 1000,\n      menu: 1000,\n      tooltip: 1100\n    };\n    this.translationSource = new Subject();\n    this.translationObserver = this.translationSource.asObservable();\n  }\n\n  getTranslation(key) {\n    return this.translation[key];\n  }\n\n  setTranslation(value) {\n    this.translation = { ...this.translation,\n      ...value\n    };\n    this.translationSource.next(this.translation);\n  }\n\n}\n\nPrimeNGConfig.ɵfac = function PrimeNGConfig_Factory(t) {\n  return new (t || PrimeNGConfig)();\n};\n\nPrimeNGConfig.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: PrimeNGConfig,\n  factory: PrimeNGConfig.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PrimeNGConfig, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nclass TranslationKeys {}\n\nTranslationKeys.STARTS_WITH = 'startsWith';\nTranslationKeys.CONTAINS = 'contains';\nTranslationKeys.NOT_CONTAINS = 'notContains';\nTranslationKeys.ENDS_WITH = 'endsWith';\nTranslationKeys.EQUALS = 'equals';\nTranslationKeys.NOT_EQUALS = 'notEquals';\nTranslationKeys.NO_FILTER = 'noFilter';\nTranslationKeys.LT = 'lt';\nTranslationKeys.LTE = 'lte';\nTranslationKeys.GT = 'gt';\nTranslationKeys.GTE = 'gte';\nTranslationKeys.IS = 'is';\nTranslationKeys.IS_NOT = 'isNot';\nTranslationKeys.BEFORE = 'before';\nTranslationKeys.AFTER = 'after';\nTranslationKeys.CLEAR = 'clear';\nTranslationKeys.APPLY = 'apply';\nTranslationKeys.MATCH_ALL = 'matchAll';\nTranslationKeys.MATCH_ANY = 'matchAny';\nTranslationKeys.ADD_RULE = 'addRule';\nTranslationKeys.REMOVE_RULE = 'removeRule';\nTranslationKeys.ACCEPT = 'accept';\nTranslationKeys.REJECT = 'reject';\nTranslationKeys.CHOOSE = 'choose';\nTranslationKeys.UPLOAD = 'upload';\nTranslationKeys.CANCEL = 'cancel';\nTranslationKeys.DAY_NAMES = 'dayNames';\nTranslationKeys.DAY_NAMES_SHORT = 'dayNamesShort';\nTranslationKeys.DAY_NAMES_MIN = 'dayNamesMin';\nTranslationKeys.MONTH_NAMES = 'monthNames';\nTranslationKeys.MONTH_NAMES_SHORT = 'monthNamesShort';\nTranslationKeys.TODAY = 'today';\nTranslationKeys.WEEK_HEADER = 'weekHeader';\nTranslationKeys.WEAK = 'weak';\nTranslationKeys.MEDIUM = 'medium';\nTranslationKeys.STRONG = 'strong';\nTranslationKeys.PASSWORD_PROMPT = 'passwordPrompt';\nTranslationKeys.EMPTY_MESSAGE = 'emptyMessage';\nTranslationKeys.EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';\nvar ConfirmEventType;\n\n(function (ConfirmEventType) {\n  ConfirmEventType[ConfirmEventType[\"ACCEPT\"] = 0] = \"ACCEPT\";\n  ConfirmEventType[ConfirmEventType[\"REJECT\"] = 1] = \"REJECT\";\n  ConfirmEventType[ConfirmEventType[\"CANCEL\"] = 2] = \"CANCEL\";\n})(ConfirmEventType || (ConfirmEventType = {}));\n\nclass ConfirmationService {\n  constructor() {\n    this.requireConfirmationSource = new Subject();\n    this.acceptConfirmationSource = new Subject();\n    this.requireConfirmation$ = this.requireConfirmationSource.asObservable();\n    this.accept = this.acceptConfirmationSource.asObservable();\n  }\n\n  confirm(confirmation) {\n    this.requireConfirmationSource.next(confirmation);\n    return this;\n  }\n\n  close() {\n    this.requireConfirmationSource.next(null);\n    return this;\n  }\n\n  onAccept() {\n    this.acceptConfirmationSource.next(null);\n  }\n\n}\n\nConfirmationService.ɵfac = function ConfirmationService_Factory(t) {\n  return new (t || ConfirmationService)();\n};\n\nConfirmationService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ConfirmationService,\n  factory: ConfirmationService.ɵfac\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ConfirmationService, [{\n    type: Injectable\n  }], null, null);\n})();\n\nclass FilterService {\n  constructor() {\n    this.filters = {\n      startsWith: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || filter.trim() === '') {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n        return stringValue.slice(0, filterValue.length) === filterValue;\n      },\n      contains: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n        return stringValue.indexOf(filterValue) !== -1;\n      },\n      notContains: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n        return stringValue.indexOf(filterValue) === -1;\n      },\n      endsWith: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || filter.trim() === '') {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n        let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n        return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n      },\n      equals: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() === filter.getTime();else return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n      },\n      notEquals: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null || typeof filter === 'string' && filter.trim() === '') {\n          return false;\n        }\n\n        if (value === undefined || value === null) {\n          return true;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() !== filter.getTime();else return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n      },\n      in: (value, filter) => {\n        if (filter === undefined || filter === null || filter.length === 0) {\n          return true;\n        }\n\n        for (let i = 0; i < filter.length; i++) {\n          if (ObjectUtils.equals(value, filter[i])) {\n            return true;\n          }\n        }\n\n        return false;\n      },\n      between: (value, filter) => {\n        if (filter == null || filter[0] == null || filter[1] == null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime) return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();else return filter[0] <= value && value <= filter[1];\n      },\n      lt: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() < filter.getTime();else return value < filter;\n      },\n      lte: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() <= filter.getTime();else return value <= filter;\n      },\n      gt: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() > filter.getTime();else return value > filter;\n      },\n      gte: (value, filter, filterLocale) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        if (value.getTime && filter.getTime) return value.getTime() >= filter.getTime();else return value >= filter;\n      },\n      is: (value, filter, filterLocale) => {\n        return this.filters.equals(value, filter, filterLocale);\n      },\n      isNot: (value, filter, filterLocale) => {\n        return this.filters.notEquals(value, filter, filterLocale);\n      },\n      before: (value, filter, filterLocale) => {\n        return this.filters.lt(value, filter, filterLocale);\n      },\n      after: (value, filter, filterLocale) => {\n        return this.filters.gt(value, filter, filterLocale);\n      },\n      dateIs: (value, filter) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        return value.toDateString() === filter.toDateString();\n      },\n      dateIsNot: (value, filter) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        return value.toDateString() !== filter.toDateString();\n      },\n      dateBefore: (value, filter) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        return value.getTime() < filter.getTime();\n      },\n      dateAfter: (value, filter) => {\n        if (filter === undefined || filter === null) {\n          return true;\n        }\n\n        if (value === undefined || value === null) {\n          return false;\n        }\n\n        return value.getTime() > filter.getTime();\n      }\n    };\n  }\n\n  filter(value, fields, filterValue, filterMatchMode, filterLocale) {\n    let filteredItems = [];\n\n    if (value) {\n      for (let item of value) {\n        for (let field of fields) {\n          let fieldValue = ObjectUtils.resolveFieldData(item, field);\n\n          if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {\n            filteredItems.push(item);\n            break;\n          }\n        }\n      }\n    }\n\n    return filteredItems;\n  }\n\n  register(rule, fn) {\n    this.filters[rule] = fn;\n  }\n\n}\n\nFilterService.ɵfac = function FilterService_Factory(t) {\n  return new (t || FilterService)();\n};\n\nFilterService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: FilterService,\n  factory: FilterService.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(FilterService, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nclass ContextMenuService {\n  constructor() {\n    this.activeItemKeyChange = new Subject();\n    this.activeItemKeyChange$ = this.activeItemKeyChange.asObservable();\n  }\n\n  changeKey(key) {\n    this.activeItemKey = key;\n    this.activeItemKeyChange.next(this.activeItemKey);\n  }\n\n  reset() {\n    this.activeItemKey = null;\n    this.activeItemKeyChange.next(this.activeItemKey);\n  }\n\n}\n\nContextMenuService.ɵfac = function ContextMenuService_Factory(t) {\n  return new (t || ContextMenuService)();\n};\n\nContextMenuService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ContextMenuService,\n  factory: ContextMenuService.ɵfac\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ContextMenuService, [{\n    type: Injectable\n  }], null, null);\n})();\n\nclass MessageService {\n  constructor() {\n    this.messageSource = new Subject();\n    this.clearSource = new Subject();\n    this.messageObserver = this.messageSource.asObservable();\n    this.clearObserver = this.clearSource.asObservable();\n  }\n\n  add(message) {\n    if (message) {\n      this.messageSource.next(message);\n    }\n  }\n\n  addAll(messages) {\n    if (messages && messages.length) {\n      this.messageSource.next(messages);\n    }\n  }\n\n  clear(key) {\n    this.clearSource.next(key || null);\n  }\n\n}\n\nMessageService.ɵfac = function MessageService_Factory(t) {\n  return new (t || MessageService)();\n};\n\nMessageService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: MessageService,\n  factory: MessageService.ɵfac\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MessageService, [{\n    type: Injectable\n  }], null, null);\n})();\n\nclass OverlayService {\n  constructor() {\n    this.clickSource = new Subject();\n    this.clickObservable = this.clickSource.asObservable();\n  }\n\n  add(event) {\n    if (event) {\n      this.clickSource.next(event);\n    }\n  }\n\n}\n\nOverlayService.ɵfac = function OverlayService_Factory(t) {\n  return new (t || OverlayService)();\n};\n\nOverlayService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: OverlayService,\n  factory: OverlayService.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(OverlayService, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n\nclass PrimeIcons {}\n\nPrimeIcons.ALIGN_CENTER = 'pi pi-align-center';\nPrimeIcons.ALIGN_JUSTIFY = 'pi pi-align-justify';\nPrimeIcons.ALIGN_LEFT = 'pi pi-align-left';\nPrimeIcons.ALIGN_RIGHT = 'pi pi-align-right';\nPrimeIcons.AMAZON = 'pi pi-amazon';\nPrimeIcons.ANDROID = 'pi pi-android';\nPrimeIcons.ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';\nPrimeIcons.ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';\nPrimeIcons.ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';\nPrimeIcons.ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';\nPrimeIcons.ANGLE_DOWN = 'pi pi-angle-down';\nPrimeIcons.ANGLE_LEFT = 'pi pi-angle-left';\nPrimeIcons.ANGLE_RIGHT = 'pi pi-angle-right';\nPrimeIcons.ANGLE_UP = 'pi pi-angle-up';\nPrimeIcons.APPLE = 'pi pi-apple';\nPrimeIcons.ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';\nPrimeIcons.ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';\nPrimeIcons.ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';\nPrimeIcons.ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';\nPrimeIcons.ARROW_DOWN = 'pi pi-arrow-down';\nPrimeIcons.ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';\nPrimeIcons.ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';\nPrimeIcons.ARROW_LEFT = 'pi pi-arrow-left';\nPrimeIcons.ARROW_RIGHT = 'pi pi-arrow-right';\nPrimeIcons.ARROW_UP = 'pi pi-arrow-up';\nPrimeIcons.ARROW_UP_LEFT = 'pi pi-arrow-up-left';\nPrimeIcons.ARROW_UP_RIGHT = 'pi pi-arrow-up-right';\nPrimeIcons.ARROW_H = 'pi pi-arrow-h';\nPrimeIcons.ARROW_V = 'pi pi-arrow-v';\nPrimeIcons.AT = 'pi pi-at';\nPrimeIcons.BACKWARD = 'pi pi-backward';\nPrimeIcons.BAN = 'pi pi-ban';\nPrimeIcons.BARS = 'pi pi-bars';\nPrimeIcons.BELL = 'pi pi-bell';\nPrimeIcons.BOLT = 'pi pi-bolt';\nPrimeIcons.BOOK = 'pi pi-book';\nPrimeIcons.BOOKMARK = 'pi pi-bookmark';\nPrimeIcons.BOOKMARK_FILL = 'pi pi-bookmark-fill';\nPrimeIcons.BOX = 'pi pi-box';\nPrimeIcons.BRIEFCASE = 'pi pi-briefcase';\nPrimeIcons.BUILDING = 'pi pi-building';\nPrimeIcons.CALENDAR = 'pi pi-calendar';\nPrimeIcons.CALENDAR_MINUS = 'pi pi-calendar-minus';\nPrimeIcons.CALENDAR_PLUS = 'pi pi-calendar-plus';\nPrimeIcons.CALENDAR_TIMES = 'pi pi-calendar-times';\nPrimeIcons.CAMERA = 'pi pi-camera';\nPrimeIcons.CAR = 'pi pi-car';\nPrimeIcons.CARET_DOWN = 'pi pi-caret-down';\nPrimeIcons.CARET_LEFT = 'pi pi-caret-left';\nPrimeIcons.CARET_RIGHT = 'pi pi-caret-right';\nPrimeIcons.CARET_UP = 'pi pi-caret-up';\nPrimeIcons.CHART_BAR = 'pi pi-chart-bar';\nPrimeIcons.CHART_LINE = 'pi pi-chart-line';\nPrimeIcons.CHART_PIE = 'pi pi-chart-pie';\nPrimeIcons.CHECK = 'pi pi-check';\nPrimeIcons.CHECK_CIRCLE = 'pi pi-check-circle';\nPrimeIcons.CHECK_SQUARE = 'pi pi-check-square';\nPrimeIcons.CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';\nPrimeIcons.CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';\nPrimeIcons.CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';\nPrimeIcons.CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';\nPrimeIcons.CHEVRON_DOWN = 'pi pi-chevron-down';\nPrimeIcons.CHEVRON_LEFT = 'pi pi-chevron-left';\nPrimeIcons.CHEVRON_RIGHT = 'pi pi-chevron-right';\nPrimeIcons.CHEVRON_UP = 'pi pi-chevron-up';\nPrimeIcons.CIRCLE = 'pi pi-circle';\nPrimeIcons.CIRCLE_FILL = 'pi pi-circle-fill';\nPrimeIcons.CLOCK = 'pi pi-clock';\nPrimeIcons.CLONE = 'pi pi-clone';\nPrimeIcons.CLOUD = 'pi pi-cloud';\nPrimeIcons.CLOUD_DOWNLOAD = 'pi pi-cloud-download';\nPrimeIcons.CLOUD_UPLOAD = 'pi pi-cloud-upload';\nPrimeIcons.CODE = 'pi pi-code';\nPrimeIcons.COG = 'pi pi-cog';\nPrimeIcons.COMMENT = 'pi pi-comment';\nPrimeIcons.COMMENTS = 'pi pi-comments';\nPrimeIcons.COMPASS = 'pi pi-compass';\nPrimeIcons.COPY = 'pi pi-copy';\nPrimeIcons.CREDIT_CARD = 'pi pi-credit-card';\nPrimeIcons.DATABASE = 'pi pi-database';\nPrimeIcons.DESKTOP = 'pi pi-desktop';\nPrimeIcons.DIRECTIONS = 'pi pi-directions';\nPrimeIcons.DIRECTIONS_ALT = 'pi pi-directions-alt';\nPrimeIcons.DISCORD = 'pi pi-discord';\nPrimeIcons.DOLLAR = 'pi pi-dollar';\nPrimeIcons.DOWNLOAD = 'pi pi-download';\nPrimeIcons.EJECT = 'pi pi-eject';\nPrimeIcons.ELLIPSIS_H = 'pi pi-ellipsis-h';\nPrimeIcons.ELLIPSIS_V = 'pi pi-ellipsis-v';\nPrimeIcons.ENVELOPE = 'pi pi-envelope';\nPrimeIcons.EURO = 'pi pi-euro';\nPrimeIcons.EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';\nPrimeIcons.EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';\nPrimeIcons.EXTERNAL_LINK = 'pi pi-external-link';\nPrimeIcons.EYE = 'pi pi-eye';\nPrimeIcons.EYE_SLASH = 'pi pi-eye-slash';\nPrimeIcons.FACEBOOK = 'pi pi-facebook';\nPrimeIcons.FAST_BACKWARD = 'pi pi-fast-backward';\nPrimeIcons.FAST_FORWARD = 'pi pi-fast-forward';\nPrimeIcons.FILE = 'pi pi-file';\nPrimeIcons.FILE_EXCEL = 'pi pi-file-excel';\nPrimeIcons.FILE_PDF = 'pi pi-file-pdf';\nPrimeIcons.FILTER = 'pi pi-filter';\nPrimeIcons.FILTER_FILL = 'pi pi-filter-fill';\nPrimeIcons.FILTER_SLASH = 'pi pi-filter-slash';\nPrimeIcons.FLAG = 'pi pi-flag';\nPrimeIcons.FLAG_FILL = 'pi pi-flag-fill';\nPrimeIcons.FOLDER = 'pi pi-folder';\nPrimeIcons.FOLDER_OPEN = 'pi pi-folder-open';\nPrimeIcons.FORWARD = 'pi pi-forward';\nPrimeIcons.GITHUB = 'pi pi-github';\nPrimeIcons.GLOBE = 'pi pi-globe';\nPrimeIcons.GOOGLE = 'pi pi-google';\nPrimeIcons.HASHTAG = 'pi pi-hashtag';\nPrimeIcons.HEART = 'pi pi-heart';\nPrimeIcons.HEART_FILL = 'pi pi-heart-fill';\nPrimeIcons.HISTORY = 'pi pi-history';\nPrimeIcons.HOME = 'pi pi-home';\nPrimeIcons.ID_CARD = 'pi pi-id-card';\nPrimeIcons.IMAGE = 'pi pi-image';\nPrimeIcons.IMAGES = 'pi pi-images';\nPrimeIcons.INBOX = 'pi pi-inbox';\nPrimeIcons.INFO = 'pi pi-info';\nPrimeIcons.INFO_CIRCLE = 'pi pi-info-circle';\nPrimeIcons.INSTAGRAM = 'pi pi-instagram';\nPrimeIcons.KEY = 'pi pi-key';\nPrimeIcons.LINK = 'pi pi-link';\nPrimeIcons.LINKEDIN = 'pi pi-linkedin';\nPrimeIcons.LIST = 'pi pi-list';\nPrimeIcons.LOCK = 'pi pi-lock';\nPrimeIcons.LOCK_OPEN = 'pi pi-lock-open';\nPrimeIcons.MAP = 'pi pi-map';\nPrimeIcons.MAP_MARKER = 'pi pi-map-marker';\nPrimeIcons.MICROSOFT = 'pi pi-microsoft';\nPrimeIcons.MINUS = 'pi pi-minus';\nPrimeIcons.MINUS_CIRCLE = 'pi pi-minus-circle';\nPrimeIcons.MOBILE = 'pi pi-mobile';\nPrimeIcons.MONEY_BILL = 'pi pi-money-bill';\nPrimeIcons.MOON = 'pi pi-moon';\nPrimeIcons.PALETTE = 'pi pi-palette';\nPrimeIcons.PAPERCLIP = 'pi pi-paperclip';\nPrimeIcons.PAUSE = 'pi pi-pause';\nPrimeIcons.PAYPAL = 'pi pi-paypal';\nPrimeIcons.PENCIL = 'pi pi-pencil';\nPrimeIcons.PERCENTAGE = 'pi pi-percentage';\nPrimeIcons.PHONE = 'pi pi-phone';\nPrimeIcons.PLAY = 'pi pi-play';\nPrimeIcons.PLUS = 'pi pi-plus';\nPrimeIcons.PLUS_CIRCLE = 'pi pi-plus-circle';\nPrimeIcons.POUND = 'pi pi-pound';\nPrimeIcons.POWER_OFF = 'pi pi-power-off';\nPrimeIcons.PRIME = 'pi pi-prime';\nPrimeIcons.PRINT = 'pi pi-print';\nPrimeIcons.QRCODE = 'pi pi-qrcode';\nPrimeIcons.QUESTION = 'pi pi-question';\nPrimeIcons.QUESTION_CIRCLE = 'pi pi-question-circle';\nPrimeIcons.REDDIT = 'pi pi-reddit';\nPrimeIcons.REFRESH = 'pi pi-refresh';\nPrimeIcons.REPLAY = 'pi pi-replay';\nPrimeIcons.REPLY = 'pi pi-reply';\nPrimeIcons.SAVE = 'pi pi-save';\nPrimeIcons.SEARCH = 'pi pi-search';\nPrimeIcons.SEARCH_MINUS = 'pi pi-search-minus';\nPrimeIcons.SEARCH_PLUS = 'pi pi-search-plus';\nPrimeIcons.SEND = 'pi pi-send';\nPrimeIcons.SERVER = 'pi pi-server';\nPrimeIcons.SHARE_ALT = 'pi pi-share-alt';\nPrimeIcons.SHIELD = 'pi pi-shield';\nPrimeIcons.SHOPPING_BAG = 'pi pi-shopping-bag';\nPrimeIcons.SHOPPING_CART = 'pi pi-shopping-cart';\nPrimeIcons.SIGN_IN = 'pi pi-sign-in';\nPrimeIcons.SIGN_OUT = 'pi pi-sign-out';\nPrimeIcons.SITEMAP = 'pi pi-sitemap';\nPrimeIcons.SLACK = 'pi pi-slack';\nPrimeIcons.SLIDERS_H = 'pi pi-sliders-h';\nPrimeIcons.SLIDERS_V = 'pi pi-sliders-v';\nPrimeIcons.SORT = 'pi pi-sort';\nPrimeIcons.SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';\nPrimeIcons.SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';\nPrimeIcons.SORT_ALPHA_UP = 'pi pi-sort-alpha-up';\nPrimeIcons.SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';\nPrimeIcons.SORT_ALT = 'pi pi-sort-alt';\nPrimeIcons.SORT_ALT_SLASH = 'pi pi-sort-slash';\nPrimeIcons.SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';\nPrimeIcons.SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';\nPrimeIcons.SORT_AMOUNT_UP = 'pi pi-sort-amount-up';\nPrimeIcons.SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';\nPrimeIcons.SORT_DOWN = 'pi pi-sort-down';\nPrimeIcons.SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';\nPrimeIcons.SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';\nPrimeIcons.SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';\nPrimeIcons.SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';\nPrimeIcons.SORT_UP = 'pi pi-sort-up';\nPrimeIcons.SPINNER = 'pi pi-spinner';\nPrimeIcons.STAR = 'pi pi-star';\nPrimeIcons.STAR_FILL = 'pi pi-star-fill';\nPrimeIcons.STEP_BACKWARD = 'pi pi-step-backward';\nPrimeIcons.STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';\nPrimeIcons.STEP_FORWARD = 'pi pi-step-forward';\nPrimeIcons.STEP_FORWARD_ALT = 'pi pi-step-forward-alt';\nPrimeIcons.STOP = 'pi pi-stop';\nPrimeIcons.STOP_CIRCLE = 'pi pi-stop-circle';\nPrimeIcons.SUN = 'pi pi-sun';\nPrimeIcons.SYNC = 'pi pi-sync';\nPrimeIcons.TABLE = 'pi pi-table';\nPrimeIcons.TABLET = 'pi pi-tablet';\nPrimeIcons.TAG = 'pi pi-tag';\nPrimeIcons.TAGS = 'pi pi-tags';\nPrimeIcons.TELEGRAM = 'pi pi-telegram';\nPrimeIcons.TH_LARGE = 'pi pi-th-large';\nPrimeIcons.THUMBS_DOWN = 'pi pi-thumbs-down';\nPrimeIcons.THUMBS_UP = 'pi pi-thumbs-up';\nPrimeIcons.TICKET = 'pi pi-ticket';\nPrimeIcons.TIMES = 'pi pi-times';\nPrimeIcons.TIMES_CIRCLE = 'pi pi-times-circle';\nPrimeIcons.TRASH = 'pi pi-trash';\nPrimeIcons.TWITTER = 'pi pi-twitter';\nPrimeIcons.UNDO = 'pi pi-undo';\nPrimeIcons.UNLOCK = 'pi pi-unlock';\nPrimeIcons.UPLOAD = 'pi pi-upload';\nPrimeIcons.USER = 'pi pi-user';\nPrimeIcons.USER_EDIT = 'pi pi-user-edit';\nPrimeIcons.USER_MINUS = 'pi pi-user-minus';\nPrimeIcons.USER_PLUS = 'pi pi-user-plus';\nPrimeIcons.USERS = 'pi pi-users';\nPrimeIcons.VIDEO = 'pi pi-video';\nPrimeIcons.VIMEO = 'pi pi-vimeo';\nPrimeIcons.VOLUME_DOWN = 'pi pi-volume-down';\nPrimeIcons.VOLUME_OFF = 'pi pi-volume-off';\nPrimeIcons.VOLUME_UP = 'pi pi-volume-up';\nPrimeIcons.WALLET = 'pi pi-wallet';\nPrimeIcons.WHATSAPP = 'pi pi-whatsapp';\nPrimeIcons.WIFI = 'pi pi-wifi';\nPrimeIcons.WINDOW_MAXIMIZE = 'pi pi-window-maximize';\nPrimeIcons.WINDOW_MINIMIZE = 'pi pi-window-minimize';\nPrimeIcons.YOUTUBE = 'pi pi-youtube';\n\nclass FilterOperator {}\n\nFilterOperator.AND = 'and';\nFilterOperator.OR = 'or';\n\nclass Header {}\n\nHeader.ɵfac = function Header_Factory(t) {\n  return new (t || Header)();\n};\n\nHeader.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Header,\n  selectors: [[\"p-header\"]],\n  ngContentSelectors: _c0,\n  decls: 1,\n  vars: 0,\n  template: function Header_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵprojection(0);\n    }\n  },\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Header, [{\n    type: Component,\n    args: [{\n      selector: 'p-header',\n      template: '<ng-content></ng-content>'\n    }]\n  }], null, null);\n})();\n\nclass Footer {}\n\nFooter.ɵfac = function Footer_Factory(t) {\n  return new (t || Footer)();\n};\n\nFooter.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: Footer,\n  selectors: [[\"p-footer\"]],\n  ngContentSelectors: _c0,\n  decls: 1,\n  vars: 0,\n  template: function Footer_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵprojection(0);\n    }\n  },\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Footer, [{\n    type: Component,\n    args: [{\n      selector: 'p-footer',\n      template: '<ng-content></ng-content>'\n    }]\n  }], null, null);\n})();\n\nclass PrimeTemplate {\n  constructor(template) {\n    this.template = template;\n  }\n\n  getType() {\n    return this.name;\n  }\n\n}\n\nPrimeTemplate.ɵfac = function PrimeTemplate_Factory(t) {\n  return new (t || PrimeTemplate)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n};\n\nPrimeTemplate.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: PrimeTemplate,\n  selectors: [[\"\", \"pTemplate\", \"\"]],\n  inputs: {\n    type: \"type\",\n    name: [\"pTemplate\", \"name\"]\n  }\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PrimeTemplate, [{\n    type: Directive,\n    args: [{\n      selector: '[pTemplate]',\n      host: {}\n    }]\n  }], function () {\n    return [{\n      type: i0.TemplateRef\n    }];\n  }, {\n    type: [{\n      type: Input\n    }],\n    name: [{\n      type: Input,\n      args: ['pTemplate']\n    }]\n  });\n})();\n\nclass SharedModule {}\n\nSharedModule.ɵfac = function SharedModule_Factory(t) {\n  return new (t || SharedModule)();\n};\n\nSharedModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: SharedModule\n});\nSharedModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(SharedModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule],\n      exports: [Header, Footer, PrimeTemplate],\n      declarations: [Header, Footer, PrimeTemplate]\n    }]\n  }], null, null);\n})();\n\nclass TreeDragDropService {\n  constructor() {\n    this.dragStartSource = new Subject();\n    this.dragStopSource = new Subject();\n    this.dragStart$ = this.dragStartSource.asObservable();\n    this.dragStop$ = this.dragStopSource.asObservable();\n  }\n\n  startDrag(event) {\n    this.dragStartSource.next(event);\n  }\n\n  stopDrag(event) {\n    this.dragStopSource.next(event);\n  }\n\n}\n\nTreeDragDropService.ɵfac = function TreeDragDropService_Factory(t) {\n  return new (t || TreeDragDropService)();\n};\n\nTreeDragDropService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: TreeDragDropService,\n  factory: TreeDragDropService.ɵfac\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TreeDragDropService, [{\n    type: Injectable\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { ConfirmEventType, ConfirmationService, ContextMenuService, FilterMatchMode, FilterOperator, FilterService, Footer, Header, MessageService, OverlayService, PrimeIcons, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeDragDropService };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-api.mjs"],"names":["i0","Injectable","Component","Directive","Input","NgModule","Subject","ObjectUtils","CommonModule","FilterMatchMode","STARTS_WITH","CONTAINS","NOT_CONTAINS","ENDS_WITH","EQUALS","NOT_EQUALS","IN","LESS_THAN","LESS_THAN_OR_EQUAL_TO","GREATER_THAN","GREATER_THAN_OR_EQUAL_TO","BETWEEN","IS","IS_NOT","BEFORE","AFTER","DATE_IS","DATE_IS_NOT","DATE_BEFORE","DATE_AFTER","PrimeNGConfig","constructor","ripple","filterMatchModeOptions","text","numeric","date","translation","startsWith","contains","notContains","endsWith","equals","notEquals","noFilter","lt","lte","gt","gte","is","isNot","before","after","dateIs","dateIsNot","dateBefore","dateAfter","clear","apply","matchAll","matchAny","addRule","removeRule","accept","reject","choose","upload","cancel","dayNames","dayNamesShort","dayNamesMin","monthNames","monthNamesShort","dateFormat","today","weekHeader","weak","medium","strong","passwordPrompt","emptyMessage","emptyFilterMessage","zIndex","modal","overlay","menu","tooltip","translationSource","translationObserver","asObservable","getTranslation","key","setTranslation","value","next","ɵfac","ɵprov","type","args","providedIn","TranslationKeys","NO_FILTER","LT","LTE","GT","GTE","CLEAR","APPLY","MATCH_ALL","MATCH_ANY","ADD_RULE","REMOVE_RULE","ACCEPT","REJECT","CHOOSE","UPLOAD","CANCEL","DAY_NAMES","DAY_NAMES_SHORT","DAY_NAMES_MIN","MONTH_NAMES","MONTH_NAMES_SHORT","TODAY","WEEK_HEADER","WEAK","MEDIUM","STRONG","PASSWORD_PROMPT","EMPTY_MESSAGE","EMPTY_FILTER_MESSAGE","ConfirmEventType","ConfirmationService","requireConfirmationSource","acceptConfirmationSource","requireConfirmation$","confirm","confirmation","close","onAccept","FilterService","filters","filter","filterLocale","undefined","trim","filterValue","removeAccents","toString","toLocaleLowerCase","stringValue","slice","length","indexOf","getTime","in","i","between","toDateString","fields","filterMatchMode","filteredItems","item","field","fieldValue","resolveFieldData","push","register","rule","fn","ContextMenuService","activeItemKeyChange","activeItemKeyChange$","changeKey","activeItemKey","reset","MessageService","messageSource","clearSource","messageObserver","clearObserver","add","message","addAll","messages","OverlayService","clickSource","clickObservable","event","PrimeIcons","ALIGN_CENTER","ALIGN_JUSTIFY","ALIGN_LEFT","ALIGN_RIGHT","AMAZON","ANDROID","ANGLE_DOUBLE_DOWN","ANGLE_DOUBLE_LEFT","ANGLE_DOUBLE_RIGHT","ANGLE_DOUBLE_UP","ANGLE_DOWN","ANGLE_LEFT","ANGLE_RIGHT","ANGLE_UP","APPLE","ARROW_CIRCLE_DOWN","ARROW_CIRCLE_LEFT","ARROW_CIRCLE_RIGHT","ARROW_CIRCLE_UP","ARROW_DOWN","ARROW_DOWN_LEFT","ARROW_DOWN_RIGHT","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","ARROW_UP_LEFT","ARROW_UP_RIGHT","ARROW_H","ARROW_V","AT","BACKWARD","BAN","BARS","BELL","BOLT","BOOK","BOOKMARK","BOOKMARK_FILL","BOX","BRIEFCASE","BUILDING","CALENDAR","CALENDAR_MINUS","CALENDAR_PLUS","CALENDAR_TIMES","CAMERA","CAR","CARET_DOWN","CARET_LEFT","CARET_RIGHT","CARET_UP","CHART_BAR","CHART_LINE","CHART_PIE","CHECK","CHECK_CIRCLE","CHECK_SQUARE","CHEVRON_CIRCLE_DOWN","CHEVRON_CIRCLE_LEFT","CHEVRON_CIRCLE_RIGHT","CHEVRON_CIRCLE_UP","CHEVRON_DOWN","CHEVRON_LEFT","CHEVRON_RIGHT","CHEVRON_UP","CIRCLE","CIRCLE_FILL","CLOCK","CLONE","CLOUD","CLOUD_DOWNLOAD","CLOUD_UPLOAD","CODE","COG","COMMENT","COMMENTS","COMPASS","COPY","CREDIT_CARD","DATABASE","DESKTOP","DIRECTIONS","DIRECTIONS_ALT","DISCORD","DOLLAR","DOWNLOAD","EJECT","ELLIPSIS_H","ELLIPSIS_V","ENVELOPE","EURO","EXCLAMATION_CIRCLE","EXCLAMATION_TRIANGLE","EXTERNAL_LINK","EYE","EYE_SLASH","FACEBOOK","FAST_BACKWARD","FAST_FORWARD","FILE","FILE_EXCEL","FILE_PDF","FILTER","FILTER_FILL","FILTER_SLASH","FLAG","FLAG_FILL","FOLDER","FOLDER_OPEN","FORWARD","GITHUB","GLOBE","GOOGLE","HASHTAG","HEART","HEART_FILL","HISTORY","HOME","ID_CARD","IMAGE","IMAGES","INBOX","INFO","INFO_CIRCLE","INSTAGRAM","KEY","LINK","LINKEDIN","LIST","LOCK","LOCK_OPEN","MAP","MAP_MARKER","MICROSOFT","MINUS","MINUS_CIRCLE","MOBILE","MONEY_BILL","MOON","PALETTE","PAPERCLIP","PAUSE","PAYPAL","PENCIL","PERCENTAGE","PHONE","PLAY","PLUS","PLUS_CIRCLE","POUND","POWER_OFF","PRIME","PRINT","QRCODE","QUESTION","QUESTION_CIRCLE","REDDIT","REFRESH","REPLAY","REPLY","SAVE","SEARCH","SEARCH_MINUS","SEARCH_PLUS","SEND","SERVER","SHARE_ALT","SHIELD","SHOPPING_BAG","SHOPPING_CART","SIGN_IN","SIGN_OUT","SITEMAP","SLACK","SLIDERS_H","SLIDERS_V","SORT","SORT_ALPHA_DOWN","SORT_ALPHA_ALT_DOWN","SORT_ALPHA_UP","SORT_ALPHA_ALT_UP","SORT_ALT","SORT_ALT_SLASH","SORT_AMOUNT_DOWN","SORT_AMOUNT_DOWN_ALT","SORT_AMOUNT_UP","SORT_AMOUNT_UP_ALT","SORT_DOWN","SORT_NUMERIC_DOWN","SORT_NUMERIC_ALT_DOWN","SORT_NUMERIC_UP","SORT_NUMERIC_ALT_UP","SORT_UP","SPINNER","STAR","STAR_FILL","STEP_BACKWARD","STEP_BACKWARD_ALT","STEP_FORWARD","STEP_FORWARD_ALT","STOP","STOP_CIRCLE","SUN","SYNC","TABLE","TABLET","TAG","TAGS","TELEGRAM","TH_LARGE","THUMBS_DOWN","THUMBS_UP","TICKET","TIMES","TIMES_CIRCLE","TRASH","TWITTER","UNDO","UNLOCK","USER","USER_EDIT","USER_MINUS","USER_PLUS","USERS","VIDEO","VIMEO","VOLUME_DOWN","VOLUME_OFF","VOLUME_UP","WALLET","WHATSAPP","WIFI","WINDOW_MAXIMIZE","WINDOW_MINIMIZE","YOUTUBE","FilterOperator","AND","OR","Header","ɵcmp","selector","template","Footer","PrimeTemplate","getType","name","TemplateRef","ɵdir","host","SharedModule","ɵmod","ɵinj","imports","exports","declarations","TreeDragDropService","dragStartSource","dragStopSource","dragStart$","dragStop$","startDrag","stopDrag"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { Injectable, Component, Directive, Input, NgModule } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ObjectUtils } from 'primeng/utils';\nimport { CommonModule } from '@angular/common';\n\nclass FilterMatchMode {\n}\nFilterMatchMode.STARTS_WITH = 'startsWith';\nFilterMatchMode.CONTAINS = 'contains';\nFilterMatchMode.NOT_CONTAINS = 'notContains';\nFilterMatchMode.ENDS_WITH = 'endsWith';\nFilterMatchMode.EQUALS = 'equals';\nFilterMatchMode.NOT_EQUALS = 'notEquals';\nFilterMatchMode.IN = 'in';\nFilterMatchMode.LESS_THAN = 'lt';\nFilterMatchMode.LESS_THAN_OR_EQUAL_TO = 'lte';\nFilterMatchMode.GREATER_THAN = 'gt';\nFilterMatchMode.GREATER_THAN_OR_EQUAL_TO = 'gte';\nFilterMatchMode.BETWEEN = 'between';\nFilterMatchMode.IS = 'is';\nFilterMatchMode.IS_NOT = 'isNot';\nFilterMatchMode.BEFORE = 'before';\nFilterMatchMode.AFTER = 'after';\nFilterMatchMode.DATE_IS = 'dateIs';\nFilterMatchMode.DATE_IS_NOT = 'dateIsNot';\nFilterMatchMode.DATE_BEFORE = 'dateBefore';\nFilterMatchMode.DATE_AFTER = 'dateAfter';\n\nclass PrimeNGConfig {\n    constructor() {\n        this.ripple = false;\n        this.filterMatchModeOptions = {\n            text: [\n                FilterMatchMode.STARTS_WITH,\n                FilterMatchMode.CONTAINS,\n                FilterMatchMode.NOT_CONTAINS,\n                FilterMatchMode.ENDS_WITH,\n                FilterMatchMode.EQUALS,\n                FilterMatchMode.NOT_EQUALS\n            ],\n            numeric: [\n                FilterMatchMode.EQUALS,\n                FilterMatchMode.NOT_EQUALS,\n                FilterMatchMode.LESS_THAN,\n                FilterMatchMode.LESS_THAN_OR_EQUAL_TO,\n                FilterMatchMode.GREATER_THAN,\n                FilterMatchMode.GREATER_THAN_OR_EQUAL_TO\n            ],\n            date: [\n                FilterMatchMode.DATE_IS,\n                FilterMatchMode.DATE_IS_NOT,\n                FilterMatchMode.DATE_BEFORE,\n                FilterMatchMode.DATE_AFTER\n            ]\n        };\n        this.translation = {\n            startsWith: 'Starts with',\n            contains: 'Contains',\n            notContains: 'Not contains',\n            endsWith: 'Ends with',\n            equals: 'Equals',\n            notEquals: 'Not equals',\n            noFilter: 'No Filter',\n            lt: 'Less than',\n            lte: 'Less than or equal to',\n            gt: 'Greater than',\n            gte: 'Greater than or equal to',\n            is: 'Is',\n            isNot: 'Is not',\n            before: 'Before',\n            after: 'After',\n            dateIs: 'Date is',\n            dateIsNot: 'Date is not',\n            dateBefore: 'Date is before',\n            dateAfter: 'Date is after',\n            clear: 'Clear',\n            apply: 'Apply',\n            matchAll: 'Match All',\n            matchAny: 'Match Any',\n            addRule: 'Add Rule',\n            removeRule: 'Remove Rule',\n            accept: 'Yes',\n            reject: 'No',\n            choose: 'Choose',\n            upload: 'Upload',\n            cancel: 'Cancel',\n            dayNames: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n            dayNamesShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n            dayNamesMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n            monthNames: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n            monthNamesShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n            dateFormat: 'mm/dd/yy',\n            today: 'Today',\n            weekHeader: 'Wk',\n            weak: 'Weak',\n            medium: 'Medium',\n            strong: 'Strong',\n            passwordPrompt: 'Enter a password',\n            emptyMessage: 'No results found',\n            emptyFilterMessage: 'No results found'\n        };\n        this.zIndex = {\n            modal: 1100,\n            overlay: 1000,\n            menu: 1000,\n            tooltip: 1100\n        };\n        this.translationSource = new Subject();\n        this.translationObserver = this.translationSource.asObservable();\n    }\n    getTranslation(key) {\n        return this.translation[key];\n    }\n    setTranslation(value) {\n        this.translation = { ...this.translation, ...value };\n        this.translationSource.next(this.translation);\n    }\n}\nPrimeNGConfig.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: PrimeNGConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPrimeNGConfig.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: PrimeNGConfig, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: PrimeNGConfig, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n\nclass TranslationKeys {\n}\nTranslationKeys.STARTS_WITH = 'startsWith';\nTranslationKeys.CONTAINS = 'contains';\nTranslationKeys.NOT_CONTAINS = 'notContains';\nTranslationKeys.ENDS_WITH = 'endsWith';\nTranslationKeys.EQUALS = 'equals';\nTranslationKeys.NOT_EQUALS = 'notEquals';\nTranslationKeys.NO_FILTER = 'noFilter';\nTranslationKeys.LT = 'lt';\nTranslationKeys.LTE = 'lte';\nTranslationKeys.GT = 'gt';\nTranslationKeys.GTE = 'gte';\nTranslationKeys.IS = 'is';\nTranslationKeys.IS_NOT = 'isNot';\nTranslationKeys.BEFORE = 'before';\nTranslationKeys.AFTER = 'after';\nTranslationKeys.CLEAR = 'clear';\nTranslationKeys.APPLY = 'apply';\nTranslationKeys.MATCH_ALL = 'matchAll';\nTranslationKeys.MATCH_ANY = 'matchAny';\nTranslationKeys.ADD_RULE = 'addRule';\nTranslationKeys.REMOVE_RULE = 'removeRule';\nTranslationKeys.ACCEPT = 'accept';\nTranslationKeys.REJECT = 'reject';\nTranslationKeys.CHOOSE = 'choose';\nTranslationKeys.UPLOAD = 'upload';\nTranslationKeys.CANCEL = 'cancel';\nTranslationKeys.DAY_NAMES = 'dayNames';\nTranslationKeys.DAY_NAMES_SHORT = 'dayNamesShort';\nTranslationKeys.DAY_NAMES_MIN = 'dayNamesMin';\nTranslationKeys.MONTH_NAMES = 'monthNames';\nTranslationKeys.MONTH_NAMES_SHORT = 'monthNamesShort';\nTranslationKeys.TODAY = 'today';\nTranslationKeys.WEEK_HEADER = 'weekHeader';\nTranslationKeys.WEAK = 'weak';\nTranslationKeys.MEDIUM = 'medium';\nTranslationKeys.STRONG = 'strong';\nTranslationKeys.PASSWORD_PROMPT = 'passwordPrompt';\nTranslationKeys.EMPTY_MESSAGE = 'emptyMessage';\nTranslationKeys.EMPTY_FILTER_MESSAGE = 'emptyFilterMessage';\n\nvar ConfirmEventType;\n(function (ConfirmEventType) {\n    ConfirmEventType[ConfirmEventType[\"ACCEPT\"] = 0] = \"ACCEPT\";\n    ConfirmEventType[ConfirmEventType[\"REJECT\"] = 1] = \"REJECT\";\n    ConfirmEventType[ConfirmEventType[\"CANCEL\"] = 2] = \"CANCEL\";\n})(ConfirmEventType || (ConfirmEventType = {}));\n\nclass ConfirmationService {\n    constructor() {\n        this.requireConfirmationSource = new Subject();\n        this.acceptConfirmationSource = new Subject();\n        this.requireConfirmation$ = this.requireConfirmationSource.asObservable();\n        this.accept = this.acceptConfirmationSource.asObservable();\n    }\n    confirm(confirmation) {\n        this.requireConfirmationSource.next(confirmation);\n        return this;\n    }\n    close() {\n        this.requireConfirmationSource.next(null);\n        return this;\n    }\n    onAccept() {\n        this.acceptConfirmationSource.next(null);\n    }\n}\nConfirmationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ConfirmationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nConfirmationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ConfirmationService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ConfirmationService, decorators: [{\n            type: Injectable\n        }] });\n\nclass FilterService {\n    constructor() {\n        this.filters = {\n            startsWith: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || filter.trim() === '') {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n                return stringValue.slice(0, filterValue.length) === filterValue;\n            },\n            contains: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n                return stringValue.indexOf(filterValue) !== -1;\n            },\n            notContains: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n                return stringValue.indexOf(filterValue) === -1;\n            },\n            endsWith: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || filter.trim() === '') {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                let filterValue = ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n                let stringValue = ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale);\n                return stringValue.indexOf(filterValue, stringValue.length - filterValue.length) !== -1;\n            },\n            equals: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() === filter.getTime();\n                else\n                    return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) == ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            },\n            notEquals: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {\n                    return false;\n                }\n                if (value === undefined || value === null) {\n                    return true;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() !== filter.getTime();\n                else\n                    return ObjectUtils.removeAccents(value.toString()).toLocaleLowerCase(filterLocale) != ObjectUtils.removeAccents(filter.toString()).toLocaleLowerCase(filterLocale);\n            },\n            in: (value, filter) => {\n                if (filter === undefined || filter === null || filter.length === 0) {\n                    return true;\n                }\n                for (let i = 0; i < filter.length; i++) {\n                    if (ObjectUtils.equals(value, filter[i])) {\n                        return true;\n                    }\n                }\n                return false;\n            },\n            between: (value, filter) => {\n                if (filter == null || filter[0] == null || filter[1] == null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime)\n                    return filter[0].getTime() <= value.getTime() && value.getTime() <= filter[1].getTime();\n                else\n                    return filter[0] <= value && value <= filter[1];\n            },\n            lt: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() < filter.getTime();\n                else\n                    return value < filter;\n            },\n            lte: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() <= filter.getTime();\n                else\n                    return value <= filter;\n            },\n            gt: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() > filter.getTime();\n                else\n                    return value > filter;\n            },\n            gte: (value, filter, filterLocale) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                if (value.getTime && filter.getTime)\n                    return value.getTime() >= filter.getTime();\n                else\n                    return value >= filter;\n            },\n            is: (value, filter, filterLocale) => {\n                return this.filters.equals(value, filter, filterLocale);\n            },\n            isNot: (value, filter, filterLocale) => {\n                return this.filters.notEquals(value, filter, filterLocale);\n            },\n            before: (value, filter, filterLocale) => {\n                return this.filters.lt(value, filter, filterLocale);\n            },\n            after: (value, filter, filterLocale) => {\n                return this.filters.gt(value, filter, filterLocale);\n            },\n            dateIs: (value, filter) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                return value.toDateString() === filter.toDateString();\n            },\n            dateIsNot: (value, filter) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                return value.toDateString() !== filter.toDateString();\n            },\n            dateBefore: (value, filter) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                return value.getTime() < filter.getTime();\n            },\n            dateAfter: (value, filter) => {\n                if (filter === undefined || filter === null) {\n                    return true;\n                }\n                if (value === undefined || value === null) {\n                    return false;\n                }\n                return value.getTime() > filter.getTime();\n            }\n        };\n    }\n    filter(value, fields, filterValue, filterMatchMode, filterLocale) {\n        let filteredItems = [];\n        if (value) {\n            for (let item of value) {\n                for (let field of fields) {\n                    let fieldValue = ObjectUtils.resolveFieldData(item, field);\n                    if (this.filters[filterMatchMode](fieldValue, filterValue, filterLocale)) {\n                        filteredItems.push(item);\n                        break;\n                    }\n                }\n            }\n        }\n        return filteredItems;\n    }\n    register(rule, fn) {\n        this.filters[rule] = fn;\n    }\n}\nFilterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: FilterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFilterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: FilterService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: FilterService, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n\nclass ContextMenuService {\n    constructor() {\n        this.activeItemKeyChange = new Subject();\n        this.activeItemKeyChange$ = this.activeItemKeyChange.asObservable();\n    }\n    changeKey(key) {\n        this.activeItemKey = key;\n        this.activeItemKeyChange.next(this.activeItemKey);\n    }\n    reset() {\n        this.activeItemKey = null;\n        this.activeItemKeyChange.next(this.activeItemKey);\n    }\n}\nContextMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ContextMenuService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: ContextMenuService, decorators: [{\n            type: Injectable\n        }] });\n\nclass MessageService {\n    constructor() {\n        this.messageSource = new Subject();\n        this.clearSource = new Subject();\n        this.messageObserver = this.messageSource.asObservable();\n        this.clearObserver = this.clearSource.asObservable();\n    }\n    add(message) {\n        if (message) {\n            this.messageSource.next(message);\n        }\n    }\n    addAll(messages) {\n        if (messages && messages.length) {\n            this.messageSource.next(messages);\n        }\n    }\n    clear(key) {\n        this.clearSource.next(key || null);\n    }\n}\nMessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: MessageService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: MessageService, decorators: [{\n            type: Injectable\n        }] });\n\nclass OverlayService {\n    constructor() {\n        this.clickSource = new Subject();\n        this.clickObservable = this.clickSource.asObservable();\n    }\n    add(event) {\n        if (event) {\n            this.clickSource.next(event);\n        }\n    }\n}\nOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: OverlayService, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: OverlayService, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n\nclass PrimeIcons {\n}\nPrimeIcons.ALIGN_CENTER = 'pi pi-align-center';\nPrimeIcons.ALIGN_JUSTIFY = 'pi pi-align-justify';\nPrimeIcons.ALIGN_LEFT = 'pi pi-align-left';\nPrimeIcons.ALIGN_RIGHT = 'pi pi-align-right';\nPrimeIcons.AMAZON = 'pi pi-amazon';\nPrimeIcons.ANDROID = 'pi pi-android';\nPrimeIcons.ANGLE_DOUBLE_DOWN = 'pi pi-angle-double-down';\nPrimeIcons.ANGLE_DOUBLE_LEFT = 'pi pi-angle-double-left';\nPrimeIcons.ANGLE_DOUBLE_RIGHT = 'pi pi-angle-double-right';\nPrimeIcons.ANGLE_DOUBLE_UP = 'pi pi-angle-double-up';\nPrimeIcons.ANGLE_DOWN = 'pi pi-angle-down';\nPrimeIcons.ANGLE_LEFT = 'pi pi-angle-left';\nPrimeIcons.ANGLE_RIGHT = 'pi pi-angle-right';\nPrimeIcons.ANGLE_UP = 'pi pi-angle-up';\nPrimeIcons.APPLE = 'pi pi-apple';\nPrimeIcons.ARROW_CIRCLE_DOWN = 'pi pi-arrow-circle-down';\nPrimeIcons.ARROW_CIRCLE_LEFT = 'pi pi-arrow-circle-left';\nPrimeIcons.ARROW_CIRCLE_RIGHT = 'pi pi-arrow-circle-right';\nPrimeIcons.ARROW_CIRCLE_UP = 'pi pi-arrow-circle-up';\nPrimeIcons.ARROW_DOWN = 'pi pi-arrow-down';\nPrimeIcons.ARROW_DOWN_LEFT = 'pi pi-arrow-down-left';\nPrimeIcons.ARROW_DOWN_RIGHT = 'pi pi-arrow-down-right';\nPrimeIcons.ARROW_LEFT = 'pi pi-arrow-left';\nPrimeIcons.ARROW_RIGHT = 'pi pi-arrow-right';\nPrimeIcons.ARROW_UP = 'pi pi-arrow-up';\nPrimeIcons.ARROW_UP_LEFT = 'pi pi-arrow-up-left';\nPrimeIcons.ARROW_UP_RIGHT = 'pi pi-arrow-up-right';\nPrimeIcons.ARROW_H = 'pi pi-arrow-h';\nPrimeIcons.ARROW_V = 'pi pi-arrow-v';\nPrimeIcons.AT = 'pi pi-at';\nPrimeIcons.BACKWARD = 'pi pi-backward';\nPrimeIcons.BAN = 'pi pi-ban';\nPrimeIcons.BARS = 'pi pi-bars';\nPrimeIcons.BELL = 'pi pi-bell';\nPrimeIcons.BOLT = 'pi pi-bolt';\nPrimeIcons.BOOK = 'pi pi-book';\nPrimeIcons.BOOKMARK = 'pi pi-bookmark';\nPrimeIcons.BOOKMARK_FILL = 'pi pi-bookmark-fill';\nPrimeIcons.BOX = 'pi pi-box';\nPrimeIcons.BRIEFCASE = 'pi pi-briefcase';\nPrimeIcons.BUILDING = 'pi pi-building';\nPrimeIcons.CALENDAR = 'pi pi-calendar';\nPrimeIcons.CALENDAR_MINUS = 'pi pi-calendar-minus';\nPrimeIcons.CALENDAR_PLUS = 'pi pi-calendar-plus';\nPrimeIcons.CALENDAR_TIMES = 'pi pi-calendar-times';\nPrimeIcons.CAMERA = 'pi pi-camera';\nPrimeIcons.CAR = 'pi pi-car';\nPrimeIcons.CARET_DOWN = 'pi pi-caret-down';\nPrimeIcons.CARET_LEFT = 'pi pi-caret-left';\nPrimeIcons.CARET_RIGHT = 'pi pi-caret-right';\nPrimeIcons.CARET_UP = 'pi pi-caret-up';\nPrimeIcons.CHART_BAR = 'pi pi-chart-bar';\nPrimeIcons.CHART_LINE = 'pi pi-chart-line';\nPrimeIcons.CHART_PIE = 'pi pi-chart-pie';\nPrimeIcons.CHECK = 'pi pi-check';\nPrimeIcons.CHECK_CIRCLE = 'pi pi-check-circle';\nPrimeIcons.CHECK_SQUARE = 'pi pi-check-square';\nPrimeIcons.CHEVRON_CIRCLE_DOWN = 'pi pi-chevron-circle-down';\nPrimeIcons.CHEVRON_CIRCLE_LEFT = 'pi pi-chevron-circle-left';\nPrimeIcons.CHEVRON_CIRCLE_RIGHT = 'pi pi-chevron-circle-right';\nPrimeIcons.CHEVRON_CIRCLE_UP = 'pi pi-chevron-circle-up';\nPrimeIcons.CHEVRON_DOWN = 'pi pi-chevron-down';\nPrimeIcons.CHEVRON_LEFT = 'pi pi-chevron-left';\nPrimeIcons.CHEVRON_RIGHT = 'pi pi-chevron-right';\nPrimeIcons.CHEVRON_UP = 'pi pi-chevron-up';\nPrimeIcons.CIRCLE = 'pi pi-circle';\nPrimeIcons.CIRCLE_FILL = 'pi pi-circle-fill';\nPrimeIcons.CLOCK = 'pi pi-clock';\nPrimeIcons.CLONE = 'pi pi-clone';\nPrimeIcons.CLOUD = 'pi pi-cloud';\nPrimeIcons.CLOUD_DOWNLOAD = 'pi pi-cloud-download';\nPrimeIcons.CLOUD_UPLOAD = 'pi pi-cloud-upload';\nPrimeIcons.CODE = 'pi pi-code';\nPrimeIcons.COG = 'pi pi-cog';\nPrimeIcons.COMMENT = 'pi pi-comment';\nPrimeIcons.COMMENTS = 'pi pi-comments';\nPrimeIcons.COMPASS = 'pi pi-compass';\nPrimeIcons.COPY = 'pi pi-copy';\nPrimeIcons.CREDIT_CARD = 'pi pi-credit-card';\nPrimeIcons.DATABASE = 'pi pi-database';\nPrimeIcons.DESKTOP = 'pi pi-desktop';\nPrimeIcons.DIRECTIONS = 'pi pi-directions';\nPrimeIcons.DIRECTIONS_ALT = 'pi pi-directions-alt';\nPrimeIcons.DISCORD = 'pi pi-discord';\nPrimeIcons.DOLLAR = 'pi pi-dollar';\nPrimeIcons.DOWNLOAD = 'pi pi-download';\nPrimeIcons.EJECT = 'pi pi-eject';\nPrimeIcons.ELLIPSIS_H = 'pi pi-ellipsis-h';\nPrimeIcons.ELLIPSIS_V = 'pi pi-ellipsis-v';\nPrimeIcons.ENVELOPE = 'pi pi-envelope';\nPrimeIcons.EURO = 'pi pi-euro';\nPrimeIcons.EXCLAMATION_CIRCLE = 'pi pi-exclamation-circle';\nPrimeIcons.EXCLAMATION_TRIANGLE = 'pi pi-exclamation-triangle';\nPrimeIcons.EXTERNAL_LINK = 'pi pi-external-link';\nPrimeIcons.EYE = 'pi pi-eye';\nPrimeIcons.EYE_SLASH = 'pi pi-eye-slash';\nPrimeIcons.FACEBOOK = 'pi pi-facebook';\nPrimeIcons.FAST_BACKWARD = 'pi pi-fast-backward';\nPrimeIcons.FAST_FORWARD = 'pi pi-fast-forward';\nPrimeIcons.FILE = 'pi pi-file';\nPrimeIcons.FILE_EXCEL = 'pi pi-file-excel';\nPrimeIcons.FILE_PDF = 'pi pi-file-pdf';\nPrimeIcons.FILTER = 'pi pi-filter';\nPrimeIcons.FILTER_FILL = 'pi pi-filter-fill';\nPrimeIcons.FILTER_SLASH = 'pi pi-filter-slash';\nPrimeIcons.FLAG = 'pi pi-flag';\nPrimeIcons.FLAG_FILL = 'pi pi-flag-fill';\nPrimeIcons.FOLDER = 'pi pi-folder';\nPrimeIcons.FOLDER_OPEN = 'pi pi-folder-open';\nPrimeIcons.FORWARD = 'pi pi-forward';\nPrimeIcons.GITHUB = 'pi pi-github';\nPrimeIcons.GLOBE = 'pi pi-globe';\nPrimeIcons.GOOGLE = 'pi pi-google';\nPrimeIcons.HASHTAG = 'pi pi-hashtag';\nPrimeIcons.HEART = 'pi pi-heart';\nPrimeIcons.HEART_FILL = 'pi pi-heart-fill';\nPrimeIcons.HISTORY = 'pi pi-history';\nPrimeIcons.HOME = 'pi pi-home';\nPrimeIcons.ID_CARD = 'pi pi-id-card';\nPrimeIcons.IMAGE = 'pi pi-image';\nPrimeIcons.IMAGES = 'pi pi-images';\nPrimeIcons.INBOX = 'pi pi-inbox';\nPrimeIcons.INFO = 'pi pi-info';\nPrimeIcons.INFO_CIRCLE = 'pi pi-info-circle';\nPrimeIcons.INSTAGRAM = 'pi pi-instagram';\nPrimeIcons.KEY = 'pi pi-key';\nPrimeIcons.LINK = 'pi pi-link';\nPrimeIcons.LINKEDIN = 'pi pi-linkedin';\nPrimeIcons.LIST = 'pi pi-list';\nPrimeIcons.LOCK = 'pi pi-lock';\nPrimeIcons.LOCK_OPEN = 'pi pi-lock-open';\nPrimeIcons.MAP = 'pi pi-map';\nPrimeIcons.MAP_MARKER = 'pi pi-map-marker';\nPrimeIcons.MICROSOFT = 'pi pi-microsoft';\nPrimeIcons.MINUS = 'pi pi-minus';\nPrimeIcons.MINUS_CIRCLE = 'pi pi-minus-circle';\nPrimeIcons.MOBILE = 'pi pi-mobile';\nPrimeIcons.MONEY_BILL = 'pi pi-money-bill';\nPrimeIcons.MOON = 'pi pi-moon';\nPrimeIcons.PALETTE = 'pi pi-palette';\nPrimeIcons.PAPERCLIP = 'pi pi-paperclip';\nPrimeIcons.PAUSE = 'pi pi-pause';\nPrimeIcons.PAYPAL = 'pi pi-paypal';\nPrimeIcons.PENCIL = 'pi pi-pencil';\nPrimeIcons.PERCENTAGE = 'pi pi-percentage';\nPrimeIcons.PHONE = 'pi pi-phone';\nPrimeIcons.PLAY = 'pi pi-play';\nPrimeIcons.PLUS = 'pi pi-plus';\nPrimeIcons.PLUS_CIRCLE = 'pi pi-plus-circle';\nPrimeIcons.POUND = 'pi pi-pound';\nPrimeIcons.POWER_OFF = 'pi pi-power-off';\nPrimeIcons.PRIME = 'pi pi-prime';\nPrimeIcons.PRINT = 'pi pi-print';\nPrimeIcons.QRCODE = 'pi pi-qrcode';\nPrimeIcons.QUESTION = 'pi pi-question';\nPrimeIcons.QUESTION_CIRCLE = 'pi pi-question-circle';\nPrimeIcons.REDDIT = 'pi pi-reddit';\nPrimeIcons.REFRESH = 'pi pi-refresh';\nPrimeIcons.REPLAY = 'pi pi-replay';\nPrimeIcons.REPLY = 'pi pi-reply';\nPrimeIcons.SAVE = 'pi pi-save';\nPrimeIcons.SEARCH = 'pi pi-search';\nPrimeIcons.SEARCH_MINUS = 'pi pi-search-minus';\nPrimeIcons.SEARCH_PLUS = 'pi pi-search-plus';\nPrimeIcons.SEND = 'pi pi-send';\nPrimeIcons.SERVER = 'pi pi-server';\nPrimeIcons.SHARE_ALT = 'pi pi-share-alt';\nPrimeIcons.SHIELD = 'pi pi-shield';\nPrimeIcons.SHOPPING_BAG = 'pi pi-shopping-bag';\nPrimeIcons.SHOPPING_CART = 'pi pi-shopping-cart';\nPrimeIcons.SIGN_IN = 'pi pi-sign-in';\nPrimeIcons.SIGN_OUT = 'pi pi-sign-out';\nPrimeIcons.SITEMAP = 'pi pi-sitemap';\nPrimeIcons.SLACK = 'pi pi-slack';\nPrimeIcons.SLIDERS_H = 'pi pi-sliders-h';\nPrimeIcons.SLIDERS_V = 'pi pi-sliders-v';\nPrimeIcons.SORT = 'pi pi-sort';\nPrimeIcons.SORT_ALPHA_DOWN = 'pi pi-sort-alpha-down';\nPrimeIcons.SORT_ALPHA_ALT_DOWN = 'pi pi-sort-alpha-alt-down';\nPrimeIcons.SORT_ALPHA_UP = 'pi pi-sort-alpha-up';\nPrimeIcons.SORT_ALPHA_ALT_UP = 'pi pi-sort-alpha-alt-up';\nPrimeIcons.SORT_ALT = 'pi pi-sort-alt';\nPrimeIcons.SORT_ALT_SLASH = 'pi pi-sort-slash';\nPrimeIcons.SORT_AMOUNT_DOWN = 'pi pi-sort-amount-down';\nPrimeIcons.SORT_AMOUNT_DOWN_ALT = 'pi pi-sort-amount-down-alt';\nPrimeIcons.SORT_AMOUNT_UP = 'pi pi-sort-amount-up';\nPrimeIcons.SORT_AMOUNT_UP_ALT = 'pi pi-sort-amount-up-alt';\nPrimeIcons.SORT_DOWN = 'pi pi-sort-down';\nPrimeIcons.SORT_NUMERIC_DOWN = 'pi pi-sort-numeric-down';\nPrimeIcons.SORT_NUMERIC_ALT_DOWN = 'pi pi-sort-numeric-alt-down';\nPrimeIcons.SORT_NUMERIC_UP = 'pi pi-sort-numeric-up';\nPrimeIcons.SORT_NUMERIC_ALT_UP = 'pi pi-sort-numeric-alt-up';\nPrimeIcons.SORT_UP = 'pi pi-sort-up';\nPrimeIcons.SPINNER = 'pi pi-spinner';\nPrimeIcons.STAR = 'pi pi-star';\nPrimeIcons.STAR_FILL = 'pi pi-star-fill';\nPrimeIcons.STEP_BACKWARD = 'pi pi-step-backward';\nPrimeIcons.STEP_BACKWARD_ALT = 'pi pi-step-backward-alt';\nPrimeIcons.STEP_FORWARD = 'pi pi-step-forward';\nPrimeIcons.STEP_FORWARD_ALT = 'pi pi-step-forward-alt';\nPrimeIcons.STOP = 'pi pi-stop';\nPrimeIcons.STOP_CIRCLE = 'pi pi-stop-circle';\nPrimeIcons.SUN = 'pi pi-sun';\nPrimeIcons.SYNC = 'pi pi-sync';\nPrimeIcons.TABLE = 'pi pi-table';\nPrimeIcons.TABLET = 'pi pi-tablet';\nPrimeIcons.TAG = 'pi pi-tag';\nPrimeIcons.TAGS = 'pi pi-tags';\nPrimeIcons.TELEGRAM = 'pi pi-telegram';\nPrimeIcons.TH_LARGE = 'pi pi-th-large';\nPrimeIcons.THUMBS_DOWN = 'pi pi-thumbs-down';\nPrimeIcons.THUMBS_UP = 'pi pi-thumbs-up';\nPrimeIcons.TICKET = 'pi pi-ticket';\nPrimeIcons.TIMES = 'pi pi-times';\nPrimeIcons.TIMES_CIRCLE = 'pi pi-times-circle';\nPrimeIcons.TRASH = 'pi pi-trash';\nPrimeIcons.TWITTER = 'pi pi-twitter';\nPrimeIcons.UNDO = 'pi pi-undo';\nPrimeIcons.UNLOCK = 'pi pi-unlock';\nPrimeIcons.UPLOAD = 'pi pi-upload';\nPrimeIcons.USER = 'pi pi-user';\nPrimeIcons.USER_EDIT = 'pi pi-user-edit';\nPrimeIcons.USER_MINUS = 'pi pi-user-minus';\nPrimeIcons.USER_PLUS = 'pi pi-user-plus';\nPrimeIcons.USERS = 'pi pi-users';\nPrimeIcons.VIDEO = 'pi pi-video';\nPrimeIcons.VIMEO = 'pi pi-vimeo';\nPrimeIcons.VOLUME_DOWN = 'pi pi-volume-down';\nPrimeIcons.VOLUME_OFF = 'pi pi-volume-off';\nPrimeIcons.VOLUME_UP = 'pi pi-volume-up';\nPrimeIcons.WALLET = 'pi pi-wallet';\nPrimeIcons.WHATSAPP = 'pi pi-whatsapp';\nPrimeIcons.WIFI = 'pi pi-wifi';\nPrimeIcons.WINDOW_MAXIMIZE = 'pi pi-window-maximize';\nPrimeIcons.WINDOW_MINIMIZE = 'pi pi-window-minimize';\nPrimeIcons.YOUTUBE = 'pi pi-youtube';\n\nclass FilterOperator {\n}\nFilterOperator.AND = 'and';\nFilterOperator.OR = 'or';\n\nclass Header {\n}\nHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Header, deps: [], target: i0.ɵɵFactoryTarget.Component });\nHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Header, selector: \"p-header\", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Header, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-header',\n                    template: '<ng-content></ng-content>'\n                }]\n        }] });\nclass Footer {\n}\nFooter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Footer, deps: [], target: i0.ɵɵFactoryTarget.Component });\nFooter.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Footer, selector: \"p-footer\", ngImport: i0, template: '<ng-content></ng-content>', isInline: true });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Footer, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-footer',\n                    template: '<ng-content></ng-content>'\n                }]\n        }] });\nclass PrimeTemplate {\n    constructor(template) {\n        this.template = template;\n    }\n    getType() {\n        return this.name;\n    }\n}\nPrimeTemplate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: PrimeTemplate, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nPrimeTemplate.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.0\", type: PrimeTemplate, selector: \"[pTemplate]\", inputs: { type: \"type\", name: [\"pTemplate\", \"name\"] }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: PrimeTemplate, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[pTemplate]',\n                    host: {}\n                }]\n        }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { type: [{\n                type: Input\n            }], name: [{\n                type: Input,\n                args: ['pTemplate']\n            }] } });\nclass SharedModule {\n}\nSharedModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nSharedModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: SharedModule, declarations: [Header, Footer, PrimeTemplate], imports: [CommonModule], exports: [Header, Footer, PrimeTemplate] });\nSharedModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: SharedModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: SharedModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule],\n                    exports: [Header, Footer, PrimeTemplate],\n                    declarations: [Header, Footer, PrimeTemplate]\n                }]\n        }] });\n\nclass TreeDragDropService {\n    constructor() {\n        this.dragStartSource = new Subject();\n        this.dragStopSource = new Subject();\n        this.dragStart$ = this.dragStartSource.asObservable();\n        this.dragStop$ = this.dragStopSource.asObservable();\n    }\n    startDrag(event) {\n        this.dragStartSource.next(event);\n    }\n    stopDrag(event) {\n        this.dragStopSource.next(event);\n    }\n}\nTreeDragDropService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TreeDragDropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nTreeDragDropService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TreeDragDropService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TreeDragDropService, decorators: [{\n            type: Injectable\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ConfirmEventType, ConfirmationService, ContextMenuService, FilterMatchMode, FilterOperator, FilterService, Footer, Header, MessageService, OverlayService, PrimeIcons, PrimeNGConfig, PrimeTemplate, SharedModule, TranslationKeys, TreeDragDropService };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/8cee76f8008e87b3da2c721873b51a23.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/8cee76f8008e87b3da2c721873b51a23.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/8cee76f8008e87b3da2c721873b51a23.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior, PlatformModule } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\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/** The injection token used to specify the virtual scrolling strategy. */\n\nconst _c0 = [\"contentWrapper\"];\nconst _c1 = [\"*\"];\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\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/** Virtual scrolling strategy for lists with items of known fixed size. */\n\nclass FixedSizeVirtualScrollStrategy {\n  /**\n   * @param itemSize The size of the items in the virtually scrolling list.\n   * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n   * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n   */\n  constructor(itemSize, minBufferPx, maxBufferPx) {\n    this._scrolledIndexChange = new Subject();\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n\n    this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n    /** The attached viewport. */\n\n    this._viewport = null;\n    this._itemSize = itemSize;\n    this._minBufferPx = minBufferPx;\n    this._maxBufferPx = maxBufferPx;\n  }\n  /**\n   * Attaches this scroll strategy to a viewport.\n   * @param viewport The viewport to attach this strategy to.\n   */\n\n\n  attach(viewport) {\n    this._viewport = viewport;\n\n    this._updateTotalContentSize();\n\n    this._updateRenderedRange();\n  }\n  /** Detaches this scroll strategy from the currently attached viewport. */\n\n\n  detach() {\n    this._scrolledIndexChange.complete();\n\n    this._viewport = null;\n  }\n  /**\n   * Update the item size and buffer size.\n   * @param itemSize The size of the items in the virtually scrolling list.\n   * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n   * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n   */\n\n\n  updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n    if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n    }\n\n    this._itemSize = itemSize;\n    this._minBufferPx = minBufferPx;\n    this._maxBufferPx = maxBufferPx;\n\n    this._updateTotalContentSize();\n\n    this._updateRenderedRange();\n  }\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n\n\n  onContentScrolled() {\n    this._updateRenderedRange();\n  }\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n\n\n  onDataLengthChanged() {\n    this._updateTotalContentSize();\n\n    this._updateRenderedRange();\n  }\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n\n\n  onContentRendered() {\n    /* no-op */\n  }\n  /** @docs-private Implemented as part of VirtualScrollStrategy. */\n\n\n  onRenderedOffsetChanged() {\n    /* no-op */\n  }\n  /**\n   * Scroll to the offset for the given index.\n   * @param index The index of the element to scroll to.\n   * @param behavior The ScrollBehavior to use when scrolling.\n   */\n\n\n  scrollToIndex(index, behavior) {\n    if (this._viewport) {\n      this._viewport.scrollToOffset(index * this._itemSize, behavior);\n    }\n  }\n  /** Update the viewport's total content size. */\n\n\n  _updateTotalContentSize() {\n    if (!this._viewport) {\n      return;\n    }\n\n    this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n  }\n  /** Update the viewport's rendered range. */\n\n\n  _updateRenderedRange() {\n    if (!this._viewport) {\n      return;\n    }\n\n    const renderedRange = this._viewport.getRenderedRange();\n\n    const newRange = {\n      start: renderedRange.start,\n      end: renderedRange.end\n    };\n\n    const viewportSize = this._viewport.getViewportSize();\n\n    const dataLength = this._viewport.getDataLength();\n\n    let scrollOffset = this._viewport.measureScrollOffset(); // Prevent NaN as result when dividing by zero.\n\n\n    let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0; // If user scrolls to the bottom of the list and data changes to a smaller list\n\n    if (newRange.end > dataLength) {\n      // We have to recalculate the first visible index based on new data length and viewport size.\n      const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n      const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems)); // If first visible index changed we must update scroll offset to handle start/end buffers\n      // Current range must also be adjusted to cover the new position (bottom of new list).\n\n      if (firstVisibleIndex != newVisibleIndex) {\n        firstVisibleIndex = newVisibleIndex;\n        scrollOffset = newVisibleIndex * this._itemSize;\n        newRange.start = Math.floor(firstVisibleIndex);\n      }\n\n      newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n    }\n\n    const startBuffer = scrollOffset - newRange.start * this._itemSize;\n\n    if (startBuffer < this._minBufferPx && newRange.start != 0) {\n      const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n      newRange.start = Math.max(0, newRange.start - expandStart);\n      newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n    } else {\n      const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n\n      if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n        const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n\n        if (expandEnd > 0) {\n          newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n          newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n        }\n      }\n    }\n\n    this._viewport.setRenderedRange(newRange);\n\n    this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n\n    this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n  }\n\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n *     `FixedSizeVirtualScrollStrategy` from.\n */\n\n\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n  return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\n\n\nclass CdkFixedSizeVirtualScroll {\n  constructor() {\n    this._itemSize = 20;\n    this._minBufferPx = 100;\n    this._maxBufferPx = 200;\n    /** The scroll strategy used by this directive. */\n\n    this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n  }\n  /** The size of the items in the list (in pixels). */\n\n\n  get itemSize() {\n    return this._itemSize;\n  }\n\n  set itemSize(value) {\n    this._itemSize = coerceNumberProperty(value);\n  }\n  /**\n   * The minimum amount of buffer rendered beyond the viewport (in pixels).\n   * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n   */\n\n\n  get minBufferPx() {\n    return this._minBufferPx;\n  }\n\n  set minBufferPx(value) {\n    this._minBufferPx = coerceNumberProperty(value);\n  }\n  /**\n   * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n   */\n\n\n  get maxBufferPx() {\n    return this._maxBufferPx;\n  }\n\n  set maxBufferPx(value) {\n    this._maxBufferPx = coerceNumberProperty(value);\n  }\n\n  ngOnChanges() {\n    this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n  }\n\n}\n\nCdkFixedSizeVirtualScroll.ɵfac = function CdkFixedSizeVirtualScroll_Factory(t) {\n  return new (t || CdkFixedSizeVirtualScroll)();\n};\n\nCdkFixedSizeVirtualScroll.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkFixedSizeVirtualScroll,\n  selectors: [[\"cdk-virtual-scroll-viewport\", \"itemSize\", \"\"]],\n  inputs: {\n    itemSize: \"itemSize\",\n    minBufferPx: \"minBufferPx\",\n    maxBufferPx: \"maxBufferPx\"\n  },\n  features: [i0.ɵɵProvidersFeature([{\n    provide: VIRTUAL_SCROLL_STRATEGY,\n    useFactory: _fixedSizeVirtualScrollStrategyFactory,\n    deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n  }]), i0.ɵɵNgOnChangesFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkFixedSizeVirtualScroll, [{\n    type: Directive,\n    args: [{\n      selector: 'cdk-virtual-scroll-viewport[itemSize]',\n      providers: [{\n        provide: VIRTUAL_SCROLL_STRATEGY,\n        useFactory: _fixedSizeVirtualScrollStrategyFactory,\n        deps: [forwardRef(() => CdkFixedSizeVirtualScroll)]\n      }]\n    }]\n  }], null, {\n    itemSize: [{\n      type: Input\n    }],\n    minBufferPx: [{\n      type: Input\n    }],\n    maxBufferPx: [{\n      type: Input\n    }]\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/** Time in ms to throttle the scrolling events by default. */\n\n\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\n\nclass ScrollDispatcher {\n  constructor(_ngZone, _platform, document) {\n    this._ngZone = _ngZone;\n    this._platform = _platform;\n    /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n\n    this._scrolled = new Subject();\n    /** Keeps track of the global `scroll` and `resize` subscriptions. */\n\n    this._globalSubscription = null;\n    /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n\n    this._scrolledCount = 0;\n    /**\n     * Map of all the scrollable references that are registered with the service and their\n     * scroll event subscriptions.\n     */\n\n    this.scrollContainers = new Map();\n    this._document = document;\n  }\n  /**\n   * Registers a scrollable instance with the service and listens for its scrolled events. When the\n   * scrollable is scrolled, the service emits the event to its scrolled observable.\n   * @param scrollable Scrollable instance to be registered.\n   */\n\n\n  register(scrollable) {\n    if (!this.scrollContainers.has(scrollable)) {\n      this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n    }\n  }\n  /**\n   * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n   * @param scrollable Scrollable instance to be deregistered.\n   */\n\n\n  deregister(scrollable) {\n    const scrollableReference = this.scrollContainers.get(scrollable);\n\n    if (scrollableReference) {\n      scrollableReference.unsubscribe();\n      this.scrollContainers.delete(scrollable);\n    }\n  }\n  /**\n   * Returns an observable that emits an event whenever any of the registered Scrollable\n   * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n   * to override the default \"throttle\" time.\n   *\n   * **Note:** in order to avoid hitting change detection for every scroll event,\n   * all of the events emitted from this stream will be run outside the Angular zone.\n   * If you need to update any data bindings as a result of a scroll event, you have\n   * to run the callback using `NgZone.run`.\n   */\n\n\n  scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n    if (!this._platform.isBrowser) {\n      return of();\n    }\n\n    return new Observable(observer => {\n      if (!this._globalSubscription) {\n        this._addGlobalListener();\n      } // In the case of a 0ms delay, use an observable without auditTime\n      // since it does add a perceptible delay in processing overhead.\n\n\n      const subscription = auditTimeInMs > 0 ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer) : this._scrolled.subscribe(observer);\n      this._scrolledCount++;\n      return () => {\n        subscription.unsubscribe();\n        this._scrolledCount--;\n\n        if (!this._scrolledCount) {\n          this._removeGlobalListener();\n        }\n      };\n    });\n  }\n\n  ngOnDestroy() {\n    this._removeGlobalListener();\n\n    this.scrollContainers.forEach((_, container) => this.deregister(container));\n\n    this._scrolled.complete();\n  }\n  /**\n   * Returns an observable that emits whenever any of the\n   * scrollable ancestors of an element are scrolled.\n   * @param elementOrElementRef Element whose ancestors to listen for.\n   * @param auditTimeInMs Time to throttle the scroll events.\n   */\n\n\n  ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n    const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n    return this.scrolled(auditTimeInMs).pipe(filter(target => {\n      return !target || ancestors.indexOf(target) > -1;\n    }));\n  }\n  /** Returns all registered Scrollables that contain the provided element. */\n\n\n  getAncestorScrollContainers(elementOrElementRef) {\n    const scrollingContainers = [];\n    this.scrollContainers.forEach((_subscription, scrollable) => {\n      if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n        scrollingContainers.push(scrollable);\n      }\n    });\n    return scrollingContainers;\n  }\n  /** Use defaultView of injected document if available or fallback to global window reference */\n\n\n  _getWindow() {\n    return this._document.defaultView || window;\n  }\n  /** Returns true if the element is contained within the provided Scrollable. */\n\n\n  _scrollableContainsElement(scrollable, elementOrElementRef) {\n    let element = coerceElement(elementOrElementRef);\n    let scrollableElement = scrollable.getElementRef().nativeElement; // Traverse through the element parents until we reach null, checking if any of the elements\n    // are the scrollable's element.\n\n    do {\n      if (element == scrollableElement) {\n        return true;\n      }\n    } while (element = element.parentElement);\n\n    return false;\n  }\n  /** Sets up the global scroll listeners. */\n\n\n  _addGlobalListener() {\n    this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n      const window = this._getWindow();\n\n      return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n    });\n  }\n  /** Cleans up the global scroll listener. */\n\n\n  _removeGlobalListener() {\n    if (this._globalSubscription) {\n      this._globalSubscription.unsubscribe();\n\n      this._globalSubscription = null;\n    }\n  }\n\n}\n\nScrollDispatcher.ɵfac = function ScrollDispatcher_Factory(t) {\n  return new (t || ScrollDispatcher)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(i1.Platform), i0.ɵɵinject(DOCUMENT, 8));\n};\n\nScrollDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ScrollDispatcher,\n  factory: ScrollDispatcher.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollDispatcher, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i0.NgZone\n    }, {\n      type: i1.Platform\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\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/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\n\n\nclass CdkScrollable {\n  constructor(elementRef, scrollDispatcher, ngZone, dir) {\n    this.elementRef = elementRef;\n    this.scrollDispatcher = scrollDispatcher;\n    this.ngZone = ngZone;\n    this.dir = dir;\n    this._destroyed = new Subject();\n    this._elementScrolled = new Observable(observer => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer)));\n  }\n\n  ngOnInit() {\n    this.scrollDispatcher.register(this);\n  }\n\n  ngOnDestroy() {\n    this.scrollDispatcher.deregister(this);\n\n    this._destroyed.next();\n\n    this._destroyed.complete();\n  }\n  /** Returns observable that emits when a scroll event is fired on the host element. */\n\n\n  elementScrolled() {\n    return this._elementScrolled;\n  }\n  /** Gets the ElementRef for the viewport. */\n\n\n  getElementRef() {\n    return this.elementRef;\n  }\n  /**\n   * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n   * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n   * left and right always refer to the left and right side of the scrolling container irrespective\n   * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n   * in an RTL context.\n   * @param options specified the offsets to scroll to.\n   */\n\n\n  scrollTo(options) {\n    const el = this.elementRef.nativeElement;\n    const isRtl = this.dir && this.dir.value == 'rtl'; // Rewrite start & end offsets as right or left offsets.\n\n    if (options.left == null) {\n      options.left = isRtl ? options.end : options.start;\n    }\n\n    if (options.right == null) {\n      options.right = isRtl ? options.start : options.end;\n    } // Rewrite the bottom offset as a top offset.\n\n\n    if (options.bottom != null) {\n      options.top = el.scrollHeight - el.clientHeight - options.bottom;\n    } // Rewrite the right offset as a left offset.\n\n\n    if (isRtl && getRtlScrollAxisType() != 0\n    /* NORMAL */\n    ) {\n      if (options.left != null) {\n        options.right = el.scrollWidth - el.clientWidth - options.left;\n      }\n\n      if (getRtlScrollAxisType() == 2\n      /* INVERTED */\n      ) {\n        options.left = options.right;\n      } else if (getRtlScrollAxisType() == 1\n      /* NEGATED */\n      ) {\n        options.left = options.right ? -options.right : options.right;\n      }\n    } else {\n      if (options.right != null) {\n        options.left = el.scrollWidth - el.clientWidth - options.right;\n      }\n    }\n\n    this._applyScrollToOptions(options);\n  }\n\n  _applyScrollToOptions(options) {\n    const el = this.elementRef.nativeElement;\n\n    if (supportsScrollBehavior()) {\n      el.scrollTo(options);\n    } else {\n      if (options.top != null) {\n        el.scrollTop = options.top;\n      }\n\n      if (options.left != null) {\n        el.scrollLeft = options.left;\n      }\n    }\n  }\n  /**\n   * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n   * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n   * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n   * left and right always refer to the left and right side of the scrolling container irrespective\n   * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n   * in an RTL context.\n   * @param from The edge to measure from.\n   */\n\n\n  measureScrollOffset(from) {\n    const LEFT = 'left';\n    const RIGHT = 'right';\n    const el = this.elementRef.nativeElement;\n\n    if (from == 'top') {\n      return el.scrollTop;\n    }\n\n    if (from == 'bottom') {\n      return el.scrollHeight - el.clientHeight - el.scrollTop;\n    } // Rewrite start & end as left or right offsets.\n\n\n    const isRtl = this.dir && this.dir.value == 'rtl';\n\n    if (from == 'start') {\n      from = isRtl ? RIGHT : LEFT;\n    } else if (from == 'end') {\n      from = isRtl ? LEFT : RIGHT;\n    }\n\n    if (isRtl && getRtlScrollAxisType() == 2\n    /* INVERTED */\n    ) {\n      // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n      // 0 when scrolled all the way right.\n      if (from == LEFT) {\n        return el.scrollWidth - el.clientWidth - el.scrollLeft;\n      } else {\n        return el.scrollLeft;\n      }\n    } else if (isRtl && getRtlScrollAxisType() == 1\n    /* NEGATED */\n    ) {\n      // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n      // 0 when scrolled all the way right.\n      if (from == LEFT) {\n        return el.scrollLeft + el.scrollWidth - el.clientWidth;\n      } else {\n        return -el.scrollLeft;\n      }\n    } else {\n      // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n      // (scrollWidth - clientWidth) when scrolled all the way right.\n      if (from == LEFT) {\n        return el.scrollLeft;\n      } else {\n        return el.scrollWidth - el.clientWidth - el.scrollLeft;\n      }\n    }\n  }\n\n}\n\nCdkScrollable.ɵfac = function CdkScrollable_Factory(t) {\n  return new (t || CdkScrollable)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i2.Directionality, 8));\n};\n\nCdkScrollable.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkScrollable,\n  selectors: [[\"\", \"cdk-scrollable\", \"\"], [\"\", \"cdkScrollable\", \"\"]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkScrollable, [{\n    type: Directive,\n    args: [{\n      selector: '[cdk-scrollable], [cdkScrollable]'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: ScrollDispatcher\n    }, {\n      type: i0.NgZone\n    }, {\n      type: i2.Directionality,\n      decorators: [{\n        type: Optional\n      }]\n    }];\n  }, null);\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/** Time in ms to throttle the resize events by default. */\n\n\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\n\nclass ViewportRuler {\n  constructor(_platform, ngZone, document) {\n    this._platform = _platform;\n    /** Stream of viewport change events. */\n\n    this._change = new Subject();\n    /** Event listener that will be used to handle the viewport change events. */\n\n    this._changeListener = event => {\n      this._change.next(event);\n    };\n\n    this._document = document;\n    ngZone.runOutsideAngular(() => {\n      if (_platform.isBrowser) {\n        const window = this._getWindow(); // Note that bind the events ourselves, rather than going through something like RxJS's\n        // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n\n\n        window.addEventListener('resize', this._changeListener);\n        window.addEventListener('orientationchange', this._changeListener);\n      } // Clear the cached position so that the viewport is re-measured next time it is required.\n      // We don't need to keep track of the subscription, because it is completed on destroy.\n\n\n      this.change().subscribe(() => this._viewportSize = null);\n    });\n  }\n\n  ngOnDestroy() {\n    if (this._platform.isBrowser) {\n      const window = this._getWindow();\n\n      window.removeEventListener('resize', this._changeListener);\n      window.removeEventListener('orientationchange', this._changeListener);\n    }\n\n    this._change.complete();\n  }\n  /** Returns the viewport's width and height. */\n\n\n  getViewportSize() {\n    if (!this._viewportSize) {\n      this._updateViewportSize();\n    }\n\n    const output = {\n      width: this._viewportSize.width,\n      height: this._viewportSize.height\n    }; // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n\n    if (!this._platform.isBrowser) {\n      this._viewportSize = null;\n    }\n\n    return output;\n  }\n  /** Gets a ClientRect for the viewport's bounds. */\n\n\n  getViewportRect() {\n    // Use the document element's bounding rect rather than the window scroll properties\n    // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n    // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n    // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n    // can disagree when the page is pinch-zoomed (on devices that support touch).\n    // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n    // We use the documentElement instead of the body because, by default (without a css reset)\n    // browsers typically give the document body an 8px margin, which is not included in\n    // getBoundingClientRect().\n    const scrollPosition = this.getViewportScrollPosition();\n    const {\n      width,\n      height\n    } = this.getViewportSize();\n    return {\n      top: scrollPosition.top,\n      left: scrollPosition.left,\n      bottom: scrollPosition.top + height,\n      right: scrollPosition.left + width,\n      height,\n      width\n    };\n  }\n  /** Gets the (top, left) scroll position of the viewport. */\n\n\n  getViewportScrollPosition() {\n    // While we can get a reference to the fake document\n    // during SSR, it doesn't have getBoundingClientRect.\n    if (!this._platform.isBrowser) {\n      return {\n        top: 0,\n        left: 0\n      };\n    } // The top-left-corner of the viewport is determined by the scroll position of the document\n    // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n    // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n    // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n    // `document.documentElement` works consistently, where the `top` and `left` values will\n    // equal negative the scroll position.\n\n\n    const document = this._document;\n\n    const window = this._getWindow();\n\n    const documentElement = document.documentElement;\n    const documentRect = documentElement.getBoundingClientRect();\n    const top = -documentRect.top || document.body.scrollTop || window.scrollY || documentElement.scrollTop || 0;\n    const left = -documentRect.left || document.body.scrollLeft || window.scrollX || documentElement.scrollLeft || 0;\n    return {\n      top,\n      left\n    };\n  }\n  /**\n   * Returns a stream that emits whenever the size of the viewport changes.\n   * This stream emits outside of the Angular zone.\n   * @param throttleTime Time in milliseconds to throttle the stream.\n   */\n\n\n  change(throttleTime = DEFAULT_RESIZE_TIME) {\n    return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n  }\n  /** Use defaultView of injected document if available or fallback to global window reference */\n\n\n  _getWindow() {\n    return this._document.defaultView || window;\n  }\n  /** Updates the cached viewport size. */\n\n\n  _updateViewportSize() {\n    const window = this._getWindow();\n\n    this._viewportSize = this._platform.isBrowser ? {\n      width: window.innerWidth,\n      height: window.innerHeight\n    } : {\n      width: 0,\n      height: 0\n    };\n  }\n\n}\n\nViewportRuler.ɵfac = function ViewportRuler_Factory(t) {\n  return new (t || ViewportRuler)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(DOCUMENT, 8));\n};\n\nViewportRuler.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ViewportRuler,\n  factory: ViewportRuler.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ViewportRuler, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.Platform\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, null);\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/** Checks if the given ranges are equal. */\n\n\nfunction rangesEqual(r1, r2) {\n  return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\n\n\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\n\nclass CdkVirtualScrollViewport extends CdkScrollable {\n  constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler) {\n    super(elementRef, scrollDispatcher, ngZone, dir);\n    this.elementRef = elementRef;\n    this._changeDetectorRef = _changeDetectorRef;\n    this._scrollStrategy = _scrollStrategy;\n    /** Emits when the viewport is detached from a CdkVirtualForOf. */\n\n    this._detachedSubject = new Subject();\n    /** Emits when the rendered range changes. */\n\n    this._renderedRangeSubject = new Subject();\n    this._orientation = 'vertical';\n    this._appendOnly = false; // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n    // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n    // depending on how the strategy calculates the scrolled index, it may come at a cost to\n    // performance.\n\n    /** Emits when the index of the first element visible in the viewport changes. */\n\n    this.scrolledIndexChange = new Observable(observer => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n    /** A stream that emits whenever the rendered range changes. */\n\n    this.renderedRangeStream = this._renderedRangeSubject;\n    /**\n     * The total size of all content (in pixels), including content that is not currently rendered.\n     */\n\n    this._totalContentSize = 0;\n    /** A string representing the `style.width` property value to be used for the spacer element. */\n\n    this._totalContentWidth = '';\n    /** A string representing the `style.height` property value to be used for the spacer element. */\n\n    this._totalContentHeight = '';\n    /** The currently rendered range of indices. */\n\n    this._renderedRange = {\n      start: 0,\n      end: 0\n    };\n    /** The length of the data bound to this viewport (in number of items). */\n\n    this._dataLength = 0;\n    /** The size of the viewport (in pixels). */\n\n    this._viewportSize = 0;\n    /** The last rendered content offset that was set. */\n\n    this._renderedContentOffset = 0;\n    /**\n     * Whether the last rendered content offset was to the end of the content (and therefore needs to\n     * be rewritten as an offset to the start of the content).\n     */\n\n    this._renderedContentOffsetNeedsRewrite = false;\n    /** Whether there is a pending change detection cycle. */\n\n    this._isChangeDetectionPending = false;\n    /** A list of functions to run after the next change detection cycle. */\n\n    this._runAfterChangeDetection = [];\n    /** Subscription to changes in the viewport size. */\n\n    this._viewportChanges = Subscription.EMPTY;\n\n    if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n    }\n\n    this._viewportChanges = viewportRuler.change().subscribe(() => {\n      this.checkViewportSize();\n    });\n  }\n  /** The direction the viewport scrolls. */\n\n\n  get orientation() {\n    return this._orientation;\n  }\n\n  set orientation(orientation) {\n    if (this._orientation !== orientation) {\n      this._orientation = orientation;\n\n      this._calculateSpacerSize();\n    }\n  }\n  /**\n   * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n   * will be removed.\n   */\n\n\n  get appendOnly() {\n    return this._appendOnly;\n  }\n\n  set appendOnly(value) {\n    this._appendOnly = coerceBooleanProperty(value);\n  }\n\n  ngOnInit() {\n    super.ngOnInit(); // It's still too early to measure the viewport at this point. Deferring with a promise allows\n    // the Viewport to be rendered with the correct size before we measure. We run this outside the\n    // zone to avoid causing more change detection cycles. We handle the change detection loop\n    // ourselves instead.\n\n    this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n      this._measureViewportSize();\n\n      this._scrollStrategy.attach(this);\n\n      this.elementScrolled().pipe( // Start off with a fake scroll event so we properly detect our initial position.\n      startWith(null), // Collect multiple events into one until the next animation frame. This way if\n      // there are multiple scroll events in the same frame we only need to recheck\n      // our layout once.\n      auditTime(0, SCROLL_SCHEDULER)).subscribe(() => this._scrollStrategy.onContentScrolled());\n\n      this._markChangeDetectionNeeded();\n    }));\n  }\n\n  ngOnDestroy() {\n    this.detach();\n\n    this._scrollStrategy.detach(); // Complete all subjects\n\n\n    this._renderedRangeSubject.complete();\n\n    this._detachedSubject.complete();\n\n    this._viewportChanges.unsubscribe();\n\n    super.ngOnDestroy();\n  }\n  /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n\n\n  attach(forOf) {\n    if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('CdkVirtualScrollViewport is already attached.');\n    } // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n    // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n    // change detection loop ourselves.\n\n\n    this.ngZone.runOutsideAngular(() => {\n      this._forOf = forOf;\n\n      this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n        const newLength = data.length;\n\n        if (newLength !== this._dataLength) {\n          this._dataLength = newLength;\n\n          this._scrollStrategy.onDataLengthChanged();\n        }\n\n        this._doChangeDetection();\n      });\n    });\n  }\n  /** Detaches the current `CdkVirtualForOf`. */\n\n\n  detach() {\n    this._forOf = null;\n\n    this._detachedSubject.next();\n  }\n  /** Gets the length of the data bound to this viewport (in number of items). */\n\n\n  getDataLength() {\n    return this._dataLength;\n  }\n  /** Gets the size of the viewport (in pixels). */\n\n\n  getViewportSize() {\n    return this._viewportSize;\n  } // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n  // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n  // setting it to something else, but its error prone and should probably be split into\n  // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n\n  /** Get the current rendered range of items. */\n\n\n  getRenderedRange() {\n    return this._renderedRange;\n  }\n  /**\n   * Sets the total size of all content (in pixels), including content that is not currently\n   * rendered.\n   */\n\n\n  setTotalContentSize(size) {\n    if (this._totalContentSize !== size) {\n      this._totalContentSize = size;\n\n      this._calculateSpacerSize();\n\n      this._markChangeDetectionNeeded();\n    }\n  }\n  /** Sets the currently rendered range of indices. */\n\n\n  setRenderedRange(range) {\n    if (!rangesEqual(this._renderedRange, range)) {\n      if (this.appendOnly) {\n        range = {\n          start: 0,\n          end: Math.max(this._renderedRange.end, range.end)\n        };\n      }\n\n      this._renderedRangeSubject.next(this._renderedRange = range);\n\n      this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n    }\n  }\n  /**\n   * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n   */\n\n\n  getOffsetToRenderedContentStart() {\n    return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n  }\n  /**\n   * Sets the offset from the start of the viewport to either the start or end of the rendered data\n   * (in pixels).\n   */\n\n\n  setRenderedContentOffset(offset, to = 'to-start') {\n    // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n    // in the negative direction.\n    const isRtl = this.dir && this.dir.value == 'rtl';\n    const isHorizontal = this.orientation == 'horizontal';\n    const axis = isHorizontal ? 'X' : 'Y';\n    const axisDirection = isHorizontal && isRtl ? -1 : 1;\n    let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n    this._renderedContentOffset = offset;\n\n    if (to === 'to-end') {\n      transform += ` translate${axis}(-100%)`; // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n      // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n      // expand upward).\n\n      this._renderedContentOffsetNeedsRewrite = true;\n    }\n\n    if (this._renderedContentTransform != transform) {\n      // We know this value is safe because we parse `offset` with `Number()` before passing it\n      // into the string.\n      this._renderedContentTransform = transform;\n\n      this._markChangeDetectionNeeded(() => {\n        if (this._renderedContentOffsetNeedsRewrite) {\n          this._renderedContentOffset -= this.measureRenderedContentSize();\n          this._renderedContentOffsetNeedsRewrite = false;\n          this.setRenderedContentOffset(this._renderedContentOffset);\n        } else {\n          this._scrollStrategy.onRenderedOffsetChanged();\n        }\n      });\n    }\n  }\n  /**\n   * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n   * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n   * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n   * @param offset The offset to scroll to.\n   * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n   */\n\n\n  scrollToOffset(offset, behavior = 'auto') {\n    const options = {\n      behavior\n    };\n\n    if (this.orientation === 'horizontal') {\n      options.start = offset;\n    } else {\n      options.top = offset;\n    }\n\n    this.scrollTo(options);\n  }\n  /**\n   * Scrolls to the offset for the given index.\n   * @param index The index of the element to scroll to.\n   * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n   */\n\n\n  scrollToIndex(index, behavior = 'auto') {\n    this._scrollStrategy.scrollToIndex(index, behavior);\n  }\n  /**\n   * Gets the current scroll offset from the start of the viewport (in pixels).\n   * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n   *     in horizontal mode.\n   */\n\n\n  measureScrollOffset(from) {\n    return from ? super.measureScrollOffset(from) : super.measureScrollOffset(this.orientation === 'horizontal' ? 'start' : 'top');\n  }\n  /** Measure the combined size of all of the rendered items. */\n\n\n  measureRenderedContentSize() {\n    const contentEl = this._contentWrapper.nativeElement;\n    return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n  }\n  /**\n   * Measure the total combined size of the given range. Throws if the range includes items that are\n   * not rendered.\n   */\n\n\n  measureRangeSize(range) {\n    if (!this._forOf) {\n      return 0;\n    }\n\n    return this._forOf.measureRangeSize(range, this.orientation);\n  }\n  /** Update the viewport dimensions and re-render. */\n\n\n  checkViewportSize() {\n    // TODO: Cleanup later when add logic for handling content resize\n    this._measureViewportSize();\n\n    this._scrollStrategy.onDataLengthChanged();\n  }\n  /** Measure the viewport size. */\n\n\n  _measureViewportSize() {\n    const viewportEl = this.elementRef.nativeElement;\n    this._viewportSize = this.orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n  }\n  /** Queue up change detection to run. */\n\n\n  _markChangeDetectionNeeded(runAfter) {\n    if (runAfter) {\n      this._runAfterChangeDetection.push(runAfter);\n    } // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n    // properties sequentially we only have to run `_doChangeDetection` once at the end.\n\n\n    if (!this._isChangeDetectionPending) {\n      this._isChangeDetectionPending = true;\n      this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n        this._doChangeDetection();\n      }));\n    }\n  }\n  /** Run change detection. */\n\n\n  _doChangeDetection() {\n    this._isChangeDetectionPending = false; // Apply the content transform. The transform can't be set via an Angular binding because\n    // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n    // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n    // the `Number` function first to coerce it to a numeric value.\n\n    this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform; // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n    // from the root, since the repeated items are content projected in. Calling `detectChanges`\n    // instead does not properly check the projected content.\n\n    this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n    const runAfterChangeDetection = this._runAfterChangeDetection;\n    this._runAfterChangeDetection = [];\n\n    for (const fn of runAfterChangeDetection) {\n      fn();\n    }\n  }\n  /** Calculates the `style.width` and `style.height` for the spacer element. */\n\n\n  _calculateSpacerSize() {\n    this._totalContentHeight = this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n    this._totalContentWidth = this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n  }\n\n}\n\nCdkVirtualScrollViewport.ɵfac = function CdkVirtualScrollViewport_Factory(t) {\n  return new (t || CdkVirtualScrollViewport)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(VIRTUAL_SCROLL_STRATEGY, 8), i0.ɵɵdirectiveInject(i2.Directionality, 8), i0.ɵɵdirectiveInject(ScrollDispatcher), i0.ɵɵdirectiveInject(ViewportRuler));\n};\n\nCdkVirtualScrollViewport.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: CdkVirtualScrollViewport,\n  selectors: [[\"cdk-virtual-scroll-viewport\"]],\n  viewQuery: function CdkVirtualScrollViewport_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c0, 7);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._contentWrapper = _t.first);\n    }\n  },\n  hostAttrs: [1, \"cdk-virtual-scroll-viewport\"],\n  hostVars: 4,\n  hostBindings: function CdkVirtualScrollViewport_HostBindings(rf, ctx) {\n    if (rf & 2) {\n      i0.ɵɵclassProp(\"cdk-virtual-scroll-orientation-horizontal\", ctx.orientation === \"horizontal\")(\"cdk-virtual-scroll-orientation-vertical\", ctx.orientation !== \"horizontal\");\n    }\n  },\n  inputs: {\n    orientation: \"orientation\",\n    appendOnly: \"appendOnly\"\n  },\n  outputs: {\n    scrolledIndexChange: \"scrolledIndexChange\"\n  },\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkScrollable,\n    useExisting: CdkVirtualScrollViewport\n  }]), i0.ɵɵInheritDefinitionFeature],\n  ngContentSelectors: _c1,\n  decls: 4,\n  vars: 4,\n  consts: [[1, \"cdk-virtual-scroll-content-wrapper\"], [\"contentWrapper\", \"\"], [1, \"cdk-virtual-scroll-spacer\"]],\n  template: function CdkVirtualScrollViewport_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵelementStart(0, \"div\", 0, 1);\n      i0.ɵɵprojection(2);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelement(3, \"div\", 2);\n    }\n\n    if (rf & 2) {\n      i0.ɵɵadvance(3);\n      i0.ɵɵstyleProp(\"width\", ctx._totalContentWidth)(\"height\", ctx._totalContentHeight);\n    }\n  },\n  styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualScrollViewport, [{\n    type: Component,\n    args: [{\n      selector: 'cdk-virtual-scroll-viewport',\n      host: {\n        'class': 'cdk-virtual-scroll-viewport',\n        '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n        '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"'\n      },\n      encapsulation: ViewEncapsulation.None,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      providers: [{\n        provide: CdkScrollable,\n        useExisting: CdkVirtualScrollViewport\n      }],\n      template: \"<!--\\n  Wrap the rendered content in an element that will be used to offset it based on the scroll\\n  position.\\n-->\\n<div #contentWrapper class=\\\"cdk-virtual-scroll-content-wrapper\\\">\\n  <ng-content></ng-content>\\n</div>\\n<!--\\n  Spacer used to force the scrolling container to the correct size for the *total* number of items\\n  so that the scrollbar captures the size of the entire data set.\\n-->\\n<div class=\\\"cdk-virtual-scroll-spacer\\\"\\n     [style.width]=\\\"_totalContentWidth\\\" [style.height]=\\\"_totalContentHeight\\\"></div>\\n\",\n      styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.ChangeDetectorRef\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [VIRTUAL_SCROLL_STRATEGY]\n      }]\n    }, {\n      type: i2.Directionality,\n      decorators: [{\n        type: Optional\n      }]\n    }, {\n      type: ScrollDispatcher\n    }, {\n      type: ViewportRuler\n    }];\n  }, {\n    orientation: [{\n      type: Input\n    }],\n    appendOnly: [{\n      type: Input\n    }],\n    scrolledIndexChange: [{\n      type: Output\n    }],\n    _contentWrapper: [{\n      type: ViewChild,\n      args: ['contentWrapper', {\n        static: true\n      }]\n    }]\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/** Helper to extract the offset of a DOM Node in a certain direction. */\n\n\nfunction getOffset(orientation, direction, node) {\n  const el = node;\n\n  if (!el.getBoundingClientRect) {\n    return 0;\n  }\n\n  const rect = el.getBoundingClientRect();\n\n  if (orientation === 'horizontal') {\n    return direction === 'start' ? rect.left : rect.right;\n  }\n\n  return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\n\n\nclass CdkVirtualForOf {\n  constructor(\n  /** The view container to add items to. */\n  _viewContainerRef,\n  /** The template to use when stamping out new items. */\n  _template,\n  /** The set of available differs. */\n  _differs,\n  /** The strategy used to render items in the virtual scroll viewport. */\n  _viewRepeater,\n  /** The virtual scrolling viewport that these items are being rendered in. */\n  _viewport, ngZone) {\n    this._viewContainerRef = _viewContainerRef;\n    this._template = _template;\n    this._differs = _differs;\n    this._viewRepeater = _viewRepeater;\n    this._viewport = _viewport;\n    /** Emits when the rendered view of the data changes. */\n\n    this.viewChange = new Subject();\n    /** Subject that emits when a new DataSource instance is given. */\n\n    this._dataSourceChanges = new Subject();\n    /** Emits whenever the data in the current DataSource changes. */\n\n    this.dataStream = this._dataSourceChanges.pipe( // Start off with null `DataSource`.\n    startWith(null), // Bundle up the previous and current data sources so we can work with both.\n    pairwise(), // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n    // new one, passing back a stream of data changes which we run through `switchMap` to give\n    // us a data stream that emits the latest data from whatever the current `DataSource` is.\n    switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), // Replay the last emitted data when someone subscribes.\n    shareReplay(1));\n    /** The differ used to calculate changes to the data. */\n\n    this._differ = null;\n    /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n\n    this._needsUpdate = false;\n    this._destroyed = new Subject();\n    this.dataStream.subscribe(data => {\n      this._data = data;\n\n      this._onRenderedDataChange();\n    });\n\n    this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n      this._renderedRange = range;\n      ngZone.run(() => this.viewChange.next(this._renderedRange));\n\n      this._onRenderedDataChange();\n    });\n\n    this._viewport.attach(this);\n  }\n  /** The DataSource to display. */\n\n\n  get cdkVirtualForOf() {\n    return this._cdkVirtualForOf;\n  }\n\n  set cdkVirtualForOf(value) {\n    this._cdkVirtualForOf = value;\n\n    if (isDataSource(value)) {\n      this._dataSourceChanges.next(value);\n    } else {\n      // If value is an an NgIterable, convert it to an array.\n      this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n    }\n  }\n  /**\n   * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n   * the item and produces a value to be used as the item's identity when tracking changes.\n   */\n\n\n  get cdkVirtualForTrackBy() {\n    return this._cdkVirtualForTrackBy;\n  }\n\n  set cdkVirtualForTrackBy(fn) {\n    this._needsUpdate = true;\n    this._cdkVirtualForTrackBy = fn ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item) : undefined;\n  }\n  /** The template used to stamp out new elements. */\n\n\n  set cdkVirtualForTemplate(value) {\n    if (value) {\n      this._needsUpdate = true;\n      this._template = value;\n    }\n  }\n  /**\n   * The size of the cache used to store templates that are not being used for re-use later.\n   * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n   */\n\n\n  get cdkVirtualForTemplateCacheSize() {\n    return this._viewRepeater.viewCacheSize;\n  }\n\n  set cdkVirtualForTemplateCacheSize(size) {\n    this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n  }\n  /**\n   * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n   * in the specified range. Throws an error if the range includes items that are not currently\n   * rendered.\n   */\n\n\n  measureRangeSize(range, orientation) {\n    if (range.start >= range.end) {\n      return 0;\n    }\n\n    if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error(`Error: attempted to measure an item that isn't rendered.`);\n    } // The index into the list of rendered views for the first item in the range.\n\n\n    const renderedStartIndex = range.start - this._renderedRange.start; // The length of the range we're measuring.\n\n    const rangeLen = range.end - range.start; // Loop over all the views, find the first and land node and compute the size by subtracting\n    // the top of the first node from the bottom of the last one.\n\n    let firstNode;\n    let lastNode; // Find the first node by starting from the beginning and going forwards.\n\n    for (let i = 0; i < rangeLen; i++) {\n      const view = this._viewContainerRef.get(i + renderedStartIndex);\n\n      if (view && view.rootNodes.length) {\n        firstNode = lastNode = view.rootNodes[0];\n        break;\n      }\n    } // Find the last node by starting from the end and going backwards.\n\n\n    for (let i = rangeLen - 1; i > -1; i--) {\n      const view = this._viewContainerRef.get(i + renderedStartIndex);\n\n      if (view && view.rootNodes.length) {\n        lastNode = view.rootNodes[view.rootNodes.length - 1];\n        break;\n      }\n    }\n\n    return firstNode && lastNode ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode) : 0;\n  }\n\n  ngDoCheck() {\n    if (this._differ && this._needsUpdate) {\n      // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n      // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n      // changing (need to do this diff).\n      const changes = this._differ.diff(this._renderedItems);\n\n      if (!changes) {\n        this._updateContext();\n      } else {\n        this._applyChanges(changes);\n      }\n\n      this._needsUpdate = false;\n    }\n  }\n\n  ngOnDestroy() {\n    this._viewport.detach();\n\n    this._dataSourceChanges.next(undefined);\n\n    this._dataSourceChanges.complete();\n\n    this.viewChange.complete();\n\n    this._destroyed.next();\n\n    this._destroyed.complete();\n\n    this._viewRepeater.detach();\n  }\n  /** React to scroll state changes in the viewport. */\n\n\n  _onRenderedDataChange() {\n    if (!this._renderedRange) {\n      return;\n    }\n\n    this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n\n    if (!this._differ) {\n      // Use a wrapper function for the `trackBy` so any new values are\n      // picked up automatically without having to recreate the differ.\n      this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n        return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n      });\n    }\n\n    this._needsUpdate = true;\n  }\n  /** Swap out one `DataSource` for another. */\n\n\n  _changeDataSource(oldDs, newDs) {\n    if (oldDs) {\n      oldDs.disconnect(this);\n    }\n\n    this._needsUpdate = true;\n    return newDs ? newDs.connect(this) : of();\n  }\n  /** Update the `CdkVirtualForOfContext` for all views. */\n\n\n  _updateContext() {\n    const count = this._data.length;\n    let i = this._viewContainerRef.length;\n\n    while (i--) {\n      const view = this._viewContainerRef.get(i);\n\n      view.context.index = this._renderedRange.start + i;\n      view.context.count = count;\n\n      this._updateComputedContextProperties(view.context);\n\n      view.detectChanges();\n    }\n  }\n  /** Apply changes to the DOM. */\n\n\n  _applyChanges(changes) {\n    this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item); // Update $implicit for any items that had an identity change.\n\n\n    changes.forEachIdentityChange(record => {\n      const view = this._viewContainerRef.get(record.currentIndex);\n\n      view.context.$implicit = record.item;\n    }); // Update the context variables on all items.\n\n    const count = this._data.length;\n    let i = this._viewContainerRef.length;\n\n    while (i--) {\n      const view = this._viewContainerRef.get(i);\n\n      view.context.index = this._renderedRange.start + i;\n      view.context.count = count;\n\n      this._updateComputedContextProperties(view.context);\n    }\n  }\n  /** Update the computed properties on the `CdkVirtualForOfContext`. */\n\n\n  _updateComputedContextProperties(context) {\n    context.first = context.index === 0;\n    context.last = context.index === context.count - 1;\n    context.even = context.index % 2 === 0;\n    context.odd = !context.even;\n  }\n\n  _getEmbeddedViewArgs(record, index) {\n    // Note that it's important that we insert the item directly at the proper index,\n    // rather than inserting it and the moving it in place, because if there's a directive\n    // on the same node that injects the `ViewContainerRef`, Angular will insert another\n    // comment node which can throw off the move when it's being repeated for all items.\n    return {\n      templateRef: this._template,\n      context: {\n        $implicit: record.item,\n        // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n        // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n        cdkVirtualForOf: this._cdkVirtualForOf,\n        index: -1,\n        count: -1,\n        first: false,\n        last: false,\n        odd: false,\n        even: false\n      },\n      index\n    };\n  }\n\n}\n\nCdkVirtualForOf.ɵfac = function CdkVirtualForOf_Factory(t) {\n  return new (t || CdkVirtualForOf)(i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.IterableDiffers), i0.ɵɵdirectiveInject(_VIEW_REPEATER_STRATEGY), i0.ɵɵdirectiveInject(CdkVirtualScrollViewport, 4), i0.ɵɵdirectiveInject(i0.NgZone));\n};\n\nCdkVirtualForOf.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkVirtualForOf,\n  selectors: [[\"\", \"cdkVirtualFor\", \"\", \"cdkVirtualForOf\", \"\"]],\n  inputs: {\n    cdkVirtualForOf: \"cdkVirtualForOf\",\n    cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\",\n    cdkVirtualForTemplate: \"cdkVirtualForTemplate\",\n    cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\"\n  },\n  features: [i0.ɵɵProvidersFeature([{\n    provide: _VIEW_REPEATER_STRATEGY,\n    useClass: _RecycleViewRepeaterStrategy\n  }])]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkVirtualForOf, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkVirtualFor][cdkVirtualForOf]',\n      providers: [{\n        provide: _VIEW_REPEATER_STRATEGY,\n        useClass: _RecycleViewRepeaterStrategy\n      }]\n    }]\n  }], function () {\n    return [{\n      type: i0.ViewContainerRef\n    }, {\n      type: i0.TemplateRef\n    }, {\n      type: i0.IterableDiffers\n    }, {\n      type: i2$1._RecycleViewRepeaterStrategy,\n      decorators: [{\n        type: Inject,\n        args: [_VIEW_REPEATER_STRATEGY]\n      }]\n    }, {\n      type: CdkVirtualScrollViewport,\n      decorators: [{\n        type: SkipSelf\n      }]\n    }, {\n      type: i0.NgZone\n    }];\n  }, {\n    cdkVirtualForOf: [{\n      type: Input\n    }],\n    cdkVirtualForTrackBy: [{\n      type: Input\n    }],\n    cdkVirtualForTemplate: [{\n      type: Input\n    }],\n    cdkVirtualForTemplateCacheSize: [{\n      type: Input\n    }]\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\nclass CdkScrollableModule {}\n\nCdkScrollableModule.ɵfac = function CdkScrollableModule_Factory(t) {\n  return new (t || CdkScrollableModule)();\n};\n\nCdkScrollableModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: CdkScrollableModule\n});\nCdkScrollableModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkScrollableModule, [{\n    type: NgModule,\n    args: [{\n      exports: [CdkScrollable],\n      declarations: [CdkScrollable]\n    }]\n  }], null, null);\n})();\n/**\n * @docs-primary-export\n */\n\n\nclass ScrollingModule {}\n\nScrollingModule.ɵfac = function ScrollingModule_Factory(t) {\n  return new (t || ScrollingModule)();\n};\n\nScrollingModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: ScrollingModule\n});\nScrollingModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[BidiModule, PlatformModule, CdkScrollableModule], BidiModule, CdkScrollableModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ScrollingModule, [{\n    type: NgModule,\n    args: [{\n      imports: [BidiModule, PlatformModule, CdkScrollableModule],\n      exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport],\n      declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport]\n    }]\n  }], null, null);\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/**\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/scrolling.mjs"],"names":["coerceNumberProperty","coerceElement","coerceBooleanProperty","i0","InjectionToken","forwardRef","Directive","Input","Injectable","Optional","Inject","Component","ViewEncapsulation","ChangeDetectionStrategy","Output","ViewChild","SkipSelf","NgModule","Subject","of","Observable","fromEvent","animationFrameScheduler","asapScheduler","Subscription","isObservable","distinctUntilChanged","auditTime","filter","takeUntil","startWith","pairwise","switchMap","shareReplay","i1","getRtlScrollAxisType","supportsScrollBehavior","PlatformModule","DOCUMENT","i2","BidiModule","i2$1","isDataSource","ArrayDataSource","_VIEW_REPEATER_STRATEGY","_RecycleViewRepeaterStrategy","VIRTUAL_SCROLL_STRATEGY","FixedSizeVirtualScrollStrategy","constructor","itemSize","minBufferPx","maxBufferPx","_scrolledIndexChange","scrolledIndexChange","pipe","_viewport","_itemSize","_minBufferPx","_maxBufferPx","attach","viewport","_updateTotalContentSize","_updateRenderedRange","detach","complete","updateItemAndBufferSize","ngDevMode","Error","onContentScrolled","onDataLengthChanged","onContentRendered","onRenderedOffsetChanged","scrollToIndex","index","behavior","scrollToOffset","setTotalContentSize","getDataLength","renderedRange","getRenderedRange","newRange","start","end","viewportSize","getViewportSize","dataLength","scrollOffset","measureScrollOffset","firstVisibleIndex","maxVisibleItems","Math","ceil","newVisibleIndex","max","min","floor","startBuffer","expandStart","endBuffer","expandEnd","setRenderedRange","setRenderedContentOffset","next","_fixedSizeVirtualScrollStrategyFactory","fixedSizeDir","_scrollStrategy","CdkFixedSizeVirtualScroll","value","ngOnChanges","ɵfac","ɵdir","provide","useFactory","deps","type","args","selector","providers","DEFAULT_SCROLL_TIME","ScrollDispatcher","_ngZone","_platform","document","_scrolled","_globalSubscription","_scrolledCount","scrollContainers","Map","_document","register","scrollable","has","set","elementScrolled","subscribe","deregister","scrollableReference","get","unsubscribe","delete","scrolled","auditTimeInMs","isBrowser","observer","_addGlobalListener","subscription","_removeGlobalListener","ngOnDestroy","forEach","_","container","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","target","indexOf","scrollingContainers","_subscription","_scrollableContainsElement","push","_getWindow","defaultView","window","element","scrollableElement","getElementRef","nativeElement","parentElement","runOutsideAngular","NgZone","Platform","ɵprov","providedIn","undefined","decorators","CdkScrollable","elementRef","scrollDispatcher","ngZone","dir","_destroyed","_elementScrolled","ngOnInit","scrollTo","options","el","isRtl","left","right","bottom","top","scrollHeight","clientHeight","scrollWidth","clientWidth","_applyScrollToOptions","scrollTop","scrollLeft","from","LEFT","RIGHT","ElementRef","Directionality","DEFAULT_RESIZE_TIME","ViewportRuler","_change","_changeListener","event","addEventListener","change","_viewportSize","removeEventListener","_updateViewportSize","output","width","height","getViewportRect","scrollPosition","getViewportScrollPosition","documentElement","documentRect","getBoundingClientRect","body","scrollY","scrollX","throttleTime","innerWidth","innerHeight","rangesEqual","r1","r2","SCROLL_SCHEDULER","requestAnimationFrame","CdkVirtualScrollViewport","_changeDetectorRef","viewportRuler","_detachedSubject","_renderedRangeSubject","_orientation","_appendOnly","Promise","resolve","then","run","renderedRangeStream","_totalContentSize","_totalContentWidth","_totalContentHeight","_renderedRange","_dataLength","_renderedContentOffset","_renderedContentOffsetNeedsRewrite","_isChangeDetectionPending","_runAfterChangeDetection","_viewportChanges","EMPTY","checkViewportSize","orientation","_calculateSpacerSize","appendOnly","_measureViewportSize","_markChangeDetectionNeeded","forOf","_forOf","dataStream","data","newLength","length","_doChangeDetection","size","range","getOffsetToRenderedContentStart","offset","to","isHorizontal","axis","axisDirection","transform","Number","_renderedContentTransform","measureRenderedContentSize","contentEl","_contentWrapper","offsetWidth","offsetHeight","measureRangeSize","viewportEl","runAfter","style","markForCheck","runAfterChangeDetection","fn","ChangeDetectorRef","ɵcmp","useExisting","host","encapsulation","None","changeDetection","OnPush","template","styles","static","getOffset","direction","node","rect","CdkVirtualForOf","_viewContainerRef","_template","_differs","_viewRepeater","viewChange","_dataSourceChanges","prev","cur","_changeDataSource","_differ","_needsUpdate","_data","_onRenderedDataChange","cdkVirtualForOf","_cdkVirtualForOf","Array","cdkVirtualForTrackBy","_cdkVirtualForTrackBy","item","cdkVirtualForTemplate","cdkVirtualForTemplateCacheSize","viewCacheSize","renderedStartIndex","rangeLen","firstNode","lastNode","i","view","rootNodes","ngDoCheck","changes","diff","_renderedItems","_updateContext","_applyChanges","slice","find","create","oldDs","newDs","disconnect","connect","count","context","_updateComputedContextProperties","detectChanges","applyChanges","record","_adjustedPreviousIndex","currentIndex","_getEmbeddedViewArgs","forEachIdentityChange","$implicit","first","last","even","odd","templateRef","ViewContainerRef","TemplateRef","IterableDiffers","useClass","CdkScrollableModule","ɵmod","ɵinj","exports","declarations","ScrollingModule","imports"],"mappings":"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","sourcesContent":["import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior, PlatformModule } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\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/** The injection token used to specify the virtual scrolling strategy. */\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\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/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n    /**\n     * @param itemSize The size of the items in the virtually scrolling list.\n     * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n     * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n     */\n    constructor(itemSize, minBufferPx, maxBufferPx) {\n        this._scrolledIndexChange = new Subject();\n        /** @docs-private Implemented as part of VirtualScrollStrategy. */\n        this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n        /** The attached viewport. */\n        this._viewport = null;\n        this._itemSize = itemSize;\n        this._minBufferPx = minBufferPx;\n        this._maxBufferPx = maxBufferPx;\n    }\n    /**\n     * Attaches this scroll strategy to a viewport.\n     * @param viewport The viewport to attach this strategy to.\n     */\n    attach(viewport) {\n        this._viewport = viewport;\n        this._updateTotalContentSize();\n        this._updateRenderedRange();\n    }\n    /** Detaches this scroll strategy from the currently attached viewport. */\n    detach() {\n        this._scrolledIndexChange.complete();\n        this._viewport = null;\n    }\n    /**\n     * Update the item size and buffer size.\n     * @param itemSize The size of the items in the virtually scrolling list.\n     * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n     * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n     */\n    updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n        if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n        }\n        this._itemSize = itemSize;\n        this._minBufferPx = minBufferPx;\n        this._maxBufferPx = maxBufferPx;\n        this._updateTotalContentSize();\n        this._updateRenderedRange();\n    }\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    onContentScrolled() {\n        this._updateRenderedRange();\n    }\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    onDataLengthChanged() {\n        this._updateTotalContentSize();\n        this._updateRenderedRange();\n    }\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    onContentRendered() {\n        /* no-op */\n    }\n    /** @docs-private Implemented as part of VirtualScrollStrategy. */\n    onRenderedOffsetChanged() {\n        /* no-op */\n    }\n    /**\n     * Scroll to the offset for the given index.\n     * @param index The index of the element to scroll to.\n     * @param behavior The ScrollBehavior to use when scrolling.\n     */\n    scrollToIndex(index, behavior) {\n        if (this._viewport) {\n            this._viewport.scrollToOffset(index * this._itemSize, behavior);\n        }\n    }\n    /** Update the viewport's total content size. */\n    _updateTotalContentSize() {\n        if (!this._viewport) {\n            return;\n        }\n        this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n    }\n    /** Update the viewport's rendered range. */\n    _updateRenderedRange() {\n        if (!this._viewport) {\n            return;\n        }\n        const renderedRange = this._viewport.getRenderedRange();\n        const newRange = { start: renderedRange.start, end: renderedRange.end };\n        const viewportSize = this._viewport.getViewportSize();\n        const dataLength = this._viewport.getDataLength();\n        let scrollOffset = this._viewport.measureScrollOffset();\n        // Prevent NaN as result when dividing by zero.\n        let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n        // If user scrolls to the bottom of the list and data changes to a smaller list\n        if (newRange.end > dataLength) {\n            // We have to recalculate the first visible index based on new data length and viewport size.\n            const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n            const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n            // If first visible index changed we must update scroll offset to handle start/end buffers\n            // Current range must also be adjusted to cover the new position (bottom of new list).\n            if (firstVisibleIndex != newVisibleIndex) {\n                firstVisibleIndex = newVisibleIndex;\n                scrollOffset = newVisibleIndex * this._itemSize;\n                newRange.start = Math.floor(firstVisibleIndex);\n            }\n            newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n        }\n        const startBuffer = scrollOffset - newRange.start * this._itemSize;\n        if (startBuffer < this._minBufferPx && newRange.start != 0) {\n            const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n            newRange.start = Math.max(0, newRange.start - expandStart);\n            newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n        }\n        else {\n            const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n            if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n                const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n                if (expandEnd > 0) {\n                    newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n                    newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n                }\n            }\n        }\n        this._viewport.setRenderedRange(newRange);\n        this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n        this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n    }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n *     `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n    return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n    constructor() {\n        this._itemSize = 20;\n        this._minBufferPx = 100;\n        this._maxBufferPx = 200;\n        /** The scroll strategy used by this directive. */\n        this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n    }\n    /** The size of the items in the list (in pixels). */\n    get itemSize() {\n        return this._itemSize;\n    }\n    set itemSize(value) {\n        this._itemSize = coerceNumberProperty(value);\n    }\n    /**\n     * The minimum amount of buffer rendered beyond the viewport (in pixels).\n     * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n     */\n    get minBufferPx() {\n        return this._minBufferPx;\n    }\n    set minBufferPx(value) {\n        this._minBufferPx = coerceNumberProperty(value);\n    }\n    /**\n     * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n     */\n    get maxBufferPx() {\n        return this._maxBufferPx;\n    }\n    set maxBufferPx(value) {\n        this._maxBufferPx = coerceNumberProperty(value);\n    }\n    ngOnChanges() {\n        this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n    }\n}\nCdkFixedSizeVirtualScroll.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkFixedSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkFixedSizeVirtualScroll.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, providers: [\n        {\n            provide: VIRTUAL_SCROLL_STRATEGY,\n            useFactory: _fixedSizeVirtualScrollStrategyFactory,\n            deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n        },\n    ], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkFixedSizeVirtualScroll, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: 'cdk-virtual-scroll-viewport[itemSize]',\n                    providers: [\n                        {\n                            provide: VIRTUAL_SCROLL_STRATEGY,\n                            useFactory: _fixedSizeVirtualScrollStrategyFactory,\n                            deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n                        },\n                    ],\n                }]\n        }], propDecorators: { itemSize: [{\n                type: Input\n            }], minBufferPx: [{\n                type: Input\n            }], maxBufferPx: [{\n                type: Input\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/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n    constructor(_ngZone, _platform, document) {\n        this._ngZone = _ngZone;\n        this._platform = _platform;\n        /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n        this._scrolled = new Subject();\n        /** Keeps track of the global `scroll` and `resize` subscriptions. */\n        this._globalSubscription = null;\n        /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n        this._scrolledCount = 0;\n        /**\n         * Map of all the scrollable references that are registered with the service and their\n         * scroll event subscriptions.\n         */\n        this.scrollContainers = new Map();\n        this._document = document;\n    }\n    /**\n     * Registers a scrollable instance with the service and listens for its scrolled events. When the\n     * scrollable is scrolled, the service emits the event to its scrolled observable.\n     * @param scrollable Scrollable instance to be registered.\n     */\n    register(scrollable) {\n        if (!this.scrollContainers.has(scrollable)) {\n            this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n        }\n    }\n    /**\n     * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n     * @param scrollable Scrollable instance to be deregistered.\n     */\n    deregister(scrollable) {\n        const scrollableReference = this.scrollContainers.get(scrollable);\n        if (scrollableReference) {\n            scrollableReference.unsubscribe();\n            this.scrollContainers.delete(scrollable);\n        }\n    }\n    /**\n     * Returns an observable that emits an event whenever any of the registered Scrollable\n     * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n     * to override the default \"throttle\" time.\n     *\n     * **Note:** in order to avoid hitting change detection for every scroll event,\n     * all of the events emitted from this stream will be run outside the Angular zone.\n     * If you need to update any data bindings as a result of a scroll event, you have\n     * to run the callback using `NgZone.run`.\n     */\n    scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n        if (!this._platform.isBrowser) {\n            return of();\n        }\n        return new Observable((observer) => {\n            if (!this._globalSubscription) {\n                this._addGlobalListener();\n            }\n            // In the case of a 0ms delay, use an observable without auditTime\n            // since it does add a perceptible delay in processing overhead.\n            const subscription = auditTimeInMs > 0\n                ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)\n                : this._scrolled.subscribe(observer);\n            this._scrolledCount++;\n            return () => {\n                subscription.unsubscribe();\n                this._scrolledCount--;\n                if (!this._scrolledCount) {\n                    this._removeGlobalListener();\n                }\n            };\n        });\n    }\n    ngOnDestroy() {\n        this._removeGlobalListener();\n        this.scrollContainers.forEach((_, container) => this.deregister(container));\n        this._scrolled.complete();\n    }\n    /**\n     * Returns an observable that emits whenever any of the\n     * scrollable ancestors of an element are scrolled.\n     * @param elementOrElementRef Element whose ancestors to listen for.\n     * @param auditTimeInMs Time to throttle the scroll events.\n     */\n    ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n        const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n        return this.scrolled(auditTimeInMs).pipe(filter(target => {\n            return !target || ancestors.indexOf(target) > -1;\n        }));\n    }\n    /** Returns all registered Scrollables that contain the provided element. */\n    getAncestorScrollContainers(elementOrElementRef) {\n        const scrollingContainers = [];\n        this.scrollContainers.forEach((_subscription, scrollable) => {\n            if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n                scrollingContainers.push(scrollable);\n            }\n        });\n        return scrollingContainers;\n    }\n    /** Use defaultView of injected document if available or fallback to global window reference */\n    _getWindow() {\n        return this._document.defaultView || window;\n    }\n    /** Returns true if the element is contained within the provided Scrollable. */\n    _scrollableContainsElement(scrollable, elementOrElementRef) {\n        let element = coerceElement(elementOrElementRef);\n        let scrollableElement = scrollable.getElementRef().nativeElement;\n        // Traverse through the element parents until we reach null, checking if any of the elements\n        // are the scrollable's element.\n        do {\n            if (element == scrollableElement) {\n                return true;\n            }\n        } while ((element = element.parentElement));\n        return false;\n    }\n    /** Sets up the global scroll listeners. */\n    _addGlobalListener() {\n        this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n            const window = this._getWindow();\n            return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n        });\n    }\n    /** Cleans up the global scroll listener. */\n    _removeGlobalListener() {\n        if (this._globalSubscription) {\n            this._globalSubscription.unsubscribe();\n            this._globalSubscription = null;\n        }\n    }\n}\nScrollDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollDispatcher, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollDispatcher, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [DOCUMENT]\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 * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n    constructor(elementRef, scrollDispatcher, ngZone, dir) {\n        this.elementRef = elementRef;\n        this.scrollDispatcher = scrollDispatcher;\n        this.ngZone = ngZone;\n        this.dir = dir;\n        this._destroyed = new Subject();\n        this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll')\n            .pipe(takeUntil(this._destroyed))\n            .subscribe(observer)));\n    }\n    ngOnInit() {\n        this.scrollDispatcher.register(this);\n    }\n    ngOnDestroy() {\n        this.scrollDispatcher.deregister(this);\n        this._destroyed.next();\n        this._destroyed.complete();\n    }\n    /** Returns observable that emits when a scroll event is fired on the host element. */\n    elementScrolled() {\n        return this._elementScrolled;\n    }\n    /** Gets the ElementRef for the viewport. */\n    getElementRef() {\n        return this.elementRef;\n    }\n    /**\n     * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n     * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n     * left and right always refer to the left and right side of the scrolling container irrespective\n     * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n     * in an RTL context.\n     * @param options specified the offsets to scroll to.\n     */\n    scrollTo(options) {\n        const el = this.elementRef.nativeElement;\n        const isRtl = this.dir && this.dir.value == 'rtl';\n        // Rewrite start & end offsets as right or left offsets.\n        if (options.left == null) {\n            options.left = isRtl ? options.end : options.start;\n        }\n        if (options.right == null) {\n            options.right = isRtl ? options.start : options.end;\n        }\n        // Rewrite the bottom offset as a top offset.\n        if (options.bottom != null) {\n            options.top =\n                el.scrollHeight - el.clientHeight - options.bottom;\n        }\n        // Rewrite the right offset as a left offset.\n        if (isRtl && getRtlScrollAxisType() != 0 /* NORMAL */) {\n            if (options.left != null) {\n                options.right =\n                    el.scrollWidth - el.clientWidth - options.left;\n            }\n            if (getRtlScrollAxisType() == 2 /* INVERTED */) {\n                options.left = options.right;\n            }\n            else if (getRtlScrollAxisType() == 1 /* NEGATED */) {\n                options.left = options.right ? -options.right : options.right;\n            }\n        }\n        else {\n            if (options.right != null) {\n                options.left =\n                    el.scrollWidth - el.clientWidth - options.right;\n            }\n        }\n        this._applyScrollToOptions(options);\n    }\n    _applyScrollToOptions(options) {\n        const el = this.elementRef.nativeElement;\n        if (supportsScrollBehavior()) {\n            el.scrollTo(options);\n        }\n        else {\n            if (options.top != null) {\n                el.scrollTop = options.top;\n            }\n            if (options.left != null) {\n                el.scrollLeft = options.left;\n            }\n        }\n    }\n    /**\n     * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n     * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n     * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n     * left and right always refer to the left and right side of the scrolling container irrespective\n     * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n     * in an RTL context.\n     * @param from The edge to measure from.\n     */\n    measureScrollOffset(from) {\n        const LEFT = 'left';\n        const RIGHT = 'right';\n        const el = this.elementRef.nativeElement;\n        if (from == 'top') {\n            return el.scrollTop;\n        }\n        if (from == 'bottom') {\n            return el.scrollHeight - el.clientHeight - el.scrollTop;\n        }\n        // Rewrite start & end as left or right offsets.\n        const isRtl = this.dir && this.dir.value == 'rtl';\n        if (from == 'start') {\n            from = isRtl ? RIGHT : LEFT;\n        }\n        else if (from == 'end') {\n            from = isRtl ? LEFT : RIGHT;\n        }\n        if (isRtl && getRtlScrollAxisType() == 2 /* INVERTED */) {\n            // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n            // 0 when scrolled all the way right.\n            if (from == LEFT) {\n                return el.scrollWidth - el.clientWidth - el.scrollLeft;\n            }\n            else {\n                return el.scrollLeft;\n            }\n        }\n        else if (isRtl && getRtlScrollAxisType() == 1 /* NEGATED */) {\n            // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n            // 0 when scrolled all the way right.\n            if (from == LEFT) {\n                return el.scrollLeft + el.scrollWidth - el.clientWidth;\n            }\n            else {\n                return -el.scrollLeft;\n            }\n        }\n        else {\n            // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n            // (scrollWidth - clientWidth) when scrolled all the way right.\n            if (from == LEFT) {\n                return el.scrollLeft;\n            }\n            else {\n                return el.scrollWidth - el.clientWidth - el.scrollLeft;\n            }\n        }\n    }\n}\nCdkScrollable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkScrollable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollable, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdk-scrollable], [cdkScrollable]',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n                    type: Optional\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/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n    constructor(_platform, ngZone, document) {\n        this._platform = _platform;\n        /** Stream of viewport change events. */\n        this._change = new Subject();\n        /** Event listener that will be used to handle the viewport change events. */\n        this._changeListener = (event) => {\n            this._change.next(event);\n        };\n        this._document = document;\n        ngZone.runOutsideAngular(() => {\n            if (_platform.isBrowser) {\n                const window = this._getWindow();\n                // Note that bind the events ourselves, rather than going through something like RxJS's\n                // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n                window.addEventListener('resize', this._changeListener);\n                window.addEventListener('orientationchange', this._changeListener);\n            }\n            // Clear the cached position so that the viewport is re-measured next time it is required.\n            // We don't need to keep track of the subscription, because it is completed on destroy.\n            this.change().subscribe(() => (this._viewportSize = null));\n        });\n    }\n    ngOnDestroy() {\n        if (this._platform.isBrowser) {\n            const window = this._getWindow();\n            window.removeEventListener('resize', this._changeListener);\n            window.removeEventListener('orientationchange', this._changeListener);\n        }\n        this._change.complete();\n    }\n    /** Returns the viewport's width and height. */\n    getViewportSize() {\n        if (!this._viewportSize) {\n            this._updateViewportSize();\n        }\n        const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n        // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n        if (!this._platform.isBrowser) {\n            this._viewportSize = null;\n        }\n        return output;\n    }\n    /** Gets a ClientRect for the viewport's bounds. */\n    getViewportRect() {\n        // Use the document element's bounding rect rather than the window scroll properties\n        // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n        // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n        // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n        // can disagree when the page is pinch-zoomed (on devices that support touch).\n        // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n        // We use the documentElement instead of the body because, by default (without a css reset)\n        // browsers typically give the document body an 8px margin, which is not included in\n        // getBoundingClientRect().\n        const scrollPosition = this.getViewportScrollPosition();\n        const { width, height } = this.getViewportSize();\n        return {\n            top: scrollPosition.top,\n            left: scrollPosition.left,\n            bottom: scrollPosition.top + height,\n            right: scrollPosition.left + width,\n            height,\n            width,\n        };\n    }\n    /** Gets the (top, left) scroll position of the viewport. */\n    getViewportScrollPosition() {\n        // While we can get a reference to the fake document\n        // during SSR, it doesn't have getBoundingClientRect.\n        if (!this._platform.isBrowser) {\n            return { top: 0, left: 0 };\n        }\n        // The top-left-corner of the viewport is determined by the scroll position of the document\n        // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n        // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n        // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n        // `document.documentElement` works consistently, where the `top` and `left` values will\n        // equal negative the scroll position.\n        const document = this._document;\n        const window = this._getWindow();\n        const documentElement = document.documentElement;\n        const documentRect = documentElement.getBoundingClientRect();\n        const top = -documentRect.top ||\n            document.body.scrollTop ||\n            window.scrollY ||\n            documentElement.scrollTop ||\n            0;\n        const left = -documentRect.left ||\n            document.body.scrollLeft ||\n            window.scrollX ||\n            documentElement.scrollLeft ||\n            0;\n        return { top, left };\n    }\n    /**\n     * Returns a stream that emits whenever the size of the viewport changes.\n     * This stream emits outside of the Angular zone.\n     * @param throttleTime Time in milliseconds to throttle the stream.\n     */\n    change(throttleTime = DEFAULT_RESIZE_TIME) {\n        return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n    }\n    /** Use defaultView of injected document if available or fallback to global window reference */\n    _getWindow() {\n        return this._document.defaultView || window;\n    }\n    /** Updates the cached viewport size. */\n    _updateViewportSize() {\n        const window = this._getWindow();\n        this._viewportSize = this._platform.isBrowser\n            ? { width: window.innerWidth, height: window.innerHeight }\n            : { width: 0, height: 0 };\n    }\n}\nViewportRuler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ViewportRuler, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nViewportRuler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ViewportRuler, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ViewportRuler, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [DOCUMENT]\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/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n    return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkScrollable {\n    constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler) {\n        super(elementRef, scrollDispatcher, ngZone, dir);\n        this.elementRef = elementRef;\n        this._changeDetectorRef = _changeDetectorRef;\n        this._scrollStrategy = _scrollStrategy;\n        /** Emits when the viewport is detached from a CdkVirtualForOf. */\n        this._detachedSubject = new Subject();\n        /** Emits when the rendered range changes. */\n        this._renderedRangeSubject = new Subject();\n        this._orientation = 'vertical';\n        this._appendOnly = false;\n        // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n        // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n        // depending on how the strategy calculates the scrolled index, it may come at a cost to\n        // performance.\n        /** Emits when the index of the first element visible in the viewport changes. */\n        this.scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n        /** A stream that emits whenever the rendered range changes. */\n        this.renderedRangeStream = this._renderedRangeSubject;\n        /**\n         * The total size of all content (in pixels), including content that is not currently rendered.\n         */\n        this._totalContentSize = 0;\n        /** A string representing the `style.width` property value to be used for the spacer element. */\n        this._totalContentWidth = '';\n        /** A string representing the `style.height` property value to be used for the spacer element. */\n        this._totalContentHeight = '';\n        /** The currently rendered range of indices. */\n        this._renderedRange = { start: 0, end: 0 };\n        /** The length of the data bound to this viewport (in number of items). */\n        this._dataLength = 0;\n        /** The size of the viewport (in pixels). */\n        this._viewportSize = 0;\n        /** The last rendered content offset that was set. */\n        this._renderedContentOffset = 0;\n        /**\n         * Whether the last rendered content offset was to the end of the content (and therefore needs to\n         * be rewritten as an offset to the start of the content).\n         */\n        this._renderedContentOffsetNeedsRewrite = false;\n        /** Whether there is a pending change detection cycle. */\n        this._isChangeDetectionPending = false;\n        /** A list of functions to run after the next change detection cycle. */\n        this._runAfterChangeDetection = [];\n        /** Subscription to changes in the viewport size. */\n        this._viewportChanges = Subscription.EMPTY;\n        if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n        }\n        this._viewportChanges = viewportRuler.change().subscribe(() => {\n            this.checkViewportSize();\n        });\n    }\n    /** The direction the viewport scrolls. */\n    get orientation() {\n        return this._orientation;\n    }\n    set orientation(orientation) {\n        if (this._orientation !== orientation) {\n            this._orientation = orientation;\n            this._calculateSpacerSize();\n        }\n    }\n    /**\n     * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n     * will be removed.\n     */\n    get appendOnly() {\n        return this._appendOnly;\n    }\n    set appendOnly(value) {\n        this._appendOnly = coerceBooleanProperty(value);\n    }\n    ngOnInit() {\n        super.ngOnInit();\n        // It's still too early to measure the viewport at this point. Deferring with a promise allows\n        // the Viewport to be rendered with the correct size before we measure. We run this outside the\n        // zone to avoid causing more change detection cycles. We handle the change detection loop\n        // ourselves instead.\n        this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n            this._measureViewportSize();\n            this._scrollStrategy.attach(this);\n            this.elementScrolled()\n                .pipe(\n            // Start off with a fake scroll event so we properly detect our initial position.\n            startWith(null), \n            // Collect multiple events into one until the next animation frame. This way if\n            // there are multiple scroll events in the same frame we only need to recheck\n            // our layout once.\n            auditTime(0, SCROLL_SCHEDULER))\n                .subscribe(() => this._scrollStrategy.onContentScrolled());\n            this._markChangeDetectionNeeded();\n        }));\n    }\n    ngOnDestroy() {\n        this.detach();\n        this._scrollStrategy.detach();\n        // Complete all subjects\n        this._renderedRangeSubject.complete();\n        this._detachedSubject.complete();\n        this._viewportChanges.unsubscribe();\n        super.ngOnDestroy();\n    }\n    /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n    attach(forOf) {\n        if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw Error('CdkVirtualScrollViewport is already attached.');\n        }\n        // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n        // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n        // change detection loop ourselves.\n        this.ngZone.runOutsideAngular(() => {\n            this._forOf = forOf;\n            this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n                const newLength = data.length;\n                if (newLength !== this._dataLength) {\n                    this._dataLength = newLength;\n                    this._scrollStrategy.onDataLengthChanged();\n                }\n                this._doChangeDetection();\n            });\n        });\n    }\n    /** Detaches the current `CdkVirtualForOf`. */\n    detach() {\n        this._forOf = null;\n        this._detachedSubject.next();\n    }\n    /** Gets the length of the data bound to this viewport (in number of items). */\n    getDataLength() {\n        return this._dataLength;\n    }\n    /** Gets the size of the viewport (in pixels). */\n    getViewportSize() {\n        return this._viewportSize;\n    }\n    // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n    // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n    // setting it to something else, but its error prone and should probably be split into\n    // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n    /** Get the current rendered range of items. */\n    getRenderedRange() {\n        return this._renderedRange;\n    }\n    /**\n     * Sets the total size of all content (in pixels), including content that is not currently\n     * rendered.\n     */\n    setTotalContentSize(size) {\n        if (this._totalContentSize !== size) {\n            this._totalContentSize = size;\n            this._calculateSpacerSize();\n            this._markChangeDetectionNeeded();\n        }\n    }\n    /** Sets the currently rendered range of indices. */\n    setRenderedRange(range) {\n        if (!rangesEqual(this._renderedRange, range)) {\n            if (this.appendOnly) {\n                range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n            }\n            this._renderedRangeSubject.next((this._renderedRange = range));\n            this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n        }\n    }\n    /**\n     * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n     */\n    getOffsetToRenderedContentStart() {\n        return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n    }\n    /**\n     * Sets the offset from the start of the viewport to either the start or end of the rendered data\n     * (in pixels).\n     */\n    setRenderedContentOffset(offset, to = 'to-start') {\n        // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n        // in the negative direction.\n        const isRtl = this.dir && this.dir.value == 'rtl';\n        const isHorizontal = this.orientation == 'horizontal';\n        const axis = isHorizontal ? 'X' : 'Y';\n        const axisDirection = isHorizontal && isRtl ? -1 : 1;\n        let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n        this._renderedContentOffset = offset;\n        if (to === 'to-end') {\n            transform += ` translate${axis}(-100%)`;\n            // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n            // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n            // expand upward).\n            this._renderedContentOffsetNeedsRewrite = true;\n        }\n        if (this._renderedContentTransform != transform) {\n            // We know this value is safe because we parse `offset` with `Number()` before passing it\n            // into the string.\n            this._renderedContentTransform = transform;\n            this._markChangeDetectionNeeded(() => {\n                if (this._renderedContentOffsetNeedsRewrite) {\n                    this._renderedContentOffset -= this.measureRenderedContentSize();\n                    this._renderedContentOffsetNeedsRewrite = false;\n                    this.setRenderedContentOffset(this._renderedContentOffset);\n                }\n                else {\n                    this._scrollStrategy.onRenderedOffsetChanged();\n                }\n            });\n        }\n    }\n    /**\n     * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n     * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n     * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n     * @param offset The offset to scroll to.\n     * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n     */\n    scrollToOffset(offset, behavior = 'auto') {\n        const options = { behavior };\n        if (this.orientation === 'horizontal') {\n            options.start = offset;\n        }\n        else {\n            options.top = offset;\n        }\n        this.scrollTo(options);\n    }\n    /**\n     * Scrolls to the offset for the given index.\n     * @param index The index of the element to scroll to.\n     * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n     */\n    scrollToIndex(index, behavior = 'auto') {\n        this._scrollStrategy.scrollToIndex(index, behavior);\n    }\n    /**\n     * Gets the current scroll offset from the start of the viewport (in pixels).\n     * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n     *     in horizontal mode.\n     */\n    measureScrollOffset(from) {\n        return from\n            ? super.measureScrollOffset(from)\n            : super.measureScrollOffset(this.orientation === 'horizontal' ? 'start' : 'top');\n    }\n    /** Measure the combined size of all of the rendered items. */\n    measureRenderedContentSize() {\n        const contentEl = this._contentWrapper.nativeElement;\n        return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n    }\n    /**\n     * Measure the total combined size of the given range. Throws if the range includes items that are\n     * not rendered.\n     */\n    measureRangeSize(range) {\n        if (!this._forOf) {\n            return 0;\n        }\n        return this._forOf.measureRangeSize(range, this.orientation);\n    }\n    /** Update the viewport dimensions and re-render. */\n    checkViewportSize() {\n        // TODO: Cleanup later when add logic for handling content resize\n        this._measureViewportSize();\n        this._scrollStrategy.onDataLengthChanged();\n    }\n    /** Measure the viewport size. */\n    _measureViewportSize() {\n        const viewportEl = this.elementRef.nativeElement;\n        this._viewportSize =\n            this.orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n    }\n    /** Queue up change detection to run. */\n    _markChangeDetectionNeeded(runAfter) {\n        if (runAfter) {\n            this._runAfterChangeDetection.push(runAfter);\n        }\n        // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n        // properties sequentially we only have to run `_doChangeDetection` once at the end.\n        if (!this._isChangeDetectionPending) {\n            this._isChangeDetectionPending = true;\n            this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n                this._doChangeDetection();\n            }));\n        }\n    }\n    /** Run change detection. */\n    _doChangeDetection() {\n        this._isChangeDetectionPending = false;\n        // Apply the content transform. The transform can't be set via an Angular binding because\n        // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n        // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n        // the `Number` function first to coerce it to a numeric value.\n        this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n        // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n        // from the root, since the repeated items are content projected in. Calling `detectChanges`\n        // instead does not properly check the projected content.\n        this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n        const runAfterChangeDetection = this._runAfterChangeDetection;\n        this._runAfterChangeDetection = [];\n        for (const fn of runAfterChangeDetection) {\n            fn();\n        }\n    }\n    /** Calculates the `style.width` and `style.height` for the spacer element. */\n    _calculateSpacerSize() {\n        this._totalContentHeight =\n            this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n        this._totalContentWidth =\n            this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n    }\n}\nCdkVirtualScrollViewport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualScrollViewport, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: VIRTUAL_SCROLL_STRATEGY, optional: true }, { token: i2.Directionality, optional: true }, { token: ScrollDispatcher }, { token: ViewportRuler }], target: i0.ɵɵFactoryTarget.Component });\nCdkVirtualScrollViewport.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: { orientation: \"orientation\", appendOnly: \"appendOnly\" }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, host: { properties: { \"class.cdk-virtual-scroll-orientation-horizontal\": \"orientation === \\\"horizontal\\\"\", \"class.cdk-virtual-scroll-orientation-vertical\": \"orientation !== \\\"horizontal\\\"\" }, classAttribute: \"cdk-virtual-scroll-viewport\" }, providers: [\n        {\n            provide: CdkScrollable,\n            useExisting: CdkVirtualScrollViewport,\n        },\n    ], viewQueries: [{ propertyName: \"_contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<!--\\n  Wrap the rendered content in an element that will be used to offset it based on the scroll\\n  position.\\n-->\\n<div #contentWrapper class=\\\"cdk-virtual-scroll-content-wrapper\\\">\\n  <ng-content></ng-content>\\n</div>\\n<!--\\n  Spacer used to force the scrolling container to the correct size for the *total* number of items\\n  so that the scrollbar captures the size of the entire data set.\\n-->\\n<div class=\\\"cdk-virtual-scroll-spacer\\\"\\n     [style.width]=\\\"_totalContentWidth\\\" [style.height]=\\\"_totalContentHeight\\\"></div>\\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualScrollViewport, decorators: [{\n            type: Component,\n            args: [{ selector: 'cdk-virtual-scroll-viewport', host: {\n                        'class': 'cdk-virtual-scroll-viewport',\n                        '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n                        '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\n                    }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n                        {\n                            provide: CdkScrollable,\n                            useExisting: CdkVirtualScrollViewport,\n                        },\n                    ], template: \"<!--\\n  Wrap the rendered content in an element that will be used to offset it based on the scroll\\n  position.\\n-->\\n<div #contentWrapper class=\\\"cdk-virtual-scroll-content-wrapper\\\">\\n  <ng-content></ng-content>\\n</div>\\n<!--\\n  Spacer used to force the scrolling container to the correct size for the *total* number of items\\n  so that the scrollbar captures the size of the entire data set.\\n-->\\n<div class=\\\"cdk-virtual-scroll-spacer\\\"\\n     [style.width]=\\\"_totalContentWidth\\\" [style.height]=\\\"_totalContentHeight\\\"></div>\\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [VIRTUAL_SCROLL_STRATEGY]\n                }] }, { type: i2.Directionality, decorators: [{\n                    type: Optional\n                }] }, { type: ScrollDispatcher }, { type: ViewportRuler }]; }, propDecorators: { orientation: [{\n                type: Input\n            }], appendOnly: [{\n                type: Input\n            }], scrolledIndexChange: [{\n                type: Output\n            }], _contentWrapper: [{\n                type: ViewChild,\n                args: ['contentWrapper', { static: true }]\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/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n    const el = node;\n    if (!el.getBoundingClientRect) {\n        return 0;\n    }\n    const rect = el.getBoundingClientRect();\n    if (orientation === 'horizontal') {\n        return direction === 'start' ? rect.left : rect.right;\n    }\n    return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n    constructor(\n    /** The view container to add items to. */\n    _viewContainerRef, \n    /** The template to use when stamping out new items. */\n    _template, \n    /** The set of available differs. */\n    _differs, \n    /** The strategy used to render items in the virtual scroll viewport. */\n    _viewRepeater, \n    /** The virtual scrolling viewport that these items are being rendered in. */\n    _viewport, ngZone) {\n        this._viewContainerRef = _viewContainerRef;\n        this._template = _template;\n        this._differs = _differs;\n        this._viewRepeater = _viewRepeater;\n        this._viewport = _viewport;\n        /** Emits when the rendered view of the data changes. */\n        this.viewChange = new Subject();\n        /** Subject that emits when a new DataSource instance is given. */\n        this._dataSourceChanges = new Subject();\n        /** Emits whenever the data in the current DataSource changes. */\n        this.dataStream = this._dataSourceChanges.pipe(\n        // Start off with null `DataSource`.\n        startWith(null), \n        // Bundle up the previous and current data sources so we can work with both.\n        pairwise(), \n        // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n        // new one, passing back a stream of data changes which we run through `switchMap` to give\n        // us a data stream that emits the latest data from whatever the current `DataSource` is.\n        switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n        // Replay the last emitted data when someone subscribes.\n        shareReplay(1));\n        /** The differ used to calculate changes to the data. */\n        this._differ = null;\n        /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n        this._needsUpdate = false;\n        this._destroyed = new Subject();\n        this.dataStream.subscribe(data => {\n            this._data = data;\n            this._onRenderedDataChange();\n        });\n        this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n            this._renderedRange = range;\n            ngZone.run(() => this.viewChange.next(this._renderedRange));\n            this._onRenderedDataChange();\n        });\n        this._viewport.attach(this);\n    }\n    /** The DataSource to display. */\n    get cdkVirtualForOf() {\n        return this._cdkVirtualForOf;\n    }\n    set cdkVirtualForOf(value) {\n        this._cdkVirtualForOf = value;\n        if (isDataSource(value)) {\n            this._dataSourceChanges.next(value);\n        }\n        else {\n            // If value is an an NgIterable, convert it to an array.\n            this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n        }\n    }\n    /**\n     * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n     * the item and produces a value to be used as the item's identity when tracking changes.\n     */\n    get cdkVirtualForTrackBy() {\n        return this._cdkVirtualForTrackBy;\n    }\n    set cdkVirtualForTrackBy(fn) {\n        this._needsUpdate = true;\n        this._cdkVirtualForTrackBy = fn\n            ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)\n            : undefined;\n    }\n    /** The template used to stamp out new elements. */\n    set cdkVirtualForTemplate(value) {\n        if (value) {\n            this._needsUpdate = true;\n            this._template = value;\n        }\n    }\n    /**\n     * The size of the cache used to store templates that are not being used for re-use later.\n     * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n     */\n    get cdkVirtualForTemplateCacheSize() {\n        return this._viewRepeater.viewCacheSize;\n    }\n    set cdkVirtualForTemplateCacheSize(size) {\n        this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n    }\n    /**\n     * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n     * in the specified range. Throws an error if the range includes items that are not currently\n     * rendered.\n     */\n    measureRangeSize(range, orientation) {\n        if (range.start >= range.end) {\n            return 0;\n        }\n        if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n            (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw Error(`Error: attempted to measure an item that isn't rendered.`);\n        }\n        // The index into the list of rendered views for the first item in the range.\n        const renderedStartIndex = range.start - this._renderedRange.start;\n        // The length of the range we're measuring.\n        const rangeLen = range.end - range.start;\n        // Loop over all the views, find the first and land node and compute the size by subtracting\n        // the top of the first node from the bottom of the last one.\n        let firstNode;\n        let lastNode;\n        // Find the first node by starting from the beginning and going forwards.\n        for (let i = 0; i < rangeLen; i++) {\n            const view = this._viewContainerRef.get(i + renderedStartIndex);\n            if (view && view.rootNodes.length) {\n                firstNode = lastNode = view.rootNodes[0];\n                break;\n            }\n        }\n        // Find the last node by starting from the end and going backwards.\n        for (let i = rangeLen - 1; i > -1; i--) {\n            const view = this._viewContainerRef.get(i + renderedStartIndex);\n            if (view && view.rootNodes.length) {\n                lastNode = view.rootNodes[view.rootNodes.length - 1];\n                break;\n            }\n        }\n        return firstNode && lastNode\n            ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)\n            : 0;\n    }\n    ngDoCheck() {\n        if (this._differ && this._needsUpdate) {\n            // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n            // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n            // changing (need to do this diff).\n            const changes = this._differ.diff(this._renderedItems);\n            if (!changes) {\n                this._updateContext();\n            }\n            else {\n                this._applyChanges(changes);\n            }\n            this._needsUpdate = false;\n        }\n    }\n    ngOnDestroy() {\n        this._viewport.detach();\n        this._dataSourceChanges.next(undefined);\n        this._dataSourceChanges.complete();\n        this.viewChange.complete();\n        this._destroyed.next();\n        this._destroyed.complete();\n        this._viewRepeater.detach();\n    }\n    /** React to scroll state changes in the viewport. */\n    _onRenderedDataChange() {\n        if (!this._renderedRange) {\n            return;\n        }\n        this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n        if (!this._differ) {\n            // Use a wrapper function for the `trackBy` so any new values are\n            // picked up automatically without having to recreate the differ.\n            this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n                return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n            });\n        }\n        this._needsUpdate = true;\n    }\n    /** Swap out one `DataSource` for another. */\n    _changeDataSource(oldDs, newDs) {\n        if (oldDs) {\n            oldDs.disconnect(this);\n        }\n        this._needsUpdate = true;\n        return newDs ? newDs.connect(this) : of();\n    }\n    /** Update the `CdkVirtualForOfContext` for all views. */\n    _updateContext() {\n        const count = this._data.length;\n        let i = this._viewContainerRef.length;\n        while (i--) {\n            const view = this._viewContainerRef.get(i);\n            view.context.index = this._renderedRange.start + i;\n            view.context.count = count;\n            this._updateComputedContextProperties(view.context);\n            view.detectChanges();\n        }\n    }\n    /** Apply changes to the DOM. */\n    _applyChanges(changes) {\n        this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n        // Update $implicit for any items that had an identity change.\n        changes.forEachIdentityChange((record) => {\n            const view = this._viewContainerRef.get(record.currentIndex);\n            view.context.$implicit = record.item;\n        });\n        // Update the context variables on all items.\n        const count = this._data.length;\n        let i = this._viewContainerRef.length;\n        while (i--) {\n            const view = this._viewContainerRef.get(i);\n            view.context.index = this._renderedRange.start + i;\n            view.context.count = count;\n            this._updateComputedContextProperties(view.context);\n        }\n    }\n    /** Update the computed properties on the `CdkVirtualForOfContext`. */\n    _updateComputedContextProperties(context) {\n        context.first = context.index === 0;\n        context.last = context.index === context.count - 1;\n        context.even = context.index % 2 === 0;\n        context.odd = !context.even;\n    }\n    _getEmbeddedViewArgs(record, index) {\n        // Note that it's important that we insert the item directly at the proper index,\n        // rather than inserting it and the moving it in place, because if there's a directive\n        // on the same node that injects the `ViewContainerRef`, Angular will insert another\n        // comment node which can throw off the move when it's being repeated for all items.\n        return {\n            templateRef: this._template,\n            context: {\n                $implicit: record.item,\n                // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n                // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n                cdkVirtualForOf: this._cdkVirtualForOf,\n                index: -1,\n                count: -1,\n                first: false,\n                last: false,\n                odd: false,\n                even: false,\n            },\n            index,\n        };\n    }\n}\nCdkVirtualForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: _VIEW_REPEATER_STRATEGY }, { token: CdkVirtualScrollViewport, skipSelf: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkVirtualForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualForOf, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkVirtualFor][cdkVirtualForOf]',\n                    providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: i2$1._RecycleViewRepeaterStrategy, decorators: [{\n                    type: Inject,\n                    args: [_VIEW_REPEATER_STRATEGY]\n                }] }, { type: CdkVirtualScrollViewport, decorators: [{\n                    type: SkipSelf\n                }] }, { type: i0.NgZone }]; }, propDecorators: { cdkVirtualForOf: [{\n                type: Input\n            }], cdkVirtualForTrackBy: [{\n                type: Input\n            }], cdkVirtualForTemplate: [{\n                type: Input\n            }], cdkVirtualForTemplateCacheSize: [{\n                type: Input\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 */\nclass CdkScrollableModule {\n}\nCdkScrollableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkScrollableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule, declarations: [CdkScrollable], exports: [CdkScrollable] });\nCdkScrollableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    exports: [CdkScrollable],\n                    declarations: [CdkScrollable],\n                }]\n        }] });\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n}\nScrollingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nScrollingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport], imports: [BidiModule, PlatformModule, CdkScrollableModule], exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll,\n        CdkVirtualForOf,\n        CdkVirtualScrollViewport] });\nScrollingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, imports: [[BidiModule, PlatformModule, CdkScrollableModule], BidiModule, CdkScrollableModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [BidiModule, PlatformModule, CdkScrollableModule],\n                    exports: [\n                        BidiModule,\n                        CdkScrollableModule,\n                        CdkFixedSizeVirtualScroll,\n                        CdkVirtualForOf,\n                        CdkVirtualScrollViewport,\n                    ],\n                    declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport],\n                }]\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/**\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/9fb2c7badc47d0b343f733008a56e657.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/9fb2c7badc47d0b343f733008a56e657.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/9fb2c7badc47d0b343f733008a56e657.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { Directive, Input, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport * as i1 from 'primeng/api';\n\nclass Tooltip {\n  constructor(el, zone, config) {\n    this.el = el;\n    this.zone = zone;\n    this.config = config;\n    this.escape = true;\n    this._tooltipOptions = {\n      tooltipPosition: 'right',\n      tooltipEvent: 'hover',\n      appendTo: 'body',\n      tooltipZIndex: 'auto',\n      escape: false,\n      positionTop: 0,\n      positionLeft: 0\n    };\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  set disabled(val) {\n    this._disabled = val;\n    this.deactivate();\n  }\n\n  ngAfterViewInit() {\n    this.zone.runOutsideAngular(() => {\n      if (this.getOption('tooltipEvent') === 'hover') {\n        this.mouseEnterListener = this.onMouseEnter.bind(this);\n        this.mouseLeaveListener = this.onMouseLeave.bind(this);\n        this.clickListener = this.onClick.bind(this);\n        this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n        this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n        this.el.nativeElement.addEventListener('click', this.clickListener);\n      } else if (this.getOption('tooltipEvent') === 'focus') {\n        this.focusListener = this.onFocus.bind(this);\n        this.blurListener = this.onBlur.bind(this);\n        this.el.nativeElement.addEventListener('focus', this.focusListener);\n        this.el.nativeElement.addEventListener('blur', this.blurListener);\n      }\n    });\n  }\n\n  ngOnChanges(simpleChange) {\n    if (simpleChange.tooltipPosition) {\n      this.setOption({\n        tooltipPosition: simpleChange.tooltipPosition.currentValue\n      });\n    }\n\n    if (simpleChange.tooltipEvent) {\n      this.setOption({\n        tooltipEvent: simpleChange.tooltipEvent.currentValue\n      });\n    }\n\n    if (simpleChange.appendTo) {\n      this.setOption({\n        appendTo: simpleChange.appendTo.currentValue\n      });\n    }\n\n    if (simpleChange.positionStyle) {\n      this.setOption({\n        positionStyle: simpleChange.positionStyle.currentValue\n      });\n    }\n\n    if (simpleChange.tooltipStyleClass) {\n      this.setOption({\n        tooltipStyleClass: simpleChange.tooltipStyleClass.currentValue\n      });\n    }\n\n    if (simpleChange.tooltipZIndex) {\n      this.setOption({\n        tooltipZIndex: simpleChange.tooltipZIndex.currentValue\n      });\n    }\n\n    if (simpleChange.escape) {\n      this.setOption({\n        escape: simpleChange.escape.currentValue\n      });\n    }\n\n    if (simpleChange.showDelay) {\n      this.setOption({\n        showDelay: simpleChange.showDelay.currentValue\n      });\n    }\n\n    if (simpleChange.hideDelay) {\n      this.setOption({\n        hideDelay: simpleChange.hideDelay.currentValue\n      });\n    }\n\n    if (simpleChange.life) {\n      this.setOption({\n        life: simpleChange.life.currentValue\n      });\n    }\n\n    if (simpleChange.positionTop) {\n      this.setOption({\n        positionTop: simpleChange.positionTop.currentValue\n      });\n    }\n\n    if (simpleChange.positionLeft) {\n      this.setOption({\n        positionLeft: simpleChange.positionLeft.currentValue\n      });\n    }\n\n    if (simpleChange.disabled) {\n      this.setOption({\n        disabled: simpleChange.disabled.currentValue\n      });\n    }\n\n    if (simpleChange.text) {\n      this.setOption({\n        tooltipLabel: simpleChange.text.currentValue\n      });\n\n      if (this.active) {\n        if (simpleChange.text.currentValue) {\n          if (this.container && this.container.offsetParent) {\n            this.updateText();\n            this.align();\n          } else {\n            this.show();\n          }\n        } else {\n          this.hide();\n        }\n      }\n    }\n\n    if (simpleChange.tooltipOptions) {\n      this._tooltipOptions = { ...this._tooltipOptions,\n        ...simpleChange.tooltipOptions.currentValue\n      };\n      this.deactivate();\n\n      if (this.active) {\n        if (this.getOption('tooltipLabel')) {\n          if (this.container && this.container.offsetParent) {\n            this.updateText();\n            this.align();\n          } else {\n            this.show();\n          }\n        } else {\n          this.hide();\n        }\n      }\n    }\n  }\n\n  onMouseEnter(e) {\n    if (!this.container && !this.showTimeout) {\n      this.activate();\n    }\n  }\n\n  onMouseLeave(e) {\n    this.deactivate();\n  }\n\n  onFocus(e) {\n    this.activate();\n  }\n\n  onBlur(e) {\n    this.deactivate();\n  }\n\n  onClick(e) {\n    this.deactivate();\n  }\n\n  activate() {\n    this.active = true;\n    this.clearHideTimeout();\n    if (this.getOption('showDelay')) this.showTimeout = setTimeout(() => {\n      this.show();\n    }, this.getOption('showDelay'));else this.show();\n\n    if (this.getOption('life')) {\n      let duration = this.getOption('showDelay') ? this.getOption('life') + this.getOption('showDelay') : this.getOption('life');\n      this.hideTimeout = setTimeout(() => {\n        this.hide();\n      }, duration);\n    }\n  }\n\n  deactivate() {\n    this.active = false;\n    this.clearShowTimeout();\n\n    if (this.getOption('hideDelay')) {\n      this.clearHideTimeout(); //life timeout\n\n      this.hideTimeout = setTimeout(() => {\n        this.hide();\n      }, this.getOption('hideDelay'));\n    } else {\n      this.hide();\n    }\n  }\n\n  create() {\n    if (this.container) {\n      this.clearHideTimeout();\n      this.remove();\n    }\n\n    this.container = document.createElement('div');\n    let tooltipArrow = document.createElement('div');\n    tooltipArrow.className = 'p-tooltip-arrow';\n    this.container.appendChild(tooltipArrow);\n    this.tooltipText = document.createElement('div');\n    this.tooltipText.className = 'p-tooltip-text';\n    this.updateText();\n\n    if (this.getOption('positionStyle')) {\n      this.container.style.position = this.getOption('positionStyle');\n    }\n\n    this.container.appendChild(this.tooltipText);\n    if (this.getOption('appendTo') === 'body') document.body.appendChild(this.container);else if (this.getOption('appendTo') === 'target') DomHandler.appendChild(this.container, this.el.nativeElement);else DomHandler.appendChild(this.container, this.getOption('appendTo'));\n    this.container.style.display = 'inline-block';\n  }\n\n  show() {\n    if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {\n      return;\n    }\n\n    this.create();\n    this.align();\n    DomHandler.fadeIn(this.container, 250);\n    if (this.getOption('tooltipZIndex') === 'auto') ZIndexUtils.set('tooltip', this.container, this.config.zIndex.tooltip);else this.container.style.zIndex = this.getOption('tooltipZIndex');\n    this.bindDocumentResizeListener();\n    this.bindScrollListener();\n  }\n\n  hide() {\n    if (this.getOption('tooltipZIndex') === 'auto') {\n      ZIndexUtils.clear(this.container);\n    }\n\n    this.remove();\n  }\n\n  updateText() {\n    if (this.getOption('escape')) {\n      this.tooltipText.innerHTML = '';\n      this.tooltipText.appendChild(document.createTextNode(this.getOption('tooltipLabel')));\n    } else {\n      this.tooltipText.innerHTML = this.getOption('tooltipLabel');\n    }\n  }\n\n  align() {\n    let position = this.getOption('tooltipPosition');\n\n    switch (position) {\n      case 'top':\n        this.alignTop();\n\n        if (this.isOutOfBounds()) {\n          this.alignBottom();\n\n          if (this.isOutOfBounds()) {\n            this.alignRight();\n\n            if (this.isOutOfBounds()) {\n              this.alignLeft();\n            }\n          }\n        }\n\n        break;\n\n      case 'bottom':\n        this.alignBottom();\n\n        if (this.isOutOfBounds()) {\n          this.alignTop();\n\n          if (this.isOutOfBounds()) {\n            this.alignRight();\n\n            if (this.isOutOfBounds()) {\n              this.alignLeft();\n            }\n          }\n        }\n\n        break;\n\n      case 'left':\n        this.alignLeft();\n\n        if (this.isOutOfBounds()) {\n          this.alignRight();\n\n          if (this.isOutOfBounds()) {\n            this.alignTop();\n\n            if (this.isOutOfBounds()) {\n              this.alignBottom();\n            }\n          }\n        }\n\n        break;\n\n      case 'right':\n        this.alignRight();\n\n        if (this.isOutOfBounds()) {\n          this.alignLeft();\n\n          if (this.isOutOfBounds()) {\n            this.alignTop();\n\n            if (this.isOutOfBounds()) {\n              this.alignBottom();\n            }\n          }\n        }\n\n        break;\n    }\n  }\n\n  getHostOffset() {\n    if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {\n      let offset = this.el.nativeElement.getBoundingClientRect();\n      let targetLeft = offset.left + DomHandler.getWindowScrollLeft();\n      let targetTop = offset.top + DomHandler.getWindowScrollTop();\n      return {\n        left: targetLeft,\n        top: targetTop\n      };\n    } else {\n      return {\n        left: 0,\n        top: 0\n      };\n    }\n  }\n\n  alignRight() {\n    this.preAlign('right');\n    let hostOffset = this.getHostOffset();\n    let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);\n    let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n    this.container.style.left = left + this.getOption('positionLeft') + 'px';\n    this.container.style.top = top + this.getOption('positionTop') + 'px';\n  }\n\n  alignLeft() {\n    this.preAlign('left');\n    let hostOffset = this.getHostOffset();\n    let left = hostOffset.left - DomHandler.getOuterWidth(this.container);\n    let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n    this.container.style.left = left + this.getOption('positionLeft') + 'px';\n    this.container.style.top = top + this.getOption('positionTop') + 'px';\n  }\n\n  alignTop() {\n    this.preAlign('top');\n    let hostOffset = this.getHostOffset();\n    let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n    let top = hostOffset.top - DomHandler.getOuterHeight(this.container);\n    this.container.style.left = left + this.getOption('positionLeft') + 'px';\n    this.container.style.top = top + this.getOption('positionTop') + 'px';\n  }\n\n  alignBottom() {\n    this.preAlign('bottom');\n    let hostOffset = this.getHostOffset();\n    let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n    let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);\n    this.container.style.left = left + this.getOption('positionLeft') + 'px';\n    this.container.style.top = top + this.getOption('positionTop') + 'px';\n  }\n\n  setOption(option) {\n    this._tooltipOptions = { ...this._tooltipOptions,\n      ...option\n    };\n  }\n\n  getOption(option) {\n    return this._tooltipOptions[option];\n  }\n\n  preAlign(position) {\n    this.container.style.left = -999 + 'px';\n    this.container.style.top = -999 + 'px';\n    let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;\n    this.container.className = this.getOption('tooltipStyleClass') ? defaultClassName + ' ' + this.getOption('tooltipStyleClass') : defaultClassName;\n  }\n\n  isOutOfBounds() {\n    let offset = this.container.getBoundingClientRect();\n    let targetTop = offset.top;\n    let targetLeft = offset.left;\n    let width = DomHandler.getOuterWidth(this.container);\n    let height = DomHandler.getOuterHeight(this.container);\n    let viewport = DomHandler.getViewport();\n    return targetLeft + width > viewport.width || targetLeft < 0 || targetTop < 0 || targetTop + height > viewport.height;\n  }\n\n  onWindowResize(e) {\n    this.hide();\n  }\n\n  bindDocumentResizeListener() {\n    this.zone.runOutsideAngular(() => {\n      this.resizeListener = this.onWindowResize.bind(this);\n      window.addEventListener('resize', this.resizeListener);\n    });\n  }\n\n  unbindDocumentResizeListener() {\n    if (this.resizeListener) {\n      window.removeEventListener('resize', this.resizeListener);\n      this.resizeListener = null;\n    }\n  }\n\n  bindScrollListener() {\n    if (!this.scrollHandler) {\n      this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n        if (this.container) {\n          this.hide();\n        }\n      });\n    }\n\n    this.scrollHandler.bindScrollListener();\n  }\n\n  unbindScrollListener() {\n    if (this.scrollHandler) {\n      this.scrollHandler.unbindScrollListener();\n    }\n  }\n\n  unbindEvents() {\n    if (this.getOption('tooltipEvent') === 'hover') {\n      this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);\n      this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);\n      this.el.nativeElement.removeEventListener('click', this.clickListener);\n    } else if (this.getOption('tooltipEvent') === 'focus') {\n      this.el.nativeElement.removeEventListener('focus', this.focusListener);\n      this.el.nativeElement.removeEventListener('blur', this.blurListener);\n    }\n\n    this.unbindDocumentResizeListener();\n  }\n\n  remove() {\n    if (this.container && this.container.parentElement) {\n      if (this.getOption('appendTo') === 'body') document.body.removeChild(this.container);else if (this.getOption('appendTo') === 'target') this.el.nativeElement.removeChild(this.container);else DomHandler.removeChild(this.container, this.getOption('appendTo'));\n    }\n\n    this.unbindDocumentResizeListener();\n    this.unbindScrollListener();\n    this.clearTimeouts();\n    this.container = null;\n    this.scrollHandler = null;\n  }\n\n  clearShowTimeout() {\n    if (this.showTimeout) {\n      clearTimeout(this.showTimeout);\n      this.showTimeout = null;\n    }\n  }\n\n  clearHideTimeout() {\n    if (this.hideTimeout) {\n      clearTimeout(this.hideTimeout);\n      this.hideTimeout = null;\n    }\n  }\n\n  clearTimeouts() {\n    this.clearShowTimeout();\n    this.clearHideTimeout();\n  }\n\n  ngOnDestroy() {\n    this.unbindEvents();\n\n    if (this.container) {\n      ZIndexUtils.clear(this.container);\n    }\n\n    this.remove();\n\n    if (this.scrollHandler) {\n      this.scrollHandler.destroy();\n      this.scrollHandler = null;\n    }\n  }\n\n}\n\nTooltip.ɵfac = function Tooltip_Factory(t) {\n  return new (t || Tooltip)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.PrimeNGConfig));\n};\n\nTooltip.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: Tooltip,\n  selectors: [[\"\", \"pTooltip\", \"\"]],\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    tooltipPosition: \"tooltipPosition\",\n    tooltipEvent: \"tooltipEvent\",\n    appendTo: \"appendTo\",\n    positionStyle: \"positionStyle\",\n    tooltipStyleClass: \"tooltipStyleClass\",\n    tooltipZIndex: \"tooltipZIndex\",\n    escape: \"escape\",\n    showDelay: \"showDelay\",\n    hideDelay: \"hideDelay\",\n    life: \"life\",\n    positionTop: \"positionTop\",\n    positionLeft: \"positionLeft\",\n    text: [\"pTooltip\", \"text\"],\n    disabled: [\"tooltipDisabled\", \"disabled\"],\n    tooltipOptions: \"tooltipOptions\"\n  },\n  features: [i0.ɵɵNgOnChangesFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Tooltip, [{\n    type: Directive,\n    args: [{\n      selector: '[pTooltip]',\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.NgZone\n    }, {\n      type: i1.PrimeNGConfig\n    }];\n  }, {\n    tooltipPosition: [{\n      type: Input\n    }],\n    tooltipEvent: [{\n      type: Input\n    }],\n    appendTo: [{\n      type: Input\n    }],\n    positionStyle: [{\n      type: Input\n    }],\n    tooltipStyleClass: [{\n      type: Input\n    }],\n    tooltipZIndex: [{\n      type: Input\n    }],\n    escape: [{\n      type: Input\n    }],\n    showDelay: [{\n      type: Input\n    }],\n    hideDelay: [{\n      type: Input\n    }],\n    life: [{\n      type: Input\n    }],\n    positionTop: [{\n      type: Input\n    }],\n    positionLeft: [{\n      type: Input\n    }],\n    text: [{\n      type: Input,\n      args: ['pTooltip']\n    }],\n    disabled: [{\n      type: Input,\n      args: [\"tooltipDisabled\"]\n    }],\n    tooltipOptions: [{\n      type: Input\n    }]\n  });\n})();\n\nclass TooltipModule {}\n\nTooltipModule.ɵfac = function TooltipModule_Factory(t) {\n  return new (t || TooltipModule)();\n};\n\nTooltipModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: TooltipModule\n});\nTooltipModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TooltipModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule],\n      exports: [Tooltip],\n      declarations: [Tooltip]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Tooltip, TooltipModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-tooltip.mjs"],"names":["i0","Directive","Input","NgModule","CommonModule","DomHandler","ConnectedOverlayScrollHandler","ZIndexUtils","i1","Tooltip","constructor","el","zone","config","escape","_tooltipOptions","tooltipPosition","tooltipEvent","appendTo","tooltipZIndex","positionTop","positionLeft","disabled","_disabled","val","deactivate","ngAfterViewInit","runOutsideAngular","getOption","mouseEnterListener","onMouseEnter","bind","mouseLeaveListener","onMouseLeave","clickListener","onClick","nativeElement","addEventListener","focusListener","onFocus","blurListener","onBlur","ngOnChanges","simpleChange","setOption","currentValue","positionStyle","tooltipStyleClass","showDelay","hideDelay","life","text","tooltipLabel","active","container","offsetParent","updateText","align","show","hide","tooltipOptions","e","showTimeout","activate","clearHideTimeout","setTimeout","duration","hideTimeout","clearShowTimeout","create","remove","document","createElement","tooltipArrow","className","appendChild","tooltipText","style","position","body","display","fadeIn","set","zIndex","tooltip","bindDocumentResizeListener","bindScrollListener","clear","innerHTML","createTextNode","alignTop","isOutOfBounds","alignBottom","alignRight","alignLeft","getHostOffset","offset","getBoundingClientRect","targetLeft","left","getWindowScrollLeft","targetTop","top","getWindowScrollTop","preAlign","hostOffset","getOuterWidth","getOuterHeight","option","defaultClassName","width","height","viewport","getViewport","onWindowResize","resizeListener","window","unbindDocumentResizeListener","removeEventListener","scrollHandler","unbindScrollListener","unbindEvents","parentElement","removeChild","clearTimeouts","clearTimeout","ngOnDestroy","destroy","ɵfac","ElementRef","NgZone","PrimeNGConfig","ɵdir","type","args","selector","host","TooltipModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { Directive, Input, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { ZIndexUtils } from 'primeng/utils';\nimport * as i1 from 'primeng/api';\n\nclass Tooltip {\n    constructor(el, zone, config) {\n        this.el = el;\n        this.zone = zone;\n        this.config = config;\n        this.escape = true;\n        this._tooltipOptions = {\n            tooltipPosition: 'right',\n            tooltipEvent: 'hover',\n            appendTo: 'body',\n            tooltipZIndex: 'auto',\n            escape: false,\n            positionTop: 0,\n            positionLeft: 0\n        };\n    }\n    get disabled() {\n        return this._disabled;\n    }\n    set disabled(val) {\n        this._disabled = val;\n        this.deactivate();\n    }\n    ngAfterViewInit() {\n        this.zone.runOutsideAngular(() => {\n            if (this.getOption('tooltipEvent') === 'hover') {\n                this.mouseEnterListener = this.onMouseEnter.bind(this);\n                this.mouseLeaveListener = this.onMouseLeave.bind(this);\n                this.clickListener = this.onClick.bind(this);\n                this.el.nativeElement.addEventListener('mouseenter', this.mouseEnterListener);\n                this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListener);\n                this.el.nativeElement.addEventListener('click', this.clickListener);\n            }\n            else if (this.getOption('tooltipEvent') === 'focus') {\n                this.focusListener = this.onFocus.bind(this);\n                this.blurListener = this.onBlur.bind(this);\n                this.el.nativeElement.addEventListener('focus', this.focusListener);\n                this.el.nativeElement.addEventListener('blur', this.blurListener);\n            }\n        });\n    }\n    ngOnChanges(simpleChange) {\n        if (simpleChange.tooltipPosition) {\n            this.setOption({ tooltipPosition: simpleChange.tooltipPosition.currentValue });\n        }\n        if (simpleChange.tooltipEvent) {\n            this.setOption({ tooltipEvent: simpleChange.tooltipEvent.currentValue });\n        }\n        if (simpleChange.appendTo) {\n            this.setOption({ appendTo: simpleChange.appendTo.currentValue });\n        }\n        if (simpleChange.positionStyle) {\n            this.setOption({ positionStyle: simpleChange.positionStyle.currentValue });\n        }\n        if (simpleChange.tooltipStyleClass) {\n            this.setOption({ tooltipStyleClass: simpleChange.tooltipStyleClass.currentValue });\n        }\n        if (simpleChange.tooltipZIndex) {\n            this.setOption({ tooltipZIndex: simpleChange.tooltipZIndex.currentValue });\n        }\n        if (simpleChange.escape) {\n            this.setOption({ escape: simpleChange.escape.currentValue });\n        }\n        if (simpleChange.showDelay) {\n            this.setOption({ showDelay: simpleChange.showDelay.currentValue });\n        }\n        if (simpleChange.hideDelay) {\n            this.setOption({ hideDelay: simpleChange.hideDelay.currentValue });\n        }\n        if (simpleChange.life) {\n            this.setOption({ life: simpleChange.life.currentValue });\n        }\n        if (simpleChange.positionTop) {\n            this.setOption({ positionTop: simpleChange.positionTop.currentValue });\n        }\n        if (simpleChange.positionLeft) {\n            this.setOption({ positionLeft: simpleChange.positionLeft.currentValue });\n        }\n        if (simpleChange.disabled) {\n            this.setOption({ disabled: simpleChange.disabled.currentValue });\n        }\n        if (simpleChange.text) {\n            this.setOption({ tooltipLabel: simpleChange.text.currentValue });\n            if (this.active) {\n                if (simpleChange.text.currentValue) {\n                    if (this.container && this.container.offsetParent) {\n                        this.updateText();\n                        this.align();\n                    }\n                    else {\n                        this.show();\n                    }\n                }\n                else {\n                    this.hide();\n                }\n            }\n        }\n        if (simpleChange.tooltipOptions) {\n            this._tooltipOptions = { ...this._tooltipOptions, ...simpleChange.tooltipOptions.currentValue };\n            this.deactivate();\n            if (this.active) {\n                if (this.getOption('tooltipLabel')) {\n                    if (this.container && this.container.offsetParent) {\n                        this.updateText();\n                        this.align();\n                    }\n                    else {\n                        this.show();\n                    }\n                }\n                else {\n                    this.hide();\n                }\n            }\n        }\n    }\n    onMouseEnter(e) {\n        if (!this.container && !this.showTimeout) {\n            this.activate();\n        }\n    }\n    onMouseLeave(e) {\n        this.deactivate();\n    }\n    onFocus(e) {\n        this.activate();\n    }\n    onBlur(e) {\n        this.deactivate();\n    }\n    onClick(e) {\n        this.deactivate();\n    }\n    activate() {\n        this.active = true;\n        this.clearHideTimeout();\n        if (this.getOption('showDelay'))\n            this.showTimeout = setTimeout(() => { this.show(); }, this.getOption('showDelay'));\n        else\n            this.show();\n        if (this.getOption('life')) {\n            let duration = this.getOption('showDelay') ? this.getOption('life') + this.getOption('showDelay') : this.getOption('life');\n            this.hideTimeout = setTimeout(() => { this.hide(); }, duration);\n        }\n    }\n    deactivate() {\n        this.active = false;\n        this.clearShowTimeout();\n        if (this.getOption('hideDelay')) {\n            this.clearHideTimeout(); //life timeout\n            this.hideTimeout = setTimeout(() => { this.hide(); }, this.getOption('hideDelay'));\n        }\n        else {\n            this.hide();\n        }\n    }\n    create() {\n        if (this.container) {\n            this.clearHideTimeout();\n            this.remove();\n        }\n        this.container = document.createElement('div');\n        let tooltipArrow = document.createElement('div');\n        tooltipArrow.className = 'p-tooltip-arrow';\n        this.container.appendChild(tooltipArrow);\n        this.tooltipText = document.createElement('div');\n        this.tooltipText.className = 'p-tooltip-text';\n        this.updateText();\n        if (this.getOption('positionStyle')) {\n            this.container.style.position = this.getOption('positionStyle');\n        }\n        this.container.appendChild(this.tooltipText);\n        if (this.getOption('appendTo') === 'body')\n            document.body.appendChild(this.container);\n        else if (this.getOption('appendTo') === 'target')\n            DomHandler.appendChild(this.container, this.el.nativeElement);\n        else\n            DomHandler.appendChild(this.container, this.getOption('appendTo'));\n        this.container.style.display = 'inline-block';\n    }\n    show() {\n        if (!this.getOption('tooltipLabel') || this.getOption('disabled')) {\n            return;\n        }\n        this.create();\n        this.align();\n        DomHandler.fadeIn(this.container, 250);\n        if (this.getOption('tooltipZIndex') === 'auto')\n            ZIndexUtils.set('tooltip', this.container, this.config.zIndex.tooltip);\n        else\n            this.container.style.zIndex = this.getOption('tooltipZIndex');\n        this.bindDocumentResizeListener();\n        this.bindScrollListener();\n    }\n    hide() {\n        if (this.getOption('tooltipZIndex') === 'auto') {\n            ZIndexUtils.clear(this.container);\n        }\n        this.remove();\n    }\n    updateText() {\n        if (this.getOption('escape')) {\n            this.tooltipText.innerHTML = '';\n            this.tooltipText.appendChild(document.createTextNode(this.getOption('tooltipLabel')));\n        }\n        else {\n            this.tooltipText.innerHTML = this.getOption('tooltipLabel');\n        }\n    }\n    align() {\n        let position = this.getOption('tooltipPosition');\n        switch (position) {\n            case 'top':\n                this.alignTop();\n                if (this.isOutOfBounds()) {\n                    this.alignBottom();\n                    if (this.isOutOfBounds()) {\n                        this.alignRight();\n                        if (this.isOutOfBounds()) {\n                            this.alignLeft();\n                        }\n                    }\n                }\n                break;\n            case 'bottom':\n                this.alignBottom();\n                if (this.isOutOfBounds()) {\n                    this.alignTop();\n                    if (this.isOutOfBounds()) {\n                        this.alignRight();\n                        if (this.isOutOfBounds()) {\n                            this.alignLeft();\n                        }\n                    }\n                }\n                break;\n            case 'left':\n                this.alignLeft();\n                if (this.isOutOfBounds()) {\n                    this.alignRight();\n                    if (this.isOutOfBounds()) {\n                        this.alignTop();\n                        if (this.isOutOfBounds()) {\n                            this.alignBottom();\n                        }\n                    }\n                }\n                break;\n            case 'right':\n                this.alignRight();\n                if (this.isOutOfBounds()) {\n                    this.alignLeft();\n                    if (this.isOutOfBounds()) {\n                        this.alignTop();\n                        if (this.isOutOfBounds()) {\n                            this.alignBottom();\n                        }\n                    }\n                }\n                break;\n        }\n    }\n    getHostOffset() {\n        if (this.getOption('appendTo') === 'body' || this.getOption('appendTo') === 'target') {\n            let offset = this.el.nativeElement.getBoundingClientRect();\n            let targetLeft = offset.left + DomHandler.getWindowScrollLeft();\n            let targetTop = offset.top + DomHandler.getWindowScrollTop();\n            return { left: targetLeft, top: targetTop };\n        }\n        else {\n            return { left: 0, top: 0 };\n        }\n    }\n    alignRight() {\n        this.preAlign('right');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + DomHandler.getOuterWidth(this.el.nativeElement);\n        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n    alignLeft() {\n        this.preAlign('left');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left - DomHandler.getOuterWidth(this.container);\n        let top = hostOffset.top + (DomHandler.getOuterHeight(this.el.nativeElement) - DomHandler.getOuterHeight(this.container)) / 2;\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n    alignTop() {\n        this.preAlign('top');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n        let top = hostOffset.top - DomHandler.getOuterHeight(this.container);\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n    alignBottom() {\n        this.preAlign('bottom');\n        let hostOffset = this.getHostOffset();\n        let left = hostOffset.left + (DomHandler.getOuterWidth(this.el.nativeElement) - DomHandler.getOuterWidth(this.container)) / 2;\n        let top = hostOffset.top + DomHandler.getOuterHeight(this.el.nativeElement);\n        this.container.style.left = left + this.getOption('positionLeft') + 'px';\n        this.container.style.top = top + this.getOption('positionTop') + 'px';\n    }\n    setOption(option) {\n        this._tooltipOptions = { ...this._tooltipOptions, ...option };\n    }\n    getOption(option) {\n        return this._tooltipOptions[option];\n    }\n    preAlign(position) {\n        this.container.style.left = -999 + 'px';\n        this.container.style.top = -999 + 'px';\n        let defaultClassName = 'p-tooltip p-component p-tooltip-' + position;\n        this.container.className = this.getOption('tooltipStyleClass') ? defaultClassName + ' ' + this.getOption('tooltipStyleClass') : defaultClassName;\n    }\n    isOutOfBounds() {\n        let offset = this.container.getBoundingClientRect();\n        let targetTop = offset.top;\n        let targetLeft = offset.left;\n        let width = DomHandler.getOuterWidth(this.container);\n        let height = DomHandler.getOuterHeight(this.container);\n        let viewport = DomHandler.getViewport();\n        return (targetLeft + width > viewport.width) || (targetLeft < 0) || (targetTop < 0) || (targetTop + height > viewport.height);\n    }\n    onWindowResize(e) {\n        this.hide();\n    }\n    bindDocumentResizeListener() {\n        this.zone.runOutsideAngular(() => {\n            this.resizeListener = this.onWindowResize.bind(this);\n            window.addEventListener('resize', this.resizeListener);\n        });\n    }\n    unbindDocumentResizeListener() {\n        if (this.resizeListener) {\n            window.removeEventListener('resize', this.resizeListener);\n            this.resizeListener = null;\n        }\n    }\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.el.nativeElement, () => {\n                if (this.container) {\n                    this.hide();\n                }\n            });\n        }\n        this.scrollHandler.bindScrollListener();\n    }\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n    unbindEvents() {\n        if (this.getOption('tooltipEvent') === 'hover') {\n            this.el.nativeElement.removeEventListener('mouseenter', this.mouseEnterListener);\n            this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListener);\n            this.el.nativeElement.removeEventListener('click', this.clickListener);\n        }\n        else if (this.getOption('tooltipEvent') === 'focus') {\n            this.el.nativeElement.removeEventListener('focus', this.focusListener);\n            this.el.nativeElement.removeEventListener('blur', this.blurListener);\n        }\n        this.unbindDocumentResizeListener();\n    }\n    remove() {\n        if (this.container && this.container.parentElement) {\n            if (this.getOption('appendTo') === 'body')\n                document.body.removeChild(this.container);\n            else if (this.getOption('appendTo') === 'target')\n                this.el.nativeElement.removeChild(this.container);\n            else\n                DomHandler.removeChild(this.container, this.getOption('appendTo'));\n        }\n        this.unbindDocumentResizeListener();\n        this.unbindScrollListener();\n        this.clearTimeouts();\n        this.container = null;\n        this.scrollHandler = null;\n    }\n    clearShowTimeout() {\n        if (this.showTimeout) {\n            clearTimeout(this.showTimeout);\n            this.showTimeout = null;\n        }\n    }\n    clearHideTimeout() {\n        if (this.hideTimeout) {\n            clearTimeout(this.hideTimeout);\n            this.hideTimeout = null;\n        }\n    }\n    clearTimeouts() {\n        this.clearShowTimeout();\n        this.clearHideTimeout();\n    }\n    ngOnDestroy() {\n        this.unbindEvents();\n        if (this.container) {\n            ZIndexUtils.clear(this.container);\n        }\n        this.remove();\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n    }\n}\nTooltip.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Tooltip, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Directive });\nTooltip.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Tooltip, selector: \"[pTooltip]\", inputs: { tooltipPosition: \"tooltipPosition\", tooltipEvent: \"tooltipEvent\", appendTo: \"appendTo\", positionStyle: \"positionStyle\", tooltipStyleClass: \"tooltipStyleClass\", tooltipZIndex: \"tooltipZIndex\", escape: \"escape\", showDelay: \"showDelay\", hideDelay: \"hideDelay\", life: \"life\", positionTop: \"positionTop\", positionLeft: \"positionLeft\", text: [\"pTooltip\", \"text\"], disabled: [\"tooltipDisabled\", \"disabled\"], tooltipOptions: \"tooltipOptions\" }, host: { classAttribute: \"p-element\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Tooltip, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[pTooltip]',\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }]; }, propDecorators: { tooltipPosition: [{\n                type: Input\n            }], tooltipEvent: [{\n                type: Input\n            }], appendTo: [{\n                type: Input\n            }], positionStyle: [{\n                type: Input\n            }], tooltipStyleClass: [{\n                type: Input\n            }], tooltipZIndex: [{\n                type: Input\n            }], escape: [{\n                type: Input\n            }], showDelay: [{\n                type: Input\n            }], hideDelay: [{\n                type: Input\n            }], life: [{\n                type: Input\n            }], positionTop: [{\n                type: Input\n            }], positionLeft: [{\n                type: Input\n            }], text: [{\n                type: Input,\n                args: ['pTooltip']\n            }], disabled: [{\n                type: Input,\n                args: [\"tooltipDisabled\"]\n            }], tooltipOptions: [{\n                type: Input\n            }] } });\nclass TooltipModule {\n}\nTooltipModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTooltipModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TooltipModule, declarations: [Tooltip], imports: [CommonModule], exports: [Tooltip] });\nTooltipModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TooltipModule, imports: [[CommonModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TooltipModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule],\n                    exports: [Tooltip],\n                    declarations: [Tooltip]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Tooltip, TooltipModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/b00f53da3a80c8b6accb48596eeb556e.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/b00f53da3a80c8b6accb48596eeb556e.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/b00f53da3a80c8b6accb48596eeb556e.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { ElementRef, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\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/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\n\nfunction throwNullPortalError() {\n  throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\n\n\nfunction throwPortalAlreadyAttachedError() {\n  throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\n\n\nfunction throwPortalOutletAlreadyDisposedError() {\n  throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\n\n\nfunction throwUnknownPortalTypeError() {\n  throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' + 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\n\n\nfunction throwNullPortalOutletError() {\n  throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\n\n\nfunction throwNoPortalAttachedError() {\n  throw Error('Attempting to detach a portal that is not attached to a host');\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/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\n\n\nclass Portal {\n  /** Attach this portal to a host. */\n  attach(host) {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (host == null) {\n        throwNullPortalOutletError();\n      }\n\n      if (host.hasAttached()) {\n        throwPortalAlreadyAttachedError();\n      }\n    }\n\n    this._attachedHost = host;\n    return host.attach(this);\n  }\n  /** Detach this portal from its host */\n\n\n  detach() {\n    let host = this._attachedHost;\n\n    if (host != null) {\n      this._attachedHost = null;\n      host.detach();\n    } else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      throwNoPortalAttachedError();\n    }\n  }\n  /** Whether this portal is attached to a host. */\n\n\n  get isAttached() {\n    return this._attachedHost != null;\n  }\n  /**\n   * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n   * the PortalOutlet when it is performing an `attach()` or `detach()`.\n   */\n\n\n  setAttachedHost(host) {\n    this._attachedHost = host;\n  }\n\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\n\n\nclass ComponentPortal extends Portal {\n  constructor(component, viewContainerRef, injector, componentFactoryResolver) {\n    super();\n    this.component = component;\n    this.viewContainerRef = viewContainerRef;\n    this.injector = injector;\n    this.componentFactoryResolver = componentFactoryResolver;\n  }\n\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\n\n\nclass TemplatePortal extends Portal {\n  constructor(template, viewContainerRef, context) {\n    super();\n    this.templateRef = template;\n    this.viewContainerRef = viewContainerRef;\n    this.context = context;\n  }\n\n  get origin() {\n    return this.templateRef.elementRef;\n  }\n  /**\n   * Attach the portal to the provided `PortalOutlet`.\n   * When a context is provided it will override the `context` property of the `TemplatePortal`\n   * instance.\n   */\n\n\n  attach(host, context = this.context) {\n    this.context = context;\n    return super.attach(host);\n  }\n\n  detach() {\n    this.context = undefined;\n    return super.detach();\n  }\n\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\n\n\nclass DomPortal extends Portal {\n  constructor(element) {\n    super();\n    this.element = element instanceof ElementRef ? element.nativeElement : element;\n  }\n\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\n\n\nclass BasePortalOutlet {\n  constructor() {\n    /** Whether this host has already been permanently disposed. */\n    this._isDisposed = false; // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n\n    this.attachDomPortal = null;\n  }\n  /** Whether this host has an attached portal. */\n\n\n  hasAttached() {\n    return !!this._attachedPortal;\n  }\n  /** Attaches a portal. */\n\n\n  attach(portal) {\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      if (!portal) {\n        throwNullPortalError();\n      }\n\n      if (this.hasAttached()) {\n        throwPortalAlreadyAttachedError();\n      }\n\n      if (this._isDisposed) {\n        throwPortalOutletAlreadyDisposedError();\n      }\n    }\n\n    if (portal instanceof ComponentPortal) {\n      this._attachedPortal = portal;\n      return this.attachComponentPortal(portal);\n    } else if (portal instanceof TemplatePortal) {\n      this._attachedPortal = portal;\n      return this.attachTemplatePortal(portal); // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n    } else if (this.attachDomPortal && portal instanceof DomPortal) {\n      this._attachedPortal = portal;\n      return this.attachDomPortal(portal);\n    }\n\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      throwUnknownPortalTypeError();\n    }\n  }\n  /** Detaches a previously attached portal. */\n\n\n  detach() {\n    if (this._attachedPortal) {\n      this._attachedPortal.setAttachedHost(null);\n\n      this._attachedPortal = null;\n    }\n\n    this._invokeDisposeFn();\n  }\n  /** Permanently dispose of this portal host. */\n\n\n  dispose() {\n    if (this.hasAttached()) {\n      this.detach();\n    }\n\n    this._invokeDisposeFn();\n\n    this._isDisposed = true;\n  }\n  /** @docs-private */\n\n\n  setDisposeFn(fn) {\n    this._disposeFn = fn;\n  }\n\n  _invokeDisposeFn() {\n    if (this._disposeFn) {\n      this._disposeFn();\n\n      this._disposeFn = null;\n    }\n  }\n\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\n\n\nclass BasePortalHost extends BasePortalOutlet {}\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/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\n\n\nclass DomPortalOutlet extends BasePortalOutlet {\n  constructor(\n  /** Element into which the content is projected. */\n  outletElement, _componentFactoryResolver, _appRef, _defaultInjector,\n  /**\n   * @deprecated `_document` Parameter to be made required.\n   * @breaking-change 10.0.0\n   */\n  _document) {\n    super();\n    this.outletElement = outletElement;\n    this._componentFactoryResolver = _componentFactoryResolver;\n    this._appRef = _appRef;\n    this._defaultInjector = _defaultInjector;\n    /**\n     * Attaches a DOM portal by transferring its content into the outlet.\n     * @param portal Portal to be attached.\n     * @deprecated To be turned into a method.\n     * @breaking-change 10.0.0\n     */\n\n    this.attachDomPortal = portal => {\n      // @breaking-change 10.0.0 Remove check and error once the\n      // `_document` constructor parameter is required.\n      if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('Cannot attach DOM portal without _document constructor parameter');\n      }\n\n      const element = portal.element;\n\n      if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('DOM portal content must be attached to a parent node.');\n      } // Anchor used to save the element's previous position so\n      // that we can restore it when the portal is detached.\n\n\n      const anchorNode = this._document.createComment('dom-portal');\n\n      element.parentNode.insertBefore(anchorNode, element);\n      this.outletElement.appendChild(element);\n      this._attachedPortal = portal;\n      super.setDisposeFn(() => {\n        // We can't use `replaceWith` here because IE doesn't support it.\n        if (anchorNode.parentNode) {\n          anchorNode.parentNode.replaceChild(element, anchorNode);\n        }\n      });\n    };\n\n    this._document = _document;\n  }\n  /**\n   * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n   * @param portal Portal to be attached\n   * @returns Reference to the created component.\n   */\n\n\n  attachComponentPortal(portal) {\n    const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n    const componentFactory = resolver.resolveComponentFactory(portal.component);\n    let componentRef; // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n    // for the component (in terms of Angular's component tree, not rendering).\n    // When the ViewContainerRef is missing, we use the factory to create the component directly\n    // and then manually attach the view to the application.\n\n    if (portal.viewContainerRef) {\n      componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);\n      this.setDisposeFn(() => componentRef.destroy());\n    } else {\n      componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n\n      this._appRef.attachView(componentRef.hostView);\n\n      this.setDisposeFn(() => {\n        this._appRef.detachView(componentRef.hostView);\n\n        componentRef.destroy();\n      });\n    } // At this point the component has been instantiated, so we move it to the location in the DOM\n    // where we want it to be rendered.\n\n\n    this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n    this._attachedPortal = portal;\n    return componentRef;\n  }\n  /**\n   * Attaches a template portal to the DOM as an embedded view.\n   * @param portal Portal to be attached.\n   * @returns Reference to the created embedded view.\n   */\n\n\n  attachTemplatePortal(portal) {\n    let viewContainer = portal.viewContainerRef;\n    let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context); // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n    // But for the DomPortalOutlet the view can be added everywhere in the DOM\n    // (e.g Overlay Container) To move the view to the specified host element. We just\n    // re-append the existing root nodes.\n\n    viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode)); // Note that we want to detect changes after the nodes have been moved so that\n    // any directives inside the portal that are looking at the DOM inside a lifecycle\n    // hook won't be invoked too early.\n\n    viewRef.detectChanges();\n    this.setDisposeFn(() => {\n      let index = viewContainer.indexOf(viewRef);\n\n      if (index !== -1) {\n        viewContainer.remove(index);\n      }\n    });\n    this._attachedPortal = portal; // TODO(jelbourn): Return locals from view.\n\n    return viewRef;\n  }\n  /**\n   * Clears out a portal from the DOM.\n   */\n\n\n  dispose() {\n    super.dispose();\n    this.outletElement.remove();\n  }\n  /** Gets the root HTMLElement for an instantiated component. */\n\n\n  _getComponentRootNode(componentRef) {\n    return componentRef.hostView.rootNodes[0];\n  }\n\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\n\n\nclass DomPortalHost extends DomPortalOutlet {}\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/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\n\n\nclass CdkPortal extends TemplatePortal {\n  constructor(templateRef, viewContainerRef) {\n    super(templateRef, viewContainerRef);\n  }\n\n}\n\nCdkPortal.ɵfac = function CdkPortal_Factory(t) {\n  return new (t || CdkPortal)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef));\n};\n\nCdkPortal.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkPortal,\n  selectors: [[\"\", \"cdkPortal\", \"\"]],\n  exportAs: [\"cdkPortal\"],\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkPortal, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkPortal]',\n      exportAs: 'cdkPortal'\n    }]\n  }], function () {\n    return [{\n      type: i0.TemplateRef\n    }, {\n      type: i0.ViewContainerRef\n    }];\n  }, null);\n})();\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\n\n\nclass TemplatePortalDirective extends CdkPortal {}\n\nTemplatePortalDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵTemplatePortalDirective_BaseFactory;\n  return function TemplatePortalDirective_Factory(t) {\n    return (ɵTemplatePortalDirective_BaseFactory || (ɵTemplatePortalDirective_BaseFactory = i0.ɵɵgetInheritedFactory(TemplatePortalDirective)))(t || TemplatePortalDirective);\n  };\n}();\n\nTemplatePortalDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: TemplatePortalDirective,\n  selectors: [[\"\", \"cdk-portal\", \"\"], [\"\", \"portal\", \"\"]],\n  exportAs: [\"cdkPortal\"],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkPortal,\n    useExisting: TemplatePortalDirective\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TemplatePortalDirective, [{\n    type: Directive,\n    args: [{\n      selector: '[cdk-portal], [portal]',\n      exportAs: 'cdkPortal',\n      providers: [{\n        provide: CdkPortal,\n        useExisting: TemplatePortalDirective\n      }]\n    }]\n  }], null, null);\n})();\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\n\n\nclass CdkPortalOutlet extends BasePortalOutlet {\n  constructor(_componentFactoryResolver, _viewContainerRef,\n  /**\n   * @deprecated `_document` parameter to be made required.\n   * @breaking-change 9.0.0\n   */\n  _document) {\n    super();\n    this._componentFactoryResolver = _componentFactoryResolver;\n    this._viewContainerRef = _viewContainerRef;\n    /** Whether the portal component is initialized. */\n\n    this._isInitialized = false;\n    /** Emits when a portal is attached to the outlet. */\n\n    this.attached = new EventEmitter();\n    /**\n     * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n     * @param portal Portal to be attached.\n     * @deprecated To be turned into a method.\n     * @breaking-change 10.0.0\n     */\n\n    this.attachDomPortal = portal => {\n      // @breaking-change 9.0.0 Remove check and error once the\n      // `_document` constructor parameter is required.\n      if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('Cannot attach DOM portal without _document constructor parameter');\n      }\n\n      const element = portal.element;\n\n      if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n        throw Error('DOM portal content must be attached to a parent node.');\n      } // Anchor used to save the element's previous position so\n      // that we can restore it when the portal is detached.\n\n\n      const anchorNode = this._document.createComment('dom-portal');\n\n      portal.setAttachedHost(this);\n      element.parentNode.insertBefore(anchorNode, element);\n\n      this._getRootNode().appendChild(element);\n\n      this._attachedPortal = portal;\n      super.setDisposeFn(() => {\n        if (anchorNode.parentNode) {\n          anchorNode.parentNode.replaceChild(element, anchorNode);\n        }\n      });\n    };\n\n    this._document = _document;\n  }\n  /** Portal associated with the Portal outlet. */\n\n\n  get portal() {\n    return this._attachedPortal;\n  }\n\n  set portal(portal) {\n    // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n    // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n    // and attach a portal programmatically in the parent component. When Angular does the first CD\n    // round, it will fire the setter with empty string, causing the user's content to be cleared.\n    if (this.hasAttached() && !portal && !this._isInitialized) {\n      return;\n    }\n\n    if (this.hasAttached()) {\n      super.detach();\n    }\n\n    if (portal) {\n      super.attach(portal);\n    }\n\n    this._attachedPortal = portal;\n  }\n  /** Component or view reference that is attached to the portal. */\n\n\n  get attachedRef() {\n    return this._attachedRef;\n  }\n\n  ngOnInit() {\n    this._isInitialized = true;\n  }\n\n  ngOnDestroy() {\n    super.dispose();\n    this._attachedPortal = null;\n    this._attachedRef = null;\n  }\n  /**\n   * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n   *\n   * @param portal Portal to be attached to the portal outlet.\n   * @returns Reference to the created component.\n   */\n\n\n  attachComponentPortal(portal) {\n    portal.setAttachedHost(this); // If the portal specifies an origin, use that as the logical location of the component\n    // in the application tree. Otherwise use the location of this PortalOutlet.\n\n    const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n    const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n    const componentFactory = resolver.resolveComponentFactory(portal.component);\n    const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector); // If we're using a view container that's different from the injected one (e.g. when the portal\n    // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n    // inside of the alternate view container.\n\n    if (viewContainerRef !== this._viewContainerRef) {\n      this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n    }\n\n    super.setDisposeFn(() => ref.destroy());\n    this._attachedPortal = portal;\n    this._attachedRef = ref;\n    this.attached.emit(ref);\n    return ref;\n  }\n  /**\n   * Attach the given TemplatePortal to this PortalHost as an embedded View.\n   * @param portal Portal to be attached.\n   * @returns Reference to the created embedded view.\n   */\n\n\n  attachTemplatePortal(portal) {\n    portal.setAttachedHost(this);\n\n    const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n\n    super.setDisposeFn(() => this._viewContainerRef.clear());\n    this._attachedPortal = portal;\n    this._attachedRef = viewRef;\n    this.attached.emit(viewRef);\n    return viewRef;\n  }\n  /** Gets the root node of the portal outlet. */\n\n\n  _getRootNode() {\n    const nativeElement = this._viewContainerRef.element.nativeElement; // The directive could be set on a template which will result in a comment\n    // node being the root. Use the comment's parent node if that is the case.\n\n    return nativeElement.nodeType === nativeElement.ELEMENT_NODE ? nativeElement : nativeElement.parentNode;\n  }\n\n}\n\nCdkPortalOutlet.ɵfac = function CdkPortalOutlet_Factory(t) {\n  return new (t || CdkPortalOutlet)(i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(DOCUMENT));\n};\n\nCdkPortalOutlet.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkPortalOutlet,\n  selectors: [[\"\", \"cdkPortalOutlet\", \"\"]],\n  inputs: {\n    portal: [\"cdkPortalOutlet\", \"portal\"]\n  },\n  outputs: {\n    attached: \"attached\"\n  },\n  exportAs: [\"cdkPortalOutlet\"],\n  features: [i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkPortalOutlet, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkPortalOutlet]',\n      exportAs: 'cdkPortalOutlet',\n      inputs: ['portal: cdkPortalOutlet']\n    }]\n  }], function () {\n    return [{\n      type: i0.ComponentFactoryResolver\n    }, {\n      type: i0.ViewContainerRef\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, {\n    attached: [{\n      type: Output\n    }]\n  });\n})();\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\n\n\nclass PortalHostDirective extends CdkPortalOutlet {}\n\nPortalHostDirective.ɵfac = /* @__PURE__ */function () {\n  let ɵPortalHostDirective_BaseFactory;\n  return function PortalHostDirective_Factory(t) {\n    return (ɵPortalHostDirective_BaseFactory || (ɵPortalHostDirective_BaseFactory = i0.ɵɵgetInheritedFactory(PortalHostDirective)))(t || PortalHostDirective);\n  };\n}();\n\nPortalHostDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: PortalHostDirective,\n  selectors: [[\"\", \"cdkPortalHost\", \"\"], [\"\", \"portalHost\", \"\"]],\n  inputs: {\n    portal: [\"cdkPortalHost\", \"portal\"]\n  },\n  exportAs: [\"cdkPortalHost\"],\n  features: [i0.ɵɵProvidersFeature([{\n    provide: CdkPortalOutlet,\n    useExisting: PortalHostDirective\n  }]), i0.ɵɵInheritDefinitionFeature]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PortalHostDirective, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkPortalHost], [portalHost]',\n      exportAs: 'cdkPortalHost',\n      inputs: ['portal: cdkPortalHost'],\n      providers: [{\n        provide: CdkPortalOutlet,\n        useExisting: PortalHostDirective\n      }]\n    }]\n  }], null, null);\n})();\n\nclass PortalModule {}\n\nPortalModule.ɵfac = function PortalModule_Factory(t) {\n  return new (t || PortalModule)();\n};\n\nPortalModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: PortalModule\n});\nPortalModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PortalModule, [{\n    type: NgModule,\n    args: [{\n      exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n      declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective]\n    }]\n  }], null, null);\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/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\n\n\nclass PortalInjector {\n  constructor(_parentInjector, _customTokens) {\n    this._parentInjector = _parentInjector;\n    this._customTokens = _customTokens;\n  }\n\n  get(token, notFoundValue) {\n    const value = this._customTokens.get(token);\n\n    if (typeof value !== 'undefined') {\n      return value;\n    }\n\n    return this._parentInjector.get(token, notFoundValue);\n  }\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/portal.mjs"],"names":["i0","ElementRef","Directive","EventEmitter","Inject","Output","NgModule","DOCUMENT","throwNullPortalError","Error","throwPortalAlreadyAttachedError","throwPortalOutletAlreadyDisposedError","throwUnknownPortalTypeError","throwNullPortalOutletError","throwNoPortalAttachedError","Portal","attach","host","ngDevMode","hasAttached","_attachedHost","detach","isAttached","setAttachedHost","ComponentPortal","constructor","component","viewContainerRef","injector","componentFactoryResolver","TemplatePortal","template","context","templateRef","origin","elementRef","undefined","DomPortal","element","nativeElement","BasePortalOutlet","_isDisposed","attachDomPortal","_attachedPortal","portal","attachComponentPortal","attachTemplatePortal","_invokeDisposeFn","dispose","setDisposeFn","fn","_disposeFn","BasePortalHost","DomPortalOutlet","outletElement","_componentFactoryResolver","_appRef","_defaultInjector","_document","parentNode","anchorNode","createComment","insertBefore","appendChild","replaceChild","resolver","componentFactory","resolveComponentFactory","componentRef","createComponent","length","destroy","create","attachView","hostView","detachView","_getComponentRootNode","viewContainer","viewRef","createEmbeddedView","rootNodes","forEach","rootNode","detectChanges","index","indexOf","remove","DomPortalHost","CdkPortal","ɵfac","TemplateRef","ViewContainerRef","ɵdir","type","args","selector","exportAs","TemplatePortalDirective","provide","useExisting","providers","CdkPortalOutlet","_viewContainerRef","_isInitialized","attached","_getRootNode","attachedRef","_attachedRef","ngOnInit","ngOnDestroy","ref","emit","clear","nodeType","ELEMENT_NODE","ComponentFactoryResolver","inputs","decorators","PortalHostDirective","PortalModule","ɵmod","ɵinj","exports","declarations","PortalInjector","_parentInjector","_customTokens","get","token","notFoundValue","value"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { ElementRef, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\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 * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n    throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n    throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n    throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n    throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n        'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n    throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n    throw Error('Attempting to detach a portal that is not attached to a host');\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 * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n    /** Attach this portal to a host. */\n    attach(host) {\n        if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            if (host == null) {\n                throwNullPortalOutletError();\n            }\n            if (host.hasAttached()) {\n                throwPortalAlreadyAttachedError();\n            }\n        }\n        this._attachedHost = host;\n        return host.attach(this);\n    }\n    /** Detach this portal from its host */\n    detach() {\n        let host = this._attachedHost;\n        if (host != null) {\n            this._attachedHost = null;\n            host.detach();\n        }\n        else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            throwNoPortalAttachedError();\n        }\n    }\n    /** Whether this portal is attached to a host. */\n    get isAttached() {\n        return this._attachedHost != null;\n    }\n    /**\n     * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n     * the PortalOutlet when it is performing an `attach()` or `detach()`.\n     */\n    setAttachedHost(host) {\n        this._attachedHost = host;\n    }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n    constructor(component, viewContainerRef, injector, componentFactoryResolver) {\n        super();\n        this.component = component;\n        this.viewContainerRef = viewContainerRef;\n        this.injector = injector;\n        this.componentFactoryResolver = componentFactoryResolver;\n    }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n    constructor(template, viewContainerRef, context) {\n        super();\n        this.templateRef = template;\n        this.viewContainerRef = viewContainerRef;\n        this.context = context;\n    }\n    get origin() {\n        return this.templateRef.elementRef;\n    }\n    /**\n     * Attach the portal to the provided `PortalOutlet`.\n     * When a context is provided it will override the `context` property of the `TemplatePortal`\n     * instance.\n     */\n    attach(host, context = this.context) {\n        this.context = context;\n        return super.attach(host);\n    }\n    detach() {\n        this.context = undefined;\n        return super.detach();\n    }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n    constructor(element) {\n        super();\n        this.element = element instanceof ElementRef ? element.nativeElement : element;\n    }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n    constructor() {\n        /** Whether this host has already been permanently disposed. */\n        this._isDisposed = false;\n        // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n        this.attachDomPortal = null;\n    }\n    /** Whether this host has an attached portal. */\n    hasAttached() {\n        return !!this._attachedPortal;\n    }\n    /** Attaches a portal. */\n    attach(portal) {\n        if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            if (!portal) {\n                throwNullPortalError();\n            }\n            if (this.hasAttached()) {\n                throwPortalAlreadyAttachedError();\n            }\n            if (this._isDisposed) {\n                throwPortalOutletAlreadyDisposedError();\n            }\n        }\n        if (portal instanceof ComponentPortal) {\n            this._attachedPortal = portal;\n            return this.attachComponentPortal(portal);\n        }\n        else if (portal instanceof TemplatePortal) {\n            this._attachedPortal = portal;\n            return this.attachTemplatePortal(portal);\n            // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n        }\n        else if (this.attachDomPortal && portal instanceof DomPortal) {\n            this._attachedPortal = portal;\n            return this.attachDomPortal(portal);\n        }\n        if (typeof ngDevMode === 'undefined' || ngDevMode) {\n            throwUnknownPortalTypeError();\n        }\n    }\n    /** Detaches a previously attached portal. */\n    detach() {\n        if (this._attachedPortal) {\n            this._attachedPortal.setAttachedHost(null);\n            this._attachedPortal = null;\n        }\n        this._invokeDisposeFn();\n    }\n    /** Permanently dispose of this portal host. */\n    dispose() {\n        if (this.hasAttached()) {\n            this.detach();\n        }\n        this._invokeDisposeFn();\n        this._isDisposed = true;\n    }\n    /** @docs-private */\n    setDisposeFn(fn) {\n        this._disposeFn = fn;\n    }\n    _invokeDisposeFn() {\n        if (this._disposeFn) {\n            this._disposeFn();\n            this._disposeFn = null;\n        }\n    }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\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 * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n    constructor(\n    /** Element into which the content is projected. */\n    outletElement, _componentFactoryResolver, _appRef, _defaultInjector, \n    /**\n     * @deprecated `_document` Parameter to be made required.\n     * @breaking-change 10.0.0\n     */\n    _document) {\n        super();\n        this.outletElement = outletElement;\n        this._componentFactoryResolver = _componentFactoryResolver;\n        this._appRef = _appRef;\n        this._defaultInjector = _defaultInjector;\n        /**\n         * Attaches a DOM portal by transferring its content into the outlet.\n         * @param portal Portal to be attached.\n         * @deprecated To be turned into a method.\n         * @breaking-change 10.0.0\n         */\n        this.attachDomPortal = (portal) => {\n            // @breaking-change 10.0.0 Remove check and error once the\n            // `_document` constructor parameter is required.\n            if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n                throw Error('Cannot attach DOM portal without _document constructor parameter');\n            }\n            const element = portal.element;\n            if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n                throw Error('DOM portal content must be attached to a parent node.');\n            }\n            // Anchor used to save the element's previous position so\n            // that we can restore it when the portal is detached.\n            const anchorNode = this._document.createComment('dom-portal');\n            element.parentNode.insertBefore(anchorNode, element);\n            this.outletElement.appendChild(element);\n            this._attachedPortal = portal;\n            super.setDisposeFn(() => {\n                // We can't use `replaceWith` here because IE doesn't support it.\n                if (anchorNode.parentNode) {\n                    anchorNode.parentNode.replaceChild(element, anchorNode);\n                }\n            });\n        };\n        this._document = _document;\n    }\n    /**\n     * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n     * @param portal Portal to be attached\n     * @returns Reference to the created component.\n     */\n    attachComponentPortal(portal) {\n        const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n        const componentFactory = resolver.resolveComponentFactory(portal.component);\n        let componentRef;\n        // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n        // for the component (in terms of Angular's component tree, not rendering).\n        // When the ViewContainerRef is missing, we use the factory to create the component directly\n        // and then manually attach the view to the application.\n        if (portal.viewContainerRef) {\n            componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);\n            this.setDisposeFn(() => componentRef.destroy());\n        }\n        else {\n            componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n            this._appRef.attachView(componentRef.hostView);\n            this.setDisposeFn(() => {\n                this._appRef.detachView(componentRef.hostView);\n                componentRef.destroy();\n            });\n        }\n        // At this point the component has been instantiated, so we move it to the location in the DOM\n        // where we want it to be rendered.\n        this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n        this._attachedPortal = portal;\n        return componentRef;\n    }\n    /**\n     * Attaches a template portal to the DOM as an embedded view.\n     * @param portal Portal to be attached.\n     * @returns Reference to the created embedded view.\n     */\n    attachTemplatePortal(portal) {\n        let viewContainer = portal.viewContainerRef;\n        let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n        // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n        // But for the DomPortalOutlet the view can be added everywhere in the DOM\n        // (e.g Overlay Container) To move the view to the specified host element. We just\n        // re-append the existing root nodes.\n        viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n        // Note that we want to detect changes after the nodes have been moved so that\n        // any directives inside the portal that are looking at the DOM inside a lifecycle\n        // hook won't be invoked too early.\n        viewRef.detectChanges();\n        this.setDisposeFn(() => {\n            let index = viewContainer.indexOf(viewRef);\n            if (index !== -1) {\n                viewContainer.remove(index);\n            }\n        });\n        this._attachedPortal = portal;\n        // TODO(jelbourn): Return locals from view.\n        return viewRef;\n    }\n    /**\n     * Clears out a portal from the DOM.\n     */\n    dispose() {\n        super.dispose();\n        this.outletElement.remove();\n    }\n    /** Gets the root HTMLElement for an instantiated component. */\n    _getComponentRootNode(componentRef) {\n        return componentRef.hostView.rootNodes[0];\n    }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\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 * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n    constructor(templateRef, viewContainerRef) {\n        super(templateRef, viewContainerRef);\n    }\n}\nCdkPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortal, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortal.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkPortal, selector: \"[cdkPortal]\", exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortal, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkPortal]',\n                    exportAs: 'cdkPortal',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n}\nTemplatePortalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTemplatePortalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: TemplatePortalDirective, selector: \"[cdk-portal], [portal]\", providers: [\n        {\n            provide: CdkPortal,\n            useExisting: TemplatePortalDirective,\n        },\n    ], exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TemplatePortalDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdk-portal], [portal]',\n                    exportAs: 'cdkPortal',\n                    providers: [\n                        {\n                            provide: CdkPortal,\n                            useExisting: TemplatePortalDirective,\n                        },\n                    ],\n                }]\n        }] });\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n    constructor(_componentFactoryResolver, _viewContainerRef, \n    /**\n     * @deprecated `_document` parameter to be made required.\n     * @breaking-change 9.0.0\n     */\n    _document) {\n        super();\n        this._componentFactoryResolver = _componentFactoryResolver;\n        this._viewContainerRef = _viewContainerRef;\n        /** Whether the portal component is initialized. */\n        this._isInitialized = false;\n        /** Emits when a portal is attached to the outlet. */\n        this.attached = new EventEmitter();\n        /**\n         * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n         * @param portal Portal to be attached.\n         * @deprecated To be turned into a method.\n         * @breaking-change 10.0.0\n         */\n        this.attachDomPortal = (portal) => {\n            // @breaking-change 9.0.0 Remove check and error once the\n            // `_document` constructor parameter is required.\n            if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n                throw Error('Cannot attach DOM portal without _document constructor parameter');\n            }\n            const element = portal.element;\n            if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n                throw Error('DOM portal content must be attached to a parent node.');\n            }\n            // Anchor used to save the element's previous position so\n            // that we can restore it when the portal is detached.\n            const anchorNode = this._document.createComment('dom-portal');\n            portal.setAttachedHost(this);\n            element.parentNode.insertBefore(anchorNode, element);\n            this._getRootNode().appendChild(element);\n            this._attachedPortal = portal;\n            super.setDisposeFn(() => {\n                if (anchorNode.parentNode) {\n                    anchorNode.parentNode.replaceChild(element, anchorNode);\n                }\n            });\n        };\n        this._document = _document;\n    }\n    /** Portal associated with the Portal outlet. */\n    get portal() {\n        return this._attachedPortal;\n    }\n    set portal(portal) {\n        // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n        // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n        // and attach a portal programmatically in the parent component. When Angular does the first CD\n        // round, it will fire the setter with empty string, causing the user's content to be cleared.\n        if (this.hasAttached() && !portal && !this._isInitialized) {\n            return;\n        }\n        if (this.hasAttached()) {\n            super.detach();\n        }\n        if (portal) {\n            super.attach(portal);\n        }\n        this._attachedPortal = portal;\n    }\n    /** Component or view reference that is attached to the portal. */\n    get attachedRef() {\n        return this._attachedRef;\n    }\n    ngOnInit() {\n        this._isInitialized = true;\n    }\n    ngOnDestroy() {\n        super.dispose();\n        this._attachedPortal = null;\n        this._attachedRef = null;\n    }\n    /**\n     * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n     *\n     * @param portal Portal to be attached to the portal outlet.\n     * @returns Reference to the created component.\n     */\n    attachComponentPortal(portal) {\n        portal.setAttachedHost(this);\n        // If the portal specifies an origin, use that as the logical location of the component\n        // in the application tree. Otherwise use the location of this PortalOutlet.\n        const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n        const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n        const componentFactory = resolver.resolveComponentFactory(portal.component);\n        const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector);\n        // If we're using a view container that's different from the injected one (e.g. when the portal\n        // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n        // inside of the alternate view container.\n        if (viewContainerRef !== this._viewContainerRef) {\n            this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n        }\n        super.setDisposeFn(() => ref.destroy());\n        this._attachedPortal = portal;\n        this._attachedRef = ref;\n        this.attached.emit(ref);\n        return ref;\n    }\n    /**\n     * Attach the given TemplatePortal to this PortalHost as an embedded View.\n     * @param portal Portal to be attached.\n     * @returns Reference to the created embedded view.\n     */\n    attachTemplatePortal(portal) {\n        portal.setAttachedHost(this);\n        const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n        super.setDisposeFn(() => this._viewContainerRef.clear());\n        this._attachedPortal = portal;\n        this._attachedRef = viewRef;\n        this.attached.emit(viewRef);\n        return viewRef;\n    }\n    /** Gets the root node of the portal outlet. */\n    _getRootNode() {\n        const nativeElement = this._viewContainerRef.element.nativeElement;\n        // The directive could be set on a template which will result in a comment\n        // node being the root. Use the comment's parent node if that is the case.\n        return (nativeElement.nodeType === nativeElement.ELEMENT_NODE\n            ? nativeElement\n            : nativeElement.parentNode);\n    }\n}\nCdkPortalOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortalOutlet, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortalOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortalOutlet, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkPortalOutlet]',\n                    exportAs: 'cdkPortalOutlet',\n                    inputs: ['portal: cdkPortalOutlet'],\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; }, propDecorators: { attached: [{\n                type: Output\n            }] } });\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n}\nPortalHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nPortalHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: PortalHostDirective, selector: \"[cdkPortalHost], [portalHost]\", inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, providers: [\n        {\n            provide: CdkPortalOutlet,\n            useExisting: PortalHostDirective,\n        },\n    ], exportAs: [\"cdkPortalHost\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalHostDirective, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkPortalHost], [portalHost]',\n                    exportAs: 'cdkPortalHost',\n                    inputs: ['portal: cdkPortalHost'],\n                    providers: [\n                        {\n                            provide: CdkPortalOutlet,\n                            useExisting: PortalHostDirective,\n                        },\n                    ],\n                }]\n        }] });\nclass PortalModule {\n}\nPortalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPortalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule, declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] });\nPortalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n                    declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n                }]\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 * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n    constructor(_parentInjector, _customTokens) {\n        this._parentInjector = _parentInjector;\n        this._customTokens = _customTokens;\n    }\n    get(token, notFoundValue) {\n        const value = this._customTokens.get(token);\n        if (typeof value !== 'undefined') {\n            return value;\n        }\n        return this._parentInjector.get(token, notFoundValue);\n    }\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/b4e498c40d763a82231cd83ef0b0da6f.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/b4e498c40d763a82231cd83ef0b0da6f.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/b4e498c40d763a82231cd83ef0b0da6f.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions, PlatformModule } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\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/** Options to pass to the animationstart listener. */\n\nconst listenerOptions = normalizePassiveListenerOptions({\n  passive: true\n});\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\n\nclass AutofillMonitor {\n  constructor(_platform, _ngZone) {\n    this._platform = _platform;\n    this._ngZone = _ngZone;\n    this._monitoredElements = new Map();\n  }\n\n  monitor(elementOrRef) {\n    if (!this._platform.isBrowser) {\n      return EMPTY;\n    }\n\n    const element = coerceElement(elementOrRef);\n\n    const info = this._monitoredElements.get(element);\n\n    if (info) {\n      return info.subject;\n    }\n\n    const result = new Subject();\n    const cssClass = 'cdk-text-field-autofilled';\n\n    const listener = event => {\n      // Animation events fire on initial element render, we check for the presence of the autofill\n      // CSS class to make sure this is a real change in state, not just the initial render before\n      // we fire off events.\n      if (event.animationName === 'cdk-text-field-autofill-start' && !element.classList.contains(cssClass)) {\n        element.classList.add(cssClass);\n\n        this._ngZone.run(() => result.next({\n          target: event.target,\n          isAutofilled: true\n        }));\n      } else if (event.animationName === 'cdk-text-field-autofill-end' && element.classList.contains(cssClass)) {\n        element.classList.remove(cssClass);\n\n        this._ngZone.run(() => result.next({\n          target: event.target,\n          isAutofilled: false\n        }));\n      }\n    };\n\n    this._ngZone.runOutsideAngular(() => {\n      element.addEventListener('animationstart', listener, listenerOptions);\n      element.classList.add('cdk-text-field-autofill-monitored');\n    });\n\n    this._monitoredElements.set(element, {\n      subject: result,\n      unlisten: () => {\n        element.removeEventListener('animationstart', listener, listenerOptions);\n      }\n    });\n\n    return result;\n  }\n\n  stopMonitoring(elementOrRef) {\n    const element = coerceElement(elementOrRef);\n\n    const info = this._monitoredElements.get(element);\n\n    if (info) {\n      info.unlisten();\n      info.subject.complete();\n      element.classList.remove('cdk-text-field-autofill-monitored');\n      element.classList.remove('cdk-text-field-autofilled');\n\n      this._monitoredElements.delete(element);\n    }\n  }\n\n  ngOnDestroy() {\n    this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n  }\n\n}\n\nAutofillMonitor.ɵfac = function AutofillMonitor_Factory(t) {\n  return new (t || AutofillMonitor)(i0.ɵɵinject(i1.Platform), i0.ɵɵinject(i0.NgZone));\n};\n\nAutofillMonitor.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: AutofillMonitor,\n  factory: AutofillMonitor.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(AutofillMonitor, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: i1.Platform\n    }, {\n      type: i0.NgZone\n    }];\n  }, null);\n})();\n/** A directive that can be used to monitor the autofill state of an input. */\n\n\nclass CdkAutofill {\n  constructor(_elementRef, _autofillMonitor) {\n    this._elementRef = _elementRef;\n    this._autofillMonitor = _autofillMonitor;\n    /** Emits when the autofill state of the element changes. */\n\n    this.cdkAutofill = new EventEmitter();\n  }\n\n  ngOnInit() {\n    this._autofillMonitor.monitor(this._elementRef).subscribe(event => this.cdkAutofill.emit(event));\n  }\n\n  ngOnDestroy() {\n    this._autofillMonitor.stopMonitoring(this._elementRef);\n  }\n\n}\n\nCdkAutofill.ɵfac = function CdkAutofill_Factory(t) {\n  return new (t || CdkAutofill)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(AutofillMonitor));\n};\n\nCdkAutofill.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkAutofill,\n  selectors: [[\"\", \"cdkAutofill\", \"\"]],\n  outputs: {\n    cdkAutofill: \"cdkAutofill\"\n  }\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkAutofill, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkAutofill]'\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: AutofillMonitor\n    }];\n  }, {\n    cdkAutofill: [{\n      type: Output\n    }]\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/** Directive to automatically resize a textarea to fit its content. */\n\n\nclass CdkTextareaAutosize {\n  constructor(_elementRef, _platform, _ngZone,\n  /** @breaking-change 11.0.0 make document required */\n  document) {\n    this._elementRef = _elementRef;\n    this._platform = _platform;\n    this._ngZone = _ngZone;\n    this._destroyed = new Subject();\n    this._enabled = true;\n    /**\n     * Value of minRows as of last resize. If the minRows has decreased, the\n     * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n     * does not have the same problem because it does not affect the textarea's scrollHeight.\n     */\n\n    this._previousMinRows = -1;\n    this._isViewInited = false;\n    /** Handles `focus` and `blur` events. */\n\n    this._handleFocusEvent = event => {\n      this._hasFocus = event.type === 'focus';\n    };\n\n    this._document = document;\n    this._textareaElement = this._elementRef.nativeElement;\n  }\n  /** Minimum amount of rows in the textarea. */\n\n\n  get minRows() {\n    return this._minRows;\n  }\n\n  set minRows(value) {\n    this._minRows = coerceNumberProperty(value);\n\n    this._setMinHeight();\n  }\n  /** Maximum amount of rows in the textarea. */\n\n\n  get maxRows() {\n    return this._maxRows;\n  }\n\n  set maxRows(value) {\n    this._maxRows = coerceNumberProperty(value);\n\n    this._setMaxHeight();\n  }\n  /** Whether autosizing is enabled or not */\n\n\n  get enabled() {\n    return this._enabled;\n  }\n\n  set enabled(value) {\n    value = coerceBooleanProperty(value); // Only act if the actual value changed. This specifically helps to not run\n    // resizeToFitContent too early (i.e. before ngAfterViewInit)\n\n    if (this._enabled !== value) {\n      (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n    }\n  }\n\n  get placeholder() {\n    return this._textareaElement.placeholder;\n  }\n\n  set placeholder(value) {\n    this._cachedPlaceholderHeight = undefined;\n    this._textareaElement.placeholder = value;\n\n    this._cacheTextareaPlaceholderHeight();\n  }\n  /** Sets the minimum height of the textarea as determined by minRows. */\n\n\n  _setMinHeight() {\n    const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n\n    if (minHeight) {\n      this._textareaElement.style.minHeight = minHeight;\n    }\n  }\n  /** Sets the maximum height of the textarea as determined by maxRows. */\n\n\n  _setMaxHeight() {\n    const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n\n    if (maxHeight) {\n      this._textareaElement.style.maxHeight = maxHeight;\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this._platform.isBrowser) {\n      // Remember the height which we started with in case autosizing is disabled\n      this._initialHeight = this._textareaElement.style.height;\n      this.resizeToFitContent();\n\n      this._ngZone.runOutsideAngular(() => {\n        const window = this._getWindow();\n\n        fromEvent(window, 'resize').pipe(auditTime(16), takeUntil(this._destroyed)).subscribe(() => this.resizeToFitContent(true));\n\n        this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n\n        this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n      });\n\n      this._isViewInited = true;\n      this.resizeToFitContent(true);\n    }\n  }\n\n  ngOnDestroy() {\n    this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n\n    this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n\n    this._destroyed.next();\n\n    this._destroyed.complete();\n  }\n  /**\n   * Cache the height of a single-row textarea if it has not already been cached.\n   *\n   * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n   * maxRows. For the initial version, we will assume that the height of a single line in the\n   * textarea does not ever change.\n   */\n\n\n  _cacheTextareaLineHeight() {\n    if (this._cachedLineHeight) {\n      return;\n    } // Use a clone element because we have to override some styles.\n\n\n    let textareaClone = this._textareaElement.cloneNode(false);\n\n    textareaClone.rows = 1; // Use `position: absolute` so that this doesn't cause a browser layout and use\n    // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n    // would affect the height.\n\n    textareaClone.style.position = 'absolute';\n    textareaClone.style.visibility = 'hidden';\n    textareaClone.style.border = 'none';\n    textareaClone.style.padding = '0';\n    textareaClone.style.height = '';\n    textareaClone.style.minHeight = '';\n    textareaClone.style.maxHeight = ''; // In Firefox it happens that textarea elements are always bigger than the specified amount\n    // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n    // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n    // to hidden. This ensures that there is no invalid calculation of the line height.\n    // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n\n    textareaClone.style.overflow = 'hidden';\n\n    this._textareaElement.parentNode.appendChild(textareaClone);\n\n    this._cachedLineHeight = textareaClone.clientHeight;\n    textareaClone.remove(); // Min and max heights have to be re-calculated if the cached line height changes\n\n    this._setMinHeight();\n\n    this._setMaxHeight();\n  }\n\n  _measureScrollHeight() {\n    const element = this._textareaElement;\n    const previousMargin = element.style.marginBottom || '';\n    const isFirefox = this._platform.FIREFOX;\n    const needsMarginFiller = isFirefox && this._hasFocus;\n    const measuringClass = isFirefox ? 'cdk-textarea-autosize-measuring-firefox' : 'cdk-textarea-autosize-measuring'; // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n    // work around it by assigning a temporary margin with the same height as the `textarea` so that\n    // it occupies the same amount of space. See #23233.\n\n    if (needsMarginFiller) {\n      element.style.marginBottom = `${element.clientHeight}px`;\n    } // Reset the textarea height to auto in order to shrink back to its default size.\n    // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n\n\n    element.classList.add(measuringClass); // The measuring class includes a 2px padding to workaround an issue with Chrome,\n    // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n\n    const scrollHeight = element.scrollHeight - 4;\n    element.classList.remove(measuringClass);\n\n    if (needsMarginFiller) {\n      element.style.marginBottom = previousMargin;\n    }\n\n    return scrollHeight;\n  }\n\n  _cacheTextareaPlaceholderHeight() {\n    if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n      return;\n    }\n\n    if (!this.placeholder) {\n      this._cachedPlaceholderHeight = 0;\n      return;\n    }\n\n    const value = this._textareaElement.value;\n    this._textareaElement.value = this._textareaElement.placeholder;\n    this._cachedPlaceholderHeight = this._measureScrollHeight();\n    this._textareaElement.value = value;\n  }\n\n  ngDoCheck() {\n    if (this._platform.isBrowser) {\n      this.resizeToFitContent();\n    }\n  }\n  /**\n   * Resize the textarea to fit its content.\n   * @param force Whether to force a height recalculation. By default the height will be\n   *    recalculated only if the value changed since the last call.\n   */\n\n\n  resizeToFitContent(force = false) {\n    // If autosizing is disabled, just skip everything else\n    if (!this._enabled) {\n      return;\n    }\n\n    this._cacheTextareaLineHeight();\n\n    this._cacheTextareaPlaceholderHeight(); // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n    // in checking the height of the textarea.\n\n\n    if (!this._cachedLineHeight) {\n      return;\n    }\n\n    const textarea = this._elementRef.nativeElement;\n    const value = textarea.value; // Only resize if the value or minRows have changed since these calculations can be expensive.\n\n    if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n      return;\n    }\n\n    const scrollHeight = this._measureScrollHeight();\n\n    const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0); // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n\n    textarea.style.height = `${height}px`;\n\n    this._ngZone.runOutsideAngular(() => {\n      if (typeof requestAnimationFrame !== 'undefined') {\n        requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n      } else {\n        setTimeout(() => this._scrollToCaretPosition(textarea));\n      }\n    });\n\n    this._previousValue = value;\n    this._previousMinRows = this._minRows;\n  }\n  /**\n   * Resets the textarea to its original size\n   */\n\n\n  reset() {\n    // Do not try to change the textarea, if the initialHeight has not been determined yet\n    // This might potentially remove styles when reset() is called before ngAfterViewInit\n    if (this._initialHeight !== undefined) {\n      this._textareaElement.style.height = this._initialHeight;\n    }\n  }\n\n  _noopInputHandler() {// no-op handler that ensures we're running change detection on input events.\n  }\n  /** Access injected document if available or fallback to global document reference */\n\n\n  _getDocument() {\n    return this._document || document;\n  }\n  /** Use defaultView of injected document if available or fallback to global window reference */\n\n\n  _getWindow() {\n    const doc = this._getDocument();\n\n    return doc.defaultView || window;\n  }\n  /**\n   * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n   * prevent it from scrolling to the caret position. We need to re-set the selection\n   * in order for it to scroll to the proper position.\n   */\n\n\n  _scrollToCaretPosition(textarea) {\n    const {\n      selectionStart,\n      selectionEnd\n    } = textarea; // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n    // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n    // between the time we requested the animation frame and when it was executed.\n    // Also note that we have to assert that the textarea is focused before we set the\n    // selection range. Setting the selection range on a non-focused textarea will cause\n    // it to receive focus on IE and Edge.\n\n    if (!this._destroyed.isStopped && this._hasFocus) {\n      textarea.setSelectionRange(selectionStart, selectionEnd);\n    }\n  }\n\n}\n\nCdkTextareaAutosize.ɵfac = function CdkTextareaAutosize_Factory(t) {\n  return new (t || CdkTextareaAutosize)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(DOCUMENT, 8));\n};\n\nCdkTextareaAutosize.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkTextareaAutosize,\n  selectors: [[\"textarea\", \"cdkTextareaAutosize\", \"\"]],\n  hostAttrs: [\"rows\", \"1\", 1, \"cdk-textarea-autosize\"],\n  hostBindings: function CdkTextareaAutosize_HostBindings(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵlistener(\"input\", function CdkTextareaAutosize_input_HostBindingHandler() {\n        return ctx._noopInputHandler();\n      });\n    }\n  },\n  inputs: {\n    minRows: [\"cdkAutosizeMinRows\", \"minRows\"],\n    maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"],\n    enabled: [\"cdkTextareaAutosize\", \"enabled\"],\n    placeholder: \"placeholder\"\n  },\n  exportAs: [\"cdkTextareaAutosize\"]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkTextareaAutosize, [{\n    type: Directive,\n    args: [{\n      selector: 'textarea[cdkTextareaAutosize]',\n      exportAs: 'cdkTextareaAutosize',\n      host: {\n        'class': 'cdk-textarea-autosize',\n        // Textarea elements that have the directive applied should have a single row by default.\n        // Browsers normally show two rows by default and therefore this limits the minRows binding.\n        'rows': '1',\n        '(input)': '_noopInputHandler()'\n      }\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i1.Platform\n    }, {\n      type: i0.NgZone\n    }, {\n      type: undefined,\n      decorators: [{\n        type: Optional\n      }, {\n        type: Inject,\n        args: [DOCUMENT]\n      }]\n    }];\n  }, {\n    minRows: [{\n      type: Input,\n      args: ['cdkAutosizeMinRows']\n    }],\n    maxRows: [{\n      type: Input,\n      args: ['cdkAutosizeMaxRows']\n    }],\n    enabled: [{\n      type: Input,\n      args: ['cdkTextareaAutosize']\n    }],\n    placeholder: [{\n      type: Input\n    }]\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\nclass TextFieldModule {}\n\nTextFieldModule.ɵfac = function TextFieldModule_Factory(t) {\n  return new (t || TextFieldModule)();\n};\n\nTextFieldModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: TextFieldModule\n});\nTextFieldModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[PlatformModule]]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TextFieldModule, [{\n    type: NgModule,\n    args: [{\n      declarations: [CdkAutofill, CdkTextareaAutosize],\n      imports: [PlatformModule],\n      exports: [CdkAutofill, CdkTextareaAutosize]\n    }]\n  }], null, null);\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/text-field.mjs"],"names":["i1","normalizePassiveListenerOptions","PlatformModule","i0","Injectable","EventEmitter","Directive","Output","Optional","Inject","Input","NgModule","coerceElement","coerceNumberProperty","coerceBooleanProperty","EMPTY","Subject","fromEvent","auditTime","takeUntil","DOCUMENT","listenerOptions","passive","AutofillMonitor","constructor","_platform","_ngZone","_monitoredElements","Map","monitor","elementOrRef","isBrowser","element","info","get","subject","result","cssClass","listener","event","animationName","classList","contains","add","run","next","target","isAutofilled","remove","runOutsideAngular","addEventListener","set","unlisten","removeEventListener","stopMonitoring","complete","delete","ngOnDestroy","forEach","_info","ɵfac","Platform","NgZone","ɵprov","type","args","providedIn","CdkAutofill","_elementRef","_autofillMonitor","cdkAutofill","ngOnInit","subscribe","emit","ElementRef","ɵdir","selector","CdkTextareaAutosize","document","_destroyed","_enabled","_previousMinRows","_isViewInited","_handleFocusEvent","_hasFocus","_document","_textareaElement","nativeElement","minRows","_minRows","value","_setMinHeight","maxRows","_maxRows","_setMaxHeight","enabled","resizeToFitContent","reset","placeholder","_cachedPlaceholderHeight","undefined","_cacheTextareaPlaceholderHeight","minHeight","_cachedLineHeight","style","maxHeight","ngAfterViewInit","_initialHeight","height","window","_getWindow","pipe","_cacheTextareaLineHeight","textareaClone","cloneNode","rows","position","visibility","border","padding","overflow","parentNode","appendChild","clientHeight","_measureScrollHeight","previousMargin","marginBottom","isFirefox","FIREFOX","needsMarginFiller","measuringClass","scrollHeight","ngDoCheck","force","textarea","_previousValue","Math","max","requestAnimationFrame","_scrollToCaretPosition","setTimeout","_noopInputHandler","_getDocument","doc","defaultView","selectionStart","selectionEnd","isStopped","setSelectionRange","exportAs","host","decorators","TextFieldModule","ɵmod","ɵinj","declarations","imports","exports"],"mappings":"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","sourcesContent":["import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions, PlatformModule } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\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/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\nclass AutofillMonitor {\n    constructor(_platform, _ngZone) {\n        this._platform = _platform;\n        this._ngZone = _ngZone;\n        this._monitoredElements = new Map();\n    }\n    monitor(elementOrRef) {\n        if (!this._platform.isBrowser) {\n            return EMPTY;\n        }\n        const element = coerceElement(elementOrRef);\n        const info = this._monitoredElements.get(element);\n        if (info) {\n            return info.subject;\n        }\n        const result = new Subject();\n        const cssClass = 'cdk-text-field-autofilled';\n        const listener = ((event) => {\n            // Animation events fire on initial element render, we check for the presence of the autofill\n            // CSS class to make sure this is a real change in state, not just the initial render before\n            // we fire off events.\n            if (event.animationName === 'cdk-text-field-autofill-start' &&\n                !element.classList.contains(cssClass)) {\n                element.classList.add(cssClass);\n                this._ngZone.run(() => result.next({ target: event.target, isAutofilled: true }));\n            }\n            else if (event.animationName === 'cdk-text-field-autofill-end' &&\n                element.classList.contains(cssClass)) {\n                element.classList.remove(cssClass);\n                this._ngZone.run(() => result.next({ target: event.target, isAutofilled: false }));\n            }\n        });\n        this._ngZone.runOutsideAngular(() => {\n            element.addEventListener('animationstart', listener, listenerOptions);\n            element.classList.add('cdk-text-field-autofill-monitored');\n        });\n        this._monitoredElements.set(element, {\n            subject: result,\n            unlisten: () => {\n                element.removeEventListener('animationstart', listener, listenerOptions);\n            },\n        });\n        return result;\n    }\n    stopMonitoring(elementOrRef) {\n        const element = coerceElement(elementOrRef);\n        const info = this._monitoredElements.get(element);\n        if (info) {\n            info.unlisten();\n            info.subject.complete();\n            element.classList.remove('cdk-text-field-autofill-monitored');\n            element.classList.remove('cdk-text-field-autofilled');\n            this._monitoredElements.delete(element);\n        }\n    }\n    ngOnDestroy() {\n        this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n    }\n}\nAutofillMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AutofillMonitor, deps: [{ token: i1.Platform }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAutofillMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AutofillMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AutofillMonitor, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }]; } });\n/** A directive that can be used to monitor the autofill state of an input. */\nclass CdkAutofill {\n    constructor(_elementRef, _autofillMonitor) {\n        this._elementRef = _elementRef;\n        this._autofillMonitor = _autofillMonitor;\n        /** Emits when the autofill state of the element changes. */\n        this.cdkAutofill = new EventEmitter();\n    }\n    ngOnInit() {\n        this._autofillMonitor\n            .monitor(this._elementRef)\n            .subscribe(event => this.cdkAutofill.emit(event));\n    }\n    ngOnDestroy() {\n        this._autofillMonitor.stopMonitoring(this._elementRef);\n    }\n}\nCdkAutofill.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAutofill, deps: [{ token: i0.ElementRef }, { token: AutofillMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAutofill.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkAutofill, selector: \"[cdkAutofill]\", outputs: { cdkAutofill: \"cdkAutofill\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAutofill, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkAutofill]',\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AutofillMonitor }]; }, propDecorators: { cdkAutofill: [{\n                type: Output\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/** Directive to automatically resize a textarea to fit its content. */\nclass CdkTextareaAutosize {\n    constructor(_elementRef, _platform, _ngZone, \n    /** @breaking-change 11.0.0 make document required */\n    document) {\n        this._elementRef = _elementRef;\n        this._platform = _platform;\n        this._ngZone = _ngZone;\n        this._destroyed = new Subject();\n        this._enabled = true;\n        /**\n         * Value of minRows as of last resize. If the minRows has decreased, the\n         * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n         * does not have the same problem because it does not affect the textarea's scrollHeight.\n         */\n        this._previousMinRows = -1;\n        this._isViewInited = false;\n        /** Handles `focus` and `blur` events. */\n        this._handleFocusEvent = (event) => {\n            this._hasFocus = event.type === 'focus';\n        };\n        this._document = document;\n        this._textareaElement = this._elementRef.nativeElement;\n    }\n    /** Minimum amount of rows in the textarea. */\n    get minRows() {\n        return this._minRows;\n    }\n    set minRows(value) {\n        this._minRows = coerceNumberProperty(value);\n        this._setMinHeight();\n    }\n    /** Maximum amount of rows in the textarea. */\n    get maxRows() {\n        return this._maxRows;\n    }\n    set maxRows(value) {\n        this._maxRows = coerceNumberProperty(value);\n        this._setMaxHeight();\n    }\n    /** Whether autosizing is enabled or not */\n    get enabled() {\n        return this._enabled;\n    }\n    set enabled(value) {\n        value = coerceBooleanProperty(value);\n        // Only act if the actual value changed. This specifically helps to not run\n        // resizeToFitContent too early (i.e. before ngAfterViewInit)\n        if (this._enabled !== value) {\n            (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n        }\n    }\n    get placeholder() {\n        return this._textareaElement.placeholder;\n    }\n    set placeholder(value) {\n        this._cachedPlaceholderHeight = undefined;\n        this._textareaElement.placeholder = value;\n        this._cacheTextareaPlaceholderHeight();\n    }\n    /** Sets the minimum height of the textarea as determined by minRows. */\n    _setMinHeight() {\n        const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n        if (minHeight) {\n            this._textareaElement.style.minHeight = minHeight;\n        }\n    }\n    /** Sets the maximum height of the textarea as determined by maxRows. */\n    _setMaxHeight() {\n        const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n        if (maxHeight) {\n            this._textareaElement.style.maxHeight = maxHeight;\n        }\n    }\n    ngAfterViewInit() {\n        if (this._platform.isBrowser) {\n            // Remember the height which we started with in case autosizing is disabled\n            this._initialHeight = this._textareaElement.style.height;\n            this.resizeToFitContent();\n            this._ngZone.runOutsideAngular(() => {\n                const window = this._getWindow();\n                fromEvent(window, 'resize')\n                    .pipe(auditTime(16), takeUntil(this._destroyed))\n                    .subscribe(() => this.resizeToFitContent(true));\n                this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n                this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n            });\n            this._isViewInited = true;\n            this.resizeToFitContent(true);\n        }\n    }\n    ngOnDestroy() {\n        this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n        this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n        this._destroyed.next();\n        this._destroyed.complete();\n    }\n    /**\n     * Cache the height of a single-row textarea if it has not already been cached.\n     *\n     * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n     * maxRows. For the initial version, we will assume that the height of a single line in the\n     * textarea does not ever change.\n     */\n    _cacheTextareaLineHeight() {\n        if (this._cachedLineHeight) {\n            return;\n        }\n        // Use a clone element because we have to override some styles.\n        let textareaClone = this._textareaElement.cloneNode(false);\n        textareaClone.rows = 1;\n        // Use `position: absolute` so that this doesn't cause a browser layout and use\n        // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n        // would affect the height.\n        textareaClone.style.position = 'absolute';\n        textareaClone.style.visibility = 'hidden';\n        textareaClone.style.border = 'none';\n        textareaClone.style.padding = '0';\n        textareaClone.style.height = '';\n        textareaClone.style.minHeight = '';\n        textareaClone.style.maxHeight = '';\n        // In Firefox it happens that textarea elements are always bigger than the specified amount\n        // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n        // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n        // to hidden. This ensures that there is no invalid calculation of the line height.\n        // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n        textareaClone.style.overflow = 'hidden';\n        this._textareaElement.parentNode.appendChild(textareaClone);\n        this._cachedLineHeight = textareaClone.clientHeight;\n        textareaClone.remove();\n        // Min and max heights have to be re-calculated if the cached line height changes\n        this._setMinHeight();\n        this._setMaxHeight();\n    }\n    _measureScrollHeight() {\n        const element = this._textareaElement;\n        const previousMargin = element.style.marginBottom || '';\n        const isFirefox = this._platform.FIREFOX;\n        const needsMarginFiller = isFirefox && this._hasFocus;\n        const measuringClass = isFirefox\n            ? 'cdk-textarea-autosize-measuring-firefox'\n            : 'cdk-textarea-autosize-measuring';\n        // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n        // work around it by assigning a temporary margin with the same height as the `textarea` so that\n        // it occupies the same amount of space. See #23233.\n        if (needsMarginFiller) {\n            element.style.marginBottom = `${element.clientHeight}px`;\n        }\n        // Reset the textarea height to auto in order to shrink back to its default size.\n        // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n        element.classList.add(measuringClass);\n        // The measuring class includes a 2px padding to workaround an issue with Chrome,\n        // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n        const scrollHeight = element.scrollHeight - 4;\n        element.classList.remove(measuringClass);\n        if (needsMarginFiller) {\n            element.style.marginBottom = previousMargin;\n        }\n        return scrollHeight;\n    }\n    _cacheTextareaPlaceholderHeight() {\n        if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n            return;\n        }\n        if (!this.placeholder) {\n            this._cachedPlaceholderHeight = 0;\n            return;\n        }\n        const value = this._textareaElement.value;\n        this._textareaElement.value = this._textareaElement.placeholder;\n        this._cachedPlaceholderHeight = this._measureScrollHeight();\n        this._textareaElement.value = value;\n    }\n    ngDoCheck() {\n        if (this._platform.isBrowser) {\n            this.resizeToFitContent();\n        }\n    }\n    /**\n     * Resize the textarea to fit its content.\n     * @param force Whether to force a height recalculation. By default the height will be\n     *    recalculated only if the value changed since the last call.\n     */\n    resizeToFitContent(force = false) {\n        // If autosizing is disabled, just skip everything else\n        if (!this._enabled) {\n            return;\n        }\n        this._cacheTextareaLineHeight();\n        this._cacheTextareaPlaceholderHeight();\n        // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n        // in checking the height of the textarea.\n        if (!this._cachedLineHeight) {\n            return;\n        }\n        const textarea = this._elementRef.nativeElement;\n        const value = textarea.value;\n        // Only resize if the value or minRows have changed since these calculations can be expensive.\n        if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n            return;\n        }\n        const scrollHeight = this._measureScrollHeight();\n        const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n        // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n        textarea.style.height = `${height}px`;\n        this._ngZone.runOutsideAngular(() => {\n            if (typeof requestAnimationFrame !== 'undefined') {\n                requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n            }\n            else {\n                setTimeout(() => this._scrollToCaretPosition(textarea));\n            }\n        });\n        this._previousValue = value;\n        this._previousMinRows = this._minRows;\n    }\n    /**\n     * Resets the textarea to its original size\n     */\n    reset() {\n        // Do not try to change the textarea, if the initialHeight has not been determined yet\n        // This might potentially remove styles when reset() is called before ngAfterViewInit\n        if (this._initialHeight !== undefined) {\n            this._textareaElement.style.height = this._initialHeight;\n        }\n    }\n    _noopInputHandler() {\n        // no-op handler that ensures we're running change detection on input events.\n    }\n    /** Access injected document if available or fallback to global document reference */\n    _getDocument() {\n        return this._document || document;\n    }\n    /** Use defaultView of injected document if available or fallback to global window reference */\n    _getWindow() {\n        const doc = this._getDocument();\n        return doc.defaultView || window;\n    }\n    /**\n     * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n     * prevent it from scrolling to the caret position. We need to re-set the selection\n     * in order for it to scroll to the proper position.\n     */\n    _scrollToCaretPosition(textarea) {\n        const { selectionStart, selectionEnd } = textarea;\n        // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n        // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n        // between the time we requested the animation frame and when it was executed.\n        // Also note that we have to assert that the textarea is focused before we set the\n        // selection range. Setting the selection range on a non-focused textarea will cause\n        // it to receive focus on IE and Edge.\n        if (!this._destroyed.isStopped && this._hasFocus) {\n            textarea.setSelectionRange(selectionStart, selectionEnd);\n        }\n    }\n}\nCdkTextareaAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTextareaAutosize, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTextareaAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkTextareaAutosize, selector: \"textarea[cdkTextareaAutosize]\", inputs: { minRows: [\"cdkAutosizeMinRows\", \"minRows\"], maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"], enabled: [\"cdkTextareaAutosize\", \"enabled\"], placeholder: \"placeholder\" }, host: { attributes: { \"rows\": \"1\" }, listeners: { \"input\": \"_noopInputHandler()\" }, classAttribute: \"cdk-textarea-autosize\" }, exportAs: [\"cdkTextareaAutosize\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTextareaAutosize, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: 'textarea[cdkTextareaAutosize]',\n                    exportAs: 'cdkTextareaAutosize',\n                    host: {\n                        'class': 'cdk-textarea-autosize',\n                        // Textarea elements that have the directive applied should have a single row by default.\n                        // Browsers normally show two rows by default and therefore this limits the minRows binding.\n                        'rows': '1',\n                        '(input)': '_noopInputHandler()',\n                    },\n                }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n                    type: Optional\n                }, {\n                    type: Inject,\n                    args: [DOCUMENT]\n                }] }]; }, propDecorators: { minRows: [{\n                type: Input,\n                args: ['cdkAutosizeMinRows']\n            }], maxRows: [{\n                type: Input,\n                args: ['cdkAutosizeMaxRows']\n            }], enabled: [{\n                type: Input,\n                args: ['cdkTextareaAutosize']\n            }], placeholder: [{\n                type: Input\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 */\nclass TextFieldModule {\n}\nTextFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, declarations: [CdkAutofill, CdkTextareaAutosize], imports: [PlatformModule], exports: [CdkAutofill, CdkTextareaAutosize] });\nTextFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, imports: [[PlatformModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TextFieldModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    declarations: [CdkAutofill, CdkTextareaAutosize],\n                    imports: [PlatformModule],\n                    exports: [CdkAutofill, CdkTextareaAutosize],\n                }]\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/cdec284094ef06313fc56d2dd9479cad.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/cdec284094ef06313fc56d2dd9479cad.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/cdec284094ef06313fc56d2dd9479cad.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\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.\n\nlet hasV8BreakIterator; // 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\n\ntry {\n  hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n} catch {\n  hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n\n\nclass Platform {\n  constructor(_platformId) {\n    this._platformId = _platformId; // 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\n    /** Whether the Angular application is being rendered in the browser. */\n\n    this.isBrowser = this._platformId ? isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n    /** Whether the current browser is Microsoft Edge. */\n\n    this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n    /** Whether the current rendering engine is Microsoft Trident. */\n\n    this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent); // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n\n    /** Whether the current rendering engine is Blink. */\n\n    this.BLINK = this.isBrowser && !!(window.chrome || hasV8BreakIterator) && typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT; // 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\n    /** Whether the current rendering engine is WebKit. */\n\n    this.WEBKIT = this.isBrowser && /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n    /** Whether the current platform is Apple iOS. */\n\n    this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window); // 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\n    /** Whether the current browser is Firefox. */\n\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\n    this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT; // 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\n    /** Whether the current browser is Safari. */\n\n    this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n  }\n\n}\n\nPlatform.ɵfac = function Platform_Factory(t) {\n  return new (t || Platform)(i0.ɵɵinject(PLATFORM_ID));\n};\n\nPlatform.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: Platform,\n  factory: Platform.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Platform, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: Object,\n      decorators: [{\n        type: Inject,\n        args: [PLATFORM_ID]\n      }]\n    }];\n  }, null);\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\nclass PlatformModule {}\n\nPlatformModule.ɵfac = function PlatformModule_Factory(t) {\n  return new (t || PlatformModule)();\n};\n\nPlatformModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: PlatformModule\n});\nPlatformModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PlatformModule, [{\n    type: NgModule,\n    args: [{}]\n  }], null, null);\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/** Cached result Set of input types support by the current browser. */\n\n\nlet supportedInputTypes;\n/** Types of `<input>` that *might* be supported. */\n\nconst candidateInputTypes = [// `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n// first changing it to something else:\n// The specified value \"\" does not conform to the required format.\n// The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n'color', 'button', 'checkbox', 'date', 'datetime-local', 'email', 'file', 'hidden', 'image', 'month', 'number', 'password', 'radio', 'range', 'reset', 'search', 'submit', 'tel', 'text', 'time', 'url', 'week'];\n/** @returns The input types supported by this browser. */\n\nfunction getSupportedInputTypes() {\n  // Result is cached.\n  if (supportedInputTypes) {\n    return supportedInputTypes;\n  } // We can't check if an input type is not supported until we're on the browser, so say that\n  // everything is supported when not on the browser. We don't use `Platform` here since it's\n  // just a helper function and can't inject it.\n\n\n  if (typeof document !== 'object' || !document) {\n    supportedInputTypes = new Set(candidateInputTypes);\n    return supportedInputTypes;\n  }\n\n  let featureTestInput = document.createElement('input');\n  supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n    featureTestInput.setAttribute('type', value);\n    return featureTestInput.type === value;\n  }));\n  return supportedInputTypes;\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/** Cached result of whether the user's browser supports passive event listeners. */\n\n\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\n\nfunction supportsPassiveEventListeners() {\n  if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n    try {\n      window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n        get: () => supportsPassiveEvents = true\n      }));\n    } finally {\n      supportsPassiveEvents = supportsPassiveEvents || false;\n    }\n  }\n\n  return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\n\n\nfunction normalizePassiveListenerOptions(options) {\n  return supportsPassiveEventListeners() ? options : !!options.capture;\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/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\n\n\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\n\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\n\nfunction supportsScrollBehavior() {\n  if (scrollBehaviorSupported == null) {\n    // If we're not in the browser, it can't be supported. Also check for `Element`, because\n    // some projects stub out the global `document` during SSR which can throw us off.\n    if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n      scrollBehaviorSupported = false;\n      return scrollBehaviorSupported;\n    } // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n\n\n    if ('scrollBehavior' in document.documentElement.style) {\n      scrollBehaviorSupported = true;\n    } else {\n      // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n      // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n      const scrollToFunction = Element.prototype.scrollTo;\n\n      if (scrollToFunction) {\n        // We can detect if the function has been polyfilled by calling `toString` on it. Native\n        // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n        // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n        // polyfilled functions as supporting scroll behavior.\n        scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n      } else {\n        scrollBehaviorSupported = false;\n      }\n    }\n  }\n\n  return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\n\n\nfunction getRtlScrollAxisType() {\n  // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n  if (typeof document !== 'object' || !document) {\n    return 0\n    /* NORMAL */\n    ;\n  }\n\n  if (rtlScrollAxisType == null) {\n    // Create a 1px wide scrolling container and a 2px wide content element.\n    const scrollContainer = document.createElement('div');\n    const containerStyle = scrollContainer.style;\n    scrollContainer.dir = 'rtl';\n    containerStyle.width = '1px';\n    containerStyle.overflow = 'auto';\n    containerStyle.visibility = 'hidden';\n    containerStyle.pointerEvents = 'none';\n    containerStyle.position = 'absolute';\n    const content = document.createElement('div');\n    const contentStyle = content.style;\n    contentStyle.width = '2px';\n    contentStyle.height = '1px';\n    scrollContainer.appendChild(content);\n    document.body.appendChild(scrollContainer);\n    rtlScrollAxisType = 0\n    /* NORMAL */\n    ; // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n    // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n    // dealing with one of the other two types of browsers.\n\n    if (scrollContainer.scrollLeft === 0) {\n      // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n      // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n      // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n      // return 0 when we read it again.\n      scrollContainer.scrollLeft = 1;\n      rtlScrollAxisType = scrollContainer.scrollLeft === 0 ? 1\n      /* NEGATED */\n      : 2\n      /* INVERTED */\n      ;\n    }\n\n    scrollContainer.remove();\n  }\n\n  return rtlScrollAxisType;\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\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\n\nfunction _supportsShadowDom() {\n  if (shadowDomIsSupported == null) {\n    const head = typeof document !== 'undefined' ? document.head : null;\n    shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n  }\n\n  return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\n\n\nfunction _getShadowRoot(element) {\n  if (_supportsShadowDom()) {\n    const rootNode = element.getRootNode ? element.getRootNode() : null; // Note that this should be caught by `_supportsShadowDom`, but some\n    // teams have been able to hit this code path on unsupported browsers.\n\n    if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n      return rootNode;\n    }\n  }\n\n  return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\n\n\nfunction _getFocusedElementPierceShadowDom() {\n  let activeElement = typeof document !== 'undefined' && document ? document.activeElement : null;\n\n  while (activeElement && activeElement.shadowRoot) {\n    const newActiveElement = activeElement.shadowRoot.activeElement;\n\n    if (newActiveElement === activeElement) {\n      break;\n    } else {\n      activeElement = newActiveElement;\n    }\n  }\n\n  return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\n\n\nfunction _getEventTarget(event) {\n  // If an event is bound outside the Shadow DOM, the `event.target` will\n  // point to the shadow root so we have to use `composedPath` instead.\n  return event.composedPath ? event.composedPath()[0] : event.target;\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/** Gets whether the code is currently running in a test environment. */\n\n\nfunction _isTestEnvironment() {\n  // We can't use `declare const` because it causes conflicts inside Google with the real typings\n  // for these symbols and we can't read them off the global object, because they don't appear to\n  // be attached there for some runners like Jest.\n  // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n  return (// @ts-ignore\n    typeof __karma__ !== 'undefined' && !!__karma__ || // @ts-ignore\n    typeof jasmine !== 'undefined' && !!jasmine || // @ts-ignore\n    typeof jest !== 'undefined' && !!jest || // @ts-ignore\n    typeof Mocha !== 'undefined' && !!Mocha\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/platform.mjs"],"names":["i0","PLATFORM_ID","Injectable","Inject","NgModule","isPlatformBrowser","hasV8BreakIterator","Intl","v8BreakIterator","Platform","constructor","_platformId","isBrowser","document","EDGE","test","navigator","userAgent","TRIDENT","BLINK","window","chrome","CSS","WEBKIT","IOS","FIREFOX","ANDROID","SAFARI","ɵfac","ɵprov","type","args","providedIn","Object","decorators","PlatformModule","ɵmod","ɵinj","supportedInputTypes","candidateInputTypes","getSupportedInputTypes","Set","featureTestInput","createElement","filter","value","setAttribute","supportsPassiveEvents","supportsPassiveEventListeners","addEventListener","defineProperty","get","normalizePassiveListenerOptions","options","capture","rtlScrollAxisType","scrollBehaviorSupported","supportsScrollBehavior","Element","documentElement","style","scrollToFunction","prototype","scrollTo","toString","getRtlScrollAxisType","scrollContainer","containerStyle","dir","width","overflow","visibility","pointerEvents","position","content","contentStyle","height","appendChild","body","scrollLeft","remove","shadowDomIsSupported","_supportsShadowDom","head","createShadowRoot","attachShadow","_getShadowRoot","element","rootNode","getRootNode","ShadowRoot","_getFocusedElementPierceShadowDom","activeElement","shadowRoot","newActiveElement","_getEventTarget","event","composedPath","target","_isTestEnvironment","__karma__","jasmine","jest","Mocha"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\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 {\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)\n            : 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 &&\n            !!(window.chrome || hasV8BreakIterator) &&\n            typeof CSS !== 'undefined' &&\n            !this.EDGE &&\n            !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) &&\n            !this.BLINK &&\n            !this.EDGE &&\n            !this.TRIDENT;\n        /** Whether the current platform is Apple iOS. */\n        this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n        // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n        // them self as Gecko-like browsers and modify the userAgent's according to that.\n        // Since we only cover one explicit Firefox case, we can simply check for Firefox\n        // instead of having an unstable check for Gecko.\n        /** Whether the current browser is Firefox. */\n        this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n        /** Whether the current platform is Android. */\n        // Trident on mobile adds the android platform to the userAgent to trick detections.\n        this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n        // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n        // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n        // Safari browser should also use Webkit as its layout engine.\n        /** Whether the current browser is Safari. */\n        this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n    }\n}\nPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Platform, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Platform, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: Object, decorators: [{\n                    type: Inject,\n                    args: [PLATFORM_ID]\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 */\nclass PlatformModule {\n}\nPlatformModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPlatformModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule });\nPlatformModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule, decorators: [{\n            type: NgModule,\n            args: [{}]\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/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `<input>` that *might* be supported. */\nconst candidateInputTypes = [\n    // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n    // first changing it to something else:\n    // The specified value \"\" does not conform to the required format.\n    // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n    'color',\n    'button',\n    'checkbox',\n    'date',\n    'datetime-local',\n    'email',\n    'file',\n    'hidden',\n    'image',\n    'month',\n    'number',\n    'password',\n    'radio',\n    'range',\n    'reset',\n    'search',\n    'submit',\n    'tel',\n    'text',\n    'time',\n    'url',\n    'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n    // Result is cached.\n    if (supportedInputTypes) {\n        return supportedInputTypes;\n    }\n    // We can't check if an input type is not supported until we're on the browser, so say that\n    // everything is supported when not on the browser. We don't use `Platform` here since it's\n    // just a helper function and can't inject it.\n    if (typeof document !== 'object' || !document) {\n        supportedInputTypes = new Set(candidateInputTypes);\n        return supportedInputTypes;\n    }\n    let featureTestInput = document.createElement('input');\n    supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n        featureTestInput.setAttribute('type', value);\n        return featureTestInput.type === value;\n    }));\n    return supportedInputTypes;\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/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n    if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n        try {\n            window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n                get: () => (supportsPassiveEvents = true),\n            }));\n        }\n        finally {\n            supportsPassiveEvents = supportsPassiveEvents || false;\n        }\n    }\n    return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n    return supportsPassiveEventListeners() ? options : !!options.capture;\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/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n    if (scrollBehaviorSupported == null) {\n        // If we're not in the browser, it can't be supported. Also check for `Element`, because\n        // some projects stub out the global `document` during SSR which can throw us off.\n        if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n            scrollBehaviorSupported = false;\n            return scrollBehaviorSupported;\n        }\n        // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n        if ('scrollBehavior' in document.documentElement.style) {\n            scrollBehaviorSupported = true;\n        }\n        else {\n            // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n            // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n            const scrollToFunction = Element.prototype.scrollTo;\n            if (scrollToFunction) {\n                // We can detect if the function has been polyfilled by calling `toString` on it. Native\n                // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n                // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n                // polyfilled functions as supporting scroll behavior.\n                scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n            }\n            else {\n                scrollBehaviorSupported = false;\n            }\n        }\n    }\n    return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n    // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n    if (typeof document !== 'object' || !document) {\n        return 0 /* NORMAL */;\n    }\n    if (rtlScrollAxisType == null) {\n        // Create a 1px wide scrolling container and a 2px wide content element.\n        const scrollContainer = document.createElement('div');\n        const containerStyle = scrollContainer.style;\n        scrollContainer.dir = 'rtl';\n        containerStyle.width = '1px';\n        containerStyle.overflow = 'auto';\n        containerStyle.visibility = 'hidden';\n        containerStyle.pointerEvents = 'none';\n        containerStyle.position = 'absolute';\n        const content = document.createElement('div');\n        const contentStyle = content.style;\n        contentStyle.width = '2px';\n        contentStyle.height = '1px';\n        scrollContainer.appendChild(content);\n        document.body.appendChild(scrollContainer);\n        rtlScrollAxisType = 0 /* NORMAL */;\n        // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n        // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n        // dealing with one of the other two types of browsers.\n        if (scrollContainer.scrollLeft === 0) {\n            // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n            // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n            // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n            // return 0 when we read it again.\n            scrollContainer.scrollLeft = 1;\n            rtlScrollAxisType =\n                scrollContainer.scrollLeft === 0 ? 1 /* NEGATED */ : 2 /* INVERTED */;\n        }\n        scrollContainer.remove();\n    }\n    return rtlScrollAxisType;\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 */\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n    if (shadowDomIsSupported == null) {\n        const head = typeof document !== 'undefined' ? document.head : null;\n        shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n    }\n    return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n    if (_supportsShadowDom()) {\n        const rootNode = element.getRootNode ? element.getRootNode() : null;\n        // Note that this should be caught by `_supportsShadowDom`, but some\n        // teams have been able to hit this code path on unsupported browsers.\n        if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n            return rootNode;\n        }\n    }\n    return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n    let activeElement = typeof document !== 'undefined' && document\n        ? document.activeElement\n        : null;\n    while (activeElement && activeElement.shadowRoot) {\n        const newActiveElement = activeElement.shadowRoot.activeElement;\n        if (newActiveElement === activeElement) {\n            break;\n        }\n        else {\n            activeElement = newActiveElement;\n        }\n    }\n    return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n    // If an event is bound outside the Shadow DOM, the `event.target` will\n    // point to the shadow root so we have to use `composedPath` instead.\n    return (event.composedPath ? event.composedPath()[0] : event.target);\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/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n    // We can't use `declare const` because it causes conflicts inside Google with the real typings\n    // for these symbols and we can't read them off the global object, because they don't appear to\n    // be attached there for some runners like Jest.\n    // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n    return (\n    // @ts-ignore\n    (typeof __karma__ !== 'undefined' && !!__karma__) ||\n        // @ts-ignore\n        (typeof jasmine !== 'undefined' && !!jasmine) ||\n        // @ts-ignore\n        (typeof jest !== 'undefined' && !!jest) ||\n        // @ts-ignore\n        (typeof Mocha !== 'undefined' && !!Mocha));\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/d081e124459d6c75557b8f8c48c9a9c7.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/d081e124459d6c75557b8f8c48c9a9c7.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/d081e124459d6c75557b8f8c48c9a9c7.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import { isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\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\nclass DataSource {}\n/** Checks whether an object is a data source. */\n\n\nfunction isDataSource(value) {\n  // Check if the value is a DataSource by observing if it has a connect function. Cannot\n  // be checked as an `instanceof DataSource` since people could create their own sources\n  // that match the interface, but don't extend DataSource.\n  return value && typeof value.connect === 'function';\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/** DataSource wrapper for a native array. */\n\n\nclass ArrayDataSource extends DataSource {\n  constructor(_data) {\n    super();\n    this._data = _data;\n  }\n\n  connect() {\n    return isObservable(this._data) ? this._data : of(this._data);\n  }\n\n  disconnect() {}\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/**\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/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\n\n\nclass _DisposeViewRepeaterStrategy {\n  applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n    changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n      let view;\n      let operation;\n\n      if (record.previousIndex == null) {\n        const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n        view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n        operation = 1\n        /* INSERTED */\n        ;\n      } else if (currentIndex == null) {\n        viewContainerRef.remove(adjustedPreviousIndex);\n        operation = 3\n        /* REMOVED */\n        ;\n      } else {\n        view = viewContainerRef.get(adjustedPreviousIndex);\n        viewContainerRef.move(view, currentIndex);\n        operation = 2\n        /* MOVED */\n        ;\n      }\n\n      if (itemViewChanged) {\n        itemViewChanged({\n          context: view?.context,\n          operation,\n          record\n        });\n      }\n    });\n  }\n\n  detach() {}\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/**\n * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\n\n\nclass _RecycleViewRepeaterStrategy {\n  constructor() {\n    /**\n     * The size of the cache used to store unused views.\n     * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n     */\n    this.viewCacheSize = 20;\n    /**\n     * View cache that stores embedded view instances that have been previously stamped out,\n     * but don't are not currently rendered. The view repeater will reuse these views rather than\n     * creating brand new ones.\n     *\n     * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n     */\n\n    this._viewCache = [];\n  }\n  /** Apply changes to the DOM. */\n\n\n  applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n    // Rearrange the views to put them in the right location.\n    changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n      let view;\n      let operation;\n\n      if (record.previousIndex == null) {\n        // Item added.\n        const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n\n        view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n        operation = view ? 1\n        /* INSERTED */\n        : 0\n        /* REPLACED */\n        ;\n      } else if (currentIndex == null) {\n        // Item removed.\n        this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n\n        operation = 3\n        /* REMOVED */\n        ;\n      } else {\n        // Item moved.\n        view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n        operation = 2\n        /* MOVED */\n        ;\n      }\n\n      if (itemViewChanged) {\n        itemViewChanged({\n          context: view?.context,\n          operation,\n          record\n        });\n      }\n    });\n  }\n\n  detach() {\n    for (const view of this._viewCache) {\n      view.destroy();\n    }\n\n    this._viewCache = [];\n  }\n  /**\n   * Inserts a view for a new item, either from the cache or by creating a new\n   * one. Returns `undefined` if the item was inserted into a cached view.\n   */\n\n\n  _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n    const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n\n    if (cachedView) {\n      cachedView.context.$implicit = value;\n      return undefined;\n    }\n\n    const viewArgs = viewArgsFactory();\n    return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n  }\n  /** Detaches the view at the given index and inserts into the view cache. */\n\n\n  _detachAndCacheView(index, viewContainerRef) {\n    const detachedView = viewContainerRef.detach(index);\n\n    this._maybeCacheView(detachedView, viewContainerRef);\n  }\n  /** Moves view at the previous index to the current index. */\n\n\n  _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n    const view = viewContainerRef.get(adjustedPreviousIndex);\n    viewContainerRef.move(view, currentIndex);\n    view.context.$implicit = value;\n    return view;\n  }\n  /**\n   * Cache the given detached view. If the cache is full, the view will be\n   * destroyed.\n   */\n\n\n  _maybeCacheView(view, viewContainerRef) {\n    if (this._viewCache.length < this.viewCacheSize) {\n      this._viewCache.push(view);\n    } else {\n      const index = viewContainerRef.indexOf(view); // The host component could remove views from the container outside of\n      // the view repeater. It's unlikely this will occur, but just in case,\n      // destroy the view on its own, otherwise destroy it through the\n      // container to ensure that all the references are removed.\n\n      if (index === -1) {\n        view.destroy();\n      } else {\n        viewContainerRef.remove(index);\n      }\n    }\n  }\n  /** Inserts a recycled view from the cache at the given index. */\n\n\n  _insertViewFromCache(index, viewContainerRef) {\n    const cachedView = this._viewCache.pop();\n\n    if (cachedView) {\n      viewContainerRef.insert(cachedView, index);\n    }\n\n    return cachedView || null;\n  }\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/**\n * Class to be used to power selecting one or more options from a list.\n */\n\n\nclass SelectionModel {\n  constructor(_multiple = false, initiallySelectedValues, _emitChanges = true) {\n    this._multiple = _multiple;\n    this._emitChanges = _emitChanges;\n    /** Currently-selected values. */\n\n    this._selection = new Set();\n    /** Keeps track of the deselected options that haven't been emitted by the change event. */\n\n    this._deselectedToEmit = [];\n    /** Keeps track of the selected options that haven't been emitted by the change event. */\n\n    this._selectedToEmit = [];\n    /** Event emitted when the value has changed. */\n\n    this.changed = new Subject();\n\n    if (initiallySelectedValues && initiallySelectedValues.length) {\n      if (_multiple) {\n        initiallySelectedValues.forEach(value => this._markSelected(value));\n      } else {\n        this._markSelected(initiallySelectedValues[0]);\n      } // Clear the array in order to avoid firing the change event for preselected values.\n\n\n      this._selectedToEmit.length = 0;\n    }\n  }\n  /** Selected values. */\n\n\n  get selected() {\n    if (!this._selected) {\n      this._selected = Array.from(this._selection.values());\n    }\n\n    return this._selected;\n  }\n  /**\n   * Selects a value or an array of values.\n   */\n\n\n  select(...values) {\n    this._verifyValueAssignment(values);\n\n    values.forEach(value => this._markSelected(value));\n\n    this._emitChangeEvent();\n  }\n  /**\n   * Deselects a value or an array of values.\n   */\n\n\n  deselect(...values) {\n    this._verifyValueAssignment(values);\n\n    values.forEach(value => this._unmarkSelected(value));\n\n    this._emitChangeEvent();\n  }\n  /**\n   * Toggles a value between selected and deselected.\n   */\n\n\n  toggle(value) {\n    this.isSelected(value) ? this.deselect(value) : this.select(value);\n  }\n  /**\n   * Clears all of the selected values.\n   */\n\n\n  clear() {\n    this._unmarkAll();\n\n    this._emitChangeEvent();\n  }\n  /**\n   * Determines whether a value is selected.\n   */\n\n\n  isSelected(value) {\n    return this._selection.has(value);\n  }\n  /**\n   * Determines whether the model does not have a value.\n   */\n\n\n  isEmpty() {\n    return this._selection.size === 0;\n  }\n  /**\n   * Determines whether the model has a value.\n   */\n\n\n  hasValue() {\n    return !this.isEmpty();\n  }\n  /**\n   * Sorts the selected values based on a predicate function.\n   */\n\n\n  sort(predicate) {\n    if (this._multiple && this.selected) {\n      this._selected.sort(predicate);\n    }\n  }\n  /**\n   * Gets whether multiple values can be selected.\n   */\n\n\n  isMultipleSelection() {\n    return this._multiple;\n  }\n  /** Emits a change event and clears the records of selected and deselected values. */\n\n\n  _emitChangeEvent() {\n    // Clear the selected values so they can be re-cached.\n    this._selected = null;\n\n    if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n      this.changed.next({\n        source: this,\n        added: this._selectedToEmit,\n        removed: this._deselectedToEmit\n      });\n      this._deselectedToEmit = [];\n      this._selectedToEmit = [];\n    }\n  }\n  /** Selects a value. */\n\n\n  _markSelected(value) {\n    if (!this.isSelected(value)) {\n      if (!this._multiple) {\n        this._unmarkAll();\n      }\n\n      this._selection.add(value);\n\n      if (this._emitChanges) {\n        this._selectedToEmit.push(value);\n      }\n    }\n  }\n  /** Deselects a value. */\n\n\n  _unmarkSelected(value) {\n    if (this.isSelected(value)) {\n      this._selection.delete(value);\n\n      if (this._emitChanges) {\n        this._deselectedToEmit.push(value);\n      }\n    }\n  }\n  /** Clears out the selected values. */\n\n\n  _unmarkAll() {\n    if (!this.isEmpty()) {\n      this._selection.forEach(value => this._unmarkSelected(value));\n    }\n  }\n  /**\n   * Verifies the value assignment and throws an error if the specified value array is\n   * including multiple values while the selection model is not supporting multiple values.\n   */\n\n\n  _verifyValueAssignment(values) {\n    if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw getMultipleValuesInSingleSelectionError();\n    }\n  }\n\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\n\n\nfunction getMultipleValuesInSingleSelectionError() {\n  return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\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/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\n\n\nclass UniqueSelectionDispatcher {\n  constructor() {\n    this._listeners = [];\n  }\n  /**\n   * Notify other items that selection for the given name has been set.\n   * @param id ID of the item.\n   * @param name Name of the item.\n   */\n\n\n  notify(id, name) {\n    for (let listener of this._listeners) {\n      listener(id, name);\n    }\n  }\n  /**\n   * Listen for future changes to item selection.\n   * @return Function used to deregister listener\n   */\n\n\n  listen(listener) {\n    this._listeners.push(listener);\n\n    return () => {\n      this._listeners = this._listeners.filter(registered => {\n        return listener !== registered;\n      });\n    };\n  }\n\n  ngOnDestroy() {\n    this._listeners = [];\n  }\n\n}\n\nUniqueSelectionDispatcher.ɵfac = function UniqueSelectionDispatcher_Factory(t) {\n  return new (t || UniqueSelectionDispatcher)();\n};\n\nUniqueSelectionDispatcher.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: UniqueSelectionDispatcher,\n  factory: UniqueSelectionDispatcher.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UniqueSelectionDispatcher, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\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/**\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/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\n\n\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/collections.mjs"],"names":["isObservable","of","Subject","i0","Injectable","InjectionToken","DataSource","isDataSource","value","connect","ArrayDataSource","constructor","_data","disconnect","_DisposeViewRepeaterStrategy","applyChanges","changes","viewContainerRef","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","record","adjustedPreviousIndex","currentIndex","view","operation","previousIndex","insertContext","createEmbeddedView","templateRef","context","index","remove","get","move","detach","_RecycleViewRepeaterStrategy","viewCacheSize","_viewCache","viewArgsFactory","_insertView","_detachAndCacheView","_moveView","destroy","cachedView","_insertViewFromCache","$implicit","undefined","viewArgs","detachedView","_maybeCacheView","length","push","indexOf","pop","insert","SelectionModel","_multiple","initiallySelectedValues","_emitChanges","_selection","Set","_deselectedToEmit","_selectedToEmit","changed","forEach","_markSelected","selected","_selected","Array","from","values","select","_verifyValueAssignment","_emitChangeEvent","deselect","_unmarkSelected","toggle","isSelected","clear","_unmarkAll","has","isEmpty","size","hasValue","sort","predicate","isMultipleSelection","next","source","added","removed","add","delete","ngDevMode","getMultipleValuesInSingleSelectionError","Error","UniqueSelectionDispatcher","_listeners","notify","id","name","listener","listen","filter","registered","ngOnDestroy","ɵfac","ɵprov","type","args","providedIn","_VIEW_REPEATER_STRATEGY"],"mappings":"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","sourcesContent":["import { isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\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 */\nclass DataSource {\n}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n    // Check if the value is a DataSource by observing if it has a connect function. Cannot\n    // be checked as an `instanceof DataSource` since people could create their own sources\n    // that match the interface, but don't extend DataSource.\n    return value && typeof value.connect === 'function';\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/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n    constructor(_data) {\n        super();\n        this._data = _data;\n    }\n    connect() {\n        return isObservable(this._data) ? this._data : of(this._data);\n    }\n    disconnect() { }\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/**\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 * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n    applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n        changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n            let view;\n            let operation;\n            if (record.previousIndex == null) {\n                const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n                view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n                operation = 1 /* INSERTED */;\n            }\n            else if (currentIndex == null) {\n                viewContainerRef.remove(adjustedPreviousIndex);\n                operation = 3 /* REMOVED */;\n            }\n            else {\n                view = viewContainerRef.get(adjustedPreviousIndex);\n                viewContainerRef.move(view, currentIndex);\n                operation = 2 /* MOVED */;\n            }\n            if (itemViewChanged) {\n                itemViewChanged({\n                    context: view?.context,\n                    operation,\n                    record,\n                });\n            }\n        });\n    }\n    detach() { }\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 * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n    constructor() {\n        /**\n         * The size of the cache used to store unused views.\n         * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n         */\n        this.viewCacheSize = 20;\n        /**\n         * View cache that stores embedded view instances that have been previously stamped out,\n         * but don't are not currently rendered. The view repeater will reuse these views rather than\n         * creating brand new ones.\n         *\n         * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n         */\n        this._viewCache = [];\n    }\n    /** Apply changes to the DOM. */\n    applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n        // Rearrange the views to put them in the right location.\n        changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n            let view;\n            let operation;\n            if (record.previousIndex == null) {\n                // Item added.\n                const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n                view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n                operation = view ? 1 /* INSERTED */ : 0 /* REPLACED */;\n            }\n            else if (currentIndex == null) {\n                // Item removed.\n                this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n                operation = 3 /* REMOVED */;\n            }\n            else {\n                // Item moved.\n                view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n                operation = 2 /* MOVED */;\n            }\n            if (itemViewChanged) {\n                itemViewChanged({\n                    context: view?.context,\n                    operation,\n                    record,\n                });\n            }\n        });\n    }\n    detach() {\n        for (const view of this._viewCache) {\n            view.destroy();\n        }\n        this._viewCache = [];\n    }\n    /**\n     * Inserts a view for a new item, either from the cache or by creating a new\n     * one. Returns `undefined` if the item was inserted into a cached view.\n     */\n    _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n        const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n        if (cachedView) {\n            cachedView.context.$implicit = value;\n            return undefined;\n        }\n        const viewArgs = viewArgsFactory();\n        return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n    }\n    /** Detaches the view at the given index and inserts into the view cache. */\n    _detachAndCacheView(index, viewContainerRef) {\n        const detachedView = viewContainerRef.detach(index);\n        this._maybeCacheView(detachedView, viewContainerRef);\n    }\n    /** Moves view at the previous index to the current index. */\n    _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n        const view = viewContainerRef.get(adjustedPreviousIndex);\n        viewContainerRef.move(view, currentIndex);\n        view.context.$implicit = value;\n        return view;\n    }\n    /**\n     * Cache the given detached view. If the cache is full, the view will be\n     * destroyed.\n     */\n    _maybeCacheView(view, viewContainerRef) {\n        if (this._viewCache.length < this.viewCacheSize) {\n            this._viewCache.push(view);\n        }\n        else {\n            const index = viewContainerRef.indexOf(view);\n            // The host component could remove views from the container outside of\n            // the view repeater. It's unlikely this will occur, but just in case,\n            // destroy the view on its own, otherwise destroy it through the\n            // container to ensure that all the references are removed.\n            if (index === -1) {\n                view.destroy();\n            }\n            else {\n                viewContainerRef.remove(index);\n            }\n        }\n    }\n    /** Inserts a recycled view from the cache at the given index. */\n    _insertViewFromCache(index, viewContainerRef) {\n        const cachedView = this._viewCache.pop();\n        if (cachedView) {\n            viewContainerRef.insert(cachedView, index);\n        }\n        return cachedView || null;\n    }\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 to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n    constructor(_multiple = false, initiallySelectedValues, _emitChanges = true) {\n        this._multiple = _multiple;\n        this._emitChanges = _emitChanges;\n        /** Currently-selected values. */\n        this._selection = new Set();\n        /** Keeps track of the deselected options that haven't been emitted by the change event. */\n        this._deselectedToEmit = [];\n        /** Keeps track of the selected options that haven't been emitted by the change event. */\n        this._selectedToEmit = [];\n        /** Event emitted when the value has changed. */\n        this.changed = new Subject();\n        if (initiallySelectedValues && initiallySelectedValues.length) {\n            if (_multiple) {\n                initiallySelectedValues.forEach(value => this._markSelected(value));\n            }\n            else {\n                this._markSelected(initiallySelectedValues[0]);\n            }\n            // Clear the array in order to avoid firing the change event for preselected values.\n            this._selectedToEmit.length = 0;\n        }\n    }\n    /** Selected values. */\n    get selected() {\n        if (!this._selected) {\n            this._selected = Array.from(this._selection.values());\n        }\n        return this._selected;\n    }\n    /**\n     * Selects a value or an array of values.\n     */\n    select(...values) {\n        this._verifyValueAssignment(values);\n        values.forEach(value => this._markSelected(value));\n        this._emitChangeEvent();\n    }\n    /**\n     * Deselects a value or an array of values.\n     */\n    deselect(...values) {\n        this._verifyValueAssignment(values);\n        values.forEach(value => this._unmarkSelected(value));\n        this._emitChangeEvent();\n    }\n    /**\n     * Toggles a value between selected and deselected.\n     */\n    toggle(value) {\n        this.isSelected(value) ? this.deselect(value) : this.select(value);\n    }\n    /**\n     * Clears all of the selected values.\n     */\n    clear() {\n        this._unmarkAll();\n        this._emitChangeEvent();\n    }\n    /**\n     * Determines whether a value is selected.\n     */\n    isSelected(value) {\n        return this._selection.has(value);\n    }\n    /**\n     * Determines whether the model does not have a value.\n     */\n    isEmpty() {\n        return this._selection.size === 0;\n    }\n    /**\n     * Determines whether the model has a value.\n     */\n    hasValue() {\n        return !this.isEmpty();\n    }\n    /**\n     * Sorts the selected values based on a predicate function.\n     */\n    sort(predicate) {\n        if (this._multiple && this.selected) {\n            this._selected.sort(predicate);\n        }\n    }\n    /**\n     * Gets whether multiple values can be selected.\n     */\n    isMultipleSelection() {\n        return this._multiple;\n    }\n    /** Emits a change event and clears the records of selected and deselected values. */\n    _emitChangeEvent() {\n        // Clear the selected values so they can be re-cached.\n        this._selected = null;\n        if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n            this.changed.next({\n                source: this,\n                added: this._selectedToEmit,\n                removed: this._deselectedToEmit,\n            });\n            this._deselectedToEmit = [];\n            this._selectedToEmit = [];\n        }\n    }\n    /** Selects a value. */\n    _markSelected(value) {\n        if (!this.isSelected(value)) {\n            if (!this._multiple) {\n                this._unmarkAll();\n            }\n            this._selection.add(value);\n            if (this._emitChanges) {\n                this._selectedToEmit.push(value);\n            }\n        }\n    }\n    /** Deselects a value. */\n    _unmarkSelected(value) {\n        if (this.isSelected(value)) {\n            this._selection.delete(value);\n            if (this._emitChanges) {\n                this._deselectedToEmit.push(value);\n            }\n        }\n    }\n    /** Clears out the selected values. */\n    _unmarkAll() {\n        if (!this.isEmpty()) {\n            this._selection.forEach(value => this._unmarkSelected(value));\n        }\n    }\n    /**\n     * Verifies the value assignment and throws an error if the specified value array is\n     * including multiple values while the selection model is not supporting multiple values.\n     */\n    _verifyValueAssignment(values) {\n        if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n            throw getMultipleValuesInSingleSelectionError();\n        }\n    }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n    return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\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 to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n    constructor() {\n        this._listeners = [];\n    }\n    /**\n     * Notify other items that selection for the given name has been set.\n     * @param id ID of the item.\n     * @param name Name of the item.\n     */\n    notify(id, name) {\n        for (let listener of this._listeners) {\n            listener(id, name);\n        }\n    }\n    /**\n     * Listen for future changes to item selection.\n     * @return Function used to deregister listener\n     */\n    listen(listener) {\n        this._listeners.push(listener);\n        return () => {\n            this._listeners = this._listeners.filter((registered) => {\n                return listener !== registered;\n            });\n        };\n    }\n    ngOnDestroy() {\n        this._listeners = [];\n    }\n}\nUniqueSelectionDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: UniqueSelectionDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nUniqueSelectionDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: UniqueSelectionDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: UniqueSelectionDispatcher, 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\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 * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/ddf6274480e5dc6b0e08258638ae6fbb.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/ddf6274480e5dc6b0e08258638ae6fbb.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/ddf6274480e5dc6b0e08258638ae6fbb.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { forwardRef, Component, Inject, Input, ContentChildren, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\n\nfunction TabPanel_div_0_ng_container_2_ng_container_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction TabPanel_div_0_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, TabPanel_div_0_ng_container_2_ng_container_1_Template, 1, 0, \"ng-container\", 3);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r1 = i0.ɵɵnextContext(2);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.contentTemplate);\n  }\n}\n\nfunction TabPanel_div_0_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementStart(0, \"div\", 1);\n    i0.ɵɵprojection(1);\n    i0.ɵɵtemplate(2, TabPanel_div_0_ng_container_2_Template, 2, 1, \"ng-container\", 2);\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const ctx_r0 = i0.ɵɵnextContext();\n    i0.ɵɵproperty(\"hidden\", !ctx_r0.selected);\n    i0.ɵɵattribute(\"id\", ctx_r0.id)(\"aria-hidden\", !ctx_r0.selected)(\"aria-labelledby\", ctx_r0.id + \"-label\");\n    i0.ɵɵadvance(2);\n    i0.ɵɵproperty(\"ngIf\", ctx_r0.contentTemplate && (ctx_r0.cache ? ctx_r0.loaded : ctx_r0.selected));\n  }\n}\n\nconst _c0 = [\"*\"];\nconst _c1 = [\"content\"];\nconst _c2 = [\"navbar\"];\nconst _c3 = [\"prevBtn\"];\nconst _c4 = [\"nextBtn\"];\nconst _c5 = [\"inkbar\"];\n\nfunction TabView_button_2_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r8 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 12, 13);\n    i0.ɵɵlistener(\"click\", function TabView_button_2_Template_button_click_0_listener() {\n      i0.ɵɵrestoreView(_r8);\n      const ctx_r7 = i0.ɵɵnextContext();\n      return ctx_r7.navBackward();\n    });\n    i0.ɵɵelement(2, \"span\", 14);\n    i0.ɵɵelementEnd();\n  }\n}\n\nfunction TabView_ng_template_7_li_0_ng_container_2_span_1_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"span\", 24);\n  }\n\n  if (rf & 2) {\n    const tab_r9 = i0.ɵɵnextContext(3).$implicit;\n    i0.ɵɵproperty(\"ngClass\", tab_r9.leftIcon);\n  }\n}\n\nfunction TabView_ng_template_7_li_0_ng_container_2_span_4_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelement(0, \"span\", 25);\n  }\n\n  if (rf & 2) {\n    const tab_r9 = i0.ɵɵnextContext(3).$implicit;\n    i0.ɵɵproperty(\"ngClass\", tab_r9.rightIcon);\n  }\n}\n\nfunction TabView_ng_template_7_li_0_ng_container_2_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainerStart(0);\n    i0.ɵɵtemplate(1, TabView_ng_template_7_li_0_ng_container_2_span_1_Template, 1, 1, \"span\", 21);\n    i0.ɵɵelementStart(2, \"span\", 22);\n    i0.ɵɵtext(3);\n    i0.ɵɵelementEnd();\n    i0.ɵɵtemplate(4, TabView_ng_template_7_li_0_ng_container_2_span_4_Template, 1, 1, \"span\", 23);\n    i0.ɵɵelementContainerEnd();\n  }\n\n  if (rf & 2) {\n    const tab_r9 = i0.ɵɵnextContext(2).$implicit;\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", tab_r9.leftIcon);\n    i0.ɵɵadvance(2);\n    i0.ɵɵtextInterpolate(tab_r9.header);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", tab_r9.rightIcon);\n  }\n}\n\nfunction TabView_ng_template_7_li_0_ng_container_3_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵelementContainer(0);\n  }\n}\n\nfunction TabView_ng_template_7_li_0_span_4_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r21 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"span\", 26);\n    i0.ɵɵlistener(\"click\", function TabView_ng_template_7_li_0_span_4_Template_span_click_0_listener($event) {\n      i0.ɵɵrestoreView(_r21);\n      const tab_r9 = i0.ɵɵnextContext(2).$implicit;\n      const ctx_r19 = i0.ɵɵnextContext();\n      return ctx_r19.close($event, tab_r9);\n    });\n    i0.ɵɵelementEnd();\n  }\n}\n\nconst _c6 = function (a0, a1) {\n  return {\n    \"p-highlight\": a0,\n    \"p-disabled\": a1\n  };\n};\n\nfunction TabView_ng_template_7_li_0_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r24 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"li\", 16);\n    i0.ɵɵelementStart(1, \"a\", 17);\n    i0.ɵɵlistener(\"click\", function TabView_ng_template_7_li_0_Template_a_click_1_listener($event) {\n      i0.ɵɵrestoreView(_r24);\n      const tab_r9 = i0.ɵɵnextContext().$implicit;\n      const ctx_r22 = i0.ɵɵnextContext();\n      return ctx_r22.open($event, tab_r9);\n    })(\"keydown.enter\", function TabView_ng_template_7_li_0_Template_a_keydown_enter_1_listener($event) {\n      i0.ɵɵrestoreView(_r24);\n      const tab_r9 = i0.ɵɵnextContext().$implicit;\n      const ctx_r25 = i0.ɵɵnextContext();\n      return ctx_r25.open($event, tab_r9);\n    });\n    i0.ɵɵtemplate(2, TabView_ng_template_7_li_0_ng_container_2_Template, 5, 3, \"ng-container\", 18);\n    i0.ɵɵtemplate(3, TabView_ng_template_7_li_0_ng_container_3_Template, 1, 0, \"ng-container\", 19);\n    i0.ɵɵtemplate(4, TabView_ng_template_7_li_0_span_4_Template, 1, 0, \"span\", 20);\n    i0.ɵɵelementEnd();\n    i0.ɵɵelementEnd();\n  }\n\n  if (rf & 2) {\n    const tab_r9 = i0.ɵɵnextContext().$implicit;\n    i0.ɵɵclassMap(tab_r9.headerStyleClass);\n    i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(16, _c6, tab_r9.selected, tab_r9.disabled))(\"ngStyle\", tab_r9.headerStyle);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"pTooltip\", tab_r9.tooltip)(\"tooltipPosition\", tab_r9.tooltipPosition)(\"positionStyle\", tab_r9.tooltipPositionStyle)(\"tooltipStyleClass\", tab_r9.tooltipStyleClass);\n    i0.ɵɵattribute(\"id\", tab_r9.id + \"-label\")(\"aria-selected\", tab_r9.selected)(\"aria-controls\", tab_r9.id)(\"aria-selected\", tab_r9.selected)(\"tabindex\", tab_r9.disabled ? null : \"0\");\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", !tab_r9.headerTemplate);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngTemplateOutlet\", tab_r9.headerTemplate);\n    i0.ɵɵadvance(1);\n    i0.ɵɵproperty(\"ngIf\", tab_r9.closable);\n  }\n}\n\nfunction TabView_ng_template_7_Template(rf, ctx) {\n  if (rf & 1) {\n    i0.ɵɵtemplate(0, TabView_ng_template_7_li_0_Template, 5, 19, \"li\", 15);\n  }\n\n  if (rf & 2) {\n    const tab_r9 = ctx.$implicit;\n    i0.ɵɵproperty(\"ngIf\", !tab_r9.closed);\n  }\n}\n\nfunction TabView_button_10_Template(rf, ctx) {\n  if (rf & 1) {\n    const _r30 = i0.ɵɵgetCurrentView();\n\n    i0.ɵɵelementStart(0, \"button\", 27, 28);\n    i0.ɵɵlistener(\"click\", function TabView_button_10_Template_button_click_0_listener() {\n      i0.ɵɵrestoreView(_r30);\n      const ctx_r29 = i0.ɵɵnextContext();\n      return ctx_r29.navForward();\n    });\n    i0.ɵɵelement(2, \"span\", 29);\n    i0.ɵɵelementEnd();\n  }\n}\n\nconst _c7 = function (a1) {\n  return {\n    \"p-tabview p-component\": true,\n    \"p-tabview-scrollable\": a1\n  };\n};\n\nlet idx = 0;\n\nclass TabPanel {\n  constructor(tabView, viewContainer, cd) {\n    this.viewContainer = viewContainer;\n    this.cd = cd;\n    this.cache = true;\n    this.tooltipPosition = 'top';\n    this.tooltipPositionStyle = 'absolute';\n    this.id = `p-tabpanel-${idx++}`;\n    this.tabView = tabView;\n  }\n\n  ngAfterContentInit() {\n    this.templates.forEach(item => {\n      switch (item.getType()) {\n        case 'header':\n          this.headerTemplate = item.template;\n          break;\n\n        case 'content':\n          this.contentTemplate = item.template;\n          break;\n\n        default:\n          this.contentTemplate = item.template;\n          break;\n      }\n    });\n  }\n\n  get selected() {\n    return this._selected;\n  }\n\n  set selected(val) {\n    this._selected = val;\n\n    if (!this.loaded) {\n      this.cd.detectChanges();\n    }\n\n    if (val) this.loaded = true;\n  }\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  set disabled(disabled) {\n    this._disabled = disabled;\n    this.tabView.cd.markForCheck();\n  }\n\n  get header() {\n    return this._header;\n  }\n\n  set header(header) {\n    this._header = header;\n    this.tabView.cd.markForCheck();\n  }\n\n  get leftIcon() {\n    return this._leftIcon;\n  }\n\n  set leftIcon(leftIcon) {\n    this._leftIcon = leftIcon;\n    this.tabView.cd.markForCheck();\n  }\n\n  get rightIcon() {\n    return this._rightIcon;\n  }\n\n  set rightIcon(rightIcon) {\n    this._rightIcon = rightIcon;\n    this.tabView.cd.markForCheck();\n  }\n\n  ngOnDestroy() {\n    this.view = null;\n  }\n\n}\n\nTabPanel.ɵfac = function TabPanel_Factory(t) {\n  return new (t || TabPanel)(i0.ɵɵdirectiveInject(forwardRef(() => TabView)), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nTabPanel.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: TabPanel,\n  selectors: [[\"p-tabPanel\"]],\n  contentQueries: function TabPanel_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    closable: \"closable\",\n    headerStyle: \"headerStyle\",\n    headerStyleClass: \"headerStyleClass\",\n    cache: \"cache\",\n    tooltip: \"tooltip\",\n    tooltipPosition: \"tooltipPosition\",\n    tooltipPositionStyle: \"tooltipPositionStyle\",\n    tooltipStyleClass: \"tooltipStyleClass\",\n    selected: \"selected\",\n    disabled: \"disabled\",\n    header: \"header\",\n    leftIcon: \"leftIcon\",\n    rightIcon: \"rightIcon\"\n  },\n  ngContentSelectors: _c0,\n  decls: 1,\n  vars: 1,\n  consts: [[\"class\", \"p-tabview-panel\", \"role\", \"tabpanel\", 3, \"hidden\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 1, \"p-tabview-panel\", 3, \"hidden\"], [4, \"ngIf\"], [4, \"ngTemplateOutlet\"]],\n  template: function TabPanel_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵtemplate(0, TabPanel_div_0_Template, 3, 5, \"div\", 0);\n    }\n\n    if (rf & 2) {\n      i0.ɵɵproperty(\"ngIf\", !ctx.closed);\n    }\n  },\n  directives: [i1.NgIf, i1.NgTemplateOutlet],\n  encapsulation: 2\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TabPanel, [{\n    type: Component,\n    args: [{\n      selector: 'p-tabPanel',\n      template: `\n        <div [attr.id]=\"id\" class=\"p-tabview-panel\" [hidden]=\"!selected\"\n            role=\"tabpanel\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id + '-label'\" *ngIf=\"!closed\">\n            <ng-content></ng-content>\n            <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </ng-container>\n        </div>\n    `,\n      host: {\n        'class': 'p-element'\n      }\n    }]\n  }], function () {\n    return [{\n      type: undefined,\n      decorators: [{\n        type: Inject,\n        args: [forwardRef(() => TabView)]\n      }]\n    }, {\n      type: i0.ViewContainerRef\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    closable: [{\n      type: Input\n    }],\n    headerStyle: [{\n      type: Input\n    }],\n    headerStyleClass: [{\n      type: Input\n    }],\n    cache: [{\n      type: Input\n    }],\n    tooltip: [{\n      type: Input\n    }],\n    tooltipPosition: [{\n      type: Input\n    }],\n    tooltipPositionStyle: [{\n      type: Input\n    }],\n    tooltipStyleClass: [{\n      type: Input\n    }],\n    templates: [{\n      type: ContentChildren,\n      args: [PrimeTemplate]\n    }],\n    selected: [{\n      type: Input\n    }],\n    disabled: [{\n      type: Input\n    }],\n    header: [{\n      type: Input\n    }],\n    leftIcon: [{\n      type: Input\n    }],\n    rightIcon: [{\n      type: Input\n    }]\n  });\n})();\n\nclass TabView {\n  constructor(el, cd) {\n    this.el = el;\n    this.cd = cd;\n    this.orientation = 'top';\n    this.onChange = new EventEmitter();\n    this.onClose = new EventEmitter();\n    this.activeIndexChange = new EventEmitter();\n    this.backwardIsDisabled = true;\n    this.forwardIsDisabled = false;\n  }\n\n  ngAfterContentInit() {\n    this.initTabs();\n    this.tabPanels.changes.subscribe(_ => {\n      this.initTabs();\n    });\n  }\n\n  ngAfterViewChecked() {\n    if (this.tabChanged) {\n      this.updateInkBar();\n      this.tabChanged = false;\n    }\n  }\n\n  initTabs() {\n    this.tabs = this.tabPanels.toArray();\n    let selectedTab = this.findSelectedTab();\n\n    if (!selectedTab && this.tabs.length) {\n      if (this.activeIndex != null && this.tabs.length > this.activeIndex) this.tabs[this.activeIndex].selected = true;else this.tabs[0].selected = true;\n      this.tabChanged = true;\n    }\n\n    this.cd.markForCheck();\n  }\n\n  open(event, tab) {\n    if (tab.disabled) {\n      if (event) {\n        event.preventDefault();\n      }\n\n      return;\n    }\n\n    if (!tab.selected) {\n      let selectedTab = this.findSelectedTab();\n\n      if (selectedTab) {\n        selectedTab.selected = false;\n      }\n\n      this.tabChanged = true;\n      tab.selected = true;\n      let selectedTabIndex = this.findTabIndex(tab);\n      this.preventActiveIndexPropagation = true;\n      this.activeIndexChange.emit(selectedTabIndex);\n      this.onChange.emit({\n        originalEvent: event,\n        index: selectedTabIndex\n      });\n      this.updateScrollBar(selectedTabIndex);\n    }\n\n    if (event) {\n      event.preventDefault();\n    }\n  }\n\n  close(event, tab) {\n    if (this.controlClose) {\n      this.onClose.emit({\n        originalEvent: event,\n        index: this.findTabIndex(tab),\n        close: () => {\n          this.closeTab(tab);\n        }\n      });\n    } else {\n      this.closeTab(tab);\n      this.onClose.emit({\n        originalEvent: event,\n        index: this.findTabIndex(tab)\n      });\n    }\n\n    event.stopPropagation();\n  }\n\n  closeTab(tab) {\n    if (tab.disabled) {\n      return;\n    }\n\n    if (tab.selected) {\n      this.tabChanged = true;\n      tab.selected = false;\n\n      for (let i = 0; i < this.tabs.length; i++) {\n        let tabPanel = this.tabs[i];\n\n        if (!tabPanel.closed && !tab.disabled) {\n          tabPanel.selected = true;\n          break;\n        }\n      }\n    }\n\n    tab.closed = true;\n  }\n\n  findSelectedTab() {\n    for (let i = 0; i < this.tabs.length; i++) {\n      if (this.tabs[i].selected) {\n        return this.tabs[i];\n      }\n    }\n\n    return null;\n  }\n\n  findTabIndex(tab) {\n    let index = -1;\n\n    for (let i = 0; i < this.tabs.length; i++) {\n      if (this.tabs[i] == tab) {\n        index = i;\n        break;\n      }\n    }\n\n    return index;\n  }\n\n  getBlockableElement() {\n    return this.el.nativeElement.children[0];\n  }\n\n  get activeIndex() {\n    return this._activeIndex;\n  }\n\n  set activeIndex(val) {\n    this._activeIndex = val;\n\n    if (this.preventActiveIndexPropagation) {\n      this.preventActiveIndexPropagation = false;\n      return;\n    }\n\n    if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {\n      this.findSelectedTab().selected = false;\n      this.tabs[this._activeIndex].selected = true;\n      this.tabChanged = true;\n      this.updateScrollBar(val);\n    }\n  }\n\n  updateInkBar() {\n    let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');\n    this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n    this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n  }\n\n  updateScrollBar(index) {\n    let tabHeader = this.navbar.nativeElement.children[index];\n    tabHeader.scrollIntoView({\n      block: 'nearest'\n    });\n  }\n\n  updateButtonState() {\n    const content = this.content.nativeElement;\n    const {\n      scrollLeft,\n      scrollWidth\n    } = content;\n    const width = DomHandler.getWidth(content);\n    this.backwardIsDisabled = scrollLeft === 0;\n    this.forwardIsDisabled = scrollLeft === scrollWidth - width;\n  }\n\n  onScroll(event) {\n    this.scrollable && this.updateButtonState();\n    event.preventDefault();\n  }\n\n  getVisibleButtonWidths() {\n    return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => el ? acc + DomHandler.getWidth(el) : acc, 0);\n  }\n\n  navBackward() {\n    const content = this.content.nativeElement;\n    const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n    const pos = content.scrollLeft - width;\n    content.scrollLeft = pos <= 0 ? 0 : pos;\n  }\n\n  navForward() {\n    const content = this.content.nativeElement;\n    const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n    const pos = content.scrollLeft + width;\n    const lastPos = content.scrollWidth - width;\n    content.scrollLeft = pos >= lastPos ? lastPos : pos;\n  }\n\n}\n\nTabView.ɵfac = function TabView_Factory(t) {\n  return new (t || TabView)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef));\n};\n\nTabView.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n  type: TabView,\n  selectors: [[\"p-tabView\"]],\n  contentQueries: function TabView_ContentQueries(rf, ctx, dirIndex) {\n    if (rf & 1) {\n      i0.ɵɵcontentQuery(dirIndex, TabPanel, 4);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tabPanels = _t);\n    }\n  },\n  viewQuery: function TabView_Query(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵviewQuery(_c1, 5);\n      i0.ɵɵviewQuery(_c2, 5);\n      i0.ɵɵviewQuery(_c3, 5);\n      i0.ɵɵviewQuery(_c4, 5);\n      i0.ɵɵviewQuery(_c5, 5);\n    }\n\n    if (rf & 2) {\n      let _t;\n\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.content = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.navbar = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.prevBtn = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.nextBtn = _t.first);\n      i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inkbar = _t.first);\n    }\n  },\n  hostAttrs: [1, \"p-element\"],\n  inputs: {\n    orientation: \"orientation\",\n    style: \"style\",\n    styleClass: \"styleClass\",\n    controlClose: \"controlClose\",\n    scrollable: \"scrollable\",\n    activeIndex: \"activeIndex\"\n  },\n  outputs: {\n    onChange: \"onChange\",\n    onClose: \"onClose\",\n    activeIndexChange: \"activeIndexChange\"\n  },\n  ngContentSelectors: _c0,\n  decls: 13,\n  vars: 9,\n  consts: [[3, \"ngClass\", \"ngStyle\"], [1, \"p-tabview-nav-container\"], [\"class\", \"p-tabview-nav-prev p-tabview-nav-btn p-link\", \"type\", \"button\", \"pRipple\", \"\", 3, \"click\", 4, \"ngIf\"], [1, \"p-tabview-nav-content\", 3, \"scroll\"], [\"content\", \"\"], [\"role\", \"tablist\", 1, \"p-tabview-nav\"], [\"navbar\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"p-tabview-ink-bar\"], [\"inkbar\", \"\"], [\"class\", \"p-tabview-nav-next p-tabview-nav-btn p-link\", \"type\", \"button\", \"pRipple\", \"\", 3, \"click\", 4, \"ngIf\"], [1, \"p-tabview-panels\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-tabview-nav-prev\", \"p-tabview-nav-btn\", \"p-link\", 3, \"click\"], [\"prevBtn\", \"\"], [1, \"pi\", \"pi-chevron-left\"], [\"role\", \"presentation\", 3, \"ngClass\", \"ngStyle\", \"class\", 4, \"ngIf\"], [\"role\", \"presentation\", 3, \"ngClass\", \"ngStyle\"], [\"role\", \"tab\", \"pRipple\", \"\", 1, \"p-tabview-nav-link\", 3, \"pTooltip\", \"tooltipPosition\", \"positionStyle\", \"tooltipStyleClass\", \"click\", \"keydown.enter\"], [4, \"ngIf\"], [4, \"ngTemplateOutlet\"], [\"class\", \"p-tabview-close pi pi-times\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"p-tabview-left-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"p-tabview-title\"], [\"class\", \"p-tabview-right-icon\", 3, \"ngClass\", 4, \"ngIf\"], [1, \"p-tabview-left-icon\", 3, \"ngClass\"], [1, \"p-tabview-right-icon\", 3, \"ngClass\"], [1, \"p-tabview-close\", \"pi\", \"pi-times\", 3, \"click\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-tabview-nav-next\", \"p-tabview-nav-btn\", \"p-link\", 3, \"click\"], [\"nextBtn\", \"\"], [1, \"pi\", \"pi-chevron-right\"]],\n  template: function TabView_Template(rf, ctx) {\n    if (rf & 1) {\n      i0.ɵɵprojectionDef();\n      i0.ɵɵelementStart(0, \"div\", 0);\n      i0.ɵɵelementStart(1, \"div\", 1);\n      i0.ɵɵtemplate(2, TabView_button_2_Template, 3, 0, \"button\", 2);\n      i0.ɵɵelementStart(3, \"div\", 3, 4);\n      i0.ɵɵlistener(\"scroll\", function TabView_Template_div_scroll_3_listener($event) {\n        return ctx.onScroll($event);\n      });\n      i0.ɵɵelementStart(5, \"ul\", 5, 6);\n      i0.ɵɵtemplate(7, TabView_ng_template_7_Template, 1, 1, \"ng-template\", 7);\n      i0.ɵɵelement(8, \"li\", 8, 9);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n      i0.ɵɵtemplate(10, TabView_button_10_Template, 3, 0, \"button\", 10);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementStart(11, \"div\", 11);\n      i0.ɵɵprojection(12);\n      i0.ɵɵelementEnd();\n      i0.ɵɵelementEnd();\n    }\n\n    if (rf & 2) {\n      i0.ɵɵclassMap(ctx.styleClass);\n      i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(7, _c7, ctx.scrollable))(\"ngStyle\", ctx.style);\n      i0.ɵɵadvance(2);\n      i0.ɵɵproperty(\"ngIf\", ctx.scrollable && !ctx.backwardIsDisabled);\n      i0.ɵɵadvance(5);\n      i0.ɵɵproperty(\"ngForOf\", ctx.tabs);\n      i0.ɵɵadvance(3);\n      i0.ɵɵproperty(\"ngIf\", ctx.scrollable && !ctx.forwardIsDisabled);\n    }\n  },\n  directives: [i1.NgClass, i1.NgStyle, i1.NgIf, i1.NgForOf, i2.Ripple, i3.Tooltip, i1.NgTemplateOutlet],\n  styles: [\".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\\n\"],\n  encapsulation: 2,\n  changeDetection: 0\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TabView, [{\n    type: Component,\n    args: [{\n      selector: 'p-tabView',\n      template: `\n        <div [ngClass]=\"{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-tabview-nav-container\">\n                <button *ngIf=\"scrollable && !backwardIsDisabled\" #prevBtn class=\"p-tabview-nav-prev p-tabview-nav-btn p-link\" (click)=\"navBackward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-left\"></span>\n                </button>\n                <div #content class=\"p-tabview-nav-content\" (scroll)=\"onScroll($event)\">\n                    <ul #navbar class=\"p-tabview-nav\" role=\"tablist\">\n                        <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n                            <li role=\"presentation\" [ngClass]=\"{'p-highlight': tab.selected, 'p-disabled': tab.disabled}\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\" *ngIf=\"!tab.closed\">\n                                <a role=\"tab\" class=\"p-tabview-nav-link\" [attr.id]=\"tab.id + '-label'\" [attr.aria-selected]=\"tab.selected\" [attr.aria-controls]=\"tab.id\" [pTooltip]=\"tab.tooltip\" [tooltipPosition]=\"tab.tooltipPosition\"\n                                    [attr.aria-selected]=\"tab.selected\" [positionStyle]=\"tab.tooltipPositionStyle\" [tooltipStyleClass]=\"tab.tooltipStyleClass\"\n                                    (click)=\"open($event,tab)\" (keydown.enter)=\"open($event,tab)\" pRipple [attr.tabindex]=\"tab.disabled ? null : '0'\">\n                                    <ng-container *ngIf=\"!tab.headerTemplate\">\n                                        <span class=\"p-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon\"></span>\n                                        <span class=\"p-tabview-title\">{{tab.header}}</span>\n                                        <span class=\"p-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon\"></span>\n                                    </ng-container>\n                                    <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n                                    <span *ngIf=\"tab.closable\" class=\"p-tabview-close pi pi-times\" (click)=\"close($event,tab)\"></span>\n                                </a>\n                            </li>\n                        </ng-template>\n                        <li #inkbar class=\"p-tabview-ink-bar\"></li>\n                    </ul>\n                </div>\n                <button *ngIf=\"scrollable && !forwardIsDisabled\" #nextBtn class=\"p-tabview-nav-next p-tabview-nav-btn p-link\" (click)=\"navForward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-right\"></span>\n                </button>\n            </div>\n            <div class=\"p-tabview-panels\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    `,\n      changeDetection: ChangeDetectionStrategy.OnPush,\n      encapsulation: ViewEncapsulation.None,\n      host: {\n        'class': 'p-element'\n      },\n      styles: [\".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\\n\"]\n    }]\n  }], function () {\n    return [{\n      type: i0.ElementRef\n    }, {\n      type: i0.ChangeDetectorRef\n    }];\n  }, {\n    orientation: [{\n      type: Input\n    }],\n    style: [{\n      type: Input\n    }],\n    styleClass: [{\n      type: Input\n    }],\n    controlClose: [{\n      type: Input\n    }],\n    scrollable: [{\n      type: Input\n    }],\n    content: [{\n      type: ViewChild,\n      args: ['content']\n    }],\n    navbar: [{\n      type: ViewChild,\n      args: ['navbar']\n    }],\n    prevBtn: [{\n      type: ViewChild,\n      args: ['prevBtn']\n    }],\n    nextBtn: [{\n      type: ViewChild,\n      args: ['nextBtn']\n    }],\n    inkbar: [{\n      type: ViewChild,\n      args: ['inkbar']\n    }],\n    tabPanels: [{\n      type: ContentChildren,\n      args: [TabPanel]\n    }],\n    onChange: [{\n      type: Output\n    }],\n    onClose: [{\n      type: Output\n    }],\n    activeIndexChange: [{\n      type: Output\n    }],\n    activeIndex: [{\n      type: Input\n    }]\n  });\n})();\n\nclass TabViewModule {}\n\nTabViewModule.ɵfac = function TabViewModule_Factory(t) {\n  return new (t || TabViewModule)();\n};\n\nTabViewModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: TabViewModule\n});\nTabViewModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  imports: [[CommonModule, SharedModule, TooltipModule, RippleModule], SharedModule]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TabViewModule, [{\n    type: NgModule,\n    args: [{\n      imports: [CommonModule, SharedModule, TooltipModule, RippleModule],\n      exports: [TabView, TabPanel, SharedModule],\n      declarations: [TabView, TabPanel]\n    }]\n  }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { TabPanel, TabView, TabViewModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2020/primeng-tabview.mjs"],"names":["i0","forwardRef","Component","Inject","Input","ContentChildren","EventEmitter","ChangeDetectionStrategy","ViewEncapsulation","ViewChild","Output","NgModule","i1","CommonModule","i3","TooltipModule","i2","RippleModule","PrimeTemplate","SharedModule","DomHandler","idx","TabPanel","constructor","tabView","viewContainer","cd","cache","tooltipPosition","tooltipPositionStyle","id","ngAfterContentInit","templates","forEach","item","getType","headerTemplate","template","contentTemplate","selected","_selected","val","loaded","detectChanges","disabled","_disabled","markForCheck","header","_header","leftIcon","_leftIcon","rightIcon","_rightIcon","ngOnDestroy","view","ɵfac","TabView","ViewContainerRef","ChangeDetectorRef","ɵcmp","NgIf","NgTemplateOutlet","type","args","selector","host","undefined","decorators","closable","headerStyle","headerStyleClass","tooltip","tooltipStyleClass","el","orientation","onChange","onClose","activeIndexChange","backwardIsDisabled","forwardIsDisabled","initTabs","tabPanels","changes","subscribe","_","ngAfterViewChecked","tabChanged","updateInkBar","tabs","toArray","selectedTab","findSelectedTab","length","activeIndex","open","event","tab","preventDefault","selectedTabIndex","findTabIndex","preventActiveIndexPropagation","emit","originalEvent","index","updateScrollBar","close","controlClose","closeTab","stopPropagation","i","tabPanel","closed","getBlockableElement","nativeElement","children","_activeIndex","tabHeader","findSingle","navbar","inkbar","style","width","getWidth","left","getOffset","scrollIntoView","block","updateButtonState","content","scrollLeft","scrollWidth","onScroll","scrollable","getVisibleButtonWidths","prevBtn","nextBtn","reduce","acc","navBackward","pos","navForward","lastPos","ElementRef","NgClass","NgStyle","NgForOf","Ripple","Tooltip","changeDetection","OnPush","encapsulation","None","styles","styleClass","TabViewModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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","sourcesContent":["import * as i0 from '@angular/core';\nimport { forwardRef, Component, Inject, Input, ContentChildren, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/tooltip';\nimport { TooltipModule } from 'primeng/tooltip';\nimport * as i2 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { PrimeTemplate, SharedModule } from 'primeng/api';\nimport { DomHandler } from 'primeng/dom';\n\nlet idx = 0;\nclass TabPanel {\n    constructor(tabView, viewContainer, cd) {\n        this.viewContainer = viewContainer;\n        this.cd = cd;\n        this.cache = true;\n        this.tooltipPosition = 'top';\n        this.tooltipPositionStyle = 'absolute';\n        this.id = `p-tabpanel-${idx++}`;\n        this.tabView = tabView;\n    }\n    ngAfterContentInit() {\n        this.templates.forEach((item) => {\n            switch (item.getType()) {\n                case 'header':\n                    this.headerTemplate = item.template;\n                    break;\n                case 'content':\n                    this.contentTemplate = item.template;\n                    break;\n                default:\n                    this.contentTemplate = item.template;\n                    break;\n            }\n        });\n    }\n    get selected() {\n        return this._selected;\n    }\n    set selected(val) {\n        this._selected = val;\n        if (!this.loaded) {\n            this.cd.detectChanges();\n        }\n        if (val)\n            this.loaded = true;\n    }\n    get disabled() {\n        return this._disabled;\n    }\n    ;\n    set disabled(disabled) {\n        this._disabled = disabled;\n        this.tabView.cd.markForCheck();\n    }\n    get header() {\n        return this._header;\n    }\n    set header(header) {\n        this._header = header;\n        this.tabView.cd.markForCheck();\n    }\n    get leftIcon() {\n        return this._leftIcon;\n    }\n    set leftIcon(leftIcon) {\n        this._leftIcon = leftIcon;\n        this.tabView.cd.markForCheck();\n    }\n    get rightIcon() {\n        return this._rightIcon;\n    }\n    set rightIcon(rightIcon) {\n        this._rightIcon = rightIcon;\n        this.tabView.cd.markForCheck();\n    }\n    ngOnDestroy() {\n        this.view = null;\n    }\n}\nTabPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabPanel, deps: [{ token: forwardRef(() => TabView) }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTabPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: TabPanel, selector: \"p-tabPanel\", inputs: { closable: \"closable\", headerStyle: \"headerStyle\", headerStyleClass: \"headerStyleClass\", cache: \"cache\", tooltip: \"tooltip\", tooltipPosition: \"tooltipPosition\", tooltipPositionStyle: \"tooltipPositionStyle\", tooltipStyleClass: \"tooltipStyleClass\", selected: \"selected\", disabled: \"disabled\", header: \"header\", leftIcon: \"leftIcon\", rightIcon: \"rightIcon\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], ngImport: i0, template: `\n        <div [attr.id]=\"id\" class=\"p-tabview-panel\" [hidden]=\"!selected\"\n            role=\"tabpanel\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id + '-label'\" *ngIf=\"!closed\">\n            <ng-content></ng-content>\n            <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </ng-container>\n        </div>\n    `, isInline: true, directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabPanel, decorators: [{\n            type: Component,\n            args: [{\n                    selector: 'p-tabPanel',\n                    template: `\n        <div [attr.id]=\"id\" class=\"p-tabview-panel\" [hidden]=\"!selected\"\n            role=\"tabpanel\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"id + '-label'\" *ngIf=\"!closed\">\n            <ng-content></ng-content>\n            <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\n                <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n            </ng-container>\n        </div>\n    `,\n                    host: {\n                        'class': 'p-element'\n                    }\n                }]\n        }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n                    type: Inject,\n                    args: [forwardRef(() => TabView)]\n                }] }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { closable: [{\n                type: Input\n            }], headerStyle: [{\n                type: Input\n            }], headerStyleClass: [{\n                type: Input\n            }], cache: [{\n                type: Input\n            }], tooltip: [{\n                type: Input\n            }], tooltipPosition: [{\n                type: Input\n            }], tooltipPositionStyle: [{\n                type: Input\n            }], tooltipStyleClass: [{\n                type: Input\n            }], templates: [{\n                type: ContentChildren,\n                args: [PrimeTemplate]\n            }], selected: [{\n                type: Input\n            }], disabled: [{\n                type: Input\n            }], header: [{\n                type: Input\n            }], leftIcon: [{\n                type: Input\n            }], rightIcon: [{\n                type: Input\n            }] } });\nclass TabView {\n    constructor(el, cd) {\n        this.el = el;\n        this.cd = cd;\n        this.orientation = 'top';\n        this.onChange = new EventEmitter();\n        this.onClose = new EventEmitter();\n        this.activeIndexChange = new EventEmitter();\n        this.backwardIsDisabled = true;\n        this.forwardIsDisabled = false;\n    }\n    ngAfterContentInit() {\n        this.initTabs();\n        this.tabPanels.changes.subscribe(_ => {\n            this.initTabs();\n        });\n    }\n    ngAfterViewChecked() {\n        if (this.tabChanged) {\n            this.updateInkBar();\n            this.tabChanged = false;\n        }\n    }\n    initTabs() {\n        this.tabs = this.tabPanels.toArray();\n        let selectedTab = this.findSelectedTab();\n        if (!selectedTab && this.tabs.length) {\n            if (this.activeIndex != null && this.tabs.length > this.activeIndex)\n                this.tabs[this.activeIndex].selected = true;\n            else\n                this.tabs[0].selected = true;\n            this.tabChanged = true;\n        }\n        this.cd.markForCheck();\n    }\n    open(event, tab) {\n        if (tab.disabled) {\n            if (event) {\n                event.preventDefault();\n            }\n            return;\n        }\n        if (!tab.selected) {\n            let selectedTab = this.findSelectedTab();\n            if (selectedTab) {\n                selectedTab.selected = false;\n            }\n            this.tabChanged = true;\n            tab.selected = true;\n            let selectedTabIndex = this.findTabIndex(tab);\n            this.preventActiveIndexPropagation = true;\n            this.activeIndexChange.emit(selectedTabIndex);\n            this.onChange.emit({ originalEvent: event, index: selectedTabIndex });\n            this.updateScrollBar(selectedTabIndex);\n        }\n        if (event) {\n            event.preventDefault();\n        }\n    }\n    close(event, tab) {\n        if (this.controlClose) {\n            this.onClose.emit({\n                originalEvent: event,\n                index: this.findTabIndex(tab),\n                close: () => {\n                    this.closeTab(tab);\n                }\n            });\n        }\n        else {\n            this.closeTab(tab);\n            this.onClose.emit({\n                originalEvent: event,\n                index: this.findTabIndex(tab)\n            });\n        }\n        event.stopPropagation();\n    }\n    closeTab(tab) {\n        if (tab.disabled) {\n            return;\n        }\n        if (tab.selected) {\n            this.tabChanged = true;\n            tab.selected = false;\n            for (let i = 0; i < this.tabs.length; i++) {\n                let tabPanel = this.tabs[i];\n                if (!tabPanel.closed && !tab.disabled) {\n                    tabPanel.selected = true;\n                    break;\n                }\n            }\n        }\n        tab.closed = true;\n    }\n    findSelectedTab() {\n        for (let i = 0; i < this.tabs.length; i++) {\n            if (this.tabs[i].selected) {\n                return this.tabs[i];\n            }\n        }\n        return null;\n    }\n    findTabIndex(tab) {\n        let index = -1;\n        for (let i = 0; i < this.tabs.length; i++) {\n            if (this.tabs[i] == tab) {\n                index = i;\n                break;\n            }\n        }\n        return index;\n    }\n    getBlockableElement() {\n        return this.el.nativeElement.children[0];\n    }\n    get activeIndex() {\n        return this._activeIndex;\n    }\n    set activeIndex(val) {\n        this._activeIndex = val;\n        if (this.preventActiveIndexPropagation) {\n            this.preventActiveIndexPropagation = false;\n            return;\n        }\n        if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {\n            this.findSelectedTab().selected = false;\n            this.tabs[this._activeIndex].selected = true;\n            this.tabChanged = true;\n            this.updateScrollBar(val);\n        }\n    }\n    updateInkBar() {\n        let tabHeader = DomHandler.findSingle(this.navbar.nativeElement, 'li.p-highlight');\n        this.inkbar.nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n        this.inkbar.nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n    }\n    updateScrollBar(index) {\n        let tabHeader = this.navbar.nativeElement.children[index];\n        tabHeader.scrollIntoView({ block: 'nearest' });\n    }\n    updateButtonState() {\n        const content = this.content.nativeElement;\n        const { scrollLeft, scrollWidth } = content;\n        const width = DomHandler.getWidth(content);\n        this.backwardIsDisabled = scrollLeft === 0;\n        this.forwardIsDisabled = scrollLeft === scrollWidth - width;\n    }\n    onScroll(event) {\n        this.scrollable && this.updateButtonState();\n        event.preventDefault();\n    }\n    getVisibleButtonWidths() {\n        return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => el ? acc + DomHandler.getWidth(el) : acc, 0);\n    }\n    navBackward() {\n        const content = this.content.nativeElement;\n        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n        const pos = content.scrollLeft - width;\n        content.scrollLeft = pos <= 0 ? 0 : pos;\n    }\n    navForward() {\n        const content = this.content.nativeElement;\n        const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n        const pos = content.scrollLeft + width;\n        const lastPos = content.scrollWidth - width;\n        content.scrollLeft = pos >= lastPos ? lastPos : pos;\n    }\n}\nTabView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabView, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nTabView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: TabView, selector: \"p-tabView\", inputs: { orientation: \"orientation\", style: \"style\", styleClass: \"styleClass\", controlClose: \"controlClose\", scrollable: \"scrollable\", activeIndex: \"activeIndex\" }, outputs: { onChange: \"onChange\", onClose: \"onClose\", activeIndexChange: \"activeIndexChange\" }, host: { classAttribute: \"p-element\" }, queries: [{ propertyName: \"tabPanels\", predicate: TabPanel }], viewQueries: [{ propertyName: \"content\", first: true, predicate: [\"content\"], descendants: true }, { propertyName: \"navbar\", first: true, predicate: [\"navbar\"], descendants: true }, { propertyName: \"prevBtn\", first: true, predicate: [\"prevBtn\"], descendants: true }, { propertyName: \"nextBtn\", first: true, predicate: [\"nextBtn\"], descendants: true }, { propertyName: \"inkbar\", first: true, predicate: [\"inkbar\"], descendants: true }], ngImport: i0, template: `\n        <div [ngClass]=\"{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-tabview-nav-container\">\n                <button *ngIf=\"scrollable && !backwardIsDisabled\" #prevBtn class=\"p-tabview-nav-prev p-tabview-nav-btn p-link\" (click)=\"navBackward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-left\"></span>\n                </button>\n                <div #content class=\"p-tabview-nav-content\" (scroll)=\"onScroll($event)\">\n                    <ul #navbar class=\"p-tabview-nav\" role=\"tablist\">\n                        <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n                            <li role=\"presentation\" [ngClass]=\"{'p-highlight': tab.selected, 'p-disabled': tab.disabled}\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\" *ngIf=\"!tab.closed\">\n                                <a role=\"tab\" class=\"p-tabview-nav-link\" [attr.id]=\"tab.id + '-label'\" [attr.aria-selected]=\"tab.selected\" [attr.aria-controls]=\"tab.id\" [pTooltip]=\"tab.tooltip\" [tooltipPosition]=\"tab.tooltipPosition\"\n                                    [attr.aria-selected]=\"tab.selected\" [positionStyle]=\"tab.tooltipPositionStyle\" [tooltipStyleClass]=\"tab.tooltipStyleClass\"\n                                    (click)=\"open($event,tab)\" (keydown.enter)=\"open($event,tab)\" pRipple [attr.tabindex]=\"tab.disabled ? null : '0'\">\n                                    <ng-container *ngIf=\"!tab.headerTemplate\">\n                                        <span class=\"p-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon\"></span>\n                                        <span class=\"p-tabview-title\">{{tab.header}}</span>\n                                        <span class=\"p-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon\"></span>\n                                    </ng-container>\n                                    <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n                                    <span *ngIf=\"tab.closable\" class=\"p-tabview-close pi pi-times\" (click)=\"close($event,tab)\"></span>\n                                </a>\n                            </li>\n                        </ng-template>\n                        <li #inkbar class=\"p-tabview-ink-bar\"></li>\n                    </ul>\n                </div>\n                <button *ngIf=\"scrollable && !forwardIsDisabled\" #nextBtn class=\"p-tabview-nav-next p-tabview-nav-btn p-link\" (click)=\"navForward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-right\"></span>\n                </button>\n            </div>\n            <div class=\"p-tabview-panels\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    `, isInline: true, styles: [\".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\\n\"], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2.Ripple, selector: \"[pRipple]\" }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i3.Tooltip, selector: \"[pTooltip]\", inputs: [\"tooltipPosition\", \"tooltipEvent\", \"appendTo\", \"positionStyle\", \"tooltipStyleClass\", \"tooltipZIndex\", \"escape\", \"showDelay\", \"hideDelay\", \"life\", \"positionTop\", \"positionLeft\", \"pTooltip\", \"tooltipDisabled\", \"tooltipOptions\"] }, { type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabView, decorators: [{\n            type: Component,\n            args: [{ selector: 'p-tabView', template: `\n        <div [ngClass]=\"{'p-tabview p-component': true, 'p-tabview-scrollable': scrollable}\" [ngStyle]=\"style\" [class]=\"styleClass\">\n            <div class=\"p-tabview-nav-container\">\n                <button *ngIf=\"scrollable && !backwardIsDisabled\" #prevBtn class=\"p-tabview-nav-prev p-tabview-nav-btn p-link\" (click)=\"navBackward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-left\"></span>\n                </button>\n                <div #content class=\"p-tabview-nav-content\" (scroll)=\"onScroll($event)\">\n                    <ul #navbar class=\"p-tabview-nav\" role=\"tablist\">\n                        <ng-template ngFor let-tab [ngForOf]=\"tabs\">\n                            <li role=\"presentation\" [ngClass]=\"{'p-highlight': tab.selected, 'p-disabled': tab.disabled}\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\" *ngIf=\"!tab.closed\">\n                                <a role=\"tab\" class=\"p-tabview-nav-link\" [attr.id]=\"tab.id + '-label'\" [attr.aria-selected]=\"tab.selected\" [attr.aria-controls]=\"tab.id\" [pTooltip]=\"tab.tooltip\" [tooltipPosition]=\"tab.tooltipPosition\"\n                                    [attr.aria-selected]=\"tab.selected\" [positionStyle]=\"tab.tooltipPositionStyle\" [tooltipStyleClass]=\"tab.tooltipStyleClass\"\n                                    (click)=\"open($event,tab)\" (keydown.enter)=\"open($event,tab)\" pRipple [attr.tabindex]=\"tab.disabled ? null : '0'\">\n                                    <ng-container *ngIf=\"!tab.headerTemplate\">\n                                        <span class=\"p-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon\"></span>\n                                        <span class=\"p-tabview-title\">{{tab.header}}</span>\n                                        <span class=\"p-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon\"></span>\n                                    </ng-container>\n                                    <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n                                    <span *ngIf=\"tab.closable\" class=\"p-tabview-close pi pi-times\" (click)=\"close($event,tab)\"></span>\n                                </a>\n                            </li>\n                        </ng-template>\n                        <li #inkbar class=\"p-tabview-ink-bar\"></li>\n                    </ul>\n                </div>\n                <button *ngIf=\"scrollable && !forwardIsDisabled\" #nextBtn class=\"p-tabview-nav-next p-tabview-nav-btn p-link\" (click)=\"navForward()\" type=\"button\" pRipple>\n                    <span class=\"pi pi-chevron-right\"></span>\n                </button>\n            </div>\n            <div class=\"p-tabview-panels\">\n                <ng-content></ng-content>\n            </div>\n        </div>\n    `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {\n                        'class': 'p-element'\n                    }, styles: [\".p-tabview-nav-container{position:relative}.p-tabview-scrollable .p-tabview-nav-container{overflow:hidden}.p-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-scroll-chaining:contain auto;overscroll-behavior:contain auto}.p-tabview-nav{display:flex;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.p-tabview-nav-link{cursor:pointer;-webkit-user-select:none;-ms-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.p-tabview-ink-bar{display:none;z-index:1}.p-tabview-nav-link:focus{z-index:1}.p-tabview-title{line-height:1;white-space:nowrap}.p-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.p-tabview-nav-prev{left:0}.p-tabview-nav-next{right:0}.p-tabview-nav-content::-webkit-scrollbar{display:none}.p-tabview-close{z-index:1}\\n\"] }]\n        }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { orientation: [{\n                type: Input\n            }], style: [{\n                type: Input\n            }], styleClass: [{\n                type: Input\n            }], controlClose: [{\n                type: Input\n            }], scrollable: [{\n                type: Input\n            }], content: [{\n                type: ViewChild,\n                args: ['content']\n            }], navbar: [{\n                type: ViewChild,\n                args: ['navbar']\n            }], prevBtn: [{\n                type: ViewChild,\n                args: ['prevBtn']\n            }], nextBtn: [{\n                type: ViewChild,\n                args: ['nextBtn']\n            }], inkbar: [{\n                type: ViewChild,\n                args: ['inkbar']\n            }], tabPanels: [{\n                type: ContentChildren,\n                args: [TabPanel]\n            }], onChange: [{\n                type: Output\n            }], onClose: [{\n                type: Output\n            }], activeIndexChange: [{\n                type: Output\n            }], activeIndex: [{\n                type: Input\n            }] } });\nclass TabViewModule {\n}\nTabViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTabViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabViewModule, declarations: [TabView, TabPanel], imports: [CommonModule, SharedModule, TooltipModule, RippleModule], exports: [TabView, TabPanel, SharedModule] });\nTabViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabViewModule, imports: [[CommonModule, SharedModule, TooltipModule, RippleModule], SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: TabViewModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    imports: [CommonModule, SharedModule, TooltipModule, RippleModule],\n                    exports: [TabView, TabPanel, SharedModule],\n                    declarations: [TabView, TabPanel]\n                }]\n        }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { TabPanel, TabView, TabViewModule };\n"]},"metadata":{},"sourceType":"module"}
Index: trip-planner-front/node_modules/.cache/babel-webpack/e11eae4f53d59eef7706df861cec50eb.json
===================================================================
--- trip-planner-front/node_modules/.cache/babel-webpack/e11eae4f53d59eef7706df861cec50eb.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
+++ trip-planner-front/node_modules/.cache/babel-webpack/e11eae4f53d59eef7706df861cec50eb.json	(revision 59329aad30ff25ec5095bb7ffb78ddb59b7dc111)
@@ -0,0 +1,1 @@
+{"ast":null,"code":"import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\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/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\n\nclass MutationObserverFactory {\n  create(callback) {\n    return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n  }\n\n}\n\nMutationObserverFactory.ɵfac = function MutationObserverFactory_Factory(t) {\n  return new (t || MutationObserverFactory)();\n};\n\nMutationObserverFactory.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: MutationObserverFactory,\n  factory: MutationObserverFactory.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MutationObserverFactory, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], null, null);\n})();\n/** An injectable service that allows watching elements for changes to their content. */\n\n\nclass ContentObserver {\n  constructor(_mutationObserverFactory) {\n    this._mutationObserverFactory = _mutationObserverFactory;\n    /** Keeps track of the existing MutationObservers so they can be reused. */\n\n    this._observedElements = new Map();\n  }\n\n  ngOnDestroy() {\n    this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n  }\n\n  observe(elementOrRef) {\n    const element = coerceElement(elementOrRef);\n    return new Observable(observer => {\n      const stream = this._observeElement(element);\n\n      const subscription = stream.subscribe(observer);\n      return () => {\n        subscription.unsubscribe();\n\n        this._unobserveElement(element);\n      };\n    });\n  }\n  /**\n   * Observes the given element by using the existing MutationObserver if available, or creating a\n   * new one if not.\n   */\n\n\n  _observeElement(element) {\n    if (!this._observedElements.has(element)) {\n      const stream = new Subject();\n\n      const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n\n      if (observer) {\n        observer.observe(element, {\n          characterData: true,\n          childList: true,\n          subtree: true\n        });\n      }\n\n      this._observedElements.set(element, {\n        observer,\n        stream,\n        count: 1\n      });\n    } else {\n      this._observedElements.get(element).count++;\n    }\n\n    return this._observedElements.get(element).stream;\n  }\n  /**\n   * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n   * observing this element.\n   */\n\n\n  _unobserveElement(element) {\n    if (this._observedElements.has(element)) {\n      this._observedElements.get(element).count--;\n\n      if (!this._observedElements.get(element).count) {\n        this._cleanupObserver(element);\n      }\n    }\n  }\n  /** Clean up the underlying MutationObserver for the specified element. */\n\n\n  _cleanupObserver(element) {\n    if (this._observedElements.has(element)) {\n      const {\n        observer,\n        stream\n      } = this._observedElements.get(element);\n\n      if (observer) {\n        observer.disconnect();\n      }\n\n      stream.complete();\n\n      this._observedElements.delete(element);\n    }\n  }\n\n}\n\nContentObserver.ɵfac = function ContentObserver_Factory(t) {\n  return new (t || ContentObserver)(i0.ɵɵinject(MutationObserverFactory));\n};\n\nContentObserver.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n  token: ContentObserver,\n  factory: ContentObserver.ɵfac,\n  providedIn: 'root'\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ContentObserver, [{\n    type: Injectable,\n    args: [{\n      providedIn: 'root'\n    }]\n  }], function () {\n    return [{\n      type: MutationObserverFactory\n    }];\n  }, null);\n})();\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\n\n\nclass CdkObserveContent {\n  constructor(_contentObserver, _elementRef, _ngZone) {\n    this._contentObserver = _contentObserver;\n    this._elementRef = _elementRef;\n    this._ngZone = _ngZone;\n    /** Event emitted for each change in the element's content. */\n\n    this.event = new EventEmitter();\n    this._disabled = false;\n    this._currentSubscription = null;\n  }\n  /**\n   * Whether observing content is disabled. This option can be used\n   * to disconnect the underlying MutationObserver until it is needed.\n   */\n\n\n  get disabled() {\n    return this._disabled;\n  }\n\n  set disabled(value) {\n    this._disabled = coerceBooleanProperty(value);\n    this._disabled ? this._unsubscribe() : this._subscribe();\n  }\n  /** Debounce interval for emitting the changes. */\n\n\n  get debounce() {\n    return this._debounce;\n  }\n\n  set debounce(value) {\n    this._debounce = coerceNumberProperty(value);\n\n    this._subscribe();\n  }\n\n  ngAfterContentInit() {\n    if (!this._currentSubscription && !this.disabled) {\n      this._subscribe();\n    }\n  }\n\n  ngOnDestroy() {\n    this._unsubscribe();\n  }\n\n  _subscribe() {\n    this._unsubscribe();\n\n    const stream = this._contentObserver.observe(this._elementRef); // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.\n    // Consider brining it back inside the zone next time we're making breaking changes.\n    // Bringing it back inside can cause things like infinite change detection loops and changed\n    // after checked errors if people's code isn't handling it properly.\n\n\n    this._ngZone.runOutsideAngular(() => {\n      this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n    });\n  }\n\n  _unsubscribe() {\n    this._currentSubscription?.unsubscribe();\n  }\n\n}\n\nCdkObserveContent.ɵfac = function CdkObserveContent_Factory(t) {\n  return new (t || CdkObserveContent)(i0.ɵɵdirectiveInject(ContentObserver), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone));\n};\n\nCdkObserveContent.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n  type: CdkObserveContent,\n  selectors: [[\"\", \"cdkObserveContent\", \"\"]],\n  inputs: {\n    disabled: [\"cdkObserveContentDisabled\", \"disabled\"],\n    debounce: \"debounce\"\n  },\n  outputs: {\n    event: \"cdkObserveContent\"\n  },\n  exportAs: [\"cdkObserveContent\"]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CdkObserveContent, [{\n    type: Directive,\n    args: [{\n      selector: '[cdkObserveContent]',\n      exportAs: 'cdkObserveContent'\n    }]\n  }], function () {\n    return [{\n      type: ContentObserver\n    }, {\n      type: i0.ElementRef\n    }, {\n      type: i0.NgZone\n    }];\n  }, {\n    event: [{\n      type: Output,\n      args: ['cdkObserveContent']\n    }],\n    disabled: [{\n      type: Input,\n      args: ['cdkObserveContentDisabled']\n    }],\n    debounce: [{\n      type: Input\n    }]\n  });\n})();\n\nclass ObserversModule {}\n\nObserversModule.ɵfac = function ObserversModule_Factory(t) {\n  return new (t || ObserversModule)();\n};\n\nObserversModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n  type: ObserversModule\n});\nObserversModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n  providers: [MutationObserverFactory]\n});\n\n(function () {\n  (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ObserversModule, [{\n    type: NgModule,\n    args: [{\n      exports: [CdkObserveContent],\n      declarations: [CdkObserveContent],\n      providers: [MutationObserverFactory]\n    }]\n  }], null, null);\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/@angular/cdk/fesm2020/observers.mjs"],"names":["coerceElement","coerceBooleanProperty","coerceNumberProperty","i0","Injectable","EventEmitter","Directive","Output","Input","NgModule","Observable","Subject","debounceTime","MutationObserverFactory","create","callback","MutationObserver","ɵfac","ɵprov","type","args","providedIn","ContentObserver","constructor","_mutationObserverFactory","_observedElements","Map","ngOnDestroy","forEach","_","element","_cleanupObserver","observe","elementOrRef","observer","stream","_observeElement","subscription","subscribe","unsubscribe","_unobserveElement","has","mutations","next","characterData","childList","subtree","set","count","get","disconnect","complete","delete","CdkObserveContent","_contentObserver","_elementRef","_ngZone","event","_disabled","_currentSubscription","disabled","value","_unsubscribe","_subscribe","debounce","_debounce","ngAfterContentInit","runOutsideAngular","pipe","ElementRef","NgZone","ɵdir","selector","exportAs","ObserversModule","ɵmod","ɵinj","exports","declarations","providers"],"mappings":"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","sourcesContent":["import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } 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/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\nclass MutationObserverFactory {\n    create(callback) {\n        return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n    }\n}\nMutationObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMutationObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MutationObserverFactory, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }] });\n/** An injectable service that allows watching elements for changes to their content. */\nclass ContentObserver {\n    constructor(_mutationObserverFactory) {\n        this._mutationObserverFactory = _mutationObserverFactory;\n        /** Keeps track of the existing MutationObservers so they can be reused. */\n        this._observedElements = new Map();\n    }\n    ngOnDestroy() {\n        this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n    }\n    observe(elementOrRef) {\n        const element = coerceElement(elementOrRef);\n        return new Observable((observer) => {\n            const stream = this._observeElement(element);\n            const subscription = stream.subscribe(observer);\n            return () => {\n                subscription.unsubscribe();\n                this._unobserveElement(element);\n            };\n        });\n    }\n    /**\n     * Observes the given element by using the existing MutationObserver if available, or creating a\n     * new one if not.\n     */\n    _observeElement(element) {\n        if (!this._observedElements.has(element)) {\n            const stream = new Subject();\n            const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n            if (observer) {\n                observer.observe(element, {\n                    characterData: true,\n                    childList: true,\n                    subtree: true,\n                });\n            }\n            this._observedElements.set(element, { observer, stream, count: 1 });\n        }\n        else {\n            this._observedElements.get(element).count++;\n        }\n        return this._observedElements.get(element).stream;\n    }\n    /**\n     * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n     * observing this element.\n     */\n    _unobserveElement(element) {\n        if (this._observedElements.has(element)) {\n            this._observedElements.get(element).count--;\n            if (!this._observedElements.get(element).count) {\n                this._cleanupObserver(element);\n            }\n        }\n    }\n    /** Clean up the underlying MutationObserver for the specified element. */\n    _cleanupObserver(element) {\n        if (this._observedElements.has(element)) {\n            const { observer, stream } = this._observedElements.get(element);\n            if (observer) {\n                observer.disconnect();\n            }\n            stream.complete();\n            this._observedElements.delete(element);\n        }\n    }\n}\nContentObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ContentObserver, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });\nContentObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ContentObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ContentObserver, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: function () { return [{ type: MutationObserverFactory }]; } });\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nclass CdkObserveContent {\n    constructor(_contentObserver, _elementRef, _ngZone) {\n        this._contentObserver = _contentObserver;\n        this._elementRef = _elementRef;\n        this._ngZone = _ngZone;\n        /** Event emitted for each change in the element's content. */\n        this.event = new EventEmitter();\n        this._disabled = false;\n        this._currentSubscription = null;\n    }\n    /**\n     * Whether observing content is disabled. This option can be used\n     * to disconnect the underlying MutationObserver until it is needed.\n     */\n    get disabled() {\n        return this._disabled;\n    }\n    set disabled(value) {\n        this._disabled = coerceBooleanProperty(value);\n        this._disabled ? this._unsubscribe() : this._subscribe();\n    }\n    /** Debounce interval for emitting the changes. */\n    get debounce() {\n        return this._debounce;\n    }\n    set debounce(value) {\n        this._debounce = coerceNumberProperty(value);\n        this._subscribe();\n    }\n    ngAfterContentInit() {\n        if (!this._currentSubscription && !this.disabled) {\n            this._subscribe();\n        }\n    }\n    ngOnDestroy() {\n        this._unsubscribe();\n    }\n    _subscribe() {\n        this._unsubscribe();\n        const stream = this._contentObserver.observe(this._elementRef);\n        // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.\n        // Consider brining it back inside the zone next time we're making breaking changes.\n        // Bringing it back inside can cause things like infinite change detection loops and changed\n        // after checked errors if people's code isn't handling it properly.\n        this._ngZone.runOutsideAngular(() => {\n            this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n        });\n    }\n    _unsubscribe() {\n        this._currentSubscription?.unsubscribe();\n    }\n}\nCdkObserveContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkObserveContent, deps: [{ token: ContentObserver }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkObserveContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: { disabled: [\"cdkObserveContentDisabled\", \"disabled\"], debounce: \"debounce\" }, outputs: { event: \"cdkObserveContent\" }, exportAs: [\"cdkObserveContent\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkObserveContent, decorators: [{\n            type: Directive,\n            args: [{\n                    selector: '[cdkObserveContent]',\n                    exportAs: 'cdkObserveContent',\n                }]\n        }], ctorParameters: function () { return [{ type: ContentObserver }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { event: [{\n                type: Output,\n                args: ['cdkObserveContent']\n            }], disabled: [{\n                type: Input,\n                args: ['cdkObserveContentDisabled']\n            }], debounce: [{\n                type: Input\n            }] } });\nclass ObserversModule {\n}\nObserversModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nObserversModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, declarations: [CdkObserveContent], exports: [CdkObserveContent] });\nObserversModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, providers: [MutationObserverFactory] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, decorators: [{\n            type: NgModule,\n            args: [{\n                    exports: [CdkObserveContent],\n                    declarations: [CdkObserveContent],\n                    providers: [MutationObserverFactory],\n                }]\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };\n"]},"metadata":{},"sourceType":"module"}
