expo-realtime-maps-navigation
Version:
JavaScript-pure React Native navigation package with Google Places + HERE Routing APIs, dual maps support, and complete customization - No native modules required!
83 lines (82 loc) • 5.86 kB
TypeScript
export { computeRoute, startNavigation, stopNavigation, pauseNavigation, resumeNavigation, isNavigating, getCurrentLocation, requestLocationPermissions, requestBackgroundLocationPermission, voice, simulation, events, utils, NavigationError, TRANSPORT_MODES, ROUTE_PREFERENCES, AVOIDANCES, } from './api/navigation';
export { HereNavProvider, useHereNavContext, type HereNavContextState, type HereNavContextActions, type HereNavContextValue, } from './components/HereNavProvider';
export { NavigationOverlay, MinimalNavigationOverlay, DetailedNavigationOverlay, type NavigationOverlayProps, type MarkerVariant, type RouteStyle, type UserMarkerStyle, type ManeuverMarkerStyle, type FollowOptions, } from './components/NavigationOverlay';
export { NavigationControl, CompactNavigationControl, MinimalNavigationControl, OverlayNavigationControl, type NavigationControlProps, type ControlPosition, type LayoutVariant, type ProgressDisplayOptions, type NavigationButtonConfig, } from './components/NavigationControl';
export { useNavigationSession, type NavigationSessionAPI } from './hooks/useNavigationSession';
export { useRouteProgress, useRouteProgressMetrics, useNextManeuver, useSpeedData, type RouteProgressData, } from './hooks/useRouteProgress';
export { useLiveLocation, useLocationStatus, useCurrentPosition, useCurrentHeading, useLocationHealth, calculateDistance, calculateBearing, type LiveLocationData, } from './hooks/useLiveLocation';
export { useNavigationEvents, useNavigationEventType, useNavigationProgress, useManeuverEvents, useVoiceEvents, useNavigationErrors, useArrivalEvents, useReroutingEvents, useNavigationEventLogger, useNavigationEventStats, type NavigationEventCallback, type NavigationEventOptions, } from './hooks/useNavigationEvents';
export { getPolylineFromHereRoute, getTrafficColoredSegments, followUserOnMap, fitRoute, calculateBoundingBox, getZoomLevelForBoundingBox, interpolateRoutePosition, createMapRegion, createTrafficAwarePolylines, smoothPolyline, } from './utils/mapHelpers';
export { requestLocationPermissionsWithRationale, requestAlwaysAuthorizationWithRationale, openLocationSettings, ensureForegroundService, stopForegroundService, isBatteryOptimizationDisabled, requestBatteryOptimizationExemption, ensureNavigationPermissions, getPermissionStatusMessage, getPermissionGuidance, } from './utils/permissions';
export { ThemeProvider, useTheme, useColors, useTypography, useSpacing, useBorderRadius, useShadow, BaseColors, Typography, Spacing, BorderRadius, Shadow, ThemePresets, type NavigationTheme, type ThemeColors, type ThemeTypography, type ThemeSpacing, type ThemeBorderRadius, type ThemeShadow, type ThemeProviderProps, } from './theme/ThemeProvider';
export { Button, type ButtonProps, type ButtonVariant, type ButtonSize, } from './components/primitives/Button';
export { Card, type CardProps } from './components/primitives/Card';
export type { LatLng, TransportMode, RoutePreference, RouteAvoidance, RouteComputeRequest, Maneuver, ManeuverType, HereRoute, NavigationOptions, NavigationProgress, LocationData, PermissionStatus, PermissionState, NavigationError as NavigationErrorType, NavigationEvent, HerePlatformKeys, NavigationConfig, LocationConfig, HereNavConfig, TrafficSegment, CameraOptions, GetPolylineFromRoute, GetTrafficColoredSegments, FollowUserOnMap, FitRoute, } from './types';
import { computeRoute, startNavigation, stopNavigation, pauseNavigation, resumeNavigation, isNavigating, getCurrentLocation, requestLocationPermissions, requestBackgroundLocationPermission } from './api/navigation';
export type MapProvider = 'react-native-maps' | 'expo-maps' | 'auto';
export interface VersionCompatibility {
provider: MapProvider;
version?: string;
compatible: boolean;
recommended?: boolean;
}
export interface MapProviderConfig {
provider: MapProvider;
fallback?: MapProvider;
}
export declare const MapProviderUtils: {
detectAvailable(): {
provider: MapProvider;
version?: string | undefined;
compatible: boolean;
}[];
getExpoSDKVersion(): number;
getRecommended(): MapProvider;
isProviderCompatible(provider: MapProvider): boolean;
getCompatibilityInfo(): {
expoSDK: number;
providers: {
provider: MapProvider;
version?: string | undefined;
compatible: boolean;
}[];
recommendations: {
'SDK 48-49': string;
'SDK 50-52': string;
'SDK 53+': string;
};
};
};
declare const HereNavigation: {
computeRoute: typeof computeRoute;
startNavigation: typeof startNavigation;
stopNavigation: typeof stopNavigation;
pauseNavigation: typeof pauseNavigation;
resumeNavigation: typeof resumeNavigation;
isNavigating: typeof isNavigating;
getCurrentLocation: typeof getCurrentLocation;
requestLocationPermissions: typeof requestLocationPermissions;
requestBackgroundLocationPermission: typeof requestBackgroundLocationPermission;
voice: {
mute(): void;
unmute(): void;
setLanguage(languageCode: string): Promise<void>;
getAvailableLanguages(): Promise<string[]>;
};
simulation: {
start(route: import("./types").HereRoute, speedKph?: number): Promise<void>;
stop(): Promise<void>;
};
events: {
subscribe(callback: (event: import("./types").NavigationEvent) => void): () => void;
subscribeToProgress(callback: (progress: import("./types").NavigationProgress) => void): () => void;
subscribeToManeuvers(callback: (maneuver: any) => void): () => void;
subscribeToVoice(callback: (voice: any) => void): () => void;
};
utils: {
getSDKVersion(): string;
clearCache(): Promise<void>;
isInitialized(): boolean;
};
};
export default HereNavigation;