blob: 1dc613f009c0f7f85f09b35fec6c6f3a2007ac90 [file] [log] [blame]
{"version":3,"file":"material-snack-bar.umd.min.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/material/snack-bar/snack-bar.ts","../../src/material/snack-bar/snack-bar-ref.ts","../../src/material/snack-bar/snack-bar-config.ts","../../src/material/snack-bar/simple-snack-bar.ts","../../src/material/snack-bar/snack-bar-animations.ts","../../src/material/snack-bar/snack-bar-container.ts","../../src/material/snack-bar/snack-bar-module.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n * @license\n * Copyright Google LLC 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\nimport {LiveAnnouncer} from '@angular/cdk/a11y';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, PortalInjector, TemplatePortal} from '@angular/cdk/portal';\nimport {\n ComponentRef,\n EmbeddedViewRef,\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef,\n OnDestroy,\n} from '@angular/core';\nimport {take, takeUntil} from 'rxjs/operators';\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarModule} from './snack-bar-module';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/** Injection token that can be used to specify default snack bar. */\nexport const MAT_SNACK_BAR_DEFAULT_OPTIONS =\n new InjectionToken<MatSnackBarConfig>('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY,\n });\n\n/** @docs-private */\nexport function MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY(): MatSnackBarConfig {\n return new MatSnackBarConfig();\n}\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Injectable({providedIn: MatSnackBarModule})\nexport class MatSnackBar implements OnDestroy {\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 private _snackBarRefAtThisLevel: MatSnackBarRef<any> | null = null;\n\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef(): MatSnackBarRef<any> | null {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n\n set _openedSnackBarRef(value: MatSnackBarRef<any> | null) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n } else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n\n constructor(\n private _overlay: Overlay,\n private _live: LiveAnnouncer,\n private _injector: Injector,\n private _breakpointObserver: BreakpointObserver,\n @Optional() @SkipSelf() private _parentSnackBar: MatSnackBar,\n @Inject(MAT_SNACK_BAR_DEFAULT_OPTIONS) private _defaultConfig: MatSnackBarConfig) {}\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 * @param component Component to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromComponent<T>(component: ComponentType<T>, config?: MatSnackBarConfig):\n MatSnackBarRef<T> {\n return this._attach(component, config) as MatSnackBarRef<T>;\n }\n\n /**\n * Creates and dispatches a snack bar with a custom template for the content, removing any\n * currently opened snack bars.\n *\n * @param template Template to be instantiated.\n * @param config Extra configuration for the snack bar.\n */\n openFromTemplate(template: TemplateRef<any>, config?: MatSnackBarConfig):\n MatSnackBarRef<EmbeddedViewRef<any>> {\n return this._attach(template, config);\n }\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 */\n open(message: string, action: string = '', config?: MatSnackBarConfig):\n MatSnackBarRef<SimpleSnackBar> {\n const _config = {...this._defaultConfig, ...config};\n\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\n if (!_config.announcementMessage) {\n _config.announcementMessage = message;\n }\n\n return this.openFromComponent(SimpleSnackBar, _config);\n }\n\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss(): void {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\n }\n }\n\n ngOnDestroy() {\n // Only dismiss the snack bar at the current level on destroy.\n if (this._snackBarRefAtThisLevel) {\n this._snackBarRefAtThisLevel.dismiss();\n }\n }\n\n /**\n * Attaches the snack bar container component to the overlay.\n */\n private _attachSnackBarContainer(overlayRef: OverlayRef,\n config: MatSnackBarConfig): MatSnackBarContainer {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = new PortalInjector(userInjector || this._injector, new WeakMap([\n [MatSnackBarConfig, config]\n ]));\n\n const containerPortal =\n new ComponentPortal(MatSnackBarContainer, config.viewContainerRef, injector);\n const containerRef: ComponentRef<MatSnackBarContainer> = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n private _attach<T>(content: ComponentType<T> | TemplateRef<T>, userConfig?: MatSnackBarConfig):\n MatSnackBarRef<T | EmbeddedViewRef<any>> {\n\n const config = {...new MatSnackBarConfig(), ...this._defaultConfig, ...userConfig};\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\n\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null!, {\n $implicit: config.data,\n snackBarRef\n } as any);\n\n snackBarRef.instance = container.attachTemplatePortal(portal);\n } else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const contentRef = container.attachComponentPortal<T>(portal);\n\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\n }\n\n // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n // appropriate. This class is applied to the overlay element because the overlay must expand to\n // fill the width of the screen for full width snackbars.\n this._breakpointObserver.observe(Breakpoints.Handset).pipe(\n takeUntil(overlayRef.detachments().pipe(take(1)))\n ).subscribe(state => {\n if (state.matches) {\n overlayRef.overlayElement.classList.add('mat-snack-bar-handset');\n } else {\n overlayRef.overlayElement.classList.remove('mat-snack-bar-handset');\n }\n });\n\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n\n /** Animates the old snack bar out and the new one in. */\n private _animateSnackBar(snackBarRef: MatSnackBarRef<any>, config: MatSnackBarConfig) {\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 (config.announcementMessage) {\n this._live.clear();\n }\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 } else {\n // If no snack bar is in view, enter the new snack bar.\n snackBarRef.containerInstance.enter();\n }\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(config.duration!));\n }\n\n if (config.announcementMessage) {\n this._live.announce(config.announcementMessage, config.politeness);\n }\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n private _createOverlay(config: MatSnackBarConfig): OverlayRef {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n\n let positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft = (\n config.horizontalPosition === 'left' ||\n (config.horizontalPosition === 'start' && !isRtl) ||\n (config.horizontalPosition === 'end' && isRtl));\n const isRight = !isLeft && config.horizontalPosition !== 'center';\n if (isLeft) {\n positionStrategy.left('0');\n } else if (isRight) {\n positionStrategy.right('0');\n } else {\n positionStrategy.centerHorizontally();\n }\n // Set horizontal position.\n if (config.verticalPosition === 'top') {\n positionStrategy.top('0');\n } else {\n positionStrategy.bottom('0');\n }\n\n overlayConfig.positionStrategy = positionStrategy;\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an injector to be used inside of a snack bar component.\n * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n private _createInjector<T>(\n config: MatSnackBarConfig,\n snackBarRef: MatSnackBarRef<T>): PortalInjector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n return new PortalInjector(userInjector || this._injector, new WeakMap<any, any>([\n [MatSnackBarRef, snackBarRef],\n [MAT_SNACK_BAR_DATA, config.data]\n ]));\n }\n}\n","/**\n * @license\n * Copyright Google LLC 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\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n\n/** Event that is emitted when a snack bar is dismissed. */\nexport interface MatSnackBarDismiss {\n /** Whether the snack bar was dismissed using the action button. */\n dismissedByAction: boolean;\n}\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nexport class MatSnackBarRef<T> {\n /** The instance of the component making up the content of the snack bar. */\n instance: T;\n\n /**\n * The instance of the component making up the content of the snack bar.\n * @docs-private\n */\n containerInstance: MatSnackBarContainer;\n\n /** Subject for notifying the user that the snack bar has been dismissed. */\n private readonly _afterDismissed = new Subject<MatSnackBarDismiss>();\n\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the snack bar action was called. */\n private readonly _onAction = new Subject<void>();\n\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 */\n private _durationTimeoutId: number;\n\n /** Whether the snack bar was dismissed using the action button. */\n private _dismissedByAction = false;\n\n constructor(containerInstance: MatSnackBarContainer,\n private _overlayRef: OverlayRef) {\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 dismiss(): void {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n\n /** Marks the snackbar action clicked. */\n dismissWithAction(): void {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n }\n }\n\n\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction(): void {\n this.dismissWithAction();\n }\n\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration: number): void {\n this._durationTimeoutId = setTimeout(() => this.dismiss(), duration);\n }\n\n /** Marks the snackbar as opened */\n _open(): void {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n\n /** Cleans up the DOM after closing. */\n private _finishDismiss(): void {\n this._overlayRef.dispose();\n\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n\n this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed(): Observable<MatSnackBarDismiss> {\n return this._afterDismissed.asObservable();\n }\n\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened(): Observable<void> {\n return this.containerInstance._onEnter;\n }\n\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction(): Observable<void> {\n return this._onAction.asObservable();\n }\n}\n","/**\n * @license\n * Copyright Google LLC 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\nimport {ViewContainerRef, InjectionToken} from '@angular/core';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const MAT_SNACK_BAR_DATA = new InjectionToken<any>('MatSnackBarData');\n\n/** Possible values for horizontalPosition on MatSnackBarConfig. */\nexport type MatSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\n\n/** Possible values for verticalPosition on MatSnackBarConfig. */\nexport type MatSnackBarVerticalPosition = 'top' | 'bottom';\n\n/**\n * Configuration used when opening a snack-bar.\n */\nexport class MatSnackBarConfig<D = any> {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n politeness?: AriaLivePoliteness = 'assertive';\n\n /**\n * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n * component or template, the announcement message will default to the specified message.\n */\n announcementMessage?: string = '';\n\n /** The view container to place the overlay for the snack bar into. */\n viewContainerRef?: ViewContainerRef;\n\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n duration?: number = 0;\n\n /** Extra CSS classes to be added to the snack bar container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the snack bar. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** The horizontal position to place the snack bar. */\n horizontalPosition?: MatSnackBarHorizontalPosition = 'center';\n\n /** The vertical position to place the snack bar. */\n verticalPosition?: MatSnackBarVerticalPosition = 'bottom';\n}\n","/**\n * @license\n * Copyright Google LLC 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\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\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 */\n@Component({\n moduleId: module.id,\n selector: 'simple-snack-bar',\n templateUrl: 'simple-snack-bar.html',\n styleUrls: ['simple-snack-bar.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-simple-snackbar',\n }\n})\nexport class SimpleSnackBar {\n /** Data that was injected into the snack bar. */\n data: {message: string, action: string};\n\n constructor(\n public snackBarRef: MatSnackBarRef<SimpleSnackBar>,\n @Inject(MAT_SNACK_BAR_DATA) data: any) {\n this.data = data;\n }\n\n /** Performs the action on the snack bar. */\n action(): void {\n this.snackBarRef.dismissWithAction();\n }\n\n /** If the action button should be shown. */\n get hasAction(): boolean {\n return !!this.data.action;\n }\n}\n","/**\n * @license\n * Copyright Google LLC 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 {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nexport const matSnackBarAnimations: {\n readonly snackBarState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides a snack bar. */\n snackBarState: trigger('state', [\n state('void, hidden', style({\n transform: 'scale(0.8)',\n opacity: 0,\n })),\n state('visible', style({\n transform: 'scale(1)',\n opacity: 1,\n })),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition('* => void, * => hidden', animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', style({\n opacity: 0\n }))),\n ])\n};\n","/**\n * @license\n * Copyright Google LLC 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\nimport {AnimationEvent} from '@angular/animations';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n NgZone,\n OnDestroy,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {matSnackBarAnimations} from './snack-bar-animations';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'snack-bar-container',\n templateUrl: 'snack-bar-container.html',\n styleUrls: ['snack-bar-container.css'],\n // In Ivy embedded views will be change detected from their declaration place, rather than\n // where they were stamped out. This means that we can't have the snack bar container be OnPush,\n // because it might cause snack bars that were opened from a template not to be out of date.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n animations: [matSnackBarAnimations.snackBarState],\n host: {\n '[attr.role]': '_role',\n 'class': 'mat-snack-bar-container',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n})\nexport class MatSnackBarContainer extends BasePortalOutlet implements OnDestroy {\n /** Whether the component has been destroyed. */\n private _destroyed = false;\n\n /** The portal outlet inside of this container into which the snack bar content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** Subject for notifying that the snack bar has exited from view. */\n readonly _onExit: Subject<any> = new Subject();\n\n /** Subject for notifying that the snack bar has finished entering the view. */\n readonly _onEnter: Subject<any> = new Subject();\n\n /** The state of the snack bar animations. */\n _animationState = 'void';\n\n /** ARIA role for the snack bar container. */\n _role: 'alert' | 'status' | null;\n\n constructor(\n private _ngZone: NgZone,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n /** The snack bar configuration. */\n public snackBarConfig: MatSnackBarConfig) {\n\n super();\n\n // Based on the ARIA spec, `alert` and `status` roles have an\n // implicit `assertive` and `polite` politeness respectively.\n if (snackBarConfig.politeness === 'assertive' && !snackBarConfig.announcementMessage) {\n this._role = 'alert';\n } else if (snackBarConfig.politeness === 'off') {\n this._role = null;\n } else {\n this._role = 'status';\n }\n }\n\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this._assertNotAttached();\n this._applySnackBarClasses();\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(event: AnimationEvent) {\n const {fromState, toState} = event;\n\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this._onEnter;\n\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n\n /** Begin animation of snack bar entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** Begin animation of the snack bar exiting from view. */\n exit(): Observable<void> {\n // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n // `MatSnackBar.open`).\n this._animationState = 'hidden';\n return this._onExit;\n }\n\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._completeExit();\n }\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 */\n private _completeExit() {\n this._ngZone.onMicrotaskEmpty.asObservable().pipe(take(1)).subscribe(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n }\n\n /** Applies the various positioning and user-configured CSS classes to the snack bar. */\n private _applySnackBarClasses() {\n const element: HTMLElement = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\n\n if (panelClasses) {\n if (Array.isArray(panelClasses)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClasses.forEach(cssClass => element.classList.add(cssClass));\n } else {\n element.classList.add(panelClasses);\n }\n }\n\n if (this.snackBarConfig.horizontalPosition === 'center') {\n element.classList.add('mat-snack-bar-center');\n }\n\n if (this.snackBarConfig.verticalPosition === 'top') {\n element.classList.add('mat-snack-bar-top');\n }\n }\n\n /** Asserts that no content is already attached to the container. */\n private _assertNotAttached() {\n if (this._portalOutlet.hasAttached()) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC 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\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n PortalModule,\n CommonModule,\n MatButtonModule,\n MatCommonModule,\n ],\n exports: [MatSnackBarContainer, MatCommonModule],\n declarations: [MatSnackBarContainer, SimpleSnackBar],\n entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n})\nexport class MatSnackBarModule {}\n"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY","MatSnackBarConfig","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__assign","assign","t","s","i","n","arguments","length","call","apply","MatSnackBarRef","containerInstance","_overlayRef","_this","_afterDismissed","Subject","_afterOpened","_onAction","_dismissedByAction","onAction","subscribe","dismiss","_onExit","_finishDismiss","closed","exit","clearTimeout","_durationTimeoutId","dismissWithAction","next","complete","closeWithAction","_dismissAfter","duration","setTimeout","_open","dispose","dismissedByAction","afterDismissed","asObservable","afterOpened","_onEnter","MAT_SNACK_BAR_DATA","InjectionToken","politeness","announcementMessage","data","horizontalPosition","verticalPosition","SimpleSnackBar","snackBarRef","action","defineProperty","type","Component","args","selector","template","styles","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","host","class","matSnackBarAnimations","snackBarState","trigger","state","style","transform","opacity","transition","animate","MatSnackBarContainer","_super","_ngZone","_elementRef","_changeDetectorRef","snackBarConfig","_destroyed","_animationState","_role","tslib_1.__extends","attachComponentPortal","portal","_assertNotAttached","_applySnackBarClasses","_portalOutlet","attachTemplatePortal","onAnimationEnd","event","fromState","toState","_completeExit","onEnter_1","run","enter","detectChanges","ngOnDestroy","onMicrotaskEmpty","pipe","take","element","nativeElement","panelClasses","panelClass","isArray","forEach","cssClass","classList","add","hasAttached","Error","animations","[attr.role]","[@state]","(@state.done)","ChangeDetectorRef","propDecorators","MatSnackBarModule","NgModule","imports","OverlayModule","PortalModule","CommonModule","MatButtonModule","MatCommonModule","exports","declarations","entryComponents","MAT_SNACK_BAR_DEFAULT_OPTIONS","providedIn","factory","MatSnackBar","_overlay","_live","_injector","_breakpointObserver","_parentSnackBar","_defaultConfig","_snackBarRefAtThisLevel","parent","_openedSnackBarRef","value","openFromComponent","component","config","_attach","openFromTemplate","open","message","_config","tslib_1.__assign","_attachSnackBarContainer","overlayRef","userInjector","viewContainerRef","injector","PortalInjector","WeakMap","containerPortal","ComponentPortal","containerRef","attach","instance","content","userConfig","_createOverlay","container","TemplateRef","TemplatePortal","$implicit","_createInjector","undefined","contentRef","observe","Breakpoints","Handset","takeUntil","detachments","matches","overlayElement","remove","_animateSnackBar","clear","announce","overlayConfig","OverlayConfig","direction","positionStrategy","position","global","isRtl","isLeft","isRight","left","right","centerHorizontally","top","bottom","Injectable","Overlay","LiveAnnouncer","Injector","BreakpointObserver","decorators","Optional","SkipSelf","Inject"],"mappings":"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"}