UNPKG

react-native-mapsforge-vtm

Version:

React Native components to build vector maps using Mapsforges fork of vtm. Offline rendering of OpenStreetMap data. Android only

62 lines (58 loc) 1.84 kB
"use strict"; /** * External dependencies */ import { useEffect, useState } from 'react'; import { NativeModules, NativeEventEmitter } from 'react-native'; /** * Internal dependencies */ const { MapLayerMapsforgeModule } = NativeModules; const useRenderStyleOptions = ({ renderTheme, nativeNodeHandle, onError }) => { const [renderStyleOptions, setRenderStyleOptions] = useState([]); const [renderStyleDefaultId, setRenderStyleDefault] = useState(null); useEffect(() => { const eventEmitter = new NativeEventEmitter(); let eventListener = eventEmitter.addListener('RenderThemeParsed', result => { if (result && renderTheme === result.filePath) { setRenderStyleOptions(Object.values(result.collection)); if (null == renderStyleDefaultId) { const defaultStyle = Object.values(result.collection).find(obj => !!obj.default); if (undefined !== defaultStyle) { setRenderStyleDefault(defaultStyle.value); } } } }); return () => { eventListener.remove(); }; }, [nativeNodeHandle]); // ??? should reset on prop change !!! useEffect(() => { if (renderTheme) { MapLayerMapsforgeModule.getRenderThemeOptions(renderTheme).then(collection => { setRenderStyleOptions(Object.values(collection)); const defaultStyle = Object.values(collection).find(obj => obj.default); if (undefined !== defaultStyle && !!defaultStyle) { setRenderStyleDefault(defaultStyle.value); } }).catch(err => { console.log('ERROR', err); onError ? onError(err) : null; }); } }, [nativeNodeHandle, renderTheme]); return { renderStyleDefaultId, renderStyleOptions }; }; export default useRenderStyleOptions; //# sourceMappingURL=useRenderStyleOptions.js.map