123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- import { ComponentType, ReactElement, ReactNode, Component } from 'react';
- import { Insets, NativeSyntheticEvent, StyleProp, ViewProps, ViewStyle } from 'react-native';
-
- export interface WebViewNativeEvent {
- readonly url: string;
- readonly loading: boolean;
- readonly title: string;
- readonly canGoBack: boolean;
- readonly canGoForward: boolean;
- }
-
- export interface WebViewProgressEvent extends WebViewNativeEvent {
- readonly progress: number;
- }
-
- export interface WebViewNavigation extends WebViewNativeEvent {
- readonly navigationType:
- | 'click'
- | 'formsubmit'
- | 'backforward'
- | 'reload'
- | 'formresubmit'
- | 'other';
- }
-
- export interface WebViewMessage extends WebViewNativeEvent {
- readonly data: string;
- }
-
- export interface WebViewError extends WebViewNativeEvent {
- readonly domain?: string;
- readonly code: number;
- readonly description: string;
- }
-
- export type WebViewEvent = NativeSyntheticEvent<WebViewNativeEvent>;
-
- export type WebViewNavigationEvent = NativeSyntheticEvent<WebViewNavigation>;
-
- export type WebViewMessageEvent = NativeSyntheticEvent<WebViewMessage>;
-
- export type WebViewErrorEvent = NativeSyntheticEvent<WebViewError>;
-
- export type DataDetectorTypes =
- | 'phoneNumber'
- | 'link'
- | 'address'
- | 'calendarEvent'
- | 'trackingNumber'
- | 'flightNumber'
- | 'lookupSuggestion'
- | 'none'
- | 'all';
-
- export type OverScrollModeType = 'always' | 'content' | 'never';
-
- export interface WebViewSourceUri {
-
-
- uri?: string;
-
-
-
- method?: string;
-
-
-
- headers?: {[key: string]: string};
-
-
-
- body?: string;
- }
-
- export interface WebViewSourceHtml {
-
-
- html?: string;
-
-
- baseUrl?: string;
- }
-
- export type WebViewSource = WebViewSourceUri | WebViewSourceHtml;
-
- export interface WebViewNativeConfig {
-
-
- component?: ComponentType<WebViewSharedProps>;
-
-
- props?: any;
-
-
- viewManager?: any;
- }
-
- export interface IOSWebViewProps {
-
-
- useWebKit?: boolean;
-
-
-
- bounces?: boolean;
-
-
-
- decelerationRate?: 'fast' | 'normal' | number;
-
-
-
- scrollEnabled?: boolean;
-
-
-
- contentInset?: Insets;
-
-
-
- dataDetectorTypes?: DataDetectorTypes | DataDetectorTypes[];
-
-
-
- onShouldStartLoadWithRequest?: (event: WebViewNativeEvent) => any;
-
-
-
- allowsInlineMediaPlayback?: boolean;
-
-
- hideKeyboardAccessoryView?: boolean;
- }
-
- export interface AndroidWebViewProps {
- onNavigationStateChange?: (event: WebViewNavigation) => any;
- onContentSizeChange?: (event: WebViewEvent) => any;
-
-
-
- overScrollMode?: OverScrollModeType;
-
-
-
- geolocationEnabled?: boolean;
-
-
-
- allowUniversalAccessFromFileURLs?: boolean;
-
-
-
- allowFileAccess?: boolean;
-
-
-
- saveFormDataDisabled?: boolean;
-
-
-
- urlPrefixesForDefaultIntent?: string[];
-
-
-
- javaScriptEnabled?: boolean;
-
-
-
- thirdPartyCookiesEnabled?: boolean;
-
-
-
- domStorageEnabled?: boolean;
-
-
-
- userAgent?: string;
-
-
-
- mixedContentMode?: 'never' | 'always' | 'compatibility';
- }
-
- export interface WebViewSharedProps extends ViewProps, IOSWebViewProps, AndroidWebViewProps {
-
-
- url?: string;
-
-
- html?: string;
-
-
-
- source?: WebViewSource;
-
-
-
- renderError?: (errorDomain: string | undefined, errorCode: number, errorDesc: string) => ReactElement<any>;
-
-
-
- renderLoading?: () => ReactElement<any>;
-
-
-
- onLoad?: (event: WebViewNavigationEvent) => any;
-
-
-
- onLoadEnd?: (event: WebViewNavigationEvent | WebViewErrorEvent) => any;
-
-
-
- onLoadStart?: (event: WebViewNavigationEvent) => any;
-
-
-
- onError?: (event: WebViewErrorEvent) => any;
-
-
-
- automaticallyAdjustContentInsets?: boolean;
-
-
-
- onNavigationStateChange?: (event: WebViewNavigation) => any;
-
-
-
- onMessage?: (event: WebViewMessageEvent) => any;
-
-
-
- onLoadProgress?: (event: NativeSyntheticEvent<WebViewProgressEvent>) => any;
-
-
-
- startInLoadingState?: string;
-
-
-
- injectedJavaScript?: string;
-
-
-
- scalesPageToFit?: boolean;
-
-
-
- mediaPlaybackRequiresUserAction?: boolean;
-
-
-
- originWhitelist?: string[];
-
-
-
- nativeConfig?: WebViewNativeConfig;
-
- style?: StyleProp<ViewStyle>;
- children?: ReactNode;
- }
-
- export class WebView extends Component<WebViewSharedProps> {
- public goForward: () => void;
- public goBack: () => void;
- public reload: () => void;
- public stopLoading: () => void;
- }
|