UNPKG

@any-routing/core

Version:

This library was generated with [Nx](https://nx.dev).

109 lines (108 loc) 4.21 kB
import { AnyRoutingDataProvider, AnyRoutingDataResponse, RouteSummary } from './data-providers'; import type { AnyRouting } from './libre-routing'; export type LngLatPosition = [number, number]; export type WaypointPosition = { lat: number; lng: number; }; export type Mode = 'default' | 'drag'; export type BaseEvent<R extends AnyRoutingDataResponse = AnyRoutingDataResponse> = { state: AnyRoutingState<R>; eventName: keyof MessagePortEventMap; }; export type CalculationStartedEvent<R extends AnyRoutingDataResponse = AnyRoutingDataResponse> = BaseEvent<R> & { waypoints: InternalWaypoint[]; recalculateOptions: RecalculateOptions; mode: Mode; }; export type CalculationErrorEvent<R extends AnyRoutingDataResponse = AnyRoutingDataResponse> = BaseEvent<R> & { error: Error; recalculateOptions: RecalculateOptions; }; export type RoutesFoundEvent<R extends AnyRoutingDataResponse = AnyRoutingDataResponse> = BaseEvent<R> & { waypoints: InternalWaypoint[]; data: R; mode: Mode; recalculateOptions: RecalculateOptions; }; export type RouteSelectedEvent<R extends AnyRoutingDataResponse = AnyRoutingDataResponse> = BaseEvent<R> & { routeId: number; route: RouteSummary; }; export type WaypointsChangedEvent<R extends AnyRoutingDataResponse = AnyRoutingDataResponse> = BaseEvent<R> & { waypoints: InternalWaypoint[]; }; export type WaypointGeocoded<R extends AnyRoutingDataResponse = AnyRoutingDataResponse> = BaseEvent<R> & { waypoint: InternalWaypoint; }; export type LoadingChangedEvent<R extends AnyRoutingDataResponse = AnyRoutingDataResponse> = BaseEvent<R> & { loading: boolean; }; export type StateUpdateSource = 'internal' | 'external'; export type StateUpdatedEvent<R extends AnyRoutingDataResponse = AnyRoutingDataResponse> = BaseEvent<R> & { state: AnyRoutingState<R>; source: StateUpdateSource; updatedProperties: Array<keyof AnyRoutingState<R>>; }; export interface AnyRoutingEventsMap { calculationStarted: CalculationStartedEvent; calculationError: CalculationErrorEvent; routesFound: RoutesFoundEvent; routeSelected: RouteSelectedEvent; waypointsChanged: WaypointsChangedEvent; waypointGeocoded: WaypointGeocoded; loadingChanged: LoadingChangedEvent; stateUpdated: StateUpdatedEvent; } export type AnyRoutingEvents = keyof AnyRoutingEventsMap; export type InternalWaypointProperties = { index: number; isFirst: boolean; isLast: boolean; }; export type AnyRoutingState<DataType = AnyRoutingDataResponse> = { data: DataType | undefined; waypoints: InternalWaypoint[]; loading: boolean; selectedRouteId: number | undefined | null; mode: Mode; routesShapeGeojson?: AnyRoutingDataResponse['routesShapeGeojson']; }; export interface InternalWaypoint { index: number; position: WaypointPosition; originalPosition: WaypointPosition; properties: InternalWaypointProperties & Record<string, any>; geocoded?: boolean; } export declare function isWaypointPositionEqual(posA: WaypointPosition, posB: WaypointPosition): boolean; export declare class InternalWaypointC { static fromWaypoint(waypoint: Waypoint, props: InternalWaypointProperties): InternalWaypoint; } export interface Waypoint { position: WaypointPosition; originalPosition?: WaypointPosition; properties?: Record<string, string | boolean | number>; geocoded?: boolean; } export type PluginFactory = AnyRoutingPlugin | (new (...args: any[]) => AnyRoutingPlugin); export interface AnyRoutingGeocoder { geocode(waypoint: InternalWaypoint): Promise<InternalWaypoint>; } export type AnyRoutingOptions = { dataProvider: AnyRoutingDataProvider; geocoder?: AnyRoutingGeocoder | ((waypoint: InternalWaypoint) => Promise<InternalWaypoint>); plugins?: PluginFactory[]; uniqueKey?: string; waypointsSyncStrategy: 'none' | 'toPath' | 'geocodeFirst'; }; export interface AnyRoutingPlugin { onAdd(AnyRouting: AnyRouting<any>): void; onRemove(AnyRouting: AnyRouting<any>): void; } export interface RecalculateOptions { fitViewToData?: boolean; clearMap?: boolean; dropPendingRequests?: boolean; syncWaypoints?: boolean; }