UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

81 lines (78 loc) 4.15 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/hooks/useMapData.ts var _react = require('react'); function transformGeoJSONFeatures(geoJSON) { return geoJSON.features.map((feature) => ({ id: _optionalChain([feature, 'access', _ => _.properties, 'optionalAccess', _2 => _2.GEOCODIGO]) || _optionalChain([feature, 'access', _3 => _3.properties, 'optionalAccess', _4 => _4.NOME]) || "", name: _optionalChain([feature, 'access', _5 => _5.properties, 'optionalAccess', _6 => _6.NOME]) || "", groupName: _optionalChain([feature, 'access', _7 => _7.properties, 'optionalAccess', _8 => _8.NRE]) ? `NRE ${feature.properties.NRE}` : void 0, value: _nullishCoalesce(_optionalChain([feature, 'access', _9 => _9.properties, 'optionalAccess', _10 => _10.value]), () => ( 0)), accessCount: _nullishCoalesce(_optionalChain([feature, 'access', _11 => _11.properties, 'optionalAccess', _12 => _12.totalAccess]), () => ( 0)), geoJson: feature, isManagedRegion: _optionalChain([feature, 'access', _13 => _13.properties, 'optionalAccess', _14 => _14.isManagedRegion]) !== false, accessBreakdown: _optionalChain([feature, 'access', _15 => _15.properties, 'optionalAccess', _16 => _16.accessBreakdown]) })); } function transformRegionData(region) { if (!region.geoJson) { return null; } return { id: region.schoolGroupId, name: region.schoolGroupName, code: region.schoolGroupCode, value: region.value, accessCount: region.totalAccess, geoJson: region.geoJson, isManagedRegion: region.isManagedRegion !== false }; } var createUseMapData = (fetchMapDataApi) => { return (filters) => { const filtersRef = _react.useRef.call(void 0, filters); filtersRef.current = filters; const filtersKey = JSON.stringify(filters); const fetchIdRef = _react.useRef.call(void 0, 0); const [data, setData] = _react.useState.call(void 0, []); const [bounds, setBounds] = _react.useState.call(void 0, null); const [geoJSON, setGeoJSON] = _react.useState.call(void 0, null); const [loading, setLoading] = _react.useState.call(void 0, true); const [error, setError] = _react.useState.call(void 0, null); const fetchData = _react.useCallback.call(void 0, async () => { const fetchId = ++fetchIdRef.current; setLoading(true); setError(null); try { const mapData = await fetchMapDataApi(filtersRef.current); if (fetchIdRef.current !== fetchId) return; const transformedRegions = mapData.data.geoJSON ? transformGeoJSONFeatures(mapData.data.geoJSON) : mapData.data.regions.map(transformRegionData).filter((r) => r !== null); setData(transformedRegions); setBounds(mapData.data.bounds); setGeoJSON(_nullishCoalesce(mapData.data.geoJSON, () => ( null))); } catch (err) { if (fetchIdRef.current !== fetchId) return; const errorMessage = err instanceof Error ? err.message : "Erro ao carregar dados do mapa"; setError(errorMessage); setData([]); setBounds(null); setGeoJSON(null); } finally { if (fetchIdRef.current === fetchId) { setLoading(false); } } }, [filtersKey]); _react.useEffect.call(void 0, () => { fetchData(); }, [fetchData]); return { data, bounds, geoJSON, loading, error, refetch: fetchData }; }; }; exports.createUseMapData = createUseMapData; //# sourceMappingURL=chunk-PS3SDZMN.js.map