{"version":3,"file":"dialog.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/dialog/dialog-config.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/dialog/dialog-container.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/dialog/dialog-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/dialog/dialog-ref.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/dialog/dialog-injectors.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/dialog/dialog.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/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, StaticProvider, Type} from '@angular/core';\nimport {Direction} from '../bidi';\nimport {PositionStrategy, ScrollStrategy} from '../overlay';\nimport {Observable} from 'rxjs';\nimport {BasePortalOutlet} from '../portal';\nimport {FocusOrigin} from '../a11y';\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\n\n/**\n * Value that determines the focus restoration behavior for a dialog.\n * The values represent the following behaviors:\n * - `boolean` - when true, will return focus to the element that was focused before the dialog\n *    was opened, otherwise won't restore focus at all.\n * - `string` - focus will be restored to the first element that matches the CSS selector.\n * - `HTMLElement` - focus will be restored to the specific element.\n */\nexport type RestoreFocusValue = boolean | string | HTMLElement;\n\n/** Valid ARIA roles for a dialog. */\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** Component that can be used as the container for the dialog. */\nexport type DialogContainer = BasePortalOutlet & {\n  _focusTrapped?: Observable<void>;\n  _closeInteractionType?: FocusOrigin;\n  _recaptureFocus?: () => void;\n};\n\n/** Configuration for opening a modal dialog. */\nexport class DialogConfig<D = unknown, R = unknown, C extends DialogContainer = BasePortalOutlet> {\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  /** Optional CSS class or classes applied to the overlay panel. */\n  panelClass?: string | string[] = '';\n\n  /** Whether the dialog has a backdrop. */\n  hasBackdrop?: boolean = true;\n\n  /** Optional CSS class or classes applied to the overlay backdrop. */\n  backdropClass?: string | string[] = '';\n\n  /** Whether the dialog closes with the escape key or pointer events outside the panel element. */\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 = DialogConfig,\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  /** Strategy to use when positioning the dialog. Defaults to centering it on the page. */\n  positionStrategy?: PositionStrategy;\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  /** Dialog label applied via `aria-label` */\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  /**\n   * Scroll strategy to be used for the dialog. This determines how\n   * the dialog responds to scrolling underneath the panel element.\n   */\n  scrollStrategy?: ScrollStrategy;\n\n  /**\n   * Whether the dialog should close when the user navigates backwards or forwards through browser\n   * history. This does not apply to navigation via anchor element unless using URL-hash based\n   * routing (`HashLocationStrategy` in the Angular router).\n   */\n  closeOnNavigation?: boolean = true;\n\n  /**\n   * Whether the dialog should close when the dialog service is destroyed. This is useful if\n   * another service is wrapping the dialog and is managing the destruction instead.\n   */\n  closeOnDestroy?: boolean = true;\n\n  /**\n   * Whether the dialog should close when the underlying overlay is detached. This is useful if\n   * another service is wrapping the dialog and is managing the destruction instead. E.g. an\n   * external detachment can happen as a result of a scroll strategy triggering it or when the\n   * browser location changes.\n   */\n  closeOnOverlayDetachments?: boolean = true;\n\n  /**\n   * Whether the built-in overlay animations should be disabled.\n   */\n  disableAnimations?: boolean = false;\n\n  /**\n   * Providers that will be exposed to the contents of the dialog. Can also\n   * be provided as a function in order to generate the providers lazily.\n   */\n  providers?:\n    | StaticProvider[]\n    | ((dialogRef: R, config: DialogConfig<D, R, C>, container: C) => StaticProvider[]);\n\n  /**\n   * Component into which the dialog content will be rendered. Defaults to `CdkDialogContainer`.\n   * A configuration object can be passed in to customize the providers that will be exposed\n   * to the dialog container.\n   */\n  container?:\n    | Type<C>\n    | {\n        type: Type<C>;\n        providers: (config: DialogConfig<D, R, C>) => StaticProvider[];\n      };\n\n  /**\n   * Context that will be passed to template-based dialogs.\n   * A function can be passed in to resolve the context lazily.\n   */\n  templateContext?: Record<string, any> | (() => Record<string, any>);\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  FocusMonitor,\n  FocusOrigin,\n  FocusTrap,\n  FocusTrapFactory,\n  InteractivityChecker,\n} from '../a11y';\nimport {Platform, _getFocusedElementPierceShadowDom} from '../platform';\nimport {\n  BasePortalOutlet,\n  CdkPortalOutlet,\n  ComponentPortal,\n  DomPortal,\n  TemplatePortal,\n} from '../portal';\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EmbeddedViewRef,\n  Injector,\n  NgZone,\n  OnDestroy,\n  Renderer2,\n  ViewChild,\n  ViewEncapsulation,\n  afterNextRender,\n  inject,\n  DOCUMENT,\n} from '@angular/core';\nimport {DialogConfig, DialogContainer} from './dialog-config';\nimport {Observable, Subject} from 'rxjs';\n\nexport function throwDialogContentAlreadyAttachedError() {\n  throw Error('Attempting to attach dialog content after content is already attached');\n}\n\n/**\n * Internal component that wraps user-provided dialog content.\n * @docs-private\n */\n@Component({\n  selector: 'cdk-dialog-container',\n  templateUrl: './dialog-container.html',\n  styleUrl: 'dialog-container.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  imports: [CdkPortalOutlet],\n  host: {\n    'class': 'cdk-dialog-container',\n    'tabindex': '-1',\n    '[attr.id]': '_config.id || null',\n    '[attr.role]': '_config.role',\n    '[attr.aria-modal]': '_config.ariaModal',\n    '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledByQueue[0]',\n    '[attr.aria-label]': '_config.ariaLabel',\n    '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n  },\n})\nexport class CdkDialogContainer<C extends DialogConfig = DialogConfig>\n  extends BasePortalOutlet\n  implements DialogContainer, OnDestroy\n{\n  protected _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected _focusTrapFactory = inject(FocusTrapFactory);\n  readonly _config: C;\n  private _interactivityChecker = inject(InteractivityChecker);\n  protected _ngZone = inject(NgZone);\n  private _focusMonitor = inject(FocusMonitor);\n  private _renderer = inject(Renderer2);\n  protected readonly _changeDetectorRef = inject(ChangeDetectorRef);\n  private _injector = inject(Injector);\n  private _platform = inject(Platform);\n  protected _document = inject(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  _focusTrapped: Observable<void> = new Subject<void>();\n\n  /** The class that traps and manages focus within the dialog. */\n  private _focusTrap: FocusTrap | null = null;\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  /**\n   * Queue of the IDs of the dialog's label element, based on their definition order. The first\n   * ID will be used as the `aria-labelledby` value. We use a queue here to handle the case\n   * where there are two or more titles in the DOM at a time and the first one is destroyed while\n   * the rest are present.\n   */\n  _ariaLabelledByQueue: string[] = [];\n\n  private _isDestroyed = false;\n\n  constructor(...args: unknown[]);\n\n  constructor() {\n    super();\n\n    // Callback is primarily for some internal tests\n    // that were instantiating the dialog container manually.\n    this._config = (inject(DialogConfig, {optional: true}) || new DialogConfig()) as C;\n\n    if (this._config.ariaLabelledBy) {\n      this._ariaLabelledByQueue.push(this._config.ariaLabelledBy);\n    }\n  }\n\n  _addAriaLabelledBy(id: string) {\n    this._ariaLabelledByQueue.push(id);\n    this._changeDetectorRef.markForCheck();\n  }\n\n  _removeAriaLabelledBy(id: string) {\n    const index = this._ariaLabelledByQueue.indexOf(id);\n\n    if (index > -1) {\n      this._ariaLabelledByQueue.splice(index, 1);\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n\n  protected _contentAttached() {\n    this._initializeFocusTrap();\n    this._captureInitialFocus();\n  }\n\n  /**\n   * Can be used by child classes to customize the initial focus\n   * capturing behavior (e.g. if it's tied to an animation).\n   */\n  protected _captureInitialFocus() {\n    this._trapFocus();\n  }\n\n  ngOnDestroy() {\n    (this._focusTrapped as Subject<void>).complete();\n    this._isDestroyed = true;\n    this._restoreFocus();\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      throwDialogContentAlreadyAttachedError();\n    }\n\n    const result = this._portalOutlet.attachComponentPortal(portal);\n    this._contentAttached();\n    return result;\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<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T> {\n    if (this._portalOutlet.hasAttached() && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n      throwDialogContentAlreadyAttachedError();\n    }\n\n    const result = this._portalOutlet.attachTemplatePortal(portal);\n    this._contentAttached();\n    return result;\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      throwDialogContentAlreadyAttachedError();\n    }\n\n    const result = this._portalOutlet.attachDomPortal(portal);\n    this._contentAttached();\n    return result;\n  };\n\n  // TODO(crisbeto): this shouldn't be exposed, but there are internal references to it.\n  /** Captures focus if it isn't already inside the dialog. */\n  _recaptureFocus() {\n    if (!this._containsFocus()) {\n      this._trapFocus();\n    }\n  }\n\n  /**\n   * Focuses the provided element. If the element is not focusable, it will add a tabIndex\n   * attribute to forcefully focus it. The attribute is removed after focus is moved.\n   * @param element The element to focus.\n   */\n  private _forceFocus(element: HTMLElement, options?: FocusOptions) {\n    if (!this._interactivityChecker.isFocusable(element)) {\n      element.tabIndex = -1;\n      // The tabindex attribute should be removed to avoid navigating to that element again\n      this._ngZone.runOutsideAngular(() => {\n        const callback = () => {\n          deregisterBlur();\n          deregisterMousedown();\n          element.removeAttribute('tabindex');\n        };\n\n        const deregisterBlur = this._renderer.listen(element, 'blur', callback);\n        const deregisterMousedown = this._renderer.listen(element, 'mousedown', callback);\n      });\n    }\n    element.focus(options);\n  }\n\n  /**\n   * Focuses the first element that matches the given selector within the focus trap.\n   * @param selector The CSS selector for the element to set focus to.\n   */\n  private _focusByCssSelector(selector: string, options?: FocusOptions) {\n    let elementToFocus = this._elementRef.nativeElement.querySelector(\n      selector,\n    ) as HTMLElement | null;\n    if (elementToFocus) {\n      this._forceFocus(elementToFocus, options);\n    }\n  }\n\n  /**\n   * Moves the focus inside the focus trap. When autoFocus is not set to 'dialog', if focus\n   * cannot be moved then focus will go to the dialog container.\n   */\n  protected _trapFocus(options?: FocusOptions) {\n    if (this._isDestroyed) {\n      return;\n    }\n\n    // If 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 until after the next render.\n    afterNextRender(\n      () => {\n        const element = this._elementRef.nativeElement;\n        switch (this._config.autoFocus) {\n          case false:\n          case 'dialog':\n            // 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            if (!this._containsFocus()) {\n              element.focus(options);\n            }\n            break;\n          case true:\n          case 'first-tabbable':\n            const focusedSuccessfully = this._focusTrap?.focusInitialElement(options);\n            // If we weren't able to find a focusable element in the dialog, then focus the dialog\n            // container instead.\n            if (!focusedSuccessfully) {\n              this._focusDialogContainer(options);\n            }\n            break;\n          case 'first-heading':\n            this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]', options);\n            break;\n          default:\n            this._focusByCssSelector(this._config.autoFocus!, options);\n            break;\n        }\n        (this._focusTrapped as Subject<void>).next();\n      },\n      {injector: this._injector},\n    );\n  }\n\n  /** Restores focus to the element that was focused before the dialog opened. */\n  private _restoreFocus() {\n    const focusConfig = this._config.restoreFocus;\n    let focusTargetElement: HTMLElement | null = null;\n\n    if (typeof focusConfig === 'string') {\n      focusTargetElement = this._document.querySelector(focusConfig);\n    } else if (typeof focusConfig === 'boolean') {\n      focusTargetElement = focusConfig ? this._elementFocusedBeforeDialogWasOpened : null;\n    } else if (focusConfig) {\n      focusTargetElement = focusConfig;\n    }\n\n    // We need the extra check, because IE can set the `activeElement` to null in some cases.\n    if (\n      this._config.restoreFocus &&\n      focusTargetElement &&\n      typeof focusTargetElement.focus === 'function'\n    ) {\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 (\n        !activeElement ||\n        activeElement === this._document.body ||\n        activeElement === element ||\n        element.contains(activeElement)\n      ) {\n        if (this._focusMonitor) {\n          this._focusMonitor.focusVia(focusTargetElement, this._closeInteractionType);\n          this._closeInteractionType = null;\n        } else {\n          focusTargetElement.focus();\n        }\n      }\n    }\n\n    if (this._focusTrap) {\n      this._focusTrap.destroy();\n    }\n  }\n\n  /** Focuses the dialog container. */\n  private _focusDialogContainer(options?: FocusOptions) {\n    // Note that there is no focus method when rendering on the server.\n    this._elementRef.nativeElement.focus?.(options);\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  /** Sets up the focus trap. */\n  private _initializeFocusTrap() {\n    if (this._platform.isBrowser) {\n      this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n\n      // Save the previously focused element. This element will be re-focused\n      // when the dialog closes.\n      if (this._document) {\n        this._elementFocusedBeforeDialogWasOpened = _getFocusedElementPierceShadowDom();\n      }\n    }\n  }\n}\n","<ng-template cdkPortalOutlet />\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 {OverlayRef} from '../overlay';\nimport {ESCAPE, hasModifierKey} from '../keycodes';\nimport {Observable, Subject, Subscription} from 'rxjs';\nimport {DialogConfig, DialogContainer} from './dialog-config';\nimport {FocusOrigin} from '../a11y';\nimport {ComponentRef} from '@angular/core';\n\n/** Additional options that can be passed in when closing a dialog. */\nexport interface DialogCloseOptions {\n  /** Focus original to use when restoring focus. */\n  focusOrigin?: FocusOrigin;\n}\n\n/**\n * Reference to a dialog opened via the Dialog service.\n */\nexport class DialogRef<R = unknown, C = unknown> {\n  /**\n   * Instance of component opened into the dialog. Will be\n   * null when the dialog is opened using a `TemplateRef`.\n   */\n  readonly componentInstance: C | null = null;\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<C> | null = null;\n\n  /** Instance of the container that is rendering out the dialog content. */\n  readonly containerInstance!: DialogContainer;\n\n  /** Whether the user is allowed to close the dialog. */\n  disableClose: boolean | undefined;\n\n  /** Emits when the dialog has been closed. */\n  readonly closed: Observable<R | undefined> = new Subject<R | undefined>();\n\n  /** Emits when the backdrop of the dialog is clicked. */\n  readonly backdropClick: Observable<MouseEvent>;\n\n  /** Emits when on keyboard events within the dialog. */\n  readonly keydownEvents: Observable<KeyboardEvent>;\n\n  /** Emits on pointer events that happen outside of the dialog. */\n  readonly outsidePointerEvents: Observable<MouseEvent>;\n\n  /** Unique ID for the dialog. */\n  readonly id: string;\n\n  /** Subscription to external detachments of the dialog. */\n  private _detachSubscription: Subscription;\n\n  constructor(\n    readonly overlayRef: OverlayRef,\n    readonly config: DialogConfig<any, DialogRef<R, C>, DialogContainer>,\n  ) {\n    this.disableClose = config.disableClose;\n    this.backdropClick = overlayRef.backdropClick();\n    this.keydownEvents = overlayRef.keydownEvents();\n    this.outsidePointerEvents = overlayRef.outsidePointerEvents();\n    this.id = config.id!; // By the time the dialog is created we are guaranteed to have an ID.\n\n    this.keydownEvents.subscribe(event => {\n      if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n        event.preventDefault();\n        this.close(undefined, {focusOrigin: 'keyboard'});\n      }\n    });\n\n    this.backdropClick.subscribe(() => {\n      if (!this.disableClose && this._canClose()) {\n        this.close(undefined, {focusOrigin: 'mouse'});\n      } else {\n        // Clicking on the backdrop will move focus out of dialog.\n        // Recapture it if closing via the backdrop is disabled.\n        this.containerInstance._recaptureFocus?.();\n      }\n    });\n\n    this._detachSubscription = overlayRef.detachments().subscribe(() => {\n      // Check specifically for `false`, because we want `undefined` to be treated like `true`.\n      if (config.closeOnOverlayDetachments !== false) {\n        this.close();\n      }\n    });\n  }\n\n  /**\n   * Close the dialog.\n   * @param result Optional result to return to the dialog opener.\n   * @param options Additional options to customize the closing behavior.\n   */\n  close(result?: R, options?: DialogCloseOptions): void {\n    if (this._canClose(result)) {\n      const closedSubject = this.closed as Subject<R | undefined>;\n      this.containerInstance._closeInteractionType = options?.focusOrigin || 'program';\n      // Drop the detach subscription first since it can be triggered by the\n      // `dispose` call and override the result of this closing sequence.\n      this._detachSubscription.unsubscribe();\n      this.overlayRef.dispose();\n      closedSubject.next(result);\n      closedSubject.complete();\n      (this as {componentInstance: C}).componentInstance = (\n        this as {containerInstance: DialogContainer}\n      ).containerInstance = null!;\n    }\n  }\n\n  /** Updates the position of the dialog based on the current position strategy. */\n  updatePosition(): this {\n    this.overlayRef.updatePosition();\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 | number = '', height: string | number = ''): this {\n    this.overlayRef.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.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  /** Whether the dialog is allowed to close. */\n  private _canClose(result?: R): boolean {\n    const config = this.config as DialogConfig<unknown, unknown, DialogContainer>;\n\n    return (\n      !!this.containerInstance &&\n      (!config.closePredicate || config.closePredicate(result, config, this.componentInstance))\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 {InjectionToken, Injector, inject} from '@angular/core';\nimport {createBlockScrollStrategy, ScrollStrategy} from '../overlay';\nimport {DialogConfig} from './dialog-config';\n\n/** Injection token for the Dialog's ScrollStrategy. */\nexport const DIALOG_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'DialogScrollStrategy',\n  {\n    providedIn: 'root',\n    factory: () => {\n      const injector = inject(Injector);\n      return () => createBlockScrollStrategy(injector);\n    },\n  },\n);\n\n/** Injection token for the Dialog's Data. */\nexport const DIALOG_DATA = new InjectionToken<any>('DialogData');\n\n/** Injection token that can be used to provide default options for the dialog module. */\nexport const DEFAULT_DIALOG_CONFIG = new InjectionToken<DialogConfig>('DefaultDialogConfig');\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  ComponentRef,\n  EventEmitter,\n  Injectable,\n  Injector,\n  OnDestroy,\n  StaticProvider,\n  TemplateRef,\n  Type,\n  inject,\n  signal,\n} from '@angular/core';\nimport {Observable, Subject, defer} from 'rxjs';\nimport {startWith, take} from 'rxjs/operators';\nimport {_IdGenerator} from '../a11y';\nimport {Direction, Directionality} from '../bidi';\nimport {\n  ComponentType,\n  createGlobalPositionStrategy,\n  createOverlayRef,\n  OverlayConfig,\n  OverlayContainer,\n  OverlayRef,\n} from '../overlay';\nimport {ComponentPortal, TemplatePortal} from '../portal';\nimport {DialogConfig, DialogContainer} from './dialog-config';\nimport {DialogRef} from './dialog-ref';\n\nimport {CdkDialogContainer} from './dialog-container';\nimport {DEFAULT_DIALOG_CONFIG, DIALOG_DATA, DIALOG_SCROLL_STRATEGY} from './dialog-injectors';\n\nfunction getDirectionality(value: Direction): Directionality {\n  const valueSignal = signal(value);\n  const change = new EventEmitter<Direction>();\n  return {\n    valueSignal,\n    get value() {\n      return valueSignal();\n    },\n    change,\n    ngOnDestroy() {\n      change.complete();\n    },\n  };\n}\n\n@Injectable({providedIn: 'root'})\nexport class Dialog implements OnDestroy {\n  private _injector = inject(Injector);\n  private _defaultOptions = inject<DialogConfig>(DEFAULT_DIALOG_CONFIG, {optional: true});\n  private _parentDialog = inject(Dialog, {optional: true, skipSelf: true});\n  private _overlayContainer = inject(OverlayContainer);\n  private _idGenerator = inject(_IdGenerator);\n\n  private _openDialogsAtThisLevel: DialogRef<any, any>[] = [];\n  private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n  private readonly _afterOpenedAtThisLevel = new Subject<DialogRef>();\n  private _ariaHiddenElements = new Map<Element, string | null>();\n  private _scrollStrategy = inject(DIALOG_SCROLL_STRATEGY);\n\n  /** Keeps track of the currently-open dialogs. */\n  get openDialogs(): readonly DialogRef<any, 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<DialogRef<any, any>> {\n    return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\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  );\n\n  constructor(...args: unknown[]);\n\n  constructor() {}\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<R = unknown, D = unknown, C = unknown>(\n    component: ComponentType<C>,\n    config?: DialogConfig<D, DialogRef<R, C>>,\n  ): DialogRef<R, C>;\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<R = unknown, D = unknown, C = unknown>(\n    template: TemplateRef<C>,\n    config?: DialogConfig<D, DialogRef<R, C>>,\n  ): DialogRef<R, C>;\n\n  open<R = unknown, D = unknown, C = unknown>(\n    componentOrTemplateRef: ComponentType<C> | TemplateRef<C>,\n    config?: DialogConfig<D, DialogRef<R, C>>,\n  ): DialogRef<R, C>;\n\n  open<R = unknown, D = unknown, C = unknown>(\n    componentOrTemplateRef: ComponentType<C> | TemplateRef<C>,\n    config?: DialogConfig<D, DialogRef<R, C>>,\n  ): DialogRef<R, C> {\n    const defaults = (this._defaultOptions || new DialogConfig()) as DialogConfig<\n      D,\n      DialogRef<R, C>\n    >;\n    config = {...defaults, ...config};\n    config.id = config.id || this._idGenerator.getId('cdk-dialog-');\n\n    if (\n      config.id &&\n      this.getDialogById(config.id) &&\n      (typeof ngDevMode === 'undefined' || ngDevMode)\n    ) {\n      throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`);\n    }\n\n    const overlayConfig = this._getOverlayConfig(config);\n    const overlayRef = createOverlayRef(this._injector, overlayConfig);\n    const dialogRef = new DialogRef(overlayRef, config);\n    const dialogContainer = this._attachContainer(overlayRef, dialogRef, config);\n\n    (dialogRef as {containerInstance: DialogContainer}).containerInstance = dialogContainer;\n\n    // If this is the first dialog that we're opening, hide all the non-overlay content.\n    if (!this.openDialogs.length) {\n      // Resolve this ahead of time, because some internal apps\n      // mock it out and depend on it being synchronous.\n      const overlayContainer = this._overlayContainer.getContainerElement();\n\n      if (dialogContainer._focusTrapped) {\n        dialogContainer._focusTrapped.pipe(take(1)).subscribe(() => {\n          this._hideNonDialogContentFromAssistiveTechnology(overlayContainer);\n        });\n      } else {\n        this._hideNonDialogContentFromAssistiveTechnology(overlayContainer);\n      }\n    }\n\n    this._attachDialogContent(componentOrTemplateRef, dialogRef, dialogContainer, config);\n    (this.openDialogs as DialogRef<R, C>[]).push(dialogRef);\n    dialogRef.closed.subscribe(() => this._removeOpenDialog(dialogRef, true));\n    this.afterOpened.next(dialogRef);\n\n    return dialogRef;\n  }\n\n  /**\n   * Closes all of the currently-open dialogs.\n   */\n  closeAll(): void {\n    reverseForEach(this.openDialogs, dialog => dialog.close());\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<R, C>(id: string): DialogRef<R, C> | undefined {\n    return this.openDialogs.find(dialog => dialog.id === id);\n  }\n\n  ngOnDestroy() {\n    // Make one pass over all the dialogs that need to be untracked, but should not be closed. We\n    // want to stop tracking the open dialog even if it hasn't been closed, because the tracking\n    // determines when `aria-hidden` is removed from elements outside the dialog.\n    reverseForEach(this._openDialogsAtThisLevel, dialog => {\n      // Check for `false` specifically since we want `undefined` to be interpreted as `true`.\n      if (dialog.config.closeOnDestroy === false) {\n        this._removeOpenDialog(dialog, false);\n      }\n    });\n\n    // Make a second pass and close the remaining dialogs. We do this second pass in order to\n    // correctly dispatch the `afterAllClosed` event in case we have a mixed array of dialogs\n    // that should be closed and dialogs that should not.\n    reverseForEach(this._openDialogsAtThisLevel, dialog => dialog.close());\n\n    this._afterAllClosedAtThisLevel.complete();\n    this._afterOpenedAtThisLevel.complete();\n    this._openDialogsAtThisLevel = [];\n  }\n\n  /**\n   * Creates an overlay config from a dialog config.\n   * @param config The dialog configuration.\n   * @returns The overlay configuration.\n   */\n  private _getOverlayConfig<D, R>(config: DialogConfig<D, R>): OverlayConfig {\n    const state = new OverlayConfig({\n      positionStrategy:\n        config.positionStrategy ||\n        createGlobalPositionStrategy(this._injector).centerHorizontally().centerVertically(),\n      scrollStrategy: config.scrollStrategy || this._scrollStrategy(),\n      panelClass: config.panelClass,\n      hasBackdrop: config.hasBackdrop,\n      direction: config.direction,\n      minWidth: config.minWidth,\n      minHeight: config.minHeight,\n      maxWidth: config.maxWidth,\n      maxHeight: config.maxHeight,\n      width: config.width,\n      height: config.height,\n      disposeOnNavigation: config.closeOnNavigation,\n      disableAnimations: config.disableAnimations,\n    });\n\n    if (config.backdropClass) {\n      state.backdropClass = config.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 _attachContainer<R, D, C>(\n    overlay: OverlayRef,\n    dialogRef: DialogRef<R, C>,\n    config: DialogConfig<D, DialogRef<R, C>>,\n  ): DialogContainer {\n    const userInjector = config.injector || config.viewContainerRef?.injector;\n    const providers: StaticProvider[] = [\n      {provide: DialogConfig, useValue: config},\n      {provide: DialogRef, useValue: dialogRef},\n      {provide: OverlayRef, useValue: overlay},\n    ];\n    let containerType: Type<DialogContainer>;\n\n    if (config.container) {\n      if (typeof config.container === 'function') {\n        containerType = config.container;\n      } else {\n        containerType = config.container.type;\n        providers.push(...config.container.providers(config));\n      }\n    } else {\n      containerType = CdkDialogContainer;\n    }\n\n    const containerPortal = new ComponentPortal(\n      containerType,\n      config.viewContainerRef,\n      Injector.create({parent: userInjector || this._injector, providers}),\n    );\n    const containerRef = overlay.attach(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 dialogRef Reference to the dialog being opened.\n   * @param dialogContainer Component that is going to wrap the dialog content.\n   * @param config Configuration used to open the dialog.\n   */\n  private _attachDialogContent<R, D, C>(\n    componentOrTemplateRef: ComponentType<C> | TemplateRef<C>,\n    dialogRef: DialogRef<R, C>,\n    dialogContainer: DialogContainer,\n    config: DialogConfig<D, DialogRef<R, C>>,\n  ) {\n    if (componentOrTemplateRef instanceof TemplateRef) {\n      const injector = this._createInjector(config, dialogRef, dialogContainer, undefined);\n      let context: any = {$implicit: config.data, dialogRef};\n\n      if (config.templateContext) {\n        context = {\n          ...context,\n          ...(typeof config.templateContext === 'function'\n            ? config.templateContext()\n            : config.templateContext),\n        };\n      }\n\n      dialogContainer.attachTemplatePortal(\n        new TemplatePortal<C>(componentOrTemplateRef, null!, context, injector),\n      );\n    } else {\n      const injector = this._createInjector(config, dialogRef, dialogContainer, this._injector);\n      const contentRef = dialogContainer.attachComponentPortal<C>(\n        new ComponentPortal(componentOrTemplateRef, config.viewContainerRef, injector),\n      );\n      (dialogRef as {componentRef: ComponentRef<C>}).componentRef = contentRef;\n      (dialogRef as {componentInstance: C}).componentInstance = contentRef.instance;\n    }\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 being opened.\n   * @param dialogContainer Component that is going to wrap the dialog content.\n   * @param fallbackInjector Injector to use as a fallback when a lookup fails in the custom\n   * dialog injector, if the user didn't provide a custom one.\n   * @returns The custom injector that can be used inside the dialog.\n   */\n  private _createInjector<R, D, C>(\n    config: DialogConfig<D, DialogRef<R, C>>,\n    dialogRef: DialogRef<R, C>,\n    dialogContainer: DialogContainer,\n    fallbackInjector: Injector | undefined,\n  ): Injector {\n    const userInjector = config.injector || config.viewContainerRef?.injector;\n    const providers: StaticProvider[] = [\n      {provide: DIALOG_DATA, useValue: config.data},\n      {provide: DialogRef, useValue: dialogRef},\n    ];\n\n    if (config.providers) {\n      if (typeof config.providers === 'function') {\n        providers.push(...config.providers(dialogRef, config, dialogContainer));\n      } else {\n        providers.push(...config.providers);\n      }\n    }\n\n    if (\n      config.direction &&\n      (!userInjector ||\n        !userInjector.get<Directionality | null>(Directionality, null, {optional: true}))\n    ) {\n      providers.push({\n        provide: Directionality,\n        useValue: getDirectionality(config.direction),\n      });\n    }\n\n    return Injector.create({parent: userInjector || fallbackInjector, providers});\n  }\n\n  /**\n   * Removes a dialog from the array of open dialogs.\n   * @param dialogRef Dialog to be removed.\n   * @param emitEvent Whether to emit an event if this is the last dialog.\n   */\n  private _removeOpenDialog<R, C>(dialogRef: DialogRef<R, C>, emitEvent: boolean) {\n    const index = this.openDialogs.indexOf(dialogRef);\n\n    if (index > -1) {\n      (this.openDialogs as DialogRef<R, C>[]).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\n        if (emitEvent) {\n          this._getAfterAllClosed().next();\n        }\n      }\n    }\n  }\n\n  /** Hides all of the content that isn't an overlay from assistive technology. */\n  private _hideNonDialogContentFromAssistiveTechnology(overlayContainer: HTMLElement) {\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        const sibling = siblings[i];\n\n        if (\n          sibling !== overlayContainer &&\n          sibling.nodeName !== 'SCRIPT' &&\n          sibling.nodeName !== 'STYLE' &&\n          !sibling.hasAttribute('aria-live') &&\n          !sibling.hasAttribute('popover')\n        ) {\n          this._ariaHiddenElements.set(sibling, sibling.getAttribute('aria-hidden'));\n          sibling.setAttribute('aria-hidden', 'true');\n        }\n      }\n    }\n  }\n\n  private _getAfterAllClosed(): Subject<void> {\n    const parent = this._parentDialog;\n    return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n  }\n}\n\n/**\n * Executes a callback against all elements in an array while iterating in reverse.\n * Useful if the array is being modified as it is being iterated.\n */\nfunction reverseForEach<T>(items: T[] | readonly T[], callback: (current: T) => void) {\n  let i = items.length;\n\n  while (i--) {\n    callback(items[i]);\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 {NgModule} from '@angular/core';\nimport {OverlayModule} from '../overlay';\nimport {PortalModule} from '../portal';\nimport {A11yModule} from '../a11y';\nimport {Dialog} from './dialog';\nimport {CdkDialogContainer} from './dialog-container';\n\n@NgModule({\n  imports: [OverlayModule, PortalModule, A11yModule, CdkDialogContainer],\n  exports: [\n    // Re-export the PortalModule so that people extending the `CdkDialogContainer`\n    // don't have to remember to import it or be faced with an unhelpful error.\n    PortalModule,\n    CdkDialogContainer,\n  ],\n  providers: [Dialog],\n})\nexport class DialogModule {}\n\n// Re-export needed by the Angular compiler.\n// See: https://github.com/angular/components/issues/30663.\n// Note: These exports need to be stable and shouldn't be renamed unnecessarily because\n// consuming libraries might have references to them in their own partial compilation output.\nexport {CdkPortal as ɵɵCdkPortal, CdkPortalOutlet as ɵɵCdkPortalOutlet} from '../portal';\n"],"names":["DialogConfig","viewContainerRef","injector","id","role","panelClass","hasBackdrop","backdropClass","disableClose","closePredicate","width","height","minWidth","minHeight","maxWidth","maxHeight","positionStrategy","data","direction","ariaDescribedBy","ariaLabelledBy","ariaLabel","ariaModal","autoFocus","restoreFocus","scrollStrategy","closeOnNavigation","closeOnDestroy","closeOnOverlayDetachments","disableAnimations","providers","container","templateContext","throwDialogContentAlreadyAttachedError","Error","CdkDialogContainer","BasePortalOutlet","_elementRef","inject","ElementRef","_focusTrapFactory","FocusTrapFactory","_config","_interactivityChecker","InteractivityChecker","_ngZone","NgZone","_focusMonitor","FocusMonitor","_renderer","Renderer2","_changeDetectorRef","ChangeDetectorRef","_injector","Injector","_platform","Platform","_document","DOCUMENT","_portalOutlet","_focusTrapped","Subject","_focusTrap","_elementFocusedBeforeDialogWasOpened","_closeInteractionType","_ariaLabelledByQueue","_isDestroyed","constructor","optional","push","_addAriaLabelledBy","markForCheck","_removeAriaLabelledBy","index","indexOf","splice","_contentAttached","_initializeFocusTrap","_captureInitialFocus","_trapFocus","ngOnDestroy","complete","_restoreFocus","attachComponentPortal","portal","hasAttached","ngDevMode","result","attachTemplatePortal","attachDomPortal","_recaptureFocus","_containsFocus","_forceFocus","element","options","isFocusable","tabIndex","runOutsideAngular","callback","deregisterBlur","deregisterMousedown","removeAttribute","listen","focus","_focusByCssSelector","selector","elementToFocus","nativeElement","querySelector","afterNextRender","focusedSuccessfully","focusInitialElement","_focusDialogContainer","next","focusConfig","focusTargetElement","activeElement","_getFocusedElementPierceShadowDom","body","contains","focusVia","destroy","isBrowser","create","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","host","attributes","properties","classAttribute","viewQueries","propertyName","first","predicate","CdkPortalOutlet","descendants","static","usesInheritance","ngImport","template","inputs","outputs","exportAs","changeDetection","ChangeDetectionStrategy","Eager","encapsulation","ViewEncapsulation","None","decorators","args","Default","imports","styles","ViewChild","DialogRef","overlayRef","config","componentInstance","componentRef","containerInstance","closed","backdropClick","keydownEvents","outsidePointerEvents","_detachSubscription","subscribe","event","keyCode","ESCAPE","hasModifierKey","preventDefault","close","undefined","focusOrigin","_canClose","detachments","closedSubject","unsubscribe","dispose","updatePosition","updateSize","addPanelClass","classes","removePanelClass","DIALOG_SCROLL_STRATEGY","InjectionToken","providedIn","factory","createBlockScrollStrategy","DIALOG_DATA","DEFAULT_DIALOG_CONFIG","getDirectionality","value","valueSignal","signal","change","EventEmitter","Dialog","_defaultOptions","_parentDialog","skipSelf","_overlayContainer","OverlayContainer","_idGenerator","_IdGenerator","_openDialogsAtThisLevel","_afterAllClosedAtThisLevel","_afterOpenedAtThisLevel","_ariaHiddenElements","Map","_scrollStrategy","openDialogs","afterOpened","afterAllClosed","defer","length","_getAfterAllClosed","pipe","startWith","open","componentOrTemplateRef","defaults","getId","getDialogById","overlayConfig","_getOverlayConfig","createOverlayRef","dialogRef","dialogContainer","_attachContainer","overlayContainer","getContainerElement","take","_hideNonDialogContentFromAssistiveTechnology","_attachDialogContent","_removeOpenDialog","closeAll","reverseForEach","dialog","find","state","OverlayConfig","createGlobalPositionStrategy","centerHorizontally","centerVertically","disposeOnNavigation","overlay","userInjector","provide","useValue","OverlayRef","containerType","containerPortal","ComponentPortal","parent","containerRef","attach","instance","TemplateRef","_createInjector","context","$implicit","TemplatePortal","contentRef","fallbackInjector","get","Directionality","emitEvent","forEach","previousValue","setAttribute","clear","parentElement","siblings","children","i","sibling","nodeName","hasAttribute","set","getAttribute","Injectable","ɵprov","ɵɵngDeclareInjectable","items","DialogModule","NgModule","ɵmod","ɵɵngDeclareNgModule","OverlayModule","PortalModule","A11yModule","exports"],"mappings":"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"}