{"version":3,"file":"bottom-sheet.mjs","sources":["../../../../../../src/material/bottom-sheet/bottom-sheet-animations.ts","../../../../../../src/material/bottom-sheet/bottom-sheet-config.ts","../../../../../../src/material/bottom-sheet/bottom-sheet-container.ts","../../../../../../src/material/bottom-sheet/bottom-sheet-container.html","../../../../../../src/material/bottom-sheet/bottom-sheet-module.ts","../../../../../../src/material/bottom-sheet/bottom-sheet-ref.ts","../../../../../../src/material/bottom-sheet/bottom-sheet.ts","../../../../../../src/material/bottom-sheet/public-api.ts","../../../../../../src/material/bottom-sheet/index.ts","../../../../../../src/material/bottom-sheet/bottom-sheet_public_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 */\nimport {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n  AnimationTriggerMetadata,\n  group,\n  query,\n  animateChild,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\n/** Animations used by the Material bottom sheet. */\nexport const matBottomSheetAnimations: {\n  readonly bottomSheetState: AnimationTriggerMetadata;\n} = {\n  /** Animation that shows and hides a bottom sheet. */\n  bottomSheetState: trigger('state', [\n    state('void, hidden', style({transform: 'translateY(100%)'})),\n    state('visible', style({transform: 'translateY(0%)'})),\n    transition(\n      'visible => void, visible => hidden',\n      group([\n        animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.ACCELERATION_CURVE}`),\n        query('@*', animateChild(), {optional: true}),\n      ]),\n    ),\n    transition(\n      'void => visible',\n      group([\n        animate(`${AnimationDurations.EXITING} ${AnimationCurves.DECELERATION_CURVE}`),\n        query('@*', animateChild(), {optional: true}),\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 {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {InjectionToken, ViewContainerRef} from '@angular/core';\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\n\n/** Injection token that can be used to access the data that was passed in to a bottom sheet. */\nexport const MAT_BOTTOM_SHEET_DATA = new InjectionToken<any>('MatBottomSheetData');\n\n/**\n * Configuration used when opening a bottom sheet.\n */\nexport class MatBottomSheetConfig<D = any> {\n  /** The view container to place the overlay for the bottom sheet into. */\n  viewContainerRef?: ViewContainerRef;\n\n  /** Extra CSS classes to be added to the bottom sheet container. */\n  panelClass?: string | string[];\n\n  /** Text layout direction for the bottom sheet. */\n  direction?: Direction;\n\n  /** Data being injected into the child component. */\n  data?: D | null = null;\n\n  /** Whether the bottom sheet has a backdrop. */\n  hasBackdrop?: boolean = true;\n\n  /** Custom class for the backdrop. */\n  backdropClass?: string;\n\n  /** Whether the user can use escape or clicking outside to close the bottom sheet. */\n  disableClose?: boolean = false;\n\n  /** Aria label to assign to the bottom sheet element. */\n  ariaLabel?: string | null = null;\n\n  /**\n   * Whether the bottom sheet should close when the user goes backwards/forwards in history.\n   * Note that this usually doesn't include clicking on links (unless the user is using\n   * the `HashLocationStrategy`).\n   */\n  closeOnNavigation?: boolean = true;\n\n  // Note that this is set to 'dialog' by default, because while the a11y recommendations\n  // are to focus the first focusable element, doing so prevents screen readers from reading out the\n  // rest of the bottom sheet content.\n  /**\n   * Where the bottom sheet should focus on open.\n   * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n   * AutoFocusTarget instead.\n   */\n  autoFocus?: AutoFocusTarget | string | boolean = 'dialog';\n\n  /**\n   * Whether the bottom sheet should restore focus to the\n   * previously-focused element, after it's closed.\n   */\n  restoreFocus?: boolean = true;\n\n  /** Scroll strategy to be used for the bottom sheet. */\n  scrollStrategy?: ScrollStrategy;\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 {FocusTrap, FocusTrapFactory, InteractivityChecker} from '@angular/cdk/a11y';\nimport {coerceArray} from '@angular/cdk/coercion';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\nimport {\n  BasePortalOutlet,\n  CdkPortalOutlet,\n  ComponentPortal,\n  DomPortal,\n  TemplatePortal,\n} from '@angular/cdk/portal';\nimport {DOCUMENT} from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  EventEmitter,\n  Inject,\n  NgZone,\n  OnDestroy,\n  Optional,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {Subscription} from 'rxjs';\nimport {matBottomSheetAnimations} from './bottom-sheet-animations';\nimport {MatBottomSheetConfig} from './bottom-sheet-config';\n\n// TODO(crisbeto): consolidate some logic between this, MatDialog and MatSnackBar\n\n/**\n * Internal component that wraps user-provided bottom sheet content.\n * @docs-private\n */\n@Component({\n  selector: 'mat-bottom-sheet-container',\n  templateUrl: 'bottom-sheet-container.html',\n  styleUrls: ['bottom-sheet-container.css'],\n  // In Ivy embedded views will be change detected from their declaration place, rather than where\n  // they were stamped out. This means that we can't have the bottom sheet container be OnPush,\n  // because it might cause the sheets 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: [matBottomSheetAnimations.bottomSheetState],\n  host: {\n    'class': 'mat-bottom-sheet-container',\n    'tabindex': '-1',\n    'role': 'dialog',\n    'aria-modal': 'true',\n    '[attr.aria-label]': 'bottomSheetConfig?.ariaLabel',\n    '[@state]': '_animationState',\n    '(@state.start)': '_onAnimationStart($event)',\n    '(@state.done)': '_onAnimationDone($event)',\n  },\n})\nexport class MatBottomSheetContainer extends BasePortalOutlet implements OnDestroy {\n  private _breakpointSubscription: Subscription;\n\n  /** The portal outlet inside of this container into which the content will be loaded. */\n  @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n  /** The state of the bottom sheet animations. */\n  _animationState: 'void' | 'visible' | 'hidden' = 'void';\n\n  /** Emits whenever the state of the animation changes. */\n  _animationStateChanged = new EventEmitter<AnimationEvent>();\n\n  /** The class that traps and manages focus within the bottom sheet. */\n  private _focusTrap: FocusTrap;\n\n  /** Element that was focused before the bottom sheet was opened. */\n  private _elementFocusedBeforeOpened: HTMLElement | null = null;\n\n  /** Server-side rendering-compatible reference to the global document object. */\n  private _document: Document;\n\n  /** Whether the component has been destroyed. */\n  private _destroyed: boolean;\n\n  constructor(\n    private _elementRef: ElementRef<HTMLElement>,\n    private _changeDetectorRef: ChangeDetectorRef,\n    private _focusTrapFactory: FocusTrapFactory,\n    private readonly _interactivityChecker: InteractivityChecker,\n    private readonly _ngZone: NgZone,\n    breakpointObserver: BreakpointObserver,\n    @Optional() @Inject(DOCUMENT) document: any,\n    /** The bottom sheet configuration. */\n    public bottomSheetConfig: MatBottomSheetConfig,\n  ) {\n    super();\n\n    this._document = document;\n    this._breakpointSubscription = breakpointObserver\n      .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])\n      .subscribe(() => {\n        this._toggleClass(\n          'mat-bottom-sheet-container-medium',\n          breakpointObserver.isMatched(Breakpoints.Medium),\n        );\n        this._toggleClass(\n          'mat-bottom-sheet-container-large',\n          breakpointObserver.isMatched(Breakpoints.Large),\n        );\n        this._toggleClass(\n          'mat-bottom-sheet-container-xlarge',\n          breakpointObserver.isMatched(Breakpoints.XLarge),\n        );\n      });\n  }\n\n  /** Attach a component portal as content to this bottom sheet container. */\n  attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    this._validatePortalAttached();\n    this._setPanelClass();\n    this._savePreviouslyFocusedElement();\n    return this._portalOutlet.attachComponentPortal(portal);\n  }\n\n  /** Attach a template portal as content to this bottom sheet container. */\n  attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    this._validatePortalAttached();\n    this._setPanelClass();\n    this._savePreviouslyFocusedElement();\n    return this._portalOutlet.attachTemplatePortal(portal);\n  }\n\n  /**\n   * Attaches a DOM portal to the bottom sheet container.\n   * @deprecated To be turned into a method.\n   * @breaking-change 10.0.0\n   */\n  override attachDomPortal = (portal: DomPortal) => {\n    this._validatePortalAttached();\n    this._setPanelClass();\n    this._savePreviouslyFocusedElement();\n    return this._portalOutlet.attachDomPortal(portal);\n  };\n\n  /** Begin animation of bottom sheet entrance into view. */\n  enter(): void {\n    if (!this._destroyed) {\n      this._animationState = 'visible';\n      this._changeDetectorRef.detectChanges();\n    }\n  }\n\n  /** Begin animation of the bottom sheet exiting from view. */\n  exit(): void {\n    if (!this._destroyed) {\n      this._animationState = 'hidden';\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  ngOnDestroy() {\n    this._breakpointSubscription.unsubscribe();\n    this._destroyed = true;\n  }\n\n  _onAnimationDone(event: AnimationEvent) {\n    if (event.toState === 'hidden') {\n      this._restoreFocus();\n    } else if (event.toState === 'visible') {\n      this._trapFocus();\n    }\n\n    this._animationStateChanged.emit(event);\n  }\n\n  _onAnimationStart(event: AnimationEvent) {\n    this._animationStateChanged.emit(event);\n  }\n\n  private _toggleClass(cssClass: string, add: boolean) {\n    this._elementRef.nativeElement.classList.toggle(cssClass, add);\n  }\n\n  private _validatePortalAttached() {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error('Attempting to attach bottom sheet content after content is already attached');\n    }\n  }\n\n  private _setPanelClass() {\n    const element: HTMLElement = this._elementRef.nativeElement;\n    element.classList.add(...coerceArray(this.bottomSheetConfig.panelClass || []));\n  }\n\n  /**\n   * Focuses the provided element. If the element is not focusable, it will add a tabIndex\n   * attribute to forcefully focus it. The attribute is removed after focus is moved.\n   * @param element The element to focus.\n   */\n  private _forceFocus(element: HTMLElement, options?: FocusOptions) {\n    if (!this._interactivityChecker.isFocusable(element)) {\n      element.tabIndex = -1;\n      // The tabindex attribute should be removed to avoid navigating to that element again\n      this._ngZone.runOutsideAngular(() => {\n        const callback = () => {\n          element.removeEventListener('blur', callback);\n          element.removeEventListener('mousedown', callback);\n          element.removeAttribute('tabindex');\n        };\n\n        element.addEventListener('blur', callback);\n        element.addEventListener('mousedown', callback);\n      });\n    }\n    element.focus(options);\n  }\n\n  /**\n   * Focuses the first element that matches the given selector within the focus trap.\n   * @param selector The CSS selector for the element to set focus to.\n   */\n  private _focusByCssSelector(selector: string, options?: FocusOptions) {\n    let elementToFocus = this._elementRef.nativeElement.querySelector(\n      selector,\n    ) as HTMLElement | null;\n    if (elementToFocus) {\n      this._forceFocus(elementToFocus, options);\n    }\n  }\n\n  /**\n   * Moves the focus inside the focus trap. When autoFocus is not set to 'bottom-sheet',\n   * if focus cannot be moved then focus will go to the bottom sheet container.\n   */\n  private _trapFocus() {\n    const element = this._elementRef.nativeElement;\n\n    if (!this._focusTrap) {\n      this._focusTrap = this._focusTrapFactory.create(element);\n    }\n\n    // If were to attempt to focus immediately, then the content of the bottom sheet would not\n    // yet be ready in instances where change detection has to run first. To deal with this,\n    // we simply wait for the microtask queue to be empty when setting focus when autoFocus\n    // isn't set to bottom sheet. If the element inside the bottom sheet can't be focused,\n    // then the container is focused so the user can't tab into other elements behind it.\n    switch (this.bottomSheetConfig.autoFocus) {\n      case false:\n      case 'dialog':\n        const activeElement = _getFocusedElementPierceShadowDom();\n        // Ensure that focus is on the bottom sheet container. It's possible that a different\n        // component tried to move focus while the open animation was running. See:\n        // https://github.com/angular/components/issues/16215. Note that we only want to do this\n        // if the focus isn't inside the bottom sheet already, because it's possible that the\n        // consumer specified `autoFocus` in order to move focus themselves.\n        if (activeElement !== element && !element.contains(activeElement)) {\n          element.focus();\n        }\n        break;\n      case true:\n      case 'first-tabbable':\n        this._focusTrap.focusInitialElementWhenReady();\n        break;\n      case 'first-heading':\n        this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');\n        break;\n      default:\n        this._focusByCssSelector(this.bottomSheetConfig.autoFocus!);\n        break;\n    }\n  }\n\n  /** Restores focus to the element that was focused before the bottom sheet was opened. */\n  private _restoreFocus() {\n    const toFocus = this._elementFocusedBeforeOpened;\n\n    // We need the extra check, because IE can set the `activeElement` to null in some cases.\n    if (this.bottomSheetConfig.restoreFocus && toFocus && typeof toFocus.focus === 'function') {\n      const activeElement = _getFocusedElementPierceShadowDom();\n      const element = this._elementRef.nativeElement;\n\n      // Make sure that focus is still inside the bottom sheet or is on the body (usually because a\n      // non-focusable element like the backdrop was clicked) before moving it. It's possible that\n      // the consumer moved it themselves before the animation was done, in which case we shouldn't\n      // do anything.\n      if (\n        !activeElement ||\n        activeElement === this._document.body ||\n        activeElement === element ||\n        element.contains(activeElement)\n      ) {\n        toFocus.focus();\n      }\n    }\n\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n    }\n  }\n\n  /** Saves a reference to the element that was focused before the bottom sheet was opened. */\n  private _savePreviouslyFocusedElement() {\n    this._elementFocusedBeforeOpened = _getFocusedElementPierceShadowDom();\n\n    // The `focus` method isn't available during server-side rendering.\n    if (this._elementRef.nativeElement.focus) {\n      this._ngZone.runOutsideAngular(() => {\n        Promise.resolve().then(() => this._elementRef.nativeElement.focus());\n      });\n    }\n  }\n}\n","<ng-template cdkPortalOutlet></ng-template>\r\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n@NgModule({\n  imports: [OverlayModule, MatCommonModule, PortalModule],\n  exports: [MatBottomSheetContainer, MatCommonModule],\n  declarations: [MatBottomSheetContainer],\n})\nexport class MatBottomSheetModule {}\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 {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n/**\n * Reference to a bottom sheet dispatched from the bottom sheet service.\n */\nexport class MatBottomSheetRef<T = any, R = any> {\n  /** Instance of the component making up the content of the bottom sheet. */\n  instance: T;\n\n  /**\n   * Instance of the component into which the bottom sheet content is projected.\n   * @docs-private\n   */\n  containerInstance: MatBottomSheetContainer;\n\n  /** Whether the user is allowed to close the bottom sheet. */\n  disableClose: boolean | undefined;\n\n  /** Subject for notifying the user that the bottom sheet has been dismissed. */\n  private readonly _afterDismissed = new Subject<R | undefined>();\n\n  /** Subject for notifying the user that the bottom sheet has opened and appeared. */\n  private readonly _afterOpened = new Subject<void>();\n\n  /** Result to be passed down to the `afterDismissed` stream. */\n  private _result: R | undefined;\n\n  /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n  private _closeFallbackTimeout: number;\n\n  constructor(containerInstance: MatBottomSheetContainer, private _overlayRef: OverlayRef) {\n    this.containerInstance = containerInstance;\n    this.disableClose = containerInstance.bottomSheetConfig.disableClose;\n\n    // Emit when opening animation completes\n    containerInstance._animationStateChanged\n      .pipe(\n        filter(event => event.phaseName === 'done' && event.toState === 'visible'),\n        take(1),\n      )\n      .subscribe(() => {\n        this._afterOpened.next();\n        this._afterOpened.complete();\n      });\n\n    // Dispose overlay when closing animation is complete\n    containerInstance._animationStateChanged\n      .pipe(\n        filter(event => event.phaseName === 'done' && event.toState === 'hidden'),\n        take(1),\n      )\n      .subscribe(() => {\n        clearTimeout(this._closeFallbackTimeout);\n        _overlayRef.dispose();\n      });\n\n    _overlayRef\n      .detachments()\n      .pipe(take(1))\n      .subscribe(() => {\n        this._afterDismissed.next(this._result);\n        this._afterDismissed.complete();\n      });\n\n    merge(\n      _overlayRef.backdropClick(),\n      _overlayRef.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE)),\n    ).subscribe(event => {\n      if (\n        !this.disableClose &&\n        (event.type !== 'keydown' || !hasModifierKey(event as KeyboardEvent))\n      ) {\n        event.preventDefault();\n        this.dismiss();\n      }\n    });\n  }\n\n  /**\n   * Dismisses the bottom sheet.\n   * @param result Data to be passed back to the bottom sheet opener.\n   */\n  dismiss(result?: R): void {\n    if (!this._afterDismissed.closed) {\n      // Transition the backdrop in parallel to the bottom sheet.\n      this.containerInstance._animationStateChanged\n        .pipe(\n          filter(event => event.phaseName === 'start'),\n          take(1),\n        )\n        .subscribe(event => {\n          // The logic that disposes of the overlay depends on the exit animation completing, however\n          // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n          // timeout which will clean everything up if the animation hasn't fired within the specified\n          // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n          // vast majority of cases the timeout will have been cleared before it has fired.\n          this._closeFallbackTimeout = setTimeout(() => {\n            this._overlayRef.dispose();\n          }, event.totalTime + 100);\n\n          this._overlayRef.detachBackdrop();\n        });\n\n      this._result = result;\n      this.containerInstance.exit();\n    }\n  }\n\n  /** Gets an observable that is notified when the bottom sheet is finished closing. */\n  afterDismissed(): Observable<R | undefined> {\n    return this._afterDismissed;\n  }\n\n  /** Gets an observable that is notified when the bottom sheet has opened and appeared. */\n  afterOpened(): Observable<void> {\n    return this._afterOpened;\n  }\n\n  /**\n   * Gets an observable that emits when the overlay's backdrop has been clicked.\n   */\n  backdropClick(): Observable<MouseEvent> {\n    return this._overlayRef.backdropClick();\n  }\n\n  /**\n   * Gets an observable that emits when keydown events are targeted on the overlay.\n   */\n  keydownEvents(): Observable<KeyboardEvent> {\n    return this._overlayRef.keydownEvents();\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 {Directionality} from '@angular/cdk/bidi';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {\n  ComponentRef,\n  Injectable,\n  Injector,\n  Optional,\n  SkipSelf,\n  TemplateRef,\n  InjectionToken,\n  Inject,\n  OnDestroy,\n  StaticProvider,\n  InjectFlags,\n} from '@angular/core';\nimport {of as observableOf} from 'rxjs';\nimport {MAT_BOTTOM_SHEET_DATA, MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheetModule} from './bottom-sheet-module';\nimport {MatBottomSheetRef} from './bottom-sheet-ref';\n\n/** Injection token that can be used to specify default bottom sheet options. */\nexport const MAT_BOTTOM_SHEET_DEFAULT_OPTIONS = new InjectionToken<MatBottomSheetConfig>(\n  'mat-bottom-sheet-default-options',\n);\n\n/**\n * Service to trigger Material Design bottom sheets.\n */\n@Injectable({providedIn: MatBottomSheetModule})\nexport class MatBottomSheet implements OnDestroy {\n  private _bottomSheetRefAtThisLevel: MatBottomSheetRef<any> | null = null;\n\n  /** Reference to the currently opened bottom sheet. */\n  get _openedBottomSheetRef(): MatBottomSheetRef<any> | null {\n    const parent = this._parentBottomSheet;\n    return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;\n  }\n\n  set _openedBottomSheetRef(value: MatBottomSheetRef<any> | null) {\n    if (this._parentBottomSheet) {\n      this._parentBottomSheet._openedBottomSheetRef = value;\n    } else {\n      this._bottomSheetRefAtThisLevel = value;\n    }\n  }\n\n  constructor(\n    private _overlay: Overlay,\n    private _injector: Injector,\n    @Optional() @SkipSelf() private _parentBottomSheet: MatBottomSheet,\n    @Optional()\n    @Inject(MAT_BOTTOM_SHEET_DEFAULT_OPTIONS)\n    private _defaultOptions?: MatBottomSheetConfig,\n  ) {}\n\n  /**\n   * Opens a bottom sheet containing the given component.\n   * @param component Type of the component to load into the bottom sheet.\n   * @param config Extra configuration options.\n   * @returns Reference to the newly-opened bottom sheet.\n   */\n  open<T, D = any, R = any>(\n    component: ComponentType<T>,\n    config?: MatBottomSheetConfig<D>,\n  ): MatBottomSheetRef<T, R>;\n\n  /**\n   * Opens a bottom sheet containing the given template.\n   * @param template TemplateRef to instantiate as the bottom sheet content.\n   * @param config Extra configuration options.\n   * @returns Reference to the newly-opened bottom sheet.\n   */\n  open<T, D = any, R = any>(\n    template: TemplateRef<T>,\n    config?: MatBottomSheetConfig<D>,\n  ): MatBottomSheetRef<T, R>;\n\n  open<T, D = any, R = any>(\n    componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n    config?: MatBottomSheetConfig<D>,\n  ): MatBottomSheetRef<T, R> {\n    const _config = _applyConfigDefaults(\n      this._defaultOptions || new MatBottomSheetConfig(),\n      config,\n    );\n    const overlayRef = this._createOverlay(_config);\n    const container = this._attachContainer(overlayRef, _config);\n    const ref = new MatBottomSheetRef<T, R>(container, overlayRef);\n\n    if (componentOrTemplateRef instanceof TemplateRef) {\n      container.attachTemplatePortal(\n        new TemplatePortal<T>(componentOrTemplateRef, null!, {\n          $implicit: _config.data,\n          bottomSheetRef: ref,\n        } as any),\n      );\n    } else {\n      const portal = new ComponentPortal(\n        componentOrTemplateRef,\n        undefined,\n        this._createInjector(_config, ref),\n      );\n      const contentRef = container.attachComponentPortal(portal);\n      ref.instance = contentRef.instance;\n    }\n\n    // When the bottom sheet is dismissed, clear the reference to it.\n    ref.afterDismissed().subscribe(() => {\n      // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.\n      if (this._openedBottomSheetRef == ref) {\n        this._openedBottomSheetRef = null;\n      }\n    });\n\n    if (this._openedBottomSheetRef) {\n      // If a bottom sheet is already in view, dismiss it and enter the\n      // new bottom sheet after exit animation is complete.\n      this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance.enter());\n      this._openedBottomSheetRef.dismiss();\n    } else {\n      // If no bottom sheet is in view, enter the new bottom sheet.\n      ref.containerInstance.enter();\n    }\n\n    this._openedBottomSheetRef = ref;\n\n    return ref;\n  }\n\n  /**\n   * Dismisses the currently-visible bottom sheet.\n   * @param result Data to pass to the bottom sheet instance.\n   */\n  dismiss<R = any>(result?: R): void {\n    if (this._openedBottomSheetRef) {\n      this._openedBottomSheetRef.dismiss(result);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this._bottomSheetRefAtThisLevel) {\n      this._bottomSheetRefAtThisLevel.dismiss();\n    }\n  }\n\n  /**\n   * Attaches the bottom sheet container component to the overlay.\n   */\n  private _attachContainer(\n    overlayRef: OverlayRef,\n    config: MatBottomSheetConfig,\n  ): MatBottomSheetContainer {\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n    const injector = Injector.create({\n      parent: userInjector || this._injector,\n      providers: [{provide: MatBottomSheetConfig, useValue: config}],\n    });\n\n    const containerPortal = new ComponentPortal(\n      MatBottomSheetContainer,\n      config.viewContainerRef,\n      injector,\n    );\n    const containerRef: ComponentRef<MatBottomSheetContainer> = overlayRef.attach(containerPortal);\n    return containerRef.instance;\n  }\n\n  /**\n   * Creates a new overlay and places it in the correct location.\n   * @param config The user-specified bottom sheet config.\n   */\n  private _createOverlay(config: MatBottomSheetConfig): OverlayRef {\n    const overlayConfig = new OverlayConfig({\n      direction: config.direction,\n      hasBackdrop: config.hasBackdrop,\n      disposeOnNavigation: config.closeOnNavigation,\n      maxWidth: '100%',\n      scrollStrategy: config.scrollStrategy || this._overlay.scrollStrategies.block(),\n      positionStrategy: this._overlay.position().global().centerHorizontally().bottom('0'),\n    });\n\n    if (config.backdropClass) {\n      overlayConfig.backdropClass = config.backdropClass;\n    }\n\n    return this._overlay.create(overlayConfig);\n  }\n\n  /**\n   * Creates an injector to be used inside of a bottom sheet component.\n   * @param config Config that was used to create the bottom sheet.\n   * @param bottomSheetRef Reference to the bottom sheet.\n   */\n  private _createInjector<T>(\n    config: MatBottomSheetConfig,\n    bottomSheetRef: MatBottomSheetRef<T>,\n  ): Injector {\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n    const providers: StaticProvider[] = [\n      {provide: MatBottomSheetRef, useValue: bottomSheetRef},\n      {provide: MAT_BOTTOM_SHEET_DATA, useValue: config.data},\n    ];\n\n    if (\n      config.direction &&\n      (!userInjector ||\n        !userInjector.get<Directionality | null>(Directionality, null, InjectFlags.Optional))\n    ) {\n      providers.push({\n        provide: Directionality,\n        useValue: {value: config.direction, change: observableOf()},\n      });\n    }\n\n    return Injector.create({parent: userInjector || this._injector, providers});\n  }\n}\n\n/**\n * Applies default options to the bottom sheet config.\n * @param defaults Object containing the default values to which to fall back.\n * @param config The configuration to which the defaults will be applied.\n * @returns The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(\n  defaults: MatBottomSheetConfig,\n  config?: MatBottomSheetConfig,\n): MatBottomSheetConfig {\n  return {...defaults, ...config};\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 './bottom-sheet-module';\nexport * from './bottom-sheet';\nexport * from './bottom-sheet-config';\nexport * from './bottom-sheet-container';\nexport * from './bottom-sheet-animations';\nexport * from './bottom-sheet-ref';\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 './public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.MatBottomSheetConfig","observableOf","i1"],"mappings":"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"}