createTransitionManager.d.ts 845 Bytes
import {
  Location,
  Action,
  LocationListener,
  LocationState,
  UnregisterCallback,
} from './index';
import { getConfirmation } from './DOMUtils';

export type PromptFunction<S = LocationState> = (
  location: Location<S>,
  action: Action,
) => any;

export type Prompt<S = LocationState> = PromptFunction<S> | boolean;

export interface TransitionManager<S = LocationState> {
  setPrompt(nextPrompt?: Prompt<S>): UnregisterCallback;
  appendListener(listener: LocationListener<S>): UnregisterCallback;
  notifyListeners(location: Location<S>, action: Action): void;
  confirmTransitionTo(
    location: Location<S>,
    action: Action,
    getUserConfirmation: typeof getConfirmation,
    callback: (result: boolean) => void,
  ): void;
}

export default function createTransitionManager<
  S = LocationState
>(): TransitionManager<S>;