UNPKG

@itznevikat/router

Version:

📦 Многофункциональный роутер для приложений на React и VKUI

68 lines (67 loc) 2.4 kB
import React, { FC, ReactElement, ReactNode } from 'react'; import { Nav } from './utils/navs'; export declare type MatchContextValue = MatchConfig & { /** * Промаркированные дети */ root: ReactNode; /** * Слои навигации */ navs: Nav[]; /** * Стиль навигации */ style: Style; }; /** * Контекст с конфигом компонента Match и внутренними значениями роутера */ export declare const MatchContext: React.Context<MatchContextValue>; /** * Стиль навигации */ export declare enum Style { MOBILE = "MOBILE", DESKTOP = "DESKTOP" } /** * Конфиг для компонента Match */ export declare type MatchConfig = { /** * Стиль навигации. * По умолчанию берётся платформа, прокинутая через ConfigProvider */ style?: Style; /** * Начальная страница. * Если не указана, то при запуске не будет совершён переход */ initialURL?: string; /** * Страница 404. * Будет использована, если страница при переходе не найдена */ fallbackURL?: string; /** * Отключает отправку события VKWebAppSetLocation для установки хэша вне фрейма. * По умолчанию выключено, событие отправляется */ disableSetLocation?: boolean; /** * Переданный в Match children для использования в качестве Root элемента */ children?: ReactNode; }; /** * Главный компонент роутера, в него оборачивается вся структура */ export declare const Match: FC<MatchConfig>; /** * Получение активного попаута по nav/id свойству * @param popout имя активного попаута * @param elements возможные попауты * @returns активный попаут */ export declare function matchPopout(popout: string | null, elements: ReactElement[]): ReactElement | null;