@exodus/react-native-webview 11.26.1-exodus.7 → 11.26.1-exodus.8

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 (95) hide show
  1. package/package.json +1 -1
  2. package/.all-contributorsrc +0 -185
  3. package/.circleci/config.yml +0 -66
  4. package/.eslintignore +0 -2
  5. package/.eslintrc.js +0 -94
  6. package/.flowconfig +0 -88
  7. package/.flowconfig.android +0 -88
  8. package/.gitattributes +0 -12
  9. package/.github/CODEOWNERS +0 -1
  10. package/.github/ISSUE_TEMPLATE/bug-report.md +0 -42
  11. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -30
  12. package/.github/workflows/android-ci.yml +0 -35
  13. package/.github/workflows/detox.yml +0 -20
  14. package/.github/workflows/ios-ci.yml +0 -31
  15. package/.github/workflows/scripts/install-vs-features.ps1 +0 -108
  16. package/.github/workflows/stale.yml +0 -17
  17. package/.gitignore +0 -62
  18. package/.prettierrc.js +0 -10
  19. package/.releaserc +0 -15
  20. package/.vscode/settings.json +0 -9
  21. package/babel.config.js +0 -11
  22. package/bin/setup +0 -26
  23. package/docs/Contributing.md +0 -102
  24. package/docs/Custom-Android.md +0 -222
  25. package/docs/Custom-iOS.md +0 -236
  26. package/docs/Debugging.md +0 -101
  27. package/docs/Getting-Started.md +0 -142
  28. package/docs/Guide.md +0 -613
  29. package/docs/Reference.md +0 -1629
  30. package/example/.gitignore +0 -14
  31. package/example/.watchmanconfig +0 -1
  32. package/example/App.tsx +0 -262
  33. package/example/android/.gradle/7.3.3/checksums/checksums.lock +0 -0
  34. package/example/android/.gradle/7.3.3/checksums/md5-checksums.bin +0 -0
  35. package/example/android/.gradle/7.3.3/checksums/sha1-checksums.bin +0 -0
  36. package/example/android/.gradle/7.3.3/dependencies-accessors/dependencies-accessors.lock +0 -0
  37. package/example/android/.gradle/7.3.3/dependencies-accessors/gc.properties +0 -0
  38. package/example/android/.gradle/7.3.3/fileChanges/last-build.bin +0 -0
  39. package/example/android/.gradle/7.3.3/fileHashes/fileHashes.lock +0 -0
  40. package/example/android/.gradle/7.3.3/gc.properties +0 -0
  41. package/example/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  42. package/example/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  43. package/example/android/.gradle/vcs-1/gc.properties +0 -0
  44. package/example/android/build.gradle +0 -15
  45. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  46. package/example/android/gradle/wrapper/gradle-wrapper.properties +0 -5
  47. package/example/android/gradle.properties +0 -34
  48. package/example/android/gradlew +0 -234
  49. package/example/android/gradlew.bat +0 -89
  50. package/example/android/settings.gradle +0 -12
  51. package/example/app.json +0 -20
  52. package/example/assets/test.html +0 -9
  53. package/example/babel.config.js +0 -3
  54. package/example/examples/Alerts.tsx +0 -72
  55. package/example/examples/ApplePay.tsx +0 -23
  56. package/example/examples/Background.tsx +0 -54
  57. package/example/examples/Downloads.tsx +0 -57
  58. package/example/examples/Injection.tsx +0 -161
  59. package/example/examples/LocalPageLoad.tsx +0 -16
  60. package/example/examples/Messaging.tsx +0 -63
  61. package/example/examples/NativeWebpage.tsx +0 -22
  62. package/example/examples/Scrolling.tsx +0 -68
  63. package/example/examples/Uploads.tsx +0 -69
  64. package/example/index.js +0 -9
  65. package/example/ios/Podfile +0 -8
  66. package/example/ios/Podfile.lock +0 -445
  67. package/ios/Podfile +0 -10
  68. package/ios/Podfile.lock +0 -3
  69. package/ios/RNCWebView.xcworkspace/contents.xcworkspacedata +0 -32
  70. package/jest-setups/jest.setup.js +0 -8
  71. package/jest.config.js +0 -184
  72. package/lib/UpdateOS.d.ts.map +0 -1
  73. package/lib/WebView.android.d.ts.map +0 -1
  74. package/lib/WebView.d.ts.map +0 -1
  75. package/lib/WebView.ios.d.ts.map +0 -1
  76. package/lib/WebView.styles.d.ts.map +0 -1
  77. package/lib/WebViewNativeComponent.android.d.ts.map +0 -1
  78. package/lib/WebViewNativeComponent.ios.d.ts.map +0 -1
  79. package/lib/WebViewShared.d.ts.map +0 -1
  80. package/lib/WebViewTypes.d.ts.map +0 -1
  81. package/lib/index.d.ts.map +0 -1
  82. package/metro.config.js +0 -57
  83. package/src/WebView.android.tsx +0 -246
  84. package/src/WebView.ios.tsx +0 -221
  85. package/src/WebView.styles.ts +0 -44
  86. package/src/WebView.tsx +0 -18
  87. package/src/WebViewNativeComponent.android.ts +0 -8
  88. package/src/WebViewNativeComponent.ios.ts +0 -8
  89. package/src/WebViewShared.tsx +0 -257
  90. package/src/WebViewTypes.ts +0 -914
  91. package/src/__tests__/WebViewShared-test.js +0 -208
  92. package/src/__tests__/__snapshots__/WebViewShared-test.js.snap +0 -8
  93. package/src/index.ts +0 -4
  94. package/tsconfig.json +0 -24
  95. package/yarn.lock +0 -13895
@@ -1 +0,0 @@
1
- {"version":3,"file":"UpdateOS.d.ts","sourceRoot":"","sources":["../src/UpdateOS.tsx"],"names":[],"mappings":";AAwCA,QAAA,MAAM,QAAQ;;iBA6Bb,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebView.android.d.ts","sourceRoot":"","sources":["../src/WebView.android.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6F,MAAM,OAAO,CAAC;AAsBlH,OAAO,EACL,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AA0NxB,QAAA,MAAM,OAAO;iCAHsB,QAAQ,OAAO,CAAC;CAGqB,CAAC;AAEzE,eAAe,OAAO,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebView.d.ts","sourceRoot":"","sources":["../src/WebView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,oBAAY,YAAY,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAIjE,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC,YAAY,CAMlD,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,eAAe,OAAO,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebView.ios.d.ts","sourceRoot":"","sources":["../src/WebView.ios.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAmBpF,OAAO,EACL,eAAe,EAIhB,MAAM,gBAAgB,CAAC;AAkMxB,QAAA,MAAM,OAAO;iCAHsB,QAAQ,OAAO,CAAC;CAGqB,CAAC;AAEzE,eAAe,OAAO,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebView.styles.d.ts","sourceRoot":"","sources":["../src/WebView.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhE,UAAU,MAAM;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE,SAAS,CAAC;IAC1B,kBAAkB,EAAE,SAAS,CAAC;IAC9B,OAAO,EAAE,SAAS,CAAC;IACnB,kBAAkB,EAAE,SAAS,CAAC;CAC/B;AAED,QAAA,MAAM,MAAM,QA8BV,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebViewNativeComponent.android.d.ts","sourceRoot":"","sources":["../src/WebViewNativeComponent.android.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,QAAA,MAAM,UAAU,EAAE,OAAO,oBAExB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebViewNativeComponent.ios.d.ts","sourceRoot":"","sources":["../src/WebViewNativeComponent.ios.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,QAAA,MAAM,UAAU,EAAE,OAAO,gBAExB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebViewShared.d.ts","sourceRoot":"","sources":["../src/WebViewShared.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAGxB,QAAA,MAAM,sBAAsB,wBAAyB,CAAC;AAyBtD,QAAA,MAAM,kCAAkC,8BAEvB,OAAO,OACf,MAAM,kBACK,MAAM,KACnB,IAAI,mBACQ,SAAS,MAAM,EAAE,oIAwBnC,CAAC;AAEF,QAAA,MAAM,oBAAoB,mBAIzB,CAAC;AACF,QAAA,MAAM,kBAAkB,gBACT,MAAM,GAAG,SAAS,aACpB,MAAM,aACN,MAAM,gBAQlB,CAAC;AAEF,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAClC,oBAAoB,EACpB,kBAAkB,GACnB,CAAC;AAGF,eAAO,MAAM,eAAe;;sDAcuB,IAAI;iDACT,IAAI;yBAC5B,sBAAsB,GAAG,iBAAiB,KAAK,IAAI;6CAC/B,IAAI;6BACpB,cAAc,KAAK,IAAI;qBAC9B,SAAS,MAAM,EAAE;;wDAEkB,OAAO,OAAO,MAAM,mBAAmB,MAAM,GAAG,SAAS,KAAK,IAAI;0BAChG,kBAAkB,KAAK,kBAAkB;yBAC1C,MAAM,KAAK,MAAM;;;;;;;;2BAOR,MAAM;;;;CA8FrC,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,MAAM,GAAG,SAAS,WAAW,MAAM,GAAG,SAAS,KAAG,OA+BxF,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebViewTypes.d.ts","sourceRoot":"","sources":["../src/WebViewTypes.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,eAAe,OAAO,CAAC"}
package/metro.config.js DELETED
@@ -1,57 +0,0 @@
1
- /**
2
- * Metro configuration for React Native
3
- * https://github.com/facebook/react-native
4
- *
5
- * @format
6
- */
7
-
8
- const path = require('path');
9
-
10
- const exclusionList = (() => {
11
- try {
12
- return require('metro-config/src/defaults/exclusionList');
13
- } catch (_) {
14
- // `blacklist` was renamed to `exclusionList` in 0.60
15
- return require('metro-config/src/defaults/blacklist');
16
- }
17
- })();
18
-
19
- const blockList = exclusionList([
20
- /node_modules\/.*\/node_modules\/react-native\/.*/,
21
-
22
- // Workaround for `EPERM: operation not permitted, lstat '~\midl-MIDLRT-cl.read.1.tlog'`
23
- /.*\.tlog/,
24
-
25
- // This stops "react-native run-windows" from causing the metro server to
26
- // crash if its already running
27
- new RegExp(`${path.join(__dirname, 'windows').replace(/[/\\]+/g, '/')}.*`),
28
-
29
- // Workaround for `EBUSY: resource busy or locked, open '~\msbuild.ProjectImports.zip'`
30
- /.*\.ProjectImports\.zip/,
31
- ]);
32
-
33
- /**
34
- * This config is a bit exotic because our example app is not its own package
35
- * (that would require setting this repo up as a monorepo). We need to tell
36
- * Metro that the root of the project is our `example` folder (`projectRoot`),
37
- * and that it should look for modules in repo root (`watchFolders`) as this is
38
- * where the `node_modules` folder lives. Metro will otherwise fail to resolve
39
- * anything.
40
- */
41
- module.exports = {
42
- projectRoot: path.join(__dirname, 'example'),
43
- watchFolders: [__dirname],
44
- resolver: {
45
- resolverMainFields: ['main-internal', 'browser', 'main'],
46
- blacklistRE: blockList,
47
- blockList,
48
- },
49
- transformer: {
50
- getTransformOptions: async () => ({
51
- transform: {
52
- experimentalImportSupport: false,
53
- inlineRequires: false,
54
- },
55
- }),
56
- },
57
- };
@@ -1,246 +0,0 @@
1
- import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
2
-
3
- import {
4
- Text,
5
- View,
6
- NativeModules,
7
- } from 'react-native';
8
-
9
- import BatchedBridge from 'react-native/Libraries/BatchedBridge/BatchedBridge';
10
- // @ts-expect-error react-native doesn't have this type
11
- import codegenNativeCommandsUntyped from 'react-native/Libraries/Utilities/codegenNativeCommands';
12
-
13
- import invariant from 'invariant';
14
-
15
- import RNCWebView from "./WebViewNativeComponent.android";
16
- import {
17
- defaultOriginWhitelist,
18
- defaultRenderError,
19
- defaultRenderLoading,
20
- useWebWiewLogic,
21
- versionPasses,
22
- } from './WebViewShared';
23
- import {
24
- AndroidWebViewProps,
25
- NativeWebViewAndroid,
26
- } from './WebViewTypes';
27
-
28
- import styles from './WebView.styles';
29
-
30
- const { getWebViewDefaultUserAgent } = NativeModules.RNCWebViewUtils;
31
-
32
- let userAgentPromise: Promise<string> | undefined
33
-
34
- async function getUserAgent(): Promise<string> {
35
- if (!userAgentPromise) userAgentPromise = getWebViewDefaultUserAgent()
36
- const userAgent = await userAgentPromise
37
- return userAgent || 'unknown'
38
- }
39
-
40
- const codegenNativeCommands = codegenNativeCommandsUntyped as <T extends {}>(options: { supportedCommands: (keyof T)[] }) => T;
41
-
42
- const Commands = codegenNativeCommands({
43
- supportedCommands: ['goBack', 'goForward', 'reload', 'stopLoading', /* 'injectJavaScript', */ 'requestFocus', 'postMessage', 'clearFormData', 'clearCache', 'clearHistory', 'loadUrl'],
44
- });
45
-
46
- /**
47
- * A simple counter to uniquely identify WebView instances. Do not use this for anything else.
48
- */
49
- let uniqueRef = 0;
50
-
51
- /**
52
- * Harcoded default for security.
53
- */
54
- const mediaPlaybackRequiresUserAction = true;
55
- // Android only
56
- const setSupportMultipleWindows = true;
57
- const mixedContentMode = 'never'
58
- const hardMinimumChromeVersion = '100.0' // TODO: determinime a good lower bound
59
-
60
- const WebViewComponent = forwardRef<{}, AndroidWebViewProps>(({
61
- overScrollMode = 'always',
62
- javaScriptEnabled = true,
63
- thirdPartyCookiesEnabled = true,
64
- scalesPageToFit = true,
65
- saveFormDataDisabled = false,
66
- cacheEnabled = true,
67
- androidHardwareAccelerationDisabled = false,
68
- androidLayerType = "none",
69
- originWhitelist = defaultOriginWhitelist,
70
- setBuiltInZoomControls = true,
71
- setDisplayZoomControls = false,
72
- nestedScrollEnabled = false,
73
- startInLoadingState,
74
- onLoadStart,
75
- onError,
76
- onLoad,
77
- onLoadEnd,
78
- onMessage: onMessageProp,
79
- renderLoading,
80
- renderError,
81
- style,
82
- containerStyle,
83
- source,
84
- onShouldStartLoadWithRequest: onShouldStartLoadWithRequestProp,
85
- validateMeta,
86
- validateData,
87
- minimumChromeVersion,
88
- unsupportedVersionComponent: UnsupportedVersionComponent,
89
- ...otherProps
90
- }, ref) => {
91
- const messagingModuleName = useRef<string>(`WebViewMessageHandler${uniqueRef += 1}`).current;
92
- const webViewRef = useRef<NativeWebViewAndroid | null>(null);
93
-
94
- const onShouldStartLoadWithRequestCallback = useCallback((shouldStart: boolean,
95
- url: string,
96
- lockIdentifier?: number) => {
97
- if (lockIdentifier) {
98
- NativeModules.RNCWebView.onShouldStartLoadWithRequestCallback(shouldStart, lockIdentifier);
99
- } else if (shouldStart) {
100
- Commands.loadUrl(webViewRef.current, url);
101
- }
102
- }, []);
103
-
104
- const { onLoadingStart, onShouldStartLoadWithRequest, onMessage, viewState, setViewState, lastErrorEvent, onLoadingError, onLoadingFinish, onLoadingProgress, passesWhitelist } = useWebWiewLogic({
105
- onLoad,
106
- onError,
107
- onLoadEnd,
108
- onLoadStart,
109
- onMessageProp,
110
- startInLoadingState,
111
- originWhitelist,
112
- onShouldStartLoadWithRequestProp,
113
- onShouldStartLoadWithRequestCallback,
114
- validateMeta,
115
- validateData,
116
- })
117
-
118
- useImperativeHandle(ref, () => ({
119
- goForward: () => Commands.goForward(webViewRef.current),
120
- goBack: () => Commands.goBack(webViewRef.current),
121
- reload: () => {
122
- setViewState(
123
- 'LOADING',
124
- ); Commands.reload(webViewRef.current)
125
- },
126
- stopLoading: () => Commands.stopLoading(webViewRef.current),
127
- postMessage: (data: string) => Commands.postMessage(webViewRef.current, data),
128
- // injectJavaScript: (data: string) => Commands.injectJavaScript(webViewRef.current, data),
129
- requestFocus: () => Commands.requestFocus(webViewRef.current),
130
- clearFormData: () => Commands.clearFormData(webViewRef.current),
131
- clearCache: (includeDiskFiles: boolean) => Commands.clearCache(webViewRef.current, includeDiskFiles),
132
- clearHistory: () => Commands.clearHistory(webViewRef.current),
133
- }), [setViewState, webViewRef]);
134
-
135
- const directEventCallbacks = useMemo(() => ({
136
- onShouldStartLoadWithRequest,
137
- onMessage,
138
- }), [onMessage, onShouldStartLoadWithRequest]);
139
-
140
- useEffect(() => {
141
- BatchedBridge.registerCallableModule(messagingModuleName, directEventCallbacks);
142
- }, [messagingModuleName, directEventCallbacks])
143
-
144
- const [userAgent, setUserAgent] = useState<string>()
145
-
146
- useEffect(() => {
147
- getUserAgent().then(setUserAgent)
148
- }, [])
149
-
150
- if (!userAgent) return null // stop the rendering until userAgent is known
151
- const version = userAgent.match(/chrome\/((?:[0-9]+\.)+[0-9]+)/i)?.[1]
152
- if (!(versionPasses(version, minimumChromeVersion) && versionPasses(version, hardMinimumChromeVersion))) {
153
- if (UnsupportedVersionComponent) {
154
- return <UnsupportedVersionComponent />
155
- }
156
- return (
157
- <View style={{ alignSelf: 'flex-start' }}>
158
- <Text style={{ color: 'red' }}>
159
- Chrome version is outdated and insecure. Update it to continue.
160
- </Text>
161
- </View>
162
- );
163
- }
164
-
165
- let otherView = null;
166
- if (viewState === 'LOADING') {
167
- otherView = (renderLoading || defaultRenderLoading)();
168
- } else if (viewState === 'ERROR') {
169
- invariant(lastErrorEvent != null, 'lastErrorEvent expected to be non-null');
170
- otherView = (renderError || defaultRenderError)(
171
- lastErrorEvent.domain,
172
- lastErrorEvent.code,
173
- lastErrorEvent.description,
174
- );
175
- } else if (viewState !== 'IDLE') {
176
- console.error(`RNCWebView invalid state encountered: ${viewState}`);
177
- }
178
-
179
- const webViewStyles = [styles.container, styles.webView, style];
180
- const webViewContainerStyle = [styles.container, containerStyle];
181
-
182
- if (typeof source !== "number" && source && 'method' in source) {
183
- if (source.method === 'POST' && source.headers) {
184
- console.warn(
185
- 'WebView: `source.headers` is not supported when using POST.',
186
- );
187
- } else if (source.method === 'GET' && source.body) {
188
- console.warn('WebView: `source.body` is not supported when using GET.');
189
- }
190
- }
191
-
192
- if (typeof source === "object" && 'uri' in source && !passesWhitelist(source.uri)){
193
- // eslint-disable-next-line
194
- source = {uri: "about:blank"};
195
- }
196
-
197
- const NativeWebView = RNCWebView;
198
-
199
- const webView = <NativeWebView
200
- key="webViewKey"
201
- {...otherProps}
202
- messagingEnabled={typeof onMessageProp === 'function'}
203
- messagingModuleName={messagingModuleName}
204
-
205
- onLoadingError={onLoadingError}
206
- onLoadingFinish={onLoadingFinish}
207
- onLoadingProgress={onLoadingProgress}
208
- onLoadingStart={onLoadingStart}
209
- onMessage={onMessage}
210
- onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
211
-
212
- ref={webViewRef}
213
- // TODO: find a better way to type this.
214
- source={source}
215
- style={webViewStyles}
216
- overScrollMode={overScrollMode}
217
- javaScriptEnabled={javaScriptEnabled}
218
- thirdPartyCookiesEnabled={thirdPartyCookiesEnabled}
219
- scalesPageToFit={scalesPageToFit}
220
- saveFormDataDisabled={saveFormDataDisabled}
221
- cacheEnabled={cacheEnabled}
222
- androidHardwareAccelerationDisabled={androidHardwareAccelerationDisabled}
223
- androidLayerType={androidLayerType}
224
- setSupportMultipleWindows={setSupportMultipleWindows}
225
- setBuiltInZoomControls={setBuiltInZoomControls}
226
- setDisplayZoomControls={setDisplayZoomControls}
227
- mixedContentMode={mixedContentMode}
228
- nestedScrollEnabled={nestedScrollEnabled}
229
- mediaPlaybackRequiresUserAction={mediaPlaybackRequiresUserAction}
230
- />
231
-
232
- return (
233
- <View style={webViewContainerStyle}>
234
- {webView}
235
- {otherView}
236
- </View>
237
- );
238
- });
239
-
240
- // native implementation should return "true" only for Android 5+
241
- const isFileUploadSupported: () => Promise<boolean>
242
- = NativeModules.RNCWebView.isFileUploadSupported();
243
-
244
- const WebView = Object.assign(WebViewComponent, {isFileUploadSupported});
245
-
246
- export default WebView;
@@ -1,221 +0,0 @@
1
- import React, { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';
2
- import {
3
- Text,
4
- View,
5
- NativeModules,
6
- Platform,
7
- } from 'react-native';
8
- import invariant from 'invariant';
9
-
10
- // @ts-expect-error react-native doesn't have this type
11
- import codegenNativeCommandsUntyped from 'react-native/Libraries/Utilities/codegenNativeCommands';
12
- import RNCWebView from "./WebViewNativeComponent.ios";
13
- import {
14
- defaultOriginWhitelist,
15
- defaultRenderError,
16
- defaultRenderLoading,
17
- useWebWiewLogic,
18
- versionPasses,
19
- } from './WebViewShared';
20
- import {
21
- IOSWebViewProps,
22
- DecelerationRateConstant,
23
- NativeWebViewIOS,
24
- ViewManager,
25
- } from './WebViewTypes';
26
-
27
- import styles from './WebView.styles';
28
-
29
- const codegenNativeCommands = codegenNativeCommandsUntyped as <T extends {}>(options: { supportedCommands: (keyof T)[] }) => T;
30
-
31
- const Commands = codegenNativeCommands({
32
- supportedCommands: ['goBack', 'goForward', 'reload', 'stopLoading', /* 'injectJavaScript', */ 'requestFocus', 'postMessage', 'loadUrl'],
33
- });
34
-
35
- const processDecelerationRate = (
36
- decelerationRate: DecelerationRateConstant | number | undefined,
37
- ) => {
38
- let newDecelerationRate = decelerationRate;
39
- if (newDecelerationRate === 'normal') {
40
- newDecelerationRate = 0.998;
41
- } else if (newDecelerationRate === 'fast') {
42
- newDecelerationRate = 0.99;
43
- }
44
- return newDecelerationRate;
45
- };
46
-
47
- const RNCWebViewManager = NativeModules.RNCWebViewManager as ViewManager;
48
-
49
- const useWarnIfChanges = <T extends unknown>(value: T, name: string) => {
50
- const ref = useRef(value);
51
- if (ref.current !== value) {
52
- console.warn(`Changes to property ${name} do nothing after the initial render.`);
53
- ref.current = value;
54
- }
55
- }
56
-
57
- /**
58
- * Harcoded defaults for security.
59
- */
60
- const mediaPlaybackRequiresUserAction = true;
61
- // iOS only configs
62
- const allowsInlineMediaPlayback = true;
63
- const useSharedProcessPool = false;
64
- const sharedCookiesEnabled = false;
65
- const enableApplePay = false;
66
- const dataDetectorTypes = 'none';
67
- const hardMinimumIOSVersion = '12.5.6 <13, 13.6.1 <14, 14.8.1 <15, 15.7.1'
68
-
69
- const WebViewComponent = forwardRef<{}, IOSWebViewProps>(({
70
- javaScriptEnabled = true,
71
- cacheEnabled = true,
72
- originWhitelist = defaultOriginWhitelist,
73
- textInteractionEnabled= true,
74
- injectedJavaScript,
75
- injectedJavaScriptBeforeContentLoaded,
76
- startInLoadingState,
77
- onLoadStart,
78
- onError,
79
- onLoad,
80
- onLoadEnd,
81
- onMessage: onMessageProp,
82
- renderLoading,
83
- renderError,
84
- style,
85
- containerStyle,
86
- source,
87
- incognito,
88
- validateMeta,
89
- validateData,
90
- decelerationRate: decelerationRateProp,
91
- onShouldStartLoadWithRequest: onShouldStartLoadWithRequestProp,
92
- minimumIOSVersion,
93
- unsupportedVersionComponent: UnsupportedVersionComponent,
94
- ...otherProps
95
- }, ref) => {
96
- const webViewRef = useRef<NativeWebViewIOS | null>(null);
97
-
98
- const onShouldStartLoadWithRequestCallback = useCallback((
99
- shouldStart: boolean,
100
- _url: string,
101
- lockIdentifier = 0,
102
- ) => {
103
- const viewManager = RNCWebViewManager;
104
-
105
- viewManager.startLoadWithResult(!!shouldStart, lockIdentifier);
106
- }, []);
107
-
108
- const { onLoadingStart, onShouldStartLoadWithRequest, onMessage, viewState, setViewState, lastErrorEvent, onLoadingError, onLoadingFinish, onLoadingProgress } = useWebWiewLogic({
109
- onLoad,
110
- onError,
111
- onLoadEnd,
112
- onLoadStart,
113
- onMessageProp,
114
- startInLoadingState,
115
- originWhitelist,
116
- onShouldStartLoadWithRequestProp,
117
- onShouldStartLoadWithRequestCallback,
118
- validateMeta,
119
- validateData,
120
- });
121
-
122
- useImperativeHandle(ref, () => ({
123
- goForward: () => Commands.goForward(webViewRef.current),
124
- goBack: () => Commands.goBack(webViewRef.current),
125
- reload: () => {
126
- setViewState(
127
- 'LOADING',
128
- ); Commands.reload(webViewRef.current)
129
- },
130
- stopLoading: () => Commands.stopLoading(webViewRef.current),
131
- postMessage: (data: string) => Commands.postMessage(webViewRef.current, data),
132
- // injectJavaScript: (data: string) => Commands.injectJavaScript(webViewRef.current, data),
133
- requestFocus: () => Commands.requestFocus(webViewRef.current),
134
- }), [setViewState, webViewRef]);
135
-
136
-
137
- useWarnIfChanges(allowsInlineMediaPlayback, 'allowsInlineMediaPlayback');
138
- useWarnIfChanges(incognito, 'incognito');
139
- useWarnIfChanges(mediaPlaybackRequiresUserAction, 'mediaPlaybackRequiresUserAction');
140
- useWarnIfChanges(dataDetectorTypes, 'dataDetectorTypes');
141
-
142
- const version = String(Platform.Version)
143
- if (!(versionPasses(version, minimumIOSVersion) && versionPasses(version, hardMinimumIOSVersion))) {
144
- if (UnsupportedVersionComponent) {
145
- return <UnsupportedVersionComponent />
146
- }
147
- return (
148
- <View style={{ alignSelf: 'flex-start' }}>
149
- <Text style={{ color: 'red' }}>
150
- iOS version is outdated and insecure. Update it to continue.
151
- </Text>
152
- </View>
153
- );
154
- }
155
-
156
- let otherView = null;
157
- if (viewState === 'LOADING') {
158
- otherView = (renderLoading || defaultRenderLoading)();
159
- } else if (viewState === 'ERROR') {
160
- invariant(lastErrorEvent != null, 'lastErrorEvent expected to be non-null');
161
- otherView = (renderError || defaultRenderError)(
162
- lastErrorEvent.domain,
163
- lastErrorEvent.code,
164
- lastErrorEvent.description,
165
- );
166
- } else if (viewState !== 'IDLE') {
167
- console.error(`RNCWebView invalid state encountered: ${viewState}`);
168
- }
169
-
170
- const webViewStyles = [styles.container, styles.webView, style];
171
- const webViewContainerStyle = [styles.container, containerStyle];
172
-
173
- const decelerationRate = processDecelerationRate(decelerationRateProp);
174
-
175
- const NativeWebView = RNCWebView;
176
-
177
- const webView = (
178
- <NativeWebView
179
- key="webViewKey"
180
- {...otherProps}
181
- enableApplePay={enableApplePay}
182
- javaScriptEnabled={javaScriptEnabled}
183
- cacheEnabled={cacheEnabled}
184
- dataDetectorTypes={dataDetectorTypes}
185
- useSharedProcessPool={useSharedProcessPool}
186
- textInteractionEnabled={textInteractionEnabled}
187
- decelerationRate={decelerationRate}
188
- messagingEnabled={typeof onMessageProp === 'function'}
189
- onLoadingError={onLoadingError}
190
- onLoadingFinish={onLoadingFinish}
191
- onLoadingProgress={onLoadingProgress}
192
- onLoadingStart={onLoadingStart}
193
- onMessage={onMessage}
194
- onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
195
- injectedJavaScript={injectedJavaScript}
196
- injectedJavaScriptBeforeContentLoaded={injectedJavaScriptBeforeContentLoaded}
197
- allowsInlineMediaPlayback={allowsInlineMediaPlayback}
198
- incognito={incognito}
199
- mediaPlaybackRequiresUserAction={mediaPlaybackRequiresUserAction}
200
- ref={webViewRef}
201
- sharedCookiesEnabled={sharedCookiesEnabled}
202
- // TODO: find a better way to type this.
203
- source={source}
204
- style={webViewStyles}
205
- />
206
- );
207
-
208
- return (
209
- <View style={webViewContainerStyle}>
210
- {webView}
211
- {otherView}
212
- </View>
213
- );})
214
-
215
- // no native implementation for iOS, depends only on permissions
216
- const isFileUploadSupported: () => Promise<boolean>
217
- = async () => true;
218
-
219
- const WebView = Object.assign(WebViewComponent, {isFileUploadSupported});
220
-
221
- export default WebView;
@@ -1,44 +0,0 @@
1
- import { StyleSheet, ViewStyle, TextStyle } from 'react-native';
2
-
3
- interface Styles {
4
- container: ViewStyle;
5
- errorText: TextStyle;
6
- errorTextTitle: TextStyle;
7
- loadingOrErrorView: ViewStyle;
8
- webView: ViewStyle;
9
- loadingProgressBar: ViewStyle;
10
- }
11
-
12
- const styles = StyleSheet.create<Styles>({
13
- container: {
14
- flex: 1,
15
- overflow: 'hidden',
16
- },
17
- loadingOrErrorView: {
18
- position: 'absolute',
19
- flex: 1,
20
- justifyContent: 'center',
21
- alignItems: 'center',
22
- height: '100%',
23
- width: '100%',
24
- backgroundColor: 'white'
25
- },
26
- loadingProgressBar: {
27
- height: 20,
28
- },
29
- errorText: {
30
- fontSize: 14,
31
- textAlign: 'center',
32
- marginBottom: 2,
33
- },
34
- errorTextTitle: {
35
- fontSize: 15,
36
- fontWeight: '500',
37
- marginBottom: 10,
38
- },
39
- webView: {
40
- backgroundColor: '#ffffff',
41
- },
42
- });
43
-
44
- export default styles;
package/src/WebView.tsx DELETED
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import { Text, View } from 'react-native';
3
- import { IOSWebViewProps, AndroidWebViewProps } from './WebViewTypes';
4
-
5
- export type WebViewProps = IOSWebViewProps & AndroidWebViewProps;
6
-
7
- // This "dummy" WebView is to render something for unsupported platforms,
8
- // like for example Expo SDK "web" platform.
9
- const WebView: React.FunctionComponent<WebViewProps> = () => (
10
- <View style={{ alignSelf: 'flex-start' }}>
11
- <Text style={{ color: 'red' }}>
12
- React Native WebView does not support this platform.
13
- </Text>
14
- </View>
15
- );
16
-
17
- export { WebView };
18
- export default WebView;
@@ -1,8 +0,0 @@
1
- import { requireNativeComponent } from "react-native";
2
- import type { NativeWebViewAndroid } from "./WebViewTypes";
3
-
4
- const RNCWebView: typeof NativeWebViewAndroid = requireNativeComponent(
5
- 'RNCWebView',
6
- );
7
-
8
- export default RNCWebView;
@@ -1,8 +0,0 @@
1
- import { requireNativeComponent } from "react-native";
2
- import type { NativeWebViewIOS } from "./WebViewTypes";
3
-
4
- const RNCWebView: typeof NativeWebViewIOS = requireNativeComponent(
5
- 'RNCWebView',
6
- );
7
-
8
- export default RNCWebView;