{"version":3,"file":"dialog.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/dialog-config.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/dialog-container.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/dialog-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/dialog-ref.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/dialog.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/dialog-content-directives.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/dialog/dialog-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ViewContainerRef, Injector} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {DialogConfig, RestoreFocusValue} from '@angular/cdk/dialog';\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\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   * 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  /**\n   * Injector used for the instantiation of the component to be attached. If provided,\n   * takes precedence over the injector indirectly provided by `ViewContainerRef`.\n   */\n  injector?: Injector;\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  /** Function used to determine whether the dialog is allowed to close. */\n  closePredicate?: <\n    Result = unknown,\n    Component = unknown,\n    Config extends DialogConfig = MatDialogConfig,\n  >(\n    result: Result | undefined,\n    config: Config,\n    componentInstance: Component | null,\n  ) => boolean;\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. */\n  maxWidth?: number | string;\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  /**\n   * Whether this is a modal dialog. Used to set the `aria-modal` attribute. Off by default,\n   * because it can interfere with other overlay-based components (e.g. `mat-select`) and because\n   * it is redundant since the dialog marks all outside content as `aria-hidden` anyway.\n   */\n  ariaModal?: boolean = false;\n\n  /**\n   * Where the dialog should focus on open.\n   * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n   * AutoFocusTarget instead.\n   */\n  autoFocus?: AutoFocusTarget | string | boolean = 'first-tabbable';\n\n  /** Configures the focus restoration behavior. See `RestoreFocusValue` for more information. */\n  restoreFocus?: RestoreFocusValue = true;\n\n  /** Whether to wait for the opening animation to finish before trapping focus. */\n  delayFocusTrap?: 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  /**\n   * Duration of the enter animation in ms.\n   * Should be a number, string type is deprecated.\n   * @breaking-change 17.0.0 Remove string signature.\n   */\n  enterAnimationDuration?: string | number;\n\n  /**\n   * Duration of the exit animation in ms.\n   * Should be a number, string type is deprecated.\n   * @breaking-change 17.0.0 Remove string signature.\n   */\n  exitAnimationDuration?: string | number;\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.dev/license\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ComponentRef,\n  EventEmitter,\n  OnDestroy,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {MatDialogConfig} from './dialog-config';\nimport {CdkDialogContainer} from '@angular/cdk/dialog';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\nimport {CdkPortalOutlet, ComponentPortal} from '@angular/cdk/portal';\nimport {_animationsDisabled} from '../core/animation/animation';\n\n/** Event that captures the state of dialog container animations. */\ninterface LegacyDialogAnimationEvent {\n  state: 'opened' | 'opening' | 'closing' | 'closed';\n  totalTime: number;\n}\n\n/** Class added when the dialog is open. */\nconst OPEN_CLASS = 'mdc-dialog--open';\n\n/** Class added while the dialog is opening. */\nconst OPENING_CLASS = 'mdc-dialog--opening';\n\n/** Class added while the dialog is closing. */\nconst CLOSING_CLASS = 'mdc-dialog--closing';\n\n/** Duration of the opening animation in milliseconds. */\nexport const OPEN_ANIMATION_DURATION = 150;\n\n/** Duration of the closing animation in milliseconds. */\nexport const CLOSE_ANIMATION_DURATION = 75;\n\n@Component({\n  selector: 'mat-dialog-container',\n  templateUrl: 'dialog-container.html',\n  styleUrl: 'dialog.css',\n  encapsulation: ViewEncapsulation.None,\n  // Disabled for consistency with the non-MDC dialog container.\n  // tslint:disable-next-line:validate-decorators\n  changeDetection: ChangeDetectionStrategy.Default,\n  imports: [CdkPortalOutlet],\n  host: {\n    'class': 'mat-mdc-dialog-container mdc-dialog',\n    'tabindex': '-1',\n    '[attr.aria-modal]': '_config.ariaModal',\n    '[id]': '_config.id',\n    '[attr.role]': '_config.role',\n    '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledByQueue[0]',\n    '[attr.aria-label]': '_config.ariaLabel',\n    '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n    '[class._mat-animation-noopable]': '!_animationsEnabled',\n    '[class.mat-mdc-dialog-container-with-actions]': '_actionSectionCount > 0',\n  },\n})\nexport class MatDialogContainer extends CdkDialogContainer<MatDialogConfig> implements OnDestroy {\n  /** Emits when an animation state changes. */\n  _animationStateChanged = new EventEmitter<LegacyDialogAnimationEvent>();\n\n  /** Whether animations are enabled. */\n  _animationsEnabled = !_animationsDisabled();\n\n  /** Number of actions projected in the dialog. */\n  protected _actionSectionCount = 0;\n\n  /** Host element of the dialog container component. */\n  private _hostElement: HTMLElement = this._elementRef.nativeElement;\n  /** Duration of the dialog open animation. */\n  private _enterAnimationDuration = this._animationsEnabled\n    ? (parseCssTime(this._config.enterAnimationDuration) ?? OPEN_ANIMATION_DURATION)\n    : 0;\n  /** Duration of the dialog close animation. */\n  private _exitAnimationDuration = this._animationsEnabled\n    ? (parseCssTime(this._config.exitAnimationDuration) ?? CLOSE_ANIMATION_DURATION)\n    : 0;\n  /** Current timer for dialog animations. */\n  private _animationTimer: ReturnType<typeof setTimeout> | null = null;\n\n  protected override _contentAttached(): void {\n    // Delegate to the original dialog-container initialization (i.e. saving the\n    // previous element, setting up the focus trap and moving focus to the container).\n    super._contentAttached();\n\n    // Note: Usually we would be able to use the MDC dialog foundation here to handle\n    // the dialog animation for us, but there are a few reasons why we just leverage\n    // their styles and not use the runtime foundation code:\n    //   1. Foundation does not allow us to disable animations.\n    //   2. Foundation contains unnecessary features we don't need and aren't\n    //      tree-shakeable. e.g. background scrim, keyboard event handlers for ESC button.\n    this._startOpenAnimation();\n  }\n\n  /** Starts the dialog open animation if enabled. */\n  private _startOpenAnimation() {\n    this._animationStateChanged.emit({state: 'opening', totalTime: this._enterAnimationDuration});\n\n    if (this._animationsEnabled) {\n      this._hostElement.style.setProperty(\n        TRANSITION_DURATION_PROPERTY,\n        `${this._enterAnimationDuration}ms`,\n      );\n\n      // We need to give the `setProperty` call from above some time to be applied.\n      // One would expect that the open class is added once the animation finished, but MDC\n      // uses the open class in combination with the opening class to start the animation.\n      this._requestAnimationFrame(() => this._hostElement.classList.add(OPENING_CLASS, OPEN_CLASS));\n      this._waitForAnimationToComplete(this._enterAnimationDuration, this._finishDialogOpen);\n    } else {\n      this._hostElement.classList.add(OPEN_CLASS);\n      // Note: We could immediately finish the dialog opening here with noop animations,\n      // but we defer until next tick so that consumers can subscribe to `afterOpened`.\n      // Executing this immediately would mean that `afterOpened` emits synchronously\n      // on `dialog.open` before the consumer had a change to subscribe to `afterOpened`.\n      Promise.resolve().then(() => this._finishDialogOpen());\n    }\n  }\n\n  /**\n   * Starts the exit animation of the dialog if enabled. This method is\n   * called by the dialog ref.\n   */\n  _startExitAnimation(): void {\n    this._animationStateChanged.emit({state: 'closing', totalTime: this._exitAnimationDuration});\n    this._hostElement.classList.remove(OPEN_CLASS);\n\n    if (this._animationsEnabled) {\n      this._hostElement.style.setProperty(\n        TRANSITION_DURATION_PROPERTY,\n        `${this._exitAnimationDuration}ms`,\n      );\n\n      // We need to give the `setProperty` call from above some time to be applied.\n      this._requestAnimationFrame(() => this._hostElement.classList.add(CLOSING_CLASS));\n      this._waitForAnimationToComplete(this._exitAnimationDuration, this._finishDialogClose);\n    } else {\n      // This subscription to the `OverlayRef#backdropClick` observable in the `DialogRef` is\n      // set up before any user can subscribe to the backdrop click. The subscription triggers\n      // the dialog close and this method synchronously. If we'd synchronously emit the `CLOSED`\n      // animation state event if animations are disabled, the overlay would be disposed\n      // immediately and all other subscriptions to `DialogRef#backdropClick` would be silently\n      // skipped. We work around this by waiting with the dialog close until the next tick when\n      // all subscriptions have been fired as expected. This is not an ideal solution, but\n      // there doesn't seem to be any other good way. Alternatives that have been considered:\n      //   1. Deferring `DialogRef.close`. This could be a breaking change due to a new microtask.\n      //      Also this issue is specific to the MDC implementation where the dialog could\n      //      technically be closed synchronously. In the non-MDC one, Angular animations are used\n      //      and closing always takes at least a tick.\n      //   2. Ensuring that user subscriptions to `backdropClick`, `keydownEvents` in the dialog\n      //      ref are first. This would solve the issue, but has the risk of memory leaks and also\n      //      doesn't solve the case where consumers call `DialogRef.close` in their subscriptions.\n      // Based on the fact that this is specific to the MDC-based implementation of the dialog\n      // animations, the defer is applied here.\n      Promise.resolve().then(() => this._finishDialogClose());\n    }\n  }\n\n  /**\n   * Updates the number action sections.\n   * @param delta Increase/decrease in the number of sections.\n   */\n  _updateActionSectionCount(delta: number) {\n    this._actionSectionCount += delta;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /**\n   * Completes the dialog open by clearing potential animation classes, trapping\n   * focus and emitting an opened event.\n   */\n  private _finishDialogOpen = () => {\n    this._clearAnimationClasses();\n    this._openAnimationDone(this._enterAnimationDuration);\n  };\n\n  /**\n   * Completes the dialog close by clearing potential animation classes, restoring\n   * focus and emitting a closed event.\n   */\n  private _finishDialogClose = () => {\n    this._clearAnimationClasses();\n    this._animationStateChanged.emit({state: 'closed', totalTime: this._exitAnimationDuration});\n  };\n\n  /** Clears all dialog animation classes. */\n  private _clearAnimationClasses() {\n    this._hostElement.classList.remove(OPENING_CLASS, CLOSING_CLASS);\n  }\n\n  private _waitForAnimationToComplete(duration: number, callback: () => void) {\n    if (this._animationTimer !== null) {\n      clearTimeout(this._animationTimer);\n    }\n\n    // Note that we want this timer to run inside the NgZone, because we want\n    // the related events like `afterClosed` to be inside the zone as well.\n    this._animationTimer = setTimeout(callback, duration);\n  }\n\n  /** Runs a callback in `requestAnimationFrame`, if available. */\n  private _requestAnimationFrame(callback: () => void) {\n    this._ngZone.runOutsideAngular(() => {\n      if (typeof requestAnimationFrame === 'function') {\n        requestAnimationFrame(callback);\n      } else {\n        callback();\n      }\n    });\n  }\n\n  protected override _captureInitialFocus(): void {\n    if (!this._config.delayFocusTrap) {\n      this._trapFocus();\n    }\n  }\n\n  /**\n   * Callback for when the open dialog animation has finished. Intended to\n   * be called by sub-classes that use different animation implementations.\n   */\n  protected _openAnimationDone(totalTime: number) {\n    if (this._config.delayFocusTrap) {\n      this._trapFocus();\n    }\n\n    this._animationStateChanged.next({state: 'opened', totalTime});\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n\n    if (this._animationTimer !== null) {\n      clearTimeout(this._animationTimer);\n    }\n  }\n\n  override attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n    // When a component is passed into the dialog, the host element interrupts\n    // the `display:flex` from affecting the dialog title, content, and\n    // actions. To fix this, we make the component host `display: contents` by\n    // marking its host with the `mat-mdc-dialog-component-host` class.\n    //\n    // Note that this problem does not exist when a template ref is used since\n    // the title, contents, and actions are then nested directly under the\n    // dialog surface.\n    const ref = super.attachComponentPortal(portal);\n    ref.location.nativeElement.classList.add('mat-mdc-dialog-component-host');\n    return ref;\n  }\n}\n\nconst TRANSITION_DURATION_PROPERTY = '--mat-dialog-transition-duration';\n\n// TODO(mmalerba): Remove this function after animation durations are required\n//  to be numbers.\n/**\n * Converts a CSS time string to a number in ms. If the given time is already a\n * number, it is assumed to be in ms.\n */\nfunction parseCssTime(time: string | number | undefined): number | null {\n  if (time == null) {\n    return null;\n  }\n  if (typeof time === 'number') {\n    return time;\n  }\n  if (time.endsWith('ms')) {\n    return coerceNumberProperty(time.substring(0, time.length - 2));\n  }\n  if (time.endsWith('s')) {\n    return coerceNumberProperty(time.substring(0, time.length - 1)) * 1000;\n  }\n  if (time === '0') {\n    return 0;\n  }\n  return null; // anything else is invalid.\n}\n","<div class=\"mat-mdc-dialog-inner-container mdc-dialog__container\">\n  <div class=\"mat-mdc-dialog-surface mdc-dialog__surface\">\n    <ng-template cdkPortalOutlet />\n  </div>\n</div>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\n/** Possible states of the lifecycle of a dialog. */\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {merge, Observable, ReplaySubject} from 'rxjs';\nimport {DialogRef} from '@angular/cdk/dialog';\nimport {DialogPosition, MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer} from './dialog-container';\nimport {filter, take} from 'rxjs/operators';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {GlobalPositionStrategy} from '@angular/cdk/overlay';\nimport {ComponentRef} from '@angular/core';\n\nexport enum MatDialogState {\n  OPEN,\n  CLOSING,\n  CLOSED,\n}\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  /**\n   * `ComponentRef` of the component opened into the dialog. Will be\n   * null when the dialog is opened using a `TemplateRef`.\n   */\n  readonly componentRef: ComponentRef<T> | null = null;\n\n  /** Whether the user is allowed to close the dialog. */\n  disableClose: boolean | undefined;\n\n  /** Unique ID for the dialog. */\n  id: string;\n\n  /** Subject for notifying the user that the dialog has finished opening. */\n  private readonly _afterOpened = new ReplaySubject<void>(1);\n\n  /** Subject for notifying the user that the dialog has started closing. */\n  private readonly _beforeClosed = new ReplaySubject<R | undefined>(1);\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: ReturnType<typeof setTimeout> | undefined;\n\n  /** Current state of the dialog. */\n  private _state = MatDialogState.OPEN;\n\n  // TODO(crisbeto): we shouldn't have to declare this property, because `DialogRef.close`\n  // already has a second `options` parameter that we can use. The problem is that internal tests\n  // have assertions like `expect(MatDialogRef.close).toHaveBeenCalledWith(foo)` which will break,\n  // because it'll be called with two arguments by things like `MatDialogClose`.\n  /** Interaction that caused the dialog to close. */\n  private _closeInteractionType: FocusOrigin | undefined;\n\n  constructor(\n    private _ref: DialogRef<R, T>,\n    private _config: MatDialogConfig,\n    public _containerInstance: MatDialogContainer,\n  ) {\n    this.disableClose = _config.disableClose;\n    this.id = _ref.id;\n\n    // Used to target panels specifically tied to dialogs.\n    _ref.addPanelClass('mat-mdc-dialog-panel');\n\n    // Emit when opening animation completes\n    _containerInstance._animationStateChanged\n      .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\n      .pipe(\n        filter(event => event.state === 'closed'),\n        take(1),\n      )\n      .subscribe(() => {\n        clearTimeout(this._closeFallbackTimeout);\n        this._finishDialogClose();\n      });\n\n    _ref.overlayRef.detachments().subscribe(() => {\n      this._beforeClosed.next(this._result);\n      this._beforeClosed.complete();\n      this._finishDialogClose();\n    });\n\n    merge(\n      this.backdropClick(),\n      this.keydownEvents().pipe(\n        filter(event => event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)),\n      ),\n    ).subscribe(event => {\n      if (!this.disableClose) {\n        event.preventDefault();\n        _closeDialogVia(this, event.type === 'keydown' ? 'keyboard' : '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    const closePredicate = this._config.closePredicate;\n\n    if (closePredicate && !closePredicate(dialogResult, this._config, this.componentInstance)) {\n      return;\n    }\n\n    this._result = dialogResult;\n\n    // Transition the backdrop in parallel to the dialog.\n    this._containerInstance._animationStateChanged\n      .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._ref.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(\n          () => this._finishDialogClose(),\n          event.totalTime + 100,\n        );\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._ref.closed;\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._ref.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._ref.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._ref.config.positionStrategy as GlobalPositionStrategy;\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._ref.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._ref.updateSize(width, height);\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._ref.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._ref.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._ref.close(this._result, {focusOrigin: this._closeInteractionType});\n    this.componentInstance = null!;\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: 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  (ref as unknown as {_closeInteractionType: FocusOrigin})._closeInteractionType = interactionType;\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.dev/license\n */\n\nimport {\n  ComponentType,\n  createBlockScrollStrategy,\n  createGlobalPositionStrategy,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {\n  ComponentRef,\n  Injectable,\n  InjectionToken,\n  Injector,\n  OnDestroy,\n  TemplateRef,\n  Type,\n  inject,\n} from '@angular/core';\nimport {MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer} from './dialog-container';\nimport {MatDialogRef} from './dialog-ref';\nimport {defer, Observable, Subject} from 'rxjs';\nimport {Dialog, DialogConfig} from '@angular/cdk/dialog';\nimport {startWith} from 'rxjs/operators';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {_animationsDisabled} from '../core';\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>('MatMdcDialogData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const MAT_DIALOG_DEFAULT_OPTIONS = new InjectionToken<MatDialogConfig>(\n  'mat-mdc-dialog-default-options',\n);\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const MAT_DIALOG_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'mat-mdc-dialog-scroll-strategy',\n  {\n    providedIn: 'root',\n    factory: () => {\n      const injector = inject(Injector);\n      return () => createBlockScrollStrategy(injector);\n    },\n  },\n);\n\n/**\n * Service to open Material Design modal dialogs.\n */\n@Injectable({providedIn: 'root'})\nexport class MatDialog implements OnDestroy {\n  private _defaultOptions = inject<MatDialogConfig>(MAT_DIALOG_DEFAULT_OPTIONS, {optional: true});\n  private _scrollStrategy = inject(MAT_DIALOG_SCROLL_STRATEGY);\n  private _parentDialog = inject(MatDialog, {optional: true, skipSelf: true});\n  private _idGenerator = inject(_IdGenerator);\n  private _injector = inject(Injector);\n  protected _dialog = inject(Dialog);\n  private _animationsDisabled = _animationsDisabled();\n\n  private readonly _openDialogsAtThisLevel: MatDialogRef<any>[] = [];\n  private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n  private readonly _afterOpenedAtThisLevel = new Subject<MatDialogRef<any>>();\n  protected dialogConfigClass = MatDialogConfig;\n\n  private readonly _dialogRefConstructor: Type<MatDialogRef<any>>;\n  private readonly _dialogContainerType: Type<MatDialogContainer>;\n  private readonly _dialogDataToken: InjectionToken<any>;\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  private _getAfterAllClosed(): Subject<void> {\n    const parent = this._parentDialog;\n    return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n  }\n\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(() =>\n    this.openDialogs.length\n      ? this._getAfterAllClosed()\n      : this._getAfterAllClosed().pipe(startWith(undefined)),\n  ) as Observable<any>;\n\n  constructor(...args: unknown[]);\n\n  constructor() {\n    this._dialogRefConstructor = MatDialogRef;\n    this._dialogContainerType = MatDialogContainer;\n    this._dialogDataToken = MAT_DIALOG_DATA;\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>(\n    component: ComponentType<T>,\n    config?: MatDialogConfig<D>,\n  ): 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>(\n    template: TemplateRef<T>,\n    config?: MatDialogConfig<D>,\n  ): MatDialogRef<T, R>;\n\n  open<T, D = any, R = any>(\n    template: ComponentType<T> | TemplateRef<T>,\n    config?: MatDialogConfig<D>,\n  ): MatDialogRef<T, R>;\n\n  open<T, D = any, R = any>(\n    componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n    config?: MatDialogConfig<D>,\n  ): MatDialogRef<T, R> {\n    let dialogRef: MatDialogRef<T, R>;\n    config = {...(this._defaultOptions || new MatDialogConfig()), ...config};\n    config.id = config.id || this._idGenerator.getId('mat-mdc-dialog-');\n    config.scrollStrategy = config.scrollStrategy || this._scrollStrategy();\n\n    const cdkRef = this._dialog.open<R, D, T>(componentOrTemplateRef, {\n      ...config,\n      positionStrategy: createGlobalPositionStrategy(this._injector)\n        .centerHorizontally()\n        .centerVertically(),\n      // Disable closing since we need to sync it up to the animation ourselves.\n      disableClose: true,\n      // Closing is tied to our animation so the close predicate has to be implemented separately.\n      closePredicate: undefined,\n      // Disable closing on destroy, because this service cleans up its open dialogs as well.\n      // We want to do the cleanup here, rather than the CDK service, because the CDK destroys\n      // the dialogs immediately whereas we want it to wait for the animations to finish.\n      closeOnDestroy: false,\n      // Disable closing on detachments so that we can sync up the animation.\n      // The Material dialog ref handles this manually.\n      closeOnOverlayDetachments: false,\n      disableAnimations:\n        this._animationsDisabled ||\n        config.enterAnimationDuration?.toLocaleString() === '0' ||\n        config.exitAnimationDuration?.toString() === '0',\n      container: {\n        type: this._dialogContainerType,\n        providers: () => [\n          // Provide our config as the CDK config as well since it has the same interface as the\n          // CDK one, but it contains the actual values passed in by the user for things like\n          // `disableClose` which we disable for the CDK dialog since we handle it ourselves.\n          {provide: this.dialogConfigClass, useValue: config},\n          {provide: DialogConfig, useValue: config},\n        ],\n      },\n      templateContext: () => ({dialogRef}),\n      providers: (ref, cdkConfig, dialogContainer) => {\n        dialogRef = new this._dialogRefConstructor(ref, config, dialogContainer);\n        dialogRef.updatePosition(config?.position);\n        return [\n          {provide: this._dialogContainerType, useValue: dialogContainer},\n          {provide: this._dialogDataToken, useValue: cdkConfig.data},\n          {provide: this._dialogRefConstructor, useValue: dialogRef},\n        ];\n      },\n    });\n\n    // This can't be assigned in the `providers` callback, because\n    // the instance hasn't been assigned to the CDK ref yet.\n    (dialogRef! as {componentRef: ComponentRef<T>}).componentRef = cdkRef.componentRef!;\n    dialogRef!.componentInstance = cdkRef.componentInstance!;\n\n    this.openDialogs.push(dialogRef!);\n    this.afterOpened.next(dialogRef!);\n\n    dialogRef!.afterClosed().subscribe(() => {\n      const index = this.openDialogs.indexOf(dialogRef);\n\n      if (index > -1) {\n        this.openDialogs.splice(index, 1);\n\n        if (!this.openDialogs.length) {\n          this._getAfterAllClosed().next();\n        }\n      }\n    });\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  private _closeDialogs(dialogs: MatDialogRef<any>[]) {\n    let i = dialogs.length;\n\n    while (i--) {\n      dialogs[i].close();\n    }\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  inject,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {CdkScrollable} from '@angular/cdk/scrolling';\n\nimport {MatDialog} from './dialog';\nimport {_closeDialogVia, MatDialogRef} from './dialog-ref';\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  dialogRef = inject<MatDialogRef<any>>(MatDialogRef, {optional: true})!;\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _dialog = inject(MatDialog);\n\n  /** Screen-reader 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(...args: unknown[]);\n  constructor() {}\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(\n      this.dialogRef,\n      event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse',\n      this.dialogResult,\n    );\n  }\n}\n\n@Directive()\nexport abstract class MatDialogLayoutSection implements OnInit, OnDestroy {\n  protected _dialogRef = inject<MatDialogRef<any>>(MatDialogRef, {optional: true})!;\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  private _dialog = inject(MatDialog);\n\n  constructor(...args: unknown[]);\n\n  constructor() {}\n\n  protected abstract _onAdd(): void;\n  protected abstract _onRemove(): void;\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        this._onAdd();\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    // Note: we null check because there are some internal\n    // tests that are mocking out `MatDialogRef` incorrectly.\n    const instance = this._dialogRef?._containerInstance;\n\n    if (instance) {\n      Promise.resolve().then(() => {\n        this._onRemove();\n      });\n    }\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-mdc-dialog-title mdc-dialog__title',\n    '[id]': 'id',\n  },\n})\nexport class MatDialogTitle extends MatDialogLayoutSection {\n  @Input() id: string = inject(_IdGenerator).getId('mat-mdc-dialog-title-');\n\n  protected _onAdd() {\n    // Note: we null check the queue, because there are some internal\n    // tests that are mocking out `MatDialogRef` incorrectly.\n    this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id);\n  }\n\n  protected override _onRemove(): void {\n    this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id);\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-mdc-dialog-content mdc-dialog__content'},\n  hostDirectives: [CdkScrollable],\n})\nexport class MatDialogContent {}\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: {\n    'class': 'mat-mdc-dialog-actions mdc-dialog__actions',\n    '[class.mat-mdc-dialog-actions-align-start]': 'align === \"start\"',\n    '[class.mat-mdc-dialog-actions-align-center]': 'align === \"center\"',\n    '[class.mat-mdc-dialog-actions-align-end]': 'align === \"end\"',\n  },\n})\nexport class MatDialogActions extends MatDialogLayoutSection {\n  /**\n   * Horizontal alignment of action buttons.\n   */\n  @Input() align?: 'start' | 'center' | 'end';\n\n  protected _onAdd() {\n    this._dialogRef._containerInstance?._updateActionSectionCount?.(1);\n  }\n\n  protected override _onRemove(): void {\n    this._dialogRef._containerInstance?._updateActionSectionCount?.(-1);\n  }\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-mdc-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.dev/license\n */\n\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {DialogModule} from '@angular/cdk/dialog';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {MatDialog} from './dialog';\nimport {MatDialogContainer} from './dialog-container';\nimport {\n  MatDialogActions,\n  MatDialogClose,\n  MatDialogContent,\n  MatDialogTitle,\n} from './dialog-content-directives';\n\nconst DIRECTIVES = [\n  MatDialogContainer,\n  MatDialogClose,\n  MatDialogTitle,\n  MatDialogActions,\n  MatDialogContent,\n];\n\n@NgModule({\n  imports: [DialogModule, OverlayModule, PortalModule, ...DIRECTIVES],\n  exports: [BidiModule, ...DIRECTIVES],\n  providers: [MatDialog],\n})\nexport class MatDialogModule {}\n"],"names":["MatDialogConfig","viewContainerRef","injector","id","role","panelClass","hasBackdrop","backdropClass","disableClose","closePredicate","width","height","minWidth","minHeight","maxWidth","maxHeight","position","data","direction","ariaDescribedBy","ariaLabelledBy","ariaLabel","ariaModal","autoFocus","restoreFocus","delayFocusTrap","scrollStrategy","closeOnNavigation","enterAnimationDuration","exitAnimationDuration","OPEN_CLASS","OPENING_CLASS","CLOSING_CLASS","OPEN_ANIMATION_DURATION","CLOSE_ANIMATION_DURATION","MatDialogContainer","CdkDialogContainer","_animationStateChanged","EventEmitter","_animationsEnabled","_animationsDisabled","_actionSectionCount","_hostElement","_elementRef","nativeElement","_enterAnimationDuration","parseCssTime","_config","_exitAnimationDuration","_animationTimer","_contentAttached","_startOpenAnimation","emit","state","totalTime","style","setProperty","TRANSITION_DURATION_PROPERTY","_requestAnimationFrame","classList","add","_waitForAnimationToComplete","_finishDialogOpen","Promise","resolve","then","_startExitAnimation","remove","_finishDialogClose","_updateActionSectionCount","delta","_changeDetectorRef","markForCheck","_clearAnimationClasses","_openAnimationDone","duration","callback","clearTimeout","setTimeout","_ngZone","runOutsideAngular","requestAnimationFrame","_captureInitialFocus","_trapFocus","next","ngOnDestroy","attachComponentPortal","portal","ref","location","deps","target","i0","ɵɵFactoryTarget","Component","isStandalone","selector","host","attributes","properties","classAttribute","usesInheritance","ngImport","template","styles","dependencies","kind","type","CdkPortalOutlet","inputs","outputs","exportAs","changeDetection","ChangeDetectionStrategy","Eager","encapsulation","ViewEncapsulation","None","decorators","args","Default","imports","time","endsWith","coerceNumberProperty","substring","length","MatDialogState","MatDialogRef","_ref","_containerInstance","componentInstance","componentRef","_afterOpened","ReplaySubject","_beforeClosed","_result","_closeFallbackTimeout","_state","OPEN","_closeInteractionType","constructor","addPanelClass","pipe","filter","event","take","subscribe","complete","overlayRef","detachments","merge","backdropClick","keydownEvents","keyCode","ESCAPE","hasModifierKey","preventDefault","_closeDialogVia","close","dialogResult","detachBackdrop","CLOSING","afterOpened","afterClosed","closed","beforeClosed","updatePosition","strategy","config","positionStrategy","left","right","centerHorizontally","top","bottom","centerVertically","updateSize","classes","removePanelClass","getState","CLOSED","focusOrigin","interactionType","result","MAT_DIALOG_DATA","InjectionToken","MAT_DIALOG_DEFAULT_OPTIONS","MAT_DIALOG_SCROLL_STRATEGY","providedIn","factory","inject","Injector","createBlockScrollStrategy","MatDialog","_defaultOptions","optional","_scrollStrategy","_parentDialog","skipSelf","_idGenerator","_IdGenerator","_injector","_dialog","Dialog","_openDialogsAtThisLevel","_afterAllClosedAtThisLevel","Subject","_afterOpenedAtThisLevel","dialogConfigClass","_dialogRefConstructor","_dialogContainerType","_dialogDataToken","openDialogs","_getAfterAllClosed","parent","afterAllClosed","defer","startWith","undefined","open","componentOrTemplateRef","dialogRef","getId","cdkRef","createGlobalPositionStrategy","closeOnDestroy","closeOnOverlayDetachments","disableAnimations","toLocaleString","toString","container","providers","provide","useValue","DialogConfig","templateContext","cdkConfig","dialogContainer","push","index","indexOf","splice","closeAll","_closeDialogs","getDialogById","find","dialog","dialogs","i","Injectable","ɵprov","ɵɵngDeclareInjectable","minVersion","version","MatDialogClose","ElementRef","_matDialogClose","ngOnInit","getClosestDialog","ngOnChanges","changes","proxiedChange","currentValue","_onButtonClick","screenX","screenY","Directive","listeners","usesOnChanges","Input","MatDialogLayoutSection","_dialogRef","_onAdd","instance","_onRemove","MatDialogTitle","_addAriaLabelledBy","_removeAriaLabelledBy","MatDialogContent","hostDirectives","directive","i1","CdkScrollable","MatDialogActions","align","element","parentElement","contains","DIRECTIVES","MatDialogModule","NgModule","ɵmod","ɵɵngDeclareNgModule","DialogModule","OverlayModule","PortalModule","exports","BidiModule"],"mappings":"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"}