{"version":3,"file":"snack-bar.js","sources":["../../packages/material/snack-bar/snack-bar-ref.js","../../packages/material/snack-bar/snack-bar-config.js","../../packages/material/snack-bar/simple-snack-bar.js","../../packages/material/snack-bar/snack-bar-container.js","../../packages/material/snack-bar/snack-bar.js","../../packages/material/snack-bar/snack-bar-module.js","../../packages/material/snack-bar/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 */\nimport { Subject } from 'rxjs/Subject';\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nexport class MatSnackBarRef {\n /**\n * @param {?} containerInstance\n * @param {?} _overlayRef\n */\n constructor(containerInstance, _overlayRef) {\n this._overlayRef = _overlayRef;\n /**\n * Subject for notifying the user that the snack bar has closed.\n */\n this._afterClosed = new Subject();\n /**\n * Subject for notifying the user that the snack bar has opened and appeared.\n */\n this._afterOpened = new Subject();\n /**\n * Subject for notifying the user that the snack bar action was called.\n */\n this._onAction = new Subject();\n this.containerInstance = containerInstance;\n // Dismiss snackbar on action.\n this.onAction().subscribe(() => this.dismiss());\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n /**\n * Dismisses the snack bar.\n * @return {?}\n */\n dismiss() {\n if (!this._afterClosed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /**\n * Marks the snackbar action clicked.\n * @return {?}\n */\n closeWithAction() {\n if (!this._onAction.closed) {\n this._onAction.next();\n this._onAction.complete();\n }\n }\n /**\n * Dismisses the snack bar after some duration\n * @param {?} duration\n * @return {?}\n */\n _dismissAfter(duration) {\n this._durationTimeoutId = setTimeout(() => this.dismiss(), duration);\n }\n /**\n * Marks the snackbar as opened\n * @return {?}\n */\n _open() {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n /**\n * Cleans up the DOM after closing.\n * @return {?}\n */\n _finishDismiss() {\n this._overlayRef.dispose();\n this._afterClosed.next();\n this._afterClosed.complete();\n }\n /**\n * Gets an observable that is notified when the snack bar is finished closing.\n * @return {?}\n */\n afterDismissed() {\n return this._afterClosed.asObservable();\n }\n /**\n * Gets an observable that is notified when the snack bar has opened and appeared.\n * @return {?}\n */\n afterOpened() {\n return this.containerInstance._onEnter;\n }\n /**\n * Gets an observable that is notified when the snack bar action is called.\n * @return {?}\n */\n onAction() {\n return this._onAction.asObservable();\n }\n}\nfunction MatSnackBarRef_tsickle_Closure_declarations() {\n /**\n * The instance of the component making up the content of the snack bar.\n * @type {?}\n */\n MatSnackBarRef.prototype.instance;\n /**\n * The instance of the component making up the content of the snack bar.\n * \\@docs-private\n * @type {?}\n */\n MatSnackBarRef.prototype.containerInstance;\n /**\n * Subject for notifying the user that the snack bar has closed.\n * @type {?}\n */\n MatSnackBarRef.prototype._afterClosed;\n /**\n * Subject for notifying the user that the snack bar has opened and appeared.\n * @type {?}\n */\n MatSnackBarRef.prototype._afterOpened;\n /**\n * Subject for notifying the user that the snack bar action was called.\n * @type {?}\n */\n MatSnackBarRef.prototype._onAction;\n /**\n * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n * dismissed before the duration passes.\n * @type {?}\n */\n MatSnackBarRef.prototype._durationTimeoutId;\n /** @type {?} */\n MatSnackBarRef.prototype._overlayRef;\n}\n//# sourceMappingURL=snack-bar-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 { InjectionToken } from '@angular/core';\nexport const /** @type {?} */ MAT_SNACK_BAR_DATA = new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n */\nexport class MatSnackBarConfig {\n constructor() {\n /**\n * The politeness level for the MatAriaLiveAnnouncer announcement.\n */\n this.politeness = 'assertive';\n /**\n * Message to be announced by the MatAriaLiveAnnouncer\n */\n this.announcementMessage = '';\n /**\n * The length of time in milliseconds to wait before automatically dismissing the snack bar.\n */\n this.duration = 0;\n /**\n * Text layout direction for the snack bar.\n */\n this.direction = 'ltr';\n /**\n * Data being injected into the child component.\n */\n this.data = null;\n /**\n * The horizontal position to place the snack bar.\n */\n this.horizontalPosition = 'center';\n /**\n * The vertical position to place the snack bar.\n */\n this.verticalPosition = 'bottom';\n }\n}\nfunction MatSnackBarConfig_tsickle_Closure_declarations() {\n /**\n * The politeness level for the MatAriaLiveAnnouncer announcement.\n * @type {?}\n */\n MatSnackBarConfig.prototype.politeness;\n /**\n * Message to be announced by the MatAriaLiveAnnouncer\n * @type {?}\n */\n MatSnackBarConfig.prototype.announcementMessage;\n /**\n * The view container to place the overlay for the snack bar into.\n * @type {?}\n */\n MatSnackBarConfig.prototype.viewContainerRef;\n /**\n * The length of time in milliseconds to wait before automatically dismissing the snack bar.\n * @type {?}\n */\n MatSnackBarConfig.prototype.duration;\n /**\n * Extra CSS classes to be added to the snack bar container.\n * @type {?}\n */\n MatSnackBarConfig.prototype.extraClasses;\n /**\n * Text layout direction for the snack bar.\n * @type {?}\n */\n MatSnackBarConfig.prototype.direction;\n /**\n * Data being injected into the child component.\n * @type {?}\n */\n MatSnackBarConfig.prototype.data;\n /**\n * The horizontal position to place the snack bar.\n * @type {?}\n */\n MatSnackBarConfig.prototype.horizontalPosition;\n /**\n * The vertical position to place the snack bar.\n * @type {?}\n */\n MatSnackBarConfig.prototype.verticalPosition;\n}\n//# sourceMappingURL=snack-bar-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, ViewEncapsulation, Inject, ChangeDetectionStrategy } from '@angular/core';\nimport { MatSnackBarRef } from './snack-bar-ref';\nimport { MAT_SNACK_BAR_DATA } from './snack-bar-config';\n/**\n * A component used to open as the default snack bar, matching material spec.\n * This should only be used internally by the snack bar service.\n */\nexport class SimpleSnackBar {\n /**\n * @param {?} snackBarRef\n * @param {?} data\n */\n constructor(snackBarRef, data) {\n this.snackBarRef = snackBarRef;\n this.data = data;\n }\n /**\n * Performs the action on the snack bar.\n * @return {?}\n */\n action() {\n this.snackBarRef.closeWithAction();\n }\n /**\n * If the action button should be shown.\n * @return {?}\n */\n get hasAction() {\n return !!this.data.action;\n }\n}\nSimpleSnackBar.decorators = [\n { type: Component, args: [{selector: 'simple-snack-bar',\n template: \"{{data.message}} \",\n styles: [\".mat-simple-snackbar{display:flex;justify-content:space-between;line-height:20px}.mat-simple-snackbar-action{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:0;border:none;-webkit-tap-highlight-color:transparent;background:0 0;flex-shrink:0;margin-left:48px}[dir=rtl] .mat-simple-snackbar-action{margin-right:48px;margin-left:0}\"],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-simple-snackbar',\n }\n },] },\n];\n/**\n * @nocollapse\n */\nSimpleSnackBar.ctorParameters = () => [\n { type: MatSnackBarRef, },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_SNACK_BAR_DATA,] },] },\n];\nfunction SimpleSnackBar_tsickle_Closure_declarations() {\n /** @type {?} */\n SimpleSnackBar.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n SimpleSnackBar.ctorParameters;\n /**\n * Data that was injected into the snack bar.\n * @type {?}\n */\n SimpleSnackBar.prototype.data;\n /** @type {?} */\n SimpleSnackBar.prototype.snackBarRef;\n}\n//# sourceMappingURL=simple-snack-bar.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, ViewChild, NgZone, Renderer2, ElementRef, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, } from '@angular/core';\nimport { trigger, state, style, transition, animate, } from '@angular/animations';\nimport { BasePortalHost, PortalHostDirective, } from '@angular/cdk/portal';\nimport { first } from '@angular/cdk/rxjs';\nimport { Subject } from 'rxjs/Subject';\n// TODO(jelbourn): we can't use constants from animation.ts here because you can't use\n// a text interpolation in anything that is analyzed statically with ngc (for AoT compile).\nexport const /** @type {?} */ SHOW_ANIMATION = '225ms cubic-bezier(0.4,0.0,1,1)';\nexport const /** @type {?} */ HIDE_ANIMATION = '195ms cubic-bezier(0.0,0.0,0.2,1)';\n/**\n * Internal component that wraps user-provided snack bar content.\n * \\@docs-private\n */\nexport class MatSnackBarContainer extends BasePortalHost {\n /**\n * @param {?} _ngZone\n * @param {?} _renderer\n * @param {?} _elementRef\n * @param {?} _changeDetectorRef\n */\n constructor(_ngZone, _renderer, _elementRef, _changeDetectorRef) {\n super();\n this._ngZone = _ngZone;\n this._renderer = _renderer;\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n /**\n * Whether the component has been destroyed.\n */\n this._destroyed = false;\n /**\n * Subject for notifying that the snack bar has exited from view.\n */\n this._onExit = new Subject();\n /**\n * Subject for notifying that the snack bar has finished entering the view.\n */\n this._onEnter = new Subject();\n /**\n * The state of the snack bar animations.\n */\n this._animationState = 'void';\n }\n /**\n * Attach a component portal as content to this snack bar container.\n * @template T\n * @param {?} portal\n * @return {?}\n */\n attachComponentPortal(portal) {\n if (this._portalHost.hasAttached()) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n if (this.snackBarConfig.extraClasses) {\n // Not the most efficient way of adding classes, but the renderer doesn't allow us\n // to pass in an array or a space-separated list.\n for (let /** @type {?} */ cssClass of this.snackBarConfig.extraClasses) {\n this._renderer.addClass(this._elementRef.nativeElement, cssClass);\n }\n }\n if (this.snackBarConfig.horizontalPosition === 'center') {\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-snack-bar-center');\n }\n if (this.snackBarConfig.verticalPosition === 'top') {\n this._renderer.addClass(this._elementRef.nativeElement, 'mat-snack-bar-top');\n }\n return this._portalHost.attachComponentPortal(portal);\n }\n /**\n * Attach a template portal as content to this snack bar container.\n * @return {?}\n */\n attachTemplatePortal() {\n throw Error('Not yet implemented');\n }\n /**\n * Handle end of animations, updating the state of the snackbar.\n * @param {?} event\n * @return {?}\n */\n onAnimationEnd(event) {\n const { fromState, toState } = event;\n if ((toState === 'void' && fromState !== 'void') || toState.startsWith('hidden')) {\n this._completeExit();\n }\n if (toState.startsWith('visible')) {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const /** @type {?} */ onEnter = this._onEnter;\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n /**\n * Begin animation of snack bar entrance into view.\n * @return {?}\n */\n enter() {\n if (!this._destroyed) {\n this._animationState = `visible-${this.snackBarConfig.verticalPosition}`;\n this._changeDetectorRef.detectChanges();\n }\n }\n /**\n * Begin animation of the snack bar exiting from view.\n * @return {?}\n */\n exit() {\n this._animationState = `hidden-${this.snackBarConfig.verticalPosition}`;\n return this._onExit;\n }\n /**\n * Makes sure the exit callbacks have been invoked when the element is destroyed.\n * @return {?}\n */\n ngOnDestroy() {\n this._destroyed = true;\n this._completeExit();\n }\n /**\n * Waits for the zone to settle before removing the element. Helps prevent\n * errors where we end up removing an element which is in the middle of an animation.\n * @return {?}\n */\n _completeExit() {\n first.call(this._ngZone.onMicrotaskEmpty.asObservable()).subscribe(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n}\nMatSnackBarContainer.decorators = [\n { type: Component, args: [{selector: 'snack-bar-container',\n template: \"\",\n styles: [\".mat-snack-bar-container{border-radius:2px;box-sizing:content-box;display:block;margin:24px;max-width:568px;min-width:288px;padding:14px 24px;transform:translateY(100%) translateY(24px)}.mat-snack-bar-container.mat-snack-bar-center{margin:0;transform:translateY(100%)}.mat-snack-bar-container.mat-snack-bar-top{transform:translateY(-100%) translateY(-24px)}.mat-snack-bar-container.mat-snack-bar-top.mat-snack-bar-center{transform:translateY(-100%)}@media screen and (-ms-high-contrast:active){.mat-snack-bar-container{border:solid 1px}}\"],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'role': 'alert',\n 'class': 'mat-snack-bar-container',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n animations: [\n trigger('state', [\n state('visible-top, visible-bottom', style({ transform: 'translateY(0%)' })),\n transition('visible-top => hidden-top, visible-bottom => hidden-bottom', animate(HIDE_ANIMATION)),\n transition('void => visible-top, void => visible-bottom', animate(SHOW_ANIMATION)),\n ])\n ],\n },] },\n];\n/**\n * @nocollapse\n */\nMatSnackBarContainer.ctorParameters = () => [\n { type: NgZone, },\n { type: Renderer2, },\n { type: ElementRef, },\n { type: ChangeDetectorRef, },\n];\nMatSnackBarContainer.propDecorators = {\n '_portalHost': [{ type: ViewChild, args: [PortalHostDirective,] },],\n};\nfunction MatSnackBarContainer_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSnackBarContainer.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSnackBarContainer.ctorParameters;\n /** @type {?} */\n MatSnackBarContainer.propDecorators;\n /**\n * Whether the component has been destroyed.\n * @type {?}\n */\n MatSnackBarContainer.prototype._destroyed;\n /**\n * The portal host inside of this container into which the snack bar content will be loaded.\n * @type {?}\n */\n MatSnackBarContainer.prototype._portalHost;\n /**\n * Subject for notifying that the snack bar has exited from view.\n * @type {?}\n */\n MatSnackBarContainer.prototype._onExit;\n /**\n * Subject for notifying that the snack bar has finished entering the view.\n * @type {?}\n */\n MatSnackBarContainer.prototype._onEnter;\n /**\n * The state of the snack bar animations.\n * @type {?}\n */\n MatSnackBarContainer.prototype._animationState;\n /**\n * The snack bar configuration.\n * @type {?}\n */\n MatSnackBarContainer.prototype.snackBarConfig;\n /** @type {?} */\n MatSnackBarContainer.prototype._ngZone;\n /** @type {?} */\n MatSnackBarContainer.prototype._renderer;\n /** @type {?} */\n MatSnackBarContainer.prototype._elementRef;\n /** @type {?} */\n MatSnackBarContainer.prototype._changeDetectorRef;\n}\n//# sourceMappingURL=snack-bar-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 { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { Injectable, Injector, Optional, SkipSelf } from '@angular/core';\nimport { extendObject } from '@angular/material/core';\nimport { SimpleSnackBar } from './simple-snack-bar';\nimport { MAT_SNACK_BAR_DATA, MatSnackBarConfig } from './snack-bar-config';\nimport { MatSnackBarContainer } from './snack-bar-container';\nimport { MatSnackBarRef } from './snack-bar-ref';\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nexport class MatSnackBar {\n /**\n * @param {?} _overlay\n * @param {?} _live\n * @param {?} _injector\n * @param {?} _parentSnackBar\n */\n constructor(_overlay, _live, _injector, _parentSnackBar) {\n this._overlay = _overlay;\n this._live = _live;\n this._injector = _injector;\n this._parentSnackBar = _parentSnackBar;\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n */\n this._snackBarRefAtThisLevel = null;\n }\n /**\n * Reference to the currently opened snackbar at *any* level.\n * @return {?}\n */\n get _openedSnackBarRef() {\n const /** @type {?} */ parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set _openedSnackBarRef(value) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n }\n else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n /**\n * Creates and dispatches a snack bar with a custom component for the content, removing any\n * currently opened snack bars.\n *\n * @template T\n * @param {?} component Component to be instantiated.\n * @param {?=} config Extra configuration for the snack bar.\n * @return {?}\n */\n openFromComponent(component, config) {\n const /** @type {?} */ _config = _applyConfigDefaults(config);\n const /** @type {?} */ snackBarRef = this._attach(component, _config);\n // When the snackbar is dismissed, clear the reference to it.\n snackBarRef.afterDismissed().subscribe(() => {\n // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n if (this._openedSnackBarRef == snackBarRef) {\n this._openedSnackBarRef = null;\n }\n });\n if (this._openedSnackBarRef) {\n // If a snack bar is already in view, dismiss it and enter the\n // new snack bar after exit animation is complete.\n this._openedSnackBarRef.afterDismissed().subscribe(() => {\n snackBarRef.containerInstance.enter();\n });\n this._openedSnackBarRef.dismiss();\n }\n else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\n // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n if (_config.duration && _config.duration > 0) {\n snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(/** @type {?} */ ((((_config)).duration))));\n }\n if (_config.announcementMessage) {\n this._live.announce(_config.announcementMessage, _config.politeness);\n }\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n /**\n * Opens a snackbar with a message and an optional action.\n * @param {?} message The message to show in the snackbar.\n * @param {?=} action The label for the snackbar action.\n * @param {?=} config Additional configuration options for the snackbar.\n * @return {?}\n */\n open(message, action = '', config) {\n const /** @type {?} */ _config = _applyConfigDefaults(config);\n // Since the user doesn't have access to the component, we can\n // override the data to pass in our own message and action.\n _config.data = { message, action };\n _config.announcementMessage = message;\n return this.openFromComponent(SimpleSnackBar, _config);\n }\n /**\n * Dismisses the currently-visible snack bar.\n * @return {?}\n */\n dismiss() {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n /**\n * Attaches the snack bar container component to the overlay.\n * @param {?} overlayRef\n * @param {?} config\n * @return {?}\n */\n _attachSnackBarContainer(overlayRef, config) {\n const /** @type {?} */ containerPortal = new ComponentPortal(MatSnackBarContainer, config.viewContainerRef);\n const /** @type {?} */ containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n /**\n * Places a new component as the content of the snack bar container.\n * @template T\n * @param {?} component\n * @param {?} config\n * @return {?}\n */\n _attach(component, config) {\n const /** @type {?} */ overlayRef = this._createOverlay(config);\n const /** @type {?} */ container = this._attachSnackBarContainer(overlayRef, config);\n const /** @type {?} */ snackBarRef = new MatSnackBarRef(container, overlayRef);\n const /** @type {?} */ injector = this._createInjector(config, snackBarRef);\n const /** @type {?} */ portal = new ComponentPortal(component, undefined, injector);\n const /** @type {?} */ contentRef = container.attachComponentPortal(portal);\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n return snackBarRef;\n }\n /**\n * Creates a new overlay and places it in the correct location.\n * @param {?} config The user-specified snack bar config.\n * @return {?}\n */\n _createOverlay(config) {\n const /** @type {?} */ overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n let /** @type {?} */ positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const /** @type {?} */ isRtl = config.direction === 'rtl';\n const /** @type {?} */ isLeft = (config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl));\n const /** @type {?} */ isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n }\n else if (isRight) {\n positionStrategy.right('0');\n }\n else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n }\n else {\n positionStrategy.bottom('0');\n }\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n }\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @template T\n * @param {?} config Config that was used to create the snack bar.\n * @param {?} snackBarRef Reference to the snack bar.\n * @return {?}\n */\n _createInjector(config, snackBarRef) {\n const /** @type {?} */ userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const /** @type {?} */ injectionTokens = new WeakMap();\n injectionTokens.set(MatSnackBarRef, snackBarRef);\n injectionTokens.set(MAT_SNACK_BAR_DATA, config.data);\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n }\n}\nMatSnackBar.decorators = [\n { type: Injectable },\n];\n/**\n * @nocollapse\n */\nMatSnackBar.ctorParameters = () => [\n { type: Overlay, },\n { type: LiveAnnouncer, },\n { type: Injector, },\n { type: MatSnackBar, decorators: [{ type: Optional }, { type: SkipSelf },] },\n];\nfunction MatSnackBar_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSnackBar.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSnackBar.ctorParameters;\n /**\n * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n * If there is a parent snack-bar service, all operations should delegate to that parent\n * via `_openedSnackBarRef`.\n * @type {?}\n */\n MatSnackBar.prototype._snackBarRefAtThisLevel;\n /** @type {?} */\n MatSnackBar.prototype._overlay;\n /** @type {?} */\n MatSnackBar.prototype._live;\n /** @type {?} */\n MatSnackBar.prototype._injector;\n /** @type {?} */\n MatSnackBar.prototype._parentSnackBar;\n}\n/**\n * Applies default options to the snackbar config.\n * @param {?=} config The configuration to which the defaults will be applied.\n * @return {?} The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(config) {\n return extendObject(new MatSnackBarConfig(), config);\n}\n//# sourceMappingURL=snack-bar.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 { LIVE_ANNOUNCER_PROVIDER } from '@angular/cdk/a11y';\nimport { MatCommonModule } from '@angular/material/core';\nimport { MatSnackBar } from './snack-bar';\nimport { MatSnackBarContainer } from './snack-bar-container';\nimport { SimpleSnackBar } from './simple-snack-bar';\nexport class MatSnackBarModule {\n}\nMatSnackBarModule.decorators = [\n { type: NgModule, args: [{\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatCommonModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n providers: [MatSnackBar, LIVE_ANNOUNCER_PROVIDER]\n },] },\n];\n/**\n * @nocollapse\n */\nMatSnackBarModule.ctorParameters = () => [];\nfunction MatSnackBarModule_tsickle_Closure_declarations() {\n /** @type {?} */\n MatSnackBarModule.decorators;\n /**\n * @nocollapse\n * @type {?}\n */\n MatSnackBarModule.ctorParameters;\n}\n//# sourceMappingURL=snack-bar-module.js.map","/**\n * Generated bundle index. Do not edit.\n */\nexport { MatSnackBarModule, MatSnackBar, SHOW_ANIMATION, HIDE_ANIMATION, MatSnackBarContainer, MAT_SNACK_BAR_DATA, MatSnackBarConfig, MatSnackBarRef, SimpleSnackBar } from './public-api';\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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"}