import React, { ReactElement } from 'react'; import { StyleSheet, View, NativeSyntheticEvent } from 'react-native'; import { WebView } from 'react-native-webview'; import { Asset } from 'expo-asset'; import DebugMessageBox from './DebugMessageBox'; import { WebViewError } from 'react-native-webview/lib/WebViewTypes'; export interface Props { backgroundColor: string; debugMessages: string[]; doShowDebugMessages: boolean; handleMessage: (data: string) => void; webviewContent: string; loadingIndicator: () => ReactElement; onError: (syntheticEvent: NativeSyntheticEvent) => void; onLoadEnd: () => void; onLoadStart: () => void; setWebViewRef: (ref: WebView) => void; } const WebViewLeafletView = ({ backgroundColor, debugMessages, doShowDebugMessages, handleMessage, webviewContent, loadingIndicator, onError, onLoadEnd, onLoadStart, setWebViewRef }: Props) => { return ( {webviewContent && ( { setWebViewRef(component); }} javaScriptEnabled={true} onLoadEnd={onLoadEnd} onLoadStart={onLoadStart} onMessage={(event) => { if (event && event.nativeEvent && event.nativeEvent.data) { handleMessage(event.nativeEvent.data); } }} domStorageEnabled={true} useWebKit={true} startInLoadingState={true} onError={onError} originWhitelist={['*']} /* renderLoading={loadingIndicator || null} */ source={{ html: webviewContent }} allowFileAccess={true} allowUniversalAccessFromFileURLs={true} allowFileAccessFromFileURLs={true} /> )} ); }; export default WebViewLeafletView;