{"version":3,"file":"focus-trap.d.ts","sources":["focus-trap.d.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA","sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { BooleanInput } from './boolean-property';\nimport { AfterContentInit, ElementRef, NgZone, OnDestroy, DoCheck, SimpleChanges, OnChanges } from '@angular/core';\nimport { InteractivityChecker } from './interactivity-checker';\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to misalign.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change for 11.0.0 Remove this class.\n */\nexport declare class FocusTrap {\n    readonly _element: HTMLElement;\n    private _checker;\n    readonly _ngZone: NgZone;\n    readonly _document: Document;\n    private _startAnchor;\n    private _endAnchor;\n    private _hasAttached;\n    protected startAnchorListener: () => boolean;\n    protected endAnchorListener: () => boolean;\n    /** Whether the focus trap is active. */\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    protected _enabled: boolean;\n    constructor(_element: HTMLElement, _checker: InteractivityChecker, _ngZone: NgZone, _document: Document, deferAnchors?: boolean);\n    /** Destroys the focus trap by cleaning up the anchors. */\n    destroy(): void;\n    /**\n     * Inserts the anchors into the DOM. This is usually done automatically\n     * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n     * @returns Whether the focus trap managed to attach successfuly. This may not be the case\n     * if the target element isn't currently in the DOM.\n     */\n    attachAnchors(): boolean;\n    /**\n     * Waits for the zone to stabilize, then either focuses the first element that the\n     * user specified, or the first tabbable element.\n     * @returns Returns a promise that resolves with a boolean, depending\n     * on whether focus was moved successfully.\n     */\n    focusInitialElementWhenReady(): Promise<boolean>;\n    /**\n     * Waits for the zone to stabilize, then focuses\n     * the first tabbable element within the focus trap region.\n     * @returns Returns a promise that resolves with a boolean, depending\n     * on whether focus was moved successfully.\n     */\n    focusFirstTabbableElementWhenReady(): Promise<boolean>;\n    /**\n     * Waits for the zone to stabilize, then focuses\n     * the last tabbable element within the focus trap region.\n     * @returns Returns a promise that resolves with a boolean, depending\n     * on whether focus was moved successfully.\n     */\n    focusLastTabbableElementWhenReady(): Promise<boolean>;\n    /**\n     * Get the specified boundary element of the trapped region.\n     * @param bound The boundary to get (start or end of trapped region).\n     * @returns The boundary element.\n     */\n    private _getRegionBoundary;\n    /**\n     * Focuses the element that should be focused when the focus trap is initialized.\n     * @returns Whether focus was moved successfully.\n     */\n    focusInitialElement(): boolean;\n    /**\n     * Focuses the first tabbable element within the focus trap region.\n     * @returns Whether focus was moved successfully.\n     */\n    focusFirstTabbableElement(): boolean;\n    /**\n     * Focuses the last tabbable element within the focus trap region.\n     * @returns Whether focus was moved successfully.\n     */\n    focusLastTabbableElement(): boolean;\n    /**\n     * Checks whether the focus trap has successfully been attached.\n     */\n    hasAttached(): boolean;\n    /** Get the first tabbable element from a DOM subtree (inclusive). */\n    private _getFirstTabbableElement;\n    /** Get the last tabbable element from a DOM subtree (inclusive). */\n    private _getLastTabbableElement;\n    /** Creates an anchor element. */\n    private _createAnchor;\n    /**\n     * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n     * @param isEnabled Whether the focus trap is enabled.\n     * @param anchor Anchor on which to toggle the tabindex.\n     */\n    private _toggleAnchorTabIndex;\n    /**\n     * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n     * @param enabled: Whether the anchors should trap Tab.\n     */\n    protected toggleAnchors(enabled: boolean): void;\n    /** Executes a function when the zone is stable. */\n    private _executeOnStable;\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change for 11.0.0 Remove this class.\n */\nexport declare class FocusTrapFactory {\n    private _checker;\n    private _ngZone;\n    private _document;\n    constructor(_checker: InteractivityChecker, _ngZone: NgZone, _document: any);\n    /**\n     * Creates a focus-trapped region around the given element.\n     * @param element The element around which focus will be trapped.\n     * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n     *     manually by the user.\n     * @returns The created focus trap instance.\n     */\n    create(element: HTMLElement, deferCaptureElements?: boolean): FocusTrap;\n}\n/** Directive for trapping focus within a region. */\nexport declare class FocusTrapDirective implements OnDestroy, AfterContentInit, OnChanges, DoCheck {\n    private _elementRef;\n    private _focusTrapFactory;\n    private _document;\n    /** Underlying FocusTrap instance. */\n    focusTrap: FocusTrap;\n    /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n    private _previouslyFocusedElement;\n    /** Whether the focus trap is active. */\n    get enabled(): boolean;\n    set enabled(value: boolean);\n    /**\n     * Whether the directive should automatically move focus into the trapped region upon\n     * initialization and return focus to the previous activeElement upon destruction.\n     */\n    get autoCapture(): boolean;\n    set autoCapture(value: boolean);\n    private _autoCapture;\n    constructor(_elementRef: ElementRef<HTMLElement>, _focusTrapFactory: FocusTrapFactory, _document: any);\n    ngOnDestroy(): void;\n    ngAfterContentInit(): void;\n    ngDoCheck(): void;\n    ngOnChanges(changes: SimpleChanges): void;\n    private _captureFocus;\n    static ngAcceptInputType_enabled: BooleanInput;\n    static ngAcceptInputType_autoCapture: BooleanInput;\n}\n"]}