@yuku123/z-team-component 0.2.91 → 0.2.92

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 (53) hide show
  1. package/dist/{ChangeLogView-DagOxr6O.js → ChangeLogView-DMVBdFFX.js} +12 -12
  2. package/dist/ComponentDoc-Boc9n2c_.js +8035 -0
  3. package/dist/{InvitationManagementPage-DYoqQA0v.js → InvitationManagementPage-B4UJQBrv.js} +1 -1
  4. package/dist/{OnboardingPage-D2Gm8MRd.js → OnboardingPage-BuDvSKMx.js} +2 -2
  5. package/dist/{ScheduledTasks-DB3VxAnb.js → ScheduledTasks-DY4iYtX3.js} +4341 -4337
  6. package/dist/{SystemShell-D3jHItxY.js → SystemShell-UVZjsfJs.js} +11 -12
  7. package/dist/admin-logs-OIyOdfuC.js +198 -0
  8. package/dist/{api-DYsAzJJo.js → api-mJ7FvgsR.js} +1 -1
  9. package/dist/createWorkspaceWsHandler-9k7O4P-D.js +13135 -0
  10. package/dist/{index-B5dDwxhs.js → index-BMt6Z1yA.js} +1 -1
  11. package/dist/{index-Cw6MIoNv.js → index-Bi6mbk7-.js} +6 -7
  12. package/dist/{index-E4Q6JmzX.js → index-BxRNZbw5.js} +3 -3
  13. package/dist/{index-CgWa7RFv.js → index-C2LwqjZQ.js} +23 -24
  14. package/dist/{index-BZ12pY96.js → index-COLSSd6V.js} +2 -2
  15. package/dist/{index-BfzgRKii.js → index-CYe2nfiG.js} +90 -91
  16. package/dist/{index-BYe87pnq.js → index-CeYCMcgX.js} +11 -12
  17. package/dist/index-Ckpc_Z6-.js +3495 -0
  18. package/dist/{index-BMQ6XkO3.js → index-CpA8ev3a.js} +1 -1
  19. package/dist/{index-VGtET31b.js → index-CpwvgQ3b.js} +1 -1
  20. package/dist/{index-W_4faD_M.js → index-CsHpsX_P.js} +2 -2
  21. package/dist/{index-CYyFYmlZ.js → index-CwNtNKwX.js} +8 -9
  22. package/dist/index-D1odHNMR.js +316 -0
  23. package/dist/{index-DyQ9YnMd.js → index-D74FCwtx.js} +3629 -3473
  24. package/dist/{index-Dwqa30HZ.js → index-D83QI-17.js} +4 -4
  25. package/dist/{index-Cggl78j7.js → index-DeHC7MtX.js} +5 -6
  26. package/dist/{index-ues0LW7p.js → index-FAhDAnIy.js} +1257 -1258
  27. package/dist/{index-C8cR7lJw.js → index-GHQ4Tl6H.js} +10 -11
  28. package/dist/{index-BaCqZeiw.js → index-Gk-5X-GO.js} +1 -1
  29. package/dist/{index-CZyFAmEq.js → index-Hm6ZaRmP.js} +10 -11
  30. package/dist/{index-CLfhHxPf.js → index-TW4txhve.js} +1 -1
  31. package/dist/{index-DE82vM_4.js → index-kwnNAAM0.js} +19 -18
  32. package/dist/{index-CSpckSHg.js → index-r4IxoITP.js} +23 -23
  33. package/dist/{index-CLD5lLa6.js → index-s5yeUpMA.js} +19 -19
  34. package/dist/{index-152G-_4j.js → index-zEqjsTFh.js} +5 -6
  35. package/dist/index.js +1 -1
  36. package/dist/{instance-CI6-4BZ6.js → instance-BpY3BXci.js} +1 -1
  37. package/dist/{menuPermission-C33I6ujb.js → menuPermission-DX8KlB6K.js} +11 -11
  38. package/dist/pages.js +8 -8
  39. package/dist/{send-default-agent-team-message-c5oKdQQA.js → send-default-agent-team-message-DVFuAdE9.js} +1 -1
  40. package/dist/{sso-user-DToM5dPy.js → sso-user-BBkFFo35.js} +1 -1
  41. package/dist/{training-B38tnwLL.js → training-BCi9cA6O.js} +1 -1
  42. package/dist/webide-MQ5gD1Go.js +5233 -0
  43. package/dist/z-team-component.css +1 -26
  44. package/package.json +3 -2
  45. package/dist/ComponentDoc-Bqfu128t.js +0 -3998
  46. package/dist/admin-logs-ogvMwS4O.js +0 -302
  47. package/dist/api-BftpestH.js +0 -2156
  48. package/dist/createWorkspaceWsHandler-D8h5BEzH.js +0 -13030
  49. package/dist/index-CUVdeb8y.js +0 -638
  50. package/dist/index-DVaTGA2z.js +0 -3488
  51. package/dist/schedule-ChO2xIGd.js +0 -625
  52. package/dist/useAppStore-uc8v8XZC.js +0 -1920
  53. package/dist/webide-BuUYLPSp.js +0 -8399
@@ -2,7 +2,7 @@ import { jsxs as r, jsx as n, Fragment as H } from "react/jsx-runtime";
2
2
  import { BookOutlined as V, ReloadOutlined as Ne, SearchOutlined as fe, CloseOutlined as ge, CaretDownOutlined as ve, CaretRightOutlined as Te } from "@ant-design/icons";
3
3
  import { message as Se, Spin as F } from "antd";
4
4
  import { useState as k, useRef as M, useEffect as G, useCallback as C } from "react";
5
- import { a as A, B as R, u as E } from "./api-BftpestH.js";
5
+ import { a as A, B as R, u as E } from "./ComponentDoc-Boc9n2c_.js";
6
6
  function B(a) {
7
7
  const l = new URLSearchParams();
8
8
  Object.entries(a).forEach(([N, s]) => {
@@ -1,7 +1,7 @@
1
1
  import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
2
  import { useState as b, useRef as N, useEffect as r, useCallback as h } from "react";
3
3
  import { h as o } from "./history-BlrA1eaW.js";
4
- import { C as A } from "./ChangeLogView-DagOxr6O.js";
4
+ import { C as A } from "./ChangeLogView-DMVBdFFX.js";
5
5
  const T = "_docs_lzhu5_12", v = "_bgLayer_lzhu5_59", p = "_bgGrid_lzhu5_70", f = "_navbar_lzhu5_87", y = "_navLeft_lzhu5_103", z = "_navBack_lzhu5_110", k = "_navBrand_lzhu5_132", I = "_navLogo_lzhu5_139", B = "_navTitle_lzhu5_154", q = "_navLink_lzhu5_164", L = "_layout_lzhu5_191", C = "_sidebar_lzhu5_202", S = "_sidebarInner_lzhu5_213", G = "_sidebarTitle_lzhu5_217", D = "_tocItem_lzhu5_227", E = "_tocActive_lzhu5_249", K = "_tocNum_lzhu5_260", w = "_content_lzhu5_275", F = "_section_lzhu5_285", O = "_secTitle_lzhu5_290", R = "_subTitle_lzhu5_301", x = "_lead_lzhu5_309", W = "_list_lzhu5_329", M = "_olist_lzhu5_360", Z = "_callout_lzhu5_397", Q = "_calloutBlue_lzhu5_398", $ = "_calloutGreen_lzhu5_399", P = "_calloutRed_lzhu5_400", U = "_inlineCode_lzhu5_441", V = "_codeBlock_lzhu5_454", H = "_tableWrap_lzhu5_470", j = "_table_lzhu5_470", Y = "_tableKey_lzhu5_512", J = "_tableIcon_lzhu5_517", X = "_statusDot_lzhu5_523", ee = "_tone_pending_lzhu5_532", le = "_tone_running_lzhu5_536", ne = "_tone_suspended_lzhu5_541", ce = "_tone_done_lzhu5_546", ie = "_tone_failed_lzhu5_551", te = "_tone_cancelled_lzhu5_556", ae = "_markGood_lzhu5_562", se = "_markBad_lzhu5_563", de = "_faqList_lzhu5_577", re = "_faqItem_lzhu5_583", he = "_faqQ_lzhu5_597", oe = "_faqA_lzhu5_604", me = "_changelogEmbed_lzhu5_611", ge = "_changelogTip_lzhu5_619", ue = "_changelogLink_lzhu5_625", _e = "_docFooter_lzhu5_637", be = "_backBtn_lzhu5_648", Ne = "_docFooterText_lzhu5_671", l = {
6
6
  docs: T,
7
7
  bgLayer: v,
@@ -3,8 +3,8 @@ import { useState as y, useMemo as d } from "react";
3
3
  import { useNavigate as G, useLocation as k } from "react-router-dom";
4
4
  import { CodeOutlined as L, DownOutlined as N, RightOutlined as O, AppstoreOutlined as v, TableOutlined as A, DatabaseOutlined as w, RobotOutlined as H, FunctionOutlined as M, ApartmentOutlined as W, EyeOutlined as C, BranchesOutlined as $, DeploymentUnitOutlined as p, SafetyCertificateOutlined as g } from "@ant-design/icons";
5
5
  import R from "@yuku123/z-lc-component";
6
- import { f as U, M as x } from "./menuPermission-C33I6ujb.js";
7
- import { u as b } from "./useAppStore-uc8v8XZC.js";
6
+ import { f as U, M as x } from "./menuPermission-DX8KlB6K.js";
7
+ import { d as b } from "./ComponentDoc-Boc9n2c_.js";
8
8
  const D = "_shell_1n5c7_7", E = "_sidebar_1n5c7_15", P = "_sidebarHeader_1n5c7_26", j = "_menuList_1n5c7_37", K = "_menuGroup_1n5c7_43", T = "_menuGroupHeader_1n5c7_47", B = "_menuGroupLabel_1n5c7_65", F = "_menuGroupArrow_1n5c7_69", q = "_menuSubList_1n5c7_74", z = "_menuSubItemWrap_1n5c7_80", J = "_menuSubItem_1n5c7_80", Q = "_menuSubItemActive_1n5c7_101", V = "_menuSubItemIcon_1n5c7_108", X = "_menuSubItemLabel_1n5c7_113", Y = "_main_1n5c7_118", t = {
9
9
  shell: D,
10
10
  sidebar: E,
@@ -1,24 +1,23 @@
1
1
  import { jsx as s, jsxs as C } from "react/jsx-runtime";
2
2
  import { f as z, r as v } from "./ctc-sso-DtJHC-2M.js";
3
- import { r as L, h as N, s as T } from "./sso-user-DToM5dPy.js";
3
+ import { r as L, h as N, s as T } from "./sso-user-BBkFFo35.js";
4
4
  import { CheckCircleFilled as q } from "@ant-design/icons";
5
5
  import { Spin as R } from "antd";
6
6
  import W from "query-string";
7
7
  import { useMemo as P, useState as p, useCallback as A, useEffect as U } from "react";
8
8
  import { useLocation as F } from "react-router-dom";
9
9
  import { h as H } from "./history-BlrA1eaW.js";
10
- import { c as Y, e as B } from "./api-BftpestH.js";
11
- import { u as m } from "./useAppStore-uc8v8XZC.js";
10
+ import { d as m, e as Y, j as B } from "./ComponentDoc-Boc9n2c_.js";
12
11
  /* empty css */
13
12
  import { b as G } from "./mobile-client-O3yr9h6t.js";
14
- function ne() {
13
+ function oe() {
15
14
  const i = F(), g = W.parse(i.search), S = P(
16
15
  () => String(g.name ?? "WebIDE 在线咨询").trim(),
17
16
  [i.search]
18
17
  ), _ = P(
19
18
  () => String(g.source ?? "z-team-webide").trim(),
20
19
  [i.search]
21
- ), [b, E] = p(!1), [I, y] = p("正在登录…"), [w, M] = p([]), [$, x] = p(""), { currentUser: d, updateCurrentUser: u, expandProject: j } = m(), f = A((e, o) => {
20
+ ), [b, E] = p(!1), [I, y] = p("正在登录…"), [w, M] = p([]), [j, x] = p(""), { currentUser: d, updateCurrentUser: u, expandProject: $ } = m(), f = A((e, o) => {
22
21
  M((a) => [...a, e]), y(o);
23
22
  }, []);
24
23
  return U(() => {
@@ -85,7 +84,7 @@ function ne() {
85
84
  },
86
85
  a.token
87
86
  );
88
- if (e || (f("群组已创建", "正在初始化工作区…"), await j(l), e)) return;
87
+ if (e || (f("群组已创建", "正在初始化工作区…"), await $(l), e)) return;
89
88
  const t = m.getState();
90
89
  if (t.currentProject && await t.refreshProjectPanels(
91
90
  t.currentProject.id,
@@ -109,10 +108,10 @@ function ne() {
109
108
  d,
110
109
  S,
111
110
  _,
112
- j,
111
+ $,
113
112
  f,
114
113
  i.search
115
- ]), $ ? /* @__PURE__ */ s("div", { className: "embed-chat-page embed-chat-page--error", children: /* @__PURE__ */ s("p", { children: $ }) }) : /* @__PURE__ */ s("div", { className: "embed-chat-page embed-chat-page--loading", children: /* @__PURE__ */ C("div", { className: "embed-chat-page__panel", children: [
114
+ ]), j ? /* @__PURE__ */ s("div", { className: "embed-chat-page embed-chat-page--error", children: /* @__PURE__ */ s("p", { children: j }) }) : /* @__PURE__ */ s("div", { className: "embed-chat-page embed-chat-page--loading", children: /* @__PURE__ */ C("div", { className: "embed-chat-page__panel", children: [
116
115
  /* @__PURE__ */ s(R, { size: "large" }),
117
116
  /* @__PURE__ */ s("p", { className: "embed-chat-page__step", children: I }),
118
117
  w.length > 0 ? /* @__PURE__ */ s("ul", { className: "embed-chat-page__done-list", children: w.filter((e) => e.trim().length > 0).map((e, o) => /* @__PURE__ */ C(
@@ -129,5 +128,5 @@ function ne() {
129
128
  ] }) });
130
129
  }
131
130
  export {
132
- ne as default
131
+ oe as default
133
132
  };
@@ -0,0 +1,316 @@
1
+ import { a as h, f as _, B as N, v as A, t as g } from "./ComponentDoc-Boc9n2c_.js";
2
+ import { jsx as p, jsxs as I } from "react/jsx-runtime";
3
+ import { useMemo as S, useState as C, useEffect as G, Component as L } from "react";
4
+ function $(t) {
5
+ if (t == null) return !0;
6
+ const e = String(t).trim();
7
+ return e === "" || e === "0";
8
+ }
9
+ function b(t) {
10
+ const e = (i) => {
11
+ if (typeof i != "string" || !i.trim()) return [];
12
+ try {
13
+ const s = JSON.parse(i);
14
+ return Array.isArray(s) ? s.filter((d) => typeof d == "string") : [];
15
+ } catch {
16
+ return [];
17
+ }
18
+ }, n = (i) => {
19
+ if (typeof i != "string" || !i.trim()) return [];
20
+ try {
21
+ const s = JSON.parse(i);
22
+ return Array.isArray(s) ? s.filter(
23
+ (d) => !!d && typeof d == "object" && typeof d.type == "string"
24
+ ) : [];
25
+ } catch {
26
+ return [];
27
+ }
28
+ }, r = () => {
29
+ const i = t.assigneeUserIds;
30
+ let s = null;
31
+ if (Array.isArray(i))
32
+ s = i;
33
+ else if (typeof i == "string" && i.trim())
34
+ try {
35
+ const o = JSON.parse(i);
36
+ s = Array.isArray(o) ? o : null;
37
+ } catch {
38
+ s = i.split(",");
39
+ }
40
+ if (s) {
41
+ const o = s.map((u) => String(u ?? "").trim()).filter(Boolean);
42
+ if (o.length > 0) return Array.from(new Set(o));
43
+ }
44
+ const d = t.assigneeUserId == null ? "" : String(t.assigneeUserId);
45
+ return d.trim() ? [d.trim()] : [];
46
+ }, c = (i) => {
47
+ const s = t.assignees, d = Array.isArray(s) ? s.map((o) => {
48
+ const u = o ?? {}, m = String(u.userId ?? "").trim();
49
+ return m ? { userId: m, name: String(u.name ?? "").trim() || m } : null;
50
+ }).filter((o) => o != null) : [];
51
+ return d.length > 0 ? d : i.map((o) => ({ userId: o, name: o }));
52
+ }, l = r();
53
+ return {
54
+ id: g(t.id),
55
+ projectId: t.projectId == null ? null : g(t.projectId),
56
+ userId: String(t.userId ?? ""),
57
+ title: String(t.title ?? ""),
58
+ detail: t.detail == null ? null : String(t.detail),
59
+ status: t.status ?? "TODO",
60
+ priority: t.priority ?? "MEDIUM",
61
+ dueDate: t.dueDate == null ? null : String(t.dueDate).slice(0, 10),
62
+ assigneeUserId: l[0] ?? null,
63
+ assigneeUserIds: l,
64
+ assignees: c(l),
65
+ projectTitle: t.projectTitle == null || !String(t.projectTitle).trim() ? null : String(t.projectTitle),
66
+ tags: e(t.tags),
67
+ links: n(t.links),
68
+ parentId: $(t.parentId) ? "" : g(t.parentId),
69
+ sortOrder: t.sortOrder == null ? 0 : Number(t.sortOrder),
70
+ completedAt: t.completedAt == null ? null : String(t.completedAt),
71
+ completedBy: t.completedBy == null ? null : String(t.completedBy),
72
+ createByName: t.createByName == null ? null : String(t.createByName),
73
+ updateTime: t.updateTime == null ? null : String(t.updateTime),
74
+ agentId: t.agentId == null ? null : g(t.agentId),
75
+ agentSessionId: t.agentSessionId == null ? null : g(t.agentSessionId)
76
+ };
77
+ }
78
+ function B(t) {
79
+ const e = t ?? {};
80
+ return {
81
+ id: g(e.id),
82
+ userId: String(e.userId ?? ""),
83
+ title: String(e.title ?? ""),
84
+ icon: e.icon == null ? null : String(e.icon),
85
+ description: e.description == null ? null : String(e.description),
86
+ visibility: e.visibility === "shared" ? "shared" : "private",
87
+ sortOrder: e.sortOrder == null ? 0 : Number(e.sortOrder),
88
+ extraInfo: e.extraInfo == null ? null : String(e.extraInfo),
89
+ createByName: e.createByName == null ? null : String(e.createByName)
90
+ };
91
+ }
92
+ function O(t) {
93
+ const e = t ?? {}, n = Array.isArray(e.memberDetails) ? e.memberDetails : [];
94
+ return {
95
+ ...B(e),
96
+ openCount: e.openCount == null ? 0 : Number(e.openCount),
97
+ memberDetails: n.map((r) => {
98
+ const c = r ?? {}, l = String(c.userId ?? "").trim();
99
+ return l ? { userId: l, userName: String(c.userName ?? "").trim() || l } : null;
100
+ }).filter((r) => r != null)
101
+ };
102
+ }
103
+ async function et(t = "") {
104
+ const e = t ? `?token=${encodeURIComponent(t)}` : "", n = await h(`${N}/todo/projects${e}`, _), r = await A(n, "获取待办项目失败");
105
+ return {
106
+ owned: ((r == null ? void 0 : r.owned) ?? []).map(O),
107
+ joined: ((r == null ? void 0 : r.joined) ?? []).map(O)
108
+ };
109
+ }
110
+ async function nt(t = {}, e = "") {
111
+ const n = new URLSearchParams();
112
+ e && n.set("token", e), t.view && n.set("view", t.view), t.projectId != null && n.set("projectId", String(t.projectId)), t.status && n.set("status", t.status), t.keyword && n.set("keyword", t.keyword);
113
+ const r = n.toString() ? `?${n.toString()}` : "", c = await h(`${N}/todo/items${r}`, _);
114
+ return (await A(
115
+ c,
116
+ "获取事项失败"
117
+ ) ?? []).map(b);
118
+ }
119
+ async function rt(t, e = "") {
120
+ const n = e ? `?token=${encodeURIComponent(e)}` : "", r = await h(`${N}/todo/items${n}`, {
121
+ ..._,
122
+ method: "POST",
123
+ headers: { "Content-Type": "application/json" },
124
+ body: JSON.stringify(t)
125
+ }), c = await A(r, "新建事项失败");
126
+ return b(c);
127
+ }
128
+ const D = {
129
+ RUNTIME_MONITOR_VIEW: ["RUNTIME_MONITOR_MANAGE"],
130
+ EVALUATION_VIEW: ["EVALUATION_MANAGE"],
131
+ COLLABORATION_VIEW: [
132
+ "AGENT_MANAGE",
133
+ "SKILL_MANAGE",
134
+ "SCENARIO_MANAGE",
135
+ "PROFILE_MANAGE",
136
+ "TAG_MANAGE",
137
+ "TOOL_MANAGE"
138
+ ],
139
+ EVOLUTION_VIEW: ["EVOLUTION_MANAGE"],
140
+ OPS_CONFIG_VIEW: [
141
+ "OPS_CONFIG_MANAGE",
142
+ "ONCALL_MANAGE",
143
+ "ANNOUNCEMENT_MANAGE",
144
+ "OPS_REPORT_MANAGE"
145
+ ],
146
+ KNOWLEDGE_VIEW: ["KNOWLEDGE_MANAGE"],
147
+ WEBIDE_VIEW: ["WEBIDE_MANAGE"]
148
+ };
149
+ function it(t, e) {
150
+ var r;
151
+ if (!t) return !1;
152
+ if (t.is_global_admin || (r = t.permissions) != null && r.includes(e)) return !0;
153
+ const n = D[e];
154
+ return !!(n != null && n.some((c) => {
155
+ var l;
156
+ return (l = t.permissions) == null ? void 0 : l.includes(c);
157
+ }));
158
+ }
159
+ const P = "_wrap_2gcw5_1", U = "_card_2gcw5_9", R = "_badge_2gcw5_19", V = "_title_2gcw5_41", W = "_desc_2gcw5_48", v = "_actions_2gcw5_55", x = "_primary_2gcw5_63", z = "_secondary_2gcw5_75", F = "_details_2gcw5_90", J = "_pre_2gcw5_102", w = "_copy_2gcw5_117", K = "_compact_2gcw5_127", a = {
160
+ wrap: P,
161
+ card: U,
162
+ badge: R,
163
+ title: V,
164
+ desc: W,
165
+ actions: v,
166
+ primary: x,
167
+ secondary: z,
168
+ details: F,
169
+ pre: J,
170
+ copy: w,
171
+ compact: K
172
+ };
173
+ function H(t) {
174
+ const e = t, n = `${(e == null ? void 0 : e.name) ?? ""} ${(e == null ? void 0 : e.message) ?? ""} ${typeof t == "string" ? t : ""}`;
175
+ return /ChunkLoadError|Loading chunk|Failed to fetch dynamically imported module|Importing a module script failed|error loading dynamically imported module/i.test(n);
176
+ }
177
+ function Y(t) {
178
+ const { status: e, error: n } = t;
179
+ return e === 401 ? {
180
+ kind: "unauthorized",
181
+ status: e,
182
+ badge: "401",
183
+ title: "登录已失效",
184
+ description: "当前会话已过期或未建立,请重新登录后继续。重登后会回到这个页面。"
185
+ } : e === 403 ? {
186
+ kind: "forbidden",
187
+ status: e,
188
+ badge: "403",
189
+ title: "没有访问权限",
190
+ description: "当前账号无权访问该功能。如需开通,请联系管理员分配权限。"
191
+ } : e === 404 ? {
192
+ kind: "not-found",
193
+ status: e,
194
+ badge: "404",
195
+ title: "功能接口未就绪",
196
+ description: "这个页面要用的后端接口还没有部署,或前后端路径对不上。可以重试;若持续如此,请把技术详情发给运维确认版本。"
197
+ } : e && e >= 500 ? {
198
+ kind: "server",
199
+ status: e,
200
+ badge: String(e),
201
+ title: "服务暂时不可用",
202
+ description: "后端返回了错误。稍后重试;如果反复出现,请把技术详情发给运维。"
203
+ } : e === 0 ? {
204
+ kind: "network",
205
+ status: e,
206
+ badge: "!",
207
+ title: "网络不可用",
208
+ description: "请求没有到达后端。请检查网络,或确认本地后端服务是否已启动。"
209
+ } : H(n) ? {
210
+ kind: "chunk",
211
+ badge: "⟳",
212
+ title: "页面资源加载失败",
213
+ description: "可能刚发布了新版本,旧页面资源已被替换。刷新页面即可拿到新资源。"
214
+ } : n != null ? {
215
+ kind: "render",
216
+ badge: "!",
217
+ title: "页面渲染出错",
218
+ description: "这个页面遇到了未预期的错误,已被拦截,不影响其他页面。可以重试;仍然失败请把技术详情发给研发。"
219
+ } : {
220
+ kind: "unknown",
221
+ badge: "!",
222
+ title: "页面加载失败",
223
+ description: "发生了未知错误。请重试,或返回首页换个入口再试。"
224
+ };
225
+ }
226
+ function Q(t, e) {
227
+ const n = [];
228
+ if (n.push(`页面:${typeof location < "u" ? location.pathname + location.search : "-"}`), n.push(`时间:${(/* @__PURE__ */ new Date()).toISOString()}`), t != null && n.push(`HTTP:${t}`), e != null) {
229
+ const r = e;
230
+ r != null && r.name && n.push(`错误名:${String(r.name)}`), r != null && r.message && n.push(`消息:${String(r.message)}`), r != null && r.stack ? n.push(`堆栈:
231
+ ${String(r.stack)}`) : typeof e != "object" && n.push(`原文:${String(e)}`);
232
+ }
233
+ return n.join(`
234
+ `).slice(0, 4e3);
235
+ }
236
+ const X = ({
237
+ status: t,
238
+ error: e,
239
+ title: n,
240
+ description: r,
241
+ retry: c,
242
+ retryText: l,
243
+ extra: i,
244
+ showHome: s = !0,
245
+ compact: d = !1,
246
+ className: o
247
+ }) => {
248
+ const u = S(() => Y({ status: t, error: e }), [t, e]), [m, f] = C(!1), E = S(() => Q(t, e), [t, e]);
249
+ G(() => {
250
+ if (!m) return;
251
+ const y = setTimeout(() => f(!1), 2e3);
252
+ return () => clearTimeout(y);
253
+ }, [m]);
254
+ const T = async () => {
255
+ try {
256
+ await navigator.clipboard.writeText(E), f(!0);
257
+ } catch {
258
+ f(!1);
259
+ }
260
+ }, k = () => {
261
+ const y = encodeURIComponent(location.pathname + location.search);
262
+ location.assign(`/login?redirect=${y}`);
263
+ }, M = () => c ? /* @__PURE__ */ p("button", { type: "button", className: a.primary, onClick: c, children: l || "重试" }) : u.kind === "chunk" ? /* @__PURE__ */ p("button", { type: "button", className: a.primary, onClick: () => location.reload(), children: "刷新页面" }) : u.kind === "unauthorized" ? /* @__PURE__ */ p("button", { type: "button", className: a.primary, onClick: k, children: "重新登录" }) : null, j = e != null || t != null;
264
+ return /* @__PURE__ */ p(
265
+ "div",
266
+ {
267
+ className: [a.wrap, d ? a.compact : "", o || ""].filter(Boolean).join(" "),
268
+ role: "alert",
269
+ "data-error-kind": u.kind,
270
+ children: /* @__PURE__ */ I("div", { className: a.card, children: [
271
+ /* @__PURE__ */ p("div", { className: a.badge, "data-kind": u.kind, children: u.badge }),
272
+ /* @__PURE__ */ p("h2", { className: a.title, children: n || u.title }),
273
+ /* @__PURE__ */ p("p", { className: a.desc, children: r || u.description }),
274
+ /* @__PURE__ */ I("div", { className: a.actions, children: [
275
+ M(),
276
+ i,
277
+ s && u.kind !== "unauthorized" && /* @__PURE__ */ p("a", { className: a.secondary, href: "/", children: "返回首页" })
278
+ ] }),
279
+ j && /* @__PURE__ */ I("details", { className: a.details, children: [
280
+ /* @__PURE__ */ p("summary", { children: "技术详情" }),
281
+ /* @__PURE__ */ p("pre", { className: a.pre, children: E }),
282
+ /* @__PURE__ */ p("button", { type: "button", className: a.copy, onClick: T, children: m ? "已复制" : "复制详情" })
283
+ ] })
284
+ ] })
285
+ }
286
+ );
287
+ };
288
+ class st extends L {
289
+ constructor(e) {
290
+ super(e), this.state = { hasError: !1, error: null };
291
+ }
292
+ static getDerivedStateFromError(e) {
293
+ return { hasError: !0, error: e };
294
+ }
295
+ componentDidCatch(e, n) {
296
+ console.error("[ErrorBoundary]", e, n.componentStack);
297
+ }
298
+ render() {
299
+ return this.state.hasError ? this.props.fallback ? this.props.fallback : /* @__PURE__ */ p(
300
+ X,
301
+ {
302
+ error: this.state.error,
303
+ retry: () => this.setState({ hasError: !1, error: null })
304
+ }
305
+ ) : this.props.children;
306
+ }
307
+ }
308
+ export {
309
+ st as E,
310
+ X as P,
311
+ nt as a,
312
+ rt as c,
313
+ et as f,
314
+ it as h,
315
+ H as i
316
+ };