@docoi/mys-sdk 1.0.3 → 1.2.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/dist/index.mjs CHANGED
@@ -1,397 +1,1360 @@
1
- import T from "@docoi/jsbridge-sdk";
2
- import { default as Ie } from "@docoi/jsbridge-sdk";
3
- const v = 0, S = -1, Pe = 1001, A = 1002, be = 2002, qe = 3002, ve = 4002, Se = 9002;
4
- function N(e) {
5
- return {
6
- code: v,
7
- msg: "ok",
8
- result: e
9
- };
1
+ import We from "@docoi/jsbridge-sdk";
2
+ const Pe = 0, re = -1, Ge = 1001, Ve = 1002, Zt = 2002, er = 3002, nr = 4002, z = 5001, Je = 5002, Ie = 9002, tr = 9101, rr = 9102;
3
+ function f(e) {
4
+ return typeof e == "string";
10
5
  }
11
- function w(e) {
12
- if (typeof e == "string") return e;
6
+ function Ee(e) {
7
+ return typeof e == "number";
8
+ }
9
+ function P(e) {
10
+ return typeof e == "object" && e !== null;
11
+ }
12
+ function O(e) {
13
+ if (!P(e) || Object.prototype.toString.call(e) !== "[object Object]") return !1;
14
+ const n = Object.getPrototypeOf(e);
15
+ return n === null || Object.getPrototypeOf(n) === null;
16
+ }
17
+ function Ke(e) {
18
+ return f(e) && /^\d+(\.\d+){1,3}$/.test(e);
19
+ }
20
+ const ze = /^data:image\/[\w.+-]+;base64,[A-Za-z0-9+/]/i, Ye = /^[A-Za-z0-9+/]+={0,2}$/;
21
+ function Xe(e) {
22
+ return f(e) && (ze.test(e) || Ye.test(e));
23
+ }
24
+ function ke(e, n = null) {
25
+ try {
26
+ return JSON.parse(e);
27
+ } catch (t) {
28
+ return n;
29
+ }
30
+ }
31
+ function ae(e) {
32
+ try {
33
+ return decodeURIComponent(e);
34
+ } catch (n) {
35
+ return e;
36
+ }
37
+ }
38
+ function m(e) {
39
+ if (f(e)) return e;
13
40
  if (e instanceof Error) return e.message || "system error";
14
- if (h(e)) {
15
- if (typeof e.errMsg == "string") return e.errMsg;
16
- if (typeof e.msg == "string") return e.msg;
17
- if (typeof e.message == "string") return e.message;
41
+ if (P(e)) {
42
+ if (f(e.errMsg)) return e.errMsg;
43
+ if (f(e.msg)) return e.msg;
44
+ if (f(e.message)) return e.message;
18
45
  }
19
46
  return "system error";
20
47
  }
21
- function O(e, t) {
22
- return {
23
- code: S,
24
- msg: `${e}:fail ${w(t)}`,
25
- result: h(t) && "result" in t ? t.result : t
26
- };
48
+ class T extends Error {
49
+ }
50
+ function Qe(e, n) {
51
+ if (typeof e == "bigint") throw new T(`${n} 是 BigInt,不能传给 Native`);
52
+ if (e instanceof Map || e instanceof Set) throw new T(`${n} 是 ${e.constructor.name},不能传给 Native`);
53
+ if (typeof ArrayBuffer != "undefined" && (e instanceof ArrayBuffer || ArrayBuffer.isView(e)))
54
+ throw new T(`${n} 是二进制数据,不能传给 Native`);
55
+ if (typeof Blob != "undefined" && e instanceof Blob) throw new T(`${n} 是 Blob,不能传给 Native`);
56
+ }
57
+ function F(e) {
58
+ const n = JSON.stringify(e, (t, r) => (t && Qe(r, t), r));
59
+ return n === void 0 ? void 0 : JSON.parse(n);
60
+ }
61
+ const I = {
62
+ /** iOS 调用通道 */
63
+ iosInvoke: "jsbridge",
64
+ /** iOS 上 H5 异步回调的回传通道 */
65
+ iosCallback: "jsbridgeCallback",
66
+ /** Native → H5 的三个全局入口 */
67
+ globalCallback: "JSBridgeCallback",
68
+ globalEvent: "JSBridgeEvent",
69
+ globalInvoke: "JSBridgeInvoke",
70
+ /** 回调 ID 前缀,1.0.0 为 cb_ */
71
+ callbackIdPrefix: "cb"
72
+ }, Ze = "[jsbridge]";
73
+ class W extends Error {
74
+ constructor(n, t) {
75
+ super(t), this.kind = n;
76
+ }
77
+ }
78
+ const Y = { error: 1, warn: 2, info: 3, debug: 4 };
79
+ let Ce = !1, Se = "info", Ae = !0;
80
+ function g(e, ...n) {
81
+ !Ce || !Ae || Y[e] > Y[Se] || console[e](`${Ze} [${e.toUpperCase()}]`, ...n);
82
+ }
83
+ let en = 1;
84
+ const G = /* @__PURE__ */ new Map(), X = /* @__PURE__ */ new Map(), M = /* @__PURE__ */ new Map(), le = /* @__PURE__ */ new Map();
85
+ function qe(e) {
86
+ var t, r;
87
+ const n = (r = (t = window.webkit) == null ? void 0 : t.messageHandlers) == null ? void 0 : r[e];
88
+ return typeof (n == null ? void 0 : n.postMessage) == "function" ? n : void 0;
89
+ }
90
+ function _e() {
91
+ return window.JSBridgeNative;
92
+ }
93
+ function nn(e) {
94
+ const n = qe(I.iosInvoke);
95
+ if (n) {
96
+ n.postMessage(e);
97
+ return;
98
+ }
99
+ const t = _e();
100
+ if (t && typeof t.call == "function") {
101
+ t.call(JSON.stringify(e));
102
+ return;
103
+ }
104
+ throw new W("communication", "当前环境不支持调用原生方法");
105
+ }
106
+ function tn() {
107
+ return `${I.callbackIdPrefix}_${Date.now()}_${en++}`;
27
108
  }
28
- const u = T.init({
29
- debug: !1,
30
- timeout: 9e4
31
- }), H = (e, t) => u.setDebug(e, t);
32
- function _(e, t) {
33
- return u.register(e, async (r) => {
109
+ function rn(e) {
110
+ return P(e) && !!e.error;
111
+ }
112
+ function fe(e, n) {
113
+ return new Promise((t, r) => {
114
+ const i = tn();
115
+ G.set(i, (o) => {
116
+ if (rn(o)) {
117
+ r(new W("native", m(o.error)));
118
+ return;
119
+ }
120
+ t(o);
121
+ }), g("debug", `调用原生方法: ${e}`, n);
34
122
  try {
35
- const o = await t(r);
36
- return N(o);
123
+ nn({ method: e, params: n, callbackId: i });
37
124
  } catch (o) {
38
- return O(e, o);
125
+ G.delete(i), r(new W("communication", m(o)));
39
126
  }
40
127
  });
41
128
  }
42
- function i(e, t, r) {
43
- var s, f;
44
- const o = {
45
- errMsg: `${e}:fail parameter error: ${t}`,
46
- errCode: A
47
- };
48
- return (s = r == null ? void 0 : r.fail) == null || s.call(r, o), (f = r == null ? void 0 : r.complete) == null || f.call(r, o), Promise.reject(o);
129
+ function on(e, n) {
130
+ const t = le.get(e), r = t ? t.then(n, n) : n();
131
+ return le.set(e, r.then(ge, ge)), r;
49
132
  }
50
- function D(e) {
51
- return Object.fromEntries(
52
- Object.entries(e).filter(([, r]) => typeof r != "function")
53
- );
133
+ function ge() {
54
134
  }
55
- function h(e) {
56
- return typeof e == "object" && e !== null && !Array.isArray(e);
135
+ function un(e, n, t) {
136
+ return Q(), (t == null ? void 0 : t.queue) === "serial" ? on(e, () => fe(e, n)) : fe(e, n);
57
137
  }
58
- function M(e) {
59
- return h(e) && typeof e.code == "number";
138
+ function sn(e, n) {
139
+ if (!e) {
140
+ g("warn", "无效的回调ID");
141
+ return;
142
+ }
143
+ g("debug", `接收到回调: ${e}`, n);
144
+ const t = G.get(e);
145
+ if (!t) {
146
+ g("warn", `未找到回调: ${e}`);
147
+ return;
148
+ }
149
+ try {
150
+ t(n);
151
+ } catch (r) {
152
+ g("error", `回调执行错误: ${e}`, r);
153
+ } finally {
154
+ G.delete(e);
155
+ }
60
156
  }
61
- function m(e) {
62
- if (typeof e != "string") return e;
157
+ function cn(e, n) {
158
+ g("debug", `接收到事件: ${e}`, n);
159
+ const t = M.get(e);
160
+ if (t != null && t.length)
161
+ for (const r of [...t])
162
+ try {
163
+ r(n);
164
+ } catch (i) {
165
+ g("warn", `事件处理器执行错误: ${e}`, i);
166
+ }
167
+ }
168
+ function dn(e) {
169
+ return JSON.stringify({ success: !0, data: e });
170
+ }
171
+ function ye(e) {
172
+ return JSON.stringify({ success: !1, error: e });
173
+ }
174
+ function he(e, n) {
175
+ g("debug", `调用原生回调: ${e}`, n);
176
+ const t = qe(I.iosCallback);
177
+ if (t) {
178
+ t.postMessage({ callbackId: e, data: n });
179
+ return;
180
+ }
181
+ const r = _e();
182
+ r && typeof r.callback == "function" && r.callback(e, JSON.stringify(n));
183
+ }
184
+ function an(e, n, t) {
185
+ g("debug", `接收到原生调用: ${e}`, n);
186
+ const r = X.get(e);
187
+ if (!r) {
188
+ const i = `方法 ${e} 未注册`;
189
+ return g("error", i), ye({ code: -1, message: i });
190
+ }
63
191
  try {
64
- return JSON.parse(e);
65
- } catch {
66
- return e;
192
+ const i = r(n);
193
+ return i && typeof i.then == "function" ? t ? (i.then(
194
+ (o) => he(t, { success: !0, data: o }),
195
+ (o) => he(t, {
196
+ success: !1,
197
+ error: { message: m(o) }
198
+ })
199
+ ), null) : (g("warn", `异步方法 ${e} 没有 callbackId,结果无法回传`), null) : dn(i);
200
+ } catch (i) {
201
+ const o = m(i);
202
+ return g("error", `方法执行错误: ${e}`, o), ye({ message: o });
67
203
  }
68
204
  }
69
- function q(e, t) {
70
- return h(t) && typeof t.errMsg == "string" && typeof t.errCode == "number" ? t : M(t) ? {
71
- errMsg: `${e}:fail ${t.msg || "fail"}`,
72
- errCode: t.code,
73
- raw: t
74
- } : {
75
- errMsg: `${e}:fail ${w(t)}`,
76
- errCode: S
77
- };
205
+ function ln() {
206
+ if (typeof window == "undefined") return;
207
+ const e = window;
208
+ typeof e[I.globalEvent] != "function" && (e[I.globalEvent] = () => {
209
+ });
210
+ }
211
+ let pe = !1;
212
+ function Q() {
213
+ if (pe) return;
214
+ pe = !0;
215
+ const e = window;
216
+ e[I.globalCallback] = (n, t) => sn(n, t), e[I.globalEvent] = (n, t) => cn(n, t), e[I.globalInvoke] = (n, t, r) => an(n, t, r), g("info", "初始化完成");
78
217
  }
79
- function n(e, t = {}, r, o) {
80
- const s = String(e), { success: f, fail: y, complete: d } = r || {}, I = (a) => {
81
- const l = m(a);
82
- if (M(l) && l.code === v) {
83
- const C = l;
84
- return f == null || f(C), d == null || d(C), C;
218
+ const _ = {
219
+ callAsync: un,
220
+ on(e, n) {
221
+ Q();
222
+ const t = M.get(e);
223
+ if (!t) {
224
+ M.set(e, [n]);
225
+ return;
85
226
  }
86
- throw q(s, l);
87
- }, R = (a) => {
88
- const l = q(s, a);
89
- throw y == null || y(l), d == null || d(l), l;
90
- };
91
- return u.callAsync(s, D(t), o).then(I).catch(R);
227
+ t.includes(n) || t.push(n);
228
+ },
229
+ off(e, n) {
230
+ const t = M.get(e);
231
+ if (!t) return;
232
+ const r = t.indexOf(n);
233
+ r !== -1 && (t.splice(r, 1), t.length || M.delete(e));
234
+ },
235
+ register(e, n) {
236
+ Q(), X.set(e, n);
237
+ },
238
+ unregister(e) {
239
+ X.delete(e);
240
+ },
241
+ setDebug(e, n) {
242
+ Ce = e, n != null && n.logLevel && n.logLevel in Y && (Se = n.logLevel), typeof (n == null ? void 0 : n.useConsole) == "boolean" && (Ae = n.useConsole);
243
+ }
244
+ };
245
+ let k;
246
+ function be(e) {
247
+ return O(e) && Ke(e.app_version);
92
248
  }
93
- var E = /* @__PURE__ */ ((e) => (e[e.Short = 0] = "Short", e[e.Long = 1] = "Long", e))(E || {});
94
- function x(e) {
95
- return e.text ? n(
96
- "showToast",
97
- {
98
- text: e.text,
99
- duration: e.duration ?? E.Short
100
- },
101
- e
102
- ) : i("showToast", "text is required", e);
249
+ function fn(e) {
250
+ const n = /#webBaseInfo(.*?[^\\])#/.exec(e);
251
+ return n != null && n[1] ? ke(n[1]) : null;
103
252
  }
104
- function V(e = {}) {
105
- return n("triggerVibrate", {
106
- duration: e.duration,
107
- intensity: e.intensity ?? 1,
108
- steps: e.steps,
109
- repeat: e.repeat ?? !1
110
- }, e, { queue: "serial" });
253
+ function B() {
254
+ if (k !== void 0) return k;
255
+ if (typeof window == "undefined") return null;
256
+ const e = window, n = e._appBaseInfo;
257
+ if (n !== void 0)
258
+ return k = be(n) ? n : null, k;
259
+ if (typeof navigator == "undefined") return null;
260
+ const t = navigator.userAgent.replace(/ +/g, "").replace(/[\r\n]/g, ""), r = fn(t);
261
+ return k = be(r) ? r : null, e._appBaseInfo = k, k;
111
262
  }
112
- function j(e) {
113
- return n("stopVibrate", {}, e, { queue: "serial" });
263
+ function Oe() {
264
+ return !!B();
114
265
  }
115
- function F(e) {
116
- return n("hideKeyboard", {}, e);
266
+ function Re(e) {
267
+ return !!e && gn(e) === -1;
117
268
  }
118
- function B() {
119
- return typeof window > "u" ? 1 : window.devicePixelRatio || 1;
120
- }
121
- const c = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map();
122
- function $(e, t) {
123
- const r = c.get(e);
124
- r && u.off("keyboardHeightChange", r);
125
- const o = (s) => {
126
- const f = s ? s / B() : 0;
127
- e(f), t != null && t.once && c.delete(e);
269
+ function Te() {
270
+ return typeof window == "undefined" ? 1 : window.devicePixelRatio || 1;
271
+ }
272
+ function gn(e, n = ((t) => (t = B()) == null ? void 0 : t.app_version)() || "") {
273
+ if (!e && !n) return 0;
274
+ if (!e) return 1;
275
+ if (!n) return -1;
276
+ const r = (d) => d.split(".").map((a) => {
277
+ const y = Number(a);
278
+ return Number.isFinite(y) ? y : 0;
279
+ }), i = r(e), o = r(n), s = Math.max(i.length, o.length);
280
+ for (let d = 0; d < s; d++) {
281
+ const a = d < i.length ? i[d] : 0, y = d < o.length ? o[d] : 0;
282
+ if (a > y) return -1;
283
+ if (a < y) return 1;
284
+ }
285
+ return 0;
286
+ }
287
+ const me = "docoi-web-community-frame";
288
+ function Me() {
289
+ if (typeof navigator == "undefined") return "unknown";
290
+ const e = navigator.userAgent;
291
+ return /\(i[^;]+;( U;)? CPU.+Mac OS X/.test(e) ? "ios" : e.includes("Android") || e.includes("Linux") ? "android" : "unknown";
292
+ }
293
+ function yn() {
294
+ if (typeof window == "undefined") return !1;
295
+ try {
296
+ return window.self !== window.top && window.name === me;
297
+ } catch (e) {
298
+ return window.name === me;
299
+ }
300
+ }
301
+ function we() {
302
+ var n, t;
303
+ const e = typeof window == "undefined" ? void 0 : window;
304
+ return {
305
+ ...B(),
306
+ pixelRatio: Te(),
307
+ screenWidth: (n = e == null ? void 0 : e.screen) == null ? void 0 : n.width,
308
+ screenHeight: (t = e == null ? void 0 : e.screen) == null ? void 0 : t.height,
309
+ windowWidth: e == null ? void 0 : e.innerWidth,
310
+ windowHeight: e == null ? void 0 : e.innerHeight
128
311
  };
129
- if (c.set(e, o), t != null && t.once) {
130
- u.once("keyboardHeightChange", o);
131
- return;
312
+ }
313
+ const S = We.init({
314
+ debug: !1
315
+ });
316
+ ln();
317
+ const hn = (e, n) => {
318
+ _.setDebug(e, n), S.setDebug(e, n);
319
+ };
320
+ let C;
321
+ const ir = (e) => {
322
+ C = e;
323
+ };
324
+ function Z(e) {
325
+ try {
326
+ C == null || C(e);
327
+ } catch (n) {
132
328
  }
133
- u.on("keyboardHeightChange", o);
134
329
  }
135
- function k(e) {
136
- if (!e) {
137
- c.clear(), u.off("keyboardHeightChange");
138
- return;
330
+ function w(e) {
331
+ return Oe() && Re(e);
332
+ }
333
+ const ee = /* @__PURE__ */ new Map();
334
+ function h(e, n, t = {}) {
335
+ const { since: r, once: i, transform: o } = t;
336
+ E(e, n);
337
+ const s = w(r) ? _ : S;
338
+ let d = ee.get(e);
339
+ d || (d = /* @__PURE__ */ new Map(), ee.set(e, d));
340
+ const a = (y) => {
341
+ i && E(e, n), n(o ? o(y) : y);
342
+ };
343
+ return d.set(n, { handler: a, target: s }), s.on(e, a), () => E(e, n);
344
+ }
345
+ function E(e, n) {
346
+ const t = ee.get(e);
347
+ if (t)
348
+ for (const r of n ? [n] : [...t.keys()]) {
349
+ const i = t.get(r);
350
+ i && (i.target.off(e, i.handler), t.delete(r));
351
+ }
352
+ }
353
+ function Le(e, n, t) {
354
+ const r = w(t);
355
+ return r ? _.register(e, async (i) => F(await n(i))) : Be(e, n), () => (r ? _ : S).unregister(e);
356
+ }
357
+ function pn(e, n) {
358
+ (w(n) ? _ : S).unregister(e);
359
+ }
360
+ function Be(e, n) {
361
+ return S.register(e, async (t) => {
362
+ try {
363
+ const r = await n(t);
364
+ return F(J(r));
365
+ } catch (r) {
366
+ const i = vn(e, r);
367
+ try {
368
+ return F(i);
369
+ } catch (o) {
370
+ return { code: i.code, msg: i.msg, result: {} };
371
+ }
372
+ }
373
+ }), () => S.unregister(e);
374
+ }
375
+ function J(e) {
376
+ return { code: Pe, msg: "ok", result: e != null ? e : {} };
377
+ }
378
+ function bn(e) {
379
+ return O(e) && Ee(e.code);
380
+ }
381
+ function mn(e, n, t) {
382
+ const r = f(n) ? ke(n, n) : n;
383
+ if (!bn(r)) throw v(e, re, m(r));
384
+ if (r.code !== Pe) throw v(e, r.code, r.msg || `code ${r.code}`);
385
+ return J(ne(e, t, r.result));
386
+ }
387
+ function ne(e, n, t) {
388
+ try {
389
+ return n ? n(t) : t;
390
+ } catch (r) {
391
+ throw ie(r) ? r : v(e, Ie, m(r));
139
392
  }
140
- const t = c.get(e);
141
- c.delete(e), u.off("keyboardHeightChange", t || e);
142
393
  }
143
- function G(e, t) {
144
- const r = g.get(e);
145
- r && u.off("onCommentPanelChange", r);
146
- const o = (s) => {
147
- e(s), t != null && t.once && g.delete(e);
394
+ function ie(e) {
395
+ return P(e) && f(e.errMsg) && Ee(e.errCode);
396
+ }
397
+ function v(e, n, t) {
398
+ return { errMsg: `${e}:fail ${t}`, errCode: n };
399
+ }
400
+ function wn(e, n) {
401
+ return n instanceof W ? v(e, n.kind === "native" ? Ge : z, n.message) : v(e, z, m(n));
402
+ }
403
+ function vn(e, n) {
404
+ return {
405
+ code: re,
406
+ msg: `${e}:fail ${m(n)}`,
407
+ result: P(n) && "result" in n ? n.result : n
148
408
  };
149
- if (g.set(e, o), t != null && t.once) {
150
- u.once("onCommentPanelChange", o);
151
- return;
409
+ }
410
+ function V(e, n) {
411
+ try {
412
+ e == null || e(n);
413
+ } catch (t) {
414
+ console.error("[mys-sdk] 回调执行错误", t);
152
415
  }
153
- u.on("onCommentPanelChange", o);
154
416
  }
155
- function W(e) {
156
- if (!e) {
157
- g.clear(), u.off("onCommentPanelChange");
158
- return;
417
+ function oe(e, n) {
418
+ return V(n == null ? void 0 : n.fail, e), V(n == null ? void 0 : n.complete, e), Promise.reject(e);
419
+ }
420
+ function De(e, n, t) {
421
+ return n.then(
422
+ (r) => {
423
+ const i = r;
424
+ return V(t == null ? void 0 : t.success, i), V(t == null ? void 0 : t.complete, i), i;
425
+ },
426
+ (r) => oe(ie(r) ? r : v(e, z, m(r)), t)
427
+ );
428
+ }
429
+ function c(e, n, t) {
430
+ return oe(v(e, Ve, `parameter error: ${n}`), t);
431
+ }
432
+ function ue(e, n, t) {
433
+ return oe(v(e, Je, `unsupported: ${n}`), t);
434
+ }
435
+ function te(e, n, t, r) {
436
+ var o;
437
+ C && Z({ fnName: e, channel: "local", appVersion: (o = B()) == null ? void 0 : o.app_version, method: e, data: n });
438
+ let i;
439
+ try {
440
+ i = Promise.resolve(J(t()));
441
+ } catch (s) {
442
+ i = Promise.reject(ie(s) ? s : v(e, re, m(s)));
159
443
  }
160
- const t = g.get(e);
161
- g.delete(e), u.off("onCommentPanelChange", t || e);
444
+ return De(e, i, r);
162
445
  }
163
- function K(e) {
164
- var r;
165
- if (!((r = e.urls) != null && r.length))
166
- return i("previewMedia", "urls is required", e);
167
- const t = e.current ?? 0;
168
- return !Number.isInteger(t) || t < 0 || t >= e.urls.length ? i("previewMedia", "current is out of range", e) : n(
169
- "previewMedia",
446
+ function u(e, n = {}, t, r = {}) {
447
+ var de;
448
+ const { since: i, legacyOnly: o, jsbridge: s, transformResult: d, ...a } = r, y = o || w(i);
449
+ let A;
450
+ try {
451
+ const l = F(n);
452
+ A = O(l) ? l : {};
453
+ } catch (l) {
454
+ const R = l instanceof T || l instanceof TypeError ? l.message : "参数无法序列化";
455
+ return c(e, R, t);
456
+ }
457
+ const ce = (de = B()) == null ? void 0 : de.app_version;
458
+ let D;
459
+ try {
460
+ if (y) {
461
+ const l = ne(e, s == null ? void 0 : s.data, A);
462
+ C && Z({ fnName: e, channel: "jsbridge", appVersion: ce, since: i, method: e, data: l }), D = _.callAsync(e, l, a).then(
463
+ (R) => J(ne(e, s == null ? void 0 : s.result, R)),
464
+ (R) => Promise.reject(wn(e, R))
465
+ );
466
+ } else
467
+ C && Z({ fnName: e, channel: "mysJSBridge", appVersion: ce, since: i, method: e, data: A }), D = S.callAsync(e, A, a).then((l) => mn(e, l, d));
468
+ } catch (l) {
469
+ D = Promise.reject(l);
470
+ }
471
+ return De(e, D, t);
472
+ }
473
+ const or = u;
474
+ var je = /* @__PURE__ */ ((e) => (e[e.Short = 0] = "Short", e[e.Long = 1] = "Long", e))(je || {}), H = /* @__PURE__ */ ((e) => (e[e.RecentContacts = 1] = "RecentContacts", e[e.External = 2] = "External", e[e.Channel = 3] = "Channel", e))(H || {});
475
+ function Pn(e) {
476
+ var n;
477
+ return e.text ? u(
478
+ "showToast",
170
479
  {
171
- type: "image",
172
- urls: e.urls,
173
- current: t
480
+ text: e.text,
481
+ duration: (n = e.duration) != null ? n : je.Short
174
482
  },
175
- e
176
- );
483
+ e,
484
+ {
485
+ since: "4.4.0",
486
+ // 旧通道 jsbridge 的 showToast 只有 text,没有 duration
487
+ jsbridge: { data: ({ text: t }) => ({ text: t }) }
488
+ }
489
+ ) : c("showToast", "text is required", e);
177
490
  }
178
- function z(e) {
179
- var r;
180
- if (!((r = e.urls) != null && r.length))
181
- return i("previewVideo", "urls is required", e);
182
- const t = e.current ?? 0;
183
- return !Number.isInteger(t) || t < 0 || t >= e.urls.length ? i("previewVideo", "current is out of range", e) : n(
184
- "previewMedia",
491
+ function In(e = {}) {
492
+ var n, t;
493
+ return u(
494
+ "triggerVibrate",
185
495
  {
186
- type: "video",
187
- urls: e.urls,
188
- current: t
496
+ duration: e.duration,
497
+ intensity: (n = e.intensity) != null ? n : 1,
498
+ steps: e.steps,
499
+ repeat: (t = e.repeat) != null ? t : !1
189
500
  },
190
- e
501
+ e,
502
+ {
503
+ since: "4.4.0",
504
+ queue: "serial"
505
+ }
191
506
  );
192
507
  }
193
- function J(e = {}) {
194
- return e.count !== void 0 && (!Number.isInteger(e.count) || e.count <= 0) ? i("chooseMedia", "可选择照片数量范围为1-9张", e) : n(
508
+ function En(e) {
509
+ return u("stopVibrate", {}, e, { since: "4.4.0", queue: "serial" });
510
+ }
511
+ function kn(e) {
512
+ return u("hideKeyboard", {}, e);
513
+ }
514
+ function Cn(e, n) {
515
+ h("keyboardHeightChange", e, {
516
+ since: "4.4.0",
517
+ once: n == null ? void 0 : n.once,
518
+ transform: (t) => t ? t / Te() : 0
519
+ });
520
+ }
521
+ function Sn(e) {
522
+ E("keyboardHeightChange", e);
523
+ }
524
+ function An(e, n) {
525
+ h("onCommentPanelChange", e, { since: "4.4.0", once: n == null ? void 0 : n.once });
526
+ }
527
+ function qn(e) {
528
+ E("onCommentPanelChange", e);
529
+ }
530
+ function $e(e, n) {
531
+ var i, o;
532
+ if (!((i = n.urls) != null && i.length))
533
+ return c(e, "urls is required", n);
534
+ const t = (o = n.current) != null ? o : 0;
535
+ if (!Number.isInteger(t) || t < 0 || t >= n.urls.length)
536
+ return c(e, "current is out of range", n);
537
+ const r = e === "previewImage";
538
+ return w("4.3.0") ? u(
539
+ "playMedia",
540
+ {
541
+ type: r ? 1 : 2,
542
+ url: n.urls[t],
543
+ urls: r ? n.urls : void 0
544
+ },
545
+ n,
546
+ { legacyOnly: !0 }
547
+ ) : u("previewMedia", { type: r ? "image" : "video", urls: n.urls, current: t }, n);
548
+ }
549
+ function _n(e) {
550
+ return $e("previewImage", e);
551
+ }
552
+ function On(e) {
553
+ return $e("previewVideo", e);
554
+ }
555
+ function Rn(e = {}) {
556
+ var n, t, r, i, o;
557
+ return e.count !== void 0 && (!Number.isInteger(e.count) || e.count <= 0) ? c("chooseMedia", "可选择照片数量范围为1-9张", e) : u(
195
558
  "chooseMedia",
196
559
  {
197
- count: e.count ?? 9,
198
- mediaType: e.mediaType ?? "image",
199
- compressed: e.compressed ?? !0,
200
- maxDuration: e.maxDuration ?? 60,
201
- camera: e.camera ?? "back"
560
+ count: (n = e.count) != null ? n : 9,
561
+ mediaType: (t = e.mediaType) != null ? t : "image",
562
+ compressed: (r = e.compressed) != null ? r : !0,
563
+ maxDuration: (i = e.maxDuration) != null ? i : 60,
564
+ camera: (o = e.camera) != null ? o : "back"
202
565
  },
203
566
  e,
204
- { queue: "serial", timeout: 6e4 }
567
+ { queue: "serial" }
205
568
  );
206
569
  }
207
- const b = /* @__PURE__ */ new Set();
208
- let P = !1;
209
- u.on("uploadFilesProgress", (e) => {
210
- for (const t of b)
211
- t(e);
212
- });
213
- function L(e) {
214
- return !Array.isArray(e.files) || e.files.length === 0 ? i("uploadFiles", "files is required", e) : e.files.some((t) => !t) ? i("uploadFiles", "files[] is required", e) : P ? i("uploadFiles", "another uploadFiles request is in progress", e) : (P = !0, e.onProgress && b.add(e.onProgress), n(
570
+ let K = !1;
571
+ function Tn(e) {
572
+ var t;
573
+ if (!Array.isArray(e.files) || e.files.length === 0)
574
+ return c("uploadFiles", "files is required", e);
575
+ if (e.files.some((r) => !r))
576
+ return c("uploadFiles", "files[] is required", e);
577
+ if (K)
578
+ return c("uploadFiles", "another uploadFiles request is in progress", e);
579
+ K = !0;
580
+ const n = e.onProgress ? h("uploadFilesProgress", e.onProgress) : void 0;
581
+ return u(
215
582
  "uploadFiles",
216
583
  {
217
584
  files: e.files,
218
- cosDirPath: e.cosDirPath ?? "multipleSource/common/"
585
+ cosDirPath: (t = e.cosDirPath) != null ? t : "multipleSource/common/"
219
586
  },
220
587
  e,
221
- { queue: "serial", timeout: 12e4 }
588
+ { queue: "serial" }
222
589
  ).finally(() => {
223
- P = !1, e.onProgress && b.delete(e.onProgress);
224
- }));
590
+ K = !1, n == null || n();
591
+ });
225
592
  }
226
- function U(e) {
227
- return e.filePath ? n("saveMediaToPhotosAlbum", { type: "image", file: e.filePath }, e, { queue: "serial" }) : i("saveImageToPhotosAlbum", "filePath is required", e);
593
+ function Mn(e) {
594
+ const n = O(e) ? e : {};
595
+ if (n.status === "success" || n.result === "success") return;
596
+ throw { errMsg: `saveImageToPhotosAlbum:fail ${f(n.reason) && n.reason ? n.reason : "unknown reason"}`, errCode: Ie, errDetail: e };
228
597
  }
229
- function X(e) {
230
- return e.filePath ? n("saveMediaToPhotosAlbum", { type: "video", file: e.filePath }, e, { queue: "serial" }) : i("saveVideoToPhotosAlbum", "filePath is required", e);
598
+ function Ln(e) {
599
+ return Xe(e == null ? void 0 : e.filePath) ? u("saveMediaToPhotosAlbum", { type: "image", file: e.filePath }, e, {
600
+ legacyOnly: !0,
601
+ jsbridge: { result: Mn }
602
+ }) : c("saveImageToPhotosAlbum", "filePath must be base64 data (data URL or plain base64)", e);
231
603
  }
232
- function Y(e) {
233
- return n("startRecord", e || {}, e, { queue: "serial" });
604
+ let b;
605
+ function Bn(e) {
606
+ b == null || b.release();
607
+ const { onEnd: n, onProgress: t } = e != null ? e : {};
608
+ let r, i;
609
+ const o = {
610
+ stopProgress: () => r == null ? void 0 : r(),
611
+ release: () => {
612
+ r == null || r(), i == null || i(), b === o && (b = void 0);
613
+ }
614
+ };
615
+ return r = t ? h("onRecordAudioProgress", t) : void 0, i = h("onRecordAudioEnd", (s) => {
616
+ o.release(), n == null || n({ ...s, duration: s.duration / 1e3, size: s.size / 1024 });
617
+ }), b = o, o;
234
618
  }
235
- function Q(e) {
236
- return n("stopRecord", {}, e, { queue: "serial" });
619
+ function Dn(e) {
620
+ const n = e == null ? void 0 : e.maxDuration;
621
+ if (n !== void 0 && (!Number.isFinite(n) || n <= 0))
622
+ return c("startRecordAudio", "maxDuration must be a number greater than 0", e);
623
+ const { release: t } = Bn(e);
624
+ return u("startRecordAudio", { maxDuration: n }, e, { queue: "serial" }).catch((r) => {
625
+ throw t(), r;
626
+ });
237
627
  }
238
- function Z(e) {
239
- return n("getSystemInfo", {}, e);
628
+ function jn(e) {
629
+ const n = b;
630
+ return u("stopRecordAudio", {}, e).then(
631
+ (t) => (n == null || n.stopProgress(), t),
632
+ (t) => {
633
+ throw n == null || n.release(), t;
634
+ }
635
+ );
240
636
  }
241
- function p(e) {
242
- return n("getNetworkType", {}, e);
637
+ function $n(e) {
638
+ return b == null || b.release(), u("cancelRecordAudio", {}, e);
243
639
  }
244
- function ee(e) {
245
- return e.data === void 0 ? i("setClipboardData", "data is required", e) : n("setClipboardData", { data: e.data }, e);
640
+ function Nn(e) {
641
+ return w("4.4.0") ? te("getSystemInfo", {}, we, e) : u("getSystemInfo", {}, e, {
642
+ transformResult: (n) => ({ ...we(), ...O(n) ? n : {} })
643
+ });
246
644
  }
247
- function te(e) {
248
- return n("getClipboardData", {}, e);
645
+ function xn(e) {
646
+ return e.data === void 0 ? c("setClipboardData", "data is required", e) : u("setClipboardData", { data: e.data }, e);
249
647
  }
250
- function re(e) {
251
- return e.permission ? n(
252
- "checkPermission",
253
- {
254
- permission: e.permission
255
- },
256
- e
257
- ) : i("checkPermission", "permission is required", e);
648
+ function Un(e) {
649
+ return u("getClipboardData", {}, e);
258
650
  }
259
- function ne(e) {
260
- return e.type ? n(
261
- "openPhoneSetting",
262
- {
263
- type: e.type
264
- },
265
- e,
266
- { queue: "serial" }
267
- ) : i("openPhoneSetting", "type is required", e);
651
+ function Hn(e) {
652
+ return { permission: "notification", result: O(e) && e.isOpen === !0 ? "granted" : "denied" };
268
653
  }
269
- function ie(e) {
270
- return n("closeWebView", {}, e, { queue: "serial" });
654
+ function Fn(e) {
655
+ return e.permission ? w("4.4.0") ? e.permission !== "notification" ? ue("checkPermission", `permission ${e.permission} requires app >= 4.4.0`, e) : u("isNotificationEnabled", {}, e, {
656
+ legacyOnly: !0,
657
+ jsbridge: { result: Hn }
658
+ }) : u("checkPermission", { permission: e.permission }, e) : c("checkPermission", "permission is required", e);
659
+ }
660
+ function Wn(e) {
661
+ return e.permission ? w("4.4.0") ? e.permission !== "notification" ? ue("openPhoneSetting", `permission ${e.permission} requires app >= 4.4.0`, e) : u("gotoSetPhoneNotify", {}, e, { legacyOnly: !0 }) : u("openPhoneSetting", { permission: e.permission }, e, { queue: "serial" }) : c("openPhoneSetting", "permission is required", e);
662
+ }
663
+ function Gn(e = {}) {
664
+ return u("openApp", { url: e.url, packageNames: e.packageNames }, e, { since: "4.4.0", queue: "serial" });
665
+ }
666
+ function Vn(e) {
667
+ return typeof (e == null ? void 0 : e.enable) != "boolean" ? c("swipeBack", "enable must be a boolean", e) : u("swipeBack", { enable: e.enable }, e);
668
+ }
669
+ function Jn(e) {
670
+ return e.nameType === void 0 ? c("showPageName", "nameType is required", e) : u("showPageName", { nameType: e.nameType }, e, { since: "4.4.0" });
671
+ }
672
+ function Kn(e) {
673
+ return u("H5Loaded", {}, e, { since: "4.4.0" });
674
+ }
675
+ function zn(e) {
676
+ return u("getBeforeInfo", {}, e, { since: "4.4.0" });
271
677
  }
272
- function oe(e) {
273
- return e.url ? n("openInExternalBrowser", { url: e.url }, e, { queue: "serial" }) : i("openInExternalBrowser", "url is required", e);
678
+ function Yn(e = {}) {
679
+ return u("setH5BeforeInfo", e, e, { since: "4.4.0" });
274
680
  }
275
- const ue = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
681
+ function Xn(e, n) {
682
+ h("h5PageShow", e, { since: "4.4.0", once: n == null ? void 0 : n.once });
683
+ }
684
+ function Qn(e) {
685
+ E("h5PageShow", e);
686
+ }
687
+ function Zn(e, n) {
688
+ h("h5PageVisible", e, { since: "4.4.0", once: n == null ? void 0 : n.once });
689
+ }
690
+ function et(e) {
691
+ E("h5PageVisible", e);
692
+ }
693
+ function nt(e, n) {
694
+ h("h5PageInvisible", e, { since: "4.4.0", once: n == null ? void 0 : n.once });
695
+ }
696
+ function tt(e) {
697
+ E("h5PageInvisible", e);
698
+ }
699
+ const rt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
276
700
  __proto__: null,
277
- checkPermission: re,
278
- chooseMedia: J,
279
- closeWebView: ie,
280
- getClipboardData: te,
281
- getNetworkType: p,
282
- getSystemInfo: Z,
283
- hideKeyboard: F,
284
- offCommentPanelChange: W,
285
- offKeyboardHeightChange: k,
286
- onCommentPanelChange: G,
287
- onKeyboardHeightChange: $,
288
- openInExternalBrowser: oe,
289
- openPhoneSetting: ne,
290
- previewImage: K,
291
- previewVideo: z,
292
- saveImageToPhotosAlbum: U,
293
- saveVideoToPhotosAlbum: X,
294
- setClipboardData: ee,
295
- showToast: x,
296
- startRecord: Y,
297
- stopRecord: Q,
298
- stopVibrate: j,
299
- triggerVibrate: V,
300
- uploadFiles: L
701
+ cancelRecordAudio: $n,
702
+ checkPermission: Fn,
703
+ chooseMedia: Rn,
704
+ getBeforeInfo: zn,
705
+ getClipboardData: Un,
706
+ getSystemInfo: Nn,
707
+ h5Loaded: Kn,
708
+ hideKeyboard: kn,
709
+ offCommentPanelChange: qn,
710
+ offKeyboardHeightChange: Sn,
711
+ offPageInvisible: tt,
712
+ offPageShow: Qn,
713
+ offPageVisible: et,
714
+ onCommentPanelChange: An,
715
+ onKeyboardHeightChange: Cn,
716
+ onPageInvisible: nt,
717
+ onPageShow: Xn,
718
+ onPageVisible: Zn,
719
+ openApp: Gn,
720
+ openPhoneSetting: Wn,
721
+ previewImage: _n,
722
+ previewVideo: On,
723
+ saveImageToPhotosAlbum: Ln,
724
+ setBeforeInfo: Yn,
725
+ setClipboardData: xn,
726
+ showPageName: Jn,
727
+ showToast: Pn,
728
+ startRecordAudio: Dn,
729
+ stopRecordAudio: jn,
730
+ stopVibrate: En,
731
+ swipeBack: Vn,
732
+ triggerVibrate: In,
733
+ uploadFiles: Tn
301
734
  }, Symbol.toStringTag, { value: "Module" }));
302
- function se(e) {
303
- return n("login", {}, e, { queue: "serial" });
735
+ function it(e) {
736
+ return u("login", {}, e, { since: "4.4.0", queue: "serial" });
304
737
  }
305
- function fe(e) {
306
- return n("getToken", {}, e);
738
+ function ot(e) {
739
+ return u("getToken", {}, e, {
740
+ since: "4.4.0",
741
+ // 旧通道可能直接返回 token 字符串,统一成对象
742
+ jsbridge: { result: (n) => f(n) ? { token: n } : n }
743
+ });
307
744
  }
308
- function le(e) {
309
- return n("getCurrentCircleInfo", {}, e);
745
+ function ut(e) {
746
+ return u("getCurrentCircleInfo", {}, e, { since: "4.4.0" });
310
747
  }
311
- function de(e) {
312
- return e.title ? n(
748
+ function st(e) {
749
+ var r;
750
+ if (!e.title)
751
+ return c("shareWebCard", "title is required", e);
752
+ if (!e.daokeUrl)
753
+ return c("shareWebCard", "daokeUrl is required", e);
754
+ const { activityDetail: n } = e, t = ct(e);
755
+ return u(
313
756
  "shareWebCard",
314
757
  {
315
758
  ...e,
316
- shareTypes: e.shareTypes ?? [1, 2, 3]
759
+ shareTypes: (r = e.shareTypes) != null ? r : [H.RecentContacts, H.External, H.Channel],
760
+ activityDetail: P(n) ? JSON.stringify(n) : n
317
761
  },
318
762
  e,
319
- { queue: "serial" }
320
- ) : i("shareWebCard", "title is required", e);
763
+ { since: "4.4.0", queue: "serial" }
764
+ ).catch((i) => {
765
+ throw t(), i;
766
+ });
321
767
  }
322
- function ce(e) {
323
- return !e.url || !/^https?:\/\//i.test(e.url) ? i("shareImage", "url must be a valid http(s) url", e) : n("shareImage", { url: e.url }, e, { queue: "serial" });
768
+ let j;
769
+ function ct(e) {
770
+ j == null || j();
771
+ const { onShared: n, getSharePictureUrl: t, isSharePic: r } = e, i = r ? t : void 0;
772
+ let o, s;
773
+ const d = () => {
774
+ o == null || o(), s == null || s();
775
+ };
776
+ return (n || i) && (o = h("onShared", (a) => {
777
+ d(), n == null || n(a);
778
+ }, { since: "4.4.0" })), i && (s = Le("getSharePictureUrl", i, "4.4.0")), j = d, d;
324
779
  }
325
- function ge(e) {
326
- return n("openAddCustomEmoji", {}, e, { queue: "serial" });
780
+ function dt(e) {
781
+ return !e.url || !/^https?:\/\//i.test(e.url) ? c("shareImage", "url must be a valid http(s) url", e) : u("shareImage", { url: e.url }, e, { queue: "serial" });
327
782
  }
328
- function he(e) {
329
- return e.gameName ? e.serverId ? n("pointsMallBindGame", e, e, { queue: "serial" }) : i("toBindGameRole", "serverId is required", e) : i("toBindGameRole", "gameName is required", e);
783
+ function at(e) {
784
+ return u("openAddCustomEmoji", {}, e, { since: "4.4.0", queue: "serial" });
330
785
  }
331
- function ye(e) {
332
- return e.type === void 0 ? i("showAd", "type is required", e) : n("showAdVideo", e, e, { queue: "serial" });
786
+ function lt(e) {
787
+ return e.serverId ? e.dynamicId ? u(
788
+ "openCommentPanel",
789
+ {
790
+ serverId: e.serverId,
791
+ dynamicId: e.dynamicId,
792
+ commentId: e.commentId,
793
+ autoFocusInput: e.autoFocusInput
794
+ },
795
+ e,
796
+ { since: "4.4.0", queue: "serial" }
797
+ ) : c("openCommentPanel", "dynamicId is required", e) : c("openCommentPanel", "serverId is required", e);
798
+ }
799
+ function ft(e) {
800
+ return u("showLongVipDesDialog", {}, e, { since: "4.4.0", queue: "serial" });
801
+ }
802
+ function gt(e) {
803
+ return e.index === void 0 ? c("voteAction", "index is required", e) : u("voteAction", e, e, { since: "4.4.0", queue: "serial" });
804
+ }
805
+ function yt(e) {
806
+ return Array.isArray(e.selectedUserIds) ? w("4.4.0") ? ht(e) : u("openFriendsList", { selectedUserIds: e.selectedUserIds }, e, {
807
+ queue: "serial",
808
+ transformResult: Ne
809
+ }) : c("openFriendsList", "selectedUserIds is required", e);
810
+ }
811
+ function Ne(e) {
812
+ const n = P(e) ? e.selectedList : void 0;
813
+ return { selectedList: Array.isArray(n) ? n : [] };
814
+ }
815
+ function ht(e) {
816
+ let n;
817
+ const t = h("submitFriendsList", (r) => {
818
+ n = r;
819
+ }, { since: "4.4.0" });
820
+ return u("openFriendsList", { selectedUserIds: e.selectedUserIds }, e, {
821
+ legacyOnly: !0,
822
+ jsbridge: { result: () => Ne(n) }
823
+ }).finally(() => t());
824
+ }
825
+ function pt(e) {
826
+ return e.gameName ? e.serverId ? u("pointsMallBindGame", e, e, { since: "4.4.0", queue: "serial" }) : c("toBindGameRole", "serverId is required", e) : c("toBindGameRole", "gameName is required", e);
827
+ }
828
+ function bt(e) {
829
+ return u("bindGameRoleSuccess", {}, e, { since: "4.4.0" });
830
+ }
831
+ function mt(e) {
832
+ return e.type === void 0 ? c("showAd", "type is required", e) : (wt(e), u("showAdVideo", { type: e.type, params: e.params }, e, {
833
+ since: "4.4.0",
834
+ queue: "serial"
835
+ }));
836
+ }
837
+ const $ = /* @__PURE__ */ new Map();
838
+ function wt(e) {
839
+ var s, d;
840
+ const { onFinished: n } = e;
841
+ if (!n) return;
842
+ const t = (s = e.params) == null ? void 0 : s.module, r = t === void 0 ? void 0 : String(t);
843
+ (d = $.get(r)) == null || d();
844
+ let i;
845
+ const o = () => {
846
+ i == null || i(), $.get(r) === o && $.delete(r);
847
+ };
848
+ i = h("onAdFinished", (a) => {
849
+ r !== void 0 && String(a == null ? void 0 : a.module) !== r || (o(), n(a));
850
+ }, { since: "4.4.0" }), $.set(r, o);
851
+ }
852
+ function vt(e) {
853
+ return e.type ? u("updateData", { type: e.type, params: e.params }, e, { since: "4.4.0" }) : c("updateData", "type is required", e);
854
+ }
855
+ function Pt(e) {
856
+ if (!e.user_id)
857
+ return c("openGiftBag", "user_id is required", e);
858
+ if (!e.server_id)
859
+ return c("openGiftBag", "server_id is required", e);
860
+ const n = It(e);
861
+ return u(
862
+ "openGiftBag",
863
+ { user_id: e.user_id, openBag: e.openBag, server_id: e.server_id },
864
+ e,
865
+ { since: "4.4.0", queue: "serial" }
866
+ ).catch((t) => {
867
+ throw n(), t;
868
+ });
869
+ }
870
+ let N;
871
+ function It(e) {
872
+ N == null || N();
873
+ const { onSent: n } = e;
874
+ let t;
875
+ const r = () => t == null ? void 0 : t();
876
+ return n && (t = h("openGiftBag", (i) => n(i), { since: "4.4.0" })), N = r, r;
877
+ }
878
+ function Et(e) {
879
+ Le("getMemberActivate", e, "4.4.0");
880
+ }
881
+ function kt() {
882
+ pn("getMemberActivate", "4.4.0");
883
+ }
884
+ const Ct = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
885
+ __proto__: null,
886
+ bindGameRoleSuccess: bt,
887
+ getCurrentCircleInfo: ut,
888
+ getToken: ot,
889
+ login: it,
890
+ offMemberActivate: kt,
891
+ onMemberActivate: Et,
892
+ openAddCustomEmoji: at,
893
+ openCommentPanel: lt,
894
+ openFriendsList: yt,
895
+ openGiftBag: Pt,
896
+ shareImage: dt,
897
+ shareWebCard: st,
898
+ showAd: mt,
899
+ showLongVipDesDialog: ft,
900
+ toBindGameRole: pt,
901
+ updateData: vt,
902
+ voteAction: gt
903
+ }, Symbol.toStringTag, { value: "Module" })), St = "community-open-app", At = "https://app.docoi.cc/open-app", qt = /quark|qqbrowser|ucbrowser/, _t = 2e3;
904
+ function Ot(e, n) {
905
+ if (window.location.href = e, !n) return;
906
+ let t = !1;
907
+ const r = () => {
908
+ t || (t = !0, window.removeEventListener("pagehide", r), document.removeEventListener("visibilitychange", i));
909
+ }, i = () => {
910
+ document.hidden && r();
911
+ };
912
+ window.addEventListener("pagehide", r), document.addEventListener("visibilitychange", i), setTimeout(() => {
913
+ t || (r(), n());
914
+ }, _t);
915
+ }
916
+ function Rt(e, n) {
917
+ if (yn()) {
918
+ window.parent.postMessage({ type: St, params: e.query }, "*");
919
+ return;
920
+ }
921
+ const t = navigator.userAgent.toLowerCase(), r = t.includes("micromessenger") || t.includes("qq/");
922
+ if (Me() === "ios" && !r && !qt.test(t)) {
923
+ const i = e.url.includes("?") ? e.url.slice(e.url.indexOf("?")) : "";
924
+ window.location.href = `${At}${i}`;
925
+ return;
926
+ }
927
+ Ot(e.url, n);
928
+ }
929
+ const ve = "daoke://", xe = {
930
+ joinCirclePage: {
931
+ type: 1,
932
+ name: "查询圈子并加入",
933
+ since: "2.0.0",
934
+ fields: {
935
+ serverId: { key: "cid", required: !0 },
936
+ inviteCode: { key: "inviteCode", required: !0 }
937
+ }
938
+ },
939
+ dynamicDetailPage: {
940
+ type: 2,
941
+ name: "动态详情",
942
+ fields: {
943
+ dynamicId: { key: "dynamicid", required: !0 },
944
+ commentId: { key: "commentid" }
945
+ }
946
+ },
947
+ circleHomePage: {
948
+ type: 3,
949
+ name: "圈子主页",
950
+ fields: {
951
+ serverId: { key: "cid", required: !0 },
952
+ action: { key: "actionType", enum: { publish: "1" } },
953
+ publishType: { key: "publishType" },
954
+ relationType: {
955
+ key: "relationType",
956
+ enum: { apprentice: "1", graduate: "2", intimacyShare: "3", takeApprentice: "4" }
957
+ },
958
+ imageUrl: { key: "imageUrl" }
959
+ }
960
+ },
961
+ topicPage: { type: 7, name: "动态话题", fields: { topicId: { key: "topicId", required: !0 } } },
962
+ guideCatalogPage: {
963
+ type: 10,
964
+ name: "攻略一级分类",
965
+ fields: {
966
+ serverId: { key: "server_id", required: !0 },
967
+ channelId: { key: "circle_channel_id", required: !0 },
968
+ catalogId: { key: "catalog_id", required: !0 }
969
+ }
970
+ },
971
+ userHomePage: {
972
+ type: 11,
973
+ name: "用户主页",
974
+ fields: {
975
+ userId: { key: "user_id", required: !0 },
976
+ giftId: { key: "selected_gift_id" }
977
+ }
978
+ },
979
+ groupChatPage: {
980
+ type: 12,
981
+ name: "群聊",
982
+ fields: {
983
+ serverId: { key: "server_id", required: !0 },
984
+ groupId: { key: "groupID", required: !0 },
985
+ groupName: { key: "group_name" }
986
+ }
987
+ },
988
+ joinGroupPage: { type: 13, name: "查询小群并加入", fields: { inviteCode: { key: "inviteCode", required: !0 } } },
989
+ homePage: {
990
+ type: 14,
991
+ name: "新版首页",
992
+ fields: {
993
+ // 三个字段表里均为选填;serverId / channelId 4.4.0 新增,旧版忽略;取代已弃用的 type 8
994
+ tab: { key: "tabIndex", enum: { official: "0", community: "1" } },
995
+ serverId: { key: "serverId" },
996
+ channelId: { key: "channelId" }
997
+ }
998
+ },
999
+ coinRechargePage: { type: 15, name: "金币充值", fields: {} },
1000
+ myPublishPage: { type: 16, name: "我的-发布", fields: {} },
1001
+ gamePushSettingPage: { type: 17, name: "游戏离线推送开关", fields: { serverId: { key: "serverId", required: !0 } } },
1002
+ myFavoritePage: { type: 19, name: "我的-收藏", since: "3.8.0", fields: {} },
1003
+ douyinMallPage: { type: 20, name: "抖音商城", since: "3.8.0", fields: {} },
1004
+ activityCenterPage: {
1005
+ type: 21,
1006
+ name: "活动中心",
1007
+ since: "3.9.0",
1008
+ fields: { tab: { key: "tab", enum: { welfare: "0", activity: "1" } } }
1009
+ },
1010
+ gameSubscribePage: { type: 22, name: "游戏消息订阅", since: "3.8.0", fields: {} },
1011
+ privateChatPage: {
1012
+ type: 25,
1013
+ name: "私聊",
1014
+ since: "4.1.0",
1015
+ fields: {
1016
+ userId: { key: "userId", required: !0 },
1017
+ nickName: { key: "nickName", required: !0 }
1018
+ }
1019
+ },
1020
+ browseHistoryPage: { type: 26, name: "浏览记录", since: "4.4.0", fields: {} },
1021
+ profileEditPage: { type: 27, name: "资料编辑", since: "4.4.0", fields: {} },
1022
+ likeListPage: {
1023
+ type: 28,
1024
+ name: "点赞列表",
1025
+ since: "4.4.0",
1026
+ fields: {
1027
+ dynamicId: { key: "dynamicId", required: !0 },
1028
+ publishType: { key: "publishType", required: !0 }
1029
+ }
1030
+ },
1031
+ adPage: {
1032
+ type: 29,
1033
+ name: "广告页",
1034
+ since: "4.4.0",
1035
+ fields: { url: { key: "url", required: !0 } }
1036
+ },
1037
+ coinDetailPage: { type: 30, name: "金币明细", fields: {} },
1038
+ miniGamesPage: { type: 31, name: "小游戏集合", fields: {} },
1039
+ bindGamePage: {
1040
+ type: 32,
1041
+ name: "绑定游戏",
1042
+ since: "4.4.0",
1043
+ fields: {
1044
+ serverId: { key: "serverId", required: !0 },
1045
+ gameName: { key: "gameName", required: !0 }
1046
+ }
1047
+ },
1048
+ playerReportPage: {
1049
+ type: 33,
1050
+ name: "玩家举报",
1051
+ since: "4.4.0",
1052
+ fields: {
1053
+ objectId: { key: "objectId", required: !0 },
1054
+ objectType: {
1055
+ key: "objectType",
1056
+ required: !0,
1057
+ enum: { user: "user", circle: "circle", comment: "comment", trends: "trends", message: "message" }
1058
+ },
1059
+ // conversationId 举报会话时需要,serverId 举报服务器时需要,表里均为选填
1060
+ conversationId: { key: "conversationId" },
1061
+ serverId: { key: "serverId" }
1062
+ }
1063
+ },
1064
+ addCustomEmojiPage: { type: 34, name: "添加自定义表情", since: "4.4.0", fields: {} },
1065
+ dynamicPublishPage: {
1066
+ type: 35,
1067
+ name: "动态发布",
1068
+ since: "4.4.0",
1069
+ fields: {
1070
+ serverId: { key: "serverId", required: !0 },
1071
+ channelId: { key: "channelId" },
1072
+ publishType: { key: "publishType" }
1073
+ }
1074
+ }
1075
+ }, Tt = {
1076
+ type: 18,
1077
+ name: "底部 tab",
1078
+ since: "3.7.0",
1079
+ fields: {
1080
+ tab: { key: "tab", required: !0, enum: { home: "0", discover: "1", message: "2", mine: "3" } },
1081
+ // subTab / form_mbti_share 3.8.0 新增,旧版忽略
1082
+ subTab: { key: "subTab", enum: { friends: "1_0", square: "1_1", comic: "1_2" } },
1083
+ fromMbtiShare: { key: "form_mbti_share", bool: !0 }
1084
+ }
1085
+ }, Mt = {
1086
+ type: 5,
1087
+ name: "Webview",
1088
+ fields: {
1089
+ url: { key: "url", required: !0 },
1090
+ type: { key: "h5Type", required: !0, enum: { normal: "1", mini: "2", dynamic: "3", immersive: "4" } },
1091
+ isUpdateApp: { key: "isUpdateApp", bool: !0 }
1092
+ }
1093
+ }, Lt = {
1094
+ type: 23,
1095
+ name: "纯透明 H5",
1096
+ since: "3.8.0",
1097
+ fields: { url: { key: "url", required: !0 } }
1098
+ }, q = {
1099
+ ...xe,
1100
+ tab: Tt,
1101
+ webview: Mt,
1102
+ transparentWebview: Lt
1103
+ }, Bt = Object.fromEntries(
1104
+ Object.keys(q).map((e) => [String(q[e].type), e])
1105
+ );
1106
+ function Dt(e) {
1107
+ const n = Bt[e];
1108
+ return n ? { key: n, route: q[n] } : void 0;
1109
+ }
1110
+ const Ue = "daoke://page";
1111
+ class p extends Error {
1112
+ }
1113
+ function x(e, n = {}) {
1114
+ const t = { type: String(e.type) };
1115
+ for (const [r, i] of Object.entries(e.fields)) {
1116
+ const o = n[r];
1117
+ if (o == null || o === "") {
1118
+ if (i.required) throw new p(`${r} is required`);
1119
+ continue;
1120
+ }
1121
+ if (i.enum) {
1122
+ const s = i.enum[String(o)];
1123
+ if (s === void 0) throw new p(`${r} must be one of ${Object.keys(i.enum).join(" / ")}`);
1124
+ t[i.key] = s;
1125
+ } else if (i.bool)
1126
+ t[i.key] = o ? "true" : "false";
1127
+ else {
1128
+ if (P(o))
1129
+ throw new p(`${r} must be a string or number`);
1130
+ t[i.key] = String(o);
1131
+ }
1132
+ }
1133
+ return t;
1134
+ }
1135
+ function U(e) {
1136
+ const n = Object.entries(e).map(([t, r]) => `${encodeURIComponent(t)}=${encodeURIComponent(r)}`).join("&");
1137
+ return { url: `${Ue}?${n}`, query: e };
1138
+ }
1139
+ function He(e) {
1140
+ if (!f(e) || !e.startsWith(Ue)) return null;
1141
+ const n = e.indexOf("?");
1142
+ if (n < 0) return null;
1143
+ const t = {};
1144
+ for (const r of e.slice(n + 1).split("&")) {
1145
+ if (!r) continue;
1146
+ const i = r.indexOf("="), o = ae(i < 0 ? r : r.slice(0, i));
1147
+ o && !(o in t) && (t[o] = i < 0 ? "" : ae(r.slice(i + 1)));
1148
+ }
1149
+ return t.type && /^\d+$/.test(t.type) ? t : null;
1150
+ }
1151
+ function jt(e) {
1152
+ return "type" in e && !("url" in e);
1153
+ }
1154
+ function $t(e) {
1155
+ if (!P(e == null ? void 0 : e.params)) throw new p("params is required");
1156
+ switch (e.api) {
1157
+ case "switchTab":
1158
+ return U(x(q.tab, { ...e.params.params, tab: e.params.tab }));
1159
+ case "openWebview": {
1160
+ const { url: n, type: t = "normal", params: r } = e.params;
1161
+ if (!n || !f(n)) throw new p("url is required");
1162
+ if (t !== "transparent") return U(x(q.webview, { ...r, url: n, type: t }));
1163
+ if (!n.startsWith("https://")) throw new p("transparent webview url must be https");
1164
+ if (r && Object.keys(r).length) throw new p("transparent webview does not support params");
1165
+ return U(x(q.transparentWebview, { url: n }));
1166
+ }
1167
+ case "navigateTo": {
1168
+ if (jt(e.params)) {
1169
+ const t = xe[e.params.type];
1170
+ if (!t) throw new p(`unknown page type: ${String(e.params.type)}`);
1171
+ return U(x(t, e.params.params));
1172
+ }
1173
+ const n = He(e.params.url);
1174
+ if (!n) throw new p("url or type is required, url must be a daoke://page?type= link");
1175
+ return { url: e.params.url, query: n };
1176
+ }
1177
+ default:
1178
+ throw new p("unknown navigation api");
1179
+ }
1180
+ }
1181
+ const L = "4.4.0", Nt = 11, xt = {
1182
+ dynamicPublishPage: { page: 7, params: (e) => ({ server_id: e.serverId, channel_id: e.channelId }) },
1183
+ profileEditPage: { page: 10 },
1184
+ douyinMallPage: { page: 14 },
1185
+ likeListPage: { page: 15, params: (e) => ({ dynamicId: e.dynamicId, publishType: e.publishType }) },
1186
+ adPage: { page: 16, params: (e) => ({ url: e.url }) }
1187
+ }, Ut = {
1188
+ bindGamePage: { method: "pointsMallBindGame", data: (e) => ({ gameName: e.gameName, serverId: e.serverId }) },
1189
+ addCustomEmojiPage: { method: "openAddCustomEmoji", data: () => ({}) }
1190
+ };
1191
+ function Ht(e, n) {
1192
+ var r, i, o;
1193
+ const t = Dt((r = n.type) != null ? r : "");
1194
+ if (t && Re(t.route.since)) {
1195
+ const s = Ut[t.key];
1196
+ if (s) return { via: "legacyMethod", method: s.method, data: s.data(n) };
1197
+ const d = xt[t.key];
1198
+ if (!d) {
1199
+ const { name: a, type: y, since: A } = t.route;
1200
+ return { via: "unsupported", reason: `${a}(type ${y})需要 App ${A}+` };
1201
+ }
1202
+ return { via: "redirectPage", page: d.page, params: (o = (i = d.params) == null ? void 0 : i.call(d, n)) != null ? o : {} };
1203
+ }
1204
+ return Me() === "ios" ? { via: "redirectPage", page: Nt, params: { url: e } } : { via: "locationHref" };
1205
+ }
1206
+ function Ft(e, n) {
1207
+ return Oe() ? w(L) ? Ht(e.url, e.query) : { via: "openScheme", extra: n } : { via: "launchOutsideApp" };
1208
+ }
1209
+ function Wt(e, n, t, r) {
1210
+ switch (n.via) {
1211
+ case "launchOutsideApp":
1212
+ return te(e, { url: t.url }, () => Rt(t, r == null ? void 0 : r.onLaunchFail), r);
1213
+ case "openScheme":
1214
+ return u("openScheme", { url: t.url, ...n.extra }, r, { queue: "serial" });
1215
+ case "redirectPage":
1216
+ return u("redirectPage", { page: n.page, params: n.params }, r, {
1217
+ since: L,
1218
+ queue: "serial"
1219
+ });
1220
+ case "legacyMethod":
1221
+ return u(n.method, n.data, r, { since: L, queue: "serial" });
1222
+ case "locationHref":
1223
+ return te(e, { url: t.url }, () => {
1224
+ window.location.href = t.url;
1225
+ }, r);
1226
+ case "unsupported":
1227
+ return ue(e, n.reason, r);
1228
+ }
1229
+ }
1230
+ function Fe(e, n, t, r = {}) {
1231
+ const i = Ft(n, r);
1232
+ return Wt(e, i, n, t);
1233
+ }
1234
+ function se(e, n) {
1235
+ let t;
1236
+ try {
1237
+ t = $t(e);
1238
+ } catch (r) {
1239
+ return c(e.api, r instanceof p ? r.message : String(r), n);
1240
+ }
1241
+ return Fe(e.api, t, n);
1242
+ }
1243
+ function Gt(e) {
1244
+ return se({ api: "switchTab", params: e }, e);
1245
+ }
1246
+ function Vt(e) {
1247
+ return se({ api: "navigateTo", params: e }, e);
1248
+ }
1249
+ function Jt(e) {
1250
+ return se({ api: "openWebview", params: e }, e);
1251
+ }
1252
+ function Kt(e) {
1253
+ var r;
1254
+ const { url: n, params: t } = e != null ? e : {};
1255
+ return !f(n) || !n.startsWith(ve) ? c("openScheme", `url must start with ${ve}`, e) : Fe("openScheme", { url: n, query: (r = He(n)) != null ? r : {} }, e, t ? { params: t } : {});
1256
+ }
1257
+ function zt(e) {
1258
+ return e != null && e.url ? u("openInExternalBrowser", { url: e.url }, e, {
1259
+ since: L,
1260
+ queue: "serial"
1261
+ }) : c("openInExternalBrowser", "url is required", e);
1262
+ }
1263
+ function Yt(e) {
1264
+ return u("closeWebView", {}, e, { since: L, queue: "serial" });
333
1265
  }
334
- const ae = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1266
+ const Xt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
335
1267
  __proto__: null,
336
- getCurrentCircleInfo: le,
337
- getToken: fe,
338
- login: se,
339
- openAddCustomEmoji: ge,
340
- shareImage: ce,
341
- shareWebCard: de,
342
- showAd: ye,
343
- toBindGameRole: he
344
- }, Symbol.toStringTag, { value: "Module" })), we = {
345
- ...ue,
346
- ...ae,
347
- setDebug: H,
348
- registerNativeHandler: _
1268
+ closeWebView: Yt,
1269
+ navigateTo: Vt,
1270
+ openInExternalBrowser: zt,
1271
+ openScheme: Kt,
1272
+ openWebview: Jt,
1273
+ switchTab: Gt
1274
+ }, Symbol.toStringTag, { value: "Module" })), ur = {
1275
+ ...rt,
1276
+ ...Xt,
1277
+ ...Ct,
1278
+ setDebug: hn,
1279
+ registerNativeHandler: Be
349
1280
  };
350
1281
  export {
351
- Se as CUSTOM,
352
- Ie as JSBridgeSdk,
353
- Pe as METHOD_NOT_FOUND,
354
- ve as NETWORK_ERROR,
355
- be as NOT_LOGGED_IN,
356
- A as PARAMS_ERROR,
357
- qe as PERMISSION_DENIED,
358
- v as SUCCESS,
359
- S as SYSTEM_EXCEPTION,
360
- E as ToastDuration,
361
- u as bridge,
362
- re as checkPermission,
363
- J as chooseMedia,
364
- ie as closeWebView,
365
- we as default,
366
- te as getClipboardData,
367
- le as getCurrentCircleInfo,
368
- p as getNetworkType,
369
- Z as getSystemInfo,
370
- fe as getToken,
371
- F as hideKeyboard,
372
- se as login,
373
- W as offCommentPanelChange,
374
- k as offKeyboardHeightChange,
375
- G as onCommentPanelChange,
376
- $ as onKeyboardHeightChange,
377
- ge as openAddCustomEmoji,
378
- oe as openInExternalBrowser,
379
- ne as openPhoneSetting,
380
- K as previewImage,
381
- z as previewVideo,
382
- _ as registerNativeHandler,
383
- U as saveImageToPhotosAlbum,
384
- X as saveVideoToPhotosAlbum,
385
- ee as setClipboardData,
386
- H as setDebug,
387
- ce as shareImage,
388
- de as shareWebCard,
389
- ye as showAd,
390
- x as showToast,
391
- Y as startRecord,
392
- Q as stopRecord,
393
- j as stopVibrate,
394
- he as toBindGameRole,
395
- V as triggerVibrate,
396
- L as uploadFiles
1282
+ z as BRIDGE_ERROR,
1283
+ Ie as CUSTOM,
1284
+ Je as ENV_UNSUPPORTED,
1285
+ Ge as METHOD_NOT_FOUND,
1286
+ nr as NETWORK_ERROR,
1287
+ Zt as NOT_LOGGED_IN,
1288
+ Ve as PARAMS_ERROR,
1289
+ er as PERMISSION_DENIED,
1290
+ tr as RECORD_BUSY,
1291
+ rr as RECORD_FAILED,
1292
+ Pe as SUCCESS,
1293
+ re as SYSTEM_EXCEPTION,
1294
+ H as ShareType,
1295
+ je as ToastDuration,
1296
+ bt as bindGameRoleSuccess,
1297
+ $n as cancelRecordAudio,
1298
+ Fn as checkPermission,
1299
+ Rn as chooseMedia,
1300
+ Yt as closeWebView,
1301
+ gn as compareVersions,
1302
+ ur as default,
1303
+ B as getAppBaseInfo,
1304
+ zn as getBeforeInfo,
1305
+ Un as getClipboardData,
1306
+ ut as getCurrentCircleInfo,
1307
+ Nn as getSystemInfo,
1308
+ ot as getToken,
1309
+ Kn as h5Loaded,
1310
+ kn as hideKeyboard,
1311
+ or as invokeDebug,
1312
+ Oe as isInApp,
1313
+ it as login,
1314
+ Vt as navigateTo,
1315
+ qn as offCommentPanelChange,
1316
+ Sn as offKeyboardHeightChange,
1317
+ kt as offMemberActivate,
1318
+ tt as offPageInvisible,
1319
+ Qn as offPageShow,
1320
+ et as offPageVisible,
1321
+ An as onCommentPanelChange,
1322
+ Cn as onKeyboardHeightChange,
1323
+ Et as onMemberActivate,
1324
+ nt as onPageInvisible,
1325
+ Xn as onPageShow,
1326
+ Zn as onPageVisible,
1327
+ ir as onRoute,
1328
+ at as openAddCustomEmoji,
1329
+ Gn as openApp,
1330
+ lt as openCommentPanel,
1331
+ yt as openFriendsList,
1332
+ Pt as openGiftBag,
1333
+ zt as openInExternalBrowser,
1334
+ Wn as openPhoneSetting,
1335
+ Kt as openScheme,
1336
+ Jt as openWebview,
1337
+ _n as previewImage,
1338
+ On as previewVideo,
1339
+ Be as registerNativeHandler,
1340
+ Ln as saveImageToPhotosAlbum,
1341
+ Yn as setBeforeInfo,
1342
+ xn as setClipboardData,
1343
+ hn as setDebug,
1344
+ dt as shareImage,
1345
+ st as shareWebCard,
1346
+ mt as showAd,
1347
+ ft as showLongVipDesDialog,
1348
+ Jn as showPageName,
1349
+ Pn as showToast,
1350
+ Dn as startRecordAudio,
1351
+ jn as stopRecordAudio,
1352
+ En as stopVibrate,
1353
+ Vn as swipeBack,
1354
+ Gt as switchTab,
1355
+ pt as toBindGameRole,
1356
+ In as triggerVibrate,
1357
+ vt as updateData,
1358
+ Tn as uploadFiles,
1359
+ gt as voteAction
397
1360
  };