UNPKG

piral-core

Version:

The core library for creating a Piral instance.

106 lines (98 loc) 3.21 kB
import type { Disposable } from './utils'; export type NavigationAction = 'POP' | 'PUSH' | 'REPLACE'; export interface NavigationLocation { /** * The fully qualified URL incl. the origin and base path. */ href: string; /** * The location.pathname property is a string that contains an initial "/" * followed by the remainder of the URL up to the ?. */ pathname: string; /** * The location.search property is a string that contains an initial "?" * followed by the key=value pairs in the query string. If there are no * parameters, this value may be the empty string (i.e. ''). */ search: string; /** * The location.hash property is a string that contains an initial "#" * followed by fragment identifier of the URL. If there is no fragment * identifier, this value may be the empty string (i.e. ''). */ hash: string; /** * The location.state property is a user-supplied State object that is * associated with this location. This can be a useful place to store * any information you do not want to put in the URL, e.g. session-specific * data. */ state: unknown; /** * The location.key property is a unique string associated with this location. * On the initial location, this will be the string default. On all subsequent * locations, this string will be a unique identifier. */ key?: string; } export interface NavigationListener { (update: NavigationUpdate): void; } export interface NavigationBlocker { (tx: NavigationTransition): void; } export interface NavigationUpdate { action: NavigationAction; location: NavigationLocation; } export interface NavigationTransition extends NavigationUpdate { retry?(): void; } export interface NavigationApi { /** * Pushes a new location onto the history stack. */ push(target: string, state?: any): void; /** * Replaces the current location with another. */ replace(target: string, state?: any): void; /** * Changes the current index in the history stack by a given delta. */ go(n: number): void; /** * Prevents changes to the history stack from happening. * This is useful when you want to prevent the user navigating * away from the current page, for example when they have some * unsaved data on the current page. * @param blocker The function being called with a transition request. * @returns The disposable for stopping the block. */ block(blocker: NavigationBlocker): Disposable; /** * Starts listening for location changes and calls the given * callback with an Update when it does. * @param listener The function being called when the route changes. * @returns The disposable for stopping the block. */ listen(listener: NavigationListener): Disposable; /** * Gets the current navigation / application path. */ path: string; /** * Gets the current navigation path incl. search and hash parts. */ url: string; /** * The original router behind the navigation. Don't depend on this * as the implementation is router specific and may change over time. */ router: any; /** * Gets the public path of the application. */ publicPath: string; }