import * as React from 'react'; import ReactFocusLock from 'react-focus-lock/UI'; import { ComponentProps } from "react"; export declare type GapMode = 'padding' | 'margin'; export interface LockProps { onMouseDown?: ((e: React.MouseEvent) => void) | undefined; onTouchStart?: ((e: React.TouchEvent) => void) | undefined; onActivation?: ((node: HTMLElement) => void) | undefined; onDeactivation?: (() => void) | undefined; } export interface CommonProps { /** * action to perform on Esc key press */ onEscapeKey?: ((event: Event) => void) | undefined; /** * action to perform on click outside */ onClickOutside?: ((event: MouseEvent | TouchEvent) => void) | undefined; /** * callback on lock activation * @param node the main node */ onActivation?: ((node: HTMLElement) => void) | undefined; /** * callback on lock deactivation */ onDeactivation?: (() => void) | undefined; /** * [scroll-lock] control isolation * @see {@link https://github.com/theKashey/react-remove-scroll#usage} */ noIsolation?: boolean | undefined; /** * [scroll-lock] full page inert (event suppression) * @default false * @see {@link https://github.com/theKashey/react-remove-scroll#usage} */ inert?: boolean | undefined; /** * [scroll-lock] allows scroll based zoom * @default false * @see https://github.com/theKashey/react-remove-scroll#usage */ allowPinchZoom?: boolean | undefined; /** * [scroll-lock] Controls how body scroll removal is supported. Possible values - `margin` or `padding` * @default 'margin' * @see https://github.com/theKashey/react-remove-scroll-bar#gapmode */ gapMode?: GapMode; /** * a list of elements which should be considered as a part of the lock */ shards?: (Array | HTMLElement>) | undefined; } export interface ReactFocusOnProps extends CommonProps { /** * The main switch */ enabled?: boolean | undefined; /** * Controls scroll lock behavior */ scrollLock?: boolean | undefined; /** * Controls focus lock behavior */ focusLock?: boolean | undefined; /** * [focus-lock] control autofocus * @default true */ autoFocus?: boolean | undefined; /** * [focus-lock] control returnFocus * @default true */ returnFocus?: ComponentProps['returnFocus'] | undefined; /** * [focus-lock] prevents scroll on focus via focusOptions * @default false */ preventScrollOnFocus?: boolean | undefined; /** * [focus-lock] enables or disables cross-frame focus management when within an iframe. * `true` means that focus will be restricted within the iframe * `false` allows focus to leave the iframe and move to elements outside of it * @default true */ crossFrame?: boolean | undefined; /** * [focus-lock] allows "ignoring" focus on some elements * @see {@link https://github.com/theKashey/react-focus-lock#api} */ shouldIgnore?: ((candidate: HTMLElement) => boolean) | undefined; /** * allows replacement of the host node * @default div */ as?: string | React.ElementType | undefined; style?: React.CSSProperties | undefined; className?: string | undefined; children: React.ReactNode; } export interface ReactFocusOnSideProps extends ReactFocusOnProps { sideCar: React.FC; } export interface EffectProps extends CommonProps { setLockProps(settings: LockProps): void; activeNode: HTMLElement | null; }