@javascriptcommon/react-native-webview 13.12.21 → 13.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/gradle.properties +1 -1
- package/android/src/main/AndroidManifest.xml +12 -0
- package/android/src/main/AndroidManifestNew.xml +13 -0
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebView.java +52 -25
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewClient.java +27 -25
- package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManagerImpl.kt +10 -6
- package/android/src/main/java/com/reactnativecommunity/webview/events/SubResourceErrorEvent.kt +25 -0
- package/android/src/newarch/com/reactnativecommunity/webview/RNCWebViewManager.java +12 -1
- package/android/src/oldarch/com/reactnativecommunity/webview/RNCWebViewManager.java +7 -0
- package/apple/RNCWebView.h +1 -1
- package/apple/RNCWebView.mm +26 -17
- package/apple/RNCWebViewImpl.h +2 -1
- package/apple/RNCWebViewImpl.m +62 -25
- package/apple/RNCWebViewManager.mm +4 -0
- package/index.d.ts +2 -3
- package/lib/RNCWebViewNativeComponent.d.ts +24 -21
- package/lib/RNCWebViewNativeComponent.js +1 -1
- package/lib/WebView.android.js +1 -1
- package/lib/WebView.ios.js +1 -1
- package/lib/WebView.js +1 -1
- package/lib/WebView.macos.js +1 -1
- package/lib/WebView.windows.js +1 -1
- package/lib/WebViewShared.d.ts +3 -1
- package/lib/WebViewShared.js +1 -1
- package/lib/WebViewTypes.d.ts +32 -8
- package/lib/WebViewTypes.js +1 -1
- package/package.json +9 -1
- package/src/RNCWebViewNativeComponent.ts +27 -21
- package/src/WebView.android.tsx +4 -0
- package/src/WebViewShared.tsx +10 -0
- package/src/WebViewTypes.ts +36 -8
package/lib/WebView.macos.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _invariant=_interopRequireDefault(require("invariant"));var _RNCWebViewNativeComponent=_interopRequireWildcard(require("./RNCWebViewNativeComponent"));var _NativeRNCWebViewModule=_interopRequireDefault(require("./NativeRNCWebViewModule"));var _WebViewShared=require("./WebViewShared");var _WebView=_interopRequireDefault(require("./WebView.styles"));var _jsxRuntime=require("react/jsx-runtime");var _excluded=["javaScriptEnabled","cacheEnabled","originWhitelist","useSharedProcessPool","injectedJavaScript","injectedJavaScriptBeforeContentLoaded","startInLoadingState","onNavigationStateChange","onLoadStart","onError","onLoad","onLoadEnd","onLoadProgress","onHttpError","onMessage","renderLoading","renderError","style","containerStyle","source","nativeConfig","allowsInlineMediaPlayback","allowsPictureInPictureMediaPlayback","allowsAirPlayForMediaPlayback","mediaPlaybackRequiresUserAction","incognito","onShouldStartLoadWithRequest"];var _this=this,_jsxFileName="/Users/
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _invariant=_interopRequireDefault(require("invariant"));var _RNCWebViewNativeComponent=_interopRequireWildcard(require("./RNCWebViewNativeComponent"));var _NativeRNCWebViewModule=_interopRequireDefault(require("./NativeRNCWebViewModule"));var _WebViewShared=require("./WebViewShared");var _WebView=_interopRequireDefault(require("./WebView.styles"));var _jsxRuntime=require("react/jsx-runtime");var _excluded=["javaScriptEnabled","cacheEnabled","originWhitelist","useSharedProcessPool","injectedJavaScript","injectedJavaScriptBeforeContentLoaded","startInLoadingState","onNavigationStateChange","onLoadStart","onError","onLoad","onLoadEnd","onLoadProgress","onHttpError","onMessage","renderLoading","renderError","style","containerStyle","source","nativeConfig","allowsInlineMediaPlayback","allowsPictureInPictureMediaPlayback","allowsAirPlayForMediaPlayback","mediaPlaybackRequiresUserAction","incognito","onShouldStartLoadWithRequest"];var _this=this,_jsxFileName="/Users/marco/react-native-webview/src/WebView.macos.tsx";function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u];}return n.default=e,t&&t.set(e,n),n;}var resolveAssetSource=_reactNative.Image.resolveAssetSource;var useWarnIfChanges=function useWarnIfChanges(value,name){var ref=(0,_react.useRef)(value);if(ref.current!==value){console.warn(`Changes to property ${name} do nothing after the initial render.`);ref.current=value;}};var WebViewComponent=(0,_react.forwardRef)(function(_ref,ref){var _ref$javaScriptEnable=_ref.javaScriptEnabled,javaScriptEnabled=_ref$javaScriptEnable===void 0?true:_ref$javaScriptEnable,_ref$cacheEnabled=_ref.cacheEnabled,cacheEnabled=_ref$cacheEnabled===void 0?true:_ref$cacheEnabled,_ref$originWhitelist=_ref.originWhitelist,originWhitelist=_ref$originWhitelist===void 0?_WebViewShared.defaultOriginWhitelist:_ref$originWhitelist,_ref$useSharedProcess=_ref.useSharedProcessPool,useSharedProcessPool=_ref$useSharedProcess===void 0?true:_ref$useSharedProcess,injectedJavaScript=_ref.injectedJavaScript,injectedJavaScriptBeforeContentLoaded=_ref.injectedJavaScriptBeforeContentLoaded,startInLoadingState=_ref.startInLoadingState,onNavigationStateChange=_ref.onNavigationStateChange,onLoadStart=_ref.onLoadStart,onError=_ref.onError,onLoad=_ref.onLoad,onLoadEnd=_ref.onLoadEnd,onLoadProgress=_ref.onLoadProgress,onHttpErrorProp=_ref.onHttpError,onMessageProp=_ref.onMessage,renderLoading=_ref.renderLoading,renderError=_ref.renderError,style=_ref.style,containerStyle=_ref.containerStyle,source=_ref.source,nativeConfig=_ref.nativeConfig,allowsInlineMediaPlayback=_ref.allowsInlineMediaPlayback,_ref$allowsPictureInP=_ref.allowsPictureInPictureMediaPlayback,allowsPictureInPictureMediaPlayback=_ref$allowsPictureInP===void 0?true:_ref$allowsPictureInP,allowsAirPlayForMediaPlayback=_ref.allowsAirPlayForMediaPlayback,mediaPlaybackRequiresUserAction=_ref.mediaPlaybackRequiresUserAction,incognito=_ref.incognito,onShouldStartLoadWithRequestProp=_ref.onShouldStartLoadWithRequest,otherProps=(0,_objectWithoutProperties2.default)(_ref,_excluded);var webViewRef=(0,_react.useRef)(null);var onShouldStartLoadWithRequestCallback=(0,_react.useCallback)(function(shouldStart,_url){var lockIdentifier=arguments.length>2&&arguments[2]!==undefined?arguments[2]:0;_NativeRNCWebViewModule.default.shouldStartLoadWithLockIdentifier(!!shouldStart,lockIdentifier);},[]);var _useWebViewLogic=(0,_WebViewShared.useWebViewLogic)({onNavigationStateChange:onNavigationStateChange,onLoad:onLoad,onError:onError,onHttpErrorProp:onHttpErrorProp,onLoadEnd:onLoadEnd,onLoadProgress:onLoadProgress,onLoadStart:onLoadStart,onMessageProp:onMessageProp,startInLoadingState:startInLoadingState,originWhitelist:originWhitelist,onShouldStartLoadWithRequestProp:onShouldStartLoadWithRequestProp,onShouldStartLoadWithRequestCallback:onShouldStartLoadWithRequestCallback}),onLoadingStart=_useWebViewLogic.onLoadingStart,onShouldStartLoadWithRequest=_useWebViewLogic.onShouldStartLoadWithRequest,onMessage=_useWebViewLogic.onMessage,viewState=_useWebViewLogic.viewState,setViewState=_useWebViewLogic.setViewState,lastErrorEvent=_useWebViewLogic.lastErrorEvent,onHttpError=_useWebViewLogic.onHttpError,onLoadingError=_useWebViewLogic.onLoadingError,onLoadingFinish=_useWebViewLogic.onLoadingFinish,onLoadingProgress=_useWebViewLogic.onLoadingProgress,onContentProcessDidTerminate=_useWebViewLogic.onContentProcessDidTerminate;(0,_react.useImperativeHandle)(ref,function(){return{goForward:function goForward(){return webViewRef.current&&_RNCWebViewNativeComponent.Commands.goForward(webViewRef.current);},goBack:function goBack(){return webViewRef.current&&_RNCWebViewNativeComponent.Commands.goBack(webViewRef.current);},reload:function reload(){setViewState('LOADING');if(webViewRef.current){_RNCWebViewNativeComponent.Commands.reload(webViewRef.current);}},stopLoading:function stopLoading(){return webViewRef.current&&_RNCWebViewNativeComponent.Commands.stopLoading(webViewRef.current);},postMessage:function postMessage(data){return webViewRef.current&&_RNCWebViewNativeComponent.Commands.postMessage(webViewRef.current,data);},injectJavaScript:function injectJavaScript(data){return webViewRef.current&&_RNCWebViewNativeComponent.Commands.injectJavaScript(webViewRef.current,data);},requestFocus:function requestFocus(){return webViewRef.current&&_RNCWebViewNativeComponent.Commands.requestFocus(webViewRef.current);}};},[setViewState,webViewRef]);useWarnIfChanges(allowsInlineMediaPlayback,'allowsInlineMediaPlayback');useWarnIfChanges(allowsPictureInPictureMediaPlayback,'allowsPictureInPictureMediaPlayback');useWarnIfChanges(allowsAirPlayForMediaPlayback,'allowsAirPlayForMediaPlayback');useWarnIfChanges(incognito,'incognito');useWarnIfChanges(mediaPlaybackRequiresUserAction,'mediaPlaybackRequiresUserAction');var otherView=null;if(viewState==='LOADING'){otherView=(renderLoading||_WebViewShared.defaultRenderLoading)();}else if(viewState==='ERROR'){var _lastErrorEvent$descr;(0,_invariant.default)(lastErrorEvent!=null,'lastErrorEvent expected to be non-null');otherView=(renderError||_WebViewShared.defaultRenderError)(lastErrorEvent==null?void 0:lastErrorEvent.domain,(lastErrorEvent==null?void 0:lastErrorEvent.code)||0,(_lastErrorEvent$descr=lastErrorEvent==null?void 0:lastErrorEvent.description)!=null?_lastErrorEvent$descr:'');}else if(viewState!=='IDLE'){console.error(`RNCWebView invalid state encountered: ${viewState}`);}var webViewStyles=[_WebView.default.container,_WebView.default.webView,style];var webViewContainerStyle=[_WebView.default.container,containerStyle];var NativeWebView=(nativeConfig==null?void 0:nativeConfig.component)||_RNCWebViewNativeComponent.default;var sourceResolved=resolveAssetSource(source);var newSource=typeof sourceResolved==='object'?Object.entries(sourceResolved).reduce(function(prev,_ref2){var _ref3=(0,_slicedToArray2.default)(_ref2,2),currKey=_ref3[0],currValue=_ref3[1];return Object.assign({},prev,(0,_defineProperty2.default)({},currKey,currKey==='headers'&&currValue&&typeof currValue==='object'?Object.entries(currValue).map(function(_ref4){var _ref5=(0,_slicedToArray2.default)(_ref4,2),key=_ref5[0],value=_ref5[1];return{name:key,value:value};}):currValue));},{}):sourceResolved;var webView=(0,_jsxRuntime.jsx)(NativeWebView,Object.assign({},otherProps,{javaScriptEnabled:javaScriptEnabled,cacheEnabled:cacheEnabled,useSharedProcessPool:useSharedProcessPool,messagingEnabled:typeof onMessageProp==='function',newSource:newSource,onLoadingError:onLoadingError,onLoadingFinish:onLoadingFinish,onLoadingProgress:onLoadingProgress,onLoadingStart:onLoadingStart,onHttpError:onHttpError,onMessage:onMessage,onShouldStartLoadWithRequest:onShouldStartLoadWithRequest,onContentProcessDidTerminate:onContentProcessDidTerminate,injectedJavaScript:injectedJavaScript,injectedJavaScriptBeforeContentLoaded:injectedJavaScriptBeforeContentLoaded,allowsAirPlayForMediaPlayback:allowsAirPlayForMediaPlayback,allowsInlineMediaPlayback:allowsInlineMediaPlayback,allowsPictureInPictureMediaPlayback:allowsPictureInPictureMediaPlayback,incognito:incognito,mediaPlaybackRequiresUserAction:mediaPlaybackRequiresUserAction,ref:webViewRef,source:sourceResolved,style:webViewStyles},nativeConfig==null?void 0:nativeConfig.props),"webViewKey");return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:webViewContainerStyle,children:[webView,otherView]});});var isFileUploadSupported=function(){var _ref6=(0,_asyncToGenerator2.default)(function*(){return true;});return function isFileUploadSupported(){return _ref6.apply(this,arguments);};}();var WebView=Object.assign(WebViewComponent,{isFileUploadSupported:isFileUploadSupported});var _default=exports.default=WebView;
|
package/lib/WebView.windows.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _codegenNativeCommands=_interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeCommands"));var _invariant=_interopRequireDefault(require("invariant"));var _WebViewNativeComponent=require("./WebViewNativeComponent.windows");var _WebViewShared=require("./WebViewShared");var _WebView=_interopRequireDefault(require("./WebView.styles"));var _jsxRuntime=require("react/jsx-runtime");var _excluded=["cacheEnabled","originWhitelist","startInLoadingState","onNavigationStateChange","onLoadStart","onError","onLoad","onLoadEnd","onLoadProgress","onOpenWindow","onSourceChanged","onHttpError","onMessage","renderLoading","renderError","style","containerStyle","source","nativeConfig","onShouldStartLoadWithRequest","useWebView2"];var _this=this,_jsxFileName="/Users/
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _codegenNativeCommands=_interopRequireDefault(require("react-native/Libraries/Utilities/codegenNativeCommands"));var _invariant=_interopRequireDefault(require("invariant"));var _WebViewNativeComponent=require("./WebViewNativeComponent.windows");var _WebViewShared=require("./WebViewShared");var _WebView=_interopRequireDefault(require("./WebView.styles"));var _jsxRuntime=require("react/jsx-runtime");var _excluded=["cacheEnabled","originWhitelist","startInLoadingState","onNavigationStateChange","onLoadStart","onError","onLoad","onLoadEnd","onLoadProgress","onOpenWindow","onSourceChanged","onHttpError","onMessage","renderLoading","renderError","style","containerStyle","source","nativeConfig","onShouldStartLoadWithRequest","useWebView2"];var _this=this,_jsxFileName="/Users/marco/react-native-webview/src/WebView.windows.tsx";function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u];}return n.default=e,t&&t.set(e,n),n;}var Commands=(0,_codegenNativeCommands.default)({supportedCommands:['goBack','goForward','reload','stopLoading','injectJavaScript','requestFocus','clearCache','postMessage','loadUrl']});var resolveAssetSource=_reactNative.Image.resolveAssetSource;var WebViewComponent=(0,_react.forwardRef)(function(_ref,ref){var _ref$cacheEnabled=_ref.cacheEnabled,cacheEnabled=_ref$cacheEnabled===void 0?true:_ref$cacheEnabled,_ref$originWhitelist=_ref.originWhitelist,originWhitelist=_ref$originWhitelist===void 0?_WebViewShared.defaultOriginWhitelist:_ref$originWhitelist,startInLoadingState=_ref.startInLoadingState,onNavigationStateChange=_ref.onNavigationStateChange,onLoadStart=_ref.onLoadStart,onError=_ref.onError,onLoad=_ref.onLoad,onLoadEnd=_ref.onLoadEnd,onLoadProgress=_ref.onLoadProgress,onOpenWindowProp=_ref.onOpenWindow,onSourceChanged=_ref.onSourceChanged,onHttpErrorProp=_ref.onHttpError,onMessageProp=_ref.onMessage,renderLoading=_ref.renderLoading,renderError=_ref.renderError,style=_ref.style,containerStyle=_ref.containerStyle,source=_ref.source,nativeConfig=_ref.nativeConfig,onShouldStartLoadWithRequestProp=_ref.onShouldStartLoadWithRequest,useWebView2=_ref.useWebView2,otherProps=(0,_objectWithoutProperties2.default)(_ref,_excluded);var webViewRef=(0,_react.useRef)(null);var RCTWebViewString=useWebView2?'RCTWebView2':'RCTWebView';var onShouldStartLoadWithRequestCallback=(0,_react.useCallback)(function(shouldStart,url,lockIdentifier){if(lockIdentifier){if(RCTWebViewString==='RCTWebView'){_reactNative.NativeModules.RCTWebView.onShouldStartLoadWithRequestCallback(shouldStart,lockIdentifier);}else{_reactNative.NativeModules.RCTWebView2.onShouldStartLoadWithRequestCallback(shouldStart,lockIdentifier);}}else if(shouldStart){Commands.loadUrl(webViewRef,url);}},[RCTWebViewString]);var _useWebViewLogic=(0,_WebViewShared.useWebViewLogic)({onNavigationStateChange:onNavigationStateChange,onLoad:onLoad,onError:onError,onHttpErrorProp:onHttpErrorProp,onLoadEnd:onLoadEnd,onLoadProgress:onLoadProgress,onLoadStart:onLoadStart,onMessageProp:onMessageProp,startInLoadingState:startInLoadingState,originWhitelist:originWhitelist,onShouldStartLoadWithRequestProp:onShouldStartLoadWithRequestProp,onShouldStartLoadWithRequestCallback:onShouldStartLoadWithRequestCallback,onOpenWindowProp:onOpenWindowProp}),onLoadingStart=_useWebViewLogic.onLoadingStart,onShouldStartLoadWithRequest=_useWebViewLogic.onShouldStartLoadWithRequest,onMessage=_useWebViewLogic.onMessage,viewState=_useWebViewLogic.viewState,setViewState=_useWebViewLogic.setViewState,lastErrorEvent=_useWebViewLogic.lastErrorEvent,onHttpError=_useWebViewLogic.onHttpError,onLoadingError=_useWebViewLogic.onLoadingError,onLoadingFinish=_useWebViewLogic.onLoadingFinish,onLoadingProgress=_useWebViewLogic.onLoadingProgress,onOpenWindow=_useWebViewLogic.onOpenWindow;(0,_react.useImperativeHandle)(ref,function(){return{goForward:function goForward(){return Commands.goForward(webViewRef.current);},goBack:function goBack(){return Commands.goBack(webViewRef.current);},reload:function reload(){setViewState('LOADING');Commands.reload(webViewRef.current);},stopLoading:function stopLoading(){return Commands.stopLoading(webViewRef.current);},postMessage:function postMessage(data){return Commands.postMessage(webViewRef.current,data);},injectJavaScript:function injectJavaScript(data){return Commands.injectJavaScript(webViewRef.current,data);},requestFocus:function requestFocus(){return Commands.requestFocus(webViewRef.current);},clearCache:function clearCache(){return Commands.clearCache(webViewRef.current);},loadUrl:function loadUrl(url){return Commands.loadUrl(webViewRef.current,url);}};},[setViewState,webViewRef]);var otherView=null;if(viewState==='LOADING'){otherView=(renderLoading||_WebViewShared.defaultRenderLoading)();}else if(viewState==='ERROR'){(0,_invariant.default)(lastErrorEvent!=null,'lastErrorEvent expected to be non-null');otherView=(renderError||_WebViewShared.defaultRenderError)(lastErrorEvent.domain,lastErrorEvent.code,lastErrorEvent.description);}else if(viewState!=='IDLE'){console.error(`RNCWebView invalid state encountered: ${viewState}`);}var webViewStyles=[_WebView.default.container,_WebView.default.webView,style];var webViewContainerStyle=[_WebView.default.container,containerStyle];var NativeWebView=useWebView2?_WebViewNativeComponent.RCTWebView2:_WebViewNativeComponent.RCTWebView;var webView=(0,_jsxRuntime.jsx)(NativeWebView,Object.assign({},otherProps,{messagingEnabled:typeof onMessageProp==='function',linkHandlingEnabled:typeof onOpenWindowProp==='function',onLoadingError:onLoadingError,onLoadingFinish:onLoadingFinish,onLoadingProgress:onLoadingProgress,onLoadingStart:onLoadingStart,onHttpError:onHttpError,onMessage:onMessage,onShouldStartLoadWithRequest:onShouldStartLoadWithRequest,onOpenWindow:onOpenWindow,onSourceChanged:onSourceChanged,ref:webViewRef,source:resolveAssetSource(source),style:webViewStyles,cacheEnabled:cacheEnabled},nativeConfig==null?void 0:nativeConfig.props),"webViewKey");return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:webViewContainerStyle,children:[webView,otherView]});});var isFileUploadSupported=function(){var _ref2=(0,_asyncToGenerator2.default)(function*(){return false;});return function isFileUploadSupported(){return _ref2.apply(this,arguments);};}();var WebView=Object.assign(WebViewComponent,{isFileUploadSupported:isFileUploadSupported});var _default=exports.default=WebView;
|
package/lib/WebViewShared.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ declare const createOnShouldStartLoadWithRequest: (loadRequest: (shouldStart: bo
|
|
|
5
5
|
declare const defaultRenderLoading: () => React.JSX.Element;
|
|
6
6
|
declare const defaultRenderError: (errorDomain: string | undefined, errorCode: number, errorDesc: string) => React.JSX.Element;
|
|
7
7
|
export { defaultOriginWhitelist, createOnShouldStartLoadWithRequest, defaultRenderLoading, defaultRenderError, };
|
|
8
|
-
export declare const useWebViewLogic: ({ startInLoadingState, onNavigationStateChange, onLoadStart, onLoad, onLoadProgress, onLoadEnd, onError, onHttpErrorProp, onMessageProp, onOpenWindowProp, onRenderProcessGoneProp, onContentProcessDidTerminateProp, originWhitelist, onShouldStartLoadWithRequestProp, onShouldStartLoadWithRequestCallback, }: {
|
|
8
|
+
export declare const useWebViewLogic: ({ startInLoadingState, onNavigationStateChange, onLoadStart, onLoad, onLoadProgress, onLoadEnd, onError, onLoadSubResourceError, onHttpErrorProp, onMessageProp, onOpenWindowProp, onRenderProcessGoneProp, onContentProcessDidTerminateProp, originWhitelist, onShouldStartLoadWithRequestProp, onShouldStartLoadWithRequestCallback, }: {
|
|
9
9
|
startInLoadingState?: boolean | undefined;
|
|
10
10
|
onNavigationStateChange?: ((event: WebViewNavigation) => void) | undefined;
|
|
11
11
|
onLoadStart?: ((event: WebViewNavigationEvent) => void) | undefined;
|
|
@@ -13,6 +13,7 @@ export declare const useWebViewLogic: ({ startInLoadingState, onNavigationStateC
|
|
|
13
13
|
onLoadProgress?: ((event: WebViewProgressEvent) => void) | undefined;
|
|
14
14
|
onLoadEnd?: ((event: WebViewNavigationEvent | WebViewErrorEvent) => void) | undefined;
|
|
15
15
|
onError?: ((event: WebViewErrorEvent) => void) | undefined;
|
|
16
|
+
onLoadSubResourceError?: ((event: WebViewErrorEvent) => void) | undefined;
|
|
16
17
|
onHttpErrorProp?: ((event: WebViewHttpErrorEvent) => void) | undefined;
|
|
17
18
|
onMessageProp?: ((event: WebViewMessageEvent) => void) | undefined;
|
|
18
19
|
onOpenWindowProp?: ((event: WebViewOpenWindowEvent) => void) | undefined;
|
|
@@ -26,6 +27,7 @@ export declare const useWebViewLogic: ({ startInLoadingState, onNavigationStateC
|
|
|
26
27
|
onLoadingStart: (event: WebViewNavigationEvent) => void;
|
|
27
28
|
onLoadingProgress: (event: WebViewProgressEvent) => void;
|
|
28
29
|
onLoadingError: (event: WebViewErrorEvent) => void;
|
|
30
|
+
onLoadingSubResourceError: (event: WebViewErrorEvent) => void;
|
|
29
31
|
onLoadingFinish: (event: WebViewNavigationEvent) => void;
|
|
30
32
|
onHttpError: (event: WebViewHttpErrorEvent) => void;
|
|
31
33
|
onRenderProcessGone: (event: WebViewRenderProcessGoneEvent) => void;
|
package/lib/WebViewShared.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.useWebViewLogic=exports.defaultRenderLoading=exports.defaultRenderError=exports.defaultOriginWhitelist=exports.createOnShouldStartLoadWithRequest=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _escapeStringRegexp=_interopRequireDefault(require("escape-string-regexp"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _WebView=_interopRequireDefault(require("./WebView.styles"));var _jsxRuntime=require("react/jsx-runtime");var _this=this,_jsxFileName="/Users/
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.useWebViewLogic=exports.defaultRenderLoading=exports.defaultRenderError=exports.defaultOriginWhitelist=exports.createOnShouldStartLoadWithRequest=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _escapeStringRegexp=_interopRequireDefault(require("escape-string-regexp"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _WebView=_interopRequireDefault(require("./WebView.styles"));var _jsxRuntime=require("react/jsx-runtime");var _this=this,_jsxFileName="/Users/marco/react-native-webview/src/WebViewShared.tsx";function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap(),t=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(e){return e?t:r;})(e);}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u];}return n.default=e,t&&t.set(e,n),n;}var defaultOriginWhitelist=exports.defaultOriginWhitelist=['http://*','https://*'];var extractOrigin=function extractOrigin(url){var result=/^[A-Za-z][A-Za-z0-9+\-.]+:(\/\/)?[^/]*/.exec(url);return result===null?'':result[0];};var originWhitelistToRegex=function originWhitelistToRegex(originWhitelist){return`^${(0,_escapeStringRegexp.default)(originWhitelist).replace(/\\\*/g,'.*')}`;};var passesWhitelist=function passesWhitelist(compiledWhitelist,url){var origin=extractOrigin(url);return compiledWhitelist.some(function(x){return new RegExp(x).test(origin);});};var compileWhitelist=function compileWhitelist(originWhitelist){return['about:blank'].concat((0,_toConsumableArray2.default)(originWhitelist||[])).map(originWhitelistToRegex);};var createOnShouldStartLoadWithRequest=exports.createOnShouldStartLoadWithRequest=function createOnShouldStartLoadWithRequest(loadRequest,originWhitelist,onShouldStartLoadWithRequest){return function(_ref){var nativeEvent=_ref.nativeEvent;var shouldStart=true;var url=nativeEvent.url,lockIdentifier=nativeEvent.lockIdentifier;if(!passesWhitelist(compileWhitelist(originWhitelist),url)){_reactNative.Linking.canOpenURL(url).then(function(supported){if(supported){return _reactNative.Linking.openURL(url);}console.warn(`Can't open url: ${url}`);return undefined;}).catch(function(e){console.warn('Error opening URL: ',e);});shouldStart=false;}else if(onShouldStartLoadWithRequest){shouldStart=onShouldStartLoadWithRequest(nativeEvent);}loadRequest(shouldStart,url,lockIdentifier);};};var defaultRenderLoading=exports.defaultRenderLoading=function defaultRenderLoading(){return(0,_jsxRuntime.jsx)(_reactNative.View,{style:_WebView.default.loadingOrErrorView,children:(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{})});};var defaultRenderError=exports.defaultRenderError=function defaultRenderError(errorDomain,errorCode,errorDesc){return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_WebView.default.loadingOrErrorView,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WebView.default.errorTextTitle,children:"Error loading page"}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WebView.default.errorText,children:`Domain: ${errorDomain}`}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WebView.default.errorText,children:`Error Code: ${errorCode}`}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:_WebView.default.errorText,children:`Description: ${errorDesc}`})]});};var useWebViewLogic=exports.useWebViewLogic=function useWebViewLogic(_ref2){var startInLoadingState=_ref2.startInLoadingState,onNavigationStateChange=_ref2.onNavigationStateChange,onLoadStart=_ref2.onLoadStart,onLoad=_ref2.onLoad,onLoadProgress=_ref2.onLoadProgress,onLoadEnd=_ref2.onLoadEnd,onError=_ref2.onError,onLoadSubResourceError=_ref2.onLoadSubResourceError,onHttpErrorProp=_ref2.onHttpErrorProp,onMessageProp=_ref2.onMessageProp,onOpenWindowProp=_ref2.onOpenWindowProp,onRenderProcessGoneProp=_ref2.onRenderProcessGoneProp,onContentProcessDidTerminateProp=_ref2.onContentProcessDidTerminateProp,originWhitelist=_ref2.originWhitelist,onShouldStartLoadWithRequestProp=_ref2.onShouldStartLoadWithRequestProp,onShouldStartLoadWithRequestCallback=_ref2.onShouldStartLoadWithRequestCallback;var _useState=(0,_react.useState)(startInLoadingState?'LOADING':'IDLE'),_useState2=(0,_slicedToArray2.default)(_useState,2),viewState=_useState2[0],setViewState=_useState2[1];var _useState3=(0,_react.useState)(null),_useState4=(0,_slicedToArray2.default)(_useState3,2),lastErrorEvent=_useState4[0],setLastErrorEvent=_useState4[1];var startUrl=(0,_react.useRef)(null);var updateNavigationState=(0,_react.useCallback)(function(event){onNavigationStateChange==null?void 0:onNavigationStateChange(event.nativeEvent);},[onNavigationStateChange]);var onLoadingStart=(0,_react.useCallback)(function(event){startUrl.current=event.nativeEvent.url;onLoadStart==null?void 0:onLoadStart(event);updateNavigationState(event);},[onLoadStart,updateNavigationState]);var onLoadingError=(0,_react.useCallback)(function(event){event.persist();if(onError){onError(event);}else{console.warn('Encountered an error loading page',event.nativeEvent);}onLoadEnd==null?void 0:onLoadEnd(event);if(event.isDefaultPrevented()){return;}setViewState('ERROR');setLastErrorEvent(event.nativeEvent);},[onError,onLoadEnd]);var onLoadingSubResourceError=(0,_react.useCallback)(function(event){onLoadSubResourceError==null?void 0:onLoadSubResourceError(event);},[onLoadSubResourceError]);var onHttpError=(0,_react.useCallback)(function(event){onHttpErrorProp==null?void 0:onHttpErrorProp(event);},[onHttpErrorProp]);var onRenderProcessGone=(0,_react.useCallback)(function(event){onRenderProcessGoneProp==null?void 0:onRenderProcessGoneProp(event);},[onRenderProcessGoneProp]);var onContentProcessDidTerminate=(0,_react.useCallback)(function(event){onContentProcessDidTerminateProp==null?void 0:onContentProcessDidTerminateProp(event);},[onContentProcessDidTerminateProp]);var onLoadingFinish=(0,_react.useCallback)(function(event){onLoad==null?void 0:onLoad(event);onLoadEnd==null?void 0:onLoadEnd(event);var url=event.nativeEvent.url;if(_reactNative.Platform.OS!=='android'||url===startUrl.current){setViewState('IDLE');}updateNavigationState(event);},[onLoad,onLoadEnd,updateNavigationState]);var onMessage=(0,_react.useCallback)(function(event){onMessageProp==null?void 0:onMessageProp(event);},[onMessageProp]);var onLoadingProgress=(0,_react.useCallback)(function(event){var progress=event.nativeEvent.progress;if(_reactNative.Platform.OS==='android'&&progress===1){setViewState(function(prevViewState){return prevViewState==='LOADING'?'IDLE':prevViewState;});}onLoadProgress==null?void 0:onLoadProgress(event);},[onLoadProgress]);var onShouldStartLoadWithRequest=(0,_react.useMemo)(function(){return createOnShouldStartLoadWithRequest(onShouldStartLoadWithRequestCallback,originWhitelist,onShouldStartLoadWithRequestProp);},[originWhitelist,onShouldStartLoadWithRequestProp,onShouldStartLoadWithRequestCallback]);var onOpenWindow=(0,_react.useCallback)(function(event){onOpenWindowProp==null?void 0:onOpenWindowProp(event);},[onOpenWindowProp]);return{onShouldStartLoadWithRequest:onShouldStartLoadWithRequest,onLoadingStart:onLoadingStart,onLoadingProgress:onLoadingProgress,onLoadingError:onLoadingError,onLoadingSubResourceError:onLoadingSubResourceError,onLoadingFinish:onLoadingFinish,onHttpError:onHttpError,onRenderProcessGone:onRenderProcessGone,onContentProcessDidTerminate:onContentProcessDidTerminate,onMessage:onMessage,onOpenWindow:onOpenWindow,viewState:viewState,setViewState:setViewState,lastErrorEvent:lastErrorEvent};};
|
package/lib/WebViewTypes.d.ts
CHANGED
|
@@ -103,6 +103,7 @@ export type DataDetectorTypes = 'phoneNumber' | 'link' | 'address' | 'calendarEv
|
|
|
103
103
|
export type OverScrollModeType = 'always' | 'content' | 'never';
|
|
104
104
|
export type CacheMode = 'LOAD_DEFAULT' | 'LOAD_CACHE_ONLY' | 'LOAD_CACHE_ELSE_NETWORK' | 'LOAD_NO_CACHE';
|
|
105
105
|
export type AndroidLayerType = 'none' | 'software' | 'hardware';
|
|
106
|
+
export type IndicatorStyleType = 'default' | 'black' | 'white';
|
|
106
107
|
export interface WebViewSourceUri {
|
|
107
108
|
/**
|
|
108
109
|
* The URI to load in the `WebView`. Can be a local or remote file.
|
|
@@ -201,6 +202,7 @@ export interface CommonNativeWebViewProps extends ViewProps {
|
|
|
201
202
|
onShouldStartLoadWithRequest: (event: ShouldStartLoadRequestEvent) => void;
|
|
202
203
|
showsHorizontalScrollIndicator?: boolean;
|
|
203
204
|
showsVerticalScrollIndicator?: boolean;
|
|
205
|
+
paymentRequestEnabled?: boolean;
|
|
204
206
|
source: any;
|
|
205
207
|
userAgent?: string;
|
|
206
208
|
/**
|
|
@@ -296,7 +298,7 @@ export interface IOSWebViewProps extends WebViewSharedProps {
|
|
|
296
298
|
scrollEnabled?: boolean;
|
|
297
299
|
/**
|
|
298
300
|
* If the value of this property is true, the scroll view stops on multiples
|
|
299
|
-
* of the scroll view
|
|
301
|
+
* of the scroll view's bounds when the user scrolls.
|
|
300
302
|
* The default value is false.
|
|
301
303
|
* @platform ios
|
|
302
304
|
*/
|
|
@@ -509,13 +511,24 @@ export interface IOSWebViewProps extends WebViewSharedProps {
|
|
|
509
511
|
*/
|
|
510
512
|
pullToRefreshEnabled?: boolean;
|
|
511
513
|
/**
|
|
512
|
-
* Boolean value that determines whether
|
|
513
|
-
*
|
|
514
|
-
* If `true`, sets `bounces` automatically to `true`
|
|
514
|
+
* Boolean value that determines whether the refresh control color is white or not.
|
|
515
|
+
* The default value is `false`, meaning the refresh control color will be the default.
|
|
515
516
|
* @platform ios
|
|
516
517
|
*
|
|
517
518
|
*/
|
|
518
519
|
refreshControlLightMode?: boolean;
|
|
520
|
+
/**
|
|
521
|
+
* Determines the style of the scroll indicators. This property works the same
|
|
522
|
+
* as `indicatorStyle` on React Native's ScrollView.
|
|
523
|
+
* The default value is `'default'`.
|
|
524
|
+
*
|
|
525
|
+
* Possible values:
|
|
526
|
+
* - `'default'` - Default style (dark on light backgrounds, light on dark backgrounds)
|
|
527
|
+
* - `'black'` - Black scroll indicators
|
|
528
|
+
* - `'white'` - White scroll indicators
|
|
529
|
+
* @platform ios
|
|
530
|
+
*/
|
|
531
|
+
indicatorStyle?: IndicatorStyleType;
|
|
519
532
|
/**
|
|
520
533
|
* Function that is invoked when the client needs to download a file.
|
|
521
534
|
*
|
|
@@ -536,9 +549,9 @@ export interface IOSWebViewProps extends WebViewSharedProps {
|
|
|
536
549
|
/**
|
|
537
550
|
* A Boolean value which, when set to `true`, indicates to WebKit that a WKWebView
|
|
538
551
|
* will only navigate to app-bound domains. Once set, any attempt to navigate away
|
|
539
|
-
* from an app-bound domain will fail with the error
|
|
552
|
+
* from an app-bound domain will fail with the error "App-bound domain failure."
|
|
540
553
|
*
|
|
541
|
-
* Applications can specify up to 10
|
|
554
|
+
* Applications can specify up to 10 "app-bound" domains using a new
|
|
542
555
|
* Info.plist key `WKAppBoundDomains`.
|
|
543
556
|
* @platform ios
|
|
544
557
|
*/
|
|
@@ -622,7 +635,7 @@ export interface MacOSWebViewProps extends WebViewSharedProps {
|
|
|
622
635
|
scrollEnabled?: boolean;
|
|
623
636
|
/**
|
|
624
637
|
* If the value of this property is true, the scroll view stops on multiples
|
|
625
|
-
* of the scroll view
|
|
638
|
+
* of the scroll view's bounds when the user scrolls.
|
|
626
639
|
* The default value is false.
|
|
627
640
|
* @platform macos
|
|
628
641
|
*/
|
|
@@ -852,7 +865,7 @@ export interface AndroidWebViewProps extends WebViewSharedProps {
|
|
|
852
865
|
thirdPartyCookiesEnabled?: boolean;
|
|
853
866
|
/**
|
|
854
867
|
* Boolean value to control whether DOM Storage is enabled. Used only in
|
|
855
|
-
* Android.
|
|
868
|
+
* Android. The default value is `true`.
|
|
856
869
|
* @platform android
|
|
857
870
|
*/
|
|
858
871
|
domStorageEnabled?: boolean;
|
|
@@ -941,6 +954,13 @@ export interface AndroidWebViewProps extends WebViewSharedProps {
|
|
|
941
954
|
* @platform android
|
|
942
955
|
*/
|
|
943
956
|
allowsProtectedMedia?: boolean;
|
|
957
|
+
/**
|
|
958
|
+
* Function that is invoked when the `WebView` receives an SSL error for a sub-resource.
|
|
959
|
+
*
|
|
960
|
+
* @param event
|
|
961
|
+
* @platform android
|
|
962
|
+
*/
|
|
963
|
+
onLoadSubResourceError?: (event: WebViewErrorEvent) => void;
|
|
944
964
|
}
|
|
945
965
|
export interface WebViewSharedProps extends ViewProps {
|
|
946
966
|
/**
|
|
@@ -1094,5 +1114,9 @@ export interface WebViewSharedProps extends ViewProps {
|
|
|
1094
1114
|
* Enables WebView remote debugging using Chrome (Android) or Safari (iOS).
|
|
1095
1115
|
*/
|
|
1096
1116
|
webviewDebuggingEnabled?: boolean;
|
|
1117
|
+
/**
|
|
1118
|
+
* Enables support for the Payment Request API for the WebView
|
|
1119
|
+
*/
|
|
1120
|
+
paymentRequestEnabled?: boolean;
|
|
1097
1121
|
}
|
|
1098
1122
|
export {};
|
package/lib/WebViewTypes.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.NativeWebViewWindows=exports.NativeWebViewMacOS=void 0;var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _react=require("react");function _callSuper(t,o,e){return o=(0,_getPrototypeOf2.default)(o),(0,_possibleConstructorReturn2.default)(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],(0,_getPrototypeOf2.default)(t).constructor):o.apply(t,e));}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}var NativeWebViewMacOS=exports.NativeWebViewMacOS=function(_NativeWebViewMacOSBa){
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.NativeWebViewWindows=exports.NativeWebViewMacOS=void 0;var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _react=require("react");function _callSuper(t,o,e){return o=(0,_getPrototypeOf2.default)(o),(0,_possibleConstructorReturn2.default)(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],(0,_getPrototypeOf2.default)(t).constructor):o.apply(t,e));}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}var NativeWebViewMacOS=exports.NativeWebViewMacOS=function(_NativeWebViewMacOSBa){function NativeWebViewMacOS(){(0,_classCallCheck2.default)(this,NativeWebViewMacOS);return _callSuper(this,NativeWebViewMacOS,arguments);}(0,_inherits2.default)(NativeWebViewMacOS,_NativeWebViewMacOSBa);return(0,_createClass2.default)(NativeWebViewMacOS);}(NativeWebViewMacOSBase);var NativeWebViewWindows=exports.NativeWebViewWindows=function(_NativeWebViewWindows){function NativeWebViewWindows(){(0,_classCallCheck2.default)(this,NativeWebViewWindows);return _callSuper(this,NativeWebViewWindows,arguments);}(0,_inherits2.default)(NativeWebViewWindows,_NativeWebViewWindows);return(0,_createClass2.default)(NativeWebViewWindows);}(NativeWebViewWindowsBase);
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"Thibault Malbranche <malbranche.thibault@gmail.com>"
|
|
11
11
|
],
|
|
12
12
|
"license": "MIT",
|
|
13
|
-
"version": "13.
|
|
13
|
+
"version": "13.16.0",
|
|
14
14
|
"homepage": "https://github.com/react-native-webview/react-native-webview#readme",
|
|
15
15
|
"scripts": {
|
|
16
16
|
"android": "react-native run-android",
|
|
@@ -95,6 +95,14 @@
|
|
|
95
95
|
"jsSrcsDir": "./src",
|
|
96
96
|
"android": {
|
|
97
97
|
"javaPackageName": "com.reactnativecommunity.webview"
|
|
98
|
+
},
|
|
99
|
+
"ios": {
|
|
100
|
+
"componentProvider": {
|
|
101
|
+
"RNCWebView": "RNCWebView"
|
|
102
|
+
},
|
|
103
|
+
"modulesProvider": {
|
|
104
|
+
"RNCWebViewModule": "RNCWebViewModule"
|
|
105
|
+
}
|
|
98
106
|
}
|
|
99
107
|
},
|
|
100
108
|
"packageManager": "yarn@1.22.19"
|
|
@@ -168,12 +168,12 @@ export interface NativeProps extends ViewProps {
|
|
|
168
168
|
onRenderProcessGone?: DirectEventHandler<WebViewRenderProcessGoneEvent>;
|
|
169
169
|
overScrollMode?: string;
|
|
170
170
|
saveFormDataDisabled?: boolean;
|
|
171
|
-
scalesPageToFit?: boolean
|
|
172
|
-
setBuiltInZoomControls?: boolean
|
|
171
|
+
scalesPageToFit?: WithDefault<boolean, true>;
|
|
172
|
+
setBuiltInZoomControls?: WithDefault<boolean, true>;
|
|
173
173
|
setDisplayZoomControls?: boolean;
|
|
174
|
-
setSupportMultipleWindows?: boolean
|
|
174
|
+
setSupportMultipleWindows?: WithDefault<boolean, true>;
|
|
175
175
|
textZoom?: Int32;
|
|
176
|
-
thirdPartyCookiesEnabled?: boolean
|
|
176
|
+
thirdPartyCookiesEnabled?: WithDefault<boolean, true>;
|
|
177
177
|
// Workaround to watch if listener if defined
|
|
178
178
|
hasOnScroll?: boolean;
|
|
179
179
|
// !Android only
|
|
@@ -184,10 +184,10 @@ export interface NativeProps extends ViewProps {
|
|
|
184
184
|
allowsInlineMediaPlayback?: boolean;
|
|
185
185
|
allowsPictureInPictureMediaPlayback?: boolean;
|
|
186
186
|
allowsAirPlayForMediaPlayback?: boolean;
|
|
187
|
-
allowsLinkPreview?: boolean
|
|
188
|
-
automaticallyAdjustContentInsets?: boolean
|
|
189
|
-
autoManageStatusBarEnabled?: boolean
|
|
190
|
-
bounces?: boolean
|
|
187
|
+
allowsLinkPreview?: WithDefault<boolean, true>;
|
|
188
|
+
automaticallyAdjustContentInsets?: WithDefault<boolean, true>;
|
|
189
|
+
autoManageStatusBarEnabled?: WithDefault<boolean, true>;
|
|
190
|
+
bounces?: WithDefault<boolean, true>;
|
|
191
191
|
contentInset?: Readonly<{
|
|
192
192
|
top?: Double;
|
|
193
193
|
left?: Double;
|
|
@@ -217,10 +217,10 @@ export interface NativeProps extends ViewProps {
|
|
|
217
217
|
'phoneNumber'
|
|
218
218
|
>;
|
|
219
219
|
decelerationRate?: Double;
|
|
220
|
-
directionalLockEnabled?: boolean
|
|
220
|
+
directionalLockEnabled?: WithDefault<boolean, true>;
|
|
221
221
|
enableApplePay?: boolean;
|
|
222
222
|
hideKeyboardAccessoryView?: boolean;
|
|
223
|
-
keyboardDisplayRequiresUserAction?: boolean
|
|
223
|
+
keyboardDisplayRequiresUserAction?: WithDefault<boolean, true>;
|
|
224
224
|
limitsNavigationsToAppBoundDomains?: boolean;
|
|
225
225
|
mediaCapturePermissionGrantType?: WithDefault<
|
|
226
226
|
| 'prompt'
|
|
@@ -233,10 +233,10 @@ export interface NativeProps extends ViewProps {
|
|
|
233
233
|
pagingEnabled?: boolean;
|
|
234
234
|
pullToRefreshEnabled?: boolean;
|
|
235
235
|
refreshControlLightMode?: boolean;
|
|
236
|
-
scrollEnabled?: boolean
|
|
236
|
+
scrollEnabled?: WithDefault<boolean, true>;
|
|
237
237
|
sharedCookiesEnabled?: boolean;
|
|
238
|
-
textInteractionEnabled?: boolean
|
|
239
|
-
useSharedProcessPool?: boolean
|
|
238
|
+
textInteractionEnabled?: WithDefault<boolean, true>;
|
|
239
|
+
useSharedProcessPool?: WithDefault<boolean, true>;
|
|
240
240
|
onContentProcessDidTerminate?: DirectEventHandler<WebViewNativeEvent>;
|
|
241
241
|
onCustomMenuSelection?: DirectEventHandler<WebViewCustomMenuSelectionEvent>;
|
|
242
242
|
onFileDownload?: DirectEventHandler<WebViewDownloadEvent>;
|
|
@@ -245,7 +245,7 @@ export interface NativeProps extends ViewProps {
|
|
|
245
245
|
suppressMenuItems?: Readonly<string>[];
|
|
246
246
|
// Workaround to watch if listener if defined
|
|
247
247
|
hasOnFileDownload?: boolean;
|
|
248
|
-
fraudulentWebsiteWarningEnabled?: boolean
|
|
248
|
+
fraudulentWebsiteWarningEnabled?: WithDefault<boolean, true>;
|
|
249
249
|
// !iOS only
|
|
250
250
|
|
|
251
251
|
allowFileAccessFromFileURLs?: boolean;
|
|
@@ -255,19 +255,23 @@ export interface NativeProps extends ViewProps {
|
|
|
255
255
|
username: string;
|
|
256
256
|
password: string;
|
|
257
257
|
}>;
|
|
258
|
-
cacheEnabled?: boolean
|
|
258
|
+
cacheEnabled?: WithDefault<boolean, true>;
|
|
259
259
|
incognito?: boolean;
|
|
260
260
|
injectedJavaScript?: string;
|
|
261
261
|
injectedJavaScriptBeforeContentLoaded?: string;
|
|
262
|
-
injectedJavaScriptForMainFrameOnly?: boolean
|
|
263
|
-
injectedJavaScriptBeforeContentLoadedForMainFrameOnly?:
|
|
262
|
+
injectedJavaScriptForMainFrameOnly?: WithDefault<boolean, true>;
|
|
263
|
+
injectedJavaScriptBeforeContentLoadedForMainFrameOnly?: WithDefault<
|
|
264
|
+
boolean,
|
|
265
|
+
true
|
|
266
|
+
>;
|
|
264
267
|
javaScriptCanOpenWindowsAutomatically?: boolean;
|
|
265
|
-
javaScriptEnabled?: boolean
|
|
268
|
+
javaScriptEnabled?: WithDefault<boolean, true>;
|
|
266
269
|
webviewDebuggingEnabled?: boolean;
|
|
267
|
-
mediaPlaybackRequiresUserAction?: boolean
|
|
270
|
+
mediaPlaybackRequiresUserAction?: WithDefault<boolean, true>;
|
|
268
271
|
contentBlockerEnabled?: boolean;
|
|
269
272
|
messagingEnabled: boolean;
|
|
270
273
|
onLoadingError: DirectEventHandler<WebViewErrorEvent>;
|
|
274
|
+
onLoadingSubResourceError: DirectEventHandler<WebViewErrorEvent>;
|
|
271
275
|
onLoadingFinish: DirectEventHandler<WebViewNavigationEvent>;
|
|
272
276
|
onLoadingProgress: DirectEventHandler<WebViewNativeProgressEvent>;
|
|
273
277
|
onLoadingStart: DirectEventHandler<WebViewNavigationEvent>;
|
|
@@ -277,8 +281,9 @@ export interface NativeProps extends ViewProps {
|
|
|
277
281
|
hasOnOpenWindowEvent?: boolean;
|
|
278
282
|
onScroll?: DirectEventHandler<ScrollEvent>;
|
|
279
283
|
onShouldStartLoadWithRequest: DirectEventHandler<ShouldStartLoadRequestEvent>;
|
|
280
|
-
showsHorizontalScrollIndicator?: boolean
|
|
281
|
-
showsVerticalScrollIndicator?: boolean
|
|
284
|
+
showsHorizontalScrollIndicator?: WithDefault<boolean, true>;
|
|
285
|
+
showsVerticalScrollIndicator?: WithDefault<boolean, true>;
|
|
286
|
+
indicatorStyle?: WithDefault<'default' | 'black' | 'white', 'default'>;
|
|
282
287
|
newSource: Readonly<{
|
|
283
288
|
uri?: string;
|
|
284
289
|
method?: string;
|
|
@@ -290,6 +295,7 @@ export interface NativeProps extends ViewProps {
|
|
|
290
295
|
}>;
|
|
291
296
|
userAgent?: string;
|
|
292
297
|
injectedJavaScriptObject?: string;
|
|
298
|
+
paymentRequestEnabled?: boolean;
|
|
293
299
|
}
|
|
294
300
|
|
|
295
301
|
export interface NativeCommands {
|
package/src/WebView.android.tsx
CHANGED
|
@@ -66,6 +66,7 @@ const WebViewComponent = forwardRef<{}, AndroidWebViewProps>(
|
|
|
66
66
|
onError,
|
|
67
67
|
onLoad,
|
|
68
68
|
onLoadEnd,
|
|
69
|
+
onLoadSubResourceError,
|
|
69
70
|
onLoadProgress,
|
|
70
71
|
onHttpError: onHttpErrorProp,
|
|
71
72
|
onRenderProcessGone: onRenderProcessGoneProp,
|
|
@@ -113,6 +114,7 @@ const WebViewComponent = forwardRef<{}, AndroidWebViewProps>(
|
|
|
113
114
|
lastErrorEvent,
|
|
114
115
|
onHttpError,
|
|
115
116
|
onLoadingError,
|
|
117
|
+
onLoadingSubResourceError,
|
|
116
118
|
onLoadingFinish,
|
|
117
119
|
onLoadingProgress,
|
|
118
120
|
onOpenWindow,
|
|
@@ -122,6 +124,7 @@ const WebViewComponent = forwardRef<{}, AndroidWebViewProps>(
|
|
|
122
124
|
onLoad,
|
|
123
125
|
onError,
|
|
124
126
|
onHttpErrorProp,
|
|
127
|
+
onLoadSubResourceError,
|
|
125
128
|
onLoadEnd,
|
|
126
129
|
onLoadProgress,
|
|
127
130
|
onLoadStart,
|
|
@@ -267,6 +270,7 @@ const WebViewComponent = forwardRef<{}, AndroidWebViewProps>(
|
|
|
267
270
|
messagingModuleName={messagingModuleName}
|
|
268
271
|
hasOnScroll={!!otherProps.onScroll}
|
|
269
272
|
onLoadingError={onLoadingError}
|
|
273
|
+
onLoadingSubResourceError={onLoadingSubResourceError}
|
|
270
274
|
onLoadingFinish={onLoadingFinish}
|
|
271
275
|
onLoadingProgress={onLoadingProgress}
|
|
272
276
|
onLoadingStart={onLoadingStart}
|
package/src/WebViewShared.tsx
CHANGED
|
@@ -104,6 +104,7 @@ export const useWebViewLogic = ({
|
|
|
104
104
|
onLoadProgress,
|
|
105
105
|
onLoadEnd,
|
|
106
106
|
onError,
|
|
107
|
+
onLoadSubResourceError,
|
|
107
108
|
onHttpErrorProp,
|
|
108
109
|
onMessageProp,
|
|
109
110
|
onOpenWindowProp,
|
|
@@ -120,6 +121,7 @@ export const useWebViewLogic = ({
|
|
|
120
121
|
onLoadProgress?: (event: WebViewProgressEvent) => void;
|
|
121
122
|
onLoadEnd?: (event: WebViewNavigationEvent | WebViewErrorEvent) => void;
|
|
122
123
|
onError?: (event: WebViewErrorEvent) => void;
|
|
124
|
+
onLoadSubResourceError?: (event: WebViewErrorEvent) => void;
|
|
123
125
|
onHttpErrorProp?: (event: WebViewHttpErrorEvent) => void;
|
|
124
126
|
onMessageProp?: (event: WebViewMessageEvent) => void;
|
|
125
127
|
onOpenWindowProp?: (event: WebViewOpenWindowEvent) => void;
|
|
@@ -178,6 +180,13 @@ export const useWebViewLogic = ({
|
|
|
178
180
|
[onError, onLoadEnd]
|
|
179
181
|
);
|
|
180
182
|
|
|
183
|
+
const onLoadingSubResourceError = useCallback(
|
|
184
|
+
(event: WebViewErrorEvent) => {
|
|
185
|
+
onLoadSubResourceError?.(event);
|
|
186
|
+
},
|
|
187
|
+
[onLoadSubResourceError]
|
|
188
|
+
);
|
|
189
|
+
|
|
181
190
|
const onHttpError = useCallback(
|
|
182
191
|
(event: WebViewHttpErrorEvent) => {
|
|
183
192
|
onHttpErrorProp?.(event);
|
|
@@ -270,6 +279,7 @@ export const useWebViewLogic = ({
|
|
|
270
279
|
onLoadingStart,
|
|
271
280
|
onLoadingProgress,
|
|
272
281
|
onLoadingError,
|
|
282
|
+
onLoadingSubResourceError,
|
|
273
283
|
onLoadingFinish,
|
|
274
284
|
onHttpError,
|
|
275
285
|
onRenderProcessGone,
|
package/src/WebViewTypes.ts
CHANGED
|
@@ -182,6 +182,8 @@ export type CacheMode =
|
|
|
182
182
|
|
|
183
183
|
export type AndroidLayerType = 'none' | 'software' | 'hardware';
|
|
184
184
|
|
|
185
|
+
export type IndicatorStyleType = 'default' | 'black' | 'white';
|
|
186
|
+
|
|
185
187
|
export interface WebViewSourceUri {
|
|
186
188
|
/**
|
|
187
189
|
* The URI to load in the `WebView`. Can be a local or remote file.
|
|
@@ -307,6 +309,7 @@ export interface CommonNativeWebViewProps extends ViewProps {
|
|
|
307
309
|
onShouldStartLoadWithRequest: (event: ShouldStartLoadRequestEvent) => void;
|
|
308
310
|
showsHorizontalScrollIndicator?: boolean;
|
|
309
311
|
showsVerticalScrollIndicator?: boolean;
|
|
312
|
+
paymentRequestEnabled?: boolean;
|
|
310
313
|
// TODO: find a better way to type this.
|
|
311
314
|
|
|
312
315
|
source: any;
|
|
@@ -425,7 +428,7 @@ export interface IOSWebViewProps extends WebViewSharedProps {
|
|
|
425
428
|
|
|
426
429
|
/**
|
|
427
430
|
* If the value of this property is true, the scroll view stops on multiples
|
|
428
|
-
* of the scroll view
|
|
431
|
+
* of the scroll view's bounds when the user scrolls.
|
|
429
432
|
* The default value is false.
|
|
430
433
|
* @platform ios
|
|
431
434
|
*/
|
|
@@ -661,14 +664,26 @@ export interface IOSWebViewProps extends WebViewSharedProps {
|
|
|
661
664
|
pullToRefreshEnabled?: boolean;
|
|
662
665
|
|
|
663
666
|
/**
|
|
664
|
-
* Boolean value that determines whether
|
|
665
|
-
*
|
|
666
|
-
* If `true`, sets `bounces` automatically to `true`
|
|
667
|
+
* Boolean value that determines whether the refresh control color is white or not.
|
|
668
|
+
* The default value is `false`, meaning the refresh control color will be the default.
|
|
667
669
|
* @platform ios
|
|
668
670
|
*
|
|
669
671
|
*/
|
|
670
672
|
refreshControlLightMode?: boolean;
|
|
671
673
|
|
|
674
|
+
/**
|
|
675
|
+
* Determines the style of the scroll indicators. This property works the same
|
|
676
|
+
* as `indicatorStyle` on React Native's ScrollView.
|
|
677
|
+
* The default value is `'default'`.
|
|
678
|
+
*
|
|
679
|
+
* Possible values:
|
|
680
|
+
* - `'default'` - Default style (dark on light backgrounds, light on dark backgrounds)
|
|
681
|
+
* - `'black'` - Black scroll indicators
|
|
682
|
+
* - `'white'` - White scroll indicators
|
|
683
|
+
* @platform ios
|
|
684
|
+
*/
|
|
685
|
+
indicatorStyle?: IndicatorStyleType;
|
|
686
|
+
|
|
672
687
|
/**
|
|
673
688
|
* Function that is invoked when the client needs to download a file.
|
|
674
689
|
*
|
|
@@ -690,9 +705,9 @@ export interface IOSWebViewProps extends WebViewSharedProps {
|
|
|
690
705
|
/**
|
|
691
706
|
* A Boolean value which, when set to `true`, indicates to WebKit that a WKWebView
|
|
692
707
|
* will only navigate to app-bound domains. Once set, any attempt to navigate away
|
|
693
|
-
* from an app-bound domain will fail with the error
|
|
708
|
+
* from an app-bound domain will fail with the error "App-bound domain failure."
|
|
694
709
|
*
|
|
695
|
-
* Applications can specify up to 10
|
|
710
|
+
* Applications can specify up to 10 "app-bound" domains using a new
|
|
696
711
|
* Info.plist key `WKAppBoundDomains`.
|
|
697
712
|
* @platform ios
|
|
698
713
|
*/
|
|
@@ -787,7 +802,7 @@ export interface MacOSWebViewProps extends WebViewSharedProps {
|
|
|
787
802
|
|
|
788
803
|
/**
|
|
789
804
|
* If the value of this property is true, the scroll view stops on multiples
|
|
790
|
-
* of the scroll view
|
|
805
|
+
* of the scroll view's bounds when the user scrolls.
|
|
791
806
|
* The default value is false.
|
|
792
807
|
* @platform macos
|
|
793
808
|
*/
|
|
@@ -1045,7 +1060,7 @@ export interface AndroidWebViewProps extends WebViewSharedProps {
|
|
|
1045
1060
|
|
|
1046
1061
|
/**
|
|
1047
1062
|
* Boolean value to control whether DOM Storage is enabled. Used only in
|
|
1048
|
-
* Android.
|
|
1063
|
+
* Android. The default value is `true`.
|
|
1049
1064
|
* @platform android
|
|
1050
1065
|
*/
|
|
1051
1066
|
domStorageEnabled?: boolean;
|
|
@@ -1146,6 +1161,14 @@ export interface AndroidWebViewProps extends WebViewSharedProps {
|
|
|
1146
1161
|
* @platform android
|
|
1147
1162
|
*/
|
|
1148
1163
|
allowsProtectedMedia?: boolean;
|
|
1164
|
+
|
|
1165
|
+
/**
|
|
1166
|
+
* Function that is invoked when the `WebView` receives an SSL error for a sub-resource.
|
|
1167
|
+
*
|
|
1168
|
+
* @param event
|
|
1169
|
+
* @platform android
|
|
1170
|
+
*/
|
|
1171
|
+
onLoadSubResourceError?: (event: WebViewErrorEvent) => void;
|
|
1149
1172
|
}
|
|
1150
1173
|
|
|
1151
1174
|
export interface WebViewSharedProps extends ViewProps {
|
|
@@ -1335,4 +1358,9 @@ export interface WebViewSharedProps extends ViewProps {
|
|
|
1335
1358
|
* Enables WebView remote debugging using Chrome (Android) or Safari (iOS).
|
|
1336
1359
|
*/
|
|
1337
1360
|
webviewDebuggingEnabled?: boolean;
|
|
1361
|
+
|
|
1362
|
+
/**
|
|
1363
|
+
* Enables support for the Payment Request API for the WebView
|
|
1364
|
+
*/
|
|
1365
|
+
paymentRequestEnabled?: boolean;
|
|
1338
1366
|
}
|