Ignore:
Timestamp:
11/25/21 22:08:24 (3 years ago)
Author:
Ema <ema_spirova@…>
Branches:
master
Children:
8d391a1
Parents:
59329aa
Message:

primeNG components

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trip-planner-front/node_modules/@angular/material/fesm2015/snack-bar.js.map

    r59329aa re29cc2e  
    1 {"version":3,"file":"snack-bar.js","sources":["../../../../../../src/material/snack-bar/snack-bar-config.ts","../../../../../../src/material/snack-bar/snack-bar-ref.ts","../../../../../../src/material/snack-bar/simple-snack-bar.ts","../../../../../../src/material/snack-bar/snack-bar-animations.ts","../../../../../../src/material/snack-bar/snack-bar-container.ts","../../../../../../src/material/snack-bar/snack-bar-module.ts","../../../../../../src/material/snack-bar/snack-bar.ts","../../../../../../src/material/snack-bar/public-api.ts","../../../../../../src/material/snack-bar/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ViewContainerRef, InjectionToken} from '@angular/core';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const MAT_SNACK_BAR_DATA = new InjectionToken<any>('MatSnackBarData');\n\n/** Possible values for horizontalPosition on MatSnackBarConfig. */\nexport type MatSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\n\n/** Possible values for verticalPosition on MatSnackBarConfig. */\nexport type MatSnackBarVerticalPosition = 'top' | 'bottom';\n\n/**\n * Configuration used when opening a snack-bar.\n */\nexport class MatSnackBarConfig<D = any> {\n  /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n  politeness?: AriaLivePoliteness = 'assertive';\n\n  /**\n   * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n   * component or template, the announcement message will default to the specified message.\n   */\n  announcementMessage?: string = '';\n\n  /**\n   * The view container that serves as the parent for the snackbar for the purposes of dependency\n   * injection. Note: this does not affect where the snackbar is inserted in the DOM.\n   */\n  viewContainerRef?: ViewContainerRef;\n\n  /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n  duration?: number = 0;\n\n  /** Extra CSS classes to be added to the snack bar container. */\n  panelClass?: string | string[];\n\n  /** Text layout direction for the snack bar. */\n  direction?: Direction;\n\n  /** Data being injected into the child component. */\n  data?: D | null = null;\n\n  /** The horizontal position to place the snack bar. */\n  horizontalPosition?: MatSnackBarHorizontalPosition = 'center';\n\n  /** The vertical position to place the snack bar. */\n  verticalPosition?: MatSnackBarVerticalPosition = 'bottom';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {_SnackBarContainer} from './snack-bar-container';\n\n\n/** Event that is emitted when a snack bar is dismissed. */\nexport interface MatSnackBarDismiss {\n  /** Whether the snack bar was dismissed using the action button. */\n  dismissedByAction: boolean;\n}\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nexport class MatSnackBarRef<T> {\n  /** The instance of the component making up the content of the snack bar. */\n  instance: T;\n\n  /**\n   * The instance of the component making up the content of the snack bar.\n   * @docs-private\n   */\n  containerInstance: _SnackBarContainer;\n\n  /** Subject for notifying the user that the snack bar has been dismissed. */\n  private readonly _afterDismissed = new Subject<MatSnackBarDismiss>();\n\n  /** Subject for notifying the user that the snack bar has opened and appeared. */\n  private readonly _afterOpened = new Subject<void>();\n\n  /** Subject for notifying the user that the snack bar action was called. */\n  private readonly _onAction = new Subject<void>();\n\n  /**\n   * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n   * dismissed before the duration passes.\n   */\n  private _durationTimeoutId: any;\n\n  /** Whether the snack bar was dismissed using the action button. */\n  private _dismissedByAction = false;\n\n  constructor(containerInstance: _SnackBarContainer,\n              private _overlayRef: OverlayRef) {\n    this.containerInstance = containerInstance;\n    // Dismiss snackbar on action.\n    this.onAction().subscribe(() => this.dismiss());\n    containerInstance._onExit.subscribe(() => this._finishDismiss());\n  }\n\n  /** Dismisses the snack bar. */\n  dismiss(): void {\n    if (!this._afterDismissed.closed) {\n      this.containerInstance.exit();\n    }\n    clearTimeout(this._durationTimeoutId);\n  }\n\n  /** Marks the snackbar action clicked. */\n  dismissWithAction(): void {\n    if (!this._onAction.closed) {\n      this._dismissedByAction = true;\n      this._onAction.next();\n      this._onAction.complete();\n    }\n    clearTimeout(this._durationTimeoutId);\n  }\n\n\n  /**\n   * Marks the snackbar action clicked.\n   * @deprecated Use `dismissWithAction` instead.\n   * @breaking-change 8.0.0\n   */\n  closeWithAction(): void {\n    this.dismissWithAction();\n  }\n\n  /** Dismisses the snack bar after some duration */\n  _dismissAfter(duration: number): void {\n    // 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\n  /** Marks the snackbar as opened */\n  _open(): void {\n    if (!this._afterOpened.closed) {\n      this._afterOpened.next();\n      this._afterOpened.complete();\n    }\n  }\n\n  /** Cleans up the DOM after closing. */\n  private _finishDismiss(): void {\n    this._overlayRef.dispose();\n\n    if (!this._onAction.closed) {\n      this._onAction.complete();\n    }\n\n    this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\n    this._afterDismissed.complete();\n    this._dismissedByAction = false;\n  }\n\n  /** Gets an observable that is notified when the snack bar is finished closing. */\n  afterDismissed(): Observable<MatSnackBarDismiss> {\n    return this._afterDismissed;\n  }\n\n  /** Gets an observable that is notified when the snack bar has opened and appeared. */\n  afterOpened(): Observable<void> {\n    return this.containerInstance._onEnter;\n  }\n\n  /** Gets an observable that is notified when the snack bar action is called. */\n  onAction(): Observable<void> {\n    return this._onAction;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ChangeDetectionStrategy, Component, Inject, ViewEncapsulation} from '@angular/core';\nimport {MAT_SNACK_BAR_DATA} from './snack-bar-config';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/**\n * Interface for a simple snack bar component that has a message and a single action.\n */\nexport interface TextOnlySnackBar {\n  data: {message: string, action: string};\n  snackBarRef: MatSnackBarRef<TextOnlySnackBar>;\n  action: () => void;\n  hasAction: boolean;\n}\n\n/**\n * A component used to open as the default snack bar, matching material spec.\n * This should only be used internally by the snack bar service.\n */\n@Component({\n  selector: 'simple-snack-bar',\n  templateUrl: 'simple-snack-bar.html',\n  styleUrls: ['simple-snack-bar.css'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'class': 'mat-simple-snackbar',\n  }\n})\nexport class SimpleSnackBar implements TextOnlySnackBar {\n  /** Data that was injected into the snack bar. */\n  data: {message: string, action: string};\n\n  constructor(\n    public snackBarRef: MatSnackBarRef<SimpleSnackBar>,\n    @Inject(MAT_SNACK_BAR_DATA) data: any) {\n    this.data = data;\n  }\n\n  /** Performs the action on the snack bar. */\n  action(): void {\n    this.snackBarRef.dismissWithAction();\n  }\n\n  /** If the action button should be shown. */\n  get hasAction(): boolean {\n    return !!this.data.action;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nexport const matSnackBarAnimations: {\n  readonly snackBarState: AnimationTriggerMetadata;\n} = {\n  /** Animation that shows and hides a snack bar. */\n  snackBarState: trigger('state', [\n    state('void, hidden', style({\n      transform: 'scale(0.8)',\n      opacity: 0,\n    })),\n    state('visible', style({\n      transform: 'scale(1)',\n      opacity: 1,\n    })),\n    transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n    transition('* => void, * => hidden', animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', style({\n      opacity: 0\n    }))),\n  ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AnimationEvent} from '@angular/animations';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  BasePortalOutlet,\n  CdkPortalOutlet,\n  ComponentPortal,\n  TemplatePortal,\n  DomPortal,\n} from '@angular/cdk/portal';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  NgZone,\n  OnDestroy,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {matSnackBarAnimations} from './snack-bar-animations';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\n/**\n * Internal interface for a snack bar container.\n * @docs-private\n */\nexport interface _SnackBarContainer {\n  snackBarConfig: MatSnackBarConfig;\n  readonly _onAnnounce: Subject<any>;\n  readonly _onExit: Subject<any>;\n  readonly _onEnter: Subject<any>;\n  enter: () => void;\n  exit: () => Observable<void>;\n  attachTemplatePortal: <C>(portal: TemplatePortal<C>) => EmbeddedViewRef<C>;\n  attachComponentPortal: <T>(portal: ComponentPortal<T>) => ComponentRef<T>;\n}\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\n@Component({\n  selector: 'snack-bar-container',\n  templateUrl: 'snack-bar-container.html',\n  styleUrls: ['snack-bar-container.css'],\n  // In Ivy embedded views will be change detected from their declaration place, rather than\n  // where they were stamped out. This means that we can't have the snack bar container be OnPush,\n  // because it might cause snack bars that were opened from a template not to be out of date.\n  // tslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  encapsulation: ViewEncapsulation.None,\n  animations: [matSnackBarAnimations.snackBarState],\n  host: {\n    'class': 'mat-snack-bar-container',\n    '[@state]': '_animationState',\n    '(@state.done)': 'onAnimationEnd($event)'\n  },\n})\nexport class MatSnackBarContainer extends BasePortalOutlet\n    implements OnDestroy, _SnackBarContainer {\n  /** The number of milliseconds to wait before announcing the snack bar's content. */\n  private readonly _announceDelay: number = 150;\n\n  /** The timeout for announcing the snack bar's content. */\n  private _announceTimeoutId: any;\n\n  /** Whether the component has been destroyed. */\n  private _destroyed = false;\n\n  /** The portal outlet inside of this container into which the snack bar content will be loaded. */\n  @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n  /** Subject for notifying that the snack bar has announced to screen readers. */\n  readonly _onAnnounce: Subject<void> = new Subject();\n\n  /** Subject for notifying that the snack bar has exited from view. */\n  readonly _onExit: Subject<void> = new Subject();\n\n  /** Subject for notifying that the snack bar has finished entering the view. */\n  readonly _onEnter: Subject<void> = new Subject();\n\n  /** The state of the snack bar animations. */\n  _animationState = 'void';\n\n  /** aria-live value for the live region. */\n  _live: AriaLivePoliteness;\n\n  /**\n   * Role of the live region. This is only for Firefox as there is a known issue where Firefox +\n   * JAWS does not read out aria-live message.\n   */\n  _role?: 'status' | 'alert';\n\n  constructor(\n    private _ngZone: NgZone,\n    private _elementRef: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _platform: Platform,\n    /** The snack bar configuration. */\n    public snackBarConfig: MatSnackBarConfig) {\n\n    super();\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\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\n  /** Attach a component portal as content to this snack bar container. */\n  attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    this._assertNotAttached();\n    this._applySnackBarClasses();\n    return this._portalOutlet.attachComponentPortal(portal);\n  }\n\n  /** Attach a template portal as content to this snack bar container. */\n  attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    this._assertNotAttached();\n    this._applySnackBarClasses();\n    return this._portalOutlet.attachTemplatePortal(portal);\n  }\n\n  /**\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  override attachDomPortal = (portal: DomPortal) => {\n    this._assertNotAttached();\n    this._applySnackBarClasses();\n    return this._portalOutlet.attachDomPortal(portal);\n  }\n\n  /** Handle end of animations, updating the state of the snackbar. */\n  onAnimationEnd(event: AnimationEvent) {\n    const {fromState, toState} = event;\n\n    if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n      this._completeExit();\n    }\n\n    if (toState === 'visible') {\n      // Note: we shouldn't use `this` inside the zone callback,\n      // because it can cause a memory leak.\n      const onEnter = this._onEnter;\n\n      this._ngZone.run(() => {\n        onEnter.next();\n        onEnter.complete();\n      });\n    }\n  }\n\n  /** Begin animation of snack bar entrance into view. */\n  enter(): void {\n    if (!this._destroyed) {\n      this._animationState = 'visible';\n      this._changeDetectorRef.detectChanges();\n      this._screenReaderAnnounce();\n    }\n  }\n\n  /** Begin animation of the snack bar exiting from view. */\n  exit(): Observable<void> {\n    // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n    // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n    // `MatSnackBar.open`).\n    this._animationState = 'hidden';\n\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\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\n  /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n  ngOnDestroy() {\n    this._destroyed = true;\n    this._completeExit();\n  }\n\n  /**\n   * Waits for the zone to settle before removing the element. Helps prevent\n   * errors where we end up removing an element which is in the middle of an animation.\n   */\n  private _completeExit() {\n    this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n      this._onExit.next();\n      this._onExit.complete();\n    });\n  }\n\n  /** Applies the various positioning and user-configured CSS classes to the snack bar. */\n  private _applySnackBarClasses() {\n    const element: HTMLElement = this._elementRef.nativeElement;\n    const panelClasses = this.snackBarConfig.panelClass;\n\n    if (panelClasses) {\n      if (Array.isArray(panelClasses)) {\n        // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n        panelClasses.forEach(cssClass => element.classList.add(cssClass));\n      } else {\n        element.classList.add(panelClasses);\n      }\n    }\n\n    if (this.snackBarConfig.horizontalPosition === 'center') {\n      element.classList.add('mat-snack-bar-center');\n    }\n\n    if (this.snackBarConfig.verticalPosition === 'top') {\n      element.classList.add('mat-snack-bar-top');\n    }\n  }\n\n  /** Asserts that no content is already attached to the container. */\n  private _assertNotAttached() {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('Attempting to attach snack bar content after content is already attached');\n    }\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  private _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\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: HTMLElement | null = null;\n            if (this._platform.isBrowser &&\n                document.activeElement instanceof HTMLElement &&\n                inertElement.contains(document.activeElement)) {\n              focusedElement = document.activeElement;\n            }\n\n            inertElement.removeAttribute('aria-hidden');\n            liveElement.appendChild(inertElement);\n            focusedElement?.focus();\n\n            this._onAnnounce.next();\n            this._onAnnounce.complete();\n          }\n        }, this._announceDelay);\n      });\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n\n@NgModule({\n  imports: [\n    OverlayModule,\n    PortalModule,\n    CommonModule,\n    MatButtonModule,\n    MatCommonModule,\n  ],\n  exports: [MatSnackBarContainer, MatCommonModule],\n  declarations: [MatSnackBarContainer, SimpleSnackBar],\n  entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n})\nexport class MatSnackBarModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {LiveAnnouncer} from '@angular/cdk/a11y';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {\n  ComponentRef,\n  EmbeddedViewRef,\n  Inject,\n  Injectable,\n  InjectionToken,\n  Injector,\n  Optional,\n  SkipSelf,\n  TemplateRef,\n  OnDestroy, Type,\n} from '@angular/core';\nimport {takeUntil} from 'rxjs/operators';\nimport {TextOnlySnackBar, SimpleSnackBar} from './simple-snack-bar';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarContainer, _SnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarModule} from './snack-bar-module';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/** Injection token that can be used to specify default snack bar. */\nexport const MAT_SNACK_BAR_DEFAULT_OPTIONS =\n    new InjectionToken<MatSnackBarConfig>('mat-snack-bar-default-options', {\n      providedIn: 'root',\n      factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY,\n    });\n\n/** @docs-private */\nexport function MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY(): MatSnackBarConfig {\n  return new MatSnackBarConfig();\n}\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Injectable({providedIn: MatSnackBarModule})\nexport class MatSnackBar implements OnDestroy {\n  /**\n   * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n   * If there is a parent snack-bar service, all operations should delegate to that parent\n   * via `_openedSnackBarRef`.\n   */\n  private _snackBarRefAtThisLevel: MatSnackBarRef<any> | null = null;\n\n  /** The component that should be rendered as the snack bar's simple component. */\n  protected simpleSnackBarComponent: Type<TextOnlySnackBar> = SimpleSnackBar;\n\n  /** The container component that attaches the provided template or component. */\n  protected snackBarContainerComponent: Type<_SnackBarContainer> = MatSnackBarContainer;\n\n  /** The CSS class to apply for handset mode. */\n  protected handsetCssClass = 'mat-snack-bar-handset';\n\n  /** Reference to the currently opened snackbar at *any* level. */\n  get _openedSnackBarRef(): MatSnackBarRef<any> | null {\n    const parent = this._parentSnackBar;\n    return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n  }\n\n  set _openedSnackBarRef(value: MatSnackBarRef<any> | null) {\n    if (this._parentSnackBar) {\n      this._parentSnackBar._openedSnackBarRef = value;\n    } else {\n      this._snackBarRefAtThisLevel = value;\n    }\n  }\n\n  constructor(\n      private _overlay: Overlay,\n      private _live: LiveAnnouncer,\n      private _injector: Injector,\n      private _breakpointObserver: BreakpointObserver,\n      @Optional() @SkipSelf() private _parentSnackBar: MatSnackBar,\n      @Inject(MAT_SNACK_BAR_DEFAULT_OPTIONS) private _defaultConfig: MatSnackBarConfig) {}\n\n  /**\n   * Creates and dispatches a snack bar with a custom component for the content, removing any\n   * currently opened snack bars.\n   *\n   * @param component Component to be instantiated.\n   * @param config Extra configuration for the snack bar.\n   */\n  openFromComponent<T>(component: ComponentType<T>, config?: MatSnackBarConfig):\n      MatSnackBarRef<T> {\n    return this._attach(component, config) as MatSnackBarRef<T>;\n  }\n\n  /**\n   * Creates and dispatches a snack bar with a custom template for the content, removing any\n   * currently opened snack bars.\n   *\n   * @param template Template to be instantiated.\n   * @param config Extra configuration for the snack bar.\n   */\n  openFromTemplate(template: TemplateRef<any>, config?: MatSnackBarConfig):\n      MatSnackBarRef<EmbeddedViewRef<any>> {\n    return this._attach(template, config);\n  }\n\n  /**\n   * Opens a snackbar with a message and an optional action.\n   * @param message The message to show in the snackbar.\n   * @param action The label for the snackbar action.\n   * @param config Additional configuration options for the snackbar.\n   */\n  open(message: string, action: string = '', config?: MatSnackBarConfig):\n      MatSnackBarRef<TextOnlySnackBar> {\n    const _config = {...this._defaultConfig, ...config};\n\n    // Since the user doesn't have access to the component, we can\n    // override the data to pass in our own message and action.\n    _config.data = {message, action};\n\n    // 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\n    return this.openFromComponent(this.simpleSnackBarComponent, _config);\n  }\n\n  /**\n   * Dismisses the currently-visible snack bar.\n   */\n  dismiss(): void {\n    if (this._openedSnackBarRef) {\n      this._openedSnackBarRef.dismiss();\n    }\n  }\n\n  ngOnDestroy() {\n    // Only dismiss the snack bar at the current level on destroy.\n    if (this._snackBarRefAtThisLevel) {\n      this._snackBarRefAtThisLevel.dismiss();\n    }\n  }\n\n  /**\n   * Attaches the snack bar container component to the overlay.\n   */\n  private _attachSnackBarContainer(overlayRef: OverlayRef,\n                                     config: MatSnackBarConfig): _SnackBarContainer {\n\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\n    const containerPortal =\n        new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);\n    const containerRef: ComponentRef<_SnackBarContainer> =\n        overlayRef.attach(containerPortal);\n    containerRef.instance.snackBarConfig = config;\n    return containerRef.instance;\n  }\n\n  /**\n   * Places a new component or a template as the content of the snack bar container.\n   */\n  private _attach<T>(content: ComponentType<T> | TemplateRef<T>, userConfig?: MatSnackBarConfig):\n      MatSnackBarRef<T | EmbeddedViewRef<any>> {\n\n    const config = {...new MatSnackBarConfig(), ...this._defaultConfig, ...userConfig};\n    const overlayRef = this._createOverlay(config);\n    const container = this._attachSnackBarContainer(overlayRef, config);\n    const snackBarRef = new MatSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\n\n    if (content instanceof TemplateRef) {\n      const portal = new TemplatePortal(content, null!, {\n        $implicit: config.data,\n        snackBarRef\n      } as any);\n\n      snackBarRef.instance = container.attachTemplatePortal(portal);\n    } else {\n      const injector = this._createInjector(config, snackBarRef);\n      const portal = new ComponentPortal(content, undefined, injector);\n      const contentRef = container.attachComponentPortal<T>(portal);\n\n      // We can't pass this via the injector, because the injector is created earlier.\n      snackBarRef.instance = contentRef.instance;\n    }\n\n    // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n    // appropriate. This class is applied to the overlay element because the overlay must expand to\n    // fill the width of the screen for full width snackbars.\n    this._breakpointObserver.observe(Breakpoints.HandsetPortrait).pipe(\n        takeUntil(overlayRef.detachments())\n    ).subscribe(state => {\n      const classList = overlayRef.overlayElement.classList;\n      state.matches ? classList.add(this.handsetCssClass) : classList.remove(this.handsetCssClass);\n    });\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\n    this._animateSnackBar(snackBarRef, config);\n    this._openedSnackBarRef = snackBarRef;\n    return this._openedSnackBarRef;\n  }\n\n  /** Animates the old snack bar out and the new one in. */\n  private _animateSnackBar(snackBarRef: MatSnackBarRef<any>, config: MatSnackBarConfig) {\n    // When the snackbar is dismissed, clear the reference to it.\n    snackBarRef.afterDismissed().subscribe(() => {\n      // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n      if (this._openedSnackBarRef == snackBarRef) {\n        this._openedSnackBarRef = null;\n      }\n\n      if (config.announcementMessage) {\n        this._live.clear();\n      }\n    });\n\n    if (this._openedSnackBarRef) {\n      // If a snack bar is already in view, dismiss it and enter the\n      // new snack bar after exit animation is complete.\n      this._openedSnackBarRef.afterDismissed().subscribe(() => {\n        snackBarRef.containerInstance.enter();\n      });\n      this._openedSnackBarRef.dismiss();\n    } else {\n      // If no snack bar is in view, enter the new snack bar.\n      snackBarRef.containerInstance.enter();\n    }\n\n    // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n    if (config.duration && config.duration > 0) {\n      snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration!));\n    }\n  }\n\n  /**\n   * Creates a new overlay and places it in the correct location.\n   * @param config The user-specified snack bar config.\n   */\n  private _createOverlay(config: MatSnackBarConfig): OverlayRef {\n    const overlayConfig = new OverlayConfig();\n    overlayConfig.direction = config.direction;\n\n    let positionStrategy = this._overlay.position().global();\n    // Set horizontal position.\n    const isRtl = config.direction === 'rtl';\n    const isLeft = (\n        config.horizontalPosition === 'left' ||\n        (config.horizontalPosition === 'start' && !isRtl) ||\n        (config.horizontalPosition === 'end' && isRtl));\n    const isRight = !isLeft && config.horizontalPosition !== 'center';\n    if (isLeft) {\n      positionStrategy.left('0');\n    } else if (isRight) {\n      positionStrategy.right('0');\n    } else {\n      positionStrategy.centerHorizontally();\n    }\n    // Set horizontal position.\n    if (config.verticalPosition === 'top') {\n      positionStrategy.top('0');\n    } else {\n      positionStrategy.bottom('0');\n    }\n\n    overlayConfig.positionStrategy = positionStrategy;\n    return this._overlay.create(overlayConfig);\n  }\n\n  /**\n   * Creates an injector to be used inside of a snack bar component.\n   * @param config Config that was used to create the snack bar.\n   * @param snackBarRef Reference to the snack bar.\n   */\n  private _createInjector<T>(config: MatSnackBarConfig, snackBarRef: MatSnackBarRef<T>): Injector {\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\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}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './snack-bar-module';\nexport * from './snack-bar';\nexport * from './snack-bar-container';\nexport * from './snack-bar-config';\nexport * from './snack-bar-ref';\nexport * from './simple-snack-bar';\nexport * from './snack-bar-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
     1{"version":3,"file":"snack-bar.js","sources":["../../../../../../src/material/snack-bar/snack-bar-config.ts","../../../../../../src/material/snack-bar/snack-bar-ref.ts","../../../../../../src/material/snack-bar/simple-snack-bar.ts","../../../../../../src/material/snack-bar/snack-bar-animations.ts","../../../../../../src/material/snack-bar/snack-bar-container.ts","../../../../../../src/material/snack-bar/snack-bar-module.ts","../../../../../../src/material/snack-bar/snack-bar.ts","../../../../../../src/material/snack-bar/public-api.ts","../../../../../../src/material/snack-bar/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ViewContainerRef, InjectionToken} from '@angular/core';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Direction} from '@angular/cdk/bidi';\n\n/** Injection token that can be used to access the data that was passed in to a snack bar. */\nexport const MAT_SNACK_BAR_DATA = new InjectionToken<any>('MatSnackBarData');\n\n/** Possible values for horizontalPosition on MatSnackBarConfig. */\nexport type MatSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left' | 'right';\n\n/** Possible values for verticalPosition on MatSnackBarConfig. */\nexport type MatSnackBarVerticalPosition = 'top' | 'bottom';\n\n/**\n * Configuration used when opening a snack-bar.\n */\nexport class MatSnackBarConfig<D = any> {\n  /** The politeness level for the MatAriaLiveAnnouncer announcement. */\n  politeness?: AriaLivePoliteness = 'assertive';\n\n  /**\n   * Message to be announced by the LiveAnnouncer. When opening a snackbar without a custom\n   * component or template, the announcement message will default to the specified message.\n   */\n  announcementMessage?: string = '';\n\n  /**\n   * The view container that serves as the parent for the snackbar for the purposes of dependency\n   * injection. Note: this does not affect where the snackbar is inserted in the DOM.\n   */\n  viewContainerRef?: ViewContainerRef;\n\n  /** The length of time in milliseconds to wait before automatically dismissing the snack bar. */\n  duration?: number = 0;\n\n  /** Extra CSS classes to be added to the snack bar container. */\n  panelClass?: string | string[];\n\n  /** Text layout direction for the snack bar. */\n  direction?: Direction;\n\n  /** Data being injected into the child component. */\n  data?: D | null = null;\n\n  /** The horizontal position to place the snack bar. */\n  horizontalPosition?: MatSnackBarHorizontalPosition = 'center';\n\n  /** The vertical position to place the snack bar. */\n  verticalPosition?: MatSnackBarVerticalPosition = 'bottom';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {_SnackBarContainer} from './snack-bar-container';\n\n\n/** Event that is emitted when a snack bar is dismissed. */\nexport interface MatSnackBarDismiss {\n  /** Whether the snack bar was dismissed using the action button. */\n  dismissedByAction: boolean;\n}\n\n/** Maximum amount of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\n/**\n * Reference to a snack bar dispatched from the snack bar service.\n */\nexport class MatSnackBarRef<T> {\n  /** The instance of the component making up the content of the snack bar. */\n  instance: T;\n\n  /**\n   * The instance of the component making up the content of the snack bar.\n   * @docs-private\n   */\n  containerInstance: _SnackBarContainer;\n\n  /** Subject for notifying the user that the snack bar has been dismissed. */\n  private readonly _afterDismissed = new Subject<MatSnackBarDismiss>();\n\n  /** Subject for notifying the user that the snack bar has opened and appeared. */\n  private readonly _afterOpened = new Subject<void>();\n\n  /** Subject for notifying the user that the snack bar action was called. */\n  private readonly _onAction = new Subject<void>();\n\n  /**\n   * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n   * dismissed before the duration passes.\n   */\n  private _durationTimeoutId: number;\n\n  /** Whether the snack bar was dismissed using the action button. */\n  private _dismissedByAction = false;\n\n  constructor(containerInstance: _SnackBarContainer,\n              private _overlayRef: OverlayRef) {\n    this.containerInstance = containerInstance;\n    // Dismiss snackbar on action.\n    this.onAction().subscribe(() => this.dismiss());\n    containerInstance._onExit.subscribe(() => this._finishDismiss());\n  }\n\n  /** Dismisses the snack bar. */\n  dismiss(): void {\n    if (!this._afterDismissed.closed) {\n      this.containerInstance.exit();\n    }\n    clearTimeout(this._durationTimeoutId);\n  }\n\n  /** Marks the snackbar action clicked. */\n  dismissWithAction(): void {\n    if (!this._onAction.closed) {\n      this._dismissedByAction = true;\n      this._onAction.next();\n      this._onAction.complete();\n    }\n    clearTimeout(this._durationTimeoutId);\n  }\n\n\n  /**\n   * Marks the snackbar action clicked.\n   * @deprecated Use `dismissWithAction` instead.\n   * @breaking-change 8.0.0\n   */\n  closeWithAction(): void {\n    this.dismissWithAction();\n  }\n\n  /** Dismisses the snack bar after some duration */\n  _dismissAfter(duration: number): void {\n    // 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\n  /** Marks the snackbar as opened */\n  _open(): void {\n    if (!this._afterOpened.closed) {\n      this._afterOpened.next();\n      this._afterOpened.complete();\n    }\n  }\n\n  /** Cleans up the DOM after closing. */\n  private _finishDismiss(): void {\n    this._overlayRef.dispose();\n\n    if (!this._onAction.closed) {\n      this._onAction.complete();\n    }\n\n    this._afterDismissed.next({dismissedByAction: this._dismissedByAction});\n    this._afterDismissed.complete();\n    this._dismissedByAction = false;\n  }\n\n  /** Gets an observable that is notified when the snack bar is finished closing. */\n  afterDismissed(): Observable<MatSnackBarDismiss> {\n    return this._afterDismissed;\n  }\n\n  /** Gets an observable that is notified when the snack bar has opened and appeared. */\n  afterOpened(): Observable<void> {\n    return this.containerInstance._onEnter;\n  }\n\n  /** Gets an observable that is notified when the snack bar action is called. */\n  onAction(): Observable<void> {\n    return this._onAction;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ChangeDetectionStrategy, Component, Inject, ViewEncapsulation} from '@angular/core';\nimport {MAT_SNACK_BAR_DATA} from './snack-bar-config';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/**\n * Interface for a simple snack bar component that has a message and a single action.\n */\nexport interface TextOnlySnackBar {\n  data: {message: string, action: string};\n  snackBarRef: MatSnackBarRef<TextOnlySnackBar>;\n  action: () => void;\n  hasAction: boolean;\n}\n\n/**\n * A component used to open as the default snack bar, matching material spec.\n * This should only be used internally by the snack bar service.\n */\n@Component({\n  selector: 'simple-snack-bar',\n  templateUrl: 'simple-snack-bar.html',\n  styleUrls: ['simple-snack-bar.css'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'class': 'mat-simple-snackbar',\n  }\n})\nexport class SimpleSnackBar implements TextOnlySnackBar {\n  /** Data that was injected into the snack bar. */\n  data: {message: string, action: string};\n\n  constructor(\n    public snackBarRef: MatSnackBarRef<SimpleSnackBar>,\n    @Inject(MAT_SNACK_BAR_DATA) data: any) {\n    this.data = data;\n  }\n\n  /** Performs the action on the snack bar. */\n  action(): void {\n    this.snackBarRef.dismissWithAction();\n  }\n\n  /** If the action button should be shown. */\n  get hasAction(): boolean {\n    return !!this.data.action;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the Material snack bar.\n * @docs-private\n */\nexport const matSnackBarAnimations: {\n  readonly snackBarState: AnimationTriggerMetadata;\n} = {\n  /** Animation that shows and hides a snack bar. */\n  snackBarState: trigger('state', [\n    state('void, hidden', style({\n      transform: 'scale(0.8)',\n      opacity: 0,\n    })),\n    state('visible', style({\n      transform: 'scale(1)',\n      opacity: 1,\n    })),\n    transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n    transition('* => void, * => hidden', animate('75ms cubic-bezier(0.4, 0.0, 1, 1)', style({\n      opacity: 0\n    }))),\n  ])\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AnimationEvent} from '@angular/animations';\nimport {AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  BasePortalOutlet,\n  CdkPortalOutlet,\n  ComponentPortal,\n  TemplatePortal,\n  DomPortal,\n} from '@angular/cdk/portal';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  NgZone,\n  OnDestroy,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {take} from 'rxjs/operators';\nimport {matSnackBarAnimations} from './snack-bar-animations';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\n/**\n * Internal interface for a snack bar container.\n * @docs-private\n */\nexport interface _SnackBarContainer {\n  snackBarConfig: MatSnackBarConfig;\n  readonly _onAnnounce: Subject<any>;\n  readonly _onExit: Subject<any>;\n  readonly _onEnter: Subject<any>;\n  enter: () => void;\n  exit: () => Observable<void>;\n  attachTemplatePortal: <C>(portal: TemplatePortal<C>) => EmbeddedViewRef<C>;\n  attachComponentPortal: <T>(portal: ComponentPortal<T>) => ComponentRef<T>;\n}\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\n@Component({\n  selector: 'snack-bar-container',\n  templateUrl: 'snack-bar-container.html',\n  styleUrls: ['snack-bar-container.css'],\n  // In Ivy embedded views will be change detected from their declaration place, rather than\n  // where they were stamped out. This means that we can't have the snack bar container be OnPush,\n  // because it might cause snack bars that were opened from a template not to be out of date.\n  // tslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  encapsulation: ViewEncapsulation.None,\n  animations: [matSnackBarAnimations.snackBarState],\n  host: {\n    'class': 'mat-snack-bar-container',\n    '[@state]': '_animationState',\n    '(@state.done)': 'onAnimationEnd($event)'\n  },\n})\nexport class MatSnackBarContainer extends BasePortalOutlet\n    implements OnDestroy, _SnackBarContainer {\n  /** The number of milliseconds to wait before announcing the snack bar's content. */\n  private readonly _announceDelay: number = 150;\n\n  /** The timeout for announcing the snack bar's content. */\n  private _announceTimeoutId: number;\n\n  /** Whether the component has been destroyed. */\n  private _destroyed = false;\n\n  /** The portal outlet inside of this container into which the snack bar content will be loaded. */\n  @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n  /** Subject for notifying that the snack bar has announced to screen readers. */\n  readonly _onAnnounce: Subject<void> = new Subject();\n\n  /** Subject for notifying that the snack bar has exited from view. */\n  readonly _onExit: Subject<void> = new Subject();\n\n  /** Subject for notifying that the snack bar has finished entering the view. */\n  readonly _onEnter: Subject<void> = new Subject();\n\n  /** The state of the snack bar animations. */\n  _animationState = 'void';\n\n  /** aria-live value for the live region. */\n  _live: AriaLivePoliteness;\n\n  /**\n   * Role of the live region. This is only for Firefox as there is a known issue where Firefox +\n   * JAWS does not read out aria-live message.\n   */\n  _role?: 'status' | 'alert';\n\n  constructor(\n    private _ngZone: NgZone,\n    private _elementRef: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _platform: Platform,\n    /** The snack bar configuration. */\n    public snackBarConfig: MatSnackBarConfig) {\n\n    super();\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\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\n  /** Attach a component portal as content to this snack bar container. */\n  attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    this._assertNotAttached();\n    this._applySnackBarClasses();\n    return this._portalOutlet.attachComponentPortal(portal);\n  }\n\n  /** Attach a template portal as content to this snack bar container. */\n  attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    this._assertNotAttached();\n    this._applySnackBarClasses();\n    return this._portalOutlet.attachTemplatePortal(portal);\n  }\n\n  /**\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  override attachDomPortal = (portal: DomPortal) => {\n    this._assertNotAttached();\n    this._applySnackBarClasses();\n    return this._portalOutlet.attachDomPortal(portal);\n  }\n\n  /** Handle end of animations, updating the state of the snackbar. */\n  onAnimationEnd(event: AnimationEvent) {\n    const {fromState, toState} = event;\n\n    if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n      this._completeExit();\n    }\n\n    if (toState === 'visible') {\n      // Note: we shouldn't use `this` inside the zone callback,\n      // because it can cause a memory leak.\n      const onEnter = this._onEnter;\n\n      this._ngZone.run(() => {\n        onEnter.next();\n        onEnter.complete();\n      });\n    }\n  }\n\n  /** Begin animation of snack bar entrance into view. */\n  enter(): void {\n    if (!this._destroyed) {\n      this._animationState = 'visible';\n      this._changeDetectorRef.detectChanges();\n      this._screenReaderAnnounce();\n    }\n  }\n\n  /** Begin animation of the snack bar exiting from view. */\n  exit(): Observable<void> {\n    // Note: this one transitions to `hidden`, rather than `void`, in order to handle the case\n    // where multiple snack bars are opened in quick succession (e.g. two consecutive calls to\n    // `MatSnackBar.open`).\n    this._animationState = 'hidden';\n\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\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\n  /** Makes sure the exit callbacks have been invoked when the element is destroyed. */\n  ngOnDestroy() {\n    this._destroyed = true;\n    this._completeExit();\n  }\n\n  /**\n   * Waits for the zone to settle before removing the element. Helps prevent\n   * errors where we end up removing an element which is in the middle of an animation.\n   */\n  private _completeExit() {\n    this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n      this._onExit.next();\n      this._onExit.complete();\n    });\n  }\n\n  /** Applies the various positioning and user-configured CSS classes to the snack bar. */\n  private _applySnackBarClasses() {\n    const element: HTMLElement = this._elementRef.nativeElement;\n    const panelClasses = this.snackBarConfig.panelClass;\n\n    if (panelClasses) {\n      if (Array.isArray(panelClasses)) {\n        // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n        panelClasses.forEach(cssClass => element.classList.add(cssClass));\n      } else {\n        element.classList.add(panelClasses);\n      }\n    }\n\n    if (this.snackBarConfig.horizontalPosition === 'center') {\n      element.classList.add('mat-snack-bar-center');\n    }\n\n    if (this.snackBarConfig.verticalPosition === 'top') {\n      element.classList.add('mat-snack-bar-top');\n    }\n  }\n\n  /** Asserts that no content is already attached to the container. */\n  private _assertNotAttached() {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('Attempting to attach snack bar content after content is already attached');\n    }\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  private _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\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: HTMLElement | null = null;\n            if (this._platform.isBrowser &&\n                document.activeElement instanceof HTMLElement &&\n                inertElement.contains(document.activeElement)) {\n              focusedElement = document.activeElement;\n            }\n\n            inertElement.removeAttribute('aria-hidden');\n            liveElement.appendChild(inertElement);\n            focusedElement?.focus();\n\n            this._onAnnounce.next();\n            this._onAnnounce.complete();\n          }\n        }, this._announceDelay);\n      });\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatButtonModule} from '@angular/material/button';\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\n\n\n@NgModule({\n  imports: [\n    OverlayModule,\n    PortalModule,\n    CommonModule,\n    MatButtonModule,\n    MatCommonModule,\n  ],\n  exports: [MatSnackBarContainer, MatCommonModule],\n  declarations: [MatSnackBarContainer, SimpleSnackBar],\n  entryComponents: [MatSnackBarContainer, SimpleSnackBar],\n})\nexport class MatSnackBarModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {LiveAnnouncer} from '@angular/cdk/a11y';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {\n  ComponentRef,\n  EmbeddedViewRef,\n  Inject,\n  Injectable,\n  InjectionToken,\n  Injector,\n  Optional,\n  SkipSelf,\n  TemplateRef,\n  OnDestroy, Type,\n} from '@angular/core';\nimport {takeUntil} from 'rxjs/operators';\nimport {TextOnlySnackBar, SimpleSnackBar} from './simple-snack-bar';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarContainer, _SnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarModule} from './snack-bar-module';\nimport {MatSnackBarRef} from './snack-bar-ref';\n\n\n/** Injection token that can be used to specify default snack bar. */\nexport const MAT_SNACK_BAR_DEFAULT_OPTIONS =\n    new InjectionToken<MatSnackBarConfig>('mat-snack-bar-default-options', {\n      providedIn: 'root',\n      factory: MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY,\n    });\n\n/** @docs-private */\nexport function MAT_SNACK_BAR_DEFAULT_OPTIONS_FACTORY(): MatSnackBarConfig {\n  return new MatSnackBarConfig();\n}\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Injectable({providedIn: MatSnackBarModule})\nexport class MatSnackBar implements OnDestroy {\n  /**\n   * Reference to the current snack bar in the view *at this level* (in the Angular injector tree).\n   * If there is a parent snack-bar service, all operations should delegate to that parent\n   * via `_openedSnackBarRef`.\n   */\n  private _snackBarRefAtThisLevel: MatSnackBarRef<any> | null = null;\n\n  /** The component that should be rendered as the snack bar's simple component. */\n  protected simpleSnackBarComponent: Type<TextOnlySnackBar> = SimpleSnackBar;\n\n  /** The container component that attaches the provided template or component. */\n  protected snackBarContainerComponent: Type<_SnackBarContainer> = MatSnackBarContainer;\n\n  /** The CSS class to apply for handset mode. */\n  protected handsetCssClass = 'mat-snack-bar-handset';\n\n  /** Reference to the currently opened snackbar at *any* level. */\n  get _openedSnackBarRef(): MatSnackBarRef<any> | null {\n    const parent = this._parentSnackBar;\n    return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;\n  }\n\n  set _openedSnackBarRef(value: MatSnackBarRef<any> | null) {\n    if (this._parentSnackBar) {\n      this._parentSnackBar._openedSnackBarRef = value;\n    } else {\n      this._snackBarRefAtThisLevel = value;\n    }\n  }\n\n  constructor(\n      private _overlay: Overlay,\n      private _live: LiveAnnouncer,\n      private _injector: Injector,\n      private _breakpointObserver: BreakpointObserver,\n      @Optional() @SkipSelf() private _parentSnackBar: MatSnackBar,\n      @Inject(MAT_SNACK_BAR_DEFAULT_OPTIONS) private _defaultConfig: MatSnackBarConfig) {}\n\n  /**\n   * Creates and dispatches a snack bar with a custom component for the content, removing any\n   * currently opened snack bars.\n   *\n   * @param component Component to be instantiated.\n   * @param config Extra configuration for the snack bar.\n   */\n  openFromComponent<T>(component: ComponentType<T>, config?: MatSnackBarConfig):\n      MatSnackBarRef<T> {\n    return this._attach(component, config) as MatSnackBarRef<T>;\n  }\n\n  /**\n   * Creates and dispatches a snack bar with a custom template for the content, removing any\n   * currently opened snack bars.\n   *\n   * @param template Template to be instantiated.\n   * @param config Extra configuration for the snack bar.\n   */\n  openFromTemplate(template: TemplateRef<any>, config?: MatSnackBarConfig):\n      MatSnackBarRef<EmbeddedViewRef<any>> {\n    return this._attach(template, config);\n  }\n\n  /**\n   * Opens a snackbar with a message and an optional action.\n   * @param message The message to show in the snackbar.\n   * @param action The label for the snackbar action.\n   * @param config Additional configuration options for the snackbar.\n   */\n  open(message: string, action: string = '', config?: MatSnackBarConfig):\n      MatSnackBarRef<TextOnlySnackBar> {\n    const _config = {...this._defaultConfig, ...config};\n\n    // Since the user doesn't have access to the component, we can\n    // override the data to pass in our own message and action.\n    _config.data = {message, action};\n\n    // 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\n    return this.openFromComponent(this.simpleSnackBarComponent, _config);\n  }\n\n  /**\n   * Dismisses the currently-visible snack bar.\n   */\n  dismiss(): void {\n    if (this._openedSnackBarRef) {\n      this._openedSnackBarRef.dismiss();\n    }\n  }\n\n  ngOnDestroy() {\n    // Only dismiss the snack bar at the current level on destroy.\n    if (this._snackBarRefAtThisLevel) {\n      this._snackBarRefAtThisLevel.dismiss();\n    }\n  }\n\n  /**\n   * Attaches the snack bar container component to the overlay.\n   */\n  private _attachSnackBarContainer(overlayRef: OverlayRef,\n                                     config: MatSnackBarConfig): _SnackBarContainer {\n\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\n    const containerPortal =\n        new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);\n    const containerRef: ComponentRef<_SnackBarContainer> =\n        overlayRef.attach(containerPortal);\n    containerRef.instance.snackBarConfig = config;\n    return containerRef.instance;\n  }\n\n  /**\n   * Places a new component or a template as the content of the snack bar container.\n   */\n  private _attach<T>(content: ComponentType<T> | TemplateRef<T>, userConfig?: MatSnackBarConfig):\n      MatSnackBarRef<T | EmbeddedViewRef<any>> {\n\n    const config = {...new MatSnackBarConfig(), ...this._defaultConfig, ...userConfig};\n    const overlayRef = this._createOverlay(config);\n    const container = this._attachSnackBarContainer(overlayRef, config);\n    const snackBarRef = new MatSnackBarRef<T | EmbeddedViewRef<any>>(container, overlayRef);\n\n    if (content instanceof TemplateRef) {\n      const portal = new TemplatePortal(content, null!, {\n        $implicit: config.data,\n        snackBarRef\n      } as any);\n\n      snackBarRef.instance = container.attachTemplatePortal(portal);\n    } else {\n      const injector = this._createInjector(config, snackBarRef);\n      const portal = new ComponentPortal(content, undefined, injector);\n      const contentRef = container.attachComponentPortal<T>(portal);\n\n      // We can't pass this via the injector, because the injector is created earlier.\n      snackBarRef.instance = contentRef.instance;\n    }\n\n    // Subscribe to the breakpoint observer and attach the mat-snack-bar-handset class as\n    // appropriate. This class is applied to the overlay element because the overlay must expand to\n    // fill the width of the screen for full width snackbars.\n    this._breakpointObserver.observe(Breakpoints.HandsetPortrait).pipe(\n        takeUntil(overlayRef.detachments())\n    ).subscribe(state => {\n      const classList = overlayRef.overlayElement.classList;\n      state.matches ? classList.add(this.handsetCssClass) : classList.remove(this.handsetCssClass);\n    });\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\n    this._animateSnackBar(snackBarRef, config);\n    this._openedSnackBarRef = snackBarRef;\n    return this._openedSnackBarRef;\n  }\n\n  /** Animates the old snack bar out and the new one in. */\n  private _animateSnackBar(snackBarRef: MatSnackBarRef<any>, config: MatSnackBarConfig) {\n    // When the snackbar is dismissed, clear the reference to it.\n    snackBarRef.afterDismissed().subscribe(() => {\n      // Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.\n      if (this._openedSnackBarRef == snackBarRef) {\n        this._openedSnackBarRef = null;\n      }\n\n      if (config.announcementMessage) {\n        this._live.clear();\n      }\n    });\n\n    if (this._openedSnackBarRef) {\n      // If a snack bar is already in view, dismiss it and enter the\n      // new snack bar after exit animation is complete.\n      this._openedSnackBarRef.afterDismissed().subscribe(() => {\n        snackBarRef.containerInstance.enter();\n      });\n      this._openedSnackBarRef.dismiss();\n    } else {\n      // If no snack bar is in view, enter the new snack bar.\n      snackBarRef.containerInstance.enter();\n    }\n\n    // If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n    if (config.duration && config.duration > 0) {\n      snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration!));\n    }\n  }\n\n  /**\n   * Creates a new overlay and places it in the correct location.\n   * @param config The user-specified snack bar config.\n   */\n  private _createOverlay(config: MatSnackBarConfig): OverlayRef {\n    const overlayConfig = new OverlayConfig();\n    overlayConfig.direction = config.direction;\n\n    let positionStrategy = this._overlay.position().global();\n    // Set horizontal position.\n    const isRtl = config.direction === 'rtl';\n    const isLeft = (\n        config.horizontalPosition === 'left' ||\n        (config.horizontalPosition === 'start' && !isRtl) ||\n        (config.horizontalPosition === 'end' && isRtl));\n    const isRight = !isLeft && config.horizontalPosition !== 'center';\n    if (isLeft) {\n      positionStrategy.left('0');\n    } else if (isRight) {\n      positionStrategy.right('0');\n    } else {\n      positionStrategy.centerHorizontally();\n    }\n    // Set horizontal position.\n    if (config.verticalPosition === 'top') {\n      positionStrategy.top('0');\n    } else {\n      positionStrategy.bottom('0');\n    }\n\n    overlayConfig.positionStrategy = positionStrategy;\n    return this._overlay.create(overlayConfig);\n  }\n\n  /**\n   * Creates an injector to be used inside of a snack bar component.\n   * @param config Config that was used to create the snack bar.\n   * @param snackBarRef Reference to the snack bar.\n   */\n  private _createInjector<T>(config: MatSnackBarConfig, snackBarRef: MatSnackBarRef<T>): Injector {\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\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}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './snack-bar-module';\nexport * from './snack-bar';\nexport * from './snack-bar-container';\nexport * from './snack-bar-config';\nexport * from './snack-bar-ref';\nexport * from './simple-snack-bar';\nexport * from './snack-bar-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
Note: See TracChangeset for help on using the changeset viewer.