bilitoolkit-ui 0.0.1 → 0.0.3

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 (47) hide show
  1. package/LICENSE +21 -201
  2. package/README.md +1 -1
  3. package/dist/bilitoolkit-ui.css +1 -6
  4. package/dist/common.d.ts +26 -0
  5. package/dist/common.js +22 -0
  6. package/dist/favicon.ico +0 -0
  7. package/dist/index.d.ts +1445 -28
  8. package/dist/index.js +1472 -0
  9. package/dist/styles/animations.scss +9 -0
  10. package/dist/styles/mixins.scss +36 -13
  11. package/package.json +40 -40
  12. package/dist/api/toolkit-api.d.ts +0 -2
  13. package/dist/bilitoolkit-ui.js +0 -117707
  14. package/dist/bilitoolkit-ui.umd.cjs +0 -85
  15. package/dist/common/ui-constants.d.ts +0 -9
  16. package/dist/components/bili/BiliAccountCard.vue.d.ts +0 -18
  17. package/dist/components/bili/types.d.ts +0 -7
  18. package/dist/components/common/AppIcon.vue.d.ts +0 -9
  19. package/dist/components/common/AppTooltip.vue.d.ts +0 -25
  20. package/dist/components/common/ExternalLink.vue.d.ts +0 -20
  21. package/dist/components/common/IconButton.vue.d.ts +0 -27
  22. package/dist/components/common/IconLabel.vue.d.ts +0 -20
  23. package/dist/components/common/LogPrint.vue.d.ts +0 -5
  24. package/dist/components/dialog/countdown/CountdownDialog.vue.d.ts +0 -22
  25. package/dist/components/dialog/countdown/types.d.ts +0 -11
  26. package/dist/components/dialog/countdown/useCountdown.d.ts +0 -9
  27. package/dist/components/dialog/loading/LoadingDialog.vue.d.ts +0 -16
  28. package/dist/components/dialog/loading/loadingService.d.ts +0 -12
  29. package/dist/components/dialog/loading/types.d.ts +0 -21
  30. package/dist/components/plugin/PluginMenuItem.vue.d.ts +0 -3
  31. package/dist/components/plugin/PluginMenus.vue.d.ts +0 -25
  32. package/dist/components/plugin/PluginPageContent.vue.d.ts +0 -17
  33. package/dist/components/plugin/PluginPageHeader.vue.d.ts +0 -7
  34. package/dist/components/plugin/types.d.ts +0 -12
  35. package/dist/components/settings/SettingGroup.vue.d.ts +0 -20
  36. package/dist/components/settings/SettingItem.vue.d.ts +0 -22
  37. package/dist/composables/useLoadingData.d.ts +0 -4
  38. package/dist/main.d.ts +0 -0
  39. package/dist/stores/app-theme.d.ts +0 -31
  40. package/dist/stores/selected-account.d.ts +0 -26
  41. package/dist/stores/test-data.d.ts +0 -70
  42. package/dist/test/menus.d.ts +0 -2
  43. package/dist/test/user.d.ts +0 -12
  44. package/dist/ui.d.ts +0 -10
  45. package/dist/utils/app-utils.d.ts +0 -20
  46. package/dist/utils/theme-utils.d.ts +0 -10
  47. package/dist/views/HomeView.vue.d.ts +0 -2
package/dist/index.js ADDED
@@ -0,0 +1,1472 @@
1
+ import { reactive as ce, watch as F, ref as B, onMounted as le, onUnmounted as re, computed as x, toValue as Z, shallowRef as et, defineComponent as k, openBlock as i, createElementBlock as p, createElementVNode as c, toDisplayString as h, renderSlot as C, normalizeClass as G, createVNode as g, createCommentVNode as D, useModel as ue, createBlock as b, withCtx as d, unref as y, createTextVNode as H, mergeModels as j, useTemplateRef as X, withDirectives as K, Fragment as O, renderList as ee, normalizeStyle as Qe, toRaw as tt, render as te, vShow as Pe, nextTick as Ae, useCssVars as lt, mergeProps as J, normalizeProps as st, guardReactiveProps as nt, withModifiers as he, useSlots as Ve, useAttrs as at } from "vue";
2
+ import { defineStore as Te, storeToRefs as ot } from "pinia";
3
+ import { defaultAppThemeState as $e, APP_THEME_STATE as ze, UI_DB_KEYS as Ie } from "./common.js";
4
+ import { setupToolkitApi as ct } from "bilitoolkit-runtime";
5
+ import ye from "lodash-es/cloneDeep";
6
+ import "element-plus/theme-chalk/dark/css-vars.css";
7
+ import "element-plus/theme-chalk/el-loading.css";
8
+ import "element-plus/theme-chalk/el-message.css";
9
+ import "element-plus/theme-chalk/el-message-box.css";
10
+ import { ElMessageBox as it, ElMessage as rt, ElTable as ut } from "element-plus";
11
+ import { BiliApiBusinessError as dt } from "@ybgnb/bili-api";
12
+ import { isCanceledError as vt, getErrorMessage as pt, createAbortError as gt, serializeError as mt, getFormattedDateTime as ft } from "@ybgnb/utils";
13
+ import { AppError as ht } from "bilitoolkit-types";
14
+ import { ElDialog as we, ElButton as de, ElLoadingDirective as xe, ElRow as _t, ElCol as At, ElInput as yt, ElTooltip as Le, ElPopconfirm as wt, ElMenuItem as Re, ElSubMenu as xt, ElMenu as bt, ElPopover as Et, ElDropdown as Ct, ElDropdownMenu as Bt, ElDropdownItem as kt, ElTableColumn as St, ElEmpty as Qt, ElPagination as Pt } from "element-plus/es";
15
+ import "element-plus/es/components/base/style/css";
16
+ import "element-plus/es/components/dialog/style/css";
17
+ import "element-plus/es/components/button/style/css";
18
+ import "element-plus/es/components/loading/style/css";
19
+ import "element-plus/es/components/row/style/css";
20
+ import "element-plus/es/components/col/style/css";
21
+ import "element-plus/es/components/input/style/css";
22
+ import "element-plus/es/components/tooltip/style/css";
23
+ import "element-plus/es/components/popconfirm/style/css";
24
+ import "element-plus/es/components/sub-menu/style/css";
25
+ import "element-plus/es/components/menu-item/style/css";
26
+ import "element-plus/es/components/menu/style/css";
27
+ import "element-plus/es/components/dropdown/style/css";
28
+ import "element-plus/es/components/dropdown-menu/style/css";
29
+ import "element-plus/es/components/dropdown-item/style/css";
30
+ import "element-plus/es/components/popover/style/css";
31
+ import "element-plus/es/components/pagination/style/css";
32
+ import "element-plus/es/components/empty/style/css";
33
+ import "element-plus/es/components/table-column/style/css";
34
+ const R = ct();
35
+ var E = (e, n, t, l = "srgb", a) => `color-mix(in ${l}, ${e} ${t}%, ${n} ${100 - t}%)`, qe = (e) => {
36
+ let n = parseInt(e.slice(1, 3), 16), t = parseInt(e.slice(3, 5), 16), l = parseInt(e.slice(5, 7), 16);
37
+ return { r: n, g: t, b: l };
38
+ }, zt = (e, n) => {
39
+ document.documentElement.style.setProperty(e, n);
40
+ };
41
+ const Me = "#ffffff", De = "#000000", me = (e, n, t) => {
42
+ const { r: l, g: a, b: s } = qe(e);
43
+ for (let o = 2; o < 100; ) {
44
+ const r = o / 100;
45
+ n[`${t}-transparent-${o}`] = `rgba(${l}, ${a}, ${s}, ${r})`, o >= 10 ? o += 5 : o++;
46
+ }
47
+ }, be = (e, n, t) => {
48
+ const l = {};
49
+ t ? document.documentElement.classList.add("dark") : document.documentElement.classList.remove("dark");
50
+ const a = l["--app-color-foreground"] = t ? Me : De, s = l["--app-color-background"] = t ? De : Me;
51
+ l["--app-primary-color"] = e, l["--el-color-primary"] = e, l["--el-color-primary-light-1"] = E(e, s, 90), l["--el-color-primary-light-2"] = E(e, s, 80), l["--el-color-primary-light-3"] = E(e, s, 70), l["--el-color-primary-light-4"] = E(e, s, 60), l["--el-color-primary-light-5"] = E(e, s, 50), l["--el-color-primary-light-6"] = E(e, s, 40), l["--el-color-primary-light-7"] = E(e, s, 30), l["--el-color-primary-light-8"] = E(e, s, 20), l["--el-color-primary-light-9"] = E(e, s, 12), l["--el-color-primary-dark-1"] = E(e, a, 90), l["--el-color-primary-dark-2"] = E(e, a, 80), l["--el-color-primary-dark-3"] = E(e, a, 70), l["--el-color-primary-dark-4"] = E(e, a, 60), l["--el-color-primary-dark-5"] = E(e, a, 50), l["--el-color-primary-dark-6"] = E(e, a, 40), l["--el-color-primary-dark-7"] = E(e, a, 30), l["--el-color-primary-dark-8"] = E(e, a, 20), l["--el-color-primary-dark-9"] = E(e, a, 12);
52
+ const { r: o, g: r, b: u } = qe(e);
53
+ l["--app-bg-color-overlay"] = `rgba(${o}, ${r}, ${u}, 0.05)`, l["--app-bg-color-overlay-hover"] = `rgba(${o}, ${r}, ${u}, 0.15)`, l["--app-bg-color-page"] = t ? "var(--el-fill-color-blank)" : "transparent", l["--app-bg-color-menus"] = "var(--app-bg-color-page)", t ? l["--app-text-shadow"] = " 0px 1px 2px rgba(255, 255, 255, .4)" : l["--app-text-shadow"] = " 0px 1px 2px rgba(0, 0, 0, .4)", me(e, l, "--app-color-primary"), me(s, l, "--app-color-background"), me(a, l, "--app-color-foreground");
54
+ for (const v in l)
55
+ zt(v, l[v]);
56
+ }, Ee = async (e) => {
57
+ const n = e ?? (await R.system.getAppThemeState()).themeMode;
58
+ return n === "system" ? await R.system.shouldUseDarkColors() : n === "dark";
59
+ }, ie = async (e) => {
60
+ const n = e ?? await R.system.getAppThemeState(), t = await Ee(n.themeMode);
61
+ be(n.primaryColor, n.themeMode, t);
62
+ }, zs = async () => {
63
+ await ie(void 0);
64
+ }, Is = async () => {
65
+ await ie($e);
66
+ }, Ms = async (e) => {
67
+ const t = ve().state, l = await Ee(e);
68
+ t.dark = l, t.themeMode = e, be(t.primaryColor, e, l);
69
+ }, Ds = async (e) => {
70
+ const t = ve().state, l = await Ee(t.themeMode);
71
+ t.primaryColor = e, be(e, t.themeMode, l);
72
+ }, ve = Te(
73
+ "biliToolkit-ui-theme",
74
+ () => {
75
+ const e = ce($e);
76
+ let n = !1;
77
+ const t = async (s, o) => {
78
+ const r = await window.toolkitApi.system.getAppThemeState();
79
+ Object.assign(e, r), await ie(r), s && o && (n = !0, F(
80
+ () => e,
81
+ (u) => {
82
+ const v = ye(u);
83
+ window.toolkitApi.db.write(s, v).then(async () => {
84
+ await window.toolkitApi.event.emit(o, v);
85
+ });
86
+ },
87
+ { deep: !0 }
88
+ ));
89
+ };
90
+ window.toolkitApi.event.onUpdateAppTheme((s) => {
91
+ n || Object.assign(e, s), ie(s).then();
92
+ }).catch();
93
+ const l = (s) => (e.primaryColor = s, e.primaryColor);
94
+ return { init: t, state: e, switchThemeColor: () => {
95
+ e.primaryColorIndex = (e.primaryColorIndex + 1) % ze.primaryColors.length;
96
+ const s = ze.primaryColors[e.primaryColorIndex];
97
+ return l(s);
98
+ }, setPrimaryColor: l };
99
+ },
100
+ {
101
+ // 自己实现配置的持久化
102
+ persist: !1
103
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
104
+ }
105
+ ), Ue = Te("biliToolkit-ui-selected-user", () => {
106
+ const e = B(null), n = async () => {
107
+ try {
108
+ e.value = (await window.toolkitApi.db.init(Ie.UI_SELECTED_USER))?.user ?? null;
109
+ } catch {
110
+ }
111
+ };
112
+ return F(
113
+ () => e.value,
114
+ async (a) => {
115
+ await window.toolkitApi.db.write(Ie.UI_SELECTED_USER, {
116
+ user: a != null ? ye(a) : null
117
+ });
118
+ },
119
+ { deep: !0 }
120
+ ), { init: n, user: e, deleteUser: () => {
121
+ e.value = null;
122
+ }, setUser: (a) => {
123
+ e.value = a;
124
+ } };
125
+ }), Hs = async (e, n) => (Promise.resolve({ }), Promise.resolve({ }), Promise.resolve({ }), await ve(e).init(n?.appThemeDBName, n?.appThemeUpdateEvent), await Ue(e).init(), {
126
+ install(t) {
127
+ }
128
+ });
129
+ function It(e) {
130
+ R.system.saveLog({
131
+ level: "error",
132
+ data: [JSON.stringify(mt(e))]
133
+ }).catch();
134
+ }
135
+ function He(e, n) {
136
+ return e == null ? !1 : e instanceof n || typeof e == "object" && "name" in e && e.name === n.name;
137
+ }
138
+ const Vs = (e) => {
139
+ if (!vt(e))
140
+ if (e) {
141
+ console.error(e);
142
+ const n = () => {
143
+ R && R.system && It(e);
144
+ };
145
+ He(e, ht) ? Y(`${e.message}`) : He(e, dt) ? (Y(`${e.message} (${e.responseCode})`), n()) : (Y(pt(e)), n());
146
+ } else
147
+ Ce({
148
+ message: "未知错误",
149
+ type: "error"
150
+ });
151
+ };
152
+ function Ce(e) {
153
+ const n = {
154
+ message: "",
155
+ type: "success",
156
+ duration: 3e3
157
+ };
158
+ typeof e == "string" ? n.message = e : Object.assign(n, e), rt(n);
159
+ }
160
+ function Y(e) {
161
+ Ce({
162
+ message: e,
163
+ type: "error"
164
+ });
165
+ }
166
+ function Ts(e) {
167
+ Ce({
168
+ message: e,
169
+ type: "warning"
170
+ });
171
+ }
172
+ function Mt(e, n = "提示", t = {}) {
173
+ return new Promise((l, a) => {
174
+ it.confirm(
175
+ e,
176
+ n,
177
+ Object.assign(
178
+ {
179
+ autofocus: !1,
180
+ dangerouslyUseHTMLString: !0,
181
+ cancelButtonText: "取消",
182
+ confirmButtonText: "确定",
183
+ type: "warning"
184
+ },
185
+ t
186
+ )
187
+ ).then(() => {
188
+ l();
189
+ }).catch(() => {
190
+ a(gt());
191
+ });
192
+ });
193
+ }
194
+ async function $s(e) {
195
+ for (const [n, t, l] of e)
196
+ await Mt(n, t, l);
197
+ }
198
+ const Be = (e) => {
199
+ const n = e?.loading ?? B(!1);
200
+ let t = null;
201
+ const l = B(!1);
202
+ return {
203
+ loading: n,
204
+ hasLoaded: l,
205
+ loadingData: (s) => async (...o) => (e?.singleFlight && n.value && t || (t = (async () => {
206
+ n.value = !0;
207
+ try {
208
+ return typeof s == "function" ? await s(...o) : await s;
209
+ } finally {
210
+ n.value = !1, l.value = !0, t = null;
211
+ }
212
+ })()), t)
213
+ };
214
+ }, Ls = (e, n = 3e3) => {
215
+ const { loading: t, loadingData: l } = Be({ singleFlight: !0 }), a = l(e);
216
+ let s = null;
217
+ return le(async () => {
218
+ s = setInterval(a, n);
219
+ }), re(() => {
220
+ s && (clearInterval(s), s = null);
221
+ }), { loading: t, refreshTableData: a, reset: () => {
222
+ s && (clearInterval(s), s = null), a(), s = setInterval(a, n);
223
+ } };
224
+ }, Dt = (e) => {
225
+ const { fetchPage: n, pageParams: t, queryParams: l, autoLoad: a, onLoaded: s } = e, o = x(() => {
226
+ const w = Z(t);
227
+ return {
228
+ pageNum: w?.pageNum ?? 1,
229
+ pageSize: w?.pageSize ?? 20,
230
+ totalPages: 0,
231
+ total: 0
232
+ };
233
+ }), r = B(o.value), u = B([]), { loading: v, loadingData: m } = Be(), f = m(async () => {
234
+ const w = Z(l), V = {
235
+ pageNum: r.value.pageNum,
236
+ pageSize: r.value.pageSize
237
+ }, { data: P, ...I } = w ? await n(V, w) : await n(V);
238
+ u.value = P, r.value = I, s?.();
239
+ }), A = () => {
240
+ const { pageSize: w, ...V } = o.value;
241
+ Object.assign(r.value, V);
242
+ }, S = async () => {
243
+ A(), await f();
244
+ }, _ = async () => {
245
+ r.value.pageNum = 1, await f();
246
+ }, Q = async () => {
247
+ await f();
248
+ };
249
+ return a && le(async () => {
250
+ await S();
251
+ }), {
252
+ pageData: r,
253
+ tableData: u,
254
+ loading: v,
255
+ refresh: f,
256
+ resetAndRefresh: S,
257
+ handleSizeChange: _,
258
+ handleCurrPageChange: Q
259
+ };
260
+ }, Rs = (e, n) => {
261
+ const t = et([]);
262
+ function l(u) {
263
+ return t.value.includes(u);
264
+ }
265
+ function a(u) {
266
+ const v = t.value.indexOf(u);
267
+ v > -1 ? t.value = t.value.splice(v, 1) : t.value = [...t.value, u];
268
+ }
269
+ const s = B(!1);
270
+ F(
271
+ t,
272
+ () => {
273
+ const u = Z(e);
274
+ s.value = u.length > 0 && u.every((v) => t.value.includes(n(v)));
275
+ },
276
+ { immediate: !0 }
277
+ );
278
+ function o() {
279
+ if (s.value) {
280
+ const u = Z(e).map((v) => n(v));
281
+ t.value = u;
282
+ } else
283
+ t.value = [];
284
+ }
285
+ function r() {
286
+ return Z(e).filter((u) => t.value.includes(n(u)));
287
+ }
288
+ return {
289
+ selectedIds: t,
290
+ isSelected: l,
291
+ toggleSelect: a,
292
+ isAllSelected: s,
293
+ toggleAll: o,
294
+ getSelectedData: r
295
+ };
296
+ }, Ht = { class: "setting-group" }, Vt = { class: "setting-group__name" }, Tt = { class: "setting-group__list" }, qs = /* @__PURE__ */ k({
297
+ __name: "SettingGroup",
298
+ props: {
299
+ name: {}
300
+ },
301
+ setup(e) {
302
+ const n = e;
303
+ return (t, l) => (i(), p("div", Ht, [
304
+ c("div", Vt, h(n.name), 1),
305
+ c("div", Tt, [
306
+ C(t.$slots, "default")
307
+ ])
308
+ ]));
309
+ }
310
+ }), U = /* @__PURE__ */ k({
311
+ __name: "AppIcon",
312
+ props: {
313
+ icon: {}
314
+ },
315
+ setup(e) {
316
+ const n = e, t = ve(), l = x(() => t.state.dark ? `ri-${n.icon}-fill` : `ri-${n.icon}-line`);
317
+ return (a, s) => (i(), p("i", {
318
+ class: G([l.value, "icon-font"])
319
+ }, null, 2));
320
+ }
321
+ }), $t = { class: "setting-item" }, Lt = { class: "setting-item__content" }, Rt = { class: "setting-item__content__title" }, qt = {
322
+ key: 0,
323
+ class: "setting-item__content__desc"
324
+ }, Ut = { class: "setting-item__options" }, jt = /* @__PURE__ */ k({
325
+ __name: "SettingItem",
326
+ props: {
327
+ title: {},
328
+ desc: {},
329
+ iconClass: {}
330
+ },
331
+ setup(e) {
332
+ const n = e, t = B("equalizer-2");
333
+ return (l, a) => {
334
+ const s = U;
335
+ return i(), p("div", $t, [
336
+ g(s, {
337
+ class: "setting-item__icon",
338
+ icon: n.iconClass || t.value
339
+ }, null, 8, ["icon"]),
340
+ c("div", Lt, [
341
+ c("div", Rt, h(n.title), 1),
342
+ n.desc ? (i(), p("div", qt, h(n.desc), 1)) : D("", !0)
343
+ ]),
344
+ c("div", Ut, [
345
+ C(l.$slots, "default", {}, void 0, !0)
346
+ ])
347
+ ]);
348
+ };
349
+ }
350
+ }), N = (e, n) => {
351
+ const t = e.__vccOpts || e;
352
+ for (const [l, a] of n)
353
+ t[l] = a;
354
+ return t;
355
+ }, Us = /* @__PURE__ */ N(jt, [["__scopeId", "data-v-bb581bf5"]]);
356
+ function Ot(e) {
357
+ const n = B(e), t = B(null), l = (s) => {
358
+ n.value = e, t.value = setInterval(() => {
359
+ n.value > 1 ? n.value-- : (a(), s());
360
+ }, 1e3);
361
+ }, a = () => {
362
+ t.value && (clearInterval(t.value), t.value = null);
363
+ };
364
+ return re(a), { countdown: n, start: l, stop: a };
365
+ }
366
+ const Ft = { class: "dialog-footer" }, js = /* @__PURE__ */ k({
367
+ __name: "CountdownDialog",
368
+ props: /* @__PURE__ */ j({
369
+ content: {},
370
+ countdown: {},
371
+ title: { default: "提示" },
372
+ confirmBtnText: { default: "确定" },
373
+ cancelBtnText: { default: "取消" },
374
+ width: { default: 500 }
375
+ }, {
376
+ modelValue: { type: Boolean, required: !0 },
377
+ modelModifiers: {}
378
+ }),
379
+ emits: /* @__PURE__ */ j(["onConfirm", "onCancel"], ["update:modelValue"]),
380
+ setup(e, { expose: n, emit: t }) {
381
+ const l = e, a = ue(e, "modelValue"), s = t, { countdown: o, start: r, stop: u } = Ot(l.countdown);
382
+ let v = !1;
383
+ const m = (_) => {
384
+ v || (v = !0, u(), s(_ === "confirm" ? "onConfirm" : "onCancel", _), a.value = !1, v = !1);
385
+ }, f = () => m("confirm"), A = () => m("cancel"), S = () => {
386
+ a.value = !0, r(A);
387
+ };
388
+ return F(a, (_, Q) => {
389
+ _ && !Q && r(A);
390
+ }), n({ show: S }), (_, Q) => {
391
+ const w = de, V = we;
392
+ return i(), b(V, {
393
+ modelValue: a.value,
394
+ "onUpdate:modelValue": Q[0] || (Q[0] = (P) => a.value = P),
395
+ title: e.title,
396
+ width: e.width,
397
+ "close-on-click-modal": !1,
398
+ "close-on-press-escape": !1,
399
+ "show-close": !1,
400
+ "append-to-body": !0
401
+ }, {
402
+ footer: d(() => [
403
+ c("div", Ft, [
404
+ g(w, { onClick: A }, {
405
+ default: d(() => [
406
+ H(h(e.cancelBtnText) + "(" + h(y(o)) + "s)", 1)
407
+ ]),
408
+ _: 1
409
+ }),
410
+ g(w, {
411
+ type: "primary",
412
+ disabled: y(o) <= 0,
413
+ onClick: f
414
+ }, {
415
+ default: d(() => [
416
+ H(h(e.confirmBtnText), 1)
417
+ ]),
418
+ _: 1
419
+ }, 8, ["disabled"])
420
+ ])
421
+ ]),
422
+ default: d(() => [
423
+ c("div", null, h(e.content), 1),
424
+ c("div", null, h(y(o)) + "秒后自动取消", 1)
425
+ ]),
426
+ _: 1
427
+ }, 8, ["modelValue", "title", "width"]);
428
+ };
429
+ }
430
+ }), Nt = { class: "select-dialog" }, Wt = ["onClick"], Gt = { class: "option-item-label" }, Jt = { key: 0 }, Zt = { key: 1 }, Kt = /* @__PURE__ */ k({
431
+ __name: "SelectDialog",
432
+ props: /* @__PURE__ */ j({
433
+ title: { default: "请选择" },
434
+ options: {},
435
+ defaultSelectedList: { default: () => [] },
436
+ getDataLabel: {},
437
+ getDataId: {},
438
+ multiple: { type: Boolean, default: !1 },
439
+ canSelectAll: { type: Boolean, default: !0 },
440
+ showCurrentSelection: { type: Boolean, default: !0 },
441
+ confirmText: { default: "确定" },
442
+ cancelText: { default: "取消" },
443
+ noSelectionTip: { default: "未选择数据" }
444
+ }, {
445
+ modelValue: { type: Boolean, required: !0 },
446
+ modelModifiers: {}
447
+ }),
448
+ emits: /* @__PURE__ */ j(["confirm"], ["update:modelValue"]),
449
+ setup(e, { emit: n }) {
450
+ const t = e, l = ue(e, "modelValue"), a = ce([]), s = ce([]), o = B(0), r = X("listRef"), { loading: u, loadingData: v } = Be(), m = B(!1), f = v(async (z) => {
451
+ s.splice(0, s.length, ...t.defaultSelectedList);
452
+ let M = !1;
453
+ z(() => {
454
+ M = !0;
455
+ });
456
+ const L = typeof t.options == "function" ? await t.options() : t.options;
457
+ M || a.splice(0, a.length, ...L);
458
+ }), A = () => {
459
+ o.value = r.value?.clientWidth ?? 0, m.value = !0;
460
+ };
461
+ F(
462
+ l,
463
+ async (z, M, L) => {
464
+ if (!z) {
465
+ m.value = !1;
466
+ return;
467
+ }
468
+ await f(L);
469
+ },
470
+ { immediate: !0 }
471
+ );
472
+ const S = n, _ = () => {
473
+ l.value = !1;
474
+ }, Q = () => {
475
+ if (!s || s.length === 0) {
476
+ Y(t.noSelectionTip);
477
+ return;
478
+ }
479
+ S("confirm", tt(s)), l.value = !1;
480
+ }, w = x(() => t.showCurrentSelection && m.value && !u.value && s.length > 0), V = (z) => s.includes(z), P = (z) => {
481
+ const M = s.indexOf(z);
482
+ M > -1 ? s.splice(M, 1) : t.multiple ? s.push(z) : s.splice(0, s.length, z);
483
+ }, I = x(() => a.every((z) => s.includes(z))), T = () => {
484
+ I.value ? s.splice(0, s.length) : s.splice(0, s.length, ...a);
485
+ };
486
+ return (z, M) => {
487
+ const L = de, se = we, pe = xe;
488
+ return i(), p("div", Nt, [
489
+ g(se, {
490
+ title: e.title,
491
+ modelValue: l.value,
492
+ "onUpdate:modelValue": M[0] || (M[0] = ($) => l.value = $),
493
+ style: { width: "fit-content", "min-width": "300px", "max-width": "800px", "max-height": "88vh", overflow: "auto" },
494
+ "close-on-click-modal": !1,
495
+ "close-on-press-escape": !1,
496
+ "show-close": !0,
497
+ "align-center": "",
498
+ onOpened: A
499
+ }, {
500
+ footer: d(() => [
501
+ e.multiple && e.canSelectAll ? (i(), p("span", {
502
+ key: 0,
503
+ class: G(["select-all", I.value ? "selected" : ""]),
504
+ onClick: T
505
+ }, [...M[1] || (M[1] = [
506
+ c("span", { class: "select-icon" }, null, -1),
507
+ H("全选", -1)
508
+ ])], 2)) : D("", !0),
509
+ g(L, { onClick: _ }, {
510
+ default: d(() => [
511
+ H(h(e.cancelText), 1)
512
+ ]),
513
+ _: 1
514
+ }),
515
+ g(L, {
516
+ type: "primary",
517
+ onClick: Q,
518
+ disabled: y(u)
519
+ }, {
520
+ default: d(() => [
521
+ H(h(e.confirmText), 1)
522
+ ]),
523
+ _: 1
524
+ }, 8, ["disabled"])
525
+ ]),
526
+ default: d(() => [
527
+ K((i(), p("div", {
528
+ class: G(["dialog-content", y(u) ? "loading" : ""])
529
+ }, [
530
+ c("div", {
531
+ ref_key: "listRef",
532
+ ref: r,
533
+ class: "option-list"
534
+ }, [
535
+ (i(!0), p(O, null, ee(a, ($) => (i(), p("div", {
536
+ class: G(["option-item", V($) ? "selected" : ""]),
537
+ key: e.getDataId($),
538
+ onClick: (Se) => P($)
539
+ }, [
540
+ C(z.$slots, "item", {}, () => [
541
+ c("span", {
542
+ class: G(["select-icon", e.multiple ? "checkbox" : "radio"])
543
+ }, null, 2),
544
+ c("span", Gt, [
545
+ C(z.$slots, "item-label", {}, () => [
546
+ H(h(e.getDataLabel($)), 1)
547
+ ], !0)
548
+ ])
549
+ ], !0)
550
+ ], 10, Wt))), 128))
551
+ ], 512),
552
+ w.value ? (i(), p("div", {
553
+ key: 0,
554
+ class: "current-selection",
555
+ style: Qe({ width: `${o.value}px` })
556
+ }, [
557
+ e.multiple ? (i(), p("span", Jt, "已选择(" + h(s.length) + "):", 1)) : (i(), p("span", Zt, "已选择:")),
558
+ c("div", {
559
+ class: "current-selection-list",
560
+ style: Qe({ display: e.multiple ? "flex" : "contents" })
561
+ }, [
562
+ (i(!0), p(O, null, ee(s, ($) => (i(), p("span", {
563
+ key: e.getDataId($)
564
+ }, h(e.getDataLabel($)), 1))), 128))
565
+ ], 4)
566
+ ], 4)) : D("", !0)
567
+ ], 2)), [
568
+ [pe, y(u)]
569
+ ])
570
+ ]),
571
+ _: 3
572
+ }, 8, ["title", "modelValue"])
573
+ ]);
574
+ };
575
+ }
576
+ }), Yt = /* @__PURE__ */ N(Kt, [["__scopeId", "data-v-2ad04bd4"]]), Os = (e) => new Promise((n) => {
577
+ let t = document.createElement("div");
578
+ const l = (s) => {
579
+ n(s), t && (te(null, t), t.remove(), t = null);
580
+ }, a = g(Yt, {
581
+ ...e,
582
+ modelValue: !0,
583
+ "onUpdate:modelValue": (s) => {
584
+ s || l();
585
+ },
586
+ onConfirm: (s) => {
587
+ l(s);
588
+ }
589
+ });
590
+ document.body.appendChild(t), te(a, t);
591
+ }), Xt = { class: "dialog-content" }, el = { class: "header" }, tl = {
592
+ key: 0,
593
+ class: "total-desc"
594
+ }, ll = { class: "page-size-desc" }, sl = { class: "range-desc" }, nl = /* @__PURE__ */ k({
595
+ __name: "PageRangeDialog",
596
+ props: /* @__PURE__ */ j({
597
+ title: { default: "请选择页码范围" },
598
+ defaultRange: { default: () => [1, 1] },
599
+ total: {},
600
+ minPage: { default: 1 },
601
+ maxPage: {},
602
+ pageSize: {},
603
+ confirmText: { default: "确定" },
604
+ cancelText: { default: "取消" }
605
+ }, {
606
+ modelValue: { type: Boolean, required: !0 },
607
+ modelModifiers: {}
608
+ }),
609
+ emits: /* @__PURE__ */ j(["confirm"], ["update:modelValue"]),
610
+ setup(e, { emit: n }) {
611
+ const t = e, l = ue(e, "modelValue"), a = x(() => t.total != null && t.maxPage != null ? Math.min(t.maxPage, Math.ceil(t.total / t.pageSize)) : t.total != null ? Math.ceil(t.total / t.pageSize) : t.maxPage), s = B(1), o = B(1), r = x(() => `共有 ${t.total} 条数据`), u = x(() => `每页可获取 ${t.pageSize} 条数据`), v = x(() => {
612
+ if (t.total != null) {
613
+ const S = t.pageSize - Math.max(o.value * t.pageSize - t.total, 0);
614
+ return `共选择 ${(o.value - s.value) * t.pageSize + S} 条数据`;
615
+ } else
616
+ return `共选择 ${(o.value + 1 - s.value) * t.pageSize} 条数据`;
617
+ });
618
+ F(
619
+ l,
620
+ async (S) => {
621
+ S && (s.value = t.defaultRange[0], o.value = t.defaultRange[1]);
622
+ },
623
+ { immediate: !0 }
624
+ );
625
+ const m = n, f = () => {
626
+ l.value = !1;
627
+ }, A = () => {
628
+ m("confirm", [s.value, o.value]), l.value = !1;
629
+ };
630
+ return (S, _) => {
631
+ const Q = yt, w = At, V = _t, P = de, I = we;
632
+ return i(), b(I, {
633
+ title: e.title,
634
+ modelValue: l.value,
635
+ "onUpdate:modelValue": _[2] || (_[2] = (T) => l.value = T),
636
+ width: "200px",
637
+ "close-on-click-modal": !1,
638
+ "close-on-press-escape": !1,
639
+ "show-close": !0,
640
+ "align-center": ""
641
+ }, {
642
+ footer: d(() => [
643
+ g(P, { onClick: f }, {
644
+ default: d(() => [
645
+ H(h(e.cancelText), 1)
646
+ ]),
647
+ _: 1
648
+ }),
649
+ g(P, {
650
+ type: "primary",
651
+ onClick: A
652
+ }, {
653
+ default: d(() => [
654
+ H(h(e.confirmText), 1)
655
+ ]),
656
+ _: 1
657
+ })
658
+ ]),
659
+ default: d(() => [
660
+ c("div", Xt, [
661
+ c("div", el, [
662
+ e.total ? (i(), p("div", tl, h(r.value), 1)) : D("", !0),
663
+ c("div", ll, h(u.value), 1)
664
+ ]),
665
+ g(V, { class: "page-range" }, {
666
+ default: d(() => [
667
+ g(w, { span: 11 }, {
668
+ default: d(() => [
669
+ g(Q, {
670
+ type: "number",
671
+ modelValue: s.value,
672
+ "onUpdate:modelValue": _[0] || (_[0] = (T) => s.value = T),
673
+ min: e.minPage,
674
+ max: o.value
675
+ }, null, 8, ["modelValue", "min", "max"])
676
+ ]),
677
+ _: 1
678
+ }),
679
+ g(w, {
680
+ span: 2,
681
+ style: { "text-align": "center" }
682
+ }, {
683
+ default: d(() => [..._[3] || (_[3] = [
684
+ c("span", null, "-", -1)
685
+ ])]),
686
+ _: 1
687
+ }),
688
+ g(w, { span: 11 }, {
689
+ default: d(() => [
690
+ g(Q, {
691
+ type: "number",
692
+ modelValue: o.value,
693
+ "onUpdate:modelValue": _[1] || (_[1] = (T) => o.value = T),
694
+ min: s.value,
695
+ max: a.value
696
+ }, null, 8, ["modelValue", "min", "max"])
697
+ ]),
698
+ _: 1
699
+ })
700
+ ]),
701
+ _: 1
702
+ }),
703
+ c("div", sl, h(v.value), 1)
704
+ ])
705
+ ]),
706
+ _: 1
707
+ }, 8, ["title", "modelValue"]);
708
+ };
709
+ }
710
+ }), al = /* @__PURE__ */ N(nl, [["__scopeId", "data-v-715af5da"]]), Fs = (e) => new Promise((n) => {
711
+ let t = document.createElement("div");
712
+ const l = (s) => {
713
+ t && (te(null, t), t.remove(), t = null), n(s);
714
+ }, a = g(al, {
715
+ ...e,
716
+ modelValue: !0,
717
+ "onUpdate:modelValue"(s) {
718
+ s || l();
719
+ },
720
+ onConfirm(s) {
721
+ l(s);
722
+ }
723
+ });
724
+ document.body.appendChild(t), te(a, t);
725
+ }), ol = { class: "loading-mask el-overlay" }, cl = { class: "loading-content" }, il = { class: "loading-spinner" }, rl = { class: "loading-text" }, ul = /* @__PURE__ */ k({
726
+ __name: "LoadingDialog",
727
+ props: /* @__PURE__ */ j({
728
+ canCancel: { type: Boolean, default: !1 },
729
+ onCancel: {},
730
+ loadingText: {}
731
+ }, {
732
+ modelValue: { type: Boolean, required: !0 },
733
+ modelModifiers: {}
734
+ }),
735
+ emits: ["update:modelValue"],
736
+ setup(e, { expose: n }) {
737
+ const t = ue(e, "modelValue"), a = ce(ye(e)), s = B(t), o = () => {
738
+ a.loadingText = a.loadingText ?? "加载中...";
739
+ }, r = () => {
740
+ a.onCancel?.(), t.value = !1;
741
+ };
742
+ return F(t, (m) => {
743
+ s.value = m;
744
+ }), n({ show: (m) => {
745
+ Object.assign(a, m), o(), s.value = !0, t.value = !0;
746
+ }, hide: () => {
747
+ s.value = !1, t.value = !1;
748
+ } }), (m, f) => {
749
+ const A = xe;
750
+ return K((i(), p("div", ol, [
751
+ c("div", cl, [
752
+ K(c("div", {
753
+ class: "options-close-btn",
754
+ onClick: r
755
+ }, null, 512), [
756
+ [Pe, a.canCancel]
757
+ ]),
758
+ K(c("div", il, null, 512), [
759
+ [A, s.value]
760
+ ]),
761
+ c("div", rl, h(a.loadingText), 1)
762
+ ])
763
+ ], 512)), [
764
+ [Pe, t.value]
765
+ ]);
766
+ };
767
+ }
768
+ });
769
+ let ae, fe = null, oe;
770
+ const Ns = {
771
+ /**
772
+ * 显示,返回一个Promise,解析为是否成功,false为用户取消
773
+ * @param options
774
+ */
775
+ show(e) {
776
+ return new Promise(async (n) => {
777
+ ae || (fe = document.createElement("div"), ae = g(ul, {
778
+ modelValue: !1
779
+ }), te(ae, fe), document.body.appendChild(fe), await Ae(() => {
780
+ oe = ae?.component?.exposed;
781
+ })), e?.autoCloseDelay && setTimeout(() => {
782
+ oe?.hide(), n(!0);
783
+ }, e?.autoCloseDelay), oe?.show({
784
+ canCancel: !1,
785
+ ...e,
786
+ onCancel: () => {
787
+ n(!1);
788
+ }
789
+ });
790
+ });
791
+ },
792
+ hide() {
793
+ oe?.hide();
794
+ }
795
+ }, dl = { class: "tooltip" }, vl = { class: "label" }, ke = /* @__PURE__ */ k({
796
+ __name: "AppTooltip",
797
+ props: {
798
+ content: {},
799
+ lines: { default: 1 },
800
+ ellipsis: { default: "right" },
801
+ iconClass: {}
802
+ },
803
+ setup(e) {
804
+ lt((r) => ({
805
+ v22da9023: y(t)
806
+ }));
807
+ const n = e, t = n.lines, l = () => ({
808
+ "txt-ellipsis-right": n.ellipsis === "right",
809
+ "txt-ellipsis-left": n.ellipsis === "left",
810
+ "single-line": n.lines === 1
811
+ }), a = B(!1), s = X("refContent"), o = new ResizeObserver(() => {
812
+ s.value && (n.lines === 1 ? a.value = s.value.scrollWidth > s.value.clientWidth : a.value = s.value.scrollHeight > s.value.clientHeight);
813
+ });
814
+ return le(() => {
815
+ s.value && o.observe(s.value);
816
+ }), re(() => {
817
+ o.disconnect();
818
+ }), (r, u) => {
819
+ const v = Le;
820
+ return i(), p("div", dl, [
821
+ c("div", vl, [
822
+ e.iconClass ? (i(), b(U, {
823
+ key: 0,
824
+ icon: e.iconClass
825
+ }, null, 8, ["icon"])) : D("", !0)
826
+ ]),
827
+ e.content ? (i(), b(v, {
828
+ key: 0,
829
+ effect: "light",
830
+ content: e.content,
831
+ placement: "top",
832
+ disabled: !a.value,
833
+ "show-after": 800
834
+ }, {
835
+ content: d(() => [
836
+ C(r.$slots, "tooltipContent")
837
+ ]),
838
+ default: d(() => [
839
+ c("div", J({
840
+ ref_key: "refContent",
841
+ ref: s
842
+ }, r.$attrs, {
843
+ class: ["tooltip__content", l()]
844
+ }), [
845
+ c("span", null, [
846
+ C(r.$slots, "default", {}, () => [
847
+ H(h(e.content), 1)
848
+ ])
849
+ ])
850
+ ], 16)
851
+ ]),
852
+ _: 3
853
+ }, 8, ["content", "disabled"])) : D("", !0)
854
+ ]);
855
+ };
856
+ }
857
+ }), Ws = /* @__PURE__ */ k({
858
+ inheritAttrs: !1,
859
+ __name: "IconButton",
860
+ props: {
861
+ confirm: {},
862
+ icon: {},
863
+ tip: {}
864
+ },
865
+ emits: ["click"],
866
+ setup(e, { emit: n }) {
867
+ const t = n, l = () => {
868
+ t("click");
869
+ };
870
+ return (a, s) => {
871
+ const o = Le, r = wt;
872
+ return e.tip ? (i(), p(O, { key: 0 }, [
873
+ e.confirm ? (i(), b(r, {
874
+ key: 0,
875
+ title: e.confirm,
876
+ placement: "left",
877
+ onConfirm: l
878
+ }, {
879
+ reference: d(() => [
880
+ c("span", st(nt(a.$attrs)), [
881
+ g(o, {
882
+ effect: "light",
883
+ content: e.tip,
884
+ placement: "top",
885
+ "show-after": 800
886
+ }, {
887
+ default: d(() => [
888
+ g(U, {
889
+ class: "icon-btn",
890
+ icon: e.icon
891
+ }, null, 8, ["icon"])
892
+ ]),
893
+ _: 1
894
+ }, 8, ["content"])
895
+ ], 16)
896
+ ]),
897
+ _: 1
898
+ }, 8, ["title"])) : (i(), b(o, {
899
+ key: 1,
900
+ effect: "light",
901
+ content: e.tip,
902
+ placement: "top",
903
+ "show-after": 800
904
+ }, {
905
+ default: d(() => [
906
+ g(U, J({
907
+ class: "icon-btn",
908
+ icon: e.icon,
909
+ onClick: he(l, ["stop"])
910
+ }, a.$attrs), null, 16, ["icon"])
911
+ ]),
912
+ _: 1
913
+ }, 8, ["content"]))
914
+ ], 64)) : (i(), p(O, { key: 1 }, [
915
+ e.confirm ? (i(), b(r, {
916
+ key: 0,
917
+ title: e.confirm,
918
+ placement: "left",
919
+ onConfirm: l
920
+ }, {
921
+ reference: d(() => [
922
+ g(U, J({
923
+ class: "icon-btn",
924
+ icon: e.icon
925
+ }, a.$attrs), null, 16, ["icon"])
926
+ ]),
927
+ _: 1
928
+ }, 8, ["title"])) : (i(), b(U, J({
929
+ key: 1,
930
+ class: "icon-btn",
931
+ icon: e.icon,
932
+ onClick: he(l, ["stop"])
933
+ }, a.$attrs), null, 16, ["icon"]))
934
+ ], 64));
935
+ };
936
+ }
937
+ }), pl = { class: "icon-label" }, Gs = /* @__PURE__ */ k({
938
+ __name: "IconLabel",
939
+ props: {
940
+ icon: {}
941
+ },
942
+ setup(e) {
943
+ return (n, t) => (i(), p("div", pl, [
944
+ g(U, { icon: e.icon }, null, 8, ["icon"]),
945
+ C(n.$slots, "default")
946
+ ]));
947
+ }
948
+ }), Js = /* @__PURE__ */ k({
949
+ __name: "ExternalLink",
950
+ props: {
951
+ url: {}
952
+ },
953
+ setup(e) {
954
+ const n = e, t = () => {
955
+ R.system.browsePage(n.url);
956
+ };
957
+ return (l, a) => (i(), p("span", {
958
+ class: "external-link",
959
+ onClick: he(t, ["prevent"])
960
+ }, [
961
+ C(l.$slots, "default")
962
+ ]));
963
+ }
964
+ }), gl = ["innerHTML"], Zs = /* @__PURE__ */ k({
965
+ __name: "LogPrint",
966
+ setup(e, { expose: n }) {
967
+ const t = B([]), l = X("logBoxRef");
968
+ function a(o) {
969
+ t.value.push(`[${ft()}] ${o}`), t.value.length > 500 && t.value.shift(), Ae(() => {
970
+ l.value && (l.value.scrollTop = l.value.scrollHeight);
971
+ });
972
+ }
973
+ return n({
974
+ addLog: a,
975
+ reset: () => {
976
+ t.value = [];
977
+ }
978
+ }), (o, r) => (i(), p("div", {
979
+ ref_key: "logBoxRef",
980
+ ref: l,
981
+ class: "log-print-box"
982
+ }, [
983
+ (i(!0), p(O, null, ee(t.value, (u, v) => (i(), p("div", {
984
+ key: v,
985
+ innerHTML: u,
986
+ class: "log-print-box__line"
987
+ }, null, 8, gl))), 128))
988
+ ], 512));
989
+ }
990
+ }), je = "data:image/svg+xml,%3csvg%20version='1.1'%20id='图层_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%2030%2030'%20style='enable-background:new%200%200%2030%2030;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e.st0.lv1{fill:transparent;}.st1.lv1{fill-rule:evenodd;clip-rule:evenodd;fill:%23FFFFFF;}.st2.lv1{fill-rule:evenodd;clip-rule:evenodd;fill:%23C0C0C0;}%3c/style%3e%3crect%20class='st0%20lv1'%20width='30'%20height='30'/%3e%3cpath%20class='st1%20lv1'%20d='M19.9,11.1h-5.6v1.1H2.1v6.7h17.8v-6.7h0V11.1z'/%3e%3cpath%20class='st2%20lv1'%20d='M13.4,10.6c0-0.3,0.2-0.6,0.6-0.6h6.5c0.3,0,0.6,0.3,0.5,0.6v8.2v0.7c0,0.3-0.2,0.6-0.6,0.6H1.6%20C1.3,20,1,19.8,1,19.4v-7.8C1,11.3,1.2,11,1.6,11h11.8V10.6z%20M15.8,18.9h2.6c0.2,0,0.4-0.2,0.4-0.4v-0.6c0-0.2-0.2-0.4-0.4-0.4h-0.6%20v-5.6c0-0.2-0.2-0.4-0.4-0.4h-1.4c-0.2,0-0.4,0.2-0.4,0.4v0.6c0,0.2,0.2,0.4,0.4,0.4h0.4v4.6h-0.6c-0.2,0-0.4,0.2-0.4,0.4v0.6%20C15.3,18.7,15.5,18.9,15.8,18.9z%20M12.7,16.3v0.1c0,0.1-0.1,0.2-0.2,0.2c0,0,0,0-0.1,0.1l-2,2c-0.1,0.1-0.5,0.1-0.5,0.1%20s-0.4,0-0.5-0.1l-2-2c-0.1,0-0.1-0.3-0.1-0.4v-0.1v-3.5c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4v3.4l1.2,1.2l1.2-1.2v-3.3%20c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4V16.3L12.7,16.3z%20M2.6,18.9h3.4c0.2,0,0.4-0.2,0.4-0.4v-0.6c0-0.2-0.2-0.4-0.4-0.4%20H3.7v-4.7c0-0.2-0.2-0.4-0.4-0.4H2.6c-0.2,0-0.4,0.2-0.4,0.4v5.8C2.2,18.7,2.4,18.9,2.6,18.9z'/%3e%3c/svg%3e", Oe = "data:image/svg+xml,%3csvg%20version='1.1'%20id='图层_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%2030%2030'%20style='enable-background:new%200%200%2030%2030;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e.st0.lv2{fill:transparent;}.st1.lv2{fill-rule:evenodd;clip-rule:evenodd;fill:%23FFFFFF;}.st2.lv2{fill-rule:evenodd;clip-rule:evenodd;fill:%238BD29B;}%3c/style%3e%3crect%20class='st0%20lv2'%20width='30'%20height='30'/%3e%3cpath%20class='st1%20lv2'%20d='M19.9,11.1h-5.6v1.1H2.1v6.7h17.8v-6.7h0V11.1z'/%3e%3cpath%20class='st2%20lv2'%20d='M14,10h6.5c0.3,0,0.6,0.3,0.5,0.6v8.8c0,0.3-0.2,0.6-0.6,0.6H1.6C1.3,20,1,19.8,1,19.4v-7.8%20C1,11.3,1.2,11,1.6,11h11.8v-0.4C13.4,10.3,13.6,10,14,10z%20M19.4,15.8c0.2,0,0.4-0.2,0.4-0.4v-3.7c0-0.2-0.2-0.4-0.4-0.4H15%20c-0.2,0-0.4,0.2-0.4,0.4v0.6c0,0.2,0.2,0.4,0.4,0.4h3.4v1.7H15c-0.2,0-0.4,0.2-0.4,0.4v3.7c0,0.2,0.2,0.4,0.4,0.4h4.4%20c0.2,0,0.4-0.2,0.4-0.4v-0.6c0-0.2-0.2-0.4-0.4-0.4H16v-1.7H19.4z%20M12.7,16.4c0,0.1,0,0.3-0.1,0.4l-2.1,2c-0.1,0.1-0.5,0.1-0.5,0.1%20s-0.4,0-0.5-0.1l-2-2c-0.1,0-0.1-0.3-0.1-0.4v-0.1v-3.5c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4v3.4l1.2,1.2l1.2-1.2v-3.3%20c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4v3.4V16.4z%20M2.6,18.9h3.4c0.2,0,0.4-0.2,0.4-0.4v-0.6c0-0.2-0.2-0.4-0.4-0.4H3.7%20v-4.7c0-0.2-0.2-0.4-0.4-0.4H2.6c-0.2,0-0.4,0.2-0.4,0.4v5.8C2.2,18.7,2.4,18.9,2.6,18.9z'/%3e%3c/svg%3e", Fe = "data:image/svg+xml,%3csvg%20version='1.1'%20id='图层_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%2030%2030'%20style='enable-background:new%200%200%2030%2030;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e.st0.lv3{fill:transparent;}.st1.lv3{fill-rule:evenodd;clip-rule:evenodd;fill:%23FFFFFF;}.st2.lv3{fill-rule:evenodd;clip-rule:evenodd;fill:%237BCDEF;}%3c/style%3e%3crect%20class='st0%20lv3'%20width='30'%20height='30'/%3e%3cpath%20class='st1%20lv3'%20d='M19.9,11.1h-5.6v1.1H2.1v6.7h17.8v-6.7h0V11.1z'/%3e%3cpath%20class='st2%20lv3'%20d='M13.4,10.6c0-0.3,0.2-0.6,0.6-0.6h6.5c0.3,0,0.6,0.3,0.5,0.6v8.8c0,0.3-0.2,0.6-0.6,0.6H1.6%20C1.3,20,1,19.8,1,19.4v-7.8C1,11.3,1.2,11,1.6,11h11.8V10.6z%20M19.4,18.9c0.2,0,0.4-0.2,0.4-0.4v-6.9c0-0.2-0.2-0.4-0.4-0.4H15%20c-0.2,0-0.4,0.2-0.4,0.4v0.6c0,0.2,0.2,0.4,0.4,0.4h3.4v1.7H15c-0.2,0-0.4,0.2-0.4,0.4v0.6c0,0.2,0.2,0.4,0.4,0.4h3.4v1.7H15%20c-0.2,0-0.4,0.2-0.4,0.4v0.6c0,0.2,0.2,0.4,0.4,0.4H19.4z%20M12.7,16.4c0,0.1,0,0.3-0.1,0.4l-2.1,2c-0.1,0.1-0.5,0.1-0.5,0.1%20s-0.4,0-0.5-0.1l-2-2c-0.1,0-0.1-0.3-0.1-0.4v-0.1v-3.5c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4v3.4l1.2,1.2l1.2-1.2v-3.3%20c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4v3.4V16.4z%20M2.6,18.9h3.4c0.2,0,0.4-0.2,0.4-0.4v-0.6c0-0.2-0.2-0.4-0.4-0.4H3.7%20v-4.7c0-0.2-0.2-0.4-0.4-0.4H2.6c-0.2,0-0.4,0.2-0.4,0.4v5.8C2.2,18.7,2.4,18.9,2.6,18.9z'/%3e%3c/svg%3e", Ne = "data:image/svg+xml,%3csvg%20version='1.1'%20id='图层_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%2030%2030'%20style='enable-background:new%200%200%2030%2030;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e.st0.lv4{fill:transparent;}.st1.lv4{fill-rule:evenodd;clip-rule:evenodd;fill:%23FFFFFF;}.st2.lv4{fill-rule:evenodd;clip-rule:evenodd;fill:%23FEBB8B;}%3c/style%3e%3crect%20class='st0%20lv4'%20width='30'%20height='30'/%3e%3cpath%20class='st1%20lv4'%20d='M19.9,11.1h-5.6v1.1H2.1v6.7h17.8v-6.7h0V11.1z'/%3e%3cpath%20class='st2%20lv4'%20d='M13.4,10.6c0-0.3,0.2-0.6,0.6-0.6h6.5c0.3,0,0.6,0.3,0.5,0.6v8.8c0,0.3-0.2,0.6-0.6,0.6H1.6%20C1.3,20,1,19.8,1,19.4v-7.8C1,11.3,1.2,11,1.6,11h11.8V10.6z%20M19.4,18.9c0.2,0,0.4-0.2,0.4-0.4v-6.9c0-0.2-0.2-0.4-0.4-0.4h-0.6%20c-0.2,0-0.4,0.2-0.4,0.4v2.7H16v-2.7c0-0.2-0.2-0.4-0.4-0.4H15c-0.2,0-0.4,0.2-0.4,0.4v3.7c0,0.2,0.2,0.4,0.4,0.4h3.4v2.7%20c0,0.2,0.2,0.4,0.4,0.4H19.4z%20M12.7,16.4c0,0.1,0,0.3-0.1,0.4l-2.1,2c-0.1,0.1-0.5,0.1-0.5,0.1s-0.4,0-0.5-0.1l-2-2%20c-0.1-0.1-0.1-0.3-0.1-0.4v-0.1v-3.5c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4v3.4l1.2,1.2l1.2-1.2v-3.3%20c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4v3.4V16.4z%20M2.6,18.9h3.4c0.2,0,0.4-0.2,0.4-0.4v-0.6c0-0.2-0.2-0.4-0.4-0.4H3.7%20v-4.7c0-0.2-0.2-0.4-0.4-0.4H2.6c-0.2,0-0.4,0.2-0.4,0.4v5.8C2.2,18.7,2.4,18.9,2.6,18.9z'/%3e%3c/svg%3e", We = "data:image/svg+xml,%3csvg%20version='1.1'%20id='图层_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%2030%2030'%20style='enable-background:new%200%200%2030%2030;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e.st0.lv5{fill:transparent;}.st1.lv5{fill-rule:evenodd;clip-rule:evenodd;fill:%23FFFFFF;}.st2.lv5{fill-rule:evenodd;clip-rule:evenodd;fill:%23EE672A;}%3c/style%3e%3crect%20class='st0%20lv5'%20width='30'%20height='30'/%3e%3cpath%20class='st1%20lv5'%20d='M19.9,11.1h-5.6v1.1H2.1v6.7h17.8v-6.7h0V11.1z'/%3e%3cpath%20class='st2%20lv5'%20d='M13.4,10.6c0-0.3,0.2-0.6,0.6-0.6h6.5c0.3,0,0.6,0.3,0.5,0.6v8.8c0,0.3-0.2,0.6-0.6,0.6H1.6%20C1.3,20,1,19.8,1,19.4v-7.8C1,11.3,1.2,11,1.6,11h11.8V10.6z%20M19.4,12.7c0.2,0,0.4-0.2,0.4-0.4v-0.7c0-0.2-0.2-0.4-0.4-0.4H15%20c-0.2,0-0.4,0.2-0.4,0.4v3.7c0,0.2,0.2,0.4,0.4,0.4h3.4v1.7H15c-0.2,0-0.4,0.2-0.4,0.4v0.6c0,0.2,0.2,0.4,0.4,0.4h4.4%20c0.2,0,0.4-0.2,0.4-0.4v-3.7c0-0.2-0.2-0.4-0.4-0.4H16v-1.6H19.4z%20M12.7,16.4c0,0.1,0,0.3-0.1,0.4l-2.1,2c-0.1,0.1-0.5,0.1-0.5,0.1%20s-0.4,0-0.5-0.1l-2-2c-0.1-0.1-0.1-0.3-0.1-0.4v-0.1v-3.5c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4v3.4l1.2,1.2l1.2-1.2%20v-3.3c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4v3.4V16.4z%20M2.6,18.9h3.4c0.2,0,0.4-0.2,0.4-0.4v-0.6c0-0.2-0.2-0.4-0.4-0.4%20H3.7v-4.7c0-0.2-0.2-0.4-0.4-0.4H2.6c-0.2,0-0.4,0.2-0.4,0.4v5.8C2.2,18.7,2.4,18.9,2.6,18.9z'/%3e%3c/svg%3e", Ge = "data:image/svg+xml,%3csvg%20version='1.1'%20id='图层_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%2030%2030'%20style='enable-background:new%200%200%2030%2030;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e.st0.lv6{fill:transparent;}.st1.lv6{fill-rule:evenodd;clip-rule:evenodd;fill:%23FFFFFF;}.st2.lv6{fill-rule:evenodd;clip-rule:evenodd;fill:%23F04C49;}%3c/style%3e%3crect%20class='st0%20lv6'%20width='30'%20height='30'/%3e%3cpath%20class='st1%20lv6'%20d='M19.9,11.1h-5.6v1.1H2.1v6.7h17.8v-6.7h0V11.1z'/%3e%3cpath%20class='st2%20lv6'%20d='M14,10c-0.4,0-0.6,0.3-0.6,0.6V11H1.6C1.2,11,1,11.3,1,11.6v7.8C1,19.8,1.3,20,1.6,20h18.8%20c0.4,0,0.6-0.3,0.6-0.6v-8.8c0.1-0.3-0.2-0.6-0.5-0.6H14z%20M19.8,12.3c0,0.2-0.2,0.4-0.4,0.4H16v1.6h3.4c0.2,0,0.4,0.2,0.4,0.4v3.7%20c0,0.2-0.2,0.4-0.4,0.4H15c-0.2,0-0.4-0.2-0.4-0.4v-6.8c0-0.2,0.2-0.4,0.4-0.4h4.4c0.2,0,0.4,0.2,0.4,0.4V12.3z%20M12.6,16.7%20c0.1-0.1,0.1-0.2,0.1-0.4v-0.1v-3.4c0-0.2-0.2-0.4-0.4-0.4h-0.6c-0.2,0-0.4,0.2-0.4,0.4v3.3L10,17.3l-1.2-1.2v-3.4%20c0-0.2-0.2-0.4-0.4-0.4H7.8c-0.2,0-0.4,0.2-0.4,0.4v3.5v0.1c0,0.2,0,0.4,0.1,0.4l2,2c0.1,0.1,0.5,0.1,0.5,0.1s0.4,0,0.5-0.1%20L12.6,16.7z%20M6.1,18.9H2.6c-0.2,0-0.4-0.2-0.4-0.4v-5.8c0-0.2,0.2-0.4,0.4-0.4h0.6c0.2,0,0.4,0.2,0.4,0.4v4.7h2.4%20c0.2,0,0.4,0.2,0.4,0.4v0.6C6.5,18.7,6.3,18.9,6.1,18.9z%20M18.4,17.4H16v-1.7h2.4V17.4z'/%3e%3c/svg%3e", _e = "data:image/jpeg;base64,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", ml = { class: "user-card" }, fl = { class: "user-card__face-wrapper" }, hl = ["src"], _l = {
991
+ key: 0,
992
+ class: "user-card--blocked"
993
+ }, Al = { class: "user-card__info" }, yl = { class: "user-card__row" }, wl = ["src"], xl = { class: "user-card__row" }, bl = { class: "user-card__uid" }, El = { class: "user-card__row" }, Cl = { class: "user-card__stat__item" }, Bl = { class: "user-card__stat__value" }, kl = { class: "user-card__stat__item" }, Sl = { class: "user-card__stat__value" }, Ql = { class: "user-card__stat__item" }, Pl = { class: "user-card__stat__value" }, zl = /* @__PURE__ */ k({
994
+ __name: "BiliUserCard",
995
+ props: {
996
+ user: {}
997
+ },
998
+ setup(e) {
999
+ const n = e, t = x(() => n.user.face || _e), l = x(() => new URL((/* @__PURE__ */ Object.assign({ "../../assets/images/user_level/level_1.svg": je, "../../assets/images/user_level/level_2.svg": Oe, "../../assets/images/user_level/level_3.svg": Fe, "../../assets/images/user_level/level_4.svg": Ne, "../../assets/images/user_level/level_5.svg": We, "../../assets/images/user_level/level_6.svg": Ge }))[`../../assets/images/user_level/level_${n.user.level}.svg`], import.meta.url).href);
1000
+ return (a, s) => {
1001
+ const o = ke;
1002
+ return i(), p("div", ml, [
1003
+ C(a.$slots, "default"),
1004
+ c("div", fl, [
1005
+ c("img", {
1006
+ class: "user-card__face",
1007
+ alt: "face",
1008
+ src: t.value
1009
+ }, null, 8, hl),
1010
+ e.user.silence === 1 ? (i(), p("span", _l, "账号已封禁")) : D("", !0)
1011
+ ]),
1012
+ c("div", Al, [
1013
+ c("div", yl, [
1014
+ g(o, {
1015
+ class: "user-card__name",
1016
+ content: e.user.name
1017
+ }, null, 8, ["content"]),
1018
+ c("img", {
1019
+ class: "user-card__level",
1020
+ src: l.value,
1021
+ alt: "level"
1022
+ }, null, 8, wl)
1023
+ ]),
1024
+ c("div", xl, [
1025
+ s[0] || (s[0] = c("span", { class: "user-card__uid-icon" }, null, -1)),
1026
+ c("span", bl, h(e.user.mid), 1)
1027
+ ]),
1028
+ c("div", El, [
1029
+ c("span", Cl, [
1030
+ c("span", Bl, h(e.user.following), 1),
1031
+ s[1] || (s[1] = c("span", { class: "user-card__stat__label" }, "关注", -1))
1032
+ ]),
1033
+ c("span", kl, [
1034
+ c("span", Sl, h(e.user.follower), 1),
1035
+ s[2] || (s[2] = c("span", { class: "user-card__stat__label" }, "粉丝", -1))
1036
+ ]),
1037
+ c("span", Ql, [
1038
+ c("span", Pl, h(e.user.coins), 1),
1039
+ s[3] || (s[3] = c("span", { class: "user-card__stat__label" }, "硬币", -1))
1040
+ ])
1041
+ ])
1042
+ ])
1043
+ ]);
1044
+ };
1045
+ }
1046
+ }), Il = { class: "user-info info-row" }, Ml = ["src"], Dl = { class: "user-info__right" }, Hl = { class: "info-row" }, Vl = { class: "user-info__uid" }, Tl = /* @__PURE__ */ k({
1047
+ __name: "BiliUserInfo",
1048
+ props: {
1049
+ user: {}
1050
+ },
1051
+ setup(e) {
1052
+ return (n, t) => {
1053
+ const l = ke;
1054
+ return i(), p("div", Il, [
1055
+ e.user.face ? (i(), p("img", {
1056
+ key: 0,
1057
+ class: "user-info__face",
1058
+ src: e.user.face,
1059
+ alt: "face"
1060
+ }, null, 8, Ml)) : D("", !0),
1061
+ c("div", Dl, [
1062
+ g(l, {
1063
+ class: "user-info__name",
1064
+ content: e.user.name
1065
+ }, null, 8, ["content"]),
1066
+ c("div", Hl, [
1067
+ t[0] || (t[0] = c("span", { class: "user-info__uid-icon" }, null, -1)),
1068
+ c("span", Vl, h(e.user.mid), 1)
1069
+ ])
1070
+ ])
1071
+ ]);
1072
+ };
1073
+ }
1074
+ }), Ks = /* @__PURE__ */ N(Tl, [["__scopeId", "data-v-70fe8db3"]]), Je = /* @__PURE__ */ k({
1075
+ __name: "PluginMenuItem",
1076
+ props: {
1077
+ menu: {}
1078
+ },
1079
+ setup(e) {
1080
+ return (n, t) => {
1081
+ const l = Re, a = xt;
1082
+ return !e.menu.children || e.menu.children.length === 0 ? (i(), b(l, {
1083
+ key: 0,
1084
+ index: e.menu.path
1085
+ }, {
1086
+ title: d(() => [
1087
+ H(h(e.menu.title), 1)
1088
+ ]),
1089
+ _: 1
1090
+ }, 8, ["index"])) : (i(), b(a, {
1091
+ key: 1,
1092
+ index: e.menu.path
1093
+ }, {
1094
+ title: d(() => [
1095
+ H(h(e.menu.title), 1)
1096
+ ]),
1097
+ default: d(() => [
1098
+ (i(!0), p(O, null, ee(e.menu.children, (s) => (i(), b(Je, {
1099
+ key: s.path,
1100
+ menu: s
1101
+ }, null, 8, ["menu"]))), 128))
1102
+ ]),
1103
+ _: 1
1104
+ }, 8, ["index"]));
1105
+ };
1106
+ }
1107
+ }), $l = /* @__PURE__ */ k({
1108
+ __name: "PluginMenus",
1109
+ props: {
1110
+ menus: {},
1111
+ activeIndex: {}
1112
+ },
1113
+ emits: ["handleSelect"],
1114
+ setup(e, { emit: n }) {
1115
+ const t = e, l = (m, f = /* @__PURE__ */ new Map()) => (m.forEach((A) => {
1116
+ f.set(A.path, A), A.children && A.children.length > 0 && l(A.children, f);
1117
+ }), f), a = x(() => l(t.menus)), s = n, o = (m) => {
1118
+ const f = a.value.get(m);
1119
+ f && s("handleSelect", f);
1120
+ }, r = Ve(), u = x(() => !!r["left-item"] || !!r.left), v = x(() => !!r["right-item"] || !!r.right);
1121
+ return (m, f) => {
1122
+ const A = Re, S = bt;
1123
+ return i(), b(S, {
1124
+ "default-active": e.activeIndex,
1125
+ class: "plugin-menus",
1126
+ mode: "horizontal",
1127
+ ellipsis: !1,
1128
+ onSelect: o
1129
+ }, {
1130
+ default: d(() => [
1131
+ u.value ? C(m.$slots, "left-item", { key: 0 }, () => [
1132
+ g(A, {
1133
+ index: "-left",
1134
+ style: { "margin-right": "auto" }
1135
+ }, {
1136
+ default: d(() => [
1137
+ C(m.$slots, "left", {}, void 0, !0)
1138
+ ]),
1139
+ _: 3
1140
+ })
1141
+ ], !0) : D("", !0),
1142
+ (i(!0), p(O, null, ee(e.menus, (_) => (i(), b(Je, {
1143
+ key: _.path,
1144
+ menu: _,
1145
+ index: String(_.path)
1146
+ }, null, 8, ["menu", "index"]))), 128)),
1147
+ v.value ? C(m.$slots, "right-item", { key: 1 }, () => [
1148
+ g(A, {
1149
+ index: "-right",
1150
+ style: { "margin-left": "auto" }
1151
+ }, {
1152
+ default: d(() => [
1153
+ C(m.$slots, "right", {}, void 0, !0)
1154
+ ]),
1155
+ _: 3
1156
+ })
1157
+ ], !0) : D("", !0)
1158
+ ]),
1159
+ _: 3
1160
+ }, 8, ["default-active"]);
1161
+ };
1162
+ }
1163
+ }), Ll = /* @__PURE__ */ N($l, [["__scopeId", "data-v-6dfc7821"]]), Rl = { class: "plugin-page-header" }, ql = { class: "plugin-page-header__user-container" }, Ul = { class: "plugin-page-header__user-container__info" }, jl = ["src"], Ol = ["src"], Fl = {
1164
+ key: 1,
1165
+ class: "plugin-page-header__user-container__info"
1166
+ }, Ys = /* @__PURE__ */ k({
1167
+ __name: "PluginPageHeader",
1168
+ props: {
1169
+ menus: {},
1170
+ activeIndex: {}
1171
+ },
1172
+ emits: ["handleMenuSelect"],
1173
+ setup(e, { emit: n }) {
1174
+ const t = Ue(), { user: l } = ot(t), a = x(() => l.value?.face || _e), s = x(() => new URL((/* @__PURE__ */ Object.assign({ "../../assets/images/user_level/level_1.svg": je, "../../assets/images/user_level/level_2.svg": Oe, "../../assets/images/user_level/level_3.svg": Fe, "../../assets/images/user_level/level_4.svg": Ne, "../../assets/images/user_level/level_5.svg": We, "../../assets/images/user_level/level_6.svg": Ge }))[`../../assets/images/user_level/level_${l.value?.level ?? 0}.svg`], import.meta.url).href), o = async () => {
1175
+ t.setUser(await R.user.switchUser());
1176
+ }, r = () => {
1177
+ t.deleteUser();
1178
+ }, u = n, v = (m) => {
1179
+ m && u("handleMenuSelect", m);
1180
+ };
1181
+ return le(async () => {
1182
+ if (l.value)
1183
+ try {
1184
+ const m = await R.user.getMyInfoByCookie(l.value.userCookie);
1185
+ t.setUser(m);
1186
+ } catch {
1187
+ Y("当前用户 cookie 已失效"), t.deleteUser();
1188
+ }
1189
+ }), (m, f) => {
1190
+ const A = Ll, S = ke, _ = zl, Q = Et, w = kt, V = Bt, P = Ct;
1191
+ return i(), p("div", Rl, [
1192
+ g(A, {
1193
+ class: "plugin-page-header__menus",
1194
+ "active-index": e.activeIndex,
1195
+ menus: e.menus,
1196
+ onHandleSelect: v
1197
+ }, null, 8, ["active-index", "menus"]),
1198
+ c("div", ql, [
1199
+ y(l) ? (i(), b(Q, {
1200
+ key: 0,
1201
+ placement: "bottom-end",
1202
+ width: "auto",
1203
+ trigger: "hover"
1204
+ }, {
1205
+ reference: d(() => [
1206
+ c("div", Ul, [
1207
+ c("img", {
1208
+ class: "plugin-page-header__user-container__info__face",
1209
+ src: a.value,
1210
+ alt: "face"
1211
+ }, null, 8, jl),
1212
+ g(S, {
1213
+ class: "plugin-page-header__user-container__info__name",
1214
+ content: y(l).name
1215
+ }, null, 8, ["content"]),
1216
+ c("img", {
1217
+ class: "plugin-page-header__user-container__info__level",
1218
+ src: s.value,
1219
+ alt: "level img"
1220
+ }, null, 8, Ol)
1221
+ ])
1222
+ ]),
1223
+ default: d(() => [
1224
+ g(_, { user: y(l) }, null, 8, ["user"])
1225
+ ]),
1226
+ _: 1
1227
+ })) : (i(), p("div", Fl, [...f[0] || (f[0] = [
1228
+ c("img", {
1229
+ class: "plugin-page-header__user-container__info__face",
1230
+ alt: "",
1231
+ src: _e
1232
+ }, null, -1),
1233
+ c("span", { class: "plugin-page-header__user-container__info__name" }, "未登录", -1)
1234
+ ])])),
1235
+ g(P, {
1236
+ placement: "bottom-end",
1237
+ trigger: "click",
1238
+ size: "default"
1239
+ }, {
1240
+ dropdown: d(() => [
1241
+ g(V, null, {
1242
+ default: d(() => [
1243
+ g(w, { onClick: o }, {
1244
+ default: d(() => [...f[1] || (f[1] = [
1245
+ H("选择用户", -1)
1246
+ ])]),
1247
+ _: 1
1248
+ }),
1249
+ y(l) ? (i(), b(w, {
1250
+ key: 0,
1251
+ onClick: r
1252
+ }, {
1253
+ default: d(() => [...f[2] || (f[2] = [
1254
+ H("取消选择", -1)
1255
+ ])]),
1256
+ _: 1
1257
+ })) : D("", !0)
1258
+ ]),
1259
+ _: 1
1260
+ })
1261
+ ]),
1262
+ default: d(() => [
1263
+ f[3] || (f[3] = c("span", { class: "plugin-page-header__user-container__arrow" }, "▼", -1))
1264
+ ]),
1265
+ _: 1
1266
+ })
1267
+ ])
1268
+ ]);
1269
+ };
1270
+ }
1271
+ }), Nl = {}, Wl = { class: "plugin-page-container" };
1272
+ function Gl(e, n) {
1273
+ return i(), p("div", Wl, [
1274
+ C(e.$slots, "default", {}, void 0, !0)
1275
+ ]);
1276
+ }
1277
+ const Xs = /* @__PURE__ */ N(Nl, [["render", Gl], ["__scopeId", "data-v-03560940"]]), Jl = { class: "page-table__toolbar" }, Zl = { class: "page-table__actions" }, Kl = /* @__PURE__ */ k({
1278
+ inheritAttrs: !1,
1279
+ __name: "PageTable",
1280
+ props: {
1281
+ autoLoad: { type: Boolean, default: !0 },
1282
+ searchActionLabel: { default: "搜索" },
1283
+ actions: { default: () => ["search", "resetQuery"] },
1284
+ fetchPage: {},
1285
+ pageParams: {},
1286
+ queryParams: {},
1287
+ pageSizes: {},
1288
+ selectionMode: {},
1289
+ tableHeight: {},
1290
+ tableLayout: { default: "auto" }
1291
+ },
1292
+ emits: ["reset", "search"],
1293
+ setup(e, { expose: n, emit: t }) {
1294
+ const l = at(), a = x(() => ({
1295
+ class: l.class,
1296
+ style: l.style
1297
+ })), s = x(() => {
1298
+ const { class: W, style: q, ...ne } = l;
1299
+ return ne;
1300
+ }), o = e, r = B(!1), { pageData: u, tableData: v, loading: m, refresh: f, resetAndRefresh: A, handleSizeChange: S, handleCurrPageChange: _ } = Dt({
1301
+ fetchPage: o.fetchPage,
1302
+ pageParams: o.pageParams,
1303
+ queryParams: o.queryParams ? () => o.queryParams : void 0,
1304
+ autoLoad: o.autoLoad,
1305
+ onLoaded: () => {
1306
+ r.value = !0, I.value?.setScrollTop(0);
1307
+ }
1308
+ }), Q = t, w = () => {
1309
+ Q("search"), f();
1310
+ }, V = async () => {
1311
+ Q("reset"), await Ae(), await A();
1312
+ }, P = X("tableWrapperRef"), I = X("tableRef"), T = B(void 0), z = async () => {
1313
+ o.tableHeight ? T.value = o.tableHeight : P.value?.clientHeight && (T.value = P.value?.clientHeight);
1314
+ };
1315
+ let M, L = 0;
1316
+ le(async () => {
1317
+ P.value && (M = new ResizeObserver((W) => {
1318
+ cancelAnimationFrame(L), L = requestAnimationFrame(() => {
1319
+ z();
1320
+ });
1321
+ }), M.observe(P.value));
1322
+ }), re(() => {
1323
+ M?.disconnect();
1324
+ });
1325
+ const se = x(() => ({
1326
+ search: o.actions.includes("search"),
1327
+ resetQuery: o.actions.includes("resetQuery")
1328
+ })), pe = x(() => o.pageSizes && o.pageSizes.length > 1 ? "total, sizes, prev, pager, next, jumper" : "total, prev, pager, next, jumper"), Se = !!Ve().query;
1329
+ return n({
1330
+ loading: m,
1331
+ tableRef: I,
1332
+ tableData: v,
1333
+ pageData: u,
1334
+ refresh: f,
1335
+ resetAndRefresh: A,
1336
+ getSelectionRows: I.value?.getSelectionRows,
1337
+ toggleRowSelection: I.value?.toggleRowSelection,
1338
+ setCurrentRow: I.value?.setCurrentRow,
1339
+ clearSelection: I.value?.clearSelection,
1340
+ scrollTo: I.value?.scrollTo
1341
+ }), (W, q) => {
1342
+ const ne = de, Ze = St, Ke = Qt, Ye = Pt, Xe = xe;
1343
+ return K((i(), p("div", J({ class: "page-table" }, a.value), [
1344
+ c("div", Jl, [
1345
+ c("div", {
1346
+ class: G(["page-table__query", Se ? "has-query" : ""])
1347
+ }, [
1348
+ C(W.$slots, "query", {}, void 0, !0),
1349
+ c("div", Zl, [
1350
+ C(W.$slots, "actions", {}, void 0, !0),
1351
+ se.value.search ? (i(), b(ne, {
1352
+ key: 0,
1353
+ type: "primary",
1354
+ onClick: w
1355
+ }, {
1356
+ default: d(() => [
1357
+ H(h(e.searchActionLabel), 1)
1358
+ ]),
1359
+ _: 1
1360
+ })) : D("", !0),
1361
+ se.value.resetQuery ? (i(), b(ne, {
1362
+ key: 1,
1363
+ onClick: V
1364
+ }, {
1365
+ default: d(() => [...q[2] || (q[2] = [
1366
+ H("重置", -1)
1367
+ ])]),
1368
+ _: 1
1369
+ })) : D("", !0)
1370
+ ])
1371
+ ], 2)
1372
+ ]),
1373
+ c("div", {
1374
+ ref_key: "tableWrapperRef",
1375
+ ref: P,
1376
+ class: "page-table__table-wrapper"
1377
+ }, [
1378
+ r.value ? (i(), b(y(ut), J({
1379
+ key: 0,
1380
+ ref_key: "tableRef",
1381
+ ref: I
1382
+ }, s.value, {
1383
+ class: "page-table__table",
1384
+ data: y(v),
1385
+ border: "",
1386
+ height: T.value,
1387
+ "table-layout": e.tableLayout,
1388
+ "highlight-current-row": e.selectionMode === "single"
1389
+ }), {
1390
+ empty: d(() => [
1391
+ C(W.$slots, "empty", {}, () => [
1392
+ g(Ke, { description: "没有数据" })
1393
+ ], !0)
1394
+ ]),
1395
+ default: d(() => [
1396
+ e.selectionMode === "multiple" ? (i(), b(Ze, {
1397
+ key: 0,
1398
+ type: "selection",
1399
+ width: "55"
1400
+ })) : D("", !0),
1401
+ C(W.$slots, "default", {}, void 0, !0)
1402
+ ]),
1403
+ _: 3
1404
+ }, 16, ["data", "height", "table-layout", "highlight-current-row"])) : D("", !0)
1405
+ ], 512),
1406
+ g(Ye, {
1407
+ class: "page-table__pagination",
1408
+ "current-page": y(u).pageNum,
1409
+ "onUpdate:currentPage": q[0] || (q[0] = (ge) => y(u).pageNum = ge),
1410
+ "page-size": y(u).pageSize,
1411
+ "onUpdate:pageSize": q[1] || (q[1] = (ge) => y(u).pageSize = ge),
1412
+ "page-sizes": e.pageSizes,
1413
+ total: y(u).total,
1414
+ layout: pe.value,
1415
+ onCurrentChange: y(_),
1416
+ onSizeChange: y(S)
1417
+ }, null, 8, ["current-page", "page-size", "page-sizes", "total", "layout", "onCurrentChange", "onSizeChange"])
1418
+ ], 16)), [
1419
+ [Xe, y(m)]
1420
+ ]);
1421
+ };
1422
+ }
1423
+ }), en = /* @__PURE__ */ N(Kl, [["__scopeId", "data-v-b0b23806"]]);
1424
+ export {
1425
+ U as AppIcon,
1426
+ Ns as AppLoadingDialog,
1427
+ ke as AppTooltip,
1428
+ zl as BiliUserCard,
1429
+ Ks as BiliUserInfo,
1430
+ js as CountdownDialog,
1431
+ Js as ExternalLink,
1432
+ Ws as IconButton,
1433
+ Gs as IconLabel,
1434
+ ul as LoadingDialog,
1435
+ Zs as LogPrint,
1436
+ al as PageRangeDialog,
1437
+ en as PageTable,
1438
+ Je as PluginMenuItem,
1439
+ Ll as PluginMenus,
1440
+ Xs as PluginPageContent,
1441
+ Ys as PluginPageHeader,
1442
+ Yt as SelectDialog,
1443
+ qs as SettingGroup,
1444
+ Us as SettingItem,
1445
+ be as baseUpdateThemeColor,
1446
+ De as blackColor,
1447
+ Vs as handleError,
1448
+ zs as initAppTheme,
1449
+ Hs as initBilitoolkitUi,
1450
+ me as initTransparentColors,
1451
+ Ee as isDarkTheme,
1452
+ Mt as showConfirm,
1453
+ $s as showConfirmSequence,
1454
+ Y as showError,
1455
+ Fs as showPageRangeDialog,
1456
+ Os as showSelectDialog,
1457
+ Ce as showToast,
1458
+ Ts as showWarning,
1459
+ Is as switchDefaultTheme,
1460
+ Ms as switchThemeMode,
1461
+ R as toolkitApi,
1462
+ ie as updateAppTheme,
1463
+ Ds as updatePrimaryColor,
1464
+ ve as useAppThemeStore,
1465
+ Ls as useAutoRefreshData,
1466
+ Ot as useCountdown,
1467
+ Be as useLoadingData,
1468
+ Dt as usePageTable,
1469
+ Rs as useSelectData,
1470
+ Ue as useSelectedUserStore,
1471
+ Me as whiteColor
1472
+ };