{"version":3,"file":"5462.c2c578b4274ccbfc.js","mappings":"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","names":["UIBaseComponent","constructor","injector","this","forceDefaultStyles","config","isSmallSize","default","defaultCustomWidgetConfig","cdr","get","ChangeDetectorRef","debugName","destroyed$","ReplaySubject","oldWidth","ngOnChanges","onUpdateStyles","ngOnDestroy","next","complete","currentStyles","styles","onElementResized","contentRect","result","width","detectChanges","static","t","i0","_angular_core__WEBPACK_IMPORTED_MODULE_2__","lG2","inputs","features","NORMAL_WIDTH","UICardStyleComponent","core","Xpm","selectors","decls","vars","template","rf","ctx","encapsulation","UICardComponent_ng_container_1_ng_template_2_ng_container_2_ng_container_2_Template","_r1","_r9","ctx_r8","close","UICardComponent_ng_container_1_ng_template_2_ng_container_2_Template","ctx_r4","asModal","$event","_r13","ctx_r12","onResize","UICardComponent_ng_container_1_div_4_ng_container_2_Template","ctx_r5","borderColor","backgroundColor","maxWidth","minWidth","UICardComponent_ng_container_1_ng_template_2_Template","UICardComponent_ng_container_1_div_4_Template","ctx_r0","_r16","ctx_r15","onContentResize","UICardComponent","setAsModal","widgetScaleService","setDefault","dialogRef","dialog","open","modalContentTemplate","panelClass","scrollStrategy","overlay","scrollStrategies","noop","afterClosed","pipe","takeUntil","subscribe","modalClosedEmitter","emit","domSanitizer","matIconRegistry","renderer","env","super","isRefreshing","EventEmitter","bordersWidth","addSvgIcon","bypassSecurityTrustResourceUrl","custom","cdn","e","dialogOpenSubscription","unsubscribe","timer","openedDialog","getDialogById","id","parent","_overlayRef","_host","parentNode","innerHTML","document","head","parentElement","classList","contains","remove","Number","lineColor","markForCheck","target","calcDimensions","updateWrapperHeight","element","newWidth","Math","min","max","offsetWidth","cardPadding","wrapperContentRef","nativeElement","calcPadding","scale","paddingPx","coerceCssPixelValue","setStyle","scaleInCssValue","updateWrapperWidth","wrapperWidth","peWidgetCardRef","CARD_PADDING","wrapperEl","maxHeight","offsetHeight","i1","i2","i3","i4","i5","PE_ENV","viewQuery","UICardComponent_ng_container_1_Template","UICardComponent_ng_template_2_Template","UIFooterPoweredByPayeverComponent","consts","UIFullHeaderSantanderComponent","ngContentSelectors","_c1","UIHeaderSantanderComponent","headerTextColor","iconsHelperService","registerIcons","hostVars","hostBindings","UILoadingRatesComponent","_angular_core__WEBPACK_IMPORTED_MODULE_1__","UIPayeverIconComponent","UIPoweredByPayeverComponent","ctx_r1","mainTextColor","buttonColor","ctx_r2","numColumns","rate","details","ctx_r3","error","UIRateButtonComponent","isLoading","isShowSelectedRateDetails","clickedEmitter","onClick","_angular_core__WEBPACK_IMPORTED_MODULE_6__","UIRateButtonComponent_finexp_ui_loading_rates_1_Template","UIRateButtonComponent_div_2_Template","UIRateButtonComponent_finexp_ui_selected_rate_details_3_Template","UIRateButtonComponent_finexp_ui_selected_rate_details_line_4_Template","UIRateButtonComponent_finexp_ui_rate_error_5_Template","UIRateButtonComponent_finexp_ui_rate_error_6_Template","isOneLine","UIRateDropdownStyleComponent","rate_r10","_r12","$implicit","ctx_r11","selectRate","ctx_r7","value","selectedRate","listTitle","_r14","ctx_r13","onTitleResized","selectedTitle","i_r17","_r19","index","ctx_r18","selectedRateMultiTitles","length","fieldLineColor","col_r16","label","text","UIRateDropdownComponent_div_3_div_8_div_1_Template","ctx_r9","_r21","ctx_r20","onOpened","ctx_r22","onClosed","UIRateDropdownComponent_div_3_div_6_Template","UIRateDropdownComponent_div_3_div_7_Template","UIRateDropdownComponent_div_3_div_8_Template","fieldBackgroundColor","_r6","useMultiTitle","rates","fieldArrowColor","UIRateDropdownComponent","setRates","checkDefaultRate","rateSelectedEmitter","sheetId","dropdownIconWidth","fontSize","dropdownWidth","selectedMultiTitles","onKeydownHandler","event","trigger","closeMenu","clientWidth","removeStyleSheet","addStyleSheet","selected","sheet","createElement","_rootNode","appendChild","dueTime","sheetToBeRemoved","querySelector","removeChild","defaultRate","find","isDefault","body","MatMenuTrigger","UIRateDropdownComponent_finexp_ui_loading_rates_2_Template","UIRateDropdownComponent_div_3_Template","UIRateDropdownComponent_finexp_ui_selected_rate_details_4_Template","UIRateDropdownComponent_finexp_ui_selected_rate_details_line_5_Template","UIRateDropdownComponent_finexp_ui_rate_error_6_Template","UIRateDropdownComponent_finexp_ui_rate_error_7_Template","UIRateErrorComponent","_c0","UIRateTextComponent","_angular_core__WEBPACK_IMPORTED_MODULE_5__","UIRateTextComponent_finexp_ui_loading_rates_0_Template","UIRateTextComponent_div_1_Template","UIRateTextComponent_finexp_ui_selected_rate_details_2_Template","UIRateTextComponent_finexp_ui_selected_rate_details_line_3_Template","UIRateTextComponent_finexp_ui_rate_error_4_Template","UIRateTextComponent_finexp_ui_rate_error_5_Template","UIRegularTextComponent","regularTextColor","UISantanderConsumerIconMediumComponent","UISantanderIconMediumComponent","UISantanderIconShortComponent","col_r1","title","UISelectedRateDetailsLineComponent","UISelectedRateDetailsLineComponent_div_1_Template","col_r2","UISelectedRateDetailsComponent","rows","Renderer2","reduce","acc","item","push","at","gridElement","gridRef","cells","toArray","cols","calculateColumns","cellCount","widest","map","cell","Array","from","children","maxCols","floor","UISelectedRateDetailsComponent_div_2_Template","UIShadowRootWrapperComponent","_angular_core__WEBPACK_IMPORTED_MODULE_0__","UIShortHeaderSantanderComponent","logo","_angular_core__WEBPACK_IMPORTED_MODULE_3__","UIShortHeaderSantanderComponent_finexp_ui_santander_icon_short_0_Template","UIShortHeaderSantanderComponent_finexp_ui_santander_icon_medium_1_Template","UIShowCheckoutWrapperButtonComponent","ctaTextColor","UITopBigTextComponent","UITopTextComponent","channelSet","amountLimits","isVisible","payments","ratesOrder","RatesOrderEnum","Asc","checkoutPlacement","CheckoutPlacementEnum","RighSidebar","checkoutMode","CheckoutModeEnum","None","successUrl","pendingUrl","cancelUrl","failureUrl","noticeUrl","business","checkoutId","widgetId","amount","reference","type","isDebugMode","AbstractBaseWidgetModule","componentFactoryResolver","BaseWidgetComponent","failedEmitter","isLoadingRates","destroy$","currencyPipe","CurrencyPipe","percentPipe","PercentPipe","localeConstantsService","LocaleConstantsService","ratesAsc","ratesDesc","currentRate","isFinCalc","Calculator","hasShortToExtendedViewSwitcher","isFinExp","FinanceExpress","isShowWrapperButtonVisible","isNone","isBNPL","currentPayment","productId","changes","checkPaymentsEquality","currentValue","previousValue","getRatesSub","updateRates","onRateSelected","onClicked","toPercent","transform","toPrice","currency","toPriceNumber","replace","trim","a","enabled","delay","mergeMap","getRates","data","transformRate","reverse","catchError","err","message","throwError","firstPayments","secondPayments","every","payment","correspondingPayment","paymentMethod","cart","billingAddress","shippingAddress","shippingOption","outputs","BaseWidgetCustomElementComponent","setAmount","parseInputNumber","setChannelSet","parseInputString","setWidgetType","setEnv","parseInputObject","setInitialValues","setIsDebugMode","parseInputBoolean","setPaymentMethod","setTheme","theme","window","matchMedia","matches","clicked","isReady$","BehaviorSubject","WidgetTypeEnum","isForceHideSubject$","combineLatest","registerLocale","tap","isForceHide","localeLoaded","onFailed","JSON","parse","parseFloat","String","importLocale","locale","getLang","LOCALE_MAPPER","__webpack_require__","then","bind","first","l","registerLocaleData","shadowRoot","PaymentWidgetsSdkModule","oAB","cJS","IconsHelperService","CheckoutApiService","imports","CommonModule","FormsModule","MatMenuModule","MatDialogModule","MatIconModule","httpClient","checkoutSettings","defaultConnections","getCheckoutSettings","channelSetId","fetchCheckoutSettings","filter","settings","Error","shareReplay","getDefaultConnections","key","fetchDefaultConnections","connection","backend","checkout","Yz7","factory","ɵfac","iconNames","forEach","name","WidgetScaleService","_scale","providedIn","fromResizeObserver","Observable","sub","observer","ResizeObserver","entries","observe","disconnect","ResizeDirective","elementRef","resized","standalone","MatMenuItem__svg_svg_2_Template","MatMenu_ng_template_0_Template","_r2","_handleKeydown","closed","_onAnimationStart","_onAnimationDone","panelId","_classList","_panelAnimationState","ariaLabel","ariaLabelledby","ariaDescribedby","matMenuAnimations","transformMenu","state","style","opacity","transition","animate","fadeInItems","MAT_MENU_CONTENT","InjectionToken","MAT_MENU_PANEL","_MatMenuItemBase","mixinDisableRipple","mixinDisabled","MatMenuItem","_elementRef","_document","_focusMonitor","_parentMenu","_changeDetectorRef","role","_hovered","Subject","_focused","_highlighted","_triggersSubmenu","addItem","focus","origin","options","focusVia","_getHostElement","ngAfterViewInit","monitor","stopMonitoring","removeItem","_getTabIndex","disabled","_checkDisabled","preventDefault","stopPropagation","_handleMouseEnter","getLabel","clone","cloneNode","icons","querySelectorAll","i","textContent","_setHighlighted","isHighlighted","_hasFocus","activeElement","DOCUMENT","ɵcmp","hostAttrs","toString","disableRipple","exportAs","attrs","dependencies","changeDetection","MAT_MENU_DEFAULT_OPTIONS","MAT_MENU_DEFAULT_OPTIONS_FACTORY","overlapTrigger","xPosition","yPosition","backdropClass","menuPanelUid","_MatMenuBase","_ngZone","_defaultOptions","_xPosition","_yPosition","_directDescendantItems","QueryList","_tabSubscription","Subscription","EMPTY","_animationDone","overlayPanelClass","_overlapTrigger","_hasBackdrop","hasBackdrop","setPositionClasses","coerceBooleanProperty","classes","previousPanelClass","_previousPanelClass","split","className","ngOnInit","ngAfterContentInit","_updateDirectDescendants","_keyManager","FocusKeyManager","withWrap","withTypeAhead","withHomeAndEnd","tabOut","startWith","switchMap","items","merge","focusedItem","updateActiveItem","itemsList","manager","activeItem","activeItemIndex","setActiveItem","setNextItemActive","destroy","_item","keyCode","ESCAPE","hasModifierKey","LEFT_ARROW","parentMenu","direction","RIGHT_ARROW","UP_ARROW","DOWN_ARROW","setFocusOrigin","onKeydown","focusFirstItem","onStable","take","menuPanel","closest","setFirstItemActive","resetActiveItem","setElevation","depth","elevation","_baseElevation","newElevation","_elevationPrefix","customElevation","Object","keys","startsWith","_previousElevation","posX","posY","_startAnimation","_resetAnimation","_isAnimating","toState","scrollTop","_allItems","reset","notifyOnChanges","ɵdir","contentQueries","dirIndex","_t","lazyContent","TemplateRef","templateRef","MatMenu","ngZone","defaultOptions","changeDetectorRef","provide","useExisting","animation","MAT_MENU_SCROLL_STRATEGY","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","deps","Overlay","useFactory","MAT_MENU_SCROLL_STRATEGY_FACTORY","reposition","passiveEventListenerOptions","normalizePassiveListenerOptions","passive","_MatMenuTriggerBase","_overlay","_element","_viewContainerRef","_menuItemInstance","_dir","_menuOpen","_closingActionsSubscription","_hoverSubscription","_menuCloseSubscription","_handleTouchStart","isFakeTouchstartFromScreenReader","_openedBy","undefined","restoreFocus","menuOpened","onMenuOpen","menuClosed","onMenuClose","_scrollStrategy","_parentMaterialMenu","addEventListener","triggersSubmenu","_deprecatedMatMenuTriggerFor","menu","v","_menu","reason","_destroyMenu","_handleHover","dispose","removeEventListener","menuOpen","dir","toggleMenu","openMenu","overlayRef","_createOverlay","overlayConfig","getConfig","positionStrategy","_setPosition","attach","_getPortal","menuData","_menuClosingActions","_initMenu","withLockedPosition","reapplyLastPosition","updatePosition","detach","_attached","_setIsMenuOpen","_setMenuElevation","isOpen","_getOverlayConfig","_subscribeToPositions","create","keydownEvents","OverlayConfig","position","flexibleConnectedTo","withGrowAfterOpen","withTransformOriginOn","positionChanges","change","connectionPair","overlayX","overlayY","run","originX","originFallbackX","overlayFallbackY","originY","originFallbackY","overlayFallbackX","offsetY","_parentInnerPadding","firstItem","offsetTop","withPositions","backdrop","backdropClick","detachments","parentClose","of","hover","active","_handleMousedown","isFakeMousedownFromScreenReader","button","ENTER","SPACE","_handleClick","asapScheduler","_portal","TemplatePortal","i1$1","i3$1","ɵMatMenuTrigger_BaseFactory","ɵmod","ɵinj","providers","MatCommonModule","MatRippleModule","OverlayModule","CdkScrollableModule"],"sourceRoot":"webpack:///","sources":["./libs/shared/payment-widgets/src/components/ui/base.component.ts","./libs/shared/payment-widgets/src/components/ui/card/constant.ts","./libs/shared/payment-widgets/src/components/ui/card/style/style.component.ts","./libs/shared/payment-widgets/src/components/ui/card/card.component.html","./libs/shared/payment-widgets/src/components/ui/card/card.component.ts","./libs/shared/payment-widgets/src/components/ui/footer-powered-by-payever/footer-powered-by-payever.component.ts","./libs/shared/payment-widgets/src/components/ui/footer-powered-by-payever/footer-powered-by-payever.component.html","./libs/shared/payment-widgets/src/components/ui/full-header-santander/full-header-santander.component.ts","./libs/shared/payment-widgets/src/components/ui/full-header-santander/full-header-santander.component.html","./libs/shared/payment-widgets/src/components/ui/header-santander/header-santander.component.ts","./libs/shared/payment-widgets/src/components/ui/header-santander/header-santander.component.html","./libs/shared/payment-widgets/src/components/ui/loading-rates/loading-rates.component.ts","./libs/shared/payment-widgets/src/components/ui/loading-rates/loading-rates.component.html","./libs/shared/payment-widgets/src/components/ui/payever-icon/payever-icon.component.ts","./libs/shared/payment-widgets/src/components/ui/powered-by-payever/powered-by-payever.component.ts","./libs/shared/payment-widgets/src/components/ui/powered-by-payever/powered-by-payever.component.html","./libs/shared/payment-widgets/src/components/ui/rate-button/rate-button.component.html","./libs/shared/payment-widgets/src/components/ui/rate-button/rate-button.component.ts","./libs/shared/payment-widgets/src/components/ui/rate-dropdown/style/style.component.ts","./libs/shared/payment-widgets/src/components/ui/rate-dropdown/rate-dropdown.component.html","./libs/shared/payment-widgets/src/components/ui/rate-dropdown/rate-dropdown.component.ts","./libs/shared/payment-widgets/src/components/ui/rate-error/rate-error.component.ts","./libs/shared/payment-widgets/src/components/ui/rate-error/rate-error.component.html","./libs/shared/payment-widgets/src/components/ui/rate-text/rate-text.component.html","./libs/shared/payment-widgets/src/components/ui/rate-text/rate-text.component.ts","./libs/shared/payment-widgets/src/components/ui/regular-text/regular-text.component.ts","./libs/shared/payment-widgets/src/components/ui/regular-text/regular-text.component.html","./libs/shared/payment-widgets/src/components/ui/santander-consumer-icon-medium/santander-consumer-icon-medium.component.ts","./libs/shared/payment-widgets/src/components/ui/santander-icon-medium/santander-icon-medium.component.ts","./libs/shared/payment-widgets/src/components/ui/santander-icon-short/santander-icon-short.component.ts","./libs/shared/payment-widgets/src/components/ui/santander-icon-short/santander-icon-short.component.html","./libs/shared/payment-widgets/src/components/ui/selected-rate-details-line/selected-rate-details-line.component.html","./libs/shared/payment-widgets/src/components/ui/selected-rate-details-line/selected-rate-details-line.component.ts","./libs/shared/payment-widgets/src/components/ui/selected-rate-details/selected-rate-details.component.html","./libs/shared/payment-widgets/src/components/ui/selected-rate-details/selected-rate-details.component.ts","./libs/shared/payment-widgets/src/components/ui/shadow-root-wrapper/shadow-root-wrapper.component.ts","./libs/shared/payment-widgets/src/components/ui/short-header-santander/short-header-santander.component.html","./libs/shared/payment-widgets/src/components/ui/short-header-santander/short-header-santander.component.ts","./libs/shared/payment-widgets/src/components/ui/show-checkout-wrapper-button/show-checkout-wrapper-button.component.ts","./libs/shared/payment-widgets/src/components/ui/show-checkout-wrapper-button/show-checkout-wrapper-button.component.html","./libs/shared/payment-widgets/src/components/ui/top-big-text/top-big-text.component.ts","./libs/shared/payment-widgets/src/components/ui/top-big-text/top-big-text.component.html","./libs/shared/payment-widgets/src/components/ui/top-text/top-text.component.ts","./libs/shared/payment-widgets/src/components/ui/top-text/top-text.component.html","./libs/shared/payment-widgets/src/constants/default-custom-widget-config.constant.ts","./libs/shared/payment-widgets/src/components/abstract-base-widget.module.ts","./libs/shared/payment-widgets/src/components/base-widget.component.ts","./libs/shared/payment-widgets/src/components/base-widget-custom-element.component.ts","./libs/shared/payment-widgets/src/payment-widgets-sdk.module.ts","./libs/shared/payment-widgets/src/services/checkout-api.service.ts","./libs/shared/payment-widgets/src/services/icons-helper.service.ts","./libs/shared/payment-widgets/src/services/widget.scale.service.ts","./libs/shared/utils/from-resize-observer/index.ts","./node_modules/@angular/material/fesm2020/menu.mjs"],"sourcesContent":["import {\n ChangeDetectorRef, Directive, Injector, Input, OnChanges, OnDestroy,\n} from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nimport { WidgetConfigInterface } from '@pe/checkout/types';\n\nimport { defaultCustomWidgetConfig } from '../../constants';\n\n@Directive()\nexport class UIBaseComponent implements OnChanges, OnDestroy {\n\n @Input() forceDefaultStyles = false;\n @Input() config: WidgetConfigInterface = null;\n\n isSmallSize = false;\n default: WidgetConfigInterface = defaultCustomWidgetConfig();\n\n protected cdr: ChangeDetectorRef = this.injector.get(ChangeDetectorRef);\n protected debugName = 'noname';\n protected destroyed$: ReplaySubject = new ReplaySubject();\n\n private oldWidth: number = null;\n\n constructor(protected injector: Injector) {\n }\n\n ngOnChanges(): void {\n this.onUpdateStyles();\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n get currentStyles(): any {\n return this.forceDefaultStyles ? this.default.styles : this.config?.styles;\n }\n\n onUpdateStyles(): void {\n return;\n }\n\n onElementResized({ contentRect }: ResizeObserverEntry): boolean {\n let result = false;\n if (contentRect.width !== this.oldWidth) {\n this.oldWidth = contentRect.width;\n this.isSmallSize = contentRect.width < 380;\n this.cdr.detectChanges();\n result = true;\n }\n\n return result;\n }\n}\n","export const NORMAL_WIDTH = 500;\nexport const CARD_PADDING = 12;\nexport const MIN_SCALE_WIDTH = 300;\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'finexp-ui-card-style',\n template: '',\n styles: [`\n .pe-widget-card-modal {\n max-width: 540px !important;\n width: 100%;\n }\n .pe-widget-card-modal .mat-dialog-container {\n padding: 12px 12px 6px !important;\n background: #ffffff !important;\n position: relative !important;\n }\n `],\n encapsulation: ViewEncapsulation.None,\n})\nexport class UICardStyleComponent {\n}\n","\n\n
\n \n \n \n \n \n \n \n \n \n \n
\n\n \n \n \n
\n\n \n \n \n\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n Component, ChangeDetectionStrategy, Injector, Input,\n Output, EventEmitter, ViewChild, TemplateRef, Inject, ElementRef, Renderer2,\n} from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Subscription, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { PE_ENV, EnvironmentConfigInterface as EnvInterface } from '@pe/common';\n\nimport { WidgetScaleService } from '../../../services';\nimport { UIBaseComponent } from '../base.component';\n\nimport { CARD_PADDING, MIN_SCALE_WIDTH, NORMAL_WIDTH } from './constant';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n})\nexport class UICardComponent extends UIBaseComponent {\n\n asModal = false;\n isRefreshing = false;\n dialogOpenSubscription: Subscription;\n\n @Input('asModal') set setAsModal(asModal: boolean) {\n this.asModal = asModal;\n if (this.asModal) {\n this.widgetScaleService.setDefault();\n this.dialogRef = this.dialog.open(this.modalContentTemplate, {\n panelClass: 'pe-widget-card-modal',\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n });\n this.dialogRef.afterClosed().pipe(takeUntil(this.destroyed$)).subscribe(() => {\n if (this.dialogRef) {\n this.dialogRef = null;\n this.modalClosedEmitter.emit();\n }\n });\n } else {\n this.close();\n }\n }\n\n @Output('modalClosed') modalClosedEmitter: EventEmitter = new EventEmitter();\n\n @ViewChild('modalContentTemplate') modalContentTemplate: TemplateRef;\n @ViewChild('peWidgetCard', { static: false }) peWidgetCardRef: ElementRef;\n @ViewChild('wrapperContent') wrapperContentRef: ElementRef;\n\n minWidth: number = null;\n maxWidth: number = null;\n borderColor: string = null;\n backgroundColor: string = null;\n\n private dialogRef: MatDialogRef = null;\n private readonly bordersWidth = 4;\n\n constructor(\n injector: Injector,\n public dialog: MatDialog,\n private overlay: Overlay,\n private domSanitizer: DomSanitizer,\n private matIconRegistry: MatIconRegistry,\n private renderer: Renderer2,\n private widgetScaleService: WidgetScaleService,\n @Inject(PE_ENV) private env: EnvInterface,\n ) {\n super(injector);\n\n this.matIconRegistry.addSvgIcon(\n 'close-16',\n this.domSanitizer.bypassSecurityTrustResourceUrl(`${this.env.custom.cdn}/payment-widgets/icons/close-16.svg`),\n );\n }\n\n close(e?: Event): void {\n if (this.dialogRef) {\n this.dialogOpenSubscription?.unsubscribe();\n this.dialogRef?.close();\n // At some sites animation is broken and\n // Material Dialog stays on page and this.dialogRef.afterClosed() not triggered.\n // So we have to add some logic:\n timer(200).pipe(takeUntil(this.destroyed$)).subscribe(() => {\n if (this.dialogRef) {\n // Have to force use custom close modal mechanism for widget. Seems that animations are broken at site.');\n const openedDialog: any = this.dialog.getDialogById(this.dialogRef.id);\n const parent = ((openedDialog._overlayRef._host as HTMLDivElement).parentNode as HTMLDivElement);\n\n if (parent?.innerHTML) {\n parent.innerHTML = '';\n }\n\n if (document.head?.parentElement?.classList?.contains('cdk-global-scrollblock')) {\n document.head.parentElement.classList.remove('cdk-global-scrollblock');\n }\n\n openedDialog.close();\n\n this.dialogRef = null;\n this.modalClosedEmitter.emit();\n\n this.isRefreshing = true;\n this.cdr.detectChanges();\n timer(10).pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.isRefreshing = false;\n this.cdr.detectChanges();\n });\n }\n });\n }\n }\n\n onUpdateStyles(): void {\n this.minWidth = Number(this.config?.minWidth) || Number(this.default.minWidth);\n this.maxWidth = Number(this.config?.maxWidth) || Number(this.default.maxWidth);\n if (this.minWidth < this.config.minWidth) {\n this.minWidth = this.config.minWidth;\n }\n if (this.maxWidth < this.minWidth && this.maxWidth > 0) {\n this.maxWidth = this.minWidth;\n }\n this.borderColor = this.currentStyles?.lineColor || this.default.styles.lineColor;\n this.backgroundColor = this.currentStyles?.backgroundColor || this.default.styles.backgroundColor;\n this.cdr.markForCheck();\n }\n\n onResize({ target }: ResizeObserverEntry): void {\n this.calcDimensions(target as HTMLDivElement);\n }\n\n onContentResize({ target }: ResizeObserverEntry): void {\n this.updateWrapperHeight(target as HTMLDivElement);\n }\n\n calcDimensions(element: HTMLDivElement): void {\n const newWidth = Math.min(Math.max(MIN_SCALE_WIDTH, element.offsetWidth), NORMAL_WIDTH);\n let cardPadding = CARD_PADDING;\n const wrapperContentRef = this.wrapperContentRef?.nativeElement;\n\n this.widgetScaleService.setDefault();\n\n if (newWidth !== NORMAL_WIDTH) {\n cardPadding = this.calcPadding(newWidth);\n this.widgetScaleService.scale = (newWidth + this.bordersWidth) / NORMAL_WIDTH;\n }\n\n const paddingPx = coerceCssPixelValue(cardPadding);\n\n this.renderer.setStyle(wrapperContentRef, 'transform', this.widgetScaleService.scaleInCssValue);\n this.renderer.setStyle(wrapperContentRef, 'padding', `8px ${paddingPx}`);\n\n this.updateWrapperWidth(element, this.wrapperContentRef?.nativeElement);\n this.updateWrapperHeight(this.wrapperContentRef?.nativeElement);\n }\n\n private calcPadding(newWidth: number): number {\n const cardPadding = CARD_PADDING * (newWidth / NORMAL_WIDTH);\n\n return Math.min(cardPadding, CARD_PADDING);\n }\n\n private updateWrapperWidth(element: HTMLDivElement, wrapperContentRef: HTMLDivElement) {\n let wrapperWidth = element.offsetWidth <= NORMAL_WIDTH ? NORMAL_WIDTH : this.maxWidth;\n const newWidth = Math.min(Math.max(this.config.minWidth, element.offsetWidth), NORMAL_WIDTH);\n const scale = (newWidth + this.bordersWidth) / NORMAL_WIDTH;\n\n if (element.offsetWidth <= MIN_SCALE_WIDTH) {\n wrapperWidth = (wrapperWidth * scale) / this.widgetScaleService.scale;\n }\n\n this.peWidgetCardRef && this.renderer.setStyle(\n wrapperContentRef,\n 'width',\n `${coerceCssPixelValue(wrapperWidth - CARD_PADDING * 2)}`\n );\n }\n\n private updateWrapperHeight(wrapperEl: HTMLDivElement) {\n const maxHeight = wrapperEl.offsetHeight * this.widgetScaleService.scale;\n this.peWidgetCardRef && this.renderer.setStyle(\n this.peWidgetCardRef?.nativeElement,\n 'height',\n `${coerceCssPixelValue(maxHeight)}`\n );\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-footer-powered-by-payever',\n templateUrl: './footer-powered-by-payever.component.html',\n styleUrls: ['./footer-powered-by-payever.component.scss'],\n})\nexport class UIFooterPoweredByPayeverComponent extends UIBaseComponent {}\n","Powered by\n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-full-header-santander',\n templateUrl: './full-header-santander.component.html',\n styleUrls: ['./full-header-santander.component.scss'],\n})\nexport class UIFullHeaderSantanderComponent extends UIBaseComponent {\n}\n","
\n \n
\n
\n \n
\n\n\n","import { Component, ChangeDetectionStrategy, HostBinding, Injector } from '@angular/core';\n\nimport { IconsHelperService } from '../../../services';\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-header-santander',\n templateUrl: './header-santander.component.html',\n styleUrls: ['./header-santander.component.scss'],\n})\nexport class UIHeaderSantanderComponent extends UIBaseComponent {\n\n @HostBinding('style.color') headerTextColor: string = null;\n\n onUpdateStyles(): void {\n this.headerTextColor = this.currentStyles?.headerTextColor || this.default.styles.headerTextColor;\n }\n\n constructor(\n protected injector: Injector,\n protected iconsHelperService: IconsHelperService\n ) {\n super(injector);\n\n this.iconsHelperService.registerIcons([\n 'santander-bank',\n ]);\n }\n}\n","\n\n \n\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-loading-rates',\n templateUrl: './loading-rates.component.html',\n styleUrls: ['./loading-rates.component.scss'],\n})\nexport class UILoadingRatesComponent extends UIBaseComponent {}\n"," \n
\n","import { Component, ChangeDetectionStrategy, Input, Injector } from '@angular/core';\n\nimport { IconsHelperService } from '../../../services';\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-payever-icon',\n template: ``,\n styles: [`\n :host, .payever-icon {\n height: 24px;\n }\n `],\n})\nexport class UIPayeverIconComponent extends UIBaseComponent {\n @Input() width: number = null;\n\n constructor(\n protected injector: Injector,\n protected iconsHelperService: IconsHelperService\n ) {\n super(injector);\n\n this.iconsHelperService.registerIcons([\n 'payever',\n ]);\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-powered-by-payever',\n templateUrl: './powered-by-payever.component.html',\n styleUrls: ['./powered-by-payever.component.scss'],\n})\nexport class UIPoweredByPayeverComponent extends UIBaseComponent {}\n","Powered by\n\n","
\n \n
\n \n
\n \n \n\n No rates available\n\n {{ error }}\n
\n","import {\n Component, ChangeDetectionStrategy, Injector, HostListener, Output,\n EventEmitter, Input, ElementRef,\n} from '@angular/core';\n\nimport { RateInterface } from '@pe/checkout/types';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-rate-button',\n templateUrl: './rate-button.component.html',\n styleUrls: ['./rate-button.component.scss'],\n})\nexport class UIRateButtonComponent extends UIBaseComponent {\n\n @Input() isLoading = false;\n @Input() error: string = null;\n @Input() rate: RateInterface = null;\n @Input() isShowSelectedRateDetails = true;\n @Input() numColumns = 2;\n @Output('clicked') clickedEmitter: EventEmitter = new EventEmitter();\n\n mainTextColor: string = null;\n buttonColor: string = null;\n\n protected debugName = 'UIRateButtonComponent';\n\n constructor(injector: Injector, protected element: ElementRef) {\n super(injector);\n }\n\n @HostListener('click', ['$event.target']) onClick(): void {\n this.clickedEmitter.emit();\n }\n\n onUpdateStyles(): void {\n this.mainTextColor = this.currentStyles?.mainTextColor || this.default.styles.mainTextColor;\n this.buttonColor = this.currentStyles?.buttonColor || this.default.styles.buttonColor;\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'finexp-ui-rate-dropdown-style',\n template: '',\n styleUrls: ['./style.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class UIRateDropdownStyleComponent {\n}\n","\n
\n \n 0\"\n class=\"rate-dropdown\"\n [style.color]=\"mainTextColor\"\n [style.background]=\"fieldBackgroundColor\"\n [style.border-color]=\"fieldLineColor\">\n \n \n \n \n
\n \n \n \n\n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n\n \n \n\n No rates available\n\n {{ error }}\n\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport {\n Component, ChangeDetectionStrategy, ElementRef, Injector, Input,\n Output, EventEmitter, ViewChild, HostListener, OnDestroy,\n} from '@angular/core';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { timer } from 'rxjs';\n\nimport { RateInterface, SelectedRateMultiTitle } from '@pe/checkout/types';\n\nimport { WidgetScaleService } from '../../../services';\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-rate-dropdown',\n templateUrl: './rate-dropdown.component.html',\n styleUrls: ['./rate-dropdown.component.scss'],\n})\nexport class UIRateDropdownComponent extends UIBaseComponent implements OnDestroy {\n\n @Input() isLoading = false;\n @Input() error: string = null;\n rates: RateInterface[] = [];\n @Input('rates') set setRates(rates: RateInterface[]){\n this.rates = rates;\n this.checkDefaultRate();\n }\n\n @Input() useMultiTitle = false;\n @Input() isShowSelectedRateDetails = true;\n @Input() numColumns = 2;\n\n @Input() rate: RateInterface;\n\n @Output('rateSelected') rateSelectedEmitter: EventEmitter = new EventEmitter();\n\n @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger;\n\n readonly sheetId: string = 'pe-widget-rate-drop-down-menu-sheet';\n readonly dropdownIconWidth: number = 56;\n readonly fontSize: number = 16;\n\n dropdownWidth: number = null;\n mainTextColor: string = null;\n fieldBackgroundColor: string = null;\n fieldLineColor: string = null;\n fieldArrowColor: string = null;\n\n constructor(\n injector: Injector,\n protected element: ElementRef,\n private widgetScaleService: WidgetScaleService,\n ) {\n super(injector);\n }\n\n get selectedRate(): RateInterface {\n return this.rates?.length ? (this.rate || this.rates[0]) : null;\n }\n\n get selectedRateMultiTitles(): SelectedRateMultiTitle[] {\n return this.rates?.length ? this.selectedRate?.selectedMultiTitles : null;\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n onKeydownHandler(event: KeyboardEvent): void {\n this.trigger.closeMenu();\n }\n\n onTitleResized({ target }: ResizeObserverEntry) {\n this.dropdownWidth = target.clientWidth + this.dropdownIconWidth;\n }\n\n onOpened(): void {\n this.removeStyleSheet(0); // to prevent multiple insertions\n this.addStyleSheet();\n }\n\n onClosed(): void {\n this.removeStyleSheet();\n }\n\n selectRate(selected: RateInterface): void {\n this.rate = selected;\n this.rateSelectedEmitter.emit(selected);\n }\n\n onUpdateStyles(): void {\n this.mainTextColor = this.currentStyles?.mainTextColor || this.default.styles.mainTextColor;\n this.fieldBackgroundColor = this.currentStyles?.fieldBackgroundColor || this.default.styles.fieldBackgroundColor;\n this.fieldLineColor = this.currentStyles?.fieldLineColor || this.default.styles.fieldLineColor;\n this.fieldArrowColor = this.currentStyles?.fieldArrowColor || this.default.styles.fieldArrowColor;\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n\n this.onClosed();\n }\n\n private addStyleSheet(): void {\n const sheet = document.createElement('style');\n sheet.id = this.sheetId;\n sheet.innerHTML = `\n .pe-widget-rate-drop-down-menu+* .cdk-overlay-pane > div.mat-menu-panel {\n width: ${(this.dropdownWidth - 2) * this.widgetScaleService.scale}px !important;\n --scale: ${this.widgetScaleService.scale};\n }\n .pe-widget-rate-drop-down-menu + * .cdk-overlay-pane > div.mat-menu-panel .mat-menu-content:not(:empty) {\n padding-top: ${coerceCssPixelValue(8 * this.widgetScaleService.scale)};\n padding-bottom: ${coerceCssPixelValue(8 * this.widgetScaleService.scale)};\n }\n `;\n\n this._rootNode().appendChild(sheet);\n }\n\n private removeStyleSheet(dueTime = 800): void {\n const sheetToBeRemoved = this._rootNode().querySelector(`#${this.sheetId}`);\n if (sheetToBeRemoved) {\n timer(dueTime).subscribe(() => {\n // We have to add delay because close animation takes some time and during that animation we have wrong width\n\n this._rootNode()?.contains(sheetToBeRemoved) && this._rootNode().removeChild(sheetToBeRemoved);\n });\n }\n }\n\n private checkDefaultRate(): void {\n const defaultRate = this.rates?.find(rate => rate?.isDefault);\n defaultRate && this.selectRate(defaultRate);\n }\n\n private _rootNode(): Element {\n return document.body;\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-rate-error',\n templateUrl: './rate-error.component.html',\n styleUrls: ['./rate-error.component.scss'],\n})\nexport class UIRateErrorComponent extends UIBaseComponent {}\n","\n","\n
\n \n
\n\n\n\nNo rates available\n\n{{ error }}\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\n\nimport { RateInterface } from '@pe/checkout/types';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-rate-text',\n templateUrl: './rate-text.component.html',\n styleUrls: ['./rate-text.component.scss'],\n})\nexport class UIRateTextComponent extends UIBaseComponent {\n\n @Input() isLoading = false;\n @Input() error: string = null;\n @Input() rate: RateInterface = null;\n @Input() isShowSelectedRateDetails = true;\n @Input() numColumns = 2;\n\n mainTextColor: string = null;\n\n onUpdateStyles(): void {\n this.mainTextColor = this.currentStyles?.mainTextColor || this.default.styles.mainTextColor;\n }\n}\n","import { Component, ChangeDetectionStrategy, HostBinding } from '@angular/core';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-regular-text',\n templateUrl: './regular-text.component.html',\n styleUrls: ['./regular-text.component.scss'],\n})\nexport class UIRegularTextComponent extends UIBaseComponent {\n\n @HostBinding('style.color') regularTextColor: string = null;\n\n onUpdateStyles(): void {\n this.regularTextColor = this.currentStyles?.regularTextColor || this.default.styles.regularTextColor;\n }\n}\n","\n","import { Component, ChangeDetectionStrategy, Injector } from '@angular/core';\n\nimport { IconsHelperService } from '../../../services';\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-santander-consumer-icon-medium',\n template: `\n \n `,\n styles: [`\n :host {\n font-family: Roboto, sans-serif;\n display: inline-block;\n margin-right: 6px;\n }\n .payever-icon {\n width: 270px;\n height: 20px;\n }\n `],\n})\nexport class UISantanderConsumerIconMediumComponent extends UIBaseComponent {\n constructor(\n protected injector: Injector,\n protected iconsHelperService: IconsHelperService\n ) {\n super(injector);\n\n this.iconsHelperService.registerIcons([\n 'santander-consumer',\n ]);\n }\n}\n","import { Component, ChangeDetectionStrategy, Injector } from '@angular/core';\n\nimport { IconsHelperService } from '../../../services';\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-santander-icon-medium',\n template: `\n \n `,\n styles: [`\n :host {\n font-family: Roboto, sans-serif;\n display: inline-block;\n margin-right: 6px;\n }\n .payever-icon {\n width: 95px;\n height: 20px;\n }\n `],\n})\nexport class UISantanderIconMediumComponent extends UIBaseComponent {\n constructor(\n protected injector: Injector,\n protected iconsHelperService: IconsHelperService\n ) {\n super(injector);\n\n this.iconsHelperService.registerIcons([\n 'santander-medium',\n ]);\n }\n}\n","import { Component, ChangeDetectionStrategy, Injector } from '@angular/core';\n\nimport { IconsHelperService } from '../../../services';\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-santander-icon-short',\n templateUrl: './santander-icon-short.component.html',\n styleUrls: ['./santander-icon-short.component.scss'],\n})\nexport class UISantanderIconShortComponent extends UIBaseComponent {\n constructor(\n protected injector: Injector,\n protected iconsHelperService: IconsHelperService\n ) {\n super(injector);\n\n this.iconsHelperService.registerIcons([\n 'santander-short',\n ]);\n }\n}\n","\n","
\n
\n {{col.title}} \n {{col.value}}\n
\n
\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n Injector,\n Input,\n OnChanges,\n HostBinding,\n} from '@angular/core';\n\nimport { DetailInterface } from '@pe/checkout/types';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-selected-rate-details-line',\n templateUrl: './selected-rate-details-line.component.html',\n styleUrls: ['./selected-rate-details-line.component.scss'],\n})\nexport class UISelectedRateDetailsLineComponent extends UIBaseComponent implements OnChanges {\n\n @Input() details: DetailInterface[] = [];\n\n @HostBinding('style.color') regularTextColor: string = null;\n\n protected debugName = 'UISelectedRateDetailsLineComponent';\n\n constructor(injector: Injector, protected element: ElementRef) {\n super(injector);\n }\n\n ngOnChanges(): void {\n super.ngOnChanges();\n }\n\n onUpdateStyles(): void {\n this.regularTextColor = this.currentStyles?.regularTextColor || this.default.styles.regularTextColor;\n }\n}\n","\n \n \n \n \n\n","import {\n Component,\n ChangeDetectionStrategy,\n ElementRef,\n Input,\n OnChanges,\n HostBinding,\n ViewChild,\n ViewChildren,\n QueryList,\n Renderer2,\n} from '@angular/core';\n\nimport { DetailInterface } from '@pe/checkout/types';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-selected-rate-details',\n templateUrl: './selected-rate-details.component.html',\n styleUrls: ['./selected-rate-details.component.scss'],\n})\nexport class UISelectedRateDetailsComponent extends UIBaseComponent implements OnChanges {\n\n @Input() details: DetailInterface[] = [];\n @Input() numColumns: number;\n\n @ViewChild('grid') gridRef: ElementRef;\n\n @ViewChildren('cell') cells: QueryList>;\n\n @HostBinding('style.color') regularTextColor: string = null;\n\n rows: DetailInterface[][] = [];\n\n protected debugName = 'UISelectedRateDetailsComponent';\n\n private renderer = this.injector.get(Renderer2);\n\n ngOnChanges(): void {\n super.ngOnChanges();\n this.rows = this.details.reduce((acc, item, index) => {\n if (index % this.numColumns === 0) {\n acc.push([]);\n }\n acc.at(-1).push(item);\n\n return acc;\n }, []);\n }\n\n onResize({ contentRect }: ResizeObserverEntry): void {\n const gridElement: HTMLElement = this.gridRef.nativeElement;\n const cells: ElementRef[] = this.cells.toArray();\n const gap = 16;\n const { width: newWidth } = contentRect;\n const cols: number = this.calculateColumns(cells.length, newWidth);\n const width: number = (newWidth - (cols - 1) * gap) / cols;\n this.renderer.setStyle(gridElement, 'display', 'grid');\n this.renderer.setStyle(gridElement, 'grid-template-columns', `repeat(${cols}, ${width}px)`);\n }\n\n onUpdateStyles(): void {\n this.regularTextColor = this.currentStyles?.regularTextColor || this.default.styles.regularTextColor;\n }\n\n private calculateColumns(cellCount: number, newWidth: number): number {\n const widest = Math.max(...this.cells.map(cell => Array.from(cell.nativeElement.children).reduce(\n (acc, item) => acc + item.clientWidth, 0\n )));\n const maxCols = Math.floor(newWidth / widest);\n if (cellCount % 2 === 1) {\n return maxCols;\n }\n const cols = maxCols % 2 === 1 && maxCols > 1 ? maxCols - 1 : maxCols;\n\n return Math.max(Math.min(cols, this.cells.length), 1);\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'finexp-ui-shadow-root-wrapper',\n template: '',\n encapsulation: ViewEncapsulation.ShadowDom,\n})\nexport class UIShadowRootWrapperComponent {\n}\n","\n\n\n \n","import { Component, ChangeDetectionStrategy, Input, HostBinding } from '@angular/core';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-short-header-santander',\n templateUrl: './short-header-santander.component.html',\n styles: [`\n :host {\n font-family: Roboto, sans-serif;\n display: flex;\n align-items: center;\n color: #333333;\n padding: 0 6px 2px;\n font-size: 15px;\n font-weight: 500;\n border-radius: 8px;\n .content-wrapper {\n padding: 0px;\n }\n }\n `],\n})\nexport class UIShortHeaderSantanderComponent extends UIBaseComponent {\n @Input() logo: 'short' | 'medium' = 'medium';\n\n @HostBinding('style.color') headerTextColor: string = null;\n\n onUpdateStyles(): void {\n this.headerTextColor = this.currentStyles?.headerTextColor || this.default.styles.headerTextColor;\n }\n}\n","import { Component, ChangeDetectionStrategy, Output, EventEmitter, HostBinding } from '@angular/core';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-show-checkout-wrapper-button',\n templateUrl: './show-checkout-wrapper-button.component.html',\n styleUrls: ['./show-checkout-wrapper-button.component.scss'],\n})\nexport class UIShowCheckoutWrapperButtonComponent extends UIBaseComponent {\n\n @Output('clicked') clickedEmitter: EventEmitter = new EventEmitter();\n\n @HostBinding('style.color') ctaTextColor: string = null;\n\n onClick(): void {\n this.clickedEmitter.emit();\n }\n\n onUpdateStyles(): void {\n this.ctaTextColor = this.currentStyles?.ctaTextColor || this.default.styles.ctaTextColor;\n }\n}\n","\n >\n\n","import { Component, ChangeDetectionStrategy, HostBinding } from '@angular/core';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-top-big-text',\n templateUrl: './top-big-text.component.html',\n styleUrls: ['./top-big-text.component.scss'],\n})\nexport class UITopBigTextComponent extends UIBaseComponent {\n\n @HostBinding('style.color') regularTextColor: string = null;\n\n onUpdateStyles(): void {\n this.regularTextColor = this.currentStyles?.regularTextColor || this.default.styles.regularTextColor;\n }\n}\n","\n","import { Component, ChangeDetectionStrategy, HostBinding } from '@angular/core';\n\nimport { UIBaseComponent } from '../base.component';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'finexp-ui-top-text',\n templateUrl: './top-text.component.html',\n styleUrls: ['./top-text.component.scss'],\n})\nexport class UITopTextComponent extends UIBaseComponent {\n\n @HostBinding('style.color') regularTextColor: string = null;\n\n onUpdateStyles(): void {\n this.regularTextColor = this.currentStyles?.regularTextColor || this.default.styles.regularTextColor;\n }\n}\n","\n","import {\n CheckoutModeEnum,\n CheckoutPlacementEnum,\n CustomWidgetConfigInterface,\n RatesOrderEnum,\n} from '@pe/checkout/types';\n\nexport const defaultCustomWidgetConfig: () => CustomWidgetConfigInterface = () => ({\n\n channelSet: null,\n\n amountLimits: {\n min: null,\n max: null,\n },\n // displayMode: 'overlay',\n isVisible: true,\n payments: [],\n ratesOrder: RatesOrderEnum.Asc,\n styles: {\n // color: 'green',\n // anotherStyle: 'someValue',\n\n backgroundColor: '#ffffff',\n lineColor: '#eeeeee',\n mainTextColor: '#333333',\n regularTextColor: '#333333',\n ctaTextColor: '#333333',\n buttonColor: '#e8e8e8',\n fieldBackgroundColor: '#ffffff',\n fieldLineColor: '#e8e8e8',\n fieldArrowColor: '#555555',\n headerTextColor: '#888888',\n },\n\n minWidth: null,\n maxWidth: null,\n // height: null,\n // isAdaptiveSizes: true,\n checkoutPlacement: CheckoutPlacementEnum.RighSidebar,\n checkoutMode: CheckoutModeEnum.None,\n\n successUrl: null,\n pendingUrl: null,\n cancelUrl: null,\n failureUrl: null,\n noticeUrl: null,\n\n business: null,\n checkoutId: null,\n widgetId: null,\n amount: null,\n reference: null,\n type: null,\n isDebugMode: null,\n});\n","import {\n ComponentFactory,\n ComponentFactoryResolver,\n Directive,\n} from '@angular/core';\n\nimport { BaseWidgetCustomElementComponent } from './base-widget-custom-element.component';\n\n\n@Directive()\nexport abstract class AbstractBaseWidgetModule {\n constructor(protected componentFactoryResolver: ComponentFactoryResolver) {}\n\n abstract resolveComponent(): ComponentFactory;\n}\n","import { CurrencyPipe, PercentPipe } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Directive,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { Observable, ReplaySubject, Subscription, throwError, timer } from 'rxjs';\nimport { catchError, map, mergeMap, takeUntil } from 'rxjs/operators';\n\nimport {\n CheckoutModeEnum,\n CheckoutAndCreditsInterface,\n RateInterface,\n RatesOrderEnum,\n WidgetConfigInterface,\n WidgetConfigPaymentInterface,\n PaymentItem,\n AddressInterface,\n ShippingOption,\n} from '@pe/checkout/types';\nimport { LocaleConstantsService } from '@pe/checkout/utils';\n\n\n\n@Directive()\nexport abstract class BaseWidgetComponent implements OnChanges, OnDestroy {\n\n @Input() amount: number;\n\n @Input() channelSet: string;\n\n @Input() config: WidgetConfigInterface;\n\n @Input() cart: PaymentItem[];\n\n @Input() billingAddress: AddressInterface;\n\n @Input() shippingAddress: AddressInterface;\n\n @Input() shippingOption: ShippingOption;\n\n @Output('clicked') clickedEmitter: EventEmitter = new EventEmitter();\n @Output('failed') failedEmitter: EventEmitter = new EventEmitter();\n\n isLoadingRates = false;\n ratesAsc: RateInterface[];\n ratesDesc: RateInterface[];\n currency: string;\n error: string;\n\n protected destroy$: ReplaySubject = new ReplaySubject();\n protected formattingLocale: string;\n\n protected currencyPipe: CurrencyPipe = this.injector.get(CurrencyPipe);\n protected percentPipe: PercentPipe = this.injector.get(PercentPipe);\n protected cdr: ChangeDetectorRef = this.injector.get(ChangeDetectorRef);\n protected localeConstantsService = this.injector.get(LocaleConstantsService);\n\n private getRatesSub: Subscription;\n private selectedRate: RateInterface;\n\n constructor(protected injector: Injector) {}\n\n ngOnDestroy(): void {\n this.destroy$.next(true);\n this.destroy$.complete();\n }\n\n get rates(): RateInterface[] {\n return this.config.ratesOrder === RatesOrderEnum.Asc ? this.ratesAsc : this.ratesDesc;\n }\n\n get currentRate(): RateInterface {\n return this.rates ? (this.selectedRate || this.rates[this.rates.length - 1]) : null;\n }\n\n get isFinCalc(): boolean {\n return this.config\n && this.config.checkoutMode\n && this.config.checkoutMode === CheckoutModeEnum.Calculator;\n }\n\n get hasShortToExtendedViewSwitcher(): boolean {\n return this.isFinCalc;\n }\n\n get isFinExp(): boolean {\n return this.config && this.config.checkoutMode && this.config.checkoutMode === CheckoutModeEnum.FinanceExpress;\n }\n\n get isShowWrapperButtonVisible(): boolean {\n return this.isFinExp;\n }\n\n get isNone(): boolean {\n return this.config && this.config.checkoutMode ? this.config.checkoutMode === CheckoutModeEnum.None : true;\n }\n\n get isBNPL(): boolean {\n return this.currentPayment?.isBNPL || false;\n }\n\n get productId(): string {\n return this.currentPayment?.productId || null;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['amount']\n || changes['channelSet']\n || (changes['config']\n && !this.checkPaymentsEquality(changes['config'].currentValue.payments, changes['config'].previousValue?.payments)\n )\n ) {\n if (this.getRatesSub) {\n this.getRatesSub.unsubscribe();\n }\n this.getRatesSub = this.updateRates().pipe(takeUntil(this.destroy$)).subscribe();\n }\n }\n\n onRateSelected(rate: RateInterface): void {\n this.selectedRate = rate;\n }\n\n onClicked(): void {\n if (this.isShowWrapperButtonVisible) {\n this.clickedEmitter.emit();\n }\n }\n\n toPercent(value: number): string {\n return this.percentPipe.transform(value / 100, '1.0-2');\n }\n\n toPrice(value: number): string {\n return this.currencyPipe.transform(\n value,\n this.currency,\n 'symbol-narrow',\n (value % 1 === 0) ? '1.0-2' : '1.2-2',\n );\n }\n\n toPriceNumber(value: number): string {\n return (this.toPrice(value) || '').replace(/[^\\d\\s,.-]/g, '').trim();\n }\n\n protected abstract getRates(): Observable>;\n\n protected abstract transformRate(rate: TCreditInterface): RateInterface;\n\n protected get currentPayment(): WidgetConfigPaymentInterface {\n return this.config?.payments?.find(a => this.amount\n && a.enabled\n && this.amount >= a.amountLimits.min\n && this.amount <= a.amountLimits.max\n );\n }\n\n protected updateRates(delay = 500): Observable {\n this.isLoadingRates = true;\n this.error = null;\n\n return timer(delay).pipe(\n mergeMap(() =>\n this.getRates().pipe(\n takeUntil(this.destroy$),\n map((data) => {\n this.currency = data.currency;\n this.ratesAsc = data.rates.map(rate => this.transformRate(rate));\n this.selectedRate = this.ratesAsc?.[-1];\n this.ratesDesc = this.ratesAsc.map(a => a).reverse();\n this.isLoadingRates = false;\n this.cdr.detectChanges();\n\n return null;\n }),\n catchError((err) => {\n this.ratesAsc = this.ratesDesc = null;\n this.error = err?.error?.message || err?.message || 'Cant load rates!';\n this.isLoadingRates = false;\n this.failedEmitter.emit();\n this.cdr.detectChanges();\n\n return throwError(err);\n })\n )\n ),\n );\n }\n\n private checkPaymentsEquality(\n firstPayments: WidgetConfigPaymentInterface[],\n secondPayments: WidgetConfigPaymentInterface[],\n ): boolean {\n return firstPayments.every((payment, index) => {\n const correspondingPayment = secondPayments?.[index];\n\n return correspondingPayment\n && payment.paymentMethod === correspondingPayment.paymentMethod\n && payment?.amountLimits?.max === correspondingPayment?.amountLimits?.max\n && payment?.amountLimits?.min === correspondingPayment?.amountLimits?.min\n && payment.isBNPL === correspondingPayment.isBNPL\n && payment.productId === correspondingPayment.productId\n && payment.enabled === correspondingPayment.enabled;\n });\n }\n}\n","import { registerLocaleData } from '@angular/common';\nimport {\n Injector,\n Input,\n Directive,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnDestroy,\n ElementRef,\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, from, Observable, ReplaySubject } from 'rxjs';\nimport { first, map, takeUntil, tap } from 'rxjs/operators';\n\nimport {\n PaymentItem,\n PaymentMethodEnum,\n WidgetConfigInterface,\n WidgetTypeEnum,\n} from '@pe/checkout/types';\nimport { LocaleConstantsService } from '@pe/checkout/utils';\nimport { EnvironmentConfigInterface as EnvInterface } from '@pe/common';\n\nimport { LOCALE_MAPPER } from '../../../../../apps/environments/locales';\n\n@Directive()\nexport abstract class BaseWidgetCustomElementComponent implements OnDestroy {\n\n amount: number = null;\n @Input('amount') set setAmount(amount: any) {\n this.amount = this.parseInputNumber(amount);\n }\n\n channelSet: string = null;\n @Input('channelset') set setChannelSet(channelSet: any) {\n this.channelSet = this.parseInputString(channelSet);\n }\n\n type: string = null;\n @Input('type') set setWidgetType(type: any) {\n this.type = this.parseInputString(type);\n }\n\n env: EnvInterface = null;\n @Input('env') set setEnv(env: any) {\n this.env = this.parseInputObject(env);\n }\n\n config: WidgetConfigInterface = null;\n @Input('config') set setInitialValues(config: any) {\n this.config = this.parseInputObject(config);\n }\n\n isDebugMode = false;\n @Input('isdebugmode') set setIsDebugMode(isDebugMode: any) {\n this.isDebugMode = this.parseInputBoolean(isDebugMode);\n }\n\n paymentMethod: PaymentMethodEnum = null;\n @Input('paymentMethod') set setPaymentMethod(paymentMethod: any) {\n this.paymentMethod = this.parseInputString(paymentMethod) as PaymentMethodEnum;\n }\n\n theme: 'light' | 'dark' = null;\n @Input('theme') set setTheme(theme: 'light' | 'dark') {\n const value = theme\n ? this.parseInputString(theme) as 'light' | 'dark'\n : window.matchMedia('(prefers-color-scheme: dark)').matches ? 'light' : 'dark';\n\n this.theme = value;\n }\n\n @Input() cart: PaymentItem[];\n\n @Input() shadowRoot: ShadowRoot;\n\n @Output() clicked: EventEmitter = new EventEmitter();\n\n isReady$ = new BehaviorSubject(false);\n WidgetTypeEnum: typeof WidgetTypeEnum = WidgetTypeEnum;\n cdr: ChangeDetectorRef = this.injector.get(ChangeDetectorRef);\n\n protected destroyed$: ReplaySubject = new ReplaySubject();\n\n protected localeConstantsService = this.injector.get(LocaleConstantsService);\n\n private isForceHideSubject$ = new BehaviorSubject(false);\n\n constructor(\n public element: ElementRef,\n protected injector: Injector,\n ) {\n combineLatest([\n this.isForceHideSubject$,\n this.registerLocale(),\n ]).pipe(\n tap(([isForceHide, localeLoaded]) => this.isReady$.next(!isForceHide && localeLoaded)),\n takeUntil(this.destroyed$),\n ).subscribe();\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next(true);\n this.destroyed$.complete();\n }\n\n onClicked(): void {\n this.clicked.emit();\n }\n\n onFailed(): void {\n if (!this.isDebugMode) {\n this.isForceHideSubject$.next(true);\n }\n }\n\n protected parseInputObject(data: string): any {\n let result: any = data;\n try {\n result = JSON.parse(data);\n } catch (e) {}\n\n return result;\n }\n\n protected parseInputBoolean(data: any): boolean {\n return data === true || data === 'true'\n ? true\n : false;\n }\n\n protected parseInputNumber(data: any): number {\n return parseFloat(data);\n }\n\n protected parseInputString(data: string): string {\n let result: string = data;\n try {\n result = JSON.parse(data);\n } catch (e) {}\n\n return String(result);\n }\n\n private importLocale(): Observable {\n const locale = this.localeConstantsService.getLang();\n\n return from(LOCALE_MAPPER[locale]?.() ?? import('@angular/common/locales/en')).pipe(\n map(locale => locale.default),\n );\n }\n\n protected registerLocale(): Observable {\n return this.importLocale().pipe(\n first(),\n tap((l: any) => {\n registerLocaleData(l, l[0] === 'nb' ? 'no' : l[0]);\n }),\n map(() => true),\n );\n }\n}\n","import { CommonModule, CurrencyPipe, PercentPipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { ResizeDirective } from '@pe/checkout/utils/from-resize-observer';\n\nimport {\n UICardComponent,\n UICardStyleComponent,\n UIFooterPoweredByPayeverComponent,\n UIFullHeaderSantanderComponent,\n UIHeaderSantanderComponent,\n UILoadingRatesComponent,\n UIPayeverIconComponent,\n UIRateButtonComponent,\n UIRateDropdownComponent,\n UIRateTextComponent,\n UIRateErrorComponent,\n UIRegularTextComponent,\n UIPoweredByPayeverComponent,\n UISantanderIconShortComponent,\n UISelectedRateDetailsComponent,\n UIShortHeaderSantanderComponent,\n UIShowCheckoutWrapperButtonComponent,\n UITopTextComponent,\n UITopBigTextComponent,\n UISelectedRateDetailsLineComponent,\n UISantanderIconMediumComponent,\n UISantanderConsumerIconMediumComponent,\n UIRateDropdownStyleComponent,\n UIShadowRootWrapperComponent,\n} from './components/ui';\nimport { CheckoutApiService, IconsHelperService } from './services';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule, // TODO Remove when widgets-dev-config\n MatMenuModule,\n MatDialogModule,\n MatIconModule,\n ResizeDirective,\n ],\n exports: [\n MatIconModule,\n UICardComponent,\n UIFooterPoweredByPayeverComponent,\n UIFullHeaderSantanderComponent,\n UIHeaderSantanderComponent,\n UILoadingRatesComponent,\n UIPayeverIconComponent,\n UIRateButtonComponent,\n UIRateDropdownComponent,\n UIRateTextComponent,\n UIRateErrorComponent,\n UIRegularTextComponent,\n UIPoweredByPayeverComponent,\n UISantanderIconShortComponent,\n UISantanderIconMediumComponent,\n UISantanderConsumerIconMediumComponent,\n UISelectedRateDetailsComponent,\n UISelectedRateDetailsLineComponent,\n UIShortHeaderSantanderComponent,\n UIShowCheckoutWrapperButtonComponent,\n UITopTextComponent,\n UITopBigTextComponent,\n UIShadowRootWrapperComponent,\n ],\n declarations: [\n UICardComponent,\n UICardStyleComponent,\n UIFooterPoweredByPayeverComponent,\n UIFullHeaderSantanderComponent,\n UIHeaderSantanderComponent,\n UILoadingRatesComponent,\n UIPayeverIconComponent,\n UIRateButtonComponent,\n UIRateDropdownStyleComponent,\n UIRateDropdownComponent,\n UIRateTextComponent,\n UIRateErrorComponent,\n UIRegularTextComponent,\n UIPoweredByPayeverComponent,\n UISantanderIconShortComponent,\n UISantanderIconMediumComponent,\n UISantanderConsumerIconMediumComponent,\n UISelectedRateDetailsComponent,\n UISelectedRateDetailsLineComponent,\n UIShortHeaderSantanderComponent,\n UIShowCheckoutWrapperButtonComponent,\n UITopTextComponent,\n UITopBigTextComponent,\n UIShadowRootWrapperComponent,\n ],\n providers: [\n CurrencyPipe,\n PercentPipe,\n IconsHelperService,\n CheckoutApiService,\n ],\n})\nexport class PaymentWidgetsSdkModule {\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, filter, shareReplay } from 'rxjs/operators';\n\nimport { FlowSettingsInterface, PaymentMethodEnum } from '@pe/checkout/types';\nimport { PE_ENV, EnvironmentConfigInterface as EnvInterface } from '@pe/common';\n\n\ninterface DefaultConnectionInterface {\n _id: string;\n}\n\n@Injectable()\nexport class CheckoutApiService {\n\n private checkoutSettings: { [key: string]: Observable } = {};\n private defaultConnections: { [key: string]: Observable } = {};\n\n constructor(\n private httpClient: HttpClient,\n @Inject(PE_ENV) private env: EnvInterface,\n ) {}\n\n getCheckoutSettings(channelSetId: string): Observable {\n if (!this.checkoutSettings[channelSetId]) {\n this.checkoutSettings[channelSetId] = this.fetchCheckoutSettings(channelSetId).pipe(\n filter(settings => !!settings),\n catchError((err) => {\n this.checkoutSettings[channelSetId] = null;\n\n return throwError(new Error(\n `Checkout settings request: ${err?.error?.message || err.message || 'Unknown error'}`\n ));\n }),\n shareReplay(1),\n );\n }\n\n return this.checkoutSettings[channelSetId];\n }\n\n getDefaultConnections(channelSetId: string, payment: PaymentMethodEnum): Observable {\n const key = `${channelSetId}|${payment}`;\n\n if (!this.defaultConnections[key]) {\n this.defaultConnections[key] = this.fetchDefaultConnections(\n channelSetId,\n payment,\n ).pipe(\n filter(connection => !!connection),\n catchError((err) => {\n this.checkoutSettings[channelSetId] = null;\n\n return throwError(new Error(\n `Default connection request: ${err?.error?.message || err?.message || 'Unknown error'}`\n ));\n }),\n shareReplay(1),\n );\n }\n\n return this.defaultConnections[key];\n }\n\n private fetchCheckoutSettings(\n channelSetId: string,\n ): Observable {\n return this.httpClient.get(\n `${this.env.backend.checkout}/api/checkout/channel-set/${channelSetId}/full-settings`\n );\n }\n\n private fetchDefaultConnections(\n channelSetId: string,\n payment: PaymentMethodEnum,\n ): Observable {\n return this.httpClient.get(\n `${this.env.backend.checkout}/api/channel-set/${channelSetId}/default-connection/${payment}`\n );\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { PE_ENV, EnvironmentConfigInterface as EnvInterface } from '@pe/common';\n\n@Injectable()\nexport class IconsHelperService {\n\n constructor(\n private domSanitizer: DomSanitizer,\n private matIconRegistry: MatIconRegistry,\n @Inject(PE_ENV) private env: EnvInterface,\n ) {\n\n }\n\n registerIcons(iconNames: string[]): void {\n iconNames?.forEach(name => this.matIconRegistry.addSvgIcon(\n name,\n this.domSanitizer.bypassSecurityTrustResourceUrl(`${this.env.custom.cdn}/payment-widgets/logos/${name}.svg`),\n ));\n }\n}\n","import { Injectable } from '@angular/core';\n\nconst DEFAULT_SCALE = 1;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetScaleService {\n private _scale = 1;\n\n set scale(scale: number) {\n this._scale = scale;\n }\n\n get scale(): number {\n return this._scale;\n }\n\n get scaleInCssValue(): string {\n return `scale(${this._scale})`;\n }\n\n setDefault(): void {\n this.scale = DEFAULT_SCALE;\n }\n}\n","import { Directive, ElementRef, Output } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport function fromResizeObserver(\n element: HTMLElement,\n): Observable {\n return new Observable((sub) => {\n const observer = new ResizeObserver((entries) => {\n sub.next(entries[0]);\n });\n\n observer.observe(element);\n\n return () => observer.disconnect();\n });\n}\n\n@Directive({\n selector: '[resized]',\n standalone: true,\n})\nexport class ResizeDirective {\n\n constructor(private elementRef: ElementRef) {}\n\n @Output() resized = fromResizeObserver(this.elementRef.nativeElement);\n}\n","import * as i1 from '@angular/cdk/a11y';\nimport { FocusKeyManager, isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { UP_ARROW, DOWN_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey, ENTER, SPACE } from '@angular/cdk/keycodes';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Input, QueryList, EventEmitter, TemplateRef, ContentChildren, ViewChild, ContentChild, Output, Self, NgModule } from '@angular/core';\nimport { Subject, Subscription, merge, of, asapScheduler } from 'rxjs';\nimport { startWith, switchMap, take, takeUntil, filter, delay } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { TemplatePortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i3 from '@angular/material/core';\nimport { mixinDisableRipple, mixinDisabled, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport * as i3$1 from '@angular/cdk/bidi';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\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 * Animations used by the mat-menu component.\n * Animation duration and timing values are based on:\n * https://material.io/guidelines/components/menus.html#menus-usage\n * @docs-private\n */\nconst matMenuAnimations = {\n /**\n * This animation controls the menu panel's entry and exit from the page.\n *\n * When the menu panel is added to the DOM, it scales in and fades in its border.\n *\n * When the menu panel is removed from the DOM, it simply fades out after a brief\n * delay to display the ripple.\n */\n transformMenu: trigger('transformMenu', [\n state('void', style({\n opacity: 0,\n transform: 'scale(0.8)',\n })),\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1)',\n }))),\n transition('* => void', animate('100ms 25ms linear', style({ opacity: 0 }))),\n ]),\n /**\n * This animation fades in the background color and content of the menu panel\n * after its containing element is scaled in.\n */\n fadeInItems: trigger('fadeInItems', [\n // TODO(crisbeto): this is inside the `transformMenu`\n // now. Remove next time we do breaking changes.\n state('showing', style({ opacity: 1 })),\n transition('void => *', [\n style({ opacity: 0 }),\n animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'),\n ]),\n ]),\n};\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst fadeInItems = matMenuAnimations.fadeInItems;\n/**\n * @deprecated\n * @breaking-change 8.0.0\n * @docs-private\n */\nconst transformMenu = matMenuAnimations.transformMenu;\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 that can be used to reference instances of `MatMenuContent`. It serves\n * as alternative token to the actual `MatMenuContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_MENU_CONTENT = new InjectionToken('MatMenuContent');\nclass _MatMenuContentBase {\n constructor(_template, _componentFactoryResolver, _appRef, _injector, _viewContainerRef, _document, _changeDetectorRef) {\n this._template = _template;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._document = _document;\n this._changeDetectorRef = _changeDetectorRef;\n /** Emits when the menu content has been attached. */\n this._attached = new Subject();\n }\n /**\n * Attaches the content with a particular context.\n * @docs-private\n */\n attach(context = {}) {\n if (!this._portal) {\n this._portal = new TemplatePortal(this._template, this._viewContainerRef);\n }\n this.detach();\n if (!this._outlet) {\n this._outlet = new DomPortalOutlet(this._document.createElement('div'), this._componentFactoryResolver, this._appRef, this._injector);\n }\n const element = this._template.elementRef.nativeElement;\n // Because we support opening the same menu from different triggers (which in turn have their\n // own `OverlayRef` panel), we have to re-insert the host element every time, otherwise we\n // risk it staying attached to a pane that's no longer in the DOM.\n element.parentNode.insertBefore(this._outlet.outletElement, element);\n // When `MatMenuContent` is used in an `OnPush` component, the insertion of the menu\n // content via `createEmbeddedView` does not cause the content to be seen as \"dirty\"\n // by Angular. This causes the `@ContentChildren` for menu items within the menu to\n // not be updated by Angular. By explicitly marking for check here, we tell Angular that\n // it needs to check for new menu items and update the `@ContentChild` in `MatMenu`.\n // @breaking-change 9.0.0 Make change detector ref required\n this._changeDetectorRef?.markForCheck();\n this._portal.attach(this._outlet, context);\n this._attached.next();\n }\n /**\n * Detaches the content.\n * @docs-private\n */\n detach() {\n if (this._portal.isAttached) {\n this._portal.detach();\n }\n }\n ngOnDestroy() {\n if (this._outlet) {\n this._outlet.dispose();\n }\n }\n}\n_MatMenuContentBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatMenuContentBase, deps: [{ token: i0.TemplateRef }, { token: i0.ComponentFactoryResolver }, { token: i0.ApplicationRef }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatMenuContentBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatMenuContentBase, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatMenuContentBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ComponentFactoryResolver }, { type: i0.ApplicationRef }, { type: i0.Injector }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ChangeDetectorRef }]; } });\n/**\n * Menu content that will be rendered lazily once the menu is opened.\n */\nclass MatMenuContent extends _MatMenuContentBase {\n}\nMatMenuContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenuContent, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatMenuContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatMenuContent, selector: \"ng-template[matMenuContent]\", providers: [{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenuContent, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[matMenuContent]',\n providers: [{ provide: MAT_MENU_CONTENT, useExisting: MatMenuContent }],\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 * Throws an exception for the case when menu's x-position value isn't valid.\n * In other words, it doesn't match 'before' or 'after'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionX() {\n throw Error(`xPosition value must be either 'before' or after'.\n Example: `);\n}\n/**\n * Throws an exception for the case when menu's y-position value isn't valid.\n * In other words, it doesn't match 'above' or 'below'.\n * @docs-private\n */\nfunction throwMatMenuInvalidPositionY() {\n throw Error(`yPosition value must be either 'above' or below'.\n Example: `);\n}\n/**\n * Throws an exception for the case when a menu is assigned\n * to a trigger that is placed inside the same menu.\n * @docs-private\n */\nfunction throwMatMenuRecursiveError() {\n throw Error(`matMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is ` +\n `not a parent of the trigger or move the trigger outside of the menu.`);\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 used to provide the parent menu to menu-specific components.\n * @docs-private\n */\nconst MAT_MENU_PANEL = new InjectionToken('MAT_MENU_PANEL');\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// Boilerplate for applying mixins to MatMenuItem.\n/** @docs-private */\nconst _MatMenuItemBase = mixinDisableRipple(mixinDisabled(class {\n}));\n/**\n * Single item inside of a `mat-menu`. Provides the menu item styling and accessibility treatment.\n */\nclass MatMenuItem extends _MatMenuItemBase {\n constructor(_elementRef, _document, _focusMonitor, _parentMenu, _changeDetectorRef) {\n super();\n this._elementRef = _elementRef;\n this._document = _document;\n this._focusMonitor = _focusMonitor;\n this._parentMenu = _parentMenu;\n this._changeDetectorRef = _changeDetectorRef;\n /** ARIA role for the menu item. */\n this.role = 'menuitem';\n /** Stream that emits when the menu item is hovered. */\n this._hovered = new Subject();\n /** Stream that emits when the menu item is focused. */\n this._focused = new Subject();\n /** Whether the menu item is highlighted. */\n this._highlighted = false;\n /** Whether the menu item acts as a trigger for a sub-menu. */\n this._triggersSubmenu = false;\n _parentMenu?.addItem?.(this);\n }\n /** Focuses the menu item. */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._getHostElement(), origin, options);\n }\n else {\n this._getHostElement().focus(options);\n }\n this._focused.next(this);\n }\n ngAfterViewInit() {\n if (this._focusMonitor) {\n // Start monitoring the element so it gets the appropriate focused classes. We want\n // to show the focus style for menu items only when the focus was not caused by a\n // mouse or touch interaction.\n this._focusMonitor.monitor(this._elementRef, false);\n }\n }\n ngOnDestroy() {\n if (this._focusMonitor) {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n if (this._parentMenu && this._parentMenu.removeItem) {\n this._parentMenu.removeItem(this);\n }\n this._hovered.complete();\n this._focused.complete();\n }\n /** Used to set the `tabindex`. */\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Returns the host DOM element. */\n _getHostElement() {\n return this._elementRef.nativeElement;\n }\n /** Prevents the default element actions if it is disabled. */\n _checkDisabled(event) {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n /** Emits to the hover stream. */\n _handleMouseEnter() {\n this._hovered.next(this);\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n const clone = this._elementRef.nativeElement.cloneNode(true);\n const icons = clone.querySelectorAll('mat-icon, .material-icons');\n // Strip away icons so they don't show up in the text.\n for (let i = 0; i < icons.length; i++) {\n icons[i].remove();\n }\n return clone.textContent?.trim() || '';\n }\n _setHighlighted(isHighlighted) {\n // We need to mark this for check for the case where the content is coming from a\n // `matMenuContent` whose change detection tree is at the declaration position,\n // not the insertion position. See #23175.\n // @breaking-change 12.0.0 Remove null check for `_changeDetectorRef`.\n this._highlighted = isHighlighted;\n this._changeDetectorRef?.markForCheck();\n }\n _hasFocus() {\n return this._document && this._document.activeElement === this._getHostElement();\n }\n}\nMatMenuItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenuItem, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }, { token: i1.FocusMonitor }, { token: MAT_MENU_PANEL, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatMenuItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatMenuItem, selector: \"[mat-menu-item]\", inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", role: \"role\" }, host: { listeners: { \"click\": \"_checkDisabled($event)\", \"mouseenter\": \"_handleMouseEnter()\" }, properties: { \"attr.role\": \"role\", \"class.mat-menu-item\": \"true\", \"class.mat-menu-item-highlighted\": \"_highlighted\", \"class.mat-menu-item-submenu-trigger\": \"_triggersSubmenu\", \"attr.tabindex\": \"_getTabIndex()\", \"attr.aria-disabled\": \"disabled.toString()\", \"attr.disabled\": \"disabled || null\" }, classAttribute: \"mat-focus-indicator\" }, exportAs: [\"matMenuItem\"], usesInheritance: true, ngImport: i0, template: \"\\n
\\n
\\n\\n\\n\", dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"directive\", type: i3.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenuItem, decorators: [{\n type: Component,\n args: [{ selector: '[mat-menu-item]', exportAs: 'matMenuItem', inputs: ['disabled', 'disableRipple'], host: {\n '[attr.role]': 'role',\n '[class.mat-menu-item]': 'true',\n '[class.mat-menu-item-highlighted]': '_highlighted',\n '[class.mat-menu-item-submenu-trigger]': '_triggersSubmenu',\n '[attr.tabindex]': '_getTabIndex()',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.disabled]': 'disabled || null',\n 'class': 'mat-focus-indicator',\n '(click)': '_checkDisabled($event)',\n '(mouseenter)': '_handleMouseEnter()',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"\\n
\\n
\\n\\n\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.FocusMonitor }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { role: [{\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/** Injection token to be used to override the default options for `mat-menu`. */\nconst MAT_MENU_DEFAULT_OPTIONS = new InjectionToken('mat-menu-default-options', {\n providedIn: 'root',\n factory: MAT_MENU_DEFAULT_OPTIONS_FACTORY,\n});\n/** @docs-private */\nfunction MAT_MENU_DEFAULT_OPTIONS_FACTORY() {\n return {\n overlapTrigger: false,\n xPosition: 'after',\n yPosition: 'below',\n backdropClass: 'cdk-overlay-transparent-backdrop',\n };\n}\nlet menuPanelUid = 0;\n/** Base class with all of the `MatMenu` functionality. */\nclass _MatMenuBase {\n constructor(_elementRef, _ngZone, _defaultOptions, \n // @breaking-change 15.0.0 `_changeDetectorRef` to become a required parameter.\n _changeDetectorRef) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n this._changeDetectorRef = _changeDetectorRef;\n this._xPosition = this._defaultOptions.xPosition;\n this._yPosition = this._defaultOptions.yPosition;\n /** Only the direct descendant menu items. */\n this._directDescendantItems = new QueryList();\n /** Subscription to tab events on the menu panel */\n this._tabSubscription = Subscription.EMPTY;\n /** Config object to be passed into the menu's ngClass */\n this._classList = {};\n /** Current state of the panel animation. */\n this._panelAnimationState = 'void';\n /** Emits whenever an animation on the menu completes. */\n this._animationDone = new Subject();\n /** Class or list of classes to be added to the overlay panel. */\n this.overlayPanelClass = this._defaultOptions.overlayPanelClass || '';\n /** Class to be added to the backdrop element. */\n this.backdropClass = this._defaultOptions.backdropClass;\n this._overlapTrigger = this._defaultOptions.overlapTrigger;\n this._hasBackdrop = this._defaultOptions.hasBackdrop;\n /** Event emitted when the menu is closed. */\n this.closed = new EventEmitter();\n /**\n * Event emitted when the menu is closed.\n * @deprecated Switch to `closed` instead\n * @breaking-change 8.0.0\n */\n this.close = this.closed;\n this.panelId = `mat-menu-panel-${menuPanelUid++}`;\n }\n /** Position of the menu in the X axis. */\n get xPosition() {\n return this._xPosition;\n }\n set xPosition(value) {\n if (value !== 'before' &&\n value !== 'after' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionX();\n }\n this._xPosition = value;\n this.setPositionClasses();\n }\n /** Position of the menu in the Y axis. */\n get yPosition() {\n return this._yPosition;\n }\n set yPosition(value) {\n if (value !== 'above' && value !== 'below' && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuInvalidPositionY();\n }\n this._yPosition = value;\n this.setPositionClasses();\n }\n /** Whether the menu should overlap its trigger. */\n get overlapTrigger() {\n return this._overlapTrigger;\n }\n set overlapTrigger(value) {\n this._overlapTrigger = coerceBooleanProperty(value);\n }\n /** Whether the menu has a backdrop. */\n get hasBackdrop() {\n return this._hasBackdrop;\n }\n set hasBackdrop(value) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @param classes list of class names\n */\n set panelClass(classes) {\n const previousPanelClass = this._previousPanelClass;\n if (previousPanelClass && previousPanelClass.length) {\n previousPanelClass.split(' ').forEach((className) => {\n this._classList[className] = false;\n });\n }\n this._previousPanelClass = classes;\n if (classes && classes.length) {\n classes.split(' ').forEach((className) => {\n this._classList[className] = true;\n });\n this._elementRef.nativeElement.className = '';\n }\n }\n /**\n * This method takes classes set on the host mat-menu element and applies them on the\n * menu template that displays in the overlay container. Otherwise, it's difficult\n * to style the containing menu from outside the component.\n * @deprecated Use `panelClass` instead.\n * @breaking-change 8.0.0\n */\n get classList() {\n return this.panelClass;\n }\n set classList(classes) {\n this.panelClass = classes;\n }\n ngOnInit() {\n this.setPositionClasses();\n }\n ngAfterContentInit() {\n this._updateDirectDescendants();\n this._keyManager = new FocusKeyManager(this._directDescendantItems)\n .withWrap()\n .withTypeAhead()\n .withHomeAndEnd();\n this._tabSubscription = this._keyManager.tabOut.subscribe(() => this.closed.emit('tab'));\n // If a user manually (programmatically) focuses a menu item, we need to reflect that focus\n // change back to the key manager. Note that we don't need to unsubscribe here because _focused\n // is internal and we know that it gets completed on destroy.\n this._directDescendantItems.changes\n .pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._focused))))\n .subscribe(focusedItem => this._keyManager.updateActiveItem(focusedItem));\n this._directDescendantItems.changes.subscribe((itemsList) => {\n // Move focus to another item, if the active item is removed from the list.\n // We need to debounce the callback, because multiple items might be removed\n // in quick succession.\n const manager = this._keyManager;\n if (this._panelAnimationState === 'enter' && manager.activeItem?._hasFocus()) {\n const items = itemsList.toArray();\n const index = Math.max(0, Math.min(items.length - 1, manager.activeItemIndex || 0));\n if (items[index] && !items[index].disabled) {\n manager.setActiveItem(index);\n }\n else {\n manager.setNextItemActive();\n }\n }\n });\n }\n ngOnDestroy() {\n this._directDescendantItems.destroy();\n this._tabSubscription.unsubscribe();\n this.closed.complete();\n }\n /** Stream that emits whenever the hovered menu item changes. */\n _hovered() {\n // Coerce the `changes` property because Angular types it as `Observable`\n const itemChanges = this._directDescendantItems.changes;\n return itemChanges.pipe(startWith(this._directDescendantItems), switchMap(items => merge(...items.map((item) => item._hovered))));\n }\n /*\n * Registers a menu item with the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n addItem(_item) { }\n /**\n * Removes an item from the menu.\n * @docs-private\n * @deprecated No longer being used. To be removed.\n * @breaking-change 9.0.0\n */\n removeItem(_item) { }\n /** Handle a keyboard event from the menu, delegating to the appropriate action. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n switch (keyCode) {\n case ESCAPE:\n if (!hasModifierKey(event)) {\n event.preventDefault();\n this.closed.emit('keydown');\n }\n break;\n case LEFT_ARROW:\n if (this.parentMenu && this.direction === 'ltr') {\n this.closed.emit('keydown');\n }\n break;\n case RIGHT_ARROW:\n if (this.parentMenu && this.direction === 'rtl') {\n this.closed.emit('keydown');\n }\n break;\n default:\n if (keyCode === UP_ARROW || keyCode === DOWN_ARROW) {\n manager.setFocusOrigin('keyboard');\n }\n manager.onKeydown(event);\n return;\n }\n // Don't allow the event to propagate if we've already handled it, or it may\n // end up reaching other overlays that were opened earlier (see #22694).\n event.stopPropagation();\n }\n /**\n * Focus the first item in the menu.\n * @param origin Action from which the focus originated. Used to set the correct styling.\n */\n focusFirstItem(origin = 'program') {\n // Wait for `onStable` to ensure iOS VoiceOver screen reader focuses the first item (#24735).\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n let menuPanel = null;\n if (this._directDescendantItems.length) {\n // Because the `mat-menuPanel` is at the DOM insertion point, not inside the overlay, we don't\n // have a nice way of getting a hold of the menuPanel panel. We can't use a `ViewChild` either\n // because the panel is inside an `ng-template`. We work around it by starting from one of\n // the items and walking up the DOM.\n menuPanel = this._directDescendantItems.first._getHostElement().closest('[role=\"menu\"]');\n }\n // If an item in the menuPanel is already focused, avoid overriding the focus.\n if (!menuPanel || !menuPanel.contains(document.activeElement)) {\n const manager = this._keyManager;\n manager.setFocusOrigin(origin).setFirstItemActive();\n // If there's no active item at this point, it means that all the items are disabled.\n // Move focus to the menuPanel panel so keyboard events like Escape still work. Also this will\n // give _some_ feedback to screen readers.\n if (!manager.activeItem && menuPanel) {\n menuPanel.focus();\n }\n }\n });\n }\n /**\n * Resets the active item in the menu. This is used when the menu is opened, allowing\n * the user to start from the first option when pressing the down arrow.\n */\n resetActiveItem() {\n this._keyManager.setActiveItem(-1);\n }\n /**\n * Sets the menu panel elevation.\n * @param depth Number of parent menus that come before the menu.\n */\n setElevation(depth) {\n // The elevation starts at the base and increases by one for each level.\n // Capped at 24 because that's the maximum elevation defined in the Material design spec.\n const elevation = Math.min(this._baseElevation + depth, 24);\n const newElevation = `${this._elevationPrefix}${elevation}`;\n const customElevation = Object.keys(this._classList).find(className => {\n return className.startsWith(this._elevationPrefix);\n });\n if (!customElevation || customElevation === this._previousElevation) {\n if (this._previousElevation) {\n this._classList[this._previousElevation] = false;\n }\n this._classList[newElevation] = true;\n this._previousElevation = newElevation;\n }\n }\n /**\n * Adds classes to the menu panel based on its position. Can be used by\n * consumers to add specific styling based on the position.\n * @param posX Position of the menu along the x axis.\n * @param posY Position of the menu along the y axis.\n * @docs-private\n */\n setPositionClasses(posX = this.xPosition, posY = this.yPosition) {\n const classes = this._classList;\n classes['mat-menu-before'] = posX === 'before';\n classes['mat-menu-after'] = posX === 'after';\n classes['mat-menu-above'] = posY === 'above';\n classes['mat-menu-below'] = posY === 'below';\n // @breaking-change 15.0.0 Remove null check for `_changeDetectorRef`.\n this._changeDetectorRef?.markForCheck();\n }\n /** Starts the enter animation. */\n _startAnimation() {\n // @breaking-change 8.0.0 Combine with _resetAnimation.\n this._panelAnimationState = 'enter';\n }\n /** Resets the panel animation to its initial state. */\n _resetAnimation() {\n // @breaking-change 8.0.0 Combine with _startAnimation.\n this._panelAnimationState = 'void';\n }\n /** Callback that is invoked when the panel animation completes. */\n _onAnimationDone(event) {\n this._animationDone.next(event);\n this._isAnimating = false;\n }\n _onAnimationStart(event) {\n this._isAnimating = true;\n // Scroll the content element to the top as soon as the animation starts. This is necessary,\n // because we move focus to the first item while it's still being animated, which can throw\n // the browser off when it determines the scroll position. Alternatively we can move focus\n // when the animation is done, however moving focus asynchronously will interrupt screen\n // readers which are in the process of reading out the menu already. We take the `element`\n // from the `event` since we can't use a `ViewChild` to access the pane.\n if (event.toState === 'enter' && this._keyManager.activeItemIndex === 0) {\n event.element.scrollTop = 0;\n }\n }\n /**\n * Sets up a stream that will keep track of any newly-added menu items and will update the list\n * of direct descendants. We collect the descendants this way, because `_allItems` can include\n * items that are part of child menus, and using a custom way of registering items is unreliable\n * when it comes to maintaining the item order.\n */\n _updateDirectDescendants() {\n this._allItems.changes\n .pipe(startWith(this._allItems))\n .subscribe((items) => {\n this._directDescendantItems.reset(items.filter(item => item._parentMenu === this));\n this._directDescendantItems.notifyOnChanges();\n });\n }\n}\n_MatMenuBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatMenuBase, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatMenuBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatMenuBase, inputs: { backdropClass: \"backdropClass\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], ariaDescribedby: [\"aria-describedby\", \"ariaDescribedby\"], xPosition: \"xPosition\", yPosition: \"yPosition\", overlapTrigger: \"overlapTrigger\", hasBackdrop: \"hasBackdrop\", panelClass: [\"class\", \"panelClass\"], classList: \"classList\" }, outputs: { closed: \"closed\", close: \"close\" }, queries: [{ propertyName: \"lazyContent\", first: true, predicate: MAT_MENU_CONTENT, descendants: true }, { propertyName: \"_allItems\", predicate: MatMenuItem, descendants: true }, { propertyName: \"items\", predicate: MatMenuItem }], viewQueries: [{ propertyName: \"templateRef\", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatMenuBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _allItems: [{\n type: ContentChildren,\n args: [MatMenuItem, { descendants: true }]\n }], backdropClass: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], ariaDescribedby: [{\n type: Input,\n args: ['aria-describedby']\n }], xPosition: [{\n type: Input\n }], yPosition: [{\n type: Input\n }], templateRef: [{\n type: ViewChild,\n args: [TemplateRef]\n }], items: [{\n type: ContentChildren,\n args: [MatMenuItem, { descendants: false }]\n }], lazyContent: [{\n type: ContentChild,\n args: [MAT_MENU_CONTENT]\n }], overlapTrigger: [{\n type: Input\n }], hasBackdrop: [{\n type: Input\n }], panelClass: [{\n type: Input,\n args: ['class']\n }], classList: [{\n type: Input\n }], closed: [{\n type: Output\n }], close: [{\n type: Output\n }] } });\n/** @docs-public MatMenu */\nclass MatMenu extends _MatMenuBase {\n constructor(elementRef, ngZone, defaultOptions, changeDetectorRef) {\n super(elementRef, ngZone, defaultOptions, changeDetectorRef);\n this._elevationPrefix = 'mat-elevation-z';\n this._baseElevation = 4;\n }\n}\nMatMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenu, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatMenu, selector: \"mat-menu\", host: { properties: { \"attr.aria-label\": \"null\", \"attr.aria-labelledby\": \"null\", \"attr.aria-describedby\": \"null\" } }, providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], exportAs: [\"matMenu\"], usesInheritance: true, ngImport: i0, template: \"\\n \\n
\\n \\n
\\n \\n
\\n\", styles: [\"mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px;position:relative}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]::after{display:block;position:absolute;content:\\\"\\\";top:0;left:0;bottom:0;right:0}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.mat-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-menu-submenu-icon{fill:CanvasText}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\"], dependencies: [{ kind: \"directive\", type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenu, decorators: [{\n type: Component,\n args: [{ selector: 'mat-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'matMenu', host: {\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n }, animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], template: \"\\n \\n
\\n \\n
\\n \\n
\\n\", styles: [\"mat-menu{display:none}.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px;position:relative}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]::after{display:block;position:absolute;content:\\\"\\\";top:0;left:0;bottom:0;right:0}.cdk-high-contrast-active .mat-menu-item{margin-top:1px}.mat-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-menu-submenu-icon{fill:CanvasText}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_DEFAULT_OPTIONS]\n }] }, { type: i0.ChangeDetectorRef }]; } });\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/** Injection token that determines the scroll handling while the menu is open. */\nconst MAT_MENU_SCROLL_STRATEGY = new InjectionToken('mat-menu-scroll-strategy');\n/** @docs-private */\nfunction MAT_MENU_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_MENU_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_MENU_SCROLL_STRATEGY_FACTORY,\n};\n/**\n * Default top padding of the menu panel.\n * @deprecated No longer being used. Will be removed.\n * @breaking-change 15.0.0\n */\nconst MENU_PANEL_TOP_PADDING = 8;\n/** Options for binding a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n// TODO(andrewseguin): Remove the kebab versions in favor of camelCased attribute selectors\nclass _MatMenuTriggerBase {\n constructor(_overlay, _element, _viewContainerRef, scrollStrategy, parentMenu, \n // `MatMenuTrigger` is commonly used in combination with a `MatMenuItem`.\n // tslint:disable-next-line: lightweight-tokens\n _menuItemInstance, _dir, _focusMonitor, _ngZone) {\n this._overlay = _overlay;\n this._element = _element;\n this._viewContainerRef = _viewContainerRef;\n this._menuItemInstance = _menuItemInstance;\n this._dir = _dir;\n this._focusMonitor = _focusMonitor;\n this._ngZone = _ngZone;\n this._overlayRef = null;\n this._menuOpen = false;\n this._closingActionsSubscription = Subscription.EMPTY;\n this._hoverSubscription = Subscription.EMPTY;\n this._menuCloseSubscription = Subscription.EMPTY;\n /**\n * Handles touch start events on the trigger.\n * Needs to be an arrow function so we can easily use addEventListener and removeEventListener.\n */\n this._handleTouchStart = (event) => {\n if (!isFakeTouchstartFromScreenReader(event)) {\n this._openedBy = 'touch';\n }\n };\n // Tracking input type is necessary so it's possible to only auto-focus\n // the first item of the list when the menu is opened via the keyboard\n this._openedBy = undefined;\n /**\n * Whether focus should be restored when the menu is closed.\n * Note that disabling this option can have accessibility implications\n * and it's up to you to manage focus, if you decide to turn it off.\n */\n this.restoreFocus = true;\n /** Event emitted when the associated menu is opened. */\n this.menuOpened = new EventEmitter();\n /**\n * Event emitted when the associated menu is opened.\n * @deprecated Switch to `menuOpened` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n this.onMenuOpen = this.menuOpened;\n /** Event emitted when the associated menu is closed. */\n this.menuClosed = new EventEmitter();\n /**\n * Event emitted when the associated menu is closed.\n * @deprecated Switch to `menuClosed` instead\n * @breaking-change 8.0.0\n */\n // tslint:disable-next-line:no-output-on-prefix\n this.onMenuClose = this.menuClosed;\n this._scrollStrategy = scrollStrategy;\n this._parentMaterialMenu = parentMenu instanceof _MatMenuBase ? parentMenu : undefined;\n _element.nativeElement.addEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n if (_menuItemInstance) {\n _menuItemInstance._triggersSubmenu = this.triggersSubmenu();\n }\n }\n /**\n * @deprecated\n * @breaking-change 8.0.0\n */\n get _deprecatedMatMenuTriggerFor() {\n return this.menu;\n }\n set _deprecatedMatMenuTriggerFor(v) {\n this.menu = v;\n }\n /** References the menu instance that the trigger is associated with. */\n get menu() {\n return this._menu;\n }\n set menu(menu) {\n if (menu === this._menu) {\n return;\n }\n this._menu = menu;\n this._menuCloseSubscription.unsubscribe();\n if (menu) {\n if (menu === this._parentMaterialMenu && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatMenuRecursiveError();\n }\n this._menuCloseSubscription = menu.close.subscribe((reason) => {\n this._destroyMenu(reason);\n // If a click closed the menu, we should close the entire chain of nested menus.\n if ((reason === 'click' || reason === 'tab') && this._parentMaterialMenu) {\n this._parentMaterialMenu.closed.emit(reason);\n }\n });\n }\n }\n ngAfterContentInit() {\n this._handleHover();\n }\n ngOnDestroy() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n this._element.nativeElement.removeEventListener('touchstart', this._handleTouchStart, passiveEventListenerOptions);\n this._menuCloseSubscription.unsubscribe();\n this._closingActionsSubscription.unsubscribe();\n this._hoverSubscription.unsubscribe();\n }\n /** Whether the menu is open. */\n get menuOpen() {\n return this._menuOpen;\n }\n /** The text direction of the containing app. */\n get dir() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the menu triggers a sub-menu or a top-level one. */\n triggersSubmenu() {\n return !!(this._menuItemInstance && this._parentMaterialMenu);\n }\n /** Toggles the menu between the open and closed states. */\n toggleMenu() {\n return this._menuOpen ? this.closeMenu() : this.openMenu();\n }\n /** Opens the menu. */\n openMenu() {\n const menu = this.menu;\n if (this._menuOpen || !menu) {\n return;\n }\n const overlayRef = this._createOverlay(menu);\n const overlayConfig = overlayRef.getConfig();\n const positionStrategy = overlayConfig.positionStrategy;\n this._setPosition(menu, positionStrategy);\n overlayConfig.hasBackdrop =\n menu.hasBackdrop == null ? !this.triggersSubmenu() : menu.hasBackdrop;\n overlayRef.attach(this._getPortal(menu));\n if (menu.lazyContent) {\n menu.lazyContent.attach(this.menuData);\n }\n this._closingActionsSubscription = this._menuClosingActions().subscribe(() => this.closeMenu());\n this._initMenu(menu);\n if (menu instanceof _MatMenuBase) {\n menu._startAnimation();\n menu._directDescendantItems.changes.pipe(takeUntil(menu.close)).subscribe(() => {\n // Re-adjust the position without locking when the amount of items\n // changes so that the overlay is allowed to pick a new optimal position.\n positionStrategy.withLockedPosition(false).reapplyLastPosition();\n positionStrategy.withLockedPosition(true);\n });\n }\n }\n /** Closes the menu. */\n closeMenu() {\n this.menu?.close.emit();\n }\n /**\n * Focuses the menu trigger.\n * @param origin Source of the menu trigger's focus.\n */\n focus(origin, options) {\n if (this._focusMonitor && origin) {\n this._focusMonitor.focusVia(this._element, origin, options);\n }\n else {\n this._element.nativeElement.focus(options);\n }\n }\n /**\n * Updates the position of the menu to ensure that it fits all options within the viewport.\n */\n updatePosition() {\n this._overlayRef?.updatePosition();\n }\n /** Closes the menu and does the necessary cleanup. */\n _destroyMenu(reason) {\n if (!this._overlayRef || !this.menuOpen) {\n return;\n }\n const menu = this.menu;\n this._closingActionsSubscription.unsubscribe();\n this._overlayRef.detach();\n // Always restore focus if the user is navigating using the keyboard or the menu was opened\n // programmatically. We don't restore for non-root triggers, because it can prevent focus\n // from making it back to the root trigger when closing a long chain of menus by clicking\n // on the backdrop.\n if (this.restoreFocus && (reason === 'keydown' || !this._openedBy || !this.triggersSubmenu())) {\n this.focus(this._openedBy);\n }\n this._openedBy = undefined;\n if (menu instanceof _MatMenuBase) {\n menu._resetAnimation();\n if (menu.lazyContent) {\n // Wait for the exit animation to finish before detaching the content.\n menu._animationDone\n .pipe(filter(event => event.toState === 'void'), take(1), \n // Interrupt if the content got re-attached.\n takeUntil(menu.lazyContent._attached))\n .subscribe({\n next: () => menu.lazyContent.detach(),\n // No matter whether the content got re-attached, reset the menu.\n complete: () => this._setIsMenuOpen(false),\n });\n }\n else {\n this._setIsMenuOpen(false);\n }\n }\n else {\n this._setIsMenuOpen(false);\n menu?.lazyContent?.detach();\n }\n }\n /**\n * This method sets the menu state to open and focuses the first item if\n * the menu was opened via the keyboard.\n */\n _initMenu(menu) {\n menu.parentMenu = this.triggersSubmenu() ? this._parentMaterialMenu : undefined;\n menu.direction = this.dir;\n this._setMenuElevation(menu);\n menu.focusFirstItem(this._openedBy || 'program');\n this._setIsMenuOpen(true);\n }\n /** Updates the menu elevation based on the amount of parent menus that it has. */\n _setMenuElevation(menu) {\n if (menu.setElevation) {\n let depth = 0;\n let parentMenu = menu.parentMenu;\n while (parentMenu) {\n depth++;\n parentMenu = parentMenu.parentMenu;\n }\n menu.setElevation(depth);\n }\n }\n // set state rather than toggle to support triggers sharing a menu\n _setIsMenuOpen(isOpen) {\n this._menuOpen = isOpen;\n this._menuOpen ? this.menuOpened.emit() : this.menuClosed.emit();\n if (this.triggersSubmenu()) {\n this._menuItemInstance._setHighlighted(isOpen);\n }\n }\n /**\n * This method creates the overlay from the provided menu's template and saves its\n * OverlayRef so that it can be attached to the DOM when openMenu is called.\n */\n _createOverlay(menu) {\n if (!this._overlayRef) {\n const config = this._getOverlayConfig(menu);\n this._subscribeToPositions(menu, config.positionStrategy);\n this._overlayRef = this._overlay.create(config);\n // Consume the `keydownEvents` in order to prevent them from going to another overlay.\n // Ideally we'd also have our keyboard event logic in here, however doing so will\n // break anybody that may have implemented the `MatMenuPanel` themselves.\n this._overlayRef.keydownEvents().subscribe();\n }\n return this._overlayRef;\n }\n /**\n * This method builds the configuration object needed to create the overlay, the OverlayState.\n * @returns OverlayConfig\n */\n _getOverlayConfig(menu) {\n return new OverlayConfig({\n positionStrategy: this._overlay\n .position()\n .flexibleConnectedTo(this._element)\n .withLockedPosition()\n .withGrowAfterOpen()\n .withTransformOriginOn('.mat-menu-panel, .mat-mdc-menu-panel'),\n backdropClass: menu.backdropClass || 'cdk-overlay-transparent-backdrop',\n panelClass: menu.overlayPanelClass,\n scrollStrategy: this._scrollStrategy(),\n direction: this._dir,\n });\n }\n /**\n * Listens to changes in the position of the overlay and sets the correct classes\n * on the menu based on the new position. This ensures the animation origin is always\n * correct, even if a fallback position is used for the overlay.\n */\n _subscribeToPositions(menu, position) {\n if (menu.setPositionClasses) {\n position.positionChanges.subscribe(change => {\n const posX = change.connectionPair.overlayX === 'start' ? 'after' : 'before';\n const posY = change.connectionPair.overlayY === 'top' ? 'below' : 'above';\n // @breaking-change 15.0.0 Remove null check for `ngZone`.\n // `positionChanges` fires outside of the `ngZone` and `setPositionClasses` might be\n // updating something in the view so we need to bring it back in.\n if (this._ngZone) {\n this._ngZone.run(() => menu.setPositionClasses(posX, posY));\n }\n else {\n menu.setPositionClasses(posX, posY);\n }\n });\n }\n }\n /**\n * Sets the appropriate positions on a position strategy\n * so the overlay connects with the trigger correctly.\n * @param positionStrategy Strategy whose position to update.\n */\n _setPosition(menu, positionStrategy) {\n let [originX, originFallbackX] = menu.xPosition === 'before' ? ['end', 'start'] : ['start', 'end'];\n let [overlayY, overlayFallbackY] = menu.yPosition === 'above' ? ['bottom', 'top'] : ['top', 'bottom'];\n let [originY, originFallbackY] = [overlayY, overlayFallbackY];\n let [overlayX, overlayFallbackX] = [originX, originFallbackX];\n let offsetY = 0;\n if (this.triggersSubmenu()) {\n // When the menu is a sub-menu, it should always align itself\n // to the edges of the trigger, instead of overlapping it.\n overlayFallbackX = originX = menu.xPosition === 'before' ? 'start' : 'end';\n originFallbackX = overlayX = originX === 'end' ? 'start' : 'end';\n if (this._parentMaterialMenu) {\n if (this._parentInnerPadding == null) {\n const firstItem = this._parentMaterialMenu.items.first;\n this._parentInnerPadding = firstItem ? firstItem._getHostElement().offsetTop : 0;\n }\n offsetY = overlayY === 'bottom' ? this._parentInnerPadding : -this._parentInnerPadding;\n }\n }\n else if (!menu.overlapTrigger) {\n originY = overlayY === 'top' ? 'bottom' : 'top';\n originFallbackY = overlayFallbackY === 'top' ? 'bottom' : 'top';\n }\n positionStrategy.withPositions([\n { originX, originY, overlayX, overlayY, offsetY },\n { originX: originFallbackX, originY, overlayX: overlayFallbackX, overlayY, offsetY },\n {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n {\n originX: originFallbackX,\n originY: originFallbackY,\n overlayX: overlayFallbackX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n ]);\n }\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n _menuClosingActions() {\n const backdrop = this._overlayRef.backdropClick();\n const detachments = this._overlayRef.detachments();\n const parentClose = this._parentMaterialMenu ? this._parentMaterialMenu.closed : of();\n const hover = this._parentMaterialMenu\n ? this._parentMaterialMenu._hovered().pipe(filter(active => active !== this._menuItemInstance), filter(() => this._menuOpen))\n : of();\n return merge(backdrop, parentClose, hover, detachments);\n }\n /** Handles mouse presses on the trigger. */\n _handleMousedown(event) {\n if (!isFakeMousedownFromScreenReader(event)) {\n // Since right or middle button clicks won't trigger the `click` event,\n // we shouldn't consider the menu as opened by mouse in those cases.\n this._openedBy = event.button === 0 ? 'mouse' : undefined;\n // Since clicking on the trigger won't close the menu if it opens a sub-menu,\n // we should prevent focus from moving onto it via click to avoid the\n // highlight from lingering on the menu item.\n if (this.triggersSubmenu()) {\n event.preventDefault();\n }\n }\n }\n /** Handles key presses on the trigger. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n // Pressing enter on the trigger will trigger the click handler later.\n if (keyCode === ENTER || keyCode === SPACE) {\n this._openedBy = 'keyboard';\n }\n if (this.triggersSubmenu() &&\n ((keyCode === RIGHT_ARROW && this.dir === 'ltr') ||\n (keyCode === LEFT_ARROW && this.dir === 'rtl'))) {\n this._openedBy = 'keyboard';\n this.openMenu();\n }\n }\n /** Handles click events on the trigger. */\n _handleClick(event) {\n if (this.triggersSubmenu()) {\n // Stop event propagation to avoid closing the parent menu.\n event.stopPropagation();\n this.openMenu();\n }\n else {\n this.toggleMenu();\n }\n }\n /** Handles the cases where the user hovers over the trigger. */\n _handleHover() {\n // Subscribe to changes in the hovered item in order to toggle the panel.\n if (!this.triggersSubmenu() || !this._parentMaterialMenu) {\n return;\n }\n this._hoverSubscription = this._parentMaterialMenu\n ._hovered()\n // Since we might have multiple competing triggers for the same menu (e.g. a sub-menu\n // with different data and triggers), we have to delay it by a tick to ensure that\n // it won't be closed immediately after it is opened.\n .pipe(filter(active => active === this._menuItemInstance && !active.disabled), delay(0, asapScheduler))\n .subscribe(() => {\n this._openedBy = 'mouse';\n // If the same menu is used between multiple triggers, it might still be animating\n // while the new trigger tries to re-open it. Wait for the animation to finish\n // before doing so. Also interrupt if the user moves to another item.\n if (this.menu instanceof _MatMenuBase && this.menu._isAnimating) {\n // We need the `delay(0)` here in order to avoid\n // 'changed after checked' errors in some cases. See #12194.\n this.menu._animationDone\n .pipe(take(1), delay(0, asapScheduler), takeUntil(this._parentMaterialMenu._hovered()))\n .subscribe(() => this.openMenu());\n }\n else {\n this.openMenu();\n }\n });\n }\n /** Gets the portal that should be attached to the overlay. */\n _getPortal(menu) {\n // Note that we can avoid this check by keeping the portal on the menu panel.\n // While it would be cleaner, we'd have to introduce another required method on\n // `MatMenuPanel`, making it harder to consume.\n if (!this._portal || this._portal.templateRef !== menu.templateRef) {\n this._portal = new TemplatePortal(menu.templateRef, this._viewContainerRef);\n }\n return this._portal;\n }\n}\n_MatMenuTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatMenuTriggerBase, deps: [{ token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: MAT_MENU_SCROLL_STRATEGY }, { token: MAT_MENU_PANEL, optional: true }, { token: MatMenuItem, optional: true, self: true }, { token: i3$1.Directionality, optional: true }, { token: i1.FocusMonitor }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\n_MatMenuTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatMenuTriggerBase, inputs: { _deprecatedMatMenuTriggerFor: [\"mat-menu-trigger-for\", \"_deprecatedMatMenuTriggerFor\"], menu: [\"matMenuTriggerFor\", \"menu\"], menuData: [\"matMenuTriggerData\", \"menuData\"], restoreFocus: [\"matMenuTriggerRestoreFocus\", \"restoreFocus\"] }, outputs: { menuOpened: \"menuOpened\", onMenuOpen: \"onMenuOpen\", menuClosed: \"menuClosed\", onMenuClose: \"onMenuClose\" }, host: { listeners: { \"click\": \"_handleClick($event)\", \"mousedown\": \"_handleMousedown($event)\", \"keydown\": \"_handleKeydown($event)\" }, properties: { \"attr.aria-haspopup\": \"menu ? \\\"menu\\\" : null\", \"attr.aria-expanded\": \"menuOpen || null\", \"attr.aria-controls\": \"menuOpen ? menu.panelId : null\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatMenuTriggerBase, decorators: [{\n type: Directive,\n args: [{\n host: {\n '[attr.aria-haspopup]': 'menu ? \"menu\" : null',\n '[attr.aria-expanded]': 'menuOpen || null',\n '[attr.aria-controls]': 'menuOpen ? menu.panelId : null',\n '(click)': '_handleClick($event)',\n '(mousedown)': '_handleMousedown($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n }]\n }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_SCROLL_STRATEGY]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_MENU_PANEL]\n }, {\n type: Optional\n }] }, { type: MatMenuItem, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }, { type: i3$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i1.FocusMonitor }, { type: i0.NgZone }]; }, propDecorators: { _deprecatedMatMenuTriggerFor: [{\n type: Input,\n args: ['mat-menu-trigger-for']\n }], menu: [{\n type: Input,\n args: ['matMenuTriggerFor']\n }], menuData: [{\n type: Input,\n args: ['matMenuTriggerData']\n }], restoreFocus: [{\n type: Input,\n args: ['matMenuTriggerRestoreFocus']\n }], menuOpened: [{\n type: Output\n }], onMenuOpen: [{\n type: Output\n }], menuClosed: [{\n type: Output\n }], onMenuClose: [{\n type: Output\n }] } });\n/** Directive applied to an element that should trigger a `mat-menu`. */\nclass MatMenuTrigger extends _MatMenuTriggerBase {\n}\nMatMenuTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenuTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatMenuTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatMenuTrigger, selector: \"[mat-menu-trigger-for], [matMenuTriggerFor]\", host: { classAttribute: \"mat-menu-trigger\" }, exportAs: [\"matMenuTrigger\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenuTrigger, decorators: [{\n type: Directive,\n args: [{\n selector: `[mat-menu-trigger-for], [matMenuTriggerFor]`,\n host: {\n 'class': 'mat-menu-trigger',\n },\n exportAs: 'matMenuTrigger',\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 MatMenuModule {\n}\nMatMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenuModule, declarations: [MatMenu, MatMenuItem, MatMenuTrigger, MatMenuContent], imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule], exports: [CdkScrollableModule,\n MatCommonModule,\n MatMenu,\n MatMenuItem,\n MatMenuTrigger,\n MatMenuContent] });\nMatMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenuModule, providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule, CdkScrollableModule,\n MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatMenuModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule, MatRippleModule, OverlayModule],\n exports: [\n CdkScrollableModule,\n MatCommonModule,\n MatMenu,\n MatMenuItem,\n MatMenuTrigger,\n MatMenuContent,\n ],\n declarations: [MatMenu, MatMenuItem, MatMenuTrigger, MatMenuContent],\n providers: [MAT_MENU_SCROLL_STRATEGY_FACTORY_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/**\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 { MAT_MENU_CONTENT, MAT_MENU_DEFAULT_OPTIONS, MAT_MENU_PANEL, MAT_MENU_SCROLL_STRATEGY, MatMenu, MatMenuContent, MatMenuItem, MatMenuModule, MatMenuTrigger, _MatMenuBase, _MatMenuContentBase, _MatMenuTriggerBase, fadeInItems, matMenuAnimations, transformMenu };\n"],"x_google_ignoreList":[53]}