@onekeyfe/onekey-cross-webview 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/DesktopWebView.js
CHANGED
|
@@ -9,7 +9,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
9
9
|
}
|
|
10
10
|
return t;
|
|
11
11
|
};
|
|
12
|
-
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
12
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-explicit-any */
|
|
13
13
|
import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState, } from 'react';
|
|
14
14
|
import { consts } from '@onekeyfe/cross-inpage-provider-core';
|
|
15
15
|
import { JsBridgeDesktopHost } from './JsBridgeDesktopHost';
|
|
@@ -37,11 +37,14 @@ function usePreloadJsUrl() {
|
|
|
37
37
|
// Used for webview type referencing
|
|
38
38
|
const WEBVIEW_TAG = 'webview';
|
|
39
39
|
const DesktopWebView = forwardRef((_a, ref) => {
|
|
40
|
-
var { src, receiveHandler, onSrcChange } = _a, props = __rest(_a, ["src", "receiveHandler", "onSrcChange"]);
|
|
40
|
+
var { src, style, receiveHandler, onSrcChange } = _a, props = __rest(_a, ["src", "style", "receiveHandler", "onSrcChange"]);
|
|
41
41
|
const [isWebviewReady, setIsWebviewReady] = useState(false);
|
|
42
42
|
const webviewRef = useRef(null);
|
|
43
43
|
const isIpcReady = useIsIpcReady();
|
|
44
44
|
const [devToolsAtLeft, setDevToolsAtLeft] = useState(false);
|
|
45
|
+
if (props.preload) {
|
|
46
|
+
console.warn('DesktopWebView: custom preload url may disable built-in injected function');
|
|
47
|
+
}
|
|
45
48
|
useEffect(() => () => {
|
|
46
49
|
var _a;
|
|
47
50
|
// not working, ref is null after unmount
|
|
@@ -108,7 +111,7 @@ const DesktopWebView = forwardRef((_a, ref) => {
|
|
|
108
111
|
return () => {
|
|
109
112
|
webview.removeEventListener('ipc-message', handleMessage);
|
|
110
113
|
};
|
|
111
|
-
}, [jsBridge, isIpcReady, isWebviewReady]);
|
|
114
|
+
}, [jsBridge, isIpcReady, isWebviewReady, src]);
|
|
112
115
|
const preloadJsUrl = usePreloadJsUrl();
|
|
113
116
|
if (!preloadJsUrl) {
|
|
114
117
|
return null;
|
|
@@ -129,11 +132,11 @@ const DesktopWebView = forwardRef((_a, ref) => {
|
|
|
129
132
|
setDevToolsAtLeft(!devToolsAtLeft);
|
|
130
133
|
(_a = webviewRef.current) === null || _a === void 0 ? void 0 : _a.openDevTools();
|
|
131
134
|
} }, "DevTools")),
|
|
132
|
-
isBrowser && (React.createElement("webview", Object.assign({
|
|
135
|
+
isBrowser && (React.createElement("webview", Object.assign({ ref: initWebviewByRef, preload: preloadJsUrl, src: src, style: Object.assign({ 'width': '100%', 'height': '100%' }, style),
|
|
133
136
|
// @ts-ignore
|
|
134
137
|
allowpopups: "true",
|
|
135
138
|
// @ts-ignore
|
|
136
|
-
nodeintegration: "true", nodeintegrationinsubframes: "true", webpreferences: "contextIsolation=0, contextisolation=0, nativeWindowOpen=1" })))));
|
|
139
|
+
nodeintegration: "true", nodeintegrationinsubframes: "true", webpreferences: "contextIsolation=0, contextisolation=0, nativeWindowOpen=1" }, props)))));
|
|
137
140
|
});
|
|
138
141
|
DesktopWebView.displayName = 'DesktopWebView';
|
|
139
142
|
export { DesktopWebView };
|
package/dist/NativeWebView.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { ViewStyle } from 'react-native';
|
|
3
|
+
import { WebViewProps } from 'react-native-webview';
|
|
2
4
|
import { InpageProviderWebViewProps } from '@onekeyfe/cross-inpage-provider-types';
|
|
3
|
-
declare
|
|
5
|
+
export declare type NativeWebViewProps = WebViewProps & InpageProviderWebViewProps & {
|
|
6
|
+
style?: ViewStyle;
|
|
7
|
+
};
|
|
8
|
+
declare const NativeWebView: React.ForwardRefExoticComponent<Pick<import("react-native-webview/lib/WebViewTypes").IOSWebViewProps & import("react-native-webview/lib/WebViewTypes").AndroidWebViewProps & InpageProviderWebViewProps & {
|
|
9
|
+
style?: ViewStyle | undefined;
|
|
10
|
+
}, "source" | "style" | "src" | "receiveHandler" | "onSrcChange" | "children" | "onLoad" | "onError" | "onLoadStart" | "onTouchCancel" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchStart" | "onScroll" | "onLoadProgress" | "injectedJavaScriptBeforeContentLoaded" | "onMessage" | "incognito" | "bounces" | "decelerationRate" | "scrollEnabled" | "pagingEnabled" | "automaticallyAdjustContentInsets" | "automaticallyAdjustsScrollIndicatorInsets" | "contentInsetAdjustmentBehavior" | "contentInset" | "contentMode" | "dataDetectorTypes" | "allowsInlineMediaPlayback" | "hideKeyboardAccessoryView" | "allowsBackForwardNavigationGestures" | "useSharedProcessPool" | "userAgent" | "allowsLinkPreview" | "sharedCookiesEnabled" | "ignoreSilentHardwareSwitch" | "autoManageStatusBarEnabled" | "directionalLockEnabled" | "keyboardDisplayRequiresUserAction" | "allowingReadAccessToURL" | "allowFileAccessFromFileURLs" | "allowUniversalAccessFromFileURLs" | "onContentProcessDidTerminate" | "injectedJavaScriptForMainFrameOnly" | "injectedJavaScriptBeforeContentLoadedForMainFrameOnly" | "pullToRefreshEnabled" | "onFileDownload" | "limitsNavigationsToAppBoundDomains" | "textInteractionEnabled" | "mediaCapturePermissionGrantType" | "enableApplePay" | "menuItems" | "onCustomMenuSelection" | "javaScriptEnabled" | "javaScriptCanOpenWindowsAutomatically" | "containerStyle" | "renderError" | "renderLoading" | "onLoadEnd" | "onHttpError" | "onNavigationStateChange" | "startInLoadingState" | "injectedJavaScript" | "showsHorizontalScrollIndicator" | "showsVerticalScrollIndicator" | "mediaPlaybackRequiresUserAction" | "originWhitelist" | "onShouldStartLoadWithRequest" | "nativeConfig" | "cacheEnabled" | "applicationNameForUserAgent" | "basicAuthCredential" | "hitSlop" | "onLayout" | "pointerEvents" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "needsOffscreenAlphaCompositing" | "renderToHardwareTextureAndroid" | "focusable" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxProperties" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityHint" | "accessibilityValue" | "onAccessibilityAction" | "accessibilityLiveRegion" | "importantForAccessibility" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "onContentSizeChange" | "onRenderProcessGone" | "cacheMode" | "overScrollMode" | "scalesPageToFit" | "geolocationEnabled" | "allowFileAccess" | "saveFormDataDisabled" | "setSupportMultipleWindows" | "urlPrefixesForDefaultIntent" | "androidHardwareAccelerationDisabled" | "androidLayerType" | "thirdPartyCookiesEnabled" | "domStorageEnabled" | "textZoom" | "mixedContentMode" | "allowsFullscreenVideo" | "forceDarkOn" | "setBuiltInZoomControls" | "setDisplayZoomControls" | "nestedScrollEnabled" | "minimumFontSize"> & React.RefAttributes<unknown>>;
|
|
4
11
|
export { NativeWebView };
|
package/dist/NativeWebView.js
CHANGED
|
@@ -15,22 +15,21 @@ import { WebView } from 'react-native-webview';
|
|
|
15
15
|
import { appDebugLogger } from '@onekeyfe/cross-inpage-provider-core';
|
|
16
16
|
import { JsBridgeNativeHost } from './JsBridgeNativeHost';
|
|
17
17
|
const NativeWebView = forwardRef((_a, ref) => {
|
|
18
|
-
var { src, receiveHandler, onSrcChange, onLoadProgress, injectedJavaScriptBeforeContentLoaded } = _a, props = __rest(_a, ["src", "receiveHandler", "onSrcChange", "onLoadProgress", "injectedJavaScriptBeforeContentLoaded"]);
|
|
18
|
+
var { style, src, receiveHandler, onSrcChange, onLoadProgress, injectedJavaScriptBeforeContentLoaded, onMessage } = _a, props = __rest(_a, ["style", "src", "receiveHandler", "onSrcChange", "onLoadProgress", "injectedJavaScriptBeforeContentLoaded", "onMessage"]);
|
|
19
19
|
const webviewRef = useRef(null);
|
|
20
20
|
const jsBridge = useMemo(() => new JsBridgeNativeHost({
|
|
21
21
|
webviewRef,
|
|
22
22
|
receiveHandler,
|
|
23
23
|
}), [receiveHandler]);
|
|
24
24
|
const webviewOnMessage = useCallback((event) => {
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
const { data } = event0.nativeEvent;
|
|
28
|
-
const uri = new URL(event0.nativeEvent.url);
|
|
25
|
+
const { data } = event.nativeEvent;
|
|
26
|
+
const uri = new URL(event.nativeEvent.url);
|
|
29
27
|
const origin = (uri === null || uri === void 0 ? void 0 : uri.origin) || '';
|
|
30
28
|
appDebugLogger.webview('onMessage', origin, data);
|
|
31
29
|
// - receive
|
|
32
30
|
jsBridge.receive(data, { origin });
|
|
33
|
-
|
|
31
|
+
onMessage === null || onMessage === void 0 ? void 0 : onMessage(event);
|
|
32
|
+
}, [jsBridge, onMessage]);
|
|
34
33
|
useImperativeHandle(ref, () => {
|
|
35
34
|
const wrapper = {
|
|
36
35
|
innerRef: webviewRef.current,
|
|
@@ -53,11 +52,13 @@ const NativeWebView = forwardRef((_a, ref) => {
|
|
|
53
52
|
useEffect(() => {
|
|
54
53
|
// console.log('NativeWebView injectedJavaScript \r\n', injectedNative);
|
|
55
54
|
}, []);
|
|
56
|
-
return (React.createElement(WebView
|
|
55
|
+
return (React.createElement(WebView
|
|
56
|
+
// @ts-ignore
|
|
57
|
+
, Object.assign({
|
|
57
58
|
// @ts-ignore
|
|
58
|
-
style: { backgroundColor: 'transparent' }, onLoadProgress: onLoadProgress, ref: webviewRef,
|
|
59
|
+
style: [{ backgroundColor: 'transparent' }, style], onLoadProgress: onLoadProgress, ref: webviewRef,
|
|
59
60
|
// injectedJavaScript={injectedNative}
|
|
60
|
-
injectedJavaScriptBeforeContentLoaded: injectedJavaScriptBeforeContentLoaded || '', source: { uri: src }, onMessage: webviewOnMessage })));
|
|
61
|
+
injectedJavaScriptBeforeContentLoaded: injectedJavaScriptBeforeContentLoaded || '', source: { uri: src }, onMessage: webviewOnMessage }, props)));
|
|
61
62
|
});
|
|
62
63
|
NativeWebView.displayName = 'NativeWebView';
|
|
63
64
|
export { NativeWebView };
|
|
@@ -31,7 +31,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
31
31
|
};
|
|
32
32
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
33
|
exports.DesktopWebView = void 0;
|
|
34
|
-
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
|
34
|
+
/* eslint-disable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-explicit-any */
|
|
35
35
|
const react_1 = __importStar(require("react"));
|
|
36
36
|
const cross_inpage_provider_core_1 = require("@onekeyfe/cross-inpage-provider-core");
|
|
37
37
|
const JsBridgeDesktopHost_1 = require("./JsBridgeDesktopHost");
|
|
@@ -59,11 +59,14 @@ function usePreloadJsUrl() {
|
|
|
59
59
|
// Used for webview type referencing
|
|
60
60
|
const WEBVIEW_TAG = 'webview';
|
|
61
61
|
const DesktopWebView = (0, react_1.forwardRef)((_a, ref) => {
|
|
62
|
-
var { src, receiveHandler, onSrcChange } = _a, props = __rest(_a, ["src", "receiveHandler", "onSrcChange"]);
|
|
62
|
+
var { src, style, receiveHandler, onSrcChange } = _a, props = __rest(_a, ["src", "style", "receiveHandler", "onSrcChange"]);
|
|
63
63
|
const [isWebviewReady, setIsWebviewReady] = (0, react_1.useState)(false);
|
|
64
64
|
const webviewRef = (0, react_1.useRef)(null);
|
|
65
65
|
const isIpcReady = (0, useIsIpcReady_1.useIsIpcReady)();
|
|
66
66
|
const [devToolsAtLeft, setDevToolsAtLeft] = (0, react_1.useState)(false);
|
|
67
|
+
if (props.preload) {
|
|
68
|
+
console.warn('DesktopWebView: custom preload url may disable built-in injected function');
|
|
69
|
+
}
|
|
67
70
|
(0, react_1.useEffect)(() => () => {
|
|
68
71
|
var _a;
|
|
69
72
|
// not working, ref is null after unmount
|
|
@@ -130,7 +133,7 @@ const DesktopWebView = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
130
133
|
return () => {
|
|
131
134
|
webview.removeEventListener('ipc-message', handleMessage);
|
|
132
135
|
};
|
|
133
|
-
}, [jsBridge, isIpcReady, isWebviewReady]);
|
|
136
|
+
}, [jsBridge, isIpcReady, isWebviewReady, src]);
|
|
134
137
|
const preloadJsUrl = usePreloadJsUrl();
|
|
135
138
|
if (!preloadJsUrl) {
|
|
136
139
|
return null;
|
|
@@ -151,11 +154,11 @@ const DesktopWebView = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
151
154
|
setDevToolsAtLeft(!devToolsAtLeft);
|
|
152
155
|
(_a = webviewRef.current) === null || _a === void 0 ? void 0 : _a.openDevTools();
|
|
153
156
|
} }, "DevTools")),
|
|
154
|
-
isBrowser && (react_1.default.createElement("webview", Object.assign({
|
|
157
|
+
isBrowser && (react_1.default.createElement("webview", Object.assign({ ref: initWebviewByRef, preload: preloadJsUrl, src: src, style: Object.assign({ 'width': '100%', 'height': '100%' }, style),
|
|
155
158
|
// @ts-ignore
|
|
156
159
|
allowpopups: "true",
|
|
157
160
|
// @ts-ignore
|
|
158
|
-
nodeintegration: "true", nodeintegrationinsubframes: "true", webpreferences: "contextIsolation=0, contextisolation=0, nativeWindowOpen=1" })))));
|
|
161
|
+
nodeintegration: "true", nodeintegrationinsubframes: "true", webpreferences: "contextIsolation=0, contextisolation=0, nativeWindowOpen=1" }, props)))));
|
|
159
162
|
});
|
|
160
163
|
exports.DesktopWebView = DesktopWebView;
|
|
161
164
|
DesktopWebView.displayName = 'DesktopWebView';
|
|
@@ -37,22 +37,21 @@ const react_native_webview_1 = require("react-native-webview");
|
|
|
37
37
|
const cross_inpage_provider_core_1 = require("@onekeyfe/cross-inpage-provider-core");
|
|
38
38
|
const JsBridgeNativeHost_1 = require("./JsBridgeNativeHost");
|
|
39
39
|
const NativeWebView = (0, react_1.forwardRef)((_a, ref) => {
|
|
40
|
-
var { src, receiveHandler, onSrcChange, onLoadProgress, injectedJavaScriptBeforeContentLoaded } = _a, props = __rest(_a, ["src", "receiveHandler", "onSrcChange", "onLoadProgress", "injectedJavaScriptBeforeContentLoaded"]);
|
|
40
|
+
var { style, src, receiveHandler, onSrcChange, onLoadProgress, injectedJavaScriptBeforeContentLoaded, onMessage } = _a, props = __rest(_a, ["style", "src", "receiveHandler", "onSrcChange", "onLoadProgress", "injectedJavaScriptBeforeContentLoaded", "onMessage"]);
|
|
41
41
|
const webviewRef = (0, react_1.useRef)(null);
|
|
42
42
|
const jsBridge = (0, react_1.useMemo)(() => new JsBridgeNativeHost_1.JsBridgeNativeHost({
|
|
43
43
|
webviewRef,
|
|
44
44
|
receiveHandler,
|
|
45
45
|
}), [receiveHandler]);
|
|
46
46
|
const webviewOnMessage = (0, react_1.useCallback)((event) => {
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
const { data } = event0.nativeEvent;
|
|
50
|
-
const uri = new URL(event0.nativeEvent.url);
|
|
47
|
+
const { data } = event.nativeEvent;
|
|
48
|
+
const uri = new URL(event.nativeEvent.url);
|
|
51
49
|
const origin = (uri === null || uri === void 0 ? void 0 : uri.origin) || '';
|
|
52
50
|
cross_inpage_provider_core_1.appDebugLogger.webview('onMessage', origin, data);
|
|
53
51
|
// - receive
|
|
54
52
|
jsBridge.receive(data, { origin });
|
|
55
|
-
|
|
53
|
+
onMessage === null || onMessage === void 0 ? void 0 : onMessage(event);
|
|
54
|
+
}, [jsBridge, onMessage]);
|
|
56
55
|
(0, react_1.useImperativeHandle)(ref, () => {
|
|
57
56
|
const wrapper = {
|
|
58
57
|
innerRef: webviewRef.current,
|
|
@@ -75,11 +74,13 @@ const NativeWebView = (0, react_1.forwardRef)((_a, ref) => {
|
|
|
75
74
|
(0, react_1.useEffect)(() => {
|
|
76
75
|
// console.log('NativeWebView injectedJavaScript \r\n', injectedNative);
|
|
77
76
|
}, []);
|
|
78
|
-
return (react_1.default.createElement(react_native_webview_1.WebView
|
|
77
|
+
return (react_1.default.createElement(react_native_webview_1.WebView
|
|
78
|
+
// @ts-ignore
|
|
79
|
+
, Object.assign({
|
|
79
80
|
// @ts-ignore
|
|
80
|
-
style: { backgroundColor: 'transparent' }, onLoadProgress: onLoadProgress, ref: webviewRef,
|
|
81
|
+
style: [{ backgroundColor: 'transparent' }, style], onLoadProgress: onLoadProgress, ref: webviewRef,
|
|
81
82
|
// injectedJavaScript={injectedNative}
|
|
82
|
-
injectedJavaScriptBeforeContentLoaded: injectedJavaScriptBeforeContentLoaded || '', source: { uri: src }, onMessage: webviewOnMessage })));
|
|
83
|
+
injectedJavaScriptBeforeContentLoaded: injectedJavaScriptBeforeContentLoaded || '', source: { uri: src }, onMessage: webviewOnMessage }, props)));
|
|
83
84
|
});
|
|
84
85
|
exports.NativeWebView = NativeWebView;
|
|
85
86
|
NativeWebView.displayName = 'NativeWebView';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onekeyfe/onekey-cross-webview",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"cross-inpage-provider"
|
|
6
6
|
],
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
"electron": "^17.1.0"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@onekeyfe/cross-inpage-provider-core": "^0.0.
|
|
38
|
-
"@onekeyfe/cross-inpage-provider-types": "^0.0.
|
|
37
|
+
"@onekeyfe/cross-inpage-provider-core": "^0.0.8",
|
|
38
|
+
"@onekeyfe/cross-inpage-provider-types": "^0.0.8",
|
|
39
39
|
"react-native-webview": "^11.17.2"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "ceff8e9a3a3600e37b98778fd0736d8cee0f8d10"
|
|
42
42
|
}
|