{"version":3,"file":"snack-bar.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-ref.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-config.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-content.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/simple-snack-bar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/simple-snack-bar.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-container.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/snack-bar/snack-bar-module.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.dev/license\n */\n\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {MatSnackBarContainer} from './snack-bar-container';\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: MatSnackBarContainer;\n\n  /** Subject for notifying the user that the snack bar has been dismissed. */\n  private readonly _afterDismissed = new Subject<MatSnackBarDismiss>();\n\n  /** Subject for notifying the user that the snack bar has opened and appeared. */\n  private readonly _afterOpened = new Subject<void>();\n\n  /** Subject for notifying the user that the snack bar action was called. */\n  private readonly _onAction = new Subject<void>();\n\n  /**\n   * Timeout ID for the duration setTimeout call. Used to clear the timeout if the snackbar is\n   * dismissed before the duration passes.\n   */\n  private _durationTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n  /** Whether the snack bar was dismissed using the action button. */\n  private _dismissedByAction = false;\n\n  constructor(\n    containerInstance: MatSnackBarContainer,\n    private _overlayRef: OverlayRef,\n  ) {\n    this.containerInstance = containerInstance;\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      this.dismiss();\n    }\n    clearTimeout(this._durationTimeoutId);\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.dev/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 = 'polite';\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.dev/license\n */\n\nimport {Directive} from '@angular/core';\n\n/** Directive that should be applied to the text element to be rendered in the snack bar. */\n@Directive({\n  selector: `[matSnackBarLabel]`,\n  host: {\n    'class': 'mat-mdc-snack-bar-label mdc-snackbar__label',\n  },\n})\nexport class MatSnackBarLabel {}\n\n/** Directive that should be applied to the element containing the snack bar's action buttons. */\n@Directive({\n  selector: `[matSnackBarActions]`,\n  host: {\n    'class': 'mat-mdc-snack-bar-actions mdc-snackbar__actions',\n  },\n})\nexport class MatSnackBarActions {}\n\n/** Directive that should be applied to each of the snack bar's action buttons. */\n@Directive({\n  selector: `[matSnackBarAction]`,\n  host: {\n    'class': 'mat-mdc-snack-bar-action mdc-snackbar__action',\n  },\n})\nexport class MatSnackBarAction {}\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.dev/license\n */\n\nimport {Component, ViewEncapsulation, inject} from '@angular/core';\nimport {MatButton} from '../button';\nimport {MatSnackBarRef} from './snack-bar-ref';\nimport {MAT_SNACK_BAR_DATA} from './snack-bar-config';\nimport {MatSnackBarAction, MatSnackBarActions, MatSnackBarLabel} from './snack-bar-content';\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@Component({\n  selector: 'simple-snack-bar',\n  templateUrl: 'simple-snack-bar.html',\n  styleUrl: 'simple-snack-bar.css',\n  exportAs: 'matSnackBar',\n  encapsulation: ViewEncapsulation.None,\n  imports: [MatButton, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction],\n  host: {\n    'class': 'mat-mdc-simple-snack-bar',\n  },\n})\nexport class SimpleSnackBar implements TextOnlySnackBar {\n  snackBarRef = inject<MatSnackBarRef<SimpleSnackBar>>(MatSnackBarRef);\n  data = inject(MAT_SNACK_BAR_DATA);\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","<div matSnackBarLabel>\n  {{data.message}}\n</div>\n\n@if (hasAction) {\n  <div matSnackBarActions>\n    <button matButton matSnackBarAction (click)=\"action()\">\n      {{data.action}}\n    </button>\n  </div>\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.dev/license\n */\n\nimport {_IdGenerator, AriaLivePoliteness} from '@angular/cdk/a11y';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n  BasePortalOutlet,\n  CdkPortalOutlet,\n  ComponentPortal,\n  DomPortal,\n  TemplatePortal,\n} from '@angular/cdk/portal';\n\nimport {\n  afterNextRender,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  inject,\n  Injector,\n  NgZone,\n  OnDestroy,\n  ViewChild,\n  ViewEncapsulation,\n  DOCUMENT,\n} from '@angular/core';\nimport {Observable, of, Subject} from 'rxjs';\nimport {_animationsDisabled} from '../core';\nimport {MatSnackBarConfig} from './snack-bar-config';\n\nconst ENTER_ANIMATION = '_mat-snack-bar-enter';\nconst EXIT_ANIMATION = '_mat-snack-bar-exit';\n\n/**\n * Internal component that wraps user-provided snack bar content.\n * @docs-private\n */\n@Component({\n  selector: 'mat-snack-bar-container',\n  templateUrl: 'snack-bar-container.html',\n  styleUrl: '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.Eager,\n  encapsulation: ViewEncapsulation.None,\n  imports: [CdkPortalOutlet],\n  host: {\n    'class': 'mdc-snackbar mat-mdc-snack-bar-container',\n    '[class.mat-snack-bar-container-enter]': '_animationState === \"visible\"',\n    '[class.mat-snack-bar-container-exit]': '_animationState === \"hidden\"',\n    '[class.mat-snack-bar-container-animations-enabled]': '!_animationsDisabled',\n    '(animationend)': 'onAnimationEnd($event.animationName)',\n    '(animationcancel)': 'onAnimationEnd($event.animationName)',\n  },\n})\nexport class MatSnackBarContainer extends BasePortalOutlet implements OnDestroy {\n  private _ngZone = inject(NgZone);\n  readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _changeDetectorRef = inject(ChangeDetectorRef);\n  private _platform = inject(Platform);\n  protected _animationsDisabled = _animationsDisabled();\n  snackBarConfig = inject(MatSnackBarConfig);\n\n  private _document = inject(DOCUMENT);\n  private _trackedModals = new Set<Element>();\n  private _enterFallback: ReturnType<typeof setTimeout> | undefined;\n  private _exitFallback: ReturnType<typeof setTimeout> | undefined;\n  private _injector = inject(Injector);\n\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: ReturnType<typeof setTimeout> | undefined;\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   * Element that will have the `mdc-snackbar__label` class applied if the attached component\n   * or template does not have it. This ensures that the appropriate structure, typography, and\n   * color is applied to the attached view.\n   */\n  @ViewChild('label', {static: true}) _label!: ElementRef;\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  /** Unique ID of the aria-live element. */\n  readonly _liveElementId = inject(_IdGenerator).getId('mat-snack-bar-container-live-');\n\n  constructor() {\n    super();\n    const config = this.snackBarConfig;\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 (config.politeness === 'assertive' && !config.announcementMessage) {\n      this._live = 'assertive';\n    } else if (config.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    const result = this._portalOutlet.attachComponentPortal(portal);\n    this._afterPortalAttached();\n    return result;\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    const result = this._portalOutlet.attachTemplatePortal(portal);\n    this._afterPortalAttached();\n    return result;\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    const result = this._portalOutlet.attachDomPortal(portal);\n    this._afterPortalAttached();\n    return result;\n  };\n\n  /** Handle end of animations, updating the state of the snackbar. */\n  onAnimationEnd(animationName: string) {\n    if (animationName === EXIT_ANIMATION) {\n      this._completeExit();\n    } else if (animationName === ENTER_ANIMATION) {\n      clearTimeout(this._enterFallback);\n      this._ngZone.run(() => {\n        this._onEnter.next();\n        this._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      // _animationState lives in host bindings and `detectChanges` does not refresh host bindings\n      // so we have to call `markForCheck` to ensure the host view is refreshed eventually.\n      this._changeDetectorRef.markForCheck();\n      this._changeDetectorRef.detectChanges();\n      this._screenReaderAnnounce();\n\n      if (this._animationsDisabled) {\n        afterNextRender(\n          () => {\n            this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(ENTER_ANIMATION)));\n          },\n          {injector: this._injector},\n        );\n      } else {\n        clearTimeout(this._enterFallback);\n        this._enterFallback = setTimeout(() => {\n          // The snack bar will stay invisible if it fails to animate. Add a fallback class so it\n          // becomes visible. This can happen in some apps that do `* {animation: none !important}`.\n          this._elementRef.nativeElement.classList.add('mat-snack-bar-fallback-visible');\n          this.onAnimationEnd(ENTER_ANIMATION);\n        }, 200);\n      }\n    }\n  }\n\n  /** Begin animation of the snack bar exiting from view. */\n  exit(): Observable<void> {\n    if (this._destroyed) {\n      return of(undefined);\n    }\n\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      this._changeDetectorRef.markForCheck();\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      if (this._animationsDisabled) {\n        afterNextRender(\n          () => {\n            this._ngZone.run(() => queueMicrotask(() => this.onAnimationEnd(EXIT_ANIMATION)));\n          },\n          {injector: this._injector},\n        );\n      } else {\n        clearTimeout(this._exitFallback);\n        this._exitFallback = setTimeout(() => this.onAnimationEnd(EXIT_ANIMATION), 200);\n      }\n    });\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._clearFromModals();\n    this._completeExit();\n  }\n\n  private _completeExit() {\n    clearTimeout(this._exitFallback);\n    queueMicrotask(() => {\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  private _afterPortalAttached() {\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    this._exposeToModals();\n\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\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  private _exposeToModals() {\n    // TODO(http://github.com/angular/components/issues/26853): consider de-duplicating this with the\n    // `LiveAnnouncer` and any other usages.\n    //\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(\n      'body > .cdk-overlay-container [aria-modal=\"true\"]',\n    );\n\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\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\n  /** Clears the references to the live element from any modals it was added to. */\n  private _clearFromModals() {\n    this._trackedModals.forEach(modal => {\n      const ariaOwns = modal.getAttribute('aria-owns');\n\n      if (ariaOwns) {\n        const newValue = ariaOwns.replace(this._liveElementId, '').trim();\n\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\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      return;\n    }\n\n    this._ngZone.runOutsideAngular(() => {\n      this._announceTimeoutId = setTimeout(() => {\n        if (this._destroyed) {\n          return;\n        }\n\n        const element = this._elementRef.nativeElement;\n        const inertElement = element.querySelector('[aria-hidden]');\n        const liveElement = element.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 (\n            this._platform.isBrowser &&\n            document.activeElement instanceof HTMLElement &&\n            inertElement.contains(document.activeElement)\n          ) {\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","<div class=\"mdc-snackbar__surface mat-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 />\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 * @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.dev/license\n */\n\nimport {LiveAnnouncer} from '@angular/cdk/a11y';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {\n  ComponentType,\n  createGlobalPositionStrategy,\n  createOverlayRef,\n  OverlayConfig,\n  OverlayRef,\n} from '@angular/cdk/overlay';\nimport {\n  ComponentRef,\n  EmbeddedViewRef,\n  Service,\n  InjectionToken,\n  Injector,\n  OnDestroy,\n  TemplateRef,\n  inject,\n} from '@angular/core';\nimport {SimpleSnackBar, TextOnlySnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';\nimport {MatSnackBarRef} from './snack-bar-ref';\nimport {ComponentPortal, TemplatePortal} from '@angular/cdk/portal';\nimport {takeUntil} from 'rxjs/operators';\nimport {_animationsDisabled} from '../core';\n\n/** Injection token that can be used to specify default snack bar. */\nexport const MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken<MatSnackBarConfig>(\n  'mat-snack-bar-default-options',\n  {\n    providedIn: 'root',\n    factory: () => new MatSnackBarConfig(),\n  },\n);\n\n/**\n * Service to dispatch Material Design snack bar messages.\n */\n@Service()\nexport class MatSnackBar implements OnDestroy {\n  private _live = inject(LiveAnnouncer);\n  private _injector = inject(Injector);\n  private _breakpointObserver = inject(BreakpointObserver);\n  private _parentSnackBar = inject(MatSnackBar, {optional: true, skipSelf: true});\n  private _defaultConfig = inject<MatSnackBarConfig>(MAT_SNACK_BAR_DEFAULT_OPTIONS);\n  private _animationsDisabled = _animationsDisabled();\n\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  simpleSnackBarComponent = SimpleSnackBar;\n\n  /** The container component that attaches the provided template or component. */\n  snackBarContainerComponent = MatSnackBarContainer;\n\n  /** The CSS class to apply for handset mode. */\n  handsetCssClass = 'mat-mdc-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  /**\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, D = any>(\n    component: ComponentType<T>,\n    config?: MatSnackBarConfig<D>,\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(\n    template: TemplateRef<any>,\n    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(\n    message: string,\n    action: string = '',\n    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(\n    overlayRef: OverlayRef,\n    config: MatSnackBarConfig,\n  ): MatSnackBarContainer {\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 = new ComponentPortal(\n      this.snackBarContainerComponent,\n      config.viewContainerRef,\n      injector,\n    );\n    const containerRef: ComponentRef<MatSnackBarContainer> = overlayRef.attach(containerPortal);\n    containerRef.instance.snackBarConfig = config;\n    return containerRef.instance;\n  }\n\n  /**\n   * Places a new component or a template as the content of the snack bar container.\n   */\n  private _attach<T>(\n    content: ComponentType<T> | TemplateRef<T>,\n    userConfig?: MatSnackBarConfig,\n  ): MatSnackBarRef<T | EmbeddedViewRef<any>> {\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\n      .observe(Breakpoints.HandsetPortrait)\n      .pipe(takeUntil(overlayRef.detachments()))\n      .subscribe(state => {\n        overlayRef.overlayElement.classList.toggle(this.handsetCssClass, state.matches);\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 a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.\n    if (config.duration && config.duration > 0) {\n      snackBarRef.afterOpened().subscribe(() => snackBarRef._dismissAfter(config.duration!));\n    }\n\n    if (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\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    const positionStrategy = createGlobalPositionStrategy(this._injector);\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    overlayConfig.disableAnimations = this._animationsDisabled;\n    return createOverlayRef(this._injector, 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.dev/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {MatButtonModule} from '../button';\n\nimport {SimpleSnackBar} from './simple-snack-bar';\nimport {MatSnackBarContainer} from './snack-bar-container';\nimport {MatSnackBarAction, MatSnackBarActions, MatSnackBarLabel} from './snack-bar-content';\nimport {MatSnackBar} from './snack-bar';\n\nconst DIRECTIVES = [MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction];\n\n@NgModule({\n  imports: [OverlayModule, PortalModule, MatButtonModule, SimpleSnackBar, ...DIRECTIVES],\n  exports: [BidiModule, ...DIRECTIVES],\n  providers: [MatSnackBar],\n})\nexport class MatSnackBarModule {}\n"],"names":[],"mappings":"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"}