analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
42 lines • 1.59 kB
TypeScript
import type { FeatureCollection, MultiPolygon, Polygon } from 'geojson';
import type { RegionData as ChoroplethRegionData } from '../../ChoroplethMap/ChoroplethMap.types/index';
import type { MapFilters, MapDataBounds, MapDataApiResponse } from '../../types/mapData';
/**
* Hook return type for useMapData
*/
export interface UseMapDataReturn {
/** Transformed region data for ChoroplethMap */
data: ChoroplethRegionData[];
/** Map bounds from API */
bounds: MapDataBounds | null;
/** Complete GeoJSON with NRE field for each municipality */
geoJSON: FeatureCollection<Polygon | MultiPolygon> | null;
/** Loading state */
loading: boolean;
/** Error message if request failed */
error: string | null;
/** Refetch data from API */
refetch: () => Promise<void>;
}
/**
* Factory function to create useMapData hook
*
* @param fetchMapDataApi - Function to fetch map data from API
* @returns Hook for managing map data with auto-fetch on filter change
*
* @example
* ```tsx
* // In your app setup
* const fetchMapDataApi = async (filters: MapFilters) => {
* const response = await api.post('/access-report/access/map', filters);
* return response.data;
* };
*
* export const useMapData = createUseMapData(fetchMapDataApi);
*
* // In your component
* const { data, bounds, loading, error } = useMapData(filters);
* ```
*/
export declare const createUseMapData: (fetchMapDataApi: (filters: MapFilters) => Promise<MapDataApiResponse>) => (filters: MapFilters) => UseMapDataReturn;
//# sourceMappingURL=useMapData.d.ts.map