react-native-mapsforge-vtm
Version:
React Native components to build vector maps using Mapsforges fork of vtm. Offline rendering of OpenStreetMap data. Android only
66 lines (62 loc) • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
var _reactNative = require("react-native");
/**
* External dependencies
*/
/**
* Internal dependencies
*/
const {
MapLayerMapsforgeModule
} = _reactNative.NativeModules;
const useRenderStyleOptions = ({
renderTheme,
nativeNodeHandle,
onError
}) => {
const [renderStyleOptions, setRenderStyleOptions] = (0, _react.useState)([]);
const [renderStyleDefaultId, setRenderStyleDefault] = (0, _react.useState)(null);
(0, _react.useEffect)(() => {
const eventEmitter = new _reactNative.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 !!!
(0, _react.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
};
};
var _default = exports.default = useRenderStyleOptions;
//# sourceMappingURL=useRenderStyleOptions.js.map