| 1 |
- {"ast":null,"code":"import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, inject, ViewChild, NgModule, Injector, TemplateRef, Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i3 from '@angular/material/button';\nimport { MatButtonModule } from '@angular/material/button';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i3$1 from '@angular/cdk/portal';\nimport { BasePortalOutlet, CdkPortalOutlet, PortalModule, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport * as i1 from '@angular/cdk/platform';\nimport { take, takeUntil } from 'rxjs/operators';\nimport * as i2$1 from '@angular/cdk/a11y';\nimport * as i3$2 from '@angular/cdk/layout';\nimport { Breakpoints } from '@angular/cdk/layout';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { OverlayModule, OverlayConfig } from '@angular/cdk/overlay';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nfunction SimpleSnackBar_div_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r2 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 2)(1, \"button\", 3);\n i0.ɵɵlistener(\"click\", function SimpleSnackBar_div_2_Template_button_click_1_listener() {\n i0.ɵɵrestoreView(_r2);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.action());\n });\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", ctx_r0.data.action, \" \");\n }\n}\nconst _c0 = [\"label\"];\nfunction MatSnackBarContainer_ng_template_4_Template(rf, ctx) {}\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nclass MatSnackBarRef {\n constructor(containerInstance, _overlayRef) {\n this._overlayRef = _overlayRef;\n /** Subject for notifying the user that the snack bar has been dismissed. */\n this._afterDismissed = new Subject();\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n this._afterOpened = new Subject();\n /** Subject for notifying the user that the snack bar action was called. */\n this._onAction = new Subject();\n /** Whether the snack bar was dismissed using the action button. */\n this._dismissedByAction = false;\n this.containerInstance = containerInstance;\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n /** Dismisses the snack bar. */\n dismiss() {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /** Marks the snackbar action clicked. */\n dismissWithAction() {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n this.dismiss();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction() {\n this.dismissWithAction();\n }\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration) {\n // Note that we need to cap the duration to the maximum value for setTimeout, because\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n /** Marks the snackbar as opened */\n _open() {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n /** Cleans up the DOM after closing. */\n _finishDismiss() {\n this._overlayRef.dispose();\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n this._afterDismissed.next({\n dismissedByAction: this._dismissedByAction\n });\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed() {\n return this._afterDismissed;\n }\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened() {\n return this.containerInstance._onEnter;\n }\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction() {\n return this._onAction;\n }\n}\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nconst MAT_SNACK_BAR_DATA = new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n */\nclass MatSnackBarConfig {\n constructor() {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n this.politeness = 'assertive';\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 this.announcementMessage = '';\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n this.duration = 0;\n /** Data being injected into the child component. */\n this.data = null;\n /** The horizontal position to place the snack bar. */\n this.horizontalPosition = 'center';\n /** The vertical position to place the snack bar. */\n this.verticalPosition = 'bottom';\n }\n}\n\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\nclass MatSnackBarLabel {\n static #_ = this.ɵfac = function MatSnackBarLabel_Factory(t) {\n return new (t || MatSnackBarLabel)();\n };\n static #_2 = this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarLabel,\n selectors: [[\"\", \"matSnackBarLabel\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-label\", \"mdc-snackbar__label\"]\n });\n}\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSnackBarLabel, [{\n type: Directive,\n args: [{\n selector: `[matSnackBarLabel]`,\n host: {\n 'class': 'mat-mdc-snack-bar-label mdc-snackbar__label'\n }\n }]\n }], null, null);\n})();\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\nclass MatSnackBarActions {\n static #_ = this.ɵfac = function MatSnackBarActions_Factory(t) {\n return new (t || MatSnackBarActions)();\n };\n static #_2 = this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarActions,\n selectors: [[\"\", \"matSnackBarActions\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-actions\", \"mdc-snackbar__actions\"]\n });\n}\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSnackBarActions, [{\n type: Directive,\n args: [{\n selector: `[matSnackBarActions]`,\n host: {\n 'class': 'mat-mdc-snack-bar-actions mdc-snackbar__actions'\n }\n }]\n }], null, null);\n})();\n/** Directive that should be applied to each of the snack bar's action buttons. */\nclass MatSnackBarAction {\n static #_ = this.ɵfac = function MatSnackBarAction_Factory(t) {\n return new (t || MatSnackBarAction)();\n };\n static #_2 = this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: MatSnackBarAction,\n selectors: [[\"\", \"matSnackBarAction\", \"\"]],\n hostAttrs: [1, \"mat-mdc-snack-bar-action\", \"mdc-snackbar__action\"]\n });\n}\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSnackBarAction, [{\n type: Directive,\n args: [{\n selector: `[matSnackBarAction]`,\n host: {\n 'class': 'mat-mdc-snack-bar-action mdc-snackbar__action'\n }\n }]\n }], null, null);\n})();\nclass SimpleSnackBar {\n constructor(snackBarRef, data) {\n this.snackBarRef = snackBarRef;\n this.data = data;\n }\n /** Performs the action on the snack bar. */\n action() {\n this.snackBarRef.dismissWithAction();\n }\n /** If the action button should be shown. */\n get hasAction() {\n return !!this.data.action;\n }\n static #_ = this.ɵfac = function SimpleSnackBar_Factory(t) {\n return new (t || SimpleSnackBar)(i0.ɵɵdirectiveInject(MatSnackBarRef), i0.ɵɵdirectiveInject(MAT_SNACK_BAR_DATA));\n };\n static #_2 = this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: SimpleSnackBar,\n selectors: [[\"simple-snack-bar\"]],\n hostAttrs: [1, \"mat-mdc-simple-snack-bar\"],\n exportAs: [\"matSnackBar\"],\n decls: 3,\n vars: 2,\n consts: [[\"matSnackBarLabel\", \"\"], [\"matSnackBarActions\", \"\", 4, \"ngIf\"], [\"matSnackBarActions\", \"\"], [\"mat-button\", \"\", \"matSnackBarAction\", \"\", 3, \"click\"]],\n template: function SimpleSnackBar_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(2, SimpleSnackBar_div_2_Template, 3, 1, \"div\", 1);\n }\n if (rf & 2) {\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate1(\" \", ctx.data.message, \"\\n\");\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx.hasAction);\n }\n },\n dependencies: [i2.NgIf, i3.MatButton, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction],\n styles: [\".mat-mdc-simple-snack-bar{display:flex}\"],\n encapsulation: 2,\n changeDetection: 0\n });\n}\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(SimpleSnackBar, [{\n type: Component,\n args: [{\n selector: 'simple-snack-bar',\n exportAs: 'matSnackBar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'mat-mdc-simple-snack-bar'\n },\n template: \"<div matSnackBarLabel>\\n {{data.message}}\\n</div>\\n\\n<div matSnackBarActions *ngIf=\\\"hasAction\\\">\\n <button mat-button matSnackBarAction (click)=\\\"action()\\\">\\n {{data.action}}\\n </button>\\n</div>\\n\",\n styles: [\".mat-mdc-simple-snack-bar{display:flex}\"]\n }]\n }], function () {\n return [{\n type: MatSnackBarRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_SNACK_BAR_DATA]\n }]\n }];\n }, null);\n})();\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nconst matSnackBarAnimations = {\n /** Animation that shows and hides a snack bar. */\n snackBarState: trigger('state', [state('void, hidden', style({\n transform: 'scale(0.8)',\n opacity: 0\n })), state('visible', style({\n transform: 'scale(1)',\n opacity: 1\n })), transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')), transition('* => void, * => hidden', animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', style({\n opacity: 0\n })))])\n};\nlet uniqueId = 0;\n/**\n * Base class for snack bar containers.\n * @docs-private\n */\nclass _MatSnackBarContainerBase extends BasePortalOutlet {\n constructor(_ngZone, _elementRef, _changeDetectorRef, _platform, /** The snack bar configuration. */\n snackBarConfig) {\n super();\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._platform = _platform;\n this.snackBarConfig = snackBarConfig;\n this._document = inject(DOCUMENT);\n this._trackedModals = new Set();\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n this._announceDelay = 150;\n /** Whether the component has been destroyed. */\n this._destroyed = false;\n /** Subject for notifying that the snack bar has announced to screen readers. */\n this._onAnnounce = new Subject();\n /** Subject for notifying that the snack bar has exited from view. */\n this._onExit = new Subject();\n /** Subject for notifying that the snack bar has finished entering the view. */\n this._onEnter = new Subject();\n /** The state of the snack bar animations. */\n this._animationState = 'void';\n /** Unique ID of the aria-live element. */\n this._liveElementId = `mat-snack-bar-container-live-${uniqueId++}`;\n /**\n * Attaches a DOM portal to the snack bar container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = portal => {\n this._assertNotAttached();\n const result = this._portalOutlet.attachDomPortal(portal);\n this._afterPortalAttached();\n return result;\n };\n // Use aria-live rather than a live role like 'alert' or 'status'\n // because NVDA and JAWS have show inconsistent behavior with live roles.\n if (snackBarConfig.politeness === 'assertive' && !snackBarConfig.announcementMessage) {\n this._live = 'assertive';\n } else if (snackBarConfig.politeness === 'off') {\n this._live = 'off';\n } else {\n this._live = 'polite';\n }\n // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n if (this._platform.FIREFOX) {\n if (this._live === 'polite') {\n this._role = 'status';\n }\n if (this._live === 'assertive') {\n this._role = 'alert';\n }\n }\n }\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal(portal) {\n this._assertNotAttached();\n const result = this._portalOutlet.attachComponentPortal(portal);\n this._afterPortalAttached();\n return result;\n }\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal(portal) {\n this._assertNotAttached();\n const result = this._portalOutlet.attachTemplatePortal(portal);\n this._afterPortalAttached();\n return result;\n }\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(event) {\n const {\n fromState,\n toState\n } = event;\n if (toState === 'void' && fromState !== 'void' || toState === 'hidden') {\n this._completeExit();\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 this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n /** Begin animation of snack bar entrance into view. */\n enter() {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n this._screenReaderAnnounce();\n }\n }\n /** Begin animation of the snack bar exiting from view. */\n exit() {\n // It's common for snack bars to be opened by random outside calls like HTTP requests or\n // errors. Run inside the NgZone to ensure that it functions correctly.\n this._ngZone.run(() => {\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 // Mark this element with an 'exit' attribute to indicate that the snackbar has\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n // test harness.\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n // long enough to visually read it either, so clear the timeout for announcing.\n clearTimeout(this._announceTimeoutId);\n });\n return this._onExit;\n }\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._clearFromModals();\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 */\n _completeExit() {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n this._ngZone.run(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n });\n }\n /**\n * Called after the portal contents have been attached. Can be\n * used to modify the DOM once it's guaranteed to be in place.\n */\n _afterPortalAttached() {\n const element = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\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 this._exposeToModals();\n }\n /**\n * Some browsers won't expose the accessibility node of the live element if there is an\n * `aria-modal` and the live element is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live element.\n */\n _exposeToModals() {\n // TODO(crisbeto): consider de-duplicating this with the `LiveAnnouncer`.\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const id = this._liveElementId;\n const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n this._trackedModals.add(modal);\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n } else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n /** Clears the references to the live element from any modals it was added to. */\n _clearFromModals() {\n this._trackedModals.forEach(modal => {\n const ariaOwns = modal.getAttribute('aria-owns');\n if (ariaOwns) {\n const newValue = ariaOwns.replace(this._liveElementId, '').trim();\n if (newValue.length > 0) {\n modal.setAttribute('aria-owns', newValue);\n } else {\n modal.removeAttribute('aria-owns');\n }\n }\n });\n this._trackedModals.clear();\n }\n /** Asserts that no content is already attached to the container. */\n _assertNotAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n /**\n * Starts a timeout to move the snack bar content to the live region so screen readers will\n * announce it.\n */\n _screenReaderAnnounce() {\n if (!this._announceTimeoutId) {\n this._ngZone.runOutsideAngular(() => {\n this._announceTimeoutId = setTimeout(() => {\n const inertElement = this._elementRef.nativeElement.querySelector('[aria-hidden]');\n const liveElement = this._elementRef.nativeElement.querySelector('[aria-live]');\n if (inertElement && liveElement) {\n // If an element in the snack bar content is focused before being moved\n // track it and restore focus after moving to the live region.\n let focusedElement = null;\n if (this._platform.isBrowser && document.activeElement instanceof HTMLElement && inertElement.contains(document.activeElement)) {\n focusedElement = document.activeElement;\n }\n inertElement.removeAttribute('aria-hidden');\n liveElement.appendChild(inertElement);\n focusedElement?.focus();\n this._onAnnounce.next();\n this._onAnnounce.complete();\n }\n }, this._announceDelay);\n });\n }\n }\n static #_ = this.ɵfac = function _MatSnackBarContainerBase_Factory(t) {\n return new (t || _MatSnackBarContainerBase)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.Platform), i0.ɵɵdirectiveInject(MatSnackBarConfig));\n };\n static #_2 = this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: _MatSnackBarContainerBase,\n viewQuery: function _MatSnackBarContainerBase_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(CdkPortalOutlet, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._portalOutlet = _t.first);\n }\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n}\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(_MatSnackBarContainerBase, [{\n type: Directive\n }], function () {\n return [{\n type: i0.NgZone\n }, {\n type: i0.ElementRef\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i1.Platform\n }, {\n type: MatSnackBarConfig\n }];\n }, {\n _portalOutlet: [{\n type: ViewChild,\n args: [CdkPortalOutlet, {\n static: true\n }]\n }]\n });\n})();\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\nclass MatSnackBarContainer extends _MatSnackBarContainerBase {\n /** Applies the correct CSS class to the label based on its content. */\n _afterPortalAttached() {\n super._afterPortalAttached();\n // Check to see if the attached component or template uses the MDC template structure,\n // specifically the MDC label. If not, the container should apply the MDC label class to this\n // component's label container, which will apply MDC's label styles to the attached view.\n const label = this._label.nativeElement;\n const labelClass = 'mdc-snackbar__label';\n label.classList.toggle(labelClass, !label.querySelector(`.${labelClass}`));\n }\n static #_ = this.ɵfac = /* @__PURE__ */function () {\n let ɵMatSnackBarContainer_BaseFactory;\n return function MatSnackBarContainer_Factory(t) {\n return (ɵMatSnackBarContainer_BaseFactory || (ɵMatSnackBarContainer_BaseFactory = i0.ɵɵgetInheritedFactory(MatSnackBarContainer)))(t || MatSnackBarContainer);\n };\n }();\n static #_2 = this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: MatSnackBarContainer,\n selectors: [[\"mat-snack-bar-container\"]],\n viewQuery: function MatSnackBarContainer_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._label = _t.first);\n }\n },\n hostAttrs: [1, \"mdc-snackbar\", \"mat-mdc-snack-bar-container\", \"mdc-snackbar--open\"],\n hostVars: 1,\n hostBindings: function MatSnackBarContainer_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵsyntheticHostListener(\"@state.done\", function MatSnackBarContainer_animation_state_done_HostBindingHandler($event) {\n return ctx.onAnimationEnd($event);\n });\n }\n if (rf & 2) {\n i0.ɵɵsyntheticHostProperty(\"@state\", ctx._animationState);\n }\n },\n features: [i0.ɵɵInheritDefinitionFeature],\n decls: 6,\n vars: 3,\n consts: [[1, \"mdc-snackbar__surface\"], [1, \"mat-mdc-snack-bar-label\"], [\"label\", \"\"], [\"aria-hidden\", \"true\"], [\"cdkPortalOutlet\", \"\"]],\n template: function MatSnackBarContainer_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1, 2)(3, \"div\", 3);\n i0.ɵɵtemplate(4, MatSnackBarContainer_ng_template_4_Template, 0, 0, \"ng-template\", 4);\n i0.ɵɵelementEnd();\n i0.ɵɵelement(5, \"div\");\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n i0.ɵɵadvance(5);\n i0.ɵɵattribute(\"aria-live\", ctx._live)(\"role\", ctx._role)(\"id\", ctx._liveElementId);\n }\n },\n dependencies: [i3$1.CdkPortalOutlet],\n styles: [\".mdc-snackbar{display:none;position:fixed;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-snackbar--opening,.mdc-snackbar--open,.mdc-snackbar--closing{display:flex}.mdc-snackbar--open .mdc-snackbar__label,.mdc-snackbar--open .mdc-snackbar__actions{visibility:visible}.mdc-snackbar__surface{padding-left:0;padding-right:8px;display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-snackbar__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media screen and (forced-colors: active){.mdc-snackbar__surface::before{border-color:CanvasText}}[dir=rtl] .mdc-snackbar__surface,.mdc-snackbar__surface[dir=rtl]{padding-left:8px;padding-right:0}.mdc-snackbar--open .mdc-snackbar__surface{transform:scale(1);opacity:1;pointer-events:auto}.mdc-snackbar--closing .mdc-snackbar__surface{transform:scale(1)}.mdc-snackbar__label{padding-left:16px;padding-right:8px;width:100%;flex-grow:1;box-sizing:border-box;margin:0;visibility:hidden;padding-top:14px;padding-bottom:14px}[dir=rtl] .mdc-snackbar__label,.mdc-snackbar__label[dir=rtl]{padding-left:8px;padding-right:16px}.mdc-snackbar__label::before{display:inline;content:attr(data-mdc-snackbar-label-text)}.mdc-snackbar__actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box;visibility:hidden}.mdc-snackbar__action+.mdc-snackbar__dismiss{margin-left:8px;margin-right:0}[dir=rtl] .mdc-snackbar__action+.mdc-snackbar__dismiss,.mdc-snackbar__action+.mdc-snackbar__dismiss[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-snack-bar-container{margin:8px;--mdc-snackbar-container-shape:4px;position:static}.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:344px}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:100%}}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container{width:100vw}}.mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:672px}.mat-mdc-snack-bar-container .mdc-snackbar__surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{background-color:var(--mdc-snackbar-container-color)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:var(--mdc-snackbar-container-shape)}.mat-mdc-snack-bar-container .mdc-snackbar__label{color:var(--mdc-snackbar-supporting-text-color)}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-size:var(--mdc-snackbar-supporting-text-size);font-family:var(--mdc-snackbar-supporting-text-font);font-weight:var(--mdc-snackbar-supporting-text-weight);line-height:var(--mdc-snackbar-supporting-text-line-height)}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color);--mat-mdc-button-persistent-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{background-color:currentColor;opacity:.1}.mat-mdc-snack-bar-container .mdc-snackbar__label::before{display:none}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-handset .mdc-snackbar__surface{width:100%}\"],\n encapsulation: 2,\n data: {\n animation: [matSnackBarAnimations.snackBarState]\n }\n });\n}\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSnackBarContainer, [{\n type: Component,\n args: [{\n selector: 'mat-snack-bar-container',\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n animations: [matSnackBarAnimations.snackBarState],\n host: {\n 'class': 'mdc-snackbar mat-mdc-snack-bar-container mdc-snackbar--open',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)'\n },\n template: \"<div class=\\\"mdc-snackbar__surface\\\">\\n <!--\\n This outer label wrapper will have the class `mdc-snackbar__label` applied if\\n the attached template/component does not contain it.\\n -->\\n <div class=\\\"mat-mdc-snack-bar-label\\\" #label>\\n <!-- Initialy holds the snack bar content, will be empty after announcing to screen readers. -->\\n <div aria-hidden=\\\"true\\\">\\n <ng-template cdkPortalOutlet></ng-template>\\n </div>\\n\\n <!-- Will receive the snack bar content from the non-live div, move will happen a short delay after opening -->\\n <div [attr.aria-live]=\\\"_live\\\" [attr.role]=\\\"_role\\\" [attr.id]=\\\"_liveElementId\\\"></div>\\n </div>\\n</div>\\n\",\n styles: [\".mdc-snackbar{display:none;position:fixed;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-snackbar--opening,.mdc-snackbar--open,.mdc-snackbar--closing{display:flex}.mdc-snackbar--open .mdc-snackbar__label,.mdc-snackbar--open .mdc-snackbar__actions{visibility:visible}.mdc-snackbar__surface{padding-left:0;padding-right:8px;display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-snackbar__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media screen and (forced-colors: active){.mdc-snackbar__surface::before{border-color:CanvasText}}[dir=rtl] .mdc-snackbar__surface,.mdc-snackbar__surface[dir=rtl]{padding-left:8px;padding-right:0}.mdc-snackbar--open .mdc-snackbar__surface{transform:scale(1);opacity:1;pointer-events:auto}.mdc-snackbar--closing .mdc-snackbar__surface{transform:scale(1)}.mdc-snackbar__label{padding-left:16px;padding-right:8px;width:100%;flex-grow:1;box-sizing:border-box;margin:0;visibility:hidden;padding-top:14px;padding-bottom:14px}[dir=rtl] .mdc-snackbar__label,.mdc-snackbar__label[dir=rtl]{padding-left:8px;padding-right:16px}.mdc-snackbar__label::before{display:inline;content:attr(data-mdc-snackbar-label-text)}.mdc-snackbar__actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box;visibility:hidden}.mdc-snackbar__action+.mdc-snackbar__dismiss{margin-left:8px;margin-right:0}[dir=rtl] .mdc-snackbar__action+.mdc-snackbar__dismiss,.mdc-snackbar__action+.mdc-snackbar__dismiss[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-snack-bar-container{margin:8px;--mdc-snackbar-container-shape:4px;position:static}.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:344px}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:100%}}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container{width:100vw}}.mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:672px}.mat-mdc-snack-bar-container .mdc-snackbar__surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{background-color:var(--mdc-snackbar-container-color)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:var(--mdc-snackbar-container-shape)}.mat-mdc-snack-bar-container .mdc-snackbar__label{color:var(--mdc-snackbar-supporting-text-color)}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-size:var(--mdc-snackbar-supporting-text-size);font-family:var(--mdc-snackbar-supporting-text-font);font-weight:var(--mdc-snackbar-supporting-text-weight);line-height:var(--mdc-snackbar-supporting-text-line-height)}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color);--mat-mdc-button-persistent-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{background-color:currentColor;opacity:.1}.mat-mdc-snack-bar-container .mdc-snackbar__label::before{display:none}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-handset .mdc-snackbar__surface{width:100%}\"]\n }]\n }], null, {\n _label: [{\n type: ViewChild,\n args: ['label', {\n static: true\n }]\n }]\n });\n})();\nclass MatSnackBarModule {\n static #_ = this.ɵfac = function MatSnackBarModule_Factory(t) {\n return new (t || MatSnackBarModule)();\n };\n static #_2 = this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: MatSnackBarModule,\n declarations: [SimpleSnackBar, MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction],\n imports: [OverlayModule, PortalModule, CommonModule, MatButtonModule, MatCommonModule],\n exports: [MatCommonModule, MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction]\n });\n static #_3 = this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [OverlayModule, PortalModule, CommonModule, MatButtonModule, MatCommonModule, MatCommonModule]\n });\n}\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSnackBarModule, [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, PortalModule, CommonModule, MatButtonModule, MatCommonModule],\n exports: [MatCommonModule, MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction],\n declarations: [SimpleSnackBar, MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction]\n }]\n }], null, null);\n})();\n\n/** @docs-private */\nfunction MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY() {\n return new MatSnackBarConfig();\n}\n/** Injection token that can be used to specify default snack bar. */\nconst MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY\n});\nclass _MatSnackBarBase {\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef() {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n set _openedSnackBarRef(value) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n } else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n constructor(_overlay, _live, _injector, _breakpointObserver, _parentSnackBar, _defaultConfig) {\n this._overlay = _overlay;\n this._live = _live;\n this._injector = _injector;\n this._breakpointObserver = _breakpointObserver;\n this._parentSnackBar = _parentSnackBar;\n this._defaultConfig = _defaultConfig;\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 * 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(component, config) {\n return this._attach(component, config);\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, config) {\n return this._attach(template, config);\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, action = '', config) {\n const _config = {\n ...this._defaultConfig,\n ...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 = {\n message,\n action\n };\n // Since the snack bar has `role=\"alert\"`, we don't\n // want to announce the same message twice.\n if (_config.announcementMessage === message) {\n _config.announcementMessage = undefined;\n }\n return this.openFromComponent(this.simpleSnackBarComponent, _config);\n }\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss() {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\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 * Attaches the snack bar container component to the overlay.\n */\n _attachSnackBarContainer(overlayRef, config) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{\n provide: MatSnackBarConfig,\n useValue: config\n }]\n });\n const containerPortal = new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);\n const containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n _attach(content, userConfig) {\n const config = {\n ...new MatSnackBarConfig(),\n ...this._defaultConfig,\n ...userConfig\n };\n const overlayRef = this._createOverlay(config);\n const container = this._attachSnackBarContainer(overlayRef, config);\n const snackBarRef = new MatSnackBarRef(container, overlayRef);\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null, {\n $implicit: config.data,\n snackBarRef\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(portal);\n // We can't pass this via the injector, because the injector is created earlier.\n snackBarRef.instance = contentRef.instance;\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.HandsetPortrait).pipe(takeUntil(overlayRef.detachments())).subscribe(state => {\n overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\n });\n if (config.announcementMessage) {\n // Wait until the snack bar contents have been announced then deliver this message.\n container._onAnnounce.subscribe(() => {\n this._live.announce(config.announcementMessage, config.politeness);\n });\n }\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n /** Animates the old snack bar out and the new one in. */\n _animateSnackBar(snackBarRef, 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 if (config.announcementMessage) {\n this._live.clear();\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 // 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 /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified snack bar config.\n */\n _createOverlay(config) {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n let positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft = config.horizontalPosition === 'left' || config.horizontalPosition === 'start' && !isRtl || 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 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 * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n _createInjector(config, snackBarRef) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [{\n provide: MatSnackBarRef,\n useValue: snackBarRef\n }, {\n provide: MAT_SNACK_BAR_DATA,\n useValue: config.data\n }]\n });\n }\n static #_ = this.ɵfac = function _MatSnackBarBase_Factory(t) {\n return new (t || _MatSnackBarBase)(i0.ɵɵinject(i1$1.Overlay), i0.ɵɵinject(i2$1.LiveAnnouncer), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i3$2.BreakpointObserver), i0.ɵɵinject(_MatSnackBarBase, 12), i0.ɵɵinject(MAT_SNACK_BAR_DEFAULT_OPTIONS));\n };\n static #_2 = this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: _MatSnackBarBase,\n factory: _MatSnackBarBase.ɵfac\n });\n}\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(_MatSnackBarBase, [{\n type: Injectable\n }], function () {\n return [{\n type: i1$1.Overlay\n }, {\n type: i2$1.LiveAnnouncer\n }, {\n type: i0.Injector\n }, {\n type: i3$2.BreakpointObserver\n }, {\n type: _MatSnackBarBase,\n decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }]\n }, {\n type: MatSnackBarConfig,\n decorators: [{\n type: Inject,\n args: [MAT_SNACK_BAR_DEFAULT_OPTIONS]\n }]\n }];\n }, null);\n})();\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nclass MatSnackBar extends _MatSnackBarBase {\n constructor(overlay, live, injector, breakpointObserver, parentSnackBar, defaultConfig) {\n super(overlay, live, injector, breakpointObserver, parentSnackBar, defaultConfig);\n this.simpleSnackBarComponent = SimpleSnackBar;\n this.snackBarContainerComponent = MatSnackBarContainer;\n this.handsetCssClass = 'mat-mdc-snack-bar-handset';\n }\n static #_ = this.ɵfac = function MatSnackBar_Factory(t) {\n return new (t || MatSnackBar)(i0.ɵɵinject(i1$1.Overlay), i0.ɵɵinject(i2$1.LiveAnnouncer), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i3$2.BreakpointObserver), i0.ɵɵinject(MatSnackBar, 12), i0.ɵɵinject(MAT_SNACK_BAR_DEFAULT_OPTIONS));\n };\n static #_2 = this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MatSnackBar,\n factory: MatSnackBar.ɵfac,\n providedIn: MatSnackBarModule\n });\n}\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(MatSnackBar, [{\n type: Injectable,\n args: [{\n providedIn: MatSnackBarModule\n }]\n }], function () {\n return [{\n type: i1$1.Overlay\n }, {\n type: i2$1.LiveAnnouncer\n }, {\n type: i0.Injector\n }, {\n type: i3$2.BreakpointObserver\n }, {\n type: MatSnackBar,\n decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }]\n }, {\n type: MatSnackBarConfig,\n decorators: [{\n type: Inject,\n args: [MAT_SNACK_BAR_DEFAULT_OPTIONS]\n }]\n }];\n }, null);\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SNACK_BAR_DATA, MAT_SNACK_BAR_DEFAULT_OPTIONS, MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY, MatSnackBar, MatSnackBarAction, MatSnackBarActions, MatSnackBarConfig, MatSnackBarContainer, MatSnackBarLabel, MatSnackBarModule, MatSnackBarRef, SimpleSnackBar, _MatSnackBarBase, _MatSnackBarContainerBase, matSnackBarAnimations };","map":{"version":3,"names":["i0","InjectionToken","Directive","Component","ViewEncapsulation","ChangeDetectionStrategy","Inject","inject","ViewChild","NgModule","Injector","TemplateRef","Injectable","Optional","SkipSelf","Subject","i2","DOCUMENT","CommonModule","i3","MatButtonModule","trigger","state","style","transition","animate","i3$1","BasePortalOutlet","CdkPortalOutlet","PortalModule","ComponentPortal","TemplatePortal","i1","take","takeUntil","i2$1","i3$2","Breakpoints","i1$1","OverlayModule","OverlayConfig","MatCommonModule","SimpleSnackBar_div_2_Template","rf","ctx","_r2","ɵɵgetCurrentView","ɵɵelementStart","ɵɵlistener","SimpleSnackBar_div_2_Template_button_click_1_listener","ɵɵrestoreView","ctx_r1","ɵɵnextContext","ɵɵresetView","action","ɵɵtext","ɵɵelementEnd","ctx_r0","ɵɵadvance","ɵɵtextInterpolate1","data","_c0","MatSnackBarContainer_ng_template_4_Template","MAX_TIMEOUT","Math","pow","MatSnackBarRef","constructor","containerInstance","_overlayRef","_afterDismissed","_afterOpened","_onAction","_dismissedByAction","_onExit","subscribe","_finishDismiss","dismiss","closed","exit","clearTimeout","_durationTimeoutId","dismissWithAction","next","complete","closeWithAction","_dismissAfter","duration","setTimeout","min","_open","dispose","dismissedByAction","afterDismissed","afterOpened","_onEnter","onAction","MAT_SNACK_BAR_DATA","MatSnackBarConfig","politeness","announcementMessage","horizontalPosition","verticalPosition","MatSnackBarLabel","_","ɵfac","MatSnackBarLabel_Factory","t","_2","ɵdir","ɵɵdefineDirective","type","selectors","hostAttrs","ngDevMode","ɵsetClassMetadata","args","selector","host","MatSnackBarActions","MatSnackBarActions_Factory","MatSnackBarAction","MatSnackBarAction_Factory","SimpleSnackBar","snackBarRef","hasAction","SimpleSnackBar_Factory","ɵɵdirectiveInject","ɵcmp","ɵɵdefineComponent","exportAs","decls","vars","consts","template","SimpleSnackBar_Template","ɵɵtemplate","message","ɵɵproperty","dependencies","NgIf","MatButton","styles","encapsulation","changeDetection","None","OnPush","undefined","decorators","matSnackBarAnimations","snackBarState","transform","opacity","uniqueId","_MatSnackBarContainerBase","_ngZone","_elementRef","_changeDetectorRef","_platform","snackBarConfig","_document","_trackedModals","Set","_announceDelay","_destroyed","_onAnnounce","_animationState","_liveElementId","attachDomPortal","portal","_assertNotAttached","result","_portalOutlet","_afterPortalAttached","_live","FIREFOX","_role","attachComponentPortal","attachTemplatePortal","onAnimationEnd","event","fromState","toState","_completeExit","onEnter","run","enter","detectChanges","_screenReaderAnnounce","nativeElement","setAttribute","_announceTimeoutId","ngOnDestroy","_clearFromModals","onMicrotaskEmpty","pipe","element","panelClasses","panelClass","Array","isArray","forEach","cssClass","classList","add","_exposeToModals","id","modals","querySelectorAll","i","length","modal","ariaOwns","getAttribute","indexOf","newValue","replace","trim","removeAttribute","clear","hasAttached","Error","runOutsideAngular","inertElement","querySelector","liveElement","focusedElement","isBrowser","document","activeElement","HTMLElement","contains","appendChild","focus","_MatSnackBarContainerBase_Factory","NgZone","ElementRef","ChangeDetectorRef","Platform","viewQuery","_MatSnackBarContainerBase_Query","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","first","features","ɵɵInheritDefinitionFeature","static","MatSnackBarContainer","label","_label","labelClass","toggle","ɵMatSnackBarContainer_BaseFactory","MatSnackBarContainer_Factory","ɵɵgetInheritedFactory","MatSnackBarContainer_Query","hostVars","hostBindings","MatSnackBarContainer_HostBindings","ɵɵsyntheticHostListener","MatSnackBarContainer_animation_state_done_HostBindingHandler","$event","ɵɵsyntheticHostProperty","MatSnackBarContainer_Template","ɵɵelement","ɵɵattribute","animation","Default","animations","MatSnackBarModule","MatSnackBarModule_Factory","ɵmod","ɵɵdefineNgModule","declarations","imports","exports","_3","ɵinj","ɵɵdefineInjector","MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY","MAT_SNACK_BAR_DEFAULT_OPTIONS","providedIn","factory","_MatSnackBarBase","_openedSnackBarRef","parent","_parentSnackBar","_snackBarRefAtThisLevel","value","_overlay","_injector","_breakpointObserver","_defaultConfig","openFromComponent","component","config","_attach","openFromTemplate","open","_config","simpleSnackBarComponent","_attachSnackBarContainer","overlayRef","userInjector","viewContainerRef","injector","create","providers","provide","useValue","containerPortal","snackBarContainerComponent","containerRef","attach","instance","content","userConfig","_createOverlay","container","$implicit","_createInjector","contentRef","observe","HandsetPortrait","detachments","overlayElement","handsetCssClass","matches","announce","_animateSnackBar","overlayConfig","direction","positionStrategy","position","global","isRtl","isLeft","isRight","left","right","centerHorizontally","top","bottom","_MatSnackBarBase_Factory","ɵɵinject","Overlay","LiveAnnouncer","BreakpointObserver","ɵprov","ɵɵdefineInjectable","token","MatSnackBar","overlay","live","breakpointObserver","parentSnackBar","defaultConfig","MatSnackBar_Factory"],"sources":["C:/FatboarProject/angular-client/node_modules/@angular/material/fesm2022/snack-bar.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, inject, ViewChild, NgModule, Injector, TemplateRef, Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i2 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i3 from '@angular/material/button';\nimport { MatButtonModule } from '@angular/material/button';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i3$1 from '@angular/cdk/portal';\nimport { BasePortalOutlet, CdkPortalOutlet, PortalModule, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport * as i1 from '@angular/cdk/platform';\nimport { take, takeUntil } from 'rxjs/operators';\nimport * as i2$1 from '@angular/cdk/a11y';\nimport * as i3$2 from '@angular/cdk/layout';\nimport { Breakpoints } from '@angular/cdk/layout';\nimport * as i1$1 from '@angular/cdk/overlay';\nimport { OverlayModule, OverlayConfig } from '@angular/cdk/overlay';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nclass MatSnackBarRef {\n constructor(containerInstance, _overlayRef) {\n this._overlayRef = _overlayRef;\n /** Subject for notifying the user that the snack bar has been dismissed. */\n this._afterDismissed = new Subject();\n /** Subject for notifying the user that the snack bar has opened and appeared. */\n this._afterOpened = new Subject();\n /** Subject for notifying the user that the snack bar action was called. */\n this._onAction = new Subject();\n /** Whether the snack bar was dismissed using the action button. */\n this._dismissedByAction = false;\n this.containerInstance = containerInstance;\n containerInstance._onExit.subscribe(() => this._finishDismiss());\n }\n /** Dismisses the snack bar. */\n dismiss() {\n if (!this._afterDismissed.closed) {\n this.containerInstance.exit();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /** Marks the snackbar action clicked. */\n dismissWithAction() {\n if (!this._onAction.closed) {\n this._dismissedByAction = true;\n this._onAction.next();\n this._onAction.complete();\n this.dismiss();\n }\n clearTimeout(this._durationTimeoutId);\n }\n /**\n * Marks the snackbar action clicked.\n * @deprecated Use `dismissWithAction` instead.\n * @breaking-change 8.0.0\n */\n closeWithAction() {\n this.dismissWithAction();\n }\n /** Dismisses the snack bar after some duration */\n _dismissAfter(duration) {\n // Note that we need to cap the duration to the maximum value for setTimeout, because\n // it'll revert to 1 if somebody passes in something greater (e.g. `Infinity`). See #17234.\n this._durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n }\n /** Marks the snackbar as opened */\n _open() {\n if (!this._afterOpened.closed) {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n }\n /** Cleans up the DOM after closing. */\n _finishDismiss() {\n this._overlayRef.dispose();\n if (!this._onAction.closed) {\n this._onAction.complete();\n }\n this._afterDismissed.next({ dismissedByAction: this._dismissedByAction });\n this._afterDismissed.complete();\n this._dismissedByAction = false;\n }\n /** Gets an observable that is notified when the snack bar is finished closing. */\n afterDismissed() {\n return this._afterDismissed;\n }\n /** Gets an observable that is notified when the snack bar has opened and appeared. */\n afterOpened() {\n return this.containerInstance._onEnter;\n }\n /** Gets an observable that is notified when the snack bar action is called. */\n onAction() {\n return this._onAction;\n }\n}\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nconst MAT_SNACK_BAR_DATA = new InjectionToken('MatSnackBarData');\n/**\n * Configuration used when opening a snack-bar.\n */\nclass MatSnackBarConfig {\n constructor() {\n /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n this.politeness = 'assertive';\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 this.announcementMessage = '';\n /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n this.duration = 0;\n /** Data being injected into the child component. */\n this.data = null;\n /** The horizontal position to place the snack bar. */\n this.horizontalPosition = 'center';\n /** The vertical position to place the snack bar. */\n this.verticalPosition = 'bottom';\n }\n}\n\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\nclass MatSnackBarLabel {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.0.0-rc.2\", type: MatSnackBarLabel, selector: \"[matSnackBarLabel]\", host: { classAttribute: \"mat-mdc-snack-bar-label mdc-snackbar__label\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarLabel, decorators: [{\n type: Directive,\n args: [{\n selector: `[matSnackBarLabel]`,\n host: {\n 'class': 'mat-mdc-snack-bar-label mdc-snackbar__label',\n },\n }]\n }] });\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\nclass MatSnackBarActions {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarActions, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.0.0-rc.2\", type: MatSnackBarActions, selector: \"[matSnackBarActions]\", host: { classAttribute: \"mat-mdc-snack-bar-actions mdc-snackbar__actions\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarActions, decorators: [{\n type: Directive,\n args: [{\n selector: `[matSnackBarActions]`,\n host: {\n 'class': 'mat-mdc-snack-bar-actions mdc-snackbar__actions',\n },\n }]\n }] });\n/** Directive that should be applied to each of the snack bar's action buttons. */\nclass MatSnackBarAction {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarAction, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.0.0-rc.2\", type: MatSnackBarAction, selector: \"[matSnackBarAction]\", host: { classAttribute: \"mat-mdc-snack-bar-action mdc-snackbar__action\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarAction, decorators: [{\n type: Directive,\n args: [{\n selector: `[matSnackBarAction]`,\n host: {\n 'class': 'mat-mdc-snack-bar-action mdc-snackbar__action',\n },\n }]\n }] });\n\nclass SimpleSnackBar {\n constructor(snackBarRef, data) {\n this.snackBarRef = snackBarRef;\n this.data = data;\n }\n /** Performs the action on the snack bar. */\n action() {\n this.snackBarRef.dismissWithAction();\n }\n /** If the action button should be shown. */\n get hasAction() {\n return !!this.data.action;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: SimpleSnackBar, deps: [{ token: MatSnackBarRef }, { token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.0.0-rc.2\", type: SimpleSnackBar, selector: \"simple-snack-bar\", host: { classAttribute: \"mat-mdc-simple-snack-bar\" }, exportAs: [\"matSnackBar\"], ngImport: i0, template: \"<div matSnackBarLabel>\\n {{data.message}}\\n</div>\\n\\n<div matSnackBarActions *ngIf=\\\"hasAction\\\">\\n <button mat-button matSnackBarAction (click)=\\\"action()\\\">\\n {{data.action}}\\n </button>\\n</div>\\n\", styles: [\".mat-mdc-simple-snack-bar{display:flex}\"], dependencies: [{ kind: \"directive\", type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { kind: \"component\", type: i3.MatButton, selector: \" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] \", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { kind: \"directive\", type: MatSnackBarLabel, selector: \"[matSnackBarLabel]\" }, { kind: \"directive\", type: MatSnackBarActions, selector: \"[matSnackBarActions]\" }, { kind: \"directive\", type: MatSnackBarAction, selector: \"[matSnackBarAction]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: SimpleSnackBar, decorators: [{\n type: Component,\n args: [{ selector: 'simple-snack-bar', exportAs: 'matSnackBar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n 'class': 'mat-mdc-simple-snack-bar',\n }, template: \"<div matSnackBarLabel>\\n {{data.message}}\\n</div>\\n\\n<div matSnackBarActions *ngIf=\\\"hasAction\\\">\\n <button mat-button matSnackBarAction (click)=\\\"action()\\\">\\n {{data.action}}\\n </button>\\n</div>\\n\", styles: [\".mat-mdc-simple-snack-bar{display:flex}\"] }]\n }], ctorParameters: function () { return [{ type: MatSnackBarRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_SNACK_BAR_DATA]\n }] }]; } });\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nconst matSnackBarAnimations = {\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\nlet uniqueId = 0;\n/**\n * Base class for snack bar containers.\n * @docs-private\n */\nclass _MatSnackBarContainerBase extends BasePortalOutlet {\n constructor(_ngZone, _elementRef, _changeDetectorRef, _platform, \n /** The snack bar configuration. */\n snackBarConfig) {\n super();\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._platform = _platform;\n this.snackBarConfig = snackBarConfig;\n this._document = inject(DOCUMENT);\n this._trackedModals = new Set();\n /** The number of milliseconds to wait before announcing the snack bar's content. */\n this._announceDelay = 150;\n /** Whether the component has been destroyed. */\n this._destroyed = false;\n /** Subject for notifying that the snack bar has announced to screen readers. */\n this._onAnnounce = new Subject();\n /** Subject for notifying that the snack bar has exited from view. */\n this._onExit = new Subject();\n /** Subject for notifying that the snack bar has finished entering the view. */\n this._onEnter = new Subject();\n /** The state of the snack bar animations. */\n this._animationState = 'void';\n /** Unique ID of the aria-live element. */\n this._liveElementId = `mat-snack-bar-container-live-${uniqueId++}`;\n /**\n * Attaches a DOM portal to the snack bar container.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n this._assertNotAttached();\n const result = this._portalOutlet.attachDomPortal(portal);\n this._afterPortalAttached();\n return result;\n };\n // Use aria-live rather than a live role like 'alert' or 'status'\n // because NVDA and JAWS have show inconsistent behavior with live roles.\n if (snackBarConfig.politeness === 'assertive' && !snackBarConfig.announcementMessage) {\n this._live = 'assertive';\n }\n else if (snackBarConfig.politeness === 'off') {\n this._live = 'off';\n }\n else {\n this._live = 'polite';\n }\n // Only set role for Firefox. Set role based on aria-live because setting role=\"alert\" implies\n // aria-live=\"assertive\" which may cause issues if aria-live is set to \"polite\" above.\n if (this._platform.FIREFOX) {\n if (this._live === 'polite') {\n this._role = 'status';\n }\n if (this._live === 'assertive') {\n this._role = 'alert';\n }\n }\n }\n /** Attach a component portal as content to this snack bar container. */\n attachComponentPortal(portal) {\n this._assertNotAttached();\n const result = this._portalOutlet.attachComponentPortal(portal);\n this._afterPortalAttached();\n return result;\n }\n /** Attach a template portal as content to this snack bar container. */\n attachTemplatePortal(portal) {\n this._assertNotAttached();\n const result = this._portalOutlet.attachTemplatePortal(portal);\n this._afterPortalAttached();\n return result;\n }\n /** Handle end of animations, updating the state of the snackbar. */\n onAnimationEnd(event) {\n const { fromState, toState } = event;\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\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 this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n /** Begin animation of snack bar entrance into view. */\n enter() {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n this._screenReaderAnnounce();\n }\n }\n /** Begin animation of the snack bar exiting from view. */\n exit() {\n // It's common for snack bars to be opened by random outside calls like HTTP requests or\n // errors. Run inside the NgZone to ensure that it functions correctly.\n this._ngZone.run(() => {\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 // Mark this element with an 'exit' attribute to indicate that the snackbar has\n // been dismissed and will soon be removed from the DOM. This is used by the snackbar\n // test harness.\n this._elementRef.nativeElement.setAttribute('mat-exit', '');\n // If the snack bar hasn't been announced by the time it exits it wouldn't have been open\n // long enough to visually read it either, so clear the timeout for announcing.\n clearTimeout(this._announceTimeoutId);\n });\n return this._onExit;\n }\n /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n ngOnDestroy() {\n this._destroyed = true;\n this._clearFromModals();\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 */\n _completeExit() {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n this._ngZone.run(() => {\n this._onExit.next();\n this._onExit.complete();\n });\n });\n }\n /**\n * Called after the portal contents have been attached. Can be\n * used to modify the DOM once it's guaranteed to be in place.\n */\n _afterPortalAttached() {\n const element = this._elementRef.nativeElement;\n const panelClasses = this.snackBarConfig.panelClass;\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 }\n else {\n element.classList.add(panelClasses);\n }\n }\n this._exposeToModals();\n }\n /**\n * Some browsers won't expose the accessibility node of the live element if there is an\n * `aria-modal` and the live element is outside of it. This method works around the issue by\n * pointing the `aria-owns` of all modals to the live element.\n */\n _exposeToModals() {\n // TODO(crisbeto): consider de-duplicating this with the `LiveAnnouncer`.\n // Note that the selector here is limited to CDK overlays at the moment in order to reduce the\n // section of the DOM we need to look through. This should cover all the cases we support, but\n // the selector can be expanded if it turns out to be too narrow.\n const id = this._liveElementId;\n const modals = this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal=\"true\"]');\n for (let i = 0; i < modals.length; i++) {\n const modal = modals[i];\n const ariaOwns = modal.getAttribute('aria-owns');\n this._trackedModals.add(modal);\n if (!ariaOwns) {\n modal.setAttribute('aria-owns', id);\n }\n else if (ariaOwns.indexOf(id) === -1) {\n modal.setAttribute('aria-owns', ariaOwns + ' ' + id);\n }\n }\n }\n /** Clears the references to the live element from any modals it was added to. */\n _clearFromModals() {\n this._trackedModals.forEach(modal => {\n const ariaOwns = modal.getAttribute('aria-owns');\n if (ariaOwns) {\n const newValue = ariaOwns.replace(this._liveElementId, '').trim();\n if (newValue.length > 0) {\n modal.setAttribute('aria-owns', newValue);\n }\n else {\n modal.removeAttribute('aria-owns');\n }\n }\n });\n this._trackedModals.clear();\n }\n /** Asserts that no content is already attached to the container. */\n _assertNotAttached() {\n if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Attempting to attach snack bar content after content is already attached');\n }\n }\n /**\n * Starts a timeout to move the snack bar content to the live region so screen readers will\n * announce it.\n */\n _screenReaderAnnounce() {\n if (!this._announceTimeoutId) {\n this._ngZone.runOutsideAngular(() => {\n this._announceTimeoutId = setTimeout(() => {\n const inertElement = this._elementRef.nativeElement.querySelector('[aria-hidden]');\n const liveElement = this._elementRef.nativeElement.querySelector('[aria-live]');\n if (inertElement && liveElement) {\n // If an element in the snack bar content is focused before being moved\n // track it and restore focus after moving to the live region.\n let focusedElement = null;\n if (this._platform.isBrowser &&\n document.activeElement instanceof HTMLElement &&\n inertElement.contains(document.activeElement)) {\n focusedElement = document.activeElement;\n }\n inertElement.removeAttribute('aria-hidden');\n liveElement.appendChild(inertElement);\n focusedElement?.focus();\n this._onAnnounce.next();\n this._onAnnounce.complete();\n }\n }, this._announceDelay);\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: _MatSnackBarContainerBase, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Platform }, { token: MatSnackBarConfig }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"16.0.0-rc.2\", type: _MatSnackBarContainerBase, viewQueries: [{ propertyName: \"_portalOutlet\", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: _MatSnackBarContainerBase, decorators: [{\n type: Directive\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.Platform }, { type: MatSnackBarConfig }]; }, propDecorators: { _portalOutlet: [{\n type: ViewChild,\n args: [CdkPortalOutlet, { static: true }]\n }] } });\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\nclass MatSnackBarContainer extends _MatSnackBarContainerBase {\n /** Applies the correct CSS class to the label based on its content. */\n _afterPortalAttached() {\n super._afterPortalAttached();\n // Check to see if the attached component or template uses the MDC template structure,\n // specifically the MDC label. If not, the container should apply the MDC label class to this\n // component's label container, which will apply MDC's label styles to the attached view.\n const label = this._label.nativeElement;\n const labelClass = 'mdc-snackbar__label';\n label.classList.toggle(labelClass, !label.querySelector(`.${labelClass}`));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarContainer, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"16.0.0-rc.2\", type: MatSnackBarContainer, selector: \"mat-snack-bar-container\", host: { listeners: { \"@state.done\": \"onAnimationEnd($event)\" }, properties: { \"@state\": \"_animationState\" }, classAttribute: \"mdc-snackbar mat-mdc-snack-bar-container mdc-snackbar--open\" }, viewQueries: [{ propertyName: \"_label\", first: true, predicate: [\"label\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"mdc-snackbar__surface\\\">\\n <!--\\n This outer label wrapper will have the class `mdc-snackbar__label` applied if\\n the attached template/component does not contain it.\\n -->\\n <div class=\\\"mat-mdc-snack-bar-label\\\" #label>\\n <!-- Initialy holds the snack bar content, will be empty after announcing to screen readers. -->\\n <div aria-hidden=\\\"true\\\">\\n <ng-template cdkPortalOutlet></ng-template>\\n </div>\\n\\n <!-- Will receive the snack bar content from the non-live div, move will happen a short delay after opening -->\\n <div [attr.aria-live]=\\\"_live\\\" [attr.role]=\\\"_role\\\" [attr.id]=\\\"_liveElementId\\\"></div>\\n </div>\\n</div>\\n\", styles: [\".mdc-snackbar{display:none;position:fixed;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-snackbar--opening,.mdc-snackbar--open,.mdc-snackbar--closing{display:flex}.mdc-snackbar--open .mdc-snackbar__label,.mdc-snackbar--open .mdc-snackbar__actions{visibility:visible}.mdc-snackbar__surface{padding-left:0;padding-right:8px;display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-snackbar__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media screen and (forced-colors: active){.mdc-snackbar__surface::before{border-color:CanvasText}}[dir=rtl] .mdc-snackbar__surface,.mdc-snackbar__surface[dir=rtl]{padding-left:8px;padding-right:0}.mdc-snackbar--open .mdc-snackbar__surface{transform:scale(1);opacity:1;pointer-events:auto}.mdc-snackbar--closing .mdc-snackbar__surface{transform:scale(1)}.mdc-snackbar__label{padding-left:16px;padding-right:8px;width:100%;flex-grow:1;box-sizing:border-box;margin:0;visibility:hidden;padding-top:14px;padding-bottom:14px}[dir=rtl] .mdc-snackbar__label,.mdc-snackbar__label[dir=rtl]{padding-left:8px;padding-right:16px}.mdc-snackbar__label::before{display:inline;content:attr(data-mdc-snackbar-label-text)}.mdc-snackbar__actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box;visibility:hidden}.mdc-snackbar__action+.mdc-snackbar__dismiss{margin-left:8px;margin-right:0}[dir=rtl] .mdc-snackbar__action+.mdc-snackbar__dismiss,.mdc-snackbar__action+.mdc-snackbar__dismiss[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-snack-bar-container{margin:8px;--mdc-snackbar-container-shape:4px;position:static}.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:344px}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:100%}}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container{width:100vw}}.mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:672px}.mat-mdc-snack-bar-container .mdc-snackbar__surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{background-color:var(--mdc-snackbar-container-color)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:var(--mdc-snackbar-container-shape)}.mat-mdc-snack-bar-container .mdc-snackbar__label{color:var(--mdc-snackbar-supporting-text-color)}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-size:var(--mdc-snackbar-supporting-text-size);font-family:var(--mdc-snackbar-supporting-text-font);font-weight:var(--mdc-snackbar-supporting-text-weight);line-height:var(--mdc-snackbar-supporting-text-line-height)}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color);--mat-mdc-button-persistent-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{background-color:currentColor;opacity:.1}.mat-mdc-snack-bar-container .mdc-snackbar__label::before{display:none}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-handset .mdc-snackbar__surface{width:100%}\"], dependencies: [{ kind: \"directive\", type: i3$1.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }], animations: [matSnackBarAnimations.snackBarState], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarContainer, decorators: [{\n type: Component,\n args: [{ selector: 'mat-snack-bar-container', changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, animations: [matSnackBarAnimations.snackBarState], host: {\n 'class': 'mdc-snackbar mat-mdc-snack-bar-container mdc-snackbar--open',\n '[@state]': '_animationState',\n '(@state.done)': 'onAnimationEnd($event)',\n }, template: \"<div class=\\\"mdc-snackbar__surface\\\">\\n <!--\\n This outer label wrapper will have the class `mdc-snackbar__label` applied if\\n the attached template/component does not contain it.\\n -->\\n <div class=\\\"mat-mdc-snack-bar-label\\\" #label>\\n <!-- Initialy holds the snack bar content, will be empty after announcing to screen readers. -->\\n <div aria-hidden=\\\"true\\\">\\n <ng-template cdkPortalOutlet></ng-template>\\n </div>\\n\\n <!-- Will receive the snack bar content from the non-live div, move will happen a short delay after opening -->\\n <div [attr.aria-live]=\\\"_live\\\" [attr.role]=\\\"_role\\\" [attr.id]=\\\"_liveElementId\\\"></div>\\n </div>\\n</div>\\n\", styles: [\".mdc-snackbar{display:none;position:fixed;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-snackbar--opening,.mdc-snackbar--open,.mdc-snackbar--closing{display:flex}.mdc-snackbar--open .mdc-snackbar__label,.mdc-snackbar--open .mdc-snackbar__actions{visibility:visible}.mdc-snackbar__surface{padding-left:0;padding-right:8px;display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-snackbar__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:\\\"\\\";pointer-events:none}@media screen and (forced-colors: active){.mdc-snackbar__surface::before{border-color:CanvasText}}[dir=rtl] .mdc-snackbar__surface,.mdc-snackbar__surface[dir=rtl]{padding-left:8px;padding-right:0}.mdc-snackbar--open .mdc-snackbar__surface{transform:scale(1);opacity:1;pointer-events:auto}.mdc-snackbar--closing .mdc-snackbar__surface{transform:scale(1)}.mdc-snackbar__label{padding-left:16px;padding-right:8px;width:100%;flex-grow:1;box-sizing:border-box;margin:0;visibility:hidden;padding-top:14px;padding-bottom:14px}[dir=rtl] .mdc-snackbar__label,.mdc-snackbar__label[dir=rtl]{padding-left:8px;padding-right:16px}.mdc-snackbar__label::before{display:inline;content:attr(data-mdc-snackbar-label-text)}.mdc-snackbar__actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box;visibility:hidden}.mdc-snackbar__action+.mdc-snackbar__dismiss{margin-left:8px;margin-right:0}[dir=rtl] .mdc-snackbar__action+.mdc-snackbar__dismiss,.mdc-snackbar__action+.mdc-snackbar__dismiss[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-snack-bar-container{margin:8px;--mdc-snackbar-container-shape:4px;position:static}.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:344px}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:100%}}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container{width:100vw}}.mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:672px}.mat-mdc-snack-bar-container .mdc-snackbar__surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{background-color:var(--mdc-snackbar-container-color)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:var(--mdc-snackbar-container-shape)}.mat-mdc-snack-bar-container .mdc-snackbar__label{color:var(--mdc-snackbar-supporting-text-color)}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-size:var(--mdc-snackbar-supporting-text-size);font-family:var(--mdc-snackbar-supporting-text-font);font-weight:var(--mdc-snackbar-supporting-text-weight);line-height:var(--mdc-snackbar-supporting-text-line-height)}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color);--mat-mdc-button-persistent-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{background-color:currentColor;opacity:.1}.mat-mdc-snack-bar-container .mdc-snackbar__label::before{display:none}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-handset .mdc-snackbar__surface{width:100%}\"] }]\n }], propDecorators: { _label: [{\n type: ViewChild,\n args: ['label', { static: true }]\n }] } });\n\nclass MatSnackBarModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarModule, declarations: [SimpleSnackBar,\n MatSnackBarContainer,\n MatSnackBarLabel,\n MatSnackBarActions,\n MatSnackBarAction], imports: [OverlayModule, PortalModule, CommonModule, MatButtonModule, MatCommonModule], exports: [MatCommonModule,\n MatSnackBarContainer,\n MatSnackBarLabel,\n MatSnackBarActions,\n MatSnackBarAction] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarModule, imports: [OverlayModule, PortalModule, CommonModule, MatButtonModule, MatCommonModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [OverlayModule, PortalModule, CommonModule, MatButtonModule, MatCommonModule],\n exports: [\n MatCommonModule,\n MatSnackBarContainer,\n MatSnackBarLabel,\n MatSnackBarActions,\n MatSnackBarAction,\n ],\n declarations: [\n SimpleSnackBar,\n MatSnackBarContainer,\n MatSnackBarLabel,\n MatSnackBarActions,\n MatSnackBarAction,\n ],\n }]\n }] });\n\n/** @docs-private */\nfunction MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY() {\n return new MatSnackBarConfig();\n}\n/** Injection token that can be used to specify default snack bar. */\nconst MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken('mat-snack-bar-default-options', {\n providedIn: 'root',\n factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY,\n});\nclass _MatSnackBarBase {\n /** Reference to the currently opened snackbar at *any* level. */\n get _openedSnackBarRef() {\n const parent = this._parentSnackBar;\n return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n }\n set _openedSnackBarRef(value) {\n if (this._parentSnackBar) {\n this._parentSnackBar._openedSnackBarRef = value;\n }\n else {\n this._snackBarRefAtThisLevel = value;\n }\n }\n constructor(_overlay, _live, _injector, _breakpointObserver, _parentSnackBar, _defaultConfig) {\n this._overlay = _overlay;\n this._live = _live;\n this._injector = _injector;\n this._breakpointObserver = _breakpointObserver;\n this._parentSnackBar = _parentSnackBar;\n this._defaultConfig = _defaultConfig;\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 * 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(component, config) {\n return this._attach(component, config);\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, config) {\n return this._attach(template, config);\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, action = '', config) {\n const _config = { ...this._defaultConfig, ...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 // Since the snack bar has `role=\"alert\"`, we don't\n // want to announce the same message twice.\n if (_config.announcementMessage === message) {\n _config.announcementMessage = undefined;\n }\n return this.openFromComponent(this.simpleSnackBarComponent, _config);\n }\n /**\n * Dismisses the currently-visible snack bar.\n */\n dismiss() {\n if (this._openedSnackBarRef) {\n this._openedSnackBarRef.dismiss();\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 * Attaches the snack bar container component to the overlay.\n */\n _attachSnackBarContainer(overlayRef, config) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = Injector.create({\n parent: userInjector || this._injector,\n providers: [{ provide: MatSnackBarConfig, useValue: config }],\n });\n const containerPortal = new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);\n const containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.snackBarConfig = config;\n return containerRef.instance;\n }\n /**\n * Places a new component or a template as the content of the snack bar container.\n */\n _attach(content, userConfig) {\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(container, overlayRef);\n if (content instanceof TemplateRef) {\n const portal = new TemplatePortal(content, null, {\n $implicit: config.data,\n snackBarRef,\n });\n snackBarRef.instance = container.attachTemplatePortal(portal);\n }\n else {\n const injector = this._createInjector(config, snackBarRef);\n const portal = new ComponentPortal(content, undefined, injector);\n const 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 }\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\n .observe(Breakpoints.HandsetPortrait)\n .pipe(takeUntil(overlayRef.detachments()))\n .subscribe(state => {\n overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\n });\n if (config.announcementMessage) {\n // Wait until the snack bar contents have been announced then deliver this message.\n container._onAnnounce.subscribe(() => {\n this._live.announce(config.announcementMessage, config.politeness);\n });\n }\n this._animateSnackBar(snackBarRef, config);\n this._openedSnackBarRef = snackBarRef;\n return this._openedSnackBarRef;\n }\n /** Animates the old snack bar out and the new one in. */\n _animateSnackBar(snackBarRef, 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 if (config.announcementMessage) {\n this._live.clear();\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(config.duration));\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 _createOverlay(config) {\n const overlayConfig = new OverlayConfig();\n overlayConfig.direction = config.direction;\n let positionStrategy = this._overlay.position().global();\n // Set horizontal position.\n const isRtl = config.direction === 'rtl';\n const isLeft = 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 }\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 * @param config Config that was used to create the snack bar.\n * @param snackBarRef Reference to the snack bar.\n */\n _createInjector(config, snackBarRef) {\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n return Injector.create({\n parent: userInjector || this._injector,\n providers: [\n { provide: MatSnackBarRef, useValue: snackBarRef },\n { provide: MAT_SNACK_BAR_DATA, useValue: config.data },\n ],\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: _MatSnackBarBase, deps: [{ token: i1$1.Overlay }, { token: i2$1.LiveAnnouncer }, { token: i0.Injector }, { token: i3$2.BreakpointObserver }, { token: _MatSnackBarBase, optional: true, skipSelf: true }, { token: MAT_SNACK_BAR_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: _MatSnackBarBase }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: _MatSnackBarBase, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i2$1.LiveAnnouncer }, { type: i0.Injector }, { type: i3$2.BreakpointObserver }, { type: _MatSnackBarBase, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: MatSnackBarConfig, decorators: [{\n type: Inject,\n args: [MAT_SNACK_BAR_DEFAULT_OPTIONS]\n }] }]; } });\n/**\n * Service to dispatch Material Design snack bar messages.\n */\nclass MatSnackBar extends _MatSnackBarBase {\n constructor(overlay, live, injector, breakpointObserver, parentSnackBar, defaultConfig) {\n super(overlay, live, injector, breakpointObserver, parentSnackBar, defaultConfig);\n this.simpleSnackBarComponent = SimpleSnackBar;\n this.snackBarContainerComponent = MatSnackBarContainer;\n this.handsetCssClass = 'mat-mdc-snack-bar-handset';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBar, deps: [{ token: i1$1.Overlay }, { token: i2$1.LiveAnnouncer }, { token: i0.Injector }, { token: i3$2.BreakpointObserver }, { token: MatSnackBar, optional: true, skipSelf: true }, { token: MAT_SNACK_BAR_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBar, providedIn: MatSnackBarModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"16.0.0-rc.2\", ngImport: i0, type: MatSnackBar, decorators: [{\n type: Injectable,\n args: [{ providedIn: MatSnackBarModule }]\n }], ctorParameters: function () { return [{ type: i1$1.Overlay }, { type: i2$1.LiveAnnouncer }, { type: i0.Injector }, { type: i3$2.BreakpointObserver }, { type: MatSnackBar, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: MatSnackBarConfig, decorators: [{\n type: Inject,\n args: [MAT_SNACK_BAR_DEFAULT_OPTIONS]\n }] }]; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_SNACK_BAR_DATA, MAT_SNACK_BAR_DEFAULT_OPTIONS, MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY, MatSnackBar, MatSnackBarAction, MatSnackBarActions, MatSnackBarConfig, MatSnackBarContainer, MatSnackBarLabel, MatSnackBarModule, MatSnackBarRef, SimpleSnackBar, _MatSnackBarBase, _MatSnackBarContainerBase, matSnackBarAnimations };\n"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}
|