{"version":3,"file":"src_app_modules_main-application_application-menu_application-menu_module_ts.54af8a6cb7f4bd26.js","mappings":"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AiB81B,6BACjB/zB,aAAc,CAAC8zB,+BACfz3B,KAAMu3B,eAER,CAEE31B,gBAAiB81B,qBACjB5wB,WAAW,GAEb,CACEzL,MAAO,YACP+G,QAASk1B,0BACT11B,gBAAiB81B,qBACjB13B,KAAMu3B,eAER,CACE31B,gBAAiB81B,qBACjB5wB,WAAW,GAEb,CACEzL,MAAO,UACP+G,QAASk1B,wBACT11B,gBAAiB81B,qBACjB13B,KAAMu3B,eAER,CACEl8B,MAAO,YACP+G,QAASk1B,0BACT11B,gBAAiB81B,qBACjB13B,KAAMu3B,eAER,CACEl8B,MAAO,YACP+G,QAASk1B,sBACT11B,gBAAiB81B,6BACjB13B,KAAMu3B,gBAGV5zB,aAAc,CAAC8zB,UAAmBA,kBAGvBQ,EAA+B,CAC1C58B,MAAO,WACP+G,QAASk1B,aACTt3B,KAAMu3B,kBACN31B,gBAAiB,CAAC81B,gBAClB/zB,aAAc,CAAC8zB,UAAmBA,iBAClC9xB,uBAAuB,EACvBxD,YAAa,IAGF+1B,GAA8B,CACzC78B,MAAO,UACP+G,QAASk1B,YACTt3B,KAAMu3B,YACN5xB,uBAAuB,EACvBxD,YAAa,CACX,CACE9G,MAAO,UACP+G,QAASk1B,2BACT11B,gBAAiB,IAEnB,CACEvG,MAAO,gBACP+G,QAASk1B,gBACT11B,gBAAiB,GACjB+B,aAAc,CAAC8zB,kBAGnB9zB,aAAc,CAAC8zB,UAAmBA,gBAAyBA,YAAqBA,iBAMrEU,GAA8B,CACzC98B,MAAO,UACP+G,QAASk1B,YACTt3B,KAAMu3B,eACN9xB,iBAAiB,EACjBE,uBAAuB,EACvBxD,YAAa,CACX,CACE9G,MAAO,YACP+G,QAASk1B,sBACT11B,gBAAiB,CACf81B,kCACAA,oCAEF13B,KAAMu3B,eAER,CACEl8B,MAAO,MACP+G,QAASk1B,gBACT11B,gBAAiB,CACf81B,kCACAA,oCAEF13B,KAAMu3B,eAER,CACEl8B,MAAO,UACP+G,QAASk1B,oBACT11B,gBAAiB,CAAC81B,oBAClBlyB,aAAc2xB,EACdn3B,KAAMu3B,gBA8BV5zB,aAAc,CAAC8zB,YAkBJW,IAVFd,YACQI,iBACXH,WAQsC,CAC5Cl8B,MAAO,WACP+G,QAASk1B,aACTt3B,KAAMu3B,aACN5xB,uBAAuB,EACvBxD,YAAa,CAOX,CACE9G,MAAO,aACP+G,QAASk1B,uBACT11B,gBAAiB81B,8BACjB13B,KAAMu3B,gBAER,CACEl8B,MAAO,cACP+G,QAASk1B,wBACT11B,gBAAiB,CAAC81B,8BAClB13B,KAAMu3B,UAQR,CACEl8B,MAAO,eACP+G,QAASk1B,2BACTt3B,KAAMu3B,kBAER,CACEl8B,MAAO,YACP+G,QAASk1B,uBACT11B,gBAAiB81B,yBACjB13B,KAAMu3B,gBAER,CACEl8B,MAAO,QACP+G,QAASk1B,mBACT11B,gBAAiB,CAAC81B,sBAClB13B,KAAMu3B,UAER,CACEl8B,MAAO,UACP+G,QAASk1B,qBACTt3B,KAAMu3B,aAER,CACEl8B,MAAO,SACP+G,QAASk1B,oBACT11B,gBAAiB81B,eACjB13B,KAAMu3B,eAER,CACEl8B,MAAO,QACP+G,QAASk1B,oCACT11B,gBAAiB81B,0CACjB13B,KAAMu3B,mBAER,CACEl8B,MAAO,QACP+G,QAASk1B,mBACT11B,gBAAiB81B,qBACjB13B,KAAMu3B,gBAER,CACEl8B,MAAO,UACP+G,QAASk1B,oBACT11B,gBAAiB81B,mBACjB13B,KAAMu3B,eAER,CACEl8B,MAAO,UACP+G,QAASk1B,qBACT11B,gBAAiB81B,sBACjB/zB,aAAc,CAAC8zB,oBACfz3B,KAAMu3B,aAER,CACEl8B,MAAO,WACP+G,QAASk1B,sBACT3zB,aAAc,CAAC8zB,+BACf71B,gBAAiB81B,0BACjB13B,KAAMu3B,mCCvXZ,IAAYc,+BAAW,KAKrBA,iBACAA,mCACAA,2CACAA,2BACAA,qBAKAA,qBACAA,qCACAA,yCACAA,qCACAA,yCACAA,oBAGAA,wBAtBqB,oBCAvB,IAAY5qB,+BAAoB,KAC9BA,yBACAA,yCACAA,iBACAA,iCACAA,iCACAA,+BACAA,uBACAA,iCACAA,0CAT8B,sCCAzB,MAAM6qB,EAA2B,CAAC5uB,EAAe6u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","names":["i0","_r3","ctx_r2","matDrawerAnimations","transformDrawer","trigger","state","style","transform","visibility","transition","animate","MAT_DRAWER_DEFAULT_AUTOSIZE","InjectionToken","providedIn","factory","MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY","MAT_DRAWER_CONTAINER","MatDrawerContent","CdkScrollable","constructor","_changeDetectorRef","_container","elementRef","scrollDispatcher","ngZone","super","this","ngAfterContentInit","_contentMarginChanges","subscribe","markForCheck","ɵfac","forwardRef","MatDrawerContainer","i1","ɵcmp","selectors","provide","useExisting","ngContentSelectors","MatDrawer","_elementRef","_focusTrapFactory","_focusMonitor","_platform","_ngZone","_interactivityChecker","_doc","_elementFocusedBeforeDrawerWasOpened","_enableAnimations","_position","_mode","_disableClose","_opened","_animationStarted","Subject","_animationEnd","_animationState","openedChange","EventEmitter","_openedStream","pipe","filter","o","map","openedStart","e","fromState","toState","indexOf","mapTo","undefined","_closedStream","closedStart","_destroyed","onPositionChanged","_modeChanged","opened","activeElement","_takeFocus","_isFocusWithinDrawer","_restoreFocus","_openedVia","runOutsideAngular","fromEvent","nativeElement","event","keyCode","ESCAPE","disableClose","hasModifierKey","takeUntil","run","close","stopPropagation","preventDefault","distinctUntilChanged","x","y","emit","position","value","_isAttached","_updatePositionInParent","mode","_updateFocusTrapState","next","coerceBooleanProperty","autoFocus","_autoFocus","toggle","_forceFocus","element","options","isFocusable","tabIndex","callback","removeEventListener","removeAttribute","addEventListener","focus","_focusByCssSelector","selector","elementToFocus","querySelector","_focusTrap","focusInitialElementWhenReady","then","hasMovedFocus","focusOrigin","focusVia","blur","activeEl","contains","ngAfterViewInit","create","ngAfterContentChecked","isBrowser","ngOnDestroy","destroy","_anchor","remove","complete","open","openedVia","_closeViaBackdropClick","_setOpen","isOpen","result","restoreFocus","Promise","resolve","take","_getWidth","offsetWidth","enabled","newPosition","parent","parentNode","createComment","insertBefore","appendChild","i2","i3","DOCUMENT","_c1","_t","ctx","encapsulation","changeDetection","_dir","_element","viewportRuler","defaultAutosize","_animationMode","_drawers","QueryList","backdropClick","_doCheckSubject","_contentMargins","left","right","change","_validateDrawers","updateContentMargins","_autosize","start","_start","end","_end","autosize","hasBackdrop","_backdropOverride","scrollable","_userContent","_content","_allDrawers","changes","startWith","drawer","reset","item","notifyOnChanges","forEach","_watchDrawerToggle","_watchDrawerPosition","_watchDrawerMode","length","_isDrawerOpen","debounceTime","_left","width","_right","ngDoCheck","_isPushed","classList","add","_setContainerClass","onMicrotaskEmpty","merge","isAdd","className","_onBackdropClicked","_closeModalDrawersViaBackdrop","_canHaveBackdrop","_isShowingBackdrop","i4","ANIMATION_MODULE_TYPE","dirIndex","_c2","i5","styles","MatSidenavContent","changeDetectorRef","container","MatSidenavContainer","MatSidenav","arguments","_fixedInViewport","_fixedTopGap","_fixedBottomGap","fixedInViewport","fixedTopGap","coerceNumberProperty","fixedBottomGap","t","_c4","MatSidenavModule","ɵmod","ɵinj","CommonModule","MatCommonModule","CdkScrollableModule","CdkStepHeader","ɵdir","CdkStepLabel","template","nextId","STEP_STATE","STEPPER_GLOBAL_OPTIONS","CdkStep","_stepper","stepperOptions","interacted","interactedStream","_editable","_optional","_completedOverride","_customError","_stepperOptions","_displayDefaultIndicatorType","displayDefaultIndicatorType","editable","optional","completed","_getDefaultCompleted","stepControl","valid","hasError","_getDefaultError","invalid","select","selected","ngOnChanges","_stateChanged","_markAsInteracted","_showError","showError","CdkStepper","TemplateRef","steps","_sortedHeaders","_linear","_selectedIndex","selectionChange","_orientation","_groupId","linear","selectedIndex","index","newIndex","_steps","_isValidIndex","_anyControlsInvalidOrPending","toArray","_updateSelectedItemIndex","step","orientation","_keyManager","withVerticalOrientation","_stepHeader","headers","sort","a","b","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","FocusKeyManager","withWrap","withHomeAndEnd","of","_layoutDirection","direction","withHorizontalOrientation","updateActiveItem","Math","max","min","previous","_getStepLabelId","i","_getStepContentId","_getAnimationDirection","_getIndicatorType","isCurrentStep","_isCurrentStep","_getDefaultIndicatorLogic","_getGuidelineLogic","_getFocusIndex","activeItemIndex","stepsArray","previouslySelectedIndex","selectedStep","previouslySelectedStep","_containsFocus","setActiveItem","_onKeydown","hasModifier","manager","SPACE","ENTER","onKeydown","slice","some","control","pending","stepperElement","focusedElement","_getFocusedElementPierceShadowDom","CdkStepperNext","type","CdkStepperPrevious","CdkStepperModule","BidiModule","ctx_r6","ctx_r7","ctx_r8","ctx_r9","ctx_r3","ctx_r4","ctx_r5","_r13","ctx_r12","_r19","ctx_r18","_r23","step_r20","ctx_r24","MatStepLabel","MatStepperIntl","optionalLabel","completedLabel","editableLabel","ɵprov","MAT_STEPPER_INTL_PROVIDER","deps","Optional","SkipSelf","useFactory","MAT_STEPPER_INTL_PROVIDER_FACTORY","parentIntl","_MatStepHeaderBase","mixinColor","MatStepHeader","_intl","_intlSubscription","monitor","unsubscribe","stopMonitoring","origin","_stringLabel","label","_templateLabel","_getHostElement","_getIconContext","active","_getDefaultTextForState","decls","matStepperAnimations","horizontalStepTransition","params","animationDuration","verticalStepTransition","height","MatStepperIcon","templateRef","MatStepContent","_template","MatStep","stepper","_errorStateMatcher","_viewContainerRef","_isSelected","Subscription","switchMap","isSelected","_lazyContent","_portal","TemplatePortal","isErrorState","form","originalErrorState","customErrorState","MatStepper","ErrorStateMatcher","i2$1","dir","animationDone","labelPosition","headerPosition","_iconOverrides","_animationDone","_animationDuration","nodeName","toLowerCase","test","_icons","name","_stepIsNavigable","_getAnimationDuration","i3$1","hostVars","MatStepperNext","MatStepperPrevious","MatStepperModule","imports","PortalModule","MatButtonModule","MatIconModule","MatRippleModule","_MatToolbarBase","MatToolbarRow","MatToolbar","document","_document","_checkToolbarMixedModes","_toolbarRows","toolbar_c0","MatToolbarModule","IdleTimeModule","common","NotificationRingItemModule","icon_component","pipes_module","pill_list_module","fesm2020_button","icon","progress_spinner","NotificationRingModule","menu","fesm2020_checkbox","fesm2020_forms","SidePanelService","BehaviorSubject","isSidePanelExpanded","isSidePanelExpanded$","isSidePanelExpandedSubject","asObservable","toggleSidePanel","PackageTypeListConst","package_type","SidePanelSectionItemComponent","ComponentAbstract","cdr","router","dialog","modalsService","appVersionService","helpRouterService","store","snackbarService","packageService","selectUserPermissionLevel","untilDestroyed","permissionLevel","ngOnInit","isActive","window","location","pathname","startsWith","sectionItem","urlPath","activeSection","find","currentVersion","getBuiltInVersionInfo","version_number","version$","appVersion","tap","needUpgrade","events","NavigationEnd","url","detectChanges","menuSectionItem","permissionLevelWarning","permissionLevels","firstValueFrom","_this","permissionLevels$","checkPermissionLevel","warning","checkPackagesAvailable","packageLevel","hasPackage","packageNames","p","includes","info","join","toString","modalDialogComponent","NewTurnoverModalComponent","openNewTurnoverModal","queryParams","getGlobalPreservedParams","newTab","serializeUrl","createUrlTree","href","navigate","menuActions","menuActionsEvent","toggleSection","isExpanded","__decorate","UntilDestroy","fesm2020_core","SidePanelSectionComponent","component_abstract","app_routes_const","icon_enum","emailDomains","passQueryParams","contentCss","hideWithoutSubsection","checkActiveSection","ngneat_until_destroy","user_selectors","tenantData","currentSectionBSubject","currentSection","section","autoExpandInspectSection","management_route_enum","subRoute","route_path_enum","checkPackagesTrialDaysLeft","every","s","trialState","path","lodash","homePaths","separator","$event","side_panel_section_component_decorate","SidePanelComponent","dashboards_abstract","permission_level_enum","builtInVersionInfo","currentVersionTimestamp","version_timestamp","URL","searchParams","append","date_utils_function","userData","dispatch","user_actions","combineLatest","dashboards_selectors","dashboardMode","permissionList","id","menuConfig","getMenuConfig","menuAction","action","mainPageActionEvent","checkRolesSection","availableDashboardPermissionsCount","homeDashboardPermissions","permission","checkHomeSection","checksMainSection","side_panel_config_const","sections","checkPackages","push","newSection","enableSorting","isHasRightToSection","checksSubsection","localeCompare","checkPermissions","check_permission_level_function","check_user_email_domain","email","side_panel_component_decorate","EntityType","EntityTypeListConst","NotificationRingItemComponent","enumerationValuePipe","getNotificationIcon","title","getNotificationTitle","content","getNotificationContent","footer","getNotificationFooter","selectEvent","delete","deleteInProgress","deleteEvent","notification","category","notification_category","relatedObjectTypeId","additionalData","workflowStepEnumType","workflow_step_list_const","ticketName","workflow_step_enum","entityList","unitName","unitNames","propertyName","userType","user_type","companyName","NotificationRingComponent","UntypedFormControl","getLastMessages","deleteInProgress$","selectDeleteNotificationInProgress","selectUserData","selectLastNotificationList","lastNotificationList","allNotificationList","filterList","unreadOnly","valueChanges","selectNotification","webNotification","wasRead","markAsRead","baseNotificationBody","notificationIds","notificationId","openSource","markAllAsRead","deleteNotification","displayedNotificationList","setUnreadCount","unreadCount","getLastNotificationList","addTicketModal","ticketId","relatedObjectId","propertyId","NotificationCategory","RouteData","AppRoutes","turnoverIds","UserType","RoutePath","bidId","notification_ring_component_decorate","BreadcrumbItemComponent","reloadRoute","navigateByUrl","skipLocationChange","TopPanelComponent","activatedRoute","routeBreadcrumbList","getBreadcrumbList","root","dashboard_actions","breadcrumbList","mergeBreadcrumbList","route","firstChild","mergeMap","data","newDashboardViewType","route_data","dashboard_view_type","dashboardViewType","getDashboardViewTypes","additionalBreadcrumbList","isAuthenticated","withLatestFrom","portfolio_actions","home","main_page_actions","breadcrumbs","routeConfig","lastRoutePart","split","pop","snapshot","replace","enumeration_selectors","dashboardViewTypes","enumerationValue","dashboardViewTypeEnum","top_panel_component_decorate","ApplicationMenuComponent","authService","sidePanelService","screenWiperService","applicationMenuService","screenClasses$","wipeDuration","globalWiperVisible$","environment","navigationInProgress","watchForSidePanel","currentVersionTimeStamp","isLoading$","selectLoadEnumerationsLoading","dashboardViewType$","selectDashboardViewType","lockFullScreen","fullScreen","pseudoFullScreen","pseudoFullScreenOn","fullScreenOn","pseudoFullScreenLocked","NavigationStart","NavigationCancel","mainPageActions","MainPageActions","logout","returnUrl","onScroll","scrollEvent$","application_menu_component_decorate","routes","component","canActivate","resident_guard","children","redirectTo","pathMatch","auth_guard","home_redirect_guard","loadChildren","__webpack_require__","m","HomeDashboardModule","package_level_guard","DashboardRolesModule","TurnoversModule","InspectionsModule","ServiceModule","CalendarModule","BoardsModule","loadComponent","TokenExchangeComponent","DashboardReportsModule","permission_level_guard","TicketsModule","canDeactivate","view_close_guard","ManagementModule","unit_details_component","ApplicationMenuRoutingModule","ApplicationMenuModule","yesEmpty_pipe","valueIfPositive_pipe","valueIfNonZero_pipe","notifications_module","modals_module","autocomplete","badge","card","datepicker","divider","expansion","form_field","grid_list","input","list","core","paginator","fesm2020_radio","fesm2020_select","snack_bar","tabs","table","tooltip_directive","chips","directives_module","new_turnover_modal_module","animation_module","avatar_module","search_input_module","radio_button_dropdown_module","skeleton_loader_component","property_selector_all_component","ApplicationMenuService","rxjs__WEBPACK_IMPORTED_MODULE_0__","portfoliosToDisplayIds","excludedProperties","PropertySelectorAllComponent","PuSubscribable","portfolioService","inject","ActivatedRoute","Store","ChangeDetectorRef","Router","shareReplay","initDashboardViewType","initShowPropertySelector","initShowPropertySingleSelector","DashboardViewType","FormControl","initAllPortfolioSelector","PermissionLevelType","hasPermissionToPropertyCollection$","permissionLevelType","PropertyCollections_View","PropertyCollections_Edit","userPortfolios$","initPortfolios","userCollections$","initUserCollections","userPortfolioProperties$","initPortfolioProperties","userCollectionProperties$","initCollectionProperties","collectionProperties$","showSwitch$","showPropertySingleSelector$","hasPermission","collections","showSingle","hasPermissionToPropertyCollection","loadPropertyCollections","applyQueryParams","onCollectionControlChange","initPortfolioSelection","initPropertySelectorSwitchStatusListener","onPortfolioControlChange","onPropertyControlChange","onSinglePropertyControlChange","initPortfolioSelectorWidth","initPropertySelectorWidth","initGroupingItems","initGroupingValue","initGroupingValueChanges","initRouterParamUpdateListener","switchMessage$","switchMessage","switchPortfolioMessage","reportName","prevPortfolioId","newPortfolioId","selectSelectedPortfolioId","selectSelectedCollectionIds","selectUserCollections","selectIsAllCollectionsSelected","selectPropertySelectorSwitchStatus","allPortfolioSelectorEnabled$","selectSelectedPropertyIds","routeData$","prev","curr","JSON","stringify","selectedPortfolioId","selectedCollectionIds","allCollections","isAllCollectionsSelected","switchStatus","allPortfolioSelectorEnabled","userPortfolios","storeSelectedProperties","lastRouteUrl","singleView","isUpdatingRouterParams","PropertySelectorSwitchStatus","setPropertySelectorSwitchStatus","propertySelectorSwitchStatus","allCollectionIds","collection","availablePropertiesToSelect","portfolioPropertiesIds","collectionPropertiesIds","switchChanged","lastSwitchStatus","routeChanged","lastRouteData","availablePropertiesChanged","lastAvailableProperties","difference","allPortfoliosValue","setSelectedPortfolioId","portfolioId","portfolioControl","setValue","setSelectedCollectionIds","collectionIds","allCollectionsSelected","collectionControl","setSelectedPropertyIds","propertyIds","allPropertiesSelected","singlePropertyModeView","prevPortfolioControlValue","propertyPortfolioControl","propertyCollectionControl","allPortfolioPropertiesSelected","allCollectionPropertiesSelected","updateRouterParam","portfolioId$","updatePortfolioSelection","getPortfolioLabelById","prevPortfolioName","newPortfolioName","selectPortfolios","portfolios","Number","queryParamsApplied","doNotStore","setDoNotStore","collectionIdsParam","urlCollectionIds","parse","Array","isArray","queryPortfolioId","urlPortfolioId","parseInt","propertyIdsParam","urlPropertyIds","portfolioLabel","portfolioOptions","el","allPortfoliosOption","portfolioMaxNameLength$","collectionsSelected","isUpdatingControl","emitEvent","propertyControlSingle","allPropertyValue","portfoliosToDisplay$","boardData","storagePortfolioId","allPortfolioSelectorIsEnabled","allPortfolioIdsSet","Set","portfolioIdToSet","selectorPropertiesAllInitialization","isDefAndNotNull","has","first","collections$","storageCollectionIds$","storageCollectionIds","userCollections","toUpperCase","selectorCollectionsAllInitialization","skipEqual$","selectProperties","properties","storagePropertyIds","resetProperties","portfolioProperties","_","buildingNumber","hasBuildingNumber","sortBy","isEqual","allPropertiesOption","splice","selectPropertyCollections","propertyCollections","propertyIdsFromCollections","flatMap","propertiesList","collectionProperties","property","currentParams","currentFragment","fragment","updatedParams","relativeTo","queryParamsHandling","replaceUrl","selectTenantData","propertySelectorTypes","portfolioSelectorsWidthCss","calculateSelectorWidth","propertyMaxNameLength$","propertySelectorsWidthCss","maxNameLength","maxWidth","ceil","groupingByItems","selectJoinedProperties","joined","grouping","setJoinedProperties","onSwitchToggled","ReactiveFormsModule","updateFormForBoardType","settings","getBoardFormValues","board_enums","progressType","datasource","outputAction","outputBehaviour","boardCellColor","controls","ScrollDirective","pu_subscribe","destroy$","r","initScroll","scroll$","scrollPosition","scrollTop","clientHeight","totalScrollHeight","scrollHeight","scrollBottomThreshold","checkScrollBottom","scrollThreshold","remainingScroll","scrollToBottom","scrolledToBottom","destroy_service","BoardsCreateComponent","dialogRef","formBuilder","boardService","propertiesService","boardActionSubject","ButtonType","columns","col","initFormGroups","initBoardGroupConfig","boardGroupForm","get","ProgressTypeList","BoardSourceTypeList","BoardTypeList","BoardOutputTypeList","BoardOutputBehaviourList","DoNotAllowToCreateTicketsRule","BooleanListConst","EIcon","isEditMode","patchValue","selectedPortfolioIds","last","updatePropertyList","boardType","boardTypeList","flat","BoardType","isSettingsOpened","setValidators","Validators","updateValueAndValidity","clearValidators","getAllUserProperties","allProperties","selectedProperties","propertyList","currentExcludedIds","excludedPropertyIds","availablePropertyIds","newExcludedIds","toggleAdvancedSettings","submit","inDisallowedType","shorError","isControlInvalid","markAllAsTouched","extendedConfigParsed","board","Board","Object","assign","RestBoardModel","group","showArchivedTurnovers","dontCreateTickets","groups","createFormGroupFromGroups","array","createGroupFormGroup","colorBg","colorText","cols","intersection","colOptions","c","addNewGroup","removeGroup","removeAt","error","BoardOutputBehaviour","disallowSourceTypeOutputTypeMap","MAT_DIALOG_DATA","DashboardsAbstract","_app_components_abstract_component_abstract__WEBPACK_IMPORTED_MODULE_0__","WorkflowStep","_shared_enums_workflow_step_enum__WEBPACK_IMPORTED_MODULE_4__","_shared_enums_dashboard_view_type__WEBPACK_IMPORTED_MODULE_3__","DashboardMode","_shared_enums_dashboard_mode__WEBPACK_IMPORTED_MODULE_2__","TicketAttachmentType","_shared_enums_attachment_type__WEBPACK_IMPORTED_MODULE_1__","_angular_core__WEBPACK_IMPORTED_MODULE_5__","features","DashboardUserHeaderComponent","PriorityType","showBack","previousRoute","selectDashboardFilterState","assignee","setDashboardFilter","selectActiveUsers","users","myTasksLoading$","selectMyTasksLoading","myTasksTurnovers$","selectMyTasksTurnoversCount","myTasksTickets$","selectMyTasksTicketsCount","staleTurnovers$","selectStaleTurnoversCount","lateTurnovers$","selectLateTurnoversCount","goBack","_ngrx_store__WEBPACK_IMPORTED_MODULE_1__","_dashboards_store_reducers_dashboard_filter_reducer__WEBPACK_IMPORTED_MODULE_0__","UnitDetailsComponentForm","FINISH","UnitDetailsAbstract","getPropertyAddress","physicalAddress","street1","street2","city","zip","getPropertyManager","propertyManager","firstName","lastName","inputs","UnitDetailsPicturesSectionComponentForm","PHOTO","UnitDetailsPicturesSectionComponent","unit_details_abstract","attachment_type","file_extensions_const","initForm","unitId","portfolio_selectors","unitAttachments","prepareUnitAttachments","fileUploaded","unitAttachmentType","upload","setAttachment","showUnitPictures","openGalleryModal","attachmentType","attachmentsBSubject","unitPhotosBSubject","readOnly","showUnitFloorPlans","unitFloorPlanBSubject","attachmentToEntity","externalUrl","applianceId","fileUploadId","originalFileName","description","FLOOR_PLAN","unitPhotos","unitFloorPlan","targetAttachmentType","displayedUnitPhotos","displayedUnitFloorPlan","UnitDetailsPropertySectionComponent","descriptionGroup","DESCRIPTION","finish","unit","propertyAddress","addresses","propertyManagerEmail","finishEnumeration","finishList","get_enumeration_radio_list_function","unit_details_property_section_component_decorate","UnitDetailsDescriptionSectionComponent","rent","RENT","marketRent","MARKETRENT","advertisedRent","ADVERTISEDRENT","oldRent","OLDRENT","renewalStrategyLoading$","selectRenewalStrategyForUnitLoading","selectRenewalStrategyForUnit","restUnitTypeRentTargetModel","selectUnit","unit_details_description_section_component_decorate","UnitDetailsInspectionsComponent","inspectionService","modalService","rest_inspections_model_interface","inspectionsSource","template_actions","template_selectors","templates","templateList","initDataSource","getBeUnitId","inspections","inspection_model","inspectionTemplateId","inspection","isTurboMode","displayedColumns","typeColumnIndex","sortingDataAccessor","tableSortPredicate","bind","deleteInspection","inspectionModel","success","snackbar_message_enum","download","inspectionId","share","unit_details_inspections_component_decorate","UnitDetailsComponent","unitNonPmsService","unitService","turnoverService","MoveOutTypeListConst","selectPreviousRoute","prevRoute","sourceView","paramMap","turnoverId","bulkBidId","selectUnitLoading","isUnitDoNotAutoCreateTurnsLoading$","selectUnitDoNotAutoCreateTurnsLoading","nameControl","update","loadUnit","getRenewalStrategyForUnit","selectLoadEnumerations","enumerationConfig","applianceTypeList","getEnumerationRadioListFunction","applianceTypes","colorTypeList","applianceColors","selectTurnoverDeleteStatus","turnoverDeleteStatus","UpdateStatus","doNotAutoCreateTurns","isUnitDown","isUnitDownReason","isUnitOnHold","isUnitOnHoldReason","updateBreadcrumb","initTurnover","clearUnit","getTurnover","turnover","moveOutType","unitStatus","evt","changeDoNotAutoCreateTurns","updateUnitDoNotAutoCreateTurns","openConfirmationModal","confirmColor","confirmLabel","afterClosed","DialogResult","deleteTurnover","onUnitDownTextareaFocus","initialUnitDownReason","onUnitDownTextareaKeydown","key","target","onUnitDownTextareaBlur","trim","onUnitDownCheckboxChange","checked","onUnitHoldCheckboxChange","goToHome","DigitsValidator","formValue","res","HttpErrorResponse","setCustomBreadcrumbs","deleteUnit","catchError","status","finalize","unit_details_component_decorate","routeState","_ngrx_store__WEBPACK_IMPORTED_MODULE_2__","_core_selector__WEBPACK_IMPORTED_MODULE_1__","coreState","_main_application_store_reducers_route_reducer__WEBPACK_IMPORTED_MODULE_0__","_shared_enums_move_out_type_enum__WEBPACK_IMPORTED_MODULE_0__","PROPUP_EMAIL_DOMAINS","MANAGEMENT_EMAIL_DOMAINS","concat","homeSection","_shared_constants_app_routes_const__WEBPACK_IMPORTED_MODULE_1__","_shared_enums_icon_enum__WEBPACK_IMPORTED_MODULE_2__","rolesSection","_shared_enums_package_type__WEBPACK_IMPORTED_MODULE_3__","_shared_enums_permission_level_enum__WEBPACK_IMPORTED_MODULE_4__","forExternalOnly","turnoversSection","_ui_components_modals_new_turnover_modal_new_turnover_modal_component__WEBPACK_IMPORTED_MODULE_5__","boardsSection","_main_application_boards_boards_create_boards_create_component__WEBPACK_IMPORTED_MODULE_0__","inspectionsSection","calendarSection","serviceSection","reportsSection","managementSection","MoveOutType","isUserEmailDomainAllowed","allowedDomains","domain","HomeRedirectGuard","userService","tenantService","rxjs__WEBPACK_IMPORTED_MODULE_8__","getCashedUserData","getCachedTenant","rxjs_operators__WEBPACK_IMPORTED_MODULE_9__","rxjs_operators__WEBPACK_IMPORTED_MODULE_10__","navigationExtras","_shared_enums_package_type__WEBPACK_IMPORTED_MODULE_1__","_shared_enums_user_type__WEBPACK_IMPORTED_MODULE_3__","_shared_functions_check_permission_level_function__WEBPACK_IMPORTED_MODULE_4__","_shared_enums_permission_level_enum__WEBPACK_IMPORTED_MODULE_2__","_shared_constants_app_routes_const__WEBPACK_IMPORTED_MODULE_0__","_angular_core__WEBPACK_IMPORTED_MODULE_11__","PackageLevelGuardFactory","packageLevelToCheck","AnyPackageLevelGuardFactory","packagesToCheck","_angular_core__WEBPACK_IMPORTED_MODULE_2__","_angular_router__WEBPACK_IMPORTED_MODULE_3__","_app_services_package_service__WEBPACK_IMPORTED_MODULE_0__","rxjs_operators__WEBPACK_IMPORTED_MODULE_4__","parseUrl","SimpleScrollService","scrollToTopSubject","validationTriggerSubject","triggerScrollToTop","triggerValidation","processAllControls","_angular_forms__WEBPACK_IMPORTED_MODULE_0__","values","markControl","markAsDirty","markAsTouched","positiveOnly","regex","RegExp","digitsPositive","digits","AVATAR_COLOR_THEMES_LIST","AvatarComponent","avatarService","userInfo","avatarTheme","getUserConfig","userId","SYSTEM_USER_ID","setFullName","fullName","AvatarModule","_ui_components_components_avatar_services_avatar_service__WEBPACK_IMPORTED_MODULE_2__","_angular_common__WEBPACK_IMPORTED_MODULE_5__","_shared_pipes_pipes_module__WEBPACK_IMPORTED_MODULE_1__","_ui_components_components_icon_icon_component__WEBPACK_IMPORTED_MODULE_3__","_shared_directives_tooltip_directive__WEBPACK_IMPORTED_MODULE_0__","AvatarService","setThemeConfigList","avatarThemeItem","configList","themeNumber","isNaN","themeAmount","getAvatarTheme","updateAvatarTheme","themePrefix","localStorage","setItem","local_storage_data_enum","getItem","getRandomValue","minValue","maxValue","floor","random","_angular_core__WEBPACK_IMPORTED_MODULE_4__","DashboardContainerComponent","_dashboards_components_abstract_dashboards_abstract__WEBPACK_IMPORTED_MODULE_0__","scrollService","isLoading","loading","isEmptyDashboard","emptyDashboard","scrollToTop$","_ngneat_until_destroy__WEBPACK_IMPORTED_MODULE_5__","scrollToTop","onBodyScroll","bodyContent","scrollTo","top","behavior","EmptyDashboardComponent","userData$","_main_application_store_selectors_user_selectors__WEBPACK_IMPORTED_MODULE_1__","_ngneat_until_destroy__WEBPACK_IMPORTED_MODULE_3__","rxjs_operators__WEBPACK_IMPORTED_MODULE_5__","EmptyDataComponent","_shared_enums_icon_enum__WEBPACK_IMPORTED_MODULE_1__","_angular_core__WEBPACK_IMPORTED_MODULE_3__","_angular_core__WEBPACK_IMPORTED_MODULE_8__","PictureComponent","fileMimeType","_angular_forms__WEBPACK_IMPORTED_MODULE_9__","_shared_interfaces_file_mime_types__WEBPACK_IMPORTED_MODULE_1__","comment","picture","selectPicture","selectPictureEvent","deleteItem","deletePictureEvent","toggleEditMode","editMode","showCommentActionButtons","currentComment","save","attachment","updatePictureEvent","cancel","SearchInputModule","_angular_common__WEBPACK_IMPORTED_MODULE_2__","_ui_components_components_icon_icon_component__WEBPACK_IMPORTED_MODULE_0__","_angular_forms__WEBPACK_IMPORTED_MODULE_3__","_r7","_r10","_r12","ctx_r11","ctx_r13","ctx_r14","_r17","ctx_r16","ctx_r20","ctx_r21","_r2","ctx_r1","ChromeFieldsComponent","onChange","view","fontSize","color","borderRadius","border","boxShadow","display","marginTop","hsl","toggleViews","round","handleChange","hex","isValidHex","TinyColor","disableAlpha","toHex","toHex8","source","g","rgb","h","l","ChromeComponent","ColorWrap","circle","pointer","backgroundColor","afterValidChange","alpha","activeBackground","handleValueChange","NG_VALUE_ACCESSOR","multi","ColorChromeModule","AlphaModule","CheckboardModule","EditableInputModule","HueModule","SaturationModule","ClickOutsideDirective","onDocumentClick","appClickOutside","CustomColorPickerComponent","CustomControlAbstract","ngControl","formDirective","initIsOpen","labelCss","_labelCss","labelOutsideDefaultCss","valueCss","_valueCss","_labelElement","initControlBase","onChanged","handleOpenState","isMouseMove","isForce","_forceIsOpen$","_isOpened$","_isOpenedTrigger$","writeValue","debounceSafeDefault","isOpened","timer","MatMenuModule","RadioButtonModule","IconComponent","InputModule","NgSelectModule","PipesModule","InputErrorModule","MatProgressSpinnerModule","StopPropagationDirective","TooltipDirectiveModule","bound01","n","isOnePointZero","parseFloat","isPercent","isPercentage","String","abs","clamp01","val","boundAlpha","convertToPercentage","pad2","rgbToHsl","d","hue2rgb","q","rgbToHsv","v","rgbToHex","allow3Char","charAt","convertDecimalToHex","convertHexToDecimal","parseIntFromHex","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","goldenrod","gold","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavenderblush","lavender","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","inputToRGB","ok","format","stringInputToObject","named","match","matchers","exec","rgba","hsla","hsv","hsva","hex8","hex6","hex4","hex3","isValidCSSUnit","rgbToRgb","substr","hsvToRgb","f","mod","hslToRgb","prototype","hasOwnProperty","call","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","Boolean","opts","_a","numberInputToObject","originalInput","roundA","gradientType","isValid","isDark","getBrightness","isLight","toRgb","getLuminance","RsRGB","GsRGB","BsRGB","pow","getAlpha","setAlpha","isMonochrome","toHsl","toHsv","toHsvString","toHslString","toHexString","allow4Char","rgbaToHex","toHex8String","toHexShortString","allowShortChar","toRgbString","toPercentageRgb","fmt","toPercentageRgbString","rnd","toName","_i","entries","_b","formatSet","formattedString","hasAlpha","toNumber","clone","lighten","amount","brighten","darken","tint","mix","shade","desaturate","saturate","greyscale","spin","hue","rgb1","rgb2","analogous","results","slices","part","ret","complement","monochromatic","modification","splitcomplement","onBackground","background","fg","bg","triad","polyad","tetrad","increment","equals","mixinHasStickyInput","base","args","_sticky","_hasStickyChanged","sticky","prevValue","hasStickyChanged","resetStickyChanged","CDK_TABLE","TEXT_COLUMN_OPTIONS","CdkCellDef","CdkHeaderCellDef","CdkFooterCellDef","_CdkColumnDefBase","CdkColumnDefBase","CdkColumnDef","_table","_stickyEnd","_name","_setNameInput","stickyEnd","_updateColumnCssClassName","_columnCssClassName","cssClassFriendlyName","BaseCdkCell","columnDef","CdkHeaderCell","CdkFooterCell","nodeType","tableRole","getAttribute","role","setAttribute","CdkCell","_Schedule","tasks","endTasks","_COALESCED_STYLE_SCHEDULER","_CoalescedStyleScheduler","_currentSchedule","schedule","task","_createScheduleIfNeeded","scheduleEnd","_getScheduleObservable","isStable","from","onStable","CDK_ROW_TEMPLATE","BaseRowDef","_differs","_columnsDiffer","currentValue","diff","getColumnsDiff","extractCellTemplate","column","CdkHeaderRowDef","headerCell","CdkFooterRowDef","footerCell","cell","_CdkHeaderRowDefBase","CdkHeaderRowDefBase","_CdkFooterRowDefBase","CdkFooterRowDefBase","CdkRowDef","CdkCellOutlet","_viewContainer","mostRecentCellOutlet","CdkHeaderRow","CdkFooterRow","CdkRow","CdkNoDataRow","_contentClassName","STICKY_DIRECTIONS","StickyStyler","_isNativeHtmlTable","_stickCellCss","_coalescedStyleScheduler","_isBrowser","_needsPositionStickyOnElement","_positionListener","_cachedCellWidths","_borderCellCss","bottom","clearStickyPositioning","rows","stickyDirections","elementsToClear","row","ELEMENT_NODE","_removeStickyStyle","updateStickyColumns","stickyStartStates","stickyEndStates","recalculateCellWidths","stickyColumnsUpdated","sizes","stickyEndColumnsUpdated","firstRow","numCells","cellWidths","_getCellWidths","startPositions","_getStickyStartColumnPositions","endPositions","_getStickyEndColumnPositions","lastStickyStart","lastIndexOf","firstStickyEnd","isRtl","_addStickyStyle","reverse","stickRows","rowsToStick","stickyStates","states","stickyOffsets","stickyCellHeights","elementsToStick","rowIndex","stickyOffset","getBoundingClientRect","borderedRowIndex","offset","isBorderedRowIndex","_this$_positionListen2","stickyHeaderRowsUpdated","offsets","elements","stickyFooterRowsUpdated","updateStickyFooterContainer","tableElement","tfoot","zIndex","_getCalculatedZIndex","dirValue","isBorderElement","cssText","zIndexIncrements","firstRowCells","widths","positions","nextPosition","STICKY_POSITIONING_LISTENER","CdkRecycleRows","_VIEW_REPEATER_STRATEGY","useClass","_RecycleViewRepeaterStrategy","DataRowOutlet","viewContainer","HeaderRowOutlet","FooterRowOutlet","NoDataRowOutlet","CDK_TABLE_TEMPLATE","CdkTable","_viewRepeater","_viewportRuler","_stickyPositioningListener","_onDestroy","_columnDefsByName","Map","_customColumnDefs","_customRowDefs","_customHeaderRowDefs","_customFooterRowDefs","_headerRowDefChanged","_footerRowDefChanged","_stickyColumnStylesNeedReset","_forceRecalculateCellWidths","_cachedRenderRowsMap","stickyCssClass","needsPositionStickyOnElement","_isShowingNoDataRow","_multiTemplateDataRows","_fixedLayout","contentChanged","viewChange","MAX_VALUE","trackBy","_trackByFn","fn","dataSource","_dataSource","_switchDataSource","multiTemplateDataRows","_rowOutlet","_forceRenderDataRows","updateStickyColumnStyles","fixedLayout","_setupStickyStyler","_applyNativeTableSections","_dataDiffer","dataRow","dataIndex","_cacheRowDefs","_cacheColumnDefs","_headerRowDefs","_footerRowDefs","_rowDefs","rowDefsChanged","_renderUpdatedColumns","_forceRenderHeaderRows","_forceRenderFooterRows","_renderChangeSubscription","_observeRenderChanges","_checkStickyStates","_headerRowOutlet","_footerRowOutlet","def","clear","_defaultRowDef","isDataSource","disconnect","renderRows","_renderRows","_getAllRenderRows","_updateNoDataRow","applyChanges","record","_adjustedPreviousIndex","currentIndex","_getEmbeddedViewArgs","operation","context","_renderCellTemplateForItem","rowDef","_updateRowIndexContext","forEachIdentityChange","$implicit","NgZone","addColumnDef","removeColumnDef","addRowDef","removeRowDef","addHeaderRowDef","headerRowDef","removeHeaderRowDef","addFooterRowDef","footerRowDef","removeFooterRowDef","setNoDataRow","noDataRow","_customNoDataRow","updateStickyHeaderRowStyles","headerRows","_getRenderedRows","thead","_stickyStyler","updateStickyFooterRowStyles","footerRows","dataRows","headerRow","_addStickyColumnStyles","footerRow","prevCachedRenderRows","_data","renderRowsForData","_getRenderRowsForData","set","WeakMap","j","renderRow","cache","_getRowDefs","cachedRenderRows","shift","mergeArrayAndSet","_getOwnDefs","_contentColumnDefs","_contentHeaderRowDefs","_contentFooterRowDefs","_contentRowDefs","defaultRowDefs","when","columnsDiffReducer","acc","dataColumnsChanged","reduce","headerColumnsChanged","footerColumnsChanged","dataStream","connect","isObservable","_renderRow","columnDefs","columnName","rowOutlet","renderedRows","viewRef","rootNodes","rowDefs","outlet","createEmbeddedView","cellTemplate","_getCellTemplates","renderIndex","count","even","odd","columnId","documentFragment","createDocumentFragment","tag","outlets","_noDataRowOutlet","createElement","stickyCheckReducer","items","_noDataRow","shouldShow","rootNode","_DisposeViewRepeaterStrategy","useValue","_c0","CdkTextColumn","_options","justify","_syncColumnDefName","headerText","_createDefaultHeaderText","dataAccessor","defaultDataAccessor","defaultHeaderTextTransform","CdkTableModule","ScrollingModule","_uniqueAutocompleteIdCounter","MatAutocompleteSelectedEvent","option","_MatAutocompleteMixinBase","mixinDisableRipple","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY","autoActiveFirstOption","autoSelectActiveOption","_MatAutocompleteBase","defaults","platform","_activeOptionChanges","showPanel","_isOpen","displayWith","optionSelected","closed","optionActivated","_classList","inertGroups","SAFARI","_autoActiveFirstOption","_autoSelectActiveOption","coerceStringArray","_setVisibilityClasses","ActiveDescendantKeyManager","_setVisibility","_setScrollTop","panel","_getScrollTop","_emitSelectEvent","_getPanelAriaLabelledby","labelId","ariaLabel","labelExpression","ariaLabelledby","_visibleClass","_hiddenClass","viewQuery","MatAutocomplete","MAT_OPTGROUP","MatOption","MAT_OPTION_PARENT_COMPONENT","_MatAutocompleteOriginBase","MatAutocompleteOrigin","MAT_AUTOCOMPLETE_SCROLL_STRATEGY","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","Overlay","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY","overlay","scrollStrategies","reposition","MAT_AUTOCOMPLETE_VALUE_ACCESSOR","MatAutocompleteTrigger","_MatAutocompleteTriggerBase","_overlay","_zone","scrollStrategy","_formField","_defaults","_componentDestroyed","_autocompleteDisabled","_manuallyFloatingLabel","_viewportSubscription","_canOpenOnNextFocus","_closeKeyEventStream","_windowBlurHandler","panelOpen","_onChange","_onTouched","autocompleteAttribute","_overlayAttached","optionSelections","defer","onSelectionChange","_scrollStrategy","autocompleteDisabled","_getWindow","_positionStrategy","_setStrategyPositions","_overlayRef","updatePosition","_destroyPanel","openPanel","_attachOverlay","_floatLabel","closePanel","_resetLabel","_pendingAutoselectedOption","hasAttached","detach","_closingActionsSubscription","panelClosingActions","tabOut","_getOutsideClickStream","detachments","MatOptionSelectionChange","activeOption","activeItem","clickTarget","_getEventTarget","formField","customOrigin","connectedTo","overlayElement","_assignOptionValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","disabled","_handleKeydown","_selectViaInteraction","_resetActiveItem","prevActiveItem","isArrowKey","UP_ARROW","DOWN_ARROW","TAB","_canOpen","_scrollToOption","_valueBeforeAutoSelection","_handleInput","_previousValue","_handleFocus","_handleClick","shouldAnimate","floatLabel","_animateAndLockLabel","_subscribeToClosingActions","firstStable","optionChanges","reapplyLastPosition","delay","wasOpen","_setValueAndClose","dispose","toDisplay","_updateNativeInputValue","_control","toSelect","_clearPreviousSelectedOption","skip","deselect","overlayRef","setOrigin","_getConnectedElement","updateSize","_getPanelWidth","_this$_formField","getLabelId","_getOverlayConfig","_handleOverlayEvents","attach","OverlayConfig","positionStrategy","_getOverlayPosition","panelClass","_this$_defaults","overlayPanelClass","strategy","flexibleConnectedTo","withFlexibleDimensions","withPush","belowPositions","originX","originY","overlayX","overlayY","_aboveClass","abovePositions","withPositions","getConnectedOverlayOrigin","panelWidth","_getHostWidth","setFirstItemActive","defaultView","labelCount","_countGroupLabelsBeforeOption","optionGroups","newScrollPosition","_getOptionScrollPosition","offsetTop","offsetHeight","keydownEvents","outsidePointerEvents","i1$1","MAT_FORM_FIELD","MatAutocompleteModule","OverlayModule","MatOptionModule","MatCardContent","MatCardTitle","MatCardSubtitle","MatCardActions","align","MatCardFooter","MatCardImage","MatCardSmImage","MatCardMdImage","MatCardLgImage","MatCardXlImage","MatCardAvatar","MatCard","MatCardHeader","MatCardTitleGroup","MatCardModule","TileCoordinator","columnIndex","rowCount","rowspan","lastRowMax","tracker","numColumns","tiles","fill","tile","_trackTile","gapStartIndex","_findMatchingGap","colspan","_markTilePosition","TilePosition","tileCols","gapEndIndex","_nextRow","_findGapEndIndex","MAT_GRID_LIST","MatGridTile","_gridList","_rowspan","_colspan","_setStyle","MatGridTileText","setLines","_lines","MatLine","MatGridAvatarCssMatStyler","MatGridTileHeaderCssMatStyler","MatGridTileFooterCssMatStyler","cssCalcAllowedValue","TileStyler","_rows","init","gutterSize","_gutterSize","normalizeUnits","_cols","_direction","getBaseTileSize","sizePercent","gutterFraction","getTilePosition","baseSize","calc","getTileSize","span","setStyle","colIndex","percentWidthPerTile","gutterWidthFractionPerTile","setColStyles","setRowStyles","percentWidth","gutterWidth","baseTileWidth","side","getGutterSpan","getTileSpan","tileHeight","getComputedHeight","FixedTileStyler","fixedRowHeight","_setListStyle","_tiles","RatioTileStyler","_parseRatio","percentHeightPerTile","rowHeightRatio","baseTileHeight","ratioParts","FitTileStyler","gutterHeightPerTile","exp","MatGridList","_gutter","rowHeight","_rowHeight","newValue","_setTileStyler","_checkCols","_checkRowHeight","_layoutTiles","_tileStyler","_tileCoordinator","pos","MatGridListModule","MatLineModule","MAT_SORT_DEFAULT_OPTIONS","_MatSortBase","mixinInitialized","mixinDisabled","MatSort","_defaultOptions","sortables","_stateChanges","sortChange","disableClear","_disableClear","register","sortable","deregister","getNextSortDirection","_this$_defaultOptions","sortDirectionCycle","getSortDirectionCycle","sortOrder","nextDirectionIndex","_markInitialized","SORT_ANIMATION_TRANSITION","AnimationDurations","AnimationCurves","matSortAnimations","indicator","leftPointer","rightPointer","arrowOpacity","opacity","arrowPosition","keyframes","allowChildren","query","animateChild","MatSortHeaderIntl","MAT_SORT_HEADER_INTL_PROVIDER","MAT_SORT_HEADER_INTL_PROVIDER_FACTORY","_MatSortHeaderBase","MatSortHeader","_sort","_columnDef","_ariaDescriber","defaultOptions","_showIndicatorHint","_viewState","_arrowDirection","_disableViewStateAnimation","_sortActionDescription","_handleStateChanges","sortActionDescription","_updateSortActionDescription","_updateArrowDirection","_setAnimationTransitionState","_isSorted","_sortButton","newState","_setIndicatorHintVisible","_rerenderSubscription","visible","_isDisabled","viewState","_toggleOnInteraction","_getArrowDirectionState","_getArrowViewState","_getAriaSortAttribute","_renderArrow","newDescription","removeDescription","describe","attrs","MatSortModule","MatRecycleRows","MatTable","MatCellDef","MatHeaderCellDef","MatFooterCellDef","MatColumnDef","MatHeaderCell","MatFooterCell","MatCell","MatHeaderRowDef","MatFooterRowDef","MatRowDef","MatHeaderRow","MatFooterRow","MatRow","MatNoDataRow","MatTextColumn","MatTableModule","_MatTableDataSource","DataSource","initialData","_renderData","_filter","_internalPageChanges","_renderChangesSubscription","sortHeaderId","_isNumberValue","numberValue","sortData","valueA","valueB","valueAType","valueBType","comparatorResult","filterPredicate","dataStr","keys","currentTerm","transformedFilter","_updateChangeSubscription","_filterData","_paginator","initialized","pageChange","page","filteredData","orderedData","_orderData","paginatedData","_pageData","obj","_updatePaginator","startIndex","pageIndex","pageSize","filteredDataLength","lastPageIndex","newPageIndex","MatTableDataSource","tab_r4","_r0","_r18","ctx_r17","ctx_r19","_MAT_INK_BAR_POSITIONER","_MAT_INK_BAR_POSITIONER_FACTORY","offsetLeft","MatInkBar","_inkBarPositioner","alignToElement","show","inkBar","hide","MAT_TAB_CONTENT","MatTabContent","MAT_TAB_LABEL","MAT_TAB","MatTabLabel","CdkPortal","viewContainerRef","_closestTab","_MatTabBase","MAT_TAB_GROUP","MatTab","_closestTabGroup","textLabel","_contentPortal","templateLabel","_setTemplateLabelInput","_explicitContent","_implicitContent","matTabsAnimations","translateTab","minHeight","MatTabBodyPortal","CdkPortalOutlet","componentFactoryResolver","_host","_centeringSub","_leavingSub","_beforeCentering","_isCenterPosition","isCentering","_afterLeavingCenter","preserveContent","MatTabBody","_MatTabBodyBase","_dirChangeSubscription","_translateTabComplete","_onCentering","_onCentered","_computePositionAnimationState","_positionIndex","_computePositionFromOrigin","_onTranslateTabStarted","_getLayoutDirection","MAT_TABS_CONFIG","_MatTabLabelWrapperBase","MatTabLabelWrapper","getOffsetLeft","getOffsetWidth","passiveEventListenerOptions","normalizePassiveListenerOptions","passive","MatPaginatedTabHeader","_scrollDistance","_selectedIndexChanged","_showPaginationControls","_disableScrollAfter","_disableScrollBefore","_stopScrolling","_disablePagination","selectFocusedIndex","indexFocused","_stopInterval","disablePagination","_previousPaginator","_handlePaginatorPress","_nextPaginator","dirChange","resize","realign","updatePagination","_alignInkBarToSelectedTab","_items","_itemsResized","_getMaxScrollDistance","newFocusIndex","_setTabFocus","ResizeObserver","EMPTY","tabItems","Observable","observer","resizeObserver","observe","contentRect","_tabLabelCount","_scrollToLabel","_checkScrollingControls","_scrollDistanceChanged","_updateTabScrollPosition","focusIndex","_itemSelected","_onContentChanges","textContent","_currentTextContent","_checkPaginationEnabled","tab","containerEl","_tabListContainer","scrollLeft","scrollWidth","scrollDistance","translateX","_tabList","TRIDENT","EDGE","_scrollTo","_scrollHeader","scrollAmount","_handlePaginatorClick","labelIndex","selectedLabel","viewLength","labelBeforePos","labelAfterPos","_tabListInner","beforeVisiblePos","afterVisiblePos","isEnabled","selectedItem","selectedLabelWrapper","_inkBar","mouseEvent","button","maxScrollDistance","distance","_MatTabHeaderBase","animationMode","_disableRipple","disableRipple","MatTabHeader","_c3","_c5","_c6","_c7","MatTabChangeEvent","_MatTabGroupMixinBase","_MatTabGroupBase","defaultConfig","_tabs","_indexToSelect","_lastFocusedTabIndex","_tabBodyWrapperHeight","_tabsSubscription","_tabLabelSubscription","_dynamicHeight","_preserveContent","selectedIndexChange","focusChange","selectedTabChange","dynamicHeight","contentTabIndex","_contentTabIndex","_backgroundColor","indexToSelect","_clampTabIndex","isFirstRun","_createChangeEvent","wrapper","_tabBodyWrapper","_subscribeToAllTabChanges","_subscribeToTabLabels","selectedTab","_allTabs","realignInkBar","_tabHeader","focusTab","header","_focusChanged","_getTabLabelId","_getTabContentId","_setTabBodyWrapperHeight","tabHeight","_removeTabBodyWrapperHeight","tabHeader","_getTabIndex","_tabFocusChanged","MatTabGroup","_c8","_c9","i1$2","i7","nextUniqueId","_MatTabNavBase","updateActiveLink","tabPanel","_activeTabId","_getRole","MatTabNav","MatTabLink","_MatTabLinkMixinBase","mixinTabIndex","_MatTabLinkBase","_tabNavBar","globalRippleOptions","_isActive","rippleConfig","animation","enterDuration","exitDuration","rippleDisabled","click","_getAriaControls","_this$_tabNavBar$tabP","_getAriaSelected","_getAriaCurrent","MAT_RIPPLE_GLOBAL_OPTIONS","tabNavBar","focusMonitor","_tabLinkRipple","RippleRenderer","setupTriggerEvents","_removeTriggerEvents","MatTabNavPanel","MatTabsModule","ObserversModule","A11yModule","checkboardCache","getCheckerboard","c1","c2","size","checkboard","render","canvas","getContext","fillStyle","fillRect","translate","toDataURL","CheckboardComponent","gridStyles","CoordinatesDirective","coordinatesChange","mousechange","mouseListening","mousemove","isTouch","mouseup","mousedown","sub","containerWidth","clientWidth","containerHeight","pageXOffset","pageYOffset","clientX","clientY","CoordinatesModule","AlphaComponent","pointerLeft","pointerTop","gradient","simpleCheckForValidColor","passed","keysToCheck","letter","oldHue","ColorMode","HEX","HSL","HSV","RGB","colorChange","onChangeComplete","onSwatchHover","_onChangeCompleteSubscription","_onSwatchHoverSubscription","msg","isDevMode","Error","console","warn","setState","currentColor","handleSwatchHover","ColorWrapModule","EditableInputComponent","placeholder","uniqueId","wrapStyle","wrap","inputStyle","labelStyle","dragLabel","cursor","handleFocus","handleFocusOut","blurValue","handleKeydown","stringValue","num","arrowOffset","handleKeyup","ev","handleDrag","handleMousedown","movementX","dragMax","HueComponent","hidePointer","RaisedComponent","zDepth","radius","RaisedModule","SaturationComponent","saturation","bright","SwatchComponent","focusStyle","onClick","onHover","divStyles","focusStyles","inFocus","currentStyles","handleHover","handleClick","SwatchModule","ShadeComponent","ShadeModule"],"sourceRoot":"webpack:///","sources":["./node_modules/@angular/material/fesm2020/sidenav.mjs","./node_modules/@angular/cdk/fesm2020/stepper.mjs","./node_modules/@angular/material/fesm2020/stepper.mjs","./node_modules/@angular/material/fesm2020/toolbar.mjs","./src/app/modules/ui-components/components/idle-time/idle-time.module.ts","./src/app/modules/ui-components/components/notification-ring/components/notification-ring-item/notification-ring-item.module.ts","./src/app/modules/ui-components/components/notification-ring/notification-ring.module.ts","./src/app/services/side-panel.service.ts","./src/app/modules/shared/constants/package-type-list.const.ts","./src/app/modules/main-application/application-menu/side-panel-section-item/side-panel-section-item.component.html","./src/app/modules/main-application/application-menu/side-panel-section-item/side-panel-section-item.component.ts","./src/app/modules/main-application/application-menu/side-panel-section/side-panel-section.component.html","./src/app/modules/main-application/application-menu/side-panel-section/side-panel-section.component.ts","./src/app/modules/main-application/application-menu/side-panel/side-panel.component.html","./src/app/modules/main-application/application-menu/side-panel/side-panel.component.ts","./src/app/modules/shared/enums/entity-type.ts","./src/app/modules/shared/constants/entity-type-list.const.ts","./src/app/modules/ui-components/components/notification-ring/components/notification-ring-item/notification-ring-item.component.html","./src/app/modules/ui-components/components/notification-ring/components/notification-ring-item/notification-ring-item.component.ts","./src/app/modules/ui-components/components/notification-ring/notification-ring.component.html","./src/app/modules/ui-components/components/notification-ring/notification-ring.component.ts","./src/app/modules/main-application/application-menu/breadcrumb-item/breadcrumb-item.component.ts","./src/app/modules/main-application/application-menu/breadcrumb-item/breadcrumb-item.component.html","./src/app/modules/main-application/application-menu/top-panel/top-panel.component.html","./src/app/modules/main-application/application-menu/top-panel/top-panel.component.ts","./src/app/modules/main-application/application-menu/application-menu.component.html","./src/app/modules/main-application/application-menu/application-menu.component.ts","./src/app/modules/main-application/application-menu/application-menu.routing.module.ts","./src/app/modules/main-application/application-menu/application-menu.module.ts","./src/app/modules/main-application/application-menu/application-menu.service.ts","./src/app/modules/main-application/application-menu/property-selector/property-selector-all.component.html","./src/app/modules/main-application/application-menu/property-selector/property-selector-all.component.ts","./src/app/modules/main-application/boards/boards-create/boards-create.ts","./src/app/modules/shared/directives/scroll.directive.ts","./src/app/modules/main-application/boards/boards-create/boards-create.component.html","./src/app/modules/main-application/boards/boards-create/boards-create.component.ts","./src/app/modules/main-application/dashboard-roles/components/abstract/dashboards.abstract.ts","./src/app/modules/main-application/dashboard-roles/components/dashboard-user-header/dashboard-user-header.component.html","./src/app/modules/main-application/dashboard-roles/components/dashboard-user-header/dashboard-user-header.component.ts","./src/app/modules/main-application/dashboard-roles/store/selectors/dashboard-filter.selectors.ts","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/config/enums/unit-details-component-form.ts","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/abstract/unit-details.abstract.ts","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/components/unit-details-pictures-section/unit-details-pictures-section.component.ts","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/components/unit-details-pictures-section/unit-details-pictures-section.component.html","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/components/unit-details-property-section/unit-details-property-section.component.html","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/components/unit-details-property-section/unit-details-property-section.component.ts","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/components/unit-details-description-section/unit-details-description-section.component.html","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/components/unit-details-description-section/unit-details-description-section.component.ts","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/components/unit-details-inspections/unit-details-inspections.component.html","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/components/unit-details-inspections/unit-details-inspections.component.ts","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/unit-details.component.html","./src/app/modules/main-application/management/pages/portfolio/components/unit-details/unit-details.component.ts","./src/app/modules/main-application/store/selectors/route-state.selector.ts","./src/app/modules/shared/constants/boolean-list.const.ts","./src/app/modules/shared/constants/move-out-type-list.const.ts","./src/app/modules/shared/constants/side-panel-config.const.ts","./src/app/modules/shared/enums/move-out-type.enum.ts","./src/app/modules/shared/enums/notification-category.ts","./src/app/modules/shared/functions/check-user-email-domain.ts","./src/app/modules/shared/guards/home-redirect.guard.ts","./src/app/modules/shared/guards/package-level.guard.ts","./src/app/modules/shared/services/simple-scroll.service.ts","./src/app/modules/shared/utils/forms/is-control-invalid.ts","./src/app/modules/shared/validators/digits.validator.ts","./src/app/modules/ui-components/components/avatar/avatar.component.html","./src/app/modules/ui-components/components/avatar/avatar.component.ts","./src/app/modules/ui-components/components/avatar/avatar.module.ts","./src/app/modules/ui-components/components/avatar/services/avatar.service.ts","./src/app/modules/shared/functions/get-random-value.function.ts","./src/app/modules/ui-components/components/dashboard-container/dashboard-container.component.html","./src/app/modules/ui-components/components/dashboard-container/dashboard-container.component.ts","./src/app/modules/ui-components/components/empty-dashboard/empty-dashboard.component.html","./src/app/modules/ui-components/components/empty-dashboard/empty-dashboard.component.ts","./src/app/modules/ui-components/components/empty-data/empty-data.component.ts","./src/app/modules/ui-components/components/empty-data/empty-data.component.html","./src/app/modules/ui-components/components/picture/picture.component.html","./src/app/modules/ui-components/components/picture/picture.component.ts","./src/app/modules/ui-components/components/search-input/search-input.module.ts","./node_modules/ngx-color/fesm2020/ngx-color-chrome.mjs","./src/app/modules/shared/directives/click-outside.directive.ts","./src/app/modules/ui-components/controls/custom-color-picker/custom-color-picker.component.html","./src/app/modules/ui-components/controls/custom-color-picker/custom-color-picker.component.ts","./node_modules/@ctrl/tinycolor/dist/module/util.js","./node_modules/@ctrl/tinycolor/dist/module/conversion.js","./node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","./node_modules/@ctrl/tinycolor/dist/module/format-input.js","./node_modules/@ctrl/tinycolor/dist/module/index.js","./node_modules/@angular/cdk/fesm2020/table.mjs","./node_modules/@angular/material/fesm2020/autocomplete.mjs","./node_modules/@angular/material/fesm2020/card.mjs","./node_modules/@angular/material/fesm2020/grid-list.mjs","./node_modules/@angular/material/fesm2020/sort.mjs","./node_modules/@angular/material/fesm2020/table.mjs","./node_modules/@angular/material/fesm2020/tabs.mjs","./node_modules/ngx-color/fesm2020/ngx-color.mjs"],"sourcesContent":["import * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollable, CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i5 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, EventEmitter, Optional, Input, Output, ViewChild, QueryList, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport * as i2 from '@angular/cdk/a11y';\nimport * as i4 from '@angular/cdk/bidi';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport * as i3 from '@angular/cdk/platform';\nimport { Subject, fromEvent, merge } from 'rxjs';\nimport { filter, map, mapTo, takeUntil, distinctUntilChanged, take, startWith, debounceTime } from 'rxjs/operators';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\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 Material drawers.\n * @docs-private\n */\nconst matDrawerAnimations = {\n /** Animation that slides a drawer in and out. */\n transformDrawer: trigger('transform', [\n // We remove the `transform` here completely, rather than setting it to zero, because:\n // 1. Having a transform can cause elements with ripples or an animated\n // transform to shift around in Chrome with an RTL layout (see #10023).\n // 2. 3d transforms causes text to appear blurry on IE and Edge.\n state('open, open-instant', style({\n 'transform': 'none',\n 'visibility': 'visible',\n })),\n state('void', style({\n // Avoids the shadow showing up when closed in SSR.\n 'box-shadow': 'none',\n 'visibility': 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')),\n ]),\n};\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nfunction throwMatDuplicatedDrawerError(position) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n/** Configures whether drawers should use auto sizing by default. */\nconst MAT_DRAWER_DEFAULT_AUTOSIZE = new InjectionToken('MAT_DRAWER_DEFAULT_AUTOSIZE', {\n providedIn: 'root',\n factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,\n});\n/**\n * Used to provide a drawer container to a drawer while avoiding circular references.\n * @docs-private\n */\nconst MAT_DRAWER_CONTAINER = new InjectionToken('MAT_DRAWER_CONTAINER');\n/** @docs-private */\nfunction MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY() {\n return false;\n}\nclass MatDrawerContent extends CdkScrollable {\n constructor(_changeDetectorRef, _container, elementRef, scrollDispatcher, ngZone) {\n super(elementRef, scrollDispatcher, ngZone);\n this._changeDetectorRef = _changeDetectorRef;\n this._container = _container;\n }\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\nMatDrawerContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatDrawerContent, deps: [{ token: i0.ChangeDetectorRef }, { token: forwardRef(() => MatDrawerContainer) }, { token: i0.ElementRef }, { token: i1.ScrollDispatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nMatDrawerContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatDrawerContent, selector: \"mat-drawer-content\", host: { properties: { \"style.margin-left.px\": \"_container._contentMargins.left\", \"style.margin-right.px\": \"_container._contentMargins.right\" }, classAttribute: \"mat-drawer-content\" }, providers: [\n {\n provide: CdkScrollable,\n useExisting: MatDrawerContent,\n },\n ], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatDrawerContent, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-drawer-content',\n template: '',\n host: {\n 'class': 'mat-drawer-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: CdkScrollable,\n useExisting: MatDrawerContent,\n },\n ],\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: MatDrawerContainer, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatDrawerContainer)]\n }] }, { type: i0.ElementRef }, { type: i1.ScrollDispatcher }, { type: i0.NgZone }]; } });\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\nclass MatDrawer {\n constructor(_elementRef, _focusTrapFactory, _focusMonitor, _platform, _ngZone, _interactivityChecker, _doc, _container) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this._focusMonitor = _focusMonitor;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._interactivityChecker = _interactivityChecker;\n this._doc = _doc;\n this._container = _container;\n this._elementFocusedBeforeDrawerWasOpened = null;\n /** Whether the drawer is initialized. Used for disabling the initial animation. */\n this._enableAnimations = false;\n this._position = 'start';\n this._mode = 'over';\n this._disableClose = false;\n this._opened = false;\n /** Emits whenever the drawer has started animating. */\n this._animationStarted = new Subject();\n /** Emits whenever the drawer is done animating. */\n this._animationEnd = new Subject();\n /** Current state of the sidenav animation. */\n this._animationState = 'void';\n /** Event emitted when the drawer open state is changed. */\n this.openedChange = \n // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n new EventEmitter(/* isAsync */ true);\n /** Event emitted when the drawer has been opened. */\n this._openedStream = this.openedChange.pipe(filter(o => o), map(() => { }));\n /** Event emitted when the drawer has started opening. */\n this.openedStart = this._animationStarted.pipe(filter(e => e.fromState !== e.toState && e.toState.indexOf('open') === 0), mapTo(undefined));\n /** Event emitted when the drawer has been closed. */\n this._closedStream = this.openedChange.pipe(filter(o => !o), map(() => { }));\n /** Event emitted when the drawer has started closing. */\n this.closedStart = this._animationStarted.pipe(filter(e => e.fromState !== e.toState && e.toState === 'void'), mapTo(undefined));\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Event emitted when the drawer's position changes. */\n // tslint:disable-next-line:no-output-on-prefix\n this.onPositionChanged = new EventEmitter();\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n this._modeChanged = new Subject();\n this.openedChange.subscribe((opened) => {\n if (opened) {\n if (this._doc) {\n this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement;\n }\n this._takeFocus();\n }\n else if (this._isFocusWithinDrawer()) {\n this._restoreFocus(this._openedVia || 'program');\n }\n });\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n * and we don't have close disabled.\n */\n this._ngZone.runOutsideAngular(() => {\n fromEvent(this._elementRef.nativeElement, 'keydown')\n .pipe(filter(event => {\n return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n }), takeUntil(this._destroyed))\n .subscribe(event => this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n event.preventDefault();\n }));\n });\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._animationEnd\n .pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n }))\n .subscribe((event) => {\n const { fromState, toState } = event;\n if ((toState.indexOf('open') === 0 && fromState === 'void') ||\n (toState === 'void' && fromState.indexOf('open') === 0)) {\n this.openedChange.emit(this._opened);\n }\n });\n }\n /** The side that the drawer is attached to. */\n get position() {\n return this._position;\n }\n set position(value) {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value !== this._position) {\n // Static inputs in Ivy are set before the element is in the DOM.\n if (this._isAttached) {\n this._updatePositionInParent(value);\n }\n this._position = value;\n this.onPositionChanged.emit();\n }\n }\n /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n get mode() {\n return this._mode;\n }\n set mode(value) {\n this._mode = value;\n this._updateFocusTrapState();\n this._modeChanged.next();\n }\n /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n get disableClose() {\n return this._disableClose;\n }\n set disableClose(value) {\n this._disableClose = coerceBooleanProperty(value);\n }\n /**\n * Whether the drawer should focus the first focusable element automatically when opened.\n * Defaults to false in when `mode` is set to `side`, otherwise defaults to `true`. If explicitly\n * enabled, focus will be moved into the sidenav in `side` mode as well.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or AutoFocusTarget\n * instead.\n */\n get autoFocus() {\n const value = this._autoFocus;\n // Note that usually we don't allow autoFocus to be set to `first-tabbable` in `side` mode,\n // because we don't know how the sidenav is being used, but in some cases it still makes\n // sense to do it. The consumer can explicitly set `autoFocus`.\n if (value == null) {\n if (this.mode === 'side') {\n return 'dialog';\n }\n else {\n return 'first-tabbable';\n }\n }\n return value;\n }\n set autoFocus(value) {\n if (value === 'true' || value === 'false' || value == null) {\n value = coerceBooleanProperty(value);\n }\n this._autoFocus = value;\n }\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n */\n get opened() {\n return this._opened;\n }\n set opened(value) {\n this.toggle(coerceBooleanProperty(value));\n }\n /**\n * Focuses the provided element. If the element is not focusable, it will add a tabIndex\n * attribute to forcefully focus it. The attribute is removed after focus is moved.\n * @param element The element to focus.\n */\n _forceFocus(element, options) {\n if (!this._interactivityChecker.isFocusable(element)) {\n element.tabIndex = -1;\n // The tabindex attribute should be removed to avoid navigating to that element again\n this._ngZone.runOutsideAngular(() => {\n const callback = () => {\n element.removeEventListener('blur', callback);\n element.removeEventListener('mousedown', callback);\n element.removeAttribute('tabindex');\n };\n element.addEventListener('blur', callback);\n element.addEventListener('mousedown', callback);\n });\n }\n element.focus(options);\n }\n /**\n * Focuses the first element that matches the given selector within the focus trap.\n * @param selector The CSS selector for the element to set focus to.\n */\n _focusByCssSelector(selector, options) {\n let elementToFocus = this._elementRef.nativeElement.querySelector(selector);\n if (elementToFocus) {\n this._forceFocus(elementToFocus, options);\n }\n }\n /**\n * Moves focus into the drawer. Note that this works even if\n * the focus trap is disabled in `side` mode.\n */\n _takeFocus() {\n if (!this._focusTrap) {\n return;\n }\n const element = this._elementRef.nativeElement;\n // When autoFocus is not on the sidenav, if the element cannot be focused or does\n // not exist, focus the sidenav itself so the keyboard navigation still works.\n // We need to check that `focus` is a function due to Universal.\n switch (this.autoFocus) {\n case false:\n case 'dialog':\n return;\n case true:\n case 'first-tabbable':\n this._focusTrap.focusInitialElementWhenReady().then(hasMovedFocus => {\n if (!hasMovedFocus && typeof this._elementRef.nativeElement.focus === 'function') {\n element.focus();\n }\n });\n break;\n case 'first-heading':\n this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');\n break;\n default:\n this._focusByCssSelector(this.autoFocus);\n break;\n }\n }\n /**\n * Restores focus to the element that was originally focused when the drawer opened.\n * If no element was focused at that time, the focus will be restored to the drawer.\n */\n _restoreFocus(focusOrigin) {\n if (this.autoFocus === 'dialog') {\n return;\n }\n if (this._elementFocusedBeforeDrawerWasOpened) {\n this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, focusOrigin);\n }\n else {\n this._elementRef.nativeElement.blur();\n }\n this._elementFocusedBeforeDrawerWasOpened = null;\n }\n /** Whether focus is currently within the drawer. */\n _isFocusWithinDrawer() {\n const activeEl = this._doc.activeElement;\n return !!activeEl && this._elementRef.nativeElement.contains(activeEl);\n }\n ngAfterViewInit() {\n this._isAttached = true;\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._updateFocusTrapState();\n // Only update the DOM position when the sidenav is positioned at\n // the end since we project the sidenav before the content by default.\n if (this._position === 'end') {\n this._updatePositionInParent('end');\n }\n }\n ngAfterContentChecked() {\n // Enable the animations after the lifecycle hooks have run, in order to avoid animating\n // drawers that are open by default. When we're on the server, we shouldn't enable the\n // animations, because we don't want the drawer to animate the first time the user sees\n // the page.\n if (this._platform.isBrowser) {\n this._enableAnimations = true;\n }\n }\n ngOnDestroy() {\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n this._anchor?.remove();\n this._anchor = null;\n this._animationStarted.complete();\n this._animationEnd.complete();\n this._modeChanged.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Open the drawer.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n open(openedVia) {\n return this.toggle(true, openedVia);\n }\n /** Close the drawer. */\n close() {\n return this.toggle(false);\n }\n /** Closes the drawer with context that the backdrop was clicked. */\n _closeViaBackdropClick() {\n // If the drawer is closed upon a backdrop click, we always want to restore focus. We\n // don't need to check whether focus is currently in the drawer, as clicking on the\n // backdrop causes blurs the active element.\n return this._setOpen(/* isOpen */ false, /* restoreFocus */ true, 'mouse');\n }\n /**\n * Toggle this drawer.\n * @param isOpen Whether the drawer should be open.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n toggle(isOpen = !this.opened, openedVia) {\n // If the focus is currently inside the drawer content and we are closing the drawer,\n // restore the focus to the initially focused element (when the drawer opened).\n if (isOpen && openedVia) {\n this._openedVia = openedVia;\n }\n const result = this._setOpen(isOpen, \n /* restoreFocus */ !isOpen && this._isFocusWithinDrawer(), this._openedVia || 'program');\n if (!isOpen) {\n this._openedVia = null;\n }\n return result;\n }\n /**\n * Toggles the opened state of the drawer.\n * @param isOpen Whether the drawer should open or close.\n * @param restoreFocus Whether focus should be restored on close.\n * @param focusOrigin Origin to use when restoring focus.\n */\n _setOpen(isOpen, restoreFocus, focusOrigin) {\n this._opened = isOpen;\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n }\n else {\n this._animationState = 'void';\n if (restoreFocus) {\n this._restoreFocus(focusOrigin);\n }\n }\n this._updateFocusTrapState();\n return new Promise(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n });\n }\n _getWidth() {\n return this._elementRef.nativeElement ? this._elementRef.nativeElement.offsetWidth || 0 : 0;\n }\n /** Updates the enabled state of the focus trap. */\n _updateFocusTrapState() {\n if (this._focusTrap) {\n // The focus trap is only enabled when the drawer is open in any mode other than side.\n this._focusTrap.enabled = this.opened && this.mode !== 'side';\n }\n }\n /**\n * Updates the position of the drawer in the DOM. We need to move the element around ourselves\n * when it's in the `end` position so that it comes after the content and the visual order\n * matches the tab order. We also need to be able to move it back to `start` if the sidenav\n * started off as `end` and was changed to `start`.\n */\n _updatePositionInParent(newPosition) {\n const element = this._elementRef.nativeElement;\n const parent = element.parentNode;\n if (newPosition === 'end') {\n if (!this._anchor) {\n this._anchor = this._doc.createComment('mat-drawer-anchor');\n parent.insertBefore(this._anchor, element);\n }\n parent.appendChild(element);\n }\n else if (this._anchor) {\n this._anchor.parentNode.insertBefore(element, this._anchor);\n }\n }\n}\nMatDrawer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatDrawer, deps: [{ token: i0.ElementRef }, { token: i2.FocusTrapFactory }, { token: i2.FocusMonitor }, { token: i3.Platform }, { token: i0.NgZone }, { token: i2.InteractivityChecker }, { token: DOCUMENT, optional: true }, { token: MAT_DRAWER_CONTAINER, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatDrawer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatDrawer, selector: \"mat-drawer\", inputs: { position: \"position\", mode: \"mode\", disableClose: \"disableClose\", autoFocus: \"autoFocus\", opened: \"opened\" }, outputs: { openedChange: \"openedChange\", _openedStream: \"opened\", openedStart: \"openedStart\", _closedStream: \"closed\", closedStart: \"closedStart\", onPositionChanged: \"positionChanged\" }, host: { attributes: { \"tabIndex\": \"-1\" }, listeners: { \"@transform.start\": \"_animationStarted.next($event)\", \"@transform.done\": \"_animationEnd.next($event)\" }, properties: { \"attr.align\": \"null\", \"class.mat-drawer-end\": \"position === \\\"end\\\"\", \"class.mat-drawer-over\": \"mode === \\\"over\\\"\", \"class.mat-drawer-push\": \"mode === \\\"push\\\"\", \"class.mat-drawer-side\": \"mode === \\\"side\\\"\", \"class.mat-drawer-opened\": \"opened\", \"@transform\": \"_animationState\" }, classAttribute: \"mat-drawer\" }, viewQueries: [{ propertyName: \"_content\", first: true, predicate: [\"content\"], descendants: true }], exportAs: [\"matDrawer\"], ngImport: i0, template: \"
\\r\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.FocusTrapFactory }, { type: i2.FocusMonitor }, { type: i3.Platform }, { type: i0.NgZone }, { type: i2.InteractivityChecker }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: MatDrawerContainer, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DRAWER_CONTAINER]\n }] }]; }, propDecorators: { position: [{\n type: Input\n }], mode: [{\n type: Input\n }], disableClose: [{\n type: Input\n }], autoFocus: [{\n type: Input\n }], opened: [{\n type: Input\n }], openedChange: [{\n type: Output\n }], _openedStream: [{\n type: Output,\n args: ['opened']\n }], openedStart: [{\n type: Output\n }], _closedStream: [{\n type: Output,\n args: ['closed']\n }], closedStart: [{\n type: Output\n }], onPositionChanged: [{\n type: Output,\n args: ['positionChanged']\n }], _content: [{\n type: ViewChild,\n args: ['content']\n }] } });\n/**\n * `` component.\n *\n * This is the parent component to one or two ``s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\nclass MatDrawerContainer {\n constructor(_dir, _element, _ngZone, _changeDetectorRef, viewportRuler, defaultAutosize = false, _animationMode) {\n this._dir = _dir;\n this._element = _element;\n this._ngZone = _ngZone;\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n /** Drawers that belong to this container. */\n this._drawers = new QueryList();\n /** Event emitted when the drawer backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n this._doCheckSubject = new Subject();\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n this._contentMargins = { left: null, right: null };\n this._contentMarginChanges = new Subject();\n // If a `Dir` directive exists up the tree, listen direction changes\n // and update the left/right properties to point to the proper start/end.\n if (_dir) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._validateDrawers();\n this.updateContentMargins();\n });\n }\n // Since the minimum width of the sidenav depends on the viewport width,\n // we need to recompute the margins if the viewport changes.\n viewportRuler\n .change()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.updateContentMargins());\n this._autosize = defaultAutosize;\n }\n /** The drawer child with the `start` position. */\n get start() {\n return this._start;\n }\n /** The drawer child with the `end` position. */\n get end() {\n return this._end;\n }\n /**\n * Whether to automatically resize the container whenever\n * the size of any of its drawers changes.\n *\n * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n * the drawers on every change detection cycle. Can be configured globally via the\n * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n */\n get autosize() {\n return this._autosize;\n }\n set autosize(value) {\n this._autosize = coerceBooleanProperty(value);\n }\n /**\n * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n * mode as well.\n */\n get hasBackdrop() {\n if (this._backdropOverride == null) {\n return !this._start || this._start.mode !== 'side' || !this._end || this._end.mode !== 'side';\n }\n return this._backdropOverride;\n }\n set hasBackdrop(value) {\n this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n }\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n get scrollable() {\n return this._userContent || this._content;\n }\n ngAfterContentInit() {\n this._allDrawers.changes\n .pipe(startWith(this._allDrawers), takeUntil(this._destroyed))\n .subscribe((drawer) => {\n this._drawers.reset(drawer.filter(item => !item._container || item._container === this));\n this._drawers.notifyOnChanges();\n });\n this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n this._validateDrawers();\n this._drawers.forEach((drawer) => {\n this._watchDrawerToggle(drawer);\n this._watchDrawerPosition(drawer);\n this._watchDrawerMode(drawer);\n });\n if (!this._drawers.length ||\n this._isDrawerOpen(this._start) ||\n this._isDrawerOpen(this._end)) {\n this.updateContentMargins();\n }\n this._changeDetectorRef.markForCheck();\n });\n // Avoid hitting the NgZone through the debounce timeout.\n this._ngZone.runOutsideAngular(() => {\n this._doCheckSubject\n .pipe(debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n takeUntil(this._destroyed))\n .subscribe(() => this.updateContentMargins());\n });\n }\n ngOnDestroy() {\n this._contentMarginChanges.complete();\n this._doCheckSubject.complete();\n this._drawers.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Calls `open` of both start and end drawers */\n open() {\n this._drawers.forEach(drawer => drawer.open());\n }\n /** Calls `close` of both start and end drawers */\n close() {\n this._drawers.forEach(drawer => drawer.close());\n }\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n */\n updateContentMargins() {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n let left = 0;\n let right = 0;\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._getWidth();\n }\n else if (this._left.mode == 'push') {\n const width = this._left._getWidth();\n left += width;\n right -= width;\n }\n }\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._getWidth();\n }\n else if (this._right.mode == 'push') {\n const width = this._right._getWidth();\n right += width;\n left -= width;\n }\n }\n // If either `right` or `left` is zero, don't set a style to the element. This\n // allows users to specify a custom size via CSS class in SSR scenarios where the\n // measured widths will always be zero. Note that we reset to `null` here, rather\n // than below, in order to ensure that the types in the `if` below are consistent.\n left = left || null;\n right = right || null;\n if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n this._contentMargins = { left, right };\n // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n // to do it only when something changed, otherwise we can end up hitting the zone too often.\n this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n }\n }\n ngDoCheck() {\n // If users opted into autosizing, do a check every change detection cycle.\n if (this._autosize && this._isPushed()) {\n // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n }\n }\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n */\n _watchDrawerToggle(drawer) {\n drawer._animationStarted\n .pipe(filter((event) => event.fromState !== event.toState), takeUntil(this._drawers.changes))\n .subscribe((event) => {\n // Set the transition class on the container so that the animations occur. This should not\n // be set initially because animations should only be triggered via a change in state.\n if (event.toState !== 'open-instant' && this._animationMode !== 'NoopAnimations') {\n this._element.nativeElement.classList.add('mat-drawer-transition');\n }\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n if (drawer.mode !== 'side') {\n drawer.openedChange\n .pipe(takeUntil(this._drawers.changes))\n .subscribe(() => this._setContainerClass(drawer.opened));\n }\n }\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n */\n _watchDrawerPosition(drawer) {\n if (!drawer) {\n return;\n }\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n this._validateDrawers();\n });\n });\n }\n /** Subscribes to changes in drawer mode so we can run change detection. */\n _watchDrawerMode(drawer) {\n if (drawer) {\n drawer._modeChanged\n .pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n .subscribe(() => {\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n _setContainerClass(isAdd) {\n const classList = this._element.nativeElement.classList;\n const className = 'mat-drawer-container-has-open';\n if (isAdd) {\n classList.add(className);\n }\n else {\n classList.remove(className);\n }\n }\n /** Validate the state of the drawer children components. */\n _validateDrawers() {\n this._start = this._end = null;\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(drawer => {\n if (drawer.position == 'end') {\n if (this._end != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDuplicatedDrawerError('end');\n }\n this._end = drawer;\n }\n else {\n if (this._start != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDuplicatedDrawerError('start');\n }\n this._start = drawer;\n }\n });\n this._right = this._left = null;\n // Detect if we're LTR or RTL.\n if (this._dir && this._dir.value === 'rtl') {\n this._left = this._end;\n this._right = this._start;\n }\n else {\n this._left = this._start;\n this._right = this._end;\n }\n }\n /** Whether the container is being pushed to the side by one of the drawers. */\n _isPushed() {\n return ((this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n (this._isDrawerOpen(this._end) && this._end.mode != 'over'));\n }\n _onBackdropClicked() {\n this.backdropClick.emit();\n this._closeModalDrawersViaBackdrop();\n }\n _closeModalDrawersViaBackdrop() {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(drawer => drawer && !drawer.disableClose && this._canHaveBackdrop(drawer))\n .forEach(drawer => drawer._closeViaBackdropClick());\n }\n _isShowingBackdrop() {\n return ((this._isDrawerOpen(this._start) && this._canHaveBackdrop(this._start)) ||\n (this._isDrawerOpen(this._end) && this._canHaveBackdrop(this._end)));\n }\n _canHaveBackdrop(drawer) {\n return drawer.mode !== 'side' || !!this._backdropOverride;\n }\n _isDrawerOpen(drawer) {\n return drawer != null && drawer.opened;\n }\n}\nMatDrawerContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatDrawerContainer, deps: [{ token: i4.Directionality, optional: true }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1.ViewportRuler }, { token: MAT_DRAWER_DEFAULT_AUTOSIZE }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatDrawerContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatDrawerContainer, selector: \"mat-drawer-container\", inputs: { autosize: \"autosize\", hasBackdrop: \"hasBackdrop\" }, outputs: { backdropClick: \"backdropClick\" }, host: { properties: { \"class.mat-drawer-container-explicit-backdrop\": \"_backdropOverride\" }, classAttribute: \"mat-drawer-container\" }, providers: [\n {\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatDrawerContainer,\n },\n ], queries: [{ propertyName: \"_content\", first: true, predicate: MatDrawerContent, descendants: true }, { propertyName: \"_allDrawers\", predicate: MatDrawer, descendants: true }], viewQueries: [{ propertyName: \"_userContent\", first: true, predicate: MatDrawerContent, descendants: true }], exportAs: [\"matDrawerContainer\"], ngImport: i0, template: \"\\n\\n\\n\\n\\n\\n\\n \\n\\n\", styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer{transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*=\\\"visibility: hidden\\\"]{display:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}\"], dependencies: [{ kind: \"directive\", type: i5.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: MatDrawerContent, selector: \"mat-drawer-content\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatDrawerContainer, decorators: [{\n type: Component,\n args: [{ selector: 'mat-drawer-container', exportAs: 'matDrawerContainer', host: {\n 'class': 'mat-drawer-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n {\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatDrawerContainer,\n },\n ], template: \"\\n\\n\\n\\n\\n\\n\\n \\n\\n\", styles: [\".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer{transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*=\\\"visibility: hidden\\\"]{display:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}\"] }]\n }], ctorParameters: function () { return [{ type: i4.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1.ViewportRuler }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DRAWER_DEFAULT_AUTOSIZE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { _allDrawers: [{\n type: ContentChildren,\n args: [MatDrawer, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }], _content: [{\n type: ContentChild,\n args: [MatDrawerContent]\n }], _userContent: [{\n type: ViewChild,\n args: [MatDrawerContent]\n }], autosize: [{\n type: Input\n }], hasBackdrop: [{\n type: Input\n }], backdropClick: [{\n type: Output\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSidenavContent extends MatDrawerContent {\n constructor(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone) {\n super(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone);\n }\n}\nMatSidenavContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSidenavContent, deps: [{ token: i0.ChangeDetectorRef }, { token: forwardRef(() => MatSidenavContainer) }, { token: i0.ElementRef }, { token: i1.ScrollDispatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\nMatSidenavContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatSidenavContent, selector: \"mat-sidenav-content\", host: { properties: { \"style.margin-left.px\": \"_container._contentMargins.left\", \"style.margin-right.px\": \"_container._contentMargins.right\" }, classAttribute: \"mat-drawer-content mat-sidenav-content\" }, providers: [\n {\n provide: CdkScrollable,\n useExisting: MatSidenavContent,\n },\n ], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSidenavContent, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-sidenav-content',\n template: '',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: CdkScrollable,\n useExisting: MatSidenavContent,\n },\n ],\n }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: MatSidenavContainer, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatSidenavContainer)]\n }] }, { type: i0.ElementRef }, { type: i1.ScrollDispatcher }, { type: i0.NgZone }]; } });\nclass MatSidenav extends MatDrawer {\n constructor() {\n super(...arguments);\n this._fixedInViewport = false;\n this._fixedTopGap = 0;\n this._fixedBottomGap = 0;\n }\n /** Whether the sidenav is fixed in the viewport. */\n get fixedInViewport() {\n return this._fixedInViewport;\n }\n set fixedInViewport(value) {\n this._fixedInViewport = coerceBooleanProperty(value);\n }\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n */\n get fixedTopGap() {\n return this._fixedTopGap;\n }\n set fixedTopGap(value) {\n this._fixedTopGap = coerceNumberProperty(value);\n }\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n */\n get fixedBottomGap() {\n return this._fixedBottomGap;\n }\n set fixedBottomGap(value) {\n this._fixedBottomGap = coerceNumberProperty(value);\n }\n}\nMatSidenav.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSidenav, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatSidenav.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatSidenav, selector: \"mat-sidenav\", inputs: { fixedInViewport: \"fixedInViewport\", fixedTopGap: \"fixedTopGap\", fixedBottomGap: \"fixedBottomGap\" }, host: { attributes: { \"tabIndex\": \"-1\" }, properties: { \"attr.align\": \"null\", \"class.mat-drawer-end\": \"position === \\\"end\\\"\", \"class.mat-drawer-over\": \"mode === \\\"over\\\"\", \"class.mat-drawer-push\": \"mode === \\\"push\\\"\", \"class.mat-drawer-side\": \"mode === \\\"side\\\"\", \"class.mat-drawer-opened\": \"opened\", \"class.mat-sidenav-fixed\": \"fixedInViewport\", \"style.top.px\": \"fixedInViewport ? fixedTopGap : null\", \"style.bottom.px\": \"fixedInViewport ? fixedBottomGap : null\" }, classAttribute: \"mat-drawer mat-sidenav\" }, exportAs: [\"matSidenav\"], usesInheritance: true, ngImport: i0, template: \"
\n\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';\nimport { ColorChromeModule } from 'ngx-color/chrome';\nimport { BehaviorSubject, Observable, merge, of, shareReplay, switchMap, timer } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, tap } from 'rxjs/operators';\n\nimport { debounceSafeDefault } from '@shared/constants/debounce-time-safe-default.constant';\nimport { ClickOutsideDirective } from '@shared/directives/click-outside.directive';\nimport { StopPropagationDirective } from '@shared/directives/stop-propagation.directive';\nimport { TooltipDirectiveModule } from '@shared/directives/tooltip.directive';\nimport { EIcon } from '@shared/enums/icon.enum';\nimport { PipesModule } from '@shared/pipes/pipes.module';\nimport { IconComponent } from '@ui-components/components/icon/icon.component';\nimport { InputErrorModule } from '@ui-components/components/input-error/input-error.module';\nimport { CustomControlAbstract } from '@ui-components/controls/custom-control.abstract';\n\nimport { InputModule } from '../input/input.module';\nimport { RadioButtonModule } from '../radio-button/radio-button.module';\n\nconst defaultCloseDelay = 1000;\n\n@UntilDestroy()\n@Component({\n selector: 'app-custom-color-picker',\n templateUrl: './custom-color-picker.component.html',\n styleUrls: ['./custom-color-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n MatMenuModule,\n RadioButtonModule,\n ReactiveFormsModule,\n IconComponent,\n MatButtonModule,\n InputModule,\n NgSelectModule,\n PipesModule,\n InputErrorModule,\n MatProgressSpinnerModule,\n ColorChromeModule,\n StopPropagationDirective,\n ClickOutsideDirective,\n TooltipDirectiveModule,\n ],\n})\nexport class CustomColorPickerComponent extends CustomControlAbstract implements OnInit, ControlValueAccessor {\n labelOutsideDefaultCss = 'nowrap body-small-bold';\n\n private _isOpened$ = new BehaviorSubject(false); // TODO change to signals after Angular 16+\n private _isOpenedTrigger$ = new BehaviorSubject(false); // TODO change to signals after Angular 16+\n private _forceIsOpen$ = new BehaviorSubject(false); // TODO change to signals after Angular 16+\n isOpened$ = this.initIsOpen();\n\n @Input() selectCss = 'body-small text-color dark';\n\n @Input() set labelCss(value: string) {\n this._labelCss = value;\n }\n\n get labelCss(): string {\n if (this._labelCss) return this._labelCss;\n\n return this.labelOutsideDefaultCss;\n }\n\n private _valueCss: string;\n @Input() set valueCss(value) {\n this._valueCss = value;\n }\n\n get valueCss() {\n if (this._valueCss) {\n return this._valueCss;\n }\n return 'ellipsis text-color dark body-small';\n }\n\n @Input() containerCss = 'display-flex align-items-center';\n @Input() label = '';\n @Input() icon: EIcon;\n @Input() iconTooltip = '';\n @Input() attrPlaceholder = '';\n @Input() attrDisable = false;\n @Input() markAsInvalid = false;\n @Input() errorSection = true;\n @Input() isTextMode = false;\n\n _labelCss = '';\n _labelElement: ElementRef;\n\n @ViewChild('labelElement', { static: false }) set content(value: ElementRef) {\n if (!value) return;\n\n this._labelElement = value;\n this.cdr.detectChanges();\n }\n\n constructor(\n @Self() @Optional() protected ngControl: NgControl,\n protected cdr: ChangeDetectorRef,\n @Optional() formDirective: FormGroupDirective\n ) {\n super(ngControl, cdr, formDirective);\n }\n\n ngOnInit(): void {\n this.initControlBase();\n\n this.control.valueChanges\n .pipe(\n debounceTime(500),\n distinctUntilChanged(),\n tap(value => this.onChanged(value)),\n untilDestroyed(this)\n )\n .subscribe()\n .untilDestroyed(this);\n }\n\n handleOpenState(isOpen: boolean, isMouseMove = false, isForce = false): void {\n if (isForce) {\n this._forceIsOpen$.next(isOpen);\n this._isOpened$.next(isOpen);\n }\n\n if (!this._isOpened$.value && isMouseMove) {\n return;\n }\n\n if (isMouseMove) {\n this._isOpenedTrigger$.next(isOpen);\n return;\n }\n\n this._isOpened$.next(isOpen);\n }\n\n writeValue(value: any): void {\n if (value != this.control.value) {\n this.control.setValue(value);\n }\n }\n\n private initIsOpen(): Observable {\n return merge(\n merge(this._isOpened$, this._isOpenedTrigger$).pipe(\n distinctUntilChanged(),\n debounceTime(debounceSafeDefault),\n switchMap(isOpened => {\n return isOpened\n ? of(isOpened)\n : timer(defaultCloseDelay).pipe(\n tap(() => this._isOpened$.next(false)),\n map(() => isOpened)\n );\n }),\n distinctUntilChanged()\n ),\n this._forceIsOpen$\n ).pipe(distinctUntilChanged(), shareReplay(1));\n }\n}\n","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n var isPercent = isPercentage(n);\n n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n // Automatically convert percentage into number\n if (isPercent) {\n n = parseInt(String(n * max), 10) / 100;\n }\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n // Convert into [0, 1] range if it isn't already\n if (max === 360) {\n // If n is a hue given in degrees,\n // wrap around out-of-range values into [0, 360] range\n // then convert into [0, 1].\n n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n }\n else {\n // If n not a hue given in degrees\n // Convert into [0, 1] range if it isn't already.\n n = (n % max) / parseFloat(String(max));\n }\n return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * \n * @hidden\n */\nexport function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n if (n <= 1) {\n return \"\".concat(Number(n) * 100, \"%\");\n }\n return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n return c.length === 1 ? '0' + c : String(c);\n}\n","import { bound01, pad2 } from './util';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// \n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * \n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * (6 * t);\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n if (s === 0) {\n // achromatic\n g = l;\n b = l;\n r = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0; // achromatic\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n // Return a 3 character hex if possible\n if (allow3Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n // Return a 4 character hex if possible\n if (allow4Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1)) &&\n hex[3].startsWith(hex[3].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n return {\n r: color >> 16,\n g: (color & 0xff00) >> 8,\n b: color & 0xff,\n };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb } from './conversion';\nimport { names } from './css-color-names';\nimport { boundAlpha, convertToPercentage } from './util';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color === 'string') {\n color = stringInputToObject(color);\n }\n if (typeof color === 'object') {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = 'hsv';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = 'hsl';\n }\n if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n// \nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// \nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing. Take in a number of formats, and output an object\n * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n color = color.trim().toLowerCase();\n if (color.length === 0) {\n return false;\n }\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color === 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match = matchers.rgb.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n match = matchers.rgba.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n match = matchers.hsl.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n match = matchers.hsla.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n match = matchers.hsv.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n match = matchers.hsva.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n match = matchers.hex8.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex6.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n match = matchers.hex4.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n a: convertHexToDecimal(match[4] + match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex3.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","import { numberInputToObject, rgbaToHex, rgbToHex, rgbToHsl, rgbToHsv } from './conversion';\nimport { names } from './css-color-names';\nimport { inputToRGB } from './format-input';\nimport { bound01, boundAlpha, clamp01 } from './util';\nvar TinyColor = /** @class */ (function () {\n function TinyColor(color, opts) {\n if (color === void 0) { color = ''; }\n if (opts === void 0) { opts = {}; }\n var _a;\n // If input is already a tinycolor, return itself\n if (color instanceof TinyColor) {\n // eslint-disable-next-line no-constructor-return\n return color;\n }\n if (typeof color === 'number') {\n color = numberInputToObject(color);\n }\n this.originalInput = color;\n var rgb = inputToRGB(color);\n this.originalInput = color;\n this.r = rgb.r;\n this.g = rgb.g;\n this.b = rgb.b;\n this.a = rgb.a;\n this.roundA = Math.round(100 * this.a) / 100;\n this.format = (_a = opts.format) !== null && _a !== void 0 ? _a : rgb.format;\n this.gradientType = opts.gradientType;\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this.r < 1) {\n this.r = Math.round(this.r);\n }\n if (this.g < 1) {\n this.g = Math.round(this.g);\n }\n if (this.b < 1) {\n this.b = Math.round(this.b);\n }\n this.isValid = rgb.ok;\n }\n TinyColor.prototype.isDark = function () {\n return this.getBrightness() < 128;\n };\n TinyColor.prototype.isLight = function () {\n return !this.isDark();\n };\n /**\n * Returns the perceived brightness of the color, from 0-255.\n */\n TinyColor.prototype.getBrightness = function () {\n // http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n };\n /**\n * Returns the perceived luminance of a color, from 0-1.\n */\n TinyColor.prototype.getLuminance = function () {\n // http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var R;\n var G;\n var B;\n var RsRGB = rgb.r / 255;\n var GsRGB = rgb.g / 255;\n var BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) {\n R = RsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n }\n if (GsRGB <= 0.03928) {\n G = GsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n }\n if (BsRGB <= 0.03928) {\n B = BsRGB / 12.92;\n }\n else {\n // eslint-disable-next-line prefer-exponentiation-operator\n B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n }\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n };\n /**\n * Returns the alpha value of a color, from 0-1.\n */\n TinyColor.prototype.getAlpha = function () {\n return this.a;\n };\n /**\n * Sets the alpha value on the current color.\n *\n * @param alpha - The new alpha value. The accepted range is 0-1.\n */\n TinyColor.prototype.setAlpha = function (alpha) {\n this.a = boundAlpha(alpha);\n this.roundA = Math.round(100 * this.a) / 100;\n return this;\n };\n /**\n * Returns whether the color is monochrome.\n */\n TinyColor.prototype.isMonochrome = function () {\n var s = this.toHsl().s;\n return s === 0;\n };\n /**\n * Returns the object as a HSVA object.\n */\n TinyColor.prototype.toHsv = function () {\n var hsv = rgbToHsv(this.r, this.g, this.b);\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };\n };\n /**\n * Returns the hsva values interpolated into a string with the following format:\n * \"hsva(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toHsvString = function () {\n var hsv = rgbToHsv(this.r, this.g, this.b);\n var h = Math.round(hsv.h * 360);\n var s = Math.round(hsv.s * 100);\n var v = Math.round(hsv.v * 100);\n return this.a === 1 ? \"hsv(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%)\") : \"hsva(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%, \").concat(this.roundA, \")\");\n };\n /**\n * Returns the object as a HSLA object.\n */\n TinyColor.prototype.toHsl = function () {\n var hsl = rgbToHsl(this.r, this.g, this.b);\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };\n };\n /**\n * Returns the hsla values interpolated into a string with the following format:\n * \"hsla(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toHslString = function () {\n var hsl = rgbToHsl(this.r, this.g, this.b);\n var h = Math.round(hsl.h * 360);\n var s = Math.round(hsl.s * 100);\n var l = Math.round(hsl.l * 100);\n return this.a === 1 ? \"hsl(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%)\") : \"hsla(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%, \").concat(this.roundA, \")\");\n };\n /**\n * Returns the hex value of the color.\n * @param allow3Char will shorten hex value to 3 char if possible\n */\n TinyColor.prototype.toHex = function (allow3Char) {\n if (allow3Char === void 0) { allow3Char = false; }\n return rgbToHex(this.r, this.g, this.b, allow3Char);\n };\n /**\n * Returns the hex value of the color -with a # prefixed.\n * @param allow3Char will shorten hex value to 3 char if possible\n */\n TinyColor.prototype.toHexString = function (allow3Char) {\n if (allow3Char === void 0) { allow3Char = false; }\n return '#' + this.toHex(allow3Char);\n };\n /**\n * Returns the hex 8 value of the color.\n * @param allow4Char will shorten hex value to 4 char if possible\n */\n TinyColor.prototype.toHex8 = function (allow4Char) {\n if (allow4Char === void 0) { allow4Char = false; }\n return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);\n };\n /**\n * Returns the hex 8 value of the color -with a # prefixed.\n * @param allow4Char will shorten hex value to 4 char if possible\n */\n TinyColor.prototype.toHex8String = function (allow4Char) {\n if (allow4Char === void 0) { allow4Char = false; }\n return '#' + this.toHex8(allow4Char);\n };\n /**\n * Returns the shorter hex value of the color depends on its alpha -with a # prefixed.\n * @param allowShortChar will shorten hex value to 3 or 4 char if possible\n */\n TinyColor.prototype.toHexShortString = function (allowShortChar) {\n if (allowShortChar === void 0) { allowShortChar = false; }\n return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar);\n };\n /**\n * Returns the object as a RGBA object.\n */\n TinyColor.prototype.toRgb = function () {\n return {\n r: Math.round(this.r),\n g: Math.round(this.g),\n b: Math.round(this.b),\n a: this.a,\n };\n };\n /**\n * Returns the RGBA values interpolated into a string with the following format:\n * \"RGBA(xxx, xxx, xxx, xx)\".\n */\n TinyColor.prototype.toRgbString = function () {\n var r = Math.round(this.r);\n var g = Math.round(this.g);\n var b = Math.round(this.b);\n return this.a === 1 ? \"rgb(\".concat(r, \", \").concat(g, \", \").concat(b, \")\") : \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(this.roundA, \")\");\n };\n /**\n * Returns the object as a RGBA object.\n */\n TinyColor.prototype.toPercentageRgb = function () {\n var fmt = function (x) { return \"\".concat(Math.round(bound01(x, 255) * 100), \"%\"); };\n return {\n r: fmt(this.r),\n g: fmt(this.g),\n b: fmt(this.b),\n a: this.a,\n };\n };\n /**\n * Returns the RGBA relative values interpolated into a string\n */\n TinyColor.prototype.toPercentageRgbString = function () {\n var rnd = function (x) { return Math.round(bound01(x, 255) * 100); };\n return this.a === 1\n ? \"rgb(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%)\")\n : \"rgba(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%, \").concat(this.roundA, \")\");\n };\n /**\n * The 'real' name of the color -if there is one.\n */\n TinyColor.prototype.toName = function () {\n if (this.a === 0) {\n return 'transparent';\n }\n if (this.a < 1) {\n return false;\n }\n var hex = '#' + rgbToHex(this.r, this.g, this.b, false);\n for (var _i = 0, _a = Object.entries(names); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n if (hex === value) {\n return key;\n }\n }\n return false;\n };\n TinyColor.prototype.toString = function (format) {\n var formatSet = Boolean(format);\n format = format !== null && format !== void 0 ? format : this.format;\n var formattedString = false;\n var hasAlpha = this.a < 1 && this.a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format.startsWith('hex') || format === 'name');\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === 'name' && this.a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === 'rgb') {\n formattedString = this.toRgbString();\n }\n if (format === 'prgb') {\n formattedString = this.toPercentageRgbString();\n }\n if (format === 'hex' || format === 'hex6') {\n formattedString = this.toHexString();\n }\n if (format === 'hex3') {\n formattedString = this.toHexString(true);\n }\n if (format === 'hex4') {\n formattedString = this.toHex8String(true);\n }\n if (format === 'hex8') {\n formattedString = this.toHex8String();\n }\n if (format === 'name') {\n formattedString = this.toName();\n }\n if (format === 'hsl') {\n formattedString = this.toHslString();\n }\n if (format === 'hsv') {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n };\n TinyColor.prototype.toNumber = function () {\n return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);\n };\n TinyColor.prototype.clone = function () {\n return new TinyColor(this.toString());\n };\n /**\n * Lighten the color a given amount. Providing 100 will always return white.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.lighten = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return new TinyColor(hsl);\n };\n /**\n * Brighten the color a given amount, from 0 to 100.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.brighten = function (amount) {\n if (amount === void 0) { amount = 10; }\n var rgb = this.toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return new TinyColor(rgb);\n };\n /**\n * Darken the color a given amount, from 0 to 100.\n * Providing 100 will always return black.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.darken = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return new TinyColor(hsl);\n };\n /**\n * Mix the color with pure white, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return white.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.tint = function (amount) {\n if (amount === void 0) { amount = 10; }\n return this.mix('white', amount);\n };\n /**\n * Mix the color with pure black, from 0 to 100.\n * Providing 0 will do nothing, providing 100 will always return black.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.shade = function (amount) {\n if (amount === void 0) { amount = 10; }\n return this.mix('black', amount);\n };\n /**\n * Desaturate the color a given amount, from 0 to 100.\n * Providing 100 will is the same as calling greyscale\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.desaturate = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return new TinyColor(hsl);\n };\n /**\n * Saturate the color a given amount, from 0 to 100.\n * @param amount - valid between 1-100\n */\n TinyColor.prototype.saturate = function (amount) {\n if (amount === void 0) { amount = 10; }\n var hsl = this.toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return new TinyColor(hsl);\n };\n /**\n * Completely desaturates a color into greyscale.\n * Same as calling `desaturate(100)`\n */\n TinyColor.prototype.greyscale = function () {\n return this.desaturate(100);\n };\n /**\n * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n * Values outside of this range will be wrapped into this range.\n */\n TinyColor.prototype.spin = function (amount) {\n var hsl = this.toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return new TinyColor(hsl);\n };\n /**\n * Mix the current color a given amount with another color, from 0 to 100.\n * 0 means no mixing (return current color).\n */\n TinyColor.prototype.mix = function (color, amount) {\n if (amount === void 0) { amount = 50; }\n var rgb1 = this.toRgb();\n var rgb2 = new TinyColor(color).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a,\n };\n return new TinyColor(rgba);\n };\n TinyColor.prototype.analogous = function (results, slices) {\n if (results === void 0) { results = 6; }\n if (slices === void 0) { slices = 30; }\n var hsl = this.toHsl();\n var part = 360 / slices;\n var ret = [this];\n for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(new TinyColor(hsl));\n }\n return ret;\n };\n /**\n * taken from https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js\n */\n TinyColor.prototype.complement = function () {\n var hsl = this.toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return new TinyColor(hsl);\n };\n TinyColor.prototype.monochromatic = function (results) {\n if (results === void 0) { results = 6; }\n var hsv = this.toHsv();\n var h = hsv.h;\n var s = hsv.s;\n var v = hsv.v;\n var res = [];\n var modification = 1 / results;\n while (results--) {\n res.push(new TinyColor({ h: h, s: s, v: v }));\n v = (v + modification) % 1;\n }\n return res;\n };\n TinyColor.prototype.splitcomplement = function () {\n var hsl = this.toHsl();\n var h = hsl.h;\n return [\n this,\n new TinyColor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n new TinyColor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n ];\n };\n /**\n * Compute how the color would appear on a background\n */\n TinyColor.prototype.onBackground = function (background) {\n var fg = this.toRgb();\n var bg = new TinyColor(background).toRgb();\n var alpha = fg.a + bg.a * (1 - fg.a);\n return new TinyColor({\n r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha,\n g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha,\n b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha,\n a: alpha,\n });\n };\n /**\n * Alias for `polyad(3)`\n */\n TinyColor.prototype.triad = function () {\n return this.polyad(3);\n };\n /**\n * Alias for `polyad(4)`\n */\n TinyColor.prototype.tetrad = function () {\n return this.polyad(4);\n };\n /**\n * Get polyad colors, like (for 1, 2, 3, 4, 5, 6, 7, 8, etc...)\n * monad, dyad, triad, tetrad, pentad, hexad, heptad, octad, etc...\n */\n TinyColor.prototype.polyad = function (n) {\n var hsl = this.toHsl();\n var h = hsl.h;\n var result = [this];\n var increment = 360 / n;\n for (var i = 1; i < n; i++) {\n result.push(new TinyColor({ h: (h + i * increment) % 360, s: hsl.s, l: hsl.l }));\n }\n return result;\n };\n /**\n * compare color vs current color\n */\n TinyColor.prototype.equals = function (color) {\n return this.toRgbString() === new TinyColor(color).toRgbString();\n };\n return TinyColor;\n}());\nexport { TinyColor };\n// kept for backwards compatability with v1\nexport function tinycolor(color, opts) {\n if (color === void 0) { color = ''; }\n if (opts === void 0) { opts = {}; }\n return new TinyColor(color, opts);\n}\n","import * as i1 from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, isDataSource, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nexport { DataSource } from '@angular/cdk/collections';\nimport * as i2 from '@angular/cdk/platform';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, Input, ContentChild, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, EmbeddedViewRef, EventEmitter, NgZone, Attribute, SkipSelf, Output, ViewChild, ContentChildren, NgModule } from '@angular/core';\nimport { Subject, from, BehaviorSubject, isObservable, of } from 'rxjs';\nimport { takeUntil, take } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Mixin to provide a directive with a function that checks if the sticky input has been\n * changed since the last time the function was called. Essentially adds a dirty-check to the\n * sticky value.\n * @docs-private\n */\nfunction mixinHasStickyInput(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n this._sticky = false;\n /** Whether the sticky input has changed since it was last checked. */\n this._hasStickyChanged = false;\n }\n /** Whether sticky positioning should be applied. */\n get sticky() {\n return this._sticky;\n }\n set sticky(v) {\n const prevValue = this._sticky;\n this._sticky = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._sticky;\n }\n /** Whether the sticky value has changed since this was last called. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this._hasStickyChanged = false;\n return hasStickyChanged;\n }\n /** Resets the dirty check for cases where the sticky state has been used without checking. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Used to provide a table to some of the sub-components without causing a circular dependency.\n * @docs-private\n */\nconst CDK_TABLE = new InjectionToken('CDK_TABLE');\n/** Injection token that can be used to specify the text column options. */\nconst TEXT_COLUMN_OPTIONS = new InjectionToken('text-column-options');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Cell definition for a CDK table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass CdkCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkCellDef, selector: \"[cdkCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * Header cell definition for a CDK table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass CdkHeaderCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkHeaderCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkHeaderCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkHeaderCellDef, selector: \"[cdkHeaderCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkHeaderCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkHeaderCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n/**\n * Footer cell definition for a CDK table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass CdkFooterCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n}\nCdkFooterCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkFooterCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkFooterCellDef, selector: \"[cdkFooterCellDef]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkFooterCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkFooterCellDef]' }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\n// Boilerplate for applying mixins to CdkColumnDef.\n/** @docs-private */\nclass CdkColumnDefBase {\n}\nconst _CdkColumnDefBase = mixinHasStickyInput(CdkColumnDefBase);\n/**\n * Column definition for the CDK table.\n * Defines a set of cells available for a table column.\n */\nclass CdkColumnDef extends _CdkColumnDefBase {\n constructor(_table) {\n super();\n this._table = _table;\n this._stickyEnd = false;\n }\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n /**\n * Whether this column should be sticky positioned on the end of the row. Should make sure\n * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value\n * has been changed.\n */\n get stickyEnd() {\n return this._stickyEnd;\n }\n set stickyEnd(v) {\n const prevValue = this._stickyEnd;\n this._stickyEnd = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._stickyEnd;\n }\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n _updateColumnCssClassName() {\n this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setNameInput(value) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateColumnCssClassName();\n }\n }\n}\nCdkColumnDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkColumnDef, deps: [{ token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkColumnDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkColumnDef, selector: \"[cdkColumnDef]\", inputs: { sticky: \"sticky\", name: [\"cdkColumnDef\", \"name\"], stickyEnd: \"stickyEnd\" }, providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }], queries: [{ propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true }, { propertyName: \"footerCell\", first: true, predicate: CdkFooterCellDef, descendants: true }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkColumnDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkColumnDef]',\n inputs: ['sticky'],\n providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }],\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; }, propDecorators: { name: [{\n type: Input,\n args: ['cdkColumnDef']\n }], stickyEnd: [{\n type: Input,\n args: ['stickyEnd']\n }], cell: [{\n type: ContentChild,\n args: [CdkCellDef]\n }], headerCell: [{\n type: ContentChild,\n args: [CdkHeaderCellDef]\n }], footerCell: [{\n type: ContentChild,\n args: [CdkFooterCellDef]\n }] } });\n/** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */\nclass BaseCdkCell {\n constructor(columnDef, elementRef) {\n elementRef.nativeElement.classList.add(...columnDef._columnCssClassName);\n }\n}\n/** Header cell template container that adds the right classes and role. */\nclass CdkHeaderCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n }\n}\nCdkHeaderCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkHeaderCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkHeaderCell, selector: \"cdk-header-cell, th[cdk-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"cdk-header-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkHeaderCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-header-cell, th[cdk-header-cell]',\n host: {\n 'class': 'cdk-header-cell',\n 'role': 'columnheader',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n/** Footer cell template container that adds the right classes and role. */\nclass CdkFooterCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n if (columnDef._table?._elementRef.nativeElement.nodeType === 1) {\n const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');\n const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n}\nCdkFooterCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkFooterCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkFooterCell, selector: \"cdk-footer-cell, td[cdk-footer-cell]\", host: { classAttribute: \"cdk-footer-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkFooterCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-footer-cell, td[cdk-footer-cell]',\n host: {\n 'class': 'cdk-footer-cell',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\n/** Cell template container that adds the right classes and role. */\nclass CdkCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n if (columnDef._table?._elementRef.nativeElement.nodeType === 1) {\n const tableRole = columnDef._table._elementRef.nativeElement.getAttribute('role');\n const role = tableRole === 'grid' || tableRole === 'treegrid' ? 'gridcell' : 'cell';\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n}\nCdkCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkCell, selector: \"cdk-cell, td[cdk-cell]\", host: { classAttribute: \"cdk-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-cell, td[cdk-cell]',\n host: {\n 'class': 'cdk-cell',\n },\n }]\n }], ctorParameters: function () { return [{ type: CdkColumnDef }, { type: i0.ElementRef }]; } });\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 * @docs-private\n */\nclass _Schedule {\n constructor() {\n this.tasks = [];\n this.endTasks = [];\n }\n}\n/** Injection token used to provide a coalesced style scheduler. */\nconst _COALESCED_STYLE_SCHEDULER = new InjectionToken('_COALESCED_STYLE_SCHEDULER');\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\nclass _CoalescedStyleScheduler {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n this._currentSchedule = null;\n this._destroyed = new Subject();\n }\n /**\n * Schedules the specified task to run at the end of the current VM turn.\n */\n schedule(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.tasks.push(task);\n }\n /**\n * Schedules the specified task to run after other scheduled tasks at the end of the current\n * VM turn.\n */\n scheduleEnd(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.endTasks.push(task);\n }\n /** Prevent any further tasks from running. */\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n _createScheduleIfNeeded() {\n if (this._currentSchedule) {\n return;\n }\n this._currentSchedule = new _Schedule();\n this._getScheduleObservable()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n while (this._currentSchedule.tasks.length || this._currentSchedule.endTasks.length) {\n const schedule = this._currentSchedule;\n // Capture new tasks scheduled by the current set of tasks.\n this._currentSchedule = new _Schedule();\n for (const task of schedule.tasks) {\n task();\n }\n for (const task of schedule.endTasks) {\n task();\n }\n }\n this._currentSchedule = null;\n });\n }\n _getScheduleObservable() {\n // Use onStable when in the context of an ongoing change detection cycle so that we\n // do not accidentally trigger additional cycles.\n return this._ngZone.isStable\n ? from(Promise.resolve(undefined))\n : this._ngZone.onStable.pipe(take(1));\n }\n}\n_CoalescedStyleScheduler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _CoalescedStyleScheduler, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\n_CoalescedStyleScheduler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _CoalescedStyleScheduler });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _CoalescedStyleScheduler, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The row template that can be used by the mat-table. Should not be used outside of the\n * material library.\n */\nconst CDK_ROW_TEMPLATE = ``;\n/**\n * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs\n * for changes and notifying the table.\n */\nclass BaseRowDef {\n constructor(\n /** @docs-private */ template, _differs) {\n this.template = template;\n this._differs = _differs;\n }\n ngOnChanges(changes) {\n // Create a new columns differ if one does not yet exist. Initialize it based on initial value\n // of the columns property or an empty array if none is provided.\n if (!this._columnsDiffer) {\n const columns = (changes['columns'] && changes['columns'].currentValue) || [];\n this._columnsDiffer = this._differs.find(columns).create();\n this._columnsDiffer.diff(columns);\n }\n }\n /**\n * Returns the difference between the current columns and the columns from the last diff, or null\n * if there is no difference.\n */\n getColumnsDiff() {\n return this._columnsDiffer.diff(this.columns);\n }\n /** Gets this row def's relevant cell template from the provided column def. */\n extractCellTemplate(column) {\n if (this instanceof CdkHeaderRowDef) {\n return column.headerCell.template;\n }\n if (this instanceof CdkFooterRowDef) {\n return column.footerCell.template;\n }\n else {\n return column.cell.template;\n }\n }\n}\nBaseRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BaseRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nBaseRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: BaseRowDef, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: BaseRowDef, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }]; } });\n// Boilerplate for applying mixins to CdkHeaderRowDef.\n/** @docs-private */\nclass CdkHeaderRowDefBase extends BaseRowDef {\n}\nconst _CdkHeaderRowDefBase = mixinHasStickyInput(CdkHeaderRowDefBase);\n/**\n * Header row definition for the CDK table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass CdkHeaderRowDef extends _CdkHeaderRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n}\nCdkHeaderRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkHeaderRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkHeaderRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkHeaderRowDef, selector: \"[cdkHeaderRowDef]\", inputs: { columns: [\"cdkHeaderRowDef\", \"columns\"], sticky: [\"cdkHeaderRowDefSticky\", \"sticky\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkHeaderRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkHeaderRowDef]',\n inputs: ['columns: cdkHeaderRowDef', 'sticky: cdkHeaderRowDefSticky'],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; } });\n// Boilerplate for applying mixins to CdkFooterRowDef.\n/** @docs-private */\nclass CdkFooterRowDefBase extends BaseRowDef {\n}\nconst _CdkFooterRowDefBase = mixinHasStickyInput(CdkFooterRowDefBase);\n/**\n * Footer row definition for the CDK table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass CdkFooterRowDef extends _CdkFooterRowDefBase {\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n}\nCdkFooterRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkFooterRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkFooterRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkFooterRowDef, selector: \"[cdkFooterRowDef]\", inputs: { columns: [\"cdkFooterRowDef\", \"columns\"], sticky: [\"cdkFooterRowDefSticky\", \"sticky\"] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkFooterRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkFooterRowDef]',\n inputs: ['columns: cdkFooterRowDef', 'sticky: cdkFooterRowDefSticky'],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; } });\n/**\n * Data row definition for the CDK table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass CdkRowDef extends BaseRowDef {\n // TODO(andrewseguin): Add an input for providing a switch function to determine\n // if this template should be used.\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n}\nCdkRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkRowDef, selector: \"[cdkRowDef]\", inputs: { columns: [\"cdkRowDefColumns\", \"columns\"], when: [\"cdkRowDefWhen\", \"when\"] }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkRowDef]',\n inputs: ['columns: cdkRowDefColumns', 'when: cdkRowDefWhen'],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }]; } });\n/**\n * Outlet for rendering cells inside of a row or header row.\n * @docs-private\n */\nclass CdkCellOutlet {\n constructor(_viewContainer) {\n this._viewContainer = _viewContainer;\n CdkCellOutlet.mostRecentCellOutlet = this;\n }\n ngOnDestroy() {\n // If this was the last outlet being rendered in the view, remove the reference\n // from the static property after it has been destroyed to avoid leaking memory.\n if (CdkCellOutlet.mostRecentCellOutlet === this) {\n CdkCellOutlet.mostRecentCellOutlet = null;\n }\n }\n}\n/**\n * Static property containing the latest constructed instance of this class.\n * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using\n * createEmbeddedView. After one of these components are created, this property will provide\n * a handle to provide that component's cells and context. After init, the CdkCellOutlet will\n * construct the cells with the provided context.\n */\nCdkCellOutlet.mostRecentCellOutlet = null;\nCdkCellOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkCellOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCellOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkCellOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[cdkCellOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; } });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass CdkHeaderRow {\n}\nCdkHeaderRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkHeaderRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkHeaderRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkHeaderRow, selector: \"cdk-header-row, tr[cdk-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-header-row\" }, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkHeaderRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-header-row, tr[cdk-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass CdkFooterRow {\n}\nCdkFooterRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkFooterRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkFooterRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkFooterRow, selector: \"cdk-footer-row, tr[cdk-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-footer-row\" }, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkFooterRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-footer-row, tr[cdk-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass CdkRow {\n}\nCdkRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkRow, deps: [], target: i0.ɵɵFactoryTarget.Component });\nCdkRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkRow, selector: \"cdk-row, tr[cdk-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-row\" }, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-row, tr[cdk-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n }]\n }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass CdkNoDataRow {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._contentClassName = 'cdk-no-data-row';\n }\n}\nCdkNoDataRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkNoDataRow, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkNoDataRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkNoDataRow, selector: \"ng-template[cdkNoDataRow]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkNoDataRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkNoDataRow]',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\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 * List of all possible directions that can be used for sticky positioning.\n * @docs-private\n */\nconst STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];\n/**\n * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.\n * @docs-private\n */\nclass StickyStyler {\n /**\n * @param _isNativeHtmlTable Whether the sticky logic should be based on a table\n * that uses the native `
` element.\n * @param _stickCellCss The CSS class that will be applied to every row/cell that has\n * sticky positioning applied.\n * @param direction The directionality context of the table (ltr/rtl); affects column positioning\n * by reversing left/right positions.\n * @param _isBrowser Whether the table is currently being rendered on the server or the client.\n * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells\n * using inline styles. If false, it is assumed that position: sticky is included in\n * the component stylesheet for _stickCellCss.\n * @param _positionListener A listener that is notified of changes to sticky rows/columns\n * and their dimensions.\n */\n constructor(_isNativeHtmlTable, _stickCellCss, direction, _coalescedStyleScheduler, _isBrowser = true, _needsPositionStickyOnElement = true, _positionListener) {\n this._isNativeHtmlTable = _isNativeHtmlTable;\n this._stickCellCss = _stickCellCss;\n this.direction = direction;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._isBrowser = _isBrowser;\n this._needsPositionStickyOnElement = _needsPositionStickyOnElement;\n this._positionListener = _positionListener;\n this._cachedCellWidths = [];\n this._borderCellCss = {\n 'top': `${_stickCellCss}-border-elem-top`,\n 'bottom': `${_stickCellCss}-border-elem-bottom`,\n 'left': `${_stickCellCss}-border-elem-left`,\n 'right': `${_stickCellCss}-border-elem-right`,\n };\n }\n /**\n * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n * @param rows The list of rows that should be cleared from sticking in the provided directions\n * @param stickyDirections The directions that should no longer be set as sticky on the rows.\n */\n clearStickyPositioning(rows, stickyDirections) {\n const elementsToClear = [];\n for (const row of rows) {\n // If the row isn't an element (e.g. if it's an `ng-container`),\n // it won't have inline styles or `children` so we skip it.\n if (row.nodeType !== row.ELEMENT_NODE) {\n continue;\n }\n elementsToClear.push(row);\n for (let i = 0; i < row.children.length; i++) {\n elementsToClear.push(row.children[i]);\n }\n }\n // Coalesce with sticky row/column updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n for (const element of elementsToClear) {\n this._removeStickyStyle(element, stickyDirections);\n }\n });\n }\n /**\n * Applies sticky left and right positions to the cells of each row according to the sticky\n * states of the rendered column definitions.\n * @param rows The rows that should have its set of cells stuck according to the sticky states.\n * @param stickyStartStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the start of the row.\n * @param stickyEndStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the end of the row.\n * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each\n * column cell. If `false` cached widths will be used instead.\n */\n updateStickyColumns(rows, stickyStartStates, stickyEndStates, recalculateCellWidths = true) {\n if (!rows.length ||\n !this._isBrowser ||\n !(stickyStartStates.some(state => state) || stickyEndStates.some(state => state))) {\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({ sizes: [] });\n this._positionListener.stickyEndColumnsUpdated({ sizes: [] });\n }\n return;\n }\n const firstRow = rows[0];\n const numCells = firstRow.children.length;\n const cellWidths = this._getCellWidths(firstRow, recalculateCellWidths);\n const startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);\n const endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);\n const lastStickyStart = stickyStartStates.lastIndexOf(true);\n const firstStickyEnd = stickyEndStates.indexOf(true);\n // Coalesce with sticky row updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n const isRtl = this.direction === 'rtl';\n const start = isRtl ? 'right' : 'left';\n const end = isRtl ? 'left' : 'right';\n for (const row of rows) {\n for (let i = 0; i < numCells; i++) {\n const cell = row.children[i];\n if (stickyStartStates[i]) {\n this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);\n }\n if (stickyEndStates[i]) {\n this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);\n }\n }\n }\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({\n sizes: lastStickyStart === -1\n ? []\n : cellWidths\n .slice(0, lastStickyStart + 1)\n .map((width, index) => (stickyStartStates[index] ? width : null)),\n });\n this._positionListener.stickyEndColumnsUpdated({\n sizes: firstStickyEnd === -1\n ? []\n : cellWidths\n .slice(firstStickyEnd)\n .map((width, index) => (stickyEndStates[index + firstStickyEnd] ? width : null))\n .reverse(),\n });\n }\n });\n }\n /**\n * Applies sticky positioning to the row's cells if using the native table layout, and to the\n * row itself otherwise.\n * @param rowsToStick The list of rows that should be stuck according to their corresponding\n * sticky state and to the provided top or bottom position.\n * @param stickyStates A list of boolean states where each state represents whether the row\n * should be stuck in the particular top or bottom position.\n * @param position The position direction in which the row should be stuck if that row should be\n * sticky.\n *\n */\n stickRows(rowsToStick, stickyStates, position) {\n // Since we can't measure the rows on the server, we can't stick the rows properly.\n if (!this._isBrowser) {\n return;\n }\n // If positioning the rows to the bottom, reverse their order when evaluating the sticky\n // position such that the last row stuck will be \"bottom: 0px\" and so on. Note that the\n // sticky states need to be reversed as well.\n const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;\n const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;\n // Measure row heights all at once before adding sticky styles to reduce layout thrashing.\n const stickyOffsets = [];\n const stickyCellHeights = [];\n const elementsToStick = [];\n for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n stickyOffsets[rowIndex] = stickyOffset;\n const row = rows[rowIndex];\n elementsToStick[rowIndex] = this._isNativeHtmlTable\n ? Array.from(row.children)\n : [row];\n const height = row.getBoundingClientRect().height;\n stickyOffset += height;\n stickyCellHeights[rowIndex] = height;\n }\n const borderedRowIndex = states.lastIndexOf(true);\n // Coalesce with other sticky row updates (top/bottom), sticky columns updates\n // (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n const offset = stickyOffsets[rowIndex];\n const isBorderedRowIndex = rowIndex === borderedRowIndex;\n for (const element of elementsToStick[rowIndex]) {\n this._addStickyStyle(element, position, offset, isBorderedRowIndex);\n }\n }\n if (position === 'top') {\n this._positionListener?.stickyHeaderRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n else {\n this._positionListener?.stickyFooterRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n });\n }\n /**\n * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n * the tfoot element.\n */\n updateStickyFooterContainer(tableElement, stickyStates) {\n if (!this._isNativeHtmlTable) {\n return;\n }\n const tfoot = tableElement.querySelector('tfoot');\n // Coalesce with other sticky updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n if (stickyStates.some(state => !state)) {\n this._removeStickyStyle(tfoot, ['bottom']);\n }\n else {\n this._addStickyStyle(tfoot, 'bottom', 0, false);\n }\n });\n }\n /**\n * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n * the zIndex, removing each of the provided sticky directions, and removing the\n * sticky position if there are no more directions.\n */\n _removeStickyStyle(element, stickyDirections) {\n for (const dir of stickyDirections) {\n element.style[dir] = '';\n element.classList.remove(this._borderCellCss[dir]);\n }\n // If the element no longer has any more sticky directions, remove sticky positioning and\n // the sticky CSS class.\n // Short-circuit checking element.style[dir] for stickyDirections as they\n // were already removed above.\n const hasDirection = STICKY_DIRECTIONS.some(dir => stickyDirections.indexOf(dir) === -1 && element.style[dir]);\n if (hasDirection) {\n element.style.zIndex = this._getCalculatedZIndex(element);\n }\n else {\n // When not hasDirection, _getCalculatedZIndex will always return ''.\n element.style.zIndex = '';\n if (this._needsPositionStickyOnElement) {\n element.style.position = '';\n }\n element.classList.remove(this._stickCellCss);\n }\n }\n /**\n * Adds the sticky styling to the element by adding the sticky style class, changing position\n * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n * direction and value.\n */\n _addStickyStyle(element, dir, dirValue, isBorderElement) {\n element.classList.add(this._stickCellCss);\n if (isBorderElement) {\n element.classList.add(this._borderCellCss[dir]);\n }\n element.style[dir] = `${dirValue}px`;\n element.style.zIndex = this._getCalculatedZIndex(element);\n if (this._needsPositionStickyOnElement) {\n element.style.cssText += 'position: -webkit-sticky; position: sticky; ';\n }\n }\n /**\n * Calculate what the z-index should be for the element, depending on what directions (top,\n * bottom, left, right) have been set. It should be true that elements with a top direction\n * should have the highest index since these are elements like a table header. If any of those\n * elements are also sticky in another direction, then they should appear above other elements\n * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n * (e.g. footer rows) should then be next in the ordering such that they are below the header\n * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n * should minimally increment so that they are above non-sticky elements but below top and bottom\n * elements.\n */\n _getCalculatedZIndex(element) {\n const zIndexIncrements = {\n top: 100,\n bottom: 10,\n left: 1,\n right: 1,\n };\n let zIndex = 0;\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n for (const dir of STICKY_DIRECTIONS) {\n if (element.style[dir]) {\n zIndex += zIndexIncrements[dir];\n }\n }\n return zIndex ? `${zIndex}` : '';\n }\n /** Gets the widths for each cell in the provided row. */\n _getCellWidths(row, recalculateCellWidths = true) {\n if (!recalculateCellWidths && this._cachedCellWidths.length) {\n return this._cachedCellWidths;\n }\n const cellWidths = [];\n const firstRowCells = row.children;\n for (let i = 0; i < firstRowCells.length; i++) {\n let cell = firstRowCells[i];\n cellWidths.push(cell.getBoundingClientRect().width);\n }\n this._cachedCellWidths = cellWidths;\n return cellWidths;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyStartColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = 0; i < widths.length; i++) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyEndColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = widths.length; i > 0; i--) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an error to be thrown when attempting to find an nonexistent column.\n * @param id Id whose lookup failed.\n * @docs-private\n */\nfunction getTableUnknownColumnError(id) {\n return Error(`Could not find column with id \"${id}\".`);\n}\n/**\n * Returns an error to be thrown when two column definitions have the same name.\n * @docs-private\n */\nfunction getTableDuplicateColumnNameError(name) {\n return Error(`Duplicate column definition name provided: \"${name}\".`);\n}\n/**\n * Returns an error to be thrown when there are multiple rows that are missing a when function.\n * @docs-private\n */\nfunction getTableMultipleDefaultRowDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching row defs for a particular set of data.\n * @docs-private\n */\nfunction getTableMissingMatchingRowDefError(data) {\n return Error(`Could not find a matching row definition for the` +\n `provided row data: ${JSON.stringify(data)}`);\n}\n/**\n * Returns an error to be thrown when there is no row definitions present in the content.\n * @docs-private\n */\nfunction getTableMissingRowDefsError() {\n return Error('Missing definitions for header, footer, and row; ' +\n 'cannot determine which columns should be rendered.');\n}\n/**\n * Returns an error to be thrown when the data source does not match the compatible types.\n * @docs-private\n */\nfunction getTableUnknownDataSourceError() {\n return Error(`Provided data source did not match an array, Observable, or DataSource`);\n}\n/**\n * Returns an error to be thrown when the text column cannot find a parent table to inject.\n * @docs-private\n */\nfunction getTableTextColumnMissingParentTableError() {\n return Error(`Text column could not find a parent table for registration.`);\n}\n/**\n * Returns an error to be thrown when a table text column doesn't have a name.\n * @docs-private\n */\nfunction getTableTextColumnMissingNameError() {\n return Error(`Table text column must have a name.`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the StickyPositioningListener. */\nconst STICKY_POSITIONING_LISTENER = new InjectionToken('CDK_SPL');\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 * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass CdkRecycleRows {\n}\nCdkRecycleRows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkRecycleRows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkRecycleRows, selector: \"cdk-table[recycleRows], table[cdk-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkRecycleRows, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-table[recycleRows], table[cdk-table][recycleRows]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }] });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\nclass DataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nDataRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: DataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nDataRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: DataRowOutlet, selector: \"[rowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: DataRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[rowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the header.\n * @docs-private\n */\nclass HeaderRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nHeaderRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: HeaderRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nHeaderRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: HeaderRowOutlet, selector: \"[headerRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: HeaderRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[headerRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the footer.\n * @docs-private\n */\nclass FooterRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nFooterRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FooterRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nFooterRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: FooterRowOutlet, selector: \"[footerRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: FooterRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[footerRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * Provides a handle for the table to grab the view\n * container's ng-container to insert the no data row.\n * @docs-private\n */\nclass NoDataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n }\n}\nNoDataRowOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: NoDataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nNoDataRowOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: NoDataRowOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[noDataRowOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }]; } });\n/**\n * The table template that can be used by the mat-table. Should not be used outside of the\n * material library.\n * @docs-private\n */\nconst CDK_TABLE_TEMPLATE = \n// Note that according to MDN, the `caption` element has to be projected as the **first**\n// element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n`\n \n \n \n \n \n \n`;\n/**\n * Class used to conveniently type the embedded view ref for rows with a context.\n * @docs-private\n */\nclass RowViewRef extends EmbeddedViewRef {\n}\n/**\n * A data table that can render a header row, data rows, and a footer row.\n * Uses the dataSource input to determine the data to be rendered. The data can be provided either\n * as a data array, an Observable stream that emits the data array to render, or a DataSource with a\n * connect function that will return an Observable stream that emits the data array to render.\n */\nclass CdkTable {\n constructor(_differs, _changeDetectorRef, _elementRef, role, _dir, _document, _platform, _viewRepeater, _coalescedStyleScheduler, _viewportRuler, \n /**\n * @deprecated `_stickyPositioningListener` parameter to become required.\n * @breaking-change 13.0.0\n */\n _stickyPositioningListener, \n /**\n * @deprecated `_ngZone` parameter to become required.\n * @breaking-change 14.0.0\n */\n _ngZone) {\n this._differs = _differs;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dir = _dir;\n this._platform = _platform;\n this._viewRepeater = _viewRepeater;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._viewportRuler = _viewportRuler;\n this._stickyPositioningListener = _stickyPositioningListener;\n this._ngZone = _ngZone;\n /** Subject that emits when the component has been destroyed. */\n this._onDestroy = new Subject();\n /**\n * Map of all the user's defined columns (header, data, and footer cell template) identified by\n * name. Collection populated by the column definitions gathered by `ContentChildren` as well as\n * any custom column definitions added to `_customColumnDefs`.\n */\n this._columnDefsByName = new Map();\n /**\n * Column definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * column definitions as *its* content child.\n */\n this._customColumnDefs = new Set();\n /**\n * Data row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in data rows as *its* content child.\n */\n this._customRowDefs = new Set();\n /**\n * Header row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in header rows as *its* content child.\n */\n this._customHeaderRowDefs = new Set();\n /**\n * Footer row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has a\n * built-in footer row as *its* content child.\n */\n this._customFooterRowDefs = new Set();\n /**\n * Whether the header row definition has been changed. Triggers an update to the header row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._headerRowDefChanged = true;\n /**\n * Whether the footer row definition has been changed. Triggers an update to the footer row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._footerRowDefChanged = true;\n /**\n * Whether the sticky column styles need to be updated. Set to `true` when the visible columns\n * change.\n */\n this._stickyColumnStylesNeedReset = true;\n /**\n * Whether the sticky styler should recalculate cell widths when applying sticky styles. If\n * `false`, cached values will be used instead. This is only applicable to tables with\n * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.\n */\n this._forceRecalculateCellWidths = true;\n /**\n * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing\n * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with\n * the cached `RenderRow` objects when possible, the row identity is preserved when the data\n * and row template matches, which allows the `IterableDiffer` to check rows by reference\n * and understand which rows are added/moved/removed.\n *\n * Implemented as a map of maps where the first key is the `data: T` object and the second is the\n * `CdkRowDef` object. With the two keys, the cache points to a `RenderRow` object that\n * contains an array of created pairs. The array is necessary to handle cases where the data\n * array contains multiple duplicate data objects and each instantiated `RenderRow` must be\n * stored.\n */\n this._cachedRenderRowsMap = new Map();\n /**\n * CSS class added to any row or cell that has sticky positioning applied. May be overridden by\n * table subclasses.\n */\n this.stickyCssClass = 'cdk-table-sticky';\n /**\n * Whether to manually add position: sticky to all sticky cell elements. Not needed if\n * the position is set in a selector associated with the value of stickyCssClass. May be\n * overridden by table subclasses\n */\n this.needsPositionStickyOnElement = true;\n /** Whether the no data row is currently showing anything. */\n this._isShowingNoDataRow = false;\n this._multiTemplateDataRows = false;\n this._fixedLayout = false;\n /**\n * Emits when the table completes rendering a set of data rows based on the latest data from the\n * data source, even if the set of rows is empty.\n */\n this.contentChanged = new EventEmitter();\n // TODO(andrewseguin): Remove max value as the end index\n // and instead calculate the view on init and scroll.\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n *\n * @docs-private\n */\n this.viewChange = new BehaviorSubject({\n start: 0,\n end: Number.MAX_VALUE,\n });\n if (!role) {\n this._elementRef.nativeElement.setAttribute('role', 'table');\n }\n this._document = _document;\n this._isNativeHtmlTable = this._elementRef.nativeElement.nodeName === 'TABLE';\n }\n /**\n * Tracking function that will be used to check the differences in data changes. Used similarly\n * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data\n * relative to the function to know if a row should be added/removed/moved.\n * Accepts a function that takes two parameters, `index` and `item`.\n */\n get trackBy() {\n return this._trackByFn;\n }\n set trackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._trackByFn = fn;\n }\n /**\n * The table's source of data, which can be provided in three ways (in order of complexity):\n * - Simple data array (each object represents one table row)\n * - Stream that emits a data array each time the array changes\n * - `DataSource` object that implements the connect/disconnect interface.\n *\n * If a data array is provided, the table must be notified when the array's objects are\n * added, removed, or moved. This can be done by calling the `renderRows()` function which will\n * render the diff since the last table render. If the data array reference is changed, the table\n * will automatically trigger an update to the rows.\n *\n * When providing an Observable stream, the table will trigger an update automatically when the\n * stream emits a new array of data.\n *\n * Finally, when providing a `DataSource` object, the table will use the Observable stream\n * provided by the connect function and trigger updates when that stream emits new data array\n * values. During the table's ngOnDestroy or when the data source is removed from the table, the\n * table will call the DataSource's `disconnect` function (may be useful for cleaning up any\n * subscriptions registered during the connect process).\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n /**\n * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'\n * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each\n * dataobject will render the first row that evaluates its when predicate to true, in the order\n * defined in the table, or otherwise the default row which does not have a when predicate.\n */\n get multiTemplateDataRows() {\n return this._multiTemplateDataRows;\n }\n set multiTemplateDataRows(v) {\n this._multiTemplateDataRows = coerceBooleanProperty(v);\n // In Ivy if this value is set via a static attribute (e.g.
),\n // this setter will be invoked before the row outlet has been defined hence the null check.\n if (this._rowOutlet && this._rowOutlet.viewContainer.length) {\n this._forceRenderDataRows();\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths\n * and optimize rendering sticky styles for native tables. No-op for flex tables.\n */\n get fixedLayout() {\n return this._fixedLayout;\n }\n set fixedLayout(v) {\n this._fixedLayout = coerceBooleanProperty(v);\n // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated.\n this._forceRecalculateCellWidths = true;\n this._stickyColumnStylesNeedReset = true;\n }\n ngOnInit() {\n this._setupStickyStyler();\n if (this._isNativeHtmlTable) {\n this._applyNativeTableSections();\n }\n // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If\n // the user has provided a custom trackBy, return the result of that function as evaluated\n // with the values of the `RenderRow`'s data and index.\n this._dataDiffer = this._differs.find([]).create((_i, dataRow) => {\n return this.trackBy ? this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;\n });\n this._viewportRuler\n .change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n this._forceRecalculateCellWidths = true;\n });\n }\n ngAfterContentChecked() {\n // Cache the row and column definitions gathered by ContentChildren and programmatic injection.\n this._cacheRowDefs();\n this._cacheColumnDefs();\n // Make sure that the user has at least added header, footer, or data row def.\n if (!this._headerRowDefs.length &&\n !this._footerRowDefs.length &&\n !this._rowDefs.length &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingRowDefsError();\n }\n // Render updates if the list of columns have been changed for the header, row, or footer defs.\n const columnsChanged = this._renderUpdatedColumns();\n const rowDefsChanged = columnsChanged || this._headerRowDefChanged || this._footerRowDefChanged;\n // Ensure sticky column styles are reset if set to `true` elsewhere.\n this._stickyColumnStylesNeedReset = this._stickyColumnStylesNeedReset || rowDefsChanged;\n this._forceRecalculateCellWidths = rowDefsChanged;\n // If the header row definition has been changed, trigger a render to the header row.\n if (this._headerRowDefChanged) {\n this._forceRenderHeaderRows();\n this._headerRowDefChanged = false;\n }\n // If the footer row definition has been changed, trigger a render to the footer row.\n if (this._footerRowDefChanged) {\n this._forceRenderFooterRows();\n this._footerRowDefChanged = false;\n }\n // If there is a data source and row definitions, connect to the data source unless a\n // connection has already been made.\n if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {\n this._observeRenderChanges();\n }\n else if (this._stickyColumnStylesNeedReset) {\n // In the above case, _observeRenderChanges will result in updateStickyColumnStyles being\n // called when it row data arrives. Otherwise, we need to call it proactively.\n this.updateStickyColumnStyles();\n }\n this._checkStickyStates();\n }\n ngOnDestroy() {\n [\n this._rowOutlet.viewContainer,\n this._headerRowOutlet.viewContainer,\n this._footerRowOutlet.viewContainer,\n this._cachedRenderRowsMap,\n this._customColumnDefs,\n this._customRowDefs,\n this._customHeaderRowDefs,\n this._customFooterRowDefs,\n this._columnDefsByName,\n ].forEach(def => {\n def.clear();\n });\n this._headerRowDefs = [];\n this._footerRowDefs = [];\n this._defaultRowDef = null;\n this._onDestroy.next();\n this._onDestroy.complete();\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n }\n /**\n * Renders rows based on the table's latest set of data, which was either provided directly as an\n * input or retrieved through an Observable stream (directly or from a DataSource).\n * Checks for differences in the data since the last diff to perform only the necessary\n * changes (add/remove/move rows).\n *\n * If the table's data source is a DataSource or Observable, this will be invoked automatically\n * each time the provided Observable stream emits a new data array. Otherwise if your data is\n * an array, this function will need to be called to render any changes.\n */\n renderRows() {\n this._renderRows = this._getAllRenderRows();\n const changes = this._dataDiffer.diff(this._renderRows);\n if (!changes) {\n this._updateNoDataRow();\n this.contentChanged.next();\n return;\n }\n const viewContainer = this._rowOutlet.viewContainer;\n this._viewRepeater.applyChanges(changes, viewContainer, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record.item, currentIndex), record => record.item.data, (change) => {\n if (change.operation === 1 /* _ViewRepeaterOperation.INSERTED */ && change.context) {\n this._renderCellTemplateForItem(change.record.item.rowDef, change.context);\n }\n });\n // Update the meta context of a row's context data (index, count, first, last, ...)\n this._updateRowIndexContext();\n // Update rows that did not get added/removed/moved but may have had their identity changed,\n // e.g. if trackBy matched data on some property but the actual data reference changed.\n changes.forEachIdentityChange((record) => {\n const rowView = viewContainer.get(record.currentIndex);\n rowView.context.$implicit = record.item.data;\n });\n this._updateNoDataRow();\n // Allow the new row data to render before measuring it.\n // @breaking-change 14.0.0 Remove undefined check once _ngZone is required.\n if (this._ngZone && NgZone.isInAngularZone()) {\n this._ngZone.onStable.pipe(take(1), takeUntil(this._onDestroy)).subscribe(() => {\n this.updateStickyColumnStyles();\n });\n }\n else {\n this.updateStickyColumnStyles();\n }\n this.contentChanged.next();\n }\n /** Adds a column definition that was not included as part of the content children. */\n addColumnDef(columnDef) {\n this._customColumnDefs.add(columnDef);\n }\n /** Removes a column definition that was not included as part of the content children. */\n removeColumnDef(columnDef) {\n this._customColumnDefs.delete(columnDef);\n }\n /** Adds a row definition that was not included as part of the content children. */\n addRowDef(rowDef) {\n this._customRowDefs.add(rowDef);\n }\n /** Removes a row definition that was not included as part of the content children. */\n removeRowDef(rowDef) {\n this._customRowDefs.delete(rowDef);\n }\n /** Adds a header row definition that was not included as part of the content children. */\n addHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.add(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Removes a header row definition that was not included as part of the content children. */\n removeHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.delete(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Adds a footer row definition that was not included as part of the content children. */\n addFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.add(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Removes a footer row definition that was not included as part of the content children. */\n removeFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.delete(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Sets a no data row definition that was not included as a part of the content children. */\n setNoDataRow(noDataRow) {\n this._customNoDataRow = noDataRow;\n }\n /**\n * Updates the header sticky styles. First resets all applied styles with respect to the cells\n * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n * automatically called when the header row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyHeaderRowStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the thead element if there are no header rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const thead = tableElement.querySelector('thead');\n if (thead) {\n thead.style.display = headerRows.length ? '' : 'none';\n }\n const stickyStates = this._headerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(headerRows, ['top']);\n this._stickyStyler.stickRows(headerRows, stickyStates, 'top');\n // Reset the dirty state of the sticky input change since it has been used.\n this._headerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n * automatically called when the footer row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyFooterRowStyles() {\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n const tableElement = this._elementRef.nativeElement;\n // Hide the tfoot element if there are no footer rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n const tfoot = tableElement.querySelector('tfoot');\n if (tfoot) {\n tfoot.style.display = footerRows.length ? '' : 'none';\n }\n const stickyStates = this._footerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);\n this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');\n this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);\n // Reset the dirty state of the sticky input change since it has been used.\n this._footerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the column sticky styles. First resets all applied styles with respect to the cells\n * sticking to the left and right. Then sticky styles are added for the left and right according\n * to the column definitions for each cell in each row. This is automatically called when\n * the data source provides a new set of data or when a column definition changes its sticky\n * input. May be called manually for cases where the cell content changes outside of these events.\n */\n updateStickyColumnStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const dataRows = this._getRenderedRows(this._rowOutlet);\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n // For tables not using a fixed layout, the column widths may change when new rows are rendered.\n // In a table using a fixed layout, row content won't affect column width, so sticky styles\n // don't need to be cleared unless either the sticky column config changes or one of the row\n // defs change.\n if ((this._isNativeHtmlTable && !this._fixedLayout) || this._stickyColumnStylesNeedReset) {\n // Clear the left and right positioning from all columns in the table across all rows since\n // sticky columns span across all table sections (header, data, footer)\n this._stickyStyler.clearStickyPositioning([...headerRows, ...dataRows, ...footerRows], ['left', 'right']);\n this._stickyColumnStylesNeedReset = false;\n }\n // Update the sticky styles for each header row depending on the def's sticky state\n headerRows.forEach((headerRow, i) => {\n this._addStickyColumnStyles([headerRow], this._headerRowDefs[i]);\n });\n // Update the sticky styles for each data row depending on its def's sticky state\n this._rowDefs.forEach(rowDef => {\n // Collect all the rows rendered with this row definition.\n const rows = [];\n for (let i = 0; i < dataRows.length; i++) {\n if (this._renderRows[i].rowDef === rowDef) {\n rows.push(dataRows[i]);\n }\n }\n this._addStickyColumnStyles(rows, rowDef);\n });\n // Update the sticky styles for each footer row depending on the def's sticky state\n footerRows.forEach((footerRow, i) => {\n this._addStickyColumnStyles([footerRow], this._footerRowDefs[i]);\n });\n // Reset the dirty state of the sticky input change since it has been used.\n Array.from(this._columnDefsByName.values()).forEach(def => def.resetStickyChanged());\n }\n /**\n * Get the list of RenderRow objects to render according to the current list of data and defined\n * row definitions. If the previous list already contained a particular pair, it should be reused\n * so that the differ equates their references.\n */\n _getAllRenderRows() {\n const renderRows = [];\n // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the\n // new cache while unused ones can be picked up by garbage collection.\n const prevCachedRenderRows = this._cachedRenderRowsMap;\n this._cachedRenderRowsMap = new Map();\n // For each data object, get the list of rows that should be rendered, represented by the\n // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.\n for (let i = 0; i < this._data.length; i++) {\n let data = this._data[i];\n const renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));\n if (!this._cachedRenderRowsMap.has(data)) {\n this._cachedRenderRowsMap.set(data, new WeakMap());\n }\n for (let j = 0; j < renderRowsForData.length; j++) {\n let renderRow = renderRowsForData[j];\n const cache = this._cachedRenderRowsMap.get(renderRow.data);\n if (cache.has(renderRow.rowDef)) {\n cache.get(renderRow.rowDef).push(renderRow);\n }\n else {\n cache.set(renderRow.rowDef, [renderRow]);\n }\n renderRows.push(renderRow);\n }\n }\n return renderRows;\n }\n /**\n * Gets a list of `RenderRow` for the provided data object and any `CdkRowDef` objects that\n * should be rendered for this data. Reuses the cached RenderRow objects if they match the same\n * `(T, CdkRowDef)` pair.\n */\n _getRenderRowsForData(data, dataIndex, cache) {\n const rowDefs = this._getRowDefs(data, dataIndex);\n return rowDefs.map(rowDef => {\n const cachedRenderRows = cache && cache.has(rowDef) ? cache.get(rowDef) : [];\n if (cachedRenderRows.length) {\n const dataRow = cachedRenderRows.shift();\n dataRow.dataIndex = dataIndex;\n return dataRow;\n }\n else {\n return { data, rowDef, dataIndex };\n }\n });\n }\n /** Update the map containing the content's column definitions. */\n _cacheColumnDefs() {\n this._columnDefsByName.clear();\n const columnDefs = mergeArrayAndSet(this._getOwnDefs(this._contentColumnDefs), this._customColumnDefs);\n columnDefs.forEach(columnDef => {\n if (this._columnDefsByName.has(columnDef.name) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableDuplicateColumnNameError(columnDef.name);\n }\n this._columnDefsByName.set(columnDef.name, columnDef);\n });\n }\n /** Update the list of all available row definitions that can be used. */\n _cacheRowDefs() {\n this._headerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentHeaderRowDefs), this._customHeaderRowDefs);\n this._footerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentFooterRowDefs), this._customFooterRowDefs);\n this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);\n // After all row definitions are determined, find the row definition to be considered default.\n const defaultRowDefs = this._rowDefs.filter(def => !def.when);\n if (!this.multiTemplateDataRows &&\n defaultRowDefs.length > 1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMultipleDefaultRowDefsError();\n }\n this._defaultRowDef = defaultRowDefs[0];\n }\n /**\n * Check if the header, data, or footer rows have changed what columns they want to display or\n * whether the sticky states have changed for the header or footer. If there is a diff, then\n * re-render that section.\n */\n _renderUpdatedColumns() {\n const columnsDiffReducer = (acc, def) => acc || !!def.getColumnsDiff();\n // Force re-render data rows if the list of column definitions have changed.\n const dataColumnsChanged = this._rowDefs.reduce(columnsDiffReducer, false);\n if (dataColumnsChanged) {\n this._forceRenderDataRows();\n }\n // Force re-render header/footer rows if the list of column definitions have changed.\n const headerColumnsChanged = this._headerRowDefs.reduce(columnsDiffReducer, false);\n if (headerColumnsChanged) {\n this._forceRenderHeaderRows();\n }\n const footerColumnsChanged = this._footerRowDefs.reduce(columnsDiffReducer, false);\n if (footerColumnsChanged) {\n this._forceRenderFooterRows();\n }\n return dataColumnsChanged || headerColumnsChanged || footerColumnsChanged;\n }\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the row outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n this._data = [];\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n // Stop listening for data from the previous data source.\n if (this._renderChangeSubscription) {\n this._renderChangeSubscription.unsubscribe();\n this._renderChangeSubscription = null;\n }\n if (!dataSource) {\n if (this._dataDiffer) {\n this._dataDiffer.diff([]);\n }\n this._rowOutlet.viewContainer.clear();\n }\n this._dataSource = dataSource;\n }\n /** Set up a subscription for the data provided by the data source. */\n _observeRenderChanges() {\n // If no data source has been set, there is nothing to observe for changes.\n if (!this.dataSource) {\n return;\n }\n let dataStream;\n if (isDataSource(this.dataSource)) {\n dataStream = this.dataSource.connect(this);\n }\n else if (isObservable(this.dataSource)) {\n dataStream = this.dataSource;\n }\n else if (Array.isArray(this.dataSource)) {\n dataStream = of(this.dataSource);\n }\n if (dataStream === undefined && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownDataSourceError();\n }\n this._renderChangeSubscription = dataStream\n .pipe(takeUntil(this._onDestroy))\n .subscribe(data => {\n this._data = data || [];\n this.renderRows();\n });\n }\n /**\n * Clears any existing content in the header row outlet and creates a new embedded view\n * in the outlet using the header row definition.\n */\n _forceRenderHeaderRows() {\n // Clear the header row outlet if any content exists.\n if (this._headerRowOutlet.viewContainer.length > 0) {\n this._headerRowOutlet.viewContainer.clear();\n }\n this._headerRowDefs.forEach((def, i) => this._renderRow(this._headerRowOutlet, def, i));\n this.updateStickyHeaderRowStyles();\n }\n /**\n * Clears any existing content in the footer row outlet and creates a new embedded view\n * in the outlet using the footer row definition.\n */\n _forceRenderFooterRows() {\n // Clear the footer row outlet if any content exists.\n if (this._footerRowOutlet.viewContainer.length > 0) {\n this._footerRowOutlet.viewContainer.clear();\n }\n this._footerRowDefs.forEach((def, i) => this._renderRow(this._footerRowOutlet, def, i));\n this.updateStickyFooterRowStyles();\n }\n /** Adds the sticky column styles for the rows according to the columns' stick states. */\n _addStickyColumnStyles(rows, rowDef) {\n const columnDefs = Array.from(rowDef.columns || []).map(columnName => {\n const columnDef = this._columnDefsByName.get(columnName);\n if (!columnDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnName);\n }\n return columnDef;\n });\n const stickyStartStates = columnDefs.map(columnDef => columnDef.sticky);\n const stickyEndStates = columnDefs.map(columnDef => columnDef.stickyEnd);\n this._stickyStyler.updateStickyColumns(rows, stickyStartStates, stickyEndStates, !this._fixedLayout || this._forceRecalculateCellWidths);\n }\n /** Gets the list of rows that have been rendered in the row outlet. */\n _getRenderedRows(rowOutlet) {\n const renderedRows = [];\n for (let i = 0; i < rowOutlet.viewContainer.length; i++) {\n const viewRef = rowOutlet.viewContainer.get(i);\n renderedRows.push(viewRef.rootNodes[0]);\n }\n return renderedRows;\n }\n /**\n * Get the matching row definitions that should be used for this row data. If there is only\n * one row definition, it is returned. Otherwise, find the row definitions that has a when\n * predicate that returns true with the data. If none return true, return the default row\n * definition.\n */\n _getRowDefs(data, dataIndex) {\n if (this._rowDefs.length == 1) {\n return [this._rowDefs[0]];\n }\n let rowDefs = [];\n if (this.multiTemplateDataRows) {\n rowDefs = this._rowDefs.filter(def => !def.when || def.when(dataIndex, data));\n }\n else {\n let rowDef = this._rowDefs.find(def => def.when && def.when(dataIndex, data)) || this._defaultRowDef;\n if (rowDef) {\n rowDefs.push(rowDef);\n }\n }\n if (!rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingMatchingRowDefError(data);\n }\n return rowDefs;\n }\n _getEmbeddedViewArgs(renderRow, index) {\n const rowDef = renderRow.rowDef;\n const context = { $implicit: renderRow.data };\n return {\n templateRef: rowDef.template,\n context,\n index,\n };\n }\n /**\n * Creates a new row template in the outlet and fills it with the set of cell templates.\n * Optionally takes a context to provide to the row and cells, as well as an optional index\n * of where to place the new row template in the outlet.\n */\n _renderRow(outlet, rowDef, index, context = {}) {\n // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView\n const view = outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);\n this._renderCellTemplateForItem(rowDef, context);\n return view;\n }\n _renderCellTemplateForItem(rowDef, context) {\n for (let cellTemplate of this._getCellTemplates(rowDef)) {\n if (CdkCellOutlet.mostRecentCellOutlet) {\n CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Updates the index-related context for each row to reflect any changes in the index of the rows,\n * e.g. first/last/even/odd.\n */\n _updateRowIndexContext() {\n const viewContainer = this._rowOutlet.viewContainer;\n for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n const viewRef = viewContainer.get(renderIndex);\n const context = viewRef.context;\n context.count = count;\n context.first = renderIndex === 0;\n context.last = renderIndex === count - 1;\n context.even = renderIndex % 2 === 0;\n context.odd = !context.even;\n if (this.multiTemplateDataRows) {\n context.dataIndex = this._renderRows[renderIndex].dataIndex;\n context.renderIndex = renderIndex;\n }\n else {\n context.index = this._renderRows[renderIndex].dataIndex;\n }\n }\n }\n /** Gets the column definitions for the provided row def. */\n _getCellTemplates(rowDef) {\n if (!rowDef || !rowDef.columns) {\n return [];\n }\n return Array.from(rowDef.columns, columnId => {\n const column = this._columnDefsByName.get(columnId);\n if (!column && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnId);\n }\n return rowDef.extractCellTemplate(column);\n });\n }\n /** Adds native table sections (e.g. tbody) and moves the row outlets into them. */\n _applyNativeTableSections() {\n const documentFragment = this._document.createDocumentFragment();\n const sections = [\n { tag: 'thead', outlets: [this._headerRowOutlet] },\n { tag: 'tbody', outlets: [this._rowOutlet, this._noDataRowOutlet] },\n { tag: 'tfoot', outlets: [this._footerRowOutlet] },\n ];\n for (const section of sections) {\n const element = this._document.createElement(section.tag);\n element.setAttribute('role', 'rowgroup');\n for (const outlet of section.outlets) {\n element.appendChild(outlet.elementRef.nativeElement);\n }\n documentFragment.appendChild(element);\n }\n // Use a DocumentFragment so we don't hit the DOM on each iteration.\n this._elementRef.nativeElement.appendChild(documentFragment);\n }\n /**\n * Forces a re-render of the data rows. Should be called in cases where there has been an input\n * change that affects the evaluation of which rows should be rendered, e.g. toggling\n * `multiTemplateDataRows` or adding/removing row definitions.\n */\n _forceRenderDataRows() {\n this._dataDiffer.diff([]);\n this._rowOutlet.viewContainer.clear();\n this.renderRows();\n }\n /**\n * Checks if there has been a change in sticky states since last check and applies the correct\n * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once\n * during a change detection and after the inputs are settled (after content check).\n */\n _checkStickyStates() {\n const stickyCheckReducer = (acc, d) => {\n return acc || d.hasStickyChanged();\n };\n // Note that the check needs to occur for every definition since it notifies the definition\n // that it can reset its dirty state. Using another operator like `some` may short-circuit\n // remaining definitions and leave them in an unchecked state.\n if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyHeaderRowStyles();\n }\n if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyFooterRowStyles();\n }\n if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {\n this._stickyColumnStylesNeedReset = true;\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Creates the sticky styler that will be used for sticky rows and columns. Listens\n * for directionality changes and provides the latest direction to the styler. Re-applies column\n * stickiness when directionality changes.\n */\n _setupStickyStyler() {\n const direction = this._dir ? this._dir.value : 'ltr';\n this._stickyStyler = new StickyStyler(this._isNativeHtmlTable, this.stickyCssClass, direction, this._coalescedStyleScheduler, this._platform.isBrowser, this.needsPositionStickyOnElement, this._stickyPositioningListener);\n (this._dir ? this._dir.change : of())\n .pipe(takeUntil(this._onDestroy))\n .subscribe(value => {\n this._stickyStyler.direction = value;\n this.updateStickyColumnStyles();\n });\n }\n /** Filters definitions that belong to this table from a QueryList. */\n _getOwnDefs(items) {\n return items.filter(item => !item._table || item._table === this);\n }\n /** Creates or removes the no data row, depending on whether any data is being shown. */\n _updateNoDataRow() {\n const noDataRow = this._customNoDataRow || this._noDataRow;\n if (!noDataRow) {\n return;\n }\n const shouldShow = this._rowOutlet.viewContainer.length === 0;\n if (shouldShow === this._isShowingNoDataRow) {\n return;\n }\n const container = this._noDataRowOutlet.viewContainer;\n if (shouldShow) {\n const view = container.createEmbeddedView(noDataRow.templateRef);\n const rootNode = view.rootNodes[0];\n // Only add the attributes if we have a single root node since it's hard\n // to figure out which one to add it to when there are multiple.\n if (view.rootNodes.length === 1 && rootNode?.nodeType === this._document.ELEMENT_NODE) {\n rootNode.setAttribute('role', 'row');\n rootNode.classList.add(noDataRow._contentClassName);\n }\n }\n else {\n container.clear();\n }\n this._isShowingNoDataRow = shouldShow;\n }\n}\nCdkTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkTable, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: 'role', attribute: true }, { token: i1.Directionality, optional: true }, { token: DOCUMENT }, { token: i2.Platform }, { token: _VIEW_REPEATER_STRATEGY }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i3.ViewportRuler }, { token: STICKY_POSITIONING_LISTENER, optional: true, skipSelf: true }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkTable, selector: \"cdk-table, table[cdk-table]\", inputs: { trackBy: \"trackBy\", dataSource: \"dataSource\", multiTemplateDataRows: \"multiTemplateDataRows\", fixedLayout: \"fixedLayout\" }, outputs: { contentChanged: \"contentChanged\" }, host: { properties: { \"class.cdk-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"cdk-table\" }, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], queries: [{ propertyName: \"_noDataRow\", first: true, predicate: CdkNoDataRow, descendants: true }, { propertyName: \"_contentColumnDefs\", predicate: CdkColumnDef, descendants: true }, { propertyName: \"_contentRowDefs\", predicate: CdkRowDef, descendants: true }, { propertyName: \"_contentHeaderRowDefs\", predicate: CdkHeaderRowDef, descendants: true }, { propertyName: \"_contentFooterRowDefs\", predicate: CdkFooterRowDef, descendants: true }], viewQueries: [{ propertyName: \"_rowOutlet\", first: true, predicate: DataRowOutlet, descendants: true, static: true }, { propertyName: \"_headerRowOutlet\", first: true, predicate: HeaderRowOutlet, descendants: true, static: true }, { propertyName: \"_footerRowOutlet\", first: true, predicate: FooterRowOutlet, descendants: true, static: true }, { propertyName: \"_noDataRowOutlet\", first: true, predicate: NoDataRowOutlet, descendants: true, static: true }], exportAs: [\"cdkTable\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n \\n\", isInline: true, styles: [\".cdk-table-fixed-layout{table-layout:fixed}\"], dependencies: [{ kind: \"directive\", type: DataRowOutlet, selector: \"[rowOutlet]\" }, { kind: \"directive\", type: HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { kind: \"directive\", type: FooterRowOutlet, selector: \"[footerRowOutlet]\" }, { kind: \"directive\", type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkTable, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-table, table[cdk-table]', exportAs: 'cdkTable', template: CDK_TABLE_TEMPLATE, host: {\n 'class': 'cdk-table',\n '[class.cdk-table-fixed-layout]': 'fixedLayout',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], styles: [\".cdk-table-fixed-layout{table-layout:fixed}\"] }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i2.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: _CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [STICKY_POSITIONING_LISTENER]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { trackBy: [{\n type: Input\n }], dataSource: [{\n type: Input\n }], multiTemplateDataRows: [{\n type: Input\n }], fixedLayout: [{\n type: Input\n }], contentChanged: [{\n type: Output\n }], _rowOutlet: [{\n type: ViewChild,\n args: [DataRowOutlet, { static: true }]\n }], _headerRowOutlet: [{\n type: ViewChild,\n args: [HeaderRowOutlet, { static: true }]\n }], _footerRowOutlet: [{\n type: ViewChild,\n args: [FooterRowOutlet, { static: true }]\n }], _noDataRowOutlet: [{\n type: ViewChild,\n args: [NoDataRowOutlet, { static: true }]\n }], _contentColumnDefs: [{\n type: ContentChildren,\n args: [CdkColumnDef, { descendants: true }]\n }], _contentRowDefs: [{\n type: ContentChildren,\n args: [CdkRowDef, { descendants: true }]\n }], _contentHeaderRowDefs: [{\n type: ContentChildren,\n args: [CdkHeaderRowDef, {\n descendants: true,\n }]\n }], _contentFooterRowDefs: [{\n type: ContentChildren,\n args: [CdkFooterRowDef, {\n descendants: true,\n }]\n }], _noDataRow: [{\n type: ContentChild,\n args: [CdkNoDataRow]\n }] } });\n/** Utility function that gets a merged list of the entries in an array and values of a Set. */\nfunction mergeArrayAndSet(array, set) {\n return array.concat(Array.from(set));\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 * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`
`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass CdkTextColumn {\n constructor(\n // `CdkTextColumn` is always requiring a table, but we just assert it manually\n // for better error reporting.\n // tslint:disable-next-line: lightweight-tokens\n _table, _options) {\n this._table = _table;\n this._options = _options;\n /** Alignment of the cell values. */\n this.justify = 'start';\n this._options = _options || {};\n }\n /** Column name that should be used to reference this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncColumnDefName();\n }\n ngOnInit() {\n this._syncColumnDefName();\n if (this.headerText === undefined) {\n this.headerText = this._createDefaultHeaderText();\n }\n if (!this.dataAccessor) {\n this.dataAccessor =\n this._options.defaultDataAccessor || ((data, name) => data[name]);\n }\n if (this._table) {\n // Provide the cell and headerCell directly to the table with the static `ViewChild` query,\n // since the columnDef will not pick up its content by the time the table finishes checking\n // its content and initializing the rows.\n this.columnDef.cell = this.cell;\n this.columnDef.headerCell = this.headerCell;\n this._table.addColumnDef(this.columnDef);\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTableTextColumnMissingParentTableError();\n }\n }\n ngOnDestroy() {\n if (this._table) {\n this._table.removeColumnDef(this.columnDef);\n }\n }\n /**\n * Creates a default header text. Use the options' header text transformation function if one\n * has been provided. Otherwise simply capitalize the column name.\n */\n _createDefaultHeaderText() {\n const name = this.name;\n if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableTextColumnMissingNameError();\n }\n if (this._options && this._options.defaultHeaderTextTransform) {\n return this._options.defaultHeaderTextTransform(name);\n }\n return name[0].toUpperCase() + name.slice(1);\n }\n /** Synchronizes the column definition name with the text column name. */\n _syncColumnDefName() {\n if (this.columnDef) {\n this.columnDef.name = this.name;\n }\n }\n}\nCdkTextColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: CdkTextColumn, deps: [{ token: CdkTable, optional: true }, { token: TEXT_COLUMN_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nCdkTextColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: CdkTextColumn, selector: \"cdk-text-column\", inputs: { name: \"name\", headerText: \"headerText\", dataAccessor: \"dataAccessor\", justify: \"justify\" }, viewQueries: [{ propertyName: \"columnDef\", first: true, predicate: CdkColumnDef, descendants: true, static: true }, { propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true, static: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true, static: true }], ngImport: i0, template: `\n \n
\\n\\n\", styles: [\".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}.cdk-high-contrast-active .mat-autocomplete-panel{outline:solid 1px}mat-autocomplete{display:none}\"] }]\n }], propDecorators: { optionGroups: [{\n type: ContentChildren,\n args: [MAT_OPTGROUP, { descendants: true }]\n }], options: [{\n type: ContentChildren,\n args: [MatOption, { descendants: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Base class containing all of the functionality for `MatAutocompleteOrigin`. */\nclass _MatAutocompleteOriginBase {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n}\n_MatAutocompleteOriginBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatAutocompleteOriginBase, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatAutocompleteOriginBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatAutocompleteOriginBase, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatAutocompleteOriginBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\nclass MatAutocompleteOrigin extends _MatAutocompleteOriginBase {\n}\nMatAutocompleteOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteOrigin, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatAutocompleteOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatAutocompleteOrigin, selector: \"[matAutocompleteOrigin]\", exportAs: [\"matAutocompleteOrigin\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[matAutocompleteOrigin]',\n exportAs: 'matAutocompleteOrigin',\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/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY = new InjectionToken('mat-autocomplete-scroll-strategy');\n/** @docs-private */\nfunction MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nconst MAT_AUTOCOMPLETE_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true,\n};\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nfunction getMatAutocompleteMissingPanelError() {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n \"you're attempting to open it after the ngAfterContentInit hook.\");\n}\n/** Base class with all of the `MatAutocompleteTrigger` functionality. */\nclass _MatAutocompleteTriggerBase {\n constructor(_element, _overlay, _viewContainerRef, _zone, _changeDetectorRef, scrollStrategy, _dir, _formField, _document, _viewportRuler, _defaults) {\n this._element = _element;\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._zone = _zone;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n this._formField = _formField;\n this._document = _document;\n this._viewportRuler = _viewportRuler;\n this._defaults = _defaults;\n this._componentDestroyed = false;\n this._autocompleteDisabled = false;\n /** Whether or not the label state is being overridden. */\n this._manuallyFloatingLabel = false;\n /** Subscription to viewport size changes. */\n this._viewportSubscription = Subscription.EMPTY;\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n this._canOpenOnNextFocus = true;\n /** Stream of keyboard events that can close the panel. */\n this._closeKeyEventStream = new Subject();\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n this._windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n };\n /** `View -> model callback called when value changes` */\n this._onChange = () => { };\n /** `View -> model callback called when autocomplete has been touched` */\n this._onTouched = () => { };\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n this.position = 'auto';\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n this.autocompleteAttribute = 'off';\n this._overlayAttached = false;\n /** Stream of changes to the selection state of the autocomplete options. */\n this.optionSelections = defer(() => {\n const options = this.autocomplete ? this.autocomplete.options : null;\n if (options) {\n return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));\n }\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._zone.onStable.pipe(take(1), switchMap(() => this.optionSelections));\n });\n this._scrollStrategy = scrollStrategy;\n }\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n get autocompleteDisabled() {\n return this._autocompleteDisabled;\n }\n set autocompleteDisabled(value) {\n this._autocompleteDisabled = coerceBooleanProperty(value);\n }\n ngAfterViewInit() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => window.addEventListener('blur', this._windowBlurHandler));\n }\n }\n ngOnChanges(changes) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n }\n }\n ngOnDestroy() {\n const window = this._getWindow();\n if (typeof window !== 'undefined') {\n window.removeEventListener('blur', this._windowBlurHandler);\n }\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n }\n /** Whether or not the autocomplete panel is open. */\n get panelOpen() {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n /** Opens the autocomplete suggestion panel. */\n openPanel() {\n this._attachOverlay();\n this._floatLabel();\n }\n /** Closes the autocomplete suggestion panel. */\n closePanel() {\n this._resetLabel();\n if (!this._overlayAttached) {\n return;\n }\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n // The `NgZone.onStable` always emits outside of the Angular zone,\n // so all the subscriptions from `_subscribeToClosingActions()` are also outside of the Angular zone.\n // We should manually run in Angular zone to update UI after panel closing.\n this._zone.run(() => {\n this.autocomplete.closed.emit();\n });\n }\n this.autocomplete._isOpen = this._overlayAttached = false;\n this._pendingAutoselectedOption = null;\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n }\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition() {\n if (this._overlayAttached) {\n this._overlayRef.updatePosition();\n }\n }\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions() {\n return merge(this.optionSelections, this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)), this._closeKeyEventStream, this._getOutsideClickStream(), this._overlayRef\n ? this._overlayRef.detachments().pipe(filter(() => this._overlayAttached))\n : of()).pipe(\n // Normalize the output so we return a consistent type.\n map(event => (event instanceof MatOptionSelectionChange ? event : null)));\n }\n /** The currently active option, coerced to MatOption type. */\n get activeOption() {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n return null;\n }\n /** Stream of clicks outside of the autocomplete panel. */\n _getOutsideClickStream() {\n return merge(fromEvent(this._document, 'click'), fromEvent(this._document, 'auxclick'), fromEvent(this._document, 'touchend')).pipe(filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = _getEventTarget(event);\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n return (this._overlayAttached &&\n clickTarget !== this._element.nativeElement &&\n // Normally focus moves inside `mousedown` so this condition will almost always be\n // true. Its main purpose is to handle the case where the input is focused from an\n // outside click which propagates up to the `body` listener within the same sequence\n // and causes the panel to close immediately (see #3106).\n this._document.activeElement !== this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!customOrigin || !customOrigin.contains(clickTarget)) &&\n !!this._overlayRef &&\n !this._overlayRef.overlayElement.contains(clickTarget));\n }));\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n Promise.resolve(null).then(() => this._assignOptionValue(value));\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._onChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this._element.nativeElement.disabled = isDisabled;\n }\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const hasModifier = hasModifierKey(event);\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE && !hasModifier) {\n event.preventDefault();\n }\n if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifier) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n }\n else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n if (keyCode === TAB || (isArrowKey && !hasModifier && this.panelOpen)) {\n this.autocomplete._keyManager.onKeydown(event);\n }\n else if (isArrowKey && this._canOpen()) {\n this.openPanel();\n }\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n if (this.autocomplete.autoSelectActiveOption && this.activeOption) {\n if (!this._pendingAutoselectedOption) {\n this._valueBeforeAutoSelection = this._element.nativeElement.value;\n }\n this._pendingAutoselectedOption = this.activeOption;\n this._assignOptionValue(this.activeOption.value);\n }\n }\n }\n }\n _handleInput(event) {\n let target = event.target;\n let value = target.value;\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._pendingAutoselectedOption = null;\n this._onChange(value);\n if (this._canOpen() && this._document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n _handleFocus() {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n }\n else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay();\n this._floatLabel(true);\n }\n }\n _handleClick() {\n if (this._canOpen() && !this.panelOpen) {\n this.openPanel();\n }\n }\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n _floatLabel(shouldAnimate = false) {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n }\n else {\n this._formField.floatLabel = 'always';\n }\n this._manuallyFloatingLabel = true;\n }\n }\n /** If the label has been manually elevated, return it to its normal state. */\n _resetLabel() {\n if (this._manuallyFloatingLabel) {\n this._formField.floatLabel = 'auto';\n this._manuallyFloatingLabel = false;\n }\n }\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n _subscribeToClosingActions() {\n const firstStable = this._zone.onStable.pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(tap(() => this._positionStrategy.reapplyLastPosition()), \n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0));\n // When the zone is stable initially, and when the option list changes...\n return (merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n // The `NgZone.onStable` always emits outside of the Angular zone, thus we have to re-enter\n // the Angular zone. This will lead to change detection being called outside of the Angular\n // zone and the `autocomplete.opened` will also emit outside of the Angular.\n this._zone.run(() => {\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this.autocomplete._setVisibility();\n this._changeDetectorRef.detectChanges();\n if (this.panelOpen) {\n this._overlayRef.updatePosition();\n }\n if (wasOpen !== this.panelOpen) {\n // If the `panelOpen` state changed, we need to make sure to emit the `opened` or\n // `closed` event, because we may not have emitted it. This can happen\n // - if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing,\n // - if the panel is closed after the user entered a string that did not match any\n // of the available options,\n // - if a valid string is entered after an invalid one.\n if (this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n else {\n this.autocomplete.closed.emit();\n }\n }\n });\n return this.panelClosingActions;\n }), \n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event)));\n }\n /** Destroys the autocomplete suggestion panel. */\n _destroyPanel() {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n _assignOptionValue(value) {\n const toDisplay = this.autocomplete && this.autocomplete.displayWith\n ? this.autocomplete.displayWith(value)\n : value;\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n this._updateNativeInputValue(toDisplay != null ? toDisplay : '');\n }\n _updateNativeInputValue(value) {\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = value;\n }\n else {\n this._element.nativeElement.value = value;\n }\n this._previousValue = value;\n }\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n _setValueAndClose(event) {\n const toSelect = event ? event.source : this._pendingAutoselectedOption;\n if (toSelect) {\n this._clearPreviousSelectedOption(toSelect);\n this._assignOptionValue(toSelect.value);\n this._onChange(toSelect.value);\n this.autocomplete._emitSelectEvent(toSelect);\n this._element.nativeElement.focus();\n }\n this.closePanel();\n }\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n _clearPreviousSelectedOption(skip) {\n this.autocomplete.options.forEach(option => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n _attachOverlay() {\n if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatAutocompleteMissingPanelError();\n }\n let overlayRef = this._overlayRef;\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template, this._viewContainerRef, {\n id: this._formField?.getLabelId(),\n });\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n this._handleOverlayEvents(overlayRef);\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n });\n }\n else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({ width: this._getPanelWidth() });\n }\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n const wasOpen = this.panelOpen;\n this.autocomplete._setVisibility();\n this.autocomplete._isOpen = this._overlayAttached = true;\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n _getOverlayConfig() {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir,\n panelClass: this._defaults?.overlayPanelClass,\n });\n }\n _getOverlayPosition() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false);\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n /** Sets the positions on a position strategy based on the directive's input state. */\n _setStrategyPositions(positionStrategy) {\n // Note that we provide horizontal fallback positions, even though by default the dropdown\n // width matches the input, because consumers can override the width. See #18854.\n const belowPositions = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n ];\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n const panelClass = this._aboveClass;\n const abovePositions = [\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', panelClass },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', panelClass },\n ];\n let positions;\n if (this.position === 'above') {\n positions = abovePositions;\n }\n else if (this.position === 'below') {\n positions = belowPositions;\n }\n else {\n positions = [...belowPositions, ...abovePositions];\n }\n positionStrategy.withPositions(positions);\n }\n _getConnectedElement() {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n _getPanelWidth() {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n /** Returns the width of the input element, so the panel width can match it. */\n _getHostWidth() {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n /**\n * Resets the active item to -1 so arrow events will activate the\n * correct options, or to 0 if the consumer opted into it.\n */\n _resetActiveItem() {\n const autocomplete = this.autocomplete;\n if (autocomplete.autoActiveFirstOption) {\n // Note that we go through `setFirstItemActive`, rather than `setActiveItem(0)`, because\n // the former will find the next enabled option, if the first one is disabled.\n autocomplete._keyManager.setFirstItemActive();\n }\n else {\n autocomplete._keyManager.setActiveItem(-1);\n }\n }\n /** Determines whether the panel can be opened. */\n _canOpen() {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document?.defaultView || window;\n }\n /** Scrolls to a particular option in the list. */\n _scrollToOption(index) {\n // Given that we are not actually focusing active options, we must manually adjust scroll\n // to reveal options below the fold. First, we find the offset of the option from the top\n // of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n // the panel height + the option height, so the active option will be just visible at the\n // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n // will become the offset. If that offset is visible within the panel already, the scrollTop is\n // not adjusted.\n const autocomplete = this.autocomplete;\n const labelCount = _countGroupLabelsBeforeOption(index, autocomplete.options, autocomplete.optionGroups);\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n autocomplete._setScrollTop(0);\n }\n else if (autocomplete.panel) {\n const option = autocomplete.options.toArray()[index];\n if (option) {\n const element = option._getHostElement();\n const newScrollPosition = _getOptionScrollPosition(element.offsetTop, element.offsetHeight, autocomplete._getScrollTop(), autocomplete.panel.nativeElement.offsetHeight);\n autocomplete._setScrollTop(newScrollPosition);\n }\n }\n }\n /** Handles keyboard events coming from the overlay panel. */\n _handleOverlayEvents(overlayRef) {\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n overlayRef.keydownEvents().subscribe(event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {\n // If the user had typed something in before we autoselected an option, and they decided\n // to cancel the selection, restore the input value to the one they had typed in.\n if (this._pendingAutoselectedOption) {\n this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');\n this._pendingAutoselectedOption = null;\n }\n this._closeKeyEventStream.next();\n this._resetActiveItem();\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n });\n // Subscribe to the pointer events stream so that it doesn't get picked up by other overlays.\n // TODO(crisbeto): we should switch `_getOutsideClickStream` eventually to use this stream,\n // but the behvior isn't exactly the same and it ends up breaking some internal tests.\n overlayRef.outsidePointerEvents().subscribe();\n }\n}\n_MatAutocompleteTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatAutocompleteTriggerBase, deps: [{ token: i0.ElementRef }, { token: i1$1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: MAT_AUTOCOMPLETE_SCROLL_STRATEGY }, { token: i2$1.Directionality, optional: true }, { token: MAT_FORM_FIELD, host: true, optional: true }, { token: DOCUMENT, optional: true }, { token: i3.ViewportRuler }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatAutocompleteTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatAutocompleteTriggerBase, inputs: { autocomplete: [\"matAutocomplete\", \"autocomplete\"], position: [\"matAutocompletePosition\", \"position\"], connectedTo: [\"matAutocompleteConnectedTo\", \"connectedTo\"], autocompleteAttribute: [\"autocomplete\", \"autocompleteAttribute\"], autocompleteDisabled: [\"matAutocompleteDisabled\", \"autocompleteDisabled\"] }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatAutocompleteTriggerBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY]\n }] }, { type: i2$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i4.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }, {\n type: Host\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_AUTOCOMPLETE_DEFAULT_OPTIONS]\n }] }]; }, propDecorators: { autocomplete: [{\n type: Input,\n args: ['matAutocomplete']\n }], position: [{\n type: Input,\n args: ['matAutocompletePosition']\n }], connectedTo: [{\n type: Input,\n args: ['matAutocompleteConnectedTo']\n }], autocompleteAttribute: [{\n type: Input,\n args: ['autocomplete']\n }], autocompleteDisabled: [{\n type: Input,\n args: ['matAutocompleteDisabled']\n }] } });\nclass MatAutocompleteTrigger extends _MatAutocompleteTriggerBase {\n constructor() {\n super(...arguments);\n this._aboveClass = 'mat-autocomplete-panel-above';\n }\n}\nMatAutocompleteTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatAutocompleteTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatAutocompleteTrigger, selector: \"input[matAutocomplete], textarea[matAutocomplete]\", host: { listeners: { \"focusin\": \"_handleFocus()\", \"blur\": \"_onTouched()\", \"input\": \"_handleInput($event)\", \"keydown\": \"_handleKeydown($event)\", \"click\": \"_handleClick()\" }, properties: { \"attr.autocomplete\": \"autocompleteAttribute\", \"attr.role\": \"autocompleteDisabled ? null : \\\"combobox\\\"\", \"attr.aria-autocomplete\": \"autocompleteDisabled ? null : \\\"list\\\"\", \"attr.aria-activedescendant\": \"(panelOpen && activeOption) ? activeOption.id : null\", \"attr.aria-expanded\": \"autocompleteDisabled ? null : panelOpen.toString()\", \"attr.aria-owns\": \"(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id\", \"attr.aria-haspopup\": \"autocompleteDisabled ? null : \\\"listbox\\\"\" }, classAttribute: \"mat-autocomplete-trigger\" }, providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: [\"matAutocompleteTrigger\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteTrigger, decorators: [{\n type: Directive,\n args: [{\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'class': 'mat-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\n '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n '[attr.aria-owns]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n '[attr.aria-haspopup]': 'autocompleteDisabled ? null : \"listbox\"',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n '(click)': '_handleClick()',\n },\n exportAs: 'matAutocompleteTrigger',\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR],\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 MatAutocompleteModule {\n}\nMatAutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteModule, declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule], exports: [MatAutocomplete,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n CdkScrollableModule,\n MatOptionModule,\n MatCommonModule] });\nMatAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteModule, providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule, CdkScrollableModule,\n MatOptionModule,\n MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatAutocompleteModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule],\n exports: [\n MatAutocomplete,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n CdkScrollableModule,\n MatOptionModule,\n MatCommonModule,\n ],\n declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin],\n providers: [MAT_AUTOCOMPLETE_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 * Generated bundle index. Do not edit.\n */\n\nexport { MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY, MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_AUTOCOMPLETE_VALUE_ACCESSOR, MatAutocomplete, MatAutocompleteModule, MatAutocompleteOrigin, MatAutocompleteSelectedEvent, MatAutocompleteTrigger, _MatAutocompleteBase, _MatAutocompleteOriginBase, _MatAutocompleteTriggerBase, getMatAutocompleteMissingPanelError };\n","import * as i0 from '@angular/core';\nimport { Directive, Input, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, NgModule } from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { MatCommonModule } from '@angular/material/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Content of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardContent {\n}\nMatCardContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardContent, selector: \"mat-card-content, [mat-card-content], [matCardContent]\", host: { classAttribute: \"mat-card-content\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardContent, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-card-content, [mat-card-content], [matCardContent]',\n host: { 'class': 'mat-card-content' },\n }]\n }] });\n/**\n * Title of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardTitle {\n}\nMatCardTitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardTitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardTitle, selector: \"mat-card-title, [mat-card-title], [matCardTitle]\", host: { classAttribute: \"mat-card-title\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardTitle, decorators: [{\n type: Directive,\n args: [{\n selector: `mat-card-title, [mat-card-title], [matCardTitle]`,\n host: {\n 'class': 'mat-card-title',\n },\n }]\n }] });\n/**\n * Sub-title of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardSubtitle {\n}\nMatCardSubtitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardSubtitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardSubtitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardSubtitle, selector: \"mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]\", host: { classAttribute: \"mat-card-subtitle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardSubtitle, decorators: [{\n type: Directive,\n args: [{\n selector: `mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]`,\n host: {\n 'class': 'mat-card-subtitle',\n },\n }]\n }] });\n/**\n * Action section of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardActions {\n constructor() {\n /** Position of the actions inside the card. */\n this.align = 'start';\n }\n}\nMatCardActions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardActions, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardActions.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardActions, selector: \"mat-card-actions\", inputs: { align: \"align\" }, host: { properties: { \"class.mat-card-actions-align-end\": \"align === \\\"end\\\"\" }, classAttribute: \"mat-card-actions\" }, exportAs: [\"matCardActions\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardActions, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-card-actions',\n exportAs: 'matCardActions',\n host: {\n 'class': 'mat-card-actions',\n '[class.mat-card-actions-align-end]': 'align === \"end\"',\n },\n }]\n }], propDecorators: { align: [{\n type: Input\n }] } });\n/**\n * Footer of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardFooter {\n}\nMatCardFooter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardFooter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardFooter, selector: \"mat-card-footer\", host: { classAttribute: \"mat-card-footer\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardFooter, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-card-footer',\n host: { 'class': 'mat-card-footer' },\n }]\n }] });\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardImage {\n}\nMatCardImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardImage, selector: \"[mat-card-image], [matCardImage]\", host: { classAttribute: \"mat-card-image\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-image], [matCardImage]',\n host: { 'class': 'mat-card-image' },\n }]\n }] });\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardSmImage {\n}\nMatCardSmImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardSmImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardSmImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardSmImage, selector: \"[mat-card-sm-image], [matCardImageSmall]\", host: { classAttribute: \"mat-card-sm-image\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardSmImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-sm-image], [matCardImageSmall]',\n host: { 'class': 'mat-card-sm-image' },\n }]\n }] });\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardMdImage {\n}\nMatCardMdImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardMdImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardMdImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardMdImage, selector: \"[mat-card-md-image], [matCardImageMedium]\", host: { classAttribute: \"mat-card-md-image\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardMdImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-md-image], [matCardImageMedium]',\n host: { 'class': 'mat-card-md-image' },\n }]\n }] });\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardLgImage {\n}\nMatCardLgImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardLgImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardLgImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardLgImage, selector: \"[mat-card-lg-image], [matCardImageLarge]\", host: { classAttribute: \"mat-card-lg-image\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardLgImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-lg-image], [matCardImageLarge]',\n host: { 'class': 'mat-card-lg-image' },\n }]\n }] });\n/**\n * Large image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardXlImage {\n}\nMatCardXlImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardXlImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardXlImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardXlImage, selector: \"[mat-card-xl-image], [matCardImageXLarge]\", host: { classAttribute: \"mat-card-xl-image\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardXlImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-xl-image], [matCardImageXLarge]',\n host: { 'class': 'mat-card-xl-image' },\n }]\n }] });\n/**\n * Avatar image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardAvatar {\n}\nMatCardAvatar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardAvatar, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardAvatar.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardAvatar, selector: \"[mat-card-avatar], [matCardAvatar]\", host: { classAttribute: \"mat-card-avatar\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardAvatar, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-avatar], [matCardAvatar]',\n host: { 'class': 'mat-card-avatar' },\n }]\n }] });\n/**\n * A basic content container component that adds the styles of a Material design card.\n *\n * While this component can be used alone, it also provides a number\n * of preset styles for common card sections, including:\n * - mat-card-title\n * - mat-card-subtitle\n * - mat-card-content\n * - mat-card-actions\n * - mat-card-footer\n */\nclass MatCard {\n // @breaking-change 9.0.0 `_animationMode` parameter to be made required.\n constructor(_animationMode) {\n this._animationMode = _animationMode;\n }\n}\nMatCard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCard, deps: [{ token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatCard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCard, selector: \"mat-card\", host: { properties: { \"class._mat-animation-noopable\": \"_animationMode === \\\"NoopAnimations\\\"\" }, classAttribute: \"mat-card mat-focus-indicator\" }, exportAs: [\"matCard\"], ngImport: i0, template: \"\\n\\n\", styles: [\".mat-card{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);display:block;position:relative;padding:16px;border-radius:4px}.mat-card._mat-animation-noopable{transition:none !important;animation:none !important}.mat-card>.mat-divider-horizontal{position:absolute;left:0;width:100%}[dir=rtl] .mat-card>.mat-divider-horizontal{left:auto;right:0}.mat-card>.mat-divider-horizontal.mat-divider-inset{position:static;margin:0}[dir=rtl] .mat-card>.mat-divider-horizontal.mat-divider-inset{margin-right:0}.cdk-high-contrast-active .mat-card{outline:solid 1px}.mat-card-actions,.mat-card-subtitle,.mat-card-content{display:block;margin-bottom:16px}.mat-card-title{display:block;margin-bottom:8px}.mat-card-actions{margin-left:-8px;margin-right:-8px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 32px);margin:0 -16px 16px -16px;display:block;overflow:hidden}.mat-card-image img{width:100%}.mat-card-footer{display:block;margin:0 -16px -16px -16px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button,.mat-card-actions .mat-stroked-button{margin:0 8px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header .mat-card-title{margin-bottom:12px}.mat-card-header-text{margin:0 16px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.mat-card-title-group{display:flex;justify-content:space-between}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-title-group>.mat-card-xl-image{margin:-8px 0 8px}@media(max-width: 599px){.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}}.mat-card>:first-child,.mat-card-content>:first-child{margin-top:0}.mat-card>:last-child:not(.mat-card-footer),.mat-card-content>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.mat-card>.mat-card-actions:last-child{margin-bottom:-8px;padding-bottom:0}.mat-card-actions:not(.mat-card-actions-align-end) .mat-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-raised-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-stroked-button:first-child{margin-left:0;margin-right:0}.mat-card-actions-align-end .mat-button:last-child,.mat-card-actions-align-end .mat-raised-button:last-child,.mat-card-actions-align-end .mat-stroked-button:last-child{margin-left:0;margin-right:0}.mat-card-title:not(:first-child),.mat-card-subtitle:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCard, decorators: [{\n type: Component,\n args: [{ selector: 'mat-card', exportAs: 'matCard', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n 'class': 'mat-card mat-focus-indicator',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n }, template: \"\\n\\n\", styles: [\".mat-card{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);display:block;position:relative;padding:16px;border-radius:4px}.mat-card._mat-animation-noopable{transition:none !important;animation:none !important}.mat-card>.mat-divider-horizontal{position:absolute;left:0;width:100%}[dir=rtl] .mat-card>.mat-divider-horizontal{left:auto;right:0}.mat-card>.mat-divider-horizontal.mat-divider-inset{position:static;margin:0}[dir=rtl] .mat-card>.mat-divider-horizontal.mat-divider-inset{margin-right:0}.cdk-high-contrast-active .mat-card{outline:solid 1px}.mat-card-actions,.mat-card-subtitle,.mat-card-content{display:block;margin-bottom:16px}.mat-card-title{display:block;margin-bottom:8px}.mat-card-actions{margin-left:-8px;margin-right:-8px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 32px);margin:0 -16px 16px -16px;display:block;overflow:hidden}.mat-card-image img{width:100%}.mat-card-footer{display:block;margin:0 -16px -16px -16px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button,.mat-card-actions .mat-stroked-button{margin:0 8px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header .mat-card-title{margin-bottom:12px}.mat-card-header-text{margin:0 16px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.mat-card-title-group{display:flex;justify-content:space-between}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-title-group>.mat-card-xl-image{margin:-8px 0 8px}@media(max-width: 599px){.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}}.mat-card>:first-child,.mat-card-content>:first-child{margin-top:0}.mat-card>:last-child:not(.mat-card-footer),.mat-card-content>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.mat-card>.mat-card-actions:last-child{margin-bottom:-8px;padding-bottom:0}.mat-card-actions:not(.mat-card-actions-align-end) .mat-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-raised-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-stroked-button:first-child{margin-left:0;margin-right:0}.mat-card-actions-align-end .mat-button:last-child,.mat-card-actions-align-end .mat-raised-button:last-child,.mat-card-actions-align-end .mat-stroked-button:last-child{margin-left:0;margin-right:0}.mat-card-title:not(:first-child),.mat-card-subtitle:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}\"] }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; } });\n/**\n * Component intended to be used within the `` component. It adds styles for a\n * preset header section (i.e. a title, subtitle, and avatar layout).\n * @docs-private\n */\nclass MatCardHeader {\n}\nMatCardHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMatCardHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardHeader, selector: \"mat-card-header\", host: { classAttribute: \"mat-card-header\" }, ngImport: i0, template: \"\\n
\\n\\n\" }]\n }] });\n/**\n * Component intended to be used within the `` component. It adds styles for a preset\n * layout that groups an image with a title section.\n * @docs-private\n */\nclass MatCardTitleGroup {\n}\nMatCardTitleGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardTitleGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMatCardTitleGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCardTitleGroup, selector: \"mat-card-title-group\", host: { classAttribute: \"mat-card-title-group\" }, ngImport: i0, template: \"
\\n\\n\\n\" }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatCardModule {\n}\nMatCardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatCardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardModule, declarations: [MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar], imports: [MatCommonModule], exports: [MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\n MatCommonModule] });\nMatCardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardModule, imports: [MatCommonModule, MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCardModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [\n MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\n MatCommonModule,\n ],\n declarations: [\n MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @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 { MatCard, MatCardActions, MatCardAvatar, MatCardContent, MatCardFooter, MatCardHeader, MatCardImage, MatCardLgImage, MatCardMdImage, MatCardModule, MatCardSmImage, MatCardSubtitle, MatCardTitle, MatCardTitleGroup, MatCardXlImage };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, Input, ContentChildren, Directive, NgModule } from '@angular/core';\nimport { setLines, MatLine, MatLineModule, MatCommonModule } from '@angular/material/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class for determining, from a list of tiles, the (row, col) position of each of those tiles\n * in the grid. This is necessary (rather than just rendering the tiles in normal document flow)\n * because the tiles can have a rowspan.\n *\n * The positioning algorithm greedily places each tile as soon as it encounters a gap in the grid\n * large enough to accommodate it so that the tiles still render in the same order in which they\n * are given.\n *\n * The basis of the algorithm is the use of an array to track the already placed tiles. Each\n * element of the array corresponds to a column, and the value indicates how many cells in that\n * column are already occupied; zero indicates an empty cell. Moving \"down\" to the next row\n * decrements each value in the tracking array (indicating that the column is one cell closer to\n * being free).\n *\n * @docs-private\n */\nclass TileCoordinator {\n constructor() {\n /** Index at which the search for the next gap will start. */\n this.columnIndex = 0;\n /** The current row index. */\n this.rowIndex = 0;\n }\n /** Gets the total number of rows occupied by tiles */\n get rowCount() {\n return this.rowIndex + 1;\n }\n /**\n * Gets the total span of rows occupied by tiles.\n * Ex: A list with 1 row that contains a tile with rowspan 2 will have a total rowspan of 2.\n */\n get rowspan() {\n const lastRowMax = Math.max(...this.tracker);\n // if any of the tiles has a rowspan that pushes it beyond the total row count,\n // add the difference to the rowcount\n return lastRowMax > 1 ? this.rowCount + lastRowMax - 1 : this.rowCount;\n }\n /**\n * Updates the tile positions.\n * @param numColumns Amount of columns in the grid.\n * @param tiles Tiles to be positioned.\n */\n update(numColumns, tiles) {\n this.columnIndex = 0;\n this.rowIndex = 0;\n this.tracker = new Array(numColumns);\n this.tracker.fill(0, 0, this.tracker.length);\n this.positions = tiles.map(tile => this._trackTile(tile));\n }\n /** Calculates the row and col position of a tile. */\n _trackTile(tile) {\n // Find a gap large enough for this tile.\n const gapStartIndex = this._findMatchingGap(tile.colspan);\n // Place tile in the resulting gap.\n this._markTilePosition(gapStartIndex, tile);\n // The next time we look for a gap, the search will start at columnIndex, which should be\n // immediately after the tile that has just been placed.\n this.columnIndex = gapStartIndex + tile.colspan;\n return new TilePosition(this.rowIndex, gapStartIndex);\n }\n /** Finds the next available space large enough to fit the tile. */\n _findMatchingGap(tileCols) {\n if (tileCols > this.tracker.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`mat-grid-list: tile with colspan ${tileCols} is wider than ` +\n `grid with cols=\"${this.tracker.length}\".`);\n }\n // Start index is inclusive, end index is exclusive.\n let gapStartIndex = -1;\n let gapEndIndex = -1;\n // Look for a gap large enough to fit the given tile. Empty spaces are marked with a zero.\n do {\n // If we've reached the end of the row, go to the next row.\n if (this.columnIndex + tileCols > this.tracker.length) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n // If there are no more empty spaces in this row at all, move on to the next row.\n if (gapStartIndex == -1) {\n this._nextRow();\n gapStartIndex = this.tracker.indexOf(0, this.columnIndex);\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n continue;\n }\n gapEndIndex = this._findGapEndIndex(gapStartIndex);\n // If a gap large enough isn't found, we want to start looking immediately after the current\n // gap on the next iteration.\n this.columnIndex = gapStartIndex + 1;\n // Continue iterating until we find a gap wide enough for this tile. Since gapEndIndex is\n // exclusive, gapEndIndex is 0 means we didn't find a gap and should continue.\n } while (gapEndIndex - gapStartIndex < tileCols || gapEndIndex == 0);\n // If we still didn't manage to find a gap, ensure that the index is\n // at least zero so the tile doesn't get pulled out of the grid.\n return Math.max(gapStartIndex, 0);\n }\n /** Move \"down\" to the next row. */\n _nextRow() {\n this.columnIndex = 0;\n this.rowIndex++;\n // Decrement all spaces by one to reflect moving down one row.\n for (let i = 0; i < this.tracker.length; i++) {\n this.tracker[i] = Math.max(0, this.tracker[i] - 1);\n }\n }\n /**\n * Finds the end index (exclusive) of a gap given the index from which to start looking.\n * The gap ends when a non-zero value is found.\n */\n _findGapEndIndex(gapStartIndex) {\n for (let i = gapStartIndex + 1; i < this.tracker.length; i++) {\n if (this.tracker[i] != 0) {\n return i;\n }\n }\n // The gap ends with the end of the row.\n return this.tracker.length;\n }\n /** Update the tile tracker to account for the given tile in the given space. */\n _markTilePosition(start, tile) {\n for (let i = 0; i < tile.colspan; i++) {\n this.tracker[start + i] = tile.rowspan;\n }\n }\n}\n/**\n * Simple data structure for tile position (row, col).\n * @docs-private\n */\nclass TilePosition {\n constructor(row, col) {\n this.row = row;\n this.col = col;\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 * Injection token used to provide a grid list to a tile and to avoid circular imports.\n * @docs-private\n */\nconst MAT_GRID_LIST = new InjectionToken('MAT_GRID_LIST');\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 MatGridTile {\n constructor(_element, _gridList) {\n this._element = _element;\n this._gridList = _gridList;\n this._rowspan = 1;\n this._colspan = 1;\n }\n /** Amount of rows that the grid tile takes up. */\n get rowspan() {\n return this._rowspan;\n }\n set rowspan(value) {\n this._rowspan = Math.round(coerceNumberProperty(value));\n }\n /** Amount of columns that the grid tile takes up. */\n get colspan() {\n return this._colspan;\n }\n set colspan(value) {\n this._colspan = Math.round(coerceNumberProperty(value));\n }\n /**\n * Sets the style of the grid-tile element. Needs to be set manually to avoid\n * \"Changed after checked\" errors that would occur with HostBinding.\n */\n _setStyle(property, value) {\n this._element.nativeElement.style[property] = value;\n }\n}\nMatGridTile.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridTile, deps: [{ token: i0.ElementRef }, { token: MAT_GRID_LIST, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatGridTile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatGridTile, selector: \"mat-grid-tile\", inputs: { rowspan: \"rowspan\", colspan: \"colspan\" }, host: { properties: { \"attr.rowspan\": \"rowspan\", \"attr.colspan\": \"colspan\" }, classAttribute: \"mat-grid-tile\" }, exportAs: [\"matGridTile\"], ngImport: i0, template: \"
\\n \\n
\\n\", styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridTile, decorators: [{\n type: Component,\n args: [{ selector: 'mat-grid-tile', exportAs: 'matGridTile', host: {\n 'class': 'mat-grid-tile',\n // Ensures that the \"rowspan\" and \"colspan\" input value is reflected in\n // the DOM. This is needed for the grid-tile harness.\n '[attr.rowspan]': 'rowspan',\n '[attr.colspan]': 'colspan',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"
\\n\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { _lines: [{\n type: ContentChildren,\n args: [MatLine, { descendants: true }]\n }] } });\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nclass MatGridAvatarCssMatStyler {\n}\nMatGridAvatarCssMatStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridAvatarCssMatStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatGridAvatarCssMatStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatGridAvatarCssMatStyler, selector: \"[mat-grid-avatar], [matGridAvatar]\", host: { classAttribute: \"mat-grid-avatar\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridAvatarCssMatStyler, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-grid-avatar], [matGridAvatar]',\n host: { 'class': 'mat-grid-avatar' },\n }]\n }] });\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nclass MatGridTileHeaderCssMatStyler {\n}\nMatGridTileHeaderCssMatStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridTileHeaderCssMatStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatGridTileHeaderCssMatStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatGridTileHeaderCssMatStyler, selector: \"mat-grid-tile-header\", host: { classAttribute: \"mat-grid-tile-header\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridTileHeaderCssMatStyler, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-grid-tile-header',\n host: { 'class': 'mat-grid-tile-header' },\n }]\n }] });\n/**\n * Directive whose purpose is to add the mat- CSS styling to this selector.\n * @docs-private\n */\nclass MatGridTileFooterCssMatStyler {\n}\nMatGridTileFooterCssMatStyler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridTileFooterCssMatStyler, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatGridTileFooterCssMatStyler.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatGridTileFooterCssMatStyler, selector: \"mat-grid-tile-footer\", host: { classAttribute: \"mat-grid-tile-footer\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridTileFooterCssMatStyler, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-grid-tile-footer',\n host: { 'class': 'mat-grid-tile-footer' },\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 * RegExp that can be used to check whether a value will\n * be allowed inside a CSS `calc()` expression.\n */\nconst cssCalcAllowedValue = /^-?\\d+((\\.\\d+)?[A-Za-z%$]?)+$/;\n/**\n * Sets the style properties for an individual tile, given the position calculated by the\n * Tile Coordinator.\n * @docs-private\n */\nclass TileStyler {\n constructor() {\n this._rows = 0;\n this._rowspan = 0;\n }\n /**\n * Adds grid-list layout info once it is available. Cannot be processed in the constructor\n * because these properties haven't been calculated by that point.\n *\n * @param gutterSize Size of the grid's gutter.\n * @param tracker Instance of the TileCoordinator.\n * @param cols Amount of columns in the grid.\n * @param direction Layout direction of the grid.\n */\n init(gutterSize, tracker, cols, direction) {\n this._gutterSize = normalizeUnits(gutterSize);\n this._rows = tracker.rowCount;\n this._rowspan = tracker.rowspan;\n this._cols = cols;\n this._direction = direction;\n }\n /**\n * Computes the amount of space a single 1x1 tile would take up (width or height).\n * Used as a basis for other calculations.\n * @param sizePercent Percent of the total grid-list space that one 1x1 tile would take up.\n * @param gutterFraction Fraction of the gutter size taken up by one 1x1 tile.\n * @return The size of a 1x1 tile as an expression that can be evaluated via CSS calc().\n */\n getBaseTileSize(sizePercent, gutterFraction) {\n // Take the base size percent (as would be if evenly dividing the size between cells),\n // and then subtracting the size of one gutter. However, since there are no gutters on the\n // edges, each tile only uses a fraction (gutterShare = numGutters / numCells) of the gutter\n // size. (Imagine having one gutter per tile, and then breaking up the extra gutter on the\n // edge evenly among the cells).\n return `(${sizePercent}% - (${this._gutterSize} * ${gutterFraction}))`;\n }\n /**\n * Gets The horizontal or vertical position of a tile, e.g., the 'top' or 'left' property value.\n * @param offset Number of tiles that have already been rendered in the row/column.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @return Position of the tile as a CSS calc() expression.\n */\n getTilePosition(baseSize, offset) {\n // The position comes the size of a 1x1 tile plus gutter for each previous tile in the\n // row/column (offset).\n return offset === 0 ? '0' : calc(`(${baseSize} + ${this._gutterSize}) * ${offset}`);\n }\n /**\n * Gets the actual size of a tile, e.g., width or height, taking rowspan or colspan into account.\n * @param baseSize Base size of a 1x1 tile (as computed in getBaseTileSize).\n * @param span The tile's rowspan or colspan.\n * @return Size of the tile as a CSS calc() expression.\n */\n getTileSize(baseSize, span) {\n return `(${baseSize} * ${span}) + (${span - 1} * ${this._gutterSize})`;\n }\n /**\n * Sets the style properties to be applied to a tile for the given row and column index.\n * @param tile Tile to which to apply the styling.\n * @param rowIndex Index of the tile's row.\n * @param colIndex Index of the tile's column.\n */\n setStyle(tile, rowIndex, colIndex) {\n // Percent of the available horizontal space that one column takes up.\n let percentWidthPerTile = 100 / this._cols;\n // Fraction of the vertical gutter size that each column takes up.\n // For example, if there are 5 columns, each column uses 4/5 = 0.8 times the gutter width.\n let gutterWidthFractionPerTile = (this._cols - 1) / this._cols;\n this.setColStyles(tile, colIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n this.setRowStyles(tile, rowIndex, percentWidthPerTile, gutterWidthFractionPerTile);\n }\n /** Sets the horizontal placement of the tile in the list. */\n setColStyles(tile, colIndex, percentWidth, gutterWidth) {\n // Base horizontal size of a column.\n let baseTileWidth = this.getBaseTileSize(percentWidth, gutterWidth);\n // The width and horizontal position of each tile is always calculated the same way, but the\n // height and vertical position depends on the rowMode.\n let side = this._direction === 'rtl' ? 'right' : 'left';\n tile._setStyle(side, this.getTilePosition(baseTileWidth, colIndex));\n tile._setStyle('width', calc(this.getTileSize(baseTileWidth, tile.colspan)));\n }\n /**\n * Calculates the total size taken up by gutters across one axis of a list.\n */\n getGutterSpan() {\n return `${this._gutterSize} * (${this._rowspan} - 1)`;\n }\n /**\n * Calculates the total size taken up by tiles across one axis of a list.\n * @param tileHeight Height of the tile.\n */\n getTileSpan(tileHeight) {\n return `${this._rowspan} * ${this.getTileSize(tileHeight, 1)}`;\n }\n /**\n * Calculates the computed height and returns the correct style property to set.\n * This method can be implemented by each type of TileStyler.\n * @docs-private\n */\n getComputedHeight() {\n return null;\n }\n}\n/**\n * This type of styler is instantiated when the user passes in a fixed row height.\n * Example ``\n * @docs-private\n */\nclass FixedTileStyler extends TileStyler {\n constructor(fixedRowHeight) {\n super();\n this.fixedRowHeight = fixedRowHeight;\n }\n init(gutterSize, tracker, cols, direction) {\n super.init(gutterSize, tracker, cols, direction);\n this.fixedRowHeight = normalizeUnits(this.fixedRowHeight);\n if (!cssCalcAllowedValue.test(this.fixedRowHeight) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid value \"${this.fixedRowHeight}\" set as rowHeight.`);\n }\n }\n setRowStyles(tile, rowIndex) {\n tile._setStyle('top', this.getTilePosition(this.fixedRowHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(this.fixedRowHeight, tile.rowspan)));\n }\n getComputedHeight() {\n return ['height', calc(`${this.getTileSpan(this.fixedRowHeight)} + ${this.getGutterSpan()}`)];\n }\n reset(list) {\n list._setListStyle(['height', null]);\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n/**\n * This type of styler is instantiated when the user passes in a width:height ratio\n * for the row height. Example ``\n * @docs-private\n */\nclass RatioTileStyler extends TileStyler {\n constructor(value) {\n super();\n this._parseRatio(value);\n }\n setRowStyles(tile, rowIndex, percentWidth, gutterWidth) {\n let percentHeightPerTile = percentWidth / this.rowHeightRatio;\n this.baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterWidth);\n // Use padding-top and margin-top to maintain the given aspect ratio, as\n // a percentage-based value for these properties is applied versus the *width* of the\n // containing block. See http://www.w3.org/TR/CSS2/box.html#margin-properties\n tile._setStyle('marginTop', this.getTilePosition(this.baseTileHeight, rowIndex));\n tile._setStyle('paddingTop', calc(this.getTileSize(this.baseTileHeight, tile.rowspan)));\n }\n getComputedHeight() {\n return [\n 'paddingBottom',\n calc(`${this.getTileSpan(this.baseTileHeight)} + ${this.getGutterSpan()}`),\n ];\n }\n reset(list) {\n list._setListStyle(['paddingBottom', null]);\n list._tiles.forEach(tile => {\n tile._setStyle('marginTop', null);\n tile._setStyle('paddingTop', null);\n });\n }\n _parseRatio(value) {\n const ratioParts = value.split(':');\n if (ratioParts.length !== 2 && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`mat-grid-list: invalid ratio given for row-height: \"${value}\"`);\n }\n this.rowHeightRatio = parseFloat(ratioParts[0]) / parseFloat(ratioParts[1]);\n }\n}\n/**\n * This type of styler is instantiated when the user selects a \"fit\" row height mode.\n * In other words, the row height will reflect the total height of the container divided\n * by the number of rows. Example ``\n *\n * @docs-private\n */\nclass FitTileStyler extends TileStyler {\n setRowStyles(tile, rowIndex) {\n // Percent of the available vertical space that one row takes up.\n let percentHeightPerTile = 100 / this._rowspan;\n // Fraction of the horizontal gutter size that each column takes up.\n let gutterHeightPerTile = (this._rows - 1) / this._rows;\n // Base vertical size of a column.\n let baseTileHeight = this.getBaseTileSize(percentHeightPerTile, gutterHeightPerTile);\n tile._setStyle('top', this.getTilePosition(baseTileHeight, rowIndex));\n tile._setStyle('height', calc(this.getTileSize(baseTileHeight, tile.rowspan)));\n }\n reset(list) {\n if (list._tiles) {\n list._tiles.forEach(tile => {\n tile._setStyle('top', null);\n tile._setStyle('height', null);\n });\n }\n }\n}\n/** Wraps a CSS string in a calc function */\nfunction calc(exp) {\n return `calc(${exp})`;\n}\n/** Appends pixels to a CSS string if no units are given. */\nfunction normalizeUnits(value) {\n return value.match(/([A-Za-z%]+)$/) ? value : `${value}px`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO(kara): Conditional (responsive) column count / row size.\n// TODO(kara): Re-layout on window resize / media change (debounced).\n// TODO(kara): gridTileHeader and gridTileFooter.\nconst MAT_FIT_MODE = 'fit';\nclass MatGridList {\n constructor(_element, _dir) {\n this._element = _element;\n this._dir = _dir;\n /** The amount of space between tiles. This will be something like '5px' or '2em'. */\n this._gutter = '1px';\n }\n /** Amount of columns in the grid list. */\n get cols() {\n return this._cols;\n }\n set cols(value) {\n this._cols = Math.max(1, Math.round(coerceNumberProperty(value)));\n }\n /** Size of the grid list's gutter in pixels. */\n get gutterSize() {\n return this._gutter;\n }\n set gutterSize(value) {\n this._gutter = `${value == null ? '' : value}`;\n }\n /** Set internal representation of row height from the user-provided value. */\n get rowHeight() {\n return this._rowHeight;\n }\n set rowHeight(value) {\n const newValue = `${value == null ? '' : value}`;\n if (newValue !== this._rowHeight) {\n this._rowHeight = newValue;\n this._setTileStyler(this._rowHeight);\n }\n }\n ngOnInit() {\n this._checkCols();\n this._checkRowHeight();\n }\n /**\n * The layout calculation is fairly cheap if nothing changes, so there's little cost\n * to run it frequently.\n */\n ngAfterContentChecked() {\n this._layoutTiles();\n }\n /** Throw a friendly error if cols property is missing */\n _checkCols() {\n if (!this.cols && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`mat-grid-list: must pass in number of columns. ` + `Example: `);\n }\n }\n /** Default to equal width:height if rowHeight property is missing */\n _checkRowHeight() {\n if (!this._rowHeight) {\n this._setTileStyler('1:1');\n }\n }\n /** Creates correct Tile Styler subtype based on rowHeight passed in by user */\n _setTileStyler(rowHeight) {\n if (this._tileStyler) {\n this._tileStyler.reset(this);\n }\n if (rowHeight === MAT_FIT_MODE) {\n this._tileStyler = new FitTileStyler();\n }\n else if (rowHeight && rowHeight.indexOf(':') > -1) {\n this._tileStyler = new RatioTileStyler(rowHeight);\n }\n else {\n this._tileStyler = new FixedTileStyler(rowHeight);\n }\n }\n /** Computes and applies the size and position for all children grid tiles. */\n _layoutTiles() {\n if (!this._tileCoordinator) {\n this._tileCoordinator = new TileCoordinator();\n }\n const tracker = this._tileCoordinator;\n const tiles = this._tiles.filter(tile => !tile._gridList || tile._gridList === this);\n const direction = this._dir ? this._dir.value : 'ltr';\n this._tileCoordinator.update(this.cols, tiles);\n this._tileStyler.init(this.gutterSize, tracker, this.cols, direction);\n tiles.forEach((tile, index) => {\n const pos = tracker.positions[index];\n this._tileStyler.setStyle(tile, pos.row, pos.col);\n });\n this._setListStyle(this._tileStyler.getComputedHeight());\n }\n /** Sets style on the main grid-list element, given the style name and value. */\n _setListStyle(style) {\n if (style) {\n this._element.nativeElement.style[style[0]] = style[1];\n }\n }\n}\nMatGridList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridList, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatGridList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatGridList, selector: \"mat-grid-list\", inputs: { cols: \"cols\", gutterSize: \"gutterSize\", rowHeight: \"rowHeight\" }, host: { properties: { \"attr.cols\": \"cols\" }, classAttribute: \"mat-grid-list\" }, providers: [\n {\n provide: MAT_GRID_LIST,\n useExisting: MatGridList,\n },\n ], queries: [{ propertyName: \"_tiles\", predicate: MatGridTile, descendants: true }], exportAs: [\"matGridList\"], ngImport: i0, template: \"
\\n \\n
\", styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridList, decorators: [{\n type: Component,\n args: [{ selector: 'mat-grid-list', exportAs: 'matGridList', host: {\n 'class': 'mat-grid-list',\n // Ensures that the \"cols\" input value is reflected in the DOM. This is\n // needed for the grid-list harness.\n '[attr.cols]': 'cols',\n }, providers: [\n {\n provide: MAT_GRID_LIST,\n useExisting: MatGridList,\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: \"
\\n \\n
\", styles: [\".mat-grid-list{display:block;position:relative}.mat-grid-tile{display:block;position:absolute;overflow:hidden}.mat-grid-tile .mat-grid-tile-header,.mat-grid-tile .mat-grid-tile-footer{display:flex;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.38);overflow:hidden;padding:0 16px;position:absolute;left:0;right:0}.mat-grid-tile .mat-grid-tile-header>*,.mat-grid-tile .mat-grid-tile-footer>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-tile-header.mat-2-line,.mat-grid-tile .mat-grid-tile-footer.mat-2-line{height:68px}.mat-grid-tile .mat-grid-list-text{display:flex;flex-direction:column;flex:auto;box-sizing:border-box;overflow:hidden}.mat-grid-tile .mat-grid-list-text>*{margin:0;padding:0;font-weight:normal;font-size:inherit}.mat-grid-tile .mat-grid-list-text:empty{display:none}.mat-grid-tile .mat-grid-tile-header{top:0}.mat-grid-tile .mat-grid-tile-footer{bottom:0}.mat-grid-tile .mat-grid-avatar{padding-right:16px}[dir=rtl] .mat-grid-tile .mat-grid-avatar{padding-right:0;padding-left:16px}.mat-grid-tile .mat-grid-avatar:empty{display:none}.mat-grid-tile-content{top:0;left:0;right:0;bottom:0;position:absolute;display:flex;align-items:center;justify-content:center;height:100%;padding:0;margin:0}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { _tiles: [{\n type: ContentChildren,\n args: [MatGridTile, { descendants: true }]\n }], cols: [{\n type: Input\n }], gutterSize: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatGridListModule {\n}\nMatGridListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatGridListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridListModule, declarations: [MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler], imports: [MatLineModule, MatCommonModule], exports: [MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatCommonModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler] });\nMatGridListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridListModule, imports: [MatLineModule, MatCommonModule, MatLineModule,\n MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatGridListModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatLineModule, MatCommonModule],\n exports: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatLineModule,\n MatCommonModule,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler,\n ],\n declarations: [\n MatGridList,\n MatGridTile,\n MatGridTileText,\n MatGridTileHeaderCssMatStyler,\n MatGridTileFooterCssMatStyler,\n MatGridAvatarCssMatStyler,\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Privately exported for the grid-list harness.\nconst ɵTileCoordinator = TileCoordinator;\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 { MatGridAvatarCssMatStyler, MatGridList, MatGridListModule, MatGridTile, MatGridTileFooterCssMatStyler, MatGridTileHeaderCssMatStyler, MatGridTileText, ɵTileCoordinator };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, EventEmitter, Directive, Optional, Inject, Input, Output, Injectable, SkipSelf, Component, ViewEncapsulation, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport * as i3 from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SPACE, ENTER } from '@angular/cdk/keycodes';\nimport { mixinInitialized, mixinDisabled, AnimationDurations, AnimationCurves, MatCommonModule } from '@angular/material/core';\nimport { Subject, merge } from 'rxjs';\nimport { trigger, state, style, transition, animate, keyframes, query, animateChild } from '@angular/animations';\nimport * as i4 from '@angular/common';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @docs-private */\nfunction getSortDuplicateSortableIdError(id) {\n return Error(`Cannot have two MatSortables with the same id (${id}).`);\n}\n/** @docs-private */\nfunction getSortHeaderNotContainedWithinSortError() {\n return Error(`MatSortHeader must be placed within a parent element with the MatSort directive.`);\n}\n/** @docs-private */\nfunction getSortHeaderMissingIdError() {\n return Error(`MatSortHeader must be provided with a unique id.`);\n}\n/** @docs-private */\nfunction getSortInvalidDirectionError(direction) {\n return Error(`${direction} is not a valid sort direction ('asc' or 'desc').`);\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-sort`. */\nconst MAT_SORT_DEFAULT_OPTIONS = new InjectionToken('MAT_SORT_DEFAULT_OPTIONS');\n// Boilerplate for applying mixins to MatSort.\n/** @docs-private */\nconst _MatSortBase = mixinInitialized(mixinDisabled(class {\n}));\n/** Container for MatSortables to manage the sort state and provide default sort parameters. */\nclass MatSort extends _MatSortBase {\n constructor(_defaultOptions) {\n super();\n this._defaultOptions = _defaultOptions;\n /** Collection of all registered sortables that this directive manages. */\n this.sortables = new Map();\n /** Used to notify any child components listening to state changes. */\n this._stateChanges = new Subject();\n /**\n * The direction to set when an MatSortable is initially sorted.\n * May be overridden by the MatSortable's sort start.\n */\n this.start = 'asc';\n this._direction = '';\n /** Event emitted when the user changes either the active sort or sort direction. */\n this.sortChange = new EventEmitter();\n }\n /** The sort direction of the currently active MatSortable. */\n get direction() {\n return this._direction;\n }\n set direction(direction) {\n if (direction &&\n direction !== 'asc' &&\n direction !== 'desc' &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getSortInvalidDirectionError(direction);\n }\n this._direction = direction;\n }\n /**\n * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n * May be overridden by the MatSortable's disable clear input.\n */\n get disableClear() {\n return this._disableClear;\n }\n set disableClear(v) {\n this._disableClear = coerceBooleanProperty(v);\n }\n /**\n * Register function to be used by the contained MatSortables. Adds the MatSortable to the\n * collection of MatSortables.\n */\n register(sortable) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!sortable.id) {\n throw getSortHeaderMissingIdError();\n }\n if (this.sortables.has(sortable.id)) {\n throw getSortDuplicateSortableIdError(sortable.id);\n }\n }\n this.sortables.set(sortable.id, sortable);\n }\n /**\n * Unregister function to be used by the contained MatSortables. Removes the MatSortable from the\n * collection of contained MatSortables.\n */\n deregister(sortable) {\n this.sortables.delete(sortable.id);\n }\n /** Sets the active sort id and determines the new sort direction. */\n sort(sortable) {\n if (this.active != sortable.id) {\n this.active = sortable.id;\n this.direction = sortable.start ? sortable.start : this.start;\n }\n else {\n this.direction = this.getNextSortDirection(sortable);\n }\n this.sortChange.emit({ active: this.active, direction: this.direction });\n }\n /** Returns the next sort direction of the active sortable, checking for potential overrides. */\n getNextSortDirection(sortable) {\n if (!sortable) {\n return '';\n }\n // Get the sort direction cycle with the potential sortable overrides.\n const disableClear = sortable?.disableClear ?? this.disableClear ?? !!this._defaultOptions?.disableClear;\n let sortDirectionCycle = getSortDirectionCycle(sortable.start || this.start, disableClear);\n // Get and return the next direction in the cycle\n let nextDirectionIndex = sortDirectionCycle.indexOf(this.direction) + 1;\n if (nextDirectionIndex >= sortDirectionCycle.length) {\n nextDirectionIndex = 0;\n }\n return sortDirectionCycle[nextDirectionIndex];\n }\n ngOnInit() {\n this._markInitialized();\n }\n ngOnChanges() {\n this._stateChanges.next();\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\nMatSort.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSort, deps: [{ token: MAT_SORT_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatSort.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatSort, selector: \"[matSort]\", inputs: { disabled: [\"matSortDisabled\", \"disabled\"], active: [\"matSortActive\", \"active\"], start: [\"matSortStart\", \"start\"], direction: [\"matSortDirection\", \"direction\"], disableClear: [\"matSortDisableClear\", \"disableClear\"] }, outputs: { sortChange: \"matSortChange\" }, host: { classAttribute: \"mat-sort\" }, exportAs: [\"matSort\"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSort, decorators: [{\n type: Directive,\n args: [{\n selector: '[matSort]',\n exportAs: 'matSort',\n host: { 'class': 'mat-sort' },\n inputs: ['disabled: matSortDisabled'],\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_SORT_DEFAULT_OPTIONS]\n }] }]; }, propDecorators: { active: [{\n type: Input,\n args: ['matSortActive']\n }], start: [{\n type: Input,\n args: ['matSortStart']\n }], direction: [{\n type: Input,\n args: ['matSortDirection']\n }], disableClear: [{\n type: Input,\n args: ['matSortDisableClear']\n }], sortChange: [{\n type: Output,\n args: ['matSortChange']\n }] } });\n/** Returns the sort direction cycle to use given the provided parameters of order and clear. */\nfunction getSortDirectionCycle(start, disableClear) {\n let sortOrder = ['asc', 'desc'];\n if (start == 'desc') {\n sortOrder.reverse();\n }\n if (!disableClear) {\n sortOrder.push('');\n }\n return sortOrder;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst SORT_ANIMATION_TRANSITION = AnimationDurations.ENTERING + ' ' + AnimationCurves.STANDARD_CURVE;\n/**\n * Animations used by MatSort.\n * @docs-private\n */\nconst matSortAnimations = {\n /** Animation that moves the sort indicator. */\n indicator: trigger('indicator', [\n state('active-asc, asc', style({ transform: 'translateY(0px)' })),\n // 10px is the height of the sort indicator, minus the width of the pointers\n state('active-desc, desc', style({ transform: 'translateY(10px)' })),\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION)),\n ]),\n /** Animation that rotates the left pointer of the indicator based on the sorting direction. */\n leftPointer: trigger('leftPointer', [\n state('active-asc, asc', style({ transform: 'rotate(-45deg)' })),\n state('active-desc, desc', style({ transform: 'rotate(45deg)' })),\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION)),\n ]),\n /** Animation that rotates the right pointer of the indicator based on the sorting direction. */\n rightPointer: trigger('rightPointer', [\n state('active-asc, asc', style({ transform: 'rotate(45deg)' })),\n state('active-desc, desc', style({ transform: 'rotate(-45deg)' })),\n transition('active-asc <=> active-desc', animate(SORT_ANIMATION_TRANSITION)),\n ]),\n /** Animation that controls the arrow opacity. */\n arrowOpacity: trigger('arrowOpacity', [\n state('desc-to-active, asc-to-active, active', style({ opacity: 1 })),\n state('desc-to-hint, asc-to-hint, hint', style({ opacity: 0.54 })),\n state('hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void', style({ opacity: 0 })),\n // Transition between all states except for immediate transitions\n transition('* => asc, * => desc, * => active, * => hint, * => void', animate('0ms')),\n transition('* <=> *', animate(SORT_ANIMATION_TRANSITION)),\n ]),\n /**\n * Animation for the translation of the arrow as a whole. States are separated into two\n * groups: ones with animations and others that are immediate. Immediate states are asc, desc,\n * peek, and active. The other states define a specific animation (source-to-destination)\n * and are determined as a function of their prev user-perceived state and what the next state\n * should be.\n */\n arrowPosition: trigger('arrowPosition', [\n // Hidden Above => Hint Center\n transition('* => desc-to-hint, * => desc-to-active', animate(SORT_ANIMATION_TRANSITION, keyframes([style({ transform: 'translateY(-25%)' }), style({ transform: 'translateY(0)' })]))),\n // Hint Center => Hidden Below\n transition('* => hint-to-desc, * => active-to-desc', animate(SORT_ANIMATION_TRANSITION, keyframes([style({ transform: 'translateY(0)' }), style({ transform: 'translateY(25%)' })]))),\n // Hidden Below => Hint Center\n transition('* => asc-to-hint, * => asc-to-active', animate(SORT_ANIMATION_TRANSITION, keyframes([style({ transform: 'translateY(25%)' }), style({ transform: 'translateY(0)' })]))),\n // Hint Center => Hidden Above\n transition('* => hint-to-asc, * => active-to-asc', animate(SORT_ANIMATION_TRANSITION, keyframes([style({ transform: 'translateY(0)' }), style({ transform: 'translateY(-25%)' })]))),\n state('desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active', style({ transform: 'translateY(0)' })),\n state('hint-to-desc, active-to-desc, desc', style({ transform: 'translateY(-25%)' })),\n state('hint-to-asc, active-to-asc, asc', style({ transform: 'translateY(25%)' })),\n ]),\n /** Necessary trigger that calls animate on children animations. */\n allowChildren: trigger('allowChildren', [\n transition('* <=> *', [query('@*', animateChild(), { optional: true })]),\n ]),\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * To modify the labels and text displayed, create a new instance of MatSortHeaderIntl and\n * include it in a custom provider.\n */\nclass MatSortHeaderIntl {\n constructor() {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n this.changes = new Subject();\n }\n}\nMatSortHeaderIntl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSortHeaderIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMatSortHeaderIntl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSortHeaderIntl, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSortHeaderIntl, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** @docs-private */\nfunction MAT_SORT_HEADER_INTL_PROVIDER_FACTORY(parentIntl) {\n return parentIntl || new MatSortHeaderIntl();\n}\n/** @docs-private */\nconst MAT_SORT_HEADER_INTL_PROVIDER = {\n // If there is already an MatSortHeaderIntl available, use that. Otherwise, provide a new one.\n provide: MatSortHeaderIntl,\n deps: [[new Optional(), new SkipSelf(), MatSortHeaderIntl]],\n useFactory: MAT_SORT_HEADER_INTL_PROVIDER_FACTORY,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Boilerplate for applying mixins to the sort header.\n/** @docs-private */\nconst _MatSortHeaderBase = mixinDisabled(class {\n});\n/**\n * Applies sorting behavior (click to change sort) and styles to an element, including an\n * arrow to display the current sort direction.\n *\n * Must be provided with an id and contained within a parent MatSort directive.\n *\n * If used on header cells in a CdkTable, it will automatically default its id from its containing\n * column definition.\n */\nclass MatSortHeader extends _MatSortHeaderBase {\n constructor(\n /**\n * @deprecated `_intl` parameter isn't being used anymore and it'll be removed.\n * @breaking-change 13.0.0\n */\n _intl, _changeDetectorRef, \n // `MatSort` is not optionally injected, but just asserted manually w/ better error.\n // tslint:disable-next-line: lightweight-tokens\n _sort, _columnDef, _focusMonitor, _elementRef, \n /** @breaking-change 14.0.0 _ariaDescriber will be required. */\n _ariaDescriber, defaultOptions) {\n // Note that we use a string token for the `_columnDef`, because the value is provided both by\n // `material/table` and `cdk/table` and we can't have the CDK depending on Material,\n // and we want to avoid having the sort header depending on the CDK table because\n // of this single reference.\n super();\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._sort = _sort;\n this._columnDef = _columnDef;\n this._focusMonitor = _focusMonitor;\n this._elementRef = _elementRef;\n this._ariaDescriber = _ariaDescriber;\n /**\n * Flag set to true when the indicator should be displayed while the sort is not active. Used to\n * provide an affordance that the header is sortable by showing on focus and hover.\n */\n this._showIndicatorHint = false;\n /**\n * The view transition state of the arrow (translation/ opacity) - indicates its `from` and `to`\n * position through the animation. If animations are currently disabled, the fromState is removed\n * so that there is no animation displayed.\n */\n this._viewState = {};\n /** The direction the arrow should be facing according to the current state. */\n this._arrowDirection = '';\n /**\n * Whether the view state animation should show the transition between the `from` and `to` states.\n */\n this._disableViewStateAnimation = false;\n /** Sets the position of the arrow that displays when sorted. */\n this.arrowPosition = 'after';\n // Default the action description to \"Sort\" because it's better than nothing.\n // Without a description, the button's label comes from the sort header text content,\n // which doesn't give any indication that it performs a sorting operation.\n this._sortActionDescription = 'Sort';\n if (!_sort && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getSortHeaderNotContainedWithinSortError();\n }\n if (defaultOptions?.arrowPosition) {\n this.arrowPosition = defaultOptions?.arrowPosition;\n }\n this._handleStateChanges();\n }\n /**\n * Description applied to MatSortHeader's button element with aria-describedby. This text should\n * describe the action that will occur when the user clicks the sort header.\n */\n get sortActionDescription() {\n return this._sortActionDescription;\n }\n set sortActionDescription(value) {\n this._updateSortActionDescription(value);\n }\n /** Overrides the disable clear value of the containing MatSort for this MatSortable. */\n get disableClear() {\n return this._disableClear;\n }\n set disableClear(v) {\n this._disableClear = coerceBooleanProperty(v);\n }\n ngOnInit() {\n if (!this.id && this._columnDef) {\n this.id = this._columnDef.name;\n }\n // Initialize the direction of the arrow and set the view state to be immediately that state.\n this._updateArrowDirection();\n this._setAnimationTransitionState({\n toState: this._isSorted() ? 'active' : this._arrowDirection,\n });\n this._sort.register(this);\n this._sortButton = this._elementRef.nativeElement.querySelector('.mat-sort-header-container');\n this._updateSortActionDescription(this._sortActionDescription);\n }\n ngAfterViewInit() {\n // We use the focus monitor because we also want to style\n // things differently based on the focus origin.\n this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n const newState = !!origin;\n if (newState !== this._showIndicatorHint) {\n this._setIndicatorHintVisible(newState);\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._sort.deregister(this);\n this._rerenderSubscription.unsubscribe();\n }\n /**\n * Sets the \"hint\" state such that the arrow will be semi-transparently displayed as a hint to the\n * user showing what the active sort will become. If set to false, the arrow will fade away.\n */\n _setIndicatorHintVisible(visible) {\n // No-op if the sort header is disabled - should not make the hint visible.\n if (this._isDisabled() && visible) {\n return;\n }\n this._showIndicatorHint = visible;\n if (!this._isSorted()) {\n this._updateArrowDirection();\n if (this._showIndicatorHint) {\n this._setAnimationTransitionState({ fromState: this._arrowDirection, toState: 'hint' });\n }\n else {\n this._setAnimationTransitionState({ fromState: 'hint', toState: this._arrowDirection });\n }\n }\n }\n /**\n * Sets the animation transition view state for the arrow's position and opacity. If the\n * `disableViewStateAnimation` flag is set to true, the `fromState` will be ignored so that\n * no animation appears.\n */\n _setAnimationTransitionState(viewState) {\n this._viewState = viewState || {};\n // If the animation for arrow position state (opacity/translation) should be disabled,\n // remove the fromState so that it jumps right to the toState.\n if (this._disableViewStateAnimation) {\n this._viewState = { toState: viewState.toState };\n }\n }\n /** Triggers the sort on this sort header and removes the indicator hint. */\n _toggleOnInteraction() {\n this._sort.sort(this);\n // Do not show the animation if the header was already shown in the right position.\n if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n this._disableViewStateAnimation = true;\n }\n }\n _handleClick() {\n if (!this._isDisabled()) {\n this._sort.sort(this);\n }\n }\n _handleKeydown(event) {\n if (!this._isDisabled() && (event.keyCode === SPACE || event.keyCode === ENTER)) {\n event.preventDefault();\n this._toggleOnInteraction();\n }\n }\n /** Whether this MatSortHeader is currently sorted in either ascending or descending order. */\n _isSorted() {\n return (this._sort.active == this.id &&\n (this._sort.direction === 'asc' || this._sort.direction === 'desc'));\n }\n /** Returns the animation state for the arrow direction (indicator and pointers). */\n _getArrowDirectionState() {\n return `${this._isSorted() ? 'active-' : ''}${this._arrowDirection}`;\n }\n /** Returns the arrow position state (opacity, translation). */\n _getArrowViewState() {\n const fromState = this._viewState.fromState;\n return (fromState ? `${fromState}-to-` : '') + this._viewState.toState;\n }\n /**\n * Updates the direction the arrow should be pointing. If it is not sorted, the arrow should be\n * facing the start direction. Otherwise if it is sorted, the arrow should point in the currently\n * active sorted direction. The reason this is updated through a function is because the direction\n * should only be changed at specific times - when deactivated but the hint is displayed and when\n * the sort is active and the direction changes. Otherwise the arrow's direction should linger\n * in cases such as the sort becoming deactivated but we want to animate the arrow away while\n * preserving its direction, even though the next sort direction is actually different and should\n * only be changed once the arrow displays again (hint or activation).\n */\n _updateArrowDirection() {\n this._arrowDirection = this._isSorted() ? this._sort.direction : this.start || this._sort.start;\n }\n _isDisabled() {\n return this._sort.disabled || this.disabled;\n }\n /**\n * Gets the aria-sort attribute that should be applied to this sort header. If this header\n * is not sorted, returns null so that the attribute is removed from the host element. Aria spec\n * says that the aria-sort property should only be present on one header at a time, so removing\n * ensures this is true.\n */\n _getAriaSortAttribute() {\n if (!this._isSorted()) {\n return 'none';\n }\n return this._sort.direction == 'asc' ? 'ascending' : 'descending';\n }\n /** Whether the arrow inside the sort header should be rendered. */\n _renderArrow() {\n return !this._isDisabled() || this._isSorted();\n }\n _updateSortActionDescription(newDescription) {\n // We use AriaDescriber for the sort button instead of setting an `aria-label` because some\n // screen readers (notably VoiceOver) will read both the column header *and* the button's label\n // for every *cell* in the table, creating a lot of unnecessary noise.\n // If _sortButton is undefined, the component hasn't been initialized yet so there's\n // nothing to update in the DOM.\n if (this._sortButton) {\n // removeDescription will no-op if there is no existing message.\n // TODO(jelbourn): remove optional chaining when AriaDescriber is required.\n this._ariaDescriber?.removeDescription(this._sortButton, this._sortActionDescription);\n this._ariaDescriber?.describe(this._sortButton, newDescription);\n }\n this._sortActionDescription = newDescription;\n }\n /** Handles changes in the sorting state. */\n _handleStateChanges() {\n this._rerenderSubscription = merge(this._sort.sortChange, this._sort._stateChanges, this._intl.changes).subscribe(() => {\n if (this._isSorted()) {\n this._updateArrowDirection();\n // Do not show the animation if the header was already shown in the right position.\n if (this._viewState.toState === 'hint' || this._viewState.toState === 'active') {\n this._disableViewStateAnimation = true;\n }\n this._setAnimationTransitionState({ fromState: this._arrowDirection, toState: 'active' });\n this._showIndicatorHint = false;\n }\n // If this header was recently active and now no longer sorted, animate away the arrow.\n if (!this._isSorted() && this._viewState && this._viewState.toState === 'active') {\n this._disableViewStateAnimation = false;\n this._setAnimationTransitionState({ fromState: 'active', toState: this._arrowDirection });\n }\n this._changeDetectorRef.markForCheck();\n });\n }\n}\nMatSortHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSortHeader, deps: [{ token: MatSortHeaderIntl }, { token: i0.ChangeDetectorRef }, { token: MatSort, optional: true }, { token: 'MAT_SORT_HEADER_COLUMN_DEF', optional: true }, { token: i3.FocusMonitor }, { token: i0.ElementRef }, { token: i3.AriaDescriber, optional: true }, { token: MAT_SORT_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatSortHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatSortHeader, selector: \"[mat-sort-header]\", inputs: { disabled: \"disabled\", id: [\"mat-sort-header\", \"id\"], arrowPosition: \"arrowPosition\", start: \"start\", sortActionDescription: \"sortActionDescription\", disableClear: \"disableClear\" }, host: { listeners: { \"click\": \"_handleClick()\", \"keydown\": \"_handleKeydown($event)\", \"mouseenter\": \"_setIndicatorHintVisible(true)\", \"mouseleave\": \"_setIndicatorHintVisible(false)\" }, properties: { \"attr.aria-sort\": \"_getAriaSortAttribute()\", \"class.mat-sort-header-disabled\": \"_isDisabled()\" }, classAttribute: \"mat-sort-header\" }, exportAs: [\"matSortHeader\"], usesInheritance: true, ngImport: i0, template: \"\\n
\\n\", styles: [\".mat-sort-header-container{display:flex;cursor:pointer;align-items:center;letter-spacing:normal;outline:0}[mat-sort-header].cdk-keyboard-focused .mat-sort-header-container,[mat-sort-header].cdk-program-focused .mat-sort-header-container{border-bottom:solid 1px currentColor}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-container::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-sort-header-content{text-align:center;display:flex;align-items:center}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex;opacity:0}.mat-sort-header-arrow,[dir=rtl] .mat-sort-header-position-before .mat-sort-header-arrow{margin:0 0 0 6px}.mat-sort-header-position-before .mat-sort-header-arrow,[dir=rtl] .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.cdk-high-contrast-active .mat-sort-header-stem{width:0;border-left:solid 2px}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.cdk-high-contrast-active .mat-sort-header-pointer-middle{width:0;height:0;border-top:solid 2px;border-left:solid 2px}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}.cdk-high-contrast-active .mat-sort-header-pointer-left,.cdk-high-contrast-active .mat-sort-header-pointer-right{width:0;height:0;border-left:solid 6px;border-top:solid 2px}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}\"] }]\n }], ctorParameters: function () { return [{ type: MatSortHeaderIntl }, { type: i0.ChangeDetectorRef }, { type: MatSort, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: ['MAT_SORT_HEADER_COLUMN_DEF']\n }, {\n type: Optional\n }] }, { type: i3.FocusMonitor }, { type: i0.ElementRef }, { type: i3.AriaDescriber, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_SORT_DEFAULT_OPTIONS]\n }] }]; }, propDecorators: { id: [{\n type: Input,\n args: ['mat-sort-header']\n }], arrowPosition: [{\n type: Input\n }], start: [{\n type: Input\n }], sortActionDescription: [{\n type: Input\n }], disableClear: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass MatSortModule {\n}\nMatSortModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSortModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatSortModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSortModule, declarations: [MatSort, MatSortHeader], imports: [CommonModule, MatCommonModule], exports: [MatSort, MatSortHeader] });\nMatSortModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSortModule, providers: [MAT_SORT_HEADER_INTL_PROVIDER], imports: [CommonModule, MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatSortModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatCommonModule],\n exports: [MatSort, MatSortHeader],\n declarations: [MatSort, MatSortHeader],\n providers: [MAT_SORT_HEADER_INTL_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_SORT_DEFAULT_OPTIONS, MAT_SORT_HEADER_INTL_PROVIDER, MAT_SORT_HEADER_INTL_PROVIDER_FACTORY, MatSort, MatSortHeader, MatSortHeaderIntl, MatSortModule, matSortAnimations };\n","import * as i0 from '@angular/core';\nimport { Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/table';\nimport { CdkTable, CDK_TABLE, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, STICKY_POSITIONING_LISTENER, CDK_TABLE_TEMPLATE, CdkCellDef, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkHeaderCell, CdkFooterCell, CdkCell, CdkHeaderRowDef, CdkFooterRowDef, CdkRowDef, CdkHeaderRow, CDK_ROW_TEMPLATE, CdkFooterRow, CdkRow, CdkNoDataRow, CdkTextColumn, CdkTableModule, DataSource } from '@angular/cdk/table';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nimport { MatCommonModule } from '@angular/material/core';\nimport { _isNumberValue } from '@angular/cdk/coercion';\nimport { BehaviorSubject, Subject, merge, of, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass MatRecycleRows {\n}\nMatRecycleRows.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatRecycleRows.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatRecycleRows, selector: \"mat-table[recycleRows], table[mat-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRecycleRows, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-table[recycleRows], table[mat-table][recycleRows]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }] });\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\nclass MatTable extends CdkTable {\n constructor() {\n super(...arguments);\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n this.stickyCssClass = 'mat-table-sticky';\n /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n this.needsPositionStickyOnElement = false;\n }\n}\nMatTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTable, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatTable.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatTable, selector: \"mat-table, table[mat-table]\", host: { properties: { \"class.mat-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"mat-table\" }, providers: [\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: CdkTable, useExisting: MatTable },\n { provide: CDK_TABLE, useExisting: MatTable },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], exportAs: [\"matTable\"], usesInheritance: true, ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n \\n\", isInline: true, styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\"], dependencies: [{ kind: \"directive\", type: i1.DataRowOutlet, selector: \"[rowOutlet]\" }, { kind: \"directive\", type: i1.HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { kind: \"directive\", type: i1.FooterRowOutlet, selector: \"[footerRowOutlet]\" }, { kind: \"directive\", type: i1.NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTable, decorators: [{\n type: Component,\n args: [{ selector: 'mat-table, table[mat-table]', exportAs: 'matTable', template: CDK_TABLE_TEMPLATE, host: {\n 'class': 'mat-table',\n '[class.mat-table-fixed-layout]': 'fixedLayout',\n }, providers: [\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: CdkTable, useExisting: MatTable },\n { provide: CDK_TABLE, useExisting: MatTable },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, styles: [\"mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}table.mat-table{border-spacing:0}tr.mat-header-row{height:56px}tr.mat-row,tr.mat-footer-row{height:48px}th.mat-header-cell{text-align:left}[dir=rtl] th.mat-header-cell{text-align:right}th.mat-header-cell,td.mat-cell,td.mat-footer-cell{padding:0;border-bottom-width:1px;border-bottom-style:solid}th.mat-header-cell:first-of-type,td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] th.mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:first-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}th.mat-header-cell:last-of-type,td.mat-cell:last-of-type,td.mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] th.mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-cell:last-of-type:not(:only-of-type),[dir=rtl] td.mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}.mat-table-sticky{position:sticky !important}.mat-table-fixed-layout{table-layout:fixed}\"] }]\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 * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass MatCellDef extends CdkCellDef {\n}\nMatCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCellDef, selector: \"[matCellDef]\", providers: [{ provide: CdkCellDef, useExisting: MatCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matCellDef]',\n providers: [{ provide: CdkCellDef, useExisting: MatCellDef }],\n }]\n }] });\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass MatHeaderCellDef extends CdkHeaderCellDef {\n}\nMatHeaderCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatHeaderCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatHeaderCellDef, selector: \"[matHeaderCellDef]\", providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatHeaderCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matHeaderCellDef]',\n providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }],\n }]\n }] });\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass MatFooterCellDef extends CdkFooterCellDef {\n}\nMatFooterCellDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFooterCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterCellDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatFooterCellDef, selector: \"[matFooterCellDef]\", providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFooterCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matFooterCellDef]',\n providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }],\n }]\n }] });\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\nclass MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n /**\n * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n * In the future, this will only add \"mat-column-\" and columnCssClassName\n * will change from type string[] to string.\n * @docs-private\n */\n _updateColumnCssClassName() {\n super._updateColumnCssClassName();\n this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`);\n }\n}\nMatColumnDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatColumnDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatColumnDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatColumnDef, selector: \"[matColumnDef]\", inputs: { sticky: \"sticky\", name: [\"matColumnDef\", \"name\"] }, providers: [\n { provide: CdkColumnDef, useExisting: MatColumnDef },\n { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef },\n ], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatColumnDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matColumnDef]',\n inputs: ['sticky'],\n providers: [\n { provide: CdkColumnDef, useExisting: MatColumnDef },\n { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef },\n ],\n }]\n }], propDecorators: { name: [{\n type: Input,\n args: ['matColumnDef']\n }] } });\n/** Header cell template container that adds the right classes and role. */\nclass MatHeaderCell extends CdkHeaderCell {\n}\nMatHeaderCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatHeaderCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"mat-header-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatHeaderCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-header-cell',\n 'role': 'columnheader',\n },\n }]\n }] });\n/** Footer cell template container that adds the right classes and role. */\nclass MatFooterCell extends CdkFooterCell {\n}\nMatFooterCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFooterCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatFooterCell, selector: \"mat-footer-cell, td[mat-footer-cell]\", host: { attributes: { \"role\": \"gridcell\" }, classAttribute: \"mat-footer-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFooterCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-footer-cell',\n 'role': 'gridcell',\n },\n }]\n }] });\n/** Cell template container that adds the right classes and role. */\nclass MatCell extends CdkCell {\n}\nMatCell.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCell, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatCell.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatCell, selector: \"mat-cell, td[mat-cell]\", host: { attributes: { \"role\": \"gridcell\" }, classAttribute: \"mat-cell\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-cell',\n 'role': 'gridcell',\n },\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass MatHeaderRowDef extends CdkHeaderRowDef {\n}\nMatHeaderRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatHeaderRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatHeaderRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatHeaderRowDef, selector: \"[matHeaderRowDef]\", inputs: { columns: [\"matHeaderRowDef\", \"columns\"], sticky: [\"matHeaderRowDefSticky\", \"sticky\"] }, providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatHeaderRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matHeaderRowDef]',\n providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }],\n inputs: ['columns: matHeaderRowDef', 'sticky: matHeaderRowDefSticky'],\n }]\n }] });\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass MatFooterRowDef extends CdkFooterRowDef {\n}\nMatFooterRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFooterRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatFooterRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatFooterRowDef, selector: \"[matFooterRowDef]\", inputs: { columns: [\"matFooterRowDef\", \"columns\"], sticky: [\"matFooterRowDefSticky\", \"sticky\"] }, providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFooterRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matFooterRowDef]',\n providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }],\n inputs: ['columns: matFooterRowDef', 'sticky: matFooterRowDefSticky'],\n }]\n }] });\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass MatRowDef extends CdkRowDef {\n}\nMatRowDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatRowDef.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatRowDef, selector: \"[matRowDef]\", inputs: { columns: [\"matRowDefColumns\", \"columns\"], when: [\"matRowDefWhen\", \"when\"] }, providers: [{ provide: CdkRowDef, useExisting: MatRowDef }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matRowDef]',\n providers: [{ provide: CdkRowDef, useExisting: MatRowDef }],\n inputs: ['columns: matRowDefColumns', 'when: matRowDefWhen'],\n }]\n }] });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass MatHeaderRow extends CdkHeaderRow {\n}\nMatHeaderRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatHeaderRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatHeaderRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatHeaderRow, selector: \"mat-header-row, tr[mat-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-header-row\" }, providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }], exportAs: [\"matHeaderRow\"], usesInheritance: true, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatHeaderRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-header-row, tr[mat-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }],\n }]\n }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass MatFooterRow extends CdkFooterRow {\n}\nMatFooterRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFooterRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatFooterRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatFooterRow, selector: \"mat-footer-row, tr[mat-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-footer-row\" }, providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }], exportAs: [\"matFooterRow\"], usesInheritance: true, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatFooterRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }],\n }]\n }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass MatRow extends CdkRow {\n}\nMatRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRow, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatRow.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatRow, selector: \"mat-row, tr[mat-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-row\" }, providers: [{ provide: CdkRow, useExisting: MatRow }], exportAs: [\"matRow\"], usesInheritance: true, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: i1.CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-row, tr[mat-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'mat-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{ provide: CdkRow, useExisting: MatRow }],\n }]\n }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass MatNoDataRow extends CdkNoDataRow {\n constructor() {\n super(...arguments);\n this._contentClassName = 'mat-no-data-row';\n }\n}\nMatNoDataRow.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatNoDataRow, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nMatNoDataRow.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatNoDataRow, selector: \"ng-template[matNoDataRow]\", providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatNoDataRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[matNoDataRow]',\n providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }],\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 * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`
`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass MatTextColumn extends CdkTextColumn {\n}\nMatTextColumn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTextColumn, deps: null, target: i0.ɵɵFactoryTarget.Component });\nMatTextColumn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatTextColumn, selector: \"mat-text-column\", usesInheritance: true, ngImport: i0, template: `\n \n
\n \n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\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 */\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn,\n];\nclass MatTableModule {\n}\nMatTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTableModule, declarations: [\n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn], imports: [CdkTableModule, MatCommonModule], exports: [MatCommonModule, \n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn] });\nMatTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTableModule, imports: [CdkTableModule, MatCommonModule, MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkTableModule, MatCommonModule],\n exports: [MatCommonModule, EXPORTED_DECLARATIONS],\n declarations: EXPORTED_DECLARATIONS,\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 * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n/** Shared base class with MDC-based implementation. */\nclass _MatTableDataSource extends DataSource {\n constructor(initialData = []) {\n super();\n /** Stream emitting render data to the table (depends on ordered data changes). */\n this._renderData = new BehaviorSubject([]);\n /** Stream that emits when a new filter string is set on the data source. */\n this._filter = new BehaviorSubject('');\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n this._internalPageChanges = new Subject();\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n this._renderChangesSubscription = null;\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n this.sortingDataAccessor = (data, sortHeaderId) => {\n const value = data[sortHeaderId];\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we\n // leave them as strings. For more info: https://goo.gl/y5vbSg\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n return value;\n };\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n this.sortData = (data, sort) => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') {\n return data;\n }\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n // If there are data in the column that can be converted to a number,\n // it must be ensured that the rest of the data\n // is of the same type so as not to order incorrectly.\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n if (valueAType !== valueBType) {\n if (valueAType === 'number') {\n valueA += '';\n }\n if (valueBType === 'number') {\n valueB += '';\n }\n }\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n }\n else if (valueA < valueB) {\n comparatorResult = -1;\n }\n }\n else if (valueA != null) {\n comparatorResult = 1;\n }\n else if (valueB != null) {\n comparatorResult = -1;\n }\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n };\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n this.filterPredicate = (data, filter) => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data)\n .reduce((currentTerm, key) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + data[key] + '◬';\n }, '')\n .toLowerCase();\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n return dataStr.indexOf(transformedFilter) != -1;\n };\n this._data = new BehaviorSubject(initialData);\n this._updateChangeSubscription();\n }\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() {\n return this._data.value;\n }\n set data(data) {\n data = Array.isArray(data) ? data : [];\n this._data.next(data);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(data);\n }\n }\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter() {\n return this._filter.value;\n }\n set filter(filter) {\n this._filter.next(filter);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(this.data);\n }\n }\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort() {\n return this._sort;\n }\n set sort(sort) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n /**\n * Instance of the MatPaginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the MatPaginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator() {\n return this._paginator;\n }\n set paginator(paginator) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if MatSort and/or MatPaginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange = this._sort\n ? merge(this._sort.sortChange, this._sort.initialized)\n : of(null);\n const pageChange = this._paginator\n ? merge(this._paginator.page, this._internalPageChanges, this._paginator.initialized)\n : of(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter]).pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange]).pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterTermAccessor function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterTermAccessor.\n // May be overridden for customization.\n this.filteredData =\n this.filter == null || this.filter === ''\n ? data\n : data.filter(obj => this.filterPredicate(obj, this.filter));\n if (this.paginator) {\n this._updatePaginator(this.filteredData.length);\n }\n return this.filteredData;\n }\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data) {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) {\n return data;\n }\n return this.sortData(data.slice(), this.sort);\n }\n /**\n * Returns a paged slice of the provided data array according to the provided MatPaginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data) {\n if (!this.paginator) {\n return data;\n }\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n if (!paginator) {\n return;\n }\n paginator.length = filteredDataLength;\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() {\n if (!this._renderChangesSubscription) {\n this._updateChangeSubscription();\n }\n return this._renderData;\n }\n /**\n * Used by the MatTable. Called when it disconnects from the data source.\n * @docs-private\n */\n disconnect() {\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = null;\n }\n}\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterTermAccessor,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nclass MatTableDataSource extends _MatTableDataSource {\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 { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRecycleRows, MatRow, MatRowDef, MatTable, MatTableDataSource, MatTableModule, MatTextColumn, _MatTableDataSource };\n","import * as i7 from '@angular/cdk/a11y';\nimport { FocusKeyManager, A11yModule } from '@angular/cdk/a11y';\nimport * as i5 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport * as i2 from '@angular/cdk/portal';\nimport { CdkPortal, TemplatePortal, CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport * as i1$2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, ViewChild, Input, forwardRef, EventEmitter, Output, ContentChildren, QueryList, Attribute, NgModule } from '@angular/core';\nimport * as i4 from '@angular/material/core';\nimport { mixinDisabled, mixinColor, mixinDisableRipple, mixinTabIndex, MAT_RIPPLE_GLOBAL_OPTIONS, RippleRenderer, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { take, startWith, distinctUntilChanged, takeUntil, switchMap, skip, filter } from 'rxjs/operators';\nimport { Subject, Subscription, fromEvent, of, merge, EMPTY, Observable, timer } from 'rxjs';\nimport * as i1 from '@angular/cdk/bidi';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/scrolling';\nimport * as i3 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { hasModifierKey, SPACE, ENTER } from '@angular/cdk/keycodes';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token for the MatInkBar's Positioner. */\nconst _MAT_INK_BAR_POSITIONER = new InjectionToken('MatInkBarPositioner', {\n providedIn: 'root',\n factory: _MAT_INK_BAR_POSITIONER_FACTORY,\n});\n/**\n * The default positioner function for the MatInkBar.\n * @docs-private\n */\nfunction _MAT_INK_BAR_POSITIONER_FACTORY() {\n const method = (element) => ({\n left: element ? (element.offsetLeft || 0) + 'px' : '0',\n width: element ? (element.offsetWidth || 0) + 'px' : '0',\n });\n return method;\n}\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * @docs-private\n */\nclass MatInkBar {\n constructor(_elementRef, _ngZone, _inkBarPositioner, _animationMode) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._inkBarPositioner = _inkBarPositioner;\n this._animationMode = _animationMode;\n }\n /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param element\n */\n alignToElement(element) {\n this.show();\n // `onStable` might not run for a while if the zone has already stabilized.\n // Wrap the call in `NgZone.run` to ensure that it runs relatively soon.\n this._ngZone.run(() => {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n const positions = this._inkBarPositioner(element);\n const inkBar = this._elementRef.nativeElement;\n inkBar.style.left = positions.left;\n inkBar.style.width = positions.width;\n });\n });\n }\n /** Shows the ink bar. */\n show() {\n this._elementRef.nativeElement.style.visibility = 'visible';\n }\n /** Hides the ink bar. */\n hide() {\n this._elementRef.nativeElement.style.visibility = 'hidden';\n }\n}\nMatInkBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatInkBar, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: _MAT_INK_BAR_POSITIONER }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatInkBar.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatInkBar, selector: \"mat-ink-bar\", host: { properties: { \"class._mat-animation-noopable\": \"_animationMode === 'NoopAnimations'\" }, classAttribute: \"mat-ink-bar\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatInkBar, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-ink-bar',\n host: {\n 'class': 'mat-ink-bar',\n '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`,\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [_MAT_INK_BAR_POSITIONER]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\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 that can be used to reference instances of `MatTabContent`. It serves as\n * alternative token to the actual `MatTabContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_TAB_CONTENT = new InjectionToken('MatTabContent');\n/** Decorates the `ng-template` tags and reads out the template from it. */\nclass MatTabContent {\n constructor(/** Content for the tab. */ template) {\n this.template = template;\n }\n}\nMatTabContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatTabContent, selector: \"[matTabContent]\", providers: [{ provide: MAT_TAB_CONTENT, useExisting: MatTabContent }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTabContent]',\n providers: [{ provide: MAT_TAB_CONTENT, useExisting: MatTabContent }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\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 `MatTabLabel`. It serves as\n * alternative token to the actual `MatTabLabel` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_TAB_LABEL = new InjectionToken('MatTabLabel');\n/**\n * Used to provide a tab label to a tab without causing a circular dependency.\n * @docs-private\n */\nconst MAT_TAB = new InjectionToken('MAT_TAB');\n/** Used to flag tab labels for use with the portal directive */\nclass MatTabLabel extends CdkPortal {\n constructor(templateRef, viewContainerRef, _closestTab) {\n super(templateRef, viewContainerRef);\n this._closestTab = _closestTab;\n }\n}\nMatTabLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabLabel, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: MAT_TAB, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabLabel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatTabLabel, selector: \"[mat-tab-label], [matTabLabel]\", providers: [{ provide: MAT_TAB_LABEL, useExisting: MatTabLabel }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabLabel, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-tab-label], [matTabLabel]',\n providers: [{ provide: MAT_TAB_LABEL, useExisting: MatTabLabel }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TAB]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Boilerplate for applying mixins to MatTab.\n/** @docs-private */\nconst _MatTabBase = mixinDisabled(class {\n});\n/**\n * Used to provide a tab group to a tab without causing a circular dependency.\n * @docs-private\n */\nconst MAT_TAB_GROUP = new InjectionToken('MAT_TAB_GROUP');\nclass MatTab extends _MatTabBase {\n constructor(_viewContainerRef, _closestTabGroup) {\n super();\n this._viewContainerRef = _viewContainerRef;\n this._closestTabGroup = _closestTabGroup;\n /** Plain text label for the tab, used when there is no template label. */\n this.textLabel = '';\n /** Portal that will be the hosted content of the tab */\n this._contentPortal = null;\n /** Emits whenever the internal state of the tab changes. */\n this._stateChanges = new Subject();\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n this.position = null;\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n this.origin = null;\n /**\n * Whether the tab is currently active.\n */\n this.isActive = false;\n }\n /** Content for the tab label given by ``. */\n get templateLabel() {\n return this._templateLabel;\n }\n set templateLabel(value) {\n this._setTemplateLabelInput(value);\n }\n /** @docs-private */\n get content() {\n return this._contentPortal;\n }\n ngOnChanges(changes) {\n if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) {\n this._stateChanges.next();\n }\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n ngOnInit() {\n this._contentPortal = new TemplatePortal(this._explicitContent || this._implicitContent, this._viewContainerRef);\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setTemplateLabelInput(value) {\n // Only update the label if the query managed to find one. This works around an issue where a\n // user may have manually set `templateLabel` during creation mode, which would then get\n // clobbered by `undefined` when the query resolves. Also note that we check that the closest\n // tab matches the current one so that we don't pick up labels from nested tabs.\n if (value && value._closestTab === this) {\n this._templateLabel = value;\n }\n }\n}\nMatTab.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTab, deps: [{ token: i0.ViewContainerRef }, { token: MAT_TAB_GROUP, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatTab, selector: \"mat-tab\", inputs: { disabled: \"disabled\", textLabel: [\"label\", \"textLabel\"], ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], labelClass: \"labelClass\", bodyClass: \"bodyClass\" }, providers: [{ provide: MAT_TAB, useExisting: MatTab }], queries: [{ propertyName: \"templateLabel\", first: true, predicate: MAT_TAB_LABEL, descendants: true }, { propertyName: \"_explicitContent\", first: true, predicate: MAT_TAB_CONTENT, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: \"_implicitContent\", first: true, predicate: TemplateRef, descendants: true, static: true }], exportAs: [\"matTab\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"\\n\\n\", changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTab, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tab', inputs: ['disabled'], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, exportAs: 'matTab', providers: [{ provide: MAT_TAB, useExisting: MatTab }], template: \"\\n\\n\" }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TAB_GROUP]\n }, {\n type: Optional\n }] }]; }, propDecorators: { templateLabel: [{\n type: ContentChild,\n args: [MAT_TAB_LABEL]\n }], _explicitContent: [{\n type: ContentChild,\n args: [MAT_TAB_CONTENT, { read: TemplateRef, static: true }]\n }], _implicitContent: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], textLabel: [{\n type: Input,\n args: ['label']\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], labelClass: [{\n type: Input\n }], bodyClass: [{\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/**\n * Animations used by the Material tabs.\n * @docs-private\n */\nconst matTabsAnimations = {\n /** Animation translates a tab along the X axis. */\n translateTab: trigger('translateTab', [\n // Transitions to `none` instead of 0, because some browsers might blur the content.\n state('center, void, left-origin-center, right-origin-center', style({ transform: 'none' })),\n // If the tab is either on the left or right, we additionally add a `min-height` of 1px\n // in order to ensure that the element has a height before its state changes. This is\n // necessary because Chrome does seem to skip the transition in RTL mode if the element does\n // not have a static height and is not rendered. See related issue: #9465\n state('left', style({\n transform: 'translate3d(-100%, 0, 0)',\n minHeight: '1px',\n // Normally this is redundant since we detach the content from the DOM, but if the user\n // opted into keeping the content in the DOM, we have to hide it so it isn't focusable.\n visibility: 'hidden',\n })),\n state('right', style({\n transform: 'translate3d(100%, 0, 0)',\n minHeight: '1px',\n visibility: 'hidden',\n })),\n transition('* => left, * => right, left => center, right => center', animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({ transform: 'translate3d(-100%, 0, 0)', visibility: 'hidden' }),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)'),\n ]),\n transition('void => right-origin-center', [\n style({ transform: 'translate3d(100%, 0, 0)', visibility: 'hidden' }),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)'),\n ]),\n ]),\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The portal host directive for the contents of the tab.\n * @docs-private\n */\nclass MatTabBodyPortal extends CdkPortalOutlet {\n constructor(componentFactoryResolver, viewContainerRef, _host, _document) {\n super(componentFactoryResolver, viewContainerRef, _document);\n this._host = _host;\n /** Subscription to events for when the tab body begins centering. */\n this._centeringSub = Subscription.EMPTY;\n /** Subscription to events for when the tab body finishes leaving from center position. */\n this._leavingSub = Subscription.EMPTY;\n }\n /** Set initial visibility or set up subscription for changing visibility. */\n ngOnInit() {\n super.ngOnInit();\n this._centeringSub = this._host._beforeCentering\n .pipe(startWith(this._host._isCenterPosition(this._host._position)))\n .subscribe((isCentering) => {\n if (isCentering && !this.hasAttached()) {\n this.attach(this._host._content);\n }\n });\n this._leavingSub = this._host._afterLeavingCenter.subscribe(() => {\n if (!this._host.preserveContent) {\n this.detach();\n }\n });\n }\n /** Clean up centering subscription. */\n ngOnDestroy() {\n super.ngOnDestroy();\n this._centeringSub.unsubscribe();\n this._leavingSub.unsubscribe();\n }\n}\nMatTabBodyPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabBodyPortal, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: forwardRef(() => MatTabBody) }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabBodyPortal.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatTabBodyPortal, selector: \"[matTabBodyHost]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabBodyPortal, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTabBodyHost]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: MatTabBody, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatTabBody)]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/**\n * Base class with all of the `MatTabBody` functionality.\n * @docs-private\n */\nclass _MatTabBodyBase {\n constructor(_elementRef, _dir, changeDetectorRef) {\n this._elementRef = _elementRef;\n this._dir = _dir;\n /** Subscription to the directionality change observable. */\n this._dirChangeSubscription = Subscription.EMPTY;\n /** Emits when an animation on the tab is complete. */\n this._translateTabComplete = new Subject();\n /** Event emitted when the tab begins to animate towards the center as the active tab. */\n this._onCentering = new EventEmitter();\n /** Event emitted before the centering of the tab begins. */\n this._beforeCentering = new EventEmitter();\n /** Event emitted before the centering of the tab begins. */\n this._afterLeavingCenter = new EventEmitter();\n /** Event emitted when the tab completes its animation towards the center. */\n this._onCentered = new EventEmitter(true);\n // Note that the default value will always be overwritten by `MatTabBody`, but we need one\n // anyway to prevent the animations module from throwing an error if the body is used on its own.\n /** Duration for the tab's animation. */\n this.animationDuration = '500ms';\n /** Whether the tab's content should be kept in the DOM while it's off-screen. */\n this.preserveContent = false;\n if (_dir) {\n this._dirChangeSubscription = _dir.change.subscribe((dir) => {\n this._computePositionAnimationState(dir);\n changeDetectorRef.markForCheck();\n });\n }\n // Ensure that we get unique animation events, because the `.done` callback can get\n // invoked twice in some browsers. See https://github.com/angular/angular/issues/24084.\n this._translateTabComplete\n .pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n }))\n .subscribe(event => {\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(event.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n if (this._isCenterPosition(event.fromState) && !this._isCenterPosition(this._position)) {\n this._afterLeavingCenter.emit();\n }\n });\n }\n /** The shifted index position of the tab body, where zero represents the active center tab. */\n set position(position) {\n this._positionIndex = position;\n this._computePositionAnimationState();\n }\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n */\n ngOnInit() {\n if (this._position == 'center' && this.origin != null) {\n this._position = this._computePositionFromOrigin(this.origin);\n }\n }\n ngOnDestroy() {\n this._dirChangeSubscription.unsubscribe();\n this._translateTabComplete.complete();\n }\n _onTranslateTabStarted(event) {\n const isCentering = this._isCenterPosition(event.toState);\n this._beforeCentering.emit(isCentering);\n if (isCentering) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n }\n /** The text direction of the containing app. */\n _getLayoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the provided position state is considered center, regardless of origin. */\n _isCenterPosition(position) {\n return (position == 'center' || position == 'left-origin-center' || position == 'right-origin-center');\n }\n /** Computes the position state that will be used for the tab-body animation trigger. */\n _computePositionAnimationState(dir = this._getLayoutDirection()) {\n if (this._positionIndex < 0) {\n this._position = dir == 'ltr' ? 'left' : 'right';\n }\n else if (this._positionIndex > 0) {\n this._position = dir == 'ltr' ? 'right' : 'left';\n }\n else {\n this._position = 'center';\n }\n }\n /**\n * Computes the position state based on the specified origin position. This is used if the\n * tab is becoming visible immediately after creation.\n */\n _computePositionFromOrigin(origin) {\n const dir = this._getLayoutDirection();\n if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n return 'left-origin-center';\n }\n return 'right-origin-center';\n }\n}\n_MatTabBodyBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatTabBodyBase, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabBodyBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatTabBodyBase, inputs: { _content: [\"content\", \"_content\"], origin: \"origin\", animationDuration: \"animationDuration\", preserveContent: \"preserveContent\", position: \"position\" }, outputs: { _onCentering: \"_onCentering\", _beforeCentering: \"_beforeCentering\", _afterLeavingCenter: \"_afterLeavingCenter\", _onCentered: \"_onCentered\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatTabBodyBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _onCentering: [{\n type: Output\n }], _beforeCentering: [{\n type: Output\n }], _afterLeavingCenter: [{\n type: Output\n }], _onCentered: [{\n type: Output\n }], _content: [{\n type: Input,\n args: ['content']\n }], origin: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }], preserveContent: [{\n type: Input\n }], position: [{\n type: Input\n }] } });\n/**\n * Wrapper for the contents of a tab.\n * @docs-private\n */\nclass MatTabBody extends _MatTabBodyBase {\n constructor(elementRef, dir, changeDetectorRef) {\n super(elementRef, dir, changeDetectorRef);\n }\n}\nMatTabBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabBody, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatTabBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatTabBody, selector: \"mat-tab-body\", host: { classAttribute: \"mat-tab-body\" }, viewQueries: [{ propertyName: \"_portalHost\", first: true, predicate: CdkPortalOutlet, descendants: true }], usesInheritance: true, ngImport: i0, template: \"
\\n\", styles: [\".mat-tab-body-content{height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}.mat-tab-body-content[style*=\\\"visibility: hidden\\\"]{display:none}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { _portalHost: [{\n type: ViewChild,\n args: [CdkPortalOutlet]\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 that can be used to provide the default options the tabs module. */\nconst MAT_TABS_CONFIG = new InjectionToken('MAT_TABS_CONFIG');\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 MatTabLabelWrapper.\n/** @docs-private */\nconst _MatTabLabelWrapperBase = mixinDisabled(class {\n});\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * @docs-private\n */\nclass MatTabLabelWrapper extends _MatTabLabelWrapperBase {\n constructor(elementRef) {\n super();\n this.elementRef = elementRef;\n }\n /** Sets focus on the wrapper element */\n focus() {\n this.elementRef.nativeElement.focus();\n }\n getOffsetLeft() {\n return this.elementRef.nativeElement.offsetLeft;\n }\n getOffsetWidth() {\n return this.elementRef.nativeElement.offsetWidth;\n }\n}\nMatTabLabelWrapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabLabelWrapper, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabLabelWrapper.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatTabLabelWrapper, selector: \"[matTabLabelWrapper]\", inputs: { disabled: \"disabled\" }, host: { properties: { \"class.mat-tab-disabled\": \"disabled\", \"attr.aria-disabled\": \"!!disabled\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabLabelWrapper, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTabLabelWrapper]',\n inputs: ['disabled'],\n host: {\n '[class.mat-tab-disabled]': 'disabled',\n '[attr.aria-disabled]': '!!disabled',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\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/** Config used to bind passive event listeners */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n});\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nconst EXAGGERATED_OVERSCROLL = 60;\n/**\n * Amount of milliseconds to wait before starting to scroll the header automatically.\n * Set a little conservatively in order to handle fake events dispatched on touch devices.\n */\nconst HEADER_SCROLL_DELAY = 650;\n/**\n * Interval in milliseconds at which to scroll the header\n * while the user is holding their pointer.\n */\nconst HEADER_SCROLL_INTERVAL = 100;\n/**\n * Base class for a tab header that supported pagination.\n * @docs-private\n */\nclass MatPaginatedTabHeader {\n constructor(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform, _animationMode) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._viewportRuler = _viewportRuler;\n this._dir = _dir;\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._animationMode = _animationMode;\n /** The distance in pixels that the tab labels should be translated to the left. */\n this._scrollDistance = 0;\n /** Whether the header should scroll to the selected index after the view has been checked. */\n this._selectedIndexChanged = false;\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Whether the controls for pagination should be displayed */\n this._showPaginationControls = false;\n /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n this._disableScrollAfter = true;\n /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n this._disableScrollBefore = true;\n /** Stream that will stop the automated scrolling. */\n this._stopScrolling = new Subject();\n this._disablePagination = false;\n this._selectedIndex = 0;\n /** Event emitted when the option is selected. */\n this.selectFocusedIndex = new EventEmitter();\n /** Event emitted when a label is focused. */\n this.indexFocused = new EventEmitter();\n // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.\n _ngZone.runOutsideAngular(() => {\n fromEvent(_elementRef.nativeElement, 'mouseleave')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._stopInterval();\n });\n });\n }\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n get disablePagination() {\n return this._disablePagination;\n }\n set disablePagination(value) {\n this._disablePagination = coerceBooleanProperty(value);\n }\n /** The index of the active tab. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(value) {\n value = coerceNumberProperty(value);\n if (this._selectedIndex != value) {\n this._selectedIndexChanged = true;\n this._selectedIndex = value;\n if (this._keyManager) {\n this._keyManager.updateActiveItem(value);\n }\n }\n }\n ngAfterViewInit() {\n // We need to handle these events manually, because we want to bind passive event listeners.\n fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('before');\n });\n fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('after');\n });\n }\n ngAfterContentInit() {\n const dirChange = this._dir ? this._dir.change : of('ltr');\n const resize = this._viewportRuler.change(150);\n const realign = () => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n };\n this._keyManager = new FocusKeyManager(this._items)\n .withHorizontalOrientation(this._getLayoutDirection())\n .withHomeAndEnd()\n .withWrap();\n this._keyManager.updateActiveItem(this._selectedIndex);\n // Defer the first call in order to allow for slower browsers to lay out the elements.\n // This helps in cases where the user lands directly on a page with paginated tabs.\n // Note that we use `onStable` instead of `requestAnimationFrame`, because the latter\n // can hold up tests that are in a background tab.\n this._ngZone.onStable.pipe(take(1)).subscribe(realign);\n // On dir change or window resize, realign the ink bar and update the orientation of\n // the key manager if the direction has changed.\n merge(dirChange, resize, this._items.changes, this._itemsResized())\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n // We need to defer this to give the browser some time to recalculate\n // the element dimensions. The call has to be wrapped in `NgZone.run`,\n // because the viewport change handler runs outside of Angular.\n this._ngZone.run(() => {\n Promise.resolve().then(() => {\n // Clamp the scroll distance, because it can change with the number of tabs.\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), this._scrollDistance));\n realign();\n });\n });\n this._keyManager.withHorizontalOrientation(this._getLayoutDirection());\n });\n // If there is a change in the focus key manager we need to emit the `indexFocused`\n // event in order to provide a public event that notifies about focus changes. Also we realign\n // the tabs container by scrolling the new focused tab into the visible section.\n this._keyManager.change.pipe(takeUntil(this._destroyed)).subscribe(newFocusIndex => {\n this.indexFocused.emit(newFocusIndex);\n this._setTabFocus(newFocusIndex);\n });\n }\n /** Sends any changes that could affect the layout of the items. */\n _itemsResized() {\n if (typeof ResizeObserver !== 'function') {\n return EMPTY;\n }\n return this._items.changes.pipe(startWith(this._items), switchMap((tabItems) => new Observable((observer) => this._ngZone.runOutsideAngular(() => {\n const resizeObserver = new ResizeObserver(entries => observer.next(entries));\n tabItems.forEach(item => resizeObserver.observe(item.elementRef.nativeElement));\n return () => {\n resizeObserver.disconnect();\n };\n }))), \n // Skip the first emit since the resize observer emits when an item\n // is observed for new items when the tab is already inserted\n skip(1), \n // Skip emissions where all the elements are invisible since we don't want\n // the header to try and re-render with invalid measurements. See #25574.\n filter(entries => entries.some(e => e.contentRect.width > 0 && e.contentRect.height > 0)));\n }\n ngAfterContentChecked() {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount != this._items.length) {\n this.updatePagination();\n this._tabLabelCount = this._items.length;\n this._changeDetectorRef.markForCheck();\n }\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignInkBarToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._stopScrolling.complete();\n }\n /** Handles keyboard events on the header. */\n _handleKeydown(event) {\n // We don't handle any key bindings with a modifier key.\n if (hasModifierKey(event)) {\n return;\n }\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n if (this.focusIndex !== this.selectedIndex) {\n this.selectFocusedIndex.emit(this.focusIndex);\n this._itemSelected(event);\n }\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n }\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n _onContentChanges() {\n const textContent = this._elementRef.nativeElement.textContent;\n // We need to diff the text content of the header, because the MutationObserver callback\n // will fire even if the text content didn't change which is inefficient and is prone\n // to infinite loops if a poorly constructed expression is passed in (see #14249).\n if (textContent !== this._currentTextContent) {\n this._currentTextContent = textContent || '';\n // The content observer runs outside the `NgZone` by default, which\n // means that we need to bring the callback back in ourselves.\n this._ngZone.run(() => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n /**\n * Updates the view whether pagination should be enabled or not.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n }\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex() {\n return this._keyManager ? this._keyManager.activeItemIndex : 0;\n }\n /** When the focus index is set, we must manually send focus to the correct label */\n set focusIndex(value) {\n if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {\n return;\n }\n this._keyManager.setActiveItem(value);\n }\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n */\n _isValidIndex(index) {\n if (!this._items) {\n return true;\n }\n const tab = this._items ? this._items.toArray()[index] : null;\n return !!tab && !tab.disabled;\n }\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n */\n _setTabFocus(tabIndex) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n if (this._items && this._items.length) {\n this._items.toArray()[tabIndex].focus();\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n const containerEl = this._tabListContainer.nativeElement;\n const dir = this._getLayoutDirection();\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n }\n else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n }\n }\n }\n /** The layout direction of the containing app. */\n _getLayoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n _updateTabScrollPosition() {\n if (this.disablePagination) {\n return;\n }\n const scrollDistance = this.scrollDistance;\n const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n // and ripples will exceed the boundaries of the visible tab bar.\n // See: https://github.com/angular/components/issues/10276\n // We round the `transform` here, because transforms with sub-pixel precision cause some\n // browsers to blur the content of the element.\n this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\n // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing\n // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).\n if (this._platform.TRIDENT || this._platform.EDGE) {\n this._tabListContainer.nativeElement.scrollLeft = 0;\n }\n }\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n get scrollDistance() {\n return this._scrollDistance;\n }\n set scrollDistance(value) {\n this._scrollTo(value);\n }\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollHeader(direction) {\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n // Move the scroll distance one-third the length of the tab list's viewport.\n const scrollAmount = ((direction == 'before' ? -1 : 1) * viewLength) / 3;\n return this._scrollTo(this._scrollDistance + scrollAmount);\n }\n /** Handles click events on the pagination arrows. */\n _handlePaginatorClick(direction) {\n this._stopInterval();\n this._scrollHeader(direction);\n }\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollToLabel(labelIndex) {\n if (this.disablePagination) {\n return;\n }\n const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;\n if (!selectedLabel) {\n return;\n }\n // The view length is the visible width of the tab labels.\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n const { offsetLeft, offsetWidth } = selectedLabel.elementRef.nativeElement;\n let labelBeforePos, labelAfterPos;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = offsetLeft;\n labelAfterPos = labelBeforePos + offsetWidth;\n }\n else {\n labelAfterPos = this._tabListInner.nativeElement.offsetWidth - offsetLeft;\n labelBeforePos = labelAfterPos - offsetWidth;\n }\n const beforeVisiblePos = this.scrollDistance;\n const afterVisiblePos = this.scrollDistance + viewLength;\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n }\n else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n }\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkPaginationEnabled() {\n if (this.disablePagination) {\n this._showPaginationControls = false;\n }\n else {\n const isEnabled = this._tabListInner.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n this._showPaginationControls = isEnabled;\n }\n }\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkScrollingControls() {\n if (this.disablePagination) {\n this._disableScrollAfter = this._disableScrollBefore = true;\n }\n else {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance == 0;\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _getMaxScrollDistance() {\n const lengthOfTabList = this._tabListInner.nativeElement.scrollWidth;\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return lengthOfTabList - viewLength || 0;\n }\n /** Tells the ink-bar to align itself to the current label wrapper */\n _alignInkBarToSelectedTab() {\n const selectedItem = this._items && this._items.length ? this._items.toArray()[this.selectedIndex] : null;\n const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;\n if (selectedLabelWrapper) {\n this._inkBar.alignToElement(selectedLabelWrapper);\n }\n else {\n this._inkBar.hide();\n }\n }\n /** Stops the currently-running paginator interval. */\n _stopInterval() {\n this._stopScrolling.next();\n }\n /**\n * Handles the user pressing down on one of the paginators.\n * Starts scrolling the header after a certain amount of time.\n * @param direction In which direction the paginator should be scrolled.\n */\n _handlePaginatorPress(direction, mouseEvent) {\n // Don't start auto scrolling for right mouse button clicks. Note that we shouldn't have to\n // null check the `button`, but we do it so we don't break tests that use fake events.\n if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {\n return;\n }\n // Avoid overlapping timers.\n this._stopInterval();\n // Start a timer after the delay and keep firing based on the interval.\n timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\n // Keep the timer going until something tells it to stop or the component is destroyed.\n .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\n .subscribe(() => {\n const { maxScrollDistance, distance } = this._scrollHeader(direction);\n // Stop the timer if we've reached the start or the end.\n if (distance === 0 || distance >= maxScrollDistance) {\n this._stopInterval();\n }\n });\n }\n /**\n * Scrolls the header to a given position.\n * @param position Position to which to scroll.\n * @returns Information on the current scroll distance and the maximum.\n */\n _scrollTo(position) {\n if (this.disablePagination) {\n return { maxScrollDistance: 0, distance: 0 };\n }\n const maxScrollDistance = this._getMaxScrollDistance();\n this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n return { maxScrollDistance, distance: this._scrollDistance };\n }\n}\nMatPaginatedTabHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatPaginatedTabHeader, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatPaginatedTabHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatPaginatedTabHeader, inputs: { disablePagination: \"disablePagination\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatPaginatedTabHeader, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { disablePagination: [{\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/**\n * Base class with all of the `MatTabHeader` functionality.\n * @docs-private\n */\nclass _MatTabHeaderBase extends MatPaginatedTabHeader {\n constructor(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n this._disableRipple = false;\n }\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = coerceBooleanProperty(value);\n }\n _itemSelected(event) {\n event.preventDefault();\n }\n}\n_MatTabHeaderBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatTabHeaderBase, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabHeaderBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatTabHeaderBase, inputs: { disableRipple: \"disableRipple\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatTabHeaderBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { disableRipple: [{\n type: Input\n }] } });\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * @docs-private\n */\nclass MatTabHeader extends _MatTabHeaderBase {\n constructor(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n}\nMatTabHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabHeader, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTabHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatTabHeader, selector: \"mat-tab-header\", inputs: { selectedIndex: \"selectedIndex\" }, outputs: { selectFocusedIndex: \"selectFocusedIndex\", indexFocused: \"indexFocused\" }, host: { properties: { \"class.mat-tab-header-pagination-controls-enabled\": \"_showPaginationControls\", \"class.mat-tab-header-rtl\": \"_getLayoutDirection() == 'rtl'\" }, classAttribute: \"mat-tab-header\" }, queries: [{ propertyName: \"_items\", predicate: MatTabLabelWrapper }], viewQueries: [{ propertyName: \"_inkBar\", first: true, predicate: MatInkBar, descendants: true, static: true }, { propertyName: \"_tabListContainer\", first: true, predicate: [\"tabListContainer\"], descendants: true, static: true }, { propertyName: \"_tabList\", first: true, predicate: [\"tabList\"], descendants: true, static: true }, { propertyName: \"_tabListInner\", first: true, predicate: [\"tabListInner\"], descendants: true, static: true }, { propertyName: \"_nextPaginator\", first: true, predicate: [\"nextPaginator\"], descendants: true }, { propertyName: \"_previousPaginator\", first: true, predicate: [\"previousPaginator\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"\\n\\n
\\n\\n\\n\", styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-tab-header-pagination::-moz-focus-inner{border:0}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar._mat-animation-noopable{transition:none !important;animation:none !important}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-labels{display:flex}[mat-align-tabs=center]>.mat-tab-header .mat-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-tab-header .mat-tab-labels{justify-content:flex-end}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-list._mat-animation-noopable{transition:none !important;animation:none !important}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}.mat-tab-label::before{margin:5px}@media(max-width: 599px){.mat-tab-label{min-width:72px}}\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { _items: [{\n type: ContentChildren,\n args: [MatTabLabelWrapper, { descendants: false }]\n }], _inkBar: [{\n type: ViewChild,\n args: [MatInkBar, { static: true }]\n }], _tabListContainer: [{\n type: ViewChild,\n args: ['tabListContainer', { static: true }]\n }], _tabList: [{\n type: ViewChild,\n args: ['tabList', { static: true }]\n }], _tabListInner: [{\n type: ViewChild,\n args: ['tabListInner', { static: true }]\n }], _nextPaginator: [{\n type: ViewChild,\n args: ['nextPaginator']\n }], _previousPaginator: [{\n type: ViewChild,\n args: ['previousPaginator']\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/** Used to generate unique ID's for each tab component */\nlet nextId = 0;\n/** A simple change event emitted on focus or selection changes. */\nclass MatTabChangeEvent {\n}\n// Boilerplate for applying mixins to MatTabGroup.\n/** @docs-private */\nconst _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}), 'primary');\n/**\n * Base class with all of the `MatTabGroupBase` functionality.\n * @docs-private\n */\nclass _MatTabGroupBase extends _MatTabGroupMixinBase {\n constructor(elementRef, _changeDetectorRef, defaultConfig, _animationMode) {\n super(elementRef);\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n /** All of the tabs that belong to the group. */\n this._tabs = new QueryList();\n /** The tab index that should be selected after the content has been checked. */\n this._indexToSelect = 0;\n /** Index of the tab that was focused last. */\n this._lastFocusedTabIndex = null;\n /** Snapshot of the height of the tab body wrapper before another tab is activated. */\n this._tabBodyWrapperHeight = 0;\n /** Subscription to tabs being added/removed. */\n this._tabsSubscription = Subscription.EMPTY;\n /** Subscription to changes in the tab labels. */\n this._tabLabelSubscription = Subscription.EMPTY;\n this._dynamicHeight = false;\n this._selectedIndex = null;\n /** Position of the tab header. */\n this.headerPosition = 'above';\n this._disablePagination = false;\n this._preserveContent = false;\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n this.selectedIndexChange = new EventEmitter();\n /** Event emitted when focus has changed within a tab group. */\n this.focusChange = new EventEmitter();\n /** Event emitted when the body animation has completed */\n this.animationDone = new EventEmitter();\n /** Event emitted when the tab selection has changed. */\n this.selectedTabChange = new EventEmitter(true);\n this._groupId = nextId++;\n this.animationDuration =\n defaultConfig && defaultConfig.animationDuration ? defaultConfig.animationDuration : '500ms';\n this.disablePagination =\n defaultConfig && defaultConfig.disablePagination != null\n ? defaultConfig.disablePagination\n : false;\n this.dynamicHeight =\n defaultConfig && defaultConfig.dynamicHeight != null ? defaultConfig.dynamicHeight : false;\n this.contentTabIndex = defaultConfig?.contentTabIndex ?? null;\n this.preserveContent = !!defaultConfig?.preserveContent;\n }\n /** Whether the tab group should grow to the size of the active tab. */\n get dynamicHeight() {\n return this._dynamicHeight;\n }\n set dynamicHeight(value) {\n this._dynamicHeight = coerceBooleanProperty(value);\n }\n /** The index of the active tab. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(value) {\n this._indexToSelect = coerceNumberProperty(value, null);\n }\n /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */\n get animationDuration() {\n return this._animationDuration;\n }\n set animationDuration(value) {\n this._animationDuration = /^\\d+$/.test(value + '') ? value + 'ms' : value;\n }\n /**\n * `tabindex` to be set on the inner element that wraps the tab content. Can be used for improved\n * accessibility when the tab does not have focusable elements or if it has scrollable content.\n * The `tabindex` will be removed automatically for inactive tabs.\n * Read more at https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-2/tabs.html\n */\n get contentTabIndex() {\n return this._contentTabIndex;\n }\n set contentTabIndex(value) {\n this._contentTabIndex = coerceNumberProperty(value, null);\n }\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n get disablePagination() {\n return this._disablePagination;\n }\n set disablePagination(value) {\n this._disablePagination = coerceBooleanProperty(value);\n }\n /**\n * By default tabs remove their content from the DOM while it's off-screen.\n * Setting this to `true` will keep it in the DOM which will prevent elements\n * like iframes and videos from reloading next time it comes back into the view.\n */\n get preserveContent() {\n return this._preserveContent;\n }\n set preserveContent(value) {\n this._preserveContent = coerceBooleanProperty(value);\n }\n /** Background color of the tab group. */\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n const nativeElement = this._elementRef.nativeElement;\n nativeElement.classList.remove(`mat-background-${this.backgroundColor}`);\n if (value) {\n nativeElement.classList.add(`mat-background-${value}`);\n }\n this._backgroundColor = value;\n }\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n */\n ngAfterContentChecked() {\n // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n // the amount of tabs changes before the actual change detection runs.\n const indexToSelect = (this._indexToSelect = this._clampTabIndex(this._indexToSelect));\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex != indexToSelect) {\n const isFirstRun = this._selectedIndex == null;\n if (!isFirstRun) {\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n // Preserve the height so page doesn't scroll up during tab change.\n // Fixes https://stackblitz.com/edit/mat-tabs-scroll-page-top-on-tab-change\n const wrapper = this._tabBodyWrapper.nativeElement;\n wrapper.style.minHeight = wrapper.clientHeight + 'px';\n }\n // Changing these values after change detection has run\n // since the checked content may contain references to them.\n Promise.resolve().then(() => {\n this._tabs.forEach((tab, index) => (tab.isActive = index === indexToSelect));\n if (!isFirstRun) {\n this.selectedIndexChange.emit(indexToSelect);\n // Clear the min-height, this was needed during tab change to avoid\n // unnecessary scrolling.\n this._tabBodyWrapper.nativeElement.style.minHeight = '';\n }\n });\n }\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach((tab, index) => {\n tab.position = index - indexToSelect;\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n tab.origin = indexToSelect - this._selectedIndex;\n }\n });\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._lastFocusedTabIndex = null;\n this._changeDetectorRef.markForCheck();\n }\n }\n ngAfterContentInit() {\n this._subscribeToAllTabChanges();\n this._subscribeToTabLabels();\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\n // Maintain the previously-selected tab if a new tab is added or removed and there is no\n // explicit change that selects a different tab.\n if (indexToSelect === this._selectedIndex) {\n const tabs = this._tabs.toArray();\n let selectedTab;\n for (let i = 0; i < tabs.length; i++) {\n if (tabs[i].isActive) {\n // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n // adding a tab within the `selectedIndexChange` event.\n this._indexToSelect = this._selectedIndex = i;\n this._lastFocusedTabIndex = null;\n selectedTab = tabs[i];\n break;\n }\n }\n // If we haven't found an active tab and a tab exists at the selected index, it means\n // that the active tab was swapped out. Since this won't be picked up by the rendering\n // loop in `ngAfterContentChecked`, we need to sync it up manually.\n if (!selectedTab && tabs[indexToSelect]) {\n Promise.resolve().then(() => {\n tabs[indexToSelect].isActive = true;\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n });\n }\n }\n this._changeDetectorRef.markForCheck();\n });\n }\n /** Listens to changes in all of the tabs. */\n _subscribeToAllTabChanges() {\n // Since we use a query with `descendants: true` to pick up the tabs, we may end up catching\n // some that are inside of nested tab groups. We filter them out manually by checking that\n // the closest group to the tab is the current one.\n this._allTabs.changes.pipe(startWith(this._allTabs)).subscribe((tabs) => {\n this._tabs.reset(tabs.filter(tab => {\n return tab._closestTabGroup === this || !tab._closestTabGroup;\n }));\n this._tabs.notifyOnChanges();\n });\n }\n ngOnDestroy() {\n this._tabs.destroy();\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n }\n /** Re-aligns the ink bar to the selected tab element. */\n realignInkBar() {\n if (this._tabHeader) {\n this._tabHeader._alignInkBarToSelectedTab();\n }\n }\n /**\n * Recalculates the tab group's pagination dimensions.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n if (this._tabHeader) {\n this._tabHeader.updatePagination();\n }\n }\n /**\n * Sets focus to a particular tab.\n * @param index Index of the tab to be focused.\n */\n focusTab(index) {\n const header = this._tabHeader;\n if (header) {\n header.focusIndex = index;\n }\n }\n _focusChanged(index) {\n this._lastFocusedTabIndex = index;\n this.focusChange.emit(this._createChangeEvent(index));\n }\n _createChangeEvent(index) {\n const event = new MatTabChangeEvent();\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n }\n /**\n * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n */\n _subscribeToTabLabels() {\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n this._tabLabelSubscription = merge(...this._tabs.map(tab => tab._stateChanges)).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n /** Clamps the given index to the bounds of 0 and the tabs length. */\n _clampTabIndex(index) {\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n }\n /** Returns a unique id for each tab label element */\n _getTabLabelId(i) {\n return `mat-tab-label-${this._groupId}-${i}`;\n }\n /** Returns a unique id for each tab content element */\n _getTabContentId(i) {\n return `mat-tab-content-${this._groupId}-${i}`;\n }\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n */\n _setTabBodyWrapperHeight(tabHeight) {\n if (!this._dynamicHeight || !this._tabBodyWrapperHeight) {\n return;\n }\n const wrapper = this._tabBodyWrapper.nativeElement;\n wrapper.style.height = this._tabBodyWrapperHeight + 'px';\n // This conditional forces the browser to paint the height so that\n // the animation to the new height can have an origin.\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n wrapper.style.height = tabHeight + 'px';\n }\n }\n /** Removes the height of the tab body wrapper. */\n _removeTabBodyWrapperHeight() {\n const wrapper = this._tabBodyWrapper.nativeElement;\n this._tabBodyWrapperHeight = wrapper.clientHeight;\n wrapper.style.height = '';\n this.animationDone.emit();\n }\n /** Handle click events, setting new selected index if appropriate. */\n _handleClick(tab, tabHeader, index) {\n if (!tab.disabled) {\n this.selectedIndex = tabHeader.focusIndex = index;\n }\n }\n /** Retrieves the tabindex for the tab. */\n _getTabIndex(tab, index) {\n if (tab.disabled) {\n return null;\n }\n const targetIndex = this._lastFocusedTabIndex ?? this.selectedIndex;\n return index === targetIndex ? 0 : -1;\n }\n /** Callback for when the focused state of a tab has changed. */\n _tabFocusChanged(focusOrigin, index) {\n // Mouse/touch focus happens during the `mousedown`/`touchstart` phase which\n // can cause the tab to be moved out from under the pointer, interrupting the\n // click sequence (see #21898). We don't need to scroll the tab into view for\n // such cases anyway, because it will be done when the tab becomes selected.\n if (focusOrigin && focusOrigin !== 'mouse' && focusOrigin !== 'touch') {\n this._tabHeader.focusIndex = index;\n }\n }\n}\n_MatTabGroupBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatTabGroupBase, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_TABS_CONFIG, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabGroupBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"14.2.0\", type: _MatTabGroupBase, inputs: { dynamicHeight: \"dynamicHeight\", selectedIndex: \"selectedIndex\", headerPosition: \"headerPosition\", animationDuration: \"animationDuration\", contentTabIndex: \"contentTabIndex\", disablePagination: \"disablePagination\", preserveContent: \"preserveContent\", backgroundColor: \"backgroundColor\" }, outputs: { selectedIndexChange: \"selectedIndexChange\", focusChange: \"focusChange\", animationDone: \"animationDone\", selectedTabChange: \"selectedTabChange\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: _MatTabGroupBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TABS_CONFIG]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }]; }, propDecorators: { dynamicHeight: [{\n type: Input\n }], selectedIndex: [{\n type: Input\n }], headerPosition: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }], contentTabIndex: [{\n type: Input\n }], disablePagination: [{\n type: Input\n }], preserveContent: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }], selectedIndexChange: [{\n type: Output\n }], focusChange: [{\n type: Output\n }], animationDone: [{\n type: Output\n }], selectedTabChange: [{\n type: Output\n }] } });\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://material.io/design/components/tabs.html\n */\nclass MatTabGroup extends _MatTabGroupBase {\n constructor(elementRef, changeDetectorRef, defaultConfig, animationMode) {\n super(elementRef, changeDetectorRef, defaultConfig, animationMode);\n }\n}\nMatTabGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"14.2.0\", ngImport: i0, type: MatTabGroup, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_TABS_CONFIG, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTabGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"14.2.0\", type: MatTabGroup, selector: \"mat-tab-group\", inputs: { color: \"color\", disableRipple: \"disableRipple\" }, host: { properties: { \"class.mat-tab-group-dynamic-height\": \"dynamicHeight\", \"class.mat-tab-group-inverted-header\": \"headerPosition === \\\"below\\\"\" }, classAttribute: \"mat-tab-group\" }, providers: [\n {\n provide: MAT_TAB_GROUP,\n useExisting: MatTabGroup,\n },\n ], queries: [{ propertyName: \"_allTabs\", predicate: MatTab, descendants: true }], viewQueries: [{ propertyName: \"_tabBodyWrapper\", first: true, predicate: [\"tabBodyWrapper\"], descendants: true }, { propertyName: \"_tabHeader\", first: true, predicate: [\"tabHeader\"], descendants: true }], exportAs: [\"matTabGroup\"], usesInheritance: true, ngImport: i0, template: \"\\n