import MapplsPlacePicker from './MapplsPlacePicker'; import Components, { PlaceWidgetProps } from './components'; import { NativeModules } from 'react-native'; // Type the constants retrieved from native module interface MapplsConstants { POD_SUB_LOCALITY_KEY: string; POD_LOCALITY_KEY: string; POD_CITY_KEY: string; POD_VILLAGE_KEY: string; POD_SUB_DISTRICT_KEY: string; POD_DISTRICT_KEY: string; POD_STATE_KEY: string; POD_SUB_SUB_LOCALITY_KEY: string; GRAVITY_LEFT_KEY: string; GRAVITY_CENTER_KEY: string; GRAVITY_RIGHT_KEY: string; GRAVITY_TOP_KEY: string; GRAVITY_BOTTOM_KEY: string; SIZE_SMALL_KEY: string; SIZE_MEDIUM_KEY: string; SIZE_LARGE_KEY: string; } // Type the native module to help with auto-complete & safety interface MapplsPlacePickerModule { getConstants: () => MapplsConstants; } const { MapplsReactNativePlacePicker } = NativeModules as { MapplsReactNativePlacePicker: MapplsPlacePickerModule; }; const { POD_SUB_LOCALITY_KEY, POD_LOCALITY_KEY, POD_CITY_KEY, POD_VILLAGE_KEY, POD_SUB_DISTRICT_KEY, POD_DISTRICT_KEY, POD_STATE_KEY, POD_SUB_SUB_LOCALITY_KEY, GRAVITY_LEFT_KEY, GRAVITY_CENTER_KEY, GRAVITY_RIGHT_KEY, GRAVITY_TOP_KEY, GRAVITY_BOTTOM_KEY, SIZE_SMALL_KEY, SIZE_MEDIUM_KEY, SIZE_LARGE_KEY, } = MapplsReactNativePlacePicker.getConstants(); const MapplsUIWidgets = { searchWidget: async (props: PlaceWidgetProps): Promise => Components.openPlaceWidget(props), PlacePicker: MapplsPlacePicker, // Pods POD_SUB_LOCALITY: POD_SUB_LOCALITY_KEY, POD_LOCALITY: POD_LOCALITY_KEY, POD_CITY: POD_CITY_KEY, POD_VILLAGE: POD_VILLAGE_KEY, POD_SUB_DISTRICT: POD_SUB_DISTRICT_KEY, POD_DISTRICT: POD_DISTRICT_KEY, POD_STATE: POD_STATE_KEY, POD_SUB_SUB_LOCALITY: POD_SUB_SUB_LOCALITY_KEY, // Attribution Horizontal Alignment GRAVITY_LEFT: GRAVITY_LEFT_KEY, GRAVITY_CENTER: GRAVITY_CENTER_KEY, GRAVITY_RIGHT: GRAVITY_RIGHT_KEY, // Attribution Vertical Alignment GRAVITY_TOP: GRAVITY_TOP_KEY, GRAVITY_BOTTOM: GRAVITY_BOTTOM_KEY, // Logo Size SIZE_SMALL: SIZE_SMALL_KEY, SIZE_MEDIUM: SIZE_MEDIUM_KEY, SIZE_LARGE: SIZE_LARGE_KEY, }; export default MapplsUIWidgets;