Index: trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/dialog.js.map
===================================================================
--- trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/dialog.js.map	(revision 571e0df9a7a5e798c9941a85842f785177bedbbd)
+++ trip-planner-front/node_modules/@angular/material/__ivy_ngcc__/fesm2015/dialog.js.map	(revision 6a3a178323fd905112b5392bd9d3cb83b66ef2d3)
@@ -1,1 +1,1 @@
-{"version":3,"file":"dialog.js","sources":["../../../../../../src/material/dialog/dialog-config.ts","../../../../../../src/material/dialog/dialog-animations.ts","../../../../../../src/material/dialog/dialog-container.ts","../../../../../../src/material/dialog/dialog-ref.ts","../../../../../../src/material/dialog/dialog.ts","../../../../../../src/material/dialog/dialog-content-directives.ts","../../../../../../src/material/dialog/dialog-module.ts","../../../../../../src/material/dialog/public-api.ts","../../../../../../src/material/dialog/index.ts"],"names":["observableOf"],"mappings":"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","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, ComponentFactoryResolver} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\n\n/** Valid ARIA roles for a dialog element. */\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n  /** Override for the dialog's top position. */\n  top?: string;\n\n  /** Override for the dialog's bottom position. */\n  bottom?: string;\n\n  /** Override for the dialog's left position. */\n  left?: string;\n\n  /** Override for the dialog's right position. */\n  right?: string;\n}\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nexport class MatDialogConfig<D = any> {\n\n  /**\n   * Where the attached component should live in Angular's *logical* component tree.\n   * This affects what is available for injection and the change detection order for the\n   * component instantiated inside of the dialog. This does not affect where the dialog\n   * content will be rendered.\n   */\n  viewContainerRef?: ViewContainerRef;\n\n  /** ID for the dialog. If omitted, a unique one will be generated. */\n  id?: string;\n\n  /** The ARIA role of the dialog element. */\n  role?: DialogRole = 'dialog';\n\n  /** Custom class for the overlay pane. */\n  panelClass?: string | string[] = '';\n\n  /** Whether the dialog has a backdrop. */\n  hasBackdrop?: boolean = true;\n\n  /** Custom class for the backdrop. */\n  backdropClass?: string | string[] = '';\n\n  /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n  disableClose?: boolean = false;\n\n  /** Width of the dialog. */\n  width?: string = '';\n\n  /** Height of the dialog. */\n  height?: string = '';\n\n  /** Min-width of the dialog. If a number is provided, assumes pixel units. */\n  minWidth?: number | string;\n\n  /** Min-height of the dialog. If a number is provided, assumes pixel units. */\n  minHeight?: number | string;\n\n  /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n  maxWidth?: number | string = '80vw';\n\n  /** Max-height of the dialog. If a number is provided, assumes pixel units. */\n  maxHeight?: number | string;\n\n  /** Position overrides. */\n  position?: DialogPosition;\n\n  /** Data being injected into the child component. */\n  data?: D | null = null;\n\n  /** Layout direction for the dialog's content. */\n  direction?: Direction;\n\n  /** ID of the element that describes the dialog. */\n  ariaDescribedBy?: string | null = null;\n\n  /** ID of the element that labels the dialog. */\n  ariaLabelledBy?: string | null = null;\n\n  /** Aria label to assign to the dialog element. */\n  ariaLabel?: string | null = null;\n\n  /** Whether the dialog should focus the first focusable element on open. */\n  autoFocus?: boolean = true;\n\n  /**\n   * Whether the dialog 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 dialog. */\n  scrollStrategy?: ScrollStrategy;\n\n  /**\n   * Whether the dialog 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  /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */\n  componentFactoryResolver?: ComponentFactoryResolver;\n\n  // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\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 MatDialog.\n * @docs-private\n */\nexport const matDialogAnimations: {\n  readonly dialogContainer: AnimationTriggerMetadata;\n} = {\n  /** Animation that is applied on the dialog container by default. */\n  dialogContainer: trigger('dialogContainer', [\n    // Note: The `enter` animation transitions to `transform: none`, because for some reason\n    // specifying the transform explicitly, causes IE both to blur the dialog content and\n    // decimate the animation performance. Leaving it as `none` solves both issues.\n    state('void, exit', style({opacity: 0, transform: 'scale(0.7)'})),\n    state('enter', style({transform: 'none'})),\n    transition('* => enter', animate('150ms cubic-bezier(0, 0, 0.2, 1)',\n        style({transform: 'none', opacity: 1}))),\n    transition('* => void, * => exit',\n        animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({opacity: 0}))),\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 {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\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  Directive,\n  ElementRef,\n  EmbeddedViewRef,\n  EventEmitter,\n  Inject,\n  Optional,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {matDialogAnimations} from './dialog-animations';\nimport {MatDialogConfig} from './dialog-config';\n\n/** Event that captures the state of dialog container animations. */\ninterface DialogAnimationEvent {\n  state: 'opened' | 'opening' | 'closing' | 'closed';\n  totalTime: number;\n}\n\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalOutlet without an origin.\n * @docs-private\n */\nexport function throwMatDialogContentAlreadyAttachedError() {\n  throw Error('Attempting to attach dialog content after content is already attached');\n}\n\n/**\n * Base class for the `MatDialogContainer`. The base class does not implement\n * animations as these are left to implementers of the dialog container.\n */\n@Directive()\nexport abstract class _MatDialogContainerBase extends BasePortalOutlet {\n  protected _document: Document;\n\n  /** The portal outlet inside of this container into which the dialog content will be loaded. */\n  @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n  /** The class that traps and manages focus within the dialog. */\n  private _focusTrap: FocusTrap;\n\n  /** Emits when an animation state changes. */\n  _animationStateChanged = new EventEmitter<DialogAnimationEvent>();\n\n  /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n  private _elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n  /**\n   * Type of interaction that led to the dialog being closed. This is used to determine\n   * whether the focus style will be applied when returning focus to its original location\n   * after the dialog is closed.\n   */\n  _closeInteractionType: FocusOrigin|null = null;\n\n  /** ID of the element that should be considered as the dialog's label. */\n  _ariaLabelledBy: string | null;\n\n  /** ID for the container DOM element. */\n  _id: string;\n\n  constructor(\n    protected _elementRef: ElementRef,\n    protected _focusTrapFactory: FocusTrapFactory,\n    protected _changeDetectorRef: ChangeDetectorRef,\n    @Optional() @Inject(DOCUMENT) _document: any,\n    /** The dialog configuration. */\n    public _config: MatDialogConfig,\n    private _focusMonitor?: FocusMonitor) {\n\n    super();\n    this._ariaLabelledBy = _config.ariaLabelledBy || null;\n    this._document = _document;\n  }\n\n  /** Starts the dialog exit animation. */\n  abstract _startExitAnimation(): void;\n\n  /** Initializes the dialog container with the attached content. */\n  _initializeWithAttachedContent() {\n    this._setupFocusTrap();\n    // Save the previously focused element. This element will be re-focused\n    // when the dialog closes.\n    this._capturePreviouslyFocusedElement();\n    // Move focus onto the dialog immediately in order to prevent the user\n    // from accidentally opening multiple dialogs at the same time.\n    this._focusDialogContainer();\n  }\n\n  /**\n   * Attach a ComponentPortal as content to this dialog container.\n   * @param portal Portal to be attached as the dialog content.\n   */\n  attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throwMatDialogContentAlreadyAttachedError();\n    }\n\n    return this._portalOutlet.attachComponentPortal(portal);\n  }\n\n  /**\n   * Attach a TemplatePortal as content to this dialog container.\n   * @param portal Portal to be attached as the dialog content.\n   */\n  attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throwMatDialogContentAlreadyAttachedError();\n    }\n\n    return this._portalOutlet.attachTemplatePortal(portal);\n  }\n\n  /**\n   * Attaches a DOM portal to the dialog container.\n   * @param portal Portal to be attached.\n   * @deprecated To be turned into a method.\n   * @breaking-change 10.0.0\n   */\n  override attachDomPortal = (portal: DomPortal) => {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throwMatDialogContentAlreadyAttachedError();\n    }\n\n    return this._portalOutlet.attachDomPortal(portal);\n  }\n\n  /** Moves focus back into the dialog if it was moved out. */\n  _recaptureFocus() {\n    if (!this._containsFocus()) {\n      const focusContainer = !this._config.autoFocus || !this._focusTrap.focusInitialElement();\n\n      if (focusContainer) {\n        this._elementRef.nativeElement.focus();\n      }\n    }\n  }\n\n  /** Moves the focus inside the focus trap. */\n  protected _trapFocus() {\n    // If we were to attempt to focus immediately, then the content of the dialog would not yet be\n    // ready in instances where change detection has to run first. To deal with this, we simply\n    // wait for the microtask queue to be empty.\n    if (this._config.autoFocus) {\n      this._focusTrap.focusInitialElementWhenReady();\n    } else if (!this._containsFocus()) {\n      // Otherwise ensure that focus is on the dialog 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 dialog already, because it's possible that the consumer\n      // turned off `autoFocus` in order to move focus themselves.\n      this._elementRef.nativeElement.focus();\n    }\n  }\n\n  /** Restores focus to the element that was focused before the dialog opened. */\n  protected _restoreFocus() {\n    const previousElement = this._elementFocusedBeforeDialogWasOpened;\n\n    // We need the extra check, because IE can set the `activeElement` to null in some cases.\n    if (this._config.restoreFocus && previousElement &&\n        typeof previousElement.focus === 'function') {\n      const activeElement = _getFocusedElementPierceShadowDom();\n      const element = this._elementRef.nativeElement;\n\n      // Make sure that focus is still inside the dialog 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 (!activeElement || activeElement === this._document.body || activeElement === element ||\n          element.contains(activeElement)) {\n        if (this._focusMonitor) {\n          this._focusMonitor.focusVia(previousElement, this._closeInteractionType);\n          this._closeInteractionType = null;\n        } else {\n          previousElement.focus();\n        }\n      }\n    }\n\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n    }\n  }\n\n  /** Sets up the focus trap. */\n  private _setupFocusTrap() {\n    this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n  }\n\n  /** Captures the element that was focused before the dialog was opened. */\n  private _capturePreviouslyFocusedElement() {\n    if (this._document) {\n      this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();\n    }\n  }\n\n  /** Focuses the dialog container. */\n  private _focusDialogContainer() {\n    // Note that there is no focus method when rendering on the server.\n    if (this._elementRef.nativeElement.focus) {\n      this._elementRef.nativeElement.focus();\n    }\n  }\n\n  /** Returns whether focus is inside the dialog. */\n  private _containsFocus() {\n    const element = this._elementRef.nativeElement;\n    const activeElement = _getFocusedElementPierceShadowDom();\n    return element === activeElement || element.contains(activeElement);\n  }\n}\n\n/**\n * Internal component that wraps user-provided dialog content.\n * Animation is based on https://material.io/guidelines/motion/choreography.html.\n * @docs-private\n */\n@Component({\n  selector: 'mat-dialog-container',\n  templateUrl: 'dialog-container.html',\n  styleUrls: ['dialog.css'],\n  encapsulation: ViewEncapsulation.None,\n  // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n  // tslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  animations: [matDialogAnimations.dialogContainer],\n  host: {\n    'class': 'mat-dialog-container',\n    'tabindex': '-1',\n    'aria-modal': 'true',\n    '[id]': '_id',\n    '[attr.role]': '_config.role',\n    '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',\n    '[attr.aria-label]': '_config.ariaLabel',\n    '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n    '[@dialogContainer]': '_state',\n    '(@dialogContainer.start)': '_onAnimationStart($event)',\n    '(@dialogContainer.done)': '_onAnimationDone($event)',\n  },\n})\nexport class MatDialogContainer extends _MatDialogContainerBase {\n  /** State of the dialog animation. */\n  _state: 'void' | 'enter' | 'exit' = 'enter';\n\n  /** Callback, invoked whenever an animation on the host completes. */\n  _onAnimationDone({toState, totalTime}: AnimationEvent) {\n    if (toState === 'enter') {\n      this._trapFocus();\n      this._animationStateChanged.next({state: 'opened', totalTime});\n    } else if (toState === 'exit') {\n      this._restoreFocus();\n      this._animationStateChanged.next({state: 'closed', totalTime});\n    }\n  }\n\n  /** Callback, invoked when an animation on the host starts. */\n  _onAnimationStart({toState, totalTime}: AnimationEvent) {\n    if (toState === 'enter') {\n      this._animationStateChanged.next({state: 'opening', totalTime});\n    } else if (toState === 'exit' || toState === 'void') {\n      this._animationStateChanged.next({state: 'closing', totalTime});\n    }\n  }\n\n  /** Starts the dialog exit animation. */\n  _startExitAnimation(): void {\n    this._state = 'exit';\n\n    // Mark the container for check so it can react if the\n    // view container is using OnPush change detection.\n    this._changeDetectorRef.markForCheck();\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 {FocusOrigin} from '@angular/cdk/a11y';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {GlobalPositionStrategy, OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {DialogPosition} from './dialog-config';\nimport {_MatDialogContainerBase} from './dialog-container';\n\n\n// TODO(jelbourn): resizing\n\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n\n/** Possible states of the lifecycle of a dialog. */\nexport const enum MatDialogState {OPEN, CLOSING, CLOSED}\n\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nexport class MatDialogRef<T, R = any> {\n  /** The instance of component opened into the dialog. */\n  componentInstance: T;\n\n  /** Whether the user is allowed to close the dialog. */\n  disableClose: boolean | undefined = this._containerInstance._config.disableClose;\n\n  /** Subject for notifying the user that the dialog has finished opening. */\n  private readonly _afterOpened = new Subject<void>();\n\n  /** Subject for notifying the user that the dialog has finished closing. */\n  private readonly _afterClosed = new Subject<R | undefined>();\n\n  /** Subject for notifying the user that the dialog has started closing. */\n  private readonly _beforeClosed = new Subject<R | undefined>();\n\n  /** Result to be passed to afterClosed. */\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  /** Current state of the dialog. */\n  private _state = MatDialogState.OPEN;\n\n  constructor(\n    private _overlayRef: OverlayRef,\n    public _containerInstance: _MatDialogContainerBase,\n    /** Id of the dialog. */\n    readonly id: string = `mat-dialog-${uniqueId++}`) {\n\n    // Pass the id along to the container.\n    _containerInstance._id = id;\n\n    // Emit when opening animation completes\n    _containerInstance._animationStateChanged.pipe(\n      filter(event => event.state === 'opened'),\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.pipe(\n      filter(event => event.state === 'closed'),\n      take(1)\n    ).subscribe(() => {\n      clearTimeout(this._closeFallbackTimeout);\n      this._finishDialogClose();\n    });\n\n    _overlayRef.detachments().subscribe(() => {\n      this._beforeClosed.next(this._result);\n      this._beforeClosed.complete();\n      this._afterClosed.next(this._result);\n      this._afterClosed.complete();\n      this.componentInstance = null!;\n      this._overlayRef.dispose();\n    });\n\n    _overlayRef.keydownEvents()\n      .pipe(filter(event => {\n        return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n      }))\n      .subscribe(event => {\n        event.preventDefault();\n        _closeDialogVia(this, 'keyboard');\n      });\n\n    _overlayRef.backdropClick().subscribe(() => {\n      if (this.disableClose) {\n        this._containerInstance._recaptureFocus();\n      } else {\n        _closeDialogVia(this, 'mouse');\n      }\n    });\n  }\n\n  /**\n   * Close the dialog.\n   * @param dialogResult Optional result to return to the dialog opener.\n   */\n  close(dialogResult?: R): void {\n    this._result = dialogResult;\n\n    // Transition the backdrop in parallel to the dialog.\n    this._containerInstance._animationStateChanged.pipe(\n      filter(event => event.state === 'closing'),\n      take(1)\n    )\n    .subscribe(event => {\n      this._beforeClosed.next(dialogResult);\n      this._beforeClosed.complete();\n      this._overlayRef.detachBackdrop();\n\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 the chance to fire.\n      this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(),\n          event.totalTime + 100);\n    });\n\n    this._state = MatDialogState.CLOSING;\n    this._containerInstance._startExitAnimation();\n  }\n\n  /**\n   * Gets an observable that is notified when the dialog is finished opening.\n   */\n  afterOpened(): Observable<void> {\n    return this._afterOpened;\n  }\n\n  /**\n   * Gets an observable that is notified when the dialog is finished closing.\n   */\n  afterClosed(): Observable<R | undefined> {\n    return this._afterClosed;\n  }\n\n  /**\n   * Gets an observable that is notified when the dialog has started closing.\n   */\n  beforeClosed(): Observable<R | undefined> {\n    return this._beforeClosed;\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   * Updates the dialog's position.\n   * @param position New dialog position.\n   */\n  updatePosition(position?: DialogPosition): this {\n    let strategy = this._getPositionStrategy();\n\n    if (position && (position.left || position.right)) {\n      position.left ? strategy.left(position.left) : strategy.right(position.right);\n    } else {\n      strategy.centerHorizontally();\n    }\n\n    if (position && (position.top || position.bottom)) {\n      position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n    } else {\n      strategy.centerVertically();\n    }\n\n    this._overlayRef.updatePosition();\n\n    return this;\n  }\n\n  /**\n   * Updates the dialog's width and height.\n   * @param width New width of the dialog.\n   * @param height New height of the dialog.\n   */\n  updateSize(width: string = '', height: string = ''): this {\n    this._overlayRef.updateSize({width, height});\n    this._overlayRef.updatePosition();\n    return this;\n  }\n\n  /** Add a CSS class or an array of classes to the overlay pane. */\n  addPanelClass(classes: string | string[]): this {\n    this._overlayRef.addPanelClass(classes);\n    return this;\n  }\n\n  /** Remove a CSS class or an array of classes from the overlay pane. */\n  removePanelClass(classes: string | string[]): this {\n    this._overlayRef.removePanelClass(classes);\n    return this;\n  }\n\n  /** Gets the current state of the dialog's lifecycle. */\n  getState(): MatDialogState {\n    return this._state;\n  }\n\n  /**\n   * Finishes the dialog close by updating the state of the dialog\n   * and disposing the overlay.\n   */\n  private _finishDialogClose() {\n    this._state = MatDialogState.CLOSED;\n    this._overlayRef.dispose();\n  }\n\n  /** Fetches the position strategy object from the overlay ref. */\n  private _getPositionStrategy(): GlobalPositionStrategy {\n    return this._overlayRef.getConfig().positionStrategy as GlobalPositionStrategy;\n  }\n}\n\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nexport function _closeDialogVia<R>(ref: MatDialogRef<R>, interactionType: FocusOrigin, result?: R) {\n  // Some mock dialog ref instances in tests do not have the `_containerInstance` property.\n  // For those, we keep the behavior as is and do not deal with the interaction type.\n  if (ref._containerInstance !== undefined) {\n    ref._containerInstance._closeInteractionType = interactionType;\n  }\n  return ref.close(result);\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 {\n  Overlay,\n  OverlayConfig,\n  OverlayContainer,\n  OverlayRef,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {Location} from '@angular/common';\nimport {\n  Directive,\n  Inject,\n  Injectable,\n  InjectFlags,\n  InjectionToken,\n  Injector,\n  OnDestroy,\n  Optional,\n  SkipSelf,\n  StaticProvider,\n  TemplateRef,\n  Type,\n} from '@angular/core';\nimport {defer, Observable, of as observableOf, Subject} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\nimport {MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer, _MatDialogContainerBase} from './dialog-container';\nimport {MatDialogRef} from './dialog-ref';\n\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nexport const MAT_DIALOG_DATA = new InjectionToken<any>('MatDialogData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const MAT_DIALOG_DEFAULT_OPTIONS =\n    new InjectionToken<MatDialogConfig>('mat-dialog-default-options');\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const MAT_DIALOG_SCROLL_STRATEGY =\n    new InjectionToken<() => ScrollStrategy>('mat-dialog-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay):\n  () => ScrollStrategy {\n  return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n  provide: MAT_DIALOG_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * Base class for dialog services. The base dialog service allows\n * for arbitrary dialog refs and dialog container components.\n */\n@Directive()\nexport abstract class _MatDialogBase<C extends _MatDialogContainerBase> implements OnDestroy {\n  private _openDialogsAtThisLevel: MatDialogRef<any>[] = [];\n  private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n  private readonly _afterOpenedAtThisLevel = new Subject<MatDialogRef<any>>();\n  private _ariaHiddenElements = new Map<Element, string|null>();\n  private _scrollStrategy: () => ScrollStrategy;\n\n  /** Keeps track of the currently-open dialogs. */\n  get openDialogs(): MatDialogRef<any>[] {\n    return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n  }\n\n  /** Stream that emits when a dialog has been opened. */\n  get afterOpened(): Subject<MatDialogRef<any>> {\n    return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n  }\n\n  _getAfterAllClosed(): Subject<void> {\n    const parent = this._parentDialog;\n    return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n  }\n\n  // TODO (jelbourn): tighten the typing right-hand side of this expression.\n  /**\n   * Stream that emits when all open dialog have finished closing.\n   * Will emit on subscribe if there are no open dialogs to begin with.\n   */\n  readonly afterAllClosed: Observable<void> = defer(() => this.openDialogs.length ?\n      this._getAfterAllClosed() :\n      this._getAfterAllClosed().pipe(startWith(undefined))) as Observable<any>;\n\n  constructor(\n      private _overlay: Overlay,\n      private _injector: Injector,\n      private _defaultOptions: MatDialogConfig|undefined,\n      private _parentDialog: _MatDialogBase<C>|undefined,\n      private _overlayContainer: OverlayContainer,\n      scrollStrategy: any,\n      private _dialogRefConstructor: Type<MatDialogRef<any>>,\n      private _dialogContainerType: Type<C>,\n      private _dialogDataToken: InjectionToken<any>) {\n    this._scrollStrategy = scrollStrategy;\n  }\n\n  /**\n   * Opens a modal dialog containing the given component.\n   * @param component Type of the component to load into the dialog.\n   * @param config Extra configuration options.\n   * @returns Reference to the newly-opened dialog.\n   */\n  open<T, D = any, R = any>(component: ComponentType<T>,\n                            config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n  /**\n   * Opens a modal dialog containing the given template.\n   * @param template TemplateRef to instantiate as the dialog content.\n   * @param config Extra configuration options.\n   * @returns Reference to the newly-opened dialog.\n   */\n  open<T, D = any, R = any>(template: TemplateRef<T>,\n                            config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n  open<T, D = any, R = any>(template: ComponentType<T> | TemplateRef<T>,\n                            config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n  open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n                            config?: MatDialogConfig<D>): MatDialogRef<T, R> {\n    config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());\n\n    if (config.id && this.getDialogById(config.id) &&\n      (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n    }\n\n    const overlayRef = this._createOverlay(config);\n    const dialogContainer = this._attachDialogContainer(overlayRef, config);\n    const dialogRef = this._attachDialogContent<T, R>(componentOrTemplateRef,\n                                                      dialogContainer,\n                                                      overlayRef,\n                                                      config);\n\n    // If this is the first dialog that we're opening, hide all the non-overlay content.\n    if (!this.openDialogs.length) {\n      this._hideNonDialogContentFromAssistiveTechnology();\n    }\n\n    this.openDialogs.push(dialogRef);\n    dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));\n    this.afterOpened.next(dialogRef);\n\n    // Notify the dialog container that the content has been attached.\n    dialogContainer._initializeWithAttachedContent();\n\n    return dialogRef;\n  }\n\n  /**\n   * Closes all of the currently-open dialogs.\n   */\n  closeAll(): void {\n    this._closeDialogs(this.openDialogs);\n  }\n\n  /**\n   * Finds an open dialog by its id.\n   * @param id ID to use when looking up the dialog.\n   */\n  getDialogById(id: string): MatDialogRef<any> | undefined {\n    return this.openDialogs.find(dialog => dialog.id === id);\n  }\n\n  ngOnDestroy() {\n    // Only close the dialogs at this level on destroy\n    // since the parent service may still be active.\n    this._closeDialogs(this._openDialogsAtThisLevel);\n    this._afterAllClosedAtThisLevel.complete();\n    this._afterOpenedAtThisLevel.complete();\n  }\n\n  /**\n   * Creates the overlay into which the dialog will be loaded.\n   * @param config The dialog configuration.\n   * @returns A promise resolving to the OverlayRef for the created overlay.\n   */\n  private _createOverlay(config: MatDialogConfig): OverlayRef {\n    const overlayConfig = this._getOverlayConfig(config);\n    return this._overlay.create(overlayConfig);\n  }\n\n  /**\n   * Creates an overlay config from a dialog config.\n   * @param dialogConfig The dialog configuration.\n   * @returns The overlay configuration.\n   */\n  private _getOverlayConfig(dialogConfig: MatDialogConfig): OverlayConfig {\n    const state = new OverlayConfig({\n      positionStrategy: this._overlay.position().global(),\n      scrollStrategy: dialogConfig.scrollStrategy || this._scrollStrategy(),\n      panelClass: dialogConfig.panelClass,\n      hasBackdrop: dialogConfig.hasBackdrop,\n      direction: dialogConfig.direction,\n      minWidth: dialogConfig.minWidth,\n      minHeight: dialogConfig.minHeight,\n      maxWidth: dialogConfig.maxWidth,\n      maxHeight: dialogConfig.maxHeight,\n      disposeOnNavigation: dialogConfig.closeOnNavigation\n    });\n\n    if (dialogConfig.backdropClass) {\n      state.backdropClass = dialogConfig.backdropClass;\n    }\n\n    return state;\n  }\n\n  /**\n   * Attaches a dialog container to a dialog's already-created overlay.\n   * @param overlay Reference to the dialog's underlying overlay.\n   * @param config The dialog configuration.\n   * @returns A promise resolving to a ComponentRef for the attached container.\n   */\n  private _attachDialogContainer(overlay: OverlayRef, config: MatDialogConfig): C {\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n    const injector = Injector.create({\n      parent: userInjector || this._injector,\n      providers: [{provide: MatDialogConfig, useValue: config}]\n    });\n\n    const containerPortal = new ComponentPortal(this._dialogContainerType,\n        config.viewContainerRef, injector, config.componentFactoryResolver);\n    const containerRef = overlay.attach<C>(containerPortal);\n\n    return containerRef.instance;\n  }\n\n  /**\n   * Attaches the user-provided component to the already-created dialog container.\n   * @param componentOrTemplateRef The type of component being loaded into the dialog,\n   *     or a TemplateRef to instantiate as the content.\n   * @param dialogContainer Reference to the wrapping dialog container.\n   * @param overlayRef Reference to the overlay in which the dialog resides.\n   * @param config The dialog configuration.\n   * @returns A promise resolving to the MatDialogRef that should be returned to the user.\n   */\n  private _attachDialogContent<T, R>(\n      componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n      dialogContainer: C,\n      overlayRef: OverlayRef,\n      config: MatDialogConfig): MatDialogRef<T, R> {\n\n    // Create a reference to the dialog we're creating in order to give the user a handle\n    // to modify and close it.\n    const dialogRef = new this._dialogRefConstructor(overlayRef, dialogContainer, config.id);\n\n    if (componentOrTemplateRef instanceof TemplateRef) {\n      dialogContainer.attachTemplatePortal(\n        new TemplatePortal<T>(componentOrTemplateRef, null!,\n          <any>{$implicit: config.data, dialogRef}));\n    } else {\n      const injector = this._createInjector<T>(config, dialogRef, dialogContainer);\n      const contentRef = dialogContainer.attachComponentPortal<T>(\n          new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector));\n      dialogRef.componentInstance = contentRef.instance;\n    }\n\n    dialogRef\n      .updateSize(config.width, config.height)\n      .updatePosition(config.position);\n\n    return dialogRef;\n  }\n\n  /**\n   * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n   * of a dialog to close itself and, optionally, to return a value.\n   * @param config Config object that is used to construct the dialog.\n   * @param dialogRef Reference to the dialog.\n   * @param dialogContainer Dialog container element that wraps all of the contents.\n   * @returns The custom injector that can be used inside the dialog.\n   */\n  private _createInjector<T>(\n      config: MatDialogConfig,\n      dialogRef: MatDialogRef<T>,\n      dialogContainer: C): Injector {\n\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n    // The dialog container should be provided as the dialog container and the dialog's\n    // content are created out of the same `ViewContainerRef` and as such, are siblings\n    // for injector purposes. To allow the hierarchy that is expected, the dialog\n    // container is explicitly provided in the injector.\n    const providers: StaticProvider[] = [\n      {provide: this._dialogContainerType, useValue: dialogContainer},\n      {provide: this._dialogDataToken, useValue: config.data},\n      {provide: this._dialogRefConstructor, useValue: dialogRef}\n    ];\n\n    if (config.direction && (!userInjector ||\n        !userInjector.get<Directionality | null>(Directionality, null, InjectFlags.Optional))) {\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   * Removes a dialog from the array of open dialogs.\n   * @param dialogRef Dialog to be removed.\n   */\n  private _removeOpenDialog(dialogRef: MatDialogRef<any>) {\n    const index = this.openDialogs.indexOf(dialogRef);\n\n    if (index > -1) {\n      this.openDialogs.splice(index, 1);\n\n      // If all the dialogs were closed, remove/restore the `aria-hidden`\n      // to a the siblings and emit to the `afterAllClosed` stream.\n      if (!this.openDialogs.length) {\n        this._ariaHiddenElements.forEach((previousValue, element) => {\n          if (previousValue) {\n            element.setAttribute('aria-hidden', previousValue);\n          } else {\n            element.removeAttribute('aria-hidden');\n          }\n        });\n\n        this._ariaHiddenElements.clear();\n        this._getAfterAllClosed().next();\n      }\n    }\n  }\n\n  /**\n   * Hides all of the content that isn't an overlay from assistive technology.\n   */\n  private _hideNonDialogContentFromAssistiveTechnology() {\n    const overlayContainer = this._overlayContainer.getContainerElement();\n\n    // Ensure that the overlay container is attached to the DOM.\n    if (overlayContainer.parentElement) {\n      const siblings = overlayContainer.parentElement.children;\n\n      for (let i = siblings.length - 1; i > -1; i--) {\n        let sibling = siblings[i];\n\n        if (sibling !== overlayContainer &&\n          sibling.nodeName !== 'SCRIPT' &&\n          sibling.nodeName !== 'STYLE' &&\n          !sibling.hasAttribute('aria-live')) {\n\n          this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n          sibling.setAttribute('aria-hidden', 'true');\n        }\n      }\n    }\n  }\n\n  /** Closes all of the dialogs in an array. */\n  private _closeDialogs(dialogs: MatDialogRef<any>[]) {\n    let i = dialogs.length;\n\n    while (i--) {\n      // The `_openDialogs` property isn't updated after close until the rxjs subscription\n      // runs on the next microtask, in addition to modifying the array as we're going\n      // through it. We loop through all of them and call close without assuming that\n      // they'll be removed from the list instantaneously.\n      dialogs[i].close();\n    }\n  }\n\n}\n\n/**\n * Service to open Material Design modal dialogs.\n */\n@Injectable()\nexport class MatDialog extends _MatDialogBase<MatDialogContainer> {\n  constructor(\n      overlay: Overlay,\n      injector: Injector,\n      /**\n       * @deprecated `_location` parameter to be removed.\n       * @breaking-change 10.0.0\n       */\n      @Optional() location: Location,\n      @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) defaultOptions: MatDialogConfig,\n      @Inject(MAT_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n      @Optional() @SkipSelf() parentDialog: MatDialog,\n      overlayContainer: OverlayContainer) {\n    super(overlay, injector, defaultOptions, parentDialog, overlayContainer, scrollStrategy,\n        MatDialogRef, MatDialogContainer, MAT_DIALOG_DATA);\n  }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default options provided.\n * @returns The new configuration object.\n */\nfunction _applyConfigDefaults(\n    config?: MatDialogConfig, defaultOptions?: MatDialogConfig): MatDialogConfig {\n  return {...defaultOptions, ...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\nimport {\n  Directive,\n  Input,\n  OnChanges,\n  OnInit,\n  Optional,\n  SimpleChanges,\n  ElementRef,\n} from '@angular/core';\nimport {MatDialog} from './dialog';\nimport {_closeDialogVia, MatDialogRef} from './dialog-ref';\n\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n\n/**\n * Button that will close the current dialog.\n */\n@Directive({\n  selector: '[mat-dialog-close], [matDialogClose]',\n  exportAs: 'matDialogClose',\n  host: {\n    '(click)': '_onButtonClick($event)',\n    '[attr.aria-label]': 'ariaLabel || null',\n    '[attr.type]': 'type',\n  }\n})\nexport class MatDialogClose implements OnInit, OnChanges {\n  /** Screenreader label for the button. */\n  @Input('aria-label') ariaLabel: string;\n\n  /** Default to \"button\" to prevents accidental form submits. */\n  @Input() type: 'submit' | 'button' | 'reset' = 'button';\n\n  /** Dialog close input. */\n  @Input('mat-dialog-close') dialogResult: any;\n\n  @Input('matDialogClose') _matDialogClose: any;\n\n  constructor(\n\n    /**\n     * Reference to the containing dialog.\n     * @deprecated `dialogRef` property to become private.\n     * @breaking-change 13.0.0\n     */\n    // The dialog title directive is always used in combination with a `MatDialogRef`.\n    // tslint:disable-next-line: lightweight-tokens\n    @Optional() public dialogRef: MatDialogRef<any>,\n    private _elementRef: ElementRef<HTMLElement>,\n    private _dialog: MatDialog) {}\n\n  ngOnInit() {\n    if (!this.dialogRef) {\n      // When this directive is included in a dialog via TemplateRef (rather than being\n      // in a Component), the DialogRef isn't available via injection because embedded\n      // views cannot be given a custom injector. Instead, we look up the DialogRef by\n      // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n      // be resolved at constructor time.\n      this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n\n    if (proxiedChange) {\n      this.dialogResult = proxiedChange.currentValue;\n    }\n  }\n\n  _onButtonClick(event: MouseEvent) {\n    // Determinate the focus origin using the click event, because using the FocusMonitor will\n    // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n    // dialog, and therefore clicking the button won't result in a focus change. This means that\n    // the FocusMonitor won't detect any origin change, and will always output `program`.\n    _closeDialogVia(this.dialogRef,\n        event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);\n  }\n}\n\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\n@Directive({\n  selector: '[mat-dialog-title], [matDialogTitle]',\n  exportAs: 'matDialogTitle',\n  host: {\n    'class': 'mat-dialog-title',\n    '[id]': 'id',\n  },\n})\nexport class MatDialogTitle implements OnInit {\n  /** Unique id for the dialog title. If none is supplied, it will be auto-generated. */\n  @Input() id: string = `mat-dialog-title-${dialogElementUid++}`;\n\n  constructor(\n      // The dialog title directive is always used in combination with a `MatDialogRef`.\n      // tslint:disable-next-line: lightweight-tokens\n      @Optional() private _dialogRef: MatDialogRef<any>,\n      private _elementRef: ElementRef<HTMLElement>,\n      private _dialog: MatDialog) {}\n\n  ngOnInit() {\n    if (!this._dialogRef) {\n      this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n    }\n\n    if (this._dialogRef) {\n      Promise.resolve().then(() => {\n        const container = this._dialogRef._containerInstance;\n\n        if (container && !container._ariaLabelledBy) {\n          container._ariaLabelledBy = this.id;\n        }\n      });\n    }\n  }\n}\n\n\n/**\n * Scrollable content container of a dialog.\n */\n@Directive({\n  selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n  host: {'class': 'mat-dialog-content'}\n})\nexport class MatDialogContent {}\n\n\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\n@Directive({\n  selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n  host: {'class': 'mat-dialog-actions'}\n})\nexport class MatDialogActions {}\n\n\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element: ElementRef<HTMLElement>, openDialogs: MatDialogRef<any>[]) {\n  let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n  while (parent && !parent.classList.contains('mat-dialog-container')) {\n    parent = parent.parentElement;\n  }\n\n  return parent ? openDialogs.find(dialog => dialog.id === parent!.id) : null;\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 {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog} from './dialog';\nimport {MatDialogContainer} from './dialog-container';\nimport {\n  MatDialogActions,\n  MatDialogClose,\n  MatDialogContent,\n  MatDialogTitle,\n} from './dialog-content-directives';\n\n\n@NgModule({\n  imports: [\n    OverlayModule,\n    PortalModule,\n    MatCommonModule,\n  ],\n  exports: [\n    MatDialogContainer,\n    MatDialogClose,\n    MatDialogTitle,\n    MatDialogContent,\n    MatDialogActions,\n    MatCommonModule,\n  ],\n  declarations: [\n    MatDialogContainer,\n    MatDialogClose,\n    MatDialogTitle,\n    MatDialogActions,\n    MatDialogContent,\n  ],\n  providers: [\n    MatDialog,\n    MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,\n  ],\n  entryComponents: [MatDialogContainer],\n})\nexport class MatDialogModule {}\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 './dialog-module';\nexport * from './dialog';\nexport * from './dialog-container';\nexport * from './dialog-content-directives';\nexport * from './dialog-config';\nexport * from './dialog-ref';\nexport * from './dialog-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}
+{"version":3,"file":"dialog.js","sources":["../../../../../../src/material/dialog/dialog-config.ts","../../../../../../src/material/dialog/dialog-animations.ts","../../../../../../src/material/dialog/dialog-container.ts","../../../../../../src/material/dialog/dialog-ref.ts","../../../../../../src/material/dialog/dialog.ts","../../../../../../src/material/dialog/dialog-content-directives.ts","../../../../../../src/material/dialog/dialog-module.ts","../../../../../../src/material/dialog/public-api.ts","../../../../../../src/material/dialog/index.ts"],"names":["observableOf"],"mappings":"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","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, ComponentFactoryResolver} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\n\n/** Valid ARIA roles for a dialog element. */\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n  /** Override for the dialog's top position. */\n  top?: string;\n\n  /** Override for the dialog's bottom position. */\n  bottom?: string;\n\n  /** Override for the dialog's left position. */\n  left?: string;\n\n  /** Override for the dialog's right position. */\n  right?: string;\n}\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nexport class MatDialogConfig<D = any> {\n\n  /**\n   * Where the attached component should live in Angular's *logical* component tree.\n   * This affects what is available for injection and the change detection order for the\n   * component instantiated inside of the dialog. This does not affect where the dialog\n   * content will be rendered.\n   */\n  viewContainerRef?: ViewContainerRef;\n\n  /** ID for the dialog. If omitted, a unique one will be generated. */\n  id?: string;\n\n  /** The ARIA role of the dialog element. */\n  role?: DialogRole = 'dialog';\n\n  /** Custom class for the overlay pane. */\n  panelClass?: string | string[] = '';\n\n  /** Whether the dialog has a backdrop. */\n  hasBackdrop?: boolean = true;\n\n  /** Custom class for the backdrop. */\n  backdropClass?: string | string[] = '';\n\n  /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n  disableClose?: boolean = false;\n\n  /** Width of the dialog. */\n  width?: string = '';\n\n  /** Height of the dialog. */\n  height?: string = '';\n\n  /** Min-width of the dialog. If a number is provided, assumes pixel units. */\n  minWidth?: number | string;\n\n  /** Min-height of the dialog. If a number is provided, assumes pixel units. */\n  minHeight?: number | string;\n\n  /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n  maxWidth?: number | string = '80vw';\n\n  /** Max-height of the dialog. If a number is provided, assumes pixel units. */\n  maxHeight?: number | string;\n\n  /** Position overrides. */\n  position?: DialogPosition;\n\n  /** Data being injected into the child component. */\n  data?: D | null = null;\n\n  /** Layout direction for the dialog's content. */\n  direction?: Direction;\n\n  /** ID of the element that describes the dialog. */\n  ariaDescribedBy?: string | null = null;\n\n  /** ID of the element that labels the dialog. */\n  ariaLabelledBy?: string | null = null;\n\n  /** Aria label to assign to the dialog element. */\n  ariaLabel?: string | null = null;\n\n  /** Whether the dialog should focus the first focusable element on open. */\n  autoFocus?: boolean = true;\n\n  /**\n   * Whether the dialog 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 dialog. */\n  scrollStrategy?: ScrollStrategy;\n\n  /**\n   * Whether the dialog 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  /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */\n  componentFactoryResolver?: ComponentFactoryResolver;\n\n  // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\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 MatDialog.\n * @docs-private\n */\nexport const matDialogAnimations: {\n  readonly dialogContainer: AnimationTriggerMetadata;\n} = {\n  /** Animation that is applied on the dialog container by default. */\n  dialogContainer: trigger('dialogContainer', [\n    // Note: The `enter` animation transitions to `transform: none`, because for some reason\n    // specifying the transform explicitly, causes IE both to blur the dialog content and\n    // decimate the animation performance. Leaving it as `none` solves both issues.\n    state('void, exit', style({opacity: 0, transform: 'scale(0.7)'})),\n    state('enter', style({transform: 'none'})),\n    transition('* => enter', animate('150ms cubic-bezier(0, 0, 0.2, 1)',\n        style({transform: 'none', opacity: 1}))),\n    transition('* => void, * => exit',\n        animate('75ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({opacity: 0}))),\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 {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\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  Directive,\n  ElementRef,\n  EmbeddedViewRef,\n  EventEmitter,\n  Inject,\n  Optional,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {matDialogAnimations} from './dialog-animations';\nimport {MatDialogConfig} from './dialog-config';\n\n/** Event that captures the state of dialog container animations. */\ninterface DialogAnimationEvent {\n  state: 'opened' | 'opening' | 'closing' | 'closed';\n  totalTime: number;\n}\n\n/**\n * Throws an exception for the case when a ComponentPortal is\n * attached to a DomPortalOutlet without an origin.\n * @docs-private\n */\nexport function throwMatDialogContentAlreadyAttachedError() {\n  throw Error('Attempting to attach dialog content after content is already attached');\n}\n\n/**\n * Base class for the `MatDialogContainer`. The base class does not implement\n * animations as these are left to implementers of the dialog container.\n */\n@Directive()\nexport abstract class _MatDialogContainerBase extends BasePortalOutlet {\n  protected _document: Document;\n\n  /** The portal outlet inside of this container into which the dialog content will be loaded. */\n  @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n  /** The class that traps and manages focus within the dialog. */\n  private _focusTrap: FocusTrap;\n\n  /** Emits when an animation state changes. */\n  _animationStateChanged = new EventEmitter<DialogAnimationEvent>();\n\n  /** Element that was focused before the dialog was opened. Save this to restore upon close. */\n  private _elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n  /**\n   * Type of interaction that led to the dialog being closed. This is used to determine\n   * whether the focus style will be applied when returning focus to its original location\n   * after the dialog is closed.\n   */\n  _closeInteractionType: FocusOrigin|null = null;\n\n  /** ID of the element that should be considered as the dialog's label. */\n  _ariaLabelledBy: string | null;\n\n  /** ID for the container DOM element. */\n  _id: string;\n\n  constructor(\n    protected _elementRef: ElementRef,\n    protected _focusTrapFactory: FocusTrapFactory,\n    protected _changeDetectorRef: ChangeDetectorRef,\n    @Optional() @Inject(DOCUMENT) _document: any,\n    /** The dialog configuration. */\n    public _config: MatDialogConfig,\n    private _focusMonitor?: FocusMonitor) {\n\n    super();\n    this._ariaLabelledBy = _config.ariaLabelledBy || null;\n    this._document = _document;\n  }\n\n  /** Starts the dialog exit animation. */\n  abstract _startExitAnimation(): void;\n\n  /** Initializes the dialog container with the attached content. */\n  _initializeWithAttachedContent() {\n    this._setupFocusTrap();\n    // Save the previously focused element. This element will be re-focused\n    // when the dialog closes.\n    this._capturePreviouslyFocusedElement();\n    // Move focus onto the dialog immediately in order to prevent the user\n    // from accidentally opening multiple dialogs at the same time.\n    this._focusDialogContainer();\n  }\n\n  /**\n   * Attach a ComponentPortal as content to this dialog container.\n   * @param portal Portal to be attached as the dialog content.\n   */\n  attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throwMatDialogContentAlreadyAttachedError();\n    }\n\n    return this._portalOutlet.attachComponentPortal(portal);\n  }\n\n  /**\n   * Attach a TemplatePortal as content to this dialog container.\n   * @param portal Portal to be attached as the dialog content.\n   */\n  attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throwMatDialogContentAlreadyAttachedError();\n    }\n\n    return this._portalOutlet.attachTemplatePortal(portal);\n  }\n\n  /**\n   * Attaches a DOM portal to the dialog container.\n   * @param portal Portal to be attached.\n   * @deprecated To be turned into a method.\n   * @breaking-change 10.0.0\n   */\n  override attachDomPortal = (portal: DomPortal) => {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throwMatDialogContentAlreadyAttachedError();\n    }\n\n    return this._portalOutlet.attachDomPortal(portal);\n  }\n\n  /** Moves focus back into the dialog if it was moved out. */\n  _recaptureFocus() {\n    if (!this._containsFocus()) {\n      const focusContainer = !this._config.autoFocus || !this._focusTrap.focusInitialElement();\n\n      if (focusContainer) {\n        this._elementRef.nativeElement.focus();\n      }\n    }\n  }\n\n  /** Moves the focus inside the focus trap. */\n  protected _trapFocus() {\n    // If we were to attempt to focus immediately, then the content of the dialog would not yet be\n    // ready in instances where change detection has to run first. To deal with this, we simply\n    // wait for the microtask queue to be empty.\n    if (this._config.autoFocus) {\n      this._focusTrap.focusInitialElementWhenReady();\n    } else if (!this._containsFocus()) {\n      // Otherwise ensure that focus is on the dialog 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 dialog already, because it's possible that the consumer\n      // turned off `autoFocus` in order to move focus themselves.\n      this._elementRef.nativeElement.focus();\n    }\n  }\n\n  /** Restores focus to the element that was focused before the dialog opened. */\n  protected _restoreFocus() {\n    const previousElement = this._elementFocusedBeforeDialogWasOpened;\n\n    // We need the extra check, because IE can set the `activeElement` to null in some cases.\n    if (this._config.restoreFocus && previousElement &&\n        typeof previousElement.focus === 'function') {\n      const activeElement = _getFocusedElementPierceShadowDom();\n      const element = this._elementRef.nativeElement;\n\n      // Make sure that focus is still inside the dialog 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 (!activeElement || activeElement === this._document.body || activeElement === element ||\n          element.contains(activeElement)) {\n        if (this._focusMonitor) {\n          this._focusMonitor.focusVia(previousElement, this._closeInteractionType);\n          this._closeInteractionType = null;\n        } else {\n          previousElement.focus();\n        }\n      }\n    }\n\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n    }\n  }\n\n  /** Sets up the focus trap. */\n  private _setupFocusTrap() {\n    this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n  }\n\n  /** Captures the element that was focused before the dialog was opened. */\n  private _capturePreviouslyFocusedElement() {\n    if (this._document) {\n      this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();\n    }\n  }\n\n  /** Focuses the dialog container. */\n  private _focusDialogContainer() {\n    // Note that there is no focus method when rendering on the server.\n    if (this._elementRef.nativeElement.focus) {\n      this._elementRef.nativeElement.focus();\n    }\n  }\n\n  /** Returns whether focus is inside the dialog. */\n  private _containsFocus() {\n    const element = this._elementRef.nativeElement;\n    const activeElement = _getFocusedElementPierceShadowDom();\n    return element === activeElement || element.contains(activeElement);\n  }\n}\n\n/**\n * Internal component that wraps user-provided dialog content.\n * Animation is based on https://material.io/guidelines/motion/choreography.html.\n * @docs-private\n */\n@Component({\n  selector: 'mat-dialog-container',\n  templateUrl: 'dialog-container.html',\n  styleUrls: ['dialog.css'],\n  encapsulation: ViewEncapsulation.None,\n  // Using OnPush for dialogs caused some G3 sync issues. Disabled until we can track them down.\n  // tslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  animations: [matDialogAnimations.dialogContainer],\n  host: {\n    'class': 'mat-dialog-container',\n    'tabindex': '-1',\n    'aria-modal': 'true',\n    '[id]': '_id',\n    '[attr.role]': '_config.role',\n    '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',\n    '[attr.aria-label]': '_config.ariaLabel',\n    '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n    '[@dialogContainer]': '_state',\n    '(@dialogContainer.start)': '_onAnimationStart($event)',\n    '(@dialogContainer.done)': '_onAnimationDone($event)',\n  },\n})\nexport class MatDialogContainer extends _MatDialogContainerBase {\n  /** State of the dialog animation. */\n  _state: 'void' | 'enter' | 'exit' = 'enter';\n\n  /** Callback, invoked whenever an animation on the host completes. */\n  _onAnimationDone({toState, totalTime}: AnimationEvent) {\n    if (toState === 'enter') {\n      this._trapFocus();\n      this._animationStateChanged.next({state: 'opened', totalTime});\n    } else if (toState === 'exit') {\n      this._restoreFocus();\n      this._animationStateChanged.next({state: 'closed', totalTime});\n    }\n  }\n\n  /** Callback, invoked when an animation on the host starts. */\n  _onAnimationStart({toState, totalTime}: AnimationEvent) {\n    if (toState === 'enter') {\n      this._animationStateChanged.next({state: 'opening', totalTime});\n    } else if (toState === 'exit' || toState === 'void') {\n      this._animationStateChanged.next({state: 'closing', totalTime});\n    }\n  }\n\n  /** Starts the dialog exit animation. */\n  _startExitAnimation(): void {\n    this._state = 'exit';\n\n    // Mark the container for check so it can react if the\n    // view container is using OnPush change detection.\n    this._changeDetectorRef.markForCheck();\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 {FocusOrigin} from '@angular/cdk/a11y';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {GlobalPositionStrategy, OverlayRef} from '@angular/cdk/overlay';\nimport {Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {DialogPosition} from './dialog-config';\nimport {_MatDialogContainerBase} from './dialog-container';\n\n\n// TODO(jelbourn): resizing\n\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n\n/** Possible states of the lifecycle of a dialog. */\nexport const enum MatDialogState {OPEN, CLOSING, CLOSED}\n\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nexport class MatDialogRef<T, R = any> {\n  /** The instance of component opened into the dialog. */\n  componentInstance: T;\n\n  /** Whether the user is allowed to close the dialog. */\n  disableClose: boolean | undefined = this._containerInstance._config.disableClose;\n\n  /** Subject for notifying the user that the dialog has finished opening. */\n  private readonly _afterOpened = new Subject<void>();\n\n  /** Subject for notifying the user that the dialog has finished closing. */\n  private readonly _afterClosed = new Subject<R | undefined>();\n\n  /** Subject for notifying the user that the dialog has started closing. */\n  private readonly _beforeClosed = new Subject<R | undefined>();\n\n  /** Result to be passed to afterClosed. */\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: any;\n\n  /** Current state of the dialog. */\n  private _state = MatDialogState.OPEN;\n\n  constructor(\n    private _overlayRef: OverlayRef,\n    public _containerInstance: _MatDialogContainerBase,\n    /** Id of the dialog. */\n    readonly id: string = `mat-dialog-${uniqueId++}`) {\n\n    // Pass the id along to the container.\n    _containerInstance._id = id;\n\n    // Emit when opening animation completes\n    _containerInstance._animationStateChanged.pipe(\n      filter(event => event.state === 'opened'),\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.pipe(\n      filter(event => event.state === 'closed'),\n      take(1)\n    ).subscribe(() => {\n      clearTimeout(this._closeFallbackTimeout);\n      this._finishDialogClose();\n    });\n\n    _overlayRef.detachments().subscribe(() => {\n      this._beforeClosed.next(this._result);\n      this._beforeClosed.complete();\n      this._afterClosed.next(this._result);\n      this._afterClosed.complete();\n      this.componentInstance = null!;\n      this._overlayRef.dispose();\n    });\n\n    _overlayRef.keydownEvents()\n      .pipe(filter(event => {\n        return event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event);\n      }))\n      .subscribe(event => {\n        event.preventDefault();\n        _closeDialogVia(this, 'keyboard');\n      });\n\n    _overlayRef.backdropClick().subscribe(() => {\n      if (this.disableClose) {\n        this._containerInstance._recaptureFocus();\n      } else {\n        _closeDialogVia(this, 'mouse');\n      }\n    });\n  }\n\n  /**\n   * Close the dialog.\n   * @param dialogResult Optional result to return to the dialog opener.\n   */\n  close(dialogResult?: R): void {\n    this._result = dialogResult;\n\n    // Transition the backdrop in parallel to the dialog.\n    this._containerInstance._animationStateChanged.pipe(\n      filter(event => event.state === 'closing'),\n      take(1)\n    )\n    .subscribe(event => {\n      this._beforeClosed.next(dialogResult);\n      this._beforeClosed.complete();\n      this._overlayRef.detachBackdrop();\n\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 the chance to fire.\n      this._closeFallbackTimeout = setTimeout(() => this._finishDialogClose(),\n          event.totalTime + 100);\n    });\n\n    this._state = MatDialogState.CLOSING;\n    this._containerInstance._startExitAnimation();\n  }\n\n  /**\n   * Gets an observable that is notified when the dialog is finished opening.\n   */\n  afterOpened(): Observable<void> {\n    return this._afterOpened;\n  }\n\n  /**\n   * Gets an observable that is notified when the dialog is finished closing.\n   */\n  afterClosed(): Observable<R | undefined> {\n    return this._afterClosed;\n  }\n\n  /**\n   * Gets an observable that is notified when the dialog has started closing.\n   */\n  beforeClosed(): Observable<R | undefined> {\n    return this._beforeClosed;\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   * Updates the dialog's position.\n   * @param position New dialog position.\n   */\n  updatePosition(position?: DialogPosition): this {\n    let strategy = this._getPositionStrategy();\n\n    if (position && (position.left || position.right)) {\n      position.left ? strategy.left(position.left) : strategy.right(position.right);\n    } else {\n      strategy.centerHorizontally();\n    }\n\n    if (position && (position.top || position.bottom)) {\n      position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n    } else {\n      strategy.centerVertically();\n    }\n\n    this._overlayRef.updatePosition();\n\n    return this;\n  }\n\n  /**\n   * Updates the dialog's width and height.\n   * @param width New width of the dialog.\n   * @param height New height of the dialog.\n   */\n  updateSize(width: string = '', height: string = ''): this {\n    this._overlayRef.updateSize({width, height});\n    this._overlayRef.updatePosition();\n    return this;\n  }\n\n  /** Add a CSS class or an array of classes to the overlay pane. */\n  addPanelClass(classes: string | string[]): this {\n    this._overlayRef.addPanelClass(classes);\n    return this;\n  }\n\n  /** Remove a CSS class or an array of classes from the overlay pane. */\n  removePanelClass(classes: string | string[]): this {\n    this._overlayRef.removePanelClass(classes);\n    return this;\n  }\n\n  /** Gets the current state of the dialog's lifecycle. */\n  getState(): MatDialogState {\n    return this._state;\n  }\n\n  /**\n   * Finishes the dialog close by updating the state of the dialog\n   * and disposing the overlay.\n   */\n  private _finishDialogClose() {\n    this._state = MatDialogState.CLOSED;\n    this._overlayRef.dispose();\n  }\n\n  /** Fetches the position strategy object from the overlay ref. */\n  private _getPositionStrategy(): GlobalPositionStrategy {\n    return this._overlayRef.getConfig().positionStrategy as GlobalPositionStrategy;\n  }\n}\n\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nexport function _closeDialogVia<R>(ref: MatDialogRef<R>, interactionType: FocusOrigin, result?: R) {\n  // Some mock dialog ref instances in tests do not have the `_containerInstance` property.\n  // For those, we keep the behavior as is and do not deal with the interaction type.\n  if (ref._containerInstance !== undefined) {\n    ref._containerInstance._closeInteractionType = interactionType;\n  }\n  return ref.close(result);\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 {\n  Overlay,\n  OverlayConfig,\n  OverlayContainer,\n  OverlayRef,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, TemplatePortal} from '@angular/cdk/portal';\nimport {Location} from '@angular/common';\nimport {\n  Directive,\n  Inject,\n  Injectable,\n  InjectFlags,\n  InjectionToken,\n  Injector,\n  OnDestroy,\n  Optional,\n  SkipSelf,\n  StaticProvider,\n  TemplateRef,\n  Type,\n} from '@angular/core';\nimport {defer, Observable, of as observableOf, Subject} from 'rxjs';\nimport {startWith} from 'rxjs/operators';\nimport {MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer, _MatDialogContainerBase} from './dialog-container';\nimport {MatDialogRef} from './dialog-ref';\n\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nexport const MAT_DIALOG_DATA = new InjectionToken<any>('MatDialogData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const MAT_DIALOG_DEFAULT_OPTIONS =\n    new InjectionToken<MatDialogConfig>('mat-dialog-default-options');\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const MAT_DIALOG_SCROLL_STRATEGY =\n    new InjectionToken<() => ScrollStrategy>('mat-dialog-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay):\n  () => ScrollStrategy {\n  return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n  provide: MAT_DIALOG_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * Base class for dialog services. The base dialog service allows\n * for arbitrary dialog refs and dialog container components.\n */\n@Directive()\nexport abstract class _MatDialogBase<C extends _MatDialogContainerBase> implements OnDestroy {\n  private _openDialogsAtThisLevel: MatDialogRef<any>[] = [];\n  private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n  private readonly _afterOpenedAtThisLevel = new Subject<MatDialogRef<any>>();\n  private _ariaHiddenElements = new Map<Element, string|null>();\n  private _scrollStrategy: () => ScrollStrategy;\n\n  /** Keeps track of the currently-open dialogs. */\n  get openDialogs(): MatDialogRef<any>[] {\n    return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n  }\n\n  /** Stream that emits when a dialog has been opened. */\n  get afterOpened(): Subject<MatDialogRef<any>> {\n    return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n  }\n\n  _getAfterAllClosed(): Subject<void> {\n    const parent = this._parentDialog;\n    return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n  }\n\n  // TODO (jelbourn): tighten the typing right-hand side of this expression.\n  /**\n   * Stream that emits when all open dialog have finished closing.\n   * Will emit on subscribe if there are no open dialogs to begin with.\n   */\n  readonly afterAllClosed: Observable<void> = defer(() => this.openDialogs.length ?\n      this._getAfterAllClosed() :\n      this._getAfterAllClosed().pipe(startWith(undefined))) as Observable<any>;\n\n  constructor(\n      private _overlay: Overlay,\n      private _injector: Injector,\n      private _defaultOptions: MatDialogConfig|undefined,\n      private _parentDialog: _MatDialogBase<C>|undefined,\n      private _overlayContainer: OverlayContainer,\n      scrollStrategy: any,\n      private _dialogRefConstructor: Type<MatDialogRef<any>>,\n      private _dialogContainerType: Type<C>,\n      private _dialogDataToken: InjectionToken<any>) {\n    this._scrollStrategy = scrollStrategy;\n  }\n\n  /**\n   * Opens a modal dialog containing the given component.\n   * @param component Type of the component to load into the dialog.\n   * @param config Extra configuration options.\n   * @returns Reference to the newly-opened dialog.\n   */\n  open<T, D = any, R = any>(component: ComponentType<T>,\n                            config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n  /**\n   * Opens a modal dialog containing the given template.\n   * @param template TemplateRef to instantiate as the dialog content.\n   * @param config Extra configuration options.\n   * @returns Reference to the newly-opened dialog.\n   */\n  open<T, D = any, R = any>(template: TemplateRef<T>,\n                            config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n  open<T, D = any, R = any>(template: ComponentType<T> | TemplateRef<T>,\n                            config?: MatDialogConfig<D>): MatDialogRef<T, R>;\n\n  open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n                            config?: MatDialogConfig<D>): MatDialogRef<T, R> {\n    config = _applyConfigDefaults(config, this._defaultOptions || new MatDialogConfig());\n\n    if (config.id && this.getDialogById(config.id) &&\n      (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n    }\n\n    const overlayRef = this._createOverlay(config);\n    const dialogContainer = this._attachDialogContainer(overlayRef, config);\n    const dialogRef = this._attachDialogContent<T, R>(componentOrTemplateRef,\n                                                      dialogContainer,\n                                                      overlayRef,\n                                                      config);\n\n    // If this is the first dialog that we're opening, hide all the non-overlay content.\n    if (!this.openDialogs.length) {\n      this._hideNonDialogContentFromAssistiveTechnology();\n    }\n\n    this.openDialogs.push(dialogRef);\n    dialogRef.afterClosed().subscribe(() => this._removeOpenDialog(dialogRef));\n    this.afterOpened.next(dialogRef);\n\n    // Notify the dialog container that the content has been attached.\n    dialogContainer._initializeWithAttachedContent();\n\n    return dialogRef;\n  }\n\n  /**\n   * Closes all of the currently-open dialogs.\n   */\n  closeAll(): void {\n    this._closeDialogs(this.openDialogs);\n  }\n\n  /**\n   * Finds an open dialog by its id.\n   * @param id ID to use when looking up the dialog.\n   */\n  getDialogById(id: string): MatDialogRef<any> | undefined {\n    return this.openDialogs.find(dialog => dialog.id === id);\n  }\n\n  ngOnDestroy() {\n    // Only close the dialogs at this level on destroy\n    // since the parent service may still be active.\n    this._closeDialogs(this._openDialogsAtThisLevel);\n    this._afterAllClosedAtThisLevel.complete();\n    this._afterOpenedAtThisLevel.complete();\n  }\n\n  /**\n   * Creates the overlay into which the dialog will be loaded.\n   * @param config The dialog configuration.\n   * @returns A promise resolving to the OverlayRef for the created overlay.\n   */\n  private _createOverlay(config: MatDialogConfig): OverlayRef {\n    const overlayConfig = this._getOverlayConfig(config);\n    return this._overlay.create(overlayConfig);\n  }\n\n  /**\n   * Creates an overlay config from a dialog config.\n   * @param dialogConfig The dialog configuration.\n   * @returns The overlay configuration.\n   */\n  private _getOverlayConfig(dialogConfig: MatDialogConfig): OverlayConfig {\n    const state = new OverlayConfig({\n      positionStrategy: this._overlay.position().global(),\n      scrollStrategy: dialogConfig.scrollStrategy || this._scrollStrategy(),\n      panelClass: dialogConfig.panelClass,\n      hasBackdrop: dialogConfig.hasBackdrop,\n      direction: dialogConfig.direction,\n      minWidth: dialogConfig.minWidth,\n      minHeight: dialogConfig.minHeight,\n      maxWidth: dialogConfig.maxWidth,\n      maxHeight: dialogConfig.maxHeight,\n      disposeOnNavigation: dialogConfig.closeOnNavigation\n    });\n\n    if (dialogConfig.backdropClass) {\n      state.backdropClass = dialogConfig.backdropClass;\n    }\n\n    return state;\n  }\n\n  /**\n   * Attaches a dialog container to a dialog's already-created overlay.\n   * @param overlay Reference to the dialog's underlying overlay.\n   * @param config The dialog configuration.\n   * @returns A promise resolving to a ComponentRef for the attached container.\n   */\n  private _attachDialogContainer(overlay: OverlayRef, config: MatDialogConfig): C {\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n    const injector = Injector.create({\n      parent: userInjector || this._injector,\n      providers: [{provide: MatDialogConfig, useValue: config}]\n    });\n\n    const containerPortal = new ComponentPortal(this._dialogContainerType,\n        config.viewContainerRef, injector, config.componentFactoryResolver);\n    const containerRef = overlay.attach<C>(containerPortal);\n\n    return containerRef.instance;\n  }\n\n  /**\n   * Attaches the user-provided component to the already-created dialog container.\n   * @param componentOrTemplateRef The type of component being loaded into the dialog,\n   *     or a TemplateRef to instantiate as the content.\n   * @param dialogContainer Reference to the wrapping dialog container.\n   * @param overlayRef Reference to the overlay in which the dialog resides.\n   * @param config The dialog configuration.\n   * @returns A promise resolving to the MatDialogRef that should be returned to the user.\n   */\n  private _attachDialogContent<T, R>(\n      componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n      dialogContainer: C,\n      overlayRef: OverlayRef,\n      config: MatDialogConfig): MatDialogRef<T, R> {\n\n    // Create a reference to the dialog we're creating in order to give the user a handle\n    // to modify and close it.\n    const dialogRef = new this._dialogRefConstructor(overlayRef, dialogContainer, config.id);\n\n    if (componentOrTemplateRef instanceof TemplateRef) {\n      dialogContainer.attachTemplatePortal(\n        new TemplatePortal<T>(componentOrTemplateRef, null!,\n          <any>{$implicit: config.data, dialogRef}));\n    } else {\n      const injector = this._createInjector<T>(config, dialogRef, dialogContainer);\n      const contentRef = dialogContainer.attachComponentPortal<T>(\n          new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector));\n      dialogRef.componentInstance = contentRef.instance;\n    }\n\n    dialogRef\n      .updateSize(config.width, config.height)\n      .updatePosition(config.position);\n\n    return dialogRef;\n  }\n\n  /**\n   * Creates a custom injector to be used inside the dialog. This allows a component loaded inside\n   * of a dialog to close itself and, optionally, to return a value.\n   * @param config Config object that is used to construct the dialog.\n   * @param dialogRef Reference to the dialog.\n   * @param dialogContainer Dialog container element that wraps all of the contents.\n   * @returns The custom injector that can be used inside the dialog.\n   */\n  private _createInjector<T>(\n      config: MatDialogConfig,\n      dialogRef: MatDialogRef<T>,\n      dialogContainer: C): Injector {\n\n    const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n\n    // The dialog container should be provided as the dialog container and the dialog's\n    // content are created out of the same `ViewContainerRef` and as such, are siblings\n    // for injector purposes. To allow the hierarchy that is expected, the dialog\n    // container is explicitly provided in the injector.\n    const providers: StaticProvider[] = [\n      {provide: this._dialogContainerType, useValue: dialogContainer},\n      {provide: this._dialogDataToken, useValue: config.data},\n      {provide: this._dialogRefConstructor, useValue: dialogRef}\n    ];\n\n    if (config.direction && (!userInjector ||\n        !userInjector.get<Directionality | null>(Directionality, null, InjectFlags.Optional))) {\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   * Removes a dialog from the array of open dialogs.\n   * @param dialogRef Dialog to be removed.\n   */\n  private _removeOpenDialog(dialogRef: MatDialogRef<any>) {\n    const index = this.openDialogs.indexOf(dialogRef);\n\n    if (index > -1) {\n      this.openDialogs.splice(index, 1);\n\n      // If all the dialogs were closed, remove/restore the `aria-hidden`\n      // to a the siblings and emit to the `afterAllClosed` stream.\n      if (!this.openDialogs.length) {\n        this._ariaHiddenElements.forEach((previousValue, element) => {\n          if (previousValue) {\n            element.setAttribute('aria-hidden', previousValue);\n          } else {\n            element.removeAttribute('aria-hidden');\n          }\n        });\n\n        this._ariaHiddenElements.clear();\n        this._getAfterAllClosed().next();\n      }\n    }\n  }\n\n  /**\n   * Hides all of the content that isn't an overlay from assistive technology.\n   */\n  private _hideNonDialogContentFromAssistiveTechnology() {\n    const overlayContainer = this._overlayContainer.getContainerElement();\n\n    // Ensure that the overlay container is attached to the DOM.\n    if (overlayContainer.parentElement) {\n      const siblings = overlayContainer.parentElement.children;\n\n      for (let i = siblings.length - 1; i > -1; i--) {\n        let sibling = siblings[i];\n\n        if (sibling !== overlayContainer &&\n          sibling.nodeName !== 'SCRIPT' &&\n          sibling.nodeName !== 'STYLE' &&\n          !sibling.hasAttribute('aria-live')) {\n\n          this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n          sibling.setAttribute('aria-hidden', 'true');\n        }\n      }\n    }\n  }\n\n  /** Closes all of the dialogs in an array. */\n  private _closeDialogs(dialogs: MatDialogRef<any>[]) {\n    let i = dialogs.length;\n\n    while (i--) {\n      // The `_openDialogs` property isn't updated after close until the rxjs subscription\n      // runs on the next microtask, in addition to modifying the array as we're going\n      // through it. We loop through all of them and call close without assuming that\n      // they'll be removed from the list instantaneously.\n      dialogs[i].close();\n    }\n  }\n\n}\n\n/**\n * Service to open Material Design modal dialogs.\n */\n@Injectable()\nexport class MatDialog extends _MatDialogBase<MatDialogContainer> {\n  constructor(\n      overlay: Overlay,\n      injector: Injector,\n      /**\n       * @deprecated `_location` parameter to be removed.\n       * @breaking-change 10.0.0\n       */\n      @Optional() location: Location,\n      @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) defaultOptions: MatDialogConfig,\n      @Inject(MAT_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n      @Optional() @SkipSelf() parentDialog: MatDialog,\n      overlayContainer: OverlayContainer) {\n    super(overlay, injector, defaultOptions, parentDialog, overlayContainer, scrollStrategy,\n        MatDialogRef, MatDialogContainer, MAT_DIALOG_DATA);\n  }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default options provided.\n * @returns The new configuration object.\n */\nfunction _applyConfigDefaults(\n    config?: MatDialogConfig, defaultOptions?: MatDialogConfig): MatDialogConfig {\n  return {...defaultOptions, ...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\nimport {\n  Directive,\n  Input,\n  OnChanges,\n  OnInit,\n  Optional,\n  SimpleChanges,\n  ElementRef,\n} from '@angular/core';\nimport {MatDialog} from './dialog';\nimport {_closeDialogVia, MatDialogRef} from './dialog-ref';\n\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n\n/**\n * Button that will close the current dialog.\n */\n@Directive({\n  selector: '[mat-dialog-close], [matDialogClose]',\n  exportAs: 'matDialogClose',\n  host: {\n    '(click)': '_onButtonClick($event)',\n    '[attr.aria-label]': 'ariaLabel || null',\n    '[attr.type]': 'type',\n  }\n})\nexport class MatDialogClose implements OnInit, OnChanges {\n  /** Screenreader label for the button. */\n  @Input('aria-label') ariaLabel: string;\n\n  /** Default to \"button\" to prevents accidental form submits. */\n  @Input() type: 'submit' | 'button' | 'reset' = 'button';\n\n  /** Dialog close input. */\n  @Input('mat-dialog-close') dialogResult: any;\n\n  @Input('matDialogClose') _matDialogClose: any;\n\n  constructor(\n\n    /**\n     * Reference to the containing dialog.\n     * @deprecated `dialogRef` property to become private.\n     * @breaking-change 13.0.0\n     */\n    // The dialog title directive is always used in combination with a `MatDialogRef`.\n    // tslint:disable-next-line: lightweight-tokens\n    @Optional() public dialogRef: MatDialogRef<any>,\n    private _elementRef: ElementRef<HTMLElement>,\n    private _dialog: MatDialog) {}\n\n  ngOnInit() {\n    if (!this.dialogRef) {\n      // When this directive is included in a dialog via TemplateRef (rather than being\n      // in a Component), the DialogRef isn't available via injection because embedded\n      // views cannot be given a custom injector. Instead, we look up the DialogRef by\n      // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n      // be resolved at constructor time.\n      this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n\n    if (proxiedChange) {\n      this.dialogResult = proxiedChange.currentValue;\n    }\n  }\n\n  _onButtonClick(event: MouseEvent) {\n    // Determinate the focus origin using the click event, because using the FocusMonitor will\n    // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n    // dialog, and therefore clicking the button won't result in a focus change. This means that\n    // the FocusMonitor won't detect any origin change, and will always output `program`.\n    _closeDialogVia(this.dialogRef,\n        event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);\n  }\n}\n\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\n@Directive({\n  selector: '[mat-dialog-title], [matDialogTitle]',\n  exportAs: 'matDialogTitle',\n  host: {\n    'class': 'mat-dialog-title',\n    '[id]': 'id',\n  },\n})\nexport class MatDialogTitle implements OnInit {\n  /** Unique id for the dialog title. If none is supplied, it will be auto-generated. */\n  @Input() id: string = `mat-dialog-title-${dialogElementUid++}`;\n\n  constructor(\n      // The dialog title directive is always used in combination with a `MatDialogRef`.\n      // tslint:disable-next-line: lightweight-tokens\n      @Optional() private _dialogRef: MatDialogRef<any>,\n      private _elementRef: ElementRef<HTMLElement>,\n      private _dialog: MatDialog) {}\n\n  ngOnInit() {\n    if (!this._dialogRef) {\n      this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n    }\n\n    if (this._dialogRef) {\n      Promise.resolve().then(() => {\n        const container = this._dialogRef._containerInstance;\n\n        if (container && !container._ariaLabelledBy) {\n          container._ariaLabelledBy = this.id;\n        }\n      });\n    }\n  }\n}\n\n\n/**\n * Scrollable content container of a dialog.\n */\n@Directive({\n  selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n  host: {'class': 'mat-dialog-content'}\n})\nexport class MatDialogContent {}\n\n\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\n@Directive({\n  selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n  host: {'class': 'mat-dialog-actions'}\n})\nexport class MatDialogActions {}\n\n\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element: ElementRef<HTMLElement>, openDialogs: MatDialogRef<any>[]) {\n  let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n  while (parent && !parent.classList.contains('mat-dialog-container')) {\n    parent = parent.parentElement;\n  }\n\n  return parent ? openDialogs.find(dialog => dialog.id === parent!.id) : null;\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 {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog} from './dialog';\nimport {MatDialogContainer} from './dialog-container';\nimport {\n  MatDialogActions,\n  MatDialogClose,\n  MatDialogContent,\n  MatDialogTitle,\n} from './dialog-content-directives';\n\n\n@NgModule({\n  imports: [\n    OverlayModule,\n    PortalModule,\n    MatCommonModule,\n  ],\n  exports: [\n    MatDialogContainer,\n    MatDialogClose,\n    MatDialogTitle,\n    MatDialogContent,\n    MatDialogActions,\n    MatCommonModule,\n  ],\n  declarations: [\n    MatDialogContainer,\n    MatDialogClose,\n    MatDialogTitle,\n    MatDialogActions,\n    MatDialogContent,\n  ],\n  providers: [\n    MatDialog,\n    MAT_DIALOG_SCROLL_STRATEGY_PROVIDER,\n  ],\n  entryComponents: [MatDialogContainer],\n})\nexport class MatDialogModule {}\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 './dialog-module';\nexport * from './dialog';\nexport * from './dialog-container';\nexport * from './dialog-content-directives';\nexport * from './dialog-config';\nexport * from './dialog-ref';\nexport * from './dialog-animations';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}
