{"version":3,"sources":["node_modules/@angular/cdk/fesm2022/dialog.mjs","node_modules/@angular/material/fesm2022/dialog.mjs"],"sourcesContent":["import { FocusTrapFactory, InteractivityChecker, FocusMonitor, _IdGenerator, A11yModule } from '@angular/cdk/a11y';\nimport { OverlayRef, Overlay, OverlayContainer, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';\nimport { Platform, _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { inject, ElementRef, NgZone, Renderer2, ChangeDetectorRef, Injector, afterNextRender, Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, InjectionToken, TemplateRef, Injectable, NgModule } from '@angular/core';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { Subject, defer, of } from 'rxjs';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { startWith } from 'rxjs/operators';\n\n/** Configuration for opening a modal dialog. */\nfunction CdkDialogContainer_ng_template_0_Template(rf, ctx) {}\nclass DialogConfig {\n /**\n * Where the attached component should live in Angular's *logical* component tree.\n * This affects what is available for injection and the change detection order for the\n * component instantiated inside of the dialog. This does not affect where the dialog\n * content will be rendered.\n */\n viewContainerRef;\n /**\n * Injector used for the instantiation of the component to be attached. If provided,\n * takes precedence over the injector indirectly provided by `ViewContainerRef`.\n */\n injector;\n /** ID for the dialog. If omitted, a unique one will be generated. */\n id;\n /** The ARIA role of the dialog element. */\n role = 'dialog';\n /** Optional CSS class or classes applied to the overlay panel. */\n panelClass = '';\n /** Whether the dialog has a backdrop. */\n hasBackdrop = true;\n /** Optional CSS class or classes applied to the overlay backdrop. */\n backdropClass = '';\n /** Whether the dialog closes with the escape key or pointer events outside the panel element. */\n disableClose = false;\n /** Width of the dialog. */\n width = '';\n /** Height of the dialog. */\n height = '';\n /** Min-width of the dialog. If a number is provided, assumes pixel units. */\n minWidth;\n /** Min-height of the dialog. If a number is provided, assumes pixel units. */\n minHeight;\n /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n maxWidth;\n /** Max-height of the dialog. If a number is provided, assumes pixel units. */\n maxHeight;\n /** Strategy to use when positioning the dialog. Defaults to centering it on the page. */\n positionStrategy;\n /** Data being injected into the child component. */\n data = null;\n /** Layout direction for the dialog's content. */\n direction;\n /** ID of the element that describes the dialog. */\n ariaDescribedBy = null;\n /** ID of the element that labels the dialog. */\n ariaLabelledBy = null;\n /** Dialog label applied via `aria-label` */\n ariaLabel = null;\n /** Whether this is a modal dialog. Used to set the `aria-modal` attribute. */\n ariaModal = true;\n /**\n * Where the dialog should focus on open.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n * AutoFocusTarget instead.\n */\n autoFocus = 'first-tabbable';\n /**\n * Whether the dialog should restore focus to the previously-focused element upon closing.\n * Has the following behavior based on the type that is passed in:\n * - `boolean` - when true, will return focus to the element that was focused before the dialog\n * was opened, otherwise won't restore focus at all.\n * - `string` - focus will be restored to the first element that matches the CSS selector.\n * - `HTMLElement` - focus will be restored to the specific element.\n */\n restoreFocus = true;\n /**\n * Scroll strategy to be used for the dialog. This determines how\n * the dialog responds to scrolling underneath the panel element.\n */\n scrollStrategy;\n /**\n * Whether the dialog should close when the user navigates backwards or forwards through browser\n * history. This does not apply to navigation via anchor element unless using URL-hash based\n * routing (`HashLocationStrategy` in the Angular router).\n */\n closeOnNavigation = true;\n /**\n * Whether the dialog should close when the dialog service is destroyed. This is useful if\n * another service is wrapping the dialog and is managing the destruction instead.\n */\n closeOnDestroy = true;\n /**\n * Whether the dialog should close when the underlying overlay is detached. This is useful if\n * another service is wrapping the dialog and is managing the destruction instead. E.g. an\n * external detachment can happen as a result of a scroll strategy triggering it or when the\n * browser location changes.\n */\n closeOnOverlayDetachments = true;\n /**\n * Alternate `ComponentFactoryResolver` to use when resolving the associated component.\n * @deprecated No longer used. Will be removed.\n * @breaking-change 20.0.0\n */\n componentFactoryResolver;\n /**\n * Providers that will be exposed to the contents of the dialog. Can also\n * be provided as a function in order to generate the providers lazily.\n */\n providers;\n /**\n * Component into which the dialog content will be rendered. Defaults to `CdkDialogContainer`.\n * A configuration object can be passed in to customize the providers that will be exposed\n * to the dialog container.\n */\n container;\n /**\n * Context that will be passed to template-based dialogs.\n * A function can be passed in to resolve the context lazily.\n */\n templateContext;\n}\nfunction throwDialogContentAlreadyAttachedError() {\n throw Error('Attempting to attach dialog content after content is already attached');\n}\n/**\n * Internal component that wraps user-provided dialog content.\n * @docs-private\n */\nlet CdkDialogContainer = /*#__PURE__*/(() => {\n class CdkDialogContainer extends BasePortalOutlet {\n _elementRef = inject(ElementRef);\n _focusTrapFactory = inject(FocusTrapFactory);\n _config;\n _interactivityChecker = inject(InteractivityChecker);\n _ngZone = inject(NgZone);\n _overlayRef = inject(OverlayRef);\n _focusMonitor = inject(FocusMonitor);\n _renderer = inject(Renderer2);\n _platform = inject(Platform);\n _document = inject(DOCUMENT, {\n optional: true\n });\n /** The portal outlet inside of this container into which the dialog content will be loaded. */\n _portalOutlet;\n /** The class that traps and manages focus within the dialog. */\n _focusTrap = null;\n /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n _elementFocusedBeforeDialogWasOpened = null;\n /**\n * Type of interaction that led to the dialog being closed. This is used to determine\n * whether the focus style will be applied when returning focus to its original location\n * after the dialog is closed.\n */\n _closeInteractionType = null;\n /**\n * Queue of the IDs of the dialog's label element, based on their definition order. The first\n * ID will be used as the `aria-labelledby` value. We use a queue here to handle the case\n * where there are two or more titles in the DOM at a time and the first one is destroyed while\n * the rest are present.\n */\n _ariaLabelledByQueue = [];\n _changeDetectorRef = inject(ChangeDetectorRef);\n _injector = inject(Injector);\n _isDestroyed = false;\n constructor() {\n super();\n // Callback is primarily for some internal tests\n // that were instantiating the dialog container manually.\n this._config = inject(DialogConfig, {\n optional: true\n }) || new DialogConfig();\n if (this._config.ariaLabelledBy) {\n this._ariaLabelledByQueue.push(this._config.ariaLabelledBy);\n }\n }\n _addAriaLabelledBy(id) {\n this._ariaLabelledByQueue.push(id);\n this._changeDetectorRef.markForCheck();\n }\n _removeAriaLabelledBy(id) {\n const index = this._ariaLabelledByQueue.indexOf(id);\n if (index > -1) {\n this._ariaLabelledByQueue.splice(index, 1);\n this._changeDetectorRef.markForCheck();\n }\n }\n _contentAttached() {\n this._initializeFocusTrap();\n this._handleBackdropClicks();\n this._captureInitialFocus();\n }\n /**\n * Can be used by child classes to customize the initial focus\n * capturing behavior (e.g. if it's tied to an animation).\n */\n _captureInitialFocus() {\n this._trapFocus();\n }\n ngOnDestroy() {\n this._isDestroyed = true;\n this._restoreFocus();\n }\n /**\n * Attach a ComponentPortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachComponentPortal(portal) {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwDialogContentAlreadyAttachedError();\n }\n const result = this._portalOutlet.attachComponentPortal(portal);\n this._contentAttached();\n return result;\n }\n /**\n * Attach a TemplatePortal as content to this dialog container.\n * @param portal Portal to be attached as the dialog content.\n */\n attachTemplatePortal(portal) {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwDialogContentAlreadyAttachedError();\n }\n const result = this._portalOutlet.attachTemplatePortal(portal);\n this._contentAttached();\n return result;\n }\n /**\n * Attaches a DOM portal to the dialog container.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n attachDomPortal = portal => {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwDialogContentAlreadyAttachedError();\n }\n const result = this._portalOutlet.attachDomPortal(portal);\n this._contentAttached();\n return result;\n };\n // TODO(crisbeto): this shouldn't be exposed, but there are internal references to it.\n /** Captures focus if it isn't already inside the dialog. */\n _recaptureFocus() {\n if (!this._containsFocus()) {\n this._trapFocus();\n }\n }\n /**\n * Focuses the provided element. If the element is not focusable, it will add a tabIndex\n * attribute to forcefully focus it. The attribute is removed after focus is moved.\n * @param element The element to focus.\n */\n _forceFocus(element, options) {\n if (!this._interactivityChecker.isFocusable(element)) {\n element.tabIndex = -1;\n // The tabindex attribute should be removed to avoid navigating to that element again\n this._ngZone.runOutsideAngular(() => {\n const callback = () => {\n deregisterBlur();\n deregisterMousedown();\n element.removeAttribute('tabindex');\n };\n const deregisterBlur = this._renderer.listen(element, 'blur', callback);\n const deregisterMousedown = this._renderer.listen(element, 'mousedown', callback);\n });\n }\n element.focus(options);\n }\n /**\n * Focuses the first element that matches the given selector within the focus trap.\n * @param selector The CSS selector for the element to set focus to.\n */\n _focusByCssSelector(selector, options) {\n let elementToFocus = this._elementRef.nativeElement.querySelector(selector);\n if (elementToFocus) {\n this._forceFocus(elementToFocus, options);\n }\n }\n /**\n * Moves the focus inside the focus trap. When autoFocus is not set to 'dialog', if focus\n * cannot be moved then focus will go to the dialog container.\n */\n _trapFocus() {\n if (this._isDestroyed) {\n return;\n }\n // If were to attempt to focus immediately, then the content of the dialog would not yet be\n // ready in instances where change detection has to run first. To deal with this, we simply\n // wait until after the next render.\n afterNextRender(() => {\n const element = this._elementRef.nativeElement;\n switch (this._config.autoFocus) {\n case false:\n case 'dialog':\n // Ensure that focus is on the dialog container. It's possible that a different\n // component tried to move focus while the open animation was running. See:\n // https://github.com/angular/components/issues/16215. Note that we only want to do this\n // if the focus isn't inside the dialog already, because it's possible that the consumer\n // turned off `autoFocus` in order to move focus themselves.\n if (!this._containsFocus()) {\n element.focus();\n }\n break;\n case true:\n case 'first-tabbable':\n const focusedSuccessfully = this._focusTrap?.focusInitialElement();\n // If we weren't able to find a focusable element in the dialog, then focus the dialog\n // container instead.\n if (!focusedSuccessfully) {\n this._focusDialogContainer();\n }\n break;\n case 'first-heading':\n this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');\n break;\n default:\n this._focusByCssSelector(this._config.autoFocus);\n break;\n }\n }, {\n injector: this._injector\n });\n }\n /** Restores focus to the element that was focused before the dialog opened. */\n _restoreFocus() {\n const focusConfig = this._config.restoreFocus;\n let focusTargetElement = null;\n if (typeof focusConfig === 'string') {\n focusTargetElement = this._document.querySelector(focusConfig);\n } else if (typeof focusConfig === 'boolean') {\n focusTargetElement = focusConfig ? this._elementFocusedBeforeDialogWasOpened : null;\n } else if (focusConfig) {\n focusTargetElement = focusConfig;\n }\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this._config.restoreFocus && focusTargetElement && typeof focusTargetElement.focus === 'function') {\n const activeElement = _getFocusedElementPierceShadowDom();\n const element = this._elementRef.nativeElement;\n // Make sure that focus is still inside the dialog or is on the body (usually because a\n // non-focusable element like the backdrop was clicked) before moving it. It's possible that\n // the consumer moved it themselves before the animation was done, in which case we shouldn't\n // do anything.\n if (!activeElement || activeElement === this._document.body || activeElement === element || element.contains(activeElement)) {\n if (this._focusMonitor) {\n this._focusMonitor.focusVia(focusTargetElement, this._closeInteractionType);\n this._closeInteractionType = null;\n } else {\n focusTargetElement.focus();\n }\n }\n }\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n /** Focuses the dialog container. */\n _focusDialogContainer() {\n // Note that there is no focus method when rendering on the server.\n if (this._elementRef.nativeElement.focus) {\n this._elementRef.nativeElement.focus();\n }\n }\n /** Returns whether focus is inside the dialog. */\n _containsFocus() {\n const element = this._elementRef.nativeElement;\n const activeElement = _getFocusedElementPierceShadowDom();\n return element === activeElement || element.contains(activeElement);\n }\n /** Sets up the focus trap. */\n _initializeFocusTrap() {\n if (this._platform.isBrowser) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n // Save the previously focused element. This element will be re-focused\n // when the dialog closes.\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();\n }\n }\n }\n /** Sets up the listener that handles clicks on the dialog backdrop. */\n _handleBackdropClicks() {\n // Clicking on the backdrop will move focus out of dialog.\n // Recapture it if closing via the backdrop is disabled.\n this._overlayRef.backdropClick().subscribe(() => {\n if (this._config.disableClose) {\n this._recaptureFocus();\n }\n });\n }\n static ɵfac = function CdkDialogContainer_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || CdkDialogContainer)();\n };\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: CdkDialogContainer,\n selectors: [[\"cdk-dialog-container\"]],\n viewQuery: function CdkDialogContainer_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(CdkPortalOutlet, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._portalOutlet = _t.first);\n }\n },\n hostAttrs: [\"tabindex\", \"-1\", 1, \"cdk-dialog-container\"],\n hostVars: 6,\n hostBindings: function CdkDialogContainer_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵattribute(\"id\", ctx._config.id || null)(\"role\", ctx._config.role)(\"aria-modal\", ctx._config.ariaModal)(\"aria-labelledby\", ctx._config.ariaLabel ? null : ctx._ariaLabelledByQueue[0])(\"aria-label\", ctx._config.ariaLabel)(\"aria-describedby\", ctx._config.ariaDescribedBy || null);\n }\n },\n features: [i0.ɵɵInheritDefinitionFeature],\n decls: 1,\n vars: 0,\n consts: [[\"cdkPortalOutlet\", \"\"]],\n template: function CdkDialogContainer_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, CdkDialogContainer_ng_template_0_Template, 0, 0, \"ng-template\", 0);\n }\n },\n dependencies: [CdkPortalOutlet],\n styles: [\".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}\"],\n encapsulation: 2\n });\n }\n return CdkDialogContainer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Reference to a dialog opened via the Dialog service.\n */\nclass DialogRef {\n overlayRef;\n config;\n /**\n * Instance of component opened into the dialog. Will be\n * null when the dialog is opened using a `TemplateRef`.\n */\n componentInstance;\n /**\n * `ComponentRef` of the component opened into the dialog. Will be\n * null when the dialog is opened using a `TemplateRef`.\n */\n componentRef;\n /** Instance of the container that is rendering out the dialog content. */\n containerInstance;\n /** Whether the user is allowed to close the dialog. */\n disableClose;\n /** Emits when the dialog has been closed. */\n closed = /*#__PURE__*/new Subject();\n /** Emits when the backdrop of the dialog is clicked. */\n backdropClick;\n /** Emits when on keyboard events within the dialog. */\n keydownEvents;\n /** Emits on pointer events that happen outside of the dialog. */\n outsidePointerEvents;\n /** Unique ID for the dialog. */\n id;\n /** Subscription to external detachments of the dialog. */\n _detachSubscription;\n constructor(overlayRef, config) {\n this.overlayRef = overlayRef;\n this.config = config;\n this.disableClose = config.disableClose;\n this.backdropClick = overlayRef.backdropClick();\n this.keydownEvents = overlayRef.keydownEvents();\n this.outsidePointerEvents = overlayRef.outsidePointerEvents();\n this.id = config.id; // By the time the dialog is created we are guaranteed to have an ID.\n this.keydownEvents.subscribe(event => {\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this.close(undefined, {\n focusOrigin: 'keyboard'\n });\n }\n });\n this.backdropClick.subscribe(() => {\n if (!this.disableClose) {\n this.close(undefined, {\n focusOrigin: 'mouse'\n });\n }\n });\n this._detachSubscription = overlayRef.detachments().subscribe(() => {\n // Check specifically for `false`, because we want `undefined` to be treated like `true`.\n if (config.closeOnOverlayDetachments !== false) {\n this.close();\n }\n });\n }\n /**\n * Close the dialog.\n * @param result Optional result to return to the dialog opener.\n * @param options Additional options to customize the closing behavior.\n */\n close(result, options) {\n if (this.containerInstance) {\n const closedSubject = this.closed;\n this.containerInstance._closeInteractionType = options?.focusOrigin || 'program';\n // Drop the detach subscription first since it can be triggered by the\n // `dispose` call and override the result of this closing sequence.\n this._detachSubscription.unsubscribe();\n this.overlayRef.dispose();\n closedSubject.next(result);\n closedSubject.complete();\n this.componentInstance = this.containerInstance = null;\n }\n }\n /** Updates the position of the dialog based on the current position strategy. */\n updatePosition() {\n this.overlayRef.updatePosition();\n return this;\n }\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width = '', height = '') {\n this.overlayRef.updateSize({\n width,\n height\n });\n return this;\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n this.overlayRef.addPanelClass(classes);\n return this;\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n this.overlayRef.removePanelClass(classes);\n return this;\n }\n}\n\n/** Injection token for the Dialog's ScrollStrategy. */\nconst DIALOG_SCROLL_STRATEGY = /*#__PURE__*/new InjectionToken('DialogScrollStrategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.block();\n }\n});\n/** Injection token for the Dialog's Data. */\nconst DIALOG_DATA = /*#__PURE__*/new InjectionToken('DialogData');\n/** Injection token that can be used to provide default options for the dialog module. */\nconst DEFAULT_DIALOG_CONFIG = /*#__PURE__*/new InjectionToken('DefaultDialogConfig');\n/**\n * @docs-private\n * @deprecated No longer used. To be removed.\n * @breaking-change 19.0.0\n */\nfunction DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.block();\n}\n/**\n * @docs-private\n * @deprecated No longer used. To be removed.\n * @breaking-change 19.0.0\n */\nconst DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\nlet Dialog = /*#__PURE__*/(() => {\n class Dialog {\n _overlay = inject(Overlay);\n _injector = inject(Injector);\n _defaultOptions = inject(DEFAULT_DIALOG_CONFIG, {\n optional: true\n });\n _parentDialog = inject(Dialog, {\n optional: true,\n skipSelf: true\n });\n _overlayContainer = inject(OverlayContainer);\n _idGenerator = inject(_IdGenerator);\n _openDialogsAtThisLevel = [];\n _afterAllClosedAtThisLevel = new Subject();\n _afterOpenedAtThisLevel = new Subject();\n _ariaHiddenElements = new Map();\n _scrollStrategy = inject(DIALOG_SCROLL_STRATEGY);\n /** Keeps track of the currently-open dialogs. */\n get openDialogs() {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n /** Stream that emits when a dialog has been opened. */\n get afterOpened() {\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n }\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n afterAllClosed = defer(() => this.openDialogs.length ? this._getAfterAllClosed() : this._getAfterAllClosed().pipe(startWith(undefined)));\n constructor() {}\n open(componentOrTemplateRef, config) {\n const defaults = this._defaultOptions || new DialogConfig();\n config = {\n ...defaults,\n ...config\n };\n config.id = config.id || this._idGenerator.getId('cdk-dialog-');\n if (config.id && this.getDialogById(config.id) && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n }\n const overlayConfig = this._getOverlayConfig(config);\n const overlayRef = this._overlay.create(overlayConfig);\n const dialogRef = new DialogRef(overlayRef, config);\n const dialogContainer = this._attachContainer(overlayRef, dialogRef, config);\n dialogRef.containerInstance = dialogContainer;\n this._attachDialogContent(componentOrTemplateRef, dialogRef, dialogContainer, config);\n // If this is the first dialog that we're opening, hide all the non-overlay content.\n if (!this.openDialogs.length) {\n this._hideNonDialogContentFromAssistiveTechnology();\n }\n this.openDialogs.push(dialogRef);\n dialogRef.closed.subscribe(() => this._removeOpenDialog(dialogRef, true));\n this.afterOpened.next(dialogRef);\n return dialogRef;\n }\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll() {\n reverseForEach(this.openDialogs, dialog => dialog.close());\n }\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n getDialogById(id) {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n ngOnDestroy() {\n // Make one pass over all the dialogs that need to be untracked, but should not be closed. We\n // want to stop tracking the open dialog even if it hasn't been closed, because the tracking\n // determines when `aria-hidden` is removed from elements outside the dialog.\n reverseForEach(this._openDialogsAtThisLevel, dialog => {\n // Check for `false` specifically since we want `undefined` to be interpreted as `true`.\n if (dialog.config.closeOnDestroy === false) {\n this._removeOpenDialog(dialog, false);\n }\n });\n // Make a second pass and close the remaining dialogs. We do this second pass in order to\n // correctly dispatch the `afterAllClosed` event in case we have a mixed array of dialogs\n // that should be closed and dialogs that should not.\n reverseForEach(this._openDialogsAtThisLevel, dialog => dialog.close());\n this._afterAllClosedAtThisLevel.complete();\n this._afterOpenedAtThisLevel.complete();\n this._openDialogsAtThisLevel = [];\n }\n /**\n * Creates an overlay config from a dialog config.\n * @param config The dialog configuration.\n * @returns The overlay configuration.\n */\n _getOverlayConfig(config) {\n const state = new OverlayConfig({\n positionStrategy: config.positionStrategy || this._overlay.position().global().centerHorizontally().centerVertically(),\n scrollStrategy: config.scrollStrategy || this._scrollStrategy(),\n panelClass: config.panelClass,\n hasBackdrop: config.hasBackdrop,\n direction: config.direction,\n minWidth: config.minWidth,\n minHeight: config.minHeight,\n maxWidth: config.maxWidth,\n maxHeight: config.maxHeight,\n width: config.width,\n height: config.height,\n disposeOnNavigation: config.closeOnNavigation\n });\n if (config.backdropClass) {\n state.backdropClass = config.backdropClass;\n }\n return state;\n }\n /**\n * Attaches a dialog container to a dialog's already-created overlay.\n * @param overlay Reference to the dialog's underlying overlay.\n * @param config The dialog configuration.\n * @returns A promise resolving to a ComponentRef for the attached container.\n */\n _attachContainer(overlay, dialogRef, config) {\n const userInjector = config.injector || config.viewContainerRef?.injector;\n const providers = [{\n provide: DialogConfig,\n useValue: config\n }, {\n provide: DialogRef,\n useValue: dialogRef\n }, {\n provide: OverlayRef,\n useValue: overlay\n }];\n let containerType;\n if (config.container) {\n if (typeof config.container === 'function') {\n containerType = config.container;\n } else {\n containerType = config.container.type;\n providers.push(...config.container.providers(config));\n }\n } else {\n containerType = CdkDialogContainer;\n }\n const containerPortal = new ComponentPortal(containerType, config.viewContainerRef, Injector.create({\n parent: userInjector || this._injector,\n providers\n }));\n const containerRef = overlay.attach(containerPortal);\n return containerRef.instance;\n }\n /**\n * Attaches the user-provided component to the already-created dialog container.\n * @param componentOrTemplateRef The type of component being loaded into the dialog,\n * or a TemplateRef to instantiate as the content.\n * @param dialogRef Reference to the dialog being opened.\n * @param dialogContainer Component that is going to wrap the dialog content.\n * @param config Configuration used to open the dialog.\n */\n _attachDialogContent(componentOrTemplateRef, dialogRef, dialogContainer, config) {\n if (componentOrTemplateRef instanceof TemplateRef) {\n const injector = this._createInjector(config, dialogRef, dialogContainer, undefined);\n let context = {\n $implicit: config.data,\n dialogRef\n };\n if (config.templateContext) {\n context = {\n ...context,\n ...(typeof config.templateContext === 'function' ? config.templateContext() : config.templateContext)\n };\n }\n dialogContainer.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, null, context, injector));\n } else {\n const injector = this._createInjector(config, dialogRef, dialogContainer, this._injector);\n const contentRef = dialogContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector));\n dialogRef.componentRef = contentRef;\n dialogRef.componentInstance = contentRef.instance;\n }\n }\n /**\n * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n * of a dialog to close itself and, optionally, to return a value.\n * @param config Config object that is used to construct the dialog.\n * @param dialogRef Reference to the dialog being opened.\n * @param dialogContainer Component that is going to wrap the dialog content.\n * @param fallbackInjector Injector to use as a fallback when a lookup fails in the custom\n * dialog injector, if the user didn't provide a custom one.\n * @returns The custom injector that can be used inside the dialog.\n */\n _createInjector(config, dialogRef, dialogContainer, fallbackInjector) {\n const userInjector = config.injector || config.viewContainerRef?.injector;\n const providers = [{\n provide: DIALOG_DATA,\n useValue: config.data\n }, {\n provide: DialogRef,\n useValue: dialogRef\n }];\n if (config.providers) {\n if (typeof config.providers === 'function') {\n providers.push(...config.providers(dialogRef, config, dialogContainer));\n } else {\n providers.push(...config.providers);\n }\n }\n if (config.direction && (!userInjector || !userInjector.get(Directionality, null, {\n optional: true\n }))) {\n providers.push({\n provide: Directionality,\n useValue: {\n value: config.direction,\n change: of()\n }\n });\n }\n return Injector.create({\n parent: userInjector || fallbackInjector,\n providers\n });\n }\n /**\n * Removes a dialog from the array of open dialogs.\n * @param dialogRef Dialog to be removed.\n * @param emitEvent Whether to emit an event if this is the last dialog.\n */\n _removeOpenDialog(dialogRef, emitEvent) {\n const index = this.openDialogs.indexOf(dialogRef);\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n // If all the dialogs were closed, remove/restore the `aria-hidden`\n // to a the siblings and emit to the `afterAllClosed` stream.\n if (!this.openDialogs.length) {\n this._ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenElements.clear();\n if (emitEvent) {\n this._getAfterAllClosed().next();\n }\n }\n }\n }\n /** Hides all of the content that isn't an overlay from assistive technology. */\n _hideNonDialogContentFromAssistiveTechnology() {\n const overlayContainer = this._overlayContainer.getContainerElement();\n // Ensure that the overlay container is attached to the DOM.\n if (overlayContainer.parentElement) {\n const siblings = overlayContainer.parentElement.children;\n for (let i = siblings.length - 1; i > -1; i--) {\n const sibling = siblings[i];\n if (sibling !== overlayContainer && sibling.nodeName !== 'SCRIPT' && sibling.nodeName !== 'STYLE' && !sibling.hasAttribute('aria-live')) {\n this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n _getAfterAllClosed() {\n const parent = this._parentDialog;\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n }\n static ɵfac = function Dialog_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || Dialog)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Dialog,\n factory: Dialog.ɵfac,\n providedIn: 'root'\n });\n }\n return Dialog;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Executes a callback against all elements in an array while iterating in reverse.\n * Useful if the array is being modified as it is being iterated.\n */\nfunction reverseForEach(items, callback) {\n let i = items.length;\n while (i--) {\n callback(items[i]);\n }\n}\nlet DialogModule = /*#__PURE__*/(() => {\n class DialogModule {\n static ɵfac = function DialogModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || DialogModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: DialogModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [Dialog],\n imports: [OverlayModule, PortalModule, A11yModule,\n // Re-export the PortalModule so that people extending the `CdkDialogContainer`\n // don't have to remember to import it or be faced with an unhelpful error.\n PortalModule]\n });\n }\n return DialogModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkDialogContainer, DEFAULT_DIALOG_CONFIG, DIALOG_DATA, DIALOG_SCROLL_STRATEGY, DIALOG_SCROLL_STRATEGY_PROVIDER, DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, Dialog, DialogConfig, DialogModule, DialogRef, throwDialogContentAlreadyAttachedError };\n","import { Overlay, OverlayModule } from '@angular/cdk/overlay';\nimport * as i0 from '@angular/core';\nimport { inject, ANIMATION_MODULE_TYPE, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, InjectionToken, Injectable, ElementRef, Directive, Input, NgModule } from '@angular/core';\nimport { CdkDialogContainer, Dialog, DialogConfig, DialogModule } from '@angular/cdk/dialog';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport { Subject, merge, defer } from 'rxjs';\nimport { filter, take, startWith } from 'rxjs/operators';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { _IdGenerator } from '@angular/cdk/a11y';\nimport * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatCommonModule } from '@angular/material/core';\nimport { trigger, state, style, transition, group, animate, query, animateChild } from '@angular/animations';\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nfunction MatDialogContainer_ng_template_2_Template(rf, ctx) {}\nclass MatDialogConfig {\n /**\n * Where the attached component should live in Angular's *logical* component tree.\n * This affects what is available for injection and the change detection order for the\n * component instantiated inside of the dialog. This does not affect where the dialog\n * content will be rendered.\n */\n viewContainerRef;\n /**\n * Injector used for the instantiation of the component to be attached. If provided,\n * takes precedence over the injector indirectly provided by `ViewContainerRef`.\n */\n injector;\n /** ID for the dialog. If omitted, a unique one will be generated. */\n id;\n /** The ARIA role of the dialog element. */\n role = 'dialog';\n /** Custom class for the overlay pane. */\n panelClass = '';\n /** Whether the dialog has a backdrop. */\n hasBackdrop = true;\n /** Custom class for the backdrop. */\n backdropClass = '';\n /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n disableClose = false;\n /** Width of the dialog. */\n width = '';\n /** Height of the dialog. */\n height = '';\n /** Min-width of the dialog. If a number is provided, assumes pixel units. */\n minWidth;\n /** Min-height of the dialog. If a number is provided, assumes pixel units. */\n minHeight;\n /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n maxWidth;\n /** Max-height of the dialog. If a number is provided, assumes pixel units. */\n maxHeight;\n /** Position overrides. */\n position;\n /** Data being injected into the child component. */\n data = null;\n /** Layout direction for the dialog's content. */\n direction;\n /** ID of the element that describes the dialog. */\n ariaDescribedBy = null;\n /** ID of the element that labels the dialog. */\n ariaLabelledBy = null;\n /** Aria label to assign to the dialog element. */\n ariaLabel = null;\n /** Whether this is a modal dialog. Used to set the `aria-modal` attribute. */\n ariaModal = true;\n /**\n * Where the dialog should focus on open.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n * AutoFocusTarget instead.\n */\n autoFocus = 'first-tabbable';\n /**\n * Whether the dialog should restore focus to the\n * previously-focused element, after it's closed.\n */\n restoreFocus = true;\n /** Whether to wait for the opening animation to finish before trapping focus. */\n delayFocusTrap = true;\n /** Scroll strategy to be used for the dialog. */\n scrollStrategy;\n /**\n * Whether the dialog should close 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 closeOnNavigation = true;\n /**\n * Alternate `ComponentFactoryResolver` to use when resolving the associated component.\n * @deprecated No longer used. Will be removed.\n * @breaking-change 20.0.0\n */\n componentFactoryResolver;\n /**\n * Duration of the enter animation in ms.\n * Should be a number, string type is deprecated.\n * @breaking-change 17.0.0 Remove string signature.\n */\n enterAnimationDuration;\n /**\n * Duration of the exit animation in ms.\n * Should be a number, string type is deprecated.\n * @breaking-change 17.0.0 Remove string signature.\n */\n exitAnimationDuration;\n}\n\n/** Class added when the dialog is open. */\nconst OPEN_CLASS = 'mdc-dialog--open';\n/** Class added while the dialog is opening. */\nconst OPENING_CLASS = 'mdc-dialog--opening';\n/** Class added while the dialog is closing. */\nconst CLOSING_CLASS = 'mdc-dialog--closing';\n/** Duration of the opening animation in milliseconds. */\nconst OPEN_ANIMATION_DURATION = 150;\n/** Duration of the closing animation in milliseconds. */\nconst CLOSE_ANIMATION_DURATION = 75;\nlet MatDialogContainer = /*#__PURE__*/(() => {\n class MatDialogContainer extends CdkDialogContainer {\n _animationMode = inject(ANIMATION_MODULE_TYPE, {\n optional: true\n });\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter();\n /** Whether animations are enabled. */\n _animationsEnabled = this._animationMode !== 'NoopAnimations';\n /** Number of actions projected in the dialog. */\n _actionSectionCount = 0;\n /** Host element of the dialog container component. */\n _hostElement = this._elementRef.nativeElement;\n /** Duration of the dialog open animation. */\n _enterAnimationDuration = this._animationsEnabled ? parseCssTime(this._config.enterAnimationDuration) ?? OPEN_ANIMATION_DURATION : 0;\n /** Duration of the dialog close animation. */\n _exitAnimationDuration = this._animationsEnabled ? parseCssTime(this._config.exitAnimationDuration) ?? CLOSE_ANIMATION_DURATION : 0;\n /** Current timer for dialog animations. */\n _animationTimer = null;\n _contentAttached() {\n // Delegate to the original dialog-container initialization (i.e. saving the\n // previous element, setting up the focus trap and moving focus to the container).\n super._contentAttached();\n // Note: Usually we would be able to use the MDC dialog foundation here to handle\n // the dialog animation for us, but there are a few reasons why we just leverage\n // their styles and not use the runtime foundation code:\n // 1. Foundation does not allow us to disable animations.\n // 2. Foundation contains unnecessary features we don't need and aren't\n // tree-shakeable. e.g. background scrim, keyboard event handlers for ESC button.\n this._startOpenAnimation();\n }\n /** Starts the dialog open animation if enabled. */\n _startOpenAnimation() {\n this._animationStateChanged.emit({\n state: 'opening',\n totalTime: this._enterAnimationDuration\n });\n if (this._animationsEnabled) {\n this._hostElement.style.setProperty(TRANSITION_DURATION_PROPERTY, `${this._enterAnimationDuration}ms`);\n // We need to give the `setProperty` call from above some time to be applied.\n // One would expect that the open class is added once the animation finished, but MDC\n // uses the open class in combination with the opening class to start the animation.\n this._requestAnimationFrame(() => this._hostElement.classList.add(OPENING_CLASS, OPEN_CLASS));\n this._waitForAnimationToComplete(this._enterAnimationDuration, this._finishDialogOpen);\n } else {\n this._hostElement.classList.add(OPEN_CLASS);\n // Note: We could immediately finish the dialog opening here with noop animations,\n // but we defer until next tick so that consumers can subscribe to `afterOpened`.\n // Executing this immediately would mean that `afterOpened` emits synchronously\n // on `dialog.open` before the consumer had a change to subscribe to `afterOpened`.\n Promise.resolve().then(() => this._finishDialogOpen());\n }\n }\n /**\n * Starts the exit animation of the dialog if enabled. This method is\n * called by the dialog ref.\n */\n _startExitAnimation() {\n this._animationStateChanged.emit({\n state: 'closing',\n totalTime: this._exitAnimationDuration\n });\n this._hostElement.classList.remove(OPEN_CLASS);\n if (this._animationsEnabled) {\n this._hostElement.style.setProperty(TRANSITION_DURATION_PROPERTY, `${this._exitAnimationDuration}ms`);\n // We need to give the `setProperty` call from above some time to be applied.\n this._requestAnimationFrame(() => this._hostElement.classList.add(CLOSING_CLASS));\n this._waitForAnimationToComplete(this._exitAnimationDuration, this._finishDialogClose);\n } else {\n // This subscription to the `OverlayRef#backdropClick` observable in the `DialogRef` is\n // set up before any user can subscribe to the backdrop click. The subscription triggers\n // the dialog close and this method synchronously. If we'd synchronously emit the `CLOSED`\n // animation state event if animations are disabled, the overlay would be disposed\n // immediately and all other subscriptions to `DialogRef#backdropClick` would be silently\n // skipped. We work around this by waiting with the dialog close until the next tick when\n // all subscriptions have been fired as expected. This is not an ideal solution, but\n // there doesn't seem to be any other good way. Alternatives that have been considered:\n // 1. Deferring `DialogRef.close`. This could be a breaking change due to a new microtask.\n // Also this issue is specific to the MDC implementation where the dialog could\n // technically be closed synchronously. In the non-MDC one, Angular animations are used\n // and closing always takes at least a tick.\n // 2. Ensuring that user subscriptions to `backdropClick`, `keydownEvents` in the dialog\n // ref are first. This would solve the issue, but has the risk of memory leaks and also\n // doesn't solve the case where consumers call `DialogRef.close` in their subscriptions.\n // Based on the fact that this is specific to the MDC-based implementation of the dialog\n // animations, the defer is applied here.\n Promise.resolve().then(() => this._finishDialogClose());\n }\n }\n /**\n * Updates the number action sections.\n * @param delta Increase/decrease in the number of sections.\n */\n _updateActionSectionCount(delta) {\n this._actionSectionCount += delta;\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Completes the dialog open by clearing potential animation classes, trapping\n * focus and emitting an opened event.\n */\n _finishDialogOpen = () => {\n this._clearAnimationClasses();\n this._openAnimationDone(this._enterAnimationDuration);\n };\n /**\n * Completes the dialog close by clearing potential animation classes, restoring\n * focus and emitting a closed event.\n */\n _finishDialogClose = () => {\n this._clearAnimationClasses();\n this._animationStateChanged.emit({\n state: 'closed',\n totalTime: this._exitAnimationDuration\n });\n };\n /** Clears all dialog animation classes. */\n _clearAnimationClasses() {\n this._hostElement.classList.remove(OPENING_CLASS, CLOSING_CLASS);\n }\n _waitForAnimationToComplete(duration, callback) {\n if (this._animationTimer !== null) {\n clearTimeout(this._animationTimer);\n }\n // Note that we want this timer to run inside the NgZone, because we want\n // the related events like `afterClosed` to be inside the zone as well.\n this._animationTimer = setTimeout(callback, duration);\n }\n /** Runs a callback in `requestAnimationFrame`, if available. */\n _requestAnimationFrame(callback) {\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n });\n }\n _captureInitialFocus() {\n if (!this._config.delayFocusTrap) {\n this._trapFocus();\n }\n }\n /**\n * Callback for when the open dialog animation has finished. Intended to\n * be called by sub-classes that use different animation implementations.\n */\n _openAnimationDone(totalTime) {\n if (this._config.delayFocusTrap) {\n this._trapFocus();\n }\n this._animationStateChanged.next({\n state: 'opened',\n totalTime\n });\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._animationTimer !== null) {\n clearTimeout(this._animationTimer);\n }\n }\n attachComponentPortal(portal) {\n // When a component is passed into the dialog, the host element interrupts\n // the `display:flex` from affecting the dialog title, content, and\n // actions. To fix this, we make the component host `display: contents` by\n // marking its host with the `mat-mdc-dialog-component-host` class.\n //\n // Note that this problem does not exist when a template ref is used since\n // the title, contents, and actions are then nested directly under the\n // dialog surface.\n const ref = super.attachComponentPortal(portal);\n ref.location.nativeElement.classList.add('mat-mdc-dialog-component-host');\n return ref;\n }\n static ɵfac = /* @__PURE__ */(() => {\n let ɵMatDialogContainer_BaseFactory;\n return function MatDialogContainer_Factory(__ngFactoryType__) {\n return (ɵMatDialogContainer_BaseFactory || (ɵMatDialogContainer_BaseFactory = i0.ɵɵgetInheritedFactory(MatDialogContainer)))(__ngFactoryType__ || MatDialogContainer);\n };\n })();\n static ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatDialogContainer,\n selectors: [[\"mat-dialog-container\"]],\n hostAttrs: [\"tabindex\", \"-1\", 1, \"mat-mdc-dialog-container\", \"mdc-dialog\"],\n hostVars: 10,\n hostBindings: function MatDialogContainer_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx._config.id);\n i0.ɵɵattribute(\"aria-modal\", ctx._config.ariaModal)(\"role\", ctx._config.role)(\"aria-labelledby\", ctx._config.ariaLabel ? null : ctx._ariaLabelledByQueue[0])(\"aria-label\", ctx._config.ariaLabel)(\"aria-describedby\", ctx._config.ariaDescribedBy || null);\n i0.ɵɵclassProp(\"_mat-animation-noopable\", !ctx._animationsEnabled)(\"mat-mdc-dialog-container-with-actions\", ctx._actionSectionCount > 0);\n }\n },\n features: [i0.ɵɵInheritDefinitionFeature],\n decls: 3,\n vars: 0,\n consts: [[1, \"mat-mdc-dialog-inner-container\", \"mdc-dialog__container\"], [1, \"mat-mdc-dialog-surface\", \"mdc-dialog__surface\"], [\"cdkPortalOutlet\", \"\"]],\n template: function MatDialogContainer_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n i0.ɵɵtemplate(2, MatDialogContainer_ng_template_2_Template, 0, 0, \"ng-template\", 2);\n i0.ɵɵelementEnd()();\n }\n },\n dependencies: [CdkPortalOutlet],\n styles: [\".mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 560px);min-width:var(--mat-dialog-container-min-width, 280px)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, calc(100vw - 32px))}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, none);border-radius:var(--mdc-dialog-container-shape, var(--mat-sys-corner-extra-large, 4px));background-color:var(--mdc-dialog-container-color, var(--mat-sys-surface, white))}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}.mat-mdc-dialog-title{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 6px 24px 13px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:\\\"\\\";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mdc-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mdc-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mdc-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mdc-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mdc-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mdc-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em))}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mdc-dialog-supporting-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, 0.6)));font-family:var(--mdc-dialog-supporting-text-font, var(--mat-sys-body-medium-font, inherit));line-height:var(--mdc-dialog-supporting-text-line-height, var(--mat-sys-body-medium-line-height, 1.5rem));font-size:var(--mdc-dialog-supporting-text-size, var(--mat-sys-body-medium-size, 1rem));font-weight:var(--mdc-dialog-supporting-text-weight, var(--mat-sys-body-medium-weight, 400));letter-spacing:var(--mdc-dialog-supporting-text-tracking, var(--mat-sys-body-medium-tracking, 0.03125em))}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px 0)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 16px 24px);justify-content:var(--mat-dialog-actions-alignment, flex-end)}@media(forced-colors: active){.mat-mdc-dialog-actions{border-top-color:CanvasText}}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}\"],\n encapsulation: 2\n });\n }\n return MatDialogContainer;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nconst TRANSITION_DURATION_PROPERTY = '--mat-dialog-transition-duration';\n// TODO(mmalerba): Remove this function after animation durations are required\n// to be numbers.\n/**\n * Converts a CSS time string to a number in ms. If the given time is already a\n * number, it is assumed to be in ms.\n */\nfunction parseCssTime(time) {\n if (time == null) {\n return null;\n }\n if (typeof time === 'number') {\n return time;\n }\n if (time.endsWith('ms')) {\n return coerceNumberProperty(time.substring(0, time.length - 2));\n }\n if (time.endsWith('s')) {\n return coerceNumberProperty(time.substring(0, time.length - 1)) * 1000;\n }\n if (time === '0') {\n return 0;\n }\n return null; // anything else is invalid.\n}\nvar MatDialogState = /*#__PURE__*/function (MatDialogState) {\n MatDialogState[MatDialogState[\"OPEN\"] = 0] = \"OPEN\";\n MatDialogState[MatDialogState[\"CLOSING\"] = 1] = \"CLOSING\";\n MatDialogState[MatDialogState[\"CLOSED\"] = 2] = \"CLOSED\";\n return MatDialogState;\n}(MatDialogState || {});\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nclass MatDialogRef {\n _ref;\n _containerInstance;\n /** The instance of component opened into the dialog. */\n componentInstance;\n /**\n * `ComponentRef` of the component opened into the dialog. Will be\n * null when the dialog is opened using a `TemplateRef`.\n */\n componentRef;\n /** Whether the user is allowed to close the dialog. */\n disableClose;\n /** Unique ID for the dialog. */\n id;\n /** Subject for notifying the user that the dialog has finished opening. */\n _afterOpened = /*#__PURE__*/new Subject();\n /** Subject for notifying the user that the dialog has started closing. */\n _beforeClosed = /*#__PURE__*/new Subject();\n /** Result to be passed to afterClosed. */\n _result;\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n _closeFallbackTimeout;\n /** Current state of the dialog. */\n _state = MatDialogState.OPEN;\n // TODO(crisbeto): we shouldn't have to declare this property, because `DialogRef.close`\n // already has a second `options` parameter that we can use. The problem is that internal tests\n // have assertions like `expect(MatDialogRef.close).toHaveBeenCalledWith(foo)` which will break,\n // because it'll be called with two arguments by things like `MatDialogClose`.\n /** Interaction that caused the dialog to close. */\n _closeInteractionType;\n constructor(_ref, config, _containerInstance) {\n this._ref = _ref;\n this._containerInstance = _containerInstance;\n this.disableClose = config.disableClose;\n this.id = _ref.id;\n // Used to target panels specifically tied to dialogs.\n _ref.addPanelClass('mat-mdc-dialog-panel');\n // Emit when opening animation completes\n _containerInstance._animationStateChanged.pipe(filter(event => event.state === 'opened'), take(1)).subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n // Dispose overlay when closing animation is complete\n _containerInstance._animationStateChanged.pipe(filter(event => event.state === 'closed'), take(1)).subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._finishDialogClose();\n });\n _ref.overlayRef.detachments().subscribe(() => {\n this._beforeClosed.next(this._result);\n this._beforeClosed.complete();\n this._finishDialogClose();\n });\n merge(this.backdropClick(), this.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)))).subscribe(event => {\n if (!this.disableClose) {\n event.preventDefault();\n _closeDialogVia(this, event.type === 'keydown' ? 'keyboard' : 'mouse');\n }\n });\n }\n /**\n * Close the dialog.\n * @param dialogResult Optional result to return to the dialog opener.\n */\n close(dialogResult) {\n this._result = dialogResult;\n // Transition the backdrop in parallel to the dialog.\n this._containerInstance._animationStateChanged.pipe(filter(event => event.state === 'closing'), take(1)).subscribe(event => {\n this._beforeClosed.next(dialogResult);\n this._beforeClosed.complete();\n this._ref.overlayRef.detachBackdrop();\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has the chance to fire.\n this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(), event.totalTime + 100);\n });\n this._state = MatDialogState.CLOSING;\n this._containerInstance._startExitAnimation();\n }\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n */\n afterOpened() {\n return this._afterOpened;\n }\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n */\n afterClosed() {\n return this._ref.closed;\n }\n /**\n * Gets an observable that is notified when the dialog has started closing.\n */\n beforeClosed() {\n return this._beforeClosed;\n }\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick() {\n return this._ref.backdropClick;\n }\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents() {\n return this._ref.keydownEvents;\n }\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n updatePosition(position) {\n let strategy = this._ref.config.positionStrategy;\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n } else {\n strategy.centerHorizontally();\n }\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n } else {\n strategy.centerVertically();\n }\n this._ref.updatePosition();\n return this;\n }\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width = '', height = '') {\n this._ref.updateSize(width, height);\n return this;\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n this._ref.addPanelClass(classes);\n return this;\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n this._ref.removePanelClass(classes);\n return this;\n }\n /** Gets the current state of the dialog's lifecycle. */\n getState() {\n return this._state;\n }\n /**\n * Finishes the dialog close by updating the state of the dialog\n * and disposing the overlay.\n */\n _finishDialogClose() {\n this._state = MatDialogState.CLOSED;\n this._ref.close(this._result, {\n focusOrigin: this._closeInteractionType\n });\n this.componentInstance = null;\n }\n}\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nfunction _closeDialogVia(ref, interactionType, result) {\n ref._closeInteractionType = interactionType;\n return ref.close(result);\n}\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nconst MAT_DIALOG_DATA = /*#__PURE__*/new InjectionToken('MatMdcDialogData');\n/** Injection token that can be used to specify default dialog options. */\nconst MAT_DIALOG_DEFAULT_OPTIONS = /*#__PURE__*/new InjectionToken('mat-mdc-dialog-default-options');\n/** Injection token that determines the scroll handling while the dialog is open. */\nconst MAT_DIALOG_SCROLL_STRATEGY = /*#__PURE__*/new InjectionToken('mat-mdc-dialog-scroll-strategy', {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.block();\n }\n});\n/**\n * @docs-private\n * @deprecated No longer used. To be removed.\n * @breaking-change 19.0.0\n */\nfunction MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.block();\n}\n/**\n * @docs-private\n * @deprecated No longer used. To be removed.\n * @breaking-change 19.0.0\n */\nconst MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n/**\n * Service to open Material Design modal dialogs.\n */\nlet MatDialog = /*#__PURE__*/(() => {\n class MatDialog {\n _overlay = inject(Overlay);\n _defaultOptions = inject(MAT_DIALOG_DEFAULT_OPTIONS, {\n optional: true\n });\n _scrollStrategy = inject(MAT_DIALOG_SCROLL_STRATEGY);\n _parentDialog = inject(MatDialog, {\n optional: true,\n skipSelf: true\n });\n _idGenerator = inject(_IdGenerator);\n _dialog = inject(Dialog);\n _openDialogsAtThisLevel = [];\n _afterAllClosedAtThisLevel = new Subject();\n _afterOpenedAtThisLevel = new Subject();\n dialogConfigClass = MatDialogConfig;\n _dialogRefConstructor;\n _dialogContainerType;\n _dialogDataToken;\n /** Keeps track of the currently-open dialogs. */\n get openDialogs() {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n /** Stream that emits when a dialog has been opened. */\n get afterOpened() {\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n }\n _getAfterAllClosed() {\n const parent = this._parentDialog;\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n }\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n afterAllClosed = defer(() => this.openDialogs.length ? this._getAfterAllClosed() : this._getAfterAllClosed().pipe(startWith(undefined)));\n constructor() {\n this._dialogRefConstructor = MatDialogRef;\n this._dialogContainerType = MatDialogContainer;\n this._dialogDataToken = MAT_DIALOG_DATA;\n }\n open(componentOrTemplateRef, config) {\n let dialogRef;\n config = {\n ...(this._defaultOptions || new MatDialogConfig()),\n ...config\n };\n config.id = config.id || this._idGenerator.getId('mat-mdc-dialog-');\n config.scrollStrategy = config.scrollStrategy || this._scrollStrategy();\n const cdkRef = this._dialog.open(componentOrTemplateRef, {\n ...config,\n positionStrategy: this._overlay.position().global().centerHorizontally().centerVertically(),\n // Disable closing since we need to sync it up to the animation ourselves.\n disableClose: true,\n // Disable closing on destroy, because this service cleans up its open dialogs as well.\n // We want to do the cleanup here, rather than the CDK service, because the CDK destroys\n // the dialogs immediately whereas we want it to wait for the animations to finish.\n closeOnDestroy: false,\n // Disable closing on detachments so that we can sync up the animation.\n // The Material dialog ref handles this manually.\n closeOnOverlayDetachments: false,\n container: {\n type: this._dialogContainerType,\n providers: () => [\n // Provide our config as the CDK config as well since it has the same interface as the\n // CDK one, but it contains the actual values passed in by the user for things like\n // `disableClose` which we disable for the CDK dialog since we handle it ourselves.\n {\n provide: this.dialogConfigClass,\n useValue: config\n }, {\n provide: DialogConfig,\n useValue: config\n }]\n },\n templateContext: () => ({\n dialogRef\n }),\n providers: (ref, cdkConfig, dialogContainer) => {\n dialogRef = new this._dialogRefConstructor(ref, config, dialogContainer);\n dialogRef.updatePosition(config?.position);\n return [{\n provide: this._dialogContainerType,\n useValue: dialogContainer\n }, {\n provide: this._dialogDataToken,\n useValue: cdkConfig.data\n }, {\n provide: this._dialogRefConstructor,\n useValue: dialogRef\n }];\n }\n });\n // This can't be assigned in the `providers` callback, because\n // the instance hasn't been assigned to the CDK ref yet.\n dialogRef.componentRef = cdkRef.componentRef;\n dialogRef.componentInstance = cdkRef.componentInstance;\n this.openDialogs.push(dialogRef);\n this.afterOpened.next(dialogRef);\n dialogRef.afterClosed().subscribe(() => {\n const index = this.openDialogs.indexOf(dialogRef);\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n if (!this.openDialogs.length) {\n this._getAfterAllClosed().next();\n }\n }\n });\n return dialogRef;\n }\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll() {\n this._closeDialogs(this.openDialogs);\n }\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n getDialogById(id) {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n ngOnDestroy() {\n // Only close the dialogs at this level on destroy\n // since the parent service may still be active.\n this._closeDialogs(this._openDialogsAtThisLevel);\n this._afterAllClosedAtThisLevel.complete();\n this._afterOpenedAtThisLevel.complete();\n }\n _closeDialogs(dialogs) {\n let i = dialogs.length;\n while (i--) {\n dialogs[i].close();\n }\n }\n static ɵfac = function MatDialog_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatDialog)();\n };\n static ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MatDialog,\n factory: MatDialog.ɵfac,\n providedIn: 'root'\n });\n }\n return MatDialog;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Button that will close the current dialog.\n */\nlet MatDialogClose = /*#__PURE__*/(() => {\n class MatDialogClose {\n dialogRef = inject(MatDialogRef, {\n optional: true\n });\n _elementRef = inject(ElementRef);\n _dialog = inject(MatDialog);\n /** Screen-reader label for the button. */\n ariaLabel;\n /** Default to \"button\" to prevents accidental form submits. */\n type = 'button';\n /** Dialog close input. */\n dialogResult;\n _matDialogClose;\n constructor() {}\n ngOnInit() {\n if (!this.dialogRef) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);\n }\n }\n ngOnChanges(changes) {\n const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n }\n _onButtonClick(event) {\n // Determinate the focus origin using the click event, because using the FocusMonitor will\n // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n // dialog, and therefore clicking the button won't result in a focus change. This means that\n // the FocusMonitor won't detect any origin change, and will always output `program`.\n _closeDialogVia(this.dialogRef, event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);\n }\n static ɵfac = function MatDialogClose_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatDialogClose)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatDialogClose,\n selectors: [[\"\", \"mat-dialog-close\", \"\"], [\"\", \"matDialogClose\", \"\"]],\n hostVars: 2,\n hostBindings: function MatDialogClose_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function MatDialogClose_click_HostBindingHandler($event) {\n return ctx._onButtonClick($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"aria-label\", ctx.ariaLabel || null)(\"type\", ctx.type);\n }\n },\n inputs: {\n ariaLabel: [0, \"aria-label\", \"ariaLabel\"],\n type: \"type\",\n dialogResult: [0, \"mat-dialog-close\", \"dialogResult\"],\n _matDialogClose: [0, \"matDialogClose\", \"_matDialogClose\"]\n },\n exportAs: [\"matDialogClose\"],\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n return MatDialogClose;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MatDialogLayoutSection = /*#__PURE__*/(() => {\n class MatDialogLayoutSection {\n _dialogRef = inject(MatDialogRef, {\n optional: true\n });\n _elementRef = inject(ElementRef);\n _dialog = inject(MatDialog);\n constructor() {}\n ngOnInit() {\n if (!this._dialogRef) {\n this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);\n }\n if (this._dialogRef) {\n Promise.resolve().then(() => {\n this._onAdd();\n });\n }\n }\n ngOnDestroy() {\n // Note: we null check because there are some internal\n // tests that are mocking out `MatDialogRef` incorrectly.\n const instance = this._dialogRef?._containerInstance;\n if (instance) {\n Promise.resolve().then(() => {\n this._onRemove();\n });\n }\n }\n static ɵfac = function MatDialogLayoutSection_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatDialogLayoutSection)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatDialogLayoutSection\n });\n }\n return MatDialogLayoutSection;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\nlet MatDialogTitle = /*#__PURE__*/(() => {\n class MatDialogTitle extends MatDialogLayoutSection {\n id = inject(_IdGenerator).getId('mat-mdc-dialog-title-');\n _onAdd() {\n // Note: we null check the queue, because there are some internal\n // tests that are mocking out `MatDialogRef` incorrectly.\n this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id);\n }\n _onRemove() {\n this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id);\n }\n static ɵfac = /* @__PURE__ */(() => {\n let ɵMatDialogTitle_BaseFactory;\n return function MatDialogTitle_Factory(__ngFactoryType__) {\n return (ɵMatDialogTitle_BaseFactory || (ɵMatDialogTitle_BaseFactory = i0.ɵɵgetInheritedFactory(MatDialogTitle)))(__ngFactoryType__ || MatDialogTitle);\n };\n })();\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatDialogTitle,\n selectors: [[\"\", \"mat-dialog-title\", \"\"], [\"\", \"matDialogTitle\", \"\"]],\n hostAttrs: [1, \"mat-mdc-dialog-title\", \"mdc-dialog__title\"],\n hostVars: 1,\n hostBindings: function MatDialogTitle_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"id\", ctx.id);\n }\n },\n inputs: {\n id: \"id\"\n },\n exportAs: [\"matDialogTitle\"],\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return MatDialogTitle;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Scrollable content container of a dialog.\n */\nlet MatDialogContent = /*#__PURE__*/(() => {\n class MatDialogContent {\n static ɵfac = function MatDialogContent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatDialogContent)();\n };\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatDialogContent,\n selectors: [[\"\", \"mat-dialog-content\", \"\"], [\"mat-dialog-content\"], [\"\", \"matDialogContent\", \"\"]],\n hostAttrs: [1, \"mat-mdc-dialog-content\", \"mdc-dialog__content\"],\n features: [i0.ɵɵHostDirectivesFeature([i1.CdkScrollable])]\n });\n }\n return MatDialogContent;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\nlet MatDialogActions = /*#__PURE__*/(() => {\n class MatDialogActions extends MatDialogLayoutSection {\n /**\n * Horizontal alignment of action buttons.\n */\n align;\n _onAdd() {\n this._dialogRef._containerInstance?._updateActionSectionCount?.(1);\n }\n _onRemove() {\n this._dialogRef._containerInstance?._updateActionSectionCount?.(-1);\n }\n static ɵfac = /* @__PURE__ */(() => {\n let ɵMatDialogActions_BaseFactory;\n return function MatDialogActions_Factory(__ngFactoryType__) {\n return (ɵMatDialogActions_BaseFactory || (ɵMatDialogActions_BaseFactory = i0.ɵɵgetInheritedFactory(MatDialogActions)))(__ngFactoryType__ || MatDialogActions);\n };\n })();\n static ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatDialogActions,\n selectors: [[\"\", \"mat-dialog-actions\", \"\"], [\"mat-dialog-actions\"], [\"\", \"matDialogActions\", \"\"]],\n hostAttrs: [1, \"mat-mdc-dialog-actions\", \"mdc-dialog__actions\"],\n hostVars: 6,\n hostBindings: function MatDialogActions_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"mat-mdc-dialog-actions-align-start\", ctx.align === \"start\")(\"mat-mdc-dialog-actions-align-center\", ctx.align === \"center\")(\"mat-mdc-dialog-actions-align-end\", ctx.align === \"end\");\n }\n },\n inputs: {\n align: \"align\"\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n }\n return MatDialogActions;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element, openDialogs) {\n let parent = element.nativeElement.parentElement;\n while (parent && !parent.classList.contains('mat-mdc-dialog-container')) {\n parent = parent.parentElement;\n }\n return parent ? openDialogs.find(dialog => dialog.id === parent.id) : null;\n}\nconst DIRECTIVES = [MatDialogContainer, MatDialogClose, MatDialogTitle, MatDialogActions, MatDialogContent];\nlet MatDialogModule = /*#__PURE__*/(() => {\n class MatDialogModule {\n static ɵfac = function MatDialogModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || MatDialogModule)();\n };\n static ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatDialogModule\n });\n static ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [MatDialog],\n imports: [DialogModule, OverlayModule, PortalModule, MatCommonModule, MatCommonModule]\n });\n }\n return MatDialogModule;\n})();\n/*#__PURE__*/(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Default parameters for the animation for backwards compatibility.\n * @docs-private\n */\nconst _defaultParams = {\n params: {\n enterAnimationDuration: '150ms',\n exitAnimationDuration: '75ms'\n }\n};\n/**\n * Animations used by MatDialog.\n * @docs-private\n */\nconst matDialogAnimations = {\n /** Animation that is applied on the dialog container by default. */\n dialogContainer: /*#__PURE__*/trigger('dialogContainer', [\n /*#__PURE__*/\n // Note: The `enter` animation transitions to `transform: none`, because for some reason\n // specifying the transform explicitly, causes IE both to blur the dialog content and\n // decimate the animation performance. Leaving it as `none` solves both issues.\n state('void, exit', /*#__PURE__*/style({\n opacity: 0,\n transform: 'scale(0.7)'\n })), /*#__PURE__*/state('enter', /*#__PURE__*/style({\n transform: 'none'\n })), /*#__PURE__*/transition('* => enter', /*#__PURE__*/group([/*#__PURE__*/animate('{{enterAnimationDuration}} cubic-bezier(0, 0, 0.2, 1)', /*#__PURE__*/style({\n transform: 'none',\n opacity: 1\n })), /*#__PURE__*/query('@*', /*#__PURE__*/animateChild(), {\n optional: true\n })]), _defaultParams), /*#__PURE__*/transition('* => void, * => exit', /*#__PURE__*/group([/*#__PURE__*/animate('{{exitAnimationDuration}} cubic-bezier(0.4, 0.0, 0.2, 1)', /*#__PURE__*/style({\n opacity: 0\n })), /*#__PURE__*/query('@*', /*#__PURE__*/animateChild(), {\n optional: true\n })]), _defaultParams)])\n};\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_DIALOG_DATA, MAT_DIALOG_DEFAULT_OPTIONS, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MatDialog, MatDialogActions, MatDialogClose, MatDialogConfig, MatDialogContainer, MatDialogContent, MatDialogModule, MatDialogRef, MatDialogState, MatDialogTitle, _closeDialogVia, _defaultParams, matDialogAnimations };\n"],"mappings":"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","names":["CdkDialogContainer_ng_template_0_Template","rf","ctx","reverseForEach","items","callback","i","DialogConfig","CdkDialogContainer","DialogRef","DIALOG_SCROLL_STRATEGY","DIALOG_DATA","DEFAULT_DIALOG_CONFIG","Dialog","DialogModule","init_dialog","__esmMin","init_a11y","init_overlay","init_platform","init_portal","init_common","init_core","init_keycodes","init_esm","init_bidi","init_operators","BasePortalOutlet","inject","ElementRef","FocusTrapFactory","InteractivityChecker","NgZone","OverlayRef","FocusMonitor","Renderer2","Platform","DOCUMENT","ChangeDetectorRef","Injector","id","index","portal","result","element","options","deregisterBlur","deregisterMousedown","selector","elementToFocus","afterNextRender","focusConfig","focusTargetElement","activeElement","_getFocusedElementPierceShadowDom","__ngFactoryType__","ɵɵdefineComponent","ɵɵviewQuery","CdkPortalOutlet","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵattribute","ɵɵInheritDefinitionFeature","ɵɵtemplate","Subject","overlayRef","config","event","hasModifierKey","closedSubject","width","height","classes","InjectionToken","overlay","Overlay","OverlayContainer","_IdGenerator","defer","startWith","componentOrTemplateRef","defaults","__spreadValues","overlayConfig","dialogRef","dialogContainer","dialog","state","OverlayConfig","userInjector","providers","containerType","containerPortal","ComponentPortal","TemplateRef","injector","context","TemplatePortal","contentRef","fallbackInjector","Directionality","of","emitEvent","previousValue","overlayContainer","siblings","sibling","parent","ɵɵdefineInjectable","ɵɵdefineNgModule","ɵɵdefineInjector","OverlayModule","PortalModule","A11yModule","MatDialogContainer_ng_template_2_Template","rf","ctx","parseCssTime","time","coerceNumberProperty","_closeDialogVia","ref","interactionType","result","getClosestDialog","element","openDialogs","parent","dialog","MatDialogConfig","OPEN_CLASS","OPENING_CLASS","CLOSING_CLASS","OPEN_ANIMATION_DURATION","CLOSE_ANIMATION_DURATION","MatDialogContainer","TRANSITION_DURATION_PROPERTY","MatDialogState","MatDialogRef","MAT_DIALOG_DATA","MAT_DIALOG_DEFAULT_OPTIONS","MAT_DIALOG_SCROLL_STRATEGY","MatDialog","MatDialogClose","MatDialogLayoutSection","MatDialogTitle","MatDialogContent","MatDialogActions","MatDialogModule","init_dialog","__esmMin","init_overlay","init_core","init_coercion","init_portal","init_esm","init_operators","init_keycodes","init_a11y","init_scrolling","CdkDialogContainer","inject","ANIMATION_MODULE_TYPE","EventEmitter","delta","duration","callback","totalTime","portal","ɵMatDialogContainer_BaseFactory","__ngFactoryType__","ɵɵgetInheritedFactory","ɵɵdefineComponent","ɵɵhostProperty","ɵɵattribute","ɵɵclassProp","ɵɵInheritDefinitionFeature","ɵɵelementStart","ɵɵtemplate","ɵɵelementEnd","CdkPortalOutlet","Subject","_ref","config","_containerInstance","filter","event","take","merge","hasModifierKey","dialogResult","position","strategy","width","height","classes","InjectionToken","overlay","Overlay","_IdGenerator","Dialog","defer","startWith","componentOrTemplateRef","dialogRef","__spreadValues","cdkRef","__spreadProps","DialogConfig","cdkConfig","dialogContainer","index","id","dialogs","i","ɵɵdefineInjectable","ElementRef","changes","proxiedChange","ɵɵdefineDirective","ɵɵlistener","$event","ɵɵNgOnChangesFeature","ɵMatDialogTitle_BaseFactory","ɵɵHostDirectivesFeature","CdkScrollable","ɵMatDialogActions_BaseFactory","ɵɵdefineNgModule","ɵɵdefineInjector","DialogModule","OverlayModule","PortalModule","MatCommonModule"],"x_google_ignoreList":[0,1]}