import type { HotInstance } from '../core/types'; /** * @typedef {object} FocusScope * @property {function(): string} getType The type of the scope. * @property {function(): boolean} hasContainerDetached Whether the container is detached from the root Handsontable wrapper element. * @property {function(): string} getShortcutsContextName The name of the shortcuts context to switch to when the scope is activated. * @property {function(): boolean} runOnlyIf Whether the scope is enabled or not depends on the custom logic. * @property {function(): boolean} contains Whether the target element is within the scope. * @property {function(): void} activate Activates the scope. * @property {function(): void} deactivate Deactivates the scope. * @property {function(): void} activateFocusCatchers Activates the focus catchers. * @property {function(): void} deactivateFocusCatchers Deactivates the focus catchers. * @property {function(): void} enable Enables the scope. * @property {function(): void} disable Disables the scope. * @property {function(): void} destroy Destroys the scope. */ /** * Creates a focus scope with its own boundaries. * * @param {Core} hotInstance The Handsontable instance. * @param {HTMLElement} container Container element for the scope. * @param {object} [options] Configuration options. * @param {string} [options.shortcutsContextName='grid'] The name of the shortcuts context to switch to when * the scope is activated. * @param {'modal' | 'inline'} [options.type='inline'] The type of the scope:
* - `modal`: The scope is modal and blocks the rest of the grid from receiving focus.
* - `inline`: The scope is inline and allows the rest of the grid to receive focus in the order of the rendered elements in the DOM. * @param {function(): boolean} [options.runOnlyIf] Whether the scope is enabled or not depends on the custom logic. * @param {function(HTMLElement): boolean} [options.contains] Whether the target element is within the scope. If the option is not * provided, the scope will be activated if the target element is within the container element. * @param {function(): void} [options.onActivate] Callback function to be called when the scope is activated. * The first argument is the source of the activation:
* - `unknown`: The scope is activated by an unknown source.
* - `click`: The scope is activated by a click event.
* - `tab_from_above`: The scope is activated by a tab key press.
* - `tab_from_below`: The scope is activated by a shift+tab key press. * @param {boolean} [options.enableFocusCatchers=true] When `false`, tab traps are not installed around the container * (for example use an F6 shortcut instead of sequential Tab into the scope). * @param {function(): void} [options.onDeactivate] Callback function to be called when the scope is deactivated. * @returns {FocusScope} Focus scope object with methods. */ export declare function createFocusScope(hotInstance: HotInstance, container: HTMLElement, options?: Record): { getType: () => string; hasContainerDetached: () => boolean; getShortcutsContextName: () => string; runOnlyIf: () => boolean; contains: (target: HTMLElement) => boolean; activate: (activationSource?: string) => void; deactivate: () => void; activateFocusCatchers: () => void; deactivateFocusCatchers: () => void; enable: () => void; disable: () => void; destroy: () => void; };