{"version":3,"file":"1735.9c6c002d11de5cfb.js","mappings":"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","names":["dueTime","intervalOrScheduler","scheduler","asyncScheduler","intervalDuration","isScheduler","Observable","subscriber","due","isValidDate","now","n","schedule","closed","next","this","undefined","complete","duration","durationSelector","operate","source","hasValue","lastValue","durationSubscriber","isComplete","endDuration","unsubscribe","value","cleanupDuration","subscribe","createOperatorSubscriber","innerFrom","audit","timer","resolved","nextHandle","activeHandles","handle","Immediate","setImmediate","cb","Promise","resolve","then","findAndClearHandle","clearImmediate","immediateProvider","args","delegate","asapScheduler","AsyncScheduler","flush","action","_active","flushId","_scheduled","actions","error","shift","execute","state","delay","id","AsyncAction","constructor","work","super","requestAsyncId","push","bind","recycleAsyncId","_a","length","el","attr","getAttribute","match","CDK_DESCRIBEDBY_ID_PREFIX","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","nextId","AriaDescriber","_document","_platform","_messageRegistry","Map","_messagesContainer","_id","describe","hostElement","message","role","_canBeDescribed","key","getKey","setMessageId","set","messageElement","referenceCount","has","_createMessageElement","_isElementDescribedByMessage","_addMessageReference","removeDescription","_isElementNode","_removeMessageReference","registeredMessage","get","_deleteMessageElement","childNodes","remove","ngOnDestroy","describedElements","querySelectorAll","i","_removeCdkDescribedByReferenceIds","removeAttribute","clear","createElement","textContent","setAttribute","_createMessagesContainer","appendChild","_b","delete","containerClassName","serverContainers","messagesContainer","style","visibility","classList","add","isBrowser","body","element","originalReferenceIds","getAriaReferenceIds","filter","indexOf","join","ids","some","existingId","trim","ID_DELIMITER","addAriaReferencedId","filteredIds","val","removeAriaReferencedId","referenceIds","messageId","trimmedMessage","ariaLabel","nodeType","ELEMENT_NODE","ɵfac","i0","DOCUMENT","i1","ɵprov","factory","_items","_activeItemIndex","_activeItem","_wrap","_letterKeyStream","Subject","_typeaheadSubscription","Subscription","_vertical","_allowedModifierKeys","_homeAndEnd","_skipPredicateFn","item","disabled","_pressedLetters","tabOut","change","QueryList","changes","newItems","newIndex","itemArray","toArray","skipPredicate","predicate","withWrap","shouldWrap","withVerticalOrientation","enabled","withHorizontalOrientation","direction","_horizontal","withAllowedModifierKeys","keys","withTypeAhead","debounceInterval","pipe","tap","letter","debounceTime","map","inputString","items","_getItemsArray","index","getLabel","toUpperCase","setActiveItem","withHomeAndEnd","previousActiveItem","updateActiveItem","onKeydown","event","keyCode","isModifierAllowed","modifiers","every","modifier","TAB","DOWN_ARROW","setNextItemActive","UP_ARROW","setPreviousItemActive","RIGHT_ARROW","LEFT_ARROW","HOME","setFirstItemActive","END","setLastItemActive","hasModifierKey","toLocaleUpperCase","A","Z","ZERO","NINE","String","fromCharCode","preventDefault","activeItemIndex","activeItem","isTyping","_setActiveItemByIndex","_setActiveItemByDelta","delta","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ListKeyManager","setInactiveStyles","setActiveStyles","arguments","_origin","setFocusOrigin","origin","focus","InteractivityChecker","isDisabled","hasAttribute","isVisible","offsetWidth","offsetHeight","getClientRects","hasGeometry","getComputedStyle","isTabbable","frameElement","window","getFrameElement","node","ownerDocument","defaultView","getWindow","getTabIndexValue","nodeName","toLowerCase","tabIndexValue","WEBKIT","IOS","inputType","type","isPotentiallyTabbableIOS","FIREFOX","tabIndex","isFocusable","config","isInputElement","isHiddenInput","isNativeFormElement","isAnchorElement","isAnchorWithHref","hasValidTabIndex","isPotentiallyFocusable","ignoreVisibility","isNaN","parseInt","_element","_checker","_ngZone","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","_enabled","attachAnchors","_startAnchor","_endAnchor","_toggleAnchorTabIndex","destroy","startAnchor","endAnchor","removeEventListener","runOutsideAngular","_createAnchor","addEventListener","parentNode","insertBefore","nextSibling","focusInitialElementWhenReady","options","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","querySelector","focusableChild","hasAttached","root","children","tabbableChild","anchor","isEnabled","toggleAnchors","fn","isStable","onStable","take","FocusTrapFactory","create","deferCaptureElements","FocusTrap","buttons","offsetX","offsetY","touch","touches","changedTouches","identifier","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","InjectionToken","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","ALT","CONTROL","MAC_META","META","SHIFT","modalityEventListenerOptions","normalizePassiveListenerOptions","passive","capture","InputModalityDetector","ngZone","document","_mostRecentTarget","_modality","BehaviorSubject","_lastTouchMs","_onKeydown","_options","_getEventTarget","_onMousedown","Date","isFakeMousedownFromScreenReader","_onTouchstart","isFakeTouchstartFromScreenReader","Object","assign","modalityDetected","skip","modalityChanged","distinctUntilChanged","mostRecentModality","LIVE_ANNOUNCER_ELEMENT_TOKEN","providedIn","LIVE_ANNOUNCER_DEFAULT_OPTIONS","LiveAnnouncer","elementToken","_defaultOptions","_liveElement","_createLiveElement","announce","defaultOptions","politeness","clearTimeout","_previousTimeout","_currentPromise","_currentResolve","setTimeout","call","elementClass","previousElements","getElementsByClassName","liveEl","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","target","handler","_onFocus","_onBlur","parentElement","_detectionMode","detectionMode","monitor","checkChildren","nativeElement","coerceElement","of","rootNode","_getShadowRoot","_getDocument","cachedInfo","subject","info","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","activeElement","_getClosestElementsInfo","forEach","currentElement","_originChanged","_setOrigin","_info","_getWindow","doc","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","contains","toggle","isFromInteraction","_originTimeoutId","ms","relatedTarget","Node","_emitOrigin","run","rootNodeFocusListeners","takeUntil","modality","results","CdkMonitorFocus","_elementRef","_focusMonitor","cdkFocusChange","EventEmitter","ngAfterViewInit","_monitorSubscription","emit","ɵdir","selectors","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","getHighContrastMode","testElement","backgroundColor","position","documentWindow","computedStyle","computedColor","replace","_applyBodyHighContrastModeCssClasses","_hasCheckedHighContrastMode","bodyClasses","mode","A11yModule","highContrastModeDetector","ɵmod","ɵinj","ObserversModule","DIR_DOCUMENT","inject","RTL_LOCALE_PATTERN","Directionality","htmlDir","documentElement","dir","rawValue","navigator","language","test","_resolveDirectionality","BidiModule","fallbackValue","parseFloat","Number","_isNumberValue","Array","isArray","elementOrRef","ElementRef","result","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","altKey","shiftKey","ctrlKey","metaKey","MutationObserverFactory","callback","MutationObserver","ContentObserver","_mutationObserverFactory","_observedElements","_","_cleanupObserver","observe","observer","subscription","stream","_observeElement","_unobserveElement","count","mutations","characterData","childList","subtree","disconnect","CdkObserveContent","_contentObserver","_disabled","_currentSubscription","coerceBooleanProperty","_unsubscribe","_subscribe","debounce","_debounce","coerceNumberProperty","ngAfterContentInit","scrollBehaviorSupported","supportsScrollBehavior","_viewportRuler","_previousHTMLStyles","top","left","_isEnabled","attach","enable","_canBeEnabled","_previousScrollPosition","getViewportScrollPosition","coerceCssPixelValue","disable","html","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","scroll","viewport","getViewportSize","scrollHeight","height","scrollWidth","width","_scrollDispatcher","_config","_scrollSubscription","_detach","_overlayRef","detach","overlayRef","scrolled","threshold","_initialScrollPosition","scrollPosition","Math","abs","updatePosition","scrollContainers","containerBounds","bottom","right","outsideRight","scrollContainerRect","clippedRight","scrollThrottle","autoClose","overlayRect","overlayElement","getBoundingClientRect","isElementScrolledOutsideView","ScrollStrategyOptions","noop","NoopScrollStrategy","close","CloseScrollStrategy","block","BlockScrollStrategy","reposition","RepositionScrollStrategy","scrollStrategy","panelClass","hasBackdrop","backdropClass","disposeOnNavigation","configKeys","connectionPair","scrollableViewProperties","_portalOutlet","_host","_pane","_keyboardDispatcher","_location","_outsideClickDispatcher","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_backdropTransitionendHandler","_disposeBackdrop","_keydownEvents","_outsidePointerEvents","_scrollStrategy","_positionStrategy","positionStrategy","backdropElement","portal","_previousHostParent","attachResult","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_attachBackdrop","_toggleClasses","dispose","detachBackdrop","detachmentResult","_detachContentWhenStable","isAttached","_disposeScrollStrategy","backdropClick","attachments","detachments","keydownEvents","outsidePointerEvents","getConfig","apply","updatePositionStrategy","strategy","updateSize","sizeConfig","setDirection","addPanelClass","classes","removePanelClass","getDirection","updateScrollStrategy","minWidth","minHeight","maxWidth","maxHeight","enablePointer","pointerEvents","showingClass","requestAnimationFrame","backdropToDetach","_backdropTimeout","cssClasses","isAdd","coerceArray","c","merge","backdrop","OverlayContainer","_containerElement","getContainerElement","_createContainer","containerClass","_isTestEnvironment","oppositePlatformContainers","container","i1$1","boundingBoxClass","cssUnitPattern","connectedTo","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_preferredPositions","_positionChanges","_resizeSubscription","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","positions","_validatePositions","_boundingBox","_isDisposed","_isInitialRender","_lastPosition","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","_containerRect","originRect","viewportRect","containerRect","flexibleFits","fallback","pos","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","fit","score","weight","_previousPushAmount","extendStyles","alignItems","justifyContent","lastPosition","withScrollableContainers","scrollables","withPositions","withViewportMargin","margin","withFlexibleDimensions","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withLockedPosition","isLocked","withDefaultOffsetX","offset","withDefaultOffsetY","withTransformOriginOn","selector","_transformOriginSelector","x","y","originX","startX","_isRtl","endX","originY","overlayStartX","overlayStartY","overlayX","r","overlayY","point","rawOverlayRect","overlay","getRoundedBoundingClientRect","_getOffset","topOverflow","bottomOverflow","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","horizontalFit","_pushOverlayOnScreen","start","overflowRight","max","overflowBottom","overflowTop","overflowLeft","pushX","pushY","h","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","observers","_getScrollVisibility","changeEvent","ConnectedOverlayPositionChange","elements","xOrigin","yOrigin","transformOrigin","isRtl","smallestDistanceToViewportEdge","min","previousHeight","previousWidth","styles","_hasExactPosition","o","transform","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","clientHeight","horizontalStyleProperty","clientWidth","originBounds","overlayBounds","scrollContainerBounds","scrollable","getElementRef","isOriginClipped","isElementClippedByScrolling","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","reduce","currentValue","currentOverflow","axis","cssClass","Element","destination","hasOwnProperty","input","units","split","clientRect","floor","wrapperClass","_cssPosition","_topOffset","_bottomOffset","_leftOffset","_rightOffset","_alignItems","_justifyContent","_width","_height","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","marginLeft","marginTop","marginBottom","marginRight","K","parent","OverlayPositionBuilder","global","GlobalPositionStrategy","flexibleConnectedTo","FlexibleConnectedPositionStrategy","BaseOverlayDispatcher","_attachedOverlays","splice","OverlayKeyboardDispatcher","_keydownListener","overlays","_isAttached","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","slice","_addEventListeners","_cursorOriginalValue","cursor","nextUniqueId","Overlay","scrollStrategies","_componentFactoryResolver","_positionBuilder","_injector","_directionality","host","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","OverlayConfig","OverlayRef","_appRef","ApplicationRef","DomPortalOutlet","i5","i6","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","elementRef","CdkConnectedOverlay","_overlay","templateRef","viewContainerRef","scrollStrategyFactory","_dir","_hasBackdrop","_lockPosition","_flexibleDimensions","_push","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","open","disableClose","positionChange","overlayKeydown","overlayOutsideClick","_templatePortal","TemplatePortal","_scrollStrategyFactory","_position","_updatePositionStrategy","lockPosition","ngOnChanges","_attachOverlay","_detachOverlay","_createOverlay","_buildConfig","_createPositionStrategy","currentPosition","_getFlexibleConnectedPositionStrategyOrigin","transformOriginSelector","inclusive","takeWhile","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","provide","deps","useFactory","OverlayModule","imports","PortalModule","ScrollingModule","FullscreenOverlayContainer","hasV8BreakIterator","Intl","v8BreakIterator","supportsPassiveEvents","rtlScrollAxisType","shadowDomIsSupported","Platform","_platformId","isPlatformBrowser","EDGE","userAgent","TRIDENT","BLINK","chrome","CSS","ANDROID","SAFARI","PLATFORM_ID","defineProperty","supportsPassiveEventListeners","scrollToFunction","prototype","scrollTo","toString","scrollContainer","containerStyle","overflow","content","contentStyle","scrollLeft","head","createShadowRoot","attachShadow","_supportsShadowDom","getRootNode","ShadowRoot","shadowRoot","newActiveElement","composedPath","__karma__","jasmine","jest","Mocha","_attachedHost","setAttachedHost","Portal","component","injector","componentFactoryResolver","template","context","attachDomPortal","_attachedPortal","ComponentPortal","attachComponentPortal","attachTemplatePortal","DomPortal","_invokeDisposeFn","setDisposeFn","_disposeFn","BasePortalOutlet","outletElement","_defaultInjector","anchorNode","createComment","replaceChild","componentFactory","resolveComponentFactory","componentRef","createComponent","Injector","attachView","hostView","viewCount","detachView","_getComponentRootNode","viewContainer","viewRef","createEmbeddedView","rootNodes","detectChanges","CdkPortal","CdkPortalOutlet","_viewContainerRef","_isInitialized","attached","_getRootNode","attachedRef","_attachedRef","ngOnInit","ref","notFoundValue","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","register","elementScrolled","deregister","scrollableReference","auditTimeInMs","_addGlobalListener","auditTime","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","scrollingContainers","_subscription","_scrollableContainsElement","scrollableElement","fromEvent","CdkScrollable","scrollDispatcher","_destroyed","_elementScrolled","end","k","getRtlScrollAxisType","_applyScrollToOptions","scrollTop","measureScrollOffset","from","LEFT","RIGHT","i2","ViewportRuler","_change","_changeListener","_viewportSize","_updateViewportSize","output","getViewportRect","documentRect","scrollY","scrollX","throttleTime","innerWidth","innerHeight","CdkScrollableModule","BUTTON_HOST_ATTRIBUTES","_MatButtonBase","mixinColor","mixinDisabled","mixinDisableRipple","MatButton","_animationMode","isRoundButton","_hasHostAttributes","isIconButton","_getHostElement","color","DEFAULT_ROUND_BUTTON_COLOR","_isRippleDisabled","disableRipple","attributes","attribute","ANIMATION_MODULE_TYPE","ɵcmp","MatRipple","g","attrs","directives","MatAnchor","focusMonitor","animationMode","_haltDisabledEvents","stopImmediatePropagation","MatButtonModule","MatRippleModule","MatCommonModule","MATERIAL_SANITY_CHECKS","_sanityChecks","_hasDoneGlobalChecks","_checkIsEnabled","name","base","defaultColor","_color","colorPalette","_disableRipple","defaultTabIndex","_tabIndex","stateChanges","errorState","updateErrorState","oldState","newState","errorStateMatcher","_defaultErrorStateMatcher","isErrorState","ngControl","control","_parentFormGroup","_parentForm","MAT_DATE_LOCALE","LOCALE_ID","_localeChanges","localeChanges","getValidDateOrNull","obj","isDateInstance","isValid","deserialize","invalid","setLocale","locale","compareDate","first","second","getYear","getMonth","getDate","sameDate","firstValid","secondValid","clampDate","date","MAT_DATE_FORMATS","ISO_8601_REGEX","valueFunction","valuesArray","NativeDateAdapter","DateAdapter","matDateLocale","useUtcForDisplay","getFullYear","getDayOfWeek","getDay","getMonthNames","dtf","DateTimeFormat","month","timeZone","range","_format","getDateNames","day","getDayOfWeekNames","weekday","getYearName","year","getFirstDayOfWeek","getNumDaysInMonth","_createDateWithOverflow","clone","getTime","createDate","today","parse","format","displayFormat","Error","addCalendarYears","years","addCalendarMonths","months","newDate","addCalendarDays","days","toIso8601","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","NaN","d","setFullYear","setHours","setUTCFullYear","setUTCHours","getHours","getMinutes","getSeconds","getMilliseconds","MAT_NATIVE_DATE_FORMATS","dateInput","display","monthYearLabel","dateA11yLabel","monthYearA11yLabel","NativeDateModule","useClass","MatNativeDateModule","useValue","ErrorStateMatcher","form","touched","submitted","MatLine","lines","prefix","startWith","setClass","e","className","MatLineModule","_renderer","fadeOut","fadeOutRipple","defaultRippleAnimationConfig","enterDuration","exitDuration","passiveEventOptions","pointerDownEvents","pointerUpEvents","_target","platform","_isPointerDown","_activeRipples","Set","_pointerUpEventsRegistered","fadeInRipple","animationConfig","animation","centered","radius","rect","distX","distY","sqrt","distanceToFurthestCorner","ripple","transitionDuration","getPropertyValue","enforceStyleRecalculation","rippleRef","RippleRef","persistent","_mostRecentTransientRipple","_runTimeoutOutsideZone","isMostRecentTransientRipple","wasActive","size","rippleEl","opacity","fadeOutAll","fadeOutAllNonPersistent","setupTriggerEvents","_triggerElement","_removeTriggerEvents","_registerEvents","handleEvent","_onTouchStart","_onPointerUp","isFakeMousedown","isSyntheticEvent","_lastTouchStartEvent","rippleDisabled","clientX","clientY","rippleConfig","terminateOnPointerUp","eventTypes","MAT_RIPPLE_GLOBAL_OPTIONS","globalOptions","_globalOptions","_rippleRenderer","RippleRenderer","_setupTriggerEventsIfEnabled","trigger","_trigger","launch","configOrX","MatPseudoCheckbox","MatPseudoCheckboxModule","MAT_OPTION_PARENT_COMPONENT","MAT_OPTGROUP","_uniqueIdCounter","isUserInput","_MatOptionBase","_changeDetectorRef","_parent","group","_selected","_mostRecentViewValue","onSelectionChange","_stateChanges","multiple","selected","active","viewValue","select","markForCheck","_emitSelectionChangeEvent","deselect","_handleKeydown","_selectViaInteraction","_getAriaSelected","_getTabIndex","ngAfterViewChecked","MatOptionSelectionChange","inputs","MatOption","changeDetectorRef","ngContentSelectors","i3","optionIndex","optionGroups","optionsArray","groups","groupCounter","optionOffset","optionHeight","currentScrollPosition","panelHeight","MatOptionModule","CommonModule"],"sourceRoot":"webpack:///","sources":["./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/@angular/cdk/fesm2015/a11y.mjs","./node_modules/@angular/cdk/fesm2015/bidi.mjs","./node_modules/@angular/cdk/fesm2015/coercion.mjs","./node_modules/@angular/cdk/fesm2015/keycodes.mjs","./node_modules/@angular/cdk/fesm2015/observers.mjs","./node_modules/@angular/cdk/fesm2015/overlay.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/@angular/cdk/fesm2015/platform.mjs","./node_modules/@angular/cdk/fesm2015/portal.mjs","./node_modules/@angular/cdk/fesm2015/scrolling.mjs","./node_modules/@angular/material/fesm2015/button.mjs","./node_modules/@angular/material/fesm2015/core.mjs"],"sourcesContent":["import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime = 0, intervalOrScheduler, scheduler = asyncScheduler) {\n let intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable((subscriber) => {\n let due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n let n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler = asyncScheduler) {\n return audit(() => timer(duration, scheduler));\n}\n","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n let isComplete = false;\n const endDuration = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n","let nextHandle = 1;\nlet resolved;\nconst activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport const Immediate = {\n setImmediate(cb) {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n clearImmediate(handle) {\n findAndClearHandle(handle);\n },\n};\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nconst { setImmediate, clearImmediate } = Immediate;\nexport const immediateProvider = {\n setImmediate(...args) {\n const { delegate } = immediateProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate)(...args);\n },\n clearImmediate(handle) {\n const { delegate } = immediateProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport const asapScheduler = new AsapScheduler(AsapAction);\nexport const asap = asapScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AsapScheduler extends AsyncScheduler {\n flush(action) {\n this._active = true;\n const flushId = this._scheduled;\n this._scheduled = undefined;\n const { actions } = this;\n let error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nexport class AsapAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n var _a;\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n const { actions } = scheduler;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider.clearImmediate(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, QueryList, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot } from '@angular/cdk/platform';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** IDs are delimited by an empty space, as per the spec. */\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n if (ids.some(existingId => existingId.trim() == id.trim())) {\n return;\n }\n ids.push(id.trim());\n el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n const filteredIds = ids.filter(val => val != id.trim());\n if (filteredIds.length) {\n el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n }\n else {\n el.removeAttribute(attr);\n }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n // Get string array of all individual ids (whitespace delimited) in the attribute value\n return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * ID used for the body container where all messages are appended.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/**\n * ID prefix used for each created message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/**\n * Attribute given to each host element that is described by a message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n constructor(_document, \n /**\n * @deprecated To be turned into a required parameter.\n * @breaking-change 14.0.0\n */\n _platform) {\n this._platform = _platform;\n /** Map of all registered message elements that have been placed into the document. */\n this._messageRegistry = new Map();\n /** Container for all registered messages. */\n this._messagesContainer = null;\n /** Unique ID for the service. */\n this._id = `${nextId++}`;\n this._document = _document;\n }\n describe(hostElement, message, role) {\n if (!this._canBeDescribed(hostElement, message)) {\n return;\n }\n const key = getKey(message, role);\n if (typeof message !== 'string') {\n // We need to ensure that the element has an ID.\n setMessageId(message);\n this._messageRegistry.set(key, { messageElement: message, referenceCount: 0 });\n }\n else if (!this._messageRegistry.has(key)) {\n this._createMessageElement(message, role);\n }\n if (!this._isElementDescribedByMessage(hostElement, key)) {\n this._addMessageReference(hostElement, key);\n }\n }\n removeDescription(hostElement, message, role) {\n var _a;\n if (!message || !this._isElementNode(hostElement)) {\n return;\n }\n const key = getKey(message, role);\n if (this._isElementDescribedByMessage(hostElement, key)) {\n this._removeMessageReference(hostElement, key);\n }\n // If the message is a string, it means that it's one that we created for the\n // consumer so we can remove it safely, otherwise we should leave it in place.\n if (typeof message === 'string') {\n const registeredMessage = this._messageRegistry.get(key);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n this._deleteMessageElement(key);\n }\n }\n if (((_a = this._messagesContainer) === null || _a === void 0 ? void 0 : _a.childNodes.length) === 0) {\n this._messagesContainer.remove();\n this._messagesContainer = null;\n }\n }\n /** Unregisters all created message elements and removes the message container. */\n ngOnDestroy() {\n var _a;\n const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}=\"${this._id}\"]`);\n for (let i = 0; i < describedElements.length; i++) {\n this._removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n (_a = this._messagesContainer) === null || _a === void 0 ? void 0 : _a.remove();\n this._messagesContainer = null;\n this._messageRegistry.clear();\n }\n /**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n */\n _createMessageElement(message, role) {\n const messageElement = this._document.createElement('div');\n setMessageId(messageElement);\n messageElement.textContent = message;\n if (role) {\n messageElement.setAttribute('role', role);\n }\n this._createMessagesContainer();\n this._messagesContainer.appendChild(messageElement);\n this._messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });\n }\n /** Deletes the message element from the global messages container. */\n _deleteMessageElement(key) {\n var _a, _b;\n (_b = (_a = this._messageRegistry.get(key)) === null || _a === void 0 ? void 0 : _a.messageElement) === null || _b === void 0 ? void 0 : _b.remove();\n this._messageRegistry.delete(key);\n }\n /** Creates the global container for all aria-describedby messages. */\n _createMessagesContainer() {\n if (this._messagesContainer) {\n return;\n }\n const containerClassName = 'cdk-describedby-message-container';\n const serverContainers = this._document.querySelectorAll(`.${containerClassName}[platform=\"server\"]`);\n for (let i = 0; i < serverContainers.length; i++) {\n // When going from the server to the client, we may end up in a situation where there's\n // already a container on the page, but we don't have a reference to it. Clear the\n // old container so we don't get duplicates. Doing this, instead of emptying the previous\n // container, should be slightly faster.\n serverContainers[i].remove();\n }\n const messagesContainer = this._document.createElement('div');\n // We add `visibility: hidden` in order to prevent text in this container from\n // being searchable by the browser's Ctrl + F functionality.\n // Screen-readers will still read the description for elements with aria-describedby even\n // when the description element is not visible.\n messagesContainer.style.visibility = 'hidden';\n // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n // the description element doesn't impact page layout.\n messagesContainer.classList.add(containerClassName);\n messagesContainer.classList.add('cdk-visually-hidden');\n // @breaking-change 14.0.0 Remove null check for `_platform`.\n if (this._platform && !this._platform.isBrowser) {\n messagesContainer.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(messagesContainer);\n this._messagesContainer = messagesContainer;\n }\n /** Removes all cdk-describedby messages that are hosted through the element. */\n _removeCdkDescribedByReferenceIds(element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n }\n /**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n */\n _addMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n // Add the aria-describedby reference and set the\n // describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id);\n registeredMessage.referenceCount++;\n }\n /**\n * Removes a message reference from the element using aria-describedby\n * and decrements the registered message's reference count.\n */\n _removeMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n registeredMessage.referenceCount--;\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n /** Returns true if the element has been described by the provided message ID. */\n _isElementDescribedByMessage(element, key) {\n const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n const registeredMessage = this._messageRegistry.get(key);\n const messageId = registeredMessage && registeredMessage.messageElement.id;\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n }\n /** Determines whether a message can be described on a particular element. */\n _canBeDescribed(element, message) {\n if (!this._isElementNode(element)) {\n return false;\n }\n if (message && typeof message === 'object') {\n // We'd have to make some assumptions about the description element's text, if the consumer\n // passed in an element. Assume that if an element is passed in, the consumer has verified\n // that it can be used as a description.\n return true;\n }\n const trimmedMessage = message == null ? '' : `${message}`.trim();\n const ariaLabel = element.getAttribute('aria-label');\n // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n // element, because screen readers will end up reading out the same text twice in a row.\n return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n }\n /** Checks whether a node is an Element node. */\n _isElementNode(element) {\n return element.nodeType === this._document.ELEMENT_NODE;\n }\n}\nAriaDescriber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AriaDescriber, deps: [{ token: DOCUMENT }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nAriaDescriber.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AriaDescriber, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AriaDescriber, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.Platform }];\n } });\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element) {\n if (!element.id) {\n element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${nextId++}`;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n constructor(_items) {\n this._items = _items;\n this._activeItemIndex = -1;\n this._activeItem = null;\n this._wrap = false;\n this._letterKeyStream = new Subject();\n this._typeaheadSubscription = Subscription.EMPTY;\n this._vertical = true;\n this._allowedModifierKeys = [];\n this._homeAndEnd = false;\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n this._skipPredicateFn = (item) => item.disabled;\n // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n this._pressedLetters = [];\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n this.tabOut = new Subject();\n /** Stream that emits whenever the active item of the list manager changes. */\n this.change = new Subject();\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n _items.changes.subscribe((newItems) => {\n if (this._activeItem) {\n const itemArray = newItems.toArray();\n const newIndex = itemArray.indexOf(this._activeItem);\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n }\n }\n });\n }\n }\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate) {\n this._skipPredicateFn = predicate;\n return this;\n }\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true) {\n this._wrap = shouldWrap;\n return this;\n }\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled = true) {\n this._vertical = enabled;\n return this;\n }\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction) {\n this._horizontal = direction;\n return this;\n }\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys) {\n this._allowedModifierKeys = keys;\n return this;\n }\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval = 200) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n this._items.length &&\n this._items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this._typeaheadSubscription.unsubscribe();\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._typeaheadSubscription = this._letterKeyStream\n .pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join('')))\n .subscribe(inputString => {\n const items = this._getItemsArray();\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < items.length + 1; i++) {\n const index = (this._activeItemIndex + i) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item) &&\n item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n this.setActiveItem(index);\n break;\n }\n }\n this._pressedLetters = [];\n });\n return this;\n }\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled = true) {\n this._homeAndEnd = enabled;\n return this;\n }\n setActiveItem(item) {\n const previousActiveItem = this._activeItem;\n this.updateActiveItem(item);\n if (this._activeItem !== previousActiveItem) {\n this.change.next(this._activeItemIndex);\n }\n }\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event) {\n const keyCode = event.keyCode;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n }\n else {\n return;\n }\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n }\n else {\n return;\n }\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n }\n else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n }\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n this._pressedLetters = [];\n event.preventDefault();\n }\n /** Index of the currently active item. */\n get activeItemIndex() {\n return this._activeItemIndex;\n }\n /** The active item. */\n get activeItem() {\n return this._activeItem;\n }\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return this._pressedLetters.length > 0;\n }\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive() {\n this._setActiveItemByIndex(0, 1);\n }\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive() {\n this._setActiveItemByIndex(this._items.length - 1, -1);\n }\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive() {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive() {\n this._activeItemIndex < 0 && this._wrap\n ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n updateActiveItem(item) {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem = activeItem == null ? null : activeItem;\n this._activeItemIndex = index;\n }\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n _setActiveItemByDelta(delta) {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n _setActiveInWrapMode(delta) {\n const items = this._getItemsArray();\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n _setActiveInDefaultMode(delta) {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n _setActiveItemByIndex(index, fallbackDelta) {\n const items = this._getItemsArray();\n if (!items[index]) {\n return;\n }\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n if (!items[index]) {\n return;\n }\n }\n this.setActiveItem(index);\n }\n /** Returns the items as an array. */\n _getItemsArray() {\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass ActiveDescendantKeyManager extends ListKeyManager {\n setActiveItem(index) {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n super.setActiveItem(index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass FocusKeyManager extends ListKeyManager {\n constructor() {\n super(...arguments);\n this._origin = 'program';\n }\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin) {\n this._origin = origin;\n return this;\n }\n setActiveItem(item) {\n super.setActiveItem(item);\n if (this.activeItem) {\n this.activeItem.focus(this._origin);\n }\n }\n}\n\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n constructor() {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n this.ignoreVisibility = false;\n }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return (isPotentiallyFocusable(element) &&\n !this.isDisabled(element) &&\n ((config === null || config === void 0 ? void 0 : config.ignoreVisibility) || this.isVisible(element)));\n }\n}\nInteractivityChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InteractivityChecker, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nInteractivityChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InteractivityChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n }\n catch (_a) {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth ||\n element.offsetHeight ||\n (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return (nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea');\n}\n/** Gets whether an element is an ``. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return (inputType === 'text' ||\n inputType === 'password' ||\n nodeName === 'select' ||\n nodeName === 'textarea');\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return (isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element));\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return (node.ownerDocument && node.ownerDocument.defaultView) || window;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrap {\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n startAnchor.remove();\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n endAnchor.remove();\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfully. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then focuses the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `will be removed in 8.0.0.`, markers[i]);\n }\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length\n ? markers[markers.length - 1]\n : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement(options) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !this._checker.isFocusable(redirectToElement)) {\n console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n }\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild === null || focusableChild === void 0 ? void 0 : focusableChild.focus(options);\n return !!focusableChild;\n }\n redirectToElement.focus(options);\n return true;\n }\n return this.focusFirstTabbableElement(options);\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n const children = root.children;\n for (let i = 0; i < children.length; i++) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getFirstTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n const children = root.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getLastTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n }\n else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n}\nFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n constructor(_elementRef, _focusTrapFactory, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap.enabled;\n }\n set enabled(value) {\n this.focusTrap.enabled = coerceBooleanProperty(value);\n }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n get autoCapture() {\n return this._autoCapture;\n }\n set autoCapture(value) {\n this._autoCapture = coerceBooleanProperty(value);\n }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange &&\n !autoCaptureChange.firstChange &&\n this.autoCapture &&\n this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this.focusTrap.focusInitialElementWhenReady();\n }\n}\nCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { enabled: [{\n type: Input,\n args: ['cdkTrapFocus']\n }], autoCapture: [{\n type: Input,\n args: ['cdkTrapFocusAutoCapture']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n super(_element, _checker, _ngZone, _document, config.defer);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\n }\n /** Whether the FocusTrap is enabled. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._enabled) {\n this._focusTrapManager.register(this);\n }\n else {\n this._focusTrapManager.deregister(this);\n }\n }\n /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n destroy() {\n this._focusTrapManager.deregister(this);\n super.destroy();\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _enable() {\n this._inertStrategy.preventFocus(this);\n this.toggleAnchors(true);\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _disable() {\n this._inertStrategy.allowFocus(this);\n this.toggleAnchors(false);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n constructor() {\n /** Focus event handler. */\n this._listener = null;\n }\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = (e) => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n var _a;\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (target && !focusTrapRoot.contains(target) && !((_a = target.closest) === null || _a === void 0 ? void 0 : _a.call(target, 'div.cdk-overlay-pane'))) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n}\nFocusTrapManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._focusTrapManager = _focusTrapManager;\n this._document = _document;\n // TODO split up the strategies into different modules, similar to DateAdapter.\n this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n }\n create(element, config = { defer: false }) {\n let configObject;\n if (typeof config === 'boolean') {\n configObject = { defer: config };\n }\n else {\n configObject = config;\n }\n return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n }\n}\nConfigurableFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: FocusTrapManager }, { token: DOCUMENT }, { token: FOCUS_TRAP_INERT_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigurableFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: FocusTrapManager }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_TRAP_INERT_STRATEGY]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n // zero or `event.buttons` is zero, depending on the browser:\n // - `event.buttons` works on Firefox, but fails on Chrome.\n // - `offsetX` and `offsetY` work on Chrome, but fail on Firefox.\n // Note that there's an edge case where the user could click the 0x0 spot of the\n // screen themselves, but that is unlikely to contain interactive elements.\n return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0);\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);\n // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n return (!!touch &&\n touch.identifier === -1 &&\n (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 1));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n * in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n * these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n constructor(_platform, ngZone, document, options) {\n this._platform = _platform;\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n this._mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n this._modality = new BehaviorSubject(null);\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n this._lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n this._onKeydown = (event) => {\n var _a, _b;\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if ((_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.ignoreKeys) === null || _b === void 0 ? void 0 : _b.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onMousedown = (event) => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onTouchstart = (event) => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n this._options = Object.assign(Object.assign({}, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS), options);\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (_platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n ngOnDestroy() {\n this._modality.complete();\n if (this._platform.isBrowser) {\n document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n }\n }\n}\nInputModalityDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InputModalityDetector, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT }, { token: INPUT_MODALITY_DETECTOR_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nInputModalityDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InputModalityDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.Platform }, { type: i0.NgZone }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n }] }];\n } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n providedIn: 'root',\n factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n\nclass LiveAnnouncer {\n constructor(elementToken, _ngZone, _document, _defaultOptions) {\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n // We inject the live element and document as `any` because the constructor signature cannot\n // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n // a class decorator causes TypeScript to preserve the constructor signature types.\n this._document = _document;\n this._liveElement = elementToken || this._createLiveElement();\n }\n announce(message, ...args) {\n const defaultOptions = this._defaultOptions;\n let politeness;\n let duration;\n if (args.length === 1 && typeof args[0] === 'number') {\n duration = args[0];\n }\n else {\n [politeness, duration] = args;\n }\n this.clear();\n clearTimeout(this._previousTimeout);\n if (!politeness) {\n politeness =\n defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n }\n if (duration == null && defaultOptions) {\n duration = defaultOptions.duration;\n }\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n return this._ngZone.runOutsideAngular(() => {\n if (!this._currentPromise) {\n this._currentPromise = new Promise(resolve => (this._currentResolve = resolve));\n }\n clearTimeout(this._previousTimeout);\n this._previousTimeout = setTimeout(() => {\n this._liveElement.textContent = message;\n if (typeof duration === 'number') {\n this._previousTimeout = setTimeout(() => this.clear(), duration);\n }\n this._currentResolve();\n this._currentPromise = this._currentResolve = undefined;\n }, 100);\n return this._currentPromise;\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this._liveElement) {\n this._liveElement.textContent = '';\n }\n }\n ngOnDestroy() {\n var _a, _b;\n clearTimeout(this._previousTimeout);\n (_a = this._liveElement) === null || _a === void 0 ? void 0 : _a.remove();\n this._liveElement = null;\n (_b = this._currentResolve) === null || _b === void 0 ? void 0 : _b.call(this);\n this._currentPromise = this._currentResolve = undefined;\n }\n _createLiveElement() {\n const elementClass = 'cdk-live-announcer-element';\n const previousElements = this._document.getElementsByClassName(elementClass);\n const liveEl = this._document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (let i = 0; i < previousElements.length; i++) {\n previousElements[i].remove();\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n}\nLiveAnnouncer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LiveAnnouncer, deps: [{ token: LIVE_ANNOUNCER_ELEMENT_TOKEN, optional: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: LIVE_ANNOUNCER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nLiveAnnouncer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n }] }];\n } });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n this._elementRef = _elementRef;\n this._liveAnnouncer = _liveAnnouncer;\n this._contentObserver = _contentObserver;\n this._ngZone = _ngZone;\n this._politeness = 'polite';\n }\n /** The aria-live politeness level to use when announcing messages. */\n get politeness() {\n return this._politeness;\n }\n set politeness(value) {\n this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n if (this._politeness === 'off') {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n else if (!this._subscription) {\n this._subscription = this._ngZone.runOutsideAngular(() => {\n return this._contentObserver.observe(this._elementRef).subscribe(() => {\n // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n const elementText = this._elementRef.nativeElement.textContent;\n // The `MutationObserver` fires also for attribute\n // changes which we don't want to announce.\n if (elementText !== this._previousAnnouncedText) {\n this._liveAnnouncer.announce(elementText, this._politeness);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n}\nCdkAriaLive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAriaLive, deps: [{ token: i0.ElementRef }, { token: LiveAnnouncer }, { token: i1$1.ContentObserver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAriaLive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkAriaLive, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAriaLive, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: LiveAnnouncer }, { type: i1$1.ContentObserver }, { type: i0.NgZone }]; }, propDecorators: { politeness: [{\n type: Input,\n args: ['cdkAriaLive']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n constructor(_ngZone, _platform, _inputModalityDetector, \n /** @breaking-change 11.0.0 make document required */\n document, options) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._inputModalityDetector = _inputModalityDetector;\n /** The focus origin that the next focus event is a result of. */\n this._origin = null;\n /** Whether the window has just been focused. */\n this._windowFocused = false;\n /**\n * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n * focus events to touch interactions requires special logic.\n */\n this._originFromTouchInteraction = false;\n /** Map of elements being monitored to their info. */\n this._elementInfo = new Map();\n /** The number of elements currently being monitored. */\n this._monitoredElementCount = 0;\n /**\n * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n * as well as the number of monitored elements that they contain. We have to treat focus/blur\n * handlers differently from the rest of the events, because the browser won't emit events\n * to the document when focus moves inside of a shadow root.\n */\n this._rootNodeFocusListenerCount = new Map();\n /**\n * Event listener for `focus` events on the window.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._windowFocusListener = () => {\n // Make a note of when the window regains focus, so we can\n // restore the origin info for the focused element.\n this._windowFocused = true;\n this._windowFocusTimeoutId = window.setTimeout(() => (this._windowFocused = false));\n };\n /** Subject for stopping our InputModalityDetector subscription. */\n this._stopInputModalityDetector = new Subject();\n /**\n * Event listener for `focus` and 'blur' events on the document.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._rootNodeFocusAndBlurListener = (event) => {\n const target = _getEventTarget(event);\n const handler = event.type === 'focus' ? this._onFocus : this._onBlur;\n // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n handler.call(this, event, element);\n }\n };\n this._document = document;\n this._detectionMode = (options === null || options === void 0 ? void 0 : options.detectionMode) || 0 /* IMMEDIATE */;\n }\n monitor(element, checkChildren = false) {\n const nativeElement = coerceElement(element);\n // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n return of(null);\n }\n // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n // the shadow root, rather than the `document`, because the browser won't emit focus events\n // to the `document`, if focus is moving within the same shadow root.\n const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n const cachedInfo = this._elementInfo.get(nativeElement);\n // Check if we're already monitoring this element.\n if (cachedInfo) {\n if (checkChildren) {\n // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n // observers into ones that behave as if `checkChildren` was turned on. We need a more\n // robust solution.\n cachedInfo.checkChildren = true;\n }\n return cachedInfo.subject;\n }\n // Create monitored element info.\n const info = {\n checkChildren: checkChildren,\n subject: new Subject(),\n rootNode,\n };\n this._elementInfo.set(nativeElement, info);\n this._registerGlobalListeners(info);\n return info.subject;\n }\n stopMonitoring(element) {\n const nativeElement = coerceElement(element);\n const elementInfo = this._elementInfo.get(nativeElement);\n if (elementInfo) {\n elementInfo.subject.complete();\n this._setClasses(nativeElement);\n this._elementInfo.delete(nativeElement);\n this._removeGlobalListeners(elementInfo);\n }\n }\n focusVia(element, origin, options) {\n const nativeElement = coerceElement(element);\n const focusedElement = this._getDocument().activeElement;\n // If the element is focused already, calling `focus` again won't trigger the event listener\n // which means that the focus classes won't be updated. If that's the case, update the classes\n // directly without waiting for an event.\n if (nativeElement === focusedElement) {\n this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n }\n else {\n this._setOrigin(origin);\n // `focus` isn't available on the server\n if (typeof nativeElement.focus === 'function') {\n nativeElement.focus(options);\n }\n }\n }\n ngOnDestroy() {\n this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n _getFocusOrigin(focusEventTarget) {\n if (this._origin) {\n // If the origin was realized via a touch interaction, we need to perform additional checks\n // to determine whether the focus origin should be attributed to touch or program.\n if (this._originFromTouchInteraction) {\n return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n }\n else {\n return this._origin;\n }\n }\n // If the window has just regained focus, we can restore the most recent origin from before the\n // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n // focus. This typically means one of two things happened:\n //\n // 1) The element was programmatically focused, or\n // 2) The element was focused via screen reader navigation (which generally doesn't fire\n // events).\n //\n // Because we can't distinguish between these two cases, we default to setting `program`.\n return this._windowFocused && this._lastFocusOrigin ? this._lastFocusOrigin : 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n //