import { type Location } from './location'; export type IBlocker = { /** * Состояние блокировки навигации. * true — переход заблокирован, false — разрешён. */ isBlocked: boolean; /** * Активирует блокировку. Необходимо вызывать при mount компонента * @example * ```ts * useEffect(() => { * blocker.activate(); * * return () => { * blocker.destroy(); * }; * }, []); * ``` */ activate: VoidFunction; /** * Продолжает переход, если он был заблокирован. * После вызова блокировка снимается, и навигация продолжается. */ proceed: VoidFunction; /** * Сбрасывает блокировку без продолжения перехода. * После вызова блокировка снимается, но переход не выполняется. */ reset: VoidFunction; /** * Деактивирует блокировку. Необходимо вызывать при unmount компонента * @example * ```ts * useEffect(() => { * blocker.activate(); * * return () => { * blocker.destroy(); * }; * }, []); * ``` */ destroy: VoidFunction; }; /** * Функция проверки, нужно ли блокировать переход на указанную локацию. */ export type BlockerFunction = (nextLocation: Location) => boolean;