123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371 |
- import { StoryData } from './utils.js';
- export { DEEPLY_EQUAL, buildArgsParam, deepDiff, getMatch, parsePath, queryFromLocation, queryFromString, stringifyQuery } from './utils.js';
- import * as React from 'react';
- import React__default, { ReactNode, ReactElement } from 'react';
- /**
- * Actions represent the type of change to a location value.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#action
- */
- declare enum Action {
- /**
- * A POP indicates a change to an arbitrary index in the history stack, such
- * as a back or forward navigation. It does not describe the direction of the
- * navigation, only that the current index changed.
- *
- * Note: This is the default action for newly created history objects.
- */
- Pop = "POP",
- /**
- * A PUSH indicates a new entry being added to the history stack, such as when
- * a link is clicked and a new page loads. When this happens, all subsequent
- * entries in the stack are lost.
- */
- Push = "PUSH",
- /**
- * A REPLACE indicates the entry at the current index in the history stack
- * being replaced by a new one.
- */
- Replace = "REPLACE"
- }
- /**
- * A URL pathname, beginning with a /.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#location.pathname
- */
- declare type Pathname = string;
- /**
- * A URL search string, beginning with a ?.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#location.search
- */
- declare type Search = string;
- /**
- * A URL fragment identifier, beginning with a #.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#location.hash
- */
- declare type Hash = string;
- /**
- * A unique string associated with a location. May be used to safely store
- * and retrieve data in some other storage API, like `localStorage`.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#location.key
- */
- declare type Key = string;
- /**
- * The pathname, search, and hash values of a URL.
- */
- interface Path {
- /**
- * A URL pathname, beginning with a /.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#location.pathname
- */
- pathname: Pathname;
- /**
- * A URL search string, beginning with a ?.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#location.search
- */
- search: Search;
- /**
- * A URL fragment identifier, beginning with a #.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#location.hash
- */
- hash: Hash;
- }
- /**
- * An entry in a history stack. A location contains information about the
- * URL path, as well as possibly some arbitrary state and a key.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#location
- */
- interface Location$1 extends Path {
- /**
- * A value of arbitrary data associated with this location.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#location.state
- */
- state: unknown;
- /**
- * A unique string associated with this location. May be used to safely store
- * and retrieve data in some other storage API, like `localStorage`.
- *
- * Note: This value is always "default" on the initial location.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#location.key
- */
- key: Key;
- }
- /**
- * A change to the current location.
- */
- interface Update {
- /**
- * The action that triggered the change.
- */
- action: Action;
- /**
- * The new location.
- */
- location: Location$1;
- }
- /**
- * A function that receives notifications about location changes.
- */
- interface Listener {
- (update: Update): void;
- }
- /**
- * A change to the current location that was blocked. May be retried
- * after obtaining user confirmation.
- */
- interface Transition extends Update {
- /**
- * Retries the update to the current location.
- */
- retry(): void;
- }
- /**
- * A function that receives transitions when navigation is blocked.
- */
- interface Blocker {
- (tx: Transition): void;
- }
- /**
- * Describes a location that is the destination of some navigation, either via
- * `history.push` or `history.replace`. May be either a URL or the pieces of a
- * URL path.
- */
- declare type To = string | Partial<Path>;
- /**
- * A history is an interface to the navigation stack. The history serves as the
- * source of truth for the current location, as well as provides a set of
- * methods that may be used to change it.
- *
- * It is similar to the DOM's `window.history` object, but with a smaller, more
- * focused API.
- */
- interface History {
- /**
- * The last action that modified the current location. This will always be
- * Action.Pop when a history instance is first created. This value is mutable.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#history.action
- */
- readonly action: Action;
- /**
- * The current location. This value is mutable.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#history.location
- */
- readonly location: Location$1;
- /**
- * Returns a valid href for the given `to` value that may be used as
- * the value of an <a href> attribute.
- *
- * @param to - The destination URL
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#history.createHref
- */
- createHref(to: To): string;
- /**
- * Pushes a new location onto the history stack, increasing its length by one.
- * If there were any entries in the stack after the current one, they are
- * lost.
- *
- * @param to - The new URL
- * @param state - Data to associate with the new location
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#history.push
- */
- push(to: To, state?: any): void;
- /**
- * Replaces the current location in the history stack with a new one. The
- * location that was replaced will no longer be available.
- *
- * @param to - The new URL
- * @param state - Data to associate with the new location
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#history.replace
- */
- replace(to: To, state?: any): void;
- /**
- * Navigates `n` entries backward/forward in the history stack relative to the
- * current index. For example, a "back" navigation would use go(-1).
- *
- * @param delta - The delta in the stack index
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#history.go
- */
- go(delta: number): void;
- /**
- * Navigates to the previous entry in the stack. Identical to go(-1).
- *
- * Warning: if the current location is the first location in the stack, this
- * will unload the current document.
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#history.back
- */
- back(): void;
- /**
- * Navigates to the next entry in the stack. Identical to go(1).
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#history.forward
- */
- forward(): void;
- /**
- * Sets up a listener that will be called whenever the current location
- * changes.
- *
- * @param listener - A function that will be called when the location changes
- * @returns unlisten - A function that may be used to stop listening
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#history.listen
- */
- listen(listener: Listener): () => void;
- /**
- * Prevents the current location from changing and sets up a listener that
- * will be called instead.
- *
- * @param blocker - A function that will be called when a transition is blocked
- * @returns unblock - A function that may be used to stop blocking
- *
- * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#history.block
- */
- block(blocker: Blocker): () => void;
- }
- /**
- * A Navigator is a "location changer"; it's how you get to different locations.
- *
- * Every history instance conforms to the Navigator interface, but the
- * distinction is useful primarily when it comes to the low-level <Router> API
- * where both the location and a navigator must be provided separately in order
- * to avoid "tearing" that may occur in a suspense-enabled app if the action
- * and/or location were to be read directly from the history instance.
- */
- declare type Navigator = Omit<History, "action" | "location" | "back" | "forward" | "listen" | "block">;
- interface RouterProps {
- basename?: string;
- children?: React.ReactNode;
- location: Partial<Location$1> | string;
- navigationType?: Action;
- navigator: Navigator;
- static?: boolean;
- }
- /**
- * Provides location context for the rest of the app.
- *
- * Note: You usually won't render a <Router> directly. Instead, you'll render a
- * router that is more specific to your environment such as a <BrowserRouter>
- * in web browsers or a <StaticRouter> for server rendering.
- *
- * @see https://reactrouter.com/docs/en/v6/api#router
- */
- declare function Router({ basename: basenameProp, children, location: locationProp, navigationType, navigator, static: staticProp }: RouterProps): React.ReactElement | null;
- interface NavigateOptions$1 {
- replace?: boolean;
- state?: any;
- }
- interface BrowserRouterProps {
- basename?: string;
- children?: React.ReactNode;
- window?: Window;
- }
- /**
- * A <Router> for use in web browsers. Provides the cleanest URLs.
- */
- declare function BrowserRouter({ basename, children, window }: BrowserRouterProps): JSX.Element;
- interface Other extends StoryData {
- path: string;
- singleStory?: boolean;
- }
- type NavigateOptions = NavigateOptions$1 & {
- plain?: boolean;
- };
- type NavigateFunction = (to: To | number, options?: NavigateOptions) => void;
- type RouterData = {
- location: Partial<Location$1>;
- navigate: NavigateFunction;
- } & Other;
- type RenderData = Pick<RouterData, 'location'> & Other;
- interface LinkProps {
- to: string;
- children: ReactNode;
- }
- interface MatchingData {
- match: null | {
- path: string;
- };
- }
- interface LocationProps {
- children: (renderData: RenderData) => any;
- }
- interface MatchPropsStartsWith {
- path: string;
- startsWith: boolean;
- children: (matchingData: MatchingData) => ReactNode;
- }
- interface MatchPropsDefault {
- path: RegExp;
- startsWith: false;
- children: (matchingData: MatchingData) => ReactNode;
- }
- interface RoutePropsStartsWith {
- path: string;
- startsWith?: boolean;
- hideOnly?: boolean;
- children: ReactNode;
- }
- interface RoutePropsDefault {
- path: RegExp;
- startsWith?: false;
- hideOnly?: boolean;
- children: ReactNode;
- }
- declare const useNavigate: () => (to: To | number, { plain, ...options }?: any) => void;
- /**
- * A component that will navigate to a new location/path when clicked
- */
- declare const Link: {
- ({ to, children, ...rest }: LinkProps): React__default.JSX.Element;
- displayName: string;
- };
- /**
- * A render-prop component where children is called with a location
- * and will be called whenever it changes when it changes
- */
- declare const Location: {
- ({ children }: LocationProps): React__default.JSX.Element;
- displayName: string;
- };
- /**
- * A render-prop component for rendering when a certain path is hit.
- * It's immensely similar to `Location` but it receives an addition data property: `match`.
- * match has a truthy value when the path is hit.
- */
- declare function Match(props: MatchPropsStartsWith): ReactElement;
- declare function Match(props: MatchPropsDefault): ReactElement;
- declare namespace Match {
- var displayName: string;
- }
- /**
- * A component to conditionally render children based on matching a target path
- */
- declare function Route(props: RoutePropsDefault): ReactElement;
- declare function Route(props: RoutePropsStartsWith): ReactElement;
- declare namespace Route {
- var displayName: string;
- }
- declare const LocationProvider: typeof BrowserRouter;
- declare const BaseLocationProvider: typeof Router;
- export { BaseLocationProvider, Link, LinkProps, Location, LocationProvider, Match, NavigateFunction, NavigateOptions, Other, RenderData, Route, RouterData, StoryData, useNavigate };
|