{"version":3,"file":"default-node_modules_angular_material_fesm2022_tooltip_mjs.js","mappings":"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AEF,gBAAgB;EACzBG,UAAU,EAAEJ;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,kBAAkB,CAAC;EACrBnW,WAAWA,CAAA,EAAG;IACV,IAAI,CAACoW,qBAAqB,GAAG,IAAI;IACjC;IACA;IACA,IAAI,CAAC7G,MAAM,GAAG,IAAI/J,yCAAO,CAAC,CAAC;EAC/B;EACAkI,OAAOA,CAAA,EAAG;IACN,IAAI,CAAC6B,MAAM,CAACxQ,QAAQ,CAAC,CAAC;EAC1B;EACAgS,SAASA,CAAA,EAAG;IACR;EAAA;EAEJwD,kBAAkBA,CAAA,EAAG;IACjB;IACA;IACA,OAAO,IAAI;EACf;EACAC,aAAaA,CAAA,EAAG;IACZ;IACA;IACA,OAAO,IAAI;EACf;EACApB,SAASA,CAAA,EAAG;IACR;EAAA;AAER;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiD,6BAA6BA,CAAA,EAAG;EACrC,OAAO,MAAM,IAAIF,kBAAkB,CAAC,CAAC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,sCAAsC,GAAG;EAC3CL,OAAO,EAAEF,gBAAgB;EACzBG,UAAU,EAAEG;AAChB,CAAC;;AAED;AACA;AACA;AACA,MAAME,iBAAiB,CAAC;EACpBvW,WAAWA,CAAA,EAAG;IACV;AACR;AACA;IACQ,IAAI,CAACwW,gBAAgB,GAAG,KAAK;EACjC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,CAAC;EACvBzW,WAAWA,CAACgI,SAAS,EAAE;IACnB,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC9B;EACA;AACJ;AACA;AACA;AACA;AACA;EACI2N,UAAUA,CAAC3K,OAAO,EAAE;IAChB;IACA;IACA,OAAOA,OAAO,CAAC0L,YAAY,CAAC,UA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","sources":["./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/@angular/cdk/fesm2022/a11y.mjs","./node_modules/@angular/cdk/fesm2022/cdk.mjs","./node_modules/@angular/cdk/fesm2022/coercion/private.mjs","./node_modules/@angular/cdk/fesm2022/collections.mjs","./node_modules/@angular/cdk/fesm2022/keycodes.mjs","./node_modules/@angular/cdk/fesm2022/layout.mjs","./node_modules/@angular/cdk/fesm2022/observers.mjs","./node_modules/@angular/cdk/fesm2022/overlay.mjs","./node_modules/@angular/cdk/fesm2022/portal.mjs","./node_modules/@angular/cdk/fesm2022/scrolling.mjs","./node_modules/@angular/material/fesm2022/core.mjs","./node_modules/@angular/material/fesm2022/tooltip.mjs"],"sourcesContent":["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","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 { filter } from './filter';\nexport function skip(count) {\n return filter((_, index) => count <= index);\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 if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n }\n}\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 { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport const asapScheduler = new AsapScheduler(AsapAction);\nexport const asap = asapScheduler;\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","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 { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, APP_ID, Injectable, Inject, signal, QueryList, isSignal, effect, InjectionToken, afterNextRender, Injector, booleanAttribute, Directive, Input, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/platform';\nimport { Platform, _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot } from '@angular/cdk/platform';\nimport { A, Z, ZERO, NINE, hasModifierKey, PAGE_DOWN, PAGE_UP, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { Subject, Subscription, isObservable, of, BehaviorSubject } from 'rxjs';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceObservable } from '@angular/cdk/coercion/private';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { BreakpointObserver } from '@angular/cdk/layout';\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 id = id.trim();\n if (ids.some(existingId => existingId.trim() === id)) {\n return;\n }\n ids.push(id);\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 id = id.trim();\n const filteredIds = ids.filter(val => val !== id);\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 const attrValue = el.getAttribute(attr);\n return attrValue?.match(/\\S+/g) ?? [];\n}\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 this._id = inject(APP_ID) + '-' + nextId++;\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, this._id);\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 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 (this._messagesContainer?.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 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 this._messagesContainer?.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, this._id);\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 this._messageRegistry.get(key)?.messageElement?.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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: AriaDescriber, deps: [{ token: DOCUMENT }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: AriaDescriber, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: AriaDescriber, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.Platform }] });\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, serviceId) {\n if (!element.id) {\n element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${serviceId}-${nextId++}`;\n }\n}\n\nconst DEFAULT_TYPEAHEAD_DEBOUNCE_INTERVAL_MS = 200;\n/**\n * Selects items based on keyboard inputs. Implements the typeahead functionality of\n * `role=\"listbox\"` or `role=\"tree\"` and other related roles.\n */\nclass Typeahead {\n constructor(initialItems, config) {\n this._letterKeyStream = new Subject();\n this._items = [];\n this._selectedItemIndex = -1;\n /** Buffer for the letters that the user has pressed */\n this._pressedLetters = [];\n this._selectedItem = new Subject();\n this.selectedItem = this._selectedItem;\n const typeAheadInterval = typeof config?.debounceInterval === 'number'\n ? config.debounceInterval\n : DEFAULT_TYPEAHEAD_DEBOUNCE_INTERVAL_MS;\n if (config?.skipPredicate) {\n this._skipPredicateFn = config.skipPredicate;\n }\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n initialItems.length &&\n initialItems.some(item => typeof item.getLabel !== 'function')) {\n throw new Error('KeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this.setItems(initialItems);\n this._setupKeyHandler(typeAheadInterval);\n }\n destroy() {\n this._pressedLetters = [];\n this._letterKeyStream.complete();\n this._selectedItem.complete();\n }\n setCurrentSelectedItemIndex(index) {\n this._selectedItemIndex = index;\n }\n setItems(items) {\n this._items = items;\n }\n handleKey(event) {\n const keyCode = event.keyCode;\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 /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return this._pressedLetters.length > 0;\n }\n /** Resets the currently stored sequence of typed letters. */\n reset() {\n this._pressedLetters = [];\n }\n _setupKeyHandler(typeAheadInterval) {\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._letterKeyStream\n .pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(typeAheadInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join('').toLocaleUpperCase()))\n .subscribe(inputString => {\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 < this._items.length + 1; i++) {\n const index = (this._selectedItemIndex + i) % this._items.length;\n const item = this._items[index];\n if (!this._skipPredicateFn?.(item) &&\n item.getLabel?.().toLocaleUpperCase().trim().indexOf(inputString) === 0) {\n this._selectedItem.next(item);\n break;\n }\n }\n this._pressedLetters = [];\n });\n }\n}\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n constructor(_items, injector) {\n this._items = _items;\n this._activeItemIndex = -1;\n this._activeItem = signal(null);\n this._wrap = false;\n this._typeaheadSubscription = Subscription.EMPTY;\n this._vertical = true;\n this._allowedModifierKeys = [];\n this._homeAndEnd = false;\n this._pageUpAndDown = { enabled: false, delta: 10 };\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 /**\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 this._itemChangesSubscription = _items.changes.subscribe((newItems) => this._itemsChanged(newItems.toArray()));\n }\n else if (isSignal(_items)) {\n if (!injector && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error('ListKeyManager constructed with a signal must receive an injector');\n }\n this._effectRef = effect(() => this._itemsChanged(_items()), { injector });\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 const items = this._getItemsArray();\n if (items.length > 0 && items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n }\n this._typeaheadSubscription.unsubscribe();\n const items = this._getItemsArray();\n this._typeahead = new Typeahead(items, {\n debounceInterval: typeof debounceInterval === 'number' ? debounceInterval : undefined,\n skipPredicate: item => this._skipPredicateFn(item),\n });\n this._typeaheadSubscription = this._typeahead.selectedItem.subscribe(item => {\n this.setActiveItem(item);\n });\n return this;\n }\n /** Cancels the current typeahead sequence. */\n cancelTypeahead() {\n this._typeahead?.reset();\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 /**\n * Configures the key manager to activate every 10th, configured or first/last element in up/down direction\n * respectively when the Page-Up or Page-Down key is pressed.\n * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item.\n * @param delta Whether pressing the Home or End key activates the first/last item.\n */\n withPageUpDown(enabled = true, delta = 10) {\n this._pageUpAndDown = { enabled, delta };\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 case PAGE_UP:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex - this._pageUpAndDown.delta;\n this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1);\n break;\n }\n else {\n return;\n }\n case PAGE_DOWN:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex + this._pageUpAndDown.delta;\n const itemsLength = this._getItemsArray().length;\n this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1);\n break;\n }\n else {\n return;\n }\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n this._typeahead?.handleKey(event);\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._typeahead?.reset();\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._typeahead && this._typeahead.isTyping();\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._getItemsArray().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.set(activeItem == null ? null : activeItem);\n this._activeItemIndex = index;\n this._typeahead?.setCurrentSelectedItemIndex(index);\n }\n /** Cleans up the key manager. */\n destroy() {\n this._typeaheadSubscription.unsubscribe();\n this._itemChangesSubscription?.unsubscribe();\n this._effectRef?.destroy();\n this._typeahead?.destroy();\n this.tabOut.complete();\n this.change.complete();\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 if (isSignal(this._items)) {\n return this._items();\n }\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n /** Callback for when the items have changed. */\n _itemsChanged(newItems) {\n this._typeahead?.setItems(newItems);\n const activeItem = this._activeItem();\n if (activeItem) {\n const newIndex = newItems.indexOf(activeItem);\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n this._typeahead?.setCurrentSelectedItemIndex(newIndex);\n }\n }\n }\n}\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\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 * This class manages keyboard events for trees. If you pass it a QueryList or other list of tree\n * items, it will set the active item, focus, handle expansion and typeahead correctly when\n * keyboard events occur.\n */\nclass TreeKeyManager {\n _initializeFocus() {\n if (this._hasInitialFocused || this._items.length === 0) {\n return;\n }\n let activeIndex = 0;\n for (let i = 0; i < this._items.length; i++) {\n if (!this._skipPredicateFn(this._items[i]) && !this._isItemDisabled(this._items[i])) {\n activeIndex = i;\n break;\n }\n }\n const activeItem = this._items[activeIndex];\n // Use `makeFocusable` here, because we want the item to just be focusable, not actually\n // capture the focus since the user isn't interacting with it. See #29628.\n if (activeItem.makeFocusable) {\n this._activeItem?.unfocus();\n this._activeItemIndex = activeIndex;\n this._activeItem = activeItem;\n this._typeahead?.setCurrentSelectedItemIndex(activeIndex);\n activeItem.makeFocusable();\n }\n else {\n // Backwards compatibility for items that don't implement `makeFocusable`.\n this.focusItem(activeIndex);\n }\n this._hasInitialFocused = true;\n }\n /**\n *\n * @param items List of TreeKeyManager options. Can be synchronous or asynchronous.\n * @param config Optional configuration options. By default, use 'ltr' horizontal orientation. By\n * default, do not skip any nodes. By default, key manager only calls `focus` method when items\n * are focused and does not call `activate`. If `typeaheadDefaultInterval` is `true`, use a\n * default interval of 200ms.\n */\n constructor(items, config) {\n /** The index of the currently active (focused) item. */\n this._activeItemIndex = -1;\n /** The currently active (focused) item. */\n this._activeItem = null;\n /** Whether or not we activate the item when it's focused. */\n this._shouldActivationFollowFocus = false;\n /**\n * The orientation that the tree is laid out in. In `rtl` mode, the behavior of Left and\n * Right arrow are switched.\n */\n this._horizontalOrientation = 'ltr';\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager.\n *\n * The default value for this doesn't skip any elements in order to keep tree items focusable\n * when disabled. This aligns with ARIA guidelines:\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#focusabilityofdisabledcontrols.\n */\n this._skipPredicateFn = (_item) => false;\n /** Function to determine equivalent items. */\n this._trackByFn = (item) => item;\n /** Synchronous cache of the items to manage. */\n this._items = [];\n this._typeaheadSubscription = Subscription.EMPTY;\n this._hasInitialFocused = false;\n /** Stream that emits any time the focused item changes. */\n this.change = new Subject();\n // We allow for the items to be an array or Observable 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 this._items = items.toArray();\n items.changes.subscribe((newItems) => {\n this._items = newItems.toArray();\n this._typeahead?.setItems(this._items);\n this._updateActiveItemIndex(this._items);\n this._initializeFocus();\n });\n }\n else if (isObservable(items)) {\n items.subscribe(newItems => {\n this._items = newItems;\n this._typeahead?.setItems(newItems);\n this._updateActiveItemIndex(newItems);\n this._initializeFocus();\n });\n }\n else {\n this._items = items;\n this._initializeFocus();\n }\n if (typeof config.shouldActivationFollowFocus === 'boolean') {\n this._shouldActivationFollowFocus = config.shouldActivationFollowFocus;\n }\n if (config.horizontalOrientation) {\n this._horizontalOrientation = config.horizontalOrientation;\n }\n if (config.skipPredicate) {\n this._skipPredicateFn = config.skipPredicate;\n }\n if (config.trackBy) {\n this._trackByFn = config.trackBy;\n }\n if (typeof config.typeAheadDebounceInterval !== 'undefined') {\n this._setTypeAhead(config.typeAheadDebounceInterval);\n }\n }\n /** Cleans up the key manager. */\n destroy() {\n this._typeaheadSubscription.unsubscribe();\n this._typeahead?.destroy();\n this.change.complete();\n }\n /**\n * Handles a keyboard event on the tree.\n * @param event Keyboard event that represents the user interaction with the tree.\n */\n onKeydown(event) {\n const key = event.key;\n switch (key) {\n case 'Tab':\n // Return early here, in order to allow Tab to actually tab out of the tree\n return;\n case 'ArrowDown':\n this._focusNextItem();\n break;\n case 'ArrowUp':\n this._focusPreviousItem();\n break;\n case 'ArrowRight':\n this._horizontalOrientation === 'rtl'\n ? this._collapseCurrentItem()\n : this._expandCurrentItem();\n break;\n case 'ArrowLeft':\n this._horizontalOrientation === 'rtl'\n ? this._expandCurrentItem()\n : this._collapseCurrentItem();\n break;\n case 'Home':\n this._focusFirstItem();\n break;\n case 'End':\n this._focusLastItem();\n break;\n case 'Enter':\n case ' ':\n this._activateCurrentItem();\n break;\n default:\n if (event.key === '*') {\n this._expandAllItemsAtCurrentItemLevel();\n break;\n }\n this._typeahead?.handleKey(event);\n // Return here, in order to avoid preventing the default action of non-navigational\n // keys or resetting the buffer of pressed letters.\n return;\n }\n // Reset the typeahead since the user has used a navigational key.\n this._typeahead?.reset();\n event.preventDefault();\n }\n /** Index of the currently active item. */\n getActiveItemIndex() {\n return this._activeItemIndex;\n }\n /** The currently active item. */\n getActiveItem() {\n return this._activeItem;\n }\n /** Focus the first available item. */\n _focusFirstItem() {\n this.focusItem(this._findNextAvailableItemIndex(-1));\n }\n /** Focus the last available item. */\n _focusLastItem() {\n this.focusItem(this._findPreviousAvailableItemIndex(this._items.length));\n }\n /** Focus the next available item. */\n _focusNextItem() {\n this.focusItem(this._findNextAvailableItemIndex(this._activeItemIndex));\n }\n /** Focus the previous available item. */\n _focusPreviousItem() {\n this.focusItem(this._findPreviousAvailableItemIndex(this._activeItemIndex));\n }\n focusItem(itemOrIndex, options = {}) {\n // Set default options\n options.emitChangeEvent ??= true;\n let index = typeof itemOrIndex === 'number'\n ? itemOrIndex\n : this._items.findIndex(item => this._trackByFn(item) === this._trackByFn(itemOrIndex));\n if (index < 0 || index >= this._items.length) {\n return;\n }\n const activeItem = this._items[index];\n // If we're just setting the same item, don't re-call activate or focus\n if (this._activeItem !== null &&\n this._trackByFn(activeItem) === this._trackByFn(this._activeItem)) {\n return;\n }\n const previousActiveItem = this._activeItem;\n this._activeItem = activeItem ?? null;\n this._activeItemIndex = index;\n this._typeahead?.setCurrentSelectedItemIndex(index);\n this._activeItem?.focus();\n previousActiveItem?.unfocus();\n if (options.emitChangeEvent) {\n this.change.next(this._activeItem);\n }\n if (this._shouldActivationFollowFocus) {\n this._activateCurrentItem();\n }\n }\n _updateActiveItemIndex(newItems) {\n const activeItem = this._activeItem;\n if (!activeItem) {\n return;\n }\n const newIndex = newItems.findIndex(item => this._trackByFn(item) === this._trackByFn(activeItem));\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n this._typeahead?.setCurrentSelectedItemIndex(newIndex);\n }\n }\n _setTypeAhead(debounceInterval) {\n this._typeahead = new Typeahead(this._items, {\n debounceInterval: typeof debounceInterval === 'number' ? debounceInterval : undefined,\n skipPredicate: item => this._skipPredicateFn(item),\n });\n this._typeaheadSubscription = this._typeahead.selectedItem.subscribe(item => {\n this.focusItem(item);\n });\n }\n _findNextAvailableItemIndex(startingIndex) {\n for (let i = startingIndex + 1; i < this._items.length; i++) {\n if (!this._skipPredicateFn(this._items[i])) {\n return i;\n }\n }\n return startingIndex;\n }\n _findPreviousAvailableItemIndex(startingIndex) {\n for (let i = startingIndex - 1; i >= 0; i--) {\n if (!this._skipPredicateFn(this._items[i])) {\n return i;\n }\n }\n return startingIndex;\n }\n /**\n * If the item is already expanded, we collapse the item. Otherwise, we will focus the parent.\n */\n _collapseCurrentItem() {\n if (!this._activeItem) {\n return;\n }\n if (this._isCurrentItemExpanded()) {\n this._activeItem.collapse();\n }\n else {\n const parent = this._activeItem.getParent();\n if (!parent || this._skipPredicateFn(parent)) {\n return;\n }\n this.focusItem(parent);\n }\n }\n /**\n * If the item is already collapsed, we expand the item. Otherwise, we will focus the first child.\n */\n _expandCurrentItem() {\n if (!this._activeItem) {\n return;\n }\n if (!this._isCurrentItemExpanded()) {\n this._activeItem.expand();\n }\n else {\n coerceObservable(this._activeItem.getChildren())\n .pipe(take(1))\n .subscribe(children => {\n const firstChild = children.find(child => !this._skipPredicateFn(child));\n if (!firstChild) {\n return;\n }\n this.focusItem(firstChild);\n });\n }\n }\n _isCurrentItemExpanded() {\n if (!this._activeItem) {\n return false;\n }\n return typeof this._activeItem.isExpanded === 'boolean'\n ? this._activeItem.isExpanded\n : this._activeItem.isExpanded();\n }\n _isItemDisabled(item) {\n return typeof item.isDisabled === 'boolean' ? item.isDisabled : item.isDisabled?.();\n }\n /** For all items that are the same level as the current item, we expand those items. */\n _expandAllItemsAtCurrentItemLevel() {\n if (!this._activeItem) {\n return;\n }\n const parent = this._activeItem.getParent();\n let itemsToExpand;\n if (!parent) {\n itemsToExpand = of(this._items.filter(item => item.getParent() === null));\n }\n else {\n itemsToExpand = coerceObservable(parent.getChildren());\n }\n itemsToExpand.pipe(take(1)).subscribe(items => {\n for (const item of items) {\n item.expand();\n }\n });\n }\n _activateCurrentItem() {\n this._activeItem?.activate();\n }\n}\n/** @docs-private */\nfunction TREE_KEY_MANAGER_FACTORY() {\n return (items, options) => new TreeKeyManager(items, options);\n}\n/** Injection token that determines the key manager to use. */\nconst TREE_KEY_MANAGER = new InjectionToken('tree-key-manager', {\n providedIn: 'root',\n factory: TREE_KEY_MANAGER_FACTORY,\n});\n/** @docs-private */\nconst TREE_KEY_MANAGER_FACTORY_PROVIDER = {\n provide: TREE_KEY_MANAGER,\n useFactory: TREE_KEY_MANAGER_FACTORY,\n};\n\n// NoopTreeKeyManager is a \"noop\" implementation of TreeKeyMangerStrategy. Methods are noops. Does\n// not emit to streams.\n//\n// Used for applications built before TreeKeyManager to opt-out of TreeKeyManager and revert to\n// legacy behavior.\n/**\n * @docs-private\n *\n * Opt-out of Tree of key manager behavior.\n *\n * When provided, Tree has same focus management behavior as before TreeKeyManager was introduced.\n * - Tree does not respond to keyboard interaction\n * - Tree node allows tabindex to be set by Input binding\n * - Tree node allows tabindex to be set by attribute binding\n *\n * @deprecated NoopTreeKeyManager deprecated. Use TreeKeyManager or inject a\n * TreeKeyManagerStrategy instead. To be removed in a future version.\n *\n * @breaking-change 21.0.0\n */\nclass NoopTreeKeyManager {\n constructor() {\n this._isNoopTreeKeyManager = true;\n // Provide change as required by TreeKeyManagerStrategy. NoopTreeKeyManager is a \"noop\"\n // implementation that does not emit to streams.\n this.change = new Subject();\n }\n destroy() {\n this.change.complete();\n }\n onKeydown() {\n // noop\n }\n getActiveItemIndex() {\n // Always return null. NoopTreeKeyManager is a \"noop\" implementation that does not maintain\n // the active item.\n return null;\n }\n getActiveItem() {\n // Always return null. NoopTreeKeyManager is a \"noop\" implementation that does not maintain\n // the active item.\n return null;\n }\n focusItem() {\n // noop\n }\n}\n/**\n * @docs-private\n *\n * Opt-out of Tree of key manager behavior.\n *\n * When provided, Tree has same focus management behavior as before TreeKeyManager was introduced.\n * - Tree does not respond to keyboard interaction\n * - Tree node allows tabindex to be set by Input binding\n * - Tree node allows tabindex to be set by attribute binding\n *\n * @deprecated NoopTreeKeyManager deprecated. Use TreeKeyManager or inject a\n * TreeKeyManagerStrategy instead. To be removed in a future version.\n *\n * @breaking-change 21.0.0\n */\nfunction NOOP_TREE_KEY_MANAGER_FACTORY() {\n return () => new NoopTreeKeyManager();\n}\n/**\n * @docs-private\n *\n * Opt-out of Tree of key manager behavior.\n *\n * When provided, Tree has same focus management behavior as before TreeKeyManager was introduced.\n * - Tree does not respond to keyboard interaction\n * - Tree node allows tabindex to be set by Input binding\n * - Tree node allows tabindex to be set by attribute binding\n *\n * @deprecated NoopTreeKeyManager deprecated. Use TreeKeyManager or inject a\n * TreeKeyManagerStrategy instead. To be removed in a future version.\n *\n * @breaking-change 21.0.0\n */\nconst NOOP_TREE_KEY_MANAGER_FACTORY_PROVIDER = {\n provide: TREE_KEY_MANAGER,\n useFactory: NOOP_TREE_KEY_MANAGER_FACTORY,\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 it is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return (isPotentiallyFocusable(element) &&\n !this.isDisabled(element) &&\n (config?.ignoreVisibility || this.isVisible(element)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: InteractivityChecker, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: InteractivityChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Platform }] });\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n }\n catch {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth ||\n element.offsetHeight ||\n (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return (nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea');\n}\n/** Gets whether an element is an `<input type=\"hidden\">`. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return (inputType === 'text' ||\n inputType === 'password' ||\n nodeName === 'select' ||\n nodeName === 'textarea');\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return (isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element));\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return (node.ownerDocument && node.ownerDocument.defaultView) || window;\n}\n\n/**\n * 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 */\nclass FocusTrap {\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 constructor(_element, _checker, _ngZone, _document, deferAnchors = false, \n /** @breaking-change 20.0.0 param to become required */\n _injector) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._injector = _injector;\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 /** 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?.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 // TODO: remove this conditional when injector is required in the constructor.\n if (this._injector) {\n afterNextRender(fn, { injector: this._injector });\n }\n else {\n setTimeout(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._injector = inject(Injector);\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, this._injector);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap?.enabled || false;\n }\n set enabled(value) {\n if (this.focusTrap) {\n this.focusTrap.enabled = value;\n }\n }\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 const platform = inject(Platform);\n if (platform.isBrowser) {\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\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 && !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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkTrapFocus, isStandalone: true, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\", booleanAttribute], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\", booleanAttribute] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }], propDecorators: { enabled: [{\n type: Input,\n args: [{ alias: 'cdkTrapFocus', transform: booleanAttribute }]\n }], autoCapture: [{\n type: Input,\n args: [{ alias: 'cdkTrapFocusAutoCapture', transform: booleanAttribute }]\n }] } });\n\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\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 constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config, injector) {\n super(_element, _checker, _ngZone, _document, config.defer, injector);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\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 * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n constructor() {\n /** Focus event handler. */\n this._listener = null;\n }\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = (e) => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\n }\n }\n}\n\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\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._injector = inject(Injector);\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, this._injector);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", 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 }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ 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/** 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 `event.buttons` is zero, or\n // `event.detail` is zero depending on the browser:\n // - `event.buttons` works on Firefox, but fails on Chrome.\n // - `detail` works on Chrome, but fails on Firefox.\n return event.buttons === 0 || event.detail === 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 * 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 /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n constructor(_platform, ngZone, document, options) {\n this._platform = _platform;\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n this._mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n this._modality = new BehaviorSubject(null);\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n this._lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n this._onKeydown = (event) => {\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onMousedown = (event) => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onTouchstart = (event) => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n this._options = {\n ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n ...options,\n };\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (_platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n 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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: InputModalityDetector, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT }, { token: INPUT_MODALITY_DETECTOR_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: InputModalityDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ 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\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\nlet uniqueIds = 0;\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 if (this._liveElement.id) {\n this._exposeAnnouncerToModals(this._liveElement.id);\n }\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 // For some reason in tests this can be undefined\n // Probably related to ZoneJS and every other thing that patches browser APIs in tests\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 clearTimeout(this._previousTimeout);\n this._liveElement?.remove();\n this._liveElement = null;\n this._currentResolve?.();\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 liveEl.id = `cdk-live-announcer-${uniqueIds++}`;\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n /**\n * Some browsers won't expose the accessibility node of the live announcer element if there is an\n * `aria-modal` and the live announcer is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live announcer element.\n */\n _exposeAnnouncerToModals(id) {\n // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with\n // the `SnakBarContainer` and other usages.\n //\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n }\n else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", 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 }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n }] }] });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n /** 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, this.duration);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\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 ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkAriaLive, deps: [{ token: i0.ElementRef }, { token: LiveAnnouncer }, { token: i1$1.ContentObserver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkAriaLive, isStandalone: true, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"], duration: [\"cdkAriaLiveDuration\", \"duration\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkAriaLive, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: LiveAnnouncer }, { type: i1$1.ContentObserver }, { type: i0.NgZone }], propDecorators: { politeness: [{\n type: Input,\n args: ['cdkAriaLive']\n }], duration: [{\n type: Input,\n args: ['cdkAriaLiveDuration']\n }] } });\n\n/** Detection mode used for attributing the origin of a focus event. */\nvar FocusMonitorDetectionMode;\n(function (FocusMonitorDetectionMode) {\n /**\n * Any mousedown, keydown, or touchstart event that happened in the previous\n * tick or the current tick will be used to assign a focus event's origin (to\n * either mouse, keyboard, or touch). This is the default option.\n */\n FocusMonitorDetectionMode[FocusMonitorDetectionMode[\"IMMEDIATE\"] = 0] = \"IMMEDIATE\";\n /**\n * A focus event's origin is always attributed to the last corresponding\n * mousedown, keydown, or touchstart event, no matter how long ago it occurred.\n */\n FocusMonitorDetectionMode[FocusMonitorDetectionMode[\"EVENTUAL\"] = 1] = \"EVENTUAL\";\n})(FocusMonitorDetectionMode || (FocusMonitorDetectionMode = {}));\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 // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n if (event.type === 'focus') {\n this._onFocus(event, element);\n }\n else {\n this._onBlur(event, element);\n }\n }\n };\n this._document = document;\n this._detectionMode = options?.detectionMode || FocusMonitorDetectionMode.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 // Note: we don't want the observable to emit at all so we don't pass any parameters.\n return of();\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 if (this._windowFocused && this._lastFocusOrigin) {\n return this._lastFocusOrigin;\n }\n // If the interaction is coming from an input label, we consider it a mouse interactions.\n // This is a special case where focus moves on `click`, rather than `mousedown` which breaks\n // our detection, because all our assumptions are for `mousedown`. We need to handle this\n // special case, because it's very common for checkboxes and radio buttons.\n if (focusEventTarget && this._isLastInteractionFromInputLabel(focusEventTarget)) {\n return 'mouse';\n }\n return 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n // <div #parent tabindex=\"0\">\n // <div #child tabindex=\"0\" (click)=\"#parent.focus()\"></div>\n // </div>\n //\n // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n // #child, #parent is programmatically focused. This code will attribute the focus to touch\n // instead of program. This is a relatively minor edge-case that can be worked around by using\n // focusVia(parent, 'program') to focus #parent.\n return (this._detectionMode === FocusMonitorDetectionMode.EVENTUAL ||\n !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget));\n }\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param element The element to update the classes on.\n * @param origin The focus origin.\n */\n _setClasses(element, origin) {\n element.classList.toggle('cdk-focused', !!origin);\n element.classList.toggle('cdk-touch-focused', origin === 'touch');\n element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n element.classList.toggle('cdk-program-focused', origin === 'program');\n }\n /**\n * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n * the origin being set.\n * @param origin The origin to set.\n * @param isFromInteraction Whether we are setting the origin from an interaction event.\n */\n _setOrigin(origin, isFromInteraction = false) {\n this._ngZone.runOutsideAngular(() => {\n this._origin = origin;\n this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n // a touch event because when a touch event is fired, the associated focus event isn't yet in\n // the event queue. Before doing so, clear any pending timeouts.\n if (this._detectionMode === FocusMonitorDetectionMode.IMMEDIATE) {\n clearTimeout(this._originTimeoutId);\n const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n this._originTimeoutId = setTimeout(() => (this._origin = null), ms);\n }\n });\n }\n /**\n * Handles focus events on a registered element.\n * @param event The focus event.\n * @param element The monitored element.\n */\n _onFocus(event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const elementInfo = this._elementInfo.get(element);\n const focusEventTarget = _getEventTarget(event);\n if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n return;\n }\n this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n }\n /**\n * Handles blur events on a registered element.\n * @param event The blur event.\n * @param element The monitored element.\n */\n _onBlur(event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const elementInfo = this._elementInfo.get(element);\n if (!elementInfo ||\n (elementInfo.checkChildren &&\n event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n this._setClasses(element);\n this._emitOrigin(elementInfo, null);\n }\n _emitOrigin(info, origin) {\n if (info.subject.observers.length) {\n this._ngZone.run(() => info.subject.next(origin));\n }\n }\n _registerGlobalListeners(elementInfo) {\n if (!this._platform.isBrowser) {\n return;\n }\n const rootNode = elementInfo.rootNode;\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n if (!rootNodeFocusListeners) {\n this._ngZone.runOutsideAngular(() => {\n rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n });\n }\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n // Register global listeners when first element is monitored.\n if (++this._monitoredElementCount === 1) {\n // Note: we listen to events in the capture phase so we\n // can detect them even if the user stops propagation.\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n window.addEventListener('focus', this._windowFocusListener);\n });\n // The InputModalityDetector is also just a collection of global listeners.\n this._inputModalityDetector.modalityDetected\n .pipe(takeUntil(this._stopInputModalityDetector))\n .subscribe(modality => {\n this._setOrigin(modality, true /* isFromInteraction */);\n });\n }\n }\n _removeGlobalListeners(elementInfo) {\n const rootNode = elementInfo.rootNode;\n if (this._rootNodeFocusListenerCount.has(rootNode)) {\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n if (rootNodeFocusListeners > 1) {\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n }\n else {\n rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n this._rootNodeFocusListenerCount.delete(rootNode);\n }\n }\n // Unregister global listeners when last element is unmonitored.\n if (!--this._monitoredElementCount) {\n const window = this._getWindow();\n window.removeEventListener('focus', this._windowFocusListener);\n // Equivalently, stop our InputModalityDetector subscription.\n this._stopInputModalityDetector.next();\n // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n clearTimeout(this._windowFocusTimeoutId);\n clearTimeout(this._originTimeoutId);\n }\n }\n /** Updates all the state on an element once its focus origin has changed. */\n _originChanged(element, origin, elementInfo) {\n this._setClasses(element, origin);\n this._emitOrigin(elementInfo, origin);\n this._lastFocusOrigin = origin;\n }\n /**\n * Collects the `MonitoredElementInfo` of a particular element and\n * all of its ancestors that have enabled `checkChildren`.\n * @param element Element from which to start the search.\n */\n _getClosestElementsInfo(element) {\n const results = [];\n this._elementInfo.forEach((info, currentElement) => {\n if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n results.push([currentElement, info]);\n }\n });\n return results;\n }\n /**\n * Returns whether an interaction is likely to have come from the user clicking the `label` of\n * an `input` or `textarea` in order to focus it.\n * @param focusEventTarget Target currently receiving focus.\n */\n _isLastInteractionFromInputLabel(focusEventTarget) {\n const { _mostRecentTarget: mostRecentTarget, mostRecentModality } = this._inputModalityDetector;\n // If the last interaction used the mouse on an element contained by one of the labels\n // of an `input`/`textarea` that is currently focused, it is very likely that the\n // user redirected focus using the label.\n if (mostRecentModality !== 'mouse' ||\n !mostRecentTarget ||\n mostRecentTarget === focusEventTarget ||\n (focusEventTarget.nodeName !== 'INPUT' && focusEventTarget.nodeName !== 'TEXTAREA') ||\n focusEventTarget.disabled) {\n return false;\n }\n const labels = focusEventTarget.labels;\n if (labels) {\n for (let i = 0; i < labels.length; i++) {\n if (labels[i].contains(mostRecentTarget)) {\n return true;\n }\n }\n }\n return false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FocusMonitor, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: InputModalityDetector }, { token: DOCUMENT, optional: true }, { token: FOCUS_MONITOR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FocusMonitor, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FocusMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.Platform }, { type: InputModalityDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n }] }] });\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n constructor(_elementRef, _focusMonitor) {\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this._focusOrigin = null;\n this.cdkFocusChange = new EventEmitter();\n }\n get focusOrigin() {\n return this._focusOrigin;\n }\n ngAfterViewInit() {\n const element = this._elementRef.nativeElement;\n this._monitorSubscription = this._focusMonitor\n .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(origin => {\n this._focusOrigin = origin;\n this.cdkFocusChange.emit(origin);\n });\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n if (this._monitorSubscription) {\n this._monitorSubscription.unsubscribe();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkMonitorFocus, deps: [{ token: i0.ElementRef }, { token: FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkMonitorFocus, isStandalone: true, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: { cdkFocusChange: \"cdkFocusChange\" }, exportAs: [\"cdkMonitorFocus\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkMonitorFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n exportAs: 'cdkMonitorFocus',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: FocusMonitor }], propDecorators: { cdkFocusChange: [{\n type: Output\n }] } });\n\n/** Set of possible high-contrast mode backgrounds. */\nvar HighContrastMode;\n(function (HighContrastMode) {\n HighContrastMode[HighContrastMode[\"NONE\"] = 0] = \"NONE\";\n HighContrastMode[HighContrastMode[\"BLACK_ON_WHITE\"] = 1] = \"BLACK_ON_WHITE\";\n HighContrastMode[HighContrastMode[\"WHITE_ON_BLACK\"] = 2] = \"WHITE_ON_BLACK\";\n})(HighContrastMode || (HighContrastMode = {}));\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n constructor(_platform, document) {\n this._platform = _platform;\n this._document = document;\n this._breakpointSubscription = inject(BreakpointObserver)\n .observe('(forced-colors: active)')\n .subscribe(() => {\n if (this._hasCheckedHighContrastMode) {\n this._hasCheckedHighContrastMode = false;\n this._applyBodyHighContrastModeCssClasses();\n }\n });\n }\n /** Gets the current high-contrast-mode for the page. */\n getHighContrastMode() {\n if (!this._platform.isBrowser) {\n return HighContrastMode.NONE;\n }\n // Create a test element with an arbitrary background-color that is neither black nor\n // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n // appending the test element to the DOM does not affect layout by absolutely positioning it\n const testElement = this._document.createElement('div');\n testElement.style.backgroundColor = 'rgb(1,2,3)';\n testElement.style.position = 'absolute';\n this._document.body.appendChild(testElement);\n // Get the computed style for the background color, collapsing spaces to normalize between\n // browsers. Once we get this color, we no longer need the test element. Access the `window`\n // via the document so we can fake it in tests. Note that we have extra null checks, because\n // this logic will likely run during app bootstrap and throwing can break the entire app.\n const documentWindow = this._document.defaultView || window;\n const computedStyle = documentWindow && documentWindow.getComputedStyle\n ? documentWindow.getComputedStyle(testElement)\n : null;\n const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(/ /g, '');\n testElement.remove();\n switch (computedColor) {\n // Pre Windows 11 dark theme.\n case 'rgb(0,0,0)':\n // Windows 11 dark themes.\n case 'rgb(45,50,54)':\n case 'rgb(32,32,32)':\n return HighContrastMode.WHITE_ON_BLACK;\n // Pre Windows 11 light theme.\n case 'rgb(255,255,255)':\n // Windows 11 light theme.\n case 'rgb(255,250,239)':\n return HighContrastMode.BLACK_ON_WHITE;\n }\n return HighContrastMode.NONE;\n }\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n }\n /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n _applyBodyHighContrastModeCssClasses() {\n if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n const bodyClasses = this._document.body.classList;\n bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n this._hasCheckedHighContrastMode = true;\n const mode = this.getHighContrastMode();\n if (mode === HighContrastMode.BLACK_ON_WHITE) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS);\n }\n else if (mode === HighContrastMode.WHITE_ON_BLACK) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: HighContrastModeDetector, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: HighContrastModeDetector, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: HighContrastModeDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\nclass A11yModule {\n constructor(highContrastModeDetector) {\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: A11yModule, deps: [{ token: HighContrastModeDetector }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: A11yModule, imports: [ObserversModule, CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: A11yModule, imports: [ObserversModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: A11yModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ObserversModule, CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n }]\n }], ctorParameters: () => [{ type: HighContrastModeDetector }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusMonitorDetectionMode, FocusTrap, FocusTrapFactory, HighContrastMode, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, NOOP_TREE_KEY_MANAGER_FACTORY, NOOP_TREE_KEY_MANAGER_FACTORY_PROVIDER, NoopTreeKeyManager, TREE_KEY_MANAGER, TREE_KEY_MANAGER_FACTORY, TREE_KEY_MANAGER_FACTORY_PROVIDER, TreeKeyManager, addAriaReferencedId, getAriaReferenceIds, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader, removeAriaReferencedId };\n","import { Version } from '@angular/core';\n\n/** Current version of the Angular Component Development Kit. */\nconst VERSION = new Version('18.2.14');\n\nexport { VERSION };\n","import { isObservable, of } from 'rxjs';\n\n/**\n * Given either an Observable or non-Observable value, returns either the original\n * Observable, or wraps it in an Observable that emits the non-Observable value.\n */\nfunction coerceObservable(data) {\n if (!isObservable(data)) {\n return of(data);\n }\n return data;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { coerceObservable };\n","import { ConnectableObservable, isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable } from '@angular/core';\n\nclass DataSource {\n}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource. We also can't use `isObservable`\n // here, because of some internal apps.\n return value && typeof value.connect === 'function' && !(value instanceof ConnectableObservable);\n}\n\n/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n constructor(_data) {\n super();\n this._data = _data;\n }\n connect() {\n return isObservable(this._data) ? this._data : of(this._data);\n }\n disconnect() { }\n}\n\n/** Indicates how a view was changed by a {@link _ViewRepeater}. */\nvar _ViewRepeaterOperation;\n(function (_ViewRepeaterOperation) {\n /** The content of an existing view was replaced with another item. */\n _ViewRepeaterOperation[_ViewRepeaterOperation[\"REPLACED\"] = 0] = \"REPLACED\";\n /** A new view was created with `createEmbeddedView`. */\n _ViewRepeaterOperation[_ViewRepeaterOperation[\"INSERTED\"] = 1] = \"INSERTED\";\n /** The position of a view changed, but the content remains the same. */\n _ViewRepeaterOperation[_ViewRepeaterOperation[\"MOVED\"] = 2] = \"MOVED\";\n /** A view was detached from the view container. */\n _ViewRepeaterOperation[_ViewRepeaterOperation[\"REMOVED\"] = 3] = \"REMOVED\";\n})(_ViewRepeaterOperation || (_ViewRepeaterOperation = {}));\n/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\n\n/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = _ViewRepeaterOperation.INSERTED;\n }\n else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = _ViewRepeaterOperation.REMOVED;\n }\n else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = _ViewRepeaterOperation.MOVED;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record,\n });\n }\n });\n }\n detach() { }\n}\n\n/**\n * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n constructor() {\n /**\n * The size of the cache used to store unused views.\n * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n */\n this.viewCacheSize = 20;\n /**\n * View cache that stores embedded view instances that have been previously stamped out,\n * but don't are not currently rendered. The view repeater will reuse these views rather than\n * creating brand new ones.\n *\n * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n */\n this._viewCache = [];\n }\n /** Apply changes to the DOM. */\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n // Item added.\n const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = view ? _ViewRepeaterOperation.INSERTED : _ViewRepeaterOperation.REPLACED;\n }\n else if (currentIndex == null) {\n // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n operation = _ViewRepeaterOperation.REMOVED;\n }\n else {\n // Item moved.\n view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = _ViewRepeaterOperation.MOVED;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record,\n });\n }\n });\n }\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n this._viewCache = [];\n }\n /**\n * Inserts a view for a new item, either from the cache or by creating a new\n * one. Returns `undefined` if the item was inserted into a cached view.\n */\n _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n /** Detaches the view at the given index and inserts into the view cache. */\n _detachAndCacheView(index, viewContainerRef) {\n const detachedView = viewContainerRef.detach(index);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n /** Moves view at the previous index to the current index. */\n _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n const view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n _maybeCacheView(view, viewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n }\n else {\n const index = viewContainerRef.indexOf(view);\n // The host component could remove views from the container outside of\n // the view repeater. It's unlikely this will occur, but just in case,\n // destroy the view on its own, otherwise destroy it through the\n // container to ensure that all the references are removed.\n if (index === -1) {\n view.destroy();\n }\n else {\n viewContainerRef.remove(index);\n }\n }\n }\n /** Inserts a recycled view from the cache at the given index. */\n _insertViewFromCache(index, viewContainerRef) {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || null;\n }\n}\n\n/**\n * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true, compareWith) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n this.compareWith = compareWith;\n /** Currently-selected values. */\n this._selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n this._deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n this._selectedToEmit = [];\n /** Event emitted when the value has changed. */\n this.changed = new Subject();\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n }\n else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /**\n * Selects a value or an array of values.\n * @param values The values to select\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Deselects a value or an array of values.\n * @param values The values to deselect\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Sets the selected values\n * @param values The new selected values\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n setSelection(...values) {\n this._verifyValueAssignment(values);\n const oldValues = this.selected;\n const newSelectedSet = new Set(values);\n values.forEach(value => this._markSelected(value));\n oldValues\n .filter(value => !newSelectedSet.has(this._getConcreteValue(value, newSelectedSet)))\n .forEach(value => this._unmarkSelected(value));\n const changed = this._hasQueuedChanges();\n this._emitChangeEvent();\n return changed;\n }\n /**\n * Toggles a value between selected and deselected.\n * @param value The value to toggle\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n toggle(value) {\n return this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n * @param flushEvent Whether to flush the changes in an event.\n * If false, the changes to the selection will be flushed along with the next event.\n * @return Whether the selection changed as a result of this call\n * @breaking-change 16.0.0 make return type boolean\n */\n clear(flushEvent = true) {\n this._unmarkAll();\n const changed = this._hasQueuedChanges();\n if (flushEvent) {\n this._emitChangeEvent();\n }\n return changed;\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n return this._selection.has(this._getConcreteValue(value));\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit,\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n value = this._getConcreteValue(value);\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n if (!this.isSelected(value)) {\n this._selection.add(value);\n }\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n value = this._getConcreteValue(value);\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n /** Whether there are queued up change to be emitted. */\n _hasQueuedChanges() {\n return !!(this._deselectedToEmit.length || this._selectedToEmit.length);\n }\n /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */\n _getConcreteValue(inputValue, selection) {\n if (!this.compareWith) {\n return inputValue;\n }\n else {\n selection = selection ?? this._selection;\n for (let selectedValue of selection) {\n if (this.compareWith(inputValue, selectedValue)) {\n return selectedValue;\n }\n }\n return inputValue;\n }\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n constructor() {\n this._listeners = [];\n }\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter((registered) => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: UniqueSelectionDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: UniqueSelectionDispatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: UniqueSelectionDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, _ViewRepeaterOperation, getMultipleValuesInSingleSelectionError, isDataSource };\n","const MAC_ENTER = 3;\nconst BACKSPACE = 8;\nconst TAB = 9;\nconst NUM_CENTER = 12;\nconst ENTER = 13;\nconst SHIFT = 16;\nconst CONTROL = 17;\nconst ALT = 18;\nconst PAUSE = 19;\nconst CAPS_LOCK = 20;\nconst ESCAPE = 27;\nconst SPACE = 32;\nconst PAGE_UP = 33;\nconst PAGE_DOWN = 34;\nconst END = 35;\nconst HOME = 36;\nconst LEFT_ARROW = 37;\nconst UP_ARROW = 38;\nconst RIGHT_ARROW = 39;\nconst DOWN_ARROW = 40;\nconst PLUS_SIGN = 43;\nconst PRINT_SCREEN = 44;\nconst INSERT = 45;\nconst DELETE = 46;\nconst ZERO = 48;\nconst ONE = 49;\nconst TWO = 50;\nconst THREE = 51;\nconst FOUR = 52;\nconst FIVE = 53;\nconst SIX = 54;\nconst SEVEN = 55;\nconst EIGHT = 56;\nconst NINE = 57;\nconst FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\nconst FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\nconst QUESTION_MARK = 63;\nconst AT_SIGN = 64;\nconst A = 65;\nconst B = 66;\nconst C = 67;\nconst D = 68;\nconst E = 69;\nconst F = 70;\nconst G = 71;\nconst H = 72;\nconst I = 73;\nconst J = 74;\nconst K = 75;\nconst L = 76;\nconst M = 77;\nconst N = 78;\nconst O = 79;\nconst P = 80;\nconst Q = 81;\nconst R = 82;\nconst S = 83;\nconst T = 84;\nconst U = 85;\nconst V = 86;\nconst W = 87;\nconst X = 88;\nconst Y = 89;\nconst Z = 90;\nconst META = 91; // WIN_KEY_LEFT\nconst MAC_WK_CMD_LEFT = 91;\nconst MAC_WK_CMD_RIGHT = 93;\nconst CONTEXT_MENU = 93;\nconst NUMPAD_ZERO = 96;\nconst NUMPAD_ONE = 97;\nconst NUMPAD_TWO = 98;\nconst NUMPAD_THREE = 99;\nconst NUMPAD_FOUR = 100;\nconst NUMPAD_FIVE = 101;\nconst NUMPAD_SIX = 102;\nconst NUMPAD_SEVEN = 103;\nconst NUMPAD_EIGHT = 104;\nconst NUMPAD_NINE = 105;\nconst NUMPAD_MULTIPLY = 106;\nconst NUMPAD_PLUS = 107;\nconst NUMPAD_MINUS = 109;\nconst NUMPAD_PERIOD = 110;\nconst NUMPAD_DIVIDE = 111;\nconst F1 = 112;\nconst F2 = 113;\nconst F3 = 114;\nconst F4 = 115;\nconst F5 = 116;\nconst F6 = 117;\nconst F7 = 118;\nconst F8 = 119;\nconst F9 = 120;\nconst F10 = 121;\nconst F11 = 122;\nconst F12 = 123;\nconst NUM_LOCK = 144;\nconst SCROLL_LOCK = 145;\nconst FIRST_MEDIA = 166;\nconst FF_MINUS = 173;\nconst MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\nconst VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\nconst VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\nconst FF_MUTE = 181;\nconst FF_VOLUME_DOWN = 182;\nconst LAST_MEDIA = 183;\nconst FF_VOLUME_UP = 183;\nconst SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\nconst EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\nconst COMMA = 188;\nconst DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\nconst PERIOD = 190;\nconst SLASH = 191;\nconst APOSTROPHE = 192;\nconst TILDE = 192;\nconst OPEN_SQUARE_BRACKET = 219;\nconst BACKSLASH = 220;\nconst CLOSE_SQUARE_BRACKET = 221;\nconst SINGLE_QUOTE = 222;\nconst MAC_META = 224;\n\n/**\n * Checks whether a modifier key is pressed.\n * @param event Event to be checked.\n */\nfunction hasModifierKey(event, ...modifiers) {\n if (modifiers.length) {\n return modifiers.some(modifier => event[modifier]);\n }\n return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A, ALT, APOSTROPHE, AT_SIGN, B, BACKSLASH, BACKSPACE, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, E, EIGHT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, G, H, HOME, I, INSERT, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, N, NINE, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, PRINT_SCREEN, Q, QUESTION_MARK, R, RIGHT_ARROW, S, SCROLL_LOCK, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, T, TAB, THREE, TILDE, TWO, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, hasModifierKey };\n","import * as i0 from '@angular/core';\nimport { NgModule, CSP_NONCE, Injectable, Optional, Inject } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\n\nclass LayoutModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: LayoutModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: LayoutModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nclass MediaMatcher {\n constructor(_platform, _nonce) {\n this._platform = _platform;\n this._nonce = _nonce;\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query, this._nonce);\n }\n return this._matchMedia(query);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MediaMatcher, deps: [{ token: i1.Platform }, { token: CSP_NONCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MediaMatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MediaMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CSP_NONCE]\n }] }] });\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query, nonce) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n if (nonce) {\n mediaQueryStyleNode.setAttribute('nonce', nonce);\n }\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n }\n catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => { },\n removeListener: () => { },\n };\n}\n\n/** Utility for checking the matching state of @media queries. */\nclass BreakpointObserver {\n constructor(_mediaMatcher, _zone) {\n this._mediaMatcher = _mediaMatcher;\n this._zone = _zone;\n /** A map of all media queries currently being listened for. */\n this._queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n this._destroySubject = new Subject();\n }\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({ matches, query }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e) => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = { observable: queryObservable, mql };\n this._queries.set(query, output);\n return output;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: BreakpointObserver, deps: [{ token: MediaMatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: BreakpointObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: BreakpointObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: MediaMatcher }, { type: i0.NgZone }] });\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' +\n '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\n};\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreakpointObserver, Breakpoints, LayoutModule, MediaMatcher };\n","import { coerceElement, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, inject, NgZone, EventEmitter, booleanAttribute, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { map, filter, debounceTime } from 'rxjs/operators';\n\n// Angular may add, remove, or edit comment nodes during change detection. We don't care about\n// these changes because they don't affect the user-preceived content, and worse it can cause\n// infinite change detection cycles where the change detection updates a comment, triggering the\n// MutationObserver, triggering another change detection and kicking the cycle off again.\nfunction shouldIgnoreRecord(record) {\n // Ignore changes to comment text.\n if (record.type === 'characterData' && record.target instanceof Comment) {\n return true;\n }\n // Ignore addition / removal of comments.\n if (record.type === 'childList') {\n for (let i = 0; i < record.addedNodes.length; i++) {\n if (!(record.addedNodes[i] instanceof Comment)) {\n return false;\n }\n }\n for (let i = 0; i < record.removedNodes.length; i++) {\n if (!(record.removedNodes[i] instanceof Comment)) {\n return false;\n }\n }\n return true;\n }\n // Observe everything else.\n return false;\n}\n/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\nclass MutationObserverFactory {\n create(callback) {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MutationObserverFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** An injectable service that allows watching elements for changes to their content. */\nclass ContentObserver {\n constructor(_mutationObserverFactory) {\n this._mutationObserverFactory = _mutationObserverFactory;\n /** Keeps track of the existing MutationObservers so they can be reused. */\n this._observedElements = new Map();\n this._ngZone = inject(NgZone);\n }\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n observe(elementOrRef) {\n const element = coerceElement(elementOrRef);\n return new Observable((observer) => {\n const stream = this._observeElement(element);\n const subscription = stream\n .pipe(map(records => records.filter(record => !shouldIgnoreRecord(record))), filter(records => !!records.length))\n .subscribe(records => {\n this._ngZone.run(() => {\n observer.next(records);\n });\n });\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n _observeElement(element) {\n return this._ngZone.runOutsideAngular(() => {\n if (!this._observedElements.has(element)) {\n const stream = new Subject();\n const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n }\n else {\n this._observedElements.get(element).count++;\n }\n return this._observedElements.get(element).stream;\n });\n }\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n _unobserveElement(element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element).count--;\n if (!this._observedElements.get(element).count) {\n this._cleanupObserver(element);\n }\n }\n }\n /** Clean up the underlying MutationObserver for the specified element. */\n _cleanupObserver(element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element);\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ContentObserver, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ContentObserver, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ContentObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: MutationObserverFactory }] });\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nclass CdkObserveContent {\n /**\n * Whether observing content is disabled. This option can be used\n * to disconnect the underlying MutationObserver until it is needed.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n /** Debounce interval for emitting the changes. */\n get debounce() {\n return this._debounce;\n }\n set debounce(value) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n constructor(_contentObserver, _elementRef) {\n this._contentObserver = _contentObserver;\n this._elementRef = _elementRef;\n /** Event emitted for each change in the element's content. */\n this.event = new EventEmitter();\n this._disabled = false;\n this._currentSubscription = null;\n }\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n ngOnDestroy() {\n this._unsubscribe();\n }\n _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n }\n _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkObserveContent, deps: [{ token: ContentObserver }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkObserveContent, isStandalone: true, selector: \"[cdkObserveContent]\", inputs: { disabled: [\"cdkObserveContentDisabled\", \"disabled\", booleanAttribute], debounce: \"debounce\" }, outputs: { event: \"cdkObserveContent\" }, exportAs: [\"cdkObserveContent\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkObserveContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkObserveContent]',\n exportAs: 'cdkObserveContent',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: ContentObserver }, { type: i0.ElementRef }], propDecorators: { event: [{\n type: Output,\n args: ['cdkObserveContent']\n }], disabled: [{\n type: Input,\n args: [{ alias: 'cdkObserveContentDisabled', transform: booleanAttribute }]\n }], debounce: [{\n type: Input\n }] } });\nclass ObserversModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ObserversModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ObserversModule, imports: [CdkObserveContent], exports: [CdkObserveContent] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ObserversModule, providers: [MutationObserverFactory] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ObserversModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkObserveContent],\n exports: [CdkObserveContent],\n providers: [MutationObserverFactory],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };\n","import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, Optional, untracked, afterRender, afterNextRender, ElementRef, EnvironmentInjector, ApplicationRef, ANIMATION_MODULE_TYPE, InjectionToken, inject, Directive, NgZone, EventEmitter, booleanAttribute, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport { filter, takeUntil, takeWhile } from 'rxjs/operators';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\n\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n constructor(_viewportRuler, document) {\n this._viewportRuler = _viewportRuler;\n this._previousHTMLStyles = { top: '', left: '' };\n this._isEnabled = false;\n this._document = document;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach() { }\n /** Blocks page-level scroll while the attached overlay is open. */\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n }\n /** Unblocks page-level scroll while the attached overlay is open. */\n disable() {\n if (this._isEnabled) {\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n this._isEnabled = false;\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n // because it can throw off feature detections in `supportsScrollBehavior` which\n // checks for `'scrollBehavior' in documentElement.style`.\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n _canBeEnabled() {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n const html = this._document.documentElement;\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n const body = this._document.body;\n const viewport = this._viewportRuler.getViewportSize();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n }\n}\n\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._config = _config;\n this._scrollSubscription = null;\n /** Detaches the overlay ref and disables the scroll strategy. */\n this._detach = () => {\n this.disable();\n if (this._overlayRef.hasAttached()) {\n this._ngZone.run(() => this._overlayRef.detach());\n }\n };\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables the closing of the attached overlay on scroll. */\n enable() {\n if (this._scrollSubscription) {\n return;\n }\n const stream = this._scrollDispatcher.scrolled(0).pipe(filter(scrollable => {\n return (!scrollable ||\n !this._overlayRef.overlayElement.contains(scrollable.getElementRef().nativeElement));\n }));\n if (this._config && this._config.threshold && this._config.threshold > 1) {\n this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n this._scrollSubscription = stream.subscribe(() => {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n this._detach();\n }\n else {\n this._overlayRef.updatePosition();\n }\n });\n }\n else {\n this._scrollSubscription = stream.subscribe(this._detach);\n }\n }\n /** Disables the closing the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n /** Does nothing, as this scroll strategy is a no-op. */\n enable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n disable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n attach() { }\n}\n\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(containerBounds => {\n const outsideAbove = element.bottom < containerBounds.top;\n const outsideBelow = element.top > containerBounds.bottom;\n const outsideLeft = element.right < containerBounds.left;\n const outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(scrollContainerRect => {\n const clippedAbove = element.top < scrollContainerRect.top;\n const clippedBelow = element.bottom > scrollContainerRect.bottom;\n const clippedLeft = element.left < scrollContainerRect.left;\n const clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n });\n}\n\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n this._config = _config;\n this._scrollSubscription = null;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables repositioning of the attached overlay on scroll. */\n enable() {\n if (!this._scrollSubscription) {\n const throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n this._overlayRef.updatePosition();\n // TODO(crisbeto): make `close` on by default once all components can handle it.\n if (this._config && this._config.autoClose) {\n const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n const { width, height } = this._viewportRuler.getViewportSize();\n // TODO(crisbeto): include all ancestor scroll containers here once\n // we have a way of exposing the trigger element to the scroll strategy.\n const parentRects = [{ width, height, bottom: height, right: width, top: 0, left: 0 }];\n if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n this.disable();\n this._ngZone.run(() => this._overlayRef.detach());\n }\n }\n });\n }\n }\n /** Disables repositioning of the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n /** Do nothing on scroll. */\n this.noop = () => new NoopScrollStrategy();\n /**\n * Close the overlay as soon as the user scrolls.\n * @param config Configuration to be used inside the scroll strategy.\n */\n this.close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n /** Block scrolling. */\n this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n this.reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n this._document = document;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ScrollStrategyOptions, deps: [{ token: i1.ScrollDispatcher }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ScrollStrategyOptions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.ScrollDispatcher }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\n/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n constructor(config) {\n /** Strategy to be used when handling scroll events while the overlay is open. */\n this.scrollStrategy = new NoopScrollStrategy();\n /** Custom class to add to the overlay pane. */\n this.panelClass = '';\n /** Whether the overlay has a backdrop. */\n this.hasBackdrop = false;\n /** Custom class to add to the backdrop */\n this.backdropClass = 'cdk-overlay-dark-backdrop';\n /**\n * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.disposeOnNavigation = false;\n if (config) {\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n const configKeys = Object.keys(config);\n for (const key of configKeys) {\n if (config[key] !== undefined) {\n // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n // as \"I don't know *which* key this is, so the only valid value is the intersection\n // of all the possible values.\" In this case, that happens to be `undefined`. TypeScript\n // is not smart enough to see that the right-hand-side is actually an access of the same\n // exact type with the same exact key, meaning that the value type must be identical.\n // So we use `any` to work around this.\n this[key] = config[key];\n }\n }\n }\n }\n}\n\n/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n constructor(origin, overlay, \n /** Offset along the X axis. */\n offsetX, \n /** Offset along the Y axis. */\n offsetY, \n /** Class(es) to be applied to the panel while this position is active. */\n panelClass) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.panelClass = panelClass;\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n *\n * @docs-private\n */\nclass ScrollingVisibility {\n}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n constructor(\n /** The position used as a result of this change. */\n connectionPair, \n /** @docs-private */\n scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"top\", \"bottom\" or \"center\".`);\n }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n if (value !== 'start' && value !== 'end' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"start\", \"end\" or \"center\".`);\n }\n}\n\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n constructor(document) {\n /** Currently attached overlays in the order they were attached. */\n this._attachedOverlays = [];\n this._document = document;\n }\n ngOnDestroy() {\n this.detach();\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n // Ensure that we don't get the same overlay multiple times.\n this.remove(overlayRef);\n this._attachedOverlays.push(overlayRef);\n }\n /** Remove an overlay from the list of attached overlay refs. */\n remove(overlayRef) {\n const index = this._attachedOverlays.indexOf(overlayRef);\n if (index > -1) {\n this._attachedOverlays.splice(index, 1);\n }\n // Remove the global listener once there are no more overlays.\n if (this._attachedOverlays.length === 0) {\n this.detach();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: BaseOverlayDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n constructor(document, \n /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._ngZone = _ngZone;\n /** Keyboard event listener that will be attached to the body. */\n this._keydownListener = (event) => {\n const overlays = this._attachedOverlays;\n for (let i = overlays.length - 1; i > -1; i--) {\n // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n // We want to target the most recent overlay, rather than trying to match where the event came\n // from, because some components might open an overlay, but keep focus on a trigger element\n // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n // because we don't want overlays that don't handle keyboard events to block the ones below\n // them that do.\n if (overlays[i]._keydownEvents.observers.length > 0) {\n const keydownEvents = overlays[i]._keydownEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => keydownEvents.next(event));\n }\n else {\n keydownEvents.next(event);\n }\n break;\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Lazily start dispatcher once first overlay is added\n if (!this._isAttached) {\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._document.body.addEventListener('keydown', this._keydownListener));\n }\n else {\n this._document.body.addEventListener('keydown', this._keydownListener);\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n this._document.body.removeEventListener('keydown', this._keydownListener);\n this._isAttached = false;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }] });\n\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n constructor(document, _platform, \n /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._cursorStyleIsSet = false;\n /** Store pointerdown event target to track origin of click. */\n this._pointerDownListener = (event) => {\n this._pointerDownEventTarget = _getEventTarget(event);\n };\n /** Click event listener that will be attached to the body propagate phase. */\n this._clickListener = (event) => {\n const target = _getEventTarget(event);\n // In case of a click event, we want to check the origin of the click\n // (e.g. in case where a user starts a click inside the overlay and\n // releases the click outside of it).\n // This is done by using the event target of the preceding pointerdown event.\n // Every click event caused by a pointer device has a preceding pointerdown\n // event, unless the click was programmatically triggered (e.g. in a unit test).\n const origin = event.type === 'click' && this._pointerDownEventTarget\n ? this._pointerDownEventTarget\n : target;\n // Reset the stored pointerdown event target, to avoid having it interfere\n // in subsequent events.\n this._pointerDownEventTarget = null;\n // We copy the array because the original may be modified asynchronously if the\n // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n // the for loop.\n const overlays = this._attachedOverlays.slice();\n // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n // We want to target all overlays for which the click could be considered as outside click.\n // As soon as we reach an overlay for which the click is not outside click we break off\n // the loop.\n for (let i = overlays.length - 1; i > -1; i--) {\n const overlayRef = overlays[i];\n if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n continue;\n }\n // If it's a click inside the overlay, just break - we should do nothing\n // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n // and proceed with the next overlay\n if (containsPierceShadowDom(overlayRef.overlayElement, target) ||\n containsPierceShadowDom(overlayRef.overlayElement, origin)) {\n break;\n }\n const outsidePointerEvents = overlayRef._outsidePointerEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => outsidePointerEvents.next(event));\n }\n else {\n outsidePointerEvents.next(event);\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Safari on iOS does not generate click events for non-interactive\n // elements. However, we want to receive a click for any element outside\n // the overlay. We can force a \"clickable\" state by setting\n // `cursor: pointer` on the document body. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n if (!this._isAttached) {\n const body = this._document.body;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._addEventListeners(body));\n }\n else {\n this._addEventListeners(body);\n }\n // click event is not fired on iOS. To make element \"clickable\" we are\n // setting the cursor to pointer\n if (this._platform.IOS && !this._cursorStyleIsSet) {\n this._cursorOriginalValue = body.style.cursor;\n body.style.cursor = 'pointer';\n this._cursorStyleIsSet = true;\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n const body = this._document.body;\n body.removeEventListener('pointerdown', this._pointerDownListener, true);\n body.removeEventListener('click', this._clickListener, true);\n body.removeEventListener('auxclick', this._clickListener, true);\n body.removeEventListener('contextmenu', this._clickListener, true);\n if (this._platform.IOS && this._cursorStyleIsSet) {\n body.style.cursor = this._cursorOriginalValue;\n this._cursorStyleIsSet = false;\n }\n this._isAttached = false;\n }\n }\n _addEventListeners(body) {\n body.addEventListener('pointerdown', this._pointerDownListener, true);\n body.addEventListener('click', this._clickListener, true);\n body.addEventListener('auxclick', this._clickListener, true);\n body.addEventListener('contextmenu', this._clickListener, true);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }] });\n/** Version of `Element.contains` that transcends shadow DOM boundaries. */\nfunction containsPierceShadowDom(parent, child) {\n const supportsShadowRoot = typeof ShadowRoot !== 'undefined' && ShadowRoot;\n let current = child;\n while (current) {\n if (current === parent) {\n return true;\n }\n current =\n supportsShadowRoot && current instanceof ShadowRoot ? current.host : current.parentNode;\n }\n return false;\n}\n\n/** Container inside which all overlays will render. */\nclass OverlayContainer {\n constructor(document, _platform) {\n this._platform = _platform;\n this._document = document;\n }\n ngOnDestroy() {\n this._containerElement?.remove();\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const containerClass = 'cdk-overlay-container';\n // TODO(crisbeto): remove the testing check once we have an overlay testing\n // module or Angular starts tearing down the testing `NgModule`. See:\n // https://github.com/angular/angular/issues/18831\n if (this._platform.isBrowser || _isTestEnvironment()) {\n const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n // Remove any old containers from the opposite platform.\n // This can happen when transitioning from the server to the client.\n for (let i = 0; i < oppositePlatformContainers.length; i++) {\n oppositePlatformContainers[i].remove();\n }\n }\n const container = this._document.createElement('div');\n container.classList.add(containerClass);\n // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n // To mitigate the problem we made it so that only containers from a different platform are\n // cleared, but the side-effect was that people started depending on the overly-aggressive\n // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n // module which does the cleanup, we try to detect that we're in a test environment and we\n // always clear the container. See #17006.\n // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n if (_isTestEnvironment()) {\n container.setAttribute('platform', 'test');\n }\n else if (!this._platform.isBrowser) {\n container.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayContainer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }] });\n\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher, _animationsDisabled = false, _injector) {\n this._portalOutlet = _portalOutlet;\n this._host = _host;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._document = _document;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsDisabled = _animationsDisabled;\n this._injector = _injector;\n this._backdropElement = null;\n this._backdropClick = new Subject();\n this._attachments = new Subject();\n this._detachments = new Subject();\n this._locationChanges = Subscription.EMPTY;\n this._backdropClickHandler = (event) => this._backdropClick.next(event);\n this._backdropTransitionendHandler = (event) => {\n this._disposeBackdrop(event.target);\n };\n /** Stream of keydown events dispatched to this overlay. */\n this._keydownEvents = new Subject();\n /** Stream of mouse outside events dispatched to this overlay. */\n this._outsidePointerEvents = new Subject();\n this._renders = new Subject();\n if (_config.scrollStrategy) {\n this._scrollStrategy = _config.scrollStrategy;\n this._scrollStrategy.attach(this);\n }\n this._positionStrategy = _config.positionStrategy;\n // Users could open the overlay from an `effect`, in which case we need to\n // run the `afterRender` as `untracked`. We don't recommend that users do\n // this, but we also don't want to break users who are doing it.\n this._afterRenderRef = untracked(() => afterRender(() => {\n this._renders.next();\n }, { injector: this._injector }));\n }\n /** The overlay's HTML element */\n get overlayElement() {\n return this._pane;\n }\n /** The overlay's backdrop HTML element. */\n get backdropElement() {\n return this._backdropElement;\n }\n /**\n * Wrapper around the panel element. Can be used for advanced\n * positioning where a wrapper with specific styling is\n * required around the overlay pane.\n */\n get hostElement() {\n return this._host;\n }\n /**\n * Attaches content, given via a Portal, to the overlay.\n * If the overlay is configured to have a backdrop, it will be created.\n *\n * @param portal Portal instance to which to attach the overlay.\n * @returns The portal attachment result.\n */\n attach(portal) {\n // Insert the host into the DOM before attaching the portal, otherwise\n // the animations module will skip animations on repeat attachments.\n if (!this._host.parentElement && this._previousHostParent) {\n this._previousHostParent.appendChild(this._host);\n }\n const attachResult = this._portalOutlet.attach(portal);\n if (this._positionStrategy) {\n this._positionStrategy.attach(this);\n }\n this._updateStackingOrder();\n this._updateElementSize();\n this._updateElementDirection();\n if (this._scrollStrategy) {\n this._scrollStrategy.enable();\n }\n // We need to clean this up ourselves, because we're passing in an\n // `EnvironmentInjector` below which won't ever be destroyed.\n // Otherwise it causes some callbacks to be retained (see #29696).\n this._afterNextRenderRef?.destroy();\n // Update the position once the overlay is fully rendered before attempting to position it,\n // as the position may depend on the size of the rendered content.\n this._afterNextRenderRef = afterNextRender(() => {\n // The overlay could've been detached before the callback executed.\n if (this.hasAttached()) {\n this.updatePosition();\n }\n }, { injector: this._injector });\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, true);\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n // Track this overlay by the keyboard dispatcher\n this._keyboardDispatcher.add(this);\n if (this._config.disposeOnNavigation) {\n this._locationChanges = this._location.subscribe(() => this.dispose());\n }\n this._outsideClickDispatcher.add(this);\n // TODO(crisbeto): the null check is here, because the portal outlet returns `any`.\n // We should be guaranteed for the result to be `ComponentRef | EmbeddedViewRef`, but\n // `instanceof EmbeddedViewRef` doesn't appear to work at the moment.\n if (typeof attachResult?.onDestroy === 'function') {\n // In most cases we control the portal and we know when it is being detached so that\n // we can finish the disposal process. The exception is if the user passes in a custom\n // `ViewContainerRef` that isn't destroyed through the overlay API. Note that we use\n // `detach` here instead of `dispose`, because we don't know if the user intends to\n // reattach the overlay at a later point. It also has the advantage of waiting for animations.\n attachResult.onDestroy(() => {\n if (this.hasAttached()) {\n // We have to delay the `detach` call, because detaching immediately prevents\n // other destroy hooks from running. This is likely a framework bug similar to\n // https://github.com/angular/angular/issues/46119\n this._ngZone.runOutsideAngular(() => Promise.resolve().then(() => this.detach()));\n }\n });\n }\n return attachResult;\n }\n /**\n * Detaches an overlay from a portal.\n * @returns The portal detachment result.\n */\n detach() {\n if (!this.hasAttached()) {\n return;\n }\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._positionStrategy && this._positionStrategy.detach) {\n this._positionStrategy.detach();\n }\n if (this._scrollStrategy) {\n this._scrollStrategy.disable();\n }\n const detachmentResult = this._portalOutlet.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n // Remove this overlay from keyboard dispatcher tracking.\n this._keyboardDispatcher.remove(this);\n // Keeping the host element in the DOM can cause scroll jank, because it still gets\n // rendered, even though it's transparent and unclickable which is why we remove it.\n this._detachContentWhenEmpty();\n this._locationChanges.unsubscribe();\n this._outsideClickDispatcher.remove(this);\n return detachmentResult;\n }\n /** Cleans up the overlay from the DOM. */\n dispose() {\n const isAttached = this.hasAttached();\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._disposeScrollStrategy();\n this._disposeBackdrop(this._backdropElement);\n this._locationChanges.unsubscribe();\n this._keyboardDispatcher.remove(this);\n this._portalOutlet.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n this._outsidePointerEvents.complete();\n this._outsideClickDispatcher.remove(this);\n this._host?.remove();\n this._afterNextRenderRef?.destroy();\n this._previousHostParent = this._pane = this._host = null;\n if (isAttached) {\n this._detachments.next();\n }\n this._detachments.complete();\n this._afterRenderRef.destroy();\n this._renders.complete();\n }\n /** Whether the overlay has attached content. */\n hasAttached() {\n return this._portalOutlet.hasAttached();\n }\n /** Gets an observable that emits when the backdrop has been clicked. */\n backdropClick() {\n return this._backdropClick;\n }\n /** Gets an observable that emits when the overlay has been attached. */\n attachments() {\n return this._attachments;\n }\n /** Gets an observable that emits when the overlay has been detached. */\n detachments() {\n return this._detachments;\n }\n /** Gets an observable of keydown events targeted to this overlay. */\n keydownEvents() {\n return this._keydownEvents;\n }\n /** Gets an observable of pointer events targeted outside this overlay. */\n outsidePointerEvents() {\n return this._outsidePointerEvents;\n }\n /** Gets the current overlay configuration, which is immutable. */\n getConfig() {\n return this._config;\n }\n /** Updates the position of the overlay based on the position strategy. */\n updatePosition() {\n if (this._positionStrategy) {\n this._positionStrategy.apply();\n }\n }\n /** Switches to a new position strategy and updates the overlay position. */\n updatePositionStrategy(strategy) {\n if (strategy === this._positionStrategy) {\n return;\n }\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._positionStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n this.updatePosition();\n }\n }\n /** Update the size properties of the overlay. */\n updateSize(sizeConfig) {\n this._config = { ...this._config, ...sizeConfig };\n this._updateElementSize();\n }\n /** Sets the LTR/RTL direction for the overlay. */\n setDirection(dir) {\n this._config = { ...this._config, direction: dir };\n this._updateElementDirection();\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, true);\n }\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, false);\n }\n }\n /**\n * Returns the layout direction of the overlay panel.\n */\n getDirection() {\n const direction = this._config.direction;\n if (!direction) {\n return 'ltr';\n }\n return typeof direction === 'string' ? direction : direction.value;\n }\n /** Switches to a new scroll strategy. */\n updateScrollStrategy(strategy) {\n if (strategy === this._scrollStrategy) {\n return;\n }\n this._disposeScrollStrategy();\n this._scrollStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n strategy.enable();\n }\n }\n /** Updates the text direction of the overlay panel. */\n _updateElementDirection() {\n this._host.setAttribute('dir', this.getDirection());\n }\n /** Updates the size of the overlay element based on the overlay config. */\n _updateElementSize() {\n if (!this._pane) {\n return;\n }\n const style = this._pane.style;\n style.width = coerceCssPixelValue(this._config.width);\n style.height = coerceCssPixelValue(this._config.height);\n style.minWidth = coerceCssPixelValue(this._config.minWidth);\n style.minHeight = coerceCssPixelValue(this._config.minHeight);\n style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n }\n /** Toggles the pointer events for the overlay pane element. */\n _togglePointerEvents(enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n }\n /** Attaches a backdrop for this overlay. */\n _attachBackdrop() {\n const showingClass = 'cdk-overlay-backdrop-showing';\n this._backdropElement = this._document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._animationsDisabled) {\n this._backdropElement.classList.add('cdk-overlay-backdrop-noop-animation');\n }\n if (this._config.backdropClass) {\n this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n }\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._host.parentElement.insertBefore(this._backdropElement, this._host);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', this._backdropClickHandler);\n // Add class to fade-in the backdrop after one frame.\n if (!this._animationsDisabled && typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (this._backdropElement) {\n this._backdropElement.classList.add(showingClass);\n }\n });\n });\n }\n else {\n this._backdropElement.classList.add(showingClass);\n }\n }\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n */\n _updateStackingOrder() {\n if (this._host.nextSibling) {\n this._host.parentNode.appendChild(this._host);\n }\n }\n /** Detaches the backdrop (if any) associated with the overlay. */\n detachBackdrop() {\n const backdropToDetach = this._backdropElement;\n if (!backdropToDetach) {\n return;\n }\n if (this._animationsDisabled) {\n this._disposeBackdrop(backdropToDetach);\n return;\n }\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n this._ngZone.runOutsideAngular(() => {\n backdropToDetach.addEventListener('transitionend', this._backdropTransitionendHandler);\n });\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n this._backdropTimeout = this._ngZone.runOutsideAngular(() => setTimeout(() => {\n this._disposeBackdrop(backdropToDetach);\n }, 500));\n }\n /** Toggles a single CSS class or an array of classes on an element. */\n _toggleClasses(element, cssClasses, isAdd) {\n const classes = coerceArray(cssClasses || []).filter(c => !!c);\n if (classes.length) {\n isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n }\n }\n /** Detaches the overlay content next time the zone stabilizes. */\n _detachContentWhenEmpty() {\n // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n // be patched to run inside the zone, which will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => {\n // We can't remove the host here immediately, because the overlay pane's content\n // might still be animating. This stream helps us avoid interrupting the animation\n // by waiting for the pane to become empty.\n const subscription = this._renders\n .pipe(takeUntil(merge(this._attachments, this._detachments)))\n .subscribe(() => {\n // Needs a couple of checks for the pane and host, because\n // they may have been removed by the time the zone stabilizes.\n if (!this._pane || !this._host || this._pane.children.length === 0) {\n if (this._pane && this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, false);\n }\n if (this._host && this._host.parentElement) {\n this._previousHostParent = this._host.parentElement;\n this._host.remove();\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n /** Disposes of a scroll strategy. */\n _disposeScrollStrategy() {\n const scrollStrategy = this._scrollStrategy;\n if (scrollStrategy) {\n scrollStrategy.disable();\n if (scrollStrategy.detach) {\n scrollStrategy.detach();\n }\n }\n }\n /** Removes a backdrop element from the DOM. */\n _disposeBackdrop(backdrop) {\n if (backdrop) {\n backdrop.removeEventListener('click', this._backdropClickHandler);\n backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);\n backdrop.remove();\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (this._backdropElement === backdrop) {\n this._backdropElement = null;\n }\n }\n if (this._backdropTimeout) {\n clearTimeout(this._backdropTimeout);\n this._backdropTimeout = undefined;\n }\n }\n}\n\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n this._lastBoundingBoxSize = { width: 0, height: 0 };\n /** Whether the overlay was pushed in a previous positioning. */\n this._isPushed = false;\n /** Whether the overlay can be pushed on-screen on the initial open. */\n this._canPush = true;\n /** Whether the overlay can grow via flexible width/height after the initial open. */\n this._growAfterOpen = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this._hasFlexibleDimensions = true;\n /** Whether the overlay position is locked. */\n this._positionLocked = false;\n /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n this._viewportMargin = 0;\n /** The Scrollable containers used to check scrollable view properties on position change. */\n this._scrollables = [];\n /** Ordered list of preferred positions, from most to least desirable. */\n this._preferredPositions = [];\n /** Subject that emits whenever the position changes. */\n this._positionChanges = new Subject();\n /** Subscription to viewport size changes. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Default offset for the overlay along the x axis. */\n this._offsetX = 0;\n /** Default offset for the overlay along the y axis. */\n this._offsetY = 0;\n /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n this._appliedPanelClasses = [];\n /** Observable sequence of position changes. */\n this.positionChanges = this._positionChanges;\n this.setOrigin(connectedTo);\n }\n /** Attaches this position strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef &&\n overlayRef !== this._overlayRef &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This position strategy is already attached to an overlay');\n }\n this._validatePositions();\n overlayRef.hostElement.classList.add(boundingBoxClass);\n this._overlayRef = overlayRef;\n this._boundingBox = overlayRef.hostElement;\n this._pane = overlayRef.overlayElement;\n this._isDisposed = false;\n this._isInitialRender = true;\n this._lastPosition = null;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n // When the window is resized, we want to trigger the next reposition as if it\n // was an initial render, in order for the strategy to pick a new optimal position,\n // otherwise position locking will cause it to stay at the old one.\n this._isInitialRender = true;\n this.apply();\n });\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin best fits on-screen.\n *\n * The selection of a position goes as follows:\n * - If any positions fit completely within the viewport as-is,\n * choose the first position that does so.\n * - If flexible dimensions are enabled and at least one satisfies the given minimum width/height,\n * choose the position with the greatest available size modified by the positions' weight.\n * - If pushing is enabled, take the position that went off-screen the least and push it\n * on-screen.\n * - If none of the previous criteria were met, use the position that goes off-screen the least.\n * @docs-private\n */\n apply() {\n // We shouldn't do anything if the strategy was disposed or we're on the server.\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n // If the position has been applied already (e.g. when the overlay was opened) and the\n // consumer opted into locking in the position, re-use the old position, in order to\n // prevent the overlay from jumping around.\n if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n this.reapplyLastPosition();\n return;\n }\n this._clearPanelClasses();\n this._resetOverlayElementStyles();\n this._resetBoundingBoxStyles();\n // We need the bounding rects for the origin, the overlay and the container to determine how to position\n // the overlay relative to the origin.\n // We use the viewport rect to determine whether a position would go off-screen.\n this._viewportRect = this._getNarrowedViewportRect();\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originRect = this._originRect;\n const overlayRect = this._overlayRect;\n const viewportRect = this._viewportRect;\n const containerRect = this._containerRect;\n // Positions where the overlay will fit with flexible dimensions.\n const flexibleFits = [];\n // Fallback if none of the preferred positions fit within the viewport.\n let fallback;\n // Go through each of the preferred positions looking for a good fit.\n // If a good fit is found, it will be applied immediately.\n for (let pos of this._preferredPositions) {\n // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n let originPoint = this._getOriginPoint(originRect, containerRect, pos);\n // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n // overlay in this position. We use the top-left corner for calculations and later translate\n // this into an appropriate (top, left, bottom, right) style.\n let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n // Calculate how well the overlay would fit into the viewport with this point.\n let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n // If the overlay, without any further work, fits into the viewport, use this position.\n if (overlayFit.isCompletelyWithinViewport) {\n this._isPushed = false;\n this._applyPosition(pos, originPoint);\n return;\n }\n // If the overlay has flexible dimensions, we can use this position\n // so long as there's enough space for the minimum dimensions.\n if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n // Save positions where the overlay will fit with flexible dimensions. We will use these\n // if none of the positions fit *without* flexible dimensions.\n flexibleFits.push({\n position: pos,\n origin: originPoint,\n overlayRect,\n boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),\n });\n continue;\n }\n // If the current preferred position does not fit on the screen, remember the position\n // if it has more visible area on-screen than we've seen and move onto the next preferred\n // position.\n if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n fallback = { overlayFit, overlayPoint, originPoint, position: pos, overlayRect };\n }\n }\n // If there are any positions where the overlay would fit with flexible dimensions, choose the\n // one that has the greatest area available modified by the position's weight\n if (flexibleFits.length) {\n let bestFit = null;\n let bestScore = -1;\n for (const fit of flexibleFits) {\n const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n if (score > bestScore) {\n bestScore = score;\n bestFit = fit;\n }\n }\n this._isPushed = false;\n this._applyPosition(bestFit.position, bestFit.origin);\n return;\n }\n // When none of the preferred positions fit within the viewport, take the position\n // that went off-screen the least and attempt to push it on-screen.\n if (this._canPush) {\n // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n this._isPushed = true;\n this._applyPosition(fallback.position, fallback.originPoint);\n return;\n }\n // All options for getting the overlay within the viewport have been exhausted, so go with the\n // position that went off-screen the least.\n this._applyPosition(fallback.position, fallback.originPoint);\n }\n detach() {\n this._clearPanelClasses();\n this._lastPosition = null;\n this._previousPushAmount = null;\n this._resizeSubscription.unsubscribe();\n }\n /** Cleanup after the element gets destroyed. */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n // We can't use `_resetBoundingBoxStyles` here, because it resets\n // some properties to zero, rather than removing them.\n if (this._boundingBox) {\n extendStyles(this._boundingBox.style, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n if (this._pane) {\n this._resetOverlayElementStyles();\n }\n if (this._overlayRef) {\n this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n }\n this.detach();\n this._positionChanges.complete();\n this._overlayRef = this._boundingBox = null;\n this._isDisposed = true;\n }\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n reapplyLastPosition() {\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n const lastPosition = this._lastPosition;\n if (lastPosition) {\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._viewportRect = this._getNarrowedViewportRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition);\n this._applyPosition(lastPosition, originPoint);\n }\n else {\n this.apply();\n }\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._scrollables = scrollables;\n return this;\n }\n /**\n * Adds new preferred positions.\n * @param positions List of positions options for this overlay.\n */\n withPositions(positions) {\n this._preferredPositions = positions;\n // If the last calculated position object isn't part of the positions anymore, clear\n // it in order to avoid it being picked up if the consumer tries to re-apply.\n if (positions.indexOf(this._lastPosition) === -1) {\n this._lastPosition = null;\n }\n this._validatePositions();\n return this;\n }\n /**\n * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n * @param margin Required margin between the overlay and the viewport edge in pixels.\n */\n withViewportMargin(margin) {\n this._viewportMargin = margin;\n return this;\n }\n /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n withFlexibleDimensions(flexibleDimensions = true) {\n this._hasFlexibleDimensions = flexibleDimensions;\n return this;\n }\n /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n withGrowAfterOpen(growAfterOpen = true) {\n this._growAfterOpen = growAfterOpen;\n return this;\n }\n /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n withPush(canPush = true) {\n this._canPush = canPush;\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked = true) {\n this._positionLocked = isLocked;\n return this;\n }\n /**\n * Sets the origin, relative to which to position the overlay.\n * Using an element origin is useful for building components that need to be positioned\n * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n * used for cases like contextual menus which open relative to the user's pointer.\n * @param origin Reference to the new origin.\n */\n setOrigin(origin) {\n this._origin = origin;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the x-axis.\n * @param offset New offset in the X axis.\n */\n withDefaultOffsetX(offset) {\n this._offsetX = offset;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the y-axis.\n * @param offset New offset in the Y axis.\n */\n withDefaultOffsetY(offset) {\n this._offsetY = offset;\n return this;\n }\n /**\n * Configures that the position strategy should set a `transform-origin` on some elements\n * inside the overlay, depending on the current position that is being applied. This is\n * useful for the cases where the origin of an animation can change depending on the\n * alignment of the overlay.\n * @param selector CSS selector that will be used to find the target\n * elements onto which to set the transform origin.\n */\n withTransformOriginOn(selector) {\n this._transformOriginSelector = selector;\n return this;\n }\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n */\n _getOriginPoint(originRect, containerRect, pos) {\n let x;\n if (pos.originX == 'center') {\n // Note: when centering we should always use the `left`\n // offset, otherwise the position will be wrong in RTL.\n x = originRect.left + originRect.width / 2;\n }\n else {\n const startX = this._isRtl() ? originRect.right : originRect.left;\n const endX = this._isRtl() ? originRect.left : originRect.right;\n x = pos.originX == 'start' ? startX : endX;\n }\n // When zooming in Safari the container rectangle contains negative values for the position\n // and we need to re-add them to the calculated coordinates.\n if (containerRect.left < 0) {\n x -= containerRect.left;\n }\n let y;\n if (pos.originY == 'center') {\n y = originRect.top + originRect.height / 2;\n }\n else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n // Normally the containerRect's top value would be zero, however when the overlay is attached to an input\n // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle\n // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n // otherwise our positioning will be thrown off.\n // Additionally, when zooming in Safari this fixes the vertical position.\n if (containerRect.top < 0) {\n y -= containerRect.top;\n }\n return { x, y };\n }\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected.\n */\n _getOverlayPoint(originPoint, overlayRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the\n // potential overlay position relative to the origin point.\n let overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n }\n else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n }\n else {\n overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n }\n let overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n }\n else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n return {\n x: originPoint.x + overlayStartX,\n y: originPoint.y + overlayStartY,\n };\n }\n /** Gets how well an overlay at the given point will fit within the viewport. */\n _getOverlayFit(point, rawOverlayRect, viewport, position) {\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n let { x, y } = point;\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n // Account for the offsets since they could push the overlay out of the viewport.\n if (offsetX) {\n x += offsetX;\n }\n if (offsetY) {\n y += offsetY;\n }\n // How much the overlay would overflow at this position, on each side.\n let leftOverflow = 0 - x;\n let rightOverflow = x + overlay.width - viewport.width;\n let topOverflow = 0 - y;\n let bottomOverflow = y + overlay.height - viewport.height;\n // Visible parts of the element on each axis.\n let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n let visibleArea = visibleWidth * visibleHeight;\n return {\n visibleArea,\n isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n fitsInViewportVertically: visibleHeight === overlay.height,\n fitsInViewportHorizontally: visibleWidth == overlay.width,\n };\n }\n /**\n * Whether the overlay can fit within the viewport when it may resize either its width or height.\n * @param fit How well the overlay fits in the viewport at some position.\n * @param point The (x, y) coordinates of the overlay at some position.\n * @param viewport The geometry of the viewport.\n */\n _canFitWithFlexibleDimensions(fit, point, viewport) {\n if (this._hasFlexibleDimensions) {\n const availableHeight = viewport.bottom - point.y;\n const availableWidth = viewport.right - point.x;\n const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n const verticalFit = fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);\n const horizontalFit = fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);\n return verticalFit && horizontalFit;\n }\n return false;\n }\n /**\n * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n * the viewport, the top-left corner will be pushed on-screen (with overflow occurring on the\n * right and bottom).\n *\n * @param start Starting point from which the overlay is pushed.\n * @param rawOverlayRect Dimensions of the overlay.\n * @param scrollPosition Current viewport scroll position.\n * @returns The point at which to position the overlay after pushing. This is effectively a new\n * originPoint.\n */\n _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n // If the position is locked and we've pushed the overlay already, reuse the previous push\n // amount, rather than pushing it again. If we were to continue pushing, the element would\n // remain in the viewport, which goes against the expectations when position locking is enabled.\n if (this._previousPushAmount && this._positionLocked) {\n return {\n x: start.x + this._previousPushAmount.x,\n y: start.y + this._previousPushAmount.y,\n };\n }\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n const viewport = this._viewportRect;\n // Determine how much the overlay goes outside the viewport on each\n // side, which we'll use to decide which direction to push it.\n const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n // Amount by which to push the overlay in each axis such that it remains on-screen.\n let pushX = 0;\n let pushY = 0;\n // If the overlay fits completely within the bounds of the viewport, push it from whichever\n // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n // viewport and allow for the trailing end of the overlay to go out of bounds.\n if (overlay.width <= viewport.width) {\n pushX = overflowLeft || -overflowRight;\n }\n else {\n pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n }\n if (overlay.height <= viewport.height) {\n pushY = overflowTop || -overflowBottom;\n }\n else {\n pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n }\n this._previousPushAmount = { x: pushX, y: pushY };\n return {\n x: start.x + pushX,\n y: start.y + pushY,\n };\n }\n /**\n * Applies a computed position to the overlay and emits a position change.\n * @param position The position preference\n * @param originPoint The point on the origin element where the overlay is connected.\n */\n _applyPosition(position, originPoint) {\n this._setTransformOrigin(position);\n this._setOverlayElementStyles(originPoint, position);\n this._setBoundingBoxStyles(originPoint, position);\n if (position.panelClass) {\n this._addPanelClasses(position.panelClass);\n }\n // Notify that the position has been changed along with its change properties.\n // We only emit if we've got any subscriptions, because the scroll visibility\n // calculations can be somewhat expensive.\n if (this._positionChanges.observers.length) {\n const scrollVisibility = this._getScrollVisibility();\n // We're recalculating on scroll, but we only want to emit if anything\n // changed since downstream code might be hitting the `NgZone`.\n if (position !== this._lastPosition ||\n !this._lastScrollVisibility ||\n !compareScrollVisibility(this._lastScrollVisibility, scrollVisibility)) {\n const changeEvent = new ConnectedOverlayPositionChange(position, scrollVisibility);\n this._positionChanges.next(changeEvent);\n }\n this._lastScrollVisibility = scrollVisibility;\n }\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastPosition = position;\n this._isInitialRender = false;\n }\n /** Sets the transform origin based on the configured selector and the passed-in position. */\n _setTransformOrigin(position) {\n if (!this._transformOriginSelector) {\n return;\n }\n const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n let xOrigin;\n let yOrigin = position.overlayY;\n if (position.overlayX === 'center') {\n xOrigin = 'center';\n }\n else if (this._isRtl()) {\n xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n }\n else {\n xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n }\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n }\n }\n /**\n * Gets the position and size of the overlay's sizing container.\n *\n * This method does no measuring and applies no styles so that we can cheaply compute the\n * bounds for all positions and choose the best fit based on these results.\n */\n _calculateBoundingBoxRect(origin, position) {\n const viewport = this._viewportRect;\n const isRtl = this._isRtl();\n let height, top, bottom;\n if (position.overlayY === 'top') {\n // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n top = origin.y;\n height = viewport.height - top + this._viewportMargin;\n }\n else if (position.overlayY === 'bottom') {\n // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n // the viewport margin back in, because the viewport rect is narrowed down to remove the\n // margin, whereas the `origin` position is calculated based on its `DOMRect`.\n bottom = viewport.height - origin.y + this._viewportMargin * 2;\n height = viewport.height - bottom + this._viewportMargin;\n }\n else {\n // If neither top nor bottom, it means that the overlay is vertically centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n // `origin.y - viewport.top`.\n const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n const previousHeight = this._lastBoundingBoxSize.height;\n height = smallestDistanceToViewportEdge * 2;\n top = origin.y - smallestDistanceToViewportEdge;\n if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n top = origin.y - previousHeight / 2;\n }\n }\n // The overlay is opening 'right-ward' (the content flows to the right).\n const isBoundedByRightViewportEdge = (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);\n // The overlay is opening 'left-ward' (the content flows to the left).\n const isBoundedByLeftViewportEdge = (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);\n let width, left, right;\n if (isBoundedByLeftViewportEdge) {\n right = viewport.width - origin.x + this._viewportMargin * 2;\n width = origin.x - this._viewportMargin;\n }\n else if (isBoundedByRightViewportEdge) {\n left = origin.x;\n width = viewport.right - origin.x;\n }\n else {\n // If neither start nor end, it means that the overlay is horizontally centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.right - origin.x` and\n // `origin.x - viewport.left`.\n const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n const previousWidth = this._lastBoundingBoxSize.width;\n width = smallestDistanceToViewportEdge * 2;\n left = origin.x - smallestDistanceToViewportEdge;\n if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n left = origin.x - previousWidth / 2;\n }\n }\n return { top: top, left: left, bottom: bottom, right: right, width, height };\n }\n /**\n * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n * origin's connection point and stretches to the bounds of the viewport.\n *\n * @param origin The point on the origin element where the overlay is connected.\n * @param position The position preference\n */\n _setBoundingBoxStyles(origin, position) {\n const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n // when applying a new size.\n if (!this._isInitialRender && !this._growAfterOpen) {\n boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n }\n const styles = {};\n if (this._hasExactPosition()) {\n styles.top = styles.left = '0';\n styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n styles.width = styles.height = '100%';\n }\n else {\n const maxHeight = this._overlayRef.getConfig().maxHeight;\n const maxWidth = this._overlayRef.getConfig().maxWidth;\n styles.height = coerceCssPixelValue(boundingBoxRect.height);\n styles.top = coerceCssPixelValue(boundingBoxRect.top);\n styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n styles.width = coerceCssPixelValue(boundingBoxRect.width);\n styles.left = coerceCssPixelValue(boundingBoxRect.left);\n styles.right = coerceCssPixelValue(boundingBoxRect.right);\n // Push the pane content towards the proper direction.\n if (position.overlayX === 'center') {\n styles.alignItems = 'center';\n }\n else {\n styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n }\n if (position.overlayY === 'center') {\n styles.justifyContent = 'center';\n }\n else {\n styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n }\n if (maxHeight) {\n styles.maxHeight = coerceCssPixelValue(maxHeight);\n }\n if (maxWidth) {\n styles.maxWidth = coerceCssPixelValue(maxWidth);\n }\n }\n this._lastBoundingBoxSize = boundingBoxRect;\n extendStyles(this._boundingBox.style, styles);\n }\n /** Resets the styles for the bounding box so that a new positioning can be computed. */\n _resetBoundingBoxStyles() {\n extendStyles(this._boundingBox.style, {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n _resetOverlayElementStyles() {\n extendStyles(this._pane.style, {\n top: '',\n left: '',\n bottom: '',\n right: '',\n position: '',\n transform: '',\n });\n }\n /** Sets positioning styles to the overlay element. */\n _setOverlayElementStyles(originPoint, position) {\n const styles = {};\n const hasExactPosition = this._hasExactPosition();\n const hasFlexibleDimensions = this._hasFlexibleDimensions;\n const config = this._overlayRef.getConfig();\n if (hasExactPosition) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n }\n else {\n styles.position = 'static';\n }\n // Use a transform to apply the offsets. We do this because the `center` positions rely on\n // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n // off the position. We also can't use margins, because they won't have an effect in some\n // cases where the element doesn't have anything to \"push off of\". Finally, this works\n // better both with flexible and non-flexible positioning.\n let transformString = '';\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n if (offsetX) {\n transformString += `translateX(${offsetX}px) `;\n }\n if (offsetY) {\n transformString += `translateY(${offsetY}px)`;\n }\n styles.transform = transformString.trim();\n // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n // Note that this doesn't apply when we have an exact position, in which case we do want to\n // apply them because they'll be cleared from the bounding box.\n if (config.maxHeight) {\n if (hasExactPosition) {\n styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n }\n else if (hasFlexibleDimensions) {\n styles.maxHeight = '';\n }\n }\n if (config.maxWidth) {\n if (hasExactPosition) {\n styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n }\n else if (hasFlexibleDimensions) {\n styles.maxWidth = '';\n }\n }\n extendStyles(this._pane.style, styles);\n }\n /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayY(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the\n // preferred position has changed since the last `apply`.\n let styles = { top: '', bottom: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n // above or below the origin and the direction in which the element will expand.\n if (position.overlayY === 'bottom') {\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n const documentHeight = this._document.documentElement.clientHeight;\n styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n }\n else {\n styles.top = coerceCssPixelValue(overlayPoint.y);\n }\n return styles;\n }\n /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayX(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n let styles = { left: '', right: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n let horizontalStyleProperty;\n if (this._isRtl()) {\n horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n }\n else {\n horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n if (horizontalStyleProperty === 'right') {\n const documentWidth = this._document.documentElement.clientWidth;\n styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n }\n else {\n styles.left = coerceCssPixelValue(overlayPoint.x);\n }\n return styles;\n }\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n */\n _getScrollVisibility() {\n // Note: needs fresh rects since the position could've changed.\n const originBounds = this._getOriginRect();\n const overlayBounds = this._pane.getBoundingClientRect();\n // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n // every time, we should be able to use the scrollTop of the containers if the size of those\n // containers hasn't changed.\n const scrollContainerBounds = this._scrollables.map(scrollable => {\n return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n };\n }\n /** Subtracts the amount that an element is overflowing on an axis from its length. */\n _subtractOverflows(length, ...overflows) {\n return overflows.reduce((currentValue, currentOverflow) => {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n }\n /** Narrows the given viewport rect by the current _viewportMargin. */\n _getNarrowedViewportRect() {\n // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n // and `innerHeight` that do. This is necessary, because the overlay container uses\n // 100% `width` and `height` which don't include the scrollbar either.\n const width = this._document.documentElement.clientWidth;\n const height = this._document.documentElement.clientHeight;\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n return {\n top: scrollPosition.top + this._viewportMargin,\n left: scrollPosition.left + this._viewportMargin,\n right: scrollPosition.left + width - this._viewportMargin,\n bottom: scrollPosition.top + height - this._viewportMargin,\n width: width - 2 * this._viewportMargin,\n height: height - 2 * this._viewportMargin,\n };\n }\n /** Whether the we're dealing with an RTL context */\n _isRtl() {\n return this._overlayRef.getDirection() === 'rtl';\n }\n /** Determines whether the overlay uses exact or flexible positioning. */\n _hasExactPosition() {\n return !this._hasFlexibleDimensions || this._isPushed;\n }\n /** Retrieves the offset of a position along the x or y axis. */\n _getOffset(position, axis) {\n if (axis === 'x') {\n // We don't do something like `position['offset' + axis]` in\n // order to avoid breaking minifiers that rename properties.\n return position.offsetX == null ? this._offsetX : position.offsetX;\n }\n return position.offsetY == null ? this._offsetY : position.offsetY;\n }\n /** Validates that the current position match the expected values. */\n _validatePositions() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._preferredPositions.length) {\n throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n }\n // TODO(crisbeto): remove these once Angular's template type\n // checking is advanced enough to catch these cases.\n this._preferredPositions.forEach(pair => {\n validateHorizontalPosition('originX', pair.originX);\n validateVerticalPosition('originY', pair.originY);\n validateHorizontalPosition('overlayX', pair.overlayX);\n validateVerticalPosition('overlayY', pair.overlayY);\n });\n }\n }\n /** Adds a single CSS class or an array of classes on the overlay panel. */\n _addPanelClasses(cssClasses) {\n if (this._pane) {\n coerceArray(cssClasses).forEach(cssClass => {\n if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n this._appliedPanelClasses.push(cssClass);\n this._pane.classList.add(cssClass);\n }\n });\n }\n }\n /** Clears the classes that the position strategy has applied from the overlay panel. */\n _clearPanelClasses() {\n if (this._pane) {\n this._appliedPanelClasses.forEach(cssClass => {\n this._pane.classList.remove(cssClass);\n });\n this._appliedPanelClasses = [];\n }\n }\n /** Returns the DOMRect of the current origin. */\n _getOriginRect() {\n const origin = this._origin;\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width,\n };\n }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n if (typeof input !== 'number' && input != null) {\n const [value, units] = input.split(cssUnitPattern);\n return !units || units === 'px' ? parseFloat(value) : null;\n }\n return input || null;\n}\n/**\n * Gets a version of an element's bounding `DOMRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `DOMRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n return {\n top: Math.floor(clientRect.top),\n right: Math.floor(clientRect.right),\n bottom: Math.floor(clientRect.bottom),\n left: Math.floor(clientRect.left),\n width: Math.floor(clientRect.width),\n height: Math.floor(clientRect.height),\n };\n}\n/** Returns whether two `ScrollingVisibility` objects are identical. */\nfunction compareScrollVisibility(a, b) {\n if (a === b) {\n return true;\n }\n return (a.isOriginClipped === b.isOriginClipped &&\n a.isOriginOutsideView === b.isOriginOutsideView &&\n a.isOverlayClipped === b.isOverlayClipped &&\n a.isOverlayOutsideView === b.isOverlayOutsideView);\n}\nconst STANDARD_DROPDOWN_BELOW_POSITIONS = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\n];\nconst STANDARD_DROPDOWN_ADJACENT_POSITIONS = [\n { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\n { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' },\n { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' },\n { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' },\n];\n\n/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n constructor() {\n this._cssPosition = 'static';\n this._topOffset = '';\n this._bottomOffset = '';\n this._alignItems = '';\n this._xPosition = '';\n this._xOffset = '';\n this._width = '';\n this._height = '';\n this._isDisposed = false;\n }\n attach(overlayRef) {\n const config = overlayRef.getConfig();\n this._overlayRef = overlayRef;\n if (this._width && !config.width) {\n overlayRef.updateSize({ width: this._width });\n }\n if (this._height && !config.height) {\n overlayRef.updateSize({ height: this._height });\n }\n overlayRef.hostElement.classList.add(wrapperClass);\n this._isDisposed = false;\n }\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param value New top offset.\n */\n top(value = '') {\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n }\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param value New left offset.\n */\n left(value = '') {\n this._xOffset = value;\n this._xPosition = 'left';\n return this;\n }\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param value New bottom offset.\n */\n bottom(value = '') {\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n }\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param value New right offset.\n */\n right(value = '') {\n this._xOffset = value;\n this._xPosition = 'right';\n return this;\n }\n /**\n * Sets the overlay to the start of the viewport, depending on the overlay direction.\n * This will be to the left in LTR layouts and to the right in RTL.\n * @param offset Offset from the edge of the screen.\n */\n start(value = '') {\n this._xOffset = value;\n this._xPosition = 'start';\n return this;\n }\n /**\n * Sets the overlay to the end of the viewport, depending on the overlay direction.\n * This will be to the right in LTR layouts and to the left in RTL.\n * @param offset Offset from the edge of the screen.\n */\n end(value = '') {\n this._xOffset = value;\n this._xPosition = 'end';\n return this;\n }\n /**\n * Sets the overlay width and clears any previously set width.\n * @param value New width for the overlay\n * @deprecated Pass the `width` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n width(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ width: value });\n }\n else {\n this._width = value;\n }\n return this;\n }\n /**\n * Sets the overlay height and clears any previously set height.\n * @param value New height for the overlay\n * @deprecated Pass the `height` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n height(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ height: value });\n }\n else {\n this._height = value;\n }\n return this;\n }\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param offset Overlay offset from the horizontal center.\n */\n centerHorizontally(offset = '') {\n this.left(offset);\n this._xPosition = 'center';\n return this;\n }\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param offset Overlay offset from the vertical center.\n */\n centerVertically(offset = '') {\n this.top(offset);\n this._alignItems = 'center';\n return this;\n }\n /**\n * Apply the position to the element.\n * @docs-private\n */\n apply() {\n // Since the overlay ref applies the strategy asynchronously, it could\n // have been disposed before it ends up being applied. If that is the\n // case, we shouldn't do anything.\n if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parentStyles = this._overlayRef.hostElement.style;\n const config = this._overlayRef.getConfig();\n const { width, height, maxWidth, maxHeight } = config;\n const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') &&\n (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n const shouldBeFlushVertically = (height === '100%' || height === '100vh') &&\n (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n const xPosition = this._xPosition;\n const xOffset = this._xOffset;\n const isRtl = this._overlayRef.getConfig().direction === 'rtl';\n let marginLeft = '';\n let marginRight = '';\n let justifyContent = '';\n if (shouldBeFlushHorizontally) {\n justifyContent = 'flex-start';\n }\n else if (xPosition === 'center') {\n justifyContent = 'center';\n if (isRtl) {\n marginRight = xOffset;\n }\n else {\n marginLeft = xOffset;\n }\n }\n else if (isRtl) {\n if (xPosition === 'left' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginLeft = xOffset;\n }\n else if (xPosition === 'right' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginRight = xOffset;\n }\n }\n else if (xPosition === 'left' || xPosition === 'start') {\n justifyContent = 'flex-start';\n marginLeft = xOffset;\n }\n else if (xPosition === 'right' || xPosition === 'end') {\n justifyContent = 'flex-end';\n marginRight = xOffset;\n }\n styles.position = this._cssPosition;\n styles.marginLeft = shouldBeFlushHorizontally ? '0' : marginLeft;\n styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = shouldBeFlushHorizontally ? '0' : marginRight;\n parentStyles.justifyContent = justifyContent;\n parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n }\n /**\n * Cleans up the DOM changes from the position strategy.\n * @docs-private\n */\n dispose() {\n if (this._isDisposed || !this._overlayRef) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parent = this._overlayRef.hostElement;\n const parentStyles = parent.style;\n parent.classList.remove(wrapperClass);\n parentStyles.justifyContent =\n parentStyles.alignItems =\n styles.marginTop =\n styles.marginBottom =\n styles.marginLeft =\n styles.marginRight =\n styles.position =\n '';\n this._overlayRef = null;\n this._isDisposed = true;\n }\n}\n\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n }\n /**\n * Creates a global position strategy.\n */\n global() {\n return new GlobalPositionStrategy();\n }\n /**\n * Creates a flexible position strategy.\n * @param origin Origin relative to which to position the overlay.\n */\n flexibleConnectedTo(origin) {\n return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayPositionBuilder, deps: [{ token: i1.ViewportRuler }, { token: DOCUMENT }, { token: i1$1.Platform }, { token: OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayPositionBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.ViewportRuler }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: OverlayContainer }] });\n\n/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor(\n /** Scrolling strategies that can be used when creating an overlay. */\n scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher, _animationsModuleType) {\n this.scrollStrategies = scrollStrategies;\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._positionBuilder = _positionBuilder;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._injector = _injector;\n this._ngZone = _ngZone;\n this._document = _document;\n this._directionality = _directionality;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._animationsModuleType = _animationsModuleType;\n }\n /**\n * Creates an overlay.\n * @param config Configuration applied to the overlay.\n * @returns Reference to the created overlay.\n */\n create(config) {\n const host = this._createHostElement();\n const pane = this._createPaneElement(host);\n const portalOutlet = this._createPortalOutlet(pane);\n const overlayConfig = new OverlayConfig(config);\n overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher, this._animationsModuleType === 'NoopAnimations', this._injector.get(EnvironmentInjector));\n }\n /**\n * Gets a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @returns An overlay position builder.\n */\n position() {\n return this._positionBuilder;\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(host) {\n const pane = this._document.createElement('div');\n pane.id = `cdk-overlay-${nextUniqueId++}`;\n pane.classList.add('cdk-overlay-pane');\n host.appendChild(pane);\n return pane;\n }\n /**\n * Creates the host element that wraps around an overlay\n * and can be used for advanced positioning.\n * @returns Newly-create host element.\n */\n _createHostElement() {\n const host = this._document.createElement('div');\n this._overlayContainer.getContainerElement().appendChild(host);\n return host;\n }\n /**\n * Create a DomPortalOutlet into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal outlet.\n * @returns A portal outlet for the given DOM element.\n */\n _createPortalOutlet(pane) {\n // We have to resolve the ApplicationRef later in order to allow people\n // to use overlay-based providers during app initialization.\n if (!this._appRef) {\n this._appRef = this._injector.get(ApplicationRef);\n }\n return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: Overlay, deps: [{ token: ScrollStrategyOptions }, { token: OverlayContainer }, { token: i0.ComponentFactoryResolver }, { token: OverlayPositionBuilder }, { token: OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i5.Directionality }, { token: i6.Location }, { token: OverlayOutsideClickDispatcher }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: Overlay, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: Overlay, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: ScrollStrategyOptions }, { type: OverlayContainer }, { type: i0.ComponentFactoryResolver }, { type: OverlayPositionBuilder }, { type: OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i5.Directionality }, { type: i6.Location }, { type: OverlayOutsideClickDispatcher }, { type: undefined, decorators: [{\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }, {\n type: Optional\n }] }] });\n\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n },\n});\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkOverlayOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkOverlayOrigin, isStandalone: true, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkOverlayOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }] });\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n /** The offset in pixels for the overlay connection point on the x-axis */\n get offsetX() {\n return this._offsetX;\n }\n set offsetX(offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The offset in pixels for the overlay connection point on the y-axis */\n get offsetY() {\n return this._offsetY;\n }\n set offsetY(offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** Whether the overlay should be disposed of when the user goes backwards/forwards in history. */\n get disposeOnNavigation() {\n return this._disposeOnNavigation;\n }\n set disposeOnNavigation(value) {\n this._disposeOnNavigation = value;\n }\n // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n this._overlay = _overlay;\n this._dir = _dir;\n this._backdropSubscription = Subscription.EMPTY;\n this._attachSubscription = Subscription.EMPTY;\n this._detachSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n this._disposeOnNavigation = false;\n this._ngZone = inject(NgZone);\n /** Margin between the overlay and the viewport edges. */\n this.viewportMargin = 0;\n /** Whether the overlay is open. */\n this.open = false;\n /** Whether the overlay can be closed by user interaction. */\n this.disableClose = false;\n /** Whether or not the overlay should attach a backdrop. */\n this.hasBackdrop = false;\n /** Whether or not the overlay should be locked when scrolling. */\n this.lockPosition = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this.flexibleDimensions = false;\n /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n this.growAfterOpen = false;\n /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n this.push = false;\n /** Event emitted when the backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Event emitted when the position has changed. */\n this.positionChange = new EventEmitter();\n /** Event emitted when the overlay has been attached. */\n this.attach = new EventEmitter();\n /** Event emitted when the overlay has been detached. */\n this.detach = new EventEmitter();\n /** Emits when there are keyboard events that are targeted at the overlay. */\n this.overlayKeydown = new EventEmitter();\n /** Emits when there are mouse outside click events that are targeted at the overlay. */\n this.overlayOutsideClick = new EventEmitter();\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n this._scrollStrategyFactory = scrollStrategyFactory;\n this.scrollStrategy = this._scrollStrategyFactory();\n }\n /** The associated overlay reference. */\n get overlayRef() {\n return this._overlayRef;\n }\n /** The element's layout direction. */\n get dir() {\n return this._dir ? this._dir.value : 'ltr';\n }\n ngOnDestroy() {\n this._attachSubscription.unsubscribe();\n this._detachSubscription.unsubscribe();\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n }\n ngOnChanges(changes) {\n if (this._position) {\n this._updatePositionStrategy(this._position);\n this._overlayRef.updateSize({\n width: this.width,\n minWidth: this.minWidth,\n height: this.height,\n minHeight: this.minHeight,\n });\n if (changes['origin'] && this.open) {\n this._position.apply();\n }\n }\n if (changes['open']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n }\n /** Creates an overlay */\n _createOverlay() {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));\n this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n overlayRef.keydownEvents().subscribe((event) => {\n this.overlayKeydown.next(event);\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this._detachOverlay();\n }\n });\n this._overlayRef.outsidePointerEvents().subscribe((event) => {\n const origin = this._getOriginElement();\n const target = _getEventTarget(event);\n if (!origin || (origin !== target && !origin.contains(target))) {\n this.overlayOutsideClick.next(event);\n }\n });\n }\n /** Builds the overlay config based on the directive's inputs */\n _buildConfig() {\n const positionStrategy = (this._position =\n this.positionStrategy || this._createPositionStrategy());\n const overlayConfig = new OverlayConfig({\n direction: this._dir,\n positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop,\n disposeOnNavigation: this.disposeOnNavigation,\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n if (this.panelClass) {\n overlayConfig.panelClass = this.panelClass;\n }\n return overlayConfig;\n }\n /** Updates the state of a position strategy, based on the values of the directive inputs. */\n _updatePositionStrategy(positionStrategy) {\n const positions = this.positions.map(currentPosition => ({\n originX: currentPosition.originX,\n originY: currentPosition.originY,\n overlayX: currentPosition.overlayX,\n overlayY: currentPosition.overlayY,\n offsetX: currentPosition.offsetX || this.offsetX,\n offsetY: currentPosition.offsetY || this.offsetY,\n panelClass: currentPosition.panelClass || undefined,\n }));\n return positionStrategy\n .setOrigin(this._getOrigin())\n .withPositions(positions)\n .withFlexibleDimensions(this.flexibleDimensions)\n .withPush(this.push)\n .withGrowAfterOpen(this.growAfterOpen)\n .withViewportMargin(this.viewportMargin)\n .withLockedPosition(this.lockPosition)\n .withTransformOriginOn(this.transformOriginSelector);\n }\n /** Returns the position strategy of the overlay to be set on the overlay config */\n _createPositionStrategy() {\n const strategy = this._overlay.position().flexibleConnectedTo(this._getOrigin());\n this._updatePositionStrategy(strategy);\n return strategy;\n }\n _getOrigin() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef;\n }\n else {\n return this.origin;\n }\n }\n _getOriginElement() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef.nativeElement;\n }\n if (this.origin instanceof ElementRef) {\n return this.origin.nativeElement;\n }\n if (typeof Element !== 'undefined' && this.origin instanceof Element) {\n return this.origin;\n }\n return null;\n }\n /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n _attachOverlay() {\n if (!this._overlayRef) {\n this._createOverlay();\n }\n else {\n // Update the overlay size, in case the directive's inputs have changed\n this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n }\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n this.backdropClick.emit(event);\n });\n }\n else {\n this._backdropSubscription.unsubscribe();\n }\n this._positionSubscription.unsubscribe();\n // Only subscribe to `positionChanges` if requested, because putting\n // together all the information for it can be expensive.\n if (this.positionChange.observers.length > 0) {\n this._positionSubscription = this._position.positionChanges\n .pipe(takeWhile(() => this.positionChange.observers.length > 0))\n .subscribe(position => {\n this._ngZone.run(() => this.positionChange.emit(position));\n if (this.positionChange.observers.length === 0) {\n this._positionSubscription.unsubscribe();\n }\n });\n }\n }\n /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n _detachOverlay() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkConnectedOverlay, deps: [{ token: Overlay }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY }, { token: i5.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkConnectedOverlay, isStandalone: true, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: { origin: [\"cdkConnectedOverlayOrigin\", \"origin\"], positions: [\"cdkConnectedOverlayPositions\", \"positions\"], positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"], offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"], offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"], width: [\"cdkConnectedOverlayWidth\", \"width\"], height: [\"cdkConnectedOverlayHeight\", \"height\"], minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"], minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"], backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"], panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"], viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"], scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"], open: [\"cdkConnectedOverlayOpen\", \"open\"], disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"], transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"], hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\", booleanAttribute], lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\", booleanAttribute], flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\", booleanAttribute], growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\", booleanAttribute], push: [\"cdkConnectedOverlayPush\", \"push\", booleanAttribute], disposeOnNavigation: [\"cdkConnectedOverlayDisposeOnNavigation\", \"disposeOnNavigation\", booleanAttribute] }, outputs: { backdropClick: \"backdropClick\", positionChange: \"positionChange\", attach: \"attach\", detach: \"detach\", overlayKeydown: \"overlayKeydown\", overlayOutsideClick: \"overlayOutsideClick\" }, exportAs: [\"cdkConnectedOverlay\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkConnectedOverlay, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: Overlay }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n }] }, { type: i5.Directionality, decorators: [{\n type: Optional\n }] }], propDecorators: { origin: [{\n type: Input,\n args: ['cdkConnectedOverlayOrigin']\n }], positions: [{\n type: Input,\n args: ['cdkConnectedOverlayPositions']\n }], positionStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayPositionStrategy']\n }], offsetX: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetX']\n }], offsetY: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetY']\n }], width: [{\n type: Input,\n args: ['cdkConnectedOverlayWidth']\n }], height: [{\n type: Input,\n args: ['cdkConnectedOverlayHeight']\n }], minWidth: [{\n type: Input,\n args: ['cdkConnectedOverlayMinWidth']\n }], minHeight: [{\n type: Input,\n args: ['cdkConnectedOverlayMinHeight']\n }], backdropClass: [{\n type: Input,\n args: ['cdkConnectedOverlayBackdropClass']\n }], panelClass: [{\n type: Input,\n args: ['cdkConnectedOverlayPanelClass']\n }], viewportMargin: [{\n type: Input,\n args: ['cdkConnectedOverlayViewportMargin']\n }], scrollStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayScrollStrategy']\n }], open: [{\n type: Input,\n args: ['cdkConnectedOverlayOpen']\n }], disableClose: [{\n type: Input,\n args: ['cdkConnectedOverlayDisableClose']\n }], transformOriginSelector: [{\n type: Input,\n args: ['cdkConnectedOverlayTransformOriginOn']\n }], hasBackdrop: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayHasBackdrop', transform: booleanAttribute }]\n }], lockPosition: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayLockPosition', transform: booleanAttribute }]\n }], flexibleDimensions: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayFlexibleDimensions', transform: booleanAttribute }]\n }], growAfterOpen: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayGrowAfterOpen', transform: booleanAttribute }]\n }], push: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayPush', transform: booleanAttribute }]\n }], disposeOnNavigation: [{\n type: Input,\n args: [{ alias: 'cdkConnectedOverlayDisposeOnNavigation', transform: booleanAttribute }]\n }], backdropClick: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], attach: [{\n type: Output\n }], detach: [{\n type: Output\n }], overlayKeydown: [{\n type: Output\n }], overlayOutsideClick: [{\n type: Output\n }] } });\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\nclass OverlayModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayModule, imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [BidiModule, PortalModule, ScrollingModule, ScrollingModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: OverlayModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n }]\n }] });\n\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n constructor(_document, platform) {\n super(_document, platform);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._fullScreenEventName && this._fullScreenListener) {\n this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n }\n }\n _createContainer() {\n super._createContainer();\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n }\n _adjustParentForFullscreenChange() {\n if (!this._containerElement) {\n return;\n }\n const fullscreenElement = this.getFullscreenElement();\n const parent = fullscreenElement || this._document.body;\n parent.appendChild(this._containerElement);\n }\n _addFullscreenChangeListener(fn) {\n const eventName = this._getEventName();\n if (eventName) {\n if (this._fullScreenListener) {\n this._document.removeEventListener(eventName, this._fullScreenListener);\n }\n this._document.addEventListener(eventName, fn);\n this._fullScreenListener = fn;\n }\n }\n _getEventName() {\n if (!this._fullScreenEventName) {\n const _document = this._document;\n if (_document.fullscreenEnabled) {\n this._fullScreenEventName = 'fullscreenchange';\n }\n else if (_document.webkitFullscreenEnabled) {\n this._fullScreenEventName = 'webkitfullscreenchange';\n }\n else if (_document.mozFullScreenEnabled) {\n this._fullScreenEventName = 'mozfullscreenchange';\n }\n else if (_document.msFullscreenEnabled) {\n this._fullScreenEventName = 'MSFullscreenChange';\n }\n }\n return this._fullScreenEventName;\n }\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n */\n getFullscreenElement() {\n const _document = this._document;\n return (_document.fullscreenElement ||\n _document.webkitFullscreenElement ||\n _document.mozFullScreenElement ||\n _document.msFullscreenElement ||\n null);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FullscreenOverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n","import * as i0 from '@angular/core';\nimport { ElementRef, Injector, Directive, EventEmitter, Inject, Input, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n constructor(component, viewContainerRef, injector, componentFactoryResolver, projectableNodes) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n this.projectableNodes = projectableNodes;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n constructor(\n /** The embedded template that will be used to instantiate an embedded View in the host. */\n templateRef, \n /** Reference to the ViewContainer into which the template will be stamped out. */\n viewContainerRef, \n /** Contextual data to be passed in to the embedded view. */\n context, \n /** The injector to use for the embedded view. */\n injector) {\n super();\n this.templateRef = templateRef;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n this.injector = injector;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n constructor() {\n /** Whether this host has already been permanently disposed. */\n this._isDisposed = false;\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n this.attachDomPortal = null;\n }\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n }\n else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\n}\n\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n /**\n * @param outletElement Element into which the content is projected.\n * @param _componentFactoryResolver Used to resolve the component factory.\n * Only required when attaching component portals.\n * @param _appRef Reference to the application. Only used in component portals when there\n * is no `ViewContainerRef` available.\n * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't\n * have one. Only used for component portals.\n * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually\n * become a required parameter.\n */\n constructor(\n /** Element into which the content is projected. */\n outletElement, _componentFactoryResolver, _appRef, _defaultInjector, \n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 10.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n const resolver = (portal.componentFactoryResolver || this._componentFactoryResolver);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !resolver) {\n throw Error('Cannot attach component portal to outlet without a ComponentFactoryResolver.');\n }\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector, portal.projectableNodes || undefined);\n this.setDisposeFn(() => componentRef.destroy());\n }\n else {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {\n throw Error('Cannot attach component portal to outlet without an ApplicationRef.');\n }\n componentRef = componentFactory.create(portal.injector || this._defaultInjector || Injector.NULL);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n // Verify that the ApplicationRef has registered views before trying to detach a host view.\n // This check also protects the `detachView` from being called on a destroyed ApplicationRef.\n if (this._appRef.viewCount > 0) {\n this._appRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector,\n });\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn(() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n });\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n this.outletElement.remove();\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\n}\n\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkPortal, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkPortal, isStandalone: true, selector: \"[cdkPortal]\", exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkPortal, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }] });\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: TemplatePortalDirective, isStandalone: true, selector: \"[cdk-portal], [portal]\", providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ], exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: TemplatePortalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ],\n standalone: true,\n }]\n }] });\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * `<ng-template [cdkPortalOutlet]=\"greeting\"></ng-template>`\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n constructor(_componentFactoryResolver, _viewContainerRef, \n /**\n * @deprecated `_document` parameter to be made required.\n * @breaking-change 9.0.0\n */\n _document) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /** Whether the portal component is initialized. */\n this._isInitialized = false;\n /** Emits when a portal is attached to the outlet. */\n this.attached = new EventEmitter();\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 9.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `<div cdkPortalOutlet>`\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal || null;\n }\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedRef = this._attachedPortal = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector, portal.projectableNodes || undefined);\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context, {\n injector: portal.injector,\n });\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return (nativeElement.nodeType === nativeElement.ELEMENT_NODE\n ? nativeElement\n : nativeElement.parentNode);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkPortalOutlet, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkPortalOutlet, isStandalone: true, selector: \"[cdkPortalOutlet]\", inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkPortalOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }], propDecorators: { portal: [{\n type: Input,\n args: ['cdkPortalOutlet']\n }], attached: [{\n type: Output\n }] } });\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: PortalHostDirective, isStandalone: true, selector: \"[cdkPortalHost], [portalHost]\", inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ], exportAs: [\"cdkPortalHost\"], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: PortalHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: [{ name: 'portal', alias: 'cdkPortalHost' }],\n providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ],\n standalone: true,\n }]\n }] });\nclass PortalModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: PortalModule, imports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: PortalModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: PortalModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n }]\n }] });\n\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n","import { coerceNumberProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, inject, Injector, afterNextRender, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, ElementRef, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, RtlScrollAxisType, supportsScrollBehavior, Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n\n/** The injection token used to specify the virtual scrolling strategy. */\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n this._viewport = null;\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n /* no-op */\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n /* no-op */\n }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = { start: renderedRange.start, end: renderedRange.end };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n }\n else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n constructor() {\n this._itemSize = 20;\n this._minBufferPx = 100;\n this._maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n /** The size of the items in the list (in pixels). */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(value) {\n this._itemSize = coerceNumberProperty(value);\n }\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() {\n return this._minBufferPx;\n }\n set minBufferPx(value) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() {\n return this._maxBufferPx;\n }\n set maxBufferPx(value) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkFixedSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkFixedSizeVirtualScroll, isStandalone: true, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkFixedSizeVirtualScroll, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n standalone: true,\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ],\n }]\n }], propDecorators: { itemSize: [{\n type: Input\n }], minBufferPx: [{\n type: Input\n }], maxBufferPx: [{\n type: Input\n }] } });\n\n/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n constructor(_ngZone, _platform, document) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n this._scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n this._globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollContainers = new Map();\n this._document = document;\n }\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * De-registers a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable((observer) => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0\n ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)\n : this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while ((element = element.parentElement));\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ScrollDispatcher, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ScrollDispatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ScrollDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n this.dir = dir;\n this._destroyed = new Subject();\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll')\n .pipe(takeUntil(this._destroyed))\n .subscribe(observer)));\n }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top =\n el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != RtlScrollAxisType.NORMAL) {\n if (options.left != null) {\n options.right =\n el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {\n options.left = options.right;\n }\n else if (getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {\n options.left = options.right ? -options.right : options.right;\n }\n }\n else {\n if (options.right != null) {\n options.left =\n el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n }\n else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n else {\n return el.scrollLeft;\n }\n }\n else if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n }\n else {\n return -el.scrollLeft;\n }\n }\n else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n }\n else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkScrollable, isStandalone: true, selector: \"[cdk-scrollable], [cdkScrollable]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkScrollable, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }] });\n\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n constructor(_platform, ngZone, document) {\n this._platform = _platform;\n /** Stream of viewport change events. */\n this._change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n this._changeListener = (event) => {\n this._change.next(event);\n };\n this._document = document;\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => (this._viewportSize = null));\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a DOMRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const { width, height } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return { top: 0, left: 0 };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top ||\n document.body.scrollTop ||\n window.scrollY ||\n documentElement.scrollTop ||\n 0;\n const left = -documentRect.left ||\n document.body.scrollLeft ||\n window.scrollX ||\n documentElement.scrollLeft ||\n 0;\n return { top, left };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser\n ? { width: window.innerWidth, height: window.innerHeight }\n : { width: 0, height: 0 };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ViewportRuler, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ViewportRuler, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ViewportRuler, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\nconst VIRTUAL_SCROLLABLE = new InjectionToken('VIRTUAL_SCROLLABLE');\n/**\n * Extending the {@link CdkScrollable} to be used as scrolling container for virtual scrolling.\n */\nclass CdkVirtualScrollable extends CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n /**\n * Measure the viewport size for the provided orientation.\n *\n * @param orientation The orientation to measure the size from.\n */\n measureViewportSize(orientation) {\n const viewportEl = this.elementRef.nativeElement;\n return orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkVirtualScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkVirtualScrollable, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkVirtualScrollable, decorators: [{\n type: Directive\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }] });\n\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkVirtualScrollable {\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler, scrollable) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n this.scrollable = scrollable;\n this._platform = inject(Platform);\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n this._detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n this._renderedRangeSubject = new Subject();\n this._orientation = 'vertical';\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n this.appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n this.scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** A stream that emits whenever the rendered range changes. */\n this.renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n this._totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n this._totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n this._totalContentHeight = '';\n /** The currently rendered range of indices. */\n this._renderedRange = { start: 0, end: 0 };\n /** The length of the data bound to this viewport (in number of items). */\n this._dataLength = 0;\n /** The size of the viewport (in pixels). */\n this._viewportSize = 0;\n /** The last rendered content offset that was set. */\n this._renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n this._renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n this._isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n this._runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n this._viewportChanges = Subscription.EMPTY;\n this._injector = inject(Injector);\n this._isDestroyed = false;\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n if (!this.scrollable) {\n // No scrollable is provided, so the virtual-scroll-viewport needs to become a scrollable\n this.elementRef.nativeElement.classList.add('cdk-virtual-scrollable');\n this.scrollable = this;\n }\n }\n ngOnInit() {\n // Scrolling depends on the element dimensions which we can't get during SSR.\n if (!this._platform.isBrowser) {\n return;\n }\n if (this.scrollable === this) {\n super.ngOnInit();\n }\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.scrollable\n .elementScrolled()\n .pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null), \n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER), \n // Usually `elementScrolled` is completed when the scrollable is destroyed, but\n // that may not be the case if a `CdkVirtualScrollableElement` is used so we have\n // to unsubscribe here just in case.\n takeUntil(this._destroyed))\n .subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n this._isDestroyed = true;\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n }\n this._renderedRangeSubject.next((this._renderedRange = range));\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // In appendOnly, we always start from the top\n offset = this.appendOnly && to === 'to-start' ? 0 : offset;\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n }\n else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = { behavior };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n }\n else {\n options.top = offset;\n }\n this.scrollable.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the scrollable (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n // This is to break the call cycle\n let measureScrollOffset;\n if (this.scrollable == this) {\n measureScrollOffset = (_from) => super.measureScrollOffset(_from);\n }\n else {\n measureScrollOffset = (_from) => this.scrollable.measureScrollOffset(_from);\n }\n return Math.max(0, measureScrollOffset(from ?? (this.orientation === 'horizontal' ? 'start' : 'top')) -\n this.measureViewportOffset());\n }\n /**\n * Measures the offset of the viewport from the scrolling container\n * @param from The edge to measure from.\n */\n measureViewportOffset(from) {\n let fromRect;\n const LEFT = 'left';\n const RIGHT = 'right';\n const isRtl = this.dir?.value == 'rtl';\n if (from == 'start') {\n fromRect = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n fromRect = isRtl ? LEFT : RIGHT;\n }\n else if (from) {\n fromRect = from;\n }\n else {\n fromRect = this.orientation === 'horizontal' ? 'left' : 'top';\n }\n const scrollerClientRect = this.scrollable.measureBoundingClientRectWithScrollOffset(fromRect);\n const viewportClientRect = this.elementRef.nativeElement.getBoundingClientRect()[fromRect];\n return viewportClientRect - scrollerClientRect;\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n this._viewportSize = this.scrollable.measureViewportSize(this.orientation);\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n if (this._isDestroyed) {\n return;\n }\n this.ngZone.run(() => {\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this._changeDetectorRef.markForCheck();\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n afterNextRender(() => {\n this._isChangeDetectionPending = false;\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }, { injector: this._injector });\n });\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight =\n this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth =\n this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkVirtualScrollViewport, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: VIRTUAL_SCROLL_STRATEGY, optional: true }, { token: i2.Directionality, optional: true }, { token: ScrollDispatcher }, { token: ViewportRuler }, { token: VIRTUAL_SCROLLABLE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkVirtualScrollViewport, isStandalone: true, selector: \"cdk-virtual-scroll-viewport\", inputs: { orientation: \"orientation\", appendOnly: [\"appendOnly\", \"appendOnly\", booleanAttribute] }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, host: { properties: { \"class.cdk-virtual-scroll-orientation-horizontal\": \"orientation === \\\"horizontal\\\"\", \"class.cdk-virtual-scroll-orientation-vertical\": \"orientation !== \\\"horizontal\\\"\" }, classAttribute: \"cdk-virtual-scroll-viewport\" }, providers: [\n {\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport],\n },\n ], viewQueries: [{ propertyName: \"_contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<!--\\n Wrap the rendered content in an element that will be used to offset it based on the scroll\\n position.\\n-->\\n<div #contentWrapper class=\\\"cdk-virtual-scroll-content-wrapper\\\">\\n <ng-content></ng-content>\\n</div>\\n<!--\\n Spacer used to force the scrolling container to the correct size for the *total* number of items\\n so that the scrollbar captures the size of the entire data set.\\n-->\\n<div class=\\\"cdk-virtual-scroll-spacer\\\"\\n [style.width]=\\\"_totalContentWidth\\\" [style.height]=\\\"_totalContentHeight\\\"></div>\\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkVirtualScrollViewport, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-virtual-scroll-viewport', host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, providers: [\n {\n provide: CdkScrollable,\n useFactory: (virtualScrollable, viewport) => virtualScrollable || viewport,\n deps: [[new Optional(), new Inject(VIRTUAL_SCROLLABLE)], CdkVirtualScrollViewport],\n },\n ], template: \"<!--\\n Wrap the rendered content in an element that will be used to offset it based on the scroll\\n position.\\n-->\\n<div #contentWrapper class=\\\"cdk-virtual-scroll-content-wrapper\\\">\\n <ng-content></ng-content>\\n</div>\\n<!--\\n Spacer used to force the scrolling container to the correct size for the *total* number of items\\n so that the scrollbar captures the size of the entire data set.\\n-->\\n<div class=\\\"cdk-virtual-scroll-spacer\\\"\\n [style.width]=\\\"_totalContentWidth\\\" [style.height]=\\\"_totalContentHeight\\\"></div>\\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLL_STRATEGY]\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: ScrollDispatcher }, { type: ViewportRuler }, { type: CdkVirtualScrollable, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLLABLE]\n }] }], propDecorators: { orientation: [{\n type: Input\n }], appendOnly: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], scrolledIndexChange: [{\n type: Output\n }], _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: true }]\n }] } });\n\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n }\n else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn\n ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)\n : undefined;\n }\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n constructor(\n /** The view container to add items to. */\n _viewContainerRef, \n /** The template to use when stamping out new items. */\n _template, \n /** The set of available differs. */\n _differs, \n /** The strategy used to render items in the virtual scroll viewport. */\n _viewRepeater, \n /** The virtual scrolling viewport that these items are being rendered in. */\n _viewport, ngZone) {\n this._viewContainerRef = _viewContainerRef;\n this._template = _template;\n this._differs = _differs;\n this._viewRepeater = _viewRepeater;\n this._viewport = _viewport;\n /** Emits when the rendered view of the data changes. */\n this.viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n this._dataSourceChanges = new Subject();\n /** Emits whenever the data in the current DataSource changes. */\n this.dataStream = this._dataSourceChanges.pipe(\n // Start off with null `DataSource`.\n startWith(null), \n // Bundle up the previous and current data sources so we can work with both.\n pairwise(), \n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n this._differ = null;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n this._needsUpdate = false;\n this._destroyed = new Subject();\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n if (this.viewChange.observers.length) {\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n }\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode\n ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)\n : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n }\n else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange((record) => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false,\n },\n index,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkVirtualForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: _VIEW_REPEATER_STRATEGY }, { token: CdkVirtualScrollViewport, skipSelf: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkVirtualForOf, isStandalone: true, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkVirtualForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: i2$1._RecycleViewRepeaterStrategy, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: CdkVirtualScrollViewport, decorators: [{\n type: SkipSelf\n }] }, { type: i0.NgZone }], propDecorators: { cdkVirtualForOf: [{\n type: Input\n }], cdkVirtualForTrackBy: [{\n type: Input\n }], cdkVirtualForTemplate: [{\n type: Input\n }], cdkVirtualForTemplateCacheSize: [{\n type: Input\n }] } });\n\n/**\n * Provides a virtual scrollable for the element it is attached to.\n */\nclass CdkVirtualScrollableElement extends CdkVirtualScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return (this.getElementRef().nativeElement.getBoundingClientRect()[from] -\n this.measureScrollOffset(from));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkVirtualScrollableElement, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkVirtualScrollableElement, isStandalone: true, selector: \"[cdkVirtualScrollingElement]\", host: { classAttribute: \"cdk-virtual-scrollable\" }, providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkVirtualScrollableElement, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualScrollingElement]',\n providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableElement }],\n standalone: true,\n host: {\n 'class': 'cdk-virtual-scrollable',\n },\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }] });\n\n/**\n * Provides as virtual scrollable for the global / window scrollbar.\n */\nclass CdkVirtualScrollableWindow extends CdkVirtualScrollable {\n constructor(scrollDispatcher, ngZone, dir) {\n super(new ElementRef(document.documentElement), scrollDispatcher, ngZone, dir);\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(document, 'scroll').pipe(takeUntil(this._destroyed)).subscribe(observer)));\n }\n measureBoundingClientRectWithScrollOffset(from) {\n return this.getElementRef().nativeElement.getBoundingClientRect()[from];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkVirtualScrollableWindow, deps: [{ token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkVirtualScrollableWindow, isStandalone: true, selector: \"cdk-virtual-scroll-viewport[scrollWindow]\", providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkVirtualScrollableWindow, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[scrollWindow]',\n providers: [{ provide: VIRTUAL_SCROLLABLE, useExisting: CdkVirtualScrollableWindow }],\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }] });\n\nclass CdkScrollableModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkScrollableModule, imports: [CdkScrollable], exports: [CdkScrollable] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkScrollableModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkScrollableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n imports: [CdkScrollable],\n }]\n }] });\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ScrollingModule, imports: [BidiModule, CdkScrollableModule, CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement], exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ScrollingModule, imports: [BidiModule,\n CdkScrollableModule, BidiModule, CdkScrollableModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ScrollingModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n BidiModule,\n CdkScrollableModule,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement,\n ],\n exports: [\n BidiModule,\n CdkScrollableModule,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n CdkVirtualScrollableWindow,\n CdkVirtualScrollableElement,\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, CdkVirtualScrollable, CdkVirtualScrollableElement, CdkVirtualScrollableWindow, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLLABLE, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n","import * as i0 from '@angular/core';\nimport { Version, InjectionToken, inject, NgModule, Optional, Inject, LOCALE_ID, Injectable, Directive, ANIMATION_MODULE_TYPE, Input, Component, ViewEncapsulation, ChangeDetectionStrategy, booleanAttribute, EventEmitter, Output, ViewChild, NgZone, ElementRef } from '@angular/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport { isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader } from '@angular/cdk/a11y';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { VERSION as VERSION$1 } from '@angular/cdk';\nimport { DOCUMENT } from '@angular/common';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { Platform, _isTestEnvironment, normalizePassiveListenerOptions, _getEventTarget } from '@angular/cdk/platform';\nimport { coerceBooleanProperty, coerceNumberProperty, coerceElement } from '@angular/cdk/coercion';\nimport { Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { ENTER, SPACE, hasModifierKey } from '@angular/cdk/keycodes';\n\n/** Current version of Angular Material. */\nconst VERSION = new Version('18.2.14');\n\n/** @docs-private */\nclass AnimationCurves {\n static { this.STANDARD_CURVE = 'cubic-bezier(0.4,0.0,0.2,1)'; }\n static { this.DECELERATION_CURVE = 'cubic-bezier(0.0,0.0,0.2,1)'; }\n static { this.ACCELERATION_CURVE = 'cubic-bezier(0.4,0.0,1,1)'; }\n static { this.SHARP_CURVE = 'cubic-bezier(0.4,0.0,0.6,1)'; }\n}\n/** @docs-private */\nclass AnimationDurations {\n static { this.COMPLEX = '375ms'; }\n static { this.ENTERING = '225ms'; }\n static { this.EXITING = '195ms'; }\n}\n\n/** @docs-private */\nfunction MATERIAL_SANITY_CHECKS_FACTORY() {\n return true;\n}\n/** Injection token that configures whether the Material sanity checks are enabled. */\nconst MATERIAL_SANITY_CHECKS = new InjectionToken('mat-sanity-checks', {\n providedIn: 'root',\n factory: MATERIAL_SANITY_CHECKS_FACTORY,\n});\n/**\n * Module that captures anything that should be loaded and/or run for *all* Angular Material\n * components. This includes Bidi, etc.\n *\n * This module should be imported to each top-level component module (e.g., MatTabsModule).\n */\nclass MatCommonModule {\n constructor(highContrastModeDetector, _sanityChecks, _document) {\n this._sanityChecks = _sanityChecks;\n this._document = _document;\n /** Whether we've done the global sanity checks (e.g. a theme is loaded, there is a doctype). */\n this._hasDoneGlobalChecks = false;\n // While A11yModule also does this, we repeat it here to avoid importing A11yModule\n // in MatCommonModule.\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n if (!this._hasDoneGlobalChecks) {\n this._hasDoneGlobalChecks = true;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Inject in here so the reference to `Platform` can be removed in production mode.\n const platform = inject(Platform, { optional: true });\n if (this._checkIsEnabled('doctype')) {\n _checkDoctypeIsDefined(this._document);\n }\n if (this._checkIsEnabled('theme')) {\n _checkThemeIsPresent(this._document, !!platform?.isBrowser);\n }\n if (this._checkIsEnabled('version')) {\n _checkCdkVersionMatch();\n }\n }\n }\n }\n /** Gets whether a specific sanity check is enabled. */\n _checkIsEnabled(name) {\n if (_isTestEnvironment()) {\n return false;\n }\n if (typeof this._sanityChecks === 'boolean') {\n return this._sanityChecks;\n }\n return !!this._sanityChecks[name];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCommonModule, deps: [{ token: i1.HighContrastModeDetector }, { token: MATERIAL_SANITY_CHECKS, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCommonModule, imports: [BidiModule], exports: [BidiModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCommonModule, imports: [BidiModule, BidiModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule],\n exports: [BidiModule],\n }]\n }], ctorParameters: () => [{ type: i1.HighContrastModeDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MATERIAL_SANITY_CHECKS]\n }] }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n/** Checks that the page has a doctype. */\nfunction _checkDoctypeIsDefined(doc) {\n if (!doc.doctype) {\n console.warn('Current document does not have a doctype. This may cause ' +\n 'some Angular Material components not to behave as expected.');\n }\n}\n/** Checks that a theme has been included. */\nfunction _checkThemeIsPresent(doc, isBrowser) {\n // We need to assert that the `body` is defined, because these checks run very early\n // and the `body` won't be defined if the consumer put their scripts in the `head`.\n if (!doc.body || !isBrowser) {\n return;\n }\n const testElement = doc.createElement('div');\n testElement.classList.add('mat-theme-loaded-marker');\n doc.body.appendChild(testElement);\n const computedStyle = getComputedStyle(testElement);\n // In some situations the computed style of the test element can be null. For example in\n // Firefox, the computed style is null if an application is running inside of a hidden iframe.\n // See: https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n if (computedStyle && computedStyle.display !== 'none') {\n console.warn('Could not find Angular Material core theme. Most Material ' +\n 'components may not work as expected. For more info refer ' +\n 'to the theming guide: https://material.angular.io/guide/theming');\n }\n testElement.remove();\n}\n/** Checks whether the Material version matches the CDK version. */\nfunction _checkCdkVersionMatch() {\n if (VERSION.full !== VERSION$1.full) {\n console.warn('The Angular Material version (' +\n VERSION.full +\n ') does not match ' +\n 'the Angular CDK version (' +\n VERSION$1.full +\n ').\\n' +\n 'Please ensure the versions of these two packages exactly match.');\n }\n}\n\nfunction mixinDisabled(base) {\n return class extends base {\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n constructor(...args) {\n super(...args);\n this._disabled = false;\n }\n };\n}\n\nfunction mixinColor(base, defaultColor) {\n return class extends base {\n get color() {\n return this._color;\n }\n set color(value) {\n const colorPalette = value || this.defaultColor;\n if (colorPalette !== this._color) {\n if (this._color) {\n this._elementRef.nativeElement.classList.remove(`mat-${this._color}`);\n }\n if (colorPalette) {\n this._elementRef.nativeElement.classList.add(`mat-${colorPalette}`);\n }\n this._color = colorPalette;\n }\n }\n constructor(...args) {\n super(...args);\n this.defaultColor = defaultColor;\n // Set the default color that can be specified from the mixin.\n this.color = defaultColor;\n }\n };\n}\n\nfunction mixinDisableRipple(base) {\n return class extends base {\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = coerceBooleanProperty(value);\n }\n constructor(...args) {\n super(...args);\n this._disableRipple = false;\n }\n };\n}\n\nfunction mixinTabIndex(base, defaultTabIndex = 0) {\n return class extends base {\n get tabIndex() {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? coerceNumberProperty(value) : this.defaultTabIndex;\n }\n constructor(...args) {\n super(...args);\n this._tabIndex = defaultTabIndex;\n this.defaultTabIndex = defaultTabIndex;\n }\n };\n}\n\n/**\n * Class that tracks the error state of a component.\n * @docs-private\n */\nclass _ErrorStateTracker {\n constructor(_defaultMatcher, ngControl, _parentFormGroup, _parentForm, _stateChanges) {\n this._defaultMatcher = _defaultMatcher;\n this.ngControl = ngControl;\n this._parentFormGroup = _parentFormGroup;\n this._parentForm = _parentForm;\n this._stateChanges = _stateChanges;\n /** Whether the tracker is currently in an error state. */\n this.errorState = false;\n }\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this.matcher || this._defaultMatcher;\n const control = this.ngControl ? this.ngControl.control : null;\n const newState = matcher?.isErrorState(control, parent) ?? false;\n if (newState !== oldState) {\n this.errorState = newState;\n this._stateChanges.next();\n }\n }\n}\nfunction mixinErrorState(base) {\n return class extends base {\n /** Whether the component is in an error state. */\n get errorState() {\n return this._getTracker().errorState;\n }\n set errorState(value) {\n this._getTracker().errorState = value;\n }\n /** An object used to control the error state of the component. */\n get errorStateMatcher() {\n return this._getTracker().matcher;\n }\n set errorStateMatcher(value) {\n this._getTracker().matcher = value;\n }\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n this._getTracker().updateErrorState();\n }\n _getTracker() {\n if (!this._tracker) {\n this._tracker = new _ErrorStateTracker(this._defaultErrorStateMatcher, this.ngControl, this._parentFormGroup, this._parentForm, this.stateChanges);\n }\n return this._tracker;\n }\n constructor(...args) {\n super(...args);\n }\n };\n}\n\n/**\n * Mixin to augment a directive with an initialized property that will emits when ngOnInit ends.\n * @deprecated Track the initialized state manually.\n * @breaking-change 19.0.0\n */\nfunction mixinInitialized(base) {\n return class extends base {\n constructor(...args) {\n super(...args);\n /** Whether this directive has been marked as initialized. */\n this._isInitialized = false;\n /**\n * List of subscribers that subscribed before the directive was initialized. Should be notified\n * during _markInitialized. Set to null after pending subscribers are notified, and should\n * not expect to be populated after.\n */\n this._pendingSubscribers = [];\n /**\n * Observable stream that emits when the directive initializes. If already initialized, the\n * subscriber is stored to be notified once _markInitialized is called.\n */\n this.initialized = new Observable(subscriber => {\n // If initialized, immediately notify the subscriber. Otherwise store the subscriber to notify\n // when _markInitialized is called.\n if (this._isInitialized) {\n this._notifySubscriber(subscriber);\n }\n else {\n this._pendingSubscribers.push(subscriber);\n }\n });\n }\n /**\n * Marks the state as initialized and notifies pending subscribers. Should be called at the end\n * of ngOnInit.\n * @docs-private\n */\n _markInitialized() {\n if (this._isInitialized && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This directive has already been marked as initialized and ' +\n 'should not be called twice.');\n }\n this._isInitialized = true;\n this._pendingSubscribers.forEach(this._notifySubscriber);\n this._pendingSubscribers = null;\n }\n /** Emits and completes the subscriber stream (should only emit once). */\n _notifySubscriber(subscriber) {\n subscriber.next();\n subscriber.complete();\n }\n };\n}\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nconst MAT_DATE_LOCALE = new InjectionToken('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: MAT_DATE_LOCALE_FACTORY,\n});\n/** @docs-private */\nfunction MAT_DATE_LOCALE_FACTORY() {\n return inject(LOCALE_ID);\n}\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nclass DateAdapter {\n constructor() {\n this._localeChanges = new Subject();\n /** A stream that emits when the locale changes. */\n this.localeChanges = this._localeChanges;\n }\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj) {\n return this.isDateInstance(obj) && this.isValid(obj) ? obj : null;\n }\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value) {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale) {\n this.locale = locale;\n this._localeChanges.next();\n }\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first, second) {\n return (this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second));\n }\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first, second) {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date, min, max) {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n\nconst MAT_DATE_FORMATS = new InjectionToken('mat-date-formats');\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings with an out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n/** Creates an array and fills it with values. */\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\nclass NativeDateAdapter extends DateAdapter {\n constructor(\n /**\n * @deprecated Now injected via inject(), param to be removed.\n * @breaking-change 18.0.0\n */\n matDateLocale) {\n super();\n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\n this.useUtcForDisplay = false;\n /** The injected locale. */\n this._matDateLocale = inject(MAT_DATE_LOCALE, { optional: true });\n if (matDateLocale !== undefined) {\n this._matDateLocale = matDateLocale;\n }\n super.setLocale(this._matDateLocale);\n }\n getYear(date) {\n return date.getFullYear();\n }\n getMonth(date) {\n return date.getMonth();\n }\n getDate(date) {\n return date.getDate();\n }\n getDayOfWeek(date) {\n return date.getDay();\n }\n getMonthNames(style) {\n const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n getDateNames() {\n const dtf = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n getDayOfWeekNames(style) {\n const dtf = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n getYearName(date) {\n const dtf = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\n return this._format(dtf, date);\n }\n getFirstDayOfWeek() {\n // At the time of writing `Intl.Locale` isn't available\n // in the internal types so we need to cast to `any`.\n if (typeof Intl !== 'undefined' && Intl.Locale) {\n const locale = new Intl.Locale(this.locale);\n // Some browsers implement a `getWeekInfo` method while others have a `weekInfo` getter.\n // Note that this isn't supported in all browsers so we need to null check it.\n const firstDay = (locale.getWeekInfo?.() || locale.weekInfo)?.firstDay ?? 0;\n // `weekInfo.firstDay` is a number between 1 and 7 where, starting from Monday,\n // whereas our representation is 0 to 6 where 0 is Sunday so we need to normalize it.\n return firstDay === 7 ? 0 : firstDay;\n }\n // Default to Sunday if the browser doesn't provide the week information.\n return 0;\n }\n getNumDaysInMonth(date) {\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n }\n clone(date) {\n return new Date(date.getTime());\n }\n createDate(year, month, date) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n today() {\n return new Date();\n }\n parse(value, parseFormat) {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n const dtf = new Intl.DateTimeFormat(this.locale, { ...displayFormat, timeZone: 'utc' });\n return this._format(dtf, date);\n }\n addCalendarYears(date, years) {\n return this.addCalendarMonths(date, years * 12);\n }\n addCalendarMonths(date, months) {\n let newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n return newDate;\n }\n addCalendarDays(date, days) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n }\n toIso8601(date) {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate()),\n ].join('-');\n }\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n deserialize(value) {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n isDateInstance(obj) {\n return obj instanceof Date;\n }\n isValid(date) {\n return !isNaN(date.getTime());\n }\n invalid() {\n return new Date(NaN);\n }\n /** Creates a date but allows the month and date to overflow. */\n _createDateWithOverflow(year, month, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n _2digit(n) {\n return ('00' + n).slice(-2);\n }\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n _format(dtf, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: NativeDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: NativeDateAdapter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: NativeDateAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_LOCALE]\n }] }] });\n\nconst MAT_NATIVE_DATE_FORMATS = {\n parse: {\n dateInput: null,\n },\n display: {\n dateInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\n },\n};\n\nclass NativeDateModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: NativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: NativeDateModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: NativeDateModule, providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: NativeDateModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [{ provide: DateAdapter, useClass: NativeDateAdapter }],\n }]\n }] });\nclass MatNativeDateModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatNativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatNativeDateModule }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatNativeDateModule, providers: [provideNativeDateAdapter()] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatNativeDateModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [provideNativeDateAdapter()],\n }]\n }] });\nfunction provideNativeDateAdapter(formats = MAT_NATIVE_DATE_FORMATS) {\n return [\n { provide: DateAdapter, useClass: NativeDateAdapter },\n { provide: MAT_DATE_FORMATS, useValue: formats },\n ];\n}\n\n/** Error state matcher that matches when a control is invalid and dirty. */\nclass ShowOnDirtyErrorStateMatcher {\n isErrorState(control, form) {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ShowOnDirtyErrorStateMatcher, decorators: [{\n type: Injectable\n }] });\n/** Provider that defines how form controls behave with regards to displaying error messages. */\nclass ErrorStateMatcher {\n isErrorState(control, form) {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ErrorStateMatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ErrorStateMatcher, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: ErrorStateMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * Shared directive to count lines inside a text area, such as a list item.\n * Line elements can be extracted with a @ContentChildren(MatLine) query, then\n * counted by checking the query list's length.\n */\nclass MatLine {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatLine, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatLine, isStandalone: true, selector: \"[mat-line], [matLine]\", host: { classAttribute: \"mat-line\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatLine, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-line], [matLine]',\n host: { 'class': 'mat-line' },\n standalone: true,\n }]\n }] });\n/**\n * Helper that takes a query list of lines and sets the correct class on the host.\n * @docs-private\n */\nfunction setLines(lines, element, prefix = 'mat') {\n // Note: doesn't need to unsubscribe, because `changes`\n // gets completed by Angular when the view is destroyed.\n lines.changes.pipe(startWith(lines)).subscribe(({ length }) => {\n setClass(element, `${prefix}-2-line`, false);\n setClass(element, `${prefix}-3-line`, false);\n setClass(element, `${prefix}-multi-line`, false);\n if (length === 2 || length === 3) {\n setClass(element, `${prefix}-${length}-line`, true);\n }\n else if (length > 3) {\n setClass(element, `${prefix}-multi-line`, true);\n }\n });\n}\n/** Adds or removes a class from an element. */\nfunction setClass(element, className, isAdd) {\n element.nativeElement.classList.toggle(className, isAdd);\n}\nclass MatLineModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatLineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatLineModule, imports: [MatCommonModule, MatLine], exports: [MatLine, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatLineModule, imports: [MatCommonModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatLineModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, MatLine],\n exports: [MatLine, MatCommonModule],\n }]\n }] });\n\n/** Possible states for a ripple element. */\nvar RippleState;\n(function (RippleState) {\n RippleState[RippleState[\"FADING_IN\"] = 0] = \"FADING_IN\";\n RippleState[RippleState[\"VISIBLE\"] = 1] = \"VISIBLE\";\n RippleState[RippleState[\"FADING_OUT\"] = 2] = \"FADING_OUT\";\n RippleState[RippleState[\"HIDDEN\"] = 3] = \"HIDDEN\";\n})(RippleState || (RippleState = {}));\n/**\n * Reference to a previously launched ripple element.\n */\nclass RippleRef {\n constructor(_renderer, \n /** Reference to the ripple HTML element. */\n element, \n /** Ripple configuration used for the ripple. */\n config, \n /* Whether animations are forcibly disabled for ripples through CSS. */\n _animationForciblyDisabledThroughCss = false) {\n this._renderer = _renderer;\n this.element = element;\n this.config = config;\n this._animationForciblyDisabledThroughCss = _animationForciblyDisabledThroughCss;\n /** Current state of the ripple. */\n this.state = RippleState.HIDDEN;\n }\n /** Fades out the ripple element. */\n fadeOut() {\n this._renderer.fadeOutRipple(this);\n }\n}\n\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions$1 = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Manages events through delegation so that as few event handlers as possible are bound. */\nclass RippleEventManager {\n constructor() {\n this._events = new Map();\n /** Event handler that is bound and which dispatches the events to the different targets. */\n this._delegateEventHandler = (event) => {\n const target = _getEventTarget(event);\n if (target) {\n this._events.get(event.type)?.forEach((handlers, element) => {\n if (element === target || element.contains(target)) {\n handlers.forEach(handler => handler.handleEvent(event));\n }\n });\n }\n };\n }\n /** Adds an event handler. */\n addHandler(ngZone, name, element, handler) {\n const handlersForEvent = this._events.get(name);\n if (handlersForEvent) {\n const handlersForElement = handlersForEvent.get(element);\n if (handlersForElement) {\n handlersForElement.add(handler);\n }\n else {\n handlersForEvent.set(element, new Set([handler]));\n }\n }\n else {\n this._events.set(name, new Map([[element, new Set([handler])]]));\n ngZone.runOutsideAngular(() => {\n document.addEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions$1);\n });\n }\n }\n /** Removes an event handler. */\n removeHandler(name, element, handler) {\n const handlersForEvent = this._events.get(name);\n if (!handlersForEvent) {\n return;\n }\n const handlersForElement = handlersForEvent.get(element);\n if (!handlersForElement) {\n return;\n }\n handlersForElement.delete(handler);\n if (handlersForElement.size === 0) {\n handlersForEvent.delete(element);\n }\n if (handlersForEvent.size === 0) {\n this._events.delete(name);\n document.removeEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions$1);\n }\n }\n}\n\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nconst defaultRippleAnimationConfig = {\n enterDuration: 225,\n exitDuration: 150,\n};\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n * The constructor takes a reference to the ripple directive's host element and a map of DOM\n * event handlers to be installed on the element that triggers ripple animations.\n * This will eventually become a custom renderer once Angular support exists.\n * @docs-private\n */\nclass RippleRenderer {\n static { this._eventManager = new RippleEventManager(); }\n constructor(_target, _ngZone, elementOrElementRef, _platform) {\n this._target = _target;\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Whether the pointer is currently down or not. */\n this._isPointerDown = false;\n /**\n * Map of currently active ripple references.\n * The ripple reference is mapped to its element event listeners.\n * The reason why `| null` is used is that event listeners are added only\n * when the condition is truthy (see the `_startFadeOutTransition` method).\n */\n this._activeRipples = new Map();\n /** Whether pointer-up event listeners have been registered. */\n this._pointerUpEventsRegistered = false;\n // Only do anything if we're on the browser.\n if (_platform.isBrowser) {\n this._containerElement = coerceElement(elementOrElementRef);\n }\n }\n /**\n * Fades in a ripple at the given coordinates.\n * @param x Coordinate within the element, along the X axis at which to start the ripple.\n * @param y Coordinate within the element, along the Y axis at which to start the ripple.\n * @param config Extra ripple options.\n */\n fadeInRipple(x, y, config = {}) {\n const containerRect = (this._containerRect =\n this._containerRect || this._containerElement.getBoundingClientRect());\n const animationConfig = { ...defaultRippleAnimationConfig, ...config.animation };\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\n const enterDuration = animationConfig.enterDuration;\n const ripple = document.createElement('div');\n ripple.classList.add('mat-ripple-element');\n ripple.style.left = `${offsetX - radius}px`;\n ripple.style.top = `${offsetY - radius}px`;\n ripple.style.height = `${radius * 2}px`;\n ripple.style.width = `${radius * 2}px`;\n // If a custom color has been specified, set it as inline style. If no color is\n // set, the default color will be applied through the ripple theme styles.\n if (config.color != null) {\n ripple.style.backgroundColor = config.color;\n }\n ripple.style.transitionDuration = `${enterDuration}ms`;\n this._containerElement.appendChild(ripple);\n // By default the browser does not recalculate the styles of dynamically created\n // ripple elements. This is critical to ensure that the `scale` animates properly.\n // We enforce a style recalculation by calling `getComputedStyle` and *accessing* a property.\n // See: https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n const computedStyles = window.getComputedStyle(ripple);\n const userTransitionProperty = computedStyles.transitionProperty;\n const userTransitionDuration = computedStyles.transitionDuration;\n // Note: We detect whether animation is forcibly disabled through CSS (e.g. through\n // `transition: none` or `display: none`). This is technically unexpected since animations are\n // controlled through the animation config, but this exists for backwards compatibility. This\n // logic does not need to be super accurate since it covers some edge cases which can be easily\n // avoided by users.\n const animationForciblyDisabledThroughCss = userTransitionProperty === 'none' ||\n // Note: The canonical unit for serialized CSS `<time>` properties is seconds. Additionally\n // some browsers expand the duration for every property (in our case `opacity` and `transform`).\n userTransitionDuration === '0s' ||\n userTransitionDuration === '0s, 0s' ||\n // If the container is 0x0, it's likely `display: none`.\n (containerRect.width === 0 && containerRect.height === 0);\n // Exposed reference to the ripple that will be returned.\n const rippleRef = new RippleRef(this, ripple, config, animationForciblyDisabledThroughCss);\n // Start the enter animation by setting the transform/scale to 100%. The animation will\n // execute as part of this statement because we forced a style recalculation before.\n // Note: We use a 3d transform here in order to avoid an issue in Safari where\n // the ripples aren't clipped when inside the shadow DOM (see #24028).\n ripple.style.transform = 'scale3d(1, 1, 1)';\n rippleRef.state = RippleState.FADING_IN;\n if (!config.persistent) {\n this._mostRecentTransientRipple = rippleRef;\n }\n let eventListeners = null;\n // Do not register the `transition` event listener if fade-in and fade-out duration\n // are set to zero. The events won't fire anyway and we can save resources here.\n if (!animationForciblyDisabledThroughCss && (enterDuration || animationConfig.exitDuration)) {\n this._ngZone.runOutsideAngular(() => {\n const onTransitionEnd = () => {\n // Clear the fallback timer since the transition fired correctly.\n if (eventListeners) {\n eventListeners.fallbackTimer = null;\n }\n clearTimeout(fallbackTimer);\n this._finishRippleTransition(rippleRef);\n };\n const onTransitionCancel = () => this._destroyRipple(rippleRef);\n // In some cases where there's a higher load on the browser, it can choose not to dispatch\n // neither `transitionend` nor `transitioncancel` (see b/227356674). This timer serves as a\n // fallback for such cases so that the ripple doesn't become stuck. We add a 100ms buffer\n // because timers aren't precise. Note that another approach can be to transition the ripple\n // to the `VISIBLE` state immediately above and to `FADING_IN` afterwards inside\n // `transitionstart`. We go with the timer because it's one less event listener and\n // it's less likely to break existing tests.\n const fallbackTimer = setTimeout(onTransitionCancel, enterDuration + 100);\n ripple.addEventListener('transitionend', onTransitionEnd);\n // If the transition is cancelled (e.g. due to DOM removal), we destroy the ripple\n // directly as otherwise we would keep it part of the ripple container forever.\n // https://www.w3.org/TR/css-transitions-1/#:~:text=no%20longer%20in%20the%20document.\n ripple.addEventListener('transitioncancel', onTransitionCancel);\n eventListeners = { onTransitionEnd, onTransitionCancel, fallbackTimer };\n });\n }\n // Add the ripple reference to the list of all active ripples.\n this._activeRipples.set(rippleRef, eventListeners);\n // In case there is no fade-in transition duration, we need to manually call the transition\n // end listener because `transitionend` doesn't fire if there is no transition.\n if (animationForciblyDisabledThroughCss || !enterDuration) {\n this._finishRippleTransition(rippleRef);\n }\n return rippleRef;\n }\n /** Fades out a ripple reference. */\n fadeOutRipple(rippleRef) {\n // For ripples already fading out or hidden, this should be a noop.\n if (rippleRef.state === RippleState.FADING_OUT || rippleRef.state === RippleState.HIDDEN) {\n return;\n }\n const rippleEl = rippleRef.element;\n const animationConfig = { ...defaultRippleAnimationConfig, ...rippleRef.config.animation };\n // This starts the fade-out transition and will fire the transition end listener that\n // removes the ripple element from the DOM.\n rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n rippleEl.style.opacity = '0';\n rippleRef.state = RippleState.FADING_OUT;\n // In case there is no fade-out transition duration, we need to manually call the\n // transition end listener because `transitionend` doesn't fire if there is no transition.\n if (rippleRef._animationForciblyDisabledThroughCss || !animationConfig.exitDuration) {\n this._finishRippleTransition(rippleRef);\n }\n }\n /** Fades out all currently active ripples. */\n fadeOutAll() {\n this._getActiveRipples().forEach(ripple => ripple.fadeOut());\n }\n /** Fades out all currently active non-persistent ripples. */\n fadeOutAllNonPersistent() {\n this._getActiveRipples().forEach(ripple => {\n if (!ripple.config.persistent) {\n ripple.fadeOut();\n }\n });\n }\n /** Sets up the trigger event listeners */\n setupTriggerEvents(elementOrElementRef) {\n const element = coerceElement(elementOrElementRef);\n if (!this._platform.isBrowser || !element || element === this._triggerElement) {\n return;\n }\n // Remove all previously registered event listeners from the trigger element.\n this._removeTriggerEvents();\n this._triggerElement = element;\n // Use event delegation for the trigger events since they're\n // set up during creation and are performance-sensitive.\n pointerDownEvents.forEach(type => {\n RippleRenderer._eventManager.addHandler(this._ngZone, type, element, this);\n });\n }\n /**\n * Handles all registered events.\n * @docs-private\n */\n handleEvent(event) {\n if (event.type === 'mousedown') {\n this._onMousedown(event);\n }\n else if (event.type === 'touchstart') {\n this._onTouchStart(event);\n }\n else {\n this._onPointerUp();\n }\n // If pointer-up events haven't been registered yet, do so now.\n // We do this on-demand in order to reduce the total number of event listeners\n // registered by the ripples, which speeds up the rendering time for large UIs.\n if (!this._pointerUpEventsRegistered) {\n // The events for hiding the ripple are bound directly on the trigger, because:\n // 1. Some of them occur frequently (e.g. `mouseleave`) and any advantage we get from\n // delegation will be diminished by having to look through all the data structures often.\n // 2. They aren't as performance-sensitive, because they're bound only after the user\n // has interacted with an element.\n this._ngZone.runOutsideAngular(() => {\n pointerUpEvents.forEach(type => {\n this._triggerElement.addEventListener(type, this, passiveCapturingEventOptions);\n });\n });\n this._pointerUpEventsRegistered = true;\n }\n }\n /** Method that will be called if the fade-in or fade-in transition completed. */\n _finishRippleTransition(rippleRef) {\n if (rippleRef.state === RippleState.FADING_IN) {\n this._startFadeOutTransition(rippleRef);\n }\n else if (rippleRef.state === RippleState.FADING_OUT) {\n this._destroyRipple(rippleRef);\n }\n }\n /**\n * Starts the fade-out transition of the given ripple if it's not persistent and the pointer\n * is not held down anymore.\n */\n _startFadeOutTransition(rippleRef) {\n const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n const { persistent } = rippleRef.config;\n rippleRef.state = RippleState.VISIBLE;\n // When the timer runs out while the user has kept their pointer down, we want to\n // keep only the persistent ripples and the latest transient ripple. We do this,\n // because we don't want stacked transient ripples to appear after their enter\n // animation has finished.\n if (!persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n rippleRef.fadeOut();\n }\n }\n /** Destroys the given ripple by removing it from the DOM and updating its state. */\n _destroyRipple(rippleRef) {\n const eventListeners = this._activeRipples.get(rippleRef) ?? null;\n this._activeRipples.delete(rippleRef);\n // Clear out the cached bounding rect if we have no more ripples.\n if (!this._activeRipples.size) {\n this._containerRect = null;\n }\n // If the current ref is the most recent transient ripple, unset it\n // avoid memory leaks.\n if (rippleRef === this._mostRecentTransientRipple) {\n this._mostRecentTransientRipple = null;\n }\n rippleRef.state = RippleState.HIDDEN;\n if (eventListeners !== null) {\n rippleRef.element.removeEventListener('transitionend', eventListeners.onTransitionEnd);\n rippleRef.element.removeEventListener('transitioncancel', eventListeners.onTransitionCancel);\n if (eventListeners.fallbackTimer !== null) {\n clearTimeout(eventListeners.fallbackTimer);\n }\n }\n rippleRef.element.remove();\n }\n /** Function being called whenever the trigger is being pressed using mouse. */\n _onMousedown(event) {\n // Screen readers will fire fake mouse events for space/enter. Skip launching a\n // ripple in this case for consistency with the non-screen-reader experience.\n const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n const isSyntheticEvent = this._lastTouchStartEvent &&\n Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n }\n }\n /** Function being called whenever the trigger is being pressed using touch. */\n _onTouchStart(event) {\n if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n // Some browsers fire mouse events after a `touchstart` event. Those synthetic mouse\n // events will launch a second ripple if we don't ignore mouse events for a specific\n // time after a touchstart event.\n this._lastTouchStartEvent = Date.now();\n this._isPointerDown = true;\n // Use `changedTouches` so we skip any touches where the user put\n // their finger down, but used another finger to tap the element again.\n const touches = event.changedTouches;\n // According to the typings the touches should always be defined, but in some cases\n // the browser appears to not assign them in tests which leads to flakes.\n if (touches) {\n for (let i = 0; i < touches.length; i++) {\n this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n }\n }\n }\n }\n /** Function being called whenever the trigger is being released. */\n _onPointerUp() {\n if (!this._isPointerDown) {\n return;\n }\n this._isPointerDown = false;\n // Fade-out all ripples that are visible and not persistent.\n this._getActiveRipples().forEach(ripple => {\n // By default, only ripples that are completely visible will fade out on pointer release.\n // If the `terminateOnPointerUp` option is set, ripples that still fade in will also fade out.\n const isVisible = ripple.state === RippleState.VISIBLE ||\n (ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN);\n if (!ripple.config.persistent && isVisible) {\n ripple.fadeOut();\n }\n });\n }\n _getActiveRipples() {\n return Array.from(this._activeRipples.keys());\n }\n /** Removes previously registered event listeners from the trigger element. */\n _removeTriggerEvents() {\n const trigger = this._triggerElement;\n if (trigger) {\n pointerDownEvents.forEach(type => RippleRenderer._eventManager.removeHandler(type, trigger, this));\n if (this._pointerUpEventsRegistered) {\n pointerUpEvents.forEach(type => trigger.removeEventListener(type, this, passiveCapturingEventOptions));\n this._pointerUpEventsRegistered = false;\n }\n }\n }\n}\n/**\n * Returns the distance from the point (x, y) to the furthest corner of a rectangle.\n */\nfunction distanceToFurthestCorner(x, y, rect) {\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n return Math.sqrt(distX * distX + distY * distY);\n}\n\n/** Injection token that can be used to specify the global ripple options. */\nconst MAT_RIPPLE_GLOBAL_OPTIONS = new InjectionToken('mat-ripple-global-options');\nclass MatRipple {\n /**\n * Whether click events will not trigger the ripple. Ripples can be still launched manually\n * by using the `launch()` method.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n if (value) {\n this.fadeOutAllNonPersistent();\n }\n this._disabled = value;\n this._setupTriggerEventsIfEnabled();\n }\n /**\n * The element that triggers the ripple when click events are received.\n * Defaults to the directive's host element.\n */\n get trigger() {\n return this._trigger || this._elementRef.nativeElement;\n }\n set trigger(trigger) {\n this._trigger = trigger;\n this._setupTriggerEventsIfEnabled();\n }\n constructor(_elementRef, ngZone, platform, globalOptions, _animationMode) {\n this._elementRef = _elementRef;\n this._animationMode = _animationMode;\n /**\n * If set, the radius in pixels of foreground ripples when fully expanded. If unset, the radius\n * will be the distance from the center of the ripple to the furthest corner of the host element's\n * bounding rectangle.\n */\n this.radius = 0;\n this._disabled = false;\n /** @docs-private Whether ripple directive is initialized and the input bindings are set. */\n this._isInitialized = false;\n this._globalOptions = globalOptions || {};\n this._rippleRenderer = new RippleRenderer(this, ngZone, _elementRef, platform);\n }\n ngOnInit() {\n this._isInitialized = true;\n this._setupTriggerEventsIfEnabled();\n }\n ngOnDestroy() {\n this._rippleRenderer._removeTriggerEvents();\n }\n /** Fades out all currently showing ripple elements. */\n fadeOutAll() {\n this._rippleRenderer.fadeOutAll();\n }\n /** Fades out all currently showing non-persistent ripple elements. */\n fadeOutAllNonPersistent() {\n this._rippleRenderer.fadeOutAllNonPersistent();\n }\n /**\n * Ripple configuration from the directive's input values.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleConfig() {\n return {\n centered: this.centered,\n radius: this.radius,\n color: this.color,\n animation: {\n ...this._globalOptions.animation,\n ...(this._animationMode === 'NoopAnimations' ? { enterDuration: 0, exitDuration: 0 } : {}),\n ...this.animation,\n },\n terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n };\n }\n /**\n * Whether ripples on pointer-down are disabled or not.\n * @docs-private Implemented as part of RippleTarget\n */\n get rippleDisabled() {\n return this.disabled || !!this._globalOptions.disabled;\n }\n /** Sets up the trigger event listeners if ripples are enabled. */\n _setupTriggerEventsIfEnabled() {\n if (!this.disabled && this._isInitialized) {\n this._rippleRenderer.setupTriggerEvents(this.trigger);\n }\n }\n /** Launches a manual ripple at the specified coordinated or just by the ripple config. */\n launch(configOrX, y = 0, config) {\n if (typeof configOrX === 'number') {\n return this._rippleRenderer.fadeInRipple(configOrX, y, { ...this.rippleConfig, ...config });\n }\n else {\n return this._rippleRenderer.fadeInRipple(0, 0, { ...this.rippleConfig, ...configOrX });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRipple, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.Platform }, { token: MAT_RIPPLE_GLOBAL_OPTIONS, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatRipple, isStandalone: true, selector: \"[mat-ripple], [matRipple]\", inputs: { color: [\"matRippleColor\", \"color\"], unbounded: [\"matRippleUnbounded\", \"unbounded\"], centered: [\"matRippleCentered\", \"centered\"], radius: [\"matRippleRadius\", \"radius\"], animation: [\"matRippleAnimation\", \"animation\"], disabled: [\"matRippleDisabled\", \"disabled\"], trigger: [\"matRippleTrigger\", \"trigger\"] }, host: { properties: { \"class.mat-ripple-unbounded\": \"unbounded\" }, classAttribute: \"mat-ripple\" }, exportAs: [\"matRipple\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRipple, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-ripple], [matRipple]',\n exportAs: 'matRipple',\n host: {\n 'class': 'mat-ripple',\n '[class.mat-ripple-unbounded]': 'unbounded',\n },\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RIPPLE_GLOBAL_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }], propDecorators: { color: [{\n type: Input,\n args: ['matRippleColor']\n }], unbounded: [{\n type: Input,\n args: ['matRippleUnbounded']\n }], centered: [{\n type: Input,\n args: ['matRippleCentered']\n }], radius: [{\n type: Input,\n args: ['matRippleRadius']\n }], animation: [{\n type: Input,\n args: ['matRippleAnimation']\n }], disabled: [{\n type: Input,\n args: ['matRippleDisabled']\n }], trigger: [{\n type: Input,\n args: ['matRippleTrigger']\n }] } });\n\nclass MatRippleModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRippleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRippleModule, imports: [MatCommonModule, MatRipple], exports: [MatRipple, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRippleModule, imports: [MatCommonModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRippleModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, MatRipple],\n exports: [MatRipple, MatCommonModule],\n }]\n }] });\n\n/**\n * Component that shows a simplified checkbox without including any kind of \"real\" checkbox.\n * Meant to be used when the checkbox is purely decorative and a large number of them will be\n * included, such as for the options in a multi-select. Uses no SVGs or complex animations.\n * Note that theming is meant to be handled by the parent element, e.g.\n * `mat-primary .mat-pseudo-checkbox`.\n *\n * Note that this component will be completely invisible to screen-reader users. This is *not*\n * interchangeable with `<mat-checkbox>` and should *not* be used if the user would directly\n * interact with the checkbox. The pseudo-checkbox should only be used as an implementation detail\n * of more complex components that appropriately handle selected / checked state.\n * @docs-private\n */\nclass MatPseudoCheckbox {\n constructor(_animationMode) {\n this._animationMode = _animationMode;\n /** Display state of the checkbox. */\n this.state = 'unchecked';\n /** Whether the checkbox is disabled. */\n this.disabled = false;\n /**\n * Appearance of the pseudo checkbox. Default appearance of 'full' renders a checkmark/mixedmark\n * indicator inside a square box. 'minimal' appearance only renders the checkmark/mixedmark.\n */\n this.appearance = 'full';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatPseudoCheckbox, deps: [{ token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatPseudoCheckbox, isStandalone: true, selector: \"mat-pseudo-checkbox\", inputs: { state: \"state\", disabled: \"disabled\", appearance: \"appearance\" }, host: { properties: { \"class.mat-pseudo-checkbox-indeterminate\": \"state === \\\"indeterminate\\\"\", \"class.mat-pseudo-checkbox-checked\": \"state === \\\"checked\\\"\", \"class.mat-pseudo-checkbox-disabled\": \"disabled\", \"class.mat-pseudo-checkbox-minimal\": \"appearance === \\\"minimal\\\"\", \"class.mat-pseudo-checkbox-full\": \"appearance === \\\"full\\\"\", \"class._mat-animation-noopable\": \"_animationMode === \\\"NoopAnimations\\\"\" }, classAttribute: \"mat-pseudo-checkbox\" }, ngImport: i0, template: '', isInline: true, styles: [\".mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:\\\"\\\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-minimal-pseudo-checkbox-selected-checkmark-color, var(--mat-app-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color)}.mat-pseudo-checkbox-full{border-color:var(--mat-full-pseudo-checkbox-unselected-icon-color, var(--mat-app-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-full-pseudo-checkbox-disabled-unselected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-full-pseudo-checkbox-selected-icon-color, var(--mat-app-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-full-pseudo-checkbox-selected-checkmark-color, var(--mat-app-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-full-pseudo-checkbox-disabled-selected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-full-pseudo-checkbox-disabled-selected-checkmark-color, var(--mat-app-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatPseudoCheckbox, decorators: [{\n type: Component,\n args: [{ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, selector: 'mat-pseudo-checkbox', template: '', host: {\n 'class': 'mat-pseudo-checkbox',\n '[class.mat-pseudo-checkbox-indeterminate]': 'state === \"indeterminate\"',\n '[class.mat-pseudo-checkbox-checked]': 'state === \"checked\"',\n '[class.mat-pseudo-checkbox-disabled]': 'disabled',\n '[class.mat-pseudo-checkbox-minimal]': 'appearance === \"minimal\"',\n '[class.mat-pseudo-checkbox-full]': 'appearance === \"full\"',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n }, standalone: true, styles: [\".mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:\\\"\\\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-minimal-pseudo-checkbox-selected-checkmark-color, var(--mat-app-primary))}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color)}.mat-pseudo-checkbox-full{border-color:var(--mat-full-pseudo-checkbox-unselected-icon-color, var(--mat-app-on-surface-variant));border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-full-pseudo-checkbox-disabled-unselected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-full-pseudo-checkbox-selected-icon-color, var(--mat-app-primary));border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-full-pseudo-checkbox-selected-checkmark-color, var(--mat-app-on-primary))}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-full-pseudo-checkbox-disabled-selected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-full-pseudo-checkbox-disabled-selected-checkmark-color, var(--mat-app-surface))}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}\"] }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }], propDecorators: { state: [{\n type: Input\n }], disabled: [{\n type: Input\n }], appearance: [{\n type: Input\n }] } });\n\nclass MatPseudoCheckboxModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatPseudoCheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatPseudoCheckboxModule, imports: [MatCommonModule, MatPseudoCheckbox], exports: [MatPseudoCheckbox] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatPseudoCheckboxModule, imports: [MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatPseudoCheckboxModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, MatPseudoCheckbox],\n exports: [MatPseudoCheckbox],\n }]\n }] });\n\n/**\n * Injection token used to provide the parent component to options.\n */\nconst MAT_OPTION_PARENT_COMPONENT = new InjectionToken('MAT_OPTION_PARENT_COMPONENT');\n\n// Notes on the accessibility pattern used for `mat-optgroup`.\n// The option group has two different \"modes\": regular and inert. The regular mode uses the\n// recommended a11y pattern which has `role=\"group\"` on the group element with `aria-labelledby`\n// pointing to the label. This works for `mat-select`, but it seems to hit a bug for autocomplete\n// under VoiceOver where the group doesn't get read out at all. The bug appears to be that if\n// there's __any__ a11y-related attribute on the group (e.g. `role` or `aria-labelledby`),\n// VoiceOver on Safari won't read it out.\n// We've introduced the `inert` mode as a workaround. Under this mode, all a11y attributes are\n// removed from the group, and we get the screen reader to read out the group label by mirroring it\n// inside an invisible element in the option. This is sub-optimal, because the screen reader will\n// repeat the group label on each navigation, whereas the default pattern only reads the group when\n// the user enters a new group. The following alternate approaches were considered:\n// 1. Reading out the group label using the `LiveAnnouncer` solves the problem, but we can't control\n// when the text will be read out so sometimes it comes in too late or never if the user\n// navigates quickly.\n// 2. `<mat-option aria-describedby=\"groupLabel\"` - This works on Safari, but VoiceOver in Chrome\n// won't read out the description at all.\n// 3. `<mat-option aria-labelledby=\"optionLabel groupLabel\"` - This works on Chrome, but Safari\n// doesn't read out the text at all. Furthermore, on\n// Counter for unique group ids.\nlet _uniqueOptgroupIdCounter = 0;\n/**\n * Injection token that can be used to reference instances of `MatOptgroup`. It serves as\n * alternative token to the actual `MatOptgroup` class which could cause unnecessary\n * retention of the class and its component metadata.\n */\nconst MAT_OPTGROUP = new InjectionToken('MatOptgroup');\n/**\n * Component that is used to group instances of `mat-option`.\n */\nclass MatOptgroup {\n constructor(parent) {\n /** whether the option group is disabled. */\n this.disabled = false;\n /** Unique id for the underlying label. */\n this._labelId = `mat-optgroup-label-${_uniqueOptgroupIdCounter++}`;\n this._inert = parent?.inertGroups ?? false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatOptgroup, deps: [{ token: MAT_OPTION_PARENT_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatOptgroup, isStandalone: true, selector: \"mat-optgroup\", inputs: { label: \"label\", disabled: [\"disabled\", \"disabled\", booleanAttribute] }, host: { properties: { \"attr.role\": \"_inert ? null : \\\"group\\\"\", \"attr.aria-disabled\": \"_inert ? null : disabled.toString()\", \"attr.aria-labelledby\": \"_inert ? null : _labelId\" }, classAttribute: \"mat-mdc-optgroup\" }, providers: [{ provide: MAT_OPTGROUP, useExisting: MatOptgroup }], exportAs: [\"matOptgroup\"], ngImport: i0, template: \"<span\\n class=\\\"mat-mdc-optgroup-label\\\"\\n role=\\\"presentation\\\"\\n [class.mdc-list-item--disabled]=\\\"disabled\\\"\\n [id]=\\\"_labelId\\\">\\n <span class=\\\"mdc-list-item__primary-text\\\">{{ label }} <ng-content></ng-content></span>\\n</span>\\n\\n<ng-content select=\\\"mat-option, ng-container\\\"></ng-content>\\n\", styles: [\".mat-mdc-optgroup{color:var(--mat-optgroup-label-text-color, var(--mat-app-on-surface-variant));font-family:var(--mat-optgroup-label-text-font, var(--mat-app-title-small-font));line-height:var(--mat-optgroup-label-text-line-height, var(--mat-app-title-small-line-height));font-size:var(--mat-optgroup-label-text-size, var(--mat-app-title-small-size));letter-spacing:var(--mat-optgroup-label-text-tracking, var(--mat-app-title-small-tracking));font-weight:var(--mat-optgroup-label-text-weight, var(--mat-app-title-small-weight))}.mat-mdc-optgroup-label{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;outline:none}.mat-mdc-optgroup-label.mdc-list-item--disabled{opacity:.38}.mat-mdc-optgroup-label .mdc-list-item__primary-text{font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;white-space:normal}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatOptgroup, decorators: [{\n type: Component,\n args: [{ selector: 'mat-optgroup', exportAs: 'matOptgroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n 'class': 'mat-mdc-optgroup',\n '[attr.role]': '_inert ? null : \"group\"',\n '[attr.aria-disabled]': '_inert ? null : disabled.toString()',\n '[attr.aria-labelledby]': '_inert ? null : _labelId',\n }, providers: [{ provide: MAT_OPTGROUP, useExisting: MatOptgroup }], standalone: true, template: \"<span\\n class=\\\"mat-mdc-optgroup-label\\\"\\n role=\\\"presentation\\\"\\n [class.mdc-list-item--disabled]=\\\"disabled\\\"\\n [id]=\\\"_labelId\\\">\\n <span class=\\\"mdc-list-item__primary-text\\\">{{ label }} <ng-content></ng-content></span>\\n</span>\\n\\n<ng-content select=\\\"mat-option, ng-container\\\"></ng-content>\\n\", styles: [\".mat-mdc-optgroup{color:var(--mat-optgroup-label-text-color, var(--mat-app-on-surface-variant));font-family:var(--mat-optgroup-label-text-font, var(--mat-app-title-small-font));line-height:var(--mat-optgroup-label-text-line-height, var(--mat-app-title-small-line-height));font-size:var(--mat-optgroup-label-text-size, var(--mat-app-title-small-size));letter-spacing:var(--mat-optgroup-label-text-tracking, var(--mat-app-title-small-tracking));font-weight:var(--mat-optgroup-label-text-weight, var(--mat-app-title-small-weight))}.mat-mdc-optgroup-label{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;outline:none}.mat-mdc-optgroup-label.mdc-list-item--disabled{opacity:.38}.mat-mdc-optgroup-label .mdc-list-item__primary-text{font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;white-space:normal}\"] }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [MAT_OPTION_PARENT_COMPONENT]\n }, {\n type: Optional\n }] }], propDecorators: { label: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n\n/**\n * Option IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueIdCounter = 0;\n/** Event object emitted by MatOption when selected or deselected. */\nclass MatOptionSelectionChange {\n constructor(\n /** Reference to the option that emitted the event. */\n source, \n /** Whether the change in the option's value was a result of a user action. */\n isUserInput = false) {\n this.source = source;\n this.isUserInput = isUserInput;\n }\n}\n/**\n * Single option inside of a `<mat-select>` element.\n */\nclass MatOption {\n /** Whether the wrapping component is in multiple selection mode. */\n get multiple() {\n return this._parent && this._parent.multiple;\n }\n /** Whether or not the option is currently selected. */\n get selected() {\n return this._selected;\n }\n /** Whether the option is disabled. */\n get disabled() {\n return (this.group && this.group.disabled) || this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n }\n /** Whether ripples for the option are disabled. */\n get disableRipple() {\n return !!(this._parent && this._parent.disableRipple);\n }\n /** Whether to display checkmark for single-selection. */\n get hideSingleSelectionIndicator() {\n return !!(this._parent && this._parent.hideSingleSelectionIndicator);\n }\n constructor(_element, _changeDetectorRef, _parent, group) {\n this._element = _element;\n this._changeDetectorRef = _changeDetectorRef;\n this._parent = _parent;\n this.group = group;\n this._selected = false;\n this._active = false;\n this._disabled = false;\n this._mostRecentViewValue = '';\n /** The unique ID of the option. */\n this.id = `mat-option-${_uniqueIdCounter++}`;\n /** Event emitted when the option is selected or deselected. */\n // tslint:disable-next-line:no-output-on-prefix\n this.onSelectionChange = new EventEmitter();\n /** Emits when the state of the option changes and any parents have to be notified. */\n this._stateChanges = new Subject();\n }\n /**\n * Whether or not the option is currently active and ready to be selected.\n * An active option displays styles as if it is focused, but the\n * focus is actually retained somewhere else. This comes in handy\n * for components like autocomplete where focus must remain on the input.\n */\n get active() {\n return this._active;\n }\n /**\n * The displayed value of the option. It is necessary to show the selected option in the\n * select's trigger.\n */\n get viewValue() {\n // TODO(kara): Add input property alternative for node envs.\n return (this._text?.nativeElement.textContent || '').trim();\n }\n /** Selects the option. */\n select(emitEvent = true) {\n if (!this._selected) {\n this._selected = true;\n this._changeDetectorRef.markForCheck();\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n /** Deselects the option. */\n deselect(emitEvent = true) {\n if (this._selected) {\n this._selected = false;\n this._changeDetectorRef.markForCheck();\n if (emitEvent) {\n this._emitSelectionChangeEvent();\n }\n }\n }\n /** Sets focus onto this option. */\n focus(_origin, options) {\n // Note that we aren't using `_origin`, but we need to keep it because some internal consumers\n // use `MatOption` in a `FocusKeyManager` and we need it to match `FocusableOption`.\n const element = this._getHostElement();\n if (typeof element.focus === 'function') {\n element.focus(options);\n }\n }\n /**\n * This method sets display styles on the option to make it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setActiveStyles() {\n if (!this._active) {\n this._active = true;\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * This method removes display styles on the option that made it appear\n * active. This is used by the ActiveDescendantKeyManager so key\n * events will display the proper options as active on arrow key events.\n */\n setInactiveStyles() {\n if (this._active) {\n this._active = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Gets the label to be used when determining whether the option should be focused. */\n getLabel() {\n return this.viewValue;\n }\n /** Ensures the option is selected when activated from the keyboard. */\n _handleKeydown(event) {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this._selectViaInteraction();\n // Prevent the page from scrolling down and form submits.\n event.preventDefault();\n }\n }\n /**\n * `Selects the option while indicating the selection came from the user. Used to\n * determine if the select's view -> model callback should be invoked.`\n */\n _selectViaInteraction() {\n if (!this.disabled) {\n this._selected = this.multiple ? !this._selected : true;\n this._changeDetectorRef.markForCheck();\n this._emitSelectionChangeEvent(true);\n }\n }\n /** Returns the correct tabindex for the option depending on disabled state. */\n // This method is only used by `MatLegacyOption`. Keeping it here to avoid breaking the types.\n // That's because `MatLegacyOption` use `MatOption` type in a few places such as\n // `MatOptionSelectionChange`. It is safe to delete this when `MatLegacyOption` is deleted.\n _getTabIndex() {\n return this.disabled ? '-1' : '0';\n }\n /** Gets the host DOM element. */\n _getHostElement() {\n return this._element.nativeElement;\n }\n ngAfterViewChecked() {\n // Since parent components could be using the option's label to display the selected values\n // (e.g. `mat-select`) and they don't have a way of knowing if the option's label has changed\n // we have to check for changes in the DOM ourselves and dispatch an event. These checks are\n // relatively cheap, however we still limit them only to selected options in order to avoid\n // hitting the DOM too often.\n if (this._selected) {\n const viewValue = this.viewValue;\n if (viewValue !== this._mostRecentViewValue) {\n if (this._mostRecentViewValue) {\n this._stateChanges.next();\n }\n this._mostRecentViewValue = viewValue;\n }\n }\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n /** Emits the selection change event. */\n _emitSelectionChangeEvent(isUserInput = false) {\n this.onSelectionChange.emit(new MatOptionSelectionChange(this, isUserInput));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_OPTION_PARENT_COMPONENT, optional: true }, { token: MAT_OPTGROUP, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: MatOption, isStandalone: true, selector: \"mat-option\", inputs: { value: \"value\", id: \"id\", disabled: [\"disabled\", \"disabled\", booleanAttribute] }, outputs: { onSelectionChange: \"onSelectionChange\" }, host: { attributes: { \"role\": \"option\" }, listeners: { \"click\": \"_selectViaInteraction()\", \"keydown\": \"_handleKeydown($event)\" }, properties: { \"class.mdc-list-item--selected\": \"selected\", \"class.mat-mdc-option-multiple\": \"multiple\", \"class.mat-mdc-option-active\": \"active\", \"class.mdc-list-item--disabled\": \"disabled\", \"id\": \"id\", \"attr.aria-selected\": \"selected\", \"attr.aria-disabled\": \"disabled.toString()\" }, classAttribute: \"mat-mdc-option mdc-list-item\" }, viewQueries: [{ propertyName: \"_text\", first: true, predicate: [\"text\"], descendants: true, static: true }], exportAs: [\"matOption\"], ngImport: i0, template: \"<!-- Set aria-hidden=\\\"true\\\" to this DOM node and other decorative nodes in this file. This might\\n be contributing to issue where sometimes VoiceOver focuses on a TextNode in the a11y tree instead\\n of the Option node (#23202). Most assistive technology will generally ignore non-role,\\n non-text-content elements. Adding aria-hidden seems to make VoiceOver behave more consistently. -->\\n@if (multiple) {\\n <mat-pseudo-checkbox\\n class=\\\"mat-mdc-option-pseudo-checkbox\\\"\\n [disabled]=\\\"disabled\\\"\\n [state]=\\\"selected ? 'checked' : 'unchecked'\\\"\\n aria-hidden=\\\"true\\\"></mat-pseudo-checkbox>\\n}\\n\\n<ng-content select=\\\"mat-icon\\\"></ng-content>\\n\\n<span class=\\\"mdc-list-item__primary-text\\\" #text><ng-content></ng-content></span>\\n\\n<!-- Render checkmark at the end for single-selection. -->\\n@if (!multiple && selected && !hideSingleSelectionIndicator) {\\n <mat-pseudo-checkbox\\n class=\\\"mat-mdc-option-pseudo-checkbox\\\"\\n [disabled]=\\\"disabled\\\"\\n state=\\\"checked\\\"\\n aria-hidden=\\\"true\\\"\\n appearance=\\\"minimal\\\"></mat-pseudo-checkbox>\\n}\\n\\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\\n@if (group && group._inert) {\\n <span class=\\\"cdk-visually-hidden\\\">({{ group.label }})</span>\\n}\\n\\n<div class=\\\"mat-mdc-option-ripple mat-mdc-focus-indicator\\\" aria-hidden=\\\"true\\\" mat-ripple\\n [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"disabled || disableRipple\\\">\\n</div>\\n\", styles: [\".mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-app-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-app-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-app-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-app-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-app-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color)}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color);outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color, var(--mat-app-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-minimal-pseudo-checkbox-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:\\\"\\\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-multiple{--mdc-list-list-item-selected-container-color:var(--mdc-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"], dependencies: [{ kind: \"component\", type: MatPseudoCheckbox, selector: \"mat-pseudo-checkbox\", inputs: [\"state\", \"disabled\", \"appearance\"] }, { kind: \"directive\", type: MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatOption, decorators: [{\n type: Component,\n args: [{ selector: 'mat-option', exportAs: 'matOption', host: {\n 'role': 'option',\n '[class.mdc-list-item--selected]': 'selected',\n '[class.mat-mdc-option-multiple]': 'multiple',\n '[class.mat-mdc-option-active]': 'active',\n '[class.mdc-list-item--disabled]': 'disabled',\n '[id]': 'id',\n // Set aria-selected to false for non-selected items and true for selected items. Conform to\n // [WAI ARIA Listbox authoring practices guide](\n // https://www.w3.org/WAI/ARIA/apg/patterns/listbox/), \"If any options are selected, each\n // selected option has either aria-selected or aria-checked set to true. All options that are\n // selectable but not selected have either aria-selected or aria-checked set to false.\" Align\n // aria-selected implementation of Chips and List components.\n //\n // Set `aria-selected=\"false\"` on not-selected listbox options to fix VoiceOver announcing\n // every option as \"selected\" (#21491).\n '[attr.aria-selected]': 'selected',\n '[attr.aria-disabled]': 'disabled.toString()',\n '(click)': '_selectViaInteraction()',\n '(keydown)': '_handleKeydown($event)',\n 'class': 'mat-mdc-option mdc-list-item',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatPseudoCheckbox, MatRipple], template: \"<!-- Set aria-hidden=\\\"true\\\" to this DOM node and other decorative nodes in this file. This might\\n be contributing to issue where sometimes VoiceOver focuses on a TextNode in the a11y tree instead\\n of the Option node (#23202). Most assistive technology will generally ignore non-role,\\n non-text-content elements. Adding aria-hidden seems to make VoiceOver behave more consistently. -->\\n@if (multiple) {\\n <mat-pseudo-checkbox\\n class=\\\"mat-mdc-option-pseudo-checkbox\\\"\\n [disabled]=\\\"disabled\\\"\\n [state]=\\\"selected ? 'checked' : 'unchecked'\\\"\\n aria-hidden=\\\"true\\\"></mat-pseudo-checkbox>\\n}\\n\\n<ng-content select=\\\"mat-icon\\\"></ng-content>\\n\\n<span class=\\\"mdc-list-item__primary-text\\\" #text><ng-content></ng-content></span>\\n\\n<!-- Render checkmark at the end for single-selection. -->\\n@if (!multiple && selected && !hideSingleSelectionIndicator) {\\n <mat-pseudo-checkbox\\n class=\\\"mat-mdc-option-pseudo-checkbox\\\"\\n [disabled]=\\\"disabled\\\"\\n state=\\\"checked\\\"\\n aria-hidden=\\\"true\\\"\\n appearance=\\\"minimal\\\"></mat-pseudo-checkbox>\\n}\\n\\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\\n@if (group && group._inert) {\\n <span class=\\\"cdk-visually-hidden\\\">({{ group.label }})</span>\\n}\\n\\n<div class=\\\"mat-mdc-option-ripple mat-mdc-focus-indicator\\\" aria-hidden=\\\"true\\\" mat-ripple\\n [matRippleTrigger]=\\\"_getHostElement()\\\" [matRippleDisabled]=\\\"disabled || disableRipple\\\">\\n</div>\\n\", styles: [\".mat-mdc-option{-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;min-height:48px;padding:0 16px;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color, var(--mat-app-on-surface));font-family:var(--mat-option-label-text-font, var(--mat-app-label-large-font));line-height:var(--mat-option-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mat-option-label-text-size, var(--mat-app-body-large-size));letter-spacing:var(--mat-option-label-text-tracking, var(--mat-app-label-large-tracking));font-weight:var(--mat-option-label-text-weight, var(--mat-app-body-large-weight))}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color)}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color);outline:0}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color, var(--mat-app-secondary-container))}.mat-mdc-option .mat-pseudo-checkbox{--mat-minimal-pseudo-checkbox-selected-checkmark-color: var(--mat-option-selected-state-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-option.mdc-list-item{align-items:center;background:rgba(0,0,0,0)}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:\\\"\\\";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-multiple{--mdc-list-list-item-selected-container-color:var(--mdc-list-list-item-container-color, transparent)}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_OPTION_PARENT_COMPONENT]\n }] }, { type: MatOptgroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_OPTGROUP]\n }] }], propDecorators: { value: [{\n type: Input\n }], id: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], onSelectionChange: [{\n type: Output\n }], _text: [{\n type: ViewChild,\n args: ['text', { static: true }]\n }] } });\n/**\n * Counts the amount of option group labels that precede the specified option.\n * @param optionIndex Index of the option at which to start counting.\n * @param options Flat list of all of the options.\n * @param optionGroups Flat list of all of the option groups.\n * @docs-private\n */\nfunction _countGroupLabelsBeforeOption(optionIndex, options, optionGroups) {\n if (optionGroups.length) {\n let optionsArray = options.toArray();\n let groups = optionGroups.toArray();\n let groupCounter = 0;\n for (let i = 0; i < optionIndex + 1; i++) {\n if (optionsArray[i].group && optionsArray[i].group === groups[groupCounter]) {\n groupCounter++;\n }\n }\n return groupCounter;\n }\n return 0;\n}\n/**\n * Determines the position to which to scroll a panel in order for an option to be into view.\n * @param optionOffset Offset of the option from the top of the panel.\n * @param optionHeight Height of the options.\n * @param currentScrollPosition Current scroll position of the panel.\n * @param panelHeight Height of the panel.\n * @docs-private\n */\nfunction _getOptionScrollPosition(optionOffset, optionHeight, currentScrollPosition, panelHeight) {\n if (optionOffset < currentScrollPosition) {\n return optionOffset;\n }\n if (optionOffset + optionHeight > currentScrollPosition + panelHeight) {\n return Math.max(0, optionOffset - panelHeight + optionHeight);\n }\n return currentScrollPosition;\n}\n\nclass MatOptionModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatOptionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatOptionModule, imports: [MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, MatOption, MatOptgroup], exports: [MatOption, MatOptgroup] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatOptionModule, imports: [MatRippleModule, MatCommonModule, MatPseudoCheckboxModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatOptionModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatRippleModule, MatCommonModule, MatPseudoCheckboxModule, MatOption, MatOptgroup],\n exports: [MatOption, MatOptgroup],\n }]\n }] });\n\n/** The options for the MatRippleLoader's event listeners. */\nconst eventListenerOptions = { capture: true };\n/**\n * The events that should trigger the initialization of the ripple.\n * Note that we use `mousedown`, rather than `click`, for mouse devices because\n * we can't rely on `mouseenter` in the shadow DOM and `click` happens too late.\n */\nconst rippleInteractionEvents = ['focus', 'mousedown', 'mouseenter', 'touchstart'];\n/** The attribute attached to a component whose ripple has not yet been initialized. */\nconst matRippleUninitialized = 'mat-ripple-loader-uninitialized';\n/** Additional classes that should be added to the ripple when it is rendered. */\nconst matRippleClassName = 'mat-ripple-loader-class-name';\n/** Whether the ripple should be centered. */\nconst matRippleCentered = 'mat-ripple-loader-centered';\n/** Whether the ripple should be disabled. */\nconst matRippleDisabled = 'mat-ripple-loader-disabled';\n/**\n * Handles attaching ripples on demand.\n *\n * This service allows us to avoid eagerly creating & attaching MatRipples.\n * It works by creating & attaching a ripple only when a component is first interacted with.\n *\n * @docs-private\n */\nclass MatRippleLoader {\n constructor() {\n this._document = inject(DOCUMENT, { optional: true });\n this._animationMode = inject(ANIMATION_MODULE_TYPE, { optional: true });\n this._globalRippleOptions = inject(MAT_RIPPLE_GLOBAL_OPTIONS, { optional: true });\n this._platform = inject(Platform);\n this._ngZone = inject(NgZone);\n this._hosts = new Map();\n /**\n * Handles creating and attaching component internals\n * when a component is initially interacted with.\n */\n this._onInteraction = (event) => {\n const eventTarget = _getEventTarget(event);\n if (eventTarget instanceof HTMLElement) {\n // TODO(wagnermaciel): Consider batching these events to improve runtime performance.\n const element = eventTarget.closest(`[${matRippleUninitialized}=\"${this._globalRippleOptions?.namespace ?? ''}\"]`);\n if (element) {\n this._createRipple(element);\n }\n }\n };\n this._ngZone.runOutsideAngular(() => {\n for (const event of rippleInteractionEvents) {\n this._document?.addEventListener(event, this._onInteraction, eventListenerOptions);\n }\n });\n }\n ngOnDestroy() {\n const hosts = this._hosts.keys();\n for (const host of hosts) {\n this.destroyRipple(host);\n }\n for (const event of rippleInteractionEvents) {\n this._document?.removeEventListener(event, this._onInteraction, eventListenerOptions);\n }\n }\n /**\n * Configures the ripple that will be rendered by the ripple loader.\n *\n * Stores the given information about how the ripple should be configured on the host\n * element so that it can later be retrived & used when the ripple is actually created.\n */\n configureRipple(host, config) {\n // Indicates that the ripple has not yet been rendered for this component.\n host.setAttribute(matRippleUninitialized, this._globalRippleOptions?.namespace ?? '');\n // Store the additional class name(s) that should be added to the ripple element.\n if (config.className || !host.hasAttribute(matRippleClassName)) {\n host.setAttribute(matRippleClassName, config.className || '');\n }\n // Store whether the ripple should be centered.\n if (config.centered) {\n host.setAttribute(matRippleCentered, '');\n }\n if (config.disabled) {\n host.setAttribute(matRippleDisabled, '');\n }\n }\n /** Returns the ripple instance for the given host element. */\n getRipple(host) {\n const ripple = this._hosts.get(host);\n return ripple || this._createRipple(host);\n }\n /** Sets the disabled state on the ripple instance corresponding to the given host element. */\n setDisabled(host, disabled) {\n const ripple = this._hosts.get(host);\n // If the ripple has already been instantiated, just disable it.\n if (ripple) {\n ripple.disabled = disabled;\n return;\n }\n // Otherwise, set an attribute so we know what the\n // disabled state should be when the ripple is initialized.\n if (disabled) {\n host.setAttribute(matRippleDisabled, '');\n }\n else {\n host.removeAttribute(matRippleDisabled);\n }\n }\n /** Creates a MatRipple and appends it to the given element. */\n _createRipple(host) {\n if (!this._document) {\n return;\n }\n const existingRipple = this._hosts.get(host);\n if (existingRipple) {\n return existingRipple;\n }\n // Create the ripple element.\n host.querySelector('.mat-ripple')?.remove();\n const rippleEl = this._document.createElement('span');\n rippleEl.classList.add('mat-ripple', host.getAttribute(matRippleClassName));\n host.append(rippleEl);\n // Create the MatRipple.\n const ripple = new MatRipple(new ElementRef(rippleEl), this._ngZone, this._platform, this._globalRippleOptions ? this._globalRippleOptions : undefined, this._animationMode ? this._animationMode : undefined);\n ripple._isInitialized = true;\n ripple.trigger = host;\n ripple.centered = host.hasAttribute(matRippleCentered);\n ripple.disabled = host.hasAttribute(matRippleDisabled);\n this.attachRipple(host, ripple);\n return ripple;\n }\n attachRipple(host, ripple) {\n host.removeAttribute(matRippleUninitialized);\n this._hosts.set(host, ripple);\n }\n destroyRipple(host) {\n const ripple = this._hosts.get(host);\n if (ripple) {\n // Since this directive is created manually, it needs to be destroyed manually too.\n // tslint:disable-next-line:no-lifecycle-invocation\n ripple.ngOnDestroy();\n this._hosts.delete(host);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRippleLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRippleLoader, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRippleLoader, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\n/**\n * Internal shared component used as a container in form field controls.\n * Not to be confused with `mat-form-field` which MDC calls a \"text field\".\n * @docs-private\n */\nclass _MatInternalFormField {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: _MatInternalFormField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: _MatInternalFormField, isStandalone: true, selector: \"div[mat-internal-form-field]\", inputs: { labelPosition: \"labelPosition\" }, host: { properties: { \"class.mdc-form-field--align-end\": \"labelPosition === \\\"before\\\"\" }, classAttribute: \"mdc-form-field mat-internal-form-field\" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [\".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: _MatInternalFormField, decorators: [{\n type: Component,\n args: [{ selector: 'div[mat-internal-form-field]', standalone: true, template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n 'class': 'mdc-form-field mat-internal-form-field',\n '[class.mdc-form-field--align-end]': 'labelPosition === \"before\"',\n }, styles: [\".mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-flex;align-items:center;vertical-align:middle}.mat-internal-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mat-internal-form-field>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end .mdc-form-field--align-end label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0}\"] }]\n }], propDecorators: { labelPosition: [{\n type: Input,\n args: [{ required: true }]\n }] } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AnimationCurves, AnimationDurations, DateAdapter, ErrorStateMatcher, MATERIAL_SANITY_CHECKS, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MAT_DATE_LOCALE_FACTORY, MAT_NATIVE_DATE_FORMATS, MAT_OPTGROUP, MAT_OPTION_PARENT_COMPONENT, MAT_RIPPLE_GLOBAL_OPTIONS, MatCommonModule, MatLine, MatLineModule, MatNativeDateModule, MatOptgroup, MatOption, MatOptionModule, MatOptionSelectionChange, MatPseudoCheckbox, MatPseudoCheckboxModule, MatRipple, MatRippleLoader, MatRippleModule, NativeDateAdapter, NativeDateModule, RippleRef, RippleRenderer, RippleState, ShowOnDirtyErrorStateMatcher, VERSION, _ErrorStateTracker, _MatInternalFormField, _countGroupLabelsBeforeOption, _getOptionScrollPosition, defaultRippleAnimationConfig, mixinColor, mixinDisableRipple, mixinDisabled, mixinErrorState, mixinInitialized, mixinTabIndex, provideNativeDateAdapter, setLines };\n","import { takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, inject, Injector, ElementRef, afterNextRender, Directive, Inject, Optional, Input, ANIMATION_MODULE_TYPE, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, NgModule } from '@angular/core';\nimport { DOCUMENT, NgClass, CommonModule } from '@angular/common';\nimport * as i2 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport * as i3 from '@angular/cdk/a11y';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport * as i4 from '@angular/cdk/bidi';\nimport * as i1 from '@angular/cdk/overlay';\nimport { Overlay, OverlayModule } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Subject } from 'rxjs';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** Time in ms to throttle repositioning after scroll events. */\nconst SCROLL_THROTTLE_MS = 20;\n/**\n * Creates an error to be thrown if the user supplied an invalid tooltip position.\n * @docs-private\n */\nfunction getMatTooltipInvalidPositionError(position) {\n return Error(`Tooltip position \"${position}\" is invalid.`);\n}\n/** Injection token that determines the scroll handling while a tooltip is visible. */\nconst MAT_TOOLTIP_SCROLL_STRATEGY = new InjectionToken('mat-tooltip-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS });\n },\n});\n/** @docs-private */\nfunction MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: SCROLL_THROTTLE_MS });\n}\n/** @docs-private */\nconst MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_TOOLTIP_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY,\n};\n/** @docs-private */\nfunction MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY() {\n return {\n showDelay: 0,\n hideDelay: 0,\n touchendHideDelay: 1500,\n };\n}\n/** Injection token to be used to override the default options for `matTooltip`. */\nconst MAT_TOOLTIP_DEFAULT_OPTIONS = new InjectionToken('mat-tooltip-default-options', {\n providedIn: 'root',\n factory: MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY,\n});\n/**\n * CSS class that will be attached to the overlay panel.\n * @deprecated\n * @breaking-change 13.0.0 remove this variable\n */\nconst TOOLTIP_PANEL_CLASS = 'mat-mdc-tooltip-panel';\nconst PANEL_CLASS = 'tooltip-panel';\n/** Options used to bind passive event listeners. */\nconst passiveListenerOptions = normalizePassiveListenerOptions({ passive: true });\n// These constants were taken from MDC's `numbers` object. We can't import them from MDC,\n// because they have some top-level references to `window` which break during SSR.\nconst MIN_VIEWPORT_TOOLTIP_THRESHOLD = 8;\nconst UNBOUNDED_ANCHOR_GAP = 8;\nconst MIN_HEIGHT = 24;\nconst MAX_WIDTH = 200;\n/**\n * Directive that attaches a material design tooltip to the host element. Animates the showing and\n * hiding of a tooltip provided position (defaults to below the element).\n *\n * https://material.io/design/components/tooltips.html\n */\nclass MatTooltip {\n /** Allows the user to define the position of the tooltip relative to the parent element */\n get position() {\n return this._position;\n }\n set position(value) {\n if (value !== this._position) {\n this._position = value;\n if (this._overlayRef) {\n this._updatePosition(this._overlayRef);\n this._tooltipInstance?.show(0);\n this._overlayRef.updatePosition();\n }\n }\n }\n /**\n * Whether tooltip should be relative to the click or touch origin\n * instead of outside the element bounding box.\n */\n get positionAtOrigin() {\n return this._positionAtOrigin;\n }\n set positionAtOrigin(value) {\n this._positionAtOrigin = coerceBooleanProperty(value);\n this._detach();\n this._overlayRef = null;\n }\n /** Disables the display of the tooltip. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n const isDisabled = coerceBooleanProperty(value);\n if (this._disabled !== isDisabled) {\n this._disabled = isDisabled;\n // If tooltip is disabled, hide immediately.\n if (isDisabled) {\n this.hide(0);\n }\n else {\n this._setupPointerEnterEventsIfNeeded();\n }\n this._syncAriaDescription(this.message);\n }\n }\n /** The default delay in ms before showing the tooltip after show is called */\n get showDelay() {\n return this._showDelay;\n }\n set showDelay(value) {\n this._showDelay = coerceNumberProperty(value);\n }\n /** The default delay in ms before hiding the tooltip after hide is called */\n get hideDelay() {\n return this._hideDelay;\n }\n set hideDelay(value) {\n this._hideDelay = coerceNumberProperty(value);\n if (this._tooltipInstance) {\n this._tooltipInstance._mouseLeaveHideDelay = this._hideDelay;\n }\n }\n /** The message to be displayed in the tooltip */\n get message() {\n return this._message;\n }\n set message(value) {\n const oldMessage = this._message;\n // If the message is not a string (e.g. number), convert it to a string and trim it.\n // Must convert with `String(value)`, not `${value}`, otherwise Closure Compiler optimises\n // away the string-conversion: https://github.com/angular/components/issues/20684\n this._message = value != null ? String(value).trim() : '';\n if (!this._message && this._isTooltipVisible()) {\n this.hide(0);\n }\n else {\n this._setupPointerEnterEventsIfNeeded();\n this._updateTooltipMessage();\n }\n this._syncAriaDescription(oldMessage);\n }\n /** Classes to be passed to the tooltip. Supports the same syntax as `ngClass`. */\n get tooltipClass() {\n return this._tooltipClass;\n }\n set tooltipClass(value) {\n this._tooltipClass = value;\n if (this._tooltipInstance) {\n this._setTooltipClass(this._tooltipClass);\n }\n }\n constructor(_overlay, _elementRef, _scrollDispatcher, _viewContainerRef, _ngZone, _platform, _ariaDescriber, _focusMonitor, scrollStrategy, _dir, _defaultOptions, _document) {\n this._overlay = _overlay;\n this._elementRef = _elementRef;\n this._scrollDispatcher = _scrollDispatcher;\n this._viewContainerRef = _viewContainerRef;\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._ariaDescriber = _ariaDescriber;\n this._focusMonitor = _focusMonitor;\n this._dir = _dir;\n this._defaultOptions = _defaultOptions;\n this._position = 'below';\n this._positionAtOrigin = false;\n this._disabled = false;\n this._viewInitialized = false;\n this._pointerExitEventsInitialized = false;\n this._tooltipComponent = TooltipComponent;\n this._viewportMargin = 8;\n this._cssClassPrefix = 'mat-mdc';\n /**\n * How touch gestures should be handled by the tooltip. On touch devices the tooltip directive\n * uses a long press gesture to show and hide, however it can conflict with the native browser\n * gestures. To work around the conflict, Angular Material disables native gestures on the\n * trigger, but that might not be desirable on particular elements (e.g. inputs and draggable\n * elements). The different values for this option configure the touch event handling as follows:\n * - `auto` - Enables touch gestures for all elements, but tries to avoid conflicts with native\n * browser gestures on particular elements. In particular, it allows text selection on inputs\n * and textareas, and preserves the native browser dragging on elements marked as `draggable`.\n * - `on` - Enables touch gestures for all elements and disables native\n * browser gestures with no exceptions.\n * - `off` - Disables touch gestures. Note that this will prevent the tooltip from\n * showing on touch devices.\n */\n this.touchGestures = 'auto';\n this._message = '';\n /** Manually-bound passive event listeners. */\n this._passiveListeners = [];\n /** Timer started at the last `touchstart` event. */\n this._touchstartTimeout = null;\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n this._injector = inject(Injector);\n this._scrollStrategy = scrollStrategy;\n this._document = _document;\n if (_defaultOptions) {\n this._showDelay = _defaultOptions.showDelay;\n this._hideDelay = _defaultOptions.hideDelay;\n if (_defaultOptions.position) {\n this.position = _defaultOptions.position;\n }\n if (_defaultOptions.positionAtOrigin) {\n this.positionAtOrigin = _defaultOptions.positionAtOrigin;\n }\n if (_defaultOptions.touchGestures) {\n this.touchGestures = _defaultOptions.touchGestures;\n }\n if (_defaultOptions.tooltipClass) {\n this.tooltipClass = _defaultOptions.tooltipClass;\n }\n }\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (this._overlayRef) {\n this._updatePosition(this._overlayRef);\n }\n });\n this._viewportMargin = MIN_VIEWPORT_TOOLTIP_THRESHOLD;\n }\n ngAfterViewInit() {\n // This needs to happen after view init so the initial values for all inputs have been set.\n this._viewInitialized = true;\n this._setupPointerEnterEventsIfNeeded();\n this._focusMonitor\n .monitor(this._elementRef)\n .pipe(takeUntil(this._destroyed))\n .subscribe(origin => {\n // Note that the focus monitor runs outside the Angular zone.\n if (!origin) {\n this._ngZone.run(() => this.hide(0));\n }\n else if (origin === 'keyboard') {\n this._ngZone.run(() => this.show());\n }\n });\n }\n /**\n * Dispose the tooltip when destroyed.\n */\n ngOnDestroy() {\n const nativeElement = this._elementRef.nativeElement;\n // Optimization: Do not call clearTimeout unless there is an active timer.\n if (this._touchstartTimeout) {\n clearTimeout(this._touchstartTimeout);\n }\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._tooltipInstance = null;\n }\n // Clean up the event listeners set in the constructor\n this._passiveListeners.forEach(([event, listener]) => {\n nativeElement.removeEventListener(event, listener, passiveListenerOptions);\n });\n this._passiveListeners.length = 0;\n this._destroyed.next();\n this._destroyed.complete();\n this._ariaDescriber.removeDescription(nativeElement, this.message, 'tooltip');\n this._focusMonitor.stopMonitoring(nativeElement);\n }\n /** Shows the tooltip after the delay in ms, defaults to tooltip-delay-show or 0ms if no input */\n show(delay = this.showDelay, origin) {\n if (this.disabled || !this.message || this._isTooltipVisible()) {\n this._tooltipInstance?._cancelPendingAnimations();\n return;\n }\n const overlayRef = this._createOverlay(origin);\n this._detach();\n this._portal =\n this._portal || new ComponentPortal(this._tooltipComponent, this._viewContainerRef);\n const instance = (this._tooltipInstance = overlayRef.attach(this._portal).instance);\n instance._triggerElement = this._elementRef.nativeElement;\n instance._mouseLeaveHideDelay = this._hideDelay;\n instance\n .afterHidden()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n this._setTooltipClass(this._tooltipClass);\n this._updateTooltipMessage();\n instance.show(delay);\n }\n /** Hides the tooltip after the delay in ms, defaults to tooltip-delay-hide or 0ms if no input */\n hide(delay = this.hideDelay) {\n const instance = this._tooltipInstance;\n if (instance) {\n if (instance.isVisible()) {\n instance.hide(delay);\n }\n else {\n instance._cancelPendingAnimations();\n this._detach();\n }\n }\n }\n /** Shows/hides the tooltip */\n toggle(origin) {\n this._isTooltipVisible() ? this.hide() : this.show(undefined, origin);\n }\n /** Returns true if the tooltip is currently visible to the user */\n _isTooltipVisible() {\n return !!this._tooltipInstance && this._tooltipInstance.isVisible();\n }\n /** Create the overlay config and position strategy */\n _createOverlay(origin) {\n if (this._overlayRef) {\n const existingStrategy = this._overlayRef.getConfig()\n .positionStrategy;\n if ((!this.positionAtOrigin || !origin) && existingStrategy._origin instanceof ElementRef) {\n return this._overlayRef;\n }\n this._detach();\n }\n const scrollableAncestors = this._scrollDispatcher.getAncestorScrollContainers(this._elementRef);\n // Create connected position strategy that listens for scroll events to reposition.\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this.positionAtOrigin ? origin || this._elementRef : this._elementRef)\n .withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`)\n .withFlexibleDimensions(false)\n .withViewportMargin(this._viewportMargin)\n .withScrollableContainers(scrollableAncestors);\n strategy.positionChanges.pipe(takeUntil(this._destroyed)).subscribe(change => {\n this._updateCurrentPositionClass(change.connectionPair);\n if (this._tooltipInstance) {\n if (change.scrollableViewProperties.isOverlayClipped && this._tooltipInstance.isVisible()) {\n // After position changes occur and the overlay is clipped by\n // a parent scrollable then close the tooltip.\n this._ngZone.run(() => this.hide(0));\n }\n }\n });\n this._overlayRef = this._overlay.create({\n direction: this._dir,\n positionStrategy: strategy,\n panelClass: `${this._cssClassPrefix}-${PANEL_CLASS}`,\n scrollStrategy: this._scrollStrategy(),\n });\n this._updatePosition(this._overlayRef);\n this._overlayRef\n .detachments()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._detach());\n this._overlayRef\n .outsidePointerEvents()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._tooltipInstance?._handleBodyInteraction());\n this._overlayRef\n .keydownEvents()\n .pipe(takeUntil(this._destroyed))\n .subscribe(event => {\n if (this._isTooltipVisible() && event.keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n event.stopPropagation();\n this._ngZone.run(() => this.hide(0));\n }\n });\n if (this._defaultOptions?.disableTooltipInteractivity) {\n this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`);\n }\n return this._overlayRef;\n }\n /** Detaches the currently-attached tooltip. */\n _detach() {\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n }\n this._tooltipInstance = null;\n }\n /** Updates the position of the current tooltip. */\n _updatePosition(overlayRef) {\n const position = overlayRef.getConfig().positionStrategy;\n const origin = this._getOrigin();\n const overlay = this._getOverlayPosition();\n position.withPositions([\n this._addOffset({ ...origin.main, ...overlay.main }),\n this._addOffset({ ...origin.fallback, ...overlay.fallback }),\n ]);\n }\n /** Adds the configured offset to a position. Used as a hook for child classes. */\n _addOffset(position) {\n const offset = UNBOUNDED_ANCHOR_GAP;\n const isLtr = !this._dir || this._dir.value == 'ltr';\n if (position.originY === 'top') {\n position.offsetY = -offset;\n }\n else if (position.originY === 'bottom') {\n position.offsetY = offset;\n }\n else if (position.originX === 'start') {\n position.offsetX = isLtr ? -offset : offset;\n }\n else if (position.originX === 'end') {\n position.offsetX = isLtr ? offset : -offset;\n }\n return position;\n }\n /**\n * Returns the origin position and a fallback position based on the user's position preference.\n * The fallback position is the inverse of the origin (e.g. `'below' -> 'above'`).\n */\n _getOrigin() {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let originPosition;\n if (position == 'above' || position == 'below') {\n originPosition = { originX: 'center', originY: position == 'above' ? 'top' : 'bottom' };\n }\n else if (position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)) {\n originPosition = { originX: 'start', originY: 'center' };\n }\n else if (position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)) {\n originPosition = { originX: 'end', originY: 'center' };\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getMatTooltipInvalidPositionError(position);\n }\n const { x, y } = this._invertPosition(originPosition.originX, originPosition.originY);\n return {\n main: originPosition,\n fallback: { originX: x, originY: y },\n };\n }\n /** Returns the overlay position and a fallback position based on the user's preference */\n _getOverlayPosition() {\n const isLtr = !this._dir || this._dir.value == 'ltr';\n const position = this.position;\n let overlayPosition;\n if (position == 'above') {\n overlayPosition = { overlayX: 'center', overlayY: 'bottom' };\n }\n else if (position == 'below') {\n overlayPosition = { overlayX: 'center', overlayY: 'top' };\n }\n else if (position == 'before' ||\n (position == 'left' && isLtr) ||\n (position == 'right' && !isLtr)) {\n overlayPosition = { overlayX: 'end', overlayY: 'center' };\n }\n else if (position == 'after' ||\n (position == 'right' && isLtr) ||\n (position == 'left' && !isLtr)) {\n overlayPosition = { overlayX: 'start', overlayY: 'center' };\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getMatTooltipInvalidPositionError(position);\n }\n const { x, y } = this._invertPosition(overlayPosition.overlayX, overlayPosition.overlayY);\n return {\n main: overlayPosition,\n fallback: { overlayX: x, overlayY: y },\n };\n }\n /** Updates the tooltip message and repositions the overlay according to the new message length */\n _updateTooltipMessage() {\n // Must wait for the message to be painted to the tooltip so that the overlay can properly\n // calculate the correct positioning based on the size of the text.\n if (this._tooltipInstance) {\n this._tooltipInstance.message = this.message;\n this._tooltipInstance._markForCheck();\n afterNextRender(() => {\n if (this._tooltipInstance) {\n this._overlayRef.updatePosition();\n }\n }, {\n injector: this._injector,\n });\n }\n }\n /** Updates the tooltip class */\n _setTooltipClass(tooltipClass) {\n if (this._tooltipInstance) {\n this._tooltipInstance.tooltipClass = tooltipClass;\n this._tooltipInstance._markForCheck();\n }\n }\n /** Inverts an overlay position. */\n _invertPosition(x, y) {\n if (this.position === 'above' || this.position === 'below') {\n if (y === 'top') {\n y = 'bottom';\n }\n else if (y === 'bottom') {\n y = 'top';\n }\n }\n else {\n if (x === 'end') {\n x = 'start';\n }\n else if (x === 'start') {\n x = 'end';\n }\n }\n return { x, y };\n }\n /** Updates the class on the overlay panel based on the current position of the tooltip. */\n _updateCurrentPositionClass(connectionPair) {\n const { overlayY, originX, originY } = connectionPair;\n let newPosition;\n // If the overlay is in the middle along the Y axis,\n // it means that it's either before or after.\n if (overlayY === 'center') {\n // Note that since this information is used for styling, we want to\n // resolve `start` and `end` to their real values, otherwise consumers\n // would have to remember to do it themselves on each consumption.\n if (this._dir && this._dir.value === 'rtl') {\n newPosition = originX === 'end' ? 'left' : 'right';\n }\n else {\n newPosition = originX === 'start' ? 'left' : 'right';\n }\n }\n else {\n newPosition = overlayY === 'bottom' && originY === 'top' ? 'above' : 'below';\n }\n if (newPosition !== this._currentPosition) {\n const overlayRef = this._overlayRef;\n if (overlayRef) {\n const classPrefix = `${this._cssClassPrefix}-${PANEL_CLASS}-`;\n overlayRef.removePanelClass(classPrefix + this._currentPosition);\n overlayRef.addPanelClass(classPrefix + newPosition);\n }\n this._currentPosition = newPosition;\n }\n }\n /** Binds the pointer events to the tooltip trigger. */\n _setupPointerEnterEventsIfNeeded() {\n // Optimization: Defer hooking up events if there's no message or the tooltip is disabled.\n if (this._disabled ||\n !this.message ||\n !this._viewInitialized ||\n this._passiveListeners.length) {\n return;\n }\n // The mouse events shouldn't be bound on mobile devices, because they can prevent the\n // first tap from firing its click event or can cause the tooltip to open for clicks.\n if (this._platformSupportsMouseEvents()) {\n this._passiveListeners.push([\n 'mouseenter',\n event => {\n this._setupPointerExitEventsIfNeeded();\n let point = undefined;\n if (event.x !== undefined && event.y !== undefined) {\n point = event;\n }\n this.show(undefined, point);\n },\n ]);\n }\n else if (this.touchGestures !== 'off') {\n this._disableNativeGesturesIfNecessary();\n this._passiveListeners.push([\n 'touchstart',\n event => {\n const touch = event.targetTouches?.[0];\n const origin = touch ? { x: touch.clientX, y: touch.clientY } : undefined;\n // Note that it's important that we don't `preventDefault` here,\n // because it can prevent click events from firing on the element.\n this._setupPointerExitEventsIfNeeded();\n if (this._touchstartTimeout) {\n clearTimeout(this._touchstartTimeout);\n }\n const DEFAULT_LONGPRESS_DELAY = 500;\n this._touchstartTimeout = setTimeout(() => {\n this._touchstartTimeout = null;\n this.show(undefined, origin);\n }, this._defaultOptions.touchLongPressShowDelay ?? DEFAULT_LONGPRESS_DELAY);\n },\n ]);\n }\n this._addListeners(this._passiveListeners);\n }\n _setupPointerExitEventsIfNeeded() {\n if (this._pointerExitEventsInitialized) {\n return;\n }\n this._pointerExitEventsInitialized = true;\n const exitListeners = [];\n if (this._platformSupportsMouseEvents()) {\n exitListeners.push([\n 'mouseleave',\n event => {\n const newTarget = event.relatedTarget;\n if (!newTarget || !this._overlayRef?.overlayElement.contains(newTarget)) {\n this.hide();\n }\n },\n ], ['wheel', event => this._wheelListener(event)]);\n }\n else if (this.touchGestures !== 'off') {\n this._disableNativeGesturesIfNecessary();\n const touchendListener = () => {\n if (this._touchstartTimeout) {\n clearTimeout(this._touchstartTimeout);\n }\n this.hide(this._defaultOptions.touchendHideDelay);\n };\n exitListeners.push(['touchend', touchendListener], ['touchcancel', touchendListener]);\n }\n this._addListeners(exitListeners);\n this._passiveListeners.push(...exitListeners);\n }\n _addListeners(listeners) {\n listeners.forEach(([event, listener]) => {\n this._elementRef.nativeElement.addEventListener(event, listener, passiveListenerOptions);\n });\n }\n _platformSupportsMouseEvents() {\n return !this._platform.IOS && !this._platform.ANDROID;\n }\n /** Listener for the `wheel` event on the element. */\n _wheelListener(event) {\n if (this._isTooltipVisible()) {\n const elementUnderPointer = this._document.elementFromPoint(event.clientX, event.clientY);\n const element = this._elementRef.nativeElement;\n // On non-touch devices we depend on the `mouseleave` event to close the tooltip, but it\n // won't fire if the user scrolls away using the wheel without moving their cursor. We\n // work around it by finding the element under the user's cursor and closing the tooltip\n // if it's not the trigger.\n if (elementUnderPointer !== element && !element.contains(elementUnderPointer)) {\n this.hide();\n }\n }\n }\n /** Disables the native browser gestures, based on how the tooltip has been configured. */\n _disableNativeGesturesIfNecessary() {\n const gestures = this.touchGestures;\n if (gestures !== 'off') {\n const element = this._elementRef.nativeElement;\n const style = element.style;\n // If gestures are set to `auto`, we don't disable text selection on inputs and\n // textareas, because it prevents the user from typing into them on iOS Safari.\n if (gestures === 'on' || (element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA')) {\n style.userSelect =\n style.msUserSelect =\n style.webkitUserSelect =\n style.MozUserSelect =\n 'none';\n }\n // If we have `auto` gestures and the element uses native HTML dragging,\n // we don't set `-webkit-user-drag` because it prevents the native behavior.\n if (gestures === 'on' || !element.draggable) {\n style.webkitUserDrag = 'none';\n }\n style.touchAction = 'none';\n style.webkitTapHighlightColor = 'transparent';\n }\n }\n /** Updates the tooltip's ARIA description based on it current state. */\n _syncAriaDescription(oldMessage) {\n if (this._ariaDescriptionPending) {\n return;\n }\n this._ariaDescriptionPending = true;\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, oldMessage, 'tooltip');\n this._ngZone.runOutsideAngular(() => {\n // The `AriaDescriber` has some functionality that avoids adding a description if it's the\n // same as the `aria-label` of an element, however we can't know whether the tooltip trigger\n // has a data-bound `aria-label` or when it'll be set for the first time. We can avoid the\n // issue by deferring the description by a tick so Angular has time to set the `aria-label`.\n Promise.resolve().then(() => {\n this._ariaDescriptionPending = false;\n if (this.message && !this.disabled) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, this.message, 'tooltip');\n }\n });\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTooltip, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }, { token: i1.ScrollDispatcher }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i2.Platform }, { token: i3.AriaDescriber }, { token: i3.FocusMonitor }, { token: MAT_TOOLTIP_SCROLL_STRATEGY }, { token: i4.Directionality }, { token: MAT_TOOLTIP_DEFAULT_OPTIONS, optional: true }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatTooltip, isStandalone: true, selector: \"[matTooltip]\", inputs: { position: [\"matTooltipPosition\", \"position\"], positionAtOrigin: [\"matTooltipPositionAtOrigin\", \"positionAtOrigin\"], disabled: [\"matTooltipDisabled\", \"disabled\"], showDelay: [\"matTooltipShowDelay\", \"showDelay\"], hideDelay: [\"matTooltipHideDelay\", \"hideDelay\"], touchGestures: [\"matTooltipTouchGestures\", \"touchGestures\"], message: [\"matTooltip\", \"message\"], tooltipClass: [\"matTooltipClass\", \"tooltipClass\"] }, host: { properties: { \"class.mat-mdc-tooltip-disabled\": \"disabled\" }, classAttribute: \"mat-mdc-tooltip-trigger\" }, exportAs: [\"matTooltip\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTooltip, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTooltip]',\n exportAs: 'matTooltip',\n host: {\n 'class': 'mat-mdc-tooltip-trigger',\n '[class.mat-mdc-tooltip-disabled]': 'disabled',\n },\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ElementRef }, { type: i1.ScrollDispatcher }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i2.Platform }, { type: i3.AriaDescriber }, { type: i3.FocusMonitor }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TOOLTIP_SCROLL_STRATEGY]\n }] }, { type: i4.Directionality }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_TOOLTIP_DEFAULT_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }], propDecorators: { position: [{\n type: Input,\n args: ['matTooltipPosition']\n }], positionAtOrigin: [{\n type: Input,\n args: ['matTooltipPositionAtOrigin']\n }], disabled: [{\n type: Input,\n args: ['matTooltipDisabled']\n }], showDelay: [{\n type: Input,\n args: ['matTooltipShowDelay']\n }], hideDelay: [{\n type: Input,\n args: ['matTooltipHideDelay']\n }], touchGestures: [{\n type: Input,\n args: ['matTooltipTouchGestures']\n }], message: [{\n type: Input,\n args: ['matTooltip']\n }], tooltipClass: [{\n type: Input,\n args: ['matTooltipClass']\n }] } });\n/**\n * Internal component that wraps the tooltip's content.\n * @docs-private\n */\nclass TooltipComponent {\n constructor(_changeDetectorRef, _elementRef, animationMode) {\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n /* Whether the tooltip text overflows to multiple lines */\n this._isMultiline = false;\n /** Whether interactions on the page should close the tooltip */\n this._closeOnInteraction = false;\n /** Whether the tooltip is currently visible. */\n this._isVisible = false;\n /** Subject for notifying that the tooltip has been hidden from the view */\n this._onHide = new Subject();\n /** Name of the show animation and the class that toggles it. */\n this._showAnimation = 'mat-mdc-tooltip-show';\n /** Name of the hide animation and the class that toggles it. */\n this._hideAnimation = 'mat-mdc-tooltip-hide';\n this._animationsDisabled = animationMode === 'NoopAnimations';\n }\n /**\n * Shows the tooltip with an animation originating from the provided origin\n * @param delay Amount of milliseconds to the delay showing the tooltip.\n */\n show(delay) {\n // Cancel the delayed hide if it is scheduled\n if (this._hideTimeoutId != null) {\n clearTimeout(this._hideTimeoutId);\n }\n this._showTimeoutId = setTimeout(() => {\n this._toggleVisibility(true);\n this._showTimeoutId = undefined;\n }, delay);\n }\n /**\n * Begins the animation to hide the tooltip after the provided delay in ms.\n * @param delay Amount of milliseconds to delay showing the tooltip.\n */\n hide(delay) {\n // Cancel the delayed show if it is scheduled\n if (this._showTimeoutId != null) {\n clearTimeout(this._showTimeoutId);\n }\n this._hideTimeoutId = setTimeout(() => {\n this._toggleVisibility(false);\n this._hideTimeoutId = undefined;\n }, delay);\n }\n /** Returns an observable that notifies when the tooltip has been hidden from view. */\n afterHidden() {\n return this._onHide;\n }\n /** Whether the tooltip is being displayed. */\n isVisible() {\n return this._isVisible;\n }\n ngOnDestroy() {\n this._cancelPendingAnimations();\n this._onHide.complete();\n this._triggerElement = null;\n }\n /**\n * Interactions on the HTML body should close the tooltip immediately as defined in the\n * material design spec.\n * https://material.io/design/components/tooltips.html#behavior\n */\n _handleBodyInteraction() {\n if (this._closeOnInteraction) {\n this.hide(0);\n }\n }\n /**\n * Marks that the tooltip needs to be checked in the next change detection run.\n * Mainly used for rendering the initial text before positioning a tooltip, which\n * can be problematic in components with OnPush change detection.\n */\n _markForCheck() {\n this._changeDetectorRef.markForCheck();\n }\n _handleMouseLeave({ relatedTarget }) {\n if (!relatedTarget || !this._triggerElement.contains(relatedTarget)) {\n if (this.isVisible()) {\n this.hide(this._mouseLeaveHideDelay);\n }\n else {\n this._finalizeAnimation(false);\n }\n }\n }\n /**\n * Callback for when the timeout in this.show() gets completed.\n * This method is only needed by the mdc-tooltip, and so it is only implemented\n * in the mdc-tooltip, not here.\n */\n _onShow() {\n this._isMultiline = this._isTooltipMultiline();\n this._markForCheck();\n }\n /** Whether the tooltip text has overflown to the next line */\n _isTooltipMultiline() {\n const rect = this._elementRef.nativeElement.getBoundingClientRect();\n return rect.height > MIN_HEIGHT && rect.width >= MAX_WIDTH;\n }\n /** Event listener dispatched when an animation on the tooltip finishes. */\n _handleAnimationEnd({ animationName }) {\n if (animationName === this._showAnimation || animationName === this._hideAnimation) {\n this._finalizeAnimation(animationName === this._showAnimation);\n }\n }\n /** Cancels any pending animation sequences. */\n _cancelPendingAnimations() {\n if (this._showTimeoutId != null) {\n clearTimeout(this._showTimeoutId);\n }\n if (this._hideTimeoutId != null) {\n clearTimeout(this._hideTimeoutId);\n }\n this._showTimeoutId = this._hideTimeoutId = undefined;\n }\n /** Handles the cleanup after an animation has finished. */\n _finalizeAnimation(toVisible) {\n if (toVisible) {\n this._closeOnInteraction = true;\n }\n else if (!this.isVisible()) {\n this._onHide.next();\n }\n }\n /** Toggles the visibility of the tooltip element. */\n _toggleVisibility(isVisible) {\n // We set the classes directly here ourselves so that toggling the tooltip state\n // isn't bound by change detection. This allows us to hide it even if the\n // view ref has been detached from the CD tree.\n const tooltip = this._tooltip.nativeElement;\n const showClass = this._showAnimation;\n const hideClass = this._hideAnimation;\n tooltip.classList.remove(isVisible ? hideClass : showClass);\n tooltip.classList.add(isVisible ? showClass : hideClass);\n if (this._isVisible !== isVisible) {\n this._isVisible = isVisible;\n this._changeDetectorRef.markForCheck();\n }\n // It's common for internal apps to disable animations using `* { animation: none !important }`\n // which can break the opening sequence. Try to detect such cases and work around them.\n if (isVisible && !this._animationsDisabled && typeof getComputedStyle === 'function') {\n const styles = getComputedStyle(tooltip);\n // Use `getPropertyValue` to avoid issues with property renaming.\n if (styles.getPropertyValue('animation-duration') === '0s' ||\n styles.getPropertyValue('animation-name') === 'none') {\n this._animationsDisabled = true;\n }\n }\n if (isVisible) {\n this._onShow();\n }\n if (this._animationsDisabled) {\n tooltip.classList.add('_mat-animation-noopable');\n this._finalizeAnimation(isVisible);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: TooltipComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: TooltipComponent, isStandalone: true, selector: \"mat-tooltip-component\", host: { attributes: { \"aria-hidden\": \"true\" }, listeners: { \"mouseleave\": \"_handleMouseLeave($event)\" } }, viewQueries: [{ propertyName: \"_tooltip\", first: true, predicate: [\"tooltip\"], descendants: true, static: true }], ngImport: i0, template: \"<div\\n #tooltip\\n class=\\\"mdc-tooltip mat-mdc-tooltip\\\"\\n [ngClass]=\\\"tooltipClass\\\"\\n (animationend)=\\\"_handleAnimationEnd($event)\\\"\\n [class.mdc-tooltip--multiline]=\\\"_isMultiline\\\">\\n <div class=\\\"mat-mdc-tooltip-surface mdc-tooltip__surface\\\">{{message}}</div>\\n</div>\\n\", styles: [\".mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:\\\"\\\";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mdc-plain-tooltip-container-color, var(--mat-app-inverse-surface));color:var(--mdc-plain-tooltip-supporting-text-color, var(--mat-app-inverse-on-surface));border-radius:var(--mdc-plain-tooltip-container-shape, var(--mat-app-corner-extra-small));font-family:var(--mdc-plain-tooltip-supporting-text-font, var(--mat-app-body-small-font));font-size:var(--mdc-plain-tooltip-supporting-text-size, var(--mat-app-body-small-size));font-weight:var(--mdc-plain-tooltip-supporting-text-weight, var(--mat-app-body-small-weight));line-height:var(--mdc-plain-tooltip-supporting-text-line-height, var(--mat-app-body-small-line-height));letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking, var(--mat-app-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}\"], dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: TooltipComponent, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tooltip-component', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n '(mouseleave)': '_handleMouseLeave($event)',\n 'aria-hidden': 'true',\n }, standalone: true, imports: [NgClass], template: \"<div\\n #tooltip\\n class=\\\"mdc-tooltip mat-mdc-tooltip\\\"\\n [ngClass]=\\\"tooltipClass\\\"\\n (animationend)=\\\"_handleAnimationEnd($event)\\\"\\n [class.mdc-tooltip--multiline]=\\\"_isMultiline\\\">\\n <div class=\\\"mat-mdc-tooltip-surface mdc-tooltip__surface\\\">{{message}}</div>\\n</div>\\n\", styles: [\".mat-mdc-tooltip{position:relative;transform:scale(0);display:inline-flex}.mat-mdc-tooltip::before{content:\\\"\\\";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-surface{word-break:normal;overflow-wrap:anywhere;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center;will-change:transform,opacity;background-color:var(--mdc-plain-tooltip-container-color, var(--mat-app-inverse-surface));color:var(--mdc-plain-tooltip-supporting-text-color, var(--mat-app-inverse-on-surface));border-radius:var(--mdc-plain-tooltip-container-shape, var(--mat-app-corner-extra-small));font-family:var(--mdc-plain-tooltip-supporting-text-font, var(--mat-app-body-small-font));font-size:var(--mdc-plain-tooltip-supporting-text-size, var(--mat-app-body-small-size));font-weight:var(--mdc-plain-tooltip-supporting-text-weight, var(--mat-app-body-small-weight));line-height:var(--mdc-plain-tooltip-supporting-text-line-height, var(--mat-app-body-small-line-height));letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking, var(--mat-app-body-small-tracking))}.mat-mdc-tooltip-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}.mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mat-mdc-tooltip-surface{text-align:right}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }], propDecorators: { _tooltip: [{\n type: ViewChild,\n args: ['tooltip', {\n // Use a static query here since we interact directly with\n // the DOM which can happen before `ngAfterViewInit`.\n static: true,\n }]\n }] } });\n\n/**\n * Animations used by MatTooltip.\n * @docs-private\n */\nconst matTooltipAnimations = {\n /** Animation that transitions a tooltip in and out. */\n tooltipState: trigger('state', [\n // TODO(crisbeto): these values are based on MDC's CSS.\n // We should be able to use their styles directly once we land #19432.\n state('initial, void, hidden', style({ opacity: 0, transform: 'scale(0.8)' })),\n state('visible', style({ transform: 'scale(1)' })),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => hidden', animate('75ms cubic-bezier(0.4, 0, 1, 1)')),\n ]),\n};\n\nclass MatTooltipModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTooltipModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTooltipModule, imports: [A11yModule, CommonModule, OverlayModule, MatCommonModule, MatTooltip, TooltipComponent], exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTooltipModule, providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [A11yModule, CommonModule, OverlayModule, MatCommonModule, MatCommonModule, CdkScrollableModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTooltipModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [A11yModule, CommonModule, OverlayModule, MatCommonModule, MatTooltip, TooltipComponent],\n exports: [MatTooltip, TooltipComponent, MatCommonModule, CdkScrollableModule],\n providers: [MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_TOOLTIP_DEFAULT_OPTIONS, MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY, MAT_TOOLTIP_SCROLL_STRATEGY, MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY, MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER, MatTooltip, MatTooltipModule, SCROLL_THROTTLE_MS, TOOLTIP_PANEL_CLASS, TooltipComponent, getMatTooltipInvalidPositionError, matTooltipAnimations };\n"],"names":["operate","innerFrom","createOperatorSubscriber","audit","durationSelector","source","subscriber","hasValue","lastValue","durationSubscriber","isComplete","endDuration","unsubscribe","value","next","complete","cleanupDuration","subscribe","closed","asyncScheduler","timer","auditTime","duration","scheduler","filter","skip","count","_","index","AsyncAction","immediateProvider","AsapAction","constructor","work","requestAsyncId","id","delay","actions","push","_scheduled","setImmediate","flush","bind","undefined","recycleAsyncId","_a","length","clearImmediate","AsyncScheduler","AsapScheduler","action","_active","flushId","error","shift","execute","state","asapScheduler","asap","Immediate","args","delegate","handle","nextHandle","resolved","activeHandles","findAndClearHandle","cb","Promise","resolve","then","TestTools","pending","Object","keys","DOCUMENT","i0","inject","APP_ID","Injectable","Inject","signal","QueryList","isSignal","effect","InjectionToken","afterNextRender","Injector","booleanAttribute","Directive","Input","Optional","EventEmitter","Output","NgModule","i1","Platform","_getFocusedElementPierceShadowDom","normalizePassiveListenerOptions","_getEventTarget","_getShadowRoot","A","Z","ZERO","NINE","hasModifierKey","PAGE_DOWN","PAGE_UP","END","HOME","LEFT_ARROW","RIGHT_ARROW","UP_ARROW","DOWN_ARROW","TAB","ALT","CONTROL","MAC_META","META","SHIFT","Subject","Subscription","isObservable","of","BehaviorSubject","tap","debounceTime","map","take","distinctUntilChanged","takeUntil","coerceObservable","i1$1","ObserversModule","coerceElement","BreakpointObserver","ID_DELIMITER","addAriaReferencedId","el","attr","ids","getAriaReferenceIds","trim","some","existingId","setAttribute","join","removeAriaReferencedId","filteredIds","val","removeAttribute","attrValue","getAttribute","match","MESSAGES_CONTAINER_ID","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","clear","createElement","textContent","_createMessagesContainer","appendChild","delete","containerClassName","serverContainers","messagesContainer","style","visibility","classList","add","isBrowser","body","element","originalReferenceIds","indexOf","referenceIds","messageId","trimmedMessage","ariaLabel","nodeType","ELEMENT_NODE","ɵfac","AriaDescriber_Factory","__ngFactoryType__","ɵɵinject","ɵprov","ɵɵdefineInjectable","token","factory","providedIn","ngDevMode","ɵsetClassMetadata","type","decorators","serviceId","DEFAULT_TYPEAHEAD_DEBOUNCE_INTERVAL_MS","Typeahead","initialItems","config","_letterKeyStream","_items","_selectedItemIndex","_pressedLetters","_selectedItem","selectedItem","typeAheadInterval","debounceInterval","skipPredicate","_skipPredicateFn","item","getLabel","Error","setItems","_setupKeyHandler","destroy","setCurrentSelectedItemIndex","items","handleKey","event","keyCode","toLocaleUpperCase","String","fromCharCode","isTyping","reset","pipe","letter","inputString","ListKeyManager","injector","_activeItemIndex","_activeItem","_wrap","_typeaheadSubscription","EMPTY","_vertical","_allowedModifierKeys","_homeAndEnd","_pageUpAndDown","enabled","delta","disabled","tabOut","change","_itemChangesSubscription","changes","newItems","_itemsChanged","toArray","_effectRef","predicate","withWrap","shouldWrap","withVerticalOrientation","withHorizontalOrientation","direction","_horizontal","withAllowedModifierKeys","withTypeAhead","_getItemsArray","_typeahead","setActiveItem","cancelTypeahead","withHomeAndEnd","withPageUpDown","previousActiveItem","updateActiveItem","onKeydown","modifiers","isModifierAllowed","every","modifier","setNextItemActive","setPreviousItemActive","setFirstItemActive","setLastItemActive","targetIndex","_setActiveItemByIndex","itemsLength","preventDefault","activeItemIndex","activeItem","_setActiveItemByDelta","itemArray","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","newIndex","ActiveDescendantKeyManager","setInactiveStyles","setActiveStyles","FocusKeyManager","arguments","_origin","setFocusOrigin","origin","focus","TreeKeyManager","_initializeFocus","_hasInitialFocused","activeIndex","_isItemDisabled","makeFocusable","unfocus","focusItem","_shouldActivationFollowFocus","_horizontalOrientation","_item","_trackByFn","_updateActiveItemIndex","shouldActivationFollowFocus","horizontalOrientation","trackBy","typeAheadDebounceInterval","_setTypeAhead","_focusNextItem","_focusPreviousItem","_collapseCurrentItem","_expandCurrentItem","_focusFirstItem","_focusLastItem","_activateCurrentItem","_expandAllItemsAtCurrentItemLevel","getActiveItemIndex","getActiveItem","_findNextAvailableItemIndex","_findPreviousAvailableItemIndex","itemOrIndex","options","emitChangeEvent","findIndex","startingIndex","_isCurrentItemExpanded","collapse","parent","getParent","expand","getChildren","children","firstChild","find","child","isExpanded","isDisabled","itemsToExpand","activate","TREE_KEY_MANAGER_FACTORY","TREE_KEY_MANAGER","TREE_KEY_MANAGER_FACTORY_PROVIDER","provide","useFactory","NoopTreeKeyManager","_isNoopTreeKeyManager","NOOP_TREE_KEY_MANAGER_FACTORY","NOOP_TREE_KEY_MANAGER_FACTORY_PROVIDER","IsFocusableConfig","ignoreVisibility","InteractivityChecker","hasAttribute","isVisible","hasGeometry","getComputedStyle","isTabbable","frameElement","getFrameElement","getWindow","getTabIndexValue","nodeName","toLowerCase","tabIndexValue","WEBKIT","IOS","isPotentiallyTabbableIOS","FIREFOX","tabIndex","isFocusable","isPotentiallyFocusable","InteractivityChecker_Factory","window","offsetWidth","offsetHeight","getClientRects","isNativeFormElement","isHiddenInput","isInputElement","isAnchorWithHref","isAnchorElement","hasValidTabIndex","isNaN","parseInt","inputType","node","ownerDocument","defaultView","FocusTrap","_enabled","_startAnchor","_endAnchor","_toggleAnchorTabIndex","_element","_checker","_ngZone","deferAnchors","_injector","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","attachAnchors","startAnchor","endAnchor","removeEventListener","runOutsideAngular","_createAnchor","addEventListener","parentNode","insertBefore","nextSibling","focusInitialElementWhenReady","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","console","warn","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","querySelector","focusableChild","hasAttached","root","tabbableChild","anchor","isEnabled","toggleAnchors","fn","setTimeout","FocusTrapFactory","create","deferCaptureElements","FocusTrapFactory_Factory","NgZone","CdkTrapFocus","focusTrap","_elementRef","_focusTrapFactory","_previouslyFocusedElement","platform","nativeElement","ngAfterContentInit","autoCapture","_captureFocus","ngDoCheck","ngOnChanges","autoCaptureChange","firstChange","CdkTrapFocus_Factory","ɵɵdirectiveInject","ElementRef","ɵdir","ɵɵdefineDirective","selectors","inputs","exportAs","standalone","features","ɵɵInputTransformsFeature","ɵɵNgOnChangesFeature","selector","alias","transform","ConfigurableFocusTrap","_focusTrapManager","register","deregister","_inertStrategy","defer","_enable","preventFocus","_disable","allowFocus","EventListenerFocusTrapInertStrategy","_listener","e","_trapFocus","target","focusTrapRoot","contains","closest","activeElement","FOCUS_TRAP_INERT_STRATEGY","FocusTrapManager","_focusTrapStack","ft","stack","splice","FocusTrapManager_Factory","ConfigurableFocusTrapFactory","configObject","ConfigurableFocusTrapFactory_Factory","isFakeMousedownFromScreenReader","buttons","detail","isFakeTouchstartFromScreenReader","touch","touches","changedTouches","identifier","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","TOUCH_BUFFER_MS","modalityEventListenerOptions","passive","capture","InputModalityDetector","mostRecentModality","_modality","ngZone","document","_mostRecentTarget","_lastTouchMs","_onKeydown","_options","_onMousedown","Date","now","_onTouchstart","modalityDetected","modalityChanged","InputModalityDetector_Factory","Document","LIVE_ANNOUNCER_ELEMENT_TOKEN","LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY","LIVE_ANNOUNCER_DEFAULT_OPTIONS","uniqueIds","LiveAnnouncer","elementToken","_defaultOptions","_liveElement","_createLiveElement","announce","defaultOptions","politeness","clearTimeout","_previousTimeout","_exposeAnnouncerToModals","_currentPromise","_currentResolve","elementClass","previousElements","getElementsByClassName","liveEl","modals","modal","ariaOwns","LiveAnnouncer_Factory","CdkAriaLive","_politeness","_subscription","_contentObserver","observe","elementText","_previousAnnouncedText","_liveAnnouncer","CdkAriaLive_Factory","ContentObserver","FocusMonitorDetectionMode","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","parentElement","_onFocus","_onBlur","_detectionMode","detectionMode","IMMEDIATE","monitor","checkChildren","rootNode","_getDocument","cachedInfo","subject","info","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","focusedElement","_getClosestElementsInfo","forEach","currentElement","_originChanged","_setOrigin","_info","_getWindow","doc","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","_isLastInteractionFromInputLabel","EVENTUAL","toggle","isFromInteraction","_originTimeoutId","ms","relatedTarget","Node","_emitOrigin","observers","run","rootNodeFocusListeners","modality","results","mostRecentTarget","labels","FocusMonitor_Factory","CdkMonitorFocus","_focusMonitor","_focusOrigin","cdkFocusChange","focusOrigin","ngAfterViewInit","_monitorSubscription","emit","CdkMonitorFocus_Factory","outputs","HighContrastMode","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","_breakpointSubscription","_hasCheckedHighContrastMode","_applyBodyHighContrastModeCssClasses","getHighContrastMode","NONE","testElement","backgroundColor","position","documentWindow","computedStyle","computedColor","replace","WHITE_ON_BLACK","BLACK_ON_WHITE","bodyClasses","mode","HighContrastModeDetector_Factory","A11yModule","highContrastModeDetector","A11yModule_Factory","ɵmod","ɵɵdefineNgModule","ɵinj","ɵɵdefineInjector","imports","exports","Version","VERSION","data","ConnectableObservable","DataSource","isDataSource","connect","ArrayDataSource","_data","disconnect","_ViewRepeaterOperation","_VIEW_REPEATER_STRATEGY","_DisposeViewRepeaterStrategy","applyChanges","viewContainerRef","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","record","adjustedPreviousIndex","currentIndex","view","operation","previousIndex","insertContext","createEmbeddedView","templateRef","context","INSERTED","REMOVED","move","MOVED","detach","_RecycleViewRepeaterStrategy","viewCacheSize","_viewCache","viewArgsFactory","_insertView","REPLACED","_detachAndCacheView","_moveView","cachedView","_insertViewFromCache","$implicit","viewArgs","detachedView","_maybeCacheView","pop","insert","SelectionModel","selected","_selected","Array","from","_selection","values","_multiple","initiallySelectedValues","_emitChanges","compareWith","Set","_deselectedToEmit","_selectedToEmit","changed","_markSelected","select","_verifyValueAssignment","_hasQueuedChanges","_emitChangeEvent","deselect","_unmarkSelected","setSelection","oldValues","newSelectedSet","_getConcreteValue","isSelected","flushEvent","_unmarkAll","isEmpty","size","sort","isMultipleSelection","added","removed","getMultipleValuesInSingleSelectionError","inputValue","selection","selectedValue","UniqueSelectionDispatcher","_listeners","notify","name","listener","listen","registered","UniqueSelectionDispatcher_Factory","MAC_ENTER","BACKSPACE","NUM_CENTER","ENTER","PAUSE","CAPS_LOCK","ESCAPE","SPACE","PLUS_SIGN","PRINT_SCREEN","INSERT","DELETE","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","FF_SEMICOLON","FF_EQUALS","QUESTION_MARK","AT_SIGN","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","MAC_WK_CMD_LEFT","MAC_WK_CMD_RIGHT","CONTEXT_MENU","NUMPAD_ZERO","NUMPAD_ONE","NUMPAD_TWO","NUMPAD_THREE","NUMPAD_FOUR","NUMPAD_FIVE","NUMPAD_SIX","NUMPAD_SEVEN","NUMPAD_EIGHT","NUMPAD_NINE","NUMPAD_MULTIPLY","NUMPAD_PLUS","NUMPAD_MINUS","NUMPAD_PERIOD","NUMPAD_DIVIDE","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUM_LOCK","SCROLL_LOCK","FIRST_MEDIA","FF_MINUS","MUTE","VOLUME_DOWN","VOLUME_UP","FF_MUTE","FF_VOLUME_DOWN","LAST_MEDIA","FF_VOLUME_UP","SEMICOLON","EQUALS","COMMA","DASH","PERIOD","SLASH","APOSTROPHE","TILDE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","SINGLE_QUOTE","altKey","shiftKey","ctrlKey","metaKey","CSP_NONCE","coerceArray","combineLatest","concat","Observable","startWith","LayoutModule","LayoutModule_Factory","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_nonce","_matchMedia","matchMedia","noopMatchMedia","query","BLINK","createEmptyStyleRule","MediaMatcher_Factory","nonce","head","sheet","insertRule","matches","media","addListener","removeListener","_mediaMatcher","_zone","_queries","_destroySubject","isMatched","queries","splitQueries","mediaQuery","_registerQuery","mql","observables","observable","stateObservable","breakpointStates","response","breakpoints","queryObservable","observer","handler","output","BreakpointObserver_Factory","split","reduce","a1","a2","Breakpoints","XSmall","Small","Medium","Large","XLarge","Handset","Tablet","Web","HandsetPortrait","TabletPortrait","WebPortrait","HandsetLandscape","TabletLandscape","WebLandscape","coerceNumberProperty","shouldIgnoreRecord","Comment","addedNodes","removedNodes","MutationObserverFactory","callback","MutationObserver","MutationObserverFactory_Factory","_mutationObserverFactory","_observedElements","_cleanupObserver","elementOrRef","stream","_observeElement","subscription","records","_unobserveElement","mutations","characterData","childList","subtree","ContentObserver_Factory","CdkObserveContent","_disabled","_unsubscribe","_subscribe","debounce","_debounce","_currentSubscription","CdkObserveContent_Factory","ObserversModule_Factory","providers","ScrollingModule","CdkScrollable","ScrollDispatcher","ViewportRuler","i6","untracked","afterRender","EnvironmentInjector","ApplicationRef","ANIMATION_MODULE_TYPE","coerceCssPixelValue","supportsScrollBehavior","_isTestEnvironment","takeWhile","i5","BidiModule","DomPortalOutlet","TemplatePortal","PortalModule","merge","scrollBehaviorSupported","BlockScrollStrategy","_viewportRuler","_previousHTMLStyles","top","left","_isEnabled","attach","enable","_canBeEnabled","documentElement","_previousScrollPosition","getViewportScrollPosition","disable","html","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","scroll","viewport","getViewportSize","scrollHeight","height","scrollWidth","width","getMatScrollStrategyAlreadyAttachedError","CloseScrollStrategy","_scrollDispatcher","_config","_scrollSubscription","_detach","_overlayRef","overlayRef","scrolled","scrollable","overlayElement","getElementRef","threshold","_initialScrollPosition","scrollPosition","Math","abs","updatePosition","NoopScrollStrategy","isElementScrolledOutsideView","scrollContainers","containerBounds","outsideAbove","bottom","outsideBelow","outsideLeft","right","outsideRight","isElementClippedByScrolling","scrollContainerRect","clippedAbove","clippedBelow","clippedLeft","clippedRight","RepositionScrollStrategy","throttle","scrollThrottle","autoClose","overlayRect","getBoundingClientRect","parentRects","ScrollStrategyOptions","noop","close","block","reposition","ScrollStrategyOptions_Factory","OverlayConfig","scrollStrategy","panelClass","hasBackdrop","backdropClass","disposeOnNavigation","configKeys","ConnectionPositionPair","overlay","offsetX","offsetY","originX","originY","overlayX","overlayY","ScrollingVisibility","ConnectedOverlayPositionChange","connectionPair","scrollableViewProperties","validateVerticalPosition","property","validateHorizontalPosition","BaseOverlayDispatcher","_attachedOverlays","BaseOverlayDispatcher_Factory","OverlayKeyboardDispatcher","_keydownListener","overlays","_keydownEvents","keydownEvents","_isAttached","OverlayKeyboardDispatcher_Factory","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","slice","_outsidePointerEvents","containsPierceShadowDom","outsidePointerEvents","_addEventListeners","_cursorOriginalValue","cursor","OverlayOutsideClickDispatcher_Factory","supportsShadowRoot","ShadowRoot","current","host","OverlayContainer","_containerElement","getContainerElement","_createContainer","containerClass","oppositePlatformContainers","container","OverlayContainer_Factory","OverlayRef","_portalOutlet","_host","_pane","_keyboardDispatcher","_location","_outsideClickDispatcher","_animationsDisabled","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_backdropTransitionendHandler","_disposeBackdrop","_renders","_scrollStrategy","_positionStrategy","positionStrategy","_afterRenderRef","backdropElement","portal","_previousHostParent","attachResult","_updateStackingOrder","_updateElementSize","_updateElementDirection","_afterNextRenderRef","_togglePointerEvents","_attachBackdrop","_toggleClasses","dispose","onDestroy","detachBackdrop","detachmentResult","_detachContentWhenEmpty","isAttached","_disposeScrollStrategy","backdropClick","attachments","detachments","getConfig","apply","updatePositionStrategy","strategy","updateSize","sizeConfig","setDirection","dir","addPanelClass","classes","removePanelClass","getDirection","updateScrollStrategy","minWidth","minHeight","maxWidth","maxHeight","enablePointer","pointerEvents","showingClass","requestAnimationFrame","backdropToDetach","_backdropTimeout","cssClasses","isAdd","c","backdrop","boundingBoxClass","cssUnitPattern","FlexibleConnectedPositionStrategy","positions","_preferredPositions","connectedTo","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_positionChanges","_resizeSubscription","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","_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","_transformOriginSelector","x","startX","_isRtl","endX","y","overlayStartX","overlayStartY","point","rawOverlayRect","getRoundedBoundingClientRect","_getOffset","leftOverflow","rightOverflow","topOverflow","bottomOverflow","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","verticalFit","horizontalFit","_pushOverlayOnScreen","start","overflowRight","max","overflowBottom","overflowTop","overflowLeft","pushX","pushY","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","scrollVisibility","_getScrollVisibility","_lastScrollVisibility","compareScrollVisibility","changeEvent","elements","xOrigin","yOrigin","transformOrigin","isRtl","smallestDistanceToViewportEdge","min","previousHeight","isBoundedByRightViewportEdge","isBoundedByLeftViewportEdge","previousWidth","styles","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","documentHeight","clientHeight","horizontalStyleProperty","documentWidth","clientWidth","originBounds","overlayBounds","scrollContainerBounds","isOriginClipped","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","currentValue","currentOverflow","axis","pair","cssClass","Element","destination","hasOwnProperty","input","units","parseFloat","clientRect","floor","a","b","STANDARD_DROPDOWN_BELOW_POSITIONS","STANDARD_DROPDOWN_ADJACENT_POSITIONS","wrapperClass","GlobalPositionStrategy","_cssPosition","_topOffset","_bottomOffset","_alignItems","_xPosition","_xOffset","_width","_height","end","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","xPosition","xOffset","marginLeft","marginRight","marginTop","marginBottom","OverlayPositionBuilder","global","flexibleConnectedTo","OverlayPositionBuilder_Factory","nextUniqueId","Overlay","scrollStrategies","_componentFactoryResolver","_positionBuilder","_directionality","_animationsModuleType","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","_appRef","Overlay_Factory","ComponentFactoryResolver","Directionality","Location","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","elementRef","CdkOverlayOrigin_Factory","CdkConnectedOverlay","_position","_updatePositionStrategy","_disposeOnNavigation","_overlay","scrollStrategyFactory","_dir","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","open","disableClose","lockPosition","positionChange","overlayKeydown","overlayOutsideClick","_templatePortal","_scrollStrategyFactory","_attachOverlay","_detachOverlay","_createOverlay","_buildConfig","_getOriginElement","_createPositionStrategy","currentPosition","_getOrigin","transformOriginSelector","CdkConnectedOverlay_Factory","TemplateRef","ViewContainerRef","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","deps","OverlayModule","OverlayModule_Factory","FullscreenOverlayContainer","_fullScreenEventName","_fullScreenListener","_adjustParentForFullscreenChange","_addFullscreenChangeListener","fullscreenElement","getFullscreenElement","eventName","_getEventName","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","FullscreenOverlayContainer_Factory","throwNullPortalError","throwPortalAlreadyAttachedError","throwPortalOutletAlreadyDisposedError","throwUnknownPortalTypeError","throwNullPortalOutletError","throwNoPortalAttachedError","Portal","_attachedHost","setAttachedHost","ComponentPortal","component","componentFactoryResolver","projectableNodes","DomPortal","BasePortalOutlet","attachDomPortal","_attachedPortal","attachComponentPortal","attachTemplatePortal","_invokeDisposeFn","setDisposeFn","_disposeFn","BasePortalHost","outletElement","_defaultInjector","anchorNode","createComment","replaceChild","resolver","componentFactory","resolveComponentFactory","componentRef","createComponent","NULL","attachView","hostView","viewCount","detachView","_getComponentRootNode","viewContainer","viewRef","rootNodes","detectChanges","DomPortalHost","CdkPortal","CdkPortal_Factory","ɵɵInheritDefinitionFeature","TemplatePortalDirective","ɵTemplatePortalDirective_BaseFactory","TemplatePortalDirective_Factory","ɵɵgetInheritedFactory","ɵɵProvidersFeature","useExisting","CdkPortalOutlet","_viewContainerRef","_isInitialized","attached","_getRootNode","attachedRef","_attachedRef","ngOnInit","ref","CdkPortalOutlet_Factory","PortalHostDirective","ɵPortalHostDirective_BaseFactory","PortalHostDirective_Factory","PortalModule_Factory","PortalInjector","_parentInjector","_customTokens","notFoundValue","forwardRef","Component","ViewEncapsulation","ChangeDetectionStrategy","ViewChild","SkipSelf","fromEvent","animationFrameScheduler","pairwise","switchMap","shareReplay","getRtlScrollAxisType","RtlScrollAxisType","i2","i2$1","_c0","_c1","VIRTUAL_SCROLL_STRATEGY","FixedSizeVirtualScrollStrategy","itemSize","minBufferPx","maxBufferPx","_scrolledIndexChange","scrolledIndexChange","_viewport","_itemSize","_minBufferPx","_maxBufferPx","_updateTotalContentSize","_updateRenderedRange","updateItemAndBufferSize","onContentScrolled","onDataLengthChanged","onContentRendered","onRenderedOffsetChanged","scrollToIndex","behavior","scrollToOffset","setTotalContentSize","getDataLength","renderedRange","getRenderedRange","newRange","viewportSize","dataLength","scrollOffset","measureScrollOffset","firstVisibleIndex","maxVisibleItems","ceil","newVisibleIndex","startBuffer","expandStart","endBuffer","expandEnd","setRenderedRange","setRenderedContentOffset","_fixedSizeVirtualScrollStrategyFactory","fixedSizeDir","CdkFixedSizeVirtualScroll","CdkFixedSizeVirtualScroll_Factory","DEFAULT_SCROLL_TIME","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","scrollableReference","auditTimeInMs","_addGlobalListener","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","scrollingContainers","_scrollableContainsElement","scrollableElement","ScrollDispatcher_Factory","scrollDispatcher","_destroyed","_elementScrolled","scrollTo","NORMAL","INVERTED","NEGATED","_applyScrollToOptions","scrollTop","scrollLeft","LEFT","RIGHT","CdkScrollable_Factory","DEFAULT_RESIZE_TIME","_change","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","documentRect","scrollY","scrollX","throttleTime","innerWidth","innerHeight","ViewportRuler_Factory","VIRTUAL_SCROLLABLE","CdkVirtualScrollable","measureViewportSize","orientation","viewportEl","CdkVirtualScrollable_Factory","rangesEqual","r1","r2","SCROLL_SCHEDULER","CdkVirtualScrollViewport","_orientation","_calculateSpacerSize","_changeDetectorRef","viewportRuler","_detachedSubject","_renderedRangeSubject","appendOnly","renderedRangeStream","_totalContentSize","_totalContentWidth","_totalContentHeight","_renderedRange","_dataLength","_renderedContentOffset","_renderedContentOffsetNeedsRewrite","_isChangeDetectionPending","_runAfterChangeDetection","_viewportChanges","_isDestroyed","checkViewportSize","_measureViewportSize","_markChangeDetectionNeeded","forOf","_forOf","dataStream","newLength","_doChangeDetection","measureBoundingClientRectWithScrollOffset","range","getOffsetToRenderedContentStart","to","isHorizontal","axisDirection","Number","_renderedContentTransform","measureRenderedContentSize","_from","measureViewportOffset","fromRect","scrollerClientRect","viewportClientRect","contentEl","_contentWrapper","measureRangeSize","runAfter","markForCheck","runAfterChangeDetection","CdkVirtualScrollViewport_Factory","ChangeDetectorRef","ɵcmp","ɵɵdefineComponent","viewQuery","CdkVirtualScrollViewport_Query","rf","ctx","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","first","hostAttrs","hostVars","hostBindings","CdkVirtualScrollViewport_HostBindings","ɵɵclassProp","virtualScrollable","ɵɵStandaloneFeature","ngContentSelectors","decls","vars","consts","template","CdkVirtualScrollViewport_Template","ɵɵprojectionDef","ɵɵelementStart","ɵɵprojection","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵstyleProp","encapsulation","changeDetection","None","OnPush","static","getOffset","rect","CdkVirtualForOf","cdkVirtualForOf","_cdkVirtualForOf","_dataSourceChanges","cdkVirtualForTrackBy","_cdkVirtualForTrackBy","_needsUpdate","cdkVirtualForTemplate","_template","cdkVirtualForTemplateCacheSize","_viewRepeater","_differs","viewChange","prev","cur","_changeDataSource","_differ","_onRenderedDataChange","renderedStartIndex","rangeLen","firstNode","lastNode","diff","_renderedItems","_updateContext","_applyChanges","oldDs","newDs","_updateComputedContextProperties","_adjustedPreviousIndex","_getEmbeddedViewArgs","forEachIdentityChange","last","even","odd","CdkVirtualForOf_Factory","IterableDiffers","useClass","CdkVirtualScrollableElement","CdkVirtualScrollableElement_Factory","CdkVirtualScrollableWindow","CdkVirtualScrollableWindow_Factory","CdkScrollableModule","CdkScrollableModule_Factory","ScrollingModule_Factory","LOCALE_ID","VERSION$1","coerceBooleanProperty","_c2","_c3","_c4","MatOption_Conditional_0_Template","ctx_r0","ɵɵnextContext","ɵɵproperty","MatOption_Conditional_5_Template","MatOption_Conditional_6_Template","ɵɵtext","ɵɵtextInterpolate1","group","label","_c5","_c6","AnimationCurves","STANDARD_CURVE","DECELERATION_CURVE","ACCELERATION_CURVE","SHARP_CURVE","AnimationDurations","COMPLEX","ENTERING","EXITING","MATERIAL_SANITY_CHECKS_FACTORY","MATERIAL_SANITY_CHECKS","MatCommonModule","_sanityChecks","_hasDoneGlobalChecks","optional","_checkIsEnabled","_checkDoctypeIsDefined","_checkThemeIsPresent","_checkCdkVersionMatch","MatCommonModule_Factory","doctype","display","full","mixinDisabled","base","mixinColor","defaultColor","color","_color","colorPalette","mixinDisableRipple","disableRipple","_disableRipple","mixinTabIndex","defaultTabIndex","_tabIndex","_ErrorStateTracker","_defaultMatcher","ngControl","_parentFormGroup","_parentForm","_stateChanges","errorState","updateErrorState","oldState","matcher","control","newState","isErrorState","mixinErrorState","_getTracker","errorStateMatcher","_tracker","_defaultErrorStateMatcher","stateChanges","mixinInitialized","_pendingSubscribers","initialized","_notifySubscriber","_markInitialized","MAT_DATE_LOCALE","MAT_DATE_LOCALE_FACTORY","DateAdapter","_localeChanges","localeChanges","getValidDateOrNull","obj","isDateInstance","isValid","deserialize","invalid","setLocale","locale","compareDate","second","getYear","getMonth","getDate","sameDate","firstValid","secondValid","clampDate","date","MAT_DATE_FORMATS","ISO_8601_REGEX","valueFunction","valuesArray","NativeDateAdapter","matDateLocale","useUtcForDisplay","_matDateLocale","getFullYear","getDayOfWeek","getDay","getMonthNames","dtf","Intl","DateTimeFormat","month","timeZone","_format","getDateNames","day","getDayOfWeekNames","weekday","getYearName","year","getFirstDayOfWeek","Locale","firstDay","getWeekInfo","weekInfo","getNumDaysInMonth","_createDateWithOverflow","clone","getTime","createDate","result","today","parse","parseFormat","format","displayFormat","addCalendarYears","years","addCalendarMonths","months","newDate","addCalendarDays","days","toIso8601","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","test","NaN","d","setFullYear","setHours","n","setUTCFullYear","setUTCHours","getHours","getMinutes","getSeconds","getMilliseconds","NativeDateAdapter_Factory","MAT_NATIVE_DATE_FORMATS","dateInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","NativeDateModule","NativeDateModule_Factory","MatNativeDateModule","MatNativeDateModule_Factory","provideNativeDateAdapter","formats","useValue","ShowOnDirtyErrorStateMatcher","form","dirty","submitted","ShowOnDirtyErrorStateMatcher_Factory","ErrorStateMatcher","touched","ErrorStateMatcher_Factory","MatLine","MatLine_Factory","setLines","lines","prefix","setClass","className","MatLineModule","MatLineModule_Factory","RippleState","RippleRef","_renderer","_animationForciblyDisabledThroughCss","HIDDEN","fadeOut","fadeOutRipple","passiveCapturingEventOptions$1","RippleEventManager","_events","_delegateEventHandler","handlers","handleEvent","addHandler","handlersForEvent","handlersForElement","removeHandler","defaultRippleAnimationConfig","enterDuration","exitDuration","ignoreMouseEventsTimeout","passiveCapturingEventOptions","pointerDownEvents","pointerUpEvents","RippleRenderer","_eventManager","_target","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","fadeInRipple","animationConfig","animation","centered","radius","distanceToFurthestCorner","ripple","transitionDuration","computedStyles","userTransitionProperty","transitionProperty","userTransitionDuration","animationForciblyDisabledThroughCss","rippleRef","FADING_IN","persistent","_mostRecentTransientRipple","eventListeners","onTransitionEnd","fallbackTimer","_finishRippleTransition","onTransitionCancel","_destroyRipple","FADING_OUT","rippleEl","opacity","fadeOutAll","_getActiveRipples","fadeOutAllNonPersistent","setupTriggerEvents","_triggerElement","_removeTriggerEvents","_onTouchStart","_onPointerUp","_startFadeOutTransition","isMostRecentTransientRipple","VISIBLE","isFakeMousedown","isSyntheticEvent","_lastTouchStartEvent","rippleDisabled","clientX","clientY","rippleConfig","terminateOnPointerUp","trigger","distX","distY","sqrt","MAT_RIPPLE_GLOBAL_OPTIONS","MatRipple","_setupTriggerEventsIfEnabled","_trigger","globalOptions","_animationMode","_globalOptions","_rippleRenderer","launch","configOrX","MatRipple_Factory","MatRipple_HostBindings","unbounded","MatRippleModule","MatRippleModule_Factory","MatPseudoCheckbox","appearance","MatPseudoCheckbox_Factory","MatPseudoCheckbox_HostBindings","MatPseudoCheckbox_Template","MatPseudoCheckboxModule","MatPseudoCheckboxModule_Factory","MAT_OPTION_PARENT_COMPONENT","_uniqueOptgroupIdCounter","MAT_OPTGROUP","MatOptgroup","_labelId","_inert","inertGroups","MatOptgroup_Factory","MatOptgroup_HostBindings","ɵɵattribute","toString","MatOptgroup_Template","_uniqueIdCounter","MatOptionSelectionChange","isUserInput","MatOption","multiple","_parent","hideSingleSelectionIndicator","_mostRecentViewValue","onSelectionChange","active","viewValue","_text","emitEvent","_emitSelectionChangeEvent","_getHostElement","_handleKeydown","_selectViaInteraction","_getTabIndex","ngAfterViewChecked","MatOption_Factory","MatOption_Query","MatOption_HostBindings","ɵɵlistener","MatOption_click_HostBindingHandler","MatOption_keydown_HostBindingHandler","$event","ɵɵhostProperty","MatOption_Template","ɵɵtemplate","ɵɵconditional","dependencies","_countGroupLabelsBeforeOption","optionIndex","optionGroups","optionsArray","groups","groupCounter","_getOptionScrollPosition","optionOffset","optionHeight","currentScrollPosition","panelHeight","MatOptionModule","MatOptionModule_Factory","eventListenerOptions","rippleInteractionEvents","matRippleUninitialized","matRippleClassName","matRippleCentered","matRippleDisabled","MatRippleLoader","_globalRippleOptions","_hosts","_onInteraction","eventTarget","HTMLElement","namespace","_createRipple","hosts","destroyRipple","configureRipple","getRipple","setDisabled","existingRipple","append","attachRipple","MatRippleLoader_Factory","_MatInternalFormField","_MatInternalFormField_Factory","_MatInternalFormField_HostBindings","labelPosition","attrs","_MatInternalFormField_Template","required","NgClass","CommonModule","i3","i4","transition","animate","SCROLL_THROTTLE_MS","getMatTooltipInvalidPositionError","MAT_TOOLTIP_SCROLL_STRATEGY","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_TOOLTIP_DEFAULT_OPTIONS_FACTORY","showDelay","hideDelay","touchendHideDelay","MAT_TOOLTIP_DEFAULT_OPTIONS","TOOLTIP_PANEL_CLASS","PANEL_CLASS","passiveListenerOptions","MIN_VIEWPORT_TOOLTIP_THRESHOLD","UNBOUNDED_ANCHOR_GAP","MIN_HEIGHT","MAX_WIDTH","MatTooltip","_updatePosition","_tooltipInstance","show","positionAtOrigin","_positionAtOrigin","hide","_setupPointerEnterEventsIfNeeded","_syncAriaDescription","_showDelay","_hideDelay","_mouseLeaveHideDelay","_message","oldMessage","_isTooltipVisible","_updateTooltipMessage","tooltipClass","_tooltipClass","_setTooltipClass","_ariaDescriber","_viewInitialized","_pointerExitEventsInitialized","_tooltipComponent","TooltipComponent","_cssClassPrefix","touchGestures","_passiveListeners","_touchstartTimeout","_cancelPendingAnimations","_portal","instance","afterHidden","existingStrategy","scrollableAncestors","_updateCurrentPositionClass","_handleBodyInteraction","stopPropagation","disableTooltipInteractivity","_getOverlayPosition","_addOffset","main","isLtr","originPosition","_invertPosition","overlayPosition","_markForCheck","newPosition","_currentPosition","classPrefix","_platformSupportsMouseEvents","_setupPointerExitEventsIfNeeded","_disableNativeGesturesIfNecessary","targetTouches","DEFAULT_LONGPRESS_DELAY","touchLongPressShowDelay","_addListeners","exitListeners","newTarget","_wheelListener","touchendListener","listeners","ANDROID","elementUnderPointer","elementFromPoint","gestures","userSelect","msUserSelect","webkitUserSelect","MozUserSelect","draggable","webkitUserDrag","touchAction","webkitTapHighlightColor","_ariaDescriptionPending","MatTooltip_Factory","MatTooltip_HostBindings","animationMode","_isMultiline","_closeOnInteraction","_isVisible","_onHide","_showAnimation","_hideAnimation","_hideTimeoutId","_showTimeoutId","_toggleVisibility","_handleMouseLeave","_finalizeAnimation","_onShow","_isTooltipMultiline","_handleAnimationEnd","animationName","toVisible","tooltip","_tooltip","showClass","hideClass","getPropertyValue","TooltipComponent_Factory","TooltipComponent_Query","TooltipComponent_HostBindings","TooltipComponent_mouseleave_HostBindingHandler","TooltipComponent_Template","_r1","ɵɵgetCurrentView","TooltipComponent_Template_div_animationend_0_listener","ɵɵrestoreView","ɵɵresetView","ɵɵtextInterpolate","matTooltipAnimations","tooltipState","MatTooltipModule","MatTooltipModule_Factory"],"sourceRoot":"webpack:///","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]}