@javascriptcommon/react-native-webview 13.12.16

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 (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -0
  3. package/android/build.gradle +110 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/main/AndroidManifest.xml +15 -0
  6. package/android/src/main/AndroidManifestNew.xml +13 -0
  7. package/android/src/main/java/com/reactnativecommunity/webview/RNCBasicAuthCredential.java +11 -0
  8. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebChromeClient.java +372 -0
  9. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebView.java +450 -0
  10. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewClient.java +328 -0
  11. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewConfig.java +11 -0
  12. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewFileProvider.java +14 -0
  13. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewManagerImpl.kt +720 -0
  14. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewMessagingModule.kt +19 -0
  15. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewModuleImpl.java +554 -0
  16. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewPackage.java +56 -0
  17. package/android/src/main/java/com/reactnativecommunity/webview/RNCWebViewWrapper.kt +39 -0
  18. package/android/src/main/java/com/reactnativecommunity/webview/URLUtil.java +179 -0
  19. package/android/src/main/java/com/reactnativecommunity/webview/events/TopCustomMenuSelectionEvent.kt +24 -0
  20. package/android/src/main/java/com/reactnativecommunity/webview/events/TopHttpErrorEvent.kt +25 -0
  21. package/android/src/main/java/com/reactnativecommunity/webview/events/TopLoadingErrorEvent.kt +25 -0
  22. package/android/src/main/java/com/reactnativecommunity/webview/events/TopLoadingFinishEvent.kt +24 -0
  23. package/android/src/main/java/com/reactnativecommunity/webview/events/TopLoadingProgressEvent.kt +24 -0
  24. package/android/src/main/java/com/reactnativecommunity/webview/events/TopLoadingStartEvent.kt +25 -0
  25. package/android/src/main/java/com/reactnativecommunity/webview/events/TopMessageEvent.kt +24 -0
  26. package/android/src/main/java/com/reactnativecommunity/webview/events/TopNewWindowEvent.kt +25 -0
  27. package/android/src/main/java/com/reactnativecommunity/webview/events/TopRenderProcessGoneEvent.kt +26 -0
  28. package/android/src/main/java/com/reactnativecommunity/webview/events/TopShouldStartLoadWithRequestEvent.kt +29 -0
  29. package/android/src/main/res/xml/file_provider_paths.xml +6 -0
  30. package/android/src/newarch/com/reactnativecommunity/webview/RNCWebViewManager.java +553 -0
  31. package/android/src/newarch/com/reactnativecommunity/webview/RNCWebViewModule.java +63 -0
  32. package/android/src/oldarch/com/reactnativecommunity/webview/RNCWebViewManager.java +328 -0
  33. package/android/src/oldarch/com/reactnativecommunity/webview/RNCWebViewModule.java +59 -0
  34. package/apple/RCTConvert+WKDataDetectorTypes.h +11 -0
  35. package/apple/RCTConvert+WKDataDetectorTypes.m +27 -0
  36. package/apple/RNCWKProcessPoolManager.h +15 -0
  37. package/apple/RNCWKProcessPoolManager.m +36 -0
  38. package/apple/RNCWebView.h +35 -0
  39. package/apple/RNCWebView.mm +546 -0
  40. package/apple/RNCWebViewDecisionManager.h +20 -0
  41. package/apple/RNCWebViewDecisionManager.m +47 -0
  42. package/apple/RNCWebViewImpl.h +161 -0
  43. package/apple/RNCWebViewImpl.m +1979 -0
  44. package/apple/RNCWebViewManager.h +9 -0
  45. package/apple/RNCWebViewManager.mm +215 -0
  46. package/apple/RNCWebViewModule.h +23 -0
  47. package/apple/RNCWebViewModule.mm +34 -0
  48. package/index.d.ts +65 -0
  49. package/index.js +4 -0
  50. package/ios/RNCWebView.xcodeproj/project.pbxproj +273 -0
  51. package/lib/NativeRNCWebViewModule.d.ts +10 -0
  52. package/lib/NativeRNCWebViewModule.js +1 -0
  53. package/lib/RNCWebViewNativeComponent.d.ts +242 -0
  54. package/lib/RNCWebViewNativeComponent.js +1 -0
  55. package/lib/WebView.android.d.ts +6 -0
  56. package/lib/WebView.android.js +1 -0
  57. package/lib/WebView.d.ts +6 -0
  58. package/lib/WebView.ios.d.ts +6 -0
  59. package/lib/WebView.ios.js +1 -0
  60. package/lib/WebView.js +1 -0
  61. package/lib/WebView.macos.d.ts +6 -0
  62. package/lib/WebView.macos.js +1 -0
  63. package/lib/WebView.styles.d.ts +38 -0
  64. package/lib/WebView.styles.js +1 -0
  65. package/lib/WebView.windows.d.ts +17 -0
  66. package/lib/WebView.windows.js +1 -0
  67. package/lib/WebViewNativeComponent.macos.d.ts +3 -0
  68. package/lib/WebViewNativeComponent.macos.js +1 -0
  69. package/lib/WebViewNativeComponent.windows.d.ts +3 -0
  70. package/lib/WebViewNativeComponent.windows.js +1 -0
  71. package/lib/WebViewShared.d.ts +38 -0
  72. package/lib/WebViewShared.js +1 -0
  73. package/lib/WebViewTypes.d.ts +1093 -0
  74. package/lib/WebViewTypes.js +1 -0
  75. package/lib/index.d.ts +3 -0
  76. package/lib/index.js +1 -0
  77. package/macos/RNCWebView.xcodeproj/project.pbxproj +363 -0
  78. package/package.json +101 -0
  79. package/react-native-webview.podspec +46 -0
  80. package/react-native.config.js +44 -0
  81. package/src/NativeRNCWebViewModule.ts +15 -0
  82. package/src/RNCWebViewNativeComponent.ts +342 -0
  83. package/src/WebView.android.tsx +317 -0
  84. package/src/WebView.ios.tsx +299 -0
  85. package/src/WebView.macos.tsx +245 -0
  86. package/src/WebView.styles.ts +41 -0
  87. package/src/WebView.tsx +25 -0
  88. package/src/WebView.windows.tsx +210 -0
  89. package/src/WebViewNativeComponent.macos.ts +7 -0
  90. package/src/WebViewNativeComponent.windows.ts +8 -0
  91. package/src/WebViewShared.tsx +283 -0
  92. package/src/WebViewTypes.ts +1332 -0
  93. package/src/__tests__/WebViewShared-test.js +323 -0
  94. package/src/__tests__/__snapshots__/WebViewShared-test.js.snap +8 -0
  95. package/src/index.ts +4 -0
  96. package/windows/ExperimentalFeatures.props +11 -0
  97. package/windows/ReactNativeWebView/PropertySheet.props +16 -0
  98. package/windows/ReactNativeWebView/ReactNativeWebView.def +3 -0
  99. package/windows/ReactNativeWebView/ReactNativeWebView.filters +33 -0
  100. package/windows/ReactNativeWebView/ReactNativeWebView.vcxproj +189 -0
  101. package/windows/ReactNativeWebView/ReactPackageProvider.cpp +26 -0
  102. package/windows/ReactNativeWebView/ReactPackageProvider.h +20 -0
  103. package/windows/ReactNativeWebView/ReactPackageProvider.idl +7 -0
  104. package/windows/ReactNativeWebView/ReactWebView.cpp +242 -0
  105. package/windows/ReactNativeWebView/ReactWebView.h +56 -0
  106. package/windows/ReactNativeWebView/ReactWebView.idl +31 -0
  107. package/windows/ReactNativeWebView/ReactWebView2.cpp +473 -0
  108. package/windows/ReactNativeWebView/ReactWebView2.h +91 -0
  109. package/windows/ReactNativeWebView/ReactWebView2Manager.cpp +205 -0
  110. package/windows/ReactNativeWebView/ReactWebView2Manager.h +57 -0
  111. package/windows/ReactNativeWebView/ReactWebViewHelpers.cpp +70 -0
  112. package/windows/ReactNativeWebView/ReactWebViewHelpers.h +16 -0
  113. package/windows/ReactNativeWebView/ReactWebViewManager.cpp +224 -0
  114. package/windows/ReactNativeWebView/ReactWebViewManager.h +58 -0
  115. package/windows/ReactNativeWebView/WebBridge.cpp +19 -0
  116. package/windows/ReactNativeWebView/WebBridge.h +24 -0
  117. package/windows/ReactNativeWebView/WebBridge.idl +11 -0
  118. package/windows/ReactNativeWebView/pch.cpp +1 -0
  119. package/windows/ReactNativeWebView/pch.h +37 -0
  120. package/windows/ReactNativeWebView.sln +185 -0
@@ -0,0 +1,9 @@
1
+ #ifndef RNCWebViewManager_h
2
+ #define RNCWebViewManager_h
3
+
4
+ #import <React/RCTViewManager.h>
5
+
6
+ @interface RNCWebViewManager : RCTViewManager
7
+ @end
8
+
9
+ #endif /* RNCWebViewManager_h */
@@ -0,0 +1,215 @@
1
+ #import <React/RCTUIManager.h>
2
+
3
+ #import "RNCWebViewManager.h"
4
+ #import "RNCWebViewImpl.h"
5
+
6
+ #if TARGET_OS_OSX
7
+ #define RNCView NSView
8
+ @class NSView;
9
+ #else
10
+ #define RNCView UIView
11
+ @class UIView;
12
+ #endif // TARGET_OS_OSX
13
+
14
+ @implementation RCTConvert (WKWebView)
15
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 /* iOS 13 */
16
+ RCT_ENUM_CONVERTER(WKContentMode, (@{
17
+ @"recommended": @(WKContentModeRecommended),
18
+ @"mobile": @(WKContentModeMobile),
19
+ @"desktop": @(WKContentModeDesktop),
20
+ }), WKContentModeRecommended, integerValue)
21
+ #endif
22
+
23
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 /* iOS 15 */
24
+ RCT_ENUM_CONVERTER(RNCWebViewPermissionGrantType, (@{
25
+ @"grantIfSameHostElsePrompt": @(RNCWebViewPermissionGrantType_GrantIfSameHost_ElsePrompt),
26
+ @"grantIfSameHostElseDeny": @(RNCWebViewPermissionGrantType_GrantIfSameHost_ElseDeny),
27
+ @"deny": @(RNCWebViewPermissionGrantType_Deny),
28
+ @"grant": @(RNCWebViewPermissionGrantType_Grant),
29
+ @"prompt": @(RNCWebViewPermissionGrantType_Prompt),
30
+ }), RNCWebViewPermissionGrantType_Prompt, integerValue)
31
+ #endif
32
+ @end
33
+
34
+ @implementation RNCWebViewManager
35
+
36
+ RCT_EXPORT_MODULE(RNCWebView)
37
+
38
+ - (RNCView *)view
39
+ {
40
+ return [[RNCWebViewImpl alloc] init];
41
+ }
42
+
43
+ RCT_EXPORT_VIEW_PROPERTY(source, NSDictionary)
44
+ // New arch only
45
+ RCT_CUSTOM_VIEW_PROPERTY(newSource, NSDictionary, RNCWebViewImpl) {}
46
+ RCT_EXPORT_VIEW_PROPERTY(onFileDownload, RCTDirectEventBlock)
47
+ RCT_EXPORT_VIEW_PROPERTY(onLoadingStart, RCTDirectEventBlock)
48
+ RCT_EXPORT_VIEW_PROPERTY(onLoadingFinish, RCTDirectEventBlock)
49
+ RCT_EXPORT_VIEW_PROPERTY(onLoadingError, RCTDirectEventBlock)
50
+ RCT_EXPORT_VIEW_PROPERTY(onLoadingProgress, RCTDirectEventBlock)
51
+ RCT_EXPORT_VIEW_PROPERTY(onHttpError, RCTDirectEventBlock)
52
+ RCT_EXPORT_VIEW_PROPERTY(onShouldStartLoadWithRequest, RCTDirectEventBlock)
53
+ RCT_EXPORT_VIEW_PROPERTY(onContentProcessDidTerminate, RCTDirectEventBlock)
54
+ RCT_EXPORT_VIEW_PROPERTY(onOpenWindow, RCTDirectEventBlock)
55
+ RCT_EXPORT_VIEW_PROPERTY(injectedJavaScript, NSString)
56
+ RCT_EXPORT_VIEW_PROPERTY(injectedJavaScriptBeforeContentLoaded, NSString)
57
+ RCT_EXPORT_VIEW_PROPERTY(injectedJavaScriptForMainFrameOnly, BOOL)
58
+ RCT_EXPORT_VIEW_PROPERTY(injectedJavaScriptBeforeContentLoadedForMainFrameOnly, BOOL)
59
+ RCT_EXPORT_VIEW_PROPERTY(injectedJavaScriptObject, NSString)
60
+ RCT_EXPORT_VIEW_PROPERTY(javaScriptEnabled, BOOL)
61
+ RCT_EXPORT_VIEW_PROPERTY(javaScriptCanOpenWindowsAutomatically, BOOL)
62
+ RCT_EXPORT_VIEW_PROPERTY(allowFileAccessFromFileURLs, BOOL)
63
+ RCT_EXPORT_VIEW_PROPERTY(allowUniversalAccessFromFileURLs, BOOL)
64
+ RCT_EXPORT_VIEW_PROPERTY(allowsInlineMediaPlayback, BOOL)
65
+ RCT_EXPORT_VIEW_PROPERTY(allowsPictureInPictureMediaPlayback, BOOL)
66
+ RCT_EXPORT_VIEW_PROPERTY(webviewDebuggingEnabled, BOOL)
67
+ RCT_EXPORT_VIEW_PROPERTY(allowsAirPlayForMediaPlayback, BOOL)
68
+ RCT_EXPORT_VIEW_PROPERTY(mediaPlaybackRequiresUserAction, BOOL)
69
+ RCT_EXPORT_VIEW_PROPERTY(dataDetectorTypes, WKDataDetectorTypes)
70
+ RCT_EXPORT_VIEW_PROPERTY(contentInset, UIEdgeInsets)
71
+ RCT_EXPORT_VIEW_PROPERTY(automaticallyAdjustContentInsets, BOOL)
72
+ RCT_EXPORT_VIEW_PROPERTY(autoManageStatusBarEnabled, BOOL)
73
+ RCT_EXPORT_VIEW_PROPERTY(hideKeyboardAccessoryView, BOOL)
74
+ RCT_EXPORT_VIEW_PROPERTY(allowsBackForwardNavigationGestures, BOOL)
75
+ RCT_EXPORT_VIEW_PROPERTY(incognito, BOOL)
76
+ RCT_EXPORT_VIEW_PROPERTY(pagingEnabled, BOOL)
77
+ RCT_EXPORT_VIEW_PROPERTY(applicationNameForUserAgent, NSString)
78
+ RCT_EXPORT_VIEW_PROPERTY(cacheEnabled, BOOL)
79
+ RCT_EXPORT_VIEW_PROPERTY(allowsLinkPreview, BOOL)
80
+ RCT_EXPORT_VIEW_PROPERTY(allowingReadAccessToURL, NSString)
81
+ RCT_EXPORT_VIEW_PROPERTY(basicAuthCredential, NSDictionary)
82
+
83
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 /* __IPHONE_11_0 */
84
+ RCT_EXPORT_VIEW_PROPERTY(contentInsetAdjustmentBehavior, UIScrollViewContentInsetAdjustmentBehavior)
85
+ #endif
86
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 /* __IPHONE_13_0 */
87
+ RCT_EXPORT_VIEW_PROPERTY(automaticallyAdjustsScrollIndicatorInsets, BOOL)
88
+ #endif
89
+
90
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 /* iOS 13 */
91
+ RCT_EXPORT_VIEW_PROPERTY(contentMode, WKContentMode)
92
+ #endif
93
+
94
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 140000 /* iOS 14 */
95
+ RCT_EXPORT_VIEW_PROPERTY(limitsNavigationsToAppBoundDomains, BOOL)
96
+ #endif
97
+
98
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 140500 /* iOS 14.5 */
99
+ RCT_EXPORT_VIEW_PROPERTY(textInteractionEnabled, BOOL)
100
+ #endif
101
+
102
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 /* iOS 15 */
103
+ RCT_EXPORT_VIEW_PROPERTY(mediaCapturePermissionGrantType, RNCWebViewPermissionGrantType)
104
+ #endif
105
+
106
+ #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 /* iOS 13 */
107
+ RCT_EXPORT_VIEW_PROPERTY(fraudulentWebsiteWarningEnabled, BOOL)
108
+ #endif
109
+
110
+ /**
111
+ * Expose methods to enable messaging the webview.
112
+ */
113
+ RCT_EXPORT_VIEW_PROPERTY(messagingEnabled, BOOL)
114
+ RCT_EXPORT_VIEW_PROPERTY(onMessage, RCTDirectEventBlock)
115
+ RCT_EXPORT_VIEW_PROPERTY(onScroll, RCTDirectEventBlock)
116
+ RCT_EXPORT_VIEW_PROPERTY(enableApplePay, BOOL)
117
+ RCT_EXPORT_VIEW_PROPERTY(menuItems, NSArray);
118
+ RCT_EXPORT_VIEW_PROPERTY(suppressMenuItems, NSArray);
119
+
120
+ // New arch only
121
+ RCT_CUSTOM_VIEW_PROPERTY(hasOnFileDownload, BOOL, RNCWebViewImpl) {}
122
+ RCT_CUSTOM_VIEW_PROPERTY(hasOnOpenWindowEvent, BOOL, RNCWebViewImpl) {}
123
+
124
+ RCT_EXPORT_VIEW_PROPERTY(onCustomMenuSelection, RCTDirectEventBlock)
125
+ RCT_CUSTOM_VIEW_PROPERTY(pullToRefreshEnabled, BOOL, RNCWebViewImpl) {
126
+ view.pullToRefreshEnabled = json == nil ? false : [RCTConvert BOOL: json];
127
+ }
128
+ RCT_CUSTOM_VIEW_PROPERTY(refreshControlLightMode, BOOL, RNCWebViewImpl) {
129
+ view.refreshControlLightMode = json == nil ? false : [RCTConvert BOOL: json];
130
+ }
131
+
132
+ RCT_CUSTOM_VIEW_PROPERTY(bounces, BOOL, RNCWebViewImpl) {
133
+ view.bounces = json == nil ? true : [RCTConvert BOOL: json];
134
+ }
135
+
136
+ RCT_CUSTOM_VIEW_PROPERTY(useSharedProcessPool, BOOL, RNCWebViewImpl) {
137
+ view.useSharedProcessPool = json == nil ? true : [RCTConvert BOOL: json];
138
+ }
139
+
140
+ RCT_CUSTOM_VIEW_PROPERTY(userAgent, NSString, RNCWebViewImpl) {
141
+ view.userAgent = [RCTConvert NSString: json];
142
+ }
143
+
144
+ RCT_CUSTOM_VIEW_PROPERTY(scrollEnabled, BOOL, RNCWebViewImpl) {
145
+ view.scrollEnabled = json == nil ? true : [RCTConvert BOOL: json];
146
+ }
147
+
148
+ RCT_CUSTOM_VIEW_PROPERTY(sharedCookiesEnabled, BOOL, RNCWebViewImpl) {
149
+ view.sharedCookiesEnabled = json == nil ? false : [RCTConvert BOOL: json];
150
+ }
151
+
152
+ #if !TARGET_OS_OSX
153
+ RCT_CUSTOM_VIEW_PROPERTY(decelerationRate, CGFloat, RNCWebViewImpl) {
154
+ view.decelerationRate = json == nil ? UIScrollViewDecelerationRateNormal : [RCTConvert CGFloat: json];
155
+ }
156
+ #endif // !TARGET_OS_OSX
157
+
158
+ RCT_CUSTOM_VIEW_PROPERTY(directionalLockEnabled, BOOL, RNCWebViewImpl) {
159
+ view.directionalLockEnabled = json == nil ? true : [RCTConvert BOOL: json];
160
+ }
161
+
162
+ RCT_CUSTOM_VIEW_PROPERTY(showsHorizontalScrollIndicator, BOOL, RNCWebViewImpl) {
163
+ view.showsHorizontalScrollIndicator = json == nil ? true : [RCTConvert BOOL: json];
164
+ }
165
+
166
+ RCT_CUSTOM_VIEW_PROPERTY(showsVerticalScrollIndicator, BOOL, RNCWebViewImpl) {
167
+ view.showsVerticalScrollIndicator = json == nil ? true : [RCTConvert BOOL: json];
168
+ }
169
+
170
+ RCT_CUSTOM_VIEW_PROPERTY(keyboardDisplayRequiresUserAction, BOOL, RNCWebViewImpl) {
171
+ view.keyboardDisplayRequiresUserAction = json == nil ? true : [RCTConvert BOOL: json];
172
+ }
173
+
174
+ #if !TARGET_OS_OSX
175
+ #define BASE_VIEW_PER_OS() UIView
176
+ #else
177
+ #define BASE_VIEW_PER_OS() NSView
178
+ #endif
179
+
180
+ #define QUICK_RCT_EXPORT_COMMAND_METHOD(name) \
181
+ RCT_EXPORT_METHOD(name:(nonnull NSNumber *)reactTag) \
182
+ { \
183
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, BASE_VIEW_PER_OS() *> *viewRegistry) { \
184
+ RNCWebViewImpl *view = (RNCWebViewImpl *)viewRegistry[reactTag]; \
185
+ if (![view isKindOfClass:[RNCWebViewImpl class]]) { \
186
+ RCTLogError(@"Invalid view returned from registry, expecting RNCWebView, got: %@", view); \
187
+ } else { \
188
+ [view name]; \
189
+ } \
190
+ }]; \
191
+ }
192
+ #define QUICK_RCT_EXPORT_COMMAND_METHOD_PARAMS(name, in_param, out_param) \
193
+ RCT_EXPORT_METHOD(name:(nonnull NSNumber *)reactTag in_param) \
194
+ { \
195
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, BASE_VIEW_PER_OS() *> *viewRegistry) { \
196
+ RNCWebViewImpl *view = (RNCWebViewImpl *)viewRegistry[reactTag]; \
197
+ if (![view isKindOfClass:[RNCWebViewImpl class]]) { \
198
+ RCTLogError(@"Invalid view returned from registry, expecting RNCWebView, got: %@", view); \
199
+ } else { \
200
+ [view name:out_param]; \
201
+ } \
202
+ }]; \
203
+ }
204
+
205
+ QUICK_RCT_EXPORT_COMMAND_METHOD(reload)
206
+ QUICK_RCT_EXPORT_COMMAND_METHOD(goBack)
207
+ QUICK_RCT_EXPORT_COMMAND_METHOD(goForward)
208
+ QUICK_RCT_EXPORT_COMMAND_METHOD(stopLoading)
209
+ QUICK_RCT_EXPORT_COMMAND_METHOD(requestFocus)
210
+
211
+ QUICK_RCT_EXPORT_COMMAND_METHOD_PARAMS(postMessage, message:(NSString *)message, message)
212
+ QUICK_RCT_EXPORT_COMMAND_METHOD_PARAMS(injectJavaScript, script:(NSString *)script, script)
213
+ QUICK_RCT_EXPORT_COMMAND_METHOD_PARAMS(clearCache, includeDiskFiles:(BOOL)includeDiskFiles, includeDiskFiles)
214
+
215
+ @end
@@ -0,0 +1,23 @@
1
+ #ifndef RNCWebViewModule_h
2
+ #define RNCWebViewModule_h
3
+
4
+ #ifdef RCT_NEW_ARCH_ENABLED
5
+ #import "RNCWebViewSpec/RNCWebViewSpec.h"
6
+ #endif /* RCT_NEW_ARCH_ENABLED */
7
+
8
+ #import <React/RCTBridgeModule.h>
9
+
10
+ NS_ASSUME_NONNULL_BEGIN
11
+
12
+ @interface RNCWebViewModule : NSObject <
13
+ #ifdef RCT_NEW_ARCH_ENABLED
14
+ NativeRNCWebViewModuleSpec
15
+ #else
16
+ RCTBridgeModule
17
+ #endif /* RCT_NEW_ARCH_ENABLED */
18
+ >
19
+ @end
20
+
21
+ NS_ASSUME_NONNULL_END
22
+
23
+ #endif /* RNCWebViewModule_h */
@@ -0,0 +1,34 @@
1
+ #import "RNCWebViewModule.h"
2
+
3
+ #import "RNCWebViewDecisionManager.h"
4
+
5
+ #ifdef RCT_NEW_ARCH_ENABLED
6
+ #import <React/RCTFabricComponentsPlugins.h>
7
+ #endif /* RCT_NEW_ARCH_ENABLED */
8
+
9
+ @implementation RNCWebViewModule
10
+
11
+ RCT_EXPORT_MODULE(RNCWebViewModule)
12
+
13
+ RCT_EXPORT_METHOD(isFileUploadSupported:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) {
14
+ if (resolve) {
15
+ resolve(@(YES));
16
+ }
17
+ }
18
+
19
+ RCT_EXPORT_METHOD(shouldStartLoadWithLockIdentifier:(BOOL)shouldStart lockIdentifier:(double)lockIdentifier)
20
+ {
21
+ [[RNCWebViewDecisionManager getInstance] setResult:shouldStart forLockIdentifier:(int)lockIdentifier];
22
+ }
23
+
24
+ #ifdef RCT_NEW_ARCH_ENABLED
25
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
26
+ return std::make_shared<facebook::react::NativeRNCWebViewModuleSpecJSI>(params);
27
+ }
28
+ #endif /* RCT_NEW_ARCH_ENABLED */
29
+
30
+ Class RNCWebViewModuleCls(void) {
31
+ return RNCWebViewModule.class;
32
+ }
33
+
34
+ @end
package/index.d.ts ADDED
@@ -0,0 +1,65 @@
1
+ import { Component } from 'react';
2
+ // eslint-disable-next-line
3
+ import { IOSWebViewProps, AndroidWebViewProps, WindowsWebViewProps } from './lib/WebViewTypes';
4
+
5
+ export { FileDownload, WebViewMessageEvent, WebViewNavigation } from "./lib/WebViewTypes";
6
+
7
+ export type WebViewProps = IOSWebViewProps & AndroidWebViewProps & WindowsWebViewProps;
8
+
9
+ declare class WebView<P = {}> extends Component<WebViewProps & P> {
10
+ /**
11
+ * Go back one page in the webview's history.
12
+ */
13
+ goBack: () => void;
14
+
15
+ /**
16
+ * Go forward one page in the webview's history.
17
+ */
18
+ goForward: () => void;
19
+
20
+ /**
21
+ * Reloads the current page.
22
+ */
23
+ reload: () => void;
24
+
25
+ /**
26
+ * Stop loading the current page.
27
+ */
28
+ stopLoading(): void;
29
+
30
+ /**
31
+ * Executes the JavaScript string.
32
+ */
33
+ injectJavaScript: (script: string) => void;
34
+
35
+ /**
36
+ * Focuses on WebView redered page.
37
+ */
38
+ requestFocus: () => void;
39
+
40
+ /**
41
+ * Posts a message to WebView.
42
+ */
43
+ postMessage: (message: string) => void;
44
+
45
+ /**
46
+ * (Android only)
47
+ * Removes the autocomplete popup from the currently focused form field, if present.
48
+ */
49
+ clearFormData?: () => void;
50
+
51
+ /**
52
+ * (Android only)
53
+ * Clears the resource cache. Note that the cache is per-application, so this will clear the cache for all WebViews used.
54
+ */
55
+ clearCache?: (clear: boolean) => void;
56
+
57
+ /**
58
+ * (Android only)
59
+ * Tells this WebView to clear its internal back/forward list.
60
+ */
61
+ clearHistory?: () => void;
62
+ }
63
+
64
+ export {WebView};
65
+ export default WebView;
package/index.js ADDED
@@ -0,0 +1,4 @@
1
+ import WebView from './lib/WebView';
2
+
3
+ export { WebView };
4
+ export default WebView;
@@ -0,0 +1,273 @@
1
+ // !$*UTF8*$!
2
+ {
3
+ archiveVersion = 1;
4
+ classes = {
5
+ };
6
+ objectVersion = 46;
7
+ objects = {
8
+
9
+ /* Begin PBXBuildFile section */
10
+ 3515965E21A3C86000623BFA /* RNCWKProcessPoolManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3515965D21A3C86000623BFA /* RNCWKProcessPoolManager.m */; };
11
+ E91B351D21446E6C00F9801F /* RNCWebViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E91B351B21446E6C00F9801F /* RNCWebViewManager.m */; };
12
+ E91B351E21446E6C00F9801F /* RNCWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = E91B351C21446E6C00F9801F /* RNCWebView.m */; };
13
+ /* End PBXBuildFile section */
14
+
15
+ /* Begin PBXCopyFilesBuildPhase section */
16
+ 58B511D91A9E6C8500147676 /* CopyFiles */ = {
17
+ isa = PBXCopyFilesBuildPhase;
18
+ buildActionMask = 2147483647;
19
+ dstPath = "include/$(PRODUCT_NAME)";
20
+ dstSubfolderSpec = 16;
21
+ files = (
22
+ );
23
+ runOnlyForDeploymentPostprocessing = 0;
24
+ };
25
+ /* End PBXCopyFilesBuildPhase section */
26
+
27
+ /* Begin PBXFileReference section */
28
+ 134814201AA4EA6300B7C361 /* libRNCWebView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNCWebView.a; sourceTree = BUILT_PRODUCTS_DIR; };
29
+ 3515965D21A3C86000623BFA /* RNCWKProcessPoolManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RNCWKProcessPoolManager.m; path = ../apple/RNCWKProcessPoolManager.m; sourceTree = "<group>"; };
30
+ 3515965F21A3C87E00623BFA /* RNCWKProcessPoolManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RNCWKProcessPoolManager.h; path = ../apple/RNCWKProcessPoolManager.h; sourceTree = "<group>"; };
31
+ E91B351921446E6C00F9801F /* RNCWebViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNCWebViewManager.h; path = ../apple/RNCWebViewManager.h; sourceTree = "<group>"; };
32
+ E91B351A21446E6C00F9801F /* RNCWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNCWebView.h; path = ../apple/RNCWebView.h; sourceTree = "<group>"; };
33
+ E91B351B21446E6C00F9801F /* RNCWebViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNCWebViewManager.m; path = ../apple/RNCWebViewManager.m; sourceTree = "<group>"; };
34
+ E91B351C21446E6C00F9801F /* RNCWebView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNCWebView.m; path = ../apple/RNCWebView.m; sourceTree = "<group>"; };
35
+ /* End PBXFileReference section */
36
+
37
+ /* Begin PBXFrameworksBuildPhase section */
38
+ 58B511D81A9E6C8500147676 /* Frameworks */ = {
39
+ isa = PBXFrameworksBuildPhase;
40
+ buildActionMask = 2147483647;
41
+ files = (
42
+ );
43
+ runOnlyForDeploymentPostprocessing = 0;
44
+ };
45
+ /* End PBXFrameworksBuildPhase section */
46
+
47
+ /* Begin PBXGroup section */
48
+ 134814211AA4EA7D00B7C361 /* Products */ = {
49
+ isa = PBXGroup;
50
+ children = (
51
+ 134814201AA4EA6300B7C361 /* libRNCWebView.a */,
52
+ );
53
+ name = Products;
54
+ sourceTree = "<group>";
55
+ };
56
+ 58B511D21A9E6C8500147676 = {
57
+ isa = PBXGroup;
58
+ children = (
59
+ E91B351A21446E6C00F9801F /* RNCWebView.h */,
60
+ E91B351C21446E6C00F9801F /* RNCWebView.m */,
61
+ E91B351921446E6C00F9801F /* RNCWebViewManager.h */,
62
+ E91B351B21446E6C00F9801F /* RNCWebViewManager.m */,
63
+ 3515965F21A3C87E00623BFA /* RNCWKProcessPoolManager.h */,
64
+ 3515965D21A3C86000623BFA /* RNCWKProcessPoolManager.m */,
65
+ 134814211AA4EA7D00B7C361 /* Products */,
66
+ );
67
+ indentWidth = 2;
68
+ sourceTree = "<group>";
69
+ tabWidth = 2;
70
+ };
71
+ /* End PBXGroup section */
72
+
73
+ /* Begin PBXNativeTarget section */
74
+ 58B511DA1A9E6C8500147676 /* RNCWebView */ = {
75
+ isa = PBXNativeTarget;
76
+ buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNCWebView" */;
77
+ buildPhases = (
78
+ 58B511D71A9E6C8500147676 /* Sources */,
79
+ 58B511D81A9E6C8500147676 /* Frameworks */,
80
+ 58B511D91A9E6C8500147676 /* CopyFiles */,
81
+ );
82
+ buildRules = (
83
+ );
84
+ dependencies = (
85
+ );
86
+ name = RNCWebView;
87
+ productName = RCTDataManager;
88
+ productReference = 134814201AA4EA6300B7C361 /* libRNCWebView.a */;
89
+ productType = "com.apple.product-type.library.static";
90
+ };
91
+ /* End PBXNativeTarget section */
92
+
93
+ /* Begin PBXProject section */
94
+ 58B511D31A9E6C8500147676 /* Project object */ = {
95
+ isa = PBXProject;
96
+ attributes = {
97
+ LastUpgradeCheck = 0830;
98
+ ORGANIZATIONNAME = Facebook;
99
+ TargetAttributes = {
100
+ 58B511DA1A9E6C8500147676 = {
101
+ CreatedOnToolsVersion = 6.1.1;
102
+ };
103
+ };
104
+ };
105
+ buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNCWebView" */;
106
+ compatibilityVersion = "Xcode 3.2";
107
+ developmentRegion = en;
108
+ hasScannedForEncodings = 0;
109
+ knownRegions = (
110
+ en,
111
+ );
112
+ mainGroup = 58B511D21A9E6C8500147676;
113
+ productRefGroup = 58B511D21A9E6C8500147676;
114
+ projectDirPath = "";
115
+ projectRoot = "";
116
+ targets = (
117
+ 58B511DA1A9E6C8500147676 /* RNCWebView */,
118
+ );
119
+ };
120
+ /* End PBXProject section */
121
+
122
+ /* Begin PBXSourcesBuildPhase section */
123
+ 58B511D71A9E6C8500147676 /* Sources */ = {
124
+ isa = PBXSourcesBuildPhase;
125
+ buildActionMask = 2147483647;
126
+ files = (
127
+ E91B351D21446E6C00F9801F /* RNCWebViewManager.m in Sources */,
128
+ E91B351E21446E6C00F9801F /* RNCWebView.m in Sources */,
129
+ 3515965E21A3C86000623BFA /* RNCWKProcessPoolManager.m in Sources */,
130
+ );
131
+ runOnlyForDeploymentPostprocessing = 0;
132
+ };
133
+ /* End PBXSourcesBuildPhase section */
134
+
135
+ /* Begin XCBuildConfiguration section */
136
+ 58B511ED1A9E6C8500147676 /* Debug */ = {
137
+ isa = XCBuildConfiguration;
138
+ buildSettings = {
139
+ ALWAYS_SEARCH_USER_PATHS = NO;
140
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
141
+ CLANG_CXX_LIBRARY = "libc++";
142
+ CLANG_ENABLE_MODULES = YES;
143
+ CLANG_ENABLE_OBJC_ARC = YES;
144
+ CLANG_WARN_BOOL_CONVERSION = YES;
145
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
146
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
147
+ CLANG_WARN_EMPTY_BODY = YES;
148
+ CLANG_WARN_ENUM_CONVERSION = YES;
149
+ CLANG_WARN_INFINITE_RECURSION = YES;
150
+ CLANG_WARN_INT_CONVERSION = YES;
151
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
152
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
153
+ CLANG_WARN_UNREACHABLE_CODE = YES;
154
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
155
+ COPY_PHASE_STRIP = NO;
156
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
157
+ ENABLE_TESTABILITY = YES;
158
+ GCC_C_LANGUAGE_STANDARD = gnu99;
159
+ GCC_DYNAMIC_NO_PIC = NO;
160
+ GCC_NO_COMMON_BLOCKS = YES;
161
+ GCC_OPTIMIZATION_LEVEL = 0;
162
+ GCC_PREPROCESSOR_DEFINITIONS = (
163
+ "DEBUG=1",
164
+ "$(inherited)",
165
+ );
166
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
167
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
168
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
169
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
170
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
171
+ GCC_WARN_UNUSED_FUNCTION = YES;
172
+ GCC_WARN_UNUSED_VARIABLE = YES;
173
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
174
+ MTL_ENABLE_DEBUG_INFO = YES;
175
+ ONLY_ACTIVE_ARCH = YES;
176
+ SDKROOT = iphoneos;
177
+ };
178
+ name = Debug;
179
+ };
180
+ 58B511EE1A9E6C8500147676 /* Release */ = {
181
+ isa = XCBuildConfiguration;
182
+ buildSettings = {
183
+ ALWAYS_SEARCH_USER_PATHS = NO;
184
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
185
+ CLANG_CXX_LIBRARY = "libc++";
186
+ CLANG_ENABLE_MODULES = YES;
187
+ CLANG_ENABLE_OBJC_ARC = YES;
188
+ CLANG_WARN_BOOL_CONVERSION = YES;
189
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
190
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
191
+ CLANG_WARN_EMPTY_BODY = YES;
192
+ CLANG_WARN_ENUM_CONVERSION = YES;
193
+ CLANG_WARN_INFINITE_RECURSION = YES;
194
+ CLANG_WARN_INT_CONVERSION = YES;
195
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
196
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
197
+ CLANG_WARN_UNREACHABLE_CODE = YES;
198
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
199
+ COPY_PHASE_STRIP = YES;
200
+ ENABLE_NS_ASSERTIONS = NO;
201
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
202
+ GCC_C_LANGUAGE_STANDARD = gnu99;
203
+ GCC_NO_COMMON_BLOCKS = YES;
204
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
205
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
206
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
207
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
208
+ GCC_WARN_UNUSED_FUNCTION = YES;
209
+ GCC_WARN_UNUSED_VARIABLE = YES;
210
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
211
+ MTL_ENABLE_DEBUG_INFO = NO;
212
+ SDKROOT = iphoneos;
213
+ VALIDATE_PRODUCT = YES;
214
+ };
215
+ name = Release;
216
+ };
217
+ 58B511F01A9E6C8500147676 /* Debug */ = {
218
+ isa = XCBuildConfiguration;
219
+ buildSettings = {
220
+ FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/../node_modules/react-native/**";
221
+ HEADER_SEARCH_PATHS = (
222
+ "$(inherited)",
223
+ "$(SRCROOT)/../node_modules/react-native/React/**",
224
+ "$(SRCROOT)/../../react-native/React/**",
225
+ );
226
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
227
+ OTHER_LDFLAGS = "-ObjC";
228
+ PRODUCT_NAME = RNCWebView;
229
+ SKIP_INSTALL = YES;
230
+ };
231
+ name = Debug;
232
+ };
233
+ 58B511F11A9E6C8500147676 /* Release */ = {
234
+ isa = XCBuildConfiguration;
235
+ buildSettings = {
236
+ FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/../node_modules/react-native/**";
237
+ HEADER_SEARCH_PATHS = (
238
+ "$(inherited)",
239
+ "$(SRCROOT)/../node_modules/react-native/React/**",
240
+ "$(SRCROOT)/../../react-native/React/**",
241
+ );
242
+ LIBRARY_SEARCH_PATHS = "$(inherited)";
243
+ OTHER_LDFLAGS = "-ObjC";
244
+ PRODUCT_NAME = RNCWebView;
245
+ SKIP_INSTALL = YES;
246
+ };
247
+ name = Release;
248
+ };
249
+ /* End XCBuildConfiguration section */
250
+
251
+ /* Begin XCConfigurationList section */
252
+ 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNCWebView" */ = {
253
+ isa = XCConfigurationList;
254
+ buildConfigurations = (
255
+ 58B511ED1A9E6C8500147676 /* Debug */,
256
+ 58B511EE1A9E6C8500147676 /* Release */,
257
+ );
258
+ defaultConfigurationIsVisible = 0;
259
+ defaultConfigurationName = Release;
260
+ };
261
+ 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNCWebView" */ = {
262
+ isa = XCConfigurationList;
263
+ buildConfigurations = (
264
+ 58B511F01A9E6C8500147676 /* Debug */,
265
+ 58B511F11A9E6C8500147676 /* Release */,
266
+ );
267
+ defaultConfigurationIsVisible = 0;
268
+ defaultConfigurationName = Release;
269
+ };
270
+ /* End XCConfigurationList section */
271
+ };
272
+ rootObject = 58B511D31A9E6C8500147676 /* Project object */;
273
+ }
@@ -0,0 +1,10 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import { Double } from 'react-native/Libraries/Types/CodegenTypes';
3
+ export interface Spec extends TurboModule {
4
+ isFileUploadSupported(): Promise<boolean>;
5
+ shouldStartLoadWithLockIdentifier(shouldStart: boolean, lockIdentifier: Double): void;
6
+ addListener(eventType: string): void;
7
+ removeListeners(count: number): void;
8
+ }
9
+ declare const _default: Spec;
10
+ export default _default;
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _reactNative=require("react-native");var _default=exports.default=_reactNative.TurboModuleRegistry.getEnforcing('RNCWebViewModule');