{"version":3,"file":"dialog.es5.js","sources":["../../packages/material/esm5/dialog/dialog-config.js","../../packages/material/esm5/dialog/dialog-container.js","../../packages/material/esm5/dialog/dialog-ref.js","../../packages/material/esm5/dialog/dialog.js","../../packages/material/esm5/dialog/dialog-content-directives.js","../../packages/material/esm5/dialog/dialog-module.js","../../packages/material/esm5/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 */\nvar MatDialogConfig = (function () {\n function MatDialogConfig() {\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 return MatDialogConfig;\n}());\nexport { MatDialogConfig };\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 * as tslib_1 from \"tslib\";\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 */\nvar MatDialogContainer = (function (_super) {\n tslib_1.__extends(MatDialogContainer, _super);\n /**\n * @param {?} _elementRef\n * @param {?} _focusTrapFactory\n * @param {?} _changeDetectorRef\n * @param {?} _document\n */\n function MatDialogContainer(_elementRef, _focusTrapFactory, _changeDetectorRef, _document) {\n var _this = _super.call(this) || this;\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 return _this;\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 MatDialogContainer.prototype.attachComponentPortal = function (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 MatDialogContainer.prototype.attachTemplatePortal = function (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 MatDialogContainer.prototype._trapFocus = function () {\n var _this = this;\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(function (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 MatDialogContainer.prototype._restoreFocus = function () {\n var /** @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 MatDialogContainer.prototype._savePreviouslyFocusedElement = function () {\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 MatDialogContainer.prototype._onAnimationDone = function (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 MatDialogContainer.prototype._onAnimationStart = function (event) {\n this._isAnimating = true;\n this._animationStateChanged.emit(event);\n };\n /**\n * Starts the dialog exit animation.\n * @return {?}\n */\n MatDialogContainer.prototype._startExitAnimation = function () {\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 MatDialogContainer.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 */\n MatDialogContainer.ctorParameters = function () { return [\n { type: ElementRef, },\n { type: FocusTrapFactory, },\n { type: ChangeDetectorRef, },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] },] },\n ]; };\n MatDialogContainer.propDecorators = {\n '_portalHost': [{ type: ViewChild, args: [PortalHostDirective,] },],\n };\n return MatDialogContainer;\n}(BasePortalHost));\nexport { MatDialogContainer };\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.\nvar /** @type {?} */ uniqueId = 0;\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nvar MatDialogRef = (function () {\n /**\n * @param {?} _overlayRef\n * @param {?} _containerInstance\n * @param {?=} id\n */\n function MatDialogRef(_overlayRef, _containerInstance, id) {\n if (id === void 0) { id = \"mat-dialog-\" + uniqueId++; }\n var _this = this;\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, function (event) { return event.phaseName === 'done' && event.toState === 'enter'; })\n .call(first)\n .subscribe(function () {\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, function (event) { return event.phaseName === 'done' && event.toState === 'exit'; })\n .call(first)\n .subscribe(function () {\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 MatDialogRef.prototype.close = function (dialogResult) {\n var _this = this;\n this._result = dialogResult;\n // Transition the backdrop in parallel to the dialog.\n RxChain.from(this._containerInstance._animationStateChanged)\n .call(filter, function (event) { return event.phaseName === 'start'; })\n .call(first)\n .subscribe(function () {\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 MatDialogRef.prototype.afterOpen = function () {\n return this._afterOpen.asObservable();\n };\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n * @return {?}\n */\n MatDialogRef.prototype.afterClosed = function () {\n return this._afterClosed.asObservable();\n };\n /**\n * Gets an observable that is notified when the dialog has started closing.\n * @return {?}\n */\n MatDialogRef.prototype.beforeClose = function () {\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 MatDialogRef.prototype.backdropClick = function () {\n return this._overlayRef.backdropClick();\n };\n /**\n * Updates the dialog's position.\n * @param {?=} position New dialog position.\n * @return {?}\n */\n MatDialogRef.prototype.updatePosition = function (position) {\n var /** @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 MatDialogRef.prototype.updateSize = function (width, height) {\n if (width === void 0) { width = 'auto'; }\n if (height === void 0) { 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 MatDialogRef.prototype._isAnimating = function () {\n return this._containerInstance._isAnimating;\n };\n /**\n * Fetches the position strategy object from the overlay ref.\n * @return {?}\n */\n MatDialogRef.prototype._getPositionStrategy = function () {\n return (this._overlayRef.getConfig().positionStrategy);\n };\n return MatDialogRef;\n}());\nexport { MatDialogRef };\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 var /** @type {?} */ MAT_DIALOG_DATA = new InjectionToken('MatDialogData');\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n */\nexport var 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 function () { return overlay.scrollStrategies.block(); };\n}\n/**\n * \\@docs-private\n */\nexport var 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 */\nvar MatDialog = (function () {\n /**\n * @param {?} _overlay\n * @param {?} _injector\n * @param {?} location\n * @param {?} _scrollStrategy\n * @param {?} _parentDialog\n */\n function MatDialog(_overlay, _injector, location, _scrollStrategy, _parentDialog) {\n var _this = this;\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(function () { return _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(function () { return _this.closeAll(); });\n }\n }\n Object.defineProperty(MatDialog.prototype, \"openDialogs\", {\n /**\n * Keeps track of the currently-open dialogs.\n * @return {?}\n */\n get: function () {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDialog.prototype, \"afterOpen\", {\n /**\n * Stream that emits when a dialog has been opened.\n * @return {?}\n */\n get: function () {\n return this._parentDialog ? this._parentDialog.afterOpen : this._afterOpenAtThisLevel;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MatDialog.prototype, \"_afterAllClosed\", {\n /**\n * @return {?}\n */\n get: function () {\n var /** @type {?} */ parent = this._parentDialog;\n return parent ? parent._afterAllClosed : this._afterAllClosedAtThisLevel;\n },\n enumerable: true,\n configurable: true\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 MatDialog.prototype.open = function (componentOrTemplateRef, config) {\n var _this = this;\n var /** @type {?} */ inProgressDialog = this.openDialogs.find(function (dialog) { return 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 var /** @type {?} */ overlayRef = this._createOverlay(config);\n var /** @type {?} */ dialogContainer = this._attachDialogContainer(overlayRef, config);\n var /** @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(function () { return _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 MatDialog.prototype.closeAll = function () {\n var /** @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 MatDialog.prototype.getDialogById = function (id) {\n return this.openDialogs.find(function (dialog) { return 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 MatDialog.prototype._createOverlay = function (config) {\n var /** @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 MatDialog.prototype._getOverlayConfig = function (dialogConfig) {\n var /** @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 MatDialog.prototype._attachDialogContainer = function (overlay, config) {\n var /** @type {?} */ containerPortal = new ComponentPortal(MatDialogContainer, config.viewContainerRef);\n var /** @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 MatDialog.prototype._attachDialogContent = function (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 var /** @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(function () {\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: dialogRef })));\n }\n else {\n var /** @type {?} */ injector = this._createInjector(config, dialogRef, dialogContainer);\n var /** @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 MatDialog.prototype._createInjector = function (config, dialogRef, dialogContainer) {\n var /** @type {?} */ userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n var /** @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 MatDialog.prototype._removeOpenDialog = function (dialogRef) {\n var /** @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 MatDialog.prototype._handleKeydown = function (event) {\n var /** @type {?} */ topDialog = this.openDialogs[this.openDialogs.length - 1];\n var /** @type {?} */ canClose = topDialog ? !topDialog.disableClose : false;\n if (event.keyCode === ESCAPE && canClose) {\n topDialog.close();\n }\n };\n MatDialog.decorators = [\n { type: Injectable },\n ];\n /**\n * @nocollapse\n */\n MatDialog.ctorParameters = function () { return [\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 ]; };\n return MatDialog;\n}());\nexport { MatDialog };\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 */\nvar dialogElementUid = 0;\n/**\n * Button that will close the current dialog.\n */\nvar MatDialogClose = (function () {\n /**\n * @param {?} dialogRef\n */\n function MatDialogClose(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 MatDialogClose.prototype.ngOnChanges = function (changes) {\n var /** @type {?} */ proxiedChange = changes._matDialogClose || changes._matDialogCloseResult;\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n };\n MatDialogClose.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 */\n MatDialogClose.ctorParameters = function () { return [\n { type: MatDialogRef, },\n ]; };\n MatDialogClose.propDecorators = {\n 'ariaLabel': [{ type: Input, args: ['aria-label',] },],\n 'dialogResult': [{ type: Input, args: ['mat-dialog-close',] },],\n '_matDialogClose': [{ type: Input, args: ['matDialogClose',] },],\n };\n return MatDialogClose;\n}());\nexport { MatDialogClose };\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 */\nvar MatDialogTitle = (function () {\n /**\n * @param {?} _container\n */\n function MatDialogTitle(_container) {\n this._container = _container;\n this.id = \"mat-dialog-title-\" + dialogElementUid++;\n }\n /**\n * @return {?}\n */\n MatDialogTitle.prototype.ngOnInit = function () {\n var _this = this;\n if (this._container && !this._container._ariaLabelledBy) {\n Promise.resolve().then(function () { return _this._container._ariaLabelledBy = _this.id; });\n }\n };\n MatDialogTitle.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 */\n MatDialogTitle.ctorParameters = function () { return [\n { type: MatDialogContainer, decorators: [{ type: Optional },] },\n ]; };\n MatDialogTitle.propDecorators = {\n 'id': [{ type: Input },],\n };\n return MatDialogTitle;\n}());\nexport { MatDialogTitle };\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 */\nvar MatDialogContent = (function () {\n function MatDialogContent() {\n }\n MatDialogContent.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 */\n MatDialogContent.ctorParameters = function () { return []; };\n return MatDialogContent;\n}());\nexport { MatDialogContent };\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 */\nvar MatDialogActions = (function () {\n function MatDialogActions() {\n }\n MatDialogActions.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 */\n MatDialogActions.ctorParameters = function () { return []; };\n return MatDialogActions;\n}());\nexport { MatDialogActions };\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';\nvar MatDialogModule = (function () {\n function MatDialogModule() {\n }\n MatDialogModule.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 */\n MatDialogModule.ctorParameters = function () { return []; };\n return MatDialogModule;\n}());\nexport { MatDialogModule };\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":["tslib_1.__extends","state","observableOf"],"mappings":"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"}