import { DockviewComponentOptions, DockviewIDisposable as IDisposable, KeyboardNavigationOptions } from 'dockview'; /** * Marks (on the dockview root element) that a keyboard move is in progress, so * the default navigation listener stands down while the advanced docking module * drives the keys. A neutral DOM signal keeps the two listeners coordinated * without either service holding a reference to the other. */ export declare const KEYBOARD_MOVE_ATTRIBUTE = "data-dv-kbd-moving"; /** * Does `e` match a binding string like `'ctrl+]'` / `'shift+f6'`? Modifiers are * matched exactly (a binding without `shift` will not fire while Shift is held), * and the final part is compared to `KeyboardEvent.key`, lower-cased. */ export declare function matchesBinding(e: KeyboardEvent, binding: string): boolean; /** * Resolve the `keyboardNavigation` opt-in to its options object, or `undefined` * when keyboard support is off. Both keyboard modules read the same opt-in. */ export declare function readKeyboardNavigation(options: DockviewComponentOptions): KeyboardNavigationOptions | undefined; /** A document-level listener to mirror across every window the dock occupies. */ export interface DocumentListenerSpec { readonly type: string; readonly handler: (e: Event) => void; /** Capture phase? Must match the value used to remove the listener. */ readonly capture: boolean; } /** The slice of the accessibility host the multi-window binder needs. */ interface MultiWindowHost { readonly rootElement: HTMLElement; getPopoutWindows(): Window[]; onDidChangePopouts(listener: () => void): IDisposable; } /** * Attach `specs` to the main document **and to every popout document**, keeping * the set in sync as popouts open and close. A popout window is a separate * `document`, so a capture-phase listener on the main document alone never sees * keystrokes made inside a popout, so each document needs its own listener. * * A popout that shares the main document (the jsdom mock) is skipped, since the * main document's listener already covers it and a second would double-fire. * * Returns a disposable that removes every listener from every document. */ export declare function bindDocumentListeners(host: MultiWindowHost, specs: DocumentListenerSpec[]): IDisposable; export {};