{"version":3,"file":"dialog.js","sources":["../../packages/material/dialog/dialog-config.js","../../packages/material/dialog/dialog-container.js","../../packages/material/dialog/dialog-ref.js","../../packages/material/dialog/dialog.js","../../packages/material/dialog/dialog-content-directives.js","../../packages/material/dialog/dialog-module.js","../../packages/material/dialog/index.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nexport class MatDialogConfig {\n constructor() {\n /**\n * The ARIA role of the dialog element.\n */\n this.role = 'dialog';\n /**\n * Custom class for the overlay pane.\n */\n this.panelClass = '';\n /**\n * Whether the dialog has a backdrop.\n */\n this.hasBackdrop = true;\n /**\n * Custom class for the backdrop,\n */\n this.backdropClass = '';\n /**\n * Whether the user can use escape or clicking outside to close a modal.\n */\n this.disableClose = false;\n /**\n * Width of the dialog.\n */\n this.width = '';\n /**\n * Height of the dialog.\n */\n this.height = '';\n /**\n * Data being injected into the child component.\n */\n this.data = null;\n /**\n * Layout direction for the dialog's content.\n */\n this.direction = 'ltr';\n /**\n * ID of the element that describes the dialog.\n */\n this.ariaDescribedBy = null;\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\n }\n}\nfunction MatDialogConfig_tsickle_Closure_declarations() {\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 * @type {?}\n */\n MatDialogConfig.prototype.viewContainerRef;\n /**\n * ID for the dialog. If omitted, a unique one will be generated.\n * @type {?}\n */\n MatDialogConfig.prototype.id;\n /**\n * The ARIA role of the dialog element.\n * @type {?}\n */\n MatDialogConfig.prototype.role;\n /**\n * Custom class for the overlay pane.\n * @type {?}\n */\n MatDialogConfig.prototype.panelClass;\n /**\n * Whether the dialog has a backdrop.\n * @type {?}\n */\n MatDialogConfig.prototype.hasBackdrop;\n /**\n * Custom class for the backdrop,\n * @type {?}\n */\n MatDialogConfig.prototype.backdropClass;\n /**\n * Whether the user can use escape or clicking outside to close a modal.\n * @type {?}\n */\n MatDialogConfig.prototype.disableClose;\n /**\n * Width of the dialog.\n * @type {?}\n */\n MatDialogConfig.prototype.width;\n /**\n * Height of the dialog.\n * @type {?}\n */\n MatDialogConfig.prototype.height;\n /**\n * Position overrides.\n * @type {?}\n */\n MatDialogConfig.prototype.position;\n /**\n * Data being injected into the child component.\n * @type {?}\n */\n MatDialogConfig.prototype.data;\n /**\n * Layout direction for the dialog's content.\n * @type {?}\n */\n MatDialogConfig.prototype.direction;\n /**\n * ID of the element that describes the dialog.\n * @type {?}\n */\n MatDialogConfig.prototype.ariaDescribedBy;\n}\n//# sourceMappingURL=dialog-config.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Component, ElementRef, EventEmitter, Inject, Optional, ChangeDetectorRef, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { DOCUMENT } from '@angular/platform-browser';\nimport { BasePortalHost, PortalHostDirective } from '@angular/cdk/portal';\nimport { FocusTrapFactory } from '@angular/cdk/a11y';\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalHost without an origin.\n * \\@docs-private\n * @return {?}\n */\nexport function throwMatDialogContentAlreadyAttachedError() {\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 * Animation is based on https://material.io/guidelines/motion/choreography.html.\n * \\@docs-private\n */\nexport class MatDialogContainer extends BasePortalHost {\n /**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n * @param {?} _changeDetectorRef\n * @param {?} _document\n */\n constructor(_elementRef, _focusTrapFactory, _changeDetectorRef, _document) {\n super();\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n this._changeDetectorRef = _changeDetectorRef;\n this._document = _document;\n /**\n * Element that was focused before the dialog was opened. Save this to restore upon close.\n */\n this._elementFocusedBeforeDialogWasOpened = null;\n /**\n * State of the dialog animation.\n */\n this._state = 'enter';\n /**\n * Emits when an animation state changes.\n */\n this._animationStateChanged = new EventEmitter();\n /**\n * ID of the element that should be considered as the dialog's label.\n */\n this._ariaLabelledBy = null;\n /**\n * Whether the container is currently mid-animation.\n */\n this._isAnimating = false;\n }\n /**\n * Attach a ComponentPortal as content to this dialog container.\n * @template T\n * @param {?} portal Portal to be attached as the dialog content.\n * @return {?}\n */\n attachComponentPortal(portal) {\n if (this._portalHost.hasAttached()) {\n throwMatDialogContentAlreadyAttachedError();\n }\n this._savePreviouslyFocusedElement();\n return this._portalHost.attachComponentPortal(portal);\n }\n /**\n * Attach a TemplatePortal as content to this dialog container.\n * @template C\n * @param {?} portal Portal to be attached as the dialog content.\n * @return {?}\n */\n attachTemplatePortal(portal) {\n if (this._portalHost.hasAttached()) {\n throwMatDialogContentAlreadyAttachedError();\n }\n this._savePreviouslyFocusedElement();\n return this._portalHost.attachTemplatePortal(portal);\n }\n /**\n * Moves the focus inside the focus trap.\n * @return {?}\n */\n _trapFocus() {\n if (!this._focusTrap) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\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 for the microtask queue to be empty.\n this._focusTrap.focusInitialElementWhenReady().then(hasMovedFocus => {\n // If we didn't find any focusable elements inside the dialog, focus the\n // container so the user can't tab into other elements behind it.\n if (!hasMovedFocus) {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n /**\n * Restores focus to the element that was focused before the dialog opened.\n * @return {?}\n */\n _restoreFocus() {\n const /** @type {?} */ toFocus = this._elementFocusedBeforeDialogWasOpened;\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (toFocus && typeof toFocus.focus === 'function') {\n toFocus.focus();\n }\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n /**\n * Saves a reference to the element that was focused before the dialog was opened.\n * @return {?}\n */\n _savePreviouslyFocusedElement() {\n if (this._document) {\n this._elementFocusedBeforeDialogWasOpened = (this._document.activeElement);\n }\n }\n /**\n * Callback, invoked whenever an animation on the host completes.\n * @param {?} event\n * @return {?}\n */\n _onAnimationDone(event) {\n if (event.toState === 'enter') {\n this._trapFocus();\n }\n else if (event.toState === 'exit') {\n this._restoreFocus();\n }\n this._animationStateChanged.emit(event);\n this._isAnimating = false;\n }\n /**\n * Callback, invoked when an animation on the host starts.\n * @param {?} event\n * @return {?}\n */\n _onAnimationStart(event) {\n this._isAnimating = true;\n this._animationStateChanged.emit(event);\n }\n /**\n * Starts the dialog exit animation.\n * @return {?}\n */\n _startExitAnimation() {\n this._state = 'exit';\n // Mark the container for check so it can react if the\n // view container is using OnPush change detection.\n this._changeDetectorRef.markForCheck();\n }\n}\nMatDialogContainer.decorators = [\n { type: Component, args: [{selector: 'mat-dialog-container',\n template: \"\",\n styles: [\".mat-dialog-container{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);display:block;padding:24px;border-radius:2px;box-sizing:border-box;overflow:auto;max-width:80vw;outline:0;width:100%;height:100%}@media screen and (-ms-high-contrast:active){.mat-dialog-container{outline:solid 1px}}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch;-webkit-backface-visibility:hidden;backface-visibility:hidden}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:12px 0;display:flex;flex-wrap:wrap}.mat-dialog-actions:last-child{margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button+.mat-button,.mat-dialog-actions .mat-button+.mat-raised-button,.mat-dialog-actions .mat-raised-button+.mat-button,.mat-dialog-actions .mat-raised-button+.mat-raised-button{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button+.mat-button,[dir=rtl] .mat-dialog-actions .mat-button+.mat-raised-button,[dir=rtl] .mat-dialog-actions .mat-raised-button+.mat-button,[dir=rtl] .mat-dialog-actions .mat-raised-button+.mat-raised-button{margin-left:0;margin-right:8px}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n animations: [\n trigger('slideDialog', [\n // Note: The `enter` animation doesn't transition to something like `translate3d(0, 0, 0)\n // scale(1)`, because for some reason specifying the transform explicitly, causes IE both\n // to blur the dialog content and decimate the animation performance. Leaving it as `none`\n // solves both issues.\n state('enter', style({ transform: 'none', opacity: 1 })),\n state('void', style({ transform: 'translate3d(0, 25%, 0) scale(0.9)', opacity: 0 })),\n state('exit', style({ transform: 'translate3d(0, 25%, 0)', opacity: 0 })),\n transition('* => *', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')),\n ])\n ],\n host: {\n 'class': 'mat-dialog-container',\n 'tabindex': '-1',\n '[attr.role]': '_config?.role',\n '[attr.aria-labelledby]': '_ariaLabelledBy',\n '[attr.aria-describedby]': '_config?.ariaDescribedBy || null',\n '[@slideDialog]': '_state',\n '(@slideDialog.start)': '_onAnimationStart($event)',\n '(@slideDialog.done)': '_onAnimationDone($event)',\n },\n },] },\n];\n/**\n * @nocollapse\n */\nMatDialogContainer.ctorParameters = () => [\n { type: ElementRef, },\n { type: FocusTrapFactory, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n];\nMatDialogContainer.propDecorators = {\n '_portalHost': [{ type: ViewChild, args: [PortalHostDirective,] },],\n};\nfunction MatDialogContainer_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDialogContainer.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDialogContainer.ctorParameters;\n /** @type {?} */\n MatDialogContainer.propDecorators;\n /**\n * The portal host inside of this container into which the dialog content will be loaded.\n * @type {?}\n */\n MatDialogContainer.prototype._portalHost;\n /**\n * The class that traps and manages focus within the dialog.\n * @type {?}\n */\n MatDialogContainer.prototype._focusTrap;\n /**\n * Element that was focused before the dialog was opened. Save this to restore upon close.\n * @type {?}\n */\n MatDialogContainer.prototype._elementFocusedBeforeDialogWasOpened;\n /**\n * The dialog configuration.\n * @type {?}\n */\n MatDialogContainer.prototype._config;\n /**\n * State of the dialog animation.\n * @type {?}\n */\n MatDialogContainer.prototype._state;\n /**\n * Emits when an animation state changes.\n * @type {?}\n */\n MatDialogContainer.prototype._animationStateChanged;\n /**\n * ID of the element that should be considered as the dialog's label.\n * @type {?}\n */\n MatDialogContainer.prototype._ariaLabelledBy;\n /**\n * Whether the container is currently mid-animation.\n * @type {?}\n */\n MatDialogContainer.prototype._isAnimating;\n /** @type {?} */\n MatDialogContainer.prototype._elementRef;\n /** @type {?} */\n MatDialogContainer.prototype._focusTrapFactory;\n /** @type {?} */\n MatDialogContainer.prototype._changeDetectorRef;\n /** @type {?} */\n MatDialogContainer.prototype._document;\n}\n//# sourceMappingURL=dialog-container.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { filter, first, RxChain } from '@angular/cdk/rxjs';\nimport { Subject } from 'rxjs/Subject';\n// TODO(jelbourn): resizing\n// Counter for unique dialog ids.\nlet /** @type {?} */ uniqueId = 0;\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nexport class MatDialogRef {\n /**\n * @param {?} _overlayRef\n * @param {?} _containerInstance\n * @param {?=} id\n */\n constructor(_overlayRef, _containerInstance, id = `mat-dialog-${uniqueId++}`) {\n this._overlayRef = _overlayRef;\n this._containerInstance = _containerInstance;\n this.id = id;\n /**\n * Whether the user is allowed to close the dialog.\n */\n this.disableClose = this._containerInstance._config.disableClose;\n /**\n * Subject for notifying the user that the dialog has finished opening.\n */\n this._afterOpen = new Subject();\n /**\n * Subject for notifying the user that the dialog has finished closing.\n */\n this._afterClosed = new Subject();\n /**\n * Subject for notifying the user that the dialog has started closing.\n */\n this._beforeClose = new Subject();\n // Emit when opening animation completes\n RxChain.from(_containerInstance._animationStateChanged)\n .call(filter, event => event.phaseName === 'done' && event.toState === 'enter')\n .call(first)\n .subscribe(() => {\n this._afterOpen.next();\n this._afterOpen.complete();\n });\n // Dispose overlay when closing animation is complete\n RxChain.from(_containerInstance._animationStateChanged)\n .call(filter, event => event.phaseName === 'done' && event.toState === 'exit')\n .call(first)\n .subscribe(() => {\n this._overlayRef.dispose();\n this._afterClosed.next(this._result);\n this._afterClosed.complete();\n this.componentInstance = null;\n });\n }\n /**\n * Close the dialog.\n * @param {?=} dialogResult Optional result to return to the dialog opener.\n * @return {?}\n */\n close(dialogResult) {\n this._result = dialogResult;\n // Transition the backdrop in parallel to the dialog.\n RxChain.from(this._containerInstance._animationStateChanged)\n .call(filter, event => event.phaseName === 'start')\n .call(first)\n .subscribe(() => {\n this._beforeClose.next(dialogResult);\n this._beforeClose.complete();\n this._overlayRef.detachBackdrop();\n });\n this._containerInstance._startExitAnimation();\n }\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n * @return {?}\n */\n afterOpen() {\n return this._afterOpen.asObservable();\n }\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n * @return {?}\n */\n afterClosed() {\n return this._afterClosed.asObservable();\n }\n /**\n * Gets an observable that is notified when the dialog has started closing.\n * @return {?}\n */\n beforeClose() {\n return this._beforeClose.asObservable();\n }\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n * @return {?}\n */\n backdropClick() {\n return this._overlayRef.backdropClick();\n }\n /**\n * Updates the dialog's position.\n * @param {?=} position New dialog position.\n * @return {?}\n */\n updatePosition(position) {\n let /** @type {?} */ strategy = this._getPositionStrategy();\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n }\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 }\n else {\n strategy.centerVertically();\n }\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 * @return {?}\n */\n updateSize(width = 'auto', height = 'auto') {\n this._getPositionStrategy().width(width).height(height);\n this._overlayRef.updatePosition();\n return this;\n }\n /**\n * Returns whether the dialog is animating.\n * @return {?}\n */\n _isAnimating() {\n return this._containerInstance._isAnimating;\n }\n /**\n * Fetches the position strategy object from the overlay ref.\n * @return {?}\n */\n _getPositionStrategy() {\n return (this._overlayRef.getConfig().positionStrategy);\n }\n}\nfunction MatDialogRef_tsickle_Closure_declarations() {\n /**\n * The instance of component opened into the dialog.\n * @type {?}\n */\n MatDialogRef.prototype.componentInstance;\n /**\n * Whether the user is allowed to close the dialog.\n * @type {?}\n */\n MatDialogRef.prototype.disableClose;\n /**\n * Subject for notifying the user that the dialog has finished opening.\n * @type {?}\n */\n MatDialogRef.prototype._afterOpen;\n /**\n * Subject for notifying the user that the dialog has finished closing.\n * @type {?}\n */\n MatDialogRef.prototype._afterClosed;\n /**\n * Subject for notifying the user that the dialog has started closing.\n * @type {?}\n */\n MatDialogRef.prototype._beforeClose;\n /**\n * Result to be passed to afterClosed.\n * @type {?}\n */\n MatDialogRef.prototype._result;\n /** @type {?} */\n MatDialogRef.prototype._overlayRef;\n /** @type {?} */\n MatDialogRef.prototype._containerInstance;\n /** @type {?} */\n MatDialogRef.prototype.id;\n}\n//# sourceMappingURL=dialog-ref.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayConfig, } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector, TemplatePortal } from '@angular/cdk/portal';\nimport { startWith } from '@angular/cdk/rxjs';\nimport { Location } from '@angular/common';\nimport { Inject, Injectable, InjectionToken, Injector, Optional, SkipSelf, TemplateRef, } from '@angular/core';\nimport { extendObject } from '@angular/material/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { defer } from 'rxjs/observable/defer';\nimport { Subject } from 'rxjs/Subject';\nimport { MatDialogConfig } from './dialog-config';\nimport { MatDialogContainer } from './dialog-container';\nimport { MatDialogRef } from './dialog-ref';\nimport { of as observableOf } from 'rxjs/observable/of';\nexport const /** @type {?} */ MAT_DIALOG_DATA = new InjectionToken('MatDialogData');\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n */\nexport const MAT_DIALOG_SCROLL_STRATEGY = new InjectionToken('mat-dialog-scroll-strategy');\n/**\n * \\@docs-private\n * @param {?} overlay\n * @return {?}\n */\nexport function MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.block();\n}\n/**\n * \\@docs-private\n */\nexport const 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 */\nexport class MatDialog {\n /**\n * @param {?} _overlay\n * @param {?} _injector\n * @param {?} location\n * @param {?} _scrollStrategy\n * @param {?} _parentDialog\n */\n constructor(_overlay, _injector, location, _scrollStrategy, _parentDialog) {\n this._overlay = _overlay;\n this._injector = _injector;\n this._scrollStrategy = _scrollStrategy;\n this._parentDialog = _parentDialog;\n this._openDialogsAtThisLevel = [];\n this._afterAllClosedAtThisLevel = new Subject();\n this._afterOpenAtThisLevel = new Subject();\n this._boundKeydown = this._handleKeydown.bind(this);\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 this.afterAllClosed = defer(() => this.openDialogs.length ?\n this._afterAllClosed :\n startWith.call(this._afterAllClosed, undefined));\n // Close all of the dialogs when the user goes forwards/backwards in history or when the\n // location hash changes. Note that this usually doesn't include clicking on links (unless\n // the user is using the `HashLocationStrategy`).\n if (!_parentDialog && location) {\n location.subscribe(() => this.closeAll());\n }\n }\n /**\n * Keeps track of the currently-open dialogs.\n * @return {?}\n */\n get openDialogs() {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n /**\n * Stream that emits when a dialog has been opened.\n * @return {?}\n */\n get afterOpen() {\n return this._parentDialog ? this._parentDialog.afterOpen : this._afterOpenAtThisLevel;\n }\n /**\n * @return {?}\n */\n get _afterAllClosed() {\n const /** @type {?} */ parent = this._parentDialog;\n return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;\n }\n /**\n * Opens a modal dialog containing the given component.\n * @template T\n * @param {?} componentOrTemplateRef Type of the component to load into the dialog,\n * or a TemplateRef to instantiate as the dialog content.\n * @param {?=} config Extra configuration options.\n * @return {?} Reference to the newly-opened dialog.\n */\n open(componentOrTemplateRef, config) {\n const /** @type {?} */ inProgressDialog = this.openDialogs.find(dialog => dialog._isAnimating());\n // If there's a dialog that is in the process of being opened, return it instead.\n if (inProgressDialog) {\n return inProgressDialog;\n }\n config = _applyConfigDefaults(config);\n if (config.id && this.getDialogById(config.id)) {\n throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n }\n const /** @type {?} */ overlayRef = this._createOverlay(config);\n const /** @type {?} */ dialogContainer = this._attachDialogContainer(overlayRef, config);\n const /** @type {?} */ dialogRef = this._attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config);\n if (!this.openDialogs.length) {\n document.addEventListener('keydown', this._boundKeydown);\n }\n this.openDialogs.push(dialogRef);\n dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));\n this.afterOpen.next(dialogRef);\n return dialogRef;\n }\n /**\n * Closes all of the currently-open dialogs.\n * @return {?}\n */\n closeAll() {\n let /** @type {?} */ i = this.openDialogs.length;\n while (i--) {\n // The `_openDialogs` property isn't updated after close until the rxjs subscription\n // runs on the next microtask, in addition to modifying the array as we're going\n // through it. We loop through all of them and call close without assuming that\n // they'll be removed from the list instantaneously.\n this.openDialogs[i].close();\n }\n }\n /**\n * Finds an open dialog by its id.\n * @param {?} id ID to use when looking up the dialog.\n * @return {?}\n */\n getDialogById(id) {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n /**\n * Creates the overlay into which the dialog will be loaded.\n * @param {?} config The dialog configuration.\n * @return {?} A promise resolving to the OverlayRef for the created overlay.\n */\n _createOverlay(config) {\n const /** @type {?} */ overlayConfig = this._getOverlayConfig(config);\n return this._overlay.create(overlayConfig);\n }\n /**\n * Creates an overlay config from a dialog config.\n * @param {?} dialogConfig The dialog configuration.\n * @return {?} The overlay configuration.\n */\n _getOverlayConfig(dialogConfig) {\n const /** @type {?} */ state = new OverlayConfig({\n positionStrategy: this._overlay.position().global(),\n scrollStrategy: this._scrollStrategy(),\n panelClass: dialogConfig.panelClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n direction: dialogConfig.direction\n });\n if (dialogConfig.backdropClass) {\n state.backdropClass = dialogConfig.backdropClass;\n }\n return state;\n }\n /**\n * Attaches an MatDialogContainer to a dialog's already-created overlay.\n * @param {?} overlay Reference to the dialog's underlying overlay.\n * @param {?} config The dialog configuration.\n * @return {?} A promise resolving to a ComponentRef for the attached container.\n */\n _attachDialogContainer(overlay, config) {\n let /** @type {?} */ containerPortal = new ComponentPortal(MatDialogContainer, config.viewContainerRef);\n let /** @type {?} */ containerRef = overlay.attach(containerPortal);\n containerRef.instance._config = config;\n return containerRef.instance;\n }\n /**\n * Attaches the user-provided component to the already-created MatDialogContainer.\n * @template T\n * @param {?} componentOrTemplateRef The type of component being loaded into the dialog,\n * or a TemplateRef to instantiate as the content.\n * @param {?} dialogContainer Reference to the wrapping MatDialogContainer.\n * @param {?} overlayRef Reference to the overlay in which the dialog resides.\n * @param {?} config The dialog configuration.\n * @return {?} A promise resolving to the MatDialogRef that should be returned to the user.\n */\n _attachDialogContent(componentOrTemplateRef, dialogContainer, overlayRef, config) {\n // Create a reference to the dialog we're creating in order to give the user a handle\n // to modify and close it.\n const /** @type {?} */ dialogRef = new MatDialogRef(overlayRef, dialogContainer, config.id);\n // When the dialog backdrop is clicked, we want to close it.\n if (config.hasBackdrop) {\n overlayRef.backdropClick().subscribe(() => {\n if (!dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n }\n if (componentOrTemplateRef instanceof TemplateRef) {\n dialogContainer.attachTemplatePortal(new TemplatePortal(componentOrTemplateRef, /** @type {?} */ ((null)), /** @type {?} */ ({ $implicit: config.data, dialogRef })));\n }\n else {\n const /** @type {?} */ injector = this._createInjector(config, dialogRef, dialogContainer);\n const /** @type {?} */ contentRef = dialogContainer.attachComponentPortal(new ComponentPortal(componentOrTemplateRef, undefined, injector));\n dialogRef.componentInstance = contentRef.instance;\n }\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n return dialogRef;\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 * @template T\n * @param {?} config Config object that is used to construct the dialog.\n * @param {?} dialogRef Reference to the dialog.\n * @param {?} dialogContainer\n * @return {?} The custom injector that can be used inside the dialog.\n */\n _createInjector(config, dialogRef, dialogContainer) {\n const /** @type {?} */ userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const /** @type {?} */ injectionTokens = new WeakMap();\n injectionTokens.set(MatDialogRef, dialogRef);\n injectionTokens.set(MatDialogContainer, dialogContainer);\n injectionTokens.set(MAT_DIALOG_DATA, config.data);\n injectionTokens.set(Directionality, {\n value: config.direction,\n change: observableOf()\n });\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n }\n /**\n * Removes a dialog from the array of open dialogs.\n * @param {?} dialogRef Dialog to be removed.\n * @return {?}\n */\n _removeOpenDialog(dialogRef) {\n const /** @type {?} */ index = this.openDialogs.indexOf(dialogRef);\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n // no open dialogs are left, call next on afterAllClosed Subject\n if (!this.openDialogs.length) {\n this._afterAllClosed.next();\n document.removeEventListener('keydown', this._boundKeydown);\n }\n }\n }\n /**\n * Handles global key presses while there are open dialogs. Closes the\n * top dialog when the user presses escape.\n * @param {?} event\n * @return {?}\n */\n _handleKeydown(event) {\n const /** @type {?} */ topDialog = this.openDialogs[this.openDialogs.length - 1];\n const /** @type {?} */ canClose = topDialog ? !topDialog.disableClose : false;\n if (event.keyCode === ESCAPE && canClose) {\n topDialog.close();\n }\n }\n}\nMatDialog.decorators = [\n { type: Injectable },\n];\n/**\n * @nocollapse\n */\nMatDialog.ctorParameters = () => [\n { type: Overlay, },\n { type: Injector, },\n { type: Location, decorators: [{ type: Optional },] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_SCROLL_STRATEGY,] },] },\n { type: MatDialog, decorators: [{ type: Optional }, { type: SkipSelf },] },\n];\nfunction MatDialog_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDialog.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDialog.ctorParameters;\n /** @type {?} */\n MatDialog.prototype._openDialogsAtThisLevel;\n /** @type {?} */\n MatDialog.prototype._afterAllClosedAtThisLevel;\n /** @type {?} */\n MatDialog.prototype._afterOpenAtThisLevel;\n /** @type {?} */\n MatDialog.prototype._boundKeydown;\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 * @type {?}\n */\n MatDialog.prototype.afterAllClosed;\n /** @type {?} */\n MatDialog.prototype._overlay;\n /** @type {?} */\n MatDialog.prototype._injector;\n /** @type {?} */\n MatDialog.prototype._scrollStrategy;\n /** @type {?} */\n MatDialog.prototype._parentDialog;\n}\n/**\n * Applies default options to the dialog config.\n * @param {?=} config Config to be modified.\n * @return {?} The new configuration object.\n */\nfunction _applyConfigDefaults(config) {\n return extendObject(new MatDialogConfig(), config);\n}\n//# sourceMappingURL=dialog.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directive, Input, Optional } from '@angular/core';\nimport { MatDialogRef } from './dialog-ref';\nimport { MatDialogContainer } from './dialog-container';\n/**\n * Counter used to generate unique IDs for dialog elements.\n */\nlet dialogElementUid = 0;\n/**\n * Button that will close the current dialog.\n */\nexport class MatDialogClose {\n /**\n * @param {?} dialogRef\n */\n constructor(dialogRef) {\n this.dialogRef = dialogRef;\n /**\n * Screenreader label for the button.\n */\n this.ariaLabel = 'Close dialog';\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n const /** @type {?} */ proxiedChange = changes._matDialogClose || changes._matDialogCloseResult;\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n }\n}\nMatDialogClose.decorators = [\n { type: Directive, args: [{\n selector: `button[mat-dialog-close], button[matDialogClose]`,\n exportAs: 'matDialogClose',\n host: {\n '(click)': 'dialogRef.close(dialogResult)',\n '[attr.aria-label]': 'ariaLabel',\n 'type': 'button',\n }\n },] },\n];\n/**\n * @nocollapse\n */\nMatDialogClose.ctorParameters = () => [\n { type: MatDialogRef, },\n];\nMatDialogClose.propDecorators = {\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'dialogResult': [{ type: Input, args: ['mat-dialog-close',] },],\n '_matDialogClose': [{ type: Input, args: ['matDialogClose',] },],\n};\nfunction MatDialogClose_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDialogClose.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDialogClose.ctorParameters;\n /** @type {?} */\n MatDialogClose.propDecorators;\n /**\n * Screenreader label for the button.\n * @type {?}\n */\n MatDialogClose.prototype.ariaLabel;\n /**\n * Dialog close input.\n * @type {?}\n */\n MatDialogClose.prototype.dialogResult;\n /** @type {?} */\n MatDialogClose.prototype._matDialogClose;\n /** @type {?} */\n MatDialogClose.prototype.dialogRef;\n}\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\nexport class MatDialogTitle {\n /**\n * @param {?} _container\n */\n constructor(_container) {\n this._container = _container;\n this.id = `mat-dialog-title-${dialogElementUid++}`;\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n if (this._container && !this._container._ariaLabelledBy) {\n Promise.resolve().then(() => this._container._ariaLabelledBy = this.id);\n }\n }\n}\nMatDialogTitle.decorators = [\n { type: Directive, args: [{\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-dialog-title',\n '[id]': 'id',\n },\n },] },\n];\n/**\n * @nocollapse\n */\nMatDialogTitle.ctorParameters = () => [\n { type: MatDialogContainer, decorators: [{ type: Optional },] },\n];\nMatDialogTitle.propDecorators = {\n 'id': [{ type: Input },],\n};\nfunction MatDialogTitle_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDialogTitle.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDialogTitle.ctorParameters;\n /** @type {?} */\n MatDialogTitle.propDecorators;\n /** @type {?} */\n MatDialogTitle.prototype.id;\n /** @type {?} */\n MatDialogTitle.prototype._container;\n}\n/**\n * Scrollable content container of a dialog.\n */\nexport class MatDialogContent {\n}\nMatDialogContent.decorators = [\n { type: Directive, args: [{\n selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n host: { 'class': 'mat-dialog-content' }\n },] },\n];\n/**\n * @nocollapse\n */\nMatDialogContent.ctorParameters = () => [];\nfunction MatDialogContent_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDialogContent.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDialogContent.ctorParameters;\n}\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\nexport class MatDialogActions {\n}\nMatDialogActions.decorators = [\n { type: Directive, args: [{\n selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n host: { 'class': 'mat-dialog-actions' }\n },] },\n];\n/**\n * @nocollapse\n */\nMatDialogActions.ctorParameters = () => [];\nfunction MatDialogActions_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDialogActions.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDialogActions.ctorParameters;\n}\n//# sourceMappingURL=dialog-content-directives.js.map","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatDialog, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER } from './dialog';\nimport { MatDialogContainer } from './dialog-container';\nimport { MatDialogClose, MatDialogContent, MatDialogTitle, MatDialogActions } from './dialog-content-directives';\nexport class MatDialogModule {\n}\nMatDialogModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n CommonModule,\n OverlayModule,\n PortalModule,\n A11yModule,\n MatCommonModule,\n ],\n exports: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule,\n ],\n declarations: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [\n MatDialog,\n MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,\n ],\n entryComponents: [MatDialogContainer],\n },] },\n];\n/**\n * @nocollapse\n */\nMatDialogModule.ctorParameters = () => [];\nfunction MatDialogModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatDialogModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatDialogModule.ctorParameters;\n}\n//# sourceMappingURL=dialog-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatDialogModule, MAT_DIALOG_DATA, MAT_DIALOG_SCROLL_STRATEGY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog, throwMatDialogContentAlreadyAttachedError, MatDialogContainer, MatDialogClose, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogConfig, MatDialogRef } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":["state","observableOf"],"mappings":"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"}