react-native-webview-bootpay 11.26.20 → 13.6.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 (342) hide show
  1. package/README.md +9 -31
  2. package/android/build.gradle +70 -112
  3. package/android/gradle.properties +5 -6
  4. package/android/src/main/java/kr/co/bootpay/webview/BPCBasicAuthCredential.java +11 -0
  5. package/android/src/main/java/kr/co/bootpay/webview/BPCWebChromeClient.java +354 -434
  6. package/android/src/main/java/kr/co/bootpay/webview/BPCWebView.java +350 -259
  7. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewClient.java +253 -399
  8. package/android/src/main/java/kr/co/bootpay/webview/{WebViewConfig.java → BPCWebViewConfig.java} +3 -4
  9. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewFileProvider.java +1 -1
  10. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewManager.java +290 -877
  11. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewManagerImpl.kt +664 -0
  12. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewModule.java +29 -520
  13. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewModuleImpl.java +554 -0
  14. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewPackage.java +56 -0
  15. package/android/src/main/java/kr/co/bootpay/webview/BootpayUrlHelper.java +122 -0
  16. package/android/src/main/java/kr/co/bootpay/webview/events/TopCustomMenuSelectionEvent.kt +24 -0
  17. package/android/src/main/java/kr/co/bootpay/webview/events/TopNewWindowEvent.kt +25 -0
  18. package/android/src/newarch/com/reactnativecommunity/webview/BPCWebViewManager.java +544 -0
  19. package/android/src/newarch/com/reactnativecommunity/webview/BPCWebViewModule.java +57 -0
  20. package/apple/BPCWebView.h +22 -126
  21. package/apple/BPCWebView.mm +528 -0
  22. package/apple/BPCWebViewDecisionManager.h +20 -0
  23. package/apple/BPCWebViewDecisionManager.m +47 -0
  24. package/apple/BPCWebViewImpl.h +150 -0
  25. package/apple/{BPCWebView.m → BPCWebViewImpl.m} +381 -214
  26. package/apple/BPCWebViewManager.h +4 -8
  27. package/apple/{BPCWebViewManager.m → BPCWebViewManager.mm} +93 -149
  28. package/{android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream → ios/.DS_Store} +0 -0
  29. package/ios/{BPCWebView.xcodeproj → RNCWebView.xcodeproj}/project.pbxproj +18 -18
  30. package/ios/main.jsbundle +457 -0
  31. package/lib/BPCWebViewNativeComponent.d.ts +242 -0
  32. package/lib/BPCWebViewNativeComponent.d.ts.map +1 -0
  33. package/lib/BPCWebViewNativeComponent.js +6 -0
  34. package/lib/NativeBPCWebView.d.ts +10 -0
  35. package/lib/NativeBPCWebView.d.ts.map +1 -0
  36. package/lib/NativeBPCWebView.js +2 -0
  37. package/lib/NativeRNCWebView.d.ts +10 -0
  38. package/lib/NativeRNCWebView.d.ts.map +1 -0
  39. package/lib/NativeRNCWebView.js +2 -0
  40. package/lib/RNCWebViewNativeComponent.d.ts +242 -0
  41. package/lib/RNCWebViewNativeComponent.d.ts.map +1 -0
  42. package/lib/RNCWebViewNativeComponent.js +6 -0
  43. package/lib/WebView.android.d.ts.map +1 -1
  44. package/lib/WebView.android.js +53 -29
  45. package/lib/WebView.ios.d.ts.map +1 -1
  46. package/lib/WebView.ios.js +49 -28
  47. package/lib/WebView.macos.d.ts.map +1 -1
  48. package/lib/WebView.macos.js +10 -14
  49. package/lib/WebView.windows.d.ts.map +1 -1
  50. package/lib/WebView.windows.js +4 -6
  51. package/lib/WebViewNativeComponent.macos.d.ts +2 -2
  52. package/lib/WebViewNativeComponent.macos.js +2 -2
  53. package/lib/WebViewShared.d.ts +4 -2
  54. package/lib/WebViewShared.d.ts.map +1 -1
  55. package/lib/WebViewShared.js +8 -2
  56. package/lib/WebViewTypes.d.ts +62 -95
  57. package/lib/WebViewTypes.d.ts.map +1 -1
  58. package/lib/WebViewTypes.js +0 -16
  59. package/macos/RNCWebView.xcodeproj/project.pbxproj +44 -44
  60. package/package.json +38 -20
  61. package/react-native-webview-bootpay.podspec +22 -3
  62. package/react-native.config.js +1 -2
  63. package/src/BPCWebViewNativeComponent.ts +281 -0
  64. package/src/NativeBPCWebView.ts +14 -0
  65. package/src/WebView.android.tsx +229 -0
  66. package/src/WebView.ios.tsx +232 -0
  67. package/src/WebView.macos.tsx +177 -0
  68. package/src/WebView.styles.ts +44 -0
  69. package/src/WebView.tsx +18 -0
  70. package/src/WebView.windows.tsx +156 -0
  71. package/src/WebViewNativeComponent.macos.ts +8 -0
  72. package/src/WebViewNativeComponent.windows.ts +10 -0
  73. package/src/WebViewShared.tsx +235 -0
  74. package/src/WebViewTypes.ts +1287 -0
  75. package/src/__tests__/WebViewShared-test.js +208 -0
  76. package/src/__tests__/__snapshots__/WebViewShared-test.js.snap +8 -0
  77. package/src/index.ts +4 -0
  78. package/windows/.gitignore +353 -0
  79. package/windows/ReactNativeWebView/ReactNativeWebView.vcxproj +1 -1
  80. package/windows/ReactNativeWebView/ReactWebView.idl +1 -0
  81. package/windows/ReactNativeWebView/ReactWebView2.cpp +142 -19
  82. package/windows/ReactNativeWebView/ReactWebView2.h +3 -0
  83. package/windows/ReactNativeWebView/ReactWebView2Manager.cpp +29 -5
  84. package/windows/ReactNativeWebView/pch.h +1 -0
  85. package/android/.editorconfig +0 -6
  86. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/results.bin +0 -1
  87. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebChromeClient$1.dex +0 -0
  88. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebChromeClient.dex +0 -0
  89. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebView$1.dex +0 -0
  90. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebView$BPCWebViewBridge.dex +0 -0
  91. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebView$ProgressChangedFilter.dex +0 -0
  92. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebView.dex +0 -0
  93. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewClient.dex +0 -0
  94. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewFileProvider.dex +0 -0
  95. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewManager$1.dex +0 -0
  96. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewManager$2.dex +0 -0
  97. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewManager$3.dex +0 -0
  98. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewManager$4.dex +0 -0
  99. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewManager.dex +0 -0
  100. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewModule$1.dex +0 -0
  101. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewModule$2.dex +0 -0
  102. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewModule$MimeType.dex +0 -0
  103. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewModule$ShouldOverrideUrlLoadingLock$ShouldOverrideCallbackState.dex +0 -0
  104. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewModule$ShouldOverrideUrlLoadingLock.dex +0 -0
  105. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewModule.dex +0 -0
  106. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BPCWebViewPackage.dex +0 -0
  107. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BasicAuthCredential.dex +0 -0
  108. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/BuildConfig.dex +0 -0
  109. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/URLUtil.dex +0 -0
  110. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/WebViewConfig.dex +0 -0
  111. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent$Companion.dex +0 -0
  112. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent.dex +0 -0
  113. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent$Companion.dex +0 -0
  114. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent.dex +0 -0
  115. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent$Companion.dex +0 -0
  116. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent.dex +0 -0
  117. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent$Companion.dex +0 -0
  118. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent.dex +0 -0
  119. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent$Companion.dex +0 -0
  120. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent.dex +0 -0
  121. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopMessageEvent$Companion.dex +0 -0
  122. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopMessageEvent.dex +0 -0
  123. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent$Companion.dex +0 -0
  124. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent.dex +0 -0
  125. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent$Companion.dex +0 -0
  126. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent.dex +0 -0
  127. package/android/build/.transforms/547b28b34bd585663252523c1a7a53e6/transformed/desugar_graph.bin +0 -0
  128. package/android/build/.transforms/88c49d67076e4458a9ddee82f875eb6a/results.bin +0 -1
  129. package/android/build/.transforms/88c49d67076e4458a9ddee82f875eb6a/transformed/classes/classes.dex +0 -0
  130. package/android/build/.transforms/c0e86b44db04fcaf424a5b7ce79324f4/results.bin +0 -1
  131. package/android/build/generated/source/buildConfig/debug/kr/co/bootpay/webview/BuildConfig.java +0 -10
  132. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +0 -106
  133. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +0 -18
  134. package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +0 -4
  135. package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +0 -1
  136. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  137. package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
  138. package/android/build/intermediates/compile_symbol_list/debug/R.txt +0 -1861
  139. package/android/build/intermediates/compiled_local_resources/debug/out/xml_file_provider_paths.xml.flat +0 -0
  140. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -2
  141. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
  142. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
  143. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  144. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
  145. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebChromeClient$1.class +0 -0
  146. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebChromeClient.class +0 -0
  147. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$1.class +0 -0
  148. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$BPCWebViewBridge.class +0 -0
  149. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView$ProgressChangedFilter.class +0 -0
  150. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebView.class +0 -0
  151. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewClient.class +0 -0
  152. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewFileProvider.class +0 -0
  153. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$1.class +0 -0
  154. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$2.class +0 -0
  155. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$3.class +0 -0
  156. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager$4.class +0 -0
  157. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewManager.class +0 -0
  158. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule$1.class +0 -0
  159. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule$2.class +0 -0
  160. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule$MimeType.class +0 -0
  161. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule$ShouldOverrideUrlLoadingLock$ShouldOverrideCallbackState.class +0 -0
  162. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule$ShouldOverrideUrlLoadingLock.class +0 -0
  163. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BPCWebViewModule.class +0 -0
  164. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BasicAuthCredential.class +0 -0
  165. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/BuildConfig.class +0 -0
  166. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/URLUtil.class +0 -0
  167. package/android/build/intermediates/javac/debug/classes/kr/co/bootpay/webview/WebViewConfig.class +0 -0
  168. package/android/build/intermediates/library_java_res/debug/res.jar +0 -0
  169. package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +0 -3
  170. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +0 -210
  171. package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +0 -106
  172. package/android/build/intermediates/navigation_json/debug/navigation.json +0 -1
  173. package/android/build/intermediates/packaged_manifests/debug/output-metadata.json +0 -18
  174. package/android/build/intermediates/packaged_res/debug/xml/file_provider_paths.xml +0 -6
  175. package/android/build/intermediates/runtime_library_classes_dir/debug/META-INF/react-native-webview-bootpay_debug.kotlin_module +0 -0
  176. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebChromeClient$1.class +0 -0
  177. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebChromeClient.class +0 -0
  178. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebView$1.class +0 -0
  179. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebView$BPCWebViewBridge.class +0 -0
  180. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebView$ProgressChangedFilter.class +0 -0
  181. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebView.class +0 -0
  182. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewClient.class +0 -0
  183. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewFileProvider.class +0 -0
  184. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewManager$1.class +0 -0
  185. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewManager$2.class +0 -0
  186. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewManager$3.class +0 -0
  187. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewManager$4.class +0 -0
  188. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewManager.class +0 -0
  189. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewModule$1.class +0 -0
  190. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewModule$2.class +0 -0
  191. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewModule$MimeType.class +0 -0
  192. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewModule$ShouldOverrideUrlLoadingLock$ShouldOverrideCallbackState.class +0 -0
  193. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewModule$ShouldOverrideUrlLoadingLock.class +0 -0
  194. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewModule.class +0 -0
  195. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BPCWebViewPackage.class +0 -0
  196. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BasicAuthCredential.class +0 -0
  197. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/BuildConfig.class +0 -0
  198. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/URLUtil.class +0 -0
  199. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/WebViewConfig.class +0 -0
  200. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent$Companion.class +0 -0
  201. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent.class +0 -0
  202. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent$Companion.class +0 -0
  203. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent.class +0 -0
  204. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent$Companion.class +0 -0
  205. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent.class +0 -0
  206. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent$Companion.class +0 -0
  207. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent.class +0 -0
  208. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent$Companion.class +0 -0
  209. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent.class +0 -0
  210. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopMessageEvent$Companion.class +0 -0
  211. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopMessageEvent.class +0 -0
  212. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent$Companion.class +0 -0
  213. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent.class +0 -0
  214. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent$Companion.class +0 -0
  215. package/android/build/intermediates/runtime_library_classes_dir/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent.class +0 -0
  216. package/android/build/intermediates/runtime_library_classes_jar/debug/classes.jar +0 -0
  217. package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +0 -1381
  218. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  219. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  220. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  221. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  222. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  223. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  224. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  225. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  226. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  227. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  228. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  229. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  230. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  231. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  232. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  233. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  234. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  235. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  236. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  237. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  238. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  239. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  240. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  241. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  242. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  243. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  244. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  245. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  246. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  247. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  248. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  249. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  250. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  251. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  252. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  253. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab +0 -0
  254. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream +0 -0
  255. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.keystream.len +0 -0
  256. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.len +0 -0
  257. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab.values.at +0 -0
  258. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab_i +0 -0
  259. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/java-sources-proto-map.tab_i.len +0 -0
  260. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  261. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  262. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  263. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  264. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  265. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  266. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  267. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  268. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  269. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  270. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  271. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  272. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  273. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  274. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  275. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  276. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  277. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  278. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  279. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  280. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  281. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  282. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  283. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  284. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  285. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  286. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  287. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  288. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
  289. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  290. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  291. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  292. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  293. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  294. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  295. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  296. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  297. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  298. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  299. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  300. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  301. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  302. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  303. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  304. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  305. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  306. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  307. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  308. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  309. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  310. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  311. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -229
  312. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  313. package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-webview-bootpay_debug.kotlin_module +0 -0
  314. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/BPCWebViewPackage.class +0 -0
  315. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent$Companion.class +0 -0
  316. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopHttpErrorEvent.class +0 -0
  317. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent$Companion.class +0 -0
  318. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingErrorEvent.class +0 -0
  319. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent$Companion.class +0 -0
  320. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingFinishEvent.class +0 -0
  321. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent$Companion.class +0 -0
  322. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingProgressEvent.class +0 -0
  323. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent$Companion.class +0 -0
  324. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopLoadingStartEvent.class +0 -0
  325. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopMessageEvent$Companion.class +0 -0
  326. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopMessageEvent.class +0 -0
  327. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent$Companion.class +0 -0
  328. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopRenderProcessGoneEvent.class +0 -0
  329. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent$Companion.class +0 -0
  330. package/android/build/tmp/kotlin-classes/debug/kr/co/bootpay/webview/events/TopShouldStartLoadWithRequestEvent.class +0 -0
  331. package/android/src/main/java/kr/co/bootpay/webview/BPCWebViewPackage.kt +0 -15
  332. package/android/src/main/java/kr/co/bootpay/webview/BasicAuthCredential.java +0 -11
  333. package/ios/BPCWebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  334. package/ios/BPCWebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  335. package/ios/BPCWebView.xcodeproj/project.xcworkspace/xcuserdata/ehowlsla.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  336. package/ios/BPCWebView.xcodeproj/xcuserdata/ehowlsla.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  337. package/lib/WebViewNativeComponent.android.d.ts +0 -4
  338. package/lib/WebViewNativeComponent.android.d.ts.map +0 -1
  339. package/lib/WebViewNativeComponent.android.js +0 -3
  340. package/lib/WebViewNativeComponent.ios.d.ts +0 -4
  341. package/lib/WebViewNativeComponent.ios.d.ts.map +0 -1
  342. package/lib/WebViewNativeComponent.ios.js +0 -3
@@ -0,0 +1,232 @@
1
+ import React, { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';
2
+ import {
3
+ Image,
4
+ View,
5
+ ImageSourcePropType,
6
+ HostComponent,
7
+ } from 'react-native';
8
+ import invariant from 'invariant';
9
+
10
+ import BPCWebView, {Commands, NativeProps} from "./BPCWebViewNativeComponent";
11
+ import BPCWebViewModule from "./NativeBPCWebView";
12
+
13
+ import {
14
+ defaultOriginWhitelist,
15
+ defaultRenderError,
16
+ defaultRenderLoading,
17
+ useWebViewLogic,
18
+ } from './WebViewShared';
19
+ import {
20
+ IOSWebViewProps,
21
+ DecelerationRateConstant,
22
+ WebViewSourceUri,
23
+ } from './WebViewTypes';
24
+
25
+ import styles from './WebView.styles';
26
+
27
+
28
+
29
+ const { resolveAssetSource } = Image;
30
+ const processDecelerationRate = (
31
+ decelerationRate: DecelerationRateConstant | number | undefined,
32
+ ) => {
33
+ let newDecelerationRate = decelerationRate;
34
+ if (newDecelerationRate === 'normal') {
35
+ newDecelerationRate = 0.998;
36
+ } else if (newDecelerationRate === 'fast') {
37
+ newDecelerationRate = 0.99;
38
+ }
39
+ return newDecelerationRate;
40
+ };
41
+
42
+ const useWarnIfChanges = <T extends unknown>(value: T, name: string) => {
43
+ const ref = useRef(value);
44
+ if (ref.current !== value) {
45
+ console.warn(`Changes to property ${name} do nothing after the initial render.`);
46
+ ref.current = value;
47
+ }
48
+ }
49
+
50
+ const WebViewComponent = forwardRef<{}, IOSWebViewProps>(({
51
+ fraudulentWebsiteWarningEnabled = true,
52
+ javaScriptEnabled = true,
53
+ cacheEnabled = true,
54
+ originWhitelist = defaultOriginWhitelist,
55
+ useSharedProcessPool= true,
56
+ textInteractionEnabled= true,
57
+ injectedJavaScript,
58
+ injectedJavaScriptBeforeContentLoaded,
59
+ injectedJavaScriptForMainFrameOnly = true,
60
+ injectedJavaScriptBeforeContentLoadedForMainFrameOnly = true,
61
+ startInLoadingState,
62
+ onNavigationStateChange,
63
+ onLoadStart,
64
+ onError,
65
+ onLoad,
66
+ onLoadEnd,
67
+ onLoadProgress,
68
+ onContentProcessDidTerminate: onContentProcessDidTerminateProp,
69
+ onFileDownload,
70
+ onHttpError: onHttpErrorProp,
71
+ onMessage: onMessageProp,
72
+ onOpenWindow: onOpenWindowProp,
73
+ renderLoading,
74
+ renderError,
75
+ style,
76
+ containerStyle,
77
+ source,
78
+ nativeConfig,
79
+ allowsInlineMediaPlayback,
80
+ allowsAirPlayForMediaPlayback,
81
+ mediaPlaybackRequiresUserAction,
82
+ dataDetectorTypes,
83
+ incognito,
84
+ decelerationRate: decelerationRateProp,
85
+ onShouldStartLoadWithRequest: onShouldStartLoadWithRequestProp,
86
+ ...otherProps
87
+ }, ref) => {
88
+ const webViewRef = useRef<React.ComponentRef<HostComponent<NativeProps>> | null>(null);
89
+
90
+ const onShouldStartLoadWithRequestCallback = useCallback((
91
+ shouldStart: boolean,
92
+ _url: string,
93
+ lockIdentifier = 0,
94
+ ) => {
95
+ BPCWebViewModule.shouldStartLoadWithLockIdentifier(shouldStart, lockIdentifier);
96
+ }, []);
97
+
98
+ const { onLoadingStart, onShouldStartLoadWithRequest, onMessage, viewState, setViewState, lastErrorEvent, onHttpError, onLoadingError, onLoadingFinish, onLoadingProgress, onOpenWindow, onContentProcessDidTerminate } = useWebViewLogic({
99
+ onNavigationStateChange,
100
+ onLoad,
101
+ onError,
102
+ onHttpErrorProp,
103
+ onLoadEnd,
104
+ onLoadProgress,
105
+ onLoadStart,
106
+ onMessageProp,
107
+ onOpenWindowProp,
108
+ startInLoadingState,
109
+ originWhitelist,
110
+ onShouldStartLoadWithRequestProp,
111
+ onShouldStartLoadWithRequestCallback,
112
+ onContentProcessDidTerminateProp,
113
+ });
114
+
115
+ useImperativeHandle(ref, () => ({
116
+ goForward: () => webViewRef.current && Commands.goForward(webViewRef.current),
117
+ goBack: () => webViewRef.current && Commands.goBack(webViewRef.current),
118
+ reload: () => {
119
+ setViewState(
120
+ 'LOADING',
121
+ );
122
+ if (webViewRef.current) {
123
+ Commands.reload(webViewRef.current)
124
+ }
125
+ },
126
+ stopLoading: () => webViewRef.current && Commands.stopLoading(webViewRef.current),
127
+ postMessage: (data: string) => webViewRef.current && Commands.postMessage(webViewRef.current, data),
128
+ injectJavaScript: (data: string) => webViewRef.current && Commands.injectJavaScript(webViewRef.current, data),
129
+ requestFocus: () => webViewRef.current && Commands.requestFocus(webViewRef.current),
130
+ clearCache: (includeDiskFiles: boolean) => webViewRef.current && Commands.clearCache(webViewRef.current, includeDiskFiles),
131
+ }), [setViewState, webViewRef]);
132
+
133
+
134
+ useWarnIfChanges(allowsInlineMediaPlayback, 'allowsInlineMediaPlayback');
135
+ useWarnIfChanges(allowsAirPlayForMediaPlayback, 'allowsAirPlayForMediaPlayback');
136
+ useWarnIfChanges(incognito, 'incognito');
137
+ useWarnIfChanges(mediaPlaybackRequiresUserAction, 'mediaPlaybackRequiresUserAction');
138
+ useWarnIfChanges(dataDetectorTypes, 'dataDetectorTypes');
139
+
140
+ let otherView = null;
141
+ if (viewState === 'LOADING') {
142
+ otherView = (renderLoading || defaultRenderLoading)();
143
+ } else if (viewState === 'ERROR') {
144
+ invariant(lastErrorEvent != null, 'lastErrorEvent expected to be non-null');
145
+ otherView = (renderError || defaultRenderError)(
146
+ lastErrorEvent?.domain,
147
+ lastErrorEvent?.code ?? 0,
148
+ lastErrorEvent?.description ?? '',
149
+ );
150
+ } else if (viewState !== 'IDLE') {
151
+ console.error(`BPCWebView invalid state encountered: ${viewState}`);
152
+ }
153
+
154
+ const webViewStyles = [styles.container, styles.webView, style];
155
+ const webViewContainerStyle = [styles.container, containerStyle];
156
+
157
+ const decelerationRate = processDecelerationRate(decelerationRateProp);
158
+
159
+ const NativeWebView
160
+ = (nativeConfig?.component as typeof BPCWebView | undefined)
161
+ || BPCWebView;
162
+
163
+ const sourceResolved = resolveAssetSource(source as ImageSourcePropType)
164
+ const newSource = typeof sourceResolved === "object" ? Object.entries(sourceResolved as WebViewSourceUri).reduce((prev, [currKey, currValue]) => {
165
+ return {
166
+ ...prev,
167
+ [currKey]: currKey === "headers" && currValue && typeof currValue === "object" ? Object.entries(currValue).map(
168
+ ([key, value]) => {
169
+ return {
170
+ name: key,
171
+ value
172
+ }
173
+ }) : currValue
174
+ }
175
+ }, {}) : sourceResolved
176
+
177
+ const webView = (
178
+ <NativeWebView
179
+ key="webViewKey"
180
+ {...otherProps}
181
+ fraudulentWebsiteWarningEnabled={fraudulentWebsiteWarningEnabled}
182
+ javaScriptEnabled={javaScriptEnabled}
183
+ cacheEnabled={cacheEnabled}
184
+ useSharedProcessPool={useSharedProcessPool}
185
+ textInteractionEnabled={textInteractionEnabled}
186
+ decelerationRate={decelerationRate}
187
+ messagingEnabled={typeof onMessageProp === 'function'}
188
+ messagingModuleName="" // android ONLY
189
+ onLoadingError={onLoadingError}
190
+ onLoadingFinish={onLoadingFinish}
191
+ onLoadingProgress={onLoadingProgress}
192
+ onFileDownload={onFileDownload}
193
+ onLoadingStart={onLoadingStart}
194
+ onHttpError={onHttpError}
195
+ onMessage={onMessage}
196
+ onOpenWindow={onOpenWindowProp && onOpenWindow}
197
+ hasOnOpenWindowEvent={onOpenWindowProp !== undefined}
198
+ onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
199
+ onContentProcessDidTerminate={onContentProcessDidTerminate}
200
+ injectedJavaScript={injectedJavaScript}
201
+ injectedJavaScriptBeforeContentLoaded={injectedJavaScriptBeforeContentLoaded}
202
+ injectedJavaScriptForMainFrameOnly={injectedJavaScriptForMainFrameOnly}
203
+ injectedJavaScriptBeforeContentLoadedForMainFrameOnly={injectedJavaScriptBeforeContentLoadedForMainFrameOnly}
204
+ dataDetectorTypes={!dataDetectorTypes || Array.isArray(dataDetectorTypes) ? dataDetectorTypes : [dataDetectorTypes]}
205
+ allowsAirPlayForMediaPlayback={allowsAirPlayForMediaPlayback}
206
+ allowsInlineMediaPlayback={allowsInlineMediaPlayback}
207
+ incognito={incognito}
208
+ mediaPlaybackRequiresUserAction={mediaPlaybackRequiresUserAction}
209
+ newSource={newSource}
210
+ style={webViewStyles}
211
+ hasOnFileDownload={!!onFileDownload}
212
+ ref={webViewRef}
213
+ // @ts-expect-error old arch only
214
+ source={sourceResolved}
215
+ {...nativeConfig?.props}
216
+ />
217
+ );
218
+
219
+ return (
220
+ <View style={webViewContainerStyle}>
221
+ {webView}
222
+ {otherView}
223
+ </View>
224
+ );})
225
+
226
+ // no native implementation for iOS, depends only on permissions
227
+ const isFileUploadSupported: () => Promise<boolean>
228
+ = async () => true;
229
+
230
+ const WebView = Object.assign(WebViewComponent, {isFileUploadSupported});
231
+
232
+ export default WebView;
@@ -0,0 +1,177 @@
1
+ import React, { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';
2
+ import {
3
+ Image,
4
+ View,
5
+ ImageSourcePropType,
6
+ } from 'react-native';
7
+ import invariant from 'invariant';
8
+
9
+ import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';
10
+ import BPCWebView from "./WebViewNativeComponent.macos";
11
+ import BPCWebViewModule from "./NativeBPCWebView";
12
+ import {
13
+ defaultOriginWhitelist,
14
+ defaultRenderError,
15
+ defaultRenderLoading,
16
+ useWebViewLogic,
17
+ } from './WebViewShared';
18
+ import {
19
+ MacOSWebViewProps,
20
+ NativeWebViewMacOS,
21
+ } from './WebViewTypes';
22
+
23
+ import styles from './WebView.styles';
24
+
25
+ const Commands = codegenNativeCommands({
26
+ supportedCommands: ['goBack', 'goForward', 'reload', 'stopLoading', 'injectJavaScript', 'requestFocus', 'postMessage', 'loadUrl'],
27
+ });
28
+
29
+ const { resolveAssetSource } = Image;
30
+
31
+ const useWarnIfChanges = <T extends unknown>(value: T, name: string) => {
32
+ const ref = useRef(value);
33
+ if (ref.current !== value) {
34
+ console.warn(`Changes to property ${name} do nothing after the initial render.`);
35
+ ref.current = value;
36
+ }
37
+ }
38
+
39
+ const WebViewComponent = forwardRef<{}, MacOSWebViewProps>(({
40
+ javaScriptEnabled = true,
41
+ cacheEnabled = true,
42
+ originWhitelist = defaultOriginWhitelist,
43
+ useSharedProcessPool= true,
44
+ injectedJavaScript,
45
+ injectedJavaScriptBeforeContentLoaded,
46
+ startInLoadingState,
47
+ onNavigationStateChange,
48
+ onLoadStart,
49
+ onError,
50
+ onLoad,
51
+ onLoadEnd,
52
+ onLoadProgress,
53
+ onHttpError: onHttpErrorProp,
54
+ onMessage: onMessageProp,
55
+ renderLoading,
56
+ renderError,
57
+ style,
58
+ containerStyle,
59
+ source,
60
+ nativeConfig,
61
+ allowsInlineMediaPlayback,
62
+ allowsAirPlayForMediaPlayback,
63
+ mediaPlaybackRequiresUserAction,
64
+ incognito,
65
+ onShouldStartLoadWithRequest: onShouldStartLoadWithRequestProp,
66
+ ...otherProps
67
+ }, ref) => {
68
+ const webViewRef = useRef<NativeWebViewMacOS | null>(null);
69
+
70
+ const onShouldStartLoadWithRequestCallback = useCallback((
71
+ shouldStart: boolean,
72
+ _url: string,
73
+ lockIdentifier = 0,
74
+ ) => {
75
+ BPCWebViewModule.shouldStartLoadWithLockIdentifier(!!shouldStart, lockIdentifier);
76
+ }, []);
77
+
78
+ const { onLoadingStart, onShouldStartLoadWithRequest, onMessage, viewState, setViewState, lastErrorEvent, onHttpError, onLoadingError, onLoadingFinish, onLoadingProgress, onContentProcessDidTerminate } = useWebViewLogic({
79
+ onNavigationStateChange,
80
+ onLoad,
81
+ onError,
82
+ onHttpErrorProp,
83
+ onLoadEnd,
84
+ onLoadProgress,
85
+ onLoadStart,
86
+ onMessageProp,
87
+ startInLoadingState,
88
+ originWhitelist,
89
+ onShouldStartLoadWithRequestProp,
90
+ onShouldStartLoadWithRequestCallback,
91
+ });
92
+
93
+ useImperativeHandle(ref, () => ({
94
+ goForward: () => Commands.goForward(webViewRef.current),
95
+ goBack: () => Commands.goBack(webViewRef.current),
96
+ reload: () => {
97
+ setViewState(
98
+ 'LOADING',
99
+ ); Commands.reload(webViewRef.current)
100
+ },
101
+ stopLoading: () => Commands.stopLoading(webViewRef.current),
102
+ postMessage: (data: string) => Commands.postMessage(webViewRef.current, data),
103
+ injectJavaScript: (data: string) => Commands.injectJavaScript(webViewRef.current, data),
104
+ requestFocus: () => Commands.requestFocus(webViewRef.current),
105
+ }), [setViewState, webViewRef]);
106
+
107
+
108
+ useWarnIfChanges(allowsInlineMediaPlayback, 'allowsInlineMediaPlayback');
109
+ useWarnIfChanges(allowsAirPlayForMediaPlayback, 'allowsAirPlayForMediaPlayback');
110
+ useWarnIfChanges(incognito, 'incognito');
111
+ useWarnIfChanges(mediaPlaybackRequiresUserAction, 'mediaPlaybackRequiresUserAction');
112
+
113
+ let otherView = null;
114
+ if (viewState === 'LOADING') {
115
+ otherView = (renderLoading || defaultRenderLoading)();
116
+ } else if (viewState === 'ERROR') {
117
+ invariant(lastErrorEvent != null, 'lastErrorEvent expected to be non-null');
118
+ otherView = (renderError || defaultRenderError)(
119
+ lastErrorEvent.domain,
120
+ lastErrorEvent.code,
121
+ lastErrorEvent.description,
122
+ );
123
+ } else if (viewState !== 'IDLE') {
124
+ console.error(`BPCWebView invalid state encountered: ${viewState}`);
125
+ }
126
+
127
+ const webViewStyles = [styles.container, styles.webView, style];
128
+ const webViewContainerStyle = [styles.container, containerStyle];
129
+
130
+ const NativeWebView
131
+ = (nativeConfig?.component as typeof NativeWebViewMacOS | undefined)
132
+ || BPCWebView;
133
+
134
+ const webView = (
135
+ <NativeWebView
136
+ key="webViewKey"
137
+ {...otherProps}
138
+ javaScriptEnabled={javaScriptEnabled}
139
+ cacheEnabled={cacheEnabled}
140
+ useSharedProcessPool={useSharedProcessPool}
141
+ messagingEnabled={typeof onMessageProp === 'function'}
142
+ onLoadingError={onLoadingError}
143
+ onLoadingFinish={onLoadingFinish}
144
+ onLoadingProgress={onLoadingProgress}
145
+ onLoadingStart={onLoadingStart}
146
+ onHttpError={onHttpError}
147
+ onMessage={onMessage}
148
+ onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
149
+ onContentProcessDidTerminate={onContentProcessDidTerminate}
150
+ injectedJavaScript={injectedJavaScript}
151
+ injectedJavaScriptBeforeContentLoaded={injectedJavaScriptBeforeContentLoaded}
152
+ allowsAirPlayForMediaPlayback={allowsAirPlayForMediaPlayback}
153
+ allowsInlineMediaPlayback={allowsInlineMediaPlayback}
154
+ incognito={incognito}
155
+ mediaPlaybackRequiresUserAction={mediaPlaybackRequiresUserAction}
156
+ ref={webViewRef}
157
+ // TODO: find a better way to type this.
158
+ source={resolveAssetSource(source as ImageSourcePropType)}
159
+ style={webViewStyles}
160
+ {...nativeConfig?.props}
161
+ />
162
+ );
163
+
164
+ return (
165
+ <View style={webViewContainerStyle}>
166
+ {webView}
167
+ {otherView}
168
+ </View>
169
+ );})
170
+
171
+ // no native implementation for macOS, depends only on permissions
172
+ const isFileUploadSupported: () => Promise<boolean>
173
+ = async () => true;
174
+
175
+ const WebView = Object.assign(WebViewComponent, {isFileUploadSupported});
176
+
177
+ export default WebView;
@@ -0,0 +1,44 @@
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;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { Text, View } from 'react-native';
3
+ import { IOSWebViewProps, AndroidWebViewProps, WindowsWebViewProps } from './WebViewTypes';
4
+
5
+ export type WebViewProps = IOSWebViewProps & AndroidWebViewProps & WindowsWebViewProps;
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;
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * Portions copyright for react-native-windows:
8
+ *
9
+ * Copyright (c) Microsoft Corporation. All rights reserved.
10
+ * Licensed under the MIT License.
11
+ */
12
+
13
+ import React, { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';
14
+ import {
15
+ View,
16
+ Image,
17
+ ImageSourcePropType,
18
+ NativeModules,
19
+ } from 'react-native';
20
+ import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';
21
+ import invariant from 'invariant';
22
+ import {RCTWebView, RCTWebView2} from "./WebViewNativeComponent.windows";
23
+ import { useWebViewLogic, defaultOriginWhitelist, defaultRenderError, defaultRenderLoading, } from './WebViewShared';
24
+ import {
25
+ NativeWebViewWindows,
26
+ WindowsWebViewProps,
27
+ } from './WebViewTypes';
28
+
29
+ import styles from './WebView.styles';
30
+
31
+ const Commands = codegenNativeCommands({
32
+ supportedCommands: ['goBack', 'goForward', 'reload', 'stopLoading', 'injectJavaScript', 'requestFocus', 'postMessage', 'loadUrl'],
33
+ });
34
+ const { resolveAssetSource } = Image;
35
+
36
+ const WebViewComponent = forwardRef<{}, WindowsWebViewProps>(({
37
+ cacheEnabled = true,
38
+ originWhitelist = defaultOriginWhitelist,
39
+ startInLoadingState,
40
+ onNavigationStateChange,
41
+ onLoadStart,
42
+ onError,
43
+ onLoad,
44
+ onLoadEnd,
45
+ onLoadProgress,
46
+ onHttpError: onHttpErrorProp,
47
+ onMessage: onMessageProp,
48
+ renderLoading,
49
+ renderError,
50
+ style,
51
+ containerStyle,
52
+ source,
53
+ nativeConfig,
54
+ onShouldStartLoadWithRequest: onShouldStartLoadWithRequestProp,
55
+ useWebView2,
56
+ ...otherProps
57
+ }, ref) => {
58
+ const webViewRef = useRef<NativeWebViewWindows | null>(null);
59
+
60
+ const RCTWebViewString = useWebView2 ? 'RCTWebView2' : 'RCTWebView';
61
+
62
+ const onShouldStartLoadWithRequestCallback = useCallback((shouldStart: boolean, url: string, lockIdentifier?: number) => {
63
+ if (lockIdentifier) {
64
+ if (RCTWebViewString === 'RCTWebView'){
65
+ NativeModules.RCTWebView.onShouldStartLoadWithRequestCallback(shouldStart, lockIdentifier);
66
+ }else{
67
+ NativeModules.RCTWebView2.onShouldStartLoadWithRequestCallback(shouldStart, lockIdentifier);
68
+ }
69
+ } else if (shouldStart) {
70
+ Commands.loadUrl(webViewRef, url);
71
+ }
72
+ }, [RCTWebViewString]);
73
+
74
+ const { onLoadingStart, onShouldStartLoadWithRequest, onMessage, viewState, setViewState, lastErrorEvent, onHttpError, onLoadingError, onLoadingFinish, onLoadingProgress } = useWebViewLogic({
75
+ onNavigationStateChange,
76
+ onLoad,
77
+ onError,
78
+ onHttpErrorProp,
79
+ onLoadEnd,
80
+ onLoadProgress,
81
+ onLoadStart,
82
+ onMessageProp,
83
+ startInLoadingState,
84
+ originWhitelist,
85
+ onShouldStartLoadWithRequestProp,
86
+ onShouldStartLoadWithRequestCallback,
87
+ })
88
+
89
+ useImperativeHandle(ref, () => ({
90
+ goForward: () => Commands.goForward(webViewRef.current),
91
+ goBack: () => Commands.goBack(webViewRef.current),
92
+ reload: () => {
93
+ setViewState(
94
+ 'LOADING',
95
+ ); Commands.reload(webViewRef.current)
96
+ },
97
+ stopLoading: () => Commands.stopLoading(webViewRef.current),
98
+ postMessage: (data: string) => Commands.postMessage(webViewRef.current, data),
99
+ injectJavaScript: (data: string) => Commands.injectJavaScript(webViewRef.current, data),
100
+ requestFocus: () => Commands.requestFocus(webViewRef.current),
101
+ }), [setViewState, webViewRef]);
102
+
103
+ let otherView = null;
104
+ if (viewState === 'LOADING') {
105
+ otherView = (renderLoading || defaultRenderLoading)();
106
+ } else if (viewState === 'ERROR') {
107
+ invariant(lastErrorEvent != null, 'lastErrorEvent expected to be non-null');
108
+ otherView = (renderError || defaultRenderError)(
109
+ lastErrorEvent.domain,
110
+ lastErrorEvent.code,
111
+ lastErrorEvent.description,
112
+ );
113
+ } else if (viewState !== 'IDLE') {
114
+ console.error(`BPCWebView invalid state encountered: ${viewState}`);
115
+ }
116
+
117
+ const webViewStyles = [styles.container, styles.webView, style];
118
+ const webViewContainerStyle = [styles.container, containerStyle];
119
+
120
+ const NativeWebView
121
+ = useWebView2? RCTWebView2 : RCTWebView;
122
+
123
+ const webView = <NativeWebView
124
+ key="webViewKey"
125
+ {...otherProps}
126
+ messagingEnabled={typeof onMessageProp === 'function'}
127
+ onLoadingError={onLoadingError}
128
+ onLoadingFinish={onLoadingFinish}
129
+ onLoadingProgress={onLoadingProgress}
130
+ onLoadingStart={onLoadingStart}
131
+ onHttpError={onHttpError}
132
+ onMessage={onMessage}
133
+ onShouldStartLoadWithRequest={onShouldStartLoadWithRequest}
134
+ ref={webViewRef}
135
+ // TODO: find a better way to type this.
136
+ source={resolveAssetSource(source as ImageSourcePropType)}
137
+ style={webViewStyles}
138
+ cacheEnabled={cacheEnabled}
139
+ {...nativeConfig?.props}
140
+ />
141
+
142
+ return (
143
+ <View style={webViewContainerStyle}>
144
+ {webView}
145
+ {otherView}
146
+ </View>
147
+ );
148
+ });
149
+
150
+ // native implementation should return "true" only for Android 5+
151
+ const isFileUploadSupported: () => Promise<boolean>
152
+ = async () => false;
153
+
154
+ const WebView = Object.assign(WebViewComponent, {isFileUploadSupported});
155
+
156
+ export default WebView;
@@ -0,0 +1,8 @@
1
+ import { requireNativeComponent } from "react-native";
2
+ import type { NativeWebViewMacOS } from "./WebViewTypes";
3
+
4
+ const BPCWebView: typeof NativeWebViewMacOS = requireNativeComponent(
5
+ 'BPCWebView',
6
+ );
7
+
8
+ export default BPCWebView;
@@ -0,0 +1,10 @@
1
+ import { requireNativeComponent } from "react-native";
2
+ import type { NativeWebViewWindows } from "./WebViewTypes";
3
+
4
+ export const RCTWebView: typeof NativeWebViewWindows = requireNativeComponent(
5
+ 'RCTWebView',
6
+ );
7
+
8
+ export const RCTWebView2: typeof NativeWebViewWindows = requireNativeComponent(
9
+ 'RCTWebView2',
10
+ );