@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
|
|
2
|
-
import { Save as kd, CloudUpload as xd, Download as Id, X as
|
|
3
|
-
import { g as yo, a as ta, s as Ld } from "./index-
|
|
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),
|
|
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
|
|
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
|
|
186
|
-
|
|
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
|
|
212
|
-
const $ = Ee(I.screenId) ?? o.screens[0], q = I.stateId ? (
|
|
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
|
|
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
|
|
248
|
-
if (!
|
|
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(
|
|
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
|
|
269
|
+
var G;
|
|
270
270
|
I.preventDefault(), te.value = -1, Te.value = null, we.value = -1, ve.value = null;
|
|
271
|
-
const $ = (
|
|
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,
|
|
287
|
-
(
|
|
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
|
|
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,
|
|
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((
|
|
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:
|
|
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(
|
|
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] =
|
|
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:
|
|
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:
|
|
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) =>
|
|
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] =
|
|
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:
|
|
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(
|
|
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(
|
|
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
|
|
730
|
+
function bn() {
|
|
731
731
|
return typeof window > "u" ? null : window.localStorage;
|
|
732
732
|
}
|
|
733
|
-
function
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 = {
|
|
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
|
-
},
|
|
1284
|
+
}, um = ["disabled"], cm = {
|
|
1282
1285
|
key: 0,
|
|
1283
1286
|
class: "bug-id-warning"
|
|
1284
|
-
},
|
|
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
|
-
},
|
|
1290
|
+
}, _m = ["onClick"], Pm = ["src", "alt"], Dm = ["disabled", "onClick"], Am = {
|
|
1288
1291
|
key: 1,
|
|
1289
1292
|
class: "bug-pending-images"
|
|
1290
|
-
},
|
|
1293
|
+
}, Em = ["src", "alt"], Tm = { key: 0 }, Nm = ["disabled", "onClick"], Rm = {
|
|
1291
1294
|
key: 2,
|
|
1292
1295
|
class: "bug-image-hint"
|
|
1293
|
-
},
|
|
1296
|
+
}, Om = {
|
|
1294
1297
|
key: 0,
|
|
1295
1298
|
class: "bug-form-error"
|
|
1296
|
-
},
|
|
1299
|
+
}, Bm = { class: "bug-edit-actions" }, jm = ["disabled"], Um = {
|
|
1297
1300
|
key: 2,
|
|
1298
1301
|
class: "bug-detail-description"
|
|
1299
|
-
},
|
|
1302
|
+
}, Mm = { class: "bug-detail-meta" }, Vm = {
|
|
1300
1303
|
key: 3,
|
|
1301
1304
|
class: "bug-detail-images"
|
|
1302
|
-
},
|
|
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
|
-
},
|
|
1308
|
+
}, Wm = ["disabled"], Ym = { class: "bug-history" }, Xm = {
|
|
1306
1309
|
key: 0,
|
|
1307
1310
|
class: "bug-empty"
|
|
1308
|
-
},
|
|
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:
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
1480
|
-
return { ...
|
|
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
|
|
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 =
|
|
1497
|
+
const y = G.value;
|
|
1495
1498
|
return !!(y && a.value.filter((p) => Ws(p.id) === Ws(y.id)).length > 1);
|
|
1496
|
-
}), L = 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((
|
|
1504
|
-
}),
|
|
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(
|
|
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
|
|
1529
|
-
return `bugs/${y}/${
|
|
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
|
|
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
|
|
1567
|
-
const p = Array.from(((
|
|
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((
|
|
1572
|
-
p && URL.revokeObjectURL(p.previewUrl), p != null && p.uploadedAttachment && !ve.value && (ue.value = ue.value.filter((
|
|
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
|
|
1575
|
-
})), Se.value = Se.value.filter((
|
|
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
|
|
1586
|
+
const z = [];
|
|
1584
1587
|
for (const m of Se.value) {
|
|
1585
1588
|
if (m.uploadedAttachment) {
|
|
1586
|
-
|
|
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
|
-
},
|
|
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
|
|
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(),
|
|
1615
|
-
if (!y || !p || !
|
|
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
|
-
|
|
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,
|
|
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:
|
|
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:
|
|
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
|
-
|
|
1652
|
+
ye(), ce.value === "conflict" ? (await se(), Ze.value = "远端 Bug 数据已更新,当前草稿和附件已保留,请再次提交") : Ze.value = `${ee.value || "Bug 提交失败"},当前草稿已保留`;
|
|
1650
1653
|
return;
|
|
1651
1654
|
}
|
|
1652
|
-
jt(), Ot(),
|
|
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),
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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((
|
|
1692
|
+
return Y.filter((rn, Me) => Me !== Re);
|
|
1690
1693
|
});
|
|
1691
|
-
m || (te.value = ee.value || "Bug 删除失败"), m &&
|
|
1694
|
+
m || (te.value = ee.value || "Bug 删除失败"), m && xn();
|
|
1692
1695
|
}
|
|
1693
1696
|
async function Ss() {
|
|
1694
|
-
const y =
|
|
1697
|
+
const y = G.value, p = We.value;
|
|
1695
1698
|
if (!y || !p || !Ne.value) return;
|
|
1696
|
-
const
|
|
1697
|
-
if (!
|
|
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,
|
|
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(
|
|
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,
|
|
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:
|
|
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
|
-
|
|
1736
|
+
xn();
|
|
1734
1737
|
}
|
|
1735
1738
|
async function ga() {
|
|
1736
1739
|
rt.value = "";
|
|
1737
|
-
const y =
|
|
1740
|
+
const y = G.value, p = We.value;
|
|
1738
1741
|
if (!y || !p) return;
|
|
1739
|
-
const
|
|
1740
|
-
if (!
|
|
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:
|
|
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(
|
|
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
|
-
|
|
1776
|
+
le.operatorName = Je(), le.note = "";
|
|
1774
1777
|
}
|
|
1775
1778
|
return (y, p) => {
|
|
1776
|
-
var
|
|
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:
|
|
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(
|
|
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(
|
|
2129
|
+
e("strong", null, c(ae.value) + " / " + c(kn.value), 1),
|
|
2127
2130
|
e("button", {
|
|
2128
2131
|
type: "button",
|
|
2129
|
-
disabled: ae.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: (
|
|
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(
|
|
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(
|
|
2197
|
+
e("strong", null, c(ae.value) + " / " + c(kn.value), 1),
|
|
2195
2198
|
e("button", {
|
|
2196
2199
|
type: "button",
|
|
2197
|
-
disabled: ae.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
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
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(
|
|
2213
|
-
e("h2", null, c(
|
|
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:
|
|
2217
|
+
onClick: xn
|
|
2219
2218
|
}, [
|
|
2220
|
-
V(i(
|
|
2219
|
+
V(i(gn), { class: "h-5 w-5" })
|
|
2221
2220
|
])
|
|
2222
2221
|
]),
|
|
2223
|
-
e("div",
|
|
2224
|
-
e("span", null, c(
|
|
2222
|
+
e("div", sm, [
|
|
2223
|
+
e("span", null, c(G.value.type), 1),
|
|
2225
2224
|
e("span", {
|
|
2226
|
-
class: A(`severity-${Ae[
|
|
2227
|
-
}, c(
|
|
2228
|
-
e("span", null, "发生侧:" + c(
|
|
2229
|
-
|
|
2230
|
-
e("span", null, "归属:" + c(
|
|
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[
|
|
2233
|
-
}, c(
|
|
2231
|
+
class: A(`status-${he[G.value.status]}`)
|
|
2232
|
+
}, c(G.value.status), 3)
|
|
2234
2233
|
]),
|
|
2235
|
-
e("div",
|
|
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",
|
|
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:
|
|
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",
|
|
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,
|
|
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:
|
|
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",
|
|
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,
|
|
2308
|
+
}, null, 8, dm), [
|
|
2310
2309
|
[H, Q.title]
|
|
2311
2310
|
])
|
|
2312
2311
|
]),
|
|
2313
|
-
e("div",
|
|
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,
|
|
2324
|
-
], 8,
|
|
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,
|
|
2338
|
-
], 8,
|
|
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,
|
|
2352
|
-
], 8,
|
|
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,
|
|
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,
|
|
2378
|
-
], 8,
|
|
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,
|
|
2387
|
+
}, null, 8, Cm), [
|
|
2389
2388
|
[H, Q.description]
|
|
2390
2389
|
])
|
|
2391
2390
|
]),
|
|
2392
|
-
e("section",
|
|
2393
|
-
e("div",
|
|
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,
|
|
2406
|
-
Ue.value.length ? (v(), f("div",
|
|
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,
|
|
2420
|
-
], 8,
|
|
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,
|
|
2431
|
+
], 8, Dm)
|
|
2433
2432
|
]))), 128))
|
|
2434
2433
|
])) : C("", !0),
|
|
2435
|
-
Se.value.length ? (v(), f("div",
|
|
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,
|
|
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",
|
|
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,
|
|
2454
|
+
], 8, Nm)
|
|
2456
2455
|
], 2))), 128))
|
|
2457
2456
|
])) : C("", !0),
|
|
2458
|
-
k.value ? (v(), f("p",
|
|
2457
|
+
k.value ? (v(), f("p", Rm, c(k.value), 1)) : C("", !0)
|
|
2459
2458
|
]),
|
|
2460
|
-
Te.value ? (v(), f("p",
|
|
2461
|
-
e("div",
|
|
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,
|
|
2468
|
+
}, "保存修改", 8, jm)
|
|
2470
2469
|
])
|
|
2471
|
-
], 32)) : (v(), f("p",
|
|
2472
|
-
e("p",
|
|
2473
|
-
!ve.value && ((
|
|
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(
|
|
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,
|
|
2484
|
+
}, null, 8, Fm),
|
|
2486
2485
|
e("span", null, c(m.name), 1)
|
|
2487
|
-
], 8,
|
|
2486
|
+
], 8, Lm))), 128))
|
|
2488
2487
|
])
|
|
2489
2488
|
])) : C("", !0),
|
|
2490
2489
|
e("form", {
|
|
2491
2490
|
class: "bug-status-form",
|
|
2492
|
-
onSubmit:
|
|
2491
|
+
onSubmit: xe(ga, ["prevent"])
|
|
2493
2492
|
}, [
|
|
2494
|
-
e("div",
|
|
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,
|
|
2505
|
+
}, c(m), 9, zm))), 128))
|
|
2507
2506
|
], 512), [
|
|
2508
2507
|
[lt, le.status]
|
|
2509
2508
|
])
|
|
2510
2509
|
]),
|
|
2511
|
-
e("div",
|
|
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,
|
|
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",
|
|
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,
|
|
2546
|
+
}, "提交状态变更", 8, Wm)
|
|
2548
2547
|
], 32),
|
|
2549
|
-
e("section",
|
|
2548
|
+
e("section", Ym, [
|
|
2550
2549
|
p[85] || (p[85] = e("h3", null, "处理记录", -1)),
|
|
2551
|
-
|
|
2552
|
-
(v(!0), f(D, null, N(
|
|
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",
|
|
2558
|
-
m.note ? (v(), f("p",
|
|
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] =
|
|
2565
|
+
onClick: p[39] || (p[39] = xe((m) => _.value = null, ["self"]))
|
|
2567
2566
|
}, [
|
|
2568
|
-
e("section",
|
|
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(
|
|
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,
|
|
2581
|
+
}, null, 8, eg)
|
|
2583
2582
|
])
|
|
2584
2583
|
])) : C("", !0)
|
|
2585
2584
|
]);
|
|
2586
2585
|
};
|
|
2587
2586
|
}
|
|
2588
|
-
}),
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
2817
|
-
const a = await (await
|
|
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" }),
|
|
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
|
|
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
|
|
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
|
|
2856
|
+
async function dg(t = "初始化工具") {
|
|
2858
2857
|
var h, w;
|
|
2859
2858
|
if (ts.value) return;
|
|
2860
|
-
const n = await
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
2928
|
+
return ht(Mn.value.source, d instanceof Sn ? "conflict" : "error", g), !1;
|
|
2930
2929
|
}
|
|
2931
2930
|
}
|
|
2932
|
-
async function
|
|
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(
|
|
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(
|
|
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:
|
|
2965
|
-
selectTestCaseScope:
|
|
2963
|
+
initializeTestCases: dg,
|
|
2964
|
+
selectTestCaseScope: pg,
|
|
2966
2965
|
refreshTestCases: ml,
|
|
2967
|
-
saveTestCase:
|
|
2968
|
-
loadAllTestCasesForExport:
|
|
2966
|
+
saveTestCase: vg,
|
|
2967
|
+
loadAllTestCasesForExport: fg,
|
|
2969
2968
|
setTestCaseEditing(t) {
|
|
2970
2969
|
Hr.value = t;
|
|
2971
2970
|
}
|
|
2972
2971
|
};
|
|
2973
2972
|
}
|
|
2974
|
-
const
|
|
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
|
-
},
|
|
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
|
-
},
|
|
2979
|
+
}, Gg = {
|
|
2981
2980
|
key: 0,
|
|
2982
2981
|
class: "test-case-editor"
|
|
2983
|
-
},
|
|
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
|
-
},
|
|
3040
|
-
const k =
|
|
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 (
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
3114
|
+
Ye(!1), M.value = !0, be.value = "";
|
|
3116
3115
|
try {
|
|
3117
3116
|
await ee(), Ae.value = "all";
|
|
3118
3117
|
} catch (k) {
|
|
3119
|
-
|
|
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,
|
|
3125
|
+
M.value = !0, be.value = "";
|
|
3127
3126
|
try {
|
|
3128
3127
|
const _ = await ee();
|
|
3129
|
-
k === "json" ?
|
|
3128
|
+
k === "json" ? lg(_) : await rg(_, w(o.lang)), be.value = k === "json" ? "JSON 导出成功" : "Excel 导出成功";
|
|
3130
3129
|
} catch (_) {
|
|
3131
|
-
|
|
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",
|
|
3150
|
-
e("header",
|
|
3151
|
-
e("div",
|
|
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",
|
|
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,
|
|
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,
|
|
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,
|
|
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",
|
|
3197
|
-
e("label",
|
|
3195
|
+
e("aside", Cg, [
|
|
3196
|
+
e("label", kg, [
|
|
3198
3197
|
V(i(qa)),
|
|
3199
3198
|
T(e("input", {
|
|
3200
|
-
"onUpdate:modelValue": _[4] || (_[4] = (j) =>
|
|
3199
|
+
"onUpdate:modelValue": _[4] || (_[4] = (j) => Ce.value = j),
|
|
3201
3200
|
type: "search",
|
|
3202
3201
|
placeholder: B.searchScope
|
|
3203
|
-
}, null, 8,
|
|
3204
|
-
[H,
|
|
3202
|
+
}, null, 8, xg), [
|
|
3203
|
+
[H, Ce.value]
|
|
3205
3204
|
])
|
|
3206
3205
|
]),
|
|
3207
|
-
e("div",
|
|
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",
|
|
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
|
|
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 = (
|
|
3225
|
-
], 10,
|
|
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",
|
|
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",
|
|
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",
|
|
3254
|
-
e("div",
|
|
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,
|
|
3264
|
+
}, c(B.all), 11, Tg)
|
|
3266
3265
|
]),
|
|
3267
|
-
e("label",
|
|
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,
|
|
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",
|
|
3281
|
+
i(h).message ? (v(), f("span", Og, " · " + c(i(h).message), 1)) : C("", !0)
|
|
3283
3282
|
], 2),
|
|
3284
|
-
|
|
3285
|
-
e("div",
|
|
3286
|
-
e("table",
|
|
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: (
|
|
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",
|
|
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, (
|
|
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:
|
|
3323
|
+
onClick: xe((ye) => Q(j), ["stop"])
|
|
3325
3324
|
}, [
|
|
3326
3325
|
V(i(Bn))
|
|
3327
|
-
], 8,
|
|
3326
|
+
], 8, Lg)
|
|
3328
3327
|
])
|
|
3329
|
-
], 8,
|
|
3328
|
+
], 8, Mg);
|
|
3330
3329
|
}), 128))
|
|
3331
3330
|
])
|
|
3332
3331
|
]),
|
|
3333
|
-
W.value.length ? C("", !0) : (v(), f("div",
|
|
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",
|
|
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(
|
|
3351
|
-
], 8,
|
|
3349
|
+
V(i(gn))
|
|
3350
|
+
], 8, zg)
|
|
3352
3351
|
]),
|
|
3353
|
-
e("div",
|
|
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,
|
|
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": (
|
|
3405
|
+
"onUpdate:modelValue": (ye) => J.steps[pe] = ye,
|
|
3407
3406
|
rows: "2"
|
|
3408
|
-
}, null, 8,
|
|
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: (
|
|
3415
|
+
onClick: (ye) => we(pe, -1)
|
|
3417
3416
|
}, [
|
|
3418
3417
|
V(i(Nd))
|
|
3419
|
-
], 8,
|
|
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: (
|
|
3423
|
+
onClick: (ye) => we(pe, 1)
|
|
3425
3424
|
}, [
|
|
3426
3425
|
V(i(Rd))
|
|
3427
|
-
], 8,
|
|
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: (
|
|
3431
|
+
onClick: (ye) => J.steps.splice(pe, 1)
|
|
3433
3432
|
}, [
|
|
3434
|
-
V(i(
|
|
3435
|
-
], 8,
|
|
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,
|
|
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
|
-
`,
|
|
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
|
-
},
|
|
4294
|
+
}, ah = /* @__PURE__ */ an({
|
|
4296
4295
|
__name: "PrototypeCoreHelpPage",
|
|
4297
4296
|
emits: ["close"],
|
|
4298
4297
|
setup(t) {
|
|
4299
|
-
const n = b("idle"), o = "1.2.
|
|
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",
|
|
4325
|
-
e("header",
|
|
4326
|
-
e("div",
|
|
4327
|
-
e("p",
|
|
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",
|
|
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(
|
|
4354
|
+
V(i(gn), { class: "h-4 w-4" })
|
|
4356
4355
|
])
|
|
4357
4356
|
])
|
|
4358
4357
|
]),
|
|
4359
|
-
e("div",
|
|
4358
|
+
e("div", sh, [
|
|
4360
4359
|
e("pre", null, c(i(Ga)), 1)
|
|
4361
4360
|
])
|
|
4362
4361
|
]));
|
|
4363
4362
|
}
|
|
4364
|
-
}),
|
|
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
|
-
},
|
|
4366
|
+
}, vh = /* @__PURE__ */ an({
|
|
4368
4367
|
__name: "PrototypeCoreThemeGuidePage",
|
|
4369
4368
|
emits: ["close"],
|
|
4370
4369
|
setup(t) {
|
|
4371
|
-
const n = b("idle"), o = "1.2.
|
|
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",
|
|
4397
|
-
e("header",
|
|
4398
|
-
e("div",
|
|
4399
|
-
e("p",
|
|
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",
|
|
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(
|
|
4426
|
+
V(i(gn), { class: "h-4 w-4" })
|
|
4428
4427
|
])
|
|
4429
4428
|
])
|
|
4430
4429
|
]),
|
|
4431
|
-
e("div",
|
|
4430
|
+
e("div", ph, [
|
|
4432
4431
|
e("pre", null, c(i(za)), 1)
|
|
4433
4432
|
])
|
|
4434
4433
|
]));
|
|
4435
4434
|
}
|
|
4436
|
-
}),
|
|
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
|
|
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
|
|
4450
|
-
function
|
|
4451
|
-
return v(), f("section",
|
|
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
|
|
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
|
|
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", ...
|
|
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()),
|
|
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
|
|
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
|
-
}),
|
|
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
|
|
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
|
-
}),
|
|
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
|
-
}),
|
|
4693
|
-
if (
|
|
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
|
-
}),
|
|
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),
|
|
4712
|
+
re(t, Be.value[t].source, "conflict", n), mn.value = "error", hn.value = n;
|
|
4714
4713
|
}
|
|
4715
|
-
function
|
|
4714
|
+
function Oh(t, n) {
|
|
4716
4715
|
ss.value = { ...ss.value, [t]: n };
|
|
4717
4716
|
}
|
|
4718
4717
|
function yu(t, n = t) {
|
|
4719
|
-
return
|
|
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
|
-
]),
|
|
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(
|
|
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
|
|
4766
|
+
function Uh(t) {
|
|
4768
4767
|
Ct.value = t;
|
|
4769
4768
|
}
|
|
4770
|
-
function
|
|
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
|
|
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
|
|
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
|
|
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
|
|
4795
|
+
function Gh() {
|
|
4797
4796
|
De.value = Qt(), Ct.value = "default";
|
|
4798
4797
|
}
|
|
4799
|
-
function
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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:
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
-
})),
|
|
4871
|
+
})), Wh = x(() => Cl.value.platform), Yh = x(
|
|
4873
4872
|
() => Gn.flatMap((t) => {
|
|
4874
|
-
const n =
|
|
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
|
-
),
|
|
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
|
|
4890
|
+
function Zh(t) {
|
|
4892
4891
|
Zs(t);
|
|
4893
|
-
const n = St.value, o = n ? il(t, n) : Au(t), a =
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
4938
|
-
const n =
|
|
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
|
|
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
|
|
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
|
|
5025
|
-
var je, J, Je,
|
|
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
|
-
(
|
|
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 :
|
|
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],
|
|
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) :
|
|
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 =
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
5139
|
+
mn.value = "syncing", re("annotations", Be.value.annotations.source, "syncing");
|
|
5141
5140
|
try {
|
|
5142
5141
|
const o = await bv();
|
|
5143
|
-
|
|
5144
|
-
const a = await
|
|
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
|
-
|
|
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 : "注释同步失败"),
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 : "页面描述同步失败"),
|
|
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
|
|
5226
|
-
if (!_e.remoteWritable ||
|
|
5224
|
+
async function cy() {
|
|
5225
|
+
if (!_e.remoteWritable || vn.value === "running") return;
|
|
5227
5226
|
const t = $t.value.trim() || "初始化工具";
|
|
5228
|
-
|
|
5227
|
+
vn.value = "running", Un.value = "", it.value = { current: 0, total: 1, label: "检查初始化状态" };
|
|
5229
5228
|
try {
|
|
5230
5229
|
if (await hv()) {
|
|
5231
|
-
|
|
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
|
-
|
|
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 },
|
|
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
|
|
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
|
|
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,
|
|
5293
|
+
if (ot("annotations", U(t, n), d, r.sha, g, "synced"), ie.value = h, yn.value)
|
|
5295
5294
|
try {
|
|
5296
|
-
await Sv(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
5371
|
+
function yy(t) {
|
|
5373
5372
|
as.value && window.clearTimeout(as.value), la.value = t;
|
|
5374
5373
|
}
|
|
5375
|
-
function
|
|
5374
|
+
function by() {
|
|
5376
5375
|
as.value && window.clearTimeout(as.value);
|
|
5377
5376
|
}
|
|
5378
|
-
function
|
|
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 =
|
|
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 =
|
|
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
|
|
5424
|
+
return o instanceof Sn ? Sl("pageDescriptions", a) : re("pageDescriptions", Be.value.pageDescriptions.source, "error", a), !1;
|
|
5426
5425
|
}
|
|
5427
5426
|
}
|
|
5428
|
-
async function
|
|
5427
|
+
async function Sy() {
|
|
5429
5428
|
const t = Pl();
|
|
5430
5429
|
return ln.value ? Eu(t) : Dl();
|
|
5431
5430
|
}
|
|
5432
|
-
async function
|
|
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
|
|
5463
|
-
if (
|
|
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,
|
|
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 (
|
|
5478
|
-
P.push({ scopeId: se, error:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
5501
|
+
const $y = x(() => ({
|
|
5503
5502
|
"--flow-zoom": String(ft.value)
|
|
5504
|
-
})),
|
|
5505
|
-
function
|
|
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
|
|
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 +=
|
|
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
|
-
}),
|
|
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
|
|
5540
|
+
function Ny(t) {
|
|
5542
5541
|
Ht.value = t;
|
|
5543
5542
|
}
|
|
5544
|
-
function
|
|
5543
|
+
function Ry(t) {
|
|
5545
5544
|
ft.value = Ou(ft.value + t);
|
|
5546
5545
|
}
|
|
5547
|
-
function
|
|
5546
|
+
function Oy() {
|
|
5548
5547
|
Ln.value = 360, Fn.value = 150, ft.value = 0.42;
|
|
5549
5548
|
}
|
|
5550
|
-
function
|
|
5551
|
-
const n = t.flowRow ?? 1, o = t.flowCol ?? 1, a =
|
|
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 + (
|
|
5555
|
+
left: `${Ln.value + (Ay + a) * ft.value}px`,
|
|
5557
5556
|
top: `${Fn.value + r * ft.value}px`
|
|
5558
5557
|
};
|
|
5559
5558
|
}
|
|
5560
|
-
function
|
|
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
|
|
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
|
|
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
|
|
5575
|
+
function Vy() {
|
|
5577
5576
|
sa.value = !1;
|
|
5578
5577
|
}
|
|
5579
|
-
function
|
|
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
|
|
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
|
|
5604
|
+
return r instanceof Sn ? Sl("flows", d) : re("flows", Be.value.flows.source, "error", d), !1;
|
|
5606
5605
|
}
|
|
5607
5606
|
}
|
|
5608
|
-
function
|
|
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:
|
|
5631
|
-
themeImportInput:
|
|
5629
|
+
showThemePanel: kh,
|
|
5630
|
+
themeImportInput: xh,
|
|
5632
5631
|
flowZoom: ft,
|
|
5633
5632
|
isFlowPanning: sa,
|
|
5634
5633
|
selectedTab: gl,
|
|
5635
|
-
activeCollaborationTab:
|
|
5634
|
+
activeCollaborationTab: Ih,
|
|
5636
5635
|
annotationRemoteReady: ln,
|
|
5637
|
-
annotationSyncStatus:
|
|
5638
|
-
annotationSyncLabel:
|
|
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:
|
|
5645
|
+
collaborationSourceLabel: Eh,
|
|
5647
5646
|
collaborationSourceTone: hu,
|
|
5648
|
-
collaborationSourceDetail:
|
|
5649
|
-
collaborationLastSyncedAt:
|
|
5650
|
-
collaborationBootstrapStatus:
|
|
5647
|
+
collaborationSourceDetail: Nh,
|
|
5648
|
+
collaborationLastSyncedAt: Th,
|
|
5649
|
+
collaborationBootstrapStatus: vn,
|
|
5651
5650
|
collaborationBootstrapProgress: it,
|
|
5652
5651
|
collaborationBootstrapMessage: Un,
|
|
5653
|
-
canInitializeRemote:
|
|
5654
|
-
annotationPanelCollapsed:
|
|
5655
|
-
annotationPointsVisible:
|
|
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:
|
|
5667
|
+
activeDesignColors: Bh,
|
|
5669
5668
|
themeOptions: wu,
|
|
5670
|
-
themeStyle:
|
|
5671
|
-
themeLabel:
|
|
5672
|
-
themeDescription:
|
|
5669
|
+
themeStyle: jh,
|
|
5670
|
+
themeLabel: zh,
|
|
5671
|
+
themeDescription: Hh,
|
|
5673
5672
|
screens: Gn,
|
|
5674
5673
|
mainFlows: tt,
|
|
5675
|
-
showFlowEditor:
|
|
5674
|
+
showFlowEditor: Ph,
|
|
5676
5675
|
canPushFlowsToRemote: fu,
|
|
5677
5676
|
currentMeta: Cl,
|
|
5678
5677
|
currentDisplayScreen: ku,
|
|
5679
|
-
currentScreenPlatform:
|
|
5680
|
-
flowRows:
|
|
5681
|
-
visibleScreens:
|
|
5682
|
-
prototypeStateOptions:
|
|
5678
|
+
currentScreenPlatform: Wh,
|
|
5679
|
+
flowRows: Ty,
|
|
5680
|
+
visibleScreens: Xh,
|
|
5681
|
+
prototypeStateOptions: qh,
|
|
5683
5682
|
activePrototypeStateId: St,
|
|
5684
|
-
getPrototypeStateOptions:
|
|
5683
|
+
getPrototypeStateOptions: Cn,
|
|
5685
5684
|
getPrototypeStateLabel: xl,
|
|
5686
5685
|
normalizePrototypeStateId: cs,
|
|
5687
|
-
flowGridStyle:
|
|
5688
|
-
flowZoomPercent:
|
|
5686
|
+
flowGridStyle: $y,
|
|
5687
|
+
flowZoomPercent: _y,
|
|
5689
5688
|
currentScreenAnnotations: al,
|
|
5690
5689
|
currentPageDescription: Il,
|
|
5691
5690
|
isScopeHighlighted: ps,
|
|
5692
5691
|
isScreenHighlighted: Iu,
|
|
5693
|
-
highlightColorForScreen:
|
|
5694
|
-
activeScreenHighlightedStateColors:
|
|
5695
|
-
activeScreenHighlighted:
|
|
5696
|
-
activeScopeHighlighted:
|
|
5697
|
-
hoveredAnnotation:
|
|
5698
|
-
initializePrototype:
|
|
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:
|
|
5702
|
-
updateCustomThemeColor:
|
|
5703
|
-
updateCustomThemeDesignColor:
|
|
5704
|
-
updateCustomThemeTypography:
|
|
5705
|
-
updateCustomThemeRadius:
|
|
5706
|
-
resetCustomTheme:
|
|
5707
|
-
exportCustomTheme:
|
|
5708
|
-
importCustomTheme:
|
|
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:
|
|
5710
|
+
goToAnnotatedScreen: Zh,
|
|
5712
5711
|
goTab: qi,
|
|
5713
|
-
startAnnotationPlacement:
|
|
5712
|
+
startAnnotationPlacement: dy,
|
|
5714
5713
|
cancelAnnotationDraft: Pu,
|
|
5715
|
-
handleAnnotationCanvasClick:
|
|
5716
|
-
saveAnnotationDraft:
|
|
5717
|
-
openAnnotationDialog:
|
|
5714
|
+
handleAnnotationCanvasClick: py,
|
|
5715
|
+
saveAnnotationDraft: vy,
|
|
5716
|
+
openAnnotationDialog: fy,
|
|
5718
5717
|
closeAnnotationDialog: Du,
|
|
5719
|
-
saveAnnotationEdit:
|
|
5720
|
-
updateAnnotationPosition:
|
|
5721
|
-
keepAnnotationPopover:
|
|
5722
|
-
scheduleHideAnnotationPopover:
|
|
5723
|
-
showAnnotationPopover:
|
|
5724
|
-
removeAnnotation:
|
|
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:
|
|
5732
|
-
initializeRemoteCollaborationData:
|
|
5733
|
-
saveAnnotationPollingInterval:
|
|
5734
|
-
exportAnnotations:
|
|
5735
|
-
saveCurrentPageDescription:
|
|
5730
|
+
setCollaborationEditing: Oh,
|
|
5731
|
+
initializeRemoteCollaborationData: cy,
|
|
5732
|
+
saveAnnotationPollingInterval: Iy,
|
|
5733
|
+
exportAnnotations: ky,
|
|
5734
|
+
saveCurrentPageDescription: Sy,
|
|
5736
5735
|
saveCurrentPageDescriptionToCache: Dl,
|
|
5737
|
-
pushPageDescriptionSourceToGitee:
|
|
5738
|
-
selectPageDescriptionSource:
|
|
5736
|
+
pushPageDescriptionSourceToGitee: Cy,
|
|
5737
|
+
selectPageDescriptionSource: Qh,
|
|
5739
5738
|
syncPageDescriptionsFromJson: Tu,
|
|
5740
|
-
exportPageDescriptions:
|
|
5741
|
-
annotationPointStyle:
|
|
5742
|
-
selectFlow:
|
|
5743
|
-
stepFlowZoom:
|
|
5744
|
-
resetFlowView:
|
|
5745
|
-
flowNodeStyle:
|
|
5746
|
-
flowRowLabelStyle:
|
|
5747
|
-
startFlowPan:
|
|
5748
|
-
moveFlowPan:
|
|
5749
|
-
stopFlowPan:
|
|
5750
|
-
zoomFlowAtPoint:
|
|
5751
|
-
overviewZoom:
|
|
5752
|
-
overviewColumns:
|
|
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
|
|
5769
|
+
const Ky = {
|
|
5771
5770
|
key: 0,
|
|
5772
5771
|
class: "update-banner"
|
|
5773
|
-
},
|
|
5772
|
+
}, Jy = {
|
|
5774
5773
|
key: 3,
|
|
5775
5774
|
class: "flex min-h-screen items-center justify-center px-5 py-10"
|
|
5776
|
-
},
|
|
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
|
-
},
|
|
5778
|
+
}, Zy = {
|
|
5780
5779
|
key: 0,
|
|
5781
5780
|
class: "top-chrome"
|
|
5782
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
5793
|
+
}, _b = {
|
|
5795
5794
|
key: 0,
|
|
5796
5795
|
class: "page-description-summary-shell"
|
|
5797
|
-
},
|
|
5796
|
+
}, Pb = {
|
|
5798
5797
|
class: "page-description-source-switcher",
|
|
5799
5798
|
"aria-label": "切换页面描述数据源"
|
|
5800
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
5823
|
+
}, Mb = {
|
|
5825
5824
|
key: 1,
|
|
5826
5825
|
class: "apple-side-nav overview-side-nav"
|
|
5827
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
5832
|
+
}, qb = { class: "flow-zoom-controls" }, Zb = {
|
|
5834
5833
|
key: 0,
|
|
5835
5834
|
class: "status-bar"
|
|
5836
|
-
},
|
|
5835
|
+
}, Qb = ["onClickCapture"], e1 = { class: "screen-scroll-wrapper" }, t1 = {
|
|
5837
5836
|
key: 0,
|
|
5838
5837
|
class: "annotation-layer"
|
|
5839
|
-
},
|
|
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
|
-
},
|
|
5841
|
+
}, r1 = ["disabled"], u1 = {
|
|
5843
5842
|
key: 1,
|
|
5844
5843
|
class: "annotation-panel-actions description-actions"
|
|
5845
|
-
},
|
|
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
|
-
},
|
|
5847
|
+
}, h1 = {
|
|
5849
5848
|
key: 3,
|
|
5850
5849
|
class: "annotation-list"
|
|
5851
|
-
},
|
|
5850
|
+
}, y1 = {
|
|
5852
5851
|
key: 0,
|
|
5853
5852
|
class: "annotation-empty"
|
|
5854
|
-
},
|
|
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
|
-
},
|
|
5856
|
+
}, I1 = {
|
|
5858
5857
|
key: 0,
|
|
5859
5858
|
class: "annotation-empty"
|
|
5860
|
-
},
|
|
5859
|
+
}, $1 = {
|
|
5861
5860
|
key: 0,
|
|
5862
5861
|
class: "page-description-meta"
|
|
5863
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
5871
|
+
}, R1 = {
|
|
5873
5872
|
key: 0,
|
|
5874
5873
|
class: "interaction-mode-toast product-document-toast",
|
|
5875
5874
|
role: "status"
|
|
5876
|
-
},
|
|
5875
|
+
}, O1 = { class: "page-description-dialog" }, B1 = { class: "page-description-dialog-head" }, j1 = {
|
|
5877
5876
|
key: 0,
|
|
5878
5877
|
class: "annotation-empty"
|
|
5879
|
-
},
|
|
5878
|
+
}, U1 = {
|
|
5880
5879
|
key: 1,
|
|
5881
5880
|
class: "page-description-meta"
|
|
5882
|
-
},
|
|
5881
|
+
}, M1 = { class: "page-description-editor-source-row" }, V1 = {
|
|
5883
5882
|
class: "page-description-source-switcher",
|
|
5884
5883
|
"aria-label": "切换编辑数据源"
|
|
5885
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
5896
|
+
}, bw = ["readonly"], ww = ["readonly"], Sw = ["readonly"], Cw = {
|
|
5898
5897
|
key: 0,
|
|
5899
5898
|
class: "annotation-color-field"
|
|
5900
|
-
},
|
|
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
|
-
},
|
|
5902
|
+
}, Nw = ["checked", "onChange"], Rw = { class: "page-description-summary-body" }, Ow = {
|
|
5904
5903
|
key: 0,
|
|
5905
5904
|
class: "page-description-summary-empty"
|
|
5906
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
5916
|
+
}, aS = {
|
|
5918
5917
|
key: 0,
|
|
5919
5918
|
class: "space-y-2"
|
|
5920
|
-
},
|
|
5919
|
+
}, lS = {
|
|
5921
5920
|
key: 1,
|
|
5922
5921
|
class: "rounded-[12px] bg-panel px-3 py-2 text-xs leading-5 text-muted"
|
|
5923
|
-
},
|
|
5922
|
+
}, iS = {
|
|
5924
5923
|
key: 0,
|
|
5925
5924
|
class: "rounded-[16px] bg-soft p-3 text-sm text-muted"
|
|
5926
|
-
},
|
|
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
|
-
},
|
|
5928
|
+
}, fS = {
|
|
5930
5929
|
key: 0,
|
|
5931
5930
|
class: "mobile-page-picker-states"
|
|
5932
|
-
},
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
6006
|
-
isScreenHighlighted:
|
|
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:
|
|
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:
|
|
6036
|
+
annotationCountByScreen: z,
|
|
6038
6037
|
annotationCountByState: m,
|
|
6039
6038
|
refreshPrototypeAnnotations: Y,
|
|
6040
6039
|
refreshPageDescriptions: Re,
|
|
6041
|
-
refreshAllCollaborationData:
|
|
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
|
-
} =
|
|
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(() =>
|
|
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),
|
|
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.
|
|
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),
|
|
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,
|
|
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
|
-
|
|
6292
|
-
}), Ge(
|
|
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 =
|
|
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 = "",
|
|
6325
|
+
ti(), Yn.value = "", cn.value = !0;
|
|
6327
6326
|
}
|
|
6328
6327
|
function Pa() {
|
|
6329
|
-
ti(),
|
|
6328
|
+
ti(), cn.value = !1;
|
|
6330
6329
|
}
|
|
6331
6330
|
async function wc() {
|
|
6332
|
-
await Do() && (
|
|
6331
|
+
await Do() && (cn.value = !1);
|
|
6333
6332
|
}
|
|
6334
6333
|
function Sc() {
|
|
6335
|
-
kt() && (
|
|
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 =
|
|
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
|
|
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 =
|
|
6463
|
-
const u = Aa(
|
|
6464
|
-
return `${
|
|
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" && !
|
|
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 =
|
|
6473
|
-
structure: ((s =
|
|
6474
|
-
features: ((l =
|
|
6475
|
-
flowPosition: ((S =
|
|
6476
|
-
interactionRules: ((O =
|
|
6477
|
-
stateCriteria: ((Z =
|
|
6478
|
-
edgeCases: ((Le =
|
|
6479
|
-
acceptanceCriteria: ((Ko =
|
|
6480
|
-
developmentNotes: ((Ni =
|
|
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
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
6574
|
-
detail:
|
|
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)),
|
|
6586
|
+
await ((u = navigator.clipboard) == null ? void 0 : u.writeText(li.value)), un.value = "已复制页面描述";
|
|
6588
6587
|
} catch {
|
|
6589
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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) -
|
|
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
|
|
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 *
|
|
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
|
-
|
|
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,
|
|
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",
|
|
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 && (
|
|
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
|
-
|
|
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
|
-
[
|
|
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(),
|
|
6820
|
-
console.info("🔄 [协作同步] 开始轮询注释、页面描述、测试用例和流程"),
|
|
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",
|
|
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(
|
|
7024
|
+
fe.value === "help" ? (v(), ze(lh, {
|
|
7026
7025
|
key: 1,
|
|
7027
7026
|
onClose: fd
|
|
7028
|
-
})) : fe.value === "themeGuide" ? (v(), ze(
|
|
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",
|
|
7033
|
-
e("div",
|
|
7034
|
-
e("div",
|
|
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",
|
|
7041
|
-
e("p",
|
|
7039
|
+
e("p", tb, c(dc.value), 1),
|
|
7040
|
+
e("p", nb, c(pc.value), 1)
|
|
7042
7041
|
]),
|
|
7043
|
-
e("div",
|
|
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",
|
|
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",
|
|
7078
|
+
i(jl) ? (v(), f("span", ab, c(i(jl)), 1)) : C("", !0)
|
|
7080
7079
|
], 2),
|
|
7081
|
-
e("div",
|
|
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",
|
|
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",
|
|
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",
|
|
7117
|
-
e("div",
|
|
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",
|
|
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",
|
|
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",
|
|
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,
|
|
7153
|
+
], 10, vb))), 128))
|
|
7155
7154
|
]),
|
|
7156
|
-
e("div",
|
|
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",
|
|
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,
|
|
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,
|
|
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",
|
|
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,
|
|
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",
|
|
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,
|
|
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",
|
|
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,
|
|
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,
|
|
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(
|
|
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(
|
|
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",
|
|
7294
|
-
ne.value === "interactive" ? (v(), f("div",
|
|
7295
|
-
e("div",
|
|
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,
|
|
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,
|
|
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",
|
|
7322
|
+
])) : (v(), f("p", Ab, c(i(ko)("heroCopy", i(Xe).subtitle)), 1))
|
|
7324
7323
|
])),
|
|
7325
|
-
e("div",
|
|
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:
|
|
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(
|
|
7339
|
+
K(" " + c(dn.value ? "展开导航" : "收起导航") + " (N) ", 1)
|
|
7341
7340
|
]),
|
|
7342
|
-
|
|
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(
|
|
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",
|
|
7366
|
-
e("div",
|
|
7367
|
-
i(
|
|
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,
|
|
7368
|
+
], 10, Nb))), 128))
|
|
7370
7369
|
], 544),
|
|
7371
|
-
jo.value ? (v(), f("svg",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
7401
|
+
e("strong", Fb, c(i(In)), 1)
|
|
7403
7402
|
])
|
|
7404
7403
|
]),
|
|
7405
|
-
e("div",
|
|
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",
|
|
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",
|
|
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",
|
|
7430
|
-
e("div",
|
|
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) =>
|
|
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",
|
|
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,
|
|
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",
|
|
7469
|
-
e("div",
|
|
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(
|
|
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(
|
|
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",
|
|
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",
|
|
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",
|
|
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:
|
|
7595
|
-
onPointerdown:
|
|
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,
|
|
7600
|
-
], 46,
|
|
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,
|
|
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",
|
|
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",
|
|
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(
|
|
7665
|
+
e("strong", null, c(i(B) === "annotations" ? i(Pt).length : i(ke) ? 1 : 0), 1)
|
|
7667
7666
|
]),
|
|
7668
|
-
e("div",
|
|
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",
|
|
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(
|
|
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,
|
|
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",
|
|
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,
|
|
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:
|
|
7715
|
+
class: A({ active: cn.value }),
|
|
7717
7716
|
onClick: bc
|
|
7718
|
-
}, c(i(
|
|
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(
|
|
7722
|
+
e("span", null, c(i(Ce) ? i(Ae) : i(R)("annotationRemoteDisabled")), 1)
|
|
7724
7723
|
], 2),
|
|
7725
|
-
e("label",
|
|
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,
|
|
7730
|
+
}, null, 8, p1), [
|
|
7732
7731
|
[H, i(X)]
|
|
7733
7732
|
])
|
|
7734
7733
|
]),
|
|
7735
|
-
e("label",
|
|
7734
|
+
e("label", v1, [
|
|
7736
7735
|
e("span", null, c(i(R)("annotationPollingInterval")), 1),
|
|
7737
|
-
e("div",
|
|
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,
|
|
7757
|
+
}, c(i(R)("annotationPollingSave")), 9, m1)
|
|
7759
7758
|
])
|
|
7760
7759
|
]),
|
|
7761
|
-
i(J) ? (v(), f("p",
|
|
7762
|
-
i(B) === "annotations" ? (v(), f("div",
|
|
7763
|
-
i(Pt).length ? C("", !0) : (v(), f("p",
|
|
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",
|
|
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",
|
|
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,
|
|
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,
|
|
7793
|
+
}, c(i(R)("annotationDelete")), 9, k1)
|
|
7795
7794
|
])
|
|
7796
|
-
], 40,
|
|
7797
|
-
])) : (v(), f("div",
|
|
7798
|
-
i(
|
|
7799
|
-
Us.value ? (v(), f("small",
|
|
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",
|
|
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",
|
|
7826
|
-
e("span",
|
|
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,
|
|
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] =
|
|
7853
|
+
onClick: s[47] || (s[47] = xe((l) => Is.value = !1, ["self"]))
|
|
7855
7854
|
}, [
|
|
7856
|
-
e("section",
|
|
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",
|
|
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",
|
|
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",
|
|
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",
|
|
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" &&
|
|
7937
|
+
fe.value === "prototype" && cn.value && !ge.value ? (v(), f("div", {
|
|
7939
7938
|
key: 8,
|
|
7940
7939
|
class: "page-description-dialog-backdrop",
|
|
7941
|
-
onClick:
|
|
7940
|
+
onClick: xe(Pa, ["self"])
|
|
7942
7941
|
}, [
|
|
7943
|
-
e("section",
|
|
7944
|
-
e("div",
|
|
7942
|
+
e("section", O1, [
|
|
7943
|
+
e("div", B1, [
|
|
7945
7944
|
e("div", null, [
|
|
7946
|
-
e("p", null, c(i(
|
|
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:
|
|
7961
|
+
onSubmit: xe(wc, ["prevent"])
|
|
7963
7962
|
}, [
|
|
7964
|
-
i(
|
|
7965
|
-
e("div",
|
|
7966
|
-
e("div",
|
|
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,
|
|
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",
|
|
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",
|
|
7994
|
+
i(k).highlighted ? (v(), f("section", z1, [
|
|
7996
7995
|
s[126] || (s[126] = e("span", null, "标记颜色", -1)),
|
|
7997
|
-
e("div",
|
|
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,
|
|
8005
|
+
}, null, 14, K1))), 128))
|
|
8007
8006
|
]),
|
|
8008
|
-
e("div",
|
|
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(
|
|
8015
|
-
}, null, 40,
|
|
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",
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
8101
|
+
}, null, 8, ew), [
|
|
8103
8102
|
[H, i(k).developmentNotes]
|
|
8104
8103
|
])
|
|
8105
8104
|
])
|
|
8106
|
-
], 8,
|
|
8107
|
-
Yn.value ? (v(), f("small",
|
|
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(
|
|
8119
|
-
}, "保存到 Gitee", 8,
|
|
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(
|
|
8127
|
+
disabled: i(he) === "syncing" || !ai.value || !i(be).remoteWritable,
|
|
8129
8128
|
onClick: Cc
|
|
8130
|
-
}, " 推送到 Gitee ", 8,
|
|
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",
|
|
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,
|
|
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",
|
|
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] =
|
|
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,
|
|
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,
|
|
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,
|
|
8190
|
+
}, null, 8, uw), [
|
|
8192
8191
|
[H, i(te).specialNote]
|
|
8193
8192
|
])
|
|
8194
8193
|
]),
|
|
8195
|
-
e("section",
|
|
8194
|
+
e("section", cw, [
|
|
8196
8195
|
s[132] || (s[132] = e("span", null, "注释点颜色", -1)),
|
|
8197
|
-
e("div",
|
|
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,
|
|
8205
|
+
}, null, 14, pw))), 128))
|
|
8207
8206
|
]),
|
|
8208
|
-
e("div",
|
|
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(
|
|
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",
|
|
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,
|
|
8230
|
+
}, null, 8, mw), [
|
|
8232
8231
|
[H, i(X)]
|
|
8233
8232
|
])
|
|
8234
8233
|
]),
|
|
8235
|
-
e("div",
|
|
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,
|
|
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",
|
|
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] =
|
|
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,
|
|
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,
|
|
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,
|
|
8281
|
+
}, null, 8, Sw), [
|
|
8283
8282
|
[H, i(ve).specialNote]
|
|
8284
8283
|
])
|
|
8285
8284
|
]),
|
|
8286
|
-
i(we) === "edit" ? (v(), f("section",
|
|
8285
|
+
i(we) === "edit" ? (v(), f("section", Cw, [
|
|
8287
8286
|
s[133] || (s[133] = e("span", null, "注释点颜色", -1)),
|
|
8288
|
-
e("div",
|
|
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,
|
|
8296
|
+
}, null, 14, xw))), 128))
|
|
8298
8297
|
]),
|
|
8299
|
-
e("div",
|
|
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(
|
|
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",
|
|
8313
|
+
Pn.value ? (v(), f("small", $w, c(Pn.value), 1)) : C("", !0)
|
|
8315
8314
|
])) : C("", !0),
|
|
8316
|
-
i(we) === "edit" ? (v(), f("label",
|
|
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,
|
|
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,
|
|
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] =
|
|
8344
|
+
onClick: s[82] || (s[82] = xe((l) => _n.value = !1, ["self"]))
|
|
8346
8345
|
}, [
|
|
8347
|
-
e("section",
|
|
8348
|
-
e("div",
|
|
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",
|
|
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,
|
|
8385
|
+
}, null, 40, Nw),
|
|
8387
8386
|
e("span", null, c(l.label), 1)
|
|
8388
8387
|
]))), 128))
|
|
8389
8388
|
])
|
|
8390
8389
|
]),
|
|
8391
|
-
e("div",
|
|
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",
|
|
8396
|
+
]))), 128)) : (v(), f("p", Ow, "请选择要展示的描述部分。"))
|
|
8398
8397
|
]),
|
|
8399
|
-
e("div",
|
|
8400
|
-
e("small", null, c(
|
|
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,
|
|
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] =
|
|
8411
|
+
onClick: s[86] || (s[86] = xe((l) => $n.value = !1, ["self"]))
|
|
8413
8412
|
}, [
|
|
8414
|
-
e("section",
|
|
8415
|
-
e("div",
|
|
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",
|
|
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",
|
|
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",
|
|
8449
|
-
e("div",
|
|
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",
|
|
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",
|
|
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",
|
|
8469
|
-
e("table",
|
|
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] =
|
|
8505
|
+
onClick: s[88] || (s[88] = xe((l) => An.value = !1, ["self"]))
|
|
8507
8506
|
}, [
|
|
8508
|
-
e("section",
|
|
8509
|
-
e("div",
|
|
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",
|
|
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",
|
|
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",
|
|
8530
|
-
e("p",
|
|
8531
|
-
e("div",
|
|
8532
|
-
e("code",
|
|
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",
|
|
8539
|
-
], 8,
|
|
8540
|
-
Os.value === l.hash ? (v(), f("div",
|
|
8541
|
-
gi(l).length ? (v(), f("div",
|
|
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",
|
|
8545
|
+
])) : (v(), f("p", lS, "暂无更多修改细节"))
|
|
8547
8546
|
])) : C("", !0)
|
|
8548
8547
|
]))), 128)),
|
|
8549
|
-
i(Rs).length ? C("", !0) : (v(), f("p",
|
|
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:
|
|
8555
|
+
onClick: xe(Gs, ["self"])
|
|
8557
8556
|
}, [
|
|
8558
|
-
e("section",
|
|
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",
|
|
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",
|
|
8595
|
-
e("span",
|
|
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",
|
|
8600
|
-
], 10,
|
|
8601
|
-
l.states.length && (l.forceExpanded || Ds.value.has(l.screen.id)) ? (v(), f("div",
|
|
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,
|
|
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(
|
|
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) =>
|
|
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",
|
|
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:
|
|
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",
|
|
8641
|
-
e("label",
|
|
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",
|
|
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",
|
|
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
|
-
|
|
8674
|
+
CS as default
|
|
8676
8675
|
};
|