@marktowin/prototype-core 1.2.15 → 1.2.16

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.
@@ -1,6 +1,6 @@
1
- import { defineComponent as an, computed as x, openBlock as v, createBlock as ze, resolveDynamicComponent as fo, createElementBlock as f, Fragment as D, renderList as N, normalizeClass as A, createTextVNode as K, toDisplayString as c, createElementVNode as e, normalizeStyle as Oe, createCommentVNode as C, ref as b, watch as Ge, createVNode as V, Transition as Ya, withCtx as Xa, unref as i, withModifiers as Ce, withDirectives as T, vModelText as H, createStaticVNode as Ri, reactive as vo, onBeforeUnmount as is, onMounted as rl, vModelSelect as lt, nextTick as Ua, isRef as co, vModelCheckbox as Cd, withKeys as Ma } from "vue";
2
- import { Save as kd, CloudUpload as xd, Download as Id, X as hn, Plus as On, ChevronDown as $d, ChevronRight as _d, Trash2 as Bn, RefreshCw as sr, AlertTriangle as Pd, CheckCircle2 as Dd, CircleDot as Oi, Bug as Ad, ImagePlus as Bi, Filter as Ed, Search as qa, ArrowLeft as ji, FileJson as ar, FileSpreadsheet as Td, ArrowUp as Nd, ArrowDown as Rd, Check as lr, CircleAlert as ir, Clipboard as rr, SunMedium as Od, RotateCcw as Bd, PanelTop as ur, BookOpen as Ui, Cloud as jd, Database as Mi, PanelLeft as Ud, MessageSquare as Md, Keyboard as Vd } from "@lucide/vue";
3
- import { g as yo, a as ta, s as Ld } from "./index-COYukvl2.js";
1
+ import { defineComponent as an, computed as x, openBlock as v, createBlock as ze, resolveDynamicComponent as fo, createElementBlock as f, Fragment as D, renderList as N, normalizeClass as A, createTextVNode as K, toDisplayString as c, createElementVNode as e, normalizeStyle as Oe, createCommentVNode as C, ref as b, watch as Ge, createVNode as V, Transition as Ya, withCtx as Xa, unref as i, withModifiers as xe, withDirectives as T, vModelText as H, createStaticVNode as Ri, reactive as vo, onBeforeUnmount as is, onMounted as rl, vModelSelect as lt, nextTick as Ua, isRef as co, vModelCheckbox as Cd, withKeys as Ma } from "vue";
2
+ import { Save as kd, CloudUpload as xd, Download as Id, X as gn, Plus as On, ChevronDown as $d, ChevronRight as _d, Trash2 as Bn, RefreshCw as sr, AlertTriangle as Pd, CheckCircle2 as Dd, CircleDot as Oi, Bug as Ad, ImagePlus as Bi, Filter as Ed, Search as qa, ArrowLeft as ji, FileJson as ar, FileSpreadsheet as Td, ArrowUp as Nd, ArrowDown as Rd, Check as lr, CircleAlert as ir, Clipboard as rr, SunMedium as Od, RotateCcw as Bd, PanelTop as ur, BookOpen as Ui, Cloud as jd, Database as Mi, PanelLeft as Ud, MessageSquare as Md, Keyboard as Vd } from "@lucide/vue";
3
+ import { g as yo, a as ta, s as Ld } from "./index-BLf_SqQG.js";
4
4
  const qo = /* @__PURE__ */ an({
5
5
  __name: "ScreenRenderer",
6
6
  props: {
@@ -136,7 +136,7 @@ const qo = /* @__PURE__ */ an({
136
136
  height: `${Math.ceil(q * P.value) + 2}px`
137
137
  };
138
138
  }
139
- const ce = x(() => Math.ceil(Vi * P.value) + 16), ee = x(() => Math.ceil(Jo * P.value) + 16), se = x(() => P.value * 0.55), B = x(() => se.value * Jo / Fi), ke = x(() => ({
139
+ const ce = x(() => Math.ceil(Vi * P.value) + 16), ee = x(() => Math.ceil(Jo * P.value) + 16), se = x(() => P.value * 0.55), B = x(() => se.value * Jo / Fi), Ce = x(() => ({
140
140
  width: `${Math.ceil(Jo * se.value) + 2}px`,
141
141
  height: `${Math.ceil(Li * se.value) + 2}px`
142
142
  })), he = b(/* @__PURE__ */ new Set([0]));
@@ -167,7 +167,7 @@ const qo = /* @__PURE__ */ an({
167
167
  function Je(I, $) {
168
168
  r.value[I].title = $;
169
169
  }
170
- function ye(I) {
170
+ function be(I) {
171
171
  r.value[I].rows.push([]), X(I, r.value[I].rows.length - 1);
172
172
  }
173
173
  function M(I, $) {
@@ -182,8 +182,8 @@ const qo = /* @__PURE__ */ an({
182
182
  function ue(I, $) {
183
183
  const q = r.value[d.value];
184
184
  if (!q) return;
185
- const z = q.rows[I];
186
- z && (z.length > 0 ? z[0].rowLabel = $ : z.push({ screenId: "", rowLabel: $ }));
185
+ const G = q.rows[I];
186
+ G && (G.length > 0 ? G[0].rowLabel = $ : G.push({ screenId: "", rowLabel: $ }));
187
187
  }
188
188
  const Ze = x(
189
189
  () => o.screens.flatMap((I) => {
@@ -208,8 +208,8 @@ const qo = /* @__PURE__ */ an({
208
208
  };
209
209
  }
210
210
  function ae(I) {
211
- var z;
212
- const $ = Ee(I.screenId) ?? o.screens[0], q = I.stateId ? (z = o.stateOptionsByScreen($.id).find((E) => E.id === I.stateId)) == null ? void 0 : z.label : void 0;
211
+ var G;
212
+ const $ = Ee(I.screenId) ?? o.screens[0], q = I.stateId ? (G = o.stateOptionsByScreen($.id).find((E) => E.id === I.stateId)) == null ? void 0 : G.label : void 0;
213
213
  return {
214
214
  ...$,
215
215
  stateId: I.stateId,
@@ -236,7 +236,7 @@ const qo = /* @__PURE__ */ an({
236
236
  }
237
237
  function k(I, $) {
238
238
  I.preventDefault();
239
- const z = I.currentTarget.getBoundingClientRect(), E = z.left + z.width / 2;
239
+ const G = I.currentTarget.getBoundingClientRect(), E = G.left + G.width / 2;
240
240
  Ye.value = I.clientX < E ? "before" : "after", te.value = $;
241
241
  }
242
242
  function _(I, $) {
@@ -244,11 +244,11 @@ const qo = /* @__PURE__ */ an({
244
244
  I.preventDefault(), I.stopPropagation();
245
245
  const q = Ye.value;
246
246
  te.value = -1, Te.value = null, we.value = -1, ve.value = null;
247
- const z = (Qe = I.dataTransfer) == null ? void 0 : Qe.getData("text/plain");
248
- if (!z) return;
247
+ const G = (Qe = I.dataTransfer) == null ? void 0 : Qe.getData("text/plain");
248
+ if (!G) return;
249
249
  let E;
250
250
  try {
251
- E = JSON.parse(z);
251
+ E = JSON.parse(G);
252
252
  } catch {
253
253
  return;
254
254
  }
@@ -266,9 +266,9 @@ const qo = /* @__PURE__ */ an({
266
266
  }
267
267
  }
268
268
  function de(I) {
269
- var z;
269
+ var G;
270
270
  I.preventDefault(), te.value = -1, Te.value = null, we.value = -1, ve.value = null;
271
- const $ = (z = I.dataTransfer) == null ? void 0 : z.getData("text/plain");
271
+ const $ = (G = I.dataTransfer) == null ? void 0 : G.getData("text/plain");
272
272
  if (!$) return;
273
273
  let q;
274
274
  try {
@@ -283,8 +283,8 @@ const qo = /* @__PURE__ */ an({
283
283
  }
284
284
  }
285
285
  function He(I, $) {
286
- var q, z;
287
- (z = (q = r.value[d.value]) == null ? void 0 : q.rows[I]) == null || z.splice($, 1);
286
+ var q, G;
287
+ (G = (q = r.value[d.value]) == null ? void 0 : q.rows[I]) == null || G.splice($, 1);
288
288
  }
289
289
  const ut = b(null);
290
290
  let st = null;
@@ -294,7 +294,7 @@ const qo = /* @__PURE__ */ an({
294
294
  }, 2500);
295
295
  }
296
296
  const j = b(!1), pe = b(!1);
297
- function be() {
297
+ function ye() {
298
298
  j.value || (j.value = !0, a("save", JSON.parse(JSON.stringify(r.value)), (I) => {
299
299
  j.value = !1, _t(I ? "保存成功,流程模式已更新" : "保存失败,已保留当前编辑", I ? "success" : "error");
300
300
  }));
@@ -315,12 +315,12 @@ const qo = /* @__PURE__ */ an({
315
315
  a("close");
316
316
  }
317
317
  return (I, $) => {
318
- var q, z;
318
+ var q, G;
319
319
  return v(), f("div", qd, [
320
320
  e("header", Zd, [
321
321
  e("div", Qd, [
322
322
  $[4] || ($[4] = e("h2", { class: "text-lg font-semibold text-ink" }, "流程编排", -1)),
323
- e("span", ep, c((q = h.value) == null ? void 0 : q.title) + " · 子流程 " + c(g.value + 1) + " / " + c((z = h.value) == null ? void 0 : z.rows.length), 1)
323
+ e("span", ep, c((q = h.value) == null ? void 0 : q.title) + " · 子流程 " + c(g.value + 1) + " / " + c((G = h.value) == null ? void 0 : G.rows.length), 1)
324
324
  ]),
325
325
  V(Ya, { name: "toast" }, {
326
326
  default: Xa(() => [
@@ -335,7 +335,7 @@ const qo = /* @__PURE__ */ an({
335
335
  e("button", {
336
336
  class: "flex items-center gap-1.5 rounded-lg bg-soft px-3 py-1.5 text-sm font-medium text-ink hover:bg-canvas transition",
337
337
  disabled: j.value,
338
- onClick: be
338
+ onClick: ye
339
339
  }, [
340
340
  V(i(kd), { class: "h-4 w-4" }),
341
341
  K(" " + c(j.value ? "保存中…" : "保存到当前会话"), 1)
@@ -360,7 +360,7 @@ const qo = /* @__PURE__ */ an({
360
360
  class: "flex h-8 w-8 items-center justify-center rounded-full bg-soft text-ink hover:bg-canvas transition",
361
361
  onClick: Bt
362
362
  }, [
363
- V(i(hn), { class: "h-4 w-4" })
363
+ V(i(gn), { class: "h-4 w-4" })
364
364
  ])
365
365
  ])
366
366
  ]),
@@ -388,14 +388,14 @@ const qo = /* @__PURE__ */ an({
388
388
  e("input", {
389
389
  value: E.title,
390
390
  class: "flex-1 min-w-0 bg-transparent text-sm font-semibold text-ink outline-none",
391
- onClick: $[0] || ($[0] = Ce(() => {
391
+ onClick: $[0] || ($[0] = xe(() => {
392
392
  }, ["stop"])),
393
393
  onInput: (Ne) => Je(L, Ne.target.value)
394
394
  }, null, 40, up),
395
395
  e("button", {
396
396
  class: "text-muted hover:text-danger transition",
397
397
  title: "删除主流程",
398
- onClick: Ce((Ne) => J(L), ["stop"])
398
+ onClick: xe((Ne) => J(L), ["stop"])
399
399
  }, [
400
400
  V(i(Bn), { class: "h-3.5 w-3.5" })
401
401
  ], 8, cp)
@@ -420,14 +420,14 @@ const qo = /* @__PURE__ */ an({
420
420
  e("button", {
421
421
  class: "text-muted hover:text-danger transition opacity-0 group-hover/row:opacity-100",
422
422
  title: "删除子流程",
423
- onClick: Ce((et) => M(L, Qe), ["stop"])
423
+ onClick: xe((et) => M(L, Qe), ["stop"])
424
424
  }, [
425
425
  V(i(Bn), { class: "h-3 w-3" })
426
426
  ], 8, vp)
427
427
  ], 10, pp))), 128)),
428
428
  e("button", {
429
429
  class: "flex w-full items-center gap-1.5 px-3 py-2 text-xs text-ocean hover:bg-canvas transition",
430
- onClick: (Ne) => ye(L)
430
+ onClick: (Ne) => be(L)
431
431
  }, [
432
432
  V(i(On), { class: "h-3 w-3" }),
433
433
  $[7] || ($[7] = K(" 添加子流程 ", -1))
@@ -480,7 +480,7 @@ const qo = /* @__PURE__ */ an({
480
480
  ]),
481
481
  e("div", {
482
482
  class: "flex-1 overflow-y-auto p-6",
483
- onDragover: $[3] || ($[3] = Ce(() => {
483
+ onDragover: $[3] || ($[3] = xe(() => {
484
484
  }, ["prevent"])),
485
485
  onDrop: de
486
486
  }, [
@@ -497,7 +497,7 @@ const qo = /* @__PURE__ */ an({
497
497
  draggable: "true",
498
498
  onDragstart: (et) => Pe(et, L),
499
499
  onDragend: Se,
500
- onDragover: Ce((et) => k(et, L), ["prevent"]),
500
+ onDragover: xe((et) => k(et, L), ["prevent"]),
501
501
  onDrop: (et) => _(et, L)
502
502
  }, [
503
503
  Q.value === L ? (v(), f("div", xp)) : C("", !0),
@@ -533,7 +533,7 @@ const qo = /* @__PURE__ */ an({
533
533
  class: "absolute -right-1.5 -top-1.5 flex h-5 w-5 items-center justify-center rounded-full bg-danger text-white shadow-sm transition hover:scale-110",
534
534
  onClick: (et) => He(g.value, L)
535
535
  }, [
536
- V(i(hn), { class: "h-3 w-3" })
536
+ V(i(gn), { class: "h-3 w-3" })
537
537
  ], 8, Ep)
538
538
  ]),
539
539
  e("div", Tp, [
@@ -618,7 +618,7 @@ const qo = /* @__PURE__ */ an({
618
618
  }, [
619
619
  e("div", {
620
620
  class: "thumb-frame pc-thumb-frame",
621
- style: Oe(ke.value)
621
+ style: Oe(Ce.value)
622
622
  }, [
623
623
  e("div", {
624
624
  class: "thumb-scale",
@@ -727,10 +727,10 @@ function Ke() {
727
727
  unavailableReason: h ? "无法识别代码分支,当前无法推送" : g ? "Gitee 未配置,当前无法推送" : ""
728
728
  };
729
729
  }
730
- function wn() {
730
+ function bn() {
731
731
  return typeof window > "u" ? null : window.localStorage;
732
732
  }
733
- function Sn(t) {
733
+ function wn(t) {
734
734
  const n = Ke();
735
735
  return cr(
736
736
  [n.provider || "local", n.owner || "none", n.repo || "none", n.remoteBranch, n.projectId, n.branchKey],
@@ -740,7 +740,7 @@ function Sn(t) {
740
740
  function en(t) {
741
741
  var n;
742
742
  try {
743
- const o = JSON.parse(((n = wn()) == null ? void 0 : n.getItem(Sn(t))) ?? "null");
743
+ const o = JSON.parse(((n = bn()) == null ? void 0 : n.getItem(wn(t))) ?? "null");
744
744
  return (o == null ? void 0 : o.schemaVersion) === es && "value" in o ? o : null;
745
745
  } catch {
746
746
  return null;
@@ -757,14 +757,14 @@ function tn(t, n, o, a, r = a ? "synced" : "pending", d) {
757
757
  status: r,
758
758
  ...d ? { error: d } : {}
759
759
  };
760
- return (h = wn()) == null || h.setItem(Sn(t), JSON.stringify(g)), g;
760
+ return (h = bn()) == null || h.setItem(wn(t), JSON.stringify(g)), g;
761
761
  }
762
762
  function mr(t) {
763
763
  var o;
764
764
  const n = en(t);
765
765
  if (n) return n;
766
766
  try {
767
- const a = JSON.parse(((o = wn()) == null ? void 0 : o.getItem(Sn(t))) ?? "null"), r = t === "bugs" && Array.isArray(a) ? a : a && typeof a == "object" && a.schemaVersion === 2 ? a.value : null;
767
+ const a = JSON.parse(((o = bn()) == null ? void 0 : o.getItem(wn(t))) ?? "null"), r = t === "bugs" && Array.isArray(a) ? a : a && typeof a == "object" && a.schemaVersion === 2 ? a.value : null;
768
768
  return r === null ? null : tn(t, r, null, null, "stale");
769
769
  } catch {
770
770
  return null;
@@ -773,7 +773,7 @@ function mr(t) {
773
773
  function Gi(t) {
774
774
  var n;
775
775
  try {
776
- const o = JSON.parse(((n = wn()) == null ? void 0 : n.getItem(Sn(t))) ?? "null");
776
+ const o = JSON.parse(((n = bn()) == null ? void 0 : n.getItem(wn(t))) ?? "null");
777
777
  return (o == null ? void 0 : o.schemaVersion) === 2 && "value" in o ? o : null;
778
778
  } catch {
779
779
  return null;
@@ -782,7 +782,7 @@ function Gi(t) {
782
782
  function ct(t) {
783
783
  var n;
784
784
  try {
785
- const o = JSON.parse(((n = wn()) == null ? void 0 : n.getItem(Sn(t))) ?? "null");
785
+ const o = JSON.parse(((n = bn()) == null ? void 0 : n.getItem(wn(t))) ?? "null");
786
786
  if ((o == null ? void 0 : o.schemaVersion) === es && o.scopes && !("value" in o)) return o;
787
787
  } catch {
788
788
  }
@@ -791,7 +791,7 @@ function ct(t) {
791
791
  function zi(t, n) {
792
792
  var a;
793
793
  const o = { schemaVersion: es, scopes: n };
794
- return (a = wn()) == null || a.setItem(Sn(t), JSON.stringify(o)), o;
794
+ return (a = bn()) == null || a.setItem(wn(t), JSON.stringify(o)), o;
795
795
  }
796
796
  function ot(t, n, o, a, r, d = r ? "synced" : "pending", g) {
797
797
  var P;
@@ -803,15 +803,15 @@ function ot(t, n, o, a, r, d = r ? "synced" : "pending", g) {
803
803
  status: d,
804
804
  ...g ? { error: g } : {}
805
805
  });
806
- return (P = wn()) == null || P.setItem(Sn(t), JSON.stringify(w)), w.scopes[n];
806
+ return (P = bn()) == null || P.setItem(wn(t), JSON.stringify(w)), w.scopes[n];
807
807
  }
808
808
  function ul(t, n) {
809
809
  var a;
810
810
  const o = pv(ct(t), n);
811
- (a = wn()) == null || a.setItem(Sn(t), JSON.stringify(o));
811
+ (a = bn()) == null || a.setItem(wn(t), JSON.stringify(o));
812
812
  }
813
813
  const gr = "https://gitee.com/api/v5", bo = dr();
814
- class Cn extends Error {
814
+ class Sn extends Error {
815
815
  constructor(n = "远端已有更新,请刷新后重试或放弃本地草稿") {
816
816
  super(n), this.name = "CollaborationConflictError";
817
817
  }
@@ -881,7 +881,7 @@ async function wo(t, n, o, a) {
881
881
  headers: { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" },
882
882
  body: g
883
883
  });
884
- if (h.status === 409 || h.status === 422) throw new Cn();
884
+ if (h.status === 409 || h.status === 422) throw new Sn();
885
885
  if (!h.ok) {
886
886
  const w = (await h.text()).trim().slice(0, 2e3);
887
887
  throw new Error(`提交 Gitee 文件失败:${h.status}${w ? ` / ${w}` : ""}`);
@@ -927,7 +927,7 @@ async function cl(t, n, o, a) {
927
927
  try {
928
928
  return await wo(Gt(t), Ie, (h == null ? void 0 : h.sha) ?? null, So(a, o, "同步索引", t)), zt(t);
929
929
  } catch (ce) {
930
- if (!(ce instanceof Cn) || g === 1) throw ce;
930
+ if (!(ce instanceof Sn) || g === 1) throw ce;
931
931
  }
932
932
  }
933
933
  return null;
@@ -1040,7 +1040,7 @@ async function Av(t, n, o, a) {
1040
1040
  headers: { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" },
1041
1041
  body: g
1042
1042
  });
1043
- if (h.status === 409 || h.status === 422) throw new Cn("远端已有新的 Bug 数据,提交草稿已保留");
1043
+ if (h.status === 409 || h.status === 422) throw new Sn("远端已有新的 Bug 数据,提交草稿已保留");
1044
1044
  if (!h.ok) throw new Error(`提交 Gitee Bug 文件失败:${h.status}`);
1045
1045
  }
1046
1046
  async function Tr() {
@@ -1172,7 +1172,7 @@ async function Fv(t, n, o) {
1172
1172
  const d = await Ev(t, n, a);
1173
1173
  return Tt.value = Qo((d == null ? void 0 : d.value) ?? []), tn("bugs", Tt.value, (d == null ? void 0 : d.sha) ?? null, (/* @__PURE__ */ new Date()).toISOString(), "synced"), Mt("success", "Bug 数据已提交"), !0;
1174
1174
  } catch (d) {
1175
- return Mt(d instanceof Cn ? "conflict" : "error", d instanceof Error ? d.message : "Bug 数据提交失败"), !1;
1175
+ return Mt(d instanceof Sn ? "conflict" : "error", d instanceof Error ? d.message : "Bug 数据提交失败"), !1;
1176
1176
  }
1177
1177
  try {
1178
1178
  return r(), Mt("success", "Bug 数据已保存到本地"), !0;
@@ -1275,37 +1275,40 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1275
1275
  }, Wf = ["onClick"], Yf = ["src", "alt"], Xf = { key: 0 }, qf = ["onClick"], Zf = {
1276
1276
  key: 1,
1277
1277
  class: "bug-pagination"
1278
- }, Qf = ["disabled"], em = ["disabled"], tm = { class: "bug-detail-panel" }, nm = { class: "bug-detail-head" }, om = { class: "bug-detail-summary" }, sm = { key: 0 }, am = { class: "bug-detail-actions" }, lm = { key: 1 }, im = {
1278
+ }, Qf = ["disabled"], em = ["disabled"], tm = {
1279
+ key: 0,
1280
+ class: "bug-detail-backdrop"
1281
+ }, nm = { class: "bug-detail-panel" }, om = { class: "bug-detail-head" }, sm = { class: "bug-detail-summary" }, am = { key: 0 }, lm = { class: "bug-detail-actions" }, im = { key: 1 }, rm = {
1279
1282
  key: 0,
1280
1283
  class: "bug-form-error"
1281
- }, rm = ["disabled"], um = {
1284
+ }, um = ["disabled"], cm = {
1282
1285
  key: 0,
1283
1286
  class: "bug-id-warning"
1284
- }, cm = ["disabled"], dm = { class: "bug-form-row" }, pm = ["disabled"], vm = ["value"], fm = ["disabled"], mm = ["value"], gm = ["disabled"], hm = ["value"], ym = ["disabled"], bm = ["disabled"], wm = ["value"], Sm = ["disabled"], Cm = { class: "bug-edit-images" }, km = { class: "bug-section-title" }, xm = ["disabled"], Im = {
1287
+ }, dm = ["disabled"], pm = { class: "bug-form-row" }, vm = ["disabled"], fm = ["value"], mm = ["disabled"], gm = ["value"], hm = ["disabled"], ym = ["value"], bm = ["disabled"], wm = ["disabled"], Sm = ["value"], Cm = ["disabled"], km = { class: "bug-edit-images" }, xm = { class: "bug-section-title" }, Im = ["disabled"], $m = {
1285
1288
  key: 0,
1286
1289
  class: "bug-edit-existing-images"
1287
- }, $m = ["onClick"], _m = ["src", "alt"], Pm = ["disabled", "onClick"], Dm = {
1290
+ }, _m = ["onClick"], Pm = ["src", "alt"], Dm = ["disabled", "onClick"], Am = {
1288
1291
  key: 1,
1289
1292
  class: "bug-pending-images"
1290
- }, Am = ["src", "alt"], Em = { key: 0 }, Tm = ["disabled", "onClick"], Nm = {
1293
+ }, Em = ["src", "alt"], Tm = { key: 0 }, Nm = ["disabled", "onClick"], Rm = {
1291
1294
  key: 2,
1292
1295
  class: "bug-image-hint"
1293
- }, Rm = {
1296
+ }, Om = {
1294
1297
  key: 0,
1295
1298
  class: "bug-form-error"
1296
- }, Om = { class: "bug-edit-actions" }, Bm = ["disabled"], jm = {
1299
+ }, Bm = { class: "bug-edit-actions" }, jm = ["disabled"], Um = {
1297
1300
  key: 2,
1298
1301
  class: "bug-detail-description"
1299
- }, Um = { class: "bug-detail-meta" }, Mm = {
1302
+ }, Mm = { class: "bug-detail-meta" }, Vm = {
1300
1303
  key: 3,
1301
1304
  class: "bug-detail-images"
1302
- }, Vm = ["onClick"], Lm = ["src", "alt"], Fm = { class: "bug-section-title" }, Gm = ["value"], zm = { class: "bug-form-row" }, Hm = ["placeholder"], Km = {
1305
+ }, Lm = ["onClick"], Fm = ["src", "alt"], Gm = { class: "bug-section-title" }, zm = ["value"], Hm = { class: "bug-form-row" }, Km = ["placeholder"], Jm = {
1303
1306
  key: 0,
1304
1307
  class: "bug-form-error"
1305
- }, Jm = ["disabled"], Wm = { class: "bug-history" }, Ym = {
1308
+ }, Wm = ["disabled"], Ym = { class: "bug-history" }, Xm = {
1306
1309
  key: 0,
1307
1310
  class: "bug-empty"
1308
- }, Xm = { key: 0 }, qm = { key: 1 }, Zm = { class: "bug-image-preview-dialog" }, Qm = ["src", "alt"], Ji = "prototype-core-annotation-author", La = 1, Wo = 10, eg = /* @__PURE__ */ an({
1311
+ }, qm = { key: 0 }, Zm = { key: 1 }, Qm = { class: "bug-image-preview-dialog" }, eg = ["src", "alt"], Ji = "prototype-core-annotation-author", La = 1, Wo = 10, tg = /* @__PURE__ */ an({
1309
1312
  __name: "BugReportPage",
1310
1313
  emits: ["close"],
1311
1314
  setup(t, { emit: n }) {
@@ -1324,7 +1327,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1324
1327
  bugSyncMessage: ee,
1325
1328
  refreshBugs: se,
1326
1329
  persistBugs: B,
1327
- nextBugId: ke
1330
+ nextBugId: Ce
1328
1331
  } = Lr(), he = {
1329
1332
  待处理: "danger",
1330
1333
  已确认: "warning",
@@ -1360,7 +1363,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1360
1363
  return "";
1361
1364
  }
1362
1365
  }
1363
- function ye(y) {
1366
+ function be(y) {
1364
1367
  const p = y.trim();
1365
1368
  if (p)
1366
1369
  try {
@@ -1436,7 +1439,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1436
1439
  function pe() {
1437
1440
  return !!(M.title.trim() || M.description.trim() || ue.value.length);
1438
1441
  }
1439
- function be() {
1442
+ function ye() {
1440
1443
  try {
1441
1444
  if (!pe()) {
1442
1445
  window.localStorage.removeItem(st());
@@ -1471,13 +1474,13 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1471
1474
  originalSize: y.originalSize,
1472
1475
  status: "uploaded",
1473
1476
  uploadedAttachment: y
1474
- })), Xe.attachments.length && (k.value = `已恢复 ${Xe.attachments.length} 张待提交图片`)), Ge(M, be, { deep: !0 }), Ge(ue, be, { deep: !0 });
1477
+ })), Xe.attachments.length && (k.value = `已恢复 ${Xe.attachments.length} 张待提交图片`)), Ge(M, ye, { deep: !0 }), Ge(ue, ye, { deep: !0 });
1475
1478
  function Bt(y, p) {
1476
1479
  return y.id === p.id && y.createdAt === p.createdAt && y.title === p.title && y.reporterName === p.reporterName;
1477
1480
  }
1478
1481
  function I(y, p = a.value) {
1479
- const G = { id: y.id, createdAt: y.createdAt, title: y.title, reporterName: y.reporterName }, m = p.filter((Y) => Bt(Y, G));
1480
- return { ...G, occurrence: Math.max(0, m.indexOf(y)) };
1482
+ const z = { id: y.id, createdAt: y.createdAt, title: y.title, reporterName: y.reporterName }, m = p.filter((Y) => Bt(Y, z));
1483
+ return { ...z, occurrence: Math.max(0, m.indexOf(y)) };
1481
1484
  }
1482
1485
  function $(y, p) {
1483
1486
  var m;
@@ -1487,27 +1490,27 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1487
1490
  const p = I(y);
1488
1491
  return [p.id, p.createdAt, p.title, p.reporterName, p.occurrence].join(":");
1489
1492
  }
1490
- const z = x(() => {
1493
+ const G = x(() => {
1491
1494
  const y = $(a.value, We.value);
1492
1495
  return y >= 0 ? a.value[y] : null;
1493
1496
  }), E = x(() => {
1494
- const y = z.value;
1497
+ const y = G.value;
1495
1498
  return !!(y && a.value.filter((p) => Ws(p.id) === Ws(y.id)).length > 1);
1496
- }), L = x(() => !!(z.value && !["已验证", "无需处理"].includes(z.value.status))), Ne = x(() => L.value || E.value), Qe = x(() => a.value.filter((y) => y.status === "已修复" || y.status === "已验证").length), et = x(() => a.value.filter((y) => y.status === "无需处理").length), Kn = x(
1499
+ }), L = x(() => !!(G.value && !["已验证", "无需处理"].includes(G.value.status))), Ne = x(() => L.value || E.value), Qe = x(() => a.value.filter((y) => y.status === "已修复" || y.status === "已验证").length), et = x(() => a.value.filter((y) => y.status === "无需处理").length), Kn = x(
1497
1500
  () => Array.from(new Set(a.value.map((y) => {
1498
1501
  var p;
1499
1502
  return (p = y.sourceSideVersion) == null ? void 0 : p.trim();
1500
1503
  }).filter((y) => !!y))).sort((y, p) => y.localeCompare(p))
1501
1504
  ), Pt = x(() => {
1502
1505
  const y = W.keyword.trim().toLowerCase();
1503
- return a.value.filter((p) => W.type !== "全部" && p.type !== W.type || W.severity !== "全部" && p.severity !== W.severity || W.sourceSide !== "全部" && p.sourceSide !== W.sourceSide || W.sourceSideVersion !== "全部" && p.sourceSideVersion !== W.sourceSideVersion || W.ownerRole !== "全部" && p.ownerRole !== W.ownerRole || W.status === "未修复" && !P.includes(p.status) || W.status !== "全部" && W.status !== "未修复" && p.status !== W.status ? !1 : y ? [p.id, p.title, p.description, p.reporterName, p.fixerName, p.type, p.severity, p.sourceSide, p.sourceSideVersion, p.ownerRole, p.status].filter(Boolean).some((G) => String(G).toLowerCase().includes(y)) : !0);
1504
- }), xe = x(() => [...Pt.value].sort((p, G) => $e.value === "createdAsc" ? new Date(p.createdAt).getTime() - new Date(G.createdAt).getTime() : $e.value === "updatedDesc" ? new Date(G.updatedAt).getTime() - new Date(p.updatedAt).getTime() : $e.value === "updatedAsc" ? new Date(p.updatedAt).getTime() - new Date(G.updatedAt).getTime() : $e.value === "severityAsc" ? X[p.severity] - X[G.severity] || new Date(G.createdAt).getTime() - new Date(p.createdAt).getTime() : $e.value === "severityDesc" ? X[G.severity] - X[p.severity] || new Date(G.createdAt).getTime() - new Date(p.createdAt).getTime() : new Date(G.createdAt).getTime() - new Date(p.createdAt).getTime())), xn = x(() => Math.max(1, Math.ceil(xe.value.length / dt.value))), ca = x(() => xe.value.slice((ae.value - 1) * dt.value, ae.value * dt.value)), fs = x(() => xe.value.length ? (ae.value - 1) * dt.value + 1 : 0), Kt = x(() => Math.min(ae.value * dt.value, xe.value.length));
1506
+ return a.value.filter((p) => W.type !== "全部" && p.type !== W.type || W.severity !== "全部" && p.severity !== W.severity || W.sourceSide !== "全部" && p.sourceSide !== W.sourceSide || W.sourceSideVersion !== "全部" && p.sourceSideVersion !== W.sourceSideVersion || W.ownerRole !== "全部" && p.ownerRole !== W.ownerRole || W.status === "未修复" && !P.includes(p.status) || W.status !== "全部" && W.status !== "未修复" && p.status !== W.status ? !1 : y ? [p.id, p.title, p.description, p.reporterName, p.fixerName, p.type, p.severity, p.sourceSide, p.sourceSideVersion, p.ownerRole, p.status].filter(Boolean).some((z) => String(z).toLowerCase().includes(y)) : !0);
1507
+ }), ke = x(() => [...Pt.value].sort((p, z) => $e.value === "createdAsc" ? new Date(p.createdAt).getTime() - new Date(z.createdAt).getTime() : $e.value === "updatedDesc" ? new Date(z.updatedAt).getTime() - new Date(p.updatedAt).getTime() : $e.value === "updatedAsc" ? new Date(p.updatedAt).getTime() - new Date(z.updatedAt).getTime() : $e.value === "severityAsc" ? X[p.severity] - X[z.severity] || new Date(z.createdAt).getTime() - new Date(p.createdAt).getTime() : $e.value === "severityDesc" ? X[z.severity] - X[p.severity] || new Date(z.createdAt).getTime() - new Date(p.createdAt).getTime() : new Date(z.createdAt).getTime() - new Date(p.createdAt).getTime())), kn = x(() => Math.max(1, Math.ceil(ke.value.length / dt.value))), ca = x(() => ke.value.slice((ae.value - 1) * dt.value, ae.value * dt.value)), fs = x(() => ke.value.length ? (ae.value - 1) * dt.value + 1 : 0), Kt = x(() => Math.min(ae.value * dt.value, ke.value.length));
1505
1508
  Ge(
1506
1509
  () => [W.type, W.severity, W.sourceSide, W.sourceSideVersion, W.ownerRole, W.status, W.keyword, $e.value, dt.value],
1507
1510
  () => {
1508
1511
  ae.value = 1;
1509
1512
  }
1510
- ), Ge(xn, (y) => {
1513
+ ), Ge(kn, (y) => {
1511
1514
  ae.value > y && (ae.value = y);
1512
1515
  });
1513
1516
  function Co(y) {
@@ -1525,8 +1528,8 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1525
1528
  return p ? p[1].toLowerCase() : y.mimeType === "image/jpeg" ? "jpg" : y.mimeType === "image/png" ? "png" : y.mimeType === "image/webp" ? "webp" : "png";
1526
1529
  }
1527
1530
  function ms(y, p) {
1528
- const G = (/* @__PURE__ */ new Date()).toISOString().replace(/\D/g, "").slice(0, 14);
1529
- return `bugs/${y}/${G}-${ko(p.name)}.${da(p)}`;
1531
+ const z = (/* @__PURE__ */ new Date()).toISOString().replace(/\D/g, "").slice(0, 14);
1532
+ return `bugs/${y}/${z}-${ko(p.name)}.${da(p)}`;
1530
1533
  }
1531
1534
  async function gs(y) {
1532
1535
  if (!["image/png", "image/jpeg", "image/jpg", "image/webp"].includes(y.type)) throw new Error("仅支持 png、jpg、jpeg、webp 图片");
@@ -1545,7 +1548,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1545
1548
  k.value = "";
1546
1549
  const p = y.filter((Y) => Y.type.startsWith("image/"));
1547
1550
  if (!p.length) return;
1548
- const G = ve.value ? Ue.value.length : 0, m = Wo - Se.value.length - G;
1551
+ const z = ve.value ? Ue.value.length : 0, m = Wo - Se.value.length - z;
1549
1552
  if (m <= 0) {
1550
1553
  k.value = `每个 Bug 最多上传 ${Wo} 张图片`;
1551
1554
  return;
@@ -1563,16 +1566,16 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1563
1566
  hs(Array.from(p.files ?? [])), p.value = "";
1564
1567
  }
1565
1568
  function xo(y) {
1566
- var G;
1567
- const p = Array.from(((G = y.clipboardData) == null ? void 0 : G.items) ?? []).filter((m) => m.kind === "file" && m.type.startsWith("image/")).map((m) => m.getAsFile()).filter((m) => !!m);
1569
+ var z;
1570
+ const p = Array.from(((z = y.clipboardData) == null ? void 0 : z.items) ?? []).filter((m) => m.kind === "file" && m.type.startsWith("image/")).map((m) => m.getAsFile()).filter((m) => !!m);
1568
1571
  p.length && (y.preventDefault(), hs(p));
1569
1572
  }
1570
1573
  function Io(y) {
1571
- const p = Se.value.find((G) => G.id === y);
1572
- p && URL.revokeObjectURL(p.previewUrl), p != null && p.uploadedAttachment && !ve.value && (ue.value = ue.value.filter((G) => {
1574
+ const p = Se.value.find((z) => z.id === y);
1575
+ p && URL.revokeObjectURL(p.previewUrl), p != null && p.uploadedAttachment && !ve.value && (ue.value = ue.value.filter((z) => {
1573
1576
  var m;
1574
- return G.id !== ((m = p.uploadedAttachment) == null ? void 0 : m.id);
1575
- })), Se.value = Se.value.filter((G) => G.id !== y);
1577
+ return z.id !== ((m = p.uploadedAttachment) == null ? void 0 : m.id);
1578
+ })), Se.value = Se.value.filter((z) => z.id !== y);
1576
1579
  }
1577
1580
  function ys(y) {
1578
1581
  Ue.value = Ue.value.filter((p) => p.id !== y);
@@ -1580,10 +1583,10 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1580
1583
  async function $o(y, p) {
1581
1584
  if (!Se.value.length) return [];
1582
1585
  if (!de) throw new Error("缺少 OSS 上传配置,无法上传图片");
1583
- const G = [];
1586
+ const z = [];
1584
1587
  for (const m of Se.value) {
1585
1588
  if (m.uploadedAttachment) {
1586
- G.push(m.uploadedAttachment);
1589
+ z.push(m.uploadedAttachment);
1587
1590
  continue;
1588
1591
  }
1589
1592
  m.status = "uploading", m.error = "";
@@ -1599,29 +1602,29 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1599
1602
  originalSize: m.originalSize,
1600
1603
  uploaderName: p,
1601
1604
  createdAt: (/* @__PURE__ */ new Date()).toISOString()
1602
- }, G.push(m.uploadedAttachment);
1605
+ }, z.push(m.uploadedAttachment);
1603
1606
  } catch (Y) {
1604
1607
  throw m.status = "error", m.error = Y instanceof Error ? Y.message : "上传失败", Y;
1605
1608
  }
1606
1609
  }
1607
- return G;
1610
+ return z;
1608
1611
  }
1609
1612
  function jt() {
1610
1613
  Se.value.forEach((y) => URL.revokeObjectURL(y.previewUrl)), Se.value = [];
1611
1614
  }
1612
1615
  async function va() {
1613
1616
  Ze.value = "", k.value = "";
1614
- const y = M.reporterName.trim(), p = M.title.trim(), G = M.description.trim(), m = M.sourceSideVersion.trim();
1615
- if (!y || !p || !G) {
1617
+ const y = M.reporterName.trim(), p = M.title.trim(), z = M.description.trim(), m = M.sourceSideVersion.trim();
1618
+ if (!y || !p || !z) {
1616
1619
  Ze.value = "请填写提报人姓名、标题和问题描述";
1617
1620
  return;
1618
1621
  }
1619
- be();
1622
+ ye();
1620
1623
  let Y = [...ue.value];
1621
1624
  if (Se.value.length)
1622
1625
  try {
1623
1626
  const Me = await $o(`pending/${F.value}`, y);
1624
- Y = Array.from(new Map([...Y, ...Me].map((bt) => [bt.id, bt])).values()), ue.value = Y, be();
1627
+ Y = Array.from(new Map([...Y, ...Me].map((bt) => [bt.id, bt])).values()), ue.value = Y, ye();
1625
1628
  } catch (Me) {
1626
1629
  k.value = Me instanceof Error ? Me.message : "图片上传失败,Bug 未提交";
1627
1630
  return;
@@ -1629,7 +1632,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1629
1632
  let Re = null;
1630
1633
  if (!await B(y, "新增 Bug", (Me) => {
1631
1634
  const bt = (/* @__PURE__ */ new Date()).toISOString(), pt = {
1632
- id: ke(Me),
1635
+ id: Ce(Me),
1633
1636
  title: p,
1634
1637
  type: M.type,
1635
1638
  severity: M.severity,
@@ -1637,7 +1640,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1637
1640
  sourceSideVersion: m || void 0,
1638
1641
  ownerRole: M.ownerRole,
1639
1642
  status: "待处理",
1640
- description: G,
1643
+ description: z,
1641
1644
  reporterName: y,
1642
1645
  createdAt: bt,
1643
1646
  updatedAt: bt,
@@ -1646,13 +1649,13 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1646
1649
  };
1647
1650
  return Re = I(pt, [pt, ...Me]), [pt, ...Me];
1648
1651
  })) {
1649
- be(), ce.value === "conflict" ? (await se(), Ze.value = "远端 Bug 数据已更新,当前草稿和附件已保留,请再次提交") : Ze.value = `${ee.value || "Bug 提交失败"},当前草稿已保留`;
1652
+ ye(), ce.value === "conflict" ? (await se(), Ze.value = "远端 Bug 数据已更新,当前草稿和附件已保留,请再次提交") : Ze.value = `${ee.value || "Bug 提交失败"},当前草稿已保留`;
1650
1653
  return;
1651
1654
  }
1652
- jt(), Ot(), ye(y), M.reporterName = y, M.title = "", M.sourceSideVersion = m, M.description = "", We.value = Re;
1655
+ jt(), Ot(), be(y), M.reporterName = y, M.title = "", M.sourceSideVersion = m, M.description = "", We.value = Re;
1653
1656
  }
1654
1657
  is(() => {
1655
- window.removeEventListener("keydown", He, !0), be(), jt();
1658
+ window.removeEventListener("keydown", He, !0), ye(), jt();
1656
1659
  }), rl(() => {
1657
1660
  window.addEventListener("keydown", He, !0);
1658
1661
  });
@@ -1660,11 +1663,11 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1660
1663
  const p = Je();
1661
1664
  We.value = I(y), ve.value = !1, Te.value = "", te.value = "", Ye.value = !1, we.value = "", Ue.value = [], jt(), k.value = "", le.status = y.status === "待处理" ? "已确认" : y.status, le.operatorName = p, le.fixerName = y.fixerName ?? p, le.note = "", rt.value = "";
1662
1665
  }
1663
- function rn() {
1666
+ function xn() {
1664
1667
  We.value = null, ve.value = !1, Te.value = "", te.value = "", Ye.value = !1, we.value = "", Ue.value = [], jt(), k.value = "";
1665
1668
  }
1666
1669
  function Jn() {
1667
- const y = z.value;
1670
+ const y = G.value;
1668
1671
  !y || !Ne.value || (Ye.value = !1, te.value = "", we.value = "", Q.id = y.id, Q.title = y.title, Q.type = y.type, Q.severity = y.severity, Q.sourceSide = y.sourceSide, Q.sourceSideVersion = y.sourceSideVersion ?? "", Q.ownerRole = y.ownerRole, Q.description = y.description, Ue.value = [...y.attachments ?? []], jt(), k.value = "", Te.value = "", ve.value = !0);
1669
1672
  }
1670
1673
  function ma() {
@@ -1677,44 +1680,44 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1677
1680
  te.value = "", we.value = "", Ye.value = !1;
1678
1681
  }
1679
1682
  async function _o() {
1680
- const y = z.value, p = We.value;
1683
+ const y = G.value, p = We.value;
1681
1684
  if (!y || !p) return;
1682
1685
  if (!J || we.value.trim() !== J) {
1683
1686
  te.value = "密钥不正确";
1684
1687
  return;
1685
1688
  }
1686
- const G = le.operatorName.trim() || Je() || "管理员", m = await B(G, `删除 Bug ${y.id}`, (Y) => {
1689
+ const z = le.operatorName.trim() || Je() || "管理员", m = await B(z, `删除 Bug ${y.id}`, (Y) => {
1687
1690
  const Re = $(Y, p);
1688
1691
  if (Re < 0) throw new Error("目标 Bug 已变化,请刷新后重试");
1689
- return Y.filter((un, Me) => Me !== Re);
1692
+ return Y.filter((rn, Me) => Me !== Re);
1690
1693
  });
1691
- m || (te.value = ee.value || "Bug 删除失败"), m && rn();
1694
+ m || (te.value = ee.value || "Bug 删除失败"), m && xn();
1692
1695
  }
1693
1696
  async function Ss() {
1694
- const y = z.value, p = We.value;
1697
+ const y = G.value, p = We.value;
1695
1698
  if (!y || !p || !Ne.value) return;
1696
- const G = Q.id.trim(), m = Q.title.trim(), Y = Q.description.trim(), Re = Q.sourceSideVersion.trim(), un = le.operatorName.trim() || Je() || y.reporterName;
1697
- if (!G || !m || !Y) {
1699
+ const z = Q.id.trim(), m = Q.title.trim(), Y = Q.description.trim(), Re = Q.sourceSideVersion.trim(), rn = le.operatorName.trim() || Je() || y.reporterName;
1700
+ if (!z || !m || !Y) {
1698
1701
  Te.value = "请填写 Bug ID、标题和问题描述";
1699
1702
  return;
1700
1703
  }
1701
1704
  let Me = [...Ue.value];
1702
1705
  if (k.value = "", Se.value.length)
1703
1706
  try {
1704
- Me = [...Me, ...await $o(y.id, un)];
1707
+ Me = [...Me, ...await $o(y.id, rn)];
1705
1708
  } catch (pt) {
1706
1709
  k.value = pt instanceof Error ? pt.message : "图片上传失败,Bug 修改未保存";
1707
1710
  return;
1708
1711
  }
1709
1712
  const bt = (/* @__PURE__ */ new Date()).toISOString();
1710
- if (!await B(un, "编辑 Bug 内容", (pt) => {
1713
+ if (!await B(rn, "编辑 Bug 内容", (pt) => {
1711
1714
  const Do = $(pt, p);
1712
1715
  if (Do < 0) throw new Error("目标 Bug 已变化,请刷新后重试");
1713
- if (Nv(pt, G, Do)) throw new Error(`Bug ID ${G} 已存在,请改为唯一 ID`);
1716
+ if (Nv(pt, z, Do)) throw new Error(`Bug ID ${z} 已存在,请改为唯一 ID`);
1714
1717
  return pt.map(
1715
1718
  (kt, ha) => ha === Do ? {
1716
1719
  ...kt,
1717
- id: G,
1720
+ id: z,
1718
1721
  title: L.value ? m : kt.title,
1719
1722
  type: L.value ? Q.type : kt.type,
1720
1723
  severity: L.value ? Q.severity : kt.severity,
@@ -1730,14 +1733,14 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1730
1733
  Te.value = ee.value || "Bug 修改失败";
1731
1734
  return;
1732
1735
  }
1733
- rn();
1736
+ xn();
1734
1737
  }
1735
1738
  async function ga() {
1736
1739
  rt.value = "";
1737
- const y = z.value, p = We.value;
1740
+ const y = G.value, p = We.value;
1738
1741
  if (!y || !p) return;
1739
- const G = le.operatorName.trim(), m = le.fixerName.trim();
1740
- if (!G) {
1742
+ const z = le.operatorName.trim(), m = le.fixerName.trim();
1743
+ if (!z) {
1741
1744
  rt.value = "请填写操作人姓名";
1742
1745
  return;
1743
1746
  }
@@ -1749,12 +1752,12 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1749
1752
  id: `bug-history-${Date.now()}-${Math.random().toString(16).slice(2)}`,
1750
1753
  fromStatus: y.status,
1751
1754
  toStatus: le.status,
1752
- operatorName: G,
1755
+ operatorName: z,
1753
1756
  fixerName: m || void 0,
1754
1757
  note: le.note.trim() || void 0,
1755
1758
  createdAt: Y
1756
1759
  };
1757
- if (!await B(G, "变更 Bug 状态", (Me) => {
1760
+ if (!await B(z, "变更 Bug 状态", (Me) => {
1758
1761
  const bt = $(Me, p);
1759
1762
  if (bt < 0) throw new Error("目标 Bug 已变化,请刷新后重试");
1760
1763
  return Me.map(
@@ -1770,10 +1773,10 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1770
1773
  rt.value = ee.value || "Bug 状态修改失败";
1771
1774
  return;
1772
1775
  }
1773
- ye(m || G), le.operatorName = Je(), le.note = "";
1776
+ le.operatorName = Je(), le.note = "";
1774
1777
  }
1775
1778
  return (y, p) => {
1776
- var G;
1779
+ var z;
1777
1780
  return v(), f("main", qv, [
1778
1781
  e("header", Zv, [
1779
1782
  e("div", null, [
@@ -1828,7 +1831,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
1828
1831
  e("section", af, [
1829
1832
  e("form", {
1830
1833
  class: "bug-submit-panel",
1831
- onSubmit: Ce(va, ["prevent"]),
1834
+ onSubmit: xe(va, ["prevent"]),
1832
1835
  onPaste: xo
1833
1836
  }, [
1834
1837
  e("datalist", lf, [
@@ -2116,17 +2119,17 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2116
2119
  ])
2117
2120
  ]),
2118
2121
  Pt.value.length ? (v(), f("div", Mf, [
2119
- e("span", null, "第 " + c(fs.value) + "-" + c(Kt.value) + " 条,共 " + c(xe.value.length) + " 条", 1),
2122
+ e("span", null, "第 " + c(fs.value) + "-" + c(Kt.value) + " 条,共 " + c(ke.value.length) + " 条", 1),
2120
2123
  e("div", null, [
2121
2124
  e("button", {
2122
2125
  type: "button",
2123
2126
  disabled: ae.value <= 1,
2124
2127
  onClick: p[20] || (p[20] = (m) => ae.value -= 1)
2125
2128
  }, "上一页", 8, Vf),
2126
- e("strong", null, c(ae.value) + " / " + c(xn.value), 1),
2129
+ e("strong", null, c(ae.value) + " / " + c(kn.value), 1),
2127
2130
  e("button", {
2128
2131
  type: "button",
2129
- disabled: ae.value >= xn.value,
2132
+ disabled: ae.value >= kn.value,
2130
2133
  onClick: p[21] || (p[21] = (m) => ae.value += 1)
2131
2134
  }, "下一页", 8, Lf)
2132
2135
  ])
@@ -2159,7 +2162,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2159
2162
  (v(!0), f(D, null, N(m.attachments.slice(0, 3), (Re) => (v(), f("button", {
2160
2163
  key: Re.id,
2161
2164
  type: "button",
2162
- onClick: (un) => _.value = Re
2165
+ onClick: (rn) => _.value = Re
2163
2166
  }, [
2164
2167
  e("img", {
2165
2168
  src: i(zs)(Re.url),
@@ -2184,62 +2187,58 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2184
2187
  }), 128))
2185
2188
  ]),
2186
2189
  Pt.value.length ? (v(), f("div", Zf, [
2187
- e("span", null, "第 " + c(fs.value) + "-" + c(Kt.value) + " 条,共 " + c(xe.value.length) + " 条", 1),
2190
+ e("span", null, "第 " + c(fs.value) + "-" + c(Kt.value) + " 条,共 " + c(ke.value.length) + " 条", 1),
2188
2191
  e("div", null, [
2189
2192
  e("button", {
2190
2193
  type: "button",
2191
2194
  disabled: ae.value <= 1,
2192
2195
  onClick: p[22] || (p[22] = (m) => ae.value -= 1)
2193
2196
  }, "上一页", 8, Qf),
2194
- e("strong", null, c(ae.value) + " / " + c(xn.value), 1),
2197
+ e("strong", null, c(ae.value) + " / " + c(kn.value), 1),
2195
2198
  e("button", {
2196
2199
  type: "button",
2197
- disabled: ae.value >= xn.value,
2200
+ disabled: ae.value >= kn.value,
2198
2201
  onClick: p[23] || (p[23] = (m) => ae.value += 1)
2199
2202
  }, "下一页", 8, em)
2200
2203
  ])
2201
2204
  ])) : C("", !0)
2202
2205
  ])
2203
2206
  ]),
2204
- z.value ? (v(), f("div", {
2205
- key: 0,
2206
- class: "bug-detail-backdrop",
2207
- onClick: Ce(rn, ["self"])
2208
- }, [
2209
- e("aside", tm, [
2210
- e("div", nm, [
2207
+ G.value ? (v(), f("div", tm, [
2208
+ e("aside", nm, [
2209
+ e("div", om, [
2211
2210
  e("div", null, [
2212
- e("span", null, "#" + c(z.value.id), 1),
2213
- e("h2", null, c(z.value.title), 1)
2211
+ e("span", null, "#" + c(G.value.id), 1),
2212
+ e("h2", null, c(G.value.title), 1)
2214
2213
  ]),
2215
2214
  e("button", {
2216
2215
  type: "button",
2217
2216
  "aria-label": "关闭详情",
2218
- onClick: rn
2217
+ onClick: xn
2219
2218
  }, [
2220
- V(i(hn), { class: "h-5 w-5" })
2219
+ V(i(gn), { class: "h-5 w-5" })
2221
2220
  ])
2222
2221
  ]),
2223
- e("div", om, [
2224
- e("span", null, c(z.value.type), 1),
2222
+ e("div", sm, [
2223
+ e("span", null, c(G.value.type), 1),
2225
2224
  e("span", {
2226
- class: A(`severity-${Ae[z.value.severity]}`)
2227
- }, c(z.value.severity), 3),
2228
- e("span", null, "发生侧:" + c(z.value.sourceSide), 1),
2229
- z.value.sourceSideVersion ? (v(), f("span", sm, "版本:" + c(z.value.sourceSideVersion), 1)) : C("", !0),
2230
- e("span", null, "归属:" + c(z.value.ownerRole), 1),
2225
+ class: A(`severity-${Ae[G.value.severity]}`)
2226
+ }, c(G.value.severity), 3),
2227
+ e("span", null, "发生侧:" + c(G.value.sourceSide), 1),
2228
+ G.value.sourceSideVersion ? (v(), f("span", am, "版本:" + c(G.value.sourceSideVersion), 1)) : C("", !0),
2229
+ e("span", null, "归属:" + c(G.value.ownerRole), 1),
2231
2230
  e("span", {
2232
- class: A(`status-${he[z.value.status]}`)
2233
- }, c(z.value.status), 3)
2231
+ class: A(`status-${he[G.value.status]}`)
2232
+ }, c(G.value.status), 3)
2234
2233
  ]),
2235
- e("div", am, [
2234
+ e("div", lm, [
2236
2235
  e("div", null, [
2237
2236
  Ne.value && !ve.value ? (v(), f("button", {
2238
2237
  key: 0,
2239
2238
  class: "bug-edit-entry-btn",
2240
2239
  type: "button",
2241
2240
  onClick: Jn
2242
- }, "编辑 Bug")) : Ne.value ? C("", !0) : (v(), f("span", lm, "已完结 Bug 不支持编辑"))
2241
+ }, "编辑 Bug")) : Ne.value ? C("", !0) : (v(), f("span", im, "已完结 Bug 不支持编辑"))
2243
2242
  ]),
2244
2243
  ve.value ? C("", !0) : (v(), f("button", {
2245
2244
  key: 0,
@@ -2254,7 +2253,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2254
2253
  Ye.value ? (v(), f("form", {
2255
2254
  key: 0,
2256
2255
  class: "bug-delete-form",
2257
- onSubmit: Ce(_o, ["prevent"])
2256
+ onSubmit: xe(_o, ["prevent"])
2258
2257
  }, [
2259
2258
  p[69] || (p[69] = e("div", null, [
2260
2259
  e("b", null, "删除确认"),
@@ -2271,7 +2270,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2271
2270
  [H, we.value]
2272
2271
  ])
2273
2272
  ]),
2274
- te.value ? (v(), f("p", im, c(te.value), 1)) : C("", !0),
2273
+ te.value ? (v(), f("p", rm, c(te.value), 1)) : C("", !0),
2275
2274
  e("div", null, [
2276
2275
  e("button", {
2277
2276
  type: "button",
@@ -2280,13 +2279,13 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2280
2279
  e("button", {
2281
2280
  type: "submit",
2282
2281
  disabled: i(ce) === "loading"
2283
- }, "确认删除", 8, rm)
2282
+ }, "确认删除", 8, um)
2284
2283
  ])
2285
2284
  ], 32)) : C("", !0),
2286
2285
  ve.value ? (v(), f("form", {
2287
2286
  key: 1,
2288
2287
  class: "bug-edit-form",
2289
- onSubmit: Ce(Ss, ["prevent"]),
2288
+ onSubmit: xe(Ss, ["prevent"]),
2290
2289
  onPaste: xo
2291
2290
  }, [
2292
2291
  e("label", null, [
@@ -2298,7 +2297,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2298
2297
  }, null, 512), [
2299
2298
  [H, Q.id]
2300
2299
  ]),
2301
- E.value ? (v(), f("small", um, "此 ID 与另一条 Bug 重复,请改为唯一值")) : C("", !0)
2300
+ E.value ? (v(), f("small", cm, "此 ID 与另一条 Bug 重复,请改为唯一值")) : C("", !0)
2302
2301
  ]),
2303
2302
  e("label", null, [
2304
2303
  p[71] || (p[71] = e("span", null, "标题", -1)),
@@ -2306,11 +2305,11 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2306
2305
  "onUpdate:modelValue": p[26] || (p[26] = (m) => Q.title = m),
2307
2306
  type: "text",
2308
2307
  disabled: !L.value
2309
- }, null, 8, cm), [
2308
+ }, null, 8, dm), [
2310
2309
  [H, Q.title]
2311
2310
  ])
2312
2311
  ]),
2313
- e("div", dm, [
2312
+ e("div", pm, [
2314
2313
  e("label", null, [
2315
2314
  p[72] || (p[72] = e("span", null, "类型", -1)),
2316
2315
  T(e("select", {
@@ -2320,8 +2319,8 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2320
2319
  (v(!0), f(D, null, N(i(r), (m) => (v(), f("option", {
2321
2320
  key: m,
2322
2321
  value: m
2323
- }, c(m), 9, vm))), 128))
2324
- ], 8, pm), [
2322
+ }, c(m), 9, fm))), 128))
2323
+ ], 8, vm), [
2325
2324
  [lt, Q.type]
2326
2325
  ])
2327
2326
  ]),
@@ -2334,8 +2333,8 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2334
2333
  (v(!0), f(D, null, N(i(d), (m) => (v(), f("option", {
2335
2334
  key: m,
2336
2335
  value: m
2337
- }, c(m), 9, mm))), 128))
2338
- ], 8, fm), [
2336
+ }, c(m), 9, gm))), 128))
2337
+ ], 8, mm), [
2339
2338
  [lt, Q.severity]
2340
2339
  ])
2341
2340
  ]),
@@ -2348,8 +2347,8 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2348
2347
  (v(!0), f(D, null, N(i(g), (m) => (v(), f("option", {
2349
2348
  key: m,
2350
2349
  value: m
2351
- }, c(m), 9, hm))), 128))
2352
- ], 8, gm), [
2350
+ }, c(m), 9, ym))), 128))
2351
+ ], 8, hm), [
2353
2352
  [lt, Q.sourceSide]
2354
2353
  ])
2355
2354
  ]),
@@ -2361,7 +2360,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2361
2360
  list: "bug-source-side-version-options",
2362
2361
  placeholder: "如 iOS 1.2.3 / 后端 2026.06",
2363
2362
  disabled: !L.value
2364
- }, null, 8, ym), [
2363
+ }, null, 8, bm), [
2365
2364
  [H, Q.sourceSideVersion]
2366
2365
  ])
2367
2366
  ]),
@@ -2374,8 +2373,8 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2374
2373
  (v(!0), f(D, null, N(i(h), (m) => (v(), f("option", {
2375
2374
  key: m,
2376
2375
  value: m
2377
- }, c(m), 9, wm))), 128))
2378
- ], 8, bm), [
2376
+ }, c(m), 9, Sm))), 128))
2377
+ ], 8, wm), [
2379
2378
  [lt, Q.ownerRole]
2380
2379
  ])
2381
2380
  ])
@@ -2385,12 +2384,12 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2385
2384
  T(e("textarea", {
2386
2385
  "onUpdate:modelValue": p[32] || (p[32] = (m) => Q.description = m),
2387
2386
  disabled: !L.value
2388
- }, null, 8, Sm), [
2387
+ }, null, 8, Cm), [
2389
2388
  [H, Q.description]
2390
2389
  ])
2391
2390
  ]),
2392
- e("section", Cm, [
2393
- e("div", km, [
2391
+ e("section", km, [
2392
+ e("div", xm, [
2394
2393
  V(i(Bi), { class: "h-4 w-4" }),
2395
2394
  p[78] || (p[78] = e("span", null, "问题截图", -1))
2396
2395
  ]),
@@ -2402,8 +2401,8 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2402
2401
  var Y;
2403
2402
  return (Y = Pe.value) == null ? void 0 : Y.click();
2404
2403
  })
2405
- }, " 添加图片 / 粘贴截图 ", 8, xm),
2406
- Ue.value.length ? (v(), f("div", Im, [
2404
+ }, " 添加图片 / 粘贴截图 ", 8, Im),
2405
+ Ue.value.length ? (v(), f("div", $m, [
2407
2406
  (v(!0), f(D, null, N(Ue.value, (m) => (v(), f("article", {
2408
2407
  key: m.id
2409
2408
  }, [
@@ -2416,8 +2415,8 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2416
2415
  src: i(zs)(m.url),
2417
2416
  alt: m.name,
2418
2417
  loading: "lazy"
2419
- }, null, 8, _m)
2420
- ], 8, $m),
2418
+ }, null, 8, Pm)
2419
+ ], 8, _m),
2421
2420
  e("div", null, [
2422
2421
  e("b", null, c(m.name), 1),
2423
2422
  e("span", null, c(R(m.size)), 1)
@@ -2429,10 +2428,10 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2429
2428
  onClick: (Y) => ys(m.id)
2430
2429
  }, [
2431
2430
  V(i(Bn), { class: "h-4 w-4" })
2432
- ], 8, Pm)
2431
+ ], 8, Dm)
2433
2432
  ]))), 128))
2434
2433
  ])) : C("", !0),
2435
- Se.value.length ? (v(), f("div", Dm, [
2434
+ Se.value.length ? (v(), f("div", Am, [
2436
2435
  (v(!0), f(D, null, N(Se.value, (m) => (v(), f("article", {
2437
2436
  key: m.id,
2438
2437
  class: A(`is-${m.status}`)
@@ -2440,11 +2439,11 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2440
2439
  e("img", {
2441
2440
  src: m.previewUrl,
2442
2441
  alt: m.name
2443
- }, null, 8, Am),
2442
+ }, null, 8, Em),
2444
2443
  e("div", null, [
2445
2444
  e("b", null, c(m.name), 1),
2446
2445
  e("span", null, c(R(m.size)), 1),
2447
- m.error ? (v(), f("small", Em, c(m.error), 1)) : C("", !0)
2446
+ m.error ? (v(), f("small", Tm, c(m.error), 1)) : C("", !0)
2448
2447
  ]),
2449
2448
  e("button", {
2450
2449
  type: "button",
@@ -2452,13 +2451,13 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2452
2451
  onClick: (Y) => Io(m.id)
2453
2452
  }, [
2454
2453
  V(i(Bn), { class: "h-4 w-4" })
2455
- ], 8, Tm)
2454
+ ], 8, Nm)
2456
2455
  ], 2))), 128))
2457
2456
  ])) : C("", !0),
2458
- k.value ? (v(), f("p", Nm, c(k.value), 1)) : C("", !0)
2457
+ k.value ? (v(), f("p", Rm, c(k.value), 1)) : C("", !0)
2459
2458
  ]),
2460
- Te.value ? (v(), f("p", Rm, c(Te.value), 1)) : C("", !0),
2461
- e("div", Om, [
2459
+ Te.value ? (v(), f("p", Om, c(Te.value), 1)) : C("", !0),
2460
+ e("div", Bm, [
2462
2461
  e("button", {
2463
2462
  type: "button",
2464
2463
  onClick: ma
@@ -2466,14 +2465,14 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2466
2465
  e("button", {
2467
2466
  type: "submit",
2468
2467
  disabled: i(ce) === "loading"
2469
- }, "保存修改", 8, Bm)
2468
+ }, "保存修改", 8, jm)
2470
2469
  ])
2471
- ], 32)) : (v(), f("p", jm, c(z.value.description), 1)),
2472
- e("p", Um, "提报人:" + c(z.value.reporterName) + " · " + c(Co(z.value.createdAt)), 1),
2473
- !ve.value && ((G = z.value.attachments) != null && G.length) ? (v(), f("section", Mm, [
2470
+ ], 32)) : (v(), f("p", Um, c(G.value.description), 1)),
2471
+ e("p", Mm, "提报人:" + c(G.value.reporterName) + " · " + c(Co(G.value.createdAt)), 1),
2472
+ !ve.value && ((z = G.value.attachments) != null && z.length) ? (v(), f("section", Vm, [
2474
2473
  p[79] || (p[79] = e("h3", null, "问题截图", -1)),
2475
2474
  e("div", null, [
2476
- (v(!0), f(D, null, N(z.value.attachments, (m) => (v(), f("button", {
2475
+ (v(!0), f(D, null, N(G.value.attachments, (m) => (v(), f("button", {
2477
2476
  key: m.id,
2478
2477
  type: "button",
2479
2478
  onClick: (Y) => _.value = m
@@ -2482,16 +2481,16 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2482
2481
  src: i(zs)(m.url),
2483
2482
  alt: m.name,
2484
2483
  loading: "lazy"
2485
- }, null, 8, Lm),
2484
+ }, null, 8, Fm),
2486
2485
  e("span", null, c(m.name), 1)
2487
- ], 8, Vm))), 128))
2486
+ ], 8, Lm))), 128))
2488
2487
  ])
2489
2488
  ])) : C("", !0),
2490
2489
  e("form", {
2491
2490
  class: "bug-status-form",
2492
- onSubmit: Ce(ga, ["prevent"])
2491
+ onSubmit: xe(ga, ["prevent"])
2493
2492
  }, [
2494
- e("div", Fm, [
2493
+ e("div", Gm, [
2495
2494
  V(i(Oi), { class: "h-4 w-4" }),
2496
2495
  p[80] || (p[80] = e("span", null, "状态变更", -1))
2497
2496
  ]),
@@ -2503,12 +2502,12 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2503
2502
  (v(!0), f(D, null, N(i(w), (m) => (v(), f("option", {
2504
2503
  key: m,
2505
2504
  value: m
2506
- }, c(m), 9, Gm))), 128))
2505
+ }, c(m), 9, zm))), 128))
2507
2506
  ], 512), [
2508
2507
  [lt, le.status]
2509
2508
  ])
2510
2509
  ]),
2511
- e("div", zm, [
2510
+ e("div", Hm, [
2512
2511
  e("label", null, [
2513
2512
  p[82] || (p[82] = e("span", null, "操作人姓名", -1)),
2514
2513
  T(e("input", {
@@ -2525,7 +2524,7 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2525
2524
  "onUpdate:modelValue": p[36] || (p[36] = (m) => le.fixerName = m),
2526
2525
  type: "text",
2527
2526
  placeholder: le.status === "已修复" ? "已修复时必填" : "选填"
2528
- }, null, 8, Hm), [
2527
+ }, null, 8, Km), [
2529
2528
  [H, le.fixerName]
2530
2529
  ])
2531
2530
  ])
@@ -2539,23 +2538,23 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2539
2538
  [H, le.note]
2540
2539
  ])
2541
2540
  ]),
2542
- rt.value ? (v(), f("p", Km, c(rt.value), 1)) : C("", !0),
2541
+ rt.value ? (v(), f("p", Jm, c(rt.value), 1)) : C("", !0),
2543
2542
  e("button", {
2544
2543
  class: "bug-primary-btn",
2545
2544
  type: "submit",
2546
2545
  disabled: i(ce) === "loading"
2547
- }, "提交状态变更", 8, Jm)
2546
+ }, "提交状态变更", 8, Wm)
2548
2547
  ], 32),
2549
- e("section", Wm, [
2548
+ e("section", Ym, [
2550
2549
  p[85] || (p[85] = e("h3", null, "处理记录", -1)),
2551
- z.value.history.length ? C("", !0) : (v(), f("p", Ym, "暂无状态变更记录。")),
2552
- (v(!0), f(D, null, N(z.value.history, (m) => (v(), f("article", {
2550
+ G.value.history.length ? C("", !0) : (v(), f("p", Xm, "暂无状态变更记录。")),
2551
+ (v(!0), f(D, null, N(G.value.history, (m) => (v(), f("article", {
2553
2552
  key: m.id
2554
2553
  }, [
2555
2554
  e("b", null, c(m.fromStatus) + " → " + c(m.toStatus), 1),
2556
2555
  e("span", null, c(m.operatorName) + " · " + c(Co(m.createdAt)), 1),
2557
- m.fixerName ? (v(), f("p", Xm, "修复人:" + c(m.fixerName), 1)) : C("", !0),
2558
- m.note ? (v(), f("p", qm, c(m.note), 1)) : C("", !0)
2556
+ m.fixerName ? (v(), f("p", qm, "修复人:" + c(m.fixerName), 1)) : C("", !0),
2557
+ m.note ? (v(), f("p", Zm, c(m.note), 1)) : C("", !0)
2559
2558
  ]))), 128))
2560
2559
  ])
2561
2560
  ])
@@ -2563,9 +2562,9 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2563
2562
  _.value ? (v(), f("div", {
2564
2563
  key: 1,
2565
2564
  class: "bug-image-preview-backdrop",
2566
- onClick: p[39] || (p[39] = Ce((m) => _.value = null, ["self"]))
2565
+ onClick: p[39] || (p[39] = xe((m) => _.value = null, ["self"]))
2567
2566
  }, [
2568
- e("section", Zm, [
2567
+ e("section", Qm, [
2569
2568
  e("div", null, [
2570
2569
  e("p", null, c(_.value.name), 1),
2571
2570
  e("button", {
@@ -2573,19 +2572,19 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2573
2572
  "aria-label": "关闭图片预览",
2574
2573
  onClick: p[38] || (p[38] = (m) => _.value = null)
2575
2574
  }, [
2576
- V(i(hn), { class: "h-5 w-5" })
2575
+ V(i(gn), { class: "h-5 w-5" })
2577
2576
  ])
2578
2577
  ]),
2579
2578
  e("img", {
2580
2579
  src: _.value.url,
2581
2580
  alt: _.value.name
2582
- }, null, 8, Qm)
2581
+ }, null, 8, eg)
2583
2582
  ])
2584
2583
  ])) : C("", !0)
2585
2584
  ]);
2586
2585
  };
2587
2586
  }
2588
- }), tg = {
2587
+ }), ng = {
2589
2588
  prototypeStateSwitch: "切换业务状态",
2590
2589
  annotationExpand: "展开注释面板",
2591
2590
  annotationCollapse: "收起注释面板",
@@ -2664,12 +2663,12 @@ const qv = { class: "bug-page" }, Zv = { class: "bug-page-head" }, Qv = ["disabl
2664
2663
  testCaseUnknown: "未知页面或状态"
2665
2664
  };
2666
2665
  function me(t) {
2667
- const n = tg[t];
2666
+ const n = ng[t];
2668
2667
  if (typeof n != "string" || n.length === 0)
2669
2668
  throw new Error(`🈶 [内核文案] 缺少中文文案:${t}`);
2670
2669
  return n;
2671
2670
  }
2672
- function ng(t, n, o, a = o) {
2671
+ function og(t, n, o, a = o) {
2673
2672
  return t[n][o] ?? t.zh[o] ?? a;
2674
2673
  }
2675
2674
  function nt(t, n) {
@@ -2709,7 +2708,7 @@ function go(t) {
2709
2708
  }];
2710
2709
  });
2711
2710
  }
2712
- function og(t) {
2711
+ function sg(t) {
2713
2712
  return t.module.trim() ? t.testItem.trim() ? t.testPoint.trim() ? t.steps.some((n) => n.trim()) ? t.expectedResult.trim() ? "" : "请填写预期结果" : "请至少填写一个测试步骤" : "请填写测试要点" : "请填写测试项" : "请填写所属模块";
2714
2713
  }
2715
2714
  function Wi(t, n, o) {
@@ -2761,7 +2760,7 @@ function Yi(t, n) {
2761
2760
  const o = new Map(n.map((a, r) => [a.id, r]));
2762
2761
  return [...t].sort((a, r) => (o.get(nt(a.screenId, a.stateId)) ?? Number.MAX_SAFE_INTEGER) - (o.get(nt(r.screenId, r.stateId)) ?? Number.MAX_SAFE_INTEGER));
2763
2762
  }
2764
- function sg(t, n) {
2763
+ function ag(t, n) {
2765
2764
  const o = new Map(n.map((a) => [a.id, a]));
2766
2765
  return t.map((a) => {
2767
2766
  const r = o.get(a.stateId ? `${a.screenId}__${a.stateId}` : a.screenId);
@@ -2784,13 +2783,13 @@ function zr(t, n) {
2784
2783
  const o = document.createElement("a");
2785
2784
  o.href = URL.createObjectURL(t), o.download = n, o.click(), URL.revokeObjectURL(o.href);
2786
2785
  }
2787
- function ag(t) {
2786
+ function lg(t) {
2788
2787
  zr(
2789
2788
  new Blob([JSON.stringify({ version: "1.0.0", testCases: t }, null, 2)], { type: "application/json;charset=utf-8" }),
2790
2789
  "test-cases.json"
2791
2790
  );
2792
2791
  }
2793
- async function lg(t, n) {
2792
+ async function ig(t, n) {
2794
2793
  const { default: o } = await import("./exceljs.min-8TIUlALm.js").then((g) => g.e), a = new o.Workbook();
2795
2794
  a.creator = "@marktowin/prototype-core";
2796
2795
  const r = a.addWorksheet("测试用例", { views: [{ state: "frozen", ySplit: 1 }] });
@@ -2805,7 +2804,7 @@ async function lg(t, n) {
2805
2804
  { header: "测试步骤", key: "steps", width: 48 },
2806
2805
  { header: "预期结果", key: "expectedResult", width: 42 },
2807
2806
  { header: "实际结果", key: "actualResult", width: 32 }
2808
- ], r.addRows(sg(t, n)), r.autoFilter = { from: "A1", to: "J1" };
2807
+ ], r.addRows(ag(t, n)), r.autoFilter = { from: "A1", to: "J1" };
2809
2808
  const d = r.getRow(1);
2810
2809
  return d.height = 24, d.font = { bold: !0, color: { argb: "FFFFFFFF" } }, d.alignment = { vertical: "middle", horizontal: "center" }, d.fill = { type: "pattern", pattern: "solid", fgColor: { argb: "FF1D1D1F" } }, r.eachRow((g, h) => {
2811
2810
  h > 1 && (g.height = 54), g.eachCell((w) => {
@@ -2813,15 +2812,15 @@ async function lg(t, n) {
2813
2812
  });
2814
2813
  }), a;
2815
2814
  }
2816
- async function ig(t, n) {
2817
- const a = await (await lg(t, n)).xlsx.writeBuffer();
2815
+ async function rg(t, n) {
2816
+ const a = await (await ig(t, n)).xlsx.writeBuffer();
2818
2817
  zr(new Blob([a], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" }), "test-cases.xlsx");
2819
2818
  }
2820
- const on = b([]), Vt = b(null), ho = b(""), ts = b(!1), Hr = b(!1), Mn = b({ source: "local-seed", status: "idle" }), mn = ta(), Rt = Ke();
2819
+ const on = b([]), Vt = b(null), ho = b(""), ts = b(!1), Hr = b(!1), Mn = b({ source: "local-seed", status: "idle" }), fn = ta(), Rt = Ke();
2821
2820
  function ht(t, n, o = "", a) {
2822
2821
  Mn.value = { source: t, status: n, ...o ? { message: o } : {}, ...a ? { syncedAt: a } : {} };
2823
2822
  }
2824
- async function rg() {
2823
+ async function ug() {
2825
2824
  try {
2826
2825
  const t = yo().baseUrl ?? "/", n = await fetch(`${t.replace(/\/?$/, "/")}test-cases.json`, { cache: "no-store" });
2827
2826
  return n.ok ? go(await n.json()) : [];
@@ -2844,7 +2843,7 @@ function Qa(t, n) {
2844
2843
  screens: { ...r.screens, [a]: { count: g, updatedAt: o } }
2845
2844
  };
2846
2845
  }
2847
- async function ug(t, n) {
2846
+ async function cg(t, n) {
2848
2847
  if (!Rt.remoteWritable) return;
2849
2848
  const o = /* @__PURE__ */ new Map();
2850
2849
  t.forEach((a) => {
@@ -2854,23 +2853,23 @@ async function ug(t, n) {
2854
2853
  for (const [a, r] of o) await Rn("testCases", a, r, n);
2855
2854
  await Rn("testCases", void 0, Fr(Rt.projectId, t), n);
2856
2855
  }
2857
- async function cg(t = "初始化工具") {
2856
+ async function dg(t = "初始化工具") {
2858
2857
  var h, w;
2859
2858
  if (ts.value) return;
2860
- const n = await rg(), o = ct("testCases"), a = new Set(Object.keys(o.scopes)), r = Object.values(o.scopes).flatMap((P) => go(P.value));
2859
+ const n = await ug(), o = ct("testCases"), a = new Set(Object.keys(o.scopes)), r = Object.values(o.scopes).flatMap((P) => go(P.value));
2861
2860
  on.value = [...n.filter((P) => !a.has(nt(P.screenId, P.stateId))), ...r], ht(a.size ? "local-cache" : "local-seed", "idle", a.size ? "已加载测试用例本地缓存" : "");
2862
- const d = mn.pages[0], g = d ? (w = (h = mn.states[d.id]) == null ? void 0 : h[0]) == null ? void 0 : w.id : void 0;
2861
+ const d = fn.pages[0], g = d ? (w = (h = fn.states[d.id]) == null ? void 0 : h[0]) == null ? void 0 : w.id : void 0;
2863
2862
  if (ho.value = d ? nt(d.id, g) : "", ts.value = !0, !Rt.remoteReadable) {
2864
2863
  ht(a.size ? "local-cache" : "local-seed", "idle", Rt.unavailableReason);
2865
2864
  return;
2866
2865
  }
2867
2866
  try {
2868
- await ug(n, t), await ml(!1);
2867
+ await cg(n, t), await ml(!1);
2869
2868
  } catch (P) {
2870
2869
  ht(a.size ? "local-cache" : "local-seed", "error", P instanceof Error ? P.message : "测试用例初始化失败");
2871
2870
  }
2872
2871
  }
2873
- async function dg(t, n) {
2872
+ async function pg(t, n) {
2874
2873
  ho.value = nt(t, n), ts.value && Rt.remoteReadable && await ml(!1);
2875
2874
  }
2876
2875
  async function ml(t = !1) {
@@ -2906,7 +2905,7 @@ async function ml(t = !1) {
2906
2905
  r && ot("testCases", n, r.value, r.revision, r.lastRemoteSyncAt, r.status === "pending" ? "pending" : "stale", a instanceof Error ? a.message : "测试用例同步失败"), ht(r ? "local-cache" : Mn.value.source, "error", a instanceof Error ? a.message : "测试用例同步失败");
2907
2906
  }
2908
2907
  }
2909
- async function pg(t, n) {
2908
+ async function vg(t, n) {
2910
2909
  var r;
2911
2910
  const o = nt(n.screenId, n.stateId), a = ((r = n.authorName) == null ? void 0 : r.trim()) || "未署名";
2912
2911
  if (!Rt.remoteWritable) {
@@ -2926,10 +2925,10 @@ async function pg(t, n) {
2926
2925
  return Vt.value = w.value, ht("gitee", "success", "", h), !0;
2927
2926
  } catch (d) {
2928
2927
  const g = d instanceof Error ? d.message : "测试用例保存失败";
2929
- return ht(Mn.value.source, d instanceof Cn ? "conflict" : "error", g), !1;
2928
+ return ht(Mn.value.source, d instanceof Sn ? "conflict" : "error", g), !1;
2930
2929
  }
2931
2930
  }
2932
- async function vg() {
2931
+ async function fg() {
2933
2932
  var r;
2934
2933
  if (!Rt.remoteReadable) return Yi(on.value, Kr("zh"));
2935
2934
  const t = await Ir();
@@ -2947,10 +2946,10 @@ async function vg() {
2947
2946
  if (n.length) throw new Error(`整体导出已中止,以下 Scope 读取失败:
2948
2947
  ${n.join(`
2949
2948
  `)}`);
2950
- return Vt.value = t.value, Yi(o, Gr(mn.pages, mn.states, mn.copy.zh, o));
2949
+ return Vt.value = t.value, Yi(o, Gr(fn.pages, fn.states, fn.copy.zh, o));
2951
2950
  }
2952
2951
  function Kr(t) {
2953
- return Gr(mn.pages, mn.states, mn.copy[t], on.value);
2952
+ return Gr(fn.pages, fn.states, fn.copy[t], on.value);
2954
2953
  }
2955
2954
  function Jr() {
2956
2955
  return {
@@ -2961,26 +2960,26 @@ function Jr() {
2961
2960
  sourceState: Mn,
2962
2961
  selectedScopeCases: x(() => on.value.filter((t) => nt(t.screenId, t.stateId) === ho.value)),
2963
2962
  scopes: Kr,
2964
- initializeTestCases: cg,
2965
- selectTestCaseScope: dg,
2963
+ initializeTestCases: dg,
2964
+ selectTestCaseScope: pg,
2966
2965
  refreshTestCases: ml,
2967
- saveTestCase: pg,
2968
- loadAllTestCasesForExport: vg,
2966
+ saveTestCase: vg,
2967
+ loadAllTestCasesForExport: fg,
2969
2968
  setTestCaseEditing(t) {
2970
2969
  Hr.value = t;
2971
2970
  }
2972
2971
  };
2973
2972
  }
2974
- const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }, gg = { class: "test-case-title-block" }, hg = { class: "test-case-toolbar-actions" }, yg = ["disabled"], bg = ["disabled"], wg = ["disabled"], Sg = { class: "test-case-scope-panel" }, Cg = { class: "test-case-search" }, kg = ["placeholder"], xg = { class: "test-case-scope-list" }, Ig = { class: "test-case-screen-label" }, $g = ["onClick"], _g = { class: "test-case-list-panel" }, Pg = { class: "test-case-list-head" }, Dg = { class: "test-case-filter-row" }, Ag = { class: "test-case-range-switch" }, Eg = ["disabled"], Tg = { class: "test-case-search" }, Ng = ["placeholder"], Rg = { key: 0 }, Og = {
2973
+ const mg = { class: "test-case-workbench" }, gg = { class: "test-case-toolbar" }, hg = { class: "test-case-title-block" }, yg = { class: "test-case-toolbar-actions" }, bg = ["disabled"], wg = ["disabled"], Sg = ["disabled"], Cg = { class: "test-case-scope-panel" }, kg = { class: "test-case-search" }, xg = ["placeholder"], Ig = { class: "test-case-scope-list" }, $g = { class: "test-case-screen-label" }, _g = ["onClick"], Pg = { class: "test-case-list-panel" }, Dg = { class: "test-case-list-head" }, Ag = { class: "test-case-filter-row" }, Eg = { class: "test-case-range-switch" }, Tg = ["disabled"], Ng = { class: "test-case-search" }, Rg = ["placeholder"], Og = { key: 0 }, Bg = {
2975
2974
  key: 0,
2976
2975
  class: "test-case-notice"
2977
- }, Bg = { class: "test-case-table-wrap" }, jg = { class: "test-case-table" }, Ug = ["onClick"], Mg = { key: 0 }, Vg = ["aria-label", "onClick"], Lg = {
2976
+ }, jg = { class: "test-case-table-wrap" }, Ug = { class: "test-case-table" }, Mg = ["onClick"], Vg = { key: 0 }, Lg = ["aria-label", "onClick"], Fg = {
2978
2977
  key: 0,
2979
2978
  class: "test-case-empty"
2980
- }, Fg = {
2979
+ }, Gg = {
2981
2980
  key: 0,
2982
2981
  class: "test-case-editor"
2983
- }, Gg = ["aria-label"], zg = { class: "test-case-editor-body" }, Hg = ["value"], Kg = ["onUpdate:modelValue"], Jg = ["aria-label", "disabled", "onClick"], Wg = ["aria-label", "disabled", "onClick"], Yg = ["aria-label", "disabled", "onClick"], Xg = ["disabled"], qg = /* @__PURE__ */ an({
2982
+ }, zg = ["aria-label"], Hg = { class: "test-case-editor-body" }, Kg = ["value"], Jg = ["onUpdate:modelValue"], Wg = ["aria-label", "disabled", "onClick"], Yg = ["aria-label", "disabled", "onClick"], Xg = ["aria-label", "disabled", "onClick"], qg = ["disabled"], Zg = /* @__PURE__ */ an({
2984
2983
  __name: "TestCaseWorkbench",
2985
2984
  props: {
2986
2985
  lang: {},
@@ -3036,8 +3035,8 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3036
3035
  moveDown: me("testCaseMoveDown"),
3037
3036
  removeStep: me("testCaseRemoveStep"),
3038
3037
  unknown: me("testCaseUnknown")
3039
- }, ke = b(""), he = b(""), Ae = b("current"), X = b("cases"), Ee = b(!1), je = b(""), J = vo(Fa()), Je = b(""), ye = b(""), M = b(!1), F = x(() => w(o.lang)), ue = x(() => F.value.find((k) => k.id === g.value) ?? F.value[0]), Ze = x(() => {
3040
- const k = ke.value.trim().toLowerCase();
3038
+ }, Ce = b(""), he = b(""), Ae = b("current"), X = b("cases"), Ee = b(!1), je = b(""), J = vo(Fa()), Je = b(""), be = b(""), M = b(!1), F = x(() => w(o.lang)), ue = x(() => F.value.find((k) => k.id === g.value) ?? F.value[0]), Ze = x(() => {
3039
+ const k = Ce.value.trim().toLowerCase();
3041
3040
  return k ? F.value.filter((_) => `${_.screenCode} ${_.screenTitle} ${_.stateLabel}`.toLowerCase().includes(k)) : F.value;
3042
3041
  }), We = x(() => {
3043
3042
  const k = /* @__PURE__ */ new Map();
@@ -3087,7 +3086,7 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3087
3086
  }
3088
3087
  async function ve() {
3089
3088
  var ut;
3090
- if (ye.value = og(J), ye.value || !ue.value) return;
3089
+ if (be.value = sg(J), be.value || !ue.value) return;
3091
3090
  const k = r.value.find((st) => st.id === je.value), _ = (/* @__PURE__ */ new Date()).toISOString(), de = {
3092
3091
  id: (k == null ? void 0 : k.id) ?? ((ut = crypto.randomUUID) == null ? void 0 : ut.call(crypto)) ?? `test-case-${Date.now()}`,
3093
3092
  screenId: ue.value.screenId,
@@ -3103,32 +3102,32 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3103
3102
  createdAt: (k == null ? void 0 : k.createdAt) ?? _,
3104
3103
  updatedAt: _
3105
3104
  }, He = await ce(k ? "编辑" : "新增", de);
3106
- ye.value = He ? h.value.source === "local-cache" ? "已保存到本地缓存,尚未同步 Gitee" : "测试用例已保存" : h.value.message ?? "保存失败", He && Ye(!1);
3105
+ be.value = He ? h.value.source === "local-cache" ? "已保存到本地缓存,尚未同步 Gitee" : "测试用例已保存" : h.value.message ?? "保存失败", He && Ye(!1);
3107
3106
  }
3108
3107
  async function Q(k) {
3109
3108
  if (!window.confirm(`确定删除测试用例“${k.testItem}”吗?`)) return;
3110
3109
  const _ = await ce("删除", { ...k, authorName: o.authorName.trim() || k.authorName || "未署名", updatedAt: (/* @__PURE__ */ new Date()).toISOString() });
3111
- ye.value = _ ? "测试用例已删除" : h.value.message ?? "删除失败", _ && je.value === k.id && Ye(!1);
3110
+ be.value = _ ? "测试用例已删除" : h.value.message ?? "删除失败", _ && je.value === k.id && Ye(!1);
3112
3111
  }
3113
3112
  async function Ue() {
3114
3113
  if (le()) {
3115
- Ye(!1), M.value = !0, ye.value = "";
3114
+ Ye(!1), M.value = !0, be.value = "";
3116
3115
  try {
3117
3116
  await ee(), Ae.value = "all";
3118
3117
  } catch (k) {
3119
- ye.value = k instanceof Error ? k.message : "加载全部测试用例失败";
3118
+ be.value = k instanceof Error ? k.message : "加载全部测试用例失败";
3120
3119
  } finally {
3121
3120
  M.value = !1;
3122
3121
  }
3123
3122
  }
3124
3123
  }
3125
3124
  async function Pe(k) {
3126
- M.value = !0, ye.value = "";
3125
+ M.value = !0, be.value = "";
3127
3126
  try {
3128
3127
  const _ = await ee();
3129
- k === "json" ? ag(_) : await ig(_, w(o.lang)), ye.value = k === "json" ? "JSON 导出成功" : "Excel 导出成功";
3128
+ k === "json" ? lg(_) : await rg(_, w(o.lang)), be.value = k === "json" ? "JSON 导出成功" : "Excel 导出成功";
3130
3129
  } catch (_) {
3131
- ye.value = _ instanceof Error ? _.message : "整体导出失败";
3130
+ be.value = _ instanceof Error ? _.message : "整体导出失败";
3132
3131
  } finally {
3133
3132
  M.value = !1;
3134
3133
  }
@@ -3146,9 +3145,9 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3146
3145
  window.removeEventListener("beforeunload", Se), se(!1);
3147
3146
  }), (k, _) => {
3148
3147
  var de, He, ut, st, _t;
3149
- return v(), f("section", fg, [
3150
- e("header", mg, [
3151
- e("div", gg, [
3148
+ return v(), f("section", mg, [
3149
+ e("header", gg, [
3150
+ e("div", hg, [
3152
3151
  e("button", {
3153
3152
  class: "test-case-back",
3154
3153
  type: "button",
@@ -3162,7 +3161,7 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3162
3161
  e("p", null, c(B.subtitle), 1)
3163
3162
  ])
3164
3163
  ]),
3165
- e("div", hg, [
3164
+ e("div", yg, [
3166
3165
  e("button", {
3167
3166
  type: "button",
3168
3167
  disabled: M.value,
@@ -3170,7 +3169,7 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3170
3169
  }, [
3171
3170
  V(i(sr)),
3172
3171
  K(c(B.refresh), 1)
3173
- ], 8, yg),
3172
+ ], 8, bg),
3174
3173
  e("button", {
3175
3174
  type: "button",
3176
3175
  disabled: M.value,
@@ -3178,7 +3177,7 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3178
3177
  }, [
3179
3178
  V(i(ar)),
3180
3179
  K(c(B.json), 1)
3181
- ], 8, bg),
3180
+ ], 8, wg),
3182
3181
  e("button", {
3183
3182
  class: "is-primary",
3184
3183
  type: "button",
@@ -3187,33 +3186,33 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3187
3186
  }, [
3188
3187
  V(i(Td)),
3189
3188
  K(c(B.excel), 1)
3190
- ], 8, wg)
3189
+ ], 8, Sg)
3191
3190
  ])
3192
3191
  ]),
3193
3192
  e("div", {
3194
3193
  class: A(["test-case-grid", [{ "has-editor": Ee.value }, `mobile-${X.value}`]])
3195
3194
  }, [
3196
- e("aside", Sg, [
3197
- e("label", Cg, [
3195
+ e("aside", Cg, [
3196
+ e("label", kg, [
3198
3197
  V(i(qa)),
3199
3198
  T(e("input", {
3200
- "onUpdate:modelValue": _[4] || (_[4] = (j) => ke.value = j),
3199
+ "onUpdate:modelValue": _[4] || (_[4] = (j) => Ce.value = j),
3201
3200
  type: "search",
3202
3201
  placeholder: B.searchScope
3203
- }, null, 8, kg), [
3204
- [H, ke.value]
3202
+ }, null, 8, xg), [
3203
+ [H, Ce.value]
3205
3204
  ])
3206
3205
  ]),
3207
- e("div", xg, [
3206
+ e("div", Ig, [
3208
3207
  (v(!0), f(D, null, N(We.value, (j) => (v(), f("section", {
3209
3208
  key: j.screenId
3210
3209
  }, [
3211
- e("div", Ig, [
3210
+ e("div", $g, [
3212
3211
  e("b", null, c(j.code), 1),
3213
3212
  e("span", null, c(j.title), 1)
3214
3213
  ]),
3215
3214
  (v(!0), f(D, null, N(j.scopes, (pe) => {
3216
- var be, Ot, Xe;
3215
+ var ye, Ot, Xe;
3217
3216
  return v(), f("button", {
3218
3217
  key: pe.id,
3219
3218
  type: "button",
@@ -3221,13 +3220,13 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3221
3220
  onClick: (Bt) => rt(pe)
3222
3221
  }, [
3223
3222
  e("span", null, c(pe.stateLabel), 1),
3224
- e("small", null, c(((Xe = (Ot = (be = i(d)) == null ? void 0 : be.scopes) == null ? void 0 : Ot[pe.id]) == null ? void 0 : Xe.count) ?? i(r).filter((Bt) => i(nt)(Bt.screenId, Bt.stateId) === pe.id).length), 1)
3225
- ], 10, $g);
3223
+ e("small", null, c(((Xe = (Ot = (ye = i(d)) == null ? void 0 : ye.scopes) == null ? void 0 : Ot[pe.id]) == null ? void 0 : Xe.count) ?? i(r).filter((Bt) => i(nt)(Bt.screenId, Bt.stateId) === pe.id).length), 1)
3224
+ ], 10, _g);
3226
3225
  }), 128))
3227
3226
  ]))), 128))
3228
3227
  ])
3229
3228
  ]),
3230
- e("main", _g, [
3229
+ e("main", Pg, [
3231
3230
  e("button", {
3232
3231
  class: "test-case-mobile-scope-back",
3233
3232
  type: "button",
@@ -3236,7 +3235,7 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3236
3235
  V(i(ji)),
3237
3236
  _[18] || (_[18] = K("页面与状态", -1))
3238
3237
  ]),
3239
- e("div", Pg, [
3238
+ e("div", Dg, [
3240
3239
  e("div", null, [
3241
3240
  e("p", null, c((de = ue.value) == null ? void 0 : de.screenCode) + " · " + c((He = ue.value) == null ? void 0 : He.screenTitle), 1),
3242
3241
  e("h2", null, c(Ae.value === "all" ? B.all : (ut = ue.value) == null ? void 0 : ut.stateLabel), 1)
@@ -3250,8 +3249,8 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3250
3249
  K(c(B.add), 1)
3251
3250
  ])
3252
3251
  ]),
3253
- e("div", Dg, [
3254
- e("div", Ag, [
3252
+ e("div", Ag, [
3253
+ e("div", Eg, [
3255
3254
  e("button", {
3256
3255
  type: "button",
3257
3256
  class: A({ active: Ae.value === "current" }),
@@ -3262,15 +3261,15 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3262
3261
  class: A({ active: Ae.value === "all" }),
3263
3262
  disabled: M.value,
3264
3263
  onClick: Ue
3265
- }, c(B.all), 11, Eg)
3264
+ }, c(B.all), 11, Tg)
3266
3265
  ]),
3267
- e("label", Tg, [
3266
+ e("label", Ng, [
3268
3267
  V(i(qa)),
3269
3268
  T(e("input", {
3270
3269
  "onUpdate:modelValue": _[7] || (_[7] = (j) => he.value = j),
3271
3270
  type: "search",
3272
3271
  placeholder: B.searchCase
3273
- }, null, 8, Ng), [
3272
+ }, null, 8, Rg), [
3274
3273
  [H, he.value]
3275
3274
  ])
3276
3275
  ])
@@ -3279,11 +3278,11 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3279
3278
  class: A(["test-case-source", `is-${i(h).status}`])
3280
3279
  }, [
3281
3280
  K(c(dt.value), 1),
3282
- i(h).message ? (v(), f("span", Rg, " · " + c(i(h).message), 1)) : C("", !0)
3281
+ i(h).message ? (v(), f("span", Og, " · " + c(i(h).message), 1)) : C("", !0)
3283
3282
  ], 2),
3284
- ye.value ? (v(), f("p", Og, c(ye.value), 1)) : C("", !0),
3285
- e("div", Bg, [
3286
- e("table", jg, [
3283
+ be.value ? (v(), f("p", Bg, c(be.value), 1)) : C("", !0),
3284
+ e("div", jg, [
3285
+ e("table", Ug, [
3287
3286
  e("thead", null, [
3288
3287
  e("tr", null, [
3289
3288
  e("th", null, c(B.module), 1),
@@ -3301,18 +3300,18 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3301
3300
  var pe;
3302
3301
  return v(), f("tr", {
3303
3302
  key: j.id,
3304
- onClick: (be) => te(j)
3303
+ onClick: (ye) => te(j)
3305
3304
  }, [
3306
3305
  e("td", null, [
3307
3306
  e("b", null, c(j.module), 1),
3308
- Ae.value === "all" ? (v(), f("small", Mg, c((pe = i(w)(t.lang).find((be) => be.id === i(nt)(j.screenId, j.stateId))) == null ? void 0 : pe.stateLabel), 1)) : C("", !0)
3307
+ Ae.value === "all" ? (v(), f("small", Vg, c((pe = i(w)(t.lang).find((ye) => ye.id === i(nt)(j.screenId, j.stateId))) == null ? void 0 : pe.stateLabel), 1)) : C("", !0)
3309
3308
  ]),
3310
3309
  e("td", null, c(j.testItem), 1),
3311
3310
  e("td", null, c(j.testPoint), 1),
3312
3311
  e("td", null, c(j.preconditions), 1),
3313
3312
  e("td", null, [
3314
3313
  e("ol", null, [
3315
- (v(!0), f(D, null, N(j.steps, (be, Ot) => (v(), f("li", { key: Ot }, c(be), 1))), 128))
3314
+ (v(!0), f(D, null, N(j.steps, (ye, Ot) => (v(), f("li", { key: Ot }, c(ye), 1))), 128))
3316
3315
  ])
3317
3316
  ]),
3318
3317
  e("td", null, c(j.expectedResult), 1),
@@ -3321,22 +3320,22 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3321
3320
  e("button", {
3322
3321
  type: "button",
3323
3322
  "aria-label": B.delete,
3324
- onClick: Ce((be) => Q(j), ["stop"])
3323
+ onClick: xe((ye) => Q(j), ["stop"])
3325
3324
  }, [
3326
3325
  V(i(Bn))
3327
- ], 8, Vg)
3326
+ ], 8, Lg)
3328
3327
  ])
3329
- ], 8, Ug);
3328
+ ], 8, Mg);
3330
3329
  }), 128))
3331
3330
  ])
3332
3331
  ]),
3333
- W.value.length ? C("", !0) : (v(), f("div", Lg, [
3332
+ W.value.length ? C("", !0) : (v(), f("div", Fg, [
3334
3333
  _[20] || (_[20] = e("span", null, "✓", -1)),
3335
3334
  e("p", null, c(B.empty), 1)
3336
3335
  ]))
3337
3336
  ])
3338
3337
  ]),
3339
- Ee.value ? (v(), f("aside", Fg, [
3338
+ Ee.value ? (v(), f("aside", Gg, [
3340
3339
  e("header", null, [
3341
3340
  e("div", null, [
3342
3341
  e("small", null, c((st = ue.value) == null ? void 0 : st.screenCode) + " · " + c((_t = ue.value) == null ? void 0 : _t.stateLabel), 1),
@@ -3347,17 +3346,17 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3347
3346
  "aria-label": B.close,
3348
3347
  onClick: _[8] || (_[8] = (j) => Ye())
3349
3348
  }, [
3350
- V(i(hn))
3351
- ], 8, Gg)
3349
+ V(i(gn))
3350
+ ], 8, zg)
3352
3351
  ]),
3353
- e("div", zg, [
3352
+ e("div", Hg, [
3354
3353
  e("label", null, [
3355
3354
  e("span", null, c(B.author), 1),
3356
3355
  e("input", {
3357
3356
  value: t.authorName,
3358
3357
  type: "text",
3359
3358
  onInput: _[9] || (_[9] = (j) => a("update:authorName", j.target.value))
3360
- }, null, 40, Hg)
3359
+ }, null, 40, Kg)
3361
3360
  ]),
3362
3361
  e("label", null, [
3363
3362
  e("span", null, c(B.module) + " *", 1),
@@ -3403,9 +3402,9 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3403
3402
  }, [
3404
3403
  e("b", null, c(pe + 1), 1),
3405
3404
  T(e("textarea", {
3406
- "onUpdate:modelValue": (be) => J.steps[pe] = be,
3405
+ "onUpdate:modelValue": (ye) => J.steps[pe] = ye,
3407
3406
  rows: "2"
3408
- }, null, 8, Kg), [
3407
+ }, null, 8, Jg), [
3409
3408
  [H, J.steps[pe]]
3410
3409
  ]),
3411
3410
  e("div", null, [
@@ -3413,26 +3412,26 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3413
3412
  type: "button",
3414
3413
  "aria-label": B.moveUp,
3415
3414
  disabled: pe === 0,
3416
- onClick: (be) => we(pe, -1)
3415
+ onClick: (ye) => we(pe, -1)
3417
3416
  }, [
3418
3417
  V(i(Nd))
3419
- ], 8, Jg),
3418
+ ], 8, Wg),
3420
3419
  e("button", {
3421
3420
  type: "button",
3422
3421
  "aria-label": B.moveDown,
3423
3422
  disabled: pe === J.steps.length - 1,
3424
- onClick: (be) => we(pe, 1)
3423
+ onClick: (ye) => we(pe, 1)
3425
3424
  }, [
3426
3425
  V(i(Rd))
3427
- ], 8, Wg),
3426
+ ], 8, Yg),
3428
3427
  e("button", {
3429
3428
  type: "button",
3430
3429
  "aria-label": B.removeStep,
3431
3430
  disabled: J.steps.length === 1,
3432
- onClick: (be) => J.steps.splice(pe, 1)
3431
+ onClick: (ye) => J.steps.splice(pe, 1)
3433
3432
  }, [
3434
- V(i(hn))
3435
- ], 8, Yg)
3433
+ V(i(gn))
3434
+ ], 8, Xg)
3436
3435
  ])
3437
3436
  ]))), 128)),
3438
3437
  e("button", {
@@ -3473,7 +3472,7 @@ const fg = { class: "test-case-workbench" }, mg = { class: "test-case-toolbar" }
3473
3472
  type: "button",
3474
3473
  disabled: i(h).status === "syncing",
3475
3474
  onClick: ve
3476
- }, c(B.save), 9, Xg)
3475
+ }, c(B.save), 9, qg)
3477
3476
  ])
3478
3477
  ])) : C("", !0)
3479
3478
  ], 2)
@@ -4289,14 +4288,14 @@ Git 状态:未提交 / 已提交 / 已推送
4289
4288
  - [ ] 消费者类型检查、校验和构建通过。
4290
4289
  - [ ] 仓库不包含意外 Secret、构建产物、日志或无关改动。
4291
4290
  - [ ] 交付报告明确列出所有未完成与未验证项。
4292
- `, Zg = { class: "prototype-help-page" }, Qg = { class: "prototype-help-header" }, eh = { class: "min-w-0" }, th = { class: "prototype-help-eyebrow" }, nh = { class: "prototype-help-actions" }, oh = {
4291
+ `, Qg = { class: "prototype-help-page" }, eh = { class: "prototype-help-header" }, th = { class: "min-w-0" }, nh = { class: "prototype-help-eyebrow" }, oh = { class: "prototype-help-actions" }, sh = {
4293
4292
  class: "prototype-help-document",
4294
4293
  "aria-label": "Prototype Core 操作手册 Markdown 原文"
4295
- }, sh = /* @__PURE__ */ an({
4294
+ }, ah = /* @__PURE__ */ an({
4296
4295
  __name: "PrototypeCoreHelpPage",
4297
4296
  emits: ["close"],
4298
4297
  setup(t) {
4299
- const n = b("idle"), o = "1.2.15";
4298
+ const n = b("idle"), o = "1.2.16";
4300
4299
  let a;
4301
4300
  function r() {
4302
4301
  const g = document.createElement("textarea");
@@ -4321,14 +4320,14 @@ Git 状态:未提交 / 已提交 / 已推送
4321
4320
  }
4322
4321
  return is(() => {
4323
4322
  a && window.clearTimeout(a);
4324
- }), (g, h) => (v(), f("section", Zg, [
4325
- e("header", Qg, [
4326
- e("div", eh, [
4327
- e("p", th, "PROTOTYPE CORE · v" + c(i(o)), 1),
4323
+ }), (g, h) => (v(), f("section", Qg, [
4324
+ e("header", eh, [
4325
+ e("div", th, [
4326
+ e("p", nh, "PROTOTYPE CORE · v" + c(i(o)), 1),
4328
4327
  h[1] || (h[1] = e("h1", null, "消费者原型实施操作手册", -1)),
4329
4328
  h[2] || (h[2] = e("p", null, "面向人和 AI 的触发词、标准动作与完成判定。", -1))
4330
4329
  ]),
4331
- e("div", nh, [
4330
+ e("div", oh, [
4332
4331
  e("button", {
4333
4332
  type: "button",
4334
4333
  onClick: d
@@ -4352,23 +4351,23 @@ Git 状态:未提交 / 已提交 / 已推送
4352
4351
  title: "返回原型",
4353
4352
  onClick: h[0] || (h[0] = (w) => g.$emit("close"))
4354
4353
  }, [
4355
- V(i(hn), { class: "h-4 w-4" })
4354
+ V(i(gn), { class: "h-4 w-4" })
4356
4355
  ])
4357
4356
  ])
4358
4357
  ]),
4359
- e("div", oh, [
4358
+ e("div", sh, [
4360
4359
  e("pre", null, c(i(Ga)), 1)
4361
4360
  ])
4362
4361
  ]));
4363
4362
  }
4364
- }), ah = /* @__PURE__ */ na(sh, [["__scopeId", "data-v-1f7502dc"]]), za = "# Design Tokens\n\n本文件是 `DESIGN.md` 的实现索引。`DESIGN.md` 保持为设计系统事实来源;本文件只记录内核和消费者原型页面在编码时应优先使用的变量名。\n\n## 使用规则\n\n- 新增 UI 时先查本文件和 `DESIGN.md`,已有 token 能表达的颜色、字体、圆角、间距和阴影不得无理由硬编码。\n- 内核运行时主题变量统一使用 `--ds-*`;历史 `--color-*` 变量继续保留为兼容别名。\n- 消费者页面也应优先使用这些 token,但内核不强制扫描或改写消费者业务代码。\n- 无法用现有 token 表达的新设计值,应先补充本文件,再进入实现。\n\n## 颜色\n\n| Token | 默认值 | 用途 |\n| --- | --- | --- |\n| `--ds-color-primary` | `#0066cc` | 主操作、链接、焦点根色 |\n| `--ds-color-primary-focus` | `#0071e3` | 键盘焦点和选中边框 |\n| `--ds-color-primary-on-dark` | `#2997ff` | 深色背景上的链接 |\n| `--ds-color-canvas` | `#ffffff` | 主页面画布 |\n| `--ds-color-canvas-parchment` | `#f5f5f7` | 浅灰分区、页脚和默认背景 |\n| `--ds-color-surface-pearl` | `#fafafc` | 次级胶囊按钮、浅色控件填充 |\n| `--ds-color-surface-tile-1` | `#272729` | 深色主分区 |\n| `--ds-color-surface-tile-2` | `#2a2a2c` | 相邻深色分区微差 |\n| `--ds-color-surface-tile-3` | `#252527` | 深色底部分区和播放器背景 |\n| `--ds-color-surface-black` | `#000000` | 真黑导航、视频背景 |\n| `--ds-color-surface-chip-translucent` | `#d2d2d7` | 图片上方半透明圆形控件基色 |\n| `--ds-color-ink` | `#1d1d1f` | 浅色背景标题和正文 |\n| `--ds-color-body` | `#1d1d1f` | 默认正文 |\n| `--ds-color-body-on-dark` | `#ffffff` | 深色背景正文 |\n| `--ds-color-body-muted` | `#cccccc` | 深色背景次级正文 |\n| `--ds-color-ink-muted-80` | `#333333` | 浅色次级文字 |\n| `--ds-color-ink-muted-48` | `#7a7a7a` | 禁用和法律说明 |\n| `--ds-color-divider-soft` | `#f0f0f0` | 柔和分隔线、按钮软边 |\n| `--ds-color-hairline` | `#e0e0e0` | 1px 卡片边框 |\n| `--ds-color-success` | `#22c55e` | 成功状态 |\n| `--ds-color-warning` | `#f59e0b` | 警告状态 |\n| `--ds-color-danger` | `#c93c37` | 危险和错误状态 |\n\n## 字体\n\n| Token | 默认值 | 用途 |\n| --- | --- | --- |\n| `--ds-font-display-family` | `SF Pro Display, system-ui, -apple-system, sans-serif` | 标题和展示文字 |\n| `--ds-font-body-family` | `SF Pro Text, system-ui, -apple-system, sans-serif` | 正文、按钮、表单 |\n| `--ds-font-hero-size` | `56px` | Hero 标题 |\n| `--ds-font-display-lg-size` | `40px` | 产品分区标题 |\n| `--ds-font-display-md-size` | `34px` | 小型标题 |\n| `--ds-font-lead-size` | `28px` | 大号说明文字 |\n| `--ds-font-body-size` | `17px` | 默认正文 |\n| `--ds-font-caption-size` | `14px` | 次级说明和按钮 |\n| `--ds-font-fine-print-size` | `12px` | 页脚和法律说明 |\n| `--ds-font-display-weight` | `600` | 标题字重 |\n| `--ds-font-body-weight` | `400` | 正文字重 |\n| `--ds-font-light-weight` | `300` | 少量轻盈大字号文本 |\n| `--ds-font-body-line-height` | `1.47` | 正文行高 |\n\n## 圆角、间距和阴影\n\n| Token | 默认值 | 用途 |\n| --- | --- | --- |\n| `--ds-rounded-none` | `0px` | 全幅分区 |\n| `--ds-rounded-xs` | `5px` | 极小芯片 |\n| `--ds-rounded-sm` | `8px` | 紧凑按钮、内嵌图片 |\n| `--ds-rounded-md` | `11px` | 次级胶囊按钮 |\n| `--ds-rounded-lg` | `18px` | 卡片、网格容器 |\n| `--ds-rounded-pill` | `9999px` | 主按钮、搜索框、可点击胶囊 |\n| `--ds-spacing-xs` | `8px` | 紧凑间距 |\n| `--ds-spacing-sm` | `12px` | 小间距 |\n| `--ds-spacing-md` | `17px` | 正文节奏 |\n| `--ds-spacing-lg` | `24px` | 卡片内边距 |\n| `--ds-spacing-xl` | `32px` | 大间距 |\n| `--ds-spacing-section` | `80px` | 分区上下留白 |\n| `--ds-shadow-product` | `rgba(0, 0, 0, 0.22) 3px 5px 30px 0` | 仅用于产品图片 |\n| `--ds-shadow-soft` | `0 16px 40px rgba(17, 24, 39, 0.08)` | 内核现有轻量浮层兼容 |\n\n## 兼容映射\n\n| 历史变量 | 推荐新变量 | 当前用途 |\n| --- | --- | --- |\n| `--color-ocean` | `--ds-color-primary` | 主操作、焦点、强调 |\n| `--color-ink` | `--ds-color-ink` | 主要文字 |\n| `--color-muted` | `--ds-color-ink-muted-48` | 次级文字 |\n| `--color-line` | `--ds-color-hairline` | 边框 |\n| `--color-canvas` | `--ds-color-canvas-parchment` | 内核页面背景 |\n| `--color-soft` | `--ds-color-surface-pearl` | 控件浅底 |\n| `--color-panel` | `--ds-color-canvas` | 面板 |\n| `--color-dark` | `--ds-color-surface-tile-3` | 深色块 |\n| `--color-device` | `--ds-color-ink` | 设备边框 |\n| `--color-head` | `--ds-color-canvas-parchment` | 顶部浅底 |\n", lh = { class: "prototype-help-page" }, ih = { class: "prototype-help-header" }, rh = { class: "min-w-0" }, uh = { class: "prototype-help-eyebrow" }, ch = { class: "prototype-help-actions" }, dh = {
4363
+ }), lh = /* @__PURE__ */ na(ah, [["__scopeId", "data-v-1f7502dc"]]), za = "# Design Tokens\n\n本文件是 `DESIGN.md` 的实现索引。`DESIGN.md` 保持为设计系统事实来源;本文件只记录内核和消费者原型页面在编码时应优先使用的变量名。\n\n## 使用规则\n\n- 新增 UI 时先查本文件和 `DESIGN.md`,已有 token 能表达的颜色、字体、圆角、间距和阴影不得无理由硬编码。\n- 内核运行时主题变量统一使用 `--ds-*`;历史 `--color-*` 变量继续保留为兼容别名。\n- 消费者页面也应优先使用这些 token,但内核不强制扫描或改写消费者业务代码。\n- 无法用现有 token 表达的新设计值,应先补充本文件,再进入实现。\n\n## 颜色\n\n| Token | 默认值 | 用途 |\n| --- | --- | --- |\n| `--ds-color-primary` | `#0066cc` | 主操作、链接、焦点根色 |\n| `--ds-color-primary-focus` | `#0071e3` | 键盘焦点和选中边框 |\n| `--ds-color-primary-on-dark` | `#2997ff` | 深色背景上的链接 |\n| `--ds-color-canvas` | `#ffffff` | 主页面画布 |\n| `--ds-color-canvas-parchment` | `#f5f5f7` | 浅灰分区、页脚和默认背景 |\n| `--ds-color-surface-pearl` | `#fafafc` | 次级胶囊按钮、浅色控件填充 |\n| `--ds-color-surface-tile-1` | `#272729` | 深色主分区 |\n| `--ds-color-surface-tile-2` | `#2a2a2c` | 相邻深色分区微差 |\n| `--ds-color-surface-tile-3` | `#252527` | 深色底部分区和播放器背景 |\n| `--ds-color-surface-black` | `#000000` | 真黑导航、视频背景 |\n| `--ds-color-surface-chip-translucent` | `#d2d2d7` | 图片上方半透明圆形控件基色 |\n| `--ds-color-ink` | `#1d1d1f` | 浅色背景标题和正文 |\n| `--ds-color-body` | `#1d1d1f` | 默认正文 |\n| `--ds-color-body-on-dark` | `#ffffff` | 深色背景正文 |\n| `--ds-color-body-muted` | `#cccccc` | 深色背景次级正文 |\n| `--ds-color-ink-muted-80` | `#333333` | 浅色次级文字 |\n| `--ds-color-ink-muted-48` | `#7a7a7a` | 禁用和法律说明 |\n| `--ds-color-divider-soft` | `#f0f0f0` | 柔和分隔线、按钮软边 |\n| `--ds-color-hairline` | `#e0e0e0` | 1px 卡片边框 |\n| `--ds-color-success` | `#22c55e` | 成功状态 |\n| `--ds-color-warning` | `#f59e0b` | 警告状态 |\n| `--ds-color-danger` | `#c93c37` | 危险和错误状态 |\n\n## 字体\n\n| Token | 默认值 | 用途 |\n| --- | --- | --- |\n| `--ds-font-display-family` | `SF Pro Display, system-ui, -apple-system, sans-serif` | 标题和展示文字 |\n| `--ds-font-body-family` | `SF Pro Text, system-ui, -apple-system, sans-serif` | 正文、按钮、表单 |\n| `--ds-font-hero-size` | `56px` | Hero 标题 |\n| `--ds-font-display-lg-size` | `40px` | 产品分区标题 |\n| `--ds-font-display-md-size` | `34px` | 小型标题 |\n| `--ds-font-lead-size` | `28px` | 大号说明文字 |\n| `--ds-font-body-size` | `17px` | 默认正文 |\n| `--ds-font-caption-size` | `14px` | 次级说明和按钮 |\n| `--ds-font-fine-print-size` | `12px` | 页脚和法律说明 |\n| `--ds-font-display-weight` | `600` | 标题字重 |\n| `--ds-font-body-weight` | `400` | 正文字重 |\n| `--ds-font-light-weight` | `300` | 少量轻盈大字号文本 |\n| `--ds-font-body-line-height` | `1.47` | 正文行高 |\n\n## 圆角、间距和阴影\n\n| Token | 默认值 | 用途 |\n| --- | --- | --- |\n| `--ds-rounded-none` | `0px` | 全幅分区 |\n| `--ds-rounded-xs` | `5px` | 极小芯片 |\n| `--ds-rounded-sm` | `8px` | 紧凑按钮、内嵌图片 |\n| `--ds-rounded-md` | `11px` | 次级胶囊按钮 |\n| `--ds-rounded-lg` | `18px` | 卡片、网格容器 |\n| `--ds-rounded-pill` | `9999px` | 主按钮、搜索框、可点击胶囊 |\n| `--ds-spacing-xs` | `8px` | 紧凑间距 |\n| `--ds-spacing-sm` | `12px` | 小间距 |\n| `--ds-spacing-md` | `17px` | 正文节奏 |\n| `--ds-spacing-lg` | `24px` | 卡片内边距 |\n| `--ds-spacing-xl` | `32px` | 大间距 |\n| `--ds-spacing-section` | `80px` | 分区上下留白 |\n| `--ds-shadow-product` | `rgba(0, 0, 0, 0.22) 3px 5px 30px 0` | 仅用于产品图片 |\n| `--ds-shadow-soft` | `0 16px 40px rgba(17, 24, 39, 0.08)` | 内核现有轻量浮层兼容 |\n\n## 兼容映射\n\n| 历史变量 | 推荐新变量 | 当前用途 |\n| --- | --- | --- |\n| `--color-ocean` | `--ds-color-primary` | 主操作、焦点、强调 |\n| `--color-ink` | `--ds-color-ink` | 主要文字 |\n| `--color-muted` | `--ds-color-ink-muted-48` | 次级文字 |\n| `--color-line` | `--ds-color-hairline` | 边框 |\n| `--color-canvas` | `--ds-color-canvas-parchment` | 内核页面背景 |\n| `--color-soft` | `--ds-color-surface-pearl` | 控件浅底 |\n| `--color-panel` | `--ds-color-canvas` | 面板 |\n| `--color-dark` | `--ds-color-surface-tile-3` | 深色块 |\n| `--color-device` | `--ds-color-ink` | 设备边框 |\n| `--color-head` | `--ds-color-canvas-parchment` | 顶部浅底 |\n", ih = { class: "prototype-help-page" }, rh = { class: "prototype-help-header" }, uh = { class: "min-w-0" }, ch = { class: "prototype-help-eyebrow" }, dh = { class: "prototype-help-actions" }, ph = {
4365
4364
  class: "prototype-help-document",
4366
4365
  "aria-label": "Prototype Core 主题实现准则 Markdown 原文"
4367
- }, ph = /* @__PURE__ */ an({
4366
+ }, vh = /* @__PURE__ */ an({
4368
4367
  __name: "PrototypeCoreThemeGuidePage",
4369
4368
  emits: ["close"],
4370
4369
  setup(t) {
4371
- const n = b("idle"), o = "1.2.15";
4370
+ const n = b("idle"), o = "1.2.16";
4372
4371
  let a;
4373
4372
  function r() {
4374
4373
  const g = document.createElement("textarea");
@@ -4393,14 +4392,14 @@ Git 状态:未提交 / 已提交 / 已推送
4393
4392
  }
4394
4393
  return is(() => {
4395
4394
  a && window.clearTimeout(a);
4396
- }), (g, h) => (v(), f("section", lh, [
4397
- e("header", ih, [
4398
- e("div", rh, [
4399
- e("p", uh, "PROTOTYPE CORE · v" + c(i(o)), 1),
4395
+ }), (g, h) => (v(), f("section", ih, [
4396
+ e("header", rh, [
4397
+ e("div", uh, [
4398
+ e("p", ch, "PROTOTYPE CORE · v" + c(i(o)), 1),
4400
4399
  h[1] || (h[1] = e("h1", null, "主题实现准则", -1)),
4401
4400
  h[2] || (h[2] = e("p", null, "面向人和 AI 的设计系统 token、使用规则与兼容映射。", -1))
4402
4401
  ]),
4403
- e("div", ch, [
4402
+ e("div", dh, [
4404
4403
  e("button", {
4405
4404
  type: "button",
4406
4405
  onClick: d
@@ -4424,38 +4423,38 @@ Git 状态:未提交 / 已提交 / 已推送
4424
4423
  title: "返回原型",
4425
4424
  onClick: h[0] || (h[0] = (w) => g.$emit("close"))
4426
4425
  }, [
4427
- V(i(hn), { class: "h-4 w-4" })
4426
+ V(i(gn), { class: "h-4 w-4" })
4428
4427
  ])
4429
4428
  ])
4430
4429
  ]),
4431
- e("div", dh, [
4430
+ e("div", ph, [
4432
4431
  e("pre", null, c(i(za)), 1)
4433
4432
  ])
4434
4433
  ]));
4435
4434
  }
4436
- }), vh = /* @__PURE__ */ na(ph, [["__scopeId", "data-v-d4a91714"]]);
4435
+ }), fh = /* @__PURE__ */ na(vh, [["__scopeId", "data-v-d4a91714"]]);
4437
4436
  function Wr(t, n, o) {
4438
4437
  return {
4439
4438
  x: (t - o.left) / o.width * 100,
4440
4439
  y: (n - o.top) / o.height * 100
4441
4440
  };
4442
4441
  }
4443
- function fh(t) {
4442
+ function mh(t) {
4444
4443
  return {
4445
4444
  x: Math.min(96, Math.max(4, t.x)),
4446
4445
  y: Math.min(96, Math.max(4, t.y))
4447
4446
  };
4448
4447
  }
4449
- const mh = {}, gh = { class: "flex min-h-full flex-col items-center justify-center bg-canvas px-8 text-center text-ink" };
4450
- function hh(t, n) {
4451
- return v(), f("section", gh, [...n[0] || (n[0] = [
4448
+ const gh = {}, hh = { class: "flex min-h-full flex-col items-center justify-center bg-canvas px-8 text-center text-ink" };
4449
+ function yh(t, n) {
4450
+ return v(), f("section", hh, [...n[0] || (n[0] = [
4452
4451
  e("div", { class: "rounded-[28px] border border-line bg-panel px-7 py-8 shadow-sm" }, [
4453
4452
  e("p", { class: "text-lg font-semibold" }, "暂无原型页面"),
4454
4453
  e("p", { class: "mt-2 text-sm leading-6 text-muted" }, "请先在产品注册表中配置页面、状态与流程。")
4455
4454
  ], -1)
4456
4455
  ])]);
4457
4456
  }
4458
- const yh = /* @__PURE__ */ na(mh, [["render", hh]]), { copy: bh, pages: Yr, states: Xr, flows: wh, extendContext: Ha } = ta(), Ut = {
4457
+ const bh = /* @__PURE__ */ na(gh, [["render", yh]]), { copy: wh, pages: Yr, states: Xr, flows: Sh, extendContext: Ha } = ta(), Ut = {
4459
4458
  ocean: "#1d1d1f",
4460
4459
  ink: "#1d1d1f",
4461
4460
  muted: "#747579",
@@ -4534,7 +4533,7 @@ function Qt(t = {}) {
4534
4533
  shadow: { ...eu, ...t.shadow }
4535
4534
  };
4536
4535
  }
4537
- const Sh = Qt({
4536
+ const Ch = Qt({
4538
4537
  colors: {
4539
4538
  ...Ut,
4540
4539
  ocean: Fe.primary,
@@ -4553,7 +4552,7 @@ const Sh = Qt({
4553
4552
  }
4554
4553
  }), tu = [
4555
4554
  { id: "default", nameKey: "themeDefault", descriptionKey: "themeDefaultDesc", ...Qt({ designColors: { ...Fe, primary: Ut.ocean } }) },
4556
- { id: "apple", nameKey: "themeApple", descriptionKey: "themeAppleDesc", ...Sh },
4555
+ { id: "apple", nameKey: "themeApple", descriptionKey: "themeAppleDesc", ...Ch },
4557
4556
  {
4558
4557
  id: "warm",
4559
4558
  nameKey: "themeWarm",
@@ -4639,11 +4638,11 @@ const Sh = Qt({
4639
4638
  themeMeta: { name: "Meta", description: "蓝色产品工具风格" },
4640
4639
  themeUber: { name: "Uber", description: "黑白高对比预设" },
4641
4640
  themeCustom: { name: "自定义", description: "来自面板编辑或 JSON 导入" }
4642
- }, el = "prototype-core-custom-theme", lu = "prototype-core-annotation-author", iu = "prototype-core-collaboration-polling-interval-v2", ru = 60, uu = 10, cu = 300, du = b("zh"), tl = b("interactive"), mt = b("splash"), Ht = b(""), Ct = b("default"), De = b(Qt()), Ch = b(!1), kh = b(null), ft = b(0.42), Ln = b(360), Fn = b(150), sa = b(!1), Zo = b({ x: 0, y: 0, panX: 0, panY: 0 }), Ka = Yr.find((t) => t.platform === "mobile" && t.hasTabBar), gl = b((Ka == null ? void 0 : Ka.id) ?? ""), hl = vo({});
4641
+ }, el = "prototype-core-custom-theme", lu = "prototype-core-annotation-author", iu = "prototype-core-collaboration-polling-interval-v2", ru = 60, uu = 10, cu = 300, du = b("zh"), tl = b("interactive"), mt = b("splash"), Ht = b(""), Ct = b("default"), De = b(Qt()), kh = b(!1), xh = b(null), ft = b(0.42), Ln = b(360), Fn = b(150), sa = b(!1), Zo = b({ x: 0, y: 0, panX: 0, panY: 0 }), Ka = Yr.find((t) => t.platform === "mobile" && t.hasTabBar), gl = b((Ka == null ? void 0 : Ka.id) ?? ""), hl = vo({});
4643
4642
  Object.entries(Xr).forEach(([t, n]) => {
4644
4643
  n.length && (hl[t] = n[0].id);
4645
4644
  });
4646
- const xh = b("annotations"), ln = b(hr), gn = b("idle"), yn = b(hr ? "云端协作已启用" : "本地兜底模式"), $t = b(""), mo = b(ru), Ys = b(String(ru)), Xs = b(""), Ih = b(!1), $h = b(!0), aa = b(!1), la = b(""), rs = b(null), yl = b(""), us = b("view"), jn = b({ featureName: "", featureDescription: "", specialNote: "", color: Ut.ocean }), ie = b([]), bn = b(null), qe = b([]), yt = b(null), zn = b("local-seed"), pu = b(!1), Ft = b({
4645
+ const Ih = b("annotations"), ln = b(hr), mn = b("idle"), hn = b(hr ? "云端协作已启用" : "本地兜底模式"), $t = b(""), mo = b(ru), Ys = b(String(ru)), Xs = b(""), $h = b(!1), _h = b(!0), aa = b(!1), la = b(""), rs = b(null), yl = b(""), us = b("view"), jn = b({ featureName: "", featureDescription: "", specialNote: "", color: Ut.ocean }), ie = b([]), yn = b(null), qe = b([]), yt = b(null), zn = b("local-seed"), pu = b(!1), Ft = b({
4647
4646
  gitee: {},
4648
4647
  "local-cache": {},
4649
4648
  "local-seed": {}
@@ -4664,7 +4663,7 @@ const xh = b("annotations"), ln = b(hr), gn = b("idle"), yn = b(hr ? "云端协
4664
4663
  pageDescriptions: { source: "local-seed", status: "idle" },
4665
4664
  testCases: { source: "local-seed", status: "idle" },
4666
4665
  flows: { source: "local-seed", status: "idle" }
4667
- }), fn = b("idle"), it = b({ current: 0, total: 0, label: "" }), Un = b(""), _h = b(!1), fu = x(() => ln.value && _e.remoteWritable), Ph = b(1), Dh = b(3), as = b(null), Gn = Yr;
4666
+ }), vn = b("idle"), it = b({ current: 0, total: 0, label: "" }), Un = b(""), Ph = b(!1), fu = x(() => ln.value && _e.remoteWritable), Dh = b(1), Ah = b(3), as = b(null), Gn = Yr;
4668
4667
  function Lt() {
4669
4668
  return typeof window > "u" ? null : window.localStorage;
4670
4669
  }
@@ -4675,7 +4674,7 @@ function gu(t) {
4675
4674
  var n, o;
4676
4675
  mu.value = t, t ? (n = Lt()) == null || n.setItem(nl, "true") : (o = Lt()) == null || o.removeItem(nl);
4677
4676
  }
4678
- const Ah = x(() => {
4677
+ const Eh = x(() => {
4679
4678
  var a;
4680
4679
  const t = Object.values(Be.value);
4681
4680
  if (t.some((r) => r.status === "conflict")) return "数据冲突";
@@ -4686,17 +4685,17 @@ const Ah = x(() => {
4686
4685
  }), hu = x(() => {
4687
4686
  const t = Object.values(Be.value);
4688
4687
  return t.some((n) => n.status === "conflict") ? "conflict" : !_e.remoteWritable || t.some((n) => n.status === "error") ? "warning" : t.some((n) => n.status === "syncing") ? "syncing" : t.every((n) => n.source === "gitee") ? "remote" : "local";
4689
- }), Eh = x(() => {
4688
+ }), Th = x(() => {
4690
4689
  const t = Object.values(Be.value).map((n) => n.syncedAt).filter((n) => !!n).sort();
4691
4690
  return t[t.length - 1] ?? "";
4692
- }), Th = x(() => {
4693
- if (fn.value === "running") return `正在初始化 Gitee · ${it.value.current} / ${it.value.total}`;
4691
+ }), Nh = x(() => {
4692
+ if (vn.value === "running") return `正在初始化 Gitee · ${it.value.current} / ${it.value.total}`;
4694
4693
  if (Un.value) return Un.value;
4695
4694
  if (!_e.remoteWritable) return _e.unavailableReason;
4696
4695
  if (hu.value === "conflict") return "远端已更新,请处理本地草稿";
4697
4696
  const t = Object.values(Be.value).find((n) => n.status === "error");
4698
4697
  return (t == null ? void 0 : t.message) || "注释 / 页面描述 / 流程";
4699
- }), Nh = x(() => _e.remoteWritable && fn.value !== "running");
4698
+ }), Rh = x(() => _e.remoteWritable && vn.value !== "running");
4700
4699
  function re(t, n, o, a = "", r) {
4701
4700
  Be.value = {
4702
4701
  ...Be.value,
@@ -4710,13 +4709,13 @@ function wl(t, n, o, a, r) {
4710
4709
  d && d !== n && (Xs.value = `检测到远端${a}更新,已同步到当前页面`);
4711
4710
  }
4712
4711
  function Sl(t, n) {
4713
- re(t, Be.value[t].source, "conflict", n), gn.value = "error", yn.value = n;
4712
+ re(t, Be.value[t].source, "conflict", n), mn.value = "error", hn.value = n;
4714
4713
  }
4715
- function Rh(t, n) {
4714
+ function Oh(t, n) {
4716
4715
  ss.value = { ...ss.value, [t]: n };
4717
4716
  }
4718
4717
  function yu(t, n = t) {
4719
- return ng(bh, du.value, t, n);
4718
+ return og(wh, du.value, t, n);
4720
4719
  }
4721
4720
  function ls(t) {
4722
4721
  return /^#[0-9a-fA-F]{6}$/.test(t);
@@ -4760,14 +4759,14 @@ function bu(t) {
4760
4759
  const wu = x(() => [
4761
4760
  ...tu,
4762
4761
  { id: "custom", nameKey: "themeCustom", descriptionKey: "themeCustomDesc", ...De.value }
4763
- ]), vn = x(() => wu.value.find((t) => t.id === Ct.value) ?? tu[0]), qs = x(() => vn.value.colors), Oh = x(() => vn.value.designColors), Bh = x(() => {
4762
+ ]), pn = x(() => wu.value.find((t) => t.id === Ct.value) ?? tu[0]), qs = x(() => pn.value.colors), Bh = x(() => pn.value.designColors), jh = x(() => {
4764
4763
  const t = [];
4765
- return Object.entries(vn.value.colors).forEach(([n, o]) => t.push([`--color-${n}`, Xi(o)])), Object.entries(vn.value.designColors).forEach(([n, o]) => t.push([`--ds-color-${Yo(n)}`, Xi(o)])), Object.entries(vn.value.typography).forEach(([n, o]) => t.push([`--ds-font-${Yo(n)}`, o])), Object.entries(vn.value.radius).forEach(([n, o]) => t.push([`--ds-rounded-${Yo(n)}`, o])), Object.entries(vn.value.spacing).forEach(([n, o]) => t.push([`--ds-spacing-${Yo(n)}`, o])), Object.entries(vn.value.shadow).forEach(([n, o]) => t.push([`--ds-shadow-${Yo(n)}`, o])), Object.fromEntries(t);
4764
+ return Object.entries(pn.value.colors).forEach(([n, o]) => t.push([`--color-${n}`, Xi(o)])), Object.entries(pn.value.designColors).forEach(([n, o]) => t.push([`--ds-color-${Yo(n)}`, Xi(o)])), Object.entries(pn.value.typography).forEach(([n, o]) => t.push([`--ds-font-${Yo(n)}`, o])), Object.entries(pn.value.radius).forEach(([n, o]) => t.push([`--ds-rounded-${Yo(n)}`, o])), Object.entries(pn.value.spacing).forEach(([n, o]) => t.push([`--ds-spacing-${Yo(n)}`, o])), Object.entries(pn.value.shadow).forEach(([n, o]) => t.push([`--ds-shadow-${Yo(n)}`, o])), Object.fromEntries(t);
4766
4765
  });
4767
- function jh(t) {
4766
+ function Uh(t) {
4768
4767
  Ct.value = t;
4769
4768
  }
4770
- function Uh(t, n) {
4769
+ function Mh(t, n) {
4771
4770
  var a;
4772
4771
  if (!ls(n)) return;
4773
4772
  const o = (a = os.find((r) => r.key === t)) == null ? void 0 : a.designKey;
@@ -4777,7 +4776,7 @@ function Uh(t, n) {
4777
4776
  designColors: o ? { ...De.value.designColors, [o]: n } : De.value.designColors
4778
4777
  }, Ct.value = "custom";
4779
4778
  }
4780
- function Mh(t, n) {
4779
+ function Vh(t, n) {
4781
4780
  var a;
4782
4781
  if (!ls(n)) return;
4783
4782
  const o = (a = os.find((r) => r.designKey === t)) == null ? void 0 : a.key;
@@ -4787,28 +4786,28 @@ function Mh(t, n) {
4787
4786
  designColors: { ...De.value.designColors, [t]: n }
4788
4787
  }, Ct.value = "custom";
4789
4788
  }
4790
- function Vh(t, n) {
4789
+ function Lh(t, n) {
4791
4790
  n.trim() && (De.value = { ...De.value, typography: { ...De.value.typography, [t]: n.trim() } }, Ct.value = "custom");
4792
4791
  }
4793
- function Lh(t, n) {
4792
+ function Fh(t, n) {
4794
4793
  n.trim() && (De.value = { ...De.value, radius: { ...De.value.radius, [t]: n.trim() } }, Ct.value = "custom");
4795
4794
  }
4796
- function Fh() {
4795
+ function Gh() {
4797
4796
  De.value = Qt(), Ct.value = "default";
4798
4797
  }
4799
- function Gh(t) {
4798
+ function zh(t) {
4800
4799
  var n;
4801
4800
  return ((n = au[t.nameKey]) == null ? void 0 : n.name) ?? t.nameKey;
4802
4801
  }
4803
- function zh(t) {
4802
+ function Hh(t) {
4804
4803
  var n;
4805
4804
  return ((n = au[t.nameKey]) == null ? void 0 : n.description) ?? t.descriptionKey;
4806
4805
  }
4807
- function Hh() {
4806
+ function Kh() {
4808
4807
  const t = new Blob([JSON.stringify({ version: 2, selectedThemeId: "custom", ...De.value }, null, 2)], { type: "application/json;charset=utf-8" }), n = document.createElement("a");
4809
4808
  n.href = URL.createObjectURL(t), n.download = "prototype-core-theme.json", n.click(), URL.revokeObjectURL(n.href);
4810
4809
  }
4811
- function Kh(t) {
4810
+ function Jh(t) {
4812
4811
  var a;
4813
4812
  const n = (a = t.target.files) == null ? void 0 : a[0];
4814
4813
  if (!n) return;
@@ -4818,7 +4817,7 @@ function Kh(t) {
4818
4817
  const r = JSON.parse(String(o.result));
4819
4818
  De.value = bu(r), Ct.value = "custom";
4820
4819
  } catch {
4821
- yn.value = "主题文件解析失败";
4820
+ hn.value = "主题文件解析失败";
4822
4821
  }
4823
4822
  }, o.readAsText(n, "utf-8");
4824
4823
  }
@@ -4829,7 +4828,7 @@ const Su = {
4829
4828
  title: "暂无原型页面",
4830
4829
  subtitle: "等待产品注册",
4831
4830
  icon: ur,
4832
- component: yh,
4831
+ component: bh,
4833
4832
  hasTabBar: !1
4834
4833
  }, Cl = x(() => Gn.find((t) => t.id === mt.value) ?? Gn[0] ?? Su), ol = x(() => tt.value.find((t) => t.id === Ht.value) ?? tt.value[0] ?? null), kl = x(
4835
4834
  () => {
@@ -4850,35 +4849,35 @@ const Su = {
4850
4849
  )) ?? [];
4851
4850
  }
4852
4851
  );
4853
- function kn(t) {
4852
+ function Cn(t) {
4854
4853
  return (Xr[t] ?? []).map((n) => ({ id: n.id, label: yu(n.labelKey, n.id) }));
4855
4854
  }
4856
4855
  function xl(t, n) {
4857
4856
  var o;
4858
- return ((o = kn(t).find((a) => a.id === n)) == null ? void 0 : o.label) ?? "";
4857
+ return ((o = Cn(t).find((a) => a.id === n)) == null ? void 0 : o.label) ?? "";
4859
4858
  }
4860
4859
  function Cu(t) {
4861
4860
  return Gn.some((n) => n.id === t);
4862
4861
  }
4863
4862
  function cs(t, n) {
4864
4863
  var a, r;
4865
- const o = kn(t);
4864
+ const o = Cn(t);
4866
4865
  return ((a = o.find((d) => d.id === n)) == null ? void 0 : a.id) ?? ((r = o[0]) == null ? void 0 : r.id);
4867
4866
  }
4868
4867
  const St = x(() => hl[mt.value]), ku = x(() => ({
4869
4868
  ...Cl.value,
4870
4869
  stateId: St.value,
4871
4870
  stateLabel: St.value ? xl(mt.value, St.value) : void 0
4872
- })), Jh = x(() => Cl.value.platform), Wh = x(
4871
+ })), Wh = x(() => Cl.value.platform), Yh = x(
4873
4872
  () => Gn.flatMap((t) => {
4874
- const n = kn(t.id);
4873
+ const n = Cn(t.id);
4875
4874
  return n.length ? n.map((o) => ({
4876
4875
  ...t,
4877
4876
  stateId: o.id,
4878
4877
  stateLabel: o.label
4879
4878
  })) : [{ ...t }];
4880
4879
  })
4881
- ), Yh = x(() => tl.value === "overview" ? Wh.value : tl.value === "flow" ? kl.value : [ku.value]), Xh = x(() => kn(mt.value));
4880
+ ), Xh = x(() => tl.value === "overview" ? Yh.value : tl.value === "flow" ? kl.value : [ku.value]), qh = x(() => Cn(mt.value));
4882
4881
  function sl(t, n) {
4883
4882
  const o = n === void 0 ? mt.value : t, a = n ?? t;
4884
4883
  hl[o] = a;
@@ -4888,9 +4887,9 @@ function Zs(t) {
4888
4887
  const n = Gn.find((o) => o.id === t);
4889
4888
  n != null && n.hasTabBar && (gl.value = t);
4890
4889
  }
4891
- function qh(t) {
4890
+ function Zh(t) {
4892
4891
  Zs(t);
4893
- const n = St.value, o = n ? il(t, n) : Au(t), a = kn(t).find((r) => il(t, r.id) > 0);
4892
+ const n = St.value, o = n ? il(t, n) : Au(t), a = Cn(t).find((r) => il(t, r.id) > 0);
4894
4893
  o <= 0 && a && sl(t, a.id);
4895
4894
  }
4896
4895
  function qi(t) {
@@ -4900,7 +4899,7 @@ function U(t, n) {
4900
4899
  return n ? `${t}__${n}` : t;
4901
4900
  }
4902
4901
  function ds(t) {
4903
- const n = kn(t);
4902
+ const n = Cn(t);
4904
4903
  return n.length ? n.map((o) => U(t, o.id)) : [U(t)];
4905
4904
  }
4906
4905
  function sn() {
@@ -4914,7 +4913,7 @@ function Nt(t, n, o) {
4914
4913
  const a = { ...Ft.value[t] };
4915
4914
  o ? a[n] = o : delete a[n], Ft.value = { ...Ft.value, [t]: a };
4916
4915
  }
4917
- function Zh(t) {
4916
+ function Qh(t) {
4918
4917
  pu.value = !0, zn.value = t, Hn();
4919
4918
  }
4920
4919
  function ps(t) {
@@ -4930,22 +4929,22 @@ function xu(t) {
4930
4929
  function Iu(t) {
4931
4930
  return ds(t).some((n) => ps(n));
4932
4931
  }
4933
- function Qh(t) {
4932
+ function ey(t) {
4934
4933
  const n = ds(t).find((o) => ps(o));
4935
4934
  return n ? xu(n) : "#ef4444";
4936
4935
  }
4937
- function ey(t) {
4938
- const n = kn(t), o = {};
4936
+ function ty(t) {
4937
+ const n = Cn(t), o = {};
4939
4938
  return n.forEach((a) => {
4940
4939
  const r = U(t, a.id);
4941
4940
  ps(r) && (o[a.id] = xu(r));
4942
4941
  }), o;
4943
4942
  }
4944
- const ty = x(() => ey(mt.value)), ny = x(() => Iu(mt.value)), oy = x(() => ps(sn())), $u = x(() => ie.value.find((t) => t.id === yl.value) ?? null), sy = x(() => ie.value.find((t) => t.id === la.value) ?? null);
4943
+ const ny = x(() => ty(mt.value)), oy = x(() => Iu(mt.value)), sy = x(() => ps(sn())), $u = x(() => ie.value.find((t) => t.id === yl.value) ?? null), ay = x(() => ie.value.find((t) => t.id === la.value) ?? null);
4945
4944
  function vs(t) {
4946
4945
  return typeof t == "string" && ls(t) ? t.toLowerCase() : void 0;
4947
4946
  }
4948
- function ay(t) {
4947
+ function ly(t) {
4949
4948
  const n = vs(t.color);
4950
4949
  return {
4951
4950
  left: `${t.x}%`,
@@ -5021,8 +5020,8 @@ async function Ks(t, n) {
5021
5020
  return n;
5022
5021
  }
5023
5022
  }
5024
- async function ly() {
5025
- var je, J, Je, ye, M;
5023
+ async function iy() {
5024
+ var je, J, Je, be, M;
5026
5025
  typeof window < "u" && (window.__PROTOTYPE_CORE__ = { syncPageDescriptionsFromJson: Tu });
5027
5026
  const t = (je = Lt()) == null ? void 0 : je.getItem(lu);
5028
5027
  t && ($t.value = t);
@@ -5032,7 +5031,7 @@ async function ly() {
5032
5031
  const F = JSON.parse(((Je = Lt()) == null ? void 0 : Je.getItem(el)) ?? "null");
5033
5032
  (F != null && F.colors || F != null && F.designColors || F != null && F.typography || F != null && F.radius || F != null && F.spacing || F != null && F.shadow) && (De.value = bu(F), Ct.value = F.selectedThemeId ?? Ct.value);
5034
5033
  } catch {
5035
- (ye = Lt()) == null || ye.removeItem(el);
5034
+ (be = Lt()) == null || be.removeItem(el);
5036
5035
  }
5037
5036
  const [a, r, d] = await Promise.all([
5038
5037
  Ks("flows.json", { flows: [] }),
@@ -5041,7 +5040,7 @@ async function ly() {
5041
5040
  ]), g = {
5042
5041
  annotations: Qs(d),
5043
5042
  pageDescriptions: Vn(r),
5044
- flows: Array.isArray(a.flows) && a.flows.length ? a.flows : wh.flows
5043
+ flows: Array.isArray(a.flows) && a.flows.length ? a.flows : Sh.flows
5045
5044
  }, h = Gi("annotations"), w = Gi("pageDescriptions");
5046
5045
  if (h) {
5047
5046
  const F = {};
@@ -5056,12 +5055,12 @@ async function ly() {
5056
5055
  F[U(ue.screenId, ue.stateId)] = { value: ue, revision: null, cachedAt: (/* @__PURE__ */ new Date()).toISOString(), lastRemoteSyncAt: null, status: "stale" };
5057
5056
  }), zi("pageDescriptions", F);
5058
5057
  }
5059
- const P = ct("annotations"), oe = ct("pageDescriptions"), Ie = Object.values(P.scopes).flatMap((F) => F.value), ce = Object.values(oe.scopes).map((F) => F.value), ee = new Set(Object.keys(P.scopes)), se = new Set(Object.keys(oe.scopes)), B = [...g.annotations.filter((F) => !ee.has(U(F.screenId, F.stateId))), ...Ie], ke = [...g.pageDescriptions.filter((F) => !se.has(U(F.screenId, F.stateId))), ...ce], he = mr("flows"), Ae = ee.size ? { value: B, source: "local-cache" } : { value: g.annotations, source: "local-seed" }, X = se.size ? { value: ke, source: "local-cache" } : { value: g.pageDescriptions, source: "local-seed" }, Ee = cv(he, g.flows);
5058
+ const P = ct("annotations"), oe = ct("pageDescriptions"), Ie = Object.values(P.scopes).flatMap((F) => F.value), ce = Object.values(oe.scopes).map((F) => F.value), ee = new Set(Object.keys(P.scopes)), se = new Set(Object.keys(oe.scopes)), B = [...g.annotations.filter((F) => !ee.has(U(F.screenId, F.stateId))), ...Ie], Ce = [...g.pageDescriptions.filter((F) => !se.has(U(F.screenId, F.stateId))), ...ce], he = mr("flows"), Ae = ee.size ? { value: B, source: "local-cache" } : { value: g.annotations, source: "local-seed" }, X = se.size ? { value: Ce, source: "local-cache" } : { value: g.pageDescriptions, source: "local-seed" }, Ee = cv(he, g.flows);
5060
5059
  ie.value = Ae.value, qe.value = X.value, Ft.value = {
5061
5060
  gitee: {},
5062
5061
  "local-cache": ll(ce),
5063
5062
  "local-seed": ll(g.pageDescriptions)
5064
- }, zn.value = Ft.value["local-cache"][sn()] ? "local-cache" : "local-seed", tt.value = Ee.value, re("annotations", Ae.source, "idle"), re("pageDescriptions", X.source, "idle"), re("flows", Ee.source, "idle"), Ht.value = ((M = tt.value[0]) == null ? void 0 : M.id) ?? "", ln.value ? await ea(!1) : yn.value = _e.unavailableReason, Hn(), vu.value = !0;
5063
+ }, zn.value = Ft.value["local-cache"][sn()] ? "local-cache" : "local-seed", tt.value = Ee.value, re("annotations", Ae.source, "idle"), re("pageDescriptions", X.source, "idle"), re("flows", Ee.source, "idle"), Ht.value = ((M = tt.value[0]) == null ? void 0 : M.id) ?? "", ln.value ? await ea(!1) : hn.value = _e.unavailableReason, Hn(), vu.value = !0;
5065
5064
  }
5066
5065
  Ge([De, Ct], () => {
5067
5066
  var t;
@@ -5075,7 +5074,7 @@ Ge([mt, St], () => {
5075
5074
  Hn(), ln.value && ($l(!1), _l(!1));
5076
5075
  });
5077
5076
  function ia(t, n, o) {
5078
- const a = (/* @__PURE__ */ new Date()).toISOString(), r = U(t, n), d = bn.value ?? {
5077
+ const a = (/* @__PURE__ */ new Date()).toISOString(), r = U(t, n), d = yn.value ?? {
5079
5078
  projectId: _e.projectId,
5080
5079
  updatedAt: a,
5081
5080
  scopes: {},
@@ -5086,7 +5085,7 @@ function ia(t, n, o) {
5086
5085
  var P, oe;
5087
5086
  return h + (((oe = (P = d.scopes) == null ? void 0 : P[w]) == null ? void 0 : oe.count) ?? 0);
5088
5087
  }, 0);
5089
- d.screens = { ...d.screens, [t]: { count: g, updatedAt: a } }, d.updatedAt = a, bn.value = d;
5088
+ d.screens = { ...d.screens, [t]: { count: g, updatedAt: a } }, d.updatedAt = a, yn.value = d;
5090
5089
  }
5091
5090
  function ra(t, n, o, a, r) {
5092
5091
  const d = (/* @__PURE__ */ new Date()).toISOString(), g = U(t, n), h = yt.value ?? {
@@ -5105,7 +5104,7 @@ function ra(t, n, o, a, r) {
5105
5104
  }, 0);
5106
5105
  h.screens = { ...h.screens, [t]: { count: w, updatedAt: d } }, h.updatedAt = d, yt.value = h;
5107
5106
  }
5108
- async function iy(t, n = cs(t, St.value), o = !1) {
5107
+ async function ry(t, n = cs(t, St.value), o = !1) {
5109
5108
  const a = await Za(U(t, n));
5110
5109
  if (!a) return !1;
5111
5110
  const r = U(t, n);
@@ -5113,7 +5112,7 @@ async function iy(t, n = cs(t, St.value), o = !1) {
5113
5112
  const d = Qs(a.value).map((w) => ({ ...w, screenId: t, stateId: n })), g = [...ie.value.filter((w) => U(w.screenId, w.stateId) !== r), ...d], h = (/* @__PURE__ */ new Date()).toISOString();
5114
5113
  return ot("annotations", r, d, a.sha, h, "synced"), ie.value = g, ia(t, n, d.length), re("annotations", "gitee", "success", a.legacy ? "已读取主分支旧目录" : "", h), !0;
5115
5114
  }
5116
- async function ry(t = !1) {
5115
+ async function uy(t = !1) {
5117
5116
  const n = mt.value, o = St.value, a = U(n, o), r = await Cr(U(n, o));
5118
5117
  if (!r) return !1;
5119
5118
  wl("pageDescriptions", r.sha, t, "页面描述", a);
@@ -5137,20 +5136,20 @@ async function $l(t = !1) {
5137
5136
  re("annotations", Be.value.annotations.source, "idle", "检测到本地编辑,已暂缓轮询覆盖");
5138
5137
  return;
5139
5138
  }
5140
- gn.value = "syncing", re("annotations", Be.value.annotations.source, "syncing");
5139
+ mn.value = "syncing", re("annotations", Be.value.annotations.source, "syncing");
5141
5140
  try {
5142
5141
  const o = await bv();
5143
- bn.value = (o == null ? void 0 : o.value) ?? bn.value;
5144
- const a = await iy(mt.value, St.value, t), r = U(mt.value, St.value);
5142
+ yn.value = (o == null ? void 0 : o.value) ?? yn.value;
5143
+ const a = await ry(mt.value, St.value, t), r = U(mt.value, St.value);
5145
5144
  if (!a && !((n = o == null ? void 0 : o.value.scopes) != null && n[r])) {
5146
5145
  const d = ie.value.filter((h) => U(h.screenId, h.stateId) !== r), g = (/* @__PURE__ */ new Date()).toISOString();
5147
5146
  ul("annotations", r), ie.value = d, re("annotations", "gitee", "success", "", g);
5148
5147
  } else if (!a)
5149
5148
  throw new Error("Gitee 当前注释文件不存在");
5150
- gn.value = "success", yn.value = "注释已同步";
5149
+ mn.value = "success", hn.value = "注释已同步";
5151
5150
  } catch (o) {
5152
5151
  const a = sn(), r = ct("annotations").scopes[a];
5153
- r && ot("annotations", a, r.value, r.revision, r.lastRemoteSyncAt, "stale", o instanceof Error ? o.message : "注释同步失败"), gn.value = "error", yn.value = "注释同步失败", re("annotations", Be.value.annotations.source, "error", o instanceof Error ? o.message : "注释同步失败");
5152
+ r && ot("annotations", a, r.value, r.revision, r.lastRemoteSyncAt, "stale", o instanceof Error ? o.message : "注释同步失败"), mn.value = "error", hn.value = "注释同步失败", re("annotations", Be.value.annotations.source, "error", o instanceof Error ? o.message : "注释同步失败");
5154
5153
  }
5155
5154
  }
5156
5155
  }
@@ -5161,20 +5160,20 @@ async function _l(t = !1) {
5161
5160
  re("pageDescriptions", Be.value.pageDescriptions.source, "idle", "检测到本地编辑,已暂缓轮询覆盖");
5162
5161
  return;
5163
5162
  }
5164
- gn.value = "syncing", re("pageDescriptions", Be.value.pageDescriptions.source, "syncing");
5163
+ mn.value = "syncing", re("pageDescriptions", Be.value.pageDescriptions.source, "syncing");
5165
5164
  try {
5166
5165
  const o = await Sr();
5167
5166
  yt.value = (o == null ? void 0 : o.value) ?? yt.value;
5168
- const a = await ry(t), r = sn();
5167
+ const a = await uy(t), r = sn();
5169
5168
  if (!a && !((n = o == null ? void 0 : o.value.scopes) != null && n[r])) {
5170
5169
  Nt("gitee", r, null);
5171
5170
  const d = ct("pageDescriptions").scopes[r];
5172
5171
  (d == null ? void 0 : d.status) === "pending" ? re("pageDescriptions", "local-cache", "idle", "Gitee 当前 Scope 不存在,本地缓存待推送") : (ul("pageDescriptions", r), Nt("local-cache", r, null), qe.value = qe.value.filter((g) => U(g.screenId, g.stateId) !== r), re("pageDescriptions", "gitee", "success", "", (/* @__PURE__ */ new Date()).toISOString())), Hn();
5173
5172
  } else if (!a) throw new Error("Gitee 当前页面描述不存在");
5174
- gn.value = "success", yn.value = Be.value.pageDescriptions.source === "local-cache" ? "已读取 Gitee,本地缓存待推送" : "页面说明已同步";
5173
+ mn.value = "success", hn.value = Be.value.pageDescriptions.source === "local-cache" ? "已读取 Gitee,本地缓存待推送" : "页面说明已同步";
5175
5174
  } catch (o) {
5176
5175
  const a = sn(), r = ct("pageDescriptions").scopes[a];
5177
- r && ot("pageDescriptions", a, r.value, r.revision, r.lastRemoteSyncAt, r.status === "pending" ? "pending" : "stale", o instanceof Error ? o.message : "页面描述同步失败"), gn.value = "error", yn.value = "页面说明同步失败", re("pageDescriptions", Be.value.pageDescriptions.source, "error", o instanceof Error ? o.message : "页面描述同步失败");
5176
+ r && ot("pageDescriptions", a, r.value, r.revision, r.lastRemoteSyncAt, r.status === "pending" ? "pending" : "stale", o instanceof Error ? o.message : "页面描述同步失败"), mn.value = "error", hn.value = "页面说明同步失败", re("pageDescriptions", Be.value.pageDescriptions.source, "error", o instanceof Error ? o.message : "页面描述同步失败");
5178
5177
  }
5179
5178
  }
5180
5179
  }
@@ -5222,17 +5221,17 @@ function Zi(t) {
5222
5221
  r[oe] = w === !0 ? { count: h, updatedAt: n, highlighted: !0, highlightColor: P ?? "#ef4444" } : { count: h, updatedAt: n }, d[g] = { count: (((Ie = d[g]) == null ? void 0 : Ie.count) ?? 0) + h, updatedAt: n };
5223
5222
  }), { projectId: _e.projectId, updatedAt: n, scopes: r, screens: d };
5224
5223
  }
5225
- async function uy() {
5226
- if (!_e.remoteWritable || fn.value === "running") return;
5224
+ async function cy() {
5225
+ if (!_e.remoteWritable || vn.value === "running") return;
5227
5226
  const t = $t.value.trim() || "初始化工具";
5228
- fn.value = "running", Un.value = "", it.value = { current: 0, total: 1, label: "检查初始化状态" };
5227
+ vn.value = "running", Un.value = "", it.value = { current: 0, total: 1, label: "检查初始化状态" };
5229
5228
  try {
5230
5229
  if (await hv()) {
5231
- fn.value = "success", it.value = { current: 1, total: 1, label: "远端已初始化" }, Un.value = "远端已初始化:未逐文件检查,未产生重复提交", await ea(!1);
5230
+ vn.value = "success", it.value = { current: 1, total: 1, label: "远端已初始化" }, Un.value = "远端已初始化:未逐文件检查,未产生重复提交", await ea(!1);
5232
5231
  return;
5233
5232
  }
5234
5233
  } catch (r) {
5235
- fn.value = "partial", it.value = { current: 1, total: 1, label: "初始化状态检查失败" }, Un.value = r instanceof Error ? r.message : "无法检查 Gitee 初始化状态", console.error("❌ [Gitee 初始化] 初始化状态检查失败", { error: r });
5234
+ vn.value = "partial", it.value = { current: 1, total: 1, label: "初始化状态检查失败" }, Un.value = r instanceof Error ? r.message : "无法检查 Gitee 初始化状态", console.error("❌ [Gitee 初始化] 初始化状态检查失败", { error: r });
5236
5235
  return;
5237
5236
  }
5238
5237
  const n = [], o = /* @__PURE__ */ new Map();
@@ -5260,15 +5259,15 @@ async function uy() {
5260
5259
  } catch (r) {
5261
5260
  a.failed += 1, console.error("❌ [Gitee 初始化] 完成标记写入失败", { error: r });
5262
5261
  }
5263
- it.value = { ...it.value, current: it.value.current + 1 }, fn.value = a.failed ? "partial" : "success", Un.value = a.failed ? `初始化部分完成:新建 ${a.created},跳过 ${a.unchanged + a.protected},失败 ${a.failed}` : a.created ? `初始化成功:新建 ${a.created},跳过 ${a.unchanged + a.protected}` : `远端已初始化:未重复创建,检查 ${a.unchanged + a.protected}`, await ea(!1);
5262
+ it.value = { ...it.value, current: it.value.current + 1 }, vn.value = a.failed ? "partial" : "success", Un.value = a.failed ? `初始化部分完成:新建 ${a.created},跳过 ${a.unchanged + a.protected},失败 ${a.failed}` : a.created ? `初始化成功:新建 ${a.created},跳过 ${a.unchanged + a.protected}` : `远端已初始化:未重复创建,检查 ${a.unchanged + a.protected}`, await ea(!1);
5264
5263
  }
5265
- function cy() {
5264
+ function dy() {
5266
5265
  aa.value = !0, rs.value = null;
5267
5266
  }
5268
5267
  function Pu() {
5269
5268
  aa.value = !1, rs.value = null, us.value = "view";
5270
5269
  }
5271
- function dy(t, n) {
5270
+ function py(t, n) {
5272
5271
  if (!aa.value) return;
5273
5272
  t.preventDefault(), t.stopPropagation();
5274
5273
  const o = t.currentTarget, a = o.querySelector(".annotation-layer"), r = o.getBoundingClientRect(), d = a == null ? void 0 : a.getBoundingClientRect(), g = d && d.width > 0 && d.height > 0 ? d : r, h = Wr(t.clientX, t.clientY, g);
@@ -5291,20 +5290,20 @@ async function ua(t, n, o, a) {
5291
5290
  const d = Qs(r.value).map((w) => ({ ...w, screenId: t, stateId: n }));
5292
5291
  ia(t, n, d.length);
5293
5292
  const g = (/* @__PURE__ */ new Date()).toISOString(), h = [...ie.value.filter((w) => U(w.screenId, w.stateId) !== U(t, n)), ...d];
5294
- if (ot("annotations", U(t, n), d, r.sha, g, "synced"), ie.value = h, bn.value)
5293
+ if (ot("annotations", U(t, n), d, r.sha, g, "synced"), ie.value = h, yn.value)
5295
5294
  try {
5296
- await Sv(bn.value, $t.value.trim() || "未署名", U(t, n));
5295
+ await Sv(yn.value, $t.value.trim() || "未署名", U(t, n));
5297
5296
  } catch (w) {
5298
5297
  return re("annotations", "gitee", "error", `注释已保存,但索引同步失败:${w instanceof Error ? w.message : "未知错误"}`, g), d;
5299
5298
  }
5300
5299
  return re("annotations", "gitee", "success", "", g), d;
5301
5300
  } catch (r) {
5302
5301
  const d = r instanceof Error ? r.message : "注释保存失败";
5303
- r instanceof Cn ? Sl("annotations", d) : re("annotations", Be.value.annotations.source, "error", d);
5302
+ r instanceof Sn ? Sl("annotations", d) : re("annotations", Be.value.annotations.source, "error", d);
5304
5303
  return;
5305
5304
  }
5306
5305
  }
5307
- async function py() {
5306
+ async function vy() {
5308
5307
  const t = rs.value;
5309
5308
  if (!t) return;
5310
5309
  const n = (/* @__PURE__ */ new Date()).toISOString(), o = {
@@ -5320,7 +5319,7 @@ async function py() {
5320
5319
  }, a = await ua(t.screenId, t.stateId, "新增", (r) => [...r, o]);
5321
5320
  a !== void 0 && (a ? ie.value = [...ie.value.filter((r) => U(r.screenId, r.stateId) !== U(t.screenId, t.stateId)), ...a] : (ie.value = [...ie.value, o], ia(t.screenId, t.stateId, al.value.length), ot("annotations", U(t.screenId, t.stateId), al.value, null, null, "pending"), re("annotations", "local-cache", "success", _e.unavailableReason)), Pu());
5322
5321
  }
5323
- function vy(t) {
5322
+ function fy(t) {
5324
5323
  const n = ie.value.find((o) => o.id === t);
5325
5324
  n && (yl.value = t, jn.value = {
5326
5325
  featureName: n.featureName,
@@ -5332,7 +5331,7 @@ function vy(t) {
5332
5331
  function Du() {
5333
5332
  yl.value = "", us.value = "view";
5334
5333
  }
5335
- async function fy() {
5334
+ async function my() {
5336
5335
  const t = $u.value;
5337
5336
  if (!t) return;
5338
5337
  const n = (/* @__PURE__ */ new Date()).toISOString(), o = (r) => r.id === t.id ? {
@@ -5346,7 +5345,7 @@ async function fy() {
5346
5345
  } : r, a = await ua(t.screenId, t.stateId, "编辑", (r) => r.map(o));
5347
5346
  a !== void 0 && (ie.value = a ? [...ie.value.filter((r) => U(r.screenId, r.stateId) !== U(t.screenId, t.stateId)), ...a] : ie.value.map(o), a === null && ot("annotations", U(t.screenId, t.stateId), ie.value.filter((r) => U(r.screenId, r.stateId) === U(t.screenId, t.stateId)), null, null, "pending"), Du());
5348
5347
  }
5349
- async function my(t, n, o) {
5348
+ async function gy(t, n, o) {
5350
5349
  const a = ie.value.find((w) => w.id === t);
5351
5350
  if (!a) return !1;
5352
5351
  const r = (/* @__PURE__ */ new Date()).toISOString(), d = (w) => w.id === t ? {
@@ -5363,19 +5362,19 @@ async function my(t, n, o) {
5363
5362
  );
5364
5363
  return h === void 0 ? !1 : (ie.value = h ? [...ie.value.filter((w) => U(w.screenId, w.stateId) !== U(a.screenId, a.stateId)), ...h] : ie.value.map(d), h === null && ot("annotations", U(a.screenId, a.stateId), ie.value.filter((w) => U(w.screenId, w.stateId) === U(a.screenId, a.stateId)), null, null, "pending"), !0);
5365
5364
  }
5366
- async function gy(t) {
5365
+ async function hy(t) {
5367
5366
  const n = ie.value.find((a) => a.id === t);
5368
5367
  if (!n) return;
5369
5368
  const o = await ua(n.screenId, n.stateId, "删除", (a) => a.filter((r) => r.id !== t));
5370
5369
  o !== void 0 && (ie.value = o ? [...ie.value.filter((a) => U(a.screenId, a.stateId) !== U(n.screenId, n.stateId)), ...o] : ie.value.filter((a) => a.id !== t), o === null && ot("annotations", U(n.screenId, n.stateId), ie.value.filter((a) => U(a.screenId, a.stateId) === U(n.screenId, n.stateId)), null, null, "pending"), ia(n.screenId, n.stateId, ie.value.filter((a) => U(a.screenId, a.stateId) === U(n.screenId, n.stateId)).length));
5371
5370
  }
5372
- function hy(t) {
5371
+ function yy(t) {
5373
5372
  as.value && window.clearTimeout(as.value), la.value = t;
5374
5373
  }
5375
- function yy() {
5374
+ function by() {
5376
5375
  as.value && window.clearTimeout(as.value);
5377
5376
  }
5378
- function by() {
5377
+ function wy() {
5379
5378
  as.value = window.setTimeout(() => {
5380
5379
  la.value = "";
5381
5380
  }, 160);
@@ -5383,14 +5382,14 @@ function by() {
5383
5382
  function Au(t) {
5384
5383
  const n = ds(t).map((o) => {
5385
5384
  var a, r, d;
5386
- return (d = (r = (a = bn.value) == null ? void 0 : a.scopes) == null ? void 0 : r[o]) == null ? void 0 : d.count;
5385
+ return (d = (r = (a = yn.value) == null ? void 0 : a.scopes) == null ? void 0 : r[o]) == null ? void 0 : d.count;
5387
5386
  });
5388
5387
  return n.some((o) => typeof o == "number") ? n.reduce((o, a) => o + (a ?? 0), 0) : ie.value.filter((o) => o.screenId === t).length;
5389
5388
  }
5390
5389
  function il(t, n) {
5391
5390
  var a, r, d;
5392
5391
  const o = U(t, n);
5393
- return ((d = (r = (a = bn.value) == null ? void 0 : a.scopes) == null ? void 0 : r[o]) == null ? void 0 : d.count) ?? ie.value.filter((g) => U(g.screenId, g.stateId) === o).length;
5392
+ return ((d = (r = (a = yn.value) == null ? void 0 : a.scopes) == null ? void 0 : r[o]) == null ? void 0 : d.count) ?? ie.value.filter((g) => U(g.screenId, g.stateId) === o).length;
5394
5393
  }
5395
5394
  function Pl() {
5396
5395
  const t = mt.value, n = St.value, o = (/* @__PURE__ */ new Date()).toISOString(), a = Il.value;
@@ -5422,14 +5421,14 @@ async function Eu(t) {
5422
5421
  return ot("pageDescriptions", n, r, o.sha, d, "synced"), Nt("gitee", n, r), Nt("local-cache", n, r), qe.value = [...qe.value.filter((g) => U(g.screenId, g.stateId) !== n), r], yt.value = a.value, re("pageDescriptions", "gitee", "success", "", d), !0;
5423
5422
  } catch (o) {
5424
5423
  const a = o instanceof Error ? o.message : "页面描述保存失败";
5425
- return o instanceof Cn ? Sl("pageDescriptions", a) : re("pageDescriptions", Be.value.pageDescriptions.source, "error", a), !1;
5424
+ return o instanceof Sn ? Sl("pageDescriptions", a) : re("pageDescriptions", Be.value.pageDescriptions.source, "error", a), !1;
5426
5425
  }
5427
5426
  }
5428
- async function wy() {
5427
+ async function Sy() {
5429
5428
  const t = Pl();
5430
5429
  return ln.value ? Eu(t) : Dl();
5431
5430
  }
5432
- async function Sy(t) {
5431
+ async function Cy(t) {
5433
5432
  if (t === "gitee") return !1;
5434
5433
  if (!_e.remoteWritable)
5435
5434
  return re("pageDescriptions", t, "error", _e.unavailableReason || "Gitee 当前不可写"), !1;
@@ -5459,10 +5458,10 @@ async function Tu(t = {}) {
5459
5458
  for (const ee of d) {
5460
5459
  const se = U(ee.screenId, ee.stateId), B = ((ce = ee.authorName) == null ? void 0 : ce.trim()) || $t.value.trim() || "AI";
5461
5460
  try {
5462
- const ke = await Cr(se), he = ke ? Vn([{ ...ke.value, screenId: ee.screenId, stateId: ee.stateId }])[0] : void 0;
5463
- if (ke && he && pr(he, ee)) {
5461
+ const Ce = await Cr(se), he = Ce ? Vn([{ ...Ce.value, screenId: ee.screenId, stateId: ee.stateId }])[0] : void 0;
5462
+ if (Ce && he && pr(he, ee)) {
5464
5463
  const J = (/* @__PURE__ */ new Date()).toISOString();
5465
- ot("pageDescriptions", se, he, ke.sha, J, "synced"), Nt("gitee", se, he), Nt("local-cache", se, he), qe.value = [...qe.value.filter((Je) => U(Je.screenId, Je.stateId) !== se), he], w.push(se);
5464
+ ot("pageDescriptions", se, he, Ce.sha, J, "synced"), Nt("gitee", se, he), Nt("local-cache", se, he), qe.value = [...qe.value.filter((Je) => U(Je.screenId, Je.stateId) !== se), he], w.push(se);
5466
5465
  continue;
5467
5466
  }
5468
5467
  const Ae = await kr(se, B, ee);
@@ -5474,23 +5473,23 @@ async function Tu(t = {}) {
5474
5473
  const je = await xr(yt.value, B, se);
5475
5474
  if (!je) throw new Error(`页面描述 ${se} 已写入,但 manifest 回读失败`);
5476
5475
  yt.value = je.value, h.push(se);
5477
- } catch (ke) {
5478
- P.push({ scopeId: se, error: ke instanceof Error ? ke.message : "未知错误" });
5476
+ } catch (Ce) {
5477
+ P.push({ scopeId: se, error: Ce instanceof Error ? Ce.message : "未知错误" });
5479
5478
  }
5480
5479
  }
5481
5480
  Hn();
5482
5481
  const oe = `JSON 同步完成:成功 ${h.length},跳过 ${w.length},失败 ${P.length}`;
5483
5482
  return re("pageDescriptions", "gitee", P.length ? "error" : "success", oe, (/* @__PURE__ */ new Date()).toISOString()), { syncedScopes: h, skippedScopes: w, failedScopes: P, total: d.length };
5484
5483
  }
5485
- function Cy() {
5484
+ function ky() {
5486
5485
  const t = new Blob([JSON.stringify(ie.value, null, 2)], { type: "application/json;charset=utf-8" }), n = document.createElement("a");
5487
5486
  n.href = URL.createObjectURL(t), n.download = "annotations.json", n.click(), URL.revokeObjectURL(n.href);
5488
5487
  }
5489
- function ky() {
5488
+ function xy() {
5490
5489
  const t = new Blob([JSON.stringify(qe.value, null, 2)], { type: "application/json;charset=utf-8" }), n = document.createElement("a");
5491
5490
  n.href = URL.createObjectURL(t), n.download = "page-descriptions.json", n.click(), URL.revokeObjectURL(n.href);
5492
5491
  }
5493
- function xy() {
5492
+ function Iy() {
5494
5493
  var n;
5495
5494
  const t = Number(Ys.value);
5496
5495
  if (!Number.isFinite(t)) {
@@ -5499,16 +5498,16 @@ function xy() {
5499
5498
  }
5500
5499
  mo.value = Math.min(cu, Math.max(uu, t)), Ys.value = String(mo.value), (n = Lt()) == null || n.setItem(iu, String(mo.value)), Xs.value = "已保存同步间隔";
5501
5500
  }
5502
- const Iy = x(() => ({
5501
+ const $y = x(() => ({
5503
5502
  "--flow-zoom": String(ft.value)
5504
- })), $y = x(() => `${Math.round(ft.value * 100)}%`);
5505
- function _y(t) {
5503
+ })), _y = x(() => `${Math.round(ft.value * 100)}%`);
5504
+ function Py(t) {
5506
5505
  return t === "pc" ? 640 : 393;
5507
5506
  }
5508
5507
  function Al(t) {
5509
5508
  return t === "pc" ? 360 : 902;
5510
5509
  }
5511
- const Py = 88, Nu = 152, Dy = 260, Ay = x(() => {
5510
+ const Dy = 88, Nu = 152, Ay = 260, Ey = x(() => {
5512
5511
  const t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
5513
5512
  return kl.value.forEach((o) => {
5514
5513
  const a = o.flowRow ?? 1;
@@ -5516,7 +5515,7 @@ const Py = 88, Nu = 152, Dy = 260, Ay = x(() => {
5516
5515
  }), n.forEach((o, a) => {
5517
5516
  let r = 0;
5518
5517
  o.sort((d, g) => (d.flowCol ?? 0) - (g.flowCol ?? 0)).forEach((d) => {
5519
- t.set(`${a}-${d.flowCol ?? 1}`, r), r += _y(d.platform) + Py;
5518
+ t.set(`${a}-${d.flowCol ?? 1}`, r), r += Py(d.platform) + Dy;
5520
5519
  });
5521
5520
  }), t;
5522
5521
  }), Ru = x(() => {
@@ -5525,7 +5524,7 @@ const Py = 88, Nu = 152, Dy = 260, Ay = x(() => {
5525
5524
  const o = n.flowRow ?? 1, a = Al(n.platform);
5526
5525
  t.set(o, Math.max(t.get(o) ?? 0, a));
5527
5526
  }), t;
5528
- }), Ey = x(
5527
+ }), Ty = x(
5529
5528
  () => {
5530
5529
  var t;
5531
5530
  return ((t = ol.value) == null ? void 0 : t.rows.map((n, o) => {
@@ -5538,26 +5537,26 @@ const Py = 88, Nu = 152, Dy = 260, Ay = x(() => {
5538
5537
  })) ?? [];
5539
5538
  }
5540
5539
  );
5541
- function Ty(t) {
5540
+ function Ny(t) {
5542
5541
  Ht.value = t;
5543
5542
  }
5544
- function Ny(t) {
5543
+ function Ry(t) {
5545
5544
  ft.value = Ou(ft.value + t);
5546
5545
  }
5547
- function Ry() {
5546
+ function Oy() {
5548
5547
  Ln.value = 360, Fn.value = 150, ft.value = 0.42;
5549
5548
  }
5550
- function Oy(t) {
5551
- const n = t.flowRow ?? 1, o = t.flowCol ?? 1, a = Ay.value.get(`${n}-${o}`) ?? 0;
5549
+ function By(t) {
5550
+ const n = t.flowRow ?? 1, o = t.flowCol ?? 1, a = Ey.value.get(`${n}-${o}`) ?? 0;
5552
5551
  let r = 0;
5553
5552
  for (let d = 1; d < n; d++)
5554
5553
  r += (Ru.value.get(d) ?? Al("mobile")) + Nu;
5555
5554
  return {
5556
- left: `${Ln.value + (Dy + a) * ft.value}px`,
5555
+ left: `${Ln.value + (Ay + a) * ft.value}px`,
5557
5556
  top: `${Fn.value + r * ft.value}px`
5558
5557
  };
5559
5558
  }
5560
- function By(t) {
5559
+ function jy(t) {
5561
5560
  let n = 0;
5562
5561
  for (let o = 1; o < t; o++)
5563
5562
  n += (Ru.value.get(o) ?? Al("mobile")) + Nu;
@@ -5567,16 +5566,16 @@ function By(t) {
5567
5566
  transform: `scale(${ft.value})`
5568
5567
  };
5569
5568
  }
5570
- function jy(t) {
5569
+ function Uy(t) {
5571
5570
  t.target.closest("button, input, select, textarea, video") || (sa.value = !0, Zo.value = { x: t.clientX, y: t.clientY, panX: Ln.value, panY: Fn.value });
5572
5571
  }
5573
- function Uy(t) {
5572
+ function My(t) {
5574
5573
  sa.value && (Ln.value = Zo.value.panX + t.clientX - Zo.value.x, Fn.value = Zo.value.panY + t.clientY - Zo.value.y);
5575
5574
  }
5576
- function My() {
5575
+ function Vy() {
5577
5576
  sa.value = !1;
5578
5577
  }
5579
- function Vy(t) {
5578
+ function Ly(t) {
5580
5579
  t.preventDefault();
5581
5580
  const n = Ou(ft.value + (t.deltaY > 0 ? -0.04 : 0.04));
5582
5581
  if (n === ft.value) return;
@@ -5591,7 +5590,7 @@ function Bu(t) {
5591
5590
  const n = JSON.parse(JSON.stringify(t)), o = en("flows");
5592
5591
  return tn("flows", n, (o == null ? void 0 : o.revision) ?? null, (o == null ? void 0 : o.lastRemoteSyncAt) ?? null, "pending"), tt.value = n, gu(!0), tt.value.some((r) => r.id === Ht.value) || (Ht.value = ((a = tt.value[0]) == null ? void 0 : a.id) ?? ""), re("flows", "local-cache", "success", _e.unavailableReason), !0;
5593
5592
  }
5594
- async function Ly(t) {
5593
+ async function Fy(t) {
5595
5594
  var o, a;
5596
5595
  const n = JSON.parse(JSON.stringify(t));
5597
5596
  if (Bu(n), !fu.value) return !1;
@@ -5602,17 +5601,17 @@ async function Ly(t) {
5602
5601
  return tn("flows", d, r.sha, g, "synced"), tt.value = d, gu(!1), tt.value.some((h) => h.id === Ht.value) || (Ht.value = ((a = tt.value[0]) == null ? void 0 : a.id) ?? ""), re("flows", "gitee", "success", "", g), !0;
5603
5602
  } catch (r) {
5604
5603
  const d = r instanceof Error ? r.message : "流程推送失败";
5605
- return r instanceof Cn ? Sl("flows", d) : re("flows", Be.value.flows.source, "error", d), !1;
5604
+ return r instanceof Sn ? Sl("flows", d) : re("flows", Be.value.flows.source, "error", d), !1;
5606
5605
  }
5607
5606
  }
5608
- function Fy(t = tt.value) {
5607
+ function Gy(t = tt.value) {
5609
5608
  const n = new Blob([JSON.stringify({ version: "1.0.0", flows: t }, null, 2)], { type: "application/json;charset=utf-8" }), o = document.createElement("a");
5610
5609
  o.href = URL.createObjectURL(n), o.download = "flows.json", o.click(), URL.revokeObjectURL(o.href);
5611
5610
  }
5612
- function Gy() {
5613
- return { saveFlowsToSession: Bu, pushFlowsToGitee: Ly, exportFlows: Fy };
5614
- }
5615
5611
  function zy() {
5612
+ return { saveFlowsToSession: Bu, pushFlowsToGitee: Fy, exportFlows: Gy };
5613
+ }
5614
+ function Hy() {
5616
5615
  const t = {
5617
5616
  ...(Ha == null ? void 0 : Ha({ go: Zs, goTab: qi, setPrototypeState: sl })) ?? {},
5618
5617
  PanelTop: ur,
@@ -5627,15 +5626,15 @@ function zy() {
5627
5626
  currentScreen: mt,
5628
5627
  selectedFlowId: Ht,
5629
5628
  selectedThemeId: Ct,
5630
- showThemePanel: Ch,
5631
- themeImportInput: kh,
5629
+ showThemePanel: kh,
5630
+ themeImportInput: xh,
5632
5631
  flowZoom: ft,
5633
5632
  isFlowPanning: sa,
5634
5633
  selectedTab: gl,
5635
- activeCollaborationTab: xh,
5634
+ activeCollaborationTab: Ih,
5636
5635
  annotationRemoteReady: ln,
5637
- annotationSyncStatus: gn,
5638
- annotationSyncLabel: yn,
5636
+ annotationSyncStatus: mn,
5637
+ annotationSyncLabel: hn,
5639
5638
  annotationAuthorName: $t,
5640
5639
  annotationPollingIntervalSeconds: mo,
5641
5640
  annotationPollingIntervalInput: Ys,
@@ -5643,16 +5642,16 @@ function zy() {
5643
5642
  collaborationInitialized: vu,
5644
5643
  collaborationContext: _e,
5645
5644
  collaborationSources: Be,
5646
- collaborationSourceLabel: Ah,
5645
+ collaborationSourceLabel: Eh,
5647
5646
  collaborationSourceTone: hu,
5648
- collaborationSourceDetail: Th,
5649
- collaborationLastSyncedAt: Eh,
5650
- collaborationBootstrapStatus: fn,
5647
+ collaborationSourceDetail: Nh,
5648
+ collaborationLastSyncedAt: Th,
5649
+ collaborationBootstrapStatus: vn,
5651
5650
  collaborationBootstrapProgress: it,
5652
5651
  collaborationBootstrapMessage: Un,
5653
- canInitializeRemote: Nh,
5654
- annotationPanelCollapsed: Ih,
5655
- annotationPointsVisible: $h,
5652
+ canInitializeRemote: Rh,
5653
+ annotationPanelCollapsed: $h,
5654
+ annotationPointsVisible: _h,
5656
5655
  isPlacingAnnotation: aa,
5657
5656
  hoveredAnnotationId: la,
5658
5657
  annotationDraft: rs,
@@ -5665,91 +5664,91 @@ function zy() {
5665
5664
  pageDescriptionSourceValues: Ft,
5666
5665
  pageDescriptionEditor: bl,
5667
5666
  activeThemeColors: qs,
5668
- activeDesignColors: Oh,
5667
+ activeDesignColors: Bh,
5669
5668
  themeOptions: wu,
5670
- themeStyle: Bh,
5671
- themeLabel: Gh,
5672
- themeDescription: zh,
5669
+ themeStyle: jh,
5670
+ themeLabel: zh,
5671
+ themeDescription: Hh,
5673
5672
  screens: Gn,
5674
5673
  mainFlows: tt,
5675
- showFlowEditor: _h,
5674
+ showFlowEditor: Ph,
5676
5675
  canPushFlowsToRemote: fu,
5677
5676
  currentMeta: Cl,
5678
5677
  currentDisplayScreen: ku,
5679
- currentScreenPlatform: Jh,
5680
- flowRows: Ey,
5681
- visibleScreens: Yh,
5682
- prototypeStateOptions: Xh,
5678
+ currentScreenPlatform: Wh,
5679
+ flowRows: Ty,
5680
+ visibleScreens: Xh,
5681
+ prototypeStateOptions: qh,
5683
5682
  activePrototypeStateId: St,
5684
- getPrototypeStateOptions: kn,
5683
+ getPrototypeStateOptions: Cn,
5685
5684
  getPrototypeStateLabel: xl,
5686
5685
  normalizePrototypeStateId: cs,
5687
- flowGridStyle: Iy,
5688
- flowZoomPercent: $y,
5686
+ flowGridStyle: $y,
5687
+ flowZoomPercent: _y,
5689
5688
  currentScreenAnnotations: al,
5690
5689
  currentPageDescription: Il,
5691
5690
  isScopeHighlighted: ps,
5692
5691
  isScreenHighlighted: Iu,
5693
- highlightColorForScreen: Qh,
5694
- activeScreenHighlightedStateColors: ty,
5695
- activeScreenHighlighted: ny,
5696
- activeScopeHighlighted: oy,
5697
- hoveredAnnotation: sy,
5698
- initializePrototype: ly,
5692
+ highlightColorForScreen: ey,
5693
+ activeScreenHighlightedStateColors: ny,
5694
+ activeScreenHighlighted: oy,
5695
+ activeScopeHighlighted: sy,
5696
+ hoveredAnnotation: ay,
5697
+ initializePrototype: iy,
5699
5698
  coreText: me,
5700
5699
  productText: yu,
5701
- selectTheme: jh,
5702
- updateCustomThemeColor: Uh,
5703
- updateCustomThemeDesignColor: Mh,
5704
- updateCustomThemeTypography: Vh,
5705
- updateCustomThemeRadius: Lh,
5706
- resetCustomTheme: Fh,
5707
- exportCustomTheme: Hh,
5708
- importCustomTheme: Kh,
5700
+ selectTheme: Uh,
5701
+ updateCustomThemeColor: Mh,
5702
+ updateCustomThemeDesignColor: Vh,
5703
+ updateCustomThemeTypography: Lh,
5704
+ updateCustomThemeRadius: Fh,
5705
+ resetCustomTheme: Gh,
5706
+ exportCustomTheme: Kh,
5707
+ importCustomTheme: Jh,
5709
5708
  setPrototypeState: sl,
5710
5709
  go: Zs,
5711
- goToAnnotatedScreen: qh,
5710
+ goToAnnotatedScreen: Zh,
5712
5711
  goTab: qi,
5713
- startAnnotationPlacement: cy,
5712
+ startAnnotationPlacement: dy,
5714
5713
  cancelAnnotationDraft: Pu,
5715
- handleAnnotationCanvasClick: dy,
5716
- saveAnnotationDraft: py,
5717
- openAnnotationDialog: vy,
5714
+ handleAnnotationCanvasClick: py,
5715
+ saveAnnotationDraft: vy,
5716
+ openAnnotationDialog: fy,
5718
5717
  closeAnnotationDialog: Du,
5719
- saveAnnotationEdit: fy,
5720
- updateAnnotationPosition: my,
5721
- keepAnnotationPopover: yy,
5722
- scheduleHideAnnotationPopover: by,
5723
- showAnnotationPopover: hy,
5724
- removeAnnotation: gy,
5718
+ saveAnnotationEdit: my,
5719
+ updateAnnotationPosition: gy,
5720
+ keepAnnotationPopover: by,
5721
+ scheduleHideAnnotationPopover: wy,
5722
+ showAnnotationPopover: yy,
5723
+ removeAnnotation: hy,
5725
5724
  annotationCountByScreen: Au,
5726
5725
  annotationCountByState: il,
5727
5726
  refreshPrototypeAnnotations: $l,
5728
5727
  refreshPageDescriptions: _l,
5729
5728
  refreshFlows: _u,
5730
5729
  refreshAllCollaborationData: ea,
5731
- setCollaborationEditing: Rh,
5732
- initializeRemoteCollaborationData: uy,
5733
- saveAnnotationPollingInterval: xy,
5734
- exportAnnotations: Cy,
5735
- saveCurrentPageDescription: wy,
5730
+ setCollaborationEditing: Oh,
5731
+ initializeRemoteCollaborationData: cy,
5732
+ saveAnnotationPollingInterval: Iy,
5733
+ exportAnnotations: ky,
5734
+ saveCurrentPageDescription: Sy,
5736
5735
  saveCurrentPageDescriptionToCache: Dl,
5737
- pushPageDescriptionSourceToGitee: Sy,
5738
- selectPageDescriptionSource: Zh,
5736
+ pushPageDescriptionSourceToGitee: Cy,
5737
+ selectPageDescriptionSource: Qh,
5739
5738
  syncPageDescriptionsFromJson: Tu,
5740
- exportPageDescriptions: ky,
5741
- annotationPointStyle: ay,
5742
- selectFlow: Ty,
5743
- stepFlowZoom: Ny,
5744
- resetFlowView: Ry,
5745
- flowNodeStyle: Oy,
5746
- flowRowLabelStyle: By,
5747
- startFlowPan: jy,
5748
- moveFlowPan: Uy,
5749
- stopFlowPan: My,
5750
- zoomFlowAtPoint: Vy,
5751
- overviewZoom: Ph,
5752
- overviewColumns: Dh
5739
+ exportPageDescriptions: xy,
5740
+ annotationPointStyle: ly,
5741
+ selectFlow: Ny,
5742
+ stepFlowZoom: Ry,
5743
+ resetFlowView: Oy,
5744
+ flowNodeStyle: By,
5745
+ flowRowLabelStyle: jy,
5746
+ startFlowPan: Uy,
5747
+ moveFlowPan: My,
5748
+ stopFlowPan: Vy,
5749
+ zoomFlowAtPoint: Ly,
5750
+ overviewZoom: Dh,
5751
+ overviewColumns: Ah
5753
5752
  };
5754
5753
  return Ld(t), t;
5755
5754
  }
@@ -5767,43 +5766,43 @@ function tr(t, n, o, a) {
5767
5766
  const r = new URL(t.endsWith("/") ? t : `${t}/`, o), d = new URL((n == null ? void 0 : n.trim()) || "version.json", r);
5768
5767
  return d.searchParams.set("ts", String(a)), d;
5769
5768
  }
5770
- const Hy = {
5769
+ const Ky = {
5771
5770
  key: 0,
5772
5771
  class: "update-banner"
5773
- }, Ky = {
5772
+ }, Jy = {
5774
5773
  key: 3,
5775
5774
  class: "flex min-h-screen items-center justify-center px-5 py-10"
5776
- }, Jy = { class: "mt-6 space-y-3 text-left" }, Wy = { class: "block" }, Yy = { class: "block" }, Xy = {
5775
+ }, Wy = { class: "mt-6 space-y-3 text-left" }, Yy = { class: "block" }, Xy = { class: "block" }, qy = {
5777
5776
  key: 0,
5778
5777
  class: "mt-4 text-sm font-semibold text-red-500"
5779
- }, qy = {
5778
+ }, Zy = {
5780
5779
  key: 0,
5781
5780
  class: "top-chrome"
5782
- }, Zy = { class: "apple-subnav" }, Qy = { class: "project-identity" }, eb = { class: "text-[21px] font-semibold leading-none" }, tb = { class: "mt-1 text-xs text-muted" }, nb = {
5781
+ }, Qy = { class: "apple-subnav" }, eb = { class: "project-identity" }, tb = { class: "text-[21px] font-semibold leading-none" }, nb = { class: "mt-1 text-xs text-muted" }, ob = {
5783
5782
  class: "core-version-stack",
5784
5783
  "aria-label": "原型内核版本"
5785
- }, ob = { class: "flex flex-wrap items-center justify-end gap-x-1.5 gap-y-2" }, sb = {
5784
+ }, sb = { class: "flex flex-wrap items-center justify-end gap-x-1.5 gap-y-2" }, ab = {
5786
5785
  key: 0,
5787
5786
  class: "bug-nav-badge"
5788
- }, ab = { class: "top-control-group flex rounded-full bg-panel ring-1 ring-line" }, lb = { class: "top-control-group flex rounded-full bg-panel ring-1 ring-line" }, ib = { class: "top-control-group relative flex rounded-full bg-panel ring-1 ring-line" }, rb = {
5787
+ }, lb = { class: "top-control-group flex rounded-full bg-panel ring-1 ring-line" }, ib = { class: "top-control-group flex rounded-full bg-panel ring-1 ring-line" }, rb = { class: "top-control-group relative flex rounded-full bg-panel ring-1 ring-line" }, ub = {
5789
5788
  key: 0,
5790
5789
  class: "theme-popover"
5791
- }, ub = { class: "flex items-start justify-between gap-3" }, cb = { class: "flex shrink-0 items-center gap-2" }, db = { class: "mt-3 flex flex-wrap gap-2" }, pb = ["onClick"], vb = { class: "min-w-0" }, fb = { class: "mt-3 flex gap-2" }, mb = { class: "theme-color-grid" }, gb = ["value", "onInput"], hb = ["value", "onInput"], yb = { class: "theme-token-grid" }, bb = ["value", "onInput"], wb = { class: "theme-token-grid" }, Sb = ["value", "onInput"], Cb = { class: "theme-color-grid" }, kb = ["value", "onInput"], xb = ["value", "onInput"], Ib = {
5790
+ }, cb = { class: "flex items-start justify-between gap-3" }, db = { class: "flex shrink-0 items-center gap-2" }, pb = { class: "mt-3 flex flex-wrap gap-2" }, vb = ["onClick"], fb = { class: "min-w-0" }, mb = { class: "mt-3 flex gap-2" }, gb = { class: "theme-color-grid" }, hb = ["value", "onInput"], yb = ["value", "onInput"], bb = { class: "theme-token-grid" }, wb = ["value", "onInput"], Sb = { class: "theme-token-grid" }, Cb = ["value", "onInput"], kb = { class: "theme-color-grid" }, xb = ["value", "onInput"], Ib = ["value", "onInput"], $b = {
5792
5791
  key: 0,
5793
5792
  class: "apple-hero-copy"
5794
- }, $b = {
5793
+ }, _b = {
5795
5794
  key: 0,
5796
5795
  class: "page-description-summary-shell"
5797
- }, _b = {
5796
+ }, Pb = {
5798
5797
  class: "page-description-source-switcher",
5799
5798
  "aria-label": "切换页面描述数据源"
5800
- }, Pb = ["aria-pressed", "onClick"], Db = { key: 1 }, Ab = { class: "flex flex-col gap-6 lg:flex-row" }, Eb = {
5799
+ }, Db = ["aria-pressed", "onClick"], Ab = { key: 1 }, Eb = { class: "flex flex-col gap-6 lg:flex-row" }, Tb = {
5801
5800
  key: 0,
5802
5801
  class: "interactive-side-nav-scroll-wrap"
5803
- }, Tb = ["onClick"], Nb = { class: "flex-1 text-left" }, Rb = { class: "ml-auto flex items-center gap-2" }, Ob = {
5802
+ }, Nb = ["onClick"], Rb = { class: "flex-1 text-left" }, Ob = { class: "ml-auto flex items-center gap-2" }, Bb = {
5804
5803
  key: 0,
5805
5804
  class: "annotation-nav-badge"
5806
- }, Bb = {
5805
+ }, jb = {
5807
5806
  key: 0,
5808
5807
  class: "side-nav-scroll-hint-top",
5809
5808
  viewBox: "0 0 24 24",
@@ -5812,7 +5811,7 @@ const Hy = {
5812
5811
  "stroke-width": "2.5",
5813
5812
  "stroke-linecap": "round",
5814
5813
  "stroke-linejoin": "round"
5815
- }, jb = {
5814
+ }, Ub = {
5816
5815
  key: 1,
5817
5816
  class: "side-nav-scroll-hint-bottom",
5818
5817
  viewBox: "0 0 24 24",
@@ -5821,115 +5820,115 @@ const Hy = {
5821
5820
  "stroke-width": "2.5",
5822
5821
  "stroke-linecap": "round",
5823
5822
  "stroke-linejoin": "round"
5824
- }, Ub = {
5823
+ }, Mb = {
5825
5824
  key: 1,
5826
5825
  class: "apple-side-nav overview-side-nav"
5827
- }, Mb = { class: "px-2 pb-4" }, Vb = { class: "flex items-center gap-3" }, Lb = { class: "min-w-5 text-center text-xs font-semibold text-ink" }, Fb = { class: "px-2" }, Gb = { class: "flex items-center gap-2" }, zb = { class: "min-w-10 text-center text-xs font-semibold text-ink" }, Hb = {
5826
+ }, Vb = { class: "px-2 pb-4" }, Lb = { class: "flex items-center gap-3" }, Fb = { class: "min-w-5 text-center text-xs font-semibold text-ink" }, Gb = { class: "px-2" }, zb = { class: "flex items-center gap-2" }, Hb = { class: "min-w-10 text-center text-xs font-semibold text-ink" }, Kb = {
5828
5827
  key: 2,
5829
5828
  class: "apple-side-nav flow-side-nav lg:w-80"
5830
- }, Kb = { class: "flex items-center justify-between px-2 pb-3" }, Jb = ["onClick"], Wb = { class: "min-w-0 flex-1 text-left" }, Yb = {
5829
+ }, Jb = { class: "flex items-center justify-between px-2 pb-3" }, Wb = ["onClick"], Yb = { class: "min-w-0 flex-1 text-left" }, Xb = {
5831
5830
  key: 0,
5832
5831
  class: "flow-toolbar"
5833
- }, Xb = { class: "flow-zoom-controls" }, qb = {
5832
+ }, qb = { class: "flow-zoom-controls" }, Zb = {
5834
5833
  key: 0,
5835
5834
  class: "status-bar"
5836
- }, Zb = ["onClickCapture"], Qb = { class: "screen-scroll-wrapper" }, e1 = {
5835
+ }, Qb = ["onClickCapture"], e1 = { class: "screen-scroll-wrapper" }, t1 = {
5837
5836
  key: 0,
5838
5837
  class: "annotation-layer"
5839
- }, t1 = ["data-annotation-id", "onMouseenter"], n1 = ["disabled", "onClick", "onPointerdown"], o1 = { key: 0 }, s1 = { class: "annotation-panel-head" }, a1 = { class: "annotation-panel-tabs" }, l1 = {
5838
+ }, n1 = ["data-annotation-id", "onMouseenter"], o1 = ["disabled", "onClick", "onPointerdown"], s1 = { key: 0 }, a1 = { class: "annotation-panel-head" }, l1 = { class: "annotation-panel-tabs" }, i1 = {
5840
5839
  key: 0,
5841
5840
  class: "annotation-panel-actions"
5842
- }, i1 = ["disabled"], r1 = {
5841
+ }, r1 = ["disabled"], u1 = {
5843
5842
  key: 1,
5844
5843
  class: "annotation-panel-actions description-actions"
5845
- }, u1 = ["disabled"], c1 = { class: "annotation-author-field" }, d1 = ["placeholder"], p1 = { class: "annotation-polling-field" }, v1 = { class: "annotation-polling-control" }, f1 = ["disabled"], m1 = {
5844
+ }, c1 = ["disabled"], d1 = { class: "annotation-author-field" }, p1 = ["placeholder"], v1 = { class: "annotation-polling-field" }, f1 = { class: "annotation-polling-control" }, m1 = ["disabled"], g1 = {
5846
5845
  key: 2,
5847
5846
  class: "annotation-polling-notice"
5848
- }, g1 = {
5847
+ }, h1 = {
5849
5848
  key: 3,
5850
5849
  class: "annotation-list"
5851
- }, h1 = {
5850
+ }, y1 = {
5852
5851
  key: 0,
5853
5852
  class: "annotation-empty"
5854
- }, y1 = ["onMouseenter"], b1 = { key: 0 }, w1 = { class: "annotation-list-actions" }, S1 = ["onClick"], C1 = ["disabled", "title", "onClick"], k1 = {
5853
+ }, b1 = ["onMouseenter"], w1 = { key: 0 }, S1 = { class: "annotation-list-actions" }, C1 = ["onClick"], k1 = ["disabled", "title", "onClick"], x1 = {
5855
5854
  key: 4,
5856
5855
  class: "page-description-view"
5857
- }, x1 = {
5856
+ }, I1 = {
5858
5857
  key: 0,
5859
5858
  class: "annotation-empty"
5860
- }, I1 = {
5859
+ }, $1 = {
5861
5860
  key: 0,
5862
5861
  class: "page-description-meta"
5863
- }, $1 = { class: "collaboration-source-title" }, _1 = { "aria-hidden": "true" }, P1 = ["disabled"], D1 = {
5862
+ }, _1 = { class: "collaboration-source-title" }, P1 = { "aria-hidden": "true" }, D1 = ["disabled"], A1 = {
5864
5863
  class: "environment-check-panel",
5865
5864
  role: "dialog",
5866
5865
  "aria-modal": "true",
5867
5866
  "aria-labelledby": "environment-check-title"
5868
- }, A1 = { class: "environment-check-groups" }, E1 = { "aria-hidden": "true" }, T1 = {
5867
+ }, E1 = { class: "environment-check-groups" }, T1 = { "aria-hidden": "true" }, N1 = {
5869
5868
  key: 0,
5870
5869
  class: "interaction-mode-toast",
5871
5870
  role: "status"
5872
- }, N1 = {
5871
+ }, R1 = {
5873
5872
  key: 0,
5874
5873
  class: "interaction-mode-toast product-document-toast",
5875
5874
  role: "status"
5876
- }, R1 = { class: "page-description-dialog" }, O1 = { class: "page-description-dialog-head" }, B1 = {
5875
+ }, O1 = { class: "page-description-dialog" }, B1 = { class: "page-description-dialog-head" }, j1 = {
5877
5876
  key: 0,
5878
5877
  class: "annotation-empty"
5879
- }, j1 = {
5878
+ }, U1 = {
5880
5879
  key: 1,
5881
5880
  class: "page-description-meta"
5882
- }, U1 = { class: "page-description-editor-source-row" }, M1 = {
5881
+ }, M1 = { class: "page-description-editor-source-row" }, V1 = {
5883
5882
  class: "page-description-source-switcher",
5884
5883
  "aria-label": "切换编辑数据源"
5885
- }, V1 = ["aria-pressed", "onClick"], L1 = ["disabled"], F1 = { class: "page-description-highlight-field" }, G1 = {
5884
+ }, L1 = ["aria-pressed", "onClick"], F1 = ["disabled"], G1 = { class: "page-description-highlight-field" }, z1 = {
5886
5885
  key: 0,
5887
5886
  class: "page-description-highlight-colors"
5888
- }, z1 = { class: "page-description-highlight-swatches" }, H1 = ["aria-label", "title", "onClick"], K1 = { class: "page-description-custom-color" }, J1 = ["onKeydown"], W1 = { key: 0 }, Y1 = ["placeholder"], X1 = ["placeholder"], q1 = ["placeholder"], Z1 = ["placeholder"], Q1 = ["placeholder"], ew = {
5887
+ }, H1 = { class: "page-description-highlight-swatches" }, K1 = ["aria-label", "title", "onClick"], J1 = { class: "page-description-custom-color" }, W1 = ["onKeydown"], Y1 = { key: 0 }, X1 = ["placeholder"], q1 = ["placeholder"], Z1 = ["placeholder"], Q1 = ["placeholder"], ew = ["placeholder"], tw = {
5889
5888
  key: 2,
5890
5889
  class: "page-description-action-notice"
5891
- }, tw = ["disabled"], nw = ["disabled"], ow = { class: "annotation-popover-head" }, sw = ["disabled", "title"], aw = {
5890
+ }, nw = ["disabled"], ow = ["disabled"], sw = { class: "annotation-popover-head" }, aw = ["disabled", "title"], lw = {
5892
5891
  key: 10,
5893
5892
  class: "annotation-form-backdrop"
5894
- }, lw = ["placeholder"], iw = ["placeholder"], rw = ["placeholder"], uw = { class: "annotation-color-field" }, cw = { class: "annotation-color-swatches" }, dw = ["aria-label", "title", "onClick"], pw = { class: "annotation-custom-color" }, vw = { key: 0 }, fw = ["placeholder"], mw = { class: "annotation-form-actions" }, gw = ["disabled"], hw = {
5893
+ }, iw = ["placeholder"], rw = ["placeholder"], uw = ["placeholder"], cw = { class: "annotation-color-field" }, dw = { class: "annotation-color-swatches" }, pw = ["aria-label", "title", "onClick"], vw = { class: "annotation-custom-color" }, fw = { key: 0 }, mw = ["placeholder"], gw = { class: "annotation-form-actions" }, hw = ["disabled"], yw = {
5895
5894
  key: 11,
5896
5895
  class: "annotation-form-backdrop"
5897
- }, yw = ["readonly"], bw = ["readonly"], ww = ["readonly"], Sw = {
5896
+ }, bw = ["readonly"], ww = ["readonly"], Sw = ["readonly"], Cw = {
5898
5897
  key: 0,
5899
5898
  class: "annotation-color-field"
5900
- }, Cw = { class: "annotation-color-swatches" }, kw = ["aria-label", "title", "onClick"], xw = { class: "annotation-custom-color" }, Iw = { key: 0 }, $w = { key: 1 }, _w = ["placeholder"], Pw = ["disabled"], Dw = { class: "page-description-summary-dialog" }, Aw = { class: "page-description-summary-head" }, Ew = {
5899
+ }, kw = { class: "annotation-color-swatches" }, xw = ["aria-label", "title", "onClick"], Iw = { class: "annotation-custom-color" }, $w = { key: 0 }, _w = { key: 1 }, Pw = ["placeholder"], Dw = ["disabled"], Aw = { class: "page-description-summary-dialog" }, Ew = { class: "page-description-summary-head" }, Tw = {
5901
5900
  class: "page-description-summary-options",
5902
5901
  "aria-label": "选择展示的页面描述部分"
5903
- }, Tw = ["checked", "onChange"], Nw = { class: "page-description-summary-body" }, Rw = {
5902
+ }, Nw = ["checked", "onChange"], Rw = { class: "page-description-summary-body" }, Ow = {
5904
5903
  key: 0,
5905
5904
  class: "page-description-summary-empty"
5906
- }, Ow = { class: "page-description-summary-actions" }, Bw = ["disabled"], jw = {
5905
+ }, Bw = { class: "page-description-summary-actions" }, jw = ["disabled"], Uw = {
5907
5906
  class: "prototype-health-panel",
5908
5907
  role: "dialog",
5909
5908
  "aria-modal": "true",
5910
5909
  "aria-label": "原型健康检查"
5911
- }, Uw = { class: "prototype-health-head" }, Mw = { class: "prototype-health-tabs" }, Vw = { class: "prototype-health-stat-grid" }, Lw = { class: "prototype-health-section" }, Fw = { class: "prototype-health-section-head" }, Gw = { class: "prototype-health-issues" }, zw = {
5910
+ }, Mw = { class: "prototype-health-head" }, Vw = { class: "prototype-health-tabs" }, Lw = { class: "prototype-health-stat-grid" }, Fw = { class: "prototype-health-section" }, Gw = { class: "prototype-health-section-head" }, zw = { class: "prototype-health-issues" }, Hw = {
5912
5911
  key: 1,
5913
5912
  class: "prototype-health-section prototype-health-matrix-section"
5914
- }, Hw = { class: "prototype-health-table-wrap" }, Kw = { class: "prototype-health-table" }, Jw = { class: "w-full max-w-xl rounded-[24px] border border-line bg-panel p-5 text-left shadow-[0_24px_70px_rgb(0_0_0/0.18)]" }, Ww = { class: "flex items-start justify-between gap-4" }, Yw = { class: "mt-1 text-xs text-muted" }, Xw = { class: "mt-4 max-h-[60vh] space-y-3 overflow-y-auto pr-1" }, qw = ["onClick"], Zw = { class: "flex items-center justify-between gap-3" }, Qw = { class: "text-sm font-semibold text-ink" }, eS = { class: "flex shrink-0 items-center gap-2" }, tS = { class: "rounded-full bg-panel px-2 py-1 text-xs text-muted" }, nS = { class: "mt-2 text-sm leading-5 text-muted" }, oS = {
5913
+ }, Kw = { class: "prototype-health-table-wrap" }, Jw = { class: "prototype-health-table" }, Ww = { class: "w-full max-w-xl rounded-[24px] border border-line bg-panel p-5 text-left shadow-[0_24px_70px_rgb(0_0_0/0.18)]" }, Yw = { class: "flex items-start justify-between gap-4" }, Xw = { class: "mt-1 text-xs text-muted" }, qw = { class: "mt-4 max-h-[60vh] space-y-3 overflow-y-auto pr-1" }, Zw = ["onClick"], Qw = { class: "flex items-center justify-between gap-3" }, eS = { class: "text-sm font-semibold text-ink" }, tS = { class: "flex shrink-0 items-center gap-2" }, nS = { class: "rounded-full bg-panel px-2 py-1 text-xs text-muted" }, oS = { class: "mt-2 text-sm leading-5 text-muted" }, sS = {
5915
5914
  key: 0,
5916
5915
  class: "border-t border-line bg-panel/60 px-3 py-3"
5917
- }, sS = {
5916
+ }, aS = {
5918
5917
  key: 0,
5919
5918
  class: "space-y-2"
5920
- }, aS = {
5919
+ }, lS = {
5921
5920
  key: 1,
5922
5921
  class: "rounded-[12px] bg-panel px-3 py-2 text-xs leading-5 text-muted"
5923
- }, lS = {
5922
+ }, iS = {
5924
5923
  key: 0,
5925
5924
  class: "rounded-[16px] bg-soft p-3 text-sm text-muted"
5926
- }, iS = { class: "mobile-page-picker" }, rS = { class: "mobile-page-picker-list" }, uS = ["onClick"], cS = { class: "mobile-page-picker-code" }, dS = { class: "mobile-page-picker-copy" }, pS = {
5925
+ }, rS = { class: "mobile-page-picker" }, uS = { class: "mobile-page-picker-list" }, cS = ["onClick"], dS = { class: "mobile-page-picker-code" }, pS = { class: "mobile-page-picker-copy" }, vS = {
5927
5926
  key: 0,
5928
5927
  class: "mobile-page-picker-count"
5929
- }, vS = {
5928
+ }, fS = {
5930
5929
  key: 0,
5931
5930
  class: "mobile-page-picker-states"
5932
- }, fS = ["onClick"], nr = "prototype-core-authenticated", Xo = "prototype-core-page-description-summary-sections", Hs = "prototype-core-panel-state-v1", po = 393, Ja = 852, mS = 24, Wa = 1920, gS = 1080, hS = 640, SS = /* @__PURE__ */ an({
5931
+ }, mS = ["onClick"], nr = "prototype-core-authenticated", Xo = "prototype-core-page-description-summary-sections", Hs = "prototype-core-panel-state-v1", po = 393, Ja = 852, gS = 24, Wa = 1920, hS = 1080, yS = 640, CS = /* @__PURE__ */ an({
5933
5932
  __name: "App",
5934
5933
  setup(t) {
5935
5934
  var Ti;
@@ -5949,7 +5948,7 @@ const Hy = {
5949
5948
  isFlowPanning: ee,
5950
5949
  selectedTab: se,
5951
5950
  activeCollaborationTab: B,
5952
- annotationRemoteReady: ke,
5951
+ annotationRemoteReady: Ce,
5953
5952
  annotationSyncStatus: he,
5954
5953
  annotationSyncLabel: Ae,
5955
5954
  annotationAuthorName: X,
@@ -5957,7 +5956,7 @@ const Hy = {
5957
5956
  annotationPollingIntervalInput: je,
5958
5957
  annotationPollingNotice: J,
5959
5958
  collaborationInitialized: Je,
5960
- collaborationContext: ye,
5959
+ collaborationContext: be,
5961
5960
  collaborationSources: M,
5962
5961
  collaborationSourceLabel: F,
5963
5962
  collaborationSourceTone: ue,
@@ -5987,14 +5986,14 @@ const Hy = {
5987
5986
  themeDescription: _t,
5988
5987
  screens: j,
5989
5988
  mainFlows: pe,
5990
- showFlowEditor: be,
5989
+ showFlowEditor: ye,
5991
5990
  canPushFlowsToRemote: Ot,
5992
5991
  currentMeta: Xe,
5993
5992
  currentDisplayScreen: Bt,
5994
5993
  currentScreenPlatform: I,
5995
5994
  flowRows: $,
5996
5995
  visibleScreens: q,
5997
- prototypeStateOptions: z,
5996
+ prototypeStateOptions: G,
5998
5997
  activePrototypeStateId: E,
5999
5998
  getPrototypeStateOptions: L,
6000
5999
  getPrototypeStateLabel: Ne,
@@ -6002,8 +6001,8 @@ const Hy = {
6002
6001
  flowGridStyle: et,
6003
6002
  flowZoomPercent: Kn,
6004
6003
  currentScreenAnnotations: Pt,
6005
- currentPageDescription: xe,
6006
- isScreenHighlighted: xn,
6004
+ currentPageDescription: ke,
6005
+ isScreenHighlighted: kn,
6007
6006
  highlightColorForScreen: ca,
6008
6007
  activeScreenHighlightedStateColors: fs,
6009
6008
  hoveredAnnotation: Kt,
@@ -6022,7 +6021,7 @@ const Hy = {
6022
6021
  go: jt,
6023
6022
  goToAnnotatedScreen: va,
6024
6023
  goTab: fa,
6025
- startAnnotationPlacement: rn,
6024
+ startAnnotationPlacement: xn,
6026
6025
  cancelAnnotationDraft: Jn,
6027
6026
  handleAnnotationCanvasClick: ma,
6028
6027
  saveAnnotationDraft: bs,
@@ -6034,11 +6033,11 @@ const Hy = {
6034
6033
  scheduleHideAnnotationPopover: Jt,
6035
6034
  showAnnotationPopover: y,
6036
6035
  removeAnnotation: p,
6037
- annotationCountByScreen: G,
6036
+ annotationCountByScreen: z,
6038
6037
  annotationCountByState: m,
6039
6038
  refreshPrototypeAnnotations: Y,
6040
6039
  refreshPageDescriptions: Re,
6041
- refreshAllCollaborationData: un,
6040
+ refreshAllCollaborationData: rn,
6042
6041
  setCollaborationEditing: Me,
6043
6042
  initializeRemoteCollaborationData: bt,
6044
6043
  saveAnnotationPollingInterval: Wt,
@@ -6060,13 +6059,13 @@ const Hy = {
6060
6059
  zoomFlowAtPoint: Fu,
6061
6060
  overviewZoom: Yt,
6062
6061
  overviewColumns: In
6063
- } = zy(), { saveFlowsToSession: Gu, pushFlowsToGitee: zu, exportFlows: Hu } = Gy(), { unresolvedBugCount: jl, initializeBugs: Ku } = Lr(), { initializeTestCases: Ju, refreshTestCases: Wu, sourceState: Yu } = Jr(), Xu = x(
6062
+ } = Hy(), { saveFlowsToSession: Gu, pushFlowsToGitee: zu, exportFlows: Hu } = zy(), { unresolvedBugCount: jl, initializeBugs: Ku } = Lr(), { initializeTestCases: Ju, refreshTestCases: Wu, sourceState: Yu } = Jr(), Xu = x(
6064
6063
  () => j.filter((u) => u.platform === "mobile" && u.hasTabBar).map((u) => ({ id: u.id, label: u.title, icon: u.icon }))
6065
6064
  ), Cs = {
6066
6065
  gitee: "Gitee",
6067
6066
  "local-cache": "缓存",
6068
6067
  "local-seed": "种子"
6069
- }, qu = x(() => ye.codeBranch || "未知分支"), Ul = x(() => We.value ? Date.now() - new Date(We.value).getTime() < 6e4 ? "刚刚同步" : new Date(We.value).toLocaleTimeString("zh-CN", { hour: "2-digit", minute: "2-digit" }) : ""), Zu = x(() => W.value === "running" ? `${Ze.value} · ${$e.value.label}` : W.value === "success" || W.value === "partial" || !ye.remoteWritable || ue.value === "conflict" ? Ze.value : [
6068
+ }, qu = x(() => be.codeBranch || "未知分支"), Ul = x(() => We.value ? Date.now() - new Date(We.value).getTime() < 6e4 ? "刚刚同步" : new Date(We.value).toLocaleTimeString("zh-CN", { hour: "2-digit", minute: "2-digit" }) : ""), Zu = x(() => W.value === "running" ? `${Ze.value} · ${$e.value.label}` : W.value === "success" || W.value === "partial" || !be.remoteWritable || ue.value === "conflict" ? Ze.value : [
6070
6069
  `注释 ${Cs[M.value.annotations.source]}`,
6071
6070
  `页面描述 ${Cs[M.value.pageDescriptions.source]}`,
6072
6071
  `测试用例 ${Cs[M.value.testCases.source]}`,
@@ -6075,7 +6074,7 @@ const Hy = {
6075
6074
  Ge(Yu, (u) => {
6076
6075
  M.value = { ...M.value, testCases: { ...u } };
6077
6076
  }, { deep: !0, immediate: !0 });
6078
- const tc = ["structure", "features"], ks = b(""), xs = b(""), Ao = b(""), Wn = b(!1), Ml = b(!1), $n = b(!1), Is = b(!1), Eo = b("overview"), _n = b(!1), cn = b(""), wt = b([...tc]), dn = b(!1), Yn = b(""), Vl = ["#ef4444", "#f97316", "#eab308", "#22c55e", "#3b82f6", "#8b5cf6"], Ll = Vl, $s = b(""), To = b(""), Fl = `prototype-highlight-colors:${ye.projectId}`, _s = b(nc()), Xn = b(""), Pn = b(""), Gl = `prototype-annotation-colors:${ye.projectId}`, No = b(oc());
6077
+ const tc = ["structure", "features"], ks = b(""), xs = b(""), Ao = b(""), Wn = b(!1), Ml = b(!1), $n = b(!1), Is = b(!1), Eo = b("overview"), _n = b(!1), un = b(""), wt = b([...tc]), cn = b(!1), Yn = b(""), Vl = ["#ef4444", "#f97316", "#eab308", "#22c55e", "#3b82f6", "#8b5cf6"], Ll = Vl, $s = b(""), To = b(""), Fl = `prototype-highlight-colors:${be.projectId}`, _s = b(nc()), Xn = b(""), Pn = b(""), Gl = `prototype-annotation-colors:${be.projectId}`, No = b(oc());
6079
6078
  function nc() {
6080
6079
  try {
6081
6080
  const u = window.localStorage.getItem(Fl);
@@ -6191,7 +6190,7 @@ const Hy = {
6191
6190
  ]
6192
6191
  }
6193
6192
  ];
6194
- }), Hl = x(() => wa.value.reduce((u, s) => u + s.items.length, 0)), Kl = x(() => wa.value.reduce((u, s) => u + s.items.filter((l) => l.configured).length, 0)), Sa = x(() => Hl.value - Kl.value), Ca = "1.2.15", ka = b(""), Dn = b("idle"), ac = x(() => Dn.value === "success" && ka.value !== Ca), lc = x(() => Dn.value === "success" ? `v${ka.value}` : Dn.value === "error" ? "版本暂不可用" : "版本检测中");
6193
+ }), Hl = x(() => wa.value.reduce((u, s) => u + s.items.length, 0)), Kl = x(() => wa.value.reduce((u, s) => u + s.items.filter((l) => l.configured).length, 0)), Sa = x(() => Hl.value - Kl.value), Ca = "1.2.16", ka = b(""), Dn = b("idle"), ac = x(() => Dn.value === "success" && ka.value !== Ca), lc = x(() => Dn.value === "success" ? `v${ka.value}` : Dn.value === "error" ? "版本暂不可用" : "版本检测中");
6195
6194
  async function ic() {
6196
6195
  if (Dn.value !== "idle") return;
6197
6196
  Dn.value = "loading";
@@ -6240,7 +6239,7 @@ const Hy = {
6240
6239
  const xa = ta(), uc = xa.updateHistory !== void 0, Rs = xa.updateHistory ?? [], An = b(!1), Os = b(((Ti = Rs[0]) == null ? void 0 : Ti.hash) ?? ""), cc = x(() => {
6241
6240
  var u;
6242
6241
  return ((u = Rs[0]) == null ? void 0 : u.date) ?? "暂无记录";
6243
- }), fe = b("prototype"), ql = b(null), jo = b(!1), Uo = b(!1), pn = b(!1), Xt = b(!1), qt = b(!0), Ia = b(!1), $a = b(!1), Zl = b(!1), ge = x(
6242
+ }), fe = b("prototype"), ql = b(null), jo = b(!1), Uo = b(!1), dn = b(!1), Xt = b(!1), qt = b(!0), Ia = b(!1), $a = b(!1), Zl = b(!1), ge = x(
6244
6243
  () => Zl.value && I.value === "mobile"
6245
6244
  ), vt = b(!1);
6246
6245
  let Qn, eo;
@@ -6262,7 +6261,7 @@ const Hy = {
6262
6261
  }, 3e3);
6263
6262
  }
6264
6263
  function mc() {
6265
- g.value === "interactive" && (vt.value = !vt.value, vt.value && (oe.value = !1, An.value = !1, $n.value = !1, be.value = !1));
6264
+ g.value === "interactive" && (vt.value = !vt.value, vt.value && (oe.value = !1, An.value = !1, $n.value = !1, ye.value = !1));
6266
6265
  }
6267
6266
  function Ql() {
6268
6267
  vt.value = !1;
@@ -6288,14 +6287,14 @@ const Hy = {
6288
6287
  () => !!(te.value && te.value.screenId === h.value && te.value.stateId === Qe(h.value, E.value))
6289
6288
  );
6290
6289
  Ge([h, E, B], () => {
6291
- dn.value = !1;
6292
- }), Ge(dn, (u) => Me("pageDescriptions", u), { immediate: !0 }), Ge(be, (u) => Me("flows", u), { immediate: !0 }), Ge([we, te], ([u, s]) => {
6290
+ cn.value = !1;
6291
+ }), Ge(cn, (u) => Me("pageDescriptions", u), { immediate: !0 }), Ge(ye, (u) => Me("flows", u), { immediate: !0 }), Ge([we, te], ([u, s]) => {
6293
6292
  Me("annotations", u !== "view" || !!s);
6294
6293
  }, { immediate: !0 }), Ge(g, (u, s) => {
6295
6294
  u !== "interactive" && vt.value && Ql(), u === "interactive" && s !== "interactive" && fc();
6296
6295
  });
6297
6296
  function ti() {
6298
- const u = xe.value;
6297
+ const u = ke.value;
6299
6298
  k.value = u ? {
6300
6299
  highlighted: u.highlighted ?? !1,
6301
6300
  highlightColor: u.highlightColor ?? "#ef4444",
@@ -6323,20 +6322,20 @@ const Hy = {
6323
6322
  };
6324
6323
  }
6325
6324
  function bc() {
6326
- ti(), Yn.value = "", dn.value = !0;
6325
+ ti(), Yn.value = "", cn.value = !0;
6327
6326
  }
6328
6327
  function Pa() {
6329
- ti(), dn.value = !1;
6328
+ ti(), cn.value = !1;
6330
6329
  }
6331
6330
  async function wc() {
6332
- await Do() && (dn.value = !1);
6331
+ await Do() && (cn.value = !1);
6333
6332
  }
6334
6333
  function Sc() {
6335
- kt() && (dn.value = !1);
6334
+ kt() && (cn.value = !1);
6336
6335
  }
6337
6336
  async function Cc() {
6338
6337
  if (Pe.value === "gitee") return;
6339
- const u = Fo(h.value, E.value), s = ye.branchKey || "未知分支", l = `projects/${ye.projectId}/branches/${s}/page-descriptions/${u}.json`, S = Pe.value === "local-cache" ? "本地缓存" : "JSON";
6338
+ const u = Fo(h.value, E.value), s = be.branchKey || "未知分支", l = `projects/${be.projectId}/branches/${s}/page-descriptions/${u}.json`, S = Pe.value === "local-cache" ? "本地缓存" : "JSON";
6340
6339
  if (!window.confirm(`将${S}中的当前页面描述覆盖推送到 Gitee?
6341
6340
 
6342
6341
  Scope:${u}
@@ -6390,7 +6389,7 @@ Scope:${u}
6390
6389
  }
6391
6390
  function oi(u, s, l) {
6392
6391
  const S = l.getBoundingClientRect(), O = Ac(l), Z = O == null ? void 0 : O.getBoundingClientRect(), Le = Z && Z.width > 0 && Z.height > 0 ? Z : S;
6393
- return fh(Wr(u, s, Le));
6392
+ return mh(Wr(u, s, Le));
6394
6393
  }
6395
6394
  function Ec(u, s) {
6396
6395
  if (s.pointerType === "mouse" && s.button !== 0 || Zn.value.has(u.id)) return;
@@ -6459,25 +6458,25 @@ Scope:${u}
6459
6458
  }
6460
6459
  const Us = x(() => {
6461
6460
  var s, l;
6462
- if (!((s = xe.value) != null && s.authorName) && !((l = xe.value) != null && l.updatedAt)) return "";
6463
- const u = Aa(xe.value.updatedAt);
6464
- return `${xe.value.authorName || "未署名"}${u ? ` · ${u}` : ""}`;
6461
+ if (!((s = ke.value) != null && s.authorName) && !((l = ke.value) != null && l.updatedAt)) return "";
6462
+ const u = Aa(ke.value.updatedAt);
6463
+ return `${ke.value.authorName || "未署名"}${u ? ` · ${u}` : ""}`;
6465
6464
  }), jc = x(() => Fo(h.value, E.value)), si = [
6466
6465
  { source: "gitee", label: "Gitee", icon: jd },
6467
6466
  { source: "local-cache", label: "本地缓存", icon: Mi },
6468
6467
  { source: "local-seed", label: "JSON", icon: ar }
6469
- ], ai = x(() => !!Se.value[Pe.value][jc.value]), Uc = x(() => ai.value ? "当前 Scope 已加载" : Pe.value === "gitee" && !ke.value ? ye.unavailableReason || "Gitee 未启用" : "当前 Scope 无数据"), At = x(() => {
6468
+ ], ai = x(() => !!Se.value[Pe.value][jc.value]), Uc = x(() => ai.value ? "当前 Scope 已加载" : Pe.value === "gitee" && !Ce.value ? be.unavailableReason || "Gitee 未启用" : "当前 Scope 无数据"), At = x(() => {
6470
6469
  var u, s, l, S, O, Z, Le, Ko, Ni;
6471
6470
  return {
6472
- purpose: ((u = xe.value) == null ? void 0 : u.purpose.trim()) || "当前页面暂无页面目的描述。",
6473
- structure: ((s = xe.value) == null ? void 0 : s.structure.trim()) || "当前页面暂无页面结构描述。",
6474
- features: ((l = xe.value) == null ? void 0 : l.features.trim()) || "当前页面暂无核心功能描述。",
6475
- flowPosition: ((S = xe.value) == null ? void 0 : S.flowPosition.trim()) || "当前页面暂无流程位置描述。",
6476
- interactionRules: ((O = xe.value) == null ? void 0 : O.interactionRules.trim()) || "当前页面暂无交互规则。",
6477
- stateCriteria: ((Z = xe.value) == null ? void 0 : Z.stateCriteria.trim()) || "当前页面暂无状态判断依据。",
6478
- edgeCases: ((Le = xe.value) == null ? void 0 : Le.edgeCases.trim()) || "当前页面暂无异常与边界。",
6479
- acceptanceCriteria: ((Ko = xe.value) == null ? void 0 : Ko.acceptanceCriteria.trim()) || "当前页面暂无开发验收。",
6480
- developmentNotes: ((Ni = xe.value) == null ? void 0 : Ni.developmentNotes.trim()) || "当前页面暂无补充说明。"
6471
+ purpose: ((u = ke.value) == null ? void 0 : u.purpose.trim()) || "当前页面暂无页面目的描述。",
6472
+ structure: ((s = ke.value) == null ? void 0 : s.structure.trim()) || "当前页面暂无页面结构描述。",
6473
+ features: ((l = ke.value) == null ? void 0 : l.features.trim()) || "当前页面暂无核心功能描述。",
6474
+ flowPosition: ((S = ke.value) == null ? void 0 : S.flowPosition.trim()) || "当前页面暂无流程位置描述。",
6475
+ interactionRules: ((O = ke.value) == null ? void 0 : O.interactionRules.trim()) || "当前页面暂无交互规则。",
6476
+ stateCriteria: ((Z = ke.value) == null ? void 0 : Z.stateCriteria.trim()) || "当前页面暂无状态判断依据。",
6477
+ edgeCases: ((Le = ke.value) == null ? void 0 : Le.edgeCases.trim()) || "当前页面暂无异常与边界。",
6478
+ acceptanceCriteria: ((Ko = ke.value) == null ? void 0 : Ko.acceptanceCriteria.trim()) || "当前页面暂无开发验收。",
6479
+ developmentNotes: ((Ni = ke.value) == null ? void 0 : Ni.developmentNotes.trim()) || "当前页面暂无补充说明。"
6481
6480
  };
6482
6481
  }), En = x(() => [
6483
6482
  { id: "purpose", label: "页面目的", value: At.value.purpose },
@@ -6515,12 +6514,12 @@ Scope:${u}
6515
6514
  ), ii = x(() => {
6516
6515
  var s;
6517
6516
  const u = new Set(Q.value.map((l) => Fo(l.screenId, l.stateId)));
6518
- return ke.value && ((s = Ue.value) != null && s.scopes) && Object.entries(Ue.value.scopes).forEach(([l, S]) => {
6517
+ return Ce.value && ((s = Ue.value) != null && s.scopes) && Object.entries(Ue.value.scopes).forEach(([l, S]) => {
6519
6518
  ((S == null ? void 0 : S.count) ?? 0) > 0 && u.add(l);
6520
6519
  }), u;
6521
6520
  }), Mc = x(() => {
6522
6521
  var u;
6523
- return ke.value ? (u = Ue.value) != null && u.scopes ? "云端 manifest" : "云端 manifest 未加载" : "本地兜底数据";
6522
+ return Ce.value ? (u = Ue.value) != null && u.scopes ? "云端 manifest" : "云端 manifest 未加载" : "本地兜底数据";
6524
6523
  }), ao = x(
6525
6524
  () => j.map((u) => {
6526
6525
  const s = L(u.id), l = s.length ? s.map((Z) => ({
@@ -6536,7 +6535,7 @@ Scope:${u}
6536
6535
  inFlow: O > 0,
6537
6536
  describedCount: S,
6538
6537
  descriptionRatio: `${S}/${l.length}`,
6539
- annotationCount: G(u.id),
6538
+ annotationCount: z(u.id),
6540
6539
  missingDescriptions: l.filter((Z) => !ii.value.has(Z.id)).map((Z) => Z.label)
6541
6540
  };
6542
6541
  })
@@ -6552,7 +6551,7 @@ Scope:${u}
6552
6551
  { label: "状态", value: u, detail: "页面/状态 scope" },
6553
6552
  { label: "流程", value: pe.value.length, detail: `${Da.value.length} 个节点` },
6554
6553
  { label: "页面描述", value: `${s}/${u}`, detail: Mc.value },
6555
- { label: "注释", value: l, detail: ke.value ? "当前已加载云端数据" : "当前本地数据" }
6554
+ { label: "注释", value: l, detail: Ce.value ? "当前已加载云端数据" : "当前本地数据" }
6556
6555
  ];
6557
6556
  }), di = x(() => {
6558
6557
  const u = [];
@@ -6570,8 +6569,8 @@ Scope:${u}
6570
6569
  detail: ci.value.map((s) => `${s.code} ${s.title}`).join(";")
6571
6570
  }), u.push({
6572
6571
  tone: "success",
6573
- title: ke.value ? "健康面板使用云端 manifest 统计页面描述" : "健康面板当前使用本地兜底结果",
6574
- detail: ke.value ? "页面描述覆盖率来自 page-descriptions/manifest.json;注释数量来自注释 manifest;全量云端文件校验请运行 pnpm validate:remote。" : "当前未启用云端协作配置;pnpm validate 只检查本地兜底资料,pnpm validate:remote 才会主动读取 Gitee。"
6572
+ title: Ce.value ? "健康面板使用云端 manifest 统计页面描述" : "健康面板当前使用本地兜底结果",
6573
+ detail: Ce.value ? "页面描述覆盖率来自 page-descriptions/manifest.json;注释数量来自注释 manifest;全量云端文件校验请运行 pnpm validate:remote。" : "当前未启用云端协作配置;pnpm validate 只检查本地兜底资料,pnpm validate:remote 才会主动读取 Gitee。"
6575
6574
  }), u;
6576
6575
  });
6577
6576
  let Tn, lo;
@@ -6584,9 +6583,9 @@ Scope:${u}
6584
6583
  var u;
6585
6584
  if (li.value)
6586
6585
  try {
6587
- await ((u = navigator.clipboard) == null ? void 0 : u.writeText(li.value)), cn.value = "已复制页面描述";
6586
+ await ((u = navigator.clipboard) == null ? void 0 : u.writeText(li.value)), un.value = "已复制页面描述";
6588
6587
  } catch {
6589
- cn.value = "复制失败,请手动复制";
6588
+ un.value = "复制失败,请手动复制";
6590
6589
  }
6591
6590
  }
6592
6591
  function Fc() {
@@ -6602,27 +6601,27 @@ Scope:${u}
6602
6601
  }
6603
6602
  }
6604
6603
  function Gc(u) {
6605
- cn.value = "";
6604
+ un.value = "";
6606
6605
  const s = wt.value.includes(u) ? wt.value.filter((l) => l !== u) : [...wt.value, u];
6607
6606
  wt.value = En.value.map((l) => l.id).filter((l) => s.includes(l)), window.localStorage.setItem(Xo, JSON.stringify(wt.value));
6608
6607
  }
6609
6608
  function zc() {
6610
- cn.value = "", wt.value = En.value.map((u) => u.id), window.localStorage.setItem(Xo, JSON.stringify(wt.value));
6609
+ un.value = "", wt.value = En.value.map((u) => u.id), window.localStorage.setItem(Xo, JSON.stringify(wt.value));
6611
6610
  }
6612
6611
  function Hc() {
6613
- cn.value = "";
6612
+ un.value = "";
6614
6613
  const u = new Set(wt.value);
6615
6614
  wt.value = En.value.map((s) => s.id).filter((s) => !u.has(s)), window.localStorage.setItem(Xo, JSON.stringify(wt.value));
6616
6615
  }
6617
6616
  const Ea = x(() => {
6618
- const u = Math.max(1, In.value), l = ((_a.value || window.innerWidth) - mS * (u - 1)) / u;
6617
+ const u = Math.max(1, In.value), l = ((_a.value || window.innerWidth) - gS * (u - 1)) / u;
6619
6618
  return Math.min(1, Math.max(0.36, Number((l / po).toFixed(3))));
6620
6619
  }), pi = x(() => Math.round(po * Ea.value * 100) / 100), Kc = x(() => Math.round(Ja * Ea.value * 100) / 100);
6621
6620
  function Jc() {
6622
6621
  if (vt.value)
6623
6622
  return Math.min(Wa, to.value, Math.max(0, Mo.value - 48) * 16 / 9);
6624
6623
  if (ne.value === "overview") return pi.value;
6625
- if (ne.value === "flow") return hS;
6624
+ if (ne.value === "flow") return yS;
6626
6625
  const u = _a.value || to.value;
6627
6626
  return Math.min(1440, u, Math.max(0, Mo.value - 120) * 16 / 9);
6628
6627
  }
@@ -6642,7 +6641,7 @@ Scope:${u}
6642
6641
  "--presentation-phone-scale": String(O / po)
6643
6642
  };
6644
6643
  }
6645
- const l = Math.max(1, Jc()), S = l * gS / Wa;
6644
+ const l = Math.max(1, Jc()), S = l * hS / Wa;
6646
6645
  return {
6647
6646
  ...s,
6648
6647
  "--desktop-display-width": `${l}px`,
@@ -6714,14 +6713,14 @@ Scope:${u}
6714
6713
  jo.value = u.scrollTop > 2, Uo.value = u.scrollTop + u.clientHeight < u.scrollHeight - 2;
6715
6714
  }
6716
6715
  function hi() {
6717
- pn.value = !pn.value, pn.value ? (jo.value = !1, Uo.value = !1) : Ua(Ta);
6716
+ dn.value = !dn.value, dn.value ? (jo.value = !1, Uo.value = !1) : Ua(Ta);
6718
6717
  }
6719
6718
  Ge(g, async (u) => {
6720
6719
  u === "interactive" && (await Ua(), Ta()), u === "overview" && await Vs();
6721
6720
  }), Ge(In, async () => {
6722
6721
  g.value === "overview" && await Vs();
6723
6722
  }), Ge(ge, (u) => {
6724
- u && (oe.value = !1, An.value = !1, $n.value = !1, be.value = !1, Jn(), _o(), Te.value = "");
6723
+ u && (oe.value = !1, An.value = !1, $n.value = !1, ye.value = !1, Jn(), _o(), Te.value = "");
6725
6724
  });
6726
6725
  const at = xt.versionUpdate, Et = typeof (at == null ? void 0 : at.currentVersion) == "string" ? at.currentVersion.trim() : "", Nn = typeof (at == null ? void 0 : at.builtAt) == "string" ? at.builtAt.trim() : "", td = Math.max(1e4, (at == null ? void 0 : at.intervalMs) ?? 6e4), yi = !!Et, Go = b(!1), Na = b(""), zo = b("");
6727
6726
  let Ho, io, ro, It, Ls;
@@ -6768,14 +6767,14 @@ Scope:${u}
6768
6767
  key: "A",
6769
6768
  label: "添加注释点",
6770
6769
  run: () => {
6771
- g.value = "interactive", ae.value = !1, B.value = "annotations", rn();
6770
+ g.value = "interactive", ae.value = !1, B.value = "annotations", xn();
6772
6771
  }
6773
6772
  },
6774
6773
  {
6775
6774
  key: "E",
6776
6775
  label: "页面描述总览",
6777
6776
  run: () => {
6778
- _n.value = !_n.value, _n.value && (cn.value = "");
6777
+ _n.value = !_n.value, _n.value && (un.value = "");
6779
6778
  }
6780
6779
  }
6781
6780
  ]
@@ -6803,21 +6802,21 @@ Scope:${u}
6803
6802
  u !== null && window.localStorage.removeItem(Hs);
6804
6803
  return;
6805
6804
  }
6806
- pn.value = u.navigationCollapsed, ae.value = u.collaborationCollapsed, Xt.value = u.dataSourceCollapsed, qt.value = u.shortcutsCollapsed;
6805
+ dn.value = u.navigationCollapsed, ae.value = u.collaborationCollapsed, Xt.value = u.dataSourceCollapsed, qt.value = u.shortcutsCollapsed;
6807
6806
  } catch {
6808
6807
  console.warn("🧰 [面板状态] 本地缓存无效,已恢复默认展开状态"), window.localStorage.removeItem(Hs);
6809
6808
  }
6810
6809
  }
6811
6810
  Ge(
6812
- [pn, ae, Xt, qt],
6811
+ [dn, ae, Xt, qt],
6813
6812
  ([u, s, l, S]) => {
6814
6813
  const O = { navigationCollapsed: u, collaborationCollapsed: s, dataSourceCollapsed: l, shortcutsCollapsed: S };
6815
6814
  window.localStorage.setItem(Hs, JSON.stringify(O));
6816
6815
  }
6817
6816
  );
6818
6817
  function Ci() {
6819
- bi(), ke.value && (Ls = window.setInterval(() => {
6820
- console.info("🔄 [协作同步] 开始轮询注释、页面描述、测试用例和流程"), un(!0), Wu(!0);
6818
+ bi(), Ce.value && (Ls = window.setInterval(() => {
6819
+ console.info("🔄 [协作同步] 开始轮询注释、页面描述、测试用例和流程"), rn(!0), Wu(!0);
6821
6820
  }, Ee.value * 1e3));
6822
6821
  }
6823
6822
  Ge(Ee, () => {
@@ -7006,7 +7005,7 @@ Scope:${u}
7006
7005
  ]]),
7007
7006
  style: Oe(i(ut))
7008
7007
  }, [
7009
- Go.value && Wn.value ? (v(), f("div", Hy, [
7008
+ Go.value && Wn.value ? (v(), f("div", Ky, [
7010
7009
  e("div", { class: "update-banner-inner" }, [
7011
7010
  s[91] || (s[91] = e("p", null, "🔔 检测到新版本,刷新后即可使用最新页面", -1)),
7012
7011
  e("div", { class: "update-banner-actions" }, [
@@ -7022,25 +7021,25 @@ Scope:${u}
7022
7021
  ])
7023
7022
  ])
7024
7023
  ])) : C("", !0),
7025
- fe.value === "help" ? (v(), ze(ah, {
7024
+ fe.value === "help" ? (v(), ze(lh, {
7026
7025
  key: 1,
7027
7026
  onClose: fd
7028
- })) : fe.value === "themeGuide" ? (v(), ze(vh, {
7027
+ })) : fe.value === "themeGuide" ? (v(), ze(fh, {
7029
7028
  key: 2,
7030
7029
  onClose: gd
7031
7030
  })) : Wn.value ? (v(), f(D, { key: 4 }, [
7032
- ge.value ? C("", !0) : (v(), f("div", qy, [
7033
- e("div", Zy, [
7034
- e("div", Qy, [
7031
+ ge.value ? C("", !0) : (v(), f("div", Zy, [
7032
+ e("div", Qy, [
7033
+ e("div", eb, [
7035
7034
  e("button", {
7036
7035
  class: "project-title-btn",
7037
7036
  type: "button",
7038
7037
  onClick: s[2] || (s[2] = (l) => uo())
7039
7038
  }, [
7040
- e("p", eb, c(dc.value), 1),
7041
- e("p", tb, c(pc.value), 1)
7039
+ e("p", tb, c(dc.value), 1),
7040
+ e("p", nb, c(pc.value), 1)
7042
7041
  ]),
7043
- e("div", nb, [
7042
+ e("div", ob, [
7044
7043
  e("p", null, [
7045
7044
  s[97] || (s[97] = e("span", null, "内核当前", -1)),
7046
7045
  e("b", null, "v" + c(i(Ca)), 1)
@@ -7053,7 +7052,7 @@ Scope:${u}
7053
7052
  ])
7054
7053
  ])
7055
7054
  ]),
7056
- e("div", ob, [
7055
+ e("div", sb, [
7057
7056
  e("button", {
7058
7057
  class: "mode-btn top-level-mode-btn rounded-full bg-panel ring-1 ring-line",
7059
7058
  type: "button",
@@ -7076,9 +7075,9 @@ Scope:${u}
7076
7075
  onClick: dd
7077
7076
  }, [
7078
7077
  s[99] || (s[99] = K(" Bug ", -1)),
7079
- i(jl) ? (v(), f("span", sb, c(i(jl)), 1)) : C("", !0)
7078
+ i(jl) ? (v(), f("span", ab, c(i(jl)), 1)) : C("", !0)
7080
7079
  ], 2),
7081
- e("div", ab, [
7080
+ e("div", lb, [
7082
7081
  e("button", {
7083
7082
  class: A(["mode-btn", { active: fe.value === "prototype" && i(g) === "interactive" }]),
7084
7083
  onClick: s[3] || (s[3] = (l) => uo("interactive"))
@@ -7092,7 +7091,7 @@ Scope:${u}
7092
7091
  onClick: s[5] || (s[5] = (l) => uo("flow"))
7093
7092
  }, "流程模式", 2)
7094
7093
  ]),
7095
- e("div", lb, [
7094
+ e("div", ib, [
7096
7095
  e("button", {
7097
7096
  class: A(["mode-btn", { active: i(d) === "zh" }]),
7098
7097
  onClick: s[6] || (s[6] = (l) => d.value = "zh")
@@ -7102,7 +7101,7 @@ Scope:${u}
7102
7101
  onClick: s[7] || (s[7] = (l) => d.value = "en")
7103
7102
  }, "English", 2)
7104
7103
  ]),
7105
- e("div", ib, [
7104
+ e("div", rb, [
7106
7105
  e("button", {
7107
7106
  class: A(["mode-btn flex items-center gap-2", { active: i(oe) }]),
7108
7107
  onClick: s[8] || (s[8] = (l) => oe.value = !i(oe))
@@ -7113,13 +7112,13 @@ Scope:${u}
7113
7112
  }, null, 4),
7114
7113
  s[100] || (s[100] = K(" 主题切换 ", -1))
7115
7114
  ], 2),
7116
- i(oe) ? (v(), f("div", rb, [
7117
- e("div", ub, [
7115
+ i(oe) ? (v(), f("div", ub, [
7116
+ e("div", cb, [
7118
7117
  s[101] || (s[101] = e("div", null, [
7119
7118
  e("p", { class: "text-sm font-semibold text-ink" }, "主题切换"),
7120
7119
  e("p", { class: "mt-1 text-xs leading-5 text-muted" }, "按 DESIGN.md 扩展颜色、字体和形状变量;旧 --color-* 会继续兼容。")
7121
7120
  ], -1)),
7122
- e("div", cb, [
7121
+ e("div", db, [
7123
7122
  e("button", {
7124
7123
  class: "theme-icon-btn",
7125
7124
  type: "button",
@@ -7137,7 +7136,7 @@ Scope:${u}
7137
7136
  ])
7138
7137
  ]),
7139
7138
  s[102] || (s[102] = e("p", { class: "theme-section-title" }, "预设主题", -1)),
7140
- e("div", db, [
7139
+ e("div", pb, [
7141
7140
  (v(!0), f(D, null, N(i(He), (l) => (v(), f("button", {
7142
7141
  key: l.id,
7143
7142
  class: A(["theme-scheme-btn", { active: i(P) === l.id }]),
@@ -7147,13 +7146,13 @@ Scope:${u}
7147
7146
  class: "theme-swatch",
7148
7147
  style: Oe({ "--swatch-color": l.designColors.primary })
7149
7148
  }, null, 4),
7150
- e("span", vb, [
7149
+ e("span", fb, [
7151
7150
  e("b", null, c(i(st)(l)), 1),
7152
7151
  e("small", null, c(i(_t)(l)), 1)
7153
7152
  ])
7154
- ], 10, pb))), 128))
7153
+ ], 10, vb))), 128))
7155
7154
  ]),
7156
- e("div", fb, [
7155
+ e("div", mb, [
7157
7156
  e("button", {
7158
7157
  class: "theme-file-btn",
7159
7158
  onClick: s[10] || (s[10] = //@ts-ignore
@@ -7177,7 +7176,7 @@ Scope:${u}
7177
7176
  }, null, 544)
7178
7177
  ]),
7179
7178
  s[103] || (s[103] = e("p", { class: "theme-section-title" }, "设计系统颜色", -1)),
7180
- e("div", mb, [
7179
+ e("div", gb, [
7181
7180
  (v(!0), f(D, null, N(i(o), (l) => (v(), f("label", {
7182
7181
  key: l.key,
7183
7182
  class: "theme-color-field"
@@ -7186,7 +7185,7 @@ Scope:${u}
7186
7185
  type: "color",
7187
7186
  value: i(de)[l.key],
7188
7187
  onInput: (S) => i(gs)(l.key, S.target.value)
7189
- }, null, 40, gb),
7188
+ }, null, 40, hb),
7190
7189
  e("span", null, [
7191
7190
  e("b", null, c(l.label), 1),
7192
7191
  e("small", null, c(l.description), 1)
@@ -7195,11 +7194,11 @@ Scope:${u}
7195
7194
  type: "text",
7196
7195
  value: i(de)[l.key],
7197
7196
  onInput: (S) => i(gs)(l.key, S.target.value)
7198
- }, null, 40, hb)
7197
+ }, null, 40, yb)
7199
7198
  ]))), 128))
7200
7199
  ]),
7201
7200
  s[104] || (s[104] = e("p", { class: "theme-section-title" }, "字体", -1)),
7202
- e("div", yb, [
7201
+ e("div", bb, [
7203
7202
  (v(!0), f(D, null, N(i(a), (l) => {
7204
7203
  var S;
7205
7204
  return v(), f("label", {
@@ -7214,12 +7213,12 @@ Scope:${u}
7214
7213
  type: "text",
7215
7214
  value: (S = i(He).find((O) => O.id === i(P))) == null ? void 0 : S.typography[l.key],
7216
7215
  onInput: (O) => i(hs)(l.key, O.target.value)
7217
- }, null, 40, bb)
7216
+ }, null, 40, wb)
7218
7217
  ]);
7219
7218
  }), 128))
7220
7219
  ]),
7221
7220
  s[105] || (s[105] = e("p", { class: "theme-section-title" }, "形状", -1)),
7222
- e("div", wb, [
7221
+ e("div", Sb, [
7223
7222
  (v(!0), f(D, null, N(i(r), (l) => {
7224
7223
  var S;
7225
7224
  return v(), f("label", {
@@ -7234,12 +7233,12 @@ Scope:${u}
7234
7233
  type: "text",
7235
7234
  value: (S = i(He).find((O) => O.id === i(P))) == null ? void 0 : S.radius[l.key],
7236
7235
  onInput: (O) => i(pa)(l.key, O.target.value)
7237
- }, null, 40, Sb)
7236
+ }, null, 40, Cb)
7238
7237
  ]);
7239
7238
  }), 128))
7240
7239
  ]),
7241
7240
  s[106] || (s[106] = e("p", { class: "theme-section-title" }, "内核兼容颜色", -1)),
7242
- e("div", Cb, [
7241
+ e("div", kb, [
7243
7242
  (v(!0), f(D, null, N(i(n), (l) => (v(), f("label", {
7244
7243
  key: l.key,
7245
7244
  class: "theme-color-field"
@@ -7248,7 +7247,7 @@ Scope:${u}
7248
7247
  type: "color",
7249
7248
  value: i(_)[l.key],
7250
7249
  onInput: (S) => i(ms)(l.key, S.target.value)
7251
- }, null, 40, kb),
7250
+ }, null, 40, xb),
7252
7251
  e("span", null, [
7253
7252
  e("b", null, c(l.label), 1),
7254
7253
  e("small", null, c(l.description), 1)
@@ -7257,7 +7256,7 @@ Scope:${u}
7257
7256
  type: "text",
7258
7257
  value: i(_)[l.key],
7259
7258
  onInput: (S) => i(ms)(l.key, S.target.value)
7260
- }, null, 40, xb)
7259
+ }, null, 40, Ib)
7261
7260
  ]))), 128))
7262
7261
  ])
7263
7262
  ])) : C("", !0),
@@ -7274,7 +7273,7 @@ Scope:${u}
7274
7273
  ])
7275
7274
  ])
7276
7275
  ])),
7277
- fe.value === "testCases" ? (v(), ze(qg, {
7276
+ fe.value === "testCases" ? (v(), ze(Zg, {
7278
7277
  key: 1,
7279
7278
  lang: i(d),
7280
7279
  "current-screen-id": i(h),
@@ -7282,7 +7281,7 @@ Scope:${u}
7282
7281
  "author-name": i(X),
7283
7282
  "onUpdate:authorName": s[13] || (s[13] = (l) => X.value = l),
7284
7283
  onClose: pd
7285
- }, null, 8, ["lang", "current-screen-id", "current-state-id", "author-name"])) : fe.value === "bugs" && !ge.value ? (v(), ze(eg, {
7284
+ }, null, 8, ["lang", "current-screen-id", "current-state-id", "author-name"])) : fe.value === "bugs" && !ge.value ? (v(), ze(tg, {
7286
7285
  key: 2,
7287
7286
  onClose: $i
7288
7287
  })) : C("", !0),
@@ -7290,9 +7289,9 @@ Scope:${u}
7290
7289
  key: 3,
7291
7290
  class: A(["prototype-stage mx-auto flex w-full flex-col gap-6 px-4 py-6 lg:px-8", ne.value === "overview" ? "max-w-none" : ne.value === "interactive" && i(I) === "pc" ? "max-w-[1504px]" : "max-w-7xl"])
7292
7291
  }, [
7293
- ge.value ? C("", !0) : (v(), f("section", Ib, [
7294
- ne.value === "interactive" ? (v(), f("div", $b, [
7295
- e("div", _b, [
7292
+ ge.value ? C("", !0) : (v(), f("section", $b, [
7293
+ ne.value === "interactive" ? (v(), f("div", _b, [
7294
+ e("div", Pb, [
7296
7295
  (v(), f(D, null, N(si, (l) => e("button", {
7297
7296
  key: l.source,
7298
7297
  type: "button",
@@ -7302,13 +7301,13 @@ Scope:${u}
7302
7301
  }, [
7303
7302
  (v(), ze(fo(l.icon), { "aria-hidden": "true" })),
7304
7303
  e("span", null, c(l.label), 1)
7305
- ], 10, Pb)), 64))
7304
+ ], 10, Db)), 64))
7306
7305
  ]),
7307
7306
  e("button", {
7308
7307
  class: "page-description-summary",
7309
7308
  type: "button",
7310
7309
  onClick: s[14] || (s[14] = (l) => {
7311
- _n.value = !0, cn.value = "";
7310
+ _n.value = !0, un.value = "";
7312
7311
  })
7313
7312
  }, [
7314
7313
  e("p", null, [
@@ -7320,15 +7319,15 @@ Scope:${u}
7320
7319
  K(c(At.value.features), 1)
7321
7320
  ])
7322
7321
  ])
7323
- ])) : (v(), f("p", Db, c(i(ko)("heroCopy", i(Xe).subtitle)), 1))
7322
+ ])) : (v(), f("p", Ab, c(i(ko)("heroCopy", i(Xe).subtitle)), 1))
7324
7323
  ])),
7325
- e("div", Ab, [
7324
+ e("div", Eb, [
7326
7325
  ne.value === "interactive" && !ge.value ? (v(), f("aside", {
7327
7326
  key: 0,
7328
7327
  class: A(["apple-side-nav interactive-side-nav", {
7329
7328
  "can-scroll-up": jo.value,
7330
7329
  "can-scroll-down": Uo.value,
7331
- collapsed: pn.value
7330
+ collapsed: dn.value
7332
7331
  }])
7333
7332
  }, [
7334
7333
  e("button", {
@@ -7337,9 +7336,9 @@ Scope:${u}
7337
7336
  onClick: hi
7338
7337
  }, [
7339
7338
  V(i(Ud), { class: "h-4 w-4" }),
7340
- K(" " + c(pn.value ? "展开导航" : "收起导航") + " (N) ", 1)
7339
+ K(" " + c(dn.value ? "展开导航" : "收起导航") + " (N) ", 1)
7341
7340
  ]),
7342
- pn.value ? C("", !0) : (v(), f("div", Eb, [
7341
+ dn.value ? C("", !0) : (v(), f("div", Tb, [
7343
7342
  e("div", {
7344
7343
  ref_key: "interactiveSideNavRef",
7345
7344
  ref: ql,
@@ -7356,31 +7355,31 @@ Scope:${u}
7356
7355
  "aria-hidden": "true"
7357
7356
  }, c(l.platform === "pc" ? "P" : "M"), 3),
7358
7357
  (v(), ze(fo(l.icon), { class: "h-4 w-4" })),
7359
- i(xn)(l.id) ? (v(), f("span", {
7358
+ i(kn)(l.id) ? (v(), f("span", {
7360
7359
  key: 0,
7361
7360
  class: "screen-highlight-bookmark",
7362
7361
  style: Oe({ backgroundColor: i(ca)(l.id) }),
7363
7362
  "aria-hidden": "true"
7364
7363
  }, null, 4)) : C("", !0),
7365
- e("span", Nb, c(l.code) + " " + c(l.title), 1),
7366
- e("div", Rb, [
7367
- i(G)(l.id) ? (v(), f("span", Ob, c(i(G)(l.id)), 1)) : C("", !0)
7364
+ e("span", Rb, c(l.code) + " " + c(l.title), 1),
7365
+ e("div", Ob, [
7366
+ i(z)(l.id) ? (v(), f("span", Bb, c(i(z)(l.id)), 1)) : C("", !0)
7368
7367
  ])
7369
- ], 10, Tb))), 128))
7368
+ ], 10, Nb))), 128))
7370
7369
  ], 544),
7371
- jo.value ? (v(), f("svg", Bb, [...s[109] || (s[109] = [
7370
+ jo.value ? (v(), f("svg", jb, [...s[109] || (s[109] = [
7372
7371
  e("path", { d: "M12 19V5M5 12l7-7 7 7" }, null, -1)
7373
7372
  ])])) : C("", !0),
7374
- Uo.value ? (v(), f("svg", jb, [...s[110] || (s[110] = [
7373
+ Uo.value ? (v(), f("svg", Ub, [...s[110] || (s[110] = [
7375
7374
  e("path", { d: "M12 5v14M5 12l7 7 7-7" }, null, -1)
7376
7375
  ])])) : C("", !0)
7377
7376
  ]))
7378
7377
  ], 2)) : C("", !0),
7379
- ne.value === "overview" ? (v(), f("aside", Ub, [
7378
+ ne.value === "overview" ? (v(), f("aside", Mb, [
7380
7379
  s[115] || (s[115] = e("p", { class: "px-2 pb-3 text-sm font-semibold text-muted" }, "显示设置", -1)),
7381
- e("div", Mb, [
7380
+ e("div", Vb, [
7382
7381
  s[113] || (s[113] = e("label", { class: "mb-2 block text-xs font-semibold text-muted" }, "每行数量", -1)),
7383
- e("div", Vb, [
7382
+ e("div", Lb, [
7384
7383
  s[111] || (s[111] = e("span", { class: "text-xs text-muted" }, "3", -1)),
7385
7384
  T(e("input", {
7386
7385
  "onUpdate:modelValue": s[15] || (s[15] = (l) => co(In) ? In.value = l : null),
@@ -7399,18 +7398,18 @@ Scope:${u}
7399
7398
  ]
7400
7399
  ]),
7401
7400
  s[112] || (s[112] = e("span", { class: "text-xs text-muted" }, "6", -1)),
7402
- e("strong", Lb, c(i(In)), 1)
7401
+ e("strong", Fb, c(i(In)), 1)
7403
7402
  ])
7404
7403
  ]),
7405
- e("div", Fb, [
7404
+ e("div", Gb, [
7406
7405
  s[114] || (s[114] = e("label", { class: "mb-2 block text-xs font-semibold text-muted" }, "缩放", -1)),
7407
- e("div", Gb, [
7406
+ e("div", zb, [
7408
7407
  e("button", {
7409
7408
  type: "button",
7410
7409
  class: "overview-zoom-btn",
7411
7410
  onClick: s[16] || (s[16] = (l) => fi(-0.06))
7412
7411
  }, "−"),
7413
- e("strong", zb, c(Math.round(i(Yt) * 100)) + "%", 1),
7412
+ e("strong", Hb, c(Math.round(i(Yt) * 100)) + "%", 1),
7414
7413
  e("button", {
7415
7414
  type: "button",
7416
7415
  class: "overview-zoom-btn",
@@ -7426,12 +7425,12 @@ Scope:${u}
7426
7425
  ])
7427
7426
  ])
7428
7427
  ])) : C("", !0),
7429
- ne.value === "flow" ? (v(), f("aside", Hb, [
7430
- e("div", Kb, [
7428
+ ne.value === "flow" ? (v(), f("aside", Kb, [
7429
+ e("div", Jb, [
7431
7430
  s[117] || (s[117] = e("p", { class: "text-sm font-semibold text-muted" }, "主流程", -1)),
7432
7431
  e("button", {
7433
7432
  class: "flex items-center gap-1 rounded-lg bg-soft px-2.5 py-1 text-xs font-medium text-ink hover:bg-canvas transition",
7434
- onClick: s[18] || (s[18] = (l) => be.value = !0)
7433
+ onClick: s[18] || (s[18] = (l) => ye.value = !0)
7435
7434
  }, [...s[116] || (s[116] = [
7436
7435
  e("svg", {
7437
7436
  class: "h-3 w-3",
@@ -7454,19 +7453,19 @@ Scope:${u}
7454
7453
  onClick: (S) => i(ju)(l.id)
7455
7454
  }, [
7456
7455
  s[118] || (s[118] = e("span", { class: "flow-dot" }, null, -1)),
7457
- e("span", Wb, [
7456
+ e("span", Yb, [
7458
7457
  e("b", null, c(l.title), 1),
7459
7458
  e("small", null, c(l.subtitle), 1)
7460
7459
  ])
7461
- ], 10, Jb))), 128))
7460
+ ], 10, Wb))), 128))
7462
7461
  ])) : C("", !0),
7463
7462
  e("section", {
7464
7463
  ref_key: "overviewStageRef",
7465
7464
  ref: Bs,
7466
7465
  class: "flex-1 relative"
7467
7466
  }, [
7468
- ne.value === "flow" ? (v(), f("div", Yb, [
7469
- e("div", Xb, [
7467
+ ne.value === "flow" ? (v(), f("div", Xb, [
7468
+ e("div", qb, [
7470
7469
  e("button", {
7471
7470
  type: "button",
7472
7471
  onClick: s[19] || (s[19] = (l) => i(Rl)(0.06))
@@ -7544,10 +7543,10 @@ Scope:${u}
7544
7543
  "overview-desktop-scale": ne.value === "overview" && l.platform === "pc"
7545
7544
  }])
7546
7545
  }, [
7547
- ne.value === "interactive" && !ge.value && l.platform === "mobile" && i(z).length && i(E) ? (v(), ze(Xd, {
7546
+ ne.value === "interactive" && !ge.value && l.platform === "mobile" && i(G).length && i(E) ? (v(), ze(Xd, {
7548
7547
  key: 0,
7549
7548
  title: i(R)("prototypeStateSwitch"),
7550
- options: i(z),
7549
+ options: i(G),
7551
7550
  "active-id": i(E),
7552
7551
  "count-for-state": (S) => i(m)(i(h), S),
7553
7552
  "highlighted-colors": i(fs),
@@ -7556,7 +7555,7 @@ Scope:${u}
7556
7555
  e("div", {
7557
7556
  class: A(l.platform === "pc" ? "desktop-frame" : "phone-screen")
7558
7557
  }, [
7559
- l.platform === "mobile" && !ge.value ? (v(), f("div", qb, [...s[120] || (s[120] = [
7558
+ l.platform === "mobile" && !ge.value ? (v(), f("div", Zb, [...s[120] || (s[120] = [
7560
7559
  e("span", null, "9:41", -1),
7561
7560
  e("span", null, "86%", -1)
7562
7561
  ])])) : C("", !0),
@@ -7568,9 +7567,9 @@ Scope:${u}
7568
7567
  }]),
7569
7568
  onClickCapture: (S) => !ge.value && i(ma)(S, l.id)
7570
7569
  }, [
7571
- e("div", Qb, [
7570
+ e("div", e1, [
7572
7571
  V(qo, { screen: l }, null, 8, ["screen"]),
7573
- ne.value === "interactive" && !ge.value && !vt.value && i(B) === "annotations" && i(le) ? (v(), f("div", e1, [
7572
+ ne.value === "interactive" && !ge.value && !vt.value && i(B) === "annotations" && i(le) ? (v(), f("div", t1, [
7574
7573
  (v(!0), f(D, null, N(i(Pt), (S, O) => {
7575
7574
  var Z;
7576
7575
  return v(), f("div", {
@@ -7591,13 +7590,13 @@ Scope:${u}
7591
7590
  type: "button",
7592
7591
  title: "长按抓取后拖动位置",
7593
7592
  disabled: Zn.value.has(S.id),
7594
- onClick: Ce((Le) => Dc(S), ["stop"]),
7595
- onPointerdown: Ce((Le) => Ec(S, Le), ["stop"]),
7593
+ onClick: xe((Le) => Dc(S), ["stop"]),
7594
+ onPointerdown: xe((Le) => Ec(S, Le), ["stop"]),
7596
7595
  onPointermove: Tc,
7597
7596
  onPointerup: Nc,
7598
7597
  onPointercancel: Rc
7599
- }, c(O + 1), 41, n1)
7600
- ], 46, t1);
7598
+ }, c(O + 1), 41, o1)
7599
+ ], 46, n1);
7601
7600
  }), 128)),
7602
7601
  yc.value ? (v(), f("div", {
7603
7602
  key: 0,
@@ -7611,7 +7610,7 @@ Scope:${u}
7611
7610
  ])], 4)) : C("", !0)
7612
7611
  ])) : C("", !0)
7613
7612
  ])
7614
- ], 42, Zb),
7613
+ ], 42, Qb),
7615
7614
  l.platform === "mobile" && l.hasTabBar ? (v(), ze(zd, {
7616
7615
  key: 1,
7617
7616
  active: ne.value === "interactive" ? i(se) : l.id,
@@ -7628,7 +7627,7 @@ Scope:${u}
7628
7627
  class: A(["platform-badge is-small", l.platform === "pc" ? "is-pc" : "is-mobile"]),
7629
7628
  "aria-hidden": "true"
7630
7629
  }, c(l.platform === "pc" ? "P" : "M"), 3),
7631
- l.platform === "mobile" ? (v(), f("br", o1)) : C("", !0),
7630
+ l.platform === "mobile" ? (v(), f("br", s1)) : C("", !0),
7632
7631
  K(" " + c(l.code) + " · " + c(l.title), 1),
7633
7632
  l.stateLabel ? (v(), f(D, { key: 1 }, [
7634
7633
  K(" · " + c(l.stateLabel), 1)
@@ -7653,7 +7652,7 @@ Scope:${u}
7653
7652
  K(" " + c(i(ae) ? i(R)("annotationExpand") : i(R)("annotationCollapse")) + " (C) ", 1)
7654
7653
  ]),
7655
7654
  i(ae) ? C("", !0) : (v(), f(D, { key: 0 }, [
7656
- e("div", s1, [
7655
+ e("div", a1, [
7657
7656
  e("div", null, [
7658
7657
  e("p", null, c(i(R)("annotationPanelTitle")), 1),
7659
7658
  e("span", null, [
@@ -7663,9 +7662,9 @@ Scope:${u}
7663
7662
  ], 64)) : C("", !0)
7664
7663
  ])
7665
7664
  ]),
7666
- e("strong", null, c(i(B) === "annotations" ? i(Pt).length : i(xe) ? 1 : 0), 1)
7665
+ e("strong", null, c(i(B) === "annotations" ? i(Pt).length : i(ke) ? 1 : 0), 1)
7667
7666
  ]),
7668
- e("div", a1, [
7667
+ e("div", l1, [
7669
7668
  e("button", {
7670
7669
  type: "button",
7671
7670
  class: A({ active: i(B) === "annotations" }),
@@ -7679,12 +7678,12 @@ Scope:${u}
7679
7678
  })
7680
7679
  }, c(i(R)("annotationTabDescription")), 3)
7681
7680
  ]),
7682
- i(B) === "annotations" ? (v(), f("div", l1, [
7681
+ i(B) === "annotations" ? (v(), f("div", i1, [
7683
7682
  e("button", {
7684
7683
  type: "button",
7685
7684
  class: A({ active: i(rt) }),
7686
7685
  onClick: s[33] || (s[33] = //@ts-ignore
7687
- (...l) => i(rn) && i(rn)(...l))
7686
+ (...l) => i(xn) && i(xn)(...l))
7688
7687
  }, c(i(rt) ? i(R)("annotationCancelAdd") : i(R)("annotationAdd")), 3),
7689
7688
  e("button", {
7690
7689
  type: "button",
@@ -7694,18 +7693,18 @@ Scope:${u}
7694
7693
  type: "button",
7695
7694
  disabled: i(he) === "syncing",
7696
7695
  onClick: s[35] || (s[35] = (l) => i(Y)())
7697
- }, c(i(R)("annotationRefresh")), 9, i1),
7696
+ }, c(i(R)("annotationRefresh")), 9, r1),
7698
7697
  e("button", {
7699
7698
  type: "button",
7700
7699
  onClick: s[36] || (s[36] = //@ts-ignore
7701
7700
  (...l) => i(pt) && i(pt)(...l))
7702
7701
  }, c(i(R)("annotationExport")), 1)
7703
- ])) : (v(), f("div", r1, [
7702
+ ])) : (v(), f("div", u1, [
7704
7703
  e("button", {
7705
7704
  type: "button",
7706
7705
  disabled: i(he) === "syncing",
7707
7706
  onClick: s[37] || (s[37] = (l) => i(Re)())
7708
- }, c(i(R)("annotationRefresh")), 9, u1),
7707
+ }, c(i(R)("annotationRefresh")), 9, c1),
7709
7708
  e("button", {
7710
7709
  type: "button",
7711
7710
  onClick: s[38] || (s[38] = //@ts-ignore
@@ -7713,28 +7712,28 @@ Scope:${u}
7713
7712
  }, c(i(R)("pageDescriptionExport")), 1),
7714
7713
  e("button", {
7715
7714
  type: "button",
7716
- class: A({ active: dn.value }),
7715
+ class: A({ active: cn.value }),
7717
7716
  onClick: bc
7718
- }, c(i(xe) ? "编辑" : "新增"), 3)
7717
+ }, c(i(ke) ? "编辑" : "新增"), 3)
7719
7718
  ])),
7720
7719
  e("div", {
7721
7720
  class: A(["annotation-sync-row", `is-${i(he)}`])
7722
7721
  }, [
7723
- e("span", null, c(i(ke) ? i(Ae) : i(R)("annotationRemoteDisabled")), 1)
7722
+ e("span", null, c(i(Ce) ? i(Ae) : i(R)("annotationRemoteDisabled")), 1)
7724
7723
  ], 2),
7725
- e("label", c1, [
7724
+ e("label", d1, [
7726
7725
  e("span", null, c(i(R)("annotationAuthorName")), 1),
7727
7726
  T(e("input", {
7728
7727
  "onUpdate:modelValue": s[39] || (s[39] = (l) => co(X) ? X.value = l : null),
7729
7728
  type: "text",
7730
7729
  placeholder: i(R)("annotationAuthorPlaceholder")
7731
- }, null, 8, d1), [
7730
+ }, null, 8, p1), [
7732
7731
  [H, i(X)]
7733
7732
  ])
7734
7733
  ]),
7735
- e("label", p1, [
7734
+ e("label", v1, [
7736
7735
  e("span", null, c(i(R)("annotationPollingInterval")), 1),
7737
- e("div", v1, [
7736
+ e("div", f1, [
7738
7737
  T(e("input", {
7739
7738
  "onUpdate:modelValue": s[40] || (s[40] = (l) => co(je) ? je.value = l : null),
7740
7739
  min: "10",
@@ -7755,12 +7754,12 @@ Scope:${u}
7755
7754
  disabled: Number(i(je)) === i(Ee),
7756
7755
  onClick: s[41] || (s[41] = //@ts-ignore
7757
7756
  (...l) => i(Wt) && i(Wt)(...l))
7758
- }, c(i(R)("annotationPollingSave")), 9, f1)
7757
+ }, c(i(R)("annotationPollingSave")), 9, m1)
7759
7758
  ])
7760
7759
  ]),
7761
- i(J) ? (v(), f("p", m1, c(i(J)), 1)) : C("", !0),
7762
- i(B) === "annotations" ? (v(), f("div", g1, [
7763
- i(Pt).length ? C("", !0) : (v(), f("p", h1, c(i(R)("annotationEmpty")), 1)),
7760
+ i(J) ? (v(), f("p", g1, c(i(J)), 1)) : C("", !0),
7761
+ i(B) === "annotations" ? (v(), f("div", h1, [
7762
+ i(Pt).length ? C("", !0) : (v(), f("p", y1, c(i(R)("annotationEmpty")), 1)),
7764
7763
  (v(!0), f(D, null, N(i(Pt), (l, S) => (v(), f("section", {
7765
7764
  key: l.id,
7766
7765
  onMouseenter: (O) => Bc(l),
@@ -7772,38 +7771,38 @@ Scope:${u}
7772
7771
  e("h3", null, c(l.featureName), 1),
7773
7772
  e("p", null, c(l.featureDescription), 1),
7774
7773
  e("small", null, c(l.specialNote), 1),
7775
- l.authorName || l.updatedAt ? (v(), f("small", b1, [
7774
+ l.authorName || l.updatedAt ? (v(), f("small", w1, [
7776
7775
  K(c(l.authorName || "未署名"), 1),
7777
7776
  Aa(l.updatedAt) ? (v(), f(D, { key: 0 }, [
7778
7777
  K(" · " + c(Aa(l.updatedAt)), 1)
7779
7778
  ], 64)) : C("", !0)
7780
7779
  ])) : C("", !0)
7781
7780
  ]),
7782
- e("div", w1, [
7781
+ e("div", S1, [
7783
7782
  e("button", {
7784
7783
  class: "annotation-list-edit",
7785
7784
  type: "button",
7786
7785
  onClick: (O) => i(ws)(l.id)
7787
- }, c(i(R)("editProfile")), 9, S1),
7786
+ }, c(i(R)("editProfile")), 9, C1),
7788
7787
  e("button", {
7789
7788
  class: "annotation-list-delete annotation-delete-btn",
7790
7789
  type: "button",
7791
7790
  disabled: !i(X).trim(),
7792
7791
  title: i(X).trim() ? "" : "请先输入昵称以删除注释",
7793
7792
  onClick: (O) => i(p)(l.id)
7794
- }, c(i(R)("annotationDelete")), 9, C1)
7793
+ }, c(i(R)("annotationDelete")), 9, k1)
7795
7794
  ])
7796
- ], 40, y1))), 128))
7797
- ])) : (v(), f("div", k1, [
7798
- i(xe) ? (v(), f(D, { key: 1 }, [
7799
- Us.value ? (v(), f("small", I1, c(Us.value), 1)) : C("", !0),
7795
+ ], 40, b1))), 128))
7796
+ ])) : (v(), f("div", x1, [
7797
+ i(ke) ? (v(), f(D, { key: 1 }, [
7798
+ Us.value ? (v(), f("small", $1, c(Us.value), 1)) : C("", !0),
7800
7799
  (v(!0), f(D, null, N(En.value, (l) => (v(), f("section", {
7801
7800
  key: l.id
7802
7801
  }, [
7803
7802
  e("h3", null, c(l.label), 1),
7804
7803
  e("p", null, c(l.value), 1)
7805
7804
  ]))), 128))
7806
- ], 64)) : (v(), f("p", x1, c(i(R)("pageDescriptionEmpty")), 1))
7805
+ ], 64)) : (v(), f("p", I1, c(i(R)("pageDescriptionEmpty")), 1))
7807
7806
  ]))
7808
7807
  ], 64))
7809
7808
  ], 2)) : C("", !0),
@@ -7822,8 +7821,8 @@ Scope:${u}
7822
7821
  K(" " + c(Xt.value ? "展开数据源" : "收起数据源") + " (D) ", 1)
7823
7822
  ]),
7824
7823
  Xt.value ? C("", !0) : (v(), f(D, { key: 0 }, [
7825
- e("div", $1, [
7826
- e("span", _1, c(i(ue) === "warning" || i(ue) === "conflict" ? "⚠" : "●"), 1),
7824
+ e("div", _1, [
7825
+ e("span", P1, c(i(ue) === "warning" || i(ue) === "conflict" ? "⚠" : "●"), 1),
7827
7826
  e("strong", null, c(ec.value), 1),
7828
7827
  e("small", null, [
7829
7828
  K("· " + c(qu.value), 1),
@@ -7840,7 +7839,7 @@ Scope:${u}
7840
7839
  disabled: i(W) === "running",
7841
7840
  onClick: s[44] || (s[44] = //@ts-ignore
7842
7841
  (...l) => i(bt) && i(bt)(...l))
7843
- }, c(i(W) === "running" ? `${i($e).current}/${i($e).total}` : Qu.value ? "检查远端资料" : "初始化到 Gitee"), 9, P1)) : C("", !0),
7842
+ }, c(i(W) === "running" ? `${i($e).current}/${i($e).total}` : Qu.value ? "检查远端资料" : "初始化到 Gitee"), 9, D1)) : C("", !0),
7844
7843
  e("button", {
7845
7844
  class: "environment-check-trigger",
7846
7845
  type: "button",
@@ -7851,9 +7850,9 @@ Scope:${u}
7851
7850
  Is.value ? (v(), f("div", {
7852
7851
  key: 6,
7853
7852
  class: "environment-check-backdrop",
7854
- onClick: s[47] || (s[47] = Ce((l) => Is.value = !1, ["self"]))
7853
+ onClick: s[47] || (s[47] = xe((l) => Is.value = !1, ["self"]))
7855
7854
  }, [
7856
- e("section", D1, [
7855
+ e("section", A1, [
7857
7856
  e("header", null, [
7858
7857
  e("div", null, [
7859
7858
  s[122] || (s[122] = e("h2", { id: "environment-check-title" }, "环境变量检查", -1)),
@@ -7872,7 +7871,7 @@ Scope:${u}
7872
7871
  onClick: s[46] || (s[46] = (l) => Is.value = !1)
7873
7872
  }, "×")
7874
7873
  ]),
7875
- e("div", A1, [
7874
+ e("div", E1, [
7876
7875
  (v(!0), f(D, null, N(wa.value, (l) => (v(), f("section", {
7877
7876
  key: l.id
7878
7877
  }, [
@@ -7881,7 +7880,7 @@ Scope:${u}
7881
7880
  key: S.name,
7882
7881
  class: A(["environment-check-row", { missing: !S.configured }])
7883
7882
  }, [
7884
- e("span", E1, c(S.configured ? "✓" : "✕"), 1),
7883
+ e("span", T1, c(S.configured ? "✓" : "✕"), 1),
7885
7884
  e("code", null, c(S.name), 1),
7886
7885
  e("b", null, c(S.configured ? "已配置" : "请配置"), 1)
7887
7886
  ], 2))), 128))
@@ -7925,25 +7924,25 @@ Scope:${u}
7925
7924
  ], 2)) : C("", !0),
7926
7925
  V(Ya, { name: "shortcut-toast" }, {
7927
7926
  default: Xa(() => [
7928
- fe.value === "prototype" && Ia.value && !ge.value && !vt.value ? (v(), f("div", T1, " 按快捷键 P 可以进入/退出演示模式 ")) : C("", !0)
7927
+ fe.value === "prototype" && Ia.value && !ge.value && !vt.value ? (v(), f("div", N1, " 按快捷键 P 可以进入/退出演示模式 ")) : C("", !0)
7929
7928
  ]),
7930
7929
  _: 1
7931
7930
  }),
7932
7931
  V(Ya, { name: "shortcut-toast" }, {
7933
7932
  default: Xa(() => [
7934
- $a.value && !ge.value && !vt.value ? (v(), f("div", N1, " 还未配置产品文档地址,请在 PrototypeProductDefinition.document.url 中配置 ")) : C("", !0)
7933
+ $a.value && !ge.value && !vt.value ? (v(), f("div", R1, " 还未配置产品文档地址,请在 PrototypeProductDefinition.document.url 中配置 ")) : C("", !0)
7935
7934
  ]),
7936
7935
  _: 1
7937
7936
  }),
7938
- fe.value === "prototype" && dn.value && !ge.value ? (v(), f("div", {
7937
+ fe.value === "prototype" && cn.value && !ge.value ? (v(), f("div", {
7939
7938
  key: 8,
7940
7939
  class: "page-description-dialog-backdrop",
7941
- onClick: Ce(Pa, ["self"])
7940
+ onClick: xe(Pa, ["self"])
7942
7941
  }, [
7943
- e("section", R1, [
7944
- e("div", O1, [
7942
+ e("section", O1, [
7943
+ e("div", B1, [
7945
7944
  e("div", null, [
7946
- e("p", null, c(i(xe) ? "编辑页面描述" : "新增页面描述"), 1),
7945
+ e("p", null, c(i(ke) ? "编辑页面描述" : "新增页面描述"), 1),
7947
7946
  e("span", null, [
7948
7947
  K(c(i(Xe).code) + " · " + c(i(Xe).title), 1),
7949
7948
  so.value ? (v(), f(D, { key: 0 }, [
@@ -7959,11 +7958,11 @@ Scope:${u}
7959
7958
  ]),
7960
7959
  e("form", {
7961
7960
  class: "page-description-form",
7962
- onSubmit: Ce(wc, ["prevent"])
7961
+ onSubmit: xe(wc, ["prevent"])
7963
7962
  }, [
7964
- i(xe) ? Us.value ? (v(), f("small", j1, c(Us.value), 1)) : C("", !0) : (v(), f("p", B1, c(i(R)("pageDescriptionEmpty")), 1)),
7965
- e("div", U1, [
7966
- e("div", M1, [
7963
+ i(ke) ? Us.value ? (v(), f("small", U1, c(Us.value), 1)) : C("", !0) : (v(), f("p", j1, c(i(R)("pageDescriptionEmpty")), 1)),
7964
+ e("div", M1, [
7965
+ e("div", V1, [
7967
7966
  (v(), f(D, null, N(si, (l) => e("button", {
7968
7967
  key: l.source,
7969
7968
  type: "button",
@@ -7975,7 +7974,7 @@ Scope:${u}
7975
7974
  }, [
7976
7975
  (v(), ze(fo(l.icon), { "aria-hidden": "true" })),
7977
7976
  e("span", null, c(l.label), 1)
7978
- ], 10, V1)), 64))
7977
+ ], 10, L1)), 64))
7979
7978
  ]),
7980
7979
  e("small", null, c(Uc.value), 1)
7981
7980
  ]),
@@ -7983,7 +7982,7 @@ Scope:${u}
7983
7982
  class: "page-description-editor-fields",
7984
7983
  disabled: i(Pe) === "local-seed"
7985
7984
  }, [
7986
- e("label", F1, [
7985
+ e("label", G1, [
7987
7986
  T(e("input", {
7988
7987
  "onUpdate:modelValue": s[49] || (s[49] = (l) => i(k).highlighted = l),
7989
7988
  type: "checkbox"
@@ -7992,9 +7991,9 @@ Scope:${u}
7992
7991
  ]),
7993
7992
  s[125] || (s[125] = e("span", null, "重点标注当前状态页", -1))
7994
7993
  ]),
7995
- i(k).highlighted ? (v(), f("section", G1, [
7994
+ i(k).highlighted ? (v(), f("section", z1, [
7996
7995
  s[126] || (s[126] = e("span", null, "标记颜色", -1)),
7997
- e("div", z1, [
7996
+ e("div", H1, [
7998
7997
  (v(!0), f(D, null, N([...Vl, ..._s.value], (l) => (v(), f("button", {
7999
7998
  key: l,
8000
7999
  type: "button",
@@ -8003,16 +8002,16 @@ Scope:${u}
8003
8002
  "aria-label": `选择颜色 ${l}`,
8004
8003
  title: l,
8005
8004
  onClick: (S) => sc(l)
8006
- }, null, 14, H1))), 128))
8005
+ }, null, 14, K1))), 128))
8007
8006
  ]),
8008
- e("div", K1, [
8007
+ e("div", J1, [
8009
8008
  T(e("input", {
8010
8009
  "onUpdate:modelValue": s[50] || (s[50] = (l) => $s.value = l),
8011
8010
  type: "text",
8012
8011
  maxlength: "7",
8013
8012
  placeholder: "#12b981",
8014
- onKeydown: Ma(Ce(zl, ["prevent"]), ["enter"])
8015
- }, null, 40, J1), [
8013
+ onKeydown: Ma(xe(zl, ["prevent"]), ["enter"])
8014
+ }, null, 40, W1), [
8016
8015
  [H, $s.value]
8017
8016
  ]),
8018
8017
  e("button", {
@@ -8020,14 +8019,14 @@ Scope:${u}
8020
8019
  onClick: zl
8021
8020
  }, "新增")
8022
8021
  ]),
8023
- To.value ? (v(), f("small", W1, c(To.value), 1)) : C("", !0)
8022
+ To.value ? (v(), f("small", Y1, c(To.value), 1)) : C("", !0)
8024
8023
  ])) : C("", !0),
8025
8024
  e("label", null, [
8026
8025
  e("span", null, c(i(R)("pageDescriptionPurpose")), 1),
8027
8026
  T(e("textarea", {
8028
8027
  "onUpdate:modelValue": s[51] || (s[51] = (l) => i(k).purpose = l),
8029
8028
  placeholder: i(R)("pageDescriptionPurposePlaceholder")
8030
- }, null, 8, Y1), [
8029
+ }, null, 8, X1), [
8031
8030
  [H, i(k).purpose]
8032
8031
  ])
8033
8032
  ]),
@@ -8036,7 +8035,7 @@ Scope:${u}
8036
8035
  T(e("textarea", {
8037
8036
  "onUpdate:modelValue": s[52] || (s[52] = (l) => i(k).structure = l),
8038
8037
  placeholder: i(R)("pageDescriptionStructurePlaceholder")
8039
- }, null, 8, X1), [
8038
+ }, null, 8, q1), [
8040
8039
  [H, i(k).structure]
8041
8040
  ])
8042
8041
  ]),
@@ -8045,7 +8044,7 @@ Scope:${u}
8045
8044
  T(e("textarea", {
8046
8045
  "onUpdate:modelValue": s[53] || (s[53] = (l) => i(k).features = l),
8047
8046
  placeholder: i(R)("pageDescriptionFeaturesPlaceholder")
8048
- }, null, 8, q1), [
8047
+ }, null, 8, Z1), [
8049
8048
  [H, i(k).features]
8050
8049
  ])
8051
8050
  ]),
@@ -8054,7 +8053,7 @@ Scope:${u}
8054
8053
  T(e("textarea", {
8055
8054
  "onUpdate:modelValue": s[54] || (s[54] = (l) => i(k).flowPosition = l),
8056
8055
  placeholder: i(R)("pageDescriptionFlowPlaceholder")
8057
- }, null, 8, Z1), [
8056
+ }, null, 8, Q1), [
8058
8057
  [H, i(k).flowPosition]
8059
8058
  ])
8060
8059
  ]),
@@ -8099,12 +8098,12 @@ Scope:${u}
8099
8098
  T(e("textarea", {
8100
8099
  "onUpdate:modelValue": s[59] || (s[59] = (l) => i(k).developmentNotes = l),
8101
8100
  placeholder: i(R)("pageDescriptionDevelopmentPlaceholder")
8102
- }, null, 8, Q1), [
8101
+ }, null, 8, ew), [
8103
8102
  [H, i(k).developmentNotes]
8104
8103
  ])
8105
8104
  ])
8106
- ], 8, L1),
8107
- Yn.value ? (v(), f("small", ew, c(Yn.value), 1)) : C("", !0),
8105
+ ], 8, F1),
8106
+ Yn.value ? (v(), f("small", tw, c(Yn.value), 1)) : C("", !0),
8108
8107
  e("div", {
8109
8108
  class: A(["page-description-form-actions", { "has-three-actions": i(Pe) === "local-cache" }])
8110
8109
  }, [
@@ -8115,8 +8114,8 @@ Scope:${u}
8115
8114
  i(Pe) === "gitee" ? (v(), f("button", {
8116
8115
  key: 0,
8117
8116
  type: "submit",
8118
- disabled: i(he) === "syncing" || !i(ye).remoteWritable
8119
- }, "保存到 Gitee", 8, tw)) : C("", !0),
8117
+ disabled: i(he) === "syncing" || !i(be).remoteWritable
8118
+ }, "保存到 Gitee", 8, nw)) : C("", !0),
8120
8119
  i(Pe) === "local-cache" ? (v(), f("button", {
8121
8120
  key: 1,
8122
8121
  type: "button",
@@ -8125,9 +8124,9 @@ Scope:${u}
8125
8124
  i(Pe) !== "gitee" ? (v(), f("button", {
8126
8125
  key: 2,
8127
8126
  type: "button",
8128
- disabled: i(he) === "syncing" || !ai.value || !i(ye).remoteWritable,
8127
+ disabled: i(he) === "syncing" || !ai.value || !i(be).remoteWritable,
8129
8128
  onClick: Cc
8130
- }, " 推送到 Gitee ", 8, nw)) : C("", !0)
8129
+ }, " 推送到 Gitee ", 8, ow)) : C("", !0)
8131
8130
  ], 2)
8132
8131
  ], 32)
8133
8132
  ])
@@ -8141,7 +8140,7 @@ Scope:${u}
8141
8140
  onMouseleave: s[62] || (s[62] = //@ts-ignore
8142
8141
  (...l) => i(Jt) && i(Jt)(...l))
8143
8142
  }, [
8144
- e("div", ow, [
8143
+ e("div", sw, [
8145
8144
  e("b", null, c(i(Kt).featureName), 1),
8146
8145
  e("button", {
8147
8146
  class: "annotation-delete-btn",
@@ -8149,15 +8148,15 @@ Scope:${u}
8149
8148
  disabled: !i(X).trim(),
8150
8149
  title: i(X).trim() ? "" : "请先输入昵称以删除注释",
8151
8150
  onClick: s[60] || (s[60] = (l) => i(p)(i(Kt).id))
8152
- }, c(i(R)("annotationDelete")), 9, sw)
8151
+ }, c(i(R)("annotationDelete")), 9, aw)
8153
8152
  ]),
8154
8153
  e("p", null, c(i(Kt).featureDescription), 1),
8155
8154
  e("small", null, c(i(Kt).specialNote), 1)
8156
8155
  ], 36)) : C("", !0),
8157
- fe.value === "prototype" && i(te) && !ge.value ? (v(), f("div", aw, [
8156
+ fe.value === "prototype" && i(te) && !ge.value ? (v(), f("div", lw, [
8158
8157
  e("form", {
8159
8158
  class: "annotation-form",
8160
- onSubmit: s[71] || (s[71] = Ce(
8159
+ onSubmit: s[71] || (s[71] = xe(
8161
8160
  //@ts-ignore
8162
8161
  (...l) => i(bs) && i(bs)(...l),
8163
8162
  ["prevent"]
@@ -8170,7 +8169,7 @@ Scope:${u}
8170
8169
  "onUpdate:modelValue": s[63] || (s[63] = (l) => i(te).featureName = l),
8171
8170
  type: "text",
8172
8171
  placeholder: i(R)("annotationNamePlaceholder")
8173
- }, null, 8, lw), [
8172
+ }, null, 8, iw), [
8174
8173
  [H, i(te).featureName]
8175
8174
  ])
8176
8175
  ]),
@@ -8179,7 +8178,7 @@ Scope:${u}
8179
8178
  T(e("textarea", {
8180
8179
  "onUpdate:modelValue": s[64] || (s[64] = (l) => i(te).featureDescription = l),
8181
8180
  placeholder: i(R)("annotationDescPlaceholder")
8182
- }, null, 8, iw), [
8181
+ }, null, 8, rw), [
8183
8182
  [H, i(te).featureDescription]
8184
8183
  ])
8185
8184
  ]),
@@ -8188,13 +8187,13 @@ Scope:${u}
8188
8187
  T(e("textarea", {
8189
8188
  "onUpdate:modelValue": s[65] || (s[65] = (l) => i(te).specialNote = l),
8190
8189
  placeholder: i(R)("annotationNotePlaceholder")
8191
- }, null, 8, rw), [
8190
+ }, null, 8, uw), [
8192
8191
  [H, i(te).specialNote]
8193
8192
  ])
8194
8193
  ]),
8195
- e("section", uw, [
8194
+ e("section", cw, [
8196
8195
  s[132] || (s[132] = e("span", null, "注释点颜色", -1)),
8197
- e("div", cw, [
8196
+ e("div", dw, [
8198
8197
  (v(!0), f(D, null, N([...i(Ll), ...No.value], (l) => (v(), f("button", {
8199
8198
  key: l,
8200
8199
  type: "button",
@@ -8203,15 +8202,15 @@ Scope:${u}
8203
8202
  "aria-label": `选择颜色 ${l}`,
8204
8203
  title: l,
8205
8204
  onClick: (S) => ya(l, "draft")
8206
- }, null, 14, dw))), 128))
8205
+ }, null, 14, pw))), 128))
8207
8206
  ]),
8208
- e("div", pw, [
8207
+ e("div", vw, [
8209
8208
  T(e("input", {
8210
8209
  "onUpdate:modelValue": s[66] || (s[66] = (l) => Xn.value = l),
8211
8210
  type: "text",
8212
8211
  maxlength: "7",
8213
8212
  placeholder: "#12b981",
8214
- onKeydown: s[67] || (s[67] = Ma(Ce((l) => Ps("draft"), ["prevent"]), ["enter"]))
8213
+ onKeydown: s[67] || (s[67] = Ma(xe((l) => Ps("draft"), ["prevent"]), ["enter"]))
8215
8214
  }, null, 544), [
8216
8215
  [H, Xn.value]
8217
8216
  ]),
@@ -8220,7 +8219,7 @@ Scope:${u}
8220
8219
  onClick: s[68] || (s[68] = (l) => Ps("draft"))
8221
8220
  }, "新增")
8222
8221
  ]),
8223
- Pn.value ? (v(), f("small", vw, c(Pn.value), 1)) : C("", !0)
8222
+ Pn.value ? (v(), f("small", fw, c(Pn.value), 1)) : C("", !0)
8224
8223
  ]),
8225
8224
  e("label", null, [
8226
8225
  e("span", null, c(i(R)("annotationAuthorName")), 1),
@@ -8228,11 +8227,11 @@ Scope:${u}
8228
8227
  "onUpdate:modelValue": s[69] || (s[69] = (l) => co(X) ? X.value = l : null),
8229
8228
  type: "text",
8230
8229
  placeholder: i(R)("annotationAuthorPlaceholder")
8231
- }, null, 8, fw), [
8230
+ }, null, 8, mw), [
8232
8231
  [H, i(X)]
8233
8232
  ])
8234
8233
  ]),
8235
- e("div", mw, [
8234
+ e("div", gw, [
8236
8235
  e("button", {
8237
8236
  type: "button",
8238
8237
  onClick: s[70] || (s[70] = //@ts-ignore
@@ -8241,14 +8240,14 @@ Scope:${u}
8241
8240
  e("button", {
8242
8241
  type: "submit",
8243
8242
  disabled: !i(te).featureName.trim() || !i(te).featureDescription.trim() || !i(te).specialNote.trim() || !i(X).trim()
8244
- }, c(i(R)("annotationSave")), 9, gw)
8243
+ }, c(i(R)("annotationSave")), 9, hw)
8245
8244
  ])
8246
8245
  ], 32)
8247
8246
  ])) : C("", !0),
8248
- fe.value === "prototype" && i(Ye) && !ge.value ? (v(), f("div", hw, [
8247
+ fe.value === "prototype" && i(Ye) && !ge.value ? (v(), f("div", yw, [
8249
8248
  e("form", {
8250
8249
  class: "annotation-form",
8251
- onSubmit: s[80] || (s[80] = Ce(
8250
+ onSubmit: s[80] || (s[80] = xe(
8252
8251
  //@ts-ignore
8253
8252
  (...l) => i(Ss) && i(Ss)(...l),
8254
8253
  ["prevent"]
@@ -8261,7 +8260,7 @@ Scope:${u}
8261
8260
  "onUpdate:modelValue": s[72] || (s[72] = (l) => i(ve).featureName = l),
8262
8261
  type: "text",
8263
8262
  readonly: i(we) === "view"
8264
- }, null, 8, yw), [
8263
+ }, null, 8, bw), [
8265
8264
  [H, i(ve).featureName]
8266
8265
  ])
8267
8266
  ]),
@@ -8270,7 +8269,7 @@ Scope:${u}
8270
8269
  T(e("textarea", {
8271
8270
  "onUpdate:modelValue": s[73] || (s[73] = (l) => i(ve).featureDescription = l),
8272
8271
  readonly: i(we) === "view"
8273
- }, null, 8, bw), [
8272
+ }, null, 8, ww), [
8274
8273
  [H, i(ve).featureDescription]
8275
8274
  ])
8276
8275
  ]),
@@ -8279,13 +8278,13 @@ Scope:${u}
8279
8278
  T(e("textarea", {
8280
8279
  "onUpdate:modelValue": s[74] || (s[74] = (l) => i(ve).specialNote = l),
8281
8280
  readonly: i(we) === "view"
8282
- }, null, 8, ww), [
8281
+ }, null, 8, Sw), [
8283
8282
  [H, i(ve).specialNote]
8284
8283
  ])
8285
8284
  ]),
8286
- i(we) === "edit" ? (v(), f("section", Sw, [
8285
+ i(we) === "edit" ? (v(), f("section", Cw, [
8287
8286
  s[133] || (s[133] = e("span", null, "注释点颜色", -1)),
8288
- e("div", Cw, [
8287
+ e("div", kw, [
8289
8288
  (v(!0), f(D, null, N([...i(Ll), ...No.value], (l) => (v(), f("button", {
8290
8289
  key: l,
8291
8290
  type: "button",
@@ -8294,15 +8293,15 @@ Scope:${u}
8294
8293
  "aria-label": `选择颜色 ${l}`,
8295
8294
  title: l,
8296
8295
  onClick: (S) => ya(l, "editor")
8297
- }, null, 14, kw))), 128))
8296
+ }, null, 14, xw))), 128))
8298
8297
  ]),
8299
- e("div", xw, [
8298
+ e("div", Iw, [
8300
8299
  T(e("input", {
8301
8300
  "onUpdate:modelValue": s[75] || (s[75] = (l) => Xn.value = l),
8302
8301
  type: "text",
8303
8302
  maxlength: "7",
8304
8303
  placeholder: "#12b981",
8305
- onKeydown: s[76] || (s[76] = Ma(Ce((l) => Ps("editor"), ["prevent"]), ["enter"]))
8304
+ onKeydown: s[76] || (s[76] = Ma(xe((l) => Ps("editor"), ["prevent"]), ["enter"]))
8306
8305
  }, null, 544), [
8307
8306
  [H, Xn.value]
8308
8307
  ]),
@@ -8311,15 +8310,15 @@ Scope:${u}
8311
8310
  onClick: s[77] || (s[77] = (l) => Ps("editor"))
8312
8311
  }, "新增")
8313
8312
  ]),
8314
- Pn.value ? (v(), f("small", Iw, c(Pn.value), 1)) : C("", !0)
8313
+ Pn.value ? (v(), f("small", $w, c(Pn.value), 1)) : C("", !0)
8315
8314
  ])) : C("", !0),
8316
- i(we) === "edit" ? (v(), f("label", $w, [
8315
+ i(we) === "edit" ? (v(), f("label", _w, [
8317
8316
  e("span", null, c(i(R)("annotationAuthorName")), 1),
8318
8317
  T(e("input", {
8319
8318
  "onUpdate:modelValue": s[78] || (s[78] = (l) => co(X) ? X.value = l : null),
8320
8319
  type: "text",
8321
8320
  placeholder: i(R)("annotationAuthorPlaceholder")
8322
- }, null, 8, _w), [
8321
+ }, null, 8, Pw), [
8323
8322
  [H, i(X)]
8324
8323
  ])
8325
8324
  ])) : C("", !0),
@@ -8335,17 +8334,17 @@ Scope:${u}
8335
8334
  key: 0,
8336
8335
  type: "submit",
8337
8336
  disabled: !i(ve).featureName.trim() || !i(ve).featureDescription.trim() || !i(ve).specialNote.trim() || !i(X).trim()
8338
- }, c(i(R)("annotationSave")), 9, Pw)) : C("", !0)
8337
+ }, c(i(R)("annotationSave")), 9, Dw)) : C("", !0)
8339
8338
  ], 2)
8340
8339
  ], 32)
8341
8340
  ])) : C("", !0),
8342
8341
  fe.value === "prototype" && _n.value && !ge.value ? (v(), f("div", {
8343
8342
  key: 12,
8344
8343
  class: "page-description-summary-backdrop",
8345
- onClick: s[82] || (s[82] = Ce((l) => _n.value = !1, ["self"]))
8344
+ onClick: s[82] || (s[82] = xe((l) => _n.value = !1, ["self"]))
8346
8345
  }, [
8347
- e("section", Dw, [
8348
- e("div", Aw, [
8346
+ e("section", Aw, [
8347
+ e("div", Ew, [
8349
8348
  e("div", null, [
8350
8349
  s[134] || (s[134] = e("p", null, "页面描述", -1)),
8351
8350
  e("span", null, [
@@ -8361,7 +8360,7 @@ Scope:${u}
8361
8360
  onClick: s[81] || (s[81] = (l) => _n.value = !1)
8362
8361
  }, "×")
8363
8362
  ]),
8364
- e("div", Ew, [
8363
+ e("div", Tw, [
8365
8364
  s[135] || (s[135] = e("div", { class: "page-description-summary-options-head" }, [
8366
8365
  e("p", null, "展示内容")
8367
8366
  ], -1)),
@@ -8383,36 +8382,36 @@ Scope:${u}
8383
8382
  type: "checkbox",
8384
8383
  checked: wt.value.includes(l.id),
8385
8384
  onChange: (S) => Gc(l.id)
8386
- }, null, 40, Tw),
8385
+ }, null, 40, Nw),
8387
8386
  e("span", null, c(l.label), 1)
8388
8387
  ]))), 128))
8389
8388
  ])
8390
8389
  ]),
8391
- e("div", Nw, [
8390
+ e("div", Rw, [
8392
8391
  Ms.value.length ? (v(!0), f(D, { key: 1 }, N(Ms.value, (l) => (v(), f("p", {
8393
8392
  key: l.id
8394
8393
  }, [
8395
8394
  e("b", null, c(l.label) + ":", 1),
8396
8395
  K(c(l.value), 1)
8397
- ]))), 128)) : (v(), f("p", Rw, "请选择要展示的描述部分。"))
8396
+ ]))), 128)) : (v(), f("p", Ow, "请选择要展示的描述部分。"))
8398
8397
  ]),
8399
- e("div", Ow, [
8400
- e("small", null, c(cn.value), 1),
8398
+ e("div", Bw, [
8399
+ e("small", null, c(un.value), 1),
8401
8400
  e("button", {
8402
8401
  type: "button",
8403
8402
  disabled: !Ms.value.length,
8404
8403
  onClick: Lc
8405
- }, "复制选中内容", 8, Bw)
8404
+ }, "复制选中内容", 8, jw)
8406
8405
  ])
8407
8406
  ])
8408
8407
  ])) : C("", !0),
8409
8408
  fe.value === "prototype" && $n.value && !ge.value ? (v(), f("div", {
8410
8409
  key: 13,
8411
8410
  class: "prototype-health-backdrop",
8412
- onClick: s[86] || (s[86] = Ce((l) => $n.value = !1, ["self"]))
8411
+ onClick: s[86] || (s[86] = xe((l) => $n.value = !1, ["self"]))
8413
8412
  }, [
8414
- e("section", jw, [
8415
- e("div", Uw, [
8413
+ e("section", Uw, [
8414
+ e("div", Mw, [
8416
8415
  s[136] || (s[136] = e("div", null, [
8417
8416
  e("p", null, "原型健康检查"),
8418
8417
  e("span", null, "页面描述覆盖率优先读取云端 manifest;云端文件全量检查请运行 pnpm validate:remote")
@@ -8423,7 +8422,7 @@ Scope:${u}
8423
8422
  onClick: s[83] || (s[83] = (l) => $n.value = !1)
8424
8423
  }, "×")
8425
8424
  ]),
8426
- e("div", Mw, [
8425
+ e("div", Vw, [
8427
8426
  e("button", {
8428
8427
  type: "button",
8429
8428
  class: A({ active: Eo.value === "overview" }),
@@ -8436,7 +8435,7 @@ Scope:${u}
8436
8435
  }, "页面/状态矩阵", 2)
8437
8436
  ]),
8438
8437
  Eo.value === "overview" ? (v(), f(D, { key: 0 }, [
8439
- e("div", Vw, [
8438
+ e("div", Lw, [
8440
8439
  (v(!0), f(D, null, N(Vc.value, (l) => (v(), f("section", {
8441
8440
  key: l.label
8442
8441
  }, [
@@ -8445,12 +8444,12 @@ Scope:${u}
8445
8444
  e("small", null, c(l.detail), 1)
8446
8445
  ]))), 128))
8447
8446
  ]),
8448
- e("div", Lw, [
8449
- e("div", Fw, [
8447
+ e("div", Fw, [
8448
+ e("div", Gw, [
8450
8449
  s[137] || (s[137] = e("p", null, "问题清单", -1)),
8451
8450
  e("span", null, c(di.value.filter((l) => l.tone !== "success").length) + " 个待关注项", 1)
8452
8451
  ]),
8453
- e("div", Gw, [
8452
+ e("div", zw, [
8454
8453
  (v(!0), f(D, null, N(di.value, (l) => (v(), f("section", {
8455
8454
  key: l.title,
8456
8455
  class: A(`is-${l.tone}`)
@@ -8460,13 +8459,13 @@ Scope:${u}
8460
8459
  ], 2))), 128))
8461
8460
  ])
8462
8461
  ])
8463
- ], 64)) : (v(), f("div", zw, [
8462
+ ], 64)) : (v(), f("div", Hw, [
8464
8463
  s[139] || (s[139] = e("div", { class: "prototype-health-section-head" }, [
8465
8464
  e("p", null, "页面/状态矩阵"),
8466
8465
  e("span", null, "按页面聚合状态、流程覆盖、描述覆盖和注释数量")
8467
8466
  ], -1)),
8468
- e("div", Hw, [
8469
- e("table", Kw, [
8467
+ e("div", Kw, [
8468
+ e("table", Jw, [
8470
8469
  s[138] || (s[138] = e("thead", null, [
8471
8470
  e("tr", null, [
8472
8471
  e("th", null, "编号"),
@@ -8503,20 +8502,20 @@ Scope:${u}
8503
8502
  fe.value === "prototype" && An.value && !ge.value ? (v(), f("div", {
8504
8503
  key: 14,
8505
8504
  class: "fixed inset-0 z-[130] flex items-center justify-center bg-black/35 px-4",
8506
- onClick: s[88] || (s[88] = Ce((l) => An.value = !1, ["self"]))
8505
+ onClick: s[88] || (s[88] = xe((l) => An.value = !1, ["self"]))
8507
8506
  }, [
8508
- e("section", Jw, [
8509
- e("div", Ww, [
8507
+ e("section", Ww, [
8508
+ e("div", Yw, [
8510
8509
  e("div", null, [
8511
8510
  s[140] || (s[140] = e("h2", { class: "text-lg font-semibold text-ink" }, "更新历史", -1)),
8512
- e("p", Yw, "最近一次更新时间:" + c(cc.value), 1)
8511
+ e("p", Xw, "最近一次更新时间:" + c(cc.value), 1)
8513
8512
  ]),
8514
8513
  e("button", {
8515
8514
  class: "flex h-9 w-9 shrink-0 items-center justify-center rounded-full bg-soft text-base font-semibold text-ink",
8516
8515
  onClick: s[87] || (s[87] = (l) => An.value = !1)
8517
8516
  }, " × ")
8518
8517
  ]),
8519
- e("div", Xw, [
8518
+ e("div", qw, [
8520
8519
  (v(!0), f(D, null, N(i(Rs), (l) => (v(), f("section", {
8521
8520
  key: l.hash,
8522
8521
  class: "overflow-hidden rounded-[16px] bg-soft transition"
@@ -8526,36 +8525,36 @@ Scope:${u}
8526
8525
  class: "w-full p-3 text-left",
8527
8526
  onClick: (S) => ed(l.hash)
8528
8527
  }, [
8529
- e("div", Zw, [
8530
- e("p", Qw, c(l.date), 1),
8531
- e("div", eS, [
8532
- e("code", tS, c(l.hash), 1),
8528
+ e("div", Qw, [
8529
+ e("p", eS, c(l.date), 1),
8530
+ e("div", tS, [
8531
+ e("code", nS, c(l.hash), 1),
8533
8532
  e("span", {
8534
8533
  class: A(["text-sm text-muted transition-transform duration-200", { "rotate-180": Os.value === l.hash }])
8535
8534
  }, "⌄", 2)
8536
8535
  ])
8537
8536
  ]),
8538
- e("p", nS, c(l.message), 1)
8539
- ], 8, qw),
8540
- Os.value === l.hash ? (v(), f("div", oS, [
8541
- gi(l).length ? (v(), f("div", sS, [
8537
+ e("p", oS, c(l.message), 1)
8538
+ ], 8, Zw),
8539
+ Os.value === l.hash ? (v(), f("div", sS, [
8540
+ gi(l).length ? (v(), f("div", aS, [
8542
8541
  (v(!0), f(D, null, N(gi(l), (S) => (v(), f("p", {
8543
8542
  key: `${l.hash}-${S}`,
8544
8543
  class: "rounded-[12px] bg-panel px-3 py-2 text-xs leading-5 text-muted"
8545
8544
  }, c(S), 1))), 128))
8546
- ])) : (v(), f("p", aS, "暂无更多修改细节"))
8545
+ ])) : (v(), f("p", lS, "暂无更多修改细节"))
8547
8546
  ])) : C("", !0)
8548
8547
  ]))), 128)),
8549
- i(Rs).length ? C("", !0) : (v(), f("p", lS, c(uc ? "暂无提交记录" : "业务侧尚未接入更新历史,请在 PrototypeProductDefinition.updateHistory 中配置"), 1))
8548
+ i(Rs).length ? C("", !0) : (v(), f("p", iS, c(uc ? "暂无提交记录" : "业务侧尚未接入更新历史,请在 PrototypeProductDefinition.updateHistory 中配置"), 1))
8550
8549
  ])
8551
8550
  ])
8552
8551
  ])) : C("", !0),
8553
8552
  fe.value === "prototype" && Ro.value && ge.value ? (v(), f("div", {
8554
8553
  key: 15,
8555
8554
  class: "mobile-page-picker-backdrop",
8556
- onClick: Ce(Gs, ["self"])
8555
+ onClick: xe(Gs, ["self"])
8557
8556
  }, [
8558
- e("section", iS, [
8557
+ e("section", rS, [
8559
8558
  s[143] || (s[143] = e("div", { class: "mobile-page-picker-handle" }, null, -1)),
8560
8559
  e("header", { class: "mobile-page-picker-head" }, [
8561
8560
  s[141] || (s[141] = e("div", null, [
@@ -8581,7 +8580,7 @@ Scope:${u}
8581
8580
  }, null, 512), [
8582
8581
  [H, Oo.value]
8583
8582
  ]),
8584
- e("div", rS, [
8583
+ e("div", uS, [
8585
8584
  (v(!0), f(D, null, N(hc.value, (l) => (v(), f("section", {
8586
8585
  key: l.screen.id,
8587
8586
  class: "mobile-page-picker-item"
@@ -8591,14 +8590,14 @@ Scope:${u}
8591
8590
  class: A(["mobile-page-picker-screen", { active: i(h) === l.screen.id }]),
8592
8591
  onClick: (S) => l.states.length ? bd(l.screen.id) : wd(l.screen.id)
8593
8592
  }, [
8594
- e("span", cS, c(l.screen.code), 1),
8595
- e("span", dS, [
8593
+ e("span", dS, c(l.screen.code), 1),
8594
+ e("span", pS, [
8596
8595
  e("b", null, c(l.screen.title), 1),
8597
8596
  e("small", null, c(l.screen.subtitle), 1)
8598
8597
  ]),
8599
- l.states.length ? (v(), f("span", pS, c(l.states.length), 1)) : C("", !0)
8600
- ], 10, uS),
8601
- l.states.length && (l.forceExpanded || Ds.value.has(l.screen.id)) ? (v(), f("div", vS, [
8598
+ l.states.length ? (v(), f("span", vS, c(l.states.length), 1)) : C("", !0)
8599
+ ], 10, cS),
8600
+ l.states.length && (l.forceExpanded || Ds.value.has(l.screen.id)) ? (v(), f("div", fS, [
8602
8601
  (v(!0), f(D, null, N(l.states, (S) => (v(), f("button", {
8603
8602
  key: S.id,
8604
8603
  type: "button",
@@ -8607,7 +8606,7 @@ Scope:${u}
8607
8606
  }, [
8608
8607
  s[142] || (s[142] = e("span", null, null, -1)),
8609
8608
  K(" " + c(S.label), 1)
8610
- ], 10, fS))), 128))
8609
+ ], 10, mS))), 128))
8611
8610
  ])) : C("", !0)
8612
8611
  ]))), 128))
8613
8612
  ])
@@ -8619,26 +8618,26 @@ Scope:${u}
8619
8618
  class: "presentation-exit-btn",
8620
8619
  onClick: Ql
8621
8620
  }, " 退出演示 (Esc) ")) : C("", !0),
8622
- fe.value === "prototype" && i(be) && !ge.value ? (v(), ze(rv, {
8621
+ fe.value === "prototype" && i(ye) && !ge.value ? (v(), ze(rv, {
8623
8622
  key: 17,
8624
8623
  flows: i(pe),
8625
8624
  screens: i(j),
8626
8625
  "state-options-by-screen": i(L),
8627
8626
  "can-push-remote": i(Ot),
8628
- onClose: s[90] || (s[90] = (l) => be.value = !1),
8627
+ onClose: s[90] || (s[90] = (l) => ye.value = !1),
8629
8628
  onSave: kc,
8630
8629
  onPush: xc,
8631
8630
  onExport: i(Hu)
8632
8631
  }, null, 8, ["flows", "screens", "state-options-by-screen", "can-push-remote", "onExport"])) : C("", !0)
8633
- ], 64)) : (v(), f("section", Ky, [
8632
+ ], 64)) : (v(), f("section", Jy, [
8634
8633
  e("form", {
8635
8634
  class: "w-full max-w-sm rounded-[28px] border border-line bg-panel p-6 text-center shadow-soft",
8636
- onSubmit: Ce(rc, ["prevent"])
8635
+ onSubmit: xe(rc, ["prevent"])
8637
8636
  }, [
8638
8637
  s[94] || (s[94] = e("h1", { class: "text-2xl font-semibold text-ink" }, "产品原型访问", -1)),
8639
8638
  s[95] || (s[95] = e("p", { class: "mt-2 text-sm leading-6 text-muted" }, "请输入访问账号和密码", -1)),
8640
- e("div", Jy, [
8641
- e("label", Wy, [
8639
+ e("div", Wy, [
8640
+ e("label", Yy, [
8642
8641
  s[92] || (s[92] = e("span", { class: "text-xs font-semibold text-muted" }, "账号", -1)),
8643
8642
  T(e("input", {
8644
8643
  "onUpdate:modelValue": s[0] || (s[0] = (l) => ks.value = l),
@@ -8649,7 +8648,7 @@ Scope:${u}
8649
8648
  [H, ks.value]
8650
8649
  ])
8651
8650
  ]),
8652
- e("label", Yy, [
8651
+ e("label", Xy, [
8653
8652
  s[93] || (s[93] = e("span", { class: "text-xs font-semibold text-muted" }, "密码", -1)),
8654
8653
  T(e("input", {
8655
8654
  "onUpdate:modelValue": s[1] || (s[1] = (l) => xs.value = l),
@@ -8665,12 +8664,12 @@ Scope:${u}
8665
8664
  class: "primary-btn mt-5 w-full justify-center",
8666
8665
  type: "submit"
8667
8666
  }, "进入原型", -1)),
8668
- Ao.value ? (v(), f("p", Xy, c(Ao.value), 1)) : C("", !0)
8667
+ Ao.value ? (v(), f("p", qy, c(Ao.value), 1)) : C("", !0)
8669
8668
  ], 32)
8670
8669
  ]))
8671
8670
  ], 6));
8672
8671
  }
8673
8672
  });
8674
8673
  export {
8675
- SS as default
8674
+ CS as default
8676
8675
  };