@exodus/react-native-webview 9.4.0-no-android.0 → 11.26.1-exodus.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.
Files changed (49) hide show
  1. package/README.md +21 -18
  2. package/android/.editorconfig +6 -0
  3. package/android/build.gradle +137 -0
  4. package/android/gradle.properties +6 -0
  5. package/android/src/main/AndroidManifest.xml +15 -0
  6. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewFileProvider.java +14 -0
  7. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManager.java +1650 -0
  8. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewModule.java +550 -0
  9. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewPackage.kt +15 -0
  10. package/android/src/main/java/com/reactnativecommunity/webview/WebViewConfig.java +12 -0
  11. package/android/src/main/java/com/reactnativecommunity/webview/events/TopHttpErrorEvent.kt +25 -0
  12. package/android/src/main/java/com/reactnativecommunity/webview/events/TopLoadingErrorEvent.kt +25 -0
  13. package/android/src/main/java/com/reactnativecommunity/webview/events/TopLoadingFinishEvent.kt +24 -0
  14. package/android/src/main/java/com/reactnativecommunity/webview/events/TopLoadingProgressEvent.kt +24 -0
  15. package/android/src/main/java/com/reactnativecommunity/webview/events/TopLoadingStartEvent.kt +25 -0
  16. package/android/src/main/java/com/reactnativecommunity/webview/events/TopMessageEvent.kt +24 -0
  17. package/android/src/main/java/com/reactnativecommunity/webview/events/TopRenderProcessGoneEvent.kt +26 -0
  18. package/android/src/main/java/com/reactnativecommunity/webview/events/TopShouldStartLoadWithRequestEvent.kt +29 -0
  19. package/android/src/main/res/xml/file_provider_paths.xml +6 -0
  20. package/apple/RNCWKProcessPoolManager.h +15 -0
  21. package/apple/RNCWKProcessPoolManager.m +36 -0
  22. package/apple/RNCWebView.h +117 -0
  23. package/apple/RNCWebView.m +1532 -0
  24. package/apple/RNCWebViewManager.h +13 -0
  25. package/apple/RNCWebViewManager.m +288 -0
  26. package/index.d.ts +65 -0
  27. package/index.js +4 -0
  28. package/ios/RNCWebView.xcodeproj/project.pbxproj +2 -0
  29. package/lib/WebView.android.d.ts +7 -0
  30. package/lib/WebView.android.js +112 -1
  31. package/lib/WebView.d.ts +7 -0
  32. package/lib/WebView.ios.d.ts +7 -0
  33. package/lib/WebView.ios.js +134 -202
  34. package/lib/WebView.js +9 -2
  35. package/lib/WebView.styles.d.ts +12 -0
  36. package/lib/WebView.styles.js +7 -7
  37. package/lib/WebViewNativeComponent.android.d.ts +4 -0
  38. package/lib/WebViewNativeComponent.android.js +3 -0
  39. package/lib/WebViewNativeComponent.ios.d.ts +4 -0
  40. package/lib/WebViewNativeComponent.ios.js +3 -0
  41. package/lib/WebViewShared.d.ts +37 -0
  42. package/lib/WebViewShared.js +121 -24
  43. package/lib/WebViewTypes.d.ts +893 -0
  44. package/lib/WebViewTypes.js +31 -16
  45. package/lib/index.d.ts +4 -0
  46. package/lib/index.js +3 -0
  47. package/package.json +83 -87
  48. package/react-native-webview.podspec +3 -3
  49. package/react-native.config.js +37 -0
@@ -1,30 +1,44 @@
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
9
+ };
1
10
  import escapeStringRegexp from 'escape-string-regexp';
2
- import React from 'react';
3
- import { Linking, View, ActivityIndicator, Text } from 'react-native';
11
+ import React, { useCallback, useMemo, useRef, useState } from 'react';
12
+ import { Linking, View, ActivityIndicator, Text, Platform } from 'react-native';
4
13
  import styles from './WebView.styles';
5
- const defaultOriginWhitelist = ['http://*', 'https://*'];
6
- const extractOrigin = (url) => {
7
- const result = /^[A-Za-z][A-Za-z0-9+\-.]+:(\/\/)?[^/]*/.exec(url);
14
+ var defaultOriginWhitelist = ['http://*', 'https://*'];
15
+ var extractOrigin = function (url) {
16
+ var result = /^[A-Za-z][A-Za-z0-9+\-.]+:(\/\/)?[^/]*/.exec(url);
8
17
  return result === null ? '' : result[0];
9
18
  };
10
- const originWhitelistToRegex = (originWhitelist) => `^${escapeStringRegexp(originWhitelist).replace(/\\\*/g, '.*')}`;
11
- const passesWhitelist = (compiledWhitelist, url) => {
12
- const origin = extractOrigin(url);
13
- return compiledWhitelist.some(x => new RegExp(x).test(origin));
19
+ var originWhitelistToRegex = function (originWhitelist) {
20
+ return "^".concat(escapeStringRegexp(originWhitelist).replace(/\\\*/g, '.*'));
21
+ };
22
+ var passesWhitelist = function (compiledWhitelist, url) {
23
+ var origin = extractOrigin(url);
24
+ return compiledWhitelist.some(function (x) { return new RegExp(x).test(origin); });
14
25
  };
15
- const compileWhitelist = (originWhitelist) => ['about:blank', ...(originWhitelist || [])].map(originWhitelistToRegex);
16
- const createOnShouldStartLoadWithRequest = (loadRequest, originWhitelist, onShouldStartLoadWithRequest) => {
17
- return ({ nativeEvent }) => {
18
- let shouldStart = true;
19
- const { url, lockIdentifier } = nativeEvent;
26
+ var compileWhitelist = function (originWhitelist) {
27
+ return __spreadArray(['about:blank'], (originWhitelist || []), true).map(originWhitelistToRegex);
28
+ };
29
+ var createOnShouldStartLoadWithRequest = function (loadRequest, originWhitelist, onShouldStartLoadWithRequest) {
30
+ return function (_a) {
31
+ var nativeEvent = _a.nativeEvent;
32
+ var shouldStart = true;
33
+ var url = nativeEvent.url, lockIdentifier = nativeEvent.lockIdentifier;
20
34
  if (!passesWhitelist(compileWhitelist(originWhitelist), url)) {
21
- Linking.canOpenURL(url).then((supported) => {
35
+ Linking.canOpenURL(url).then(function (supported) {
22
36
  if (supported) {
23
37
  return Linking.openURL(url);
24
38
  }
25
- console.warn(`Can't open url: ${url}`);
39
+ console.warn("Can't open url: ".concat(url));
26
40
  return undefined;
27
- }).catch(e => {
41
+ })["catch"](function (e) {
28
42
  console.warn('Error opening URL: ', e);
29
43
  });
30
44
  shouldStart = false;
@@ -35,13 +49,96 @@ const createOnShouldStartLoadWithRequest = (loadRequest, originWhitelist, onShou
35
49
  loadRequest(shouldStart, url, lockIdentifier);
36
50
  };
37
51
  };
38
- const defaultRenderLoading = () => (<View style={styles.loadingOrErrorView}>
52
+ var defaultRenderLoading = function () { return (<View style={styles.loadingOrErrorView}>
39
53
  <ActivityIndicator />
40
- </View>);
41
- const defaultRenderError = (errorDomain, errorCode, errorDesc) => (<View style={styles.loadingOrErrorView}>
54
+ </View>); };
55
+ var defaultRenderError = function (errorDomain, errorCode, errorDesc) { return (<View style={styles.loadingOrErrorView}>
42
56
  <Text style={styles.errorTextTitle}>Error loading page</Text>
43
- <Text style={styles.errorText}>{`Domain: ${errorDomain}`}</Text>
44
- <Text style={styles.errorText}>{`Error Code: ${errorCode}`}</Text>
45
- <Text style={styles.errorText}>{`Description: ${errorDesc}`}</Text>
46
- </View>);
57
+ <Text style={styles.errorText}>{"Domain: ".concat(errorDomain)}</Text>
58
+ <Text style={styles.errorText}>{"Error Code: ".concat(errorCode)}</Text>
59
+ <Text style={styles.errorText}>{"Description: ".concat(errorDesc)}</Text>
60
+ </View>); };
47
61
  export { defaultOriginWhitelist, createOnShouldStartLoadWithRequest, defaultRenderLoading, defaultRenderError, };
62
+ export var useWebWiewLogic = function (_a) {
63
+ var startInLoadingState = _a.startInLoadingState, onNavigationStateChange = _a.onNavigationStateChange, onLoadStart = _a.onLoadStart, onLoad = _a.onLoad, onLoadProgress = _a.onLoadProgress, onLoadEnd = _a.onLoadEnd, onError = _a.onError, onHttpErrorProp = _a.onHttpErrorProp, onMessageProp = _a.onMessageProp, onRenderProcessGoneProp = _a.onRenderProcessGoneProp, onContentProcessDidTerminateProp = _a.onContentProcessDidTerminateProp, originWhitelist = _a.originWhitelist, onShouldStartLoadWithRequestProp = _a.onShouldStartLoadWithRequestProp, onShouldStartLoadWithRequestCallback = _a.onShouldStartLoadWithRequestCallback;
64
+ var _b = useState(startInLoadingState ? "LOADING" : "IDLE"), viewState = _b[0], setViewState = _b[1];
65
+ var _c = useState(null), lastErrorEvent = _c[0], setLastErrorEvent = _c[1];
66
+ var startUrl = useRef(null);
67
+ var updateNavigationState = useCallback(function (event) {
68
+ onNavigationStateChange === null || onNavigationStateChange === void 0 ? void 0 : onNavigationStateChange(event.nativeEvent);
69
+ }, [onNavigationStateChange]);
70
+ var onLoadingStart = useCallback(function (event) {
71
+ // Needed for android
72
+ startUrl.current = event.nativeEvent.url;
73
+ // !Needed for android
74
+ onLoadStart === null || onLoadStart === void 0 ? void 0 : onLoadStart(event);
75
+ updateNavigationState(event);
76
+ }, [onLoadStart, updateNavigationState]);
77
+ var onLoadingError = useCallback(function (event) {
78
+ event.persist();
79
+ if (onError) {
80
+ onError(event);
81
+ }
82
+ else {
83
+ console.warn('Encountered an error loading page', event.nativeEvent);
84
+ }
85
+ onLoadEnd === null || onLoadEnd === void 0 ? void 0 : onLoadEnd(event);
86
+ if (event.isDefaultPrevented()) {
87
+ return;
88
+ }
89
+ ;
90
+ setViewState('ERROR');
91
+ setLastErrorEvent(event.nativeEvent);
92
+ }, [onError, onLoadEnd]);
93
+ var onHttpError = useCallback(function (event) {
94
+ onHttpErrorProp === null || onHttpErrorProp === void 0 ? void 0 : onHttpErrorProp(event);
95
+ }, [onHttpErrorProp]);
96
+ // Android Only
97
+ var onRenderProcessGone = useCallback(function (event) {
98
+ onRenderProcessGoneProp === null || onRenderProcessGoneProp === void 0 ? void 0 : onRenderProcessGoneProp(event);
99
+ }, [onRenderProcessGoneProp]);
100
+ // !Android Only
101
+ // iOS Only
102
+ var onContentProcessDidTerminate = useCallback(function (event) {
103
+ onContentProcessDidTerminateProp === null || onContentProcessDidTerminateProp === void 0 ? void 0 : onContentProcessDidTerminateProp(event);
104
+ }, [onContentProcessDidTerminateProp]);
105
+ // !iOS Only
106
+ var onLoadingFinish = useCallback(function (event) {
107
+ onLoad === null || onLoad === void 0 ? void 0 : onLoad(event);
108
+ onLoadEnd === null || onLoadEnd === void 0 ? void 0 : onLoadEnd(event);
109
+ var url = event.nativeEvent.url;
110
+ // on Android, only if url === startUrl
111
+ if (Platform.OS !== "android" || url === startUrl.current) {
112
+ setViewState('IDLE');
113
+ }
114
+ // !on Android, only if url === startUrl
115
+ updateNavigationState(event);
116
+ }, [onLoad, onLoadEnd, updateNavigationState]);
117
+ var onMessage = useCallback(function (event) {
118
+ onMessageProp === null || onMessageProp === void 0 ? void 0 : onMessageProp(event);
119
+ }, [onMessageProp]);
120
+ var onLoadingProgress = useCallback(function (event) {
121
+ var progress = event.nativeEvent.progress;
122
+ // patch for Android only
123
+ if (Platform.OS === "android" && progress === 1) {
124
+ setViewState(function (prevViewState) { return prevViewState === 'LOADING' ? 'IDLE' : prevViewState; });
125
+ }
126
+ // !patch for Android only
127
+ onLoadProgress === null || onLoadProgress === void 0 ? void 0 : onLoadProgress(event);
128
+ }, [onLoadProgress]);
129
+ var onShouldStartLoadWithRequest = useMemo(function () { return createOnShouldStartLoadWithRequest(onShouldStartLoadWithRequestCallback, originWhitelist, onShouldStartLoadWithRequestProp); }, [originWhitelist, onShouldStartLoadWithRequestProp, onShouldStartLoadWithRequestCallback]);
130
+ return {
131
+ onShouldStartLoadWithRequest: onShouldStartLoadWithRequest,
132
+ onLoadingStart: onLoadingStart,
133
+ onLoadingProgress: onLoadingProgress,
134
+ onLoadingError: onLoadingError,
135
+ onLoadingFinish: onLoadingFinish,
136
+ onHttpError: onHttpError,
137
+ onRenderProcessGone: onRenderProcessGone,
138
+ onContentProcessDidTerminate: onContentProcessDidTerminate,
139
+ onMessage: onMessage,
140
+ viewState: viewState,
141
+ setViewState: setViewState,
142
+ lastErrorEvent: lastErrorEvent
143
+ };
144
+ };