@hylid/call 3.1.0 → 3.2.0-alpha.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.
- package/lib/mpWebBridge.d.ts +3 -0
- package/lib/mpWebBridge.js +75 -0
- package/lib/mpWebCall.js +0 -1
- package/lib/webviewBridge.js +0 -2
- package/package.json +3 -3
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
var __rest = this && this.__rest || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
4
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
5
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
6
|
+
}
|
|
7
|
+
return t;
|
|
8
|
+
};
|
|
9
|
+
/** 加载 appx 脚本 */
|
|
10
|
+
var loadAppxBridge = function loadAppxBridge(cb) {
|
|
11
|
+
var _a;
|
|
12
|
+
try {
|
|
13
|
+
// umd 包用的 IFF 模式,会立即向 window.my 上注入 jsapi,所以不能使用 window.my 判断是否已经加载了 appx 脚本
|
|
14
|
+
// umd 版本和 modules 版本不能混用
|
|
15
|
+
if ((_a = window.my) === null || _a === void 0 ? void 0 : _a.__hy_mounted__) {
|
|
16
|
+
cb && cb("ready" /* BridgeReady.READY */);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
var hyMy_1 = window.my || {};
|
|
20
|
+
var script_1 = document.createElement('script');
|
|
21
|
+
script_1.src = 'https://appx/web-view.min.js';
|
|
22
|
+
script_1.onload = function onload() {
|
|
23
|
+
var readyState = script_1['readyState'];
|
|
24
|
+
if (typeof readyState === 'undefined' || /^(loaded|complete)$/.test(readyState)) {
|
|
25
|
+
script_1.onload = null;
|
|
26
|
+
// appx 脚本覆盖了 window 的 my 属性,这里再把 hylid-bridge 的 API 挂上去
|
|
27
|
+
var postMessage_1 = hyMy_1.postMessage,
|
|
28
|
+
api = __rest(hyMy_1, ["postMessage"]);
|
|
29
|
+
Object.assign(window.my, api, {
|
|
30
|
+
__hy_mounted__: true
|
|
31
|
+
});
|
|
32
|
+
cb && cb("loaded" /* BridgeReady.LOADED */);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
var head = document.getElementsByTagName('head')[0] || document.body;
|
|
36
|
+
head.appendChild(script_1);
|
|
37
|
+
} catch (e) {
|
|
38
|
+
cb && cb(null);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
var isListening = false;
|
|
42
|
+
var WAITING_QUEUE = [];
|
|
43
|
+
var MESSAGE_HANDLER = [];
|
|
44
|
+
export function mpWebOnMessage(cb) {
|
|
45
|
+
MESSAGE_HANDLER.push(cb);
|
|
46
|
+
return function () {
|
|
47
|
+
var index = MESSAGE_HANDLER.indexOf(cb);
|
|
48
|
+
if (index > -1) {
|
|
49
|
+
MESSAGE_HANDLER.splice(index, 1);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export function mpWebPostMessage(message) {
|
|
54
|
+
return loadAppxBridge(function (bridgeReady) {
|
|
55
|
+
if (bridgeReady) {
|
|
56
|
+
if (!isListening) {
|
|
57
|
+
var messageHandler_1 = window.my.onMessage;
|
|
58
|
+
window.my.onMessage = function (message) {
|
|
59
|
+
MESSAGE_HANDLER.forEach(function (fn) {
|
|
60
|
+
return fn(message);
|
|
61
|
+
});
|
|
62
|
+
if (messageHandler_1) messageHandler_1(message);
|
|
63
|
+
};
|
|
64
|
+
isListening = true;
|
|
65
|
+
}
|
|
66
|
+
if (WAITING_QUEUE.length) {
|
|
67
|
+
WAITING_QUEUE.forEach(window.my.postMessage);
|
|
68
|
+
WAITING_QUEUE = [];
|
|
69
|
+
}
|
|
70
|
+
window.my.postMessage(message);
|
|
71
|
+
} else {
|
|
72
|
+
WAITING_QUEUE.push(message);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
package/lib/mpWebCall.js
CHANGED
package/lib/webviewBridge.js
CHANGED
|
@@ -153,7 +153,6 @@ var WebViewBridge = /** @class */function () {
|
|
|
153
153
|
this.webview.postMessage(notAllowedMessage);
|
|
154
154
|
return [2 /*return*/];
|
|
155
155
|
}
|
|
156
|
-
|
|
157
156
|
if (type === 'callback') {
|
|
158
157
|
// @ts-ignore
|
|
159
158
|
my[api](function (result) {
|
|
@@ -175,7 +174,6 @@ var WebViewBridge = /** @class */function () {
|
|
|
175
174
|
});
|
|
176
175
|
});
|
|
177
176
|
};
|
|
178
|
-
|
|
179
177
|
this.handleApi = function (data) {
|
|
180
178
|
var api = data.api,
|
|
181
179
|
_options = data.options,
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hylid/call",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0-alpha.0",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"files": [
|
|
6
6
|
"lib"
|
|
7
7
|
],
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@hylid/env": "^3.
|
|
10
|
-
"@hylid/types": "^3.
|
|
9
|
+
"@hylid/env": "^3.2.0-alpha.0",
|
|
10
|
+
"@hylid/types": "^3.2.0-alpha.0"
|
|
11
11
|
},
|
|
12
12
|
"publishConfig": {
|
|
13
13
|
"access": "public"
|