{"version":3,"file":"328.23348d2708524921.js","mappings":"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","names":["DateFormatterModel","i0","ctx_r0","dateFormatter","date","DateFormatterComponent","_DateFormatterComponent","constructor","this","format","Format","ngOnInit","selectors","inputs","decls","vars","consts","template","rf","ctx","DateFormatterComponent_div_0_Template","DateFormatterComponent_div_1_Template","DateFormatterComponent_div_2_Template","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","c","a","b","d","XMLHttpRequest","open","responseType","onload","g","response","onerror","console","error","send","status","e","dispatchEvent","MouseEvent","document","createEvent","initMouseEvent","window","f","self","global","navigator","test","userAgent","saveAs","HTMLAnchorElement","prototype","h","i","URL","webkitURL","j","createElement","download","name","rel","href","origin","location","target","createObjectURL","setTimeout","revokeObjectURL","msSaveOrOpenBlob","autoBom","warn","type","Blob","title","body","innerText","HTMLElement","safari","FileReader","k","onloadend","result","replace","readAsDataURL","l","m","module","exports","apply","_c0","_forTrack0","$index","$item","_trackRow","_forTrack1","id","_MatCalendarBody_Conditional_0_Template","_cellPadding","numCols","label","_MatCalendarBody_For_2_Conditional_1_Template","_firstRowOffset","labelMinRequiredCells","_MatCalendarBody_For_2_For_3_Template","_r2","$event","item_r3","$implicit","_cellClicked","_emitActiveDateChange","ɵ$index_14_r4","ɵ$index_7_r5","_cellWidth","enabled","_isActiveCell","_isRangeStart","compareValue","_isRangeEnd","_isInRange","_isComparisonBridgeStart","_isComparisonBridgeEnd","_isComparisonStart","_isComparisonEnd","_isInComparisonRange","_isPreviewStart","_isPreviewEnd","_isInPreview","cssClasses","ariaLabel","_isSelected","todayValue","_getDescribedby","_isComparisonIdentical","displayValue","_MatCalendarBody_For_2_Template","row_r6","_MatMonthView_For_4_Template","day_r1","long","narrow","_c1","_MatCalendar_ng_template_0_Template","_MatCalendar_Case_2_Template","_r1","ctx_r1","activeDate","_dateSelected","_dragStarted","_dragEnded","selected","dateFilter","maxDate","minDate","dateClass","comparisonStart","comparisonEnd","startDateAccessibleName","endDateAccessibleName","_activeDrag","_MatCalendar_Case_3_Template","_r3","_monthSelectedInYearView","_goToDateInView","_MatCalendar_Case_4_Template","_r4","_yearSelectedInMultiYearView","_MatDatepickerContent_ng_template_2_Template","_c2","_c3","_c4","_MatDatepickerToggle_Conditional_2_Template","_c5","_c6","MatDatepickerIntl","_MatDatepickerIntl","changes","Subject","calendarLabel","openCalendarLabel","closeCalendarLabel","prevMonthLabel","nextMonthLabel","prevYearLabel","nextYearLabel","prevMultiYearLabel","nextMultiYearLabel","switchToMonthViewLabel","switchToMultiYearViewLabel","startDateLabel","endDateLabel","formatYearRange","start","end","formatYearRangeLabel","ɵfac","__ngFactoryType__","ɵprov","token","factory","providedIn","uniqueIdCounter$1","MatCalendarCell","value","rawValue","calendarBodyId","activeCapturingEventOptions","normalizePassiveListenerOptions","passive","capture","passiveCapturingEventOptions","passiveEventOptions","MatCalendarBody","_MatCalendarBody","ngAfterViewChecked","_focusActiveCellAfterViewChecked","_focusActiveCell","_elementRef","_ngZone","_platform","inject","Platform","activeCell","isRange","cellAspectRatio","previewStart","previewEnd","selectedValueChange","EventEmitter","previewChange","activeDateChange","dragStarted","dragEnded","_didDragSinceMouseDown","_injector","Injector","row","_enterHandler","event","_skipNextFocus","cell","_getCellFromElement","run","emit","_touchmoveHandler","getActualTouchTarget","getCellElement","preventDefault","_leaveHandler","relatedTarget","_mousedownHandler","_mouseupHandler","cellElement","closest","nativeElement","_cell$rawValue","_touchendHandler","_id","_startDateLabelId","_endDateLabelId","runOutsideAngular","element","addEventListener","isBrowser","startValue","endValue","ngOnChanges","columnChanges","rows","length","ngOnDestroy","removeEventListener","rowIndex","colIndex","cellNumber","movePreview","afterNextRender","querySelector","focus","injector","_scheduleFocusActiveCellAfterViewChecked","isStart","isEnd","isInRange","previousCell","previousRow","nextCell","nextRow","getAttribute","col","parseInt","ɵcmp","hostAttrs","outputs","exportAs","standalone","features","attrs","dependencies","NgClass","styles","encapsulation","changeDetection","isTableCell","node","nodeName","_element$parentNode","_cell","parentNode","rangeEnabled","touchLocation","changedTouches","elementFromPoint","clientX","clientY","DateRange","MatDateSelectionModel","_MatDateSelectionModel","selection","_adapter","_selectionChanged","selectionChanged","updateSelection","source","oldValue","next","complete","_isValidDateInstance","isDateInstance","isValid","MatSingleDateSelectionModel","_MatSingleDateSelectionModel","adapter","super","add","isComplete","clone","i1","MatRangeDateSelectionModel","_MatRangeDateSelectionModel","compareDate","MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER","provide","deps","Optional","SkipSelf","DateAdapter","useFactory","MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY","parent","MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER","MAT_RANGE_DATE_SELECTION_MODEL_FACTORY","MAT_DATE_RANGE_SELECTION_STRATEGY","InjectionToken","DefaultMatCalendarRangeStrategy","_DefaultMatCalendarRangeStrategy","_dateAdapter","selectionFinished","currentRange","createPreview","createDrag","dragOrigin","originalRange","newDate","diffYears","getYear","diffMonths","getMonth","diffDays","getDate","sameDate","addCalendarYears","addCalendarMonths","addCalendarDays","MAT_CALENDAR_RANGE_STRATEGY_PROVIDER","MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY","uniqueIdCounter","MatMonthView","_MatMonthView","_activeDate","oldActiveDate","validDate","getValidDateOrNull","deserialize","today","clampDate","_hasSameMonthAndYear","_init","_selected","_setRanges","_minDate","_maxDate","_changeDetectorRef","_dateFormats","_dir","_rangeStrategy","_rerenderSubscription","Subscription","EMPTY","activeDrag","selectedChange","_userSelection","ngAfterContentInit","localeChanges","pipe","startWith","subscribe","comparisonChange","firstChange","_clearPreview","unsubscribe","selectedDate","_getDateFromDayOfMonth","rangeStartDate","rangeEndDate","_getDateInCurrentMonth","markForCheck","_updateActiveDate","_handleCalendarBodyKeydown","isRtl","_isRtl","keyCode","LEFT_ARROW","RIGHT_ARROW","UP_ARROW","DOWN_ARROW","HOME","END","getNumDaysInMonth","PAGE_UP","altKey","PAGE_DOWN","ENTER","SPACE","_selectionKeyPressed","_canSelect","ESCAPE","_previewEnd","hasModifierKey","stopPropagation","_handleCalendarBodyKeyup","_todayDate","_getCellCompareValue","_monthLabel","display","monthLabel","getMonthNames","toLocaleUpperCase","firstOfMonth","createDate","_firstWeekOffset","getDayOfWeek","getFirstDayOfWeek","_initWeekdays","_createWeekCells","_matCalendarBody","_previewChanged","previewRange","_previewStart","_this$_rangeStrategy$","_this$_rangeStrategy","dragRange","call","detectChanges","_this$_rangeStrategy2","_this$_rangeStrategy3","dragDropResult","dayOfMonth","firstDayOfWeek","narrowWeekdays","getDayOfWeekNames","weekdays","map","_weekdays","slice","concat","daysInMonth","dateNames","getDateNames","_weeks","push","_shouldEnableDate","dateA11yLabel","cellClasses","undefined","d1","d2","year","month","day","Date","getTime","selectedValue","_rangeStart","_rangeEnd","_isRange","_comparisonRangeStart","_comparisonRangeEnd","MAT_DATE_FORMATS","i2","viewQuery","_t","first","yearsPerPage","MatMultiYearView","_MatMultiYearView","isSameMultiYearView","_setSelectedYear","yearSelected","_todayYear","minYearOfPage","getActiveOffset","_years","_createCellForYear","_yearSelected","selectedYear","_getDateFromYear","_getActiveCell","activeMonth","Math","min","yearName","getYearName","_shouldEnableYear","_selectedYear","dateAdapter","date1","date2","year1","year2","startingYear","getStartingYear","floor","euclideanModulo","MatYearView","_MatYearView","_setSelectedMonth","monthSelected","_monthSelected","selectedMonth","_getDateFromMonth","_todayMonth","_getMonthInCurrentYear","_yearLabel","monthNames","_months","_createCellForMonth","normalizedDate","monthName","monthYearA11yLabel","_shouldEnableMonth","activeYear","_isYearAndMonthAfterMaxDate","_isYearAndMonthBeforeMinDate","maxYear","maxMonth","minYear","minMonth","_selectedMonth","calendarHeaderId","MatCalendarHeader","_MatCalendarHeader","_intl","calendar","changeDetectorRef","_periodButtonLabelId","stateChanges","periodButtonText","currentView","monthYearLabel","_formatMinAndMaxYearLabels","periodButtonDescription","periodButtonLabel","prevButtonLabel","nextButtonLabel","currentPeriodClicked","previousClicked","nextClicked","previousEnabled","_isSameView","nextEnabled","maxYearOfPage","forwardRef","MatCalendar","ngContentSelectors","MatButton","MatIconButton","_MatCalendar","startAt","_startAt","_clampedActiveDate","_currentView","viewChangedResult","_moveFocusOnNextTick","viewChanged","startView","_userDragDrop","_intlChanges","_calendarHeaderPortal","ComponentPortal","headerComponent","focusActiveCell","minDateChange","previousValue","currentValue","maxDateChange","changeRequiringRerender","view","_getCurrentViewComponent","updateTodaysDate","normalizedYear","normalizedMonth","monthView","yearView","multiYearView","tmp_1_0","CdkPortalOutlet","CdkMonitorFocus","matDatepickerAnimations","transformPanel","trigger","transition","animate","keyframes","style","opacity","transform","fadeInCalendar","state","datepickerUid","MAT_DATEPICKER_SCROLL_STRATEGY","overlay","Overlay","scrollStrategies","reposition","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY","MatDatepickerContent","_MatDatepickerContent","_globalModel","_rangeSelectionStrategy","intl","_subscriptions","_animationDone","_isAnimating","_actionsPortal","_closeButtonText","_animationState","datepicker","touchUi","ngAfterViewInit","_calendar","_handleUserSelection","_model","newSelection","close","_handleUserDragDrop","_startExitAnimation","_handleAnimationEvent","phaseName","_getSelected","_applyPendingSelection","_assignActions","portal","forceRerender","hostVars","hostBindings","color","_selectYear","_selectMonth","_viewChanged","_closeButtonFocused","tmp_3_0","calendarHeaderComponent","_dialogLabelId","panelClass","_getMinDate","_getMaxDate","_getDateFilter","CdkTrapFocus","data","animation","MatDatepickerBase","_MatDatepickerBase","datepickerInput","getStartValue","_color","getThemePalette","disabled","_disabled","_panelClass","coerceStringArray","opened","_opened","max","_overlay","_unusedNgZone","_viewContainerRef","scrollStrategy","_inputStateChanges","_document","DOCUMENT","xPosition","yPosition","restoreFocus","openedStream","closedStream","_focusedElementBeforeOpen","_backdropHarnessClass","ChangeDetectorRef","_scrollStrategy","positionChange","_overlayRef","positionStrategy","getConfig","FlexibleConnectedPositionStrategy","_setConnectedPositions","updatePosition","_destroyOverlay","select","registerInput","input","registerActions","_this$_componentRef","_componentRef","instance","removeActions","_this$_componentRef2","_this$_componentRef3","_getFocusedElementPierceShadowDom","_openOverlay","_this$_componentRef4","canRestoreFocus","completeClose","take","activeElement","contains","_this$_componentRef5","_forwardContentValues","getOverlayLabelId","isDialog","overlayRef","create","OverlayConfig","_getDialogStrategy","_getDropdownStrategy","hasBackdrop","backdropClass","direction","block","_getCloseStream","keydownEvents","attach","dispose","position","centerHorizontally","centerVertically","strategy","flexibleConnectedTo","getConnectedOverlayOrigin","withTransformOriginOn","withFlexibleDimensions","withViewportMargin","withLockedPosition","primaryX","secondaryX","primaryY","secondaryY","withPositions","originX","originY","overlayX","overlayY","ctrlShiftMetaModifiers","merge","backdropClick","detachments","filter","every","modifier","i4","ɵdir","booleanAttribute","MatDatepicker","_MatDatepicker","ɵ_MatDatepicker_BaseFactory","useExisting","MatDatepickerInputEvent","targetElement","MatDatepickerInputBase","_MatDatepickerInputBase","_getValueFromModel","_pendingValue","_assignValueProgrammatically","_parentDisabled","newValue","_isInitialized","blur","_getValidators","_parseValidator","_minValidator","_maxValidator","_filterValidator","_registerModel","model","_valueChangesSubscription","_assignValue","_shouldHandleChangeEvent","_lastValueValid","_isValidValue","_cvaOnChange","_onTouched","_formatValue","dateInput","dateChange","_validatorOnChange","_localeSubscription","matDatepickerParse","text","control","controlValue","_matchesFilter","matDatepickerFilter","matDatepickerMin","actual","matDatepickerMax","dateInputsHaveChanged","registerOnValidatorChange","fn","validate","_validator","writeValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","_onKeydown","readOnly","_openPopup","_onInput","lastValueWasValid","parse","hasChanged","_onChange","_onBlur","_assignValueToModel","keys","Object","key","MAT_DATEPICKER_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","MatDatepickerInput","multi","MAT_DATEPICKER_VALIDATORS","NG_VALIDATORS","_MatDatepickerInput","matDatepicker","_datepicker","_ariaOwns","set","_closedSubscription","_openedSubscription","_min","validValue","_max","_dateFilter","wasMatchingValue","elementRef","dateFormats","_formField","signal","Validators","compose","getLabelId","modelValue","MAT_FORM_FIELD","toIso8601","MAT_INPUT_VALUE_ACCESSOR","MatDatepickerToggleIcon","_MatDatepickerToggleIcon","MatDatepickerToggle","_MatDatepickerToggle","defaultTabIndex","_stateChanges","parsedTabIndex","Number","tabIndex","_watchStateChanges","_open","datepickerStateChanged","of","inputStateChanged","datepickerToggled","contentQueries","dirIndex","_customIcon","_button","disableRipple","_computeAriaAccessibleName","_computeAriaAccessibleNameInternal","ssrSafeIsElement","nodeType","Node","ELEMENT_NODE","currentNode","isDirectlyReferenced","_currentNode$getAttri","validIdRefs","split","reduce","validIds","elem","getElementById","idRef","join","_currentNode$getAttri2","trim","ssrSafeIsHTMLInputElement","ssrSafeIsHTMLTextAreaElement","_currentNode$labels","_currentNode$getAttri3","_currentNode$getAttri4","labels","Array","from","x","placeholder","textContent","MAT_DATE_RANGE_INPUT_PARENT","MatDateRangeInputPartBase","_MatDateRangeInputPartBase","errorStateMatcher","_errorStateTracker","matcher","errorState","_rangeInput","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","Directionality","optional","_ErrorStateTracker","ngControl","get","NgControl","ngDoCheck","updateErrorState","isEmpty","_getPlaceholder","getMirrorValue","_handleChildValueChange","_openDatepicker","_groupDisabled","_startInput","_endInput","opposite","_getAccessibleName","i2$1","MatStartDate","_MatStartDate","rangeInput","defaultErrorStateMatcher","parentForm","parentFormGroup","_startValidator","matStartDateInvalid","change","_change$oldValue","range","_this$_dir","endInput","isLtr","selectionStart","selectionEnd","setSelectionRange","rangePicker","MatEndDate","_MatEndDate","_endValidator","matEndDateInvalid","_change$oldValue2","_moveCaretToEndOfStartInput","startInput","_this$_dir2","BACKSPACE","nextUniqueId","MatDateRangeInput","_MatDateRangeInput","shouldLabelFloat","focused","empty","_this$_startInput","_this$_endInput","separator","_rangePicker","_this$_startInput2","_this$_endInput2","required","_ref","_this$_required","_required","_isTargetRequired","wasMatchingStart","wasMatchingEnd","_revalidate","startEmpty","endEmpty","controlType","_ariaDescribedBy","disableAutomaticLabeling","classList","setDescribedByIds","ids","onContainerClick","_getInputMirrorValue","part","_shouldHidePlaceholders","_shouldHideSeparator","_shouldLabelFloat","_getAriaLabelledby","formField","_hasFloatingLabel","_labelId","_getStartDateAccessibleName","_getEndDateAccessibleName","_updateFocus","_target$ngControl","hasValidator","MatFormFieldControl","MatDateRangePicker","_MatDateRangePicker","ɵ_MatDateRangePicker_BaseFactory","MatDatepickerModule","_MatDatepickerModule","ɵmod","ɵinj","providers","imports","CommonModule","MatButtonModule","OverlayModule","A11yModule","PortalModule","MatCommonModule","CdkScrollableModule"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/common/models/common/date-formatter.model.ts","./src/app/common/modules/eform-shared/components/date-formatter/date-formatter.component.html","./src/app/common/modules/eform-shared/components/date-formatter/date-formatter.component.ts","./node_modules/file-saver/dist/FileSaver.min.js","./node_modules/@angular/material/fesm2022/datepicker.mjs"],"sourcesContent":["export class DateFormatterModel {\n date: Date;\n time: Date;\n}\n","
\n {{dateFormatter.date | date : 'dd.MM.y'}}\n
\n
\n {{dateFormatter.date | date : 'HH:mm:ss'}}\n
\n
\n {{dateFormatter.date | date : 'dd.MM.y HH:mm:ss'}}\n
\n","import { Component, OnInit, Input } from '@angular/core';\nimport { DateFormatterModel} from '../../../../models/common';\nimport {formatDate} from '@angular/common';\n\n@Component({\n selector: 'date-formatter',\n templateUrl: './date-formatter.component.html',\n styleUrls: ['./date-formatter.component.scss']\n})\nexport class DateFormatterComponent implements OnInit {\n dateFormatter: DateFormatterModel = new DateFormatterModel();\n format: string;\n constructor() { }\n\n @Input()\n get date() {\n return this.dateFormatter.date;\n }\n set date(format) {\n this.dateFormatter.date = format;\n }\n @Input()\n get Format() {\n return this.format;\n }\n set Format(format) {\n this.format = format;\n }\n ngOnInit() {\n }\n\n}\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n","import { CdkMonitorFocus, CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';\nimport * as i4 from '@angular/cdk/overlay';\nimport { Overlay, FlexibleConnectedPositionStrategy, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { ComponentPortal, CdkPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { NgClass, DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, inject, EventEmitter, Injector, afterNextRender, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Optional, SkipSelf, InjectionToken, Inject, ViewChild, forwardRef, ChangeDetectorRef, booleanAttribute, Directive, signal, Attribute, ContentChild, Self, TemplateRef, NgModule } from '@angular/core';\nimport { MatButton, MatIconButton, MatButtonModule } from '@angular/material/button';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport * as i1 from '@angular/material/core';\nimport { DateAdapter, MAT_DATE_FORMATS, _ErrorStateTracker, MatCommonModule } from '@angular/material/core';\nimport { Subject, Subscription, merge, of } from 'rxjs';\nimport { ESCAPE, hasModifierKey, SPACE, ENTER, PAGE_DOWN, PAGE_UP, END, HOME, DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW, BACKSPACE } from '@angular/cdk/keycodes';\nimport * as i2 from '@angular/cdk/bidi';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { normalizePassiveListenerOptions, Platform, _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { startWith, take, filter } from 'rxjs/operators';\nimport { coerceStringArray } from '@angular/cdk/coercion';\nimport { trigger, transition, animate, keyframes, style, state } from '@angular/animations';\nimport * as i2$1 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validators, NgControl } from '@angular/forms';\nimport { MAT_FORM_FIELD, MatFormFieldControl } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\n\n/** @docs-private */\nfunction createMissingDateImplError(provider) {\n return Error(`MatDatepicker: No provider found for ${provider}. You must add one of the following ` +\n `to your app config: provideNativeDateAdapter, provideDateFnsAdapter, ` +\n `provideLuxonDateAdapter, provideMomentDateAdapter, or provide a custom implementation.`);\n}\n\n/** Datepicker data that requires internationalization. */\nclass MatDatepickerIntl {\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 /** A label for the calendar popup (used by screen readers). */\n this.calendarLabel = 'Calendar';\n /** A label for the button used to open the calendar popup (used by screen readers). */\n this.openCalendarLabel = 'Open calendar';\n /** Label for the button used to close the calendar popup. */\n this.closeCalendarLabel = 'Close calendar';\n /** A label for the previous month button (used by screen readers). */\n this.prevMonthLabel = 'Previous month';\n /** A label for the next month button (used by screen readers). */\n this.nextMonthLabel = 'Next month';\n /** A label for the previous year button (used by screen readers). */\n this.prevYearLabel = 'Previous year';\n /** A label for the next year button (used by screen readers). */\n this.nextYearLabel = 'Next year';\n /** A label for the previous multi-year button (used by screen readers). */\n this.prevMultiYearLabel = 'Previous 24 years';\n /** A label for the next multi-year button (used by screen readers). */\n this.nextMultiYearLabel = 'Next 24 years';\n /** A label for the 'switch to month view' button (used by screen readers). */\n this.switchToMonthViewLabel = 'Choose date';\n /** A label for the 'switch to year view' button (used by screen readers). */\n this.switchToMultiYearViewLabel = 'Choose month and year';\n /**\n * A label for the first date of a range of dates (used by screen readers).\n * @deprecated Provide your own internationalization string.\n * @breaking-change 17.0.0\n */\n this.startDateLabel = 'Start date';\n /**\n * A label for the last date of a range of dates (used by screen readers).\n * @deprecated Provide your own internationalization string.\n * @breaking-change 17.0.0\n */\n this.endDateLabel = 'End date';\n }\n /** Formats a range of years (used for visuals). */\n formatYearRange(start, end) {\n return `${start} \\u2013 ${end}`;\n }\n /** Formats a label for a range of years (used by screen readers). */\n formatYearRangeLabel(start, end) {\n return `${start} to ${end}`;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerIntl, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerIntl, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\nlet uniqueIdCounter$1 = 0;\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nclass MatCalendarCell {\n constructor(value, displayValue, ariaLabel, enabled, cssClasses = {}, compareValue = value, rawValue) {\n this.value = value;\n this.displayValue = displayValue;\n this.ariaLabel = ariaLabel;\n this.enabled = enabled;\n this.cssClasses = cssClasses;\n this.compareValue = compareValue;\n this.rawValue = rawValue;\n this.id = uniqueIdCounter$1++;\n }\n}\nlet calendarBodyId = 1;\n/** Event options that can be used to bind an active, capturing event. */\nconst activeCapturingEventOptions = normalizePassiveListenerOptions({\n passive: false,\n capture: true,\n});\n/** Event options that can be used to bind a passive, capturing event. */\nconst passiveCapturingEventOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Event options that can be used to bind a passive, non-capturing event. */\nconst passiveEventOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\nclass MatCalendarBody {\n ngAfterViewChecked() {\n if (this._focusActiveCellAfterViewChecked) {\n this._focusActiveCell();\n this._focusActiveCellAfterViewChecked = false;\n }\n }\n constructor(_elementRef, _ngZone) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._platform = inject(Platform);\n /**\n * Used to focus the active cell after change detection has run.\n */\n this._focusActiveCellAfterViewChecked = false;\n /** The number of columns in the table. */\n this.numCols = 7;\n /** The cell number of the active cell in the table. */\n this.activeCell = 0;\n /** Whether a range is being selected. */\n this.isRange = false;\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n */\n this.cellAspectRatio = 1;\n /** Start of the preview range. */\n this.previewStart = null;\n /** End of the preview range. */\n this.previewEnd = null;\n /** Emits when a new value is selected. */\n this.selectedValueChange = new EventEmitter();\n /** Emits when the preview has changed as a result of a user action. */\n this.previewChange = new EventEmitter();\n this.activeDateChange = new EventEmitter();\n /** Emits the date at the possible start of a drag event. */\n this.dragStarted = new EventEmitter();\n /** Emits the date at the conclusion of a drag, or null if mouse was not released on a date. */\n this.dragEnded = new EventEmitter();\n this._didDragSinceMouseDown = false;\n this._injector = inject(Injector);\n /**\n * Tracking function for rows based on their identity. Ideally we would use some sort of\n * key on the row, but that would require a breaking change for the `rows` input. We don't\n * use the built-in identity tracking, because it logs warnings.\n */\n this._trackRow = (row) => row;\n /**\n * Event handler for when the user enters an element\n * inside the calendar body (e.g. by hovering in or focus).\n */\n this._enterHandler = (event) => {\n if (this._skipNextFocus && event.type === 'focus') {\n this._skipNextFocus = false;\n return;\n }\n // We only need to hit the zone when we're selecting a range.\n if (event.target && this.isRange) {\n const cell = this._getCellFromElement(event.target);\n if (cell) {\n this._ngZone.run(() => this.previewChange.emit({ value: cell.enabled ? cell : null, event }));\n }\n }\n };\n this._touchmoveHandler = (event) => {\n if (!this.isRange)\n return;\n const target = getActualTouchTarget(event);\n const cell = target ? this._getCellFromElement(target) : null;\n if (target !== event.target) {\n this._didDragSinceMouseDown = true;\n }\n // If the initial target of the touch is a date cell, prevent default so\n // that the move is not handled as a scroll.\n if (getCellElement(event.target)) {\n event.preventDefault();\n }\n this._ngZone.run(() => this.previewChange.emit({ value: cell?.enabled ? cell : null, event }));\n };\n /**\n * Event handler for when the user's pointer leaves an element\n * inside the calendar body (e.g. by hovering out or blurring).\n */\n this._leaveHandler = (event) => {\n // We only need to hit the zone when we're selecting a range.\n if (this.previewEnd !== null && this.isRange) {\n if (event.type !== 'blur') {\n this._didDragSinceMouseDown = true;\n }\n // Only reset the preview end value when leaving cells. This looks better, because\n // we have a gap between the cells and the rows and we don't want to remove the\n // range just for it to show up again when the user moves a few pixels to the side.\n if (event.target &&\n this._getCellFromElement(event.target) &&\n !(event.relatedTarget &&\n this._getCellFromElement(event.relatedTarget))) {\n this._ngZone.run(() => this.previewChange.emit({ value: null, event }));\n }\n }\n };\n /**\n * Triggered on mousedown or touchstart on a date cell.\n * Respsonsible for starting a drag sequence.\n */\n this._mousedownHandler = (event) => {\n if (!this.isRange)\n return;\n this._didDragSinceMouseDown = false;\n // Begin a drag if a cell within the current range was targeted.\n const cell = event.target && this._getCellFromElement(event.target);\n if (!cell || !this._isInRange(cell.compareValue)) {\n return;\n }\n this._ngZone.run(() => {\n this.dragStarted.emit({\n value: cell.rawValue,\n event,\n });\n });\n };\n /** Triggered on mouseup anywhere. Respsonsible for ending a drag sequence. */\n this._mouseupHandler = (event) => {\n if (!this.isRange)\n return;\n const cellElement = getCellElement(event.target);\n if (!cellElement) {\n // Mouseup happened outside of datepicker. Cancel drag.\n this._ngZone.run(() => {\n this.dragEnded.emit({ value: null, event });\n });\n return;\n }\n if (cellElement.closest('.mat-calendar-body') !== this._elementRef.nativeElement) {\n // Mouseup happened inside a different month instance.\n // Allow it to handle the event.\n return;\n }\n this._ngZone.run(() => {\n const cell = this._getCellFromElement(cellElement);\n this.dragEnded.emit({ value: cell?.rawValue ?? null, event });\n });\n };\n /** Triggered on touchend anywhere. Respsonsible for ending a drag sequence. */\n this._touchendHandler = (event) => {\n const target = getActualTouchTarget(event);\n if (target) {\n this._mouseupHandler({ target });\n }\n };\n this._id = `mat-calendar-body-${calendarBodyId++}`;\n this._startDateLabelId = `${this._id}-start-date`;\n this._endDateLabelId = `${this._id}-end-date`;\n _ngZone.runOutsideAngular(() => {\n const element = _elementRef.nativeElement;\n // `touchmove` is active since we need to call `preventDefault`.\n element.addEventListener('touchmove', this._touchmoveHandler, activeCapturingEventOptions);\n element.addEventListener('mouseenter', this._enterHandler, passiveCapturingEventOptions);\n element.addEventListener('focus', this._enterHandler, passiveCapturingEventOptions);\n element.addEventListener('mouseleave', this._leaveHandler, passiveCapturingEventOptions);\n element.addEventListener('blur', this._leaveHandler, passiveCapturingEventOptions);\n element.addEventListener('mousedown', this._mousedownHandler, passiveEventOptions);\n element.addEventListener('touchstart', this._mousedownHandler, passiveEventOptions);\n if (this._platform.isBrowser) {\n window.addEventListener('mouseup', this._mouseupHandler);\n window.addEventListener('touchend', this._touchendHandler);\n }\n });\n }\n /** Called when a cell is clicked. */\n _cellClicked(cell, event) {\n // Ignore \"clicks\" that are actually canceled drags (eg the user dragged\n // off and then went back to this cell to undo).\n if (this._didDragSinceMouseDown) {\n return;\n }\n if (cell.enabled) {\n this.selectedValueChange.emit({ value: cell.value, event });\n }\n }\n _emitActiveDateChange(cell, event) {\n if (cell.enabled) {\n this.activeDateChange.emit({ value: cell.value, event });\n }\n }\n /** Returns whether a cell should be marked as selected. */\n _isSelected(value) {\n return this.startValue === value || this.endValue === value;\n }\n ngOnChanges(changes) {\n const columnChanges = changes['numCols'];\n const { rows, numCols } = this;\n if (changes['rows'] || columnChanges) {\n this._firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n }\n if (changes['cellAspectRatio'] || columnChanges || !this._cellPadding) {\n this._cellPadding = `${(50 * this.cellAspectRatio) / numCols}%`;\n }\n if (columnChanges || !this._cellWidth) {\n this._cellWidth = `${100 / numCols}%`;\n }\n }\n ngOnDestroy() {\n const element = this._elementRef.nativeElement;\n element.removeEventListener('touchmove', this._touchmoveHandler, activeCapturingEventOptions);\n element.removeEventListener('mouseenter', this._enterHandler, passiveCapturingEventOptions);\n element.removeEventListener('focus', this._enterHandler, passiveCapturingEventOptions);\n element.removeEventListener('mouseleave', this._leaveHandler, passiveCapturingEventOptions);\n element.removeEventListener('blur', this._leaveHandler, passiveCapturingEventOptions);\n element.removeEventListener('mousedown', this._mousedownHandler, passiveEventOptions);\n element.removeEventListener('touchstart', this._mousedownHandler, passiveEventOptions);\n if (this._platform.isBrowser) {\n window.removeEventListener('mouseup', this._mouseupHandler);\n window.removeEventListener('touchend', this._touchendHandler);\n }\n }\n /** Returns whether a cell is active. */\n _isActiveCell(rowIndex, colIndex) {\n let cellNumber = rowIndex * this.numCols + colIndex;\n // Account for the fact that the first row may not have as many cells.\n if (rowIndex) {\n cellNumber -= this._firstRowOffset;\n }\n return cellNumber == this.activeCell;\n }\n /**\n * Focuses the active cell after the microtask queue is empty.\n *\n * Adding a 0ms setTimeout seems to fix Voiceover losing focus when pressing PageUp/PageDown\n * (issue #24330).\n *\n * Determined a 0ms by gradually increasing duration from 0 and testing two use cases with screen\n * reader enabled:\n *\n * 1. Pressing PageUp/PageDown repeatedly with pausing between each key press.\n * 2. Pressing and holding the PageDown key with repeated keys enabled.\n *\n * Test 1 worked roughly 95-99% of the time with 0ms and got a little bit better as the duration\n * increased. Test 2 got slightly better until the duration was long enough to interfere with\n * repeated keys. If the repeated key speed was faster than the timeout duration, then pressing\n * and holding pagedown caused the entire page to scroll.\n *\n * Since repeated key speed can verify across machines, determined that any duration could\n * potentially interfere with repeated keys. 0ms would be best because it almost entirely\n * eliminates the focus being lost in Voiceover (#24330) without causing unintended side effects.\n * Adding delay also complicates writing tests.\n */\n _focusActiveCell(movePreview = true) {\n afterNextRender(() => {\n setTimeout(() => {\n const activeCell = this._elementRef.nativeElement.querySelector('.mat-calendar-body-active');\n if (activeCell) {\n if (!movePreview) {\n this._skipNextFocus = true;\n }\n activeCell.focus();\n }\n });\n }, { injector: this._injector });\n }\n /** Focuses the active cell after change detection has run and the microtask queue is empty. */\n _scheduleFocusActiveCellAfterViewChecked() {\n this._focusActiveCellAfterViewChecked = true;\n }\n /** Gets whether a value is the start of the main range. */\n _isRangeStart(value) {\n return isStart(value, this.startValue, this.endValue);\n }\n /** Gets whether a value is the end of the main range. */\n _isRangeEnd(value) {\n return isEnd(value, this.startValue, this.endValue);\n }\n /** Gets whether a value is within the currently-selected range. */\n _isInRange(value) {\n return isInRange(value, this.startValue, this.endValue, this.isRange);\n }\n /** Gets whether a value is the start of the comparison range. */\n _isComparisonStart(value) {\n return isStart(value, this.comparisonStart, this.comparisonEnd);\n }\n /** Whether the cell is a start bridge cell between the main and comparison ranges. */\n _isComparisonBridgeStart(value, rowIndex, colIndex) {\n if (!this._isComparisonStart(value) || this._isRangeStart(value) || !this._isInRange(value)) {\n return false;\n }\n let previousCell = this.rows[rowIndex][colIndex - 1];\n if (!previousCell) {\n const previousRow = this.rows[rowIndex - 1];\n previousCell = previousRow && previousRow[previousRow.length - 1];\n }\n return previousCell && !this._isRangeEnd(previousCell.compareValue);\n }\n /** Whether the cell is an end bridge cell between the main and comparison ranges. */\n _isComparisonBridgeEnd(value, rowIndex, colIndex) {\n if (!this._isComparisonEnd(value) || this._isRangeEnd(value) || !this._isInRange(value)) {\n return false;\n }\n let nextCell = this.rows[rowIndex][colIndex + 1];\n if (!nextCell) {\n const nextRow = this.rows[rowIndex + 1];\n nextCell = nextRow && nextRow[0];\n }\n return nextCell && !this._isRangeStart(nextCell.compareValue);\n }\n /** Gets whether a value is the end of the comparison range. */\n _isComparisonEnd(value) {\n return isEnd(value, this.comparisonStart, this.comparisonEnd);\n }\n /** Gets whether a value is within the current comparison range. */\n _isInComparisonRange(value) {\n return isInRange(value, this.comparisonStart, this.comparisonEnd, this.isRange);\n }\n /**\n * Gets whether a value is the same as the start and end of the comparison range.\n * For context, the functions that we use to determine whether something is the start/end of\n * a range don't allow for the start and end to be on the same day, because we'd have to use\n * much more specific CSS selectors to style them correctly in all scenarios. This is fine for\n * the regular range, because when it happens, the selected styles take over and still show where\n * the range would've been, however we don't have these selected styles for a comparison range.\n * This function is used to apply a class that serves the same purpose as the one for selected\n * dates, but it only applies in the context of a comparison range.\n */\n _isComparisonIdentical(value) {\n // Note that we don't need to null check the start/end\n // here, because the `value` will always be defined.\n return this.comparisonStart === this.comparisonEnd && value === this.comparisonStart;\n }\n /** Gets whether a value is the start of the preview range. */\n _isPreviewStart(value) {\n return isStart(value, this.previewStart, this.previewEnd);\n }\n /** Gets whether a value is the end of the preview range. */\n _isPreviewEnd(value) {\n return isEnd(value, this.previewStart, this.previewEnd);\n }\n /** Gets whether a value is inside the preview range. */\n _isInPreview(value) {\n return isInRange(value, this.previewStart, this.previewEnd, this.isRange);\n }\n /** Gets ids of aria descriptions for the start and end of a date range. */\n _getDescribedby(value) {\n if (!this.isRange) {\n return null;\n }\n if (this.startValue === value && this.endValue === value) {\n return `${this._startDateLabelId} ${this._endDateLabelId}`;\n }\n else if (this.startValue === value) {\n return this._startDateLabelId;\n }\n else if (this.endValue === value) {\n return this._endDateLabelId;\n }\n return null;\n }\n /** Finds the MatCalendarCell that corresponds to a DOM node. */\n _getCellFromElement(element) {\n const cell = getCellElement(element);\n if (cell) {\n const row = cell.getAttribute('data-mat-row');\n const col = cell.getAttribute('data-mat-col');\n if (row && col) {\n return this.rows[parseInt(row)][parseInt(col)];\n }\n }\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCalendarBody, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: MatCalendarBody, isStandalone: true, selector: \"[mat-calendar-body]\", inputs: { label: \"label\", rows: \"rows\", todayValue: \"todayValue\", startValue: \"startValue\", endValue: \"endValue\", labelMinRequiredCells: \"labelMinRequiredCells\", numCols: \"numCols\", activeCell: \"activeCell\", isRange: \"isRange\", cellAspectRatio: \"cellAspectRatio\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\", previewStart: \"previewStart\", previewEnd: \"previewEnd\", startDateAccessibleName: \"startDateAccessibleName\", endDateAccessibleName: \"endDateAccessibleName\" }, outputs: { selectedValueChange: \"selectedValueChange\", previewChange: \"previewChange\", activeDateChange: \"activeDateChange\", dragStarted: \"dragStarted\", dragEnded: \"dragEnded\" }, host: { classAttribute: \"mat-calendar-body\" }, exportAs: [\"matCalendarBody\"], usesOnChanges: true, ngImport: i0, template: \"\\n@if (_firstRowOffset < labelMinRequiredCells) {\\n \\n \\n {{label}}\\n \\n \\n}\\n\\n\\n@for (row of rows; track _trackRow(row); let rowIndex = $index) {\\n \\n \\n @if (rowIndex === 0 && _firstRowOffset) {\\n \\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\n \\n }\\n \\n @for (item of row; track item.id; let colIndex = $index) {\\n \\n \\n \\n {{item.displayValue}}\\n \\n \\n \\n \\n }\\n \\n}\\n\\n\\n\\n\", styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-outline-color, var(--mat-app-primary))}.mat-calendar-body-label{height:0;line-height:0;text-align:start;padding-left:4.7142857143%;padding-right:4.7142857143%;font-size:var(--mat-datepicker-calendar-body-label-text-size, var(--mat-app-title-small-size));font-weight:var(--mat-datepicker-calendar-body-label-text-weight, var(--mat-app-title-small-weight));color:var(--mat-datepicker-calendar-body-label-text-color, var(--mat-app-on-surface))}.mat-calendar-body-hidden-label{display:none}.mat-calendar-body-cell-container{position:relative;height:0;line-height:0}.mat-calendar-body-cell{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:absolute;top:0;left:0;width:100%;height:100%;background:none;text-align:center;outline:none;font-family:inherit;margin:0;font-family:var(--mat-datepicker-calendar-text-font, var(--mat-app-body-medium-font));font-size:var(--mat-datepicker-calendar-text-size, var(--mat-app-body-medium-size))}.mat-calendar-body-cell::-moz-focus-inner{border:0}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;display:block;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview{color:var(--mat-datepicker-calendar-date-preview-state-outline-color, var(--mat-app-primary))}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:var(--mat-datepicker-calendar-date-disabled-state-text-color)}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-disabled-state-outline-color)}.cdk-high-contrast-active .mat-calendar-body-disabled{opacity:.5}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px;color:var(--mat-datepicker-calendar-date-text-color, var(--mat-app-on-surface));border-color:var(--mat-datepicker-calendar-date-outline-color)}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-focus-state-background-color)}@media(hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-hover-state-background-color)}}.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-state-background-color, var(--mat-app-primary));color:var(--mat-datepicker-calendar-date-selected-state-text-color, var(--mat-app-on-primary))}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-disabled-state-background-color)}.mat-calendar-body-selected.mat-calendar-body-today{box-shadow:inset 0 0 0 1px var(--mat-datepicker-calendar-date-today-selected-state-outline-color, var(--mat-app-primary))}.mat-calendar-body-in-range::before{background:var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-app-primary-container))}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-app-tertiary-container))}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-app-tertiary-container))}.mat-calendar-body-comparison-bridge-start::before,[dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-app-primary-container)) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-app-tertiary-container)) 50%)}.mat-calendar-body-comparison-bridge-end::before,[dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-app-primary-container)) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-app-tertiary-container)) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:var(--mat-datepicker-calendar-date-in-overlap-range-state-background-color, var(--mat-app-secondary-container))}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:var(--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color, var(--mat-app-secondary))}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-cell:not(.mat-calendar-body-in-range) .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .mat-calendar-body-cell::before,.cdk-high-contrast-active .mat-calendar-body-cell::after,.cdk-high-contrast-active .mat-calendar-body-selected{background:none}.cdk-high-contrast-active .mat-calendar-body-in-range::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-start::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-end::before{border-top:solid 1px;border-bottom:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:0;border-right:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:0;border-left:solid 1px}.cdk-high-contrast-active .mat-calendar-body-in-comparison-range::before{border-top:dashed 1px;border-bottom:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:0;border-right:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:0;border-left:dashed 1px}\"], dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCalendarBody, decorators: [{\n type: Component,\n args: [{ selector: '[mat-calendar-body]', host: {\n 'class': 'mat-calendar-body',\n }, exportAs: 'matCalendarBody', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass], template: \"\\n@if (_firstRowOffset < labelMinRequiredCells) {\\n \\n \\n {{label}}\\n \\n \\n}\\n\\n\\n@for (row of rows; track _trackRow(row); let rowIndex = $index) {\\n \\n \\n @if (rowIndex === 0 && _firstRowOffset) {\\n \\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\n \\n }\\n \\n @for (item of row; track item.id; let colIndex = $index) {\\n \\n \\n \\n {{item.displayValue}}\\n \\n \\n \\n \\n }\\n \\n}\\n\\n\\n\\n\", styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-outline-color, var(--mat-app-primary))}.mat-calendar-body-label{height:0;line-height:0;text-align:start;padding-left:4.7142857143%;padding-right:4.7142857143%;font-size:var(--mat-datepicker-calendar-body-label-text-size, var(--mat-app-title-small-size));font-weight:var(--mat-datepicker-calendar-body-label-text-weight, var(--mat-app-title-small-weight));color:var(--mat-datepicker-calendar-body-label-text-color, var(--mat-app-on-surface))}.mat-calendar-body-hidden-label{display:none}.mat-calendar-body-cell-container{position:relative;height:0;line-height:0}.mat-calendar-body-cell{-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);position:absolute;top:0;left:0;width:100%;height:100%;background:none;text-align:center;outline:none;font-family:inherit;margin:0;font-family:var(--mat-datepicker-calendar-text-font, var(--mat-app-body-medium-font));font-size:var(--mat-datepicker-calendar-text-size, var(--mat-app-body-medium-size))}.mat-calendar-body-cell::-moz-focus-inner{border:0}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;display:block;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview{color:var(--mat-datepicker-calendar-date-preview-state-outline-color, var(--mat-app-primary))}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:var(--mat-datepicker-calendar-date-disabled-state-text-color)}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-disabled-state-outline-color)}.cdk-high-contrast-active .mat-calendar-body-disabled{opacity:.5}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px;color:var(--mat-datepicker-calendar-date-text-color, var(--mat-app-on-surface));border-color:var(--mat-datepicker-calendar-date-outline-color)}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-focus-state-background-color)}@media(hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-hover-state-background-color)}}.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-state-background-color, var(--mat-app-primary));color:var(--mat-datepicker-calendar-date-selected-state-text-color, var(--mat-app-on-primary))}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-disabled-state-background-color)}.mat-calendar-body-selected.mat-calendar-body-today{box-shadow:inset 0 0 0 1px var(--mat-datepicker-calendar-date-today-selected-state-outline-color, var(--mat-app-primary))}.mat-calendar-body-in-range::before{background:var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-app-primary-container))}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-app-tertiary-container))}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-app-tertiary-container))}.mat-calendar-body-comparison-bridge-start::before,[dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-app-primary-container)) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-app-tertiary-container)) 50%)}.mat-calendar-body-comparison-bridge-end::before,[dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-app-primary-container)) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-app-tertiary-container)) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:var(--mat-datepicker-calendar-date-in-overlap-range-state-background-color, var(--mat-app-secondary-container))}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:var(--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color, var(--mat-app-secondary))}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-cell:not(.mat-calendar-body-in-range) .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .mat-calendar-body-cell::before,.cdk-high-contrast-active .mat-calendar-body-cell::after,.cdk-high-contrast-active .mat-calendar-body-selected{background:none}.cdk-high-contrast-active .mat-calendar-body-in-range::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-start::before,.cdk-high-contrast-active .mat-calendar-body-comparison-bridge-end::before{border-top:solid 1px;border-bottom:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-start::before{border-left:0;border-right:solid 1px}.cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:solid 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-range-end::before{border-right:0;border-left:solid 1px}.cdk-high-contrast-active .mat-calendar-body-in-comparison-range::before{border-top:dashed 1px;border-bottom:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-start::before{border-left:0;border-right:dashed 1px}.cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:dashed 1px}[dir=rtl] .cdk-high-contrast-active .mat-calendar-body-comparison-end::before{border-right:0;border-left:dashed 1px}\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { label: [{\n type: Input\n }], rows: [{\n type: Input\n }], todayValue: [{\n type: Input\n }], startValue: [{\n type: Input\n }], endValue: [{\n type: Input\n }], labelMinRequiredCells: [{\n type: Input\n }], numCols: [{\n type: Input\n }], activeCell: [{\n type: Input\n }], isRange: [{\n type: Input\n }], cellAspectRatio: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], previewStart: [{\n type: Input\n }], previewEnd: [{\n type: Input\n }], startDateAccessibleName: [{\n type: Input\n }], endDateAccessibleName: [{\n type: Input\n }], selectedValueChange: [{\n type: Output\n }], previewChange: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], dragStarted: [{\n type: Output\n }], dragEnded: [{\n type: Output\n }] } });\n/** Checks whether a node is a table cell element. */\nfunction isTableCell(node) {\n return node?.nodeName === 'TD';\n}\n/**\n * Gets the date table cell element that is or contains the specified element.\n * Or returns null if element is not part of a date cell.\n */\nfunction getCellElement(element) {\n let cell;\n if (isTableCell(element)) {\n cell = element;\n }\n else if (isTableCell(element.parentNode)) {\n cell = element.parentNode;\n }\n else if (isTableCell(element.parentNode?.parentNode)) {\n cell = element.parentNode.parentNode;\n }\n return cell?.getAttribute('data-mat-row') != null ? cell : null;\n}\n/** Checks whether a value is the start of a range. */\nfunction isStart(value, start, end) {\n return end !== null && start !== end && value < end && value === start;\n}\n/** Checks whether a value is the end of a range. */\nfunction isEnd(value, start, end) {\n return start !== null && start !== end && value >= start && value === end;\n}\n/** Checks whether a value is inside of a range. */\nfunction isInRange(value, start, end, rangeEnabled) {\n return (rangeEnabled &&\n start !== null &&\n end !== null &&\n start !== end &&\n value >= start &&\n value <= end);\n}\n/**\n * Extracts the element that actually corresponds to a touch event's location\n * (rather than the element that initiated the sequence of touch events).\n */\nfunction getActualTouchTarget(event) {\n const touchLocation = event.changedTouches[0];\n return document.elementFromPoint(touchLocation.clientX, touchLocation.clientY);\n}\n\n/** A class representing a range of dates. */\nclass DateRange {\n constructor(\n /** The start date of the range. */\n start, \n /** The end date of the range. */\n end) {\n this.start = start;\n this.end = end;\n }\n}\n/**\n * A selection model containing a date selection.\n * @docs-private\n */\nclass MatDateSelectionModel {\n constructor(\n /** The current selection. */\n selection, _adapter) {\n this.selection = selection;\n this._adapter = _adapter;\n this._selectionChanged = new Subject();\n /** Emits when the selection has changed. */\n this.selectionChanged = this._selectionChanged;\n this.selection = selection;\n }\n /**\n * Updates the current selection in the model.\n * @param value New selection that should be assigned.\n * @param source Object that triggered the selection change.\n */\n updateSelection(value, source) {\n const oldValue = this.selection;\n this.selection = value;\n this._selectionChanged.next({ selection: value, source, oldValue });\n }\n ngOnDestroy() {\n this._selectionChanged.complete();\n }\n _isValidDateInstance(date) {\n return this._adapter.isDateInstance(date) && this._adapter.isValid(date);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDateSelectionModel, deps: \"invalid\", target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDateSelectionModel }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDateSelectionModel, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined }, { type: i1.DateAdapter }] });\n/**\n * A selection model that contains a single date.\n * @docs-private\n */\nclass MatSingleDateSelectionModel extends MatDateSelectionModel {\n constructor(adapter) {\n super(null, adapter);\n }\n /**\n * Adds a date to the current selection. In the case of a single date selection, the added date\n * simply overwrites the previous selection\n */\n add(date) {\n super.updateSelection(date, this);\n }\n /** Checks whether the current selection is valid. */\n isValid() {\n return this.selection != null && this._isValidDateInstance(this.selection);\n }\n /**\n * Checks whether the current selection is complete. In the case of a single date selection, this\n * is true if the current selection is not null.\n */\n isComplete() {\n return this.selection != null;\n }\n /** Clones the selection model. */\n clone() {\n const clone = new MatSingleDateSelectionModel(this._adapter);\n clone.updateSelection(this.selection, this);\n return clone;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatSingleDateSelectionModel, deps: [{ token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatSingleDateSelectionModel }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatSingleDateSelectionModel, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.DateAdapter }] });\n/**\n * A selection model that contains a date range.\n * @docs-private\n */\nclass MatRangeDateSelectionModel extends MatDateSelectionModel {\n constructor(adapter) {\n super(new DateRange(null, null), adapter);\n }\n /**\n * Adds a date to the current selection. In the case of a date range selection, the added date\n * fills in the next `null` value in the range. If both the start and the end already have a date,\n * the selection is reset so that the given date is the new `start` and the `end` is null.\n */\n add(date) {\n let { start, end } = this.selection;\n if (start == null) {\n start = date;\n }\n else if (end == null) {\n end = date;\n }\n else {\n start = date;\n end = null;\n }\n super.updateSelection(new DateRange(start, end), this);\n }\n /** Checks whether the current selection is valid. */\n isValid() {\n const { start, end } = this.selection;\n // Empty ranges are valid.\n if (start == null && end == null) {\n return true;\n }\n // Complete ranges are only valid if both dates are valid and the start is before the end.\n if (start != null && end != null) {\n return (this._isValidDateInstance(start) &&\n this._isValidDateInstance(end) &&\n this._adapter.compareDate(start, end) <= 0);\n }\n // Partial ranges are valid if the start/end is valid.\n return ((start == null || this._isValidDateInstance(start)) &&\n (end == null || this._isValidDateInstance(end)));\n }\n /**\n * Checks whether the current selection is complete. In the case of a date range selection, this\n * is true if the current selection has a non-null `start` and `end`.\n */\n isComplete() {\n return this.selection.start != null && this.selection.end != null;\n }\n /** Clones the selection model. */\n clone() {\n const clone = new MatRangeDateSelectionModel(this._adapter);\n clone.updateSelection(this.selection, this);\n return clone;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRangeDateSelectionModel, deps: [{ token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRangeDateSelectionModel }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRangeDateSelectionModel, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.DateAdapter }] });\n/** @docs-private */\nfunction MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY(parent, adapter) {\n return parent || new MatSingleDateSelectionModel(adapter);\n}\n/**\n * Used to provide a single selection model to a component.\n * @docs-private\n */\nconst MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER = {\n provide: MatDateSelectionModel,\n deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter],\n useFactory: MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY,\n};\n/** @docs-private */\nfunction MAT_RANGE_DATE_SELECTION_MODEL_FACTORY(parent, adapter) {\n return parent || new MatRangeDateSelectionModel(adapter);\n}\n/**\n * Used to provide a range selection model to a component.\n * @docs-private\n */\nconst MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER = {\n provide: MatDateSelectionModel,\n deps: [[new Optional(), new SkipSelf(), MatDateSelectionModel], DateAdapter],\n useFactory: MAT_RANGE_DATE_SELECTION_MODEL_FACTORY,\n};\n\n/** Injection token used to customize the date range selection behavior. */\nconst MAT_DATE_RANGE_SELECTION_STRATEGY = new InjectionToken('MAT_DATE_RANGE_SELECTION_STRATEGY');\n/** Provides the default date range selection behavior. */\nclass DefaultMatCalendarRangeStrategy {\n constructor(_dateAdapter) {\n this._dateAdapter = _dateAdapter;\n }\n selectionFinished(date, currentRange) {\n let { start, end } = currentRange;\n if (start == null) {\n start = date;\n }\n else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\n end = date;\n }\n else {\n start = date;\n end = null;\n }\n return new DateRange(start, end);\n }\n createPreview(activeDate, currentRange) {\n let start = null;\n let end = null;\n if (currentRange.start && !currentRange.end && activeDate) {\n start = currentRange.start;\n end = activeDate;\n }\n return new DateRange(start, end);\n }\n createDrag(dragOrigin, originalRange, newDate) {\n let start = originalRange.start;\n let end = originalRange.end;\n if (!start || !end) {\n // Can't drag from an incomplete range.\n return null;\n }\n const adapter = this._dateAdapter;\n const isRange = adapter.compareDate(start, end) !== 0;\n const diffYears = adapter.getYear(newDate) - adapter.getYear(dragOrigin);\n const diffMonths = adapter.getMonth(newDate) - adapter.getMonth(dragOrigin);\n const diffDays = adapter.getDate(newDate) - adapter.getDate(dragOrigin);\n if (isRange && adapter.sameDate(dragOrigin, originalRange.start)) {\n start = newDate;\n if (adapter.compareDate(newDate, end) > 0) {\n end = adapter.addCalendarYears(end, diffYears);\n end = adapter.addCalendarMonths(end, diffMonths);\n end = adapter.addCalendarDays(end, diffDays);\n }\n }\n else if (isRange && adapter.sameDate(dragOrigin, originalRange.end)) {\n end = newDate;\n if (adapter.compareDate(newDate, start) < 0) {\n start = adapter.addCalendarYears(start, diffYears);\n start = adapter.addCalendarMonths(start, diffMonths);\n start = adapter.addCalendarDays(start, diffDays);\n }\n }\n else {\n start = adapter.addCalendarYears(start, diffYears);\n start = adapter.addCalendarMonths(start, diffMonths);\n start = adapter.addCalendarDays(start, diffDays);\n end = adapter.addCalendarYears(end, diffYears);\n end = adapter.addCalendarMonths(end, diffMonths);\n end = adapter.addCalendarDays(end, diffDays);\n }\n return new DateRange(start, end);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DefaultMatCalendarRangeStrategy, deps: [{ token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DefaultMatCalendarRangeStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DefaultMatCalendarRangeStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.DateAdapter }] });\n/** @docs-private */\nfunction MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY(parent, adapter) {\n return parent || new DefaultMatCalendarRangeStrategy(adapter);\n}\n/** @docs-private */\nconst MAT_CALENDAR_RANGE_STRATEGY_PROVIDER = {\n provide: MAT_DATE_RANGE_SELECTION_STRATEGY,\n deps: [[new Optional(), new SkipSelf(), MAT_DATE_RANGE_SELECTION_STRATEGY], DateAdapter],\n useFactory: MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY,\n};\n\nconst DAYS_PER_WEEK = 7;\nlet uniqueIdCounter = 0;\n/**\n * An internal component used to display a single month in the datepicker.\n * @docs-private\n */\nclass MatMonthView {\n /**\n * The date to display in this month view (everything other than the month and year is ignored).\n */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n const oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setRanges(this._selected);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir, _rangeStrategy) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateFormats = _dateFormats;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rangeStrategy = _rangeStrategy;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Origin of active drag, or null when dragging is not active. */\n this.activeDrag = null;\n /** Emits when a new date is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits when any date is selected. */\n this._userSelection = new EventEmitter();\n /** Emits when the user initiates a date range drag via mouse or touch. */\n this.dragStarted = new EventEmitter();\n /**\n * Emits when the user completes or cancels a date range drag.\n * Emits null when the drag was canceled or the newly selected date range if completed.\n */\n this.dragEnded = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n this._activeDate = this._dateAdapter.today();\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n ngOnChanges(changes) {\n const comparisonChange = changes['comparisonStart'] || changes['comparisonEnd'];\n if (comparisonChange && !comparisonChange.firstChange) {\n this._setRanges(this.selected);\n }\n if (changes['activeDrag'] && !this.activeDrag) {\n this._clearPreview();\n }\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Handles when a new date is selected. */\n _dateSelected(event) {\n const date = event.value;\n const selectedDate = this._getDateFromDayOfMonth(date);\n let rangeStartDate;\n let rangeEndDate;\n if (this._selected instanceof DateRange) {\n rangeStartDate = this._getDateInCurrentMonth(this._selected.start);\n rangeEndDate = this._getDateInCurrentMonth(this._selected.end);\n }\n else {\n rangeStartDate = rangeEndDate = this._getDateInCurrentMonth(this._selected);\n }\n if (rangeStartDate !== date || rangeEndDate !== date) {\n this.selectedChange.emit(selectedDate);\n }\n this._userSelection.emit({ value: selectedDate, event: event.event });\n this._clearPreview();\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Takes the index of a calendar body cell wrapped in an event as argument. For the date that\n * corresponds to the given cell, set `activeDate` to that date and fire `activeDateChange` with\n * that date.\n *\n * This function is used to match each component's model of the active date with the calendar\n * body cell that was focused. It updates its value of `activeDate` synchronously and updates the\n * parent's value asynchronously via the `activeDateChange` event. The child component receives an\n * updated value asynchronously via the `activeCell` Input.\n */\n _updateActiveDate(event) {\n const month = event.value;\n const oldActiveDate = this._activeDate;\n this.activeDate = this._getDateFromDayOfMonth(month);\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this._activeDate);\n }\n }\n /** Handles keydown events on the calendar body when calendar is in month view. */\n _handleCalendarBodyKeydown(event) {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1 - this._dateAdapter.getDate(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, this._dateAdapter.getNumDaysInMonth(this._activeDate) -\n this._dateAdapter.getDate(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate = event.altKey\n ? this._dateAdapter.addCalendarYears(this._activeDate, -1)\n : this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this.activeDate = event.altKey\n ? this._dateAdapter.addCalendarYears(this._activeDate, 1)\n : this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n this._selectionKeyPressed = true;\n if (this._canSelect(this._activeDate)) {\n // Prevent unexpected default actions such as form submission.\n // Note that we only prevent the default action here while the selection happens in\n // `keyup` below. We can't do the selection here, because it can cause the calendar to\n // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n // because it's too late (see #23305).\n event.preventDefault();\n }\n return;\n case ESCAPE:\n // Abort the current range selection if the user presses escape mid-selection.\n if (this._previewEnd != null && !hasModifierKey(event)) {\n this._clearPreview();\n // If a drag is in progress, cancel the drag without changing the\n // current selection.\n if (this.activeDrag) {\n this.dragEnded.emit({ value: null, event });\n }\n else {\n this.selectedChange.emit(null);\n this._userSelection.emit({ value: null, event });\n }\n event.preventDefault();\n event.stopPropagation(); // Prevents the overlay from closing.\n }\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n this._focusActiveCellAfterViewChecked();\n }\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Handles keyup events on the calendar body when calendar is in month view. */\n _handleCalendarBodyKeyup(event) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n if (this._selectionKeyPressed && this._canSelect(this._activeDate)) {\n this._dateSelected({ value: this._dateAdapter.getDate(this._activeDate), event });\n }\n this._selectionKeyPressed = false;\n }\n }\n /** Initializes this month view. */\n _init() {\n this._setRanges(this.selected);\n this._todayDate = this._getCellCompareValue(this._dateAdapter.today());\n this._monthLabel = this._dateFormats.display.monthLabel\n ? this._dateAdapter.format(this.activeDate, this._dateFormats.display.monthLabel)\n : this._dateAdapter\n .getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase();\n let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);\n this._firstWeekOffset =\n (DAYS_PER_WEEK +\n this._dateAdapter.getDayOfWeek(firstOfMonth) -\n this._dateAdapter.getFirstDayOfWeek()) %\n DAYS_PER_WEEK;\n this._initWeekdays();\n this._createWeekCells();\n this._changeDetectorRef.markForCheck();\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell(movePreview) {\n this._matCalendarBody._focusActiveCell(movePreview);\n }\n /** Focuses the active cell after change detection has run and the microtask queue is empty. */\n _focusActiveCellAfterViewChecked() {\n this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked();\n }\n /** Called when the user has activated a new cell and the preview needs to be updated. */\n _previewChanged({ event, value: cell }) {\n if (this._rangeStrategy) {\n // We can assume that this will be a range, because preview\n // events aren't fired for single date selections.\n const value = cell ? cell.rawValue : null;\n const previewRange = this._rangeStrategy.createPreview(value, this.selected, event);\n this._previewStart = this._getCellCompareValue(previewRange.start);\n this._previewEnd = this._getCellCompareValue(previewRange.end);\n if (this.activeDrag && value) {\n const dragRange = this._rangeStrategy.createDrag?.(this.activeDrag.value, this.selected, value, event);\n if (dragRange) {\n this._previewStart = this._getCellCompareValue(dragRange.start);\n this._previewEnd = this._getCellCompareValue(dragRange.end);\n }\n }\n // Note that here we need to use `detectChanges`, rather than `markForCheck`, because\n // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time\n // when navigating one month back using the keyboard which will cause this handler\n // to throw a \"changed after checked\" error when updating the preview state.\n this._changeDetectorRef.detectChanges();\n }\n }\n /**\n * Called when the user has ended a drag. If the drag/drop was successful,\n * computes and emits the new range selection.\n */\n _dragEnded(event) {\n if (!this.activeDrag)\n return;\n if (event.value) {\n // Propagate drag effect\n const dragDropResult = this._rangeStrategy?.createDrag?.(this.activeDrag.value, this.selected, event.value, event.event);\n this.dragEnded.emit({ value: dragDropResult ?? null, event: event.event });\n }\n else {\n this.dragEnded.emit({ value: null, event: event.event });\n }\n }\n /**\n * Takes a day of the month and returns a new date in the same month and year as the currently\n * active date. The returned date will have the same day of the month as the argument date.\n */\n _getDateFromDayOfMonth(dayOfMonth) {\n return this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), dayOfMonth);\n }\n /** Initializes the weekdays. */\n _initWeekdays() {\n const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n // Rotate the labels for days of the week based on the configured first day of the week.\n let weekdays = longWeekdays.map((long, i) => {\n return { long, narrow: narrowWeekdays[i], id: uniqueIdCounter++ };\n });\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n }\n /** Creates MatCalendarCells for the dates in this month. */\n _createWeekCells() {\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this._dateAdapter.getDateNames();\n this._weeks = [[]];\n for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell == DAYS_PER_WEEK) {\n this._weeks.push([]);\n cell = 0;\n }\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\n const enabled = this._shouldEnableDate(date);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date, 'month') : undefined;\n this._weeks[this._weeks.length - 1].push(new MatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses, this._getCellCompareValue(date), date));\n }\n }\n /** Date filter for the month */\n _shouldEnableDate(date) {\n return (!!date &&\n (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0) &&\n (!this.dateFilter || this.dateFilter(date)));\n }\n /**\n * Gets the date in this month that the given Date falls on.\n * Returns null if the given Date is in another month.\n */\n _getDateInCurrentMonth(date) {\n return date && this._hasSameMonthAndYear(date, this.activeDate)\n ? this._dateAdapter.getDate(date)\n : null;\n }\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n _hasSameMonthAndYear(d1, d2) {\n return !!(d1 &&\n d2 &&\n this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n }\n /** Gets the value that will be used to one cell to another. */\n _getCellCompareValue(date) {\n if (date) {\n // We use the time since the Unix epoch to compare dates in this view, rather than the\n // cell values, because we need to support ranges that span across multiple months/years.\n const year = this._dateAdapter.getYear(date);\n const month = this._dateAdapter.getMonth(date);\n const day = this._dateAdapter.getDate(date);\n return new Date(year, month, day).getTime();\n }\n return null;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the current range based on a model value. */\n _setRanges(selectedValue) {\n if (selectedValue instanceof DateRange) {\n this._rangeStart = this._getCellCompareValue(selectedValue.start);\n this._rangeEnd = this._getCellCompareValue(selectedValue.end);\n this._isRange = true;\n }\n else {\n this._rangeStart = this._rangeEnd = this._getCellCompareValue(selectedValue);\n this._isRange = false;\n }\n this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);\n this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);\n }\n /** Gets whether a date can be selected in the month view. */\n _canSelect(date) {\n return !this.dateFilter || this.dateFilter(date);\n }\n /** Clears out preview state. */\n _clearPreview() {\n this._previewStart = this._previewEnd = null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatMonthView, deps: [{ token: i0.ChangeDetectorRef }, { token: MAT_DATE_FORMATS, optional: true }, { token: i1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }, { token: MAT_DATE_RANGE_SELECTION_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: MatMonthView, isStandalone: true, selector: \"mat-month-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\", startDateAccessibleName: \"startDateAccessibleName\", endDateAccessibleName: \"endDateAccessibleName\", activeDrag: \"activeDrag\" }, outputs: { selectedChange: \"selectedChange\", _userSelection: \"_userSelection\", dragStarted: \"dragStarted\", dragEnded: \"dragEnded\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: [\"matMonthView\"], usesOnChanges: true, ngImport: i0, template: \"\\n \\n \\n @for (day of _weekdays; track day.id) {\\n \\n }\\n \\n \\n \\n \\n \\n
\\n {{day.long}}\\n {{day.narrow}}\\n
\\n\", dependencies: [{ kind: \"component\", type: MatCalendarBody, selector: \"[mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\", \"startDateAccessibleName\", \"endDateAccessibleName\"], outputs: [\"selectedValueChange\", \"previewChange\", \"activeDateChange\", \"dragStarted\", \"dragEnded\"], exportAs: [\"matCalendarBody\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatMonthView, decorators: [{\n type: Component,\n args: [{ selector: 'mat-month-view', exportAs: 'matMonthView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatCalendarBody], template: \"\\n \\n \\n @for (day of _weekdays; track day.id) {\\n \\n }\\n \\n \\n \\n \\n \\n
\\n {{day.long}}\\n {{day.narrow}}\\n
\\n\" }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DATE_RANGE_SELECTION_STRATEGY]\n }, {\n type: Optional\n }] }], propDecorators: { activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], startDateAccessibleName: [{\n type: Input\n }], endDateAccessibleName: [{\n type: Input\n }], activeDrag: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], _userSelection: [{\n type: Output\n }], dragStarted: [{\n type: Output\n }], dragEnded: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [MatCalendarBody]\n }] } });\n\nconst yearsPerPage = 24;\nconst yearsPerRow = 4;\n/**\n * An internal component used to display a year selector in the datepicker.\n * @docs-private\n */\nclass MatMultiYearView {\n /** The date to display in this multi-year view (everything other than the year is ignored). */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n let oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!isSameMultiYearView(this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setSelectedYear(value);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n constructor(_changeDetectorRef, _dateAdapter, _dir) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Emits when a new year is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits the selected year. This doesn't imply a change on the selected date */\n this.yearSelected = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw createMissingDateImplError('DateAdapter');\n }\n this._activeDate = this._dateAdapter.today();\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Initializes this multi-year view. */\n _init() {\n this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\n // We want a range years such that we maximize the number of\n // enabled dates visible at once. This prevents issues where the minimum year\n // is the last item of a page OR the maximum year is the first item of a page.\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view.\n const activeYear = this._dateAdapter.getYear(this._activeDate);\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n this._years = [];\n for (let i = 0, row = []; i < yearsPerPage; i++) {\n row.push(minYearOfPage + i);\n if (row.length == yearsPerRow) {\n this._years.push(row.map(year => this._createCellForYear(year)));\n row = [];\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /** Handles when a new year is selected. */\n _yearSelected(event) {\n const year = event.value;\n const selectedYear = this._dateAdapter.createDate(year, 0, 1);\n const selectedDate = this._getDateFromYear(year);\n this.yearSelected.emit(selectedYear);\n this.selectedChange.emit(selectedDate);\n }\n /**\n * Takes the index of a calendar body cell wrapped in an event as argument. For the date that\n * corresponds to the given cell, set `activeDate` to that date and fire `activeDateChange` with\n * that date.\n *\n * This function is used to match each component's model of the active date with the calendar\n * body cell that was focused. It updates its value of `activeDate` synchronously and updates the\n * parent's value asynchronously via the `activeDateChange` event. The child component receives an\n * updated value asynchronously via the `activeCell` Input.\n */\n _updateActiveDate(event) {\n const year = event.value;\n const oldActiveDate = this._activeDate;\n this.activeDate = this._getDateFromYear(year);\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n _handleCalendarBodyKeydown(event) {\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerPage -\n getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate) -\n 1);\n break;\n case PAGE_UP:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n break;\n case PAGE_DOWN:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n // Note that we only prevent the default action here while the selection happens in\n // `keyup` below. We can't do the selection here, because it can cause the calendar to\n // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n // because it's too late (see #23305).\n this._selectionKeyPressed = true;\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n this._focusActiveCellAfterViewChecked();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Handles keyup events on the calendar body when calendar is in multi-year view. */\n _handleCalendarBodyKeyup(event) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n if (this._selectionKeyPressed) {\n this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event });\n }\n this._selectionKeyPressed = false;\n }\n }\n _getActiveCell() {\n return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n /** Focuses the active cell after change detection has run and the microtask queue is empty. */\n _focusActiveCellAfterViewChecked() {\n this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked();\n }\n /**\n * Takes a year and returns a new date on the same day and month as the currently active date\n * The returned date will have the same year as the argument date.\n */\n _getDateFromYear(year) {\n const activeMonth = this._dateAdapter.getMonth(this.activeDate);\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, activeMonth, 1));\n const normalizedDate = this._dateAdapter.createDate(year, activeMonth, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth));\n return normalizedDate;\n }\n /** Creates an MatCalendarCell for the given year. */\n _createCellForYear(year) {\n const date = this._dateAdapter.createDate(year, 0, 1);\n const yearName = this._dateAdapter.getYearName(date);\n const cellClasses = this.dateClass ? this.dateClass(date, 'multi-year') : undefined;\n return new MatCalendarCell(year, yearName, yearName, this._shouldEnableYear(year), cellClasses);\n }\n /** Whether the given year is enabled. */\n _shouldEnableYear(year) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined ||\n year === null ||\n (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this._dateAdapter.getYear(this.minDate))) {\n return false;\n }\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this._dateAdapter.getYear(date) == year; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the currently-highlighted year based on a model value. */\n _setSelectedYear(value) {\n this._selectedYear = null;\n if (value instanceof DateRange) {\n const displayValue = value.start || value.end;\n if (displayValue) {\n this._selectedYear = this._dateAdapter.getYear(displayValue);\n }\n }\n else if (value) {\n this._selectedYear = this._dateAdapter.getYear(value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatMultiYearView, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatMultiYearView, isStandalone: true, selector: \"mat-multi-year-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\" }, outputs: { selectedChange: \"selectedChange\", yearSelected: \"yearSelected\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: [\"matMultiYearView\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n
\\n\", dependencies: [{ kind: \"component\", type: MatCalendarBody, selector: \"[mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\", \"startDateAccessibleName\", \"endDateAccessibleName\"], outputs: [\"selectedValueChange\", \"previewChange\", \"activeDateChange\", \"dragStarted\", \"dragEnded\"], exportAs: [\"matCalendarBody\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatMultiYearView, decorators: [{\n type: Component,\n args: [{ selector: 'mat-multi-year-view', exportAs: 'matMultiYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatCalendarBody], template: \"\\n \\n \\n \\n \\n \\n
\\n\" }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }], propDecorators: { activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], yearSelected: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [MatCalendarBody]\n }] } });\nfunction isSameMultiYearView(dateAdapter, date1, date2, minDate, maxDate) {\n const year1 = dateAdapter.getYear(date1);\n const year2 = dateAdapter.getYear(date2);\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\n return (Math.floor((year1 - startingYear) / yearsPerPage) ===\n Math.floor((year2 - startingYear) / yearsPerPage));\n}\n/**\n * When the multi-year view is first opened, the active year will be in view.\n * So we compute how many years are between the active year and the *slot* where our\n * \"startingYear\" will render when paged into view.\n */\nfunction getActiveOffset(dateAdapter, activeDate, minDate, maxDate) {\n const activeYear = dateAdapter.getYear(activeDate);\n return euclideanModulo(activeYear - getStartingYear(dateAdapter, minDate, maxDate), yearsPerPage);\n}\n/**\n * We pick a \"starting\" year such that either the maximum year would be at the end\n * or the minimum year would be at the beginning of a page.\n */\nfunction getStartingYear(dateAdapter, minDate, maxDate) {\n let startingYear = 0;\n if (maxDate) {\n const maxYear = dateAdapter.getYear(maxDate);\n startingYear = maxYear - yearsPerPage + 1;\n }\n else if (minDate) {\n startingYear = dateAdapter.getYear(minDate);\n }\n return startingYear;\n}\n/** Gets remainder that is non-negative, even if first number is negative */\nfunction euclideanModulo(a, b) {\n return ((a % b) + b) % b;\n}\n\n/**\n * An internal component used to display a single year in the datepicker.\n * @docs-private\n */\nclass MatYearView {\n /** The date to display in this year view (everything other than the year is ignored). */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n let oldActiveDate = this._activeDate;\n const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) ||\n this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setSelectedMonth(value);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateFormats = _dateFormats;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Emits when a new month is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits the selected month. This doesn't imply a change on the selected date */\n this.monthSelected = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n this._activeDate = this._dateAdapter.today();\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges\n .pipe(startWith(null))\n .subscribe(() => this._init());\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Handles when a new month is selected. */\n _monthSelected(event) {\n const month = event.value;\n const selectedMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n this.monthSelected.emit(selectedMonth);\n const selectedDate = this._getDateFromMonth(month);\n this.selectedChange.emit(selectedDate);\n }\n /**\n * Takes the index of a calendar body cell wrapped in an event as argument. For the date that\n * corresponds to the given cell, set `activeDate` to that date and fire `activeDateChange` with\n * that date.\n *\n * This function is used to match each component's model of the active date with the calendar\n * body cell that was focused. It updates its value of `activeDate` synchronously and updates the\n * parent's value asynchronously via the `activeDateChange` event. The child component receives an\n * updated value asynchronously via the `activeCell` Input.\n */\n _updateActiveDate(event) {\n const month = event.value;\n const oldActiveDate = this._activeDate;\n this.activeDate = this._getDateFromMonth(month);\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n /** Handles keydown events on the calendar body when calendar is in year view. */\n _handleCalendarBodyKeydown(event) {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -this._dateAdapter.getMonth(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 11 - this._dateAdapter.getMonth(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n break;\n case PAGE_DOWN:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n break;\n case ENTER:\n case SPACE:\n // Note that we only prevent the default action here while the selection happens in\n // `keyup` below. We can't do the selection here, because it can cause the calendar to\n // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`\n // because it's too late (see #23305).\n this._selectionKeyPressed = true;\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n this._focusActiveCellAfterViewChecked();\n }\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Handles keyup events on the calendar body when calendar is in year view. */\n _handleCalendarBodyKeyup(event) {\n if (event.keyCode === SPACE || event.keyCode === ENTER) {\n if (this._selectionKeyPressed) {\n this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event });\n }\n this._selectionKeyPressed = false;\n }\n }\n /** Initializes this year view. */\n _init() {\n this._setSelectedMonth(this.selected);\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n let monthNames = this._dateAdapter.getMonthNames('short');\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n this._months = [\n [0, 1, 2, 3],\n [4, 5, 6, 7],\n [8, 9, 10, 11],\n ].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));\n this._changeDetectorRef.markForCheck();\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n /** Schedules the matCalendarBody to focus the active cell after change detection has run */\n _focusActiveCellAfterViewChecked() {\n this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked();\n }\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n _getMonthInCurrentYear(date) {\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate)\n ? this._dateAdapter.getMonth(date)\n : null;\n }\n /**\n * Takes a month and returns a new date in the same day and year as the currently active date.\n * The returned date will have the same month as the argument date.\n */\n _getDateFromMonth(month) {\n const normalizedDate = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\n return this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth));\n }\n /** Creates an MatCalendarCell for the given month. */\n _createCellForMonth(month, monthName) {\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.monthYearA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date, 'year') : undefined;\n return new MatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._shouldEnableMonth(month), cellClasses);\n }\n /** Whether the given month is enabled. */\n _shouldEnableMonth(month) {\n const activeYear = this._dateAdapter.getYear(this.activeDate);\n if (month === undefined ||\n month === null ||\n this._isYearAndMonthAfterMaxDate(activeYear, month) ||\n this._isYearAndMonthBeforeMinDate(activeYear, month)) {\n return false;\n }\n if (!this.dateFilter) {\n return true;\n }\n const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\n // If any date in the month is enabled count the month as enabled.\n for (let date = firstOfMonth; this._dateAdapter.getMonth(date) == month; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n }\n /**\n * Tests whether the combination month/year is after this.maxDate, considering\n * just the month and year of this.maxDate\n */\n _isYearAndMonthAfterMaxDate(year, month) {\n if (this.maxDate) {\n const maxYear = this._dateAdapter.getYear(this.maxDate);\n const maxMonth = this._dateAdapter.getMonth(this.maxDate);\n return year > maxYear || (year === maxYear && month > maxMonth);\n }\n return false;\n }\n /**\n * Tests whether the combination month/year is before this.minDate, considering\n * just the month and year of this.minDate\n */\n _isYearAndMonthBeforeMinDate(year, month) {\n if (this.minDate) {\n const minYear = this._dateAdapter.getYear(this.minDate);\n const minMonth = this._dateAdapter.getMonth(this.minDate);\n return year < minYear || (year === minYear && month < minMonth);\n }\n return false;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the currently-selected month based on a model value. */\n _setSelectedMonth(value) {\n if (value instanceof DateRange) {\n this._selectedMonth =\n this._getMonthInCurrentYear(value.start) || this._getMonthInCurrentYear(value.end);\n }\n else {\n this._selectedMonth = this._getMonthInCurrentYear(value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatYearView, deps: [{ token: i0.ChangeDetectorRef }, { token: MAT_DATE_FORMATS, optional: true }, { token: i1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatYearView, isStandalone: true, selector: \"mat-year-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\" }, outputs: { selectedChange: \"selectedChange\", monthSelected: \"monthSelected\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: [\"matYearView\"], ngImport: i0, template: \"\\n \\n \\n \\n \\n \\n
\\n\", dependencies: [{ kind: \"component\", type: MatCalendarBody, selector: \"[mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\", \"startDateAccessibleName\", \"endDateAccessibleName\"], outputs: [\"selectedValueChange\", \"previewChange\", \"activeDateChange\", \"dragStarted\", \"dragEnded\"], exportAs: [\"matCalendarBody\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatYearView, decorators: [{\n type: Component,\n args: [{ selector: 'mat-year-view', exportAs: 'matYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatCalendarBody], template: \"\\n \\n \\n \\n \\n \\n
\\n\" }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }], propDecorators: { activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [MatCalendarBody]\n }] } });\n\nlet calendarHeaderId = 1;\n/** Default header for MatCalendar */\nclass MatCalendarHeader {\n constructor(_intl, calendar, _dateAdapter, _dateFormats, changeDetectorRef) {\n this._intl = _intl;\n this.calendar = calendar;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._id = `mat-calendar-header-${calendarHeaderId++}`;\n this._periodButtonLabelId = `${this._id}-period-label`;\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\n }\n /** The display text for the current calendar view. */\n get periodButtonText() {\n if (this.calendar.currentView == 'month') {\n return this._dateAdapter\n .format(this.calendar.activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYearName(this.calendar.activeDate);\n }\n return this._intl.formatYearRange(...this._formatMinAndMaxYearLabels());\n }\n /** The aria description for the current calendar view. */\n get periodButtonDescription() {\n if (this.calendar.currentView == 'month') {\n return this._dateAdapter\n .format(this.calendar.activeDate, this._dateFormats.display.monthYearLabel)\n .toLocaleUpperCase();\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYearName(this.calendar.activeDate);\n }\n // Format a label for the window of years displayed in the multi-year calendar view. Use\n // `formatYearRangeLabel` because it is TTS friendly.\n return this._intl.formatYearRangeLabel(...this._formatMinAndMaxYearLabels());\n }\n /** The `aria-label` for changing the calendar view. */\n get periodButtonLabel() {\n return this.calendar.currentView == 'month'\n ? this._intl.switchToMultiYearViewLabel\n : this._intl.switchToMonthViewLabel;\n }\n /** The label for the previous button. */\n get prevButtonLabel() {\n return {\n 'month': this._intl.prevMonthLabel,\n 'year': this._intl.prevYearLabel,\n 'multi-year': this._intl.prevMultiYearLabel,\n }[this.calendar.currentView];\n }\n /** The label for the next button. */\n get nextButtonLabel() {\n return {\n 'month': this._intl.nextMonthLabel,\n 'year': this._intl.nextYearLabel,\n 'multi-year': this._intl.nextMultiYearLabel,\n }[this.calendar.currentView];\n }\n /** Handles user clicks on the period label. */\n currentPeriodClicked() {\n this.calendar.currentView = this.calendar.currentView == 'month' ? 'multi-year' : 'month';\n }\n /** Handles user clicks on the previous button. */\n previousClicked() {\n this.calendar.activeDate =\n this.calendar.currentView == 'month'\n ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, -1)\n : this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? -1 : -yearsPerPage);\n }\n /** Handles user clicks on the next button. */\n nextClicked() {\n this.calendar.activeDate =\n this.calendar.currentView == 'month'\n ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, 1)\n : this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? 1 : yearsPerPage);\n }\n /** Whether the previous period button is enabled. */\n previousEnabled() {\n if (!this.calendar.minDate) {\n return true;\n }\n return (!this.calendar.minDate || !this._isSameView(this.calendar.activeDate, this.calendar.minDate));\n }\n /** Whether the next period button is enabled. */\n nextEnabled() {\n return (!this.calendar.maxDate || !this._isSameView(this.calendar.activeDate, this.calendar.maxDate));\n }\n /** Whether the two dates represent the same view in the current view mode (month or year). */\n _isSameView(date1, date2) {\n if (this.calendar.currentView == 'month') {\n return (this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) &&\n this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2));\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n }\n // Otherwise we are in 'multi-year' view.\n return isSameMultiYearView(this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);\n }\n /**\n * Format two individual labels for the minimum year and maximum year available in the multi-year\n * calendar view. Returns an array of two strings where the first string is the formatted label\n * for the minimum year, and the second string is the formatted label for the maximum year.\n */\n _formatMinAndMaxYearLabels() {\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view, and the last year is\n // just yearsPerPage - 1 away.\n const activeYear = this._dateAdapter.getYear(this.calendar.activeDate);\n const minYearOfPage = activeYear -\n getActiveOffset(this._dateAdapter, this.calendar.activeDate, this.calendar.minDate, this.calendar.maxDate);\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\n const minYearLabel = this._dateAdapter.getYearName(this._dateAdapter.createDate(minYearOfPage, 0, 1));\n const maxYearLabel = this._dateAdapter.getYearName(this._dateAdapter.createDate(maxYearOfPage, 0, 1));\n return [minYearLabel, maxYearLabel];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCalendarHeader, deps: [{ token: MatDatepickerIntl }, { token: forwardRef(() => MatCalendar) }, { token: i1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatCalendarHeader, isStandalone: true, selector: \"mat-calendar-header\", exportAs: [\"matCalendarHeader\"], ngImport: i0, template: \"
\\n
\\n \\n \\n \\n\\n
\\n\\n \\n\\n \\n\\n \\n
\\n
\\n\", dependencies: [{ kind: \"component\", type: MatButton, selector: \" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] \", exportAs: [\"matButton\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button]\", exportAs: [\"matButton\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCalendarHeader, decorators: [{\n type: Component,\n args: [{ selector: 'mat-calendar-header', exportAs: 'matCalendarHeader', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatButton, MatIconButton], template: \"
\\n
\\n \\n \\n \\n\\n
\\n\\n \\n\\n \\n\\n \\n
\\n
\\n\" }]\n }], ctorParameters: () => [{ type: MatDatepickerIntl }, { type: MatCalendar, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatCalendar)]\n }] }, { type: i1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i0.ChangeDetectorRef }] });\n/** A calendar that is used as part of the datepicker. */\nclass MatCalendar {\n /** A date representing the period (month or year) to start the calendar in. */\n get startAt() {\n return this._startAt;\n }\n set startAt(value) {\n this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n }\n else {\n this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n get activeDate() {\n return this._clampedActiveDate;\n }\n set activeDate(value) {\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\n }\n /** Whether the calendar is in month view. */\n get currentView() {\n return this._currentView;\n }\n set currentView(value) {\n const viewChangedResult = this._currentView !== value ? value : null;\n this._currentView = value;\n this._moveFocusOnNextTick = true;\n this._changeDetectorRef.markForCheck();\n if (viewChangedResult) {\n this.viewChanged.emit(viewChangedResult);\n }\n }\n constructor(_intl, _dateAdapter, _dateFormats, _changeDetectorRef) {\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n this._moveFocusOnNextTick = false;\n /** Whether the calendar should be started in month or year view. */\n this.startView = 'month';\n /** Emits when the currently selected date changes. */\n this.selectedChange = new EventEmitter();\n /**\n * Emits the year chosen in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n this.yearSelected = new EventEmitter();\n /**\n * Emits the month chosen in year view.\n * This doesn't imply a change on the selected date.\n */\n this.monthSelected = new EventEmitter();\n /**\n * Emits when the current view changes.\n */\n this.viewChanged = new EventEmitter(true);\n /** Emits when any date is selected. */\n this._userSelection = new EventEmitter();\n /** Emits a new date range value when the user completes a drag drop operation. */\n this._userDragDrop = new EventEmitter();\n /** Origin of active drag, or null when dragging is not active. */\n this._activeDrag = null;\n /**\n * Emits whenever there is a state change that the header may need to respond to.\n */\n this.stateChanges = new Subject();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n this._intlChanges = _intl.changes.subscribe(() => {\n _changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n ngAfterContentInit() {\n this._calendarHeaderPortal = new ComponentPortal(this.headerComponent || MatCalendarHeader);\n this.activeDate = this.startAt || this._dateAdapter.today();\n // Assign to the private property since we don't want to move focus on init.\n this._currentView = this.startView;\n }\n ngAfterViewChecked() {\n if (this._moveFocusOnNextTick) {\n this._moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n this.stateChanges.complete();\n }\n ngOnChanges(changes) {\n // Ignore date changes that are at a different time on the same day. This fixes issues where\n // the calendar re-renders when there is no meaningful change to [minDate] or [maxDate]\n // (#24435).\n const minDateChange = changes['minDate'] &&\n !this._dateAdapter.sameDate(changes['minDate'].previousValue, changes['minDate'].currentValue)\n ? changes['minDate']\n : undefined;\n const maxDateChange = changes['maxDate'] &&\n !this._dateAdapter.sameDate(changes['maxDate'].previousValue, changes['maxDate'].currentValue)\n ? changes['maxDate']\n : undefined;\n const changeRequiringRerender = minDateChange || maxDateChange || changes['dateFilter'];\n if (changeRequiringRerender && !changeRequiringRerender.firstChange) {\n const view = this._getCurrentViewComponent();\n if (view) {\n // Schedule focus to be moved to the active date since re-rendering\n // can blur the active cell. See #29265.\n this._moveFocusOnNextTick = true;\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\n this._changeDetectorRef.detectChanges();\n view._init();\n }\n }\n this.stateChanges.next();\n }\n /** Focuses the active date. */\n focusActiveCell() {\n this._getCurrentViewComponent()._focusActiveCell(false);\n }\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n this._getCurrentViewComponent()._init();\n }\n /** Handles date selection in the month view. */\n _dateSelected(event) {\n const date = event.value;\n if (this.selected instanceof DateRange ||\n (date && !this._dateAdapter.sameDate(date, this.selected))) {\n this.selectedChange.emit(date);\n }\n this._userSelection.emit(event);\n }\n /** Handles year selection in the multiyear view. */\n _yearSelectedInMultiYearView(normalizedYear) {\n this.yearSelected.emit(normalizedYear);\n }\n /** Handles month selection in the year view. */\n _monthSelectedInYearView(normalizedMonth) {\n this.monthSelected.emit(normalizedMonth);\n }\n /** Handles year/month selection in the multi-year/year views. */\n _goToDateInView(date, view) {\n this.activeDate = date;\n this.currentView = view;\n }\n /** Called when the user starts dragging to change a date range. */\n _dragStarted(event) {\n this._activeDrag = event;\n }\n /**\n * Called when a drag completes. It may end in cancelation or in the selection\n * of a new range.\n */\n _dragEnded(event) {\n if (!this._activeDrag)\n return;\n if (event.value) {\n this._userDragDrop.emit(event);\n }\n this._activeDrag = null;\n }\n /** Returns the component instance that corresponds to the current calendar view. */\n _getCurrentViewComponent() {\n // The return type is explicitly written as a union to ensure that the Closure compiler does\n // not optimize calls to _init(). Without the explicit return type, TypeScript narrows it to\n // only the first component type. See https://github.com/angular/components/issues/22996.\n return this.monthView || this.yearView || this.multiYearView;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCalendar, deps: [{ token: MatDatepickerIntl }, { token: i1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: MatCalendar, isStandalone: true, selector: \"mat-calendar\", inputs: { headerComponent: \"headerComponent\", startAt: \"startAt\", startView: \"startView\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\", startDateAccessibleName: \"startDateAccessibleName\", endDateAccessibleName: \"endDateAccessibleName\" }, outputs: { selectedChange: \"selectedChange\", yearSelected: \"yearSelected\", monthSelected: \"monthSelected\", viewChanged: \"viewChanged\", _userSelection: \"_userSelection\", _userDragDrop: \"_userDragDrop\" }, host: { classAttribute: \"mat-calendar\" }, providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER], viewQueries: [{ propertyName: \"monthView\", first: true, predicate: MatMonthView, descendants: true }, { propertyName: \"yearView\", first: true, predicate: MatYearView, descendants: true }, { propertyName: \"multiYearView\", first: true, predicate: MatMultiYearView, descendants: true }], exportAs: [\"matCalendar\"], usesOnChanges: true, ngImport: i0, template: \"\\n\\n
\\n @switch (currentView) {\\n @case ('month') {\\n \\n }\\n\\n @case ('year') {\\n \\n }\\n\\n @case ('multi-year') {\\n \\n }\\n }\\n
\\n\", styles: [\".mat-calendar{display:block;font-family:var(--mat-datepicker-calendar-text-font, var(--mat-app-body-medium-font));font-size:var(--mat-datepicker-calendar-text-size, var(--mat-app-body-medium-size))}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;align-items:center;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0;margin:0 8px;font-size:var(--mat-datepicker-calendar-period-button-text-size, var(--mat-app-title-small-size));font-weight:var(--mat-datepicker-calendar-period-button-text-weight, var(--mat-app-title-small-weight));--mdc-text-button-label-text-color:var(--mat-datepicker-calendar-period-button-text-color, var(--mat-app-on-surface-variant))}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle;fill:var(--mat-datepicker-calendar-period-button-icon-color, var(--mat-app-on-surface-variant))}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.cdk-high-contrast-active .mat-calendar-arrow{fill:CanvasText}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-datepicker-content .mat-calendar-previous-button:not(.mat-mdc-button-disabled),.mat-datepicker-content .mat-calendar-next-button:not(.mat-mdc-button-disabled){color:var(--mat-datepicker-calendar-navigation-button-icon-color, var(--mat-app-on-surface-variant))}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0;color:var(--mat-datepicker-calendar-header-text-color, var(--mat-app-on-surface-variant));font-size:var(--mat-datepicker-calendar-header-text-size, var(--mat-app-title-small-size));font-weight:var(--mat-datepicker-calendar-header-text-weight, var(--mat-app-title-small-weight))}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px;background:var(--mat-datepicker-calendar-header-divider-color)}.mat-calendar-body-cell-content::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}.mat-calendar-body-cell:focus .mat-focus-indicator::before{content:\\\"\\\"}\"], dependencies: [{ kind: \"directive\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }, { kind: \"directive\", type: CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: [\"cdkFocusChange\"], exportAs: [\"cdkMonitorFocus\"] }, { kind: \"component\", type: MatMonthView, selector: \"mat-month-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\", \"comparisonStart\", \"comparisonEnd\", \"startDateAccessibleName\", \"endDateAccessibleName\", \"activeDrag\"], outputs: [\"selectedChange\", \"_userSelection\", \"dragStarted\", \"dragEnded\", \"activeDateChange\"], exportAs: [\"matMonthView\"] }, { kind: \"component\", type: MatYearView, selector: \"mat-year-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\"], outputs: [\"selectedChange\", \"monthSelected\", \"activeDateChange\"], exportAs: [\"matYearView\"] }, { kind: \"component\", type: MatMultiYearView, selector: \"mat-multi-year-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\"], outputs: [\"selectedChange\", \"yearSelected\", \"activeDateChange\"], exportAs: [\"matMultiYearView\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCalendar, decorators: [{\n type: Component,\n args: [{ selector: 'mat-calendar', host: {\n 'class': 'mat-calendar',\n }, exportAs: 'matCalendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER], standalone: true, imports: [CdkPortalOutlet, CdkMonitorFocus, MatMonthView, MatYearView, MatMultiYearView], template: \"\\n\\n
\\n @switch (currentView) {\\n @case ('month') {\\n \\n }\\n\\n @case ('year') {\\n \\n }\\n\\n @case ('multi-year') {\\n \\n }\\n }\\n
\\n\", styles: [\".mat-calendar{display:block;font-family:var(--mat-datepicker-calendar-text-font, var(--mat-app-body-medium-font));font-size:var(--mat-datepicker-calendar-text-size, var(--mat-app-body-medium-size))}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;align-items:center;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0;margin:0 8px;font-size:var(--mat-datepicker-calendar-period-button-text-size, var(--mat-app-title-small-size));font-weight:var(--mat-datepicker-calendar-period-button-text-weight, var(--mat-app-title-small-weight));--mdc-text-button-label-text-color:var(--mat-datepicker-calendar-period-button-text-color, var(--mat-app-on-surface-variant))}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle;fill:var(--mat-datepicker-calendar-period-button-icon-color, var(--mat-app-on-surface-variant))}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.cdk-high-contrast-active .mat-calendar-arrow{fill:CanvasText}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-datepicker-content .mat-calendar-previous-button:not(.mat-mdc-button-disabled),.mat-datepicker-content .mat-calendar-next-button:not(.mat-mdc-button-disabled){color:var(--mat-datepicker-calendar-navigation-button-icon-color, var(--mat-app-on-surface-variant))}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0;color:var(--mat-datepicker-calendar-header-text-color, var(--mat-app-on-surface-variant));font-size:var(--mat-datepicker-calendar-header-text-size, var(--mat-app-title-small-size));font-weight:var(--mat-datepicker-calendar-header-text-weight, var(--mat-app-title-small-weight))}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px;background:var(--mat-datepicker-calendar-header-divider-color)}.mat-calendar-body-cell-content::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}.mat-calendar-body-cell:focus .mat-focus-indicator::before{content:\\\"\\\"}\"] }]\n }], ctorParameters: () => [{ type: MatDatepickerIntl }, { type: i1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: i0.ChangeDetectorRef }], propDecorators: { headerComponent: [{\n type: Input\n }], startAt: [{\n type: Input\n }], startView: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], startDateAccessibleName: [{\n type: Input\n }], endDateAccessibleName: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], yearSelected: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], viewChanged: [{\n type: Output\n }], _userSelection: [{\n type: Output\n }], _userDragDrop: [{\n type: Output\n }], monthView: [{\n type: ViewChild,\n args: [MatMonthView]\n }], yearView: [{\n type: ViewChild,\n args: [MatYearView]\n }], multiYearView: [{\n type: ViewChild,\n args: [MatMultiYearView]\n }] } });\n\n/**\n * Animations used by the Material datepicker.\n * @docs-private\n */\nconst matDatepickerAnimations = {\n /** Transforms the height of the datepicker's calendar. */\n transformPanel: trigger('transformPanel', [\n transition('void => enter-dropdown', animate('120ms cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({ opacity: 0, transform: 'scale(1, 0.8)' }),\n style({ opacity: 1, transform: 'scale(1, 1)' }),\n ]))),\n transition('void => enter-dialog', animate('150ms cubic-bezier(0, 0, 0.2, 1)', keyframes([\n style({ opacity: 0, transform: 'scale(0.7)' }),\n style({ transform: 'none', opacity: 1 }),\n ]))),\n transition('* => void', animate('100ms linear', style({ opacity: 0 }))),\n ]),\n /** Fades in the content of the calendar. */\n fadeInCalendar: trigger('fadeInCalendar', [\n state('void', style({ opacity: 0 })),\n state('enter', style({ opacity: 1 })),\n // TODO(crisbeto): this animation should be removed since it isn't quite on spec, but we\n // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\n transition('void => *', animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')),\n ]),\n};\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n/** Injection token that determines the scroll handling while the calendar is open. */\nconst MAT_DATEPICKER_SCROLL_STRATEGY = new InjectionToken('mat-datepicker-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n },\n});\n/** @docs-private */\nfunction MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY,\n};\n/**\n * Component used as the content for the datepicker overlay. We use this instead of using\n * MatCalendar directly as the content so we can control the initial focus. This also gives us a\n * place to put additional features of the overlay that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * @docs-private\n */\nclass MatDatepickerContent {\n constructor(_elementRef, _changeDetectorRef, _globalModel, _dateAdapter, _rangeSelectionStrategy, intl) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._globalModel = _globalModel;\n this._dateAdapter = _dateAdapter;\n this._rangeSelectionStrategy = _rangeSelectionStrategy;\n this._subscriptions = new Subscription();\n /** Emits when an animation has finished. */\n this._animationDone = new Subject();\n /** Whether there is an in-progress animation. */\n this._isAnimating = false;\n /** Portal with projected action buttons. */\n this._actionsPortal = null;\n this._closeButtonText = intl.closeCalendarLabel;\n }\n ngOnInit() {\n this._animationState = this.datepicker.touchUi ? 'enter-dialog' : 'enter-dropdown';\n }\n ngAfterViewInit() {\n this._subscriptions.add(this.datepicker.stateChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n }));\n this._calendar.focusActiveCell();\n }\n ngOnDestroy() {\n this._subscriptions.unsubscribe();\n this._animationDone.complete();\n }\n _handleUserSelection(event) {\n const selection = this._model.selection;\n const value = event.value;\n const isRange = selection instanceof DateRange;\n // If we're selecting a range and we have a selection strategy, always pass the value through\n // there. Otherwise don't assign null values to the model, unless we're selecting a range.\n // A null value when picking a range means that the user cancelled the selection (e.g. by\n // pressing escape), whereas when selecting a single value it means that the value didn't\n // change. This isn't very intuitive, but it's here for backwards-compatibility.\n if (isRange && this._rangeSelectionStrategy) {\n const newSelection = this._rangeSelectionStrategy.selectionFinished(value, selection, event.event);\n this._model.updateSelection(newSelection, this);\n }\n else if (value &&\n (isRange || !this._dateAdapter.sameDate(value, selection))) {\n this._model.add(value);\n }\n // Delegate closing the overlay to the actions.\n if ((!this._model || this._model.isComplete()) && !this._actionsPortal) {\n this.datepicker.close();\n }\n }\n _handleUserDragDrop(event) {\n this._model.updateSelection(event.value, this);\n }\n _startExitAnimation() {\n this._animationState = 'void';\n this._changeDetectorRef.markForCheck();\n }\n _handleAnimationEvent(event) {\n this._isAnimating = event.phaseName === 'start';\n if (!this._isAnimating) {\n this._animationDone.next();\n }\n }\n _getSelected() {\n return this._model.selection;\n }\n /** Applies the current pending selection to the global model. */\n _applyPendingSelection() {\n if (this._model !== this._globalModel) {\n this._globalModel.updateSelection(this._model.selection, this);\n }\n }\n /**\n * Assigns a new portal containing the datepicker actions.\n * @param portal Portal with the actions to be assigned.\n * @param forceRerender Whether a re-render of the portal should be triggered. This isn't\n * necessary if the portal is assigned during initialization, but it may be required if it's\n * added at a later point.\n */\n _assignActions(portal, forceRerender) {\n // If we have actions, clone the model so that we have the ability to cancel the selection,\n // otherwise update the global model directly. Note that we want to assign this as soon as\n // possible, but `_actionsPortal` isn't available in the constructor so we do it in `ngOnInit`.\n this._model = portal ? this._globalModel.clone() : this._globalModel;\n this._actionsPortal = portal;\n if (forceRerender) {\n this._changeDetectorRef.detectChanges();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerContent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MatDateSelectionModel }, { token: i1.DateAdapter }, { token: MAT_DATE_RANGE_SELECTION_STRATEGY, optional: true }, { token: MatDatepickerIntl }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatDatepickerContent, isStandalone: true, selector: \"mat-datepicker-content\", inputs: { color: \"color\" }, host: { listeners: { \"@transformPanel.start\": \"_handleAnimationEvent($event)\", \"@transformPanel.done\": \"_handleAnimationEvent($event)\" }, properties: { \"class\": \"color ? \\\"mat-\\\" + color : \\\"\\\"\", \"@transformPanel\": \"_animationState\", \"class.mat-datepicker-content-touch\": \"datepicker.touchUi\" }, classAttribute: \"mat-datepicker-content\" }, viewQueries: [{ propertyName: \"_calendar\", first: true, predicate: MatCalendar, descendants: true }], exportAs: [\"matDatepickerContent\"], ngImport: i0, template: \"\\n \\n\\n \\n\\n \\n {{ _closeButtonText }}\\n\\n\", styles: [\".mat-datepicker-content{display:block;border-radius:4px;background-color:var(--mat-datepicker-calendar-container-background-color, var(--mat-app-surface-container-high));color:var(--mat-datepicker-calendar-container-text-color, var(--mat-app-on-surface));box-shadow:var(--mat-datepicker-calendar-container-elevation-shadow);border-radius:var(--mat-datepicker-calendar-container-shape, var(--mat-app-corner-large))}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-content-container-with-custom-header .mat-calendar{height:auto}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{display:block;max-height:80vh;box-shadow:var(--mat-datepicker-calendar-container-touch-elevation-shadow);border-radius:var(--mat-datepicker-calendar-container-touch-shape, var(--mat-app-corner-extra-large));position:relative;overflow:visible}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}\"], dependencies: [{ kind: \"directive\", type: CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: [\"cdkTrapFocus\", \"cdkTrapFocusAutoCapture\"], exportAs: [\"cdkTrapFocus\"] }, { kind: \"component\", type: MatCalendar, selector: \"mat-calendar\", inputs: [\"headerComponent\", \"startAt\", \"startView\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\", \"comparisonStart\", \"comparisonEnd\", \"startDateAccessibleName\", \"endDateAccessibleName\"], outputs: [\"selectedChange\", \"yearSelected\", \"monthSelected\", \"viewChanged\", \"_userSelection\", \"_userDragDrop\"], exportAs: [\"matCalendar\"] }, { kind: \"directive\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }, { kind: \"component\", type: MatButton, selector: \" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] \", exportAs: [\"matButton\"] }], animations: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerContent, decorators: [{\n type: Component,\n args: [{ selector: 'mat-datepicker-content', host: {\n 'class': 'mat-datepicker-content',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[@transformPanel]': '_animationState',\n '(@transformPanel.start)': '_handleAnimationEvent($event)',\n '(@transformPanel.done)': '_handleAnimationEvent($event)',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\n }, animations: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar], exportAs: 'matDatepickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CdkTrapFocus, MatCalendar, CdkPortalOutlet, MatButton], template: \"\\n \\n\\n \\n\\n \\n {{ _closeButtonText }}\\n\\n\", styles: [\".mat-datepicker-content{display:block;border-radius:4px;background-color:var(--mat-datepicker-calendar-container-background-color, var(--mat-app-surface-container-high));color:var(--mat-datepicker-calendar-container-text-color, var(--mat-app-on-surface));box-shadow:var(--mat-datepicker-calendar-container-elevation-shadow);border-radius:var(--mat-datepicker-calendar-container-shape, var(--mat-app-corner-large))}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-content-container-with-custom-header .mat-calendar{height:auto}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{display:block;max-height:80vh;box-shadow:var(--mat-datepicker-calendar-container-touch-elevation-shadow);border-radius:var(--mat-datepicker-calendar-container-touch-shape, var(--mat-app-corner-extra-large));position:relative;overflow:visible}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: MatDateSelectionModel }, { type: i1.DateAdapter }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_RANGE_SELECTION_STRATEGY]\n }] }, { type: MatDatepickerIntl }], propDecorators: { _calendar: [{\n type: ViewChild,\n args: [MatCalendar]\n }], color: [{\n type: Input\n }] } });\n/** Base class for a datepicker. */\nclass MatDatepickerBase {\n /** The date to open the calendar to initially. */\n get startAt() {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n return this._startAt || (this.datepickerInput ? this.datepickerInput.getStartValue() : null);\n }\n set startAt(value) {\n this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /**\n * Theme color of the datepicker's calendar. This API is supported in M2 themes only, it\n * has no effect in M3 themes.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/theming#using-component-color-variants.\n */\n get color() {\n return (this._color || (this.datepickerInput ? this.datepickerInput.getThemePalette() : undefined));\n }\n set color(value) {\n this._color = value;\n }\n /** Whether the datepicker pop-up should be disabled. */\n get disabled() {\n return this._disabled === undefined && this.datepickerInput\n ? this.datepickerInput.disabled\n : !!this._disabled;\n }\n set disabled(value) {\n if (value !== this._disabled) {\n this._disabled = value;\n this.stateChanges.next(undefined);\n }\n }\n /** Classes to be passed to the date picker panel. */\n get panelClass() {\n return this._panelClass;\n }\n set panelClass(value) {\n this._panelClass = coerceStringArray(value);\n }\n /** Whether the calendar is open. */\n get opened() {\n return this._opened;\n }\n set opened(value) {\n if (value) {\n this.open();\n }\n else {\n this.close();\n }\n }\n /** The minimum selectable date. */\n _getMinDate() {\n return this.datepickerInput && this.datepickerInput.min;\n }\n /** The maximum selectable date. */\n _getMaxDate() {\n return this.datepickerInput && this.datepickerInput.max;\n }\n _getDateFilter() {\n return this.datepickerInput && this.datepickerInput.dateFilter;\n }\n constructor(_overlay, \n /**\n * @deprecated parameter is unused and will be removed\n * @breaking-change 19.0.0\n */\n _unusedNgZone, _viewContainerRef, scrollStrategy, _dateAdapter, _dir, _model) {\n this._overlay = _overlay;\n this._viewContainerRef = _viewContainerRef;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._model = _model;\n this._inputStateChanges = Subscription.EMPTY;\n this._document = inject(DOCUMENT);\n /** The view that the calendar should start in. */\n this.startView = 'month';\n /**\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n * than a dropdown and elements have more padding to allow for bigger touch targets.\n */\n this.touchUi = false;\n /** Preferred position of the datepicker in the X axis. */\n this.xPosition = 'start';\n /** Preferred position of the datepicker in the Y axis. */\n this.yPosition = 'below';\n /**\n * Whether to restore focus to the previously-focused element when the calendar is closed.\n * Note that automatic focus restoration is an accessibility feature and it is recommended that\n * you provide your own equivalent, if you decide to turn it off.\n */\n this.restoreFocus = true;\n /**\n * Emits selected year in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n this.yearSelected = new EventEmitter();\n /**\n * Emits selected month in year view.\n * This doesn't imply a change on the selected date.\n */\n this.monthSelected = new EventEmitter();\n /**\n * Emits when the current view changes.\n */\n this.viewChanged = new EventEmitter(true);\n /** Emits when the datepicker has been opened. */\n this.openedStream = new EventEmitter();\n /** Emits when the datepicker has been closed. */\n this.closedStream = new EventEmitter();\n this._opened = false;\n /** The id for the datepicker calendar. */\n this.id = `mat-datepicker-${datepickerUid++}`;\n /** The element that was focused before the datepicker was opened. */\n this._focusedElementBeforeOpen = null;\n /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n this._backdropHarnessClass = `${this.id}-backdrop`;\n /** Emits when the datepicker's state changes. */\n this.stateChanges = new Subject();\n this._injector = inject(Injector);\n this._changeDetectorRef = inject(ChangeDetectorRef);\n if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw createMissingDateImplError('DateAdapter');\n }\n this._scrollStrategy = scrollStrategy;\n this._model.selectionChanged.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n ngOnChanges(changes) {\n const positionChange = changes['xPosition'] || changes['yPosition'];\n if (positionChange && !positionChange.firstChange && this._overlayRef) {\n const positionStrategy = this._overlayRef.getConfig().positionStrategy;\n if (positionStrategy instanceof FlexibleConnectedPositionStrategy) {\n this._setConnectedPositions(positionStrategy);\n if (this.opened) {\n this._overlayRef.updatePosition();\n }\n }\n }\n this.stateChanges.next(undefined);\n }\n ngOnDestroy() {\n this._destroyOverlay();\n this.close();\n this._inputStateChanges.unsubscribe();\n this.stateChanges.complete();\n }\n /** Selects the given date */\n select(date) {\n this._model.add(date);\n }\n /** Emits the selected year in multiyear view */\n _selectYear(normalizedYear) {\n this.yearSelected.emit(normalizedYear);\n }\n /** Emits selected month in year view */\n _selectMonth(normalizedMonth) {\n this.monthSelected.emit(normalizedMonth);\n }\n /** Emits changed view */\n _viewChanged(view) {\n this.viewChanged.emit(view);\n }\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n * @returns Selection model that the input should hook itself up to.\n */\n registerInput(input) {\n if (this.datepickerInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('A MatDatepicker can only be associated with a single input.');\n }\n this._inputStateChanges.unsubscribe();\n this.datepickerInput = input;\n this._inputStateChanges = input.stateChanges.subscribe(() => this.stateChanges.next(undefined));\n return this._model;\n }\n /**\n * Registers a portal containing action buttons with the datepicker.\n * @param portal Portal to be registered.\n */\n registerActions(portal) {\n if (this._actionsPortal && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('A MatDatepicker can only be associated with a single actions row.');\n }\n this._actionsPortal = portal;\n this._componentRef?.instance._assignActions(portal, true);\n }\n /**\n * Removes a portal containing action buttons from the datepicker.\n * @param portal Portal to be removed.\n */\n removeActions(portal) {\n if (portal === this._actionsPortal) {\n this._actionsPortal = null;\n this._componentRef?.instance._assignActions(null, true);\n }\n }\n /** Open the calendar. */\n open() {\n // Skip reopening if there's an in-progress animation to avoid overlapping\n // sequences which can cause \"changed after checked\" errors. See #25837.\n if (this._opened || this.disabled || this._componentRef?.instance._isAnimating) {\n return;\n }\n if (!this.datepickerInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempted to open an MatDatepicker with no associated input.');\n }\n this._focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\n this._openOverlay();\n this._opened = true;\n this.openedStream.emit();\n }\n /** Close the calendar. */\n close() {\n // Skip reopening if there's an in-progress animation to avoid overlapping\n // sequences which can cause \"changed after checked\" errors. See #25837.\n if (!this._opened || this._componentRef?.instance._isAnimating) {\n return;\n }\n const canRestoreFocus = this.restoreFocus &&\n this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function';\n const completeClose = () => {\n // The `_opened` could've been reset already if\n // we got two events in quick succession.\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n }\n };\n if (this._componentRef) {\n const { instance, location } = this._componentRef;\n instance._startExitAnimation();\n instance._animationDone.pipe(take(1)).subscribe(() => {\n const activeElement = this._document.activeElement;\n // Since we restore focus after the exit animation, we have to check that\n // the user didn't move focus themselves inside the `close` handler.\n if (canRestoreFocus &&\n (!activeElement ||\n activeElement === this._document.activeElement ||\n location.nativeElement.contains(activeElement))) {\n this._focusedElementBeforeOpen.focus();\n }\n this._focusedElementBeforeOpen = null;\n this._destroyOverlay();\n });\n }\n if (canRestoreFocus) {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the datepicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n // able to close the calendar at all. We work around it by making the logic, that marks\n // the datepicker as closed, async as well.\n setTimeout(completeClose);\n }\n else {\n completeClose();\n }\n }\n /** Applies the current pending selection on the overlay to the model. */\n _applyPendingSelection() {\n this._componentRef?.instance?._applyPendingSelection();\n }\n /** Forwards relevant values from the datepicker to the datepicker content inside the overlay. */\n _forwardContentValues(instance) {\n instance.datepicker = this;\n instance.color = this.color;\n instance._dialogLabelId = this.datepickerInput.getOverlayLabelId();\n instance._assignActions(this._actionsPortal, false);\n }\n /** Opens the overlay with the calendar. */\n _openOverlay() {\n this._destroyOverlay();\n const isDialog = this.touchUi;\n const portal = new ComponentPortal(MatDatepickerContent, this._viewContainerRef);\n const overlayRef = (this._overlayRef = this._overlay.create(new OverlayConfig({\n positionStrategy: isDialog ? this._getDialogStrategy() : this._getDropdownStrategy(),\n hasBackdrop: true,\n backdropClass: [\n isDialog ? 'cdk-overlay-dark-backdrop' : 'mat-overlay-transparent-backdrop',\n this._backdropHarnessClass,\n ],\n direction: this._dir,\n scrollStrategy: isDialog ? this._overlay.scrollStrategies.block() : this._scrollStrategy(),\n panelClass: `mat-datepicker-${isDialog ? 'dialog' : 'popup'}`,\n })));\n this._getCloseStream(overlayRef).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n this.close();\n });\n // The `preventDefault` call happens inside the calendar as well, however focus moves into\n // it inside a timeout which can give browsers a chance to fire off a keyboard event in-between\n // that can scroll the page (see #24969). Always block default actions of arrow keys for the\n // entire overlay so the page doesn't get scrolled by accident.\n overlayRef.keydownEvents().subscribe(event => {\n const keyCode = event.keyCode;\n if (keyCode === UP_ARROW ||\n keyCode === DOWN_ARROW ||\n keyCode === LEFT_ARROW ||\n keyCode === RIGHT_ARROW ||\n keyCode === PAGE_UP ||\n keyCode === PAGE_DOWN) {\n event.preventDefault();\n }\n });\n this._componentRef = overlayRef.attach(portal);\n this._forwardContentValues(this._componentRef.instance);\n // Update the position once the calendar has rendered. Only relevant in dropdown mode.\n if (!isDialog) {\n afterNextRender(() => {\n overlayRef.updatePosition();\n }, { injector: this._injector });\n }\n }\n /** Destroys the current overlay. */\n _destroyOverlay() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = this._componentRef = null;\n }\n }\n /** Gets a position strategy that will open the calendar as a dropdown. */\n _getDialogStrategy() {\n return this._overlay.position().global().centerHorizontally().centerVertically();\n }\n /** Gets a position strategy that will open the calendar as a dropdown. */\n _getDropdownStrategy() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this.datepickerInput.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mat-datepicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition();\n return this._setConnectedPositions(strategy);\n }\n /** Sets the positions of the datepicker in dropdown mode based on the current configuration. */\n _setConnectedPositions(strategy) {\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n return strategy.withPositions([\n {\n originX: primaryX,\n originY: secondaryY,\n overlayX: primaryX,\n overlayY: primaryY,\n },\n {\n originX: primaryX,\n originY: primaryY,\n overlayX: primaryX,\n overlayY: secondaryY,\n },\n {\n originX: secondaryX,\n originY: secondaryY,\n overlayX: secondaryX,\n overlayY: primaryY,\n },\n {\n originX: secondaryX,\n originY: primaryY,\n overlayX: secondaryX,\n overlayY: secondaryY,\n },\n ]);\n }\n /** Gets an observable that will emit when the overlay is supposed to be closed. */\n _getCloseStream(overlayRef) {\n const ctrlShiftMetaModifiers = ['ctrlKey', 'shiftKey', 'metaKey'];\n return merge(overlayRef.backdropClick(), overlayRef.detachments(), overlayRef.keydownEvents().pipe(filter(event => {\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\n return ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (this.datepickerInput &&\n hasModifierKey(event, 'altKey') &&\n event.keyCode === UP_ARROW &&\n ctrlShiftMetaModifiers.every((modifier) => !hasModifierKey(event, modifier))));\n })));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerBase, deps: [{ token: i4.Overlay }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: MAT_DATEPICKER_SCROLL_STRATEGY }, { token: i1.DateAdapter, optional: true }, { token: i2.Directionality, optional: true }, { token: MatDateSelectionModel }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatDatepickerBase, inputs: { calendarHeaderComponent: \"calendarHeaderComponent\", startAt: \"startAt\", startView: \"startView\", color: \"color\", touchUi: [\"touchUi\", \"touchUi\", booleanAttribute], disabled: [\"disabled\", \"disabled\", booleanAttribute], xPosition: \"xPosition\", yPosition: \"yPosition\", restoreFocus: [\"restoreFocus\", \"restoreFocus\", booleanAttribute], dateClass: \"dateClass\", panelClass: \"panelClass\", opened: [\"opened\", \"opened\", booleanAttribute] }, outputs: { yearSelected: \"yearSelected\", monthSelected: \"monthSelected\", viewChanged: \"viewChanged\", openedStream: \"opened\", closedStream: \"closed\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerBase, decorators: [{\n type: Directive\n }], ctorParameters: () => [{ type: i4.Overlay }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DATEPICKER_SCROLL_STRATEGY]\n }] }, { type: i1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: MatDateSelectionModel }], propDecorators: { calendarHeaderComponent: [{\n type: Input\n }], startAt: [{\n type: Input\n }], startView: [{\n type: Input\n }], color: [{\n type: Input\n }], touchUi: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], xPosition: [{\n type: Input\n }], yPosition: [{\n type: Input\n }], restoreFocus: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], yearSelected: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], viewChanged: [{\n type: Output\n }], dateClass: [{\n type: Input\n }], openedStream: [{\n type: Output,\n args: ['opened']\n }], closedStream: [{\n type: Output,\n args: ['closed']\n }], panelClass: [{\n type: Input\n }], opened: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"matDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\nclass MatDatepicker extends MatDatepickerBase {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatDatepicker, isStandalone: true, selector: \"mat-datepicker\", providers: [\n MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER,\n { provide: MatDatepickerBase, useExisting: MatDatepicker },\n ], exportAs: [\"matDatepicker\"], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepicker, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-datepicker',\n template: '',\n exportAs: 'matDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER,\n { provide: MatDatepickerBase, useExisting: MatDatepicker },\n ],\n standalone: true,\n }]\n }] });\n\n/**\n * An event used for datepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.\n */\nclass MatDatepickerInputEvent {\n constructor(\n /** Reference to the datepicker input component that emitted the event. */\n target, \n /** Reference to the native input element associated with the datepicker input. */\n targetElement) {\n this.target = target;\n this.targetElement = targetElement;\n this.value = this.target.value;\n }\n}\n/** Base class for datepicker inputs. */\nclass MatDatepickerInputBase {\n /** The value of the input. */\n get value() {\n return this._model ? this._getValueFromModel(this._model.selection) : this._pendingValue;\n }\n set value(value) {\n this._assignValueProgrammatically(value);\n }\n /** Whether the datepicker-input is disabled. */\n get disabled() {\n return !!this._disabled || this._parentDisabled();\n }\n set disabled(value) {\n const newValue = value;\n const element = this._elementRef.nativeElement;\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.stateChanges.next(undefined);\n }\n // We need to null check the `blur` method, because it's undefined during SSR.\n // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n // element has been inserted.\n if (newValue && this._isInitialized && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n /** Gets the base validator functions. */\n _getValidators() {\n return [this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator];\n }\n /** Registers a date selection model with the input. */\n _registerModel(model) {\n this._model = model;\n this._valueChangesSubscription.unsubscribe();\n if (this._pendingValue) {\n this._assignValue(this._pendingValue);\n }\n this._valueChangesSubscription = this._model.selectionChanged.subscribe(event => {\n if (this._shouldHandleChangeEvent(event)) {\n const value = this._getValueFromModel(event.selection);\n this._lastValueValid = this._isValidValue(value);\n this._cvaOnChange(value);\n this._onTouched();\n this._formatValue(value);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n });\n }\n constructor(_elementRef, _dateAdapter, _dateFormats) {\n this._elementRef = _elementRef;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n /** Emits when a `change` event is fired on this ``. */\n this.dateChange = new EventEmitter();\n /** Emits when an `input` event is fired on this ``. */\n this.dateInput = new EventEmitter();\n /** Emits when the internal state has changed */\n this.stateChanges = new Subject();\n this._onTouched = () => { };\n this._validatorOnChange = () => { };\n this._cvaOnChange = () => { };\n this._valueChangesSubscription = Subscription.EMPTY;\n this._localeSubscription = Subscription.EMPTY;\n /** The form control validator for whether the input parses. */\n this._parseValidator = () => {\n return this._lastValueValid\n ? null\n : { 'matDatepickerParse': { 'text': this._elementRef.nativeElement.value } };\n };\n /** The form control validator for the date filter. */\n this._filterValidator = (control) => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n return !controlValue || this._matchesFilter(controlValue)\n ? null\n : { 'matDatepickerFilter': true };\n };\n /** The form control validator for the min date. */\n this._minValidator = (control) => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const min = this._getMinDate();\n return !min || !controlValue || this._dateAdapter.compareDate(min, controlValue) <= 0\n ? null\n : { 'matDatepickerMin': { 'min': min, 'actual': controlValue } };\n };\n /** The form control validator for the max date. */\n this._maxValidator = (control) => {\n const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n const max = this._getMaxDate();\n return !max || !controlValue || this._dateAdapter.compareDate(max, controlValue) >= 0\n ? null\n : { 'matDatepickerMax': { 'max': max, 'actual': controlValue } };\n };\n /** Whether the last value set on the input was valid. */\n this._lastValueValid = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('MAT_DATE_FORMATS');\n }\n }\n // Update the displayed date when the locale changes.\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n this._assignValueProgrammatically(this.value);\n });\n }\n ngAfterViewInit() {\n this._isInitialized = true;\n }\n ngOnChanges(changes) {\n if (dateInputsHaveChanged(changes, this._dateAdapter)) {\n this.stateChanges.next(undefined);\n }\n }\n ngOnDestroy() {\n this._valueChangesSubscription.unsubscribe();\n this._localeSubscription.unsubscribe();\n this.stateChanges.complete();\n }\n /** @docs-private */\n registerOnValidatorChange(fn) {\n this._validatorOnChange = fn;\n }\n /** @docs-private */\n validate(c) {\n return this._validator ? this._validator(c) : null;\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n this._assignValueProgrammatically(value);\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._cvaOnChange = 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.disabled = isDisabled;\n }\n _onKeydown(event) {\n const ctrlShiftMetaModifiers = ['ctrlKey', 'shiftKey', 'metaKey'];\n const isAltDownArrow = hasModifierKey(event, 'altKey') &&\n event.keyCode === DOWN_ARROW &&\n ctrlShiftMetaModifiers.every((modifier) => !hasModifierKey(event, modifier));\n if (isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._openPopup();\n event.preventDefault();\n }\n }\n _onInput(value) {\n const lastValueWasValid = this._lastValueValid;\n let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n this._lastValueValid = this._isValidValue(date);\n date = this._dateAdapter.getValidDateOrNull(date);\n const hasChanged = !this._dateAdapter.sameDate(date, this.value);\n // We need to fire the CVA change event for all\n // nulls, otherwise the validators won't run.\n if (!date || hasChanged) {\n this._cvaOnChange(date);\n }\n else {\n // Call the CVA change handler for invalid values\n // since this is what marks the control as dirty.\n if (value && !this.value) {\n this._cvaOnChange(date);\n }\n if (lastValueWasValid !== this._lastValueValid) {\n this._validatorOnChange();\n }\n }\n if (hasChanged) {\n this._assignValue(date);\n this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n }\n _onChange() {\n this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));\n }\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n this._onTouched();\n }\n /** Formats a value and sets it on the input element. */\n _formatValue(value) {\n this._elementRef.nativeElement.value =\n value != null ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\n }\n /** Assigns a value to the model. */\n _assignValue(value) {\n // We may get some incoming values before the model was\n // assigned. Save the value so that we can assign it later.\n if (this._model) {\n this._assignValueToModel(value);\n this._pendingValue = null;\n }\n else {\n this._pendingValue = value;\n }\n }\n /** Whether a value is considered valid. */\n _isValidValue(value) {\n return !value || this._dateAdapter.isValid(value);\n }\n /**\n * Checks whether a parent control is disabled. This is in place so that it can be overridden\n * by inputs extending this one which can be placed inside of a group that can be disabled.\n */\n _parentDisabled() {\n return false;\n }\n /** Programmatically assigns a value to the input. */\n _assignValueProgrammatically(value) {\n value = this._dateAdapter.deserialize(value);\n this._lastValueValid = this._isValidValue(value);\n value = this._dateAdapter.getValidDateOrNull(value);\n this._assignValue(value);\n this._formatValue(value);\n }\n /** Gets whether a value matches the current date filter. */\n _matchesFilter(value) {\n const filter = this._getDateFilter();\n return !filter || filter(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerInputBase, deps: [{ token: i0.ElementRef }, { token: i1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatDatepickerInputBase, isStandalone: true, inputs: { value: \"value\", disabled: [\"disabled\", \"disabled\", booleanAttribute] }, outputs: { dateChange: \"dateChange\", dateInput: \"dateInput\" }, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerInputBase, decorators: [{\n type: Directive,\n args: [{ standalone: true }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }], propDecorators: { value: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], dateChange: [{\n type: Output\n }], dateInput: [{\n type: Output\n }] } });\n/**\n * Checks whether the `SimpleChanges` object from an `ngOnChanges`\n * callback has any changes, accounting for date objects.\n */\nfunction dateInputsHaveChanged(changes, adapter) {\n const keys = Object.keys(changes);\n for (let key of keys) {\n const { previousValue, currentValue } = changes[key];\n if (adapter.isDateInstance(previousValue) && adapter.isDateInstance(currentValue)) {\n if (!adapter.sameDate(previousValue, currentValue)) {\n return true;\n }\n }\n else {\n return true;\n }\n }\n return false;\n}\n\n/** @docs-private */\nconst MAT_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true,\n};\n/** @docs-private */\nconst MAT_DATEPICKER_VALIDATORS = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MatDatepickerInput),\n multi: true,\n};\n/** Directive used to connect an input to a MatDatepicker. */\nclass MatDatepickerInput extends MatDatepickerInputBase {\n /** The datepicker that this input is associated with. */\n set matDatepicker(datepicker) {\n if (datepicker) {\n this._datepicker = datepicker;\n this._ariaOwns.set(datepicker.opened ? datepicker.id : null);\n this._closedSubscription = datepicker.closedStream.subscribe(() => {\n this._onTouched();\n this._ariaOwns.set(null);\n });\n this._openedSubscription = datepicker.openedStream.subscribe(() => {\n this._ariaOwns.set(datepicker.id);\n });\n this._registerModel(datepicker.registerInput(this));\n }\n }\n /** The minimum valid date. */\n get min() {\n return this._min;\n }\n set min(value) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n if (!this._dateAdapter.sameDate(validValue, this._min)) {\n this._min = validValue;\n this._validatorOnChange();\n }\n }\n /** The maximum valid date. */\n get max() {\n return this._max;\n }\n set max(value) {\n const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n if (!this._dateAdapter.sameDate(validValue, this._max)) {\n this._max = validValue;\n this._validatorOnChange();\n }\n }\n /** Function that can be used to filter out dates within the datepicker. */\n get dateFilter() {\n return this._dateFilter;\n }\n set dateFilter(value) {\n const wasMatchingValue = this._matchesFilter(this.value);\n this._dateFilter = value;\n if (this._matchesFilter(this.value) !== wasMatchingValue) {\n this._validatorOnChange();\n }\n }\n constructor(elementRef, dateAdapter, dateFormats, _formField) {\n super(elementRef, dateAdapter, dateFormats);\n this._formField = _formField;\n this._closedSubscription = Subscription.EMPTY;\n this._openedSubscription = Subscription.EMPTY;\n /** The id of the panel owned by this input. */\n this._ariaOwns = signal(null);\n this._validator = Validators.compose(super._getValidators());\n }\n /**\n * Gets the element that the datepicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getConnectedOverlayOrigin() {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n /** Gets the ID of an element that should be used a description for the calendar overlay. */\n getOverlayLabelId() {\n if (this._formField) {\n return this._formField.getLabelId();\n }\n return this._elementRef.nativeElement.getAttribute('aria-labelledby');\n }\n /** Returns the palette used by the input's form field, if any. */\n getThemePalette() {\n return this._formField ? this._formField.color : undefined;\n }\n /** Gets the value at which the calendar should start. */\n getStartValue() {\n return this.value;\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._closedSubscription.unsubscribe();\n this._openedSubscription.unsubscribe();\n }\n /** Opens the associated datepicker. */\n _openPopup() {\n if (this._datepicker) {\n this._datepicker.open();\n }\n }\n _getValueFromModel(modelValue) {\n return modelValue;\n }\n _assignValueToModel(value) {\n if (this._model) {\n this._model.updateSelection(value, this);\n }\n }\n /** Gets the input's minimum date. */\n _getMinDate() {\n return this._min;\n }\n /** Gets the input's maximum date. */\n _getMaxDate() {\n return this._max;\n }\n /** Gets the input's date filtering function. */\n _getDateFilter() {\n return this._dateFilter;\n }\n _shouldHandleChangeEvent(event) {\n return event.source !== this;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerInput, deps: [{ token: i0.ElementRef }, { token: i1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatDatepickerInput, isStandalone: true, selector: \"input[matDatepicker]\", inputs: { matDatepicker: \"matDatepicker\", min: \"min\", max: \"max\", dateFilter: [\"matDatepickerFilter\", \"dateFilter\"] }, host: { listeners: { \"input\": \"_onInput($event.target.value)\", \"change\": \"_onChange()\", \"blur\": \"_onBlur()\", \"keydown\": \"_onKeydown($event)\" }, properties: { \"attr.aria-haspopup\": \"_datepicker ? \\\"dialog\\\" : null\", \"attr.aria-owns\": \"_ariaOwns()\", \"attr.min\": \"min ? _dateAdapter.toIso8601(min) : null\", \"attr.max\": \"max ? _dateAdapter.toIso8601(max) : null\", \"attr.data-mat-calendar\": \"_datepicker ? _datepicker.id : null\", \"disabled\": \"disabled\" }, classAttribute: \"mat-datepicker-input\" }, providers: [\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },\n ], exportAs: [\"matDatepickerInput\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerInput, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[matDatepicker]',\n providers: [\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },\n ],\n host: {\n 'class': 'mat-datepicker-input',\n '[attr.aria-haspopup]': '_datepicker ? \"dialog\" : null',\n '[attr.aria-owns]': '_ariaOwns()',\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n // Used by the test harness to tie this input to its calendar. We can't depend on\n // `aria-owns` for this, because it's only defined while the calendar is open.\n '[attr.data-mat-calendar]': '_datepicker ? _datepicker.id : null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'matDatepickerInput',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.DateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_FORMATS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }], propDecorators: { matDatepicker: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], dateFilter: [{\n type: Input,\n args: ['matDatepickerFilter']\n }] } });\n\n/** Can be used to override the icon of a `matDatepickerToggle`. */\nclass MatDatepickerToggleIcon {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatDatepickerToggleIcon, isStandalone: true, selector: \"[matDatepickerToggleIcon]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerToggleIcon, decorators: [{\n type: Directive,\n args: [{\n selector: '[matDatepickerToggleIcon]',\n standalone: true,\n }]\n }] });\nclass MatDatepickerToggle {\n /** Whether the toggle button is disabled. */\n get disabled() {\n if (this._disabled === undefined && this.datepicker) {\n return this.datepicker.disabled;\n }\n return !!this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n }\n constructor(_intl, _changeDetectorRef, defaultTabIndex) {\n this._intl = _intl;\n this._changeDetectorRef = _changeDetectorRef;\n this._stateChanges = Subscription.EMPTY;\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n }\n ngOnChanges(changes) {\n if (changes['datepicker']) {\n this._watchStateChanges();\n }\n }\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n _open(event) {\n if (this.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n _watchStateChanges() {\n const datepickerStateChanged = this.datepicker ? this.datepicker.stateChanges : of();\n const inputStateChanged = this.datepicker && this.datepicker.datepickerInput\n ? this.datepicker.datepickerInput.stateChanges\n : of();\n const datepickerToggled = this.datepicker\n ? merge(this.datepicker.openedStream, this.datepicker.closedStream)\n : of();\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(this._intl.changes, datepickerStateChanged, inputStateChanged, datepickerToggled).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerToggle, deps: [{ token: MatDatepickerIntl }, { token: i0.ChangeDetectorRef }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: MatDatepickerToggle, isStandalone: true, selector: \"mat-datepicker-toggle\", inputs: { datepicker: [\"for\", \"datepicker\"], tabIndex: \"tabIndex\", ariaLabel: [\"aria-label\", \"ariaLabel\"], disabled: [\"disabled\", \"disabled\", booleanAttribute], disableRipple: \"disableRipple\" }, host: { listeners: { \"click\": \"_open($event)\" }, properties: { \"attr.tabindex\": \"null\", \"class.mat-datepicker-toggle-active\": \"datepicker && datepicker.opened\", \"class.mat-accent\": \"datepicker && datepicker.color === \\\"accent\\\"\", \"class.mat-warn\": \"datepicker && datepicker.color === \\\"warn\\\"\", \"attr.data-mat-calendar\": \"datepicker ? datepicker.id : null\" }, classAttribute: \"mat-datepicker-toggle\" }, queries: [{ propertyName: \"_customIcon\", first: true, predicate: MatDatepickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: \"_button\", first: true, predicate: [\"button\"], descendants: true }], exportAs: [\"matDatepickerToggle\"], usesOnChanges: true, ngImport: i0, template: \"\\n\\n @if (!_customIcon) {\\n \\n \\n \\n }\\n\\n \\n\\n\", styles: [\".mat-datepicker-toggle{pointer-events:auto;color:var(--mat-datepicker-toggle-icon-color, var(--mat-app-on-surface-variant))}.mat-datepicker-toggle-active{color:var(--mat-datepicker-toggle-active-state-icon-color, var(--mat-app-on-surface-variant))}.cdk-high-contrast-active .mat-datepicker-toggle-default-icon{color:CanvasText}\"], dependencies: [{ kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button]\", exportAs: [\"matButton\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatDatepickerToggle, decorators: [{\n type: Component,\n args: [{ selector: 'mat-datepicker-toggle', host: {\n 'class': 'mat-datepicker-toggle',\n '[attr.tabindex]': 'null',\n '[class.mat-datepicker-toggle-active]': 'datepicker && datepicker.opened',\n '[class.mat-accent]': 'datepicker && datepicker.color === \"accent\"',\n '[class.mat-warn]': 'datepicker && datepicker.color === \"warn\"',\n // Used by the test harness to tie this toggle to its datepicker.\n '[attr.data-mat-calendar]': 'datepicker ? datepicker.id : null',\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)',\n }, exportAs: 'matDatepickerToggle', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconButton], template: \"\\n\\n @if (!_customIcon) {\\n \\n \\n \\n }\\n\\n \\n\\n\", styles: [\".mat-datepicker-toggle{pointer-events:auto;color:var(--mat-datepicker-toggle-icon-color, var(--mat-app-on-surface-variant))}.mat-datepicker-toggle-active{color:var(--mat-datepicker-toggle-active-state-icon-color, var(--mat-app-on-surface-variant))}.cdk-high-contrast-active .mat-datepicker-toggle-default-icon{color:CanvasText}\"] }]\n }], ctorParameters: () => [{ type: MatDatepickerIntl }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }], propDecorators: { datepicker: [{\n type: Input,\n args: ['for']\n }], tabIndex: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], disableRipple: [{\n type: Input\n }], _customIcon: [{\n type: ContentChild,\n args: [MatDatepickerToggleIcon]\n }], _button: [{\n type: ViewChild,\n args: ['button']\n }] } });\n\n// This file contains the `_computeAriaAccessibleName` function, which computes what the *expected*\n// ARIA accessible name would be for a given element. Implements a subset of ARIA specification\n// [Accessible Name and Description Computation 1.2](https://www.w3.org/TR/accname-1.2/).\n//\n// Specification accname-1.2 can be summarized by returning the result of the first method\n// available.\n//\n// 1. `aria-labelledby` attribute\n// ```\n// \n// \n// \n// ```\n// 2. `aria-label` attribute (e.g. ``)\n// 3. Label with `for`/`id`\n// ```\n// \n// \n// \n// ```\n// 4. `placeholder` attribute (e.g. ``)\n// 5. `title` attribute (e.g. ``)\n// 6. text content\n// ```\n// \n// \n// \n// ```\n/**\n * Computes the *expected* ARIA accessible name for argument element based on [accname-1.2\n * specification](https://www.w3.org/TR/accname-1.2/). Implements a subset of accname-1.2,\n * and should only be used for the Datepicker's specific use case.\n *\n * Intended use:\n * This is not a general use implementation. Only implements the parts of accname-1.2 that are\n * required for the Datepicker's specific use case. This function is not intended for any other\n * use.\n *\n * Limitations:\n * - Only covers the needs of `matStartDate` and `matEndDate`. Does not support other use cases.\n * - See NOTES's in implementation for specific details on what parts of the accname-1.2\n * specification are not implemented.\n *\n * @param element {HTMLInputElement} native <input/> element of `matStartDate` or\n * `matEndDate` component. Corresponds to the 'Root Element' from accname-1.2\n *\n * @return expected ARIA accessible name of argument <input/>\n */\nfunction _computeAriaAccessibleName(element) {\n return _computeAriaAccessibleNameInternal(element, true);\n}\n/**\n * Determine if argument node is an Element based on `nodeType` property. This function is safe to\n * use with server-side rendering.\n */\nfunction ssrSafeIsElement(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Determine if argument node is an HTMLInputElement based on `nodeName` property. This funciton is\n * safe to use with server-side rendering.\n */\nfunction ssrSafeIsHTMLInputElement(node) {\n return node.nodeName === 'INPUT';\n}\n/**\n * Determine if argument node is an HTMLTextAreaElement based on `nodeName` property. This\n * funciton is safe to use with server-side rendering.\n */\nfunction ssrSafeIsHTMLTextAreaElement(node) {\n return node.nodeName === 'TEXTAREA';\n}\n/**\n * Calculate the expected ARIA accessible name for given DOM Node. Given DOM Node may be either the\n * \"Root node\" passed to `_computeAriaAccessibleName` or \"Current node\" as result of recursion.\n *\n * @return the accessible name of argument DOM Node\n *\n * @param currentNode node to determine accessible name of\n * @param isDirectlyReferenced true if `currentNode` is the root node to calculate ARIA accessible\n * name of. False if it is a result of recursion.\n */\nfunction _computeAriaAccessibleNameInternal(currentNode, isDirectlyReferenced) {\n // NOTE: this differs from accname-1.2 specification.\n // - Does not implement Step 1. of accname-1.2: '''If `currentNode`'s role prohibits naming,\n // return the empty string (\"\")'''.\n // - Does not implement Step 2.A. of accname-1.2: '''if current node is hidden and not directly\n // referenced by aria-labelledby... return the empty string.'''\n // acc-name-1.2 Step 2.B.: aria-labelledby\n if (ssrSafeIsElement(currentNode) && isDirectlyReferenced) {\n const labelledbyIds = currentNode.getAttribute?.('aria-labelledby')?.split(/\\s+/g) || [];\n const validIdRefs = labelledbyIds.reduce((validIds, id) => {\n const elem = document.getElementById(id);\n if (elem) {\n validIds.push(elem);\n }\n return validIds;\n }, []);\n if (validIdRefs.length) {\n return validIdRefs\n .map(idRef => {\n return _computeAriaAccessibleNameInternal(idRef, false);\n })\n .join(' ');\n }\n }\n // acc-name-1.2 Step 2.C.: aria-label\n if (ssrSafeIsElement(currentNode)) {\n const ariaLabel = currentNode.getAttribute('aria-label')?.trim();\n if (ariaLabel) {\n return ariaLabel;\n }\n }\n // acc-name-1.2 Step 2.D. attribute or element that defines a text alternative\n //\n // NOTE: this differs from accname-1.2 specification.\n // Only implements Step 2.D. for `