analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
81 lines (78 loc) • 4.15 kB
JavaScript
;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