@l1yp/file-viewer 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +2 -0
  2. package/dist/components/AnsiText.d.ts +47 -0
  3. package/dist/components/AnsiText.js +41 -0
  4. package/dist/components/AnsiText.js.map +1 -0
  5. package/dist/components/CodeView.js +1 -1
  6. package/dist/components/CodeView.js.map +1 -1
  7. package/dist/components/CodeView.vue_vue_type_script_setup_true_lang.js +80 -71
  8. package/dist/components/CodeView.vue_vue_type_script_setup_true_lang.js.map +1 -1
  9. package/dist/components/DocxEmbeddedFiles.js +9 -0
  10. package/dist/components/DocxEmbeddedFiles.js.map +1 -0
  11. package/dist/components/DocxEmbeddedFiles.vue.d.ts +15 -0
  12. package/dist/components/DocxEmbeddedFiles.vue_vue_type_script_setup_true_lang.js +69 -0
  13. package/dist/components/DocxEmbeddedFiles.vue_vue_type_script_setup_true_lang.js.map +1 -0
  14. package/dist/components/DocxViewer.js +1 -1
  15. package/dist/components/DocxViewer.js.map +1 -1
  16. package/dist/components/DocxViewer.vue_vue_type_script_setup_true_lang.js +180 -50
  17. package/dist/components/DocxViewer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  18. package/dist/components/FileViewerBody.js +1 -1
  19. package/dist/components/FileViewerBody.js.map +1 -1
  20. package/dist/components/FileViewerBody.vue.d.ts +1 -0
  21. package/dist/components/FileViewerBody.vue_vue_type_script_setup_true_lang.js +117 -114
  22. package/dist/components/FileViewerBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
  23. package/dist/components/FileViewerPanel.js +1 -1
  24. package/dist/components/FileViewerPanel.js.map +1 -1
  25. package/dist/components/FileViewerPanel.vue_vue_type_script_setup_true_lang.js +18 -18
  26. package/dist/components/FileViewerPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/components/LogViewer.js +1 -1
  28. package/dist/components/LogViewer.js.map +1 -1
  29. package/dist/components/LogViewer.vue.d.ts +3 -1
  30. package/dist/components/LogViewer.vue_vue_type_script_setup_true_lang.js +284 -280
  31. package/dist/components/LogViewer.vue_vue_type_script_setup_true_lang.js.map +1 -1
  32. package/dist/lib/ansi.d.ts +44 -0
  33. package/dist/lib/ansi.js +224 -0
  34. package/dist/lib/ansi.js.map +1 -0
  35. package/dist/lib/cfb.d.ts +37 -0
  36. package/dist/lib/cfb.js +112 -0
  37. package/dist/lib/cfb.js.map +1 -0
  38. package/dist/lib/docxEmbeddedDom.d.ts +22 -0
  39. package/dist/lib/docxEmbeddedDom.js +128 -0
  40. package/dist/lib/docxEmbeddedDom.js.map +1 -0
  41. package/dist/lib/docxEmbeddings.d.ts +41 -0
  42. package/dist/lib/docxEmbeddings.js +226 -0
  43. package/dist/lib/docxEmbeddings.js.map +1 -0
  44. package/dist/lib/msi.js +62 -154
  45. package/dist/lib/msi.js.map +1 -1
  46. package/dist/lib/olePackage.d.ts +8 -0
  47. package/dist/lib/olePackage.js +37 -0
  48. package/dist/lib/olePackage.js.map +1 -0
  49. package/dist/lib/pptxFirstSlide.d.ts +11 -0
  50. package/dist/lib/pptxFirstSlide.js +34 -0
  51. package/dist/lib/pptxFirstSlide.js.map +1 -0
  52. package/dist/style.css +1 -1
  53. package/package.json +1 -1
@@ -1,72 +1,74 @@
1
1
  import { formatBytes as e } from "../lib/format.js";
2
- import t from "./icons/Icon.js";
3
- import { useLogRules as n } from "../composables/useLogRules.js";
4
- import { Fragment as r, computed as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, normalizeClass as d, normalizeStyle as f, onBeforeUnmount as p, openBlock as m, ref as h, renderList as ee, toDisplayString as g, unref as _, vModelCheckbox as v, vModelText as y, watch as b, withDirectives as x, withKeys as te, withModifiers as ne } from "vue";
2
+ import { hasAnsiSequences as t, parseAnsi as n } from "../lib/ansi.js";
3
+ import r from "./icons/Icon.js";
4
+ import i from "./AnsiText.js";
5
+ import { useLogRules as a } from "../composables/useLogRules.js";
6
+ import { Fragment as o, computed as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, normalizeClass as m, normalizeStyle as h, onBeforeUnmount as ee, openBlock as g, ref as _, renderList as te, shallowRef as ne, toDisplayString as v, unref as y, vModelCheckbox as b, vModelText as x, watch as S, withDirectives as C, withKeys as re, withModifiers as ie } from "vue";
5
7
  //#region src/components/LogViewer.vue?vue&type=script&setup=true&lang.ts
6
- var re = { class: "log" }, ie = {
8
+ var ae = { class: "log" }, oe = {
7
9
  key: 0,
8
10
  class: "log__msg"
9
- }, ae = {
11
+ }, se = {
10
12
  key: 1,
11
13
  class: "log__msg log__gate"
12
- }, oe = {
14
+ }, ce = {
13
15
  key: 2,
14
16
  class: "log__msg log__msg--error"
15
- }, se = { class: "log__bar" }, ce = { class: "log__searchwrap" }, le = {
17
+ }, le = { class: "log__bar" }, ue = { class: "log__searchwrap" }, de = {
16
18
  key: 0,
17
19
  class: "log__matches"
18
- }, ue = ["disabled"], de = ["disabled"], fe = ["disabled"], pe = ["title"], me = { class: "log__total" }, he = {
20
+ }, fe = ["disabled"], pe = ["disabled"], me = ["disabled"], he = ["title"], ge = { class: "log__total" }, _e = {
19
21
  key: 0,
20
22
  class: "log__rules-empty"
21
- }, ge = ["onUpdate:modelValue"], _e = ["onUpdate:modelValue"], ve = ["onClick"], ye = ["onClick"], be = {
23
+ }, ve = ["onUpdate:modelValue"], ye = ["onUpdate:modelValue"], be = ["onClick"], xe = ["onClick"], Se = {
22
24
  class: "log__rule-color",
23
25
  title: "背景色"
24
- }, xe = ["onUpdate:modelValue"], Se = ["onUpdate:modelValue", "disabled"], Ce = {
26
+ }, Ce = ["onUpdate:modelValue"], we = ["onUpdate:modelValue", "disabled"], Te = {
25
27
  class: "log__rule-color",
26
28
  title: "字体色"
27
- }, we = ["onUpdate:modelValue"], Te = ["onUpdate:modelValue", "disabled"], Ee = ["disabled", "onClick"], De = ["disabled", "onClick"], Oe = ["onClick"], ke = ["title", "onClick"], Ae = ["title", "onClick"], je = ["title", "onClick"], Me = { class: "log__ln" }, Ne = {
29
+ }, Ee = ["onUpdate:modelValue"], De = ["onUpdate:modelValue", "disabled"], Oe = ["disabled", "onClick"], ke = ["disabled", "onClick"], Ae = ["onClick"], je = ["title", "onClick"], Me = ["title", "onClick"], Ne = ["title", "onClick"], Pe = { class: "log__ln" }, Fe = {
28
30
  key: 0,
29
31
  class: "log__fold-cell"
30
- }, Pe = ["title", "onClick"], Fe = ["innerHTML"], Ie = ["onClick"], Le = 64 * 1024 * 1024, S = 19, Re = 12, C = 10, ze = 2, w = /*@__PURE__*/ u({
32
+ }, Ie = ["title", "onClick"], Le = ["onClick"], Re = 64 * 1024 * 1024, w = 19, ze = 12, T = 10, Be = 2, Ve = /*@__PURE__*/ p({
31
33
  __name: "LogViewer",
32
34
  props: {
33
35
  url: {},
34
36
  name: {},
35
37
  size: {}
36
38
  },
37
- setup(u) {
38
- let w = u, T = h("loading"), E = h(""), D = h([]), O = h(null), k = h(0), A = h(400), j = null, Be = /^[ \t]+at\s+\S+[.(]/, M = /^[ \t]+File\s["']/, Ve = /^[ \t]+from\s+\S+:\d+/, He = /^[ \t]*\.\.\.\s+\d+\s+more\b/, Ue = /^[ \t]+--- End of /;
39
- function N(e) {
40
- return Be.test(e) || M.test(e) || Ve.test(e) || He.test(e) || Ue.test(e);
39
+ setup(p, { expose: Ve }) {
40
+ let E = p, D = _("loading"), O = _(""), k = _([]), A = ne(null), j = _(null), M = _(0), N = _(400), P = null, He = /^[ \t]+at\s+\S+[.(]/, F = /^[ \t]+File\s["']/, Ue = /^[ \t]+from\s+\S+:\d+/, We = /^[ \t]*\.\.\.\s+\d+\s+more\b/, Ge = /^[ \t]+--- End of /;
41
+ function I(e) {
42
+ return He.test(e) || F.test(e) || Ue.test(e) || We.test(e) || Ge.test(e);
41
43
  }
42
- let P = i(() => {
43
- let e = D.value, t = e.length, n = [], r = 0;
44
+ let L = s(() => {
45
+ let e = k.value, t = e.length, n = [], r = 0;
44
46
  for (; r < t;) {
45
- if (!N(e[r])) {
47
+ if (!I(e[r])) {
46
48
  r++;
47
49
  continue;
48
50
  }
49
- let i = r, a = M.test(e[r]);
51
+ let i = r, a = F.test(e[r]);
50
52
  for (r++; r < t;) {
51
53
  let t = e[r];
52
- if (N(t)) a = M.test(t), r++;
54
+ if (I(t)) a = F.test(t), r++;
53
55
  else if (a && /^[ \t]+\S/.test(t)) a = !1, r++;
54
56
  else break;
55
57
  }
56
- let o = r - 1, s = i - 1, c = s >= 0 && !N(e[s]) && e[s].trim() !== "" ? i : i + 1;
57
- o - c + 1 >= ze && n.push({
58
+ let o = r - 1, s = i - 1, c = s >= 0 && !I(e[s]) && e[s].trim() !== "" ? i : i + 1;
59
+ o - c + 1 >= Be && n.push({
58
60
  header: c - 1,
59
61
  frameStart: c,
60
62
  frameEnd: o
61
63
  });
62
64
  }
63
65
  return n;
64
- }), F = i(() => P.value.length > 0), We = i(() => {
66
+ }), R = s(() => L.value.length > 0), Ke = s(() => {
65
67
  let e = /* @__PURE__ */ new Map();
66
- return P.value.forEach((t, n) => e.set(t.header, n)), e;
68
+ return L.value.forEach((t, n) => e.set(t.header, n)), e;
67
69
  });
68
- function I(e) {
69
- let t = P.value, n = 0, r = t.length - 1;
70
+ function z(e) {
71
+ let t = L.value, n = 0, r = t.length - 1;
70
72
  for (; n <= r;) {
71
73
  let i = n + r >> 1, a = t[i];
72
74
  if (e < a.header) r = i - 1;
@@ -75,20 +77,20 @@ var re = { class: "log" }, ie = {
75
77
  }
76
78
  return -1;
77
79
  }
78
- let L = h(/* @__PURE__ */ new Set()), R = i(() => F.value && L.value.size === P.value.length);
79
- function Ge(e) {
80
- let t = new Set(L.value);
81
- t.has(e) ? t.delete(e) : t.add(e), L.value = t;
80
+ let B = _(/* @__PURE__ */ new Set()), V = s(() => R.value && B.value.size === L.value.length);
81
+ function qe(e) {
82
+ let t = new Set(B.value);
83
+ t.has(e) ? t.delete(e) : t.add(e), B.value = t;
82
84
  }
83
- function Ke() {
84
- L.value = R.value ? /* @__PURE__ */ new Set() : new Set(P.value.map((e, t) => t));
85
+ function Je() {
86
+ B.value = V.value ? /* @__PURE__ */ new Set() : new Set(L.value.map((e, t) => t));
85
87
  }
86
- function z(e) {
87
- return !(L.value.has(e) || U.value && tt.value.has(e));
88
+ function Ye(e) {
89
+ return !(B.value.has(e) || G.value && it.value.has(e));
88
90
  }
89
- let { rules: B, add: qe, remove: Je, move: Ye } = n(), V = h(!1), Xe = i(() => {
91
+ let { rules: H, add: Xe, remove: Ze, move: Qe } = a(), U = _(!1), $e = s(() => {
90
92
  let e = [];
91
- for (let t of B.value) {
93
+ for (let t of H.value) {
92
94
  if (!t.enabled || !t.pattern || !(t.bgOn || t.fgOn)) continue;
93
95
  let n;
94
96
  if (t.regex) try {
@@ -112,14 +114,14 @@ var re = { class: "log" }, ie = {
112
114
  }
113
115
  return e;
114
116
  });
115
- function Ze(e) {
116
- for (let t of Xe.value) if (t.test(e)) return {
117
+ function et(e) {
118
+ for (let t of $e.value) if (t.test(e)) return {
117
119
  bg: t.bg,
118
120
  fg: t.fg
119
121
  };
120
122
  return null;
121
123
  }
122
- function Qe(e) {
124
+ function tt(e) {
123
125
  if (!e.regex || !e.pattern) return !1;
124
126
  try {
125
127
  return new RegExp(e.pattern), !1;
@@ -127,66 +129,66 @@ var re = { class: "log" }, ie = {
127
129
  return !0;
128
130
  }
129
131
  }
130
- let H = h(""), U = h(""), W;
131
- b(H, (e) => {
132
- clearTimeout(W), W = setTimeout(() => {
133
- U.value = e, q.value = 0, Y.value = /* @__PURE__ */ new Set();
132
+ let W = _(""), G = _(""), K;
133
+ S(W, (e) => {
134
+ clearTimeout(K), K = setTimeout(() => {
135
+ G.value = e, Y.value = 0, Z.value = /* @__PURE__ */ new Set();
134
136
  }, 160);
135
137
  });
136
- function $e() {
137
- H.value = "", clearTimeout(W), U.value = "", q.value = 0, Y.value = /* @__PURE__ */ new Set();
138
+ function nt() {
139
+ W.value = "", clearTimeout(K), G.value = "", Y.value = 0, Z.value = /* @__PURE__ */ new Set();
138
140
  }
139
- let G = h(!1), K = h(!1), q = h(0), J = i(() => {
140
- let e = U.value.toLowerCase();
141
+ let q = _(!1), J = _(!1), Y = _(0), X = s(() => {
142
+ let e = G.value.toLowerCase();
141
143
  if (!e) return [];
142
- let t = [], n = D.value;
144
+ let t = [], n = k.value;
143
145
  for (let r = 0; r < n.length; r++) n[r].toLowerCase().includes(e) && t.push(r);
144
146
  return t;
145
147
  });
146
- function et(e, t) {
148
+ function rt(e, t) {
147
149
  return t ? e.toLowerCase().includes(t.toLowerCase()) : !1;
148
150
  }
149
- let tt = i(() => {
151
+ let it = s(() => {
150
152
  let e = /* @__PURE__ */ new Set();
151
- if (!U.value) return e;
152
- for (let t of J.value) {
153
- let n = I(t);
153
+ if (!G.value) return e;
154
+ for (let t of X.value) {
155
+ let n = z(t);
154
156
  n >= 0 && e.add(n);
155
157
  }
156
158
  return e;
157
- }), nt = i(() => {
158
- let e = J.value;
159
- return e.length ? e[Math.min(q.value, e.length - 1)] : -1;
160
- }), rt = /\b(?:ERROR|FATAL|SEVERE|CRITICAL|PANIC|FAILED|FAILURE)\b|\b\w*(?:Exception|Error)\b|\bTraceback\b|\bCaused by\b|^\s*panic:/, it = i(() => {
161
- if (!K.value) return [];
162
- let e = D.value, t = We.value, n = [];
163
- for (let r = 0; r < e.length; r++) (t.has(r) || rt.test(e[r])) && n.push(r);
159
+ }), at = s(() => {
160
+ let e = X.value;
161
+ return e.length ? e[Math.min(Y.value, e.length - 1)] : -1;
162
+ }), ot = /\b(?:ERROR|FATAL|SEVERE|CRITICAL|PANIC|FAILED|FAILURE)\b|\b\w*(?:Exception|Error)\b|\bTraceback\b|\bCaused by\b|^\s*panic:/, st = s(() => {
163
+ if (!J.value) return [];
164
+ let e = k.value, t = Ke.value, n = [];
165
+ for (let r = 0; r < e.length; r++) (t.has(r) || ot.test(e[r])) && n.push(r);
164
166
  return n;
165
- }), at = i(() => new Set(it.value)), ot = i(() => G.value && U.value !== ""), st = i(() => {
166
- let e = ot.value, t = K.value;
167
+ }), ct = s(() => new Set(st.value)), lt = s(() => q.value && G.value !== ""), ut = s(() => {
168
+ let e = lt.value, t = J.value;
167
169
  if (!e && !t) return null;
168
170
  if (e && t) {
169
- let e = at.value;
170
- return J.value.filter((t) => e.has(t));
171
+ let e = ct.value;
172
+ return X.value.filter((t) => e.has(t));
171
173
  }
172
- return t ? it.value : J.value;
173
- }), ct = i(() => ot.value), Y = h(/* @__PURE__ */ new Set());
174
- b([K, G], () => {
175
- Y.value = /* @__PURE__ */ new Set();
174
+ return t ? st.value : X.value;
175
+ }), dt = s(() => lt.value), Z = _(/* @__PURE__ */ new Set());
176
+ S([J, q], () => {
177
+ Z.value = /* @__PURE__ */ new Set();
176
178
  });
177
- function X(e, t, n) {
179
+ function ft(e, t, n) {
178
180
  let r = e + 1, i = t - 1;
179
181
  if (i < r) return;
180
182
  let a = r, o = i;
181
- n === "down" ? o = Math.min(i, r + C - 1) : n === "up" && (a = Math.max(r, i - C + 1));
182
- let s = new Set(Y.value);
183
+ n === "down" ? o = Math.min(i, r + T - 1) : n === "up" && (a = Math.max(r, i - T + 1));
184
+ let s = new Set(Z.value);
183
185
  for (let e = a; e <= o; e++) s.add(e);
184
- Y.value = s;
186
+ Z.value = s;
185
187
  }
186
- let lt = i(() => {
187
- let e = P.value, t = D.value.length, n = [], r = 0, i = 0;
188
+ let Q = s(() => {
189
+ let e = L.value, t = k.value.length, n = [], r = 0, i = 0;
188
190
  for (let t = 0; t < e.length; t++) {
189
- if (!z(t)) continue;
191
+ if (!Ye(t)) continue;
190
192
  let a = e[t];
191
193
  a.frameStart > i && (n.push({
192
194
  o0: i,
@@ -202,14 +204,14 @@ var re = { class: "log" }, ie = {
202
204
  runs: n,
203
205
  total: r
204
206
  };
205
- }), Z = i(() => {
206
- let e = st.value;
207
+ }), $ = s(() => {
208
+ let e = ut.value;
207
209
  if (e === null) return null;
208
- let t = D.value.length, n = P.value, r = [];
209
- if (ct.value) {
210
+ let t = k.value.length, n = L.value, r = [];
211
+ if (dt.value) {
210
212
  let t = /* @__PURE__ */ new Set();
211
213
  for (let n of e) {
212
- let e = I(n);
214
+ let e = z(n);
213
215
  e >= 0 && t.add(e);
214
216
  }
215
217
  for (let e of t) r.push([n[e].header, n[e].frameEnd]);
@@ -226,7 +228,7 @@ var re = { class: "log" }, ie = {
226
228
  return !1;
227
229
  }, a = [];
228
230
  for (let t of e) i(t) || a.push(t);
229
- for (let e of Y.value) i(e) || a.push(e);
231
+ for (let e of Z.value) i(e) || a.push(e);
230
232
  a.sort((e, t) => e - t);
231
233
  let o = [], s = 0, c = 0, l = r.length ? r[0][0] : Infinity, u = -1;
232
234
  for (; s < r.length || c < a.length;) {
@@ -252,21 +254,21 @@ var re = { class: "log" }, ie = {
252
254
  items: d,
253
255
  key: f
254
256
  };
255
- }), ut = i(() => Z.value !== null), dt = i(() => Z.value ? Z.value.items.length : lt.value.total);
256
- function ft(e) {
257
- let t = D.value[e] ?? "", n = We.value.get(e);
257
+ }), pt = s(() => $.value !== null), mt = s(() => $.value ? $.value.items.length : Q.value.total);
258
+ function ht(e) {
259
+ let t = k.value[e] ?? "", n = Ke.value.get(e);
258
260
  if (n !== void 0) {
259
- let r = P.value[n];
261
+ let r = L.value[n];
260
262
  return {
261
263
  n: e + 1,
262
264
  text: t,
263
265
  kind: "header",
264
- collapsed: Z.value ? !1 : z(n),
266
+ collapsed: $.value ? !1 : Ye(n),
265
267
  count: r.frameEnd - r.frameStart + 1,
266
268
  gid: n
267
269
  };
268
270
  }
269
- let r = I(e), i = r >= 0 && e >= P.value[r].frameStart ? "frame" : "plain";
271
+ let r = z(e), i = r >= 0 && e >= L.value[r].frameStart ? "frame" : "plain";
270
272
  return {
271
273
  n: e + 1,
272
274
  text: t,
@@ -276,7 +278,7 @@ var re = { class: "log" }, ie = {
276
278
  gid: -1
277
279
  };
278
280
  }
279
- function pt(e, t) {
281
+ function gt(e, t) {
280
282
  let n = 0, r = e.length - 1, i = 0;
281
283
  for (; n <= r;) {
282
284
  let a = n + r >> 1;
@@ -285,23 +287,23 @@ var re = { class: "log" }, ie = {
285
287
  let a = e[i];
286
288
  return a ? a.o0 + (t - a.d0) : t;
287
289
  }
288
- let mt = i(() => Math.max(0, Math.floor(k.value / S) - Re)), ht = i(() => Math.min(dt.value, Math.ceil((k.value + A.value) / S) + Re));
289
- function gt(e, t) {
290
- let n = ft(t);
290
+ let _t = s(() => Math.max(0, Math.floor(M.value / w) - ze)), vt = s(() => Math.min(mt.value, Math.ceil((M.value + N.value) / w) + ze));
291
+ function yt(e, t) {
292
+ let n = ht(t);
291
293
  return {
292
294
  i: e,
293
295
  isGap: !1,
294
296
  ...n,
295
- style: Ze(n.text),
296
- context: Z.value !== null && Y.value.has(t) && !et(n.text, U.value),
297
+ style: et(n.text),
298
+ context: $.value !== null && Z.value.has(t) && !rt(n.text, G.value),
297
299
  top: 0,
298
300
  bottom: 0,
299
301
  size: 0,
300
302
  step: 0
301
303
  };
302
304
  }
303
- let _t = i(() => {
304
- let e = [], t = mt.value, n = ht.value, r = Z.value;
305
+ let bt = s(() => {
306
+ let e = [], t = _t.value, n = vt.value, r = $.value;
305
307
  if (r) for (let i = t; i < n; i++) {
306
308
  let t = r.items[i];
307
309
  t && (t.t === "gap" ? e.push({
@@ -318,31 +320,21 @@ var re = { class: "log" }, ie = {
318
320
  top: t.top,
319
321
  bottom: t.bottom,
320
322
  size: t.size,
321
- step: Math.min(C, t.size)
322
- }) : e.push(gt(i, t.orig)));
323
+ step: Math.min(T, t.size)
324
+ }) : e.push(yt(i, t.orig)));
323
325
  }
324
326
  else {
325
- let r = lt.value.runs;
326
- for (let i = t; i < n; i++) e.push(gt(i, pt(r, i)));
327
+ let r = Q.value.runs;
328
+ for (let i = t; i < n; i++) e.push(yt(i, gt(r, i)));
327
329
  }
328
330
  return e;
329
331
  });
330
- function Q(e) {
331
- return e.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
332
- }
333
- function vt(e) {
334
- let t = U.value;
335
- if (!t) return Q(e);
336
- let n = e.toLowerCase(), r = t.toLowerCase(), i = "", a = 0, o = n.indexOf(r, a);
337
- for (; o !== -1;) i += Q(e.slice(a, o)), i += "<mark class=\"log__hit\">" + Q(e.slice(o, o + t.length)) + "</mark>", a = o + t.length, o = n.indexOf(r, a);
338
- return i += Q(e.slice(a)), i;
339
- }
340
- function yt(e) {
341
- let t = O.value;
342
- t && (t.scrollTop = Math.max(0, e * S - A.value / 2 + S));
332
+ function xt(e) {
333
+ let t = j.value;
334
+ t && (t.scrollTop = Math.max(0, e * w - N.value / 2 + w));
343
335
  }
344
- function bt(e) {
345
- let t = Z.value;
336
+ function St(e) {
337
+ let t = $.value;
346
338
  if (t) {
347
339
  let n = t.key, r = 0, i = n.length - 1;
348
340
  for (; r <= i;) {
@@ -352,9 +344,9 @@ var re = { class: "log" }, ie = {
352
344
  }
353
345
  return -1;
354
346
  }
355
- let n = I(e);
356
- n >= 0 && e >= P.value[n].frameStart && z(n) && (e = P.value[n].header);
357
- let r = lt.value.runs, i = 0, a = r.length - 1;
347
+ let n = z(e);
348
+ n >= 0 && e >= L.value[n].frameStart && Ye(n) && (e = L.value[n].header);
349
+ let r = Q.value.runs, i = 0, a = r.length - 1;
358
350
  for (; i <= a;) {
359
351
  let t = i + a >> 1;
360
352
  if (e < r[t].o0) a = t - 1;
@@ -363,310 +355,322 @@ var re = { class: "log" }, ie = {
363
355
  }
364
356
  return -1;
365
357
  }
366
- function xt(e) {
367
- let t = J.value;
358
+ function Ct(e) {
359
+ let t = X.value;
368
360
  if (!t.length) return;
369
- q.value = (q.value + e + t.length) % t.length;
370
- let n = bt(t[q.value]);
371
- n >= 0 && yt(n);
361
+ Y.value = (Y.value + e + t.length) % t.length;
362
+ let n = St(t[Y.value]);
363
+ n >= 0 && xt(n);
372
364
  }
373
- let St = h("");
374
- function Ct() {
375
- let e = parseInt(St.value, 10);
365
+ let wt = _("");
366
+ function Tt() {
367
+ let e = parseInt(wt.value, 10);
376
368
  if (!Number.isFinite(e)) return;
377
- let t = bt(Math.max(0, Math.min(D.value.length - 1, e - 1)));
378
- t >= 0 && yt(t);
369
+ let t = St(Math.max(0, Math.min(k.value.length - 1, e - 1)));
370
+ t >= 0 && xt(t);
379
371
  }
380
- function wt() {
381
- O.value && (k.value = O.value.scrollTop);
372
+ function Et() {
373
+ j.value && (M.value = j.value.scrollTop);
382
374
  }
383
- async function $() {
384
- if (w.url) {
385
- T.value = "loading", E.value = "";
375
+ async function Dt() {
376
+ if (E.url) {
377
+ D.value = "loading", O.value = "", A.value = null;
386
378
  try {
387
- let e = await fetch(w.url);
379
+ let e = await fetch(E.url);
388
380
  if (!e.ok) throw Error(`HTTP ${e.status}`);
389
- D.value = (await e.text()).split("\n"), D.value.length > 1 && D.value[D.value.length - 1] === "" && D.value.pop(), L.value = /* @__PURE__ */ new Set(), Y.value = /* @__PURE__ */ new Set(), k.value = 0, O.value && (O.value.scrollTop = 0), T.value = "ready";
381
+ let r = await e.text(), i = t(r) ? n(r) : null, a = i ? [...i.lines] : r.split("\n");
382
+ if (a.length > 1) {
383
+ let e = a[a.length - 1];
384
+ (typeof e == "string" ? e === "" : e.text === "") && a.pop();
385
+ }
386
+ i ? (A.value = {
387
+ ...i,
388
+ lines: a,
389
+ text: a.map((e) => e.text).join("\n")
390
+ }, k.value = A.value.lines.map((e) => e.text)) : k.value = a, B.value = /* @__PURE__ */ new Set(), Z.value = /* @__PURE__ */ new Set(), M.value = 0, j.value && (j.value.scrollTop = 0), D.value = "ready";
390
391
  } catch (e) {
391
- E.value = e instanceof Error ? e.message : String(e), T.value = "error";
392
+ O.value = e instanceof Error ? e.message : String(e), D.value = "error";
392
393
  }
393
394
  }
394
395
  }
395
- function Tt() {
396
- if (w.size && w.size > Le) {
397
- T.value = "gate";
396
+ function Ot() {
397
+ if (k.value = [], A.value = null, E.size && E.size > Re) {
398
+ D.value = "gate";
398
399
  return;
399
400
  }
400
- $();
401
+ Dt();
401
402
  }
402
- return b(O, (e) => {
403
- j?.disconnect(), e && typeof ResizeObserver < "u" && (j = new ResizeObserver(() => {
404
- O.value && (A.value = O.value.clientHeight);
405
- }), j.observe(e), A.value = e.clientHeight);
406
- }, { flush: "post" }), b(() => w.url, Tt, { immediate: !0 }), p(() => {
407
- clearTimeout(W), j?.disconnect();
408
- }), (n, i) => (m(), o("div", re, [T.value === "loading" ? (m(), o("p", ie, "正在加载…")) : T.value === "gate" ? (m(), o("div", ae, [s("p", null, "该文件较大(" + g(_(e)(w.size)) + "),将在浏览器内加载。是否继续?", 1), s("button", {
403
+ return S(j, (e) => {
404
+ P?.disconnect(), e && typeof ResizeObserver < "u" && (P = new ResizeObserver(() => {
405
+ j.value && (N.value = j.value.clientHeight);
406
+ }), P.observe(e), N.value = e.clientHeight);
407
+ }, { flush: "post" }), S(() => E.url, Ot, { immediate: !0 }), ee(() => {
408
+ clearTimeout(K), P?.disconnect();
409
+ }), Ve({ copyText: () => k.value.join("\n") }), (t, n) => (g(), l("div", ae, [D.value === "loading" ? (g(), l("p", oe, "正在加载…")) : D.value === "gate" ? (g(), l("div", se, [u("p", null, "该文件较大(" + v(y(e)(E.size)) + "),将在浏览器内加载。是否继续?", 1), u("button", {
409
410
  type: "button",
410
411
  class: "log__btn",
411
- onClick: $
412
- }, "加载并预览")])) : T.value === "error" ? (m(), o("div", oe, [s("p", null, "加载失败:" + g(E.value), 1), s("button", {
412
+ onClick: Dt
413
+ }, "加载并预览")])) : D.value === "error" ? (g(), l("div", ce, [u("p", null, "加载失败:" + v(O.value), 1), u("button", {
413
414
  type: "button",
414
415
  class: "log__btn",
415
- onClick: $
416
- }, "重试")])) : (m(), o(r, { key: 3 }, [s("div", se, [
417
- s("div", ce, [x(s("input", {
418
- "onUpdate:modelValue": i[0] ||= (e) => H.value = e,
416
+ onClick: Dt
417
+ }, "重试")])) : (g(), l(o, { key: 3 }, [u("div", le, [
418
+ u("div", ue, [C(u("input", {
419
+ "onUpdate:modelValue": n[0] ||= (e) => W.value = e,
419
420
  class: "log__search",
420
421
  type: "text",
421
422
  placeholder: "搜索…",
422
423
  "aria-label": "搜索",
423
- onKeydown: te($e, ["esc"])
424
- }, null, 544), [[y, H.value]]), H.value ? (m(), o("button", {
424
+ onKeydown: re(nt, ["esc"])
425
+ }, null, 544), [[x, W.value]]), W.value ? (g(), l("button", {
425
426
  key: 0,
426
427
  type: "button",
427
428
  class: "log__clear",
428
429
  title: "清空搜索",
429
430
  "aria-label": "清空搜索",
430
- onClick: $e
431
- }, [l(t, {
431
+ onClick: nt
432
+ }, [f(r, {
432
433
  name: "close",
433
434
  size: 12
434
- })])) : a("", !0)]),
435
- U.value ? (m(), o("span", le, g(J.value.length ? q.value + 1 : 0) + "/" + g(J.value.length), 1)) : a("", !0),
436
- s("button", {
435
+ })])) : c("", !0)]),
436
+ G.value ? (g(), l("span", de, v(X.value.length ? Y.value + 1 : 0) + "/" + v(X.value.length), 1)) : c("", !0),
437
+ u("button", {
437
438
  type: "button",
438
439
  class: "log__nav",
439
440
  title: "上一处",
440
- disabled: !J.value.length,
441
- onClick: i[1] ||= (e) => xt(-1)
442
- }, " ↑ ", 8, ue),
443
- s("button", {
441
+ disabled: !X.value.length,
442
+ onClick: n[1] ||= (e) => Ct(-1)
443
+ }, " ↑ ", 8, fe),
444
+ u("button", {
444
445
  type: "button",
445
446
  class: "log__nav",
446
447
  title: "下一处",
447
- disabled: !J.value.length,
448
- onClick: i[2] ||= (e) => xt(1)
449
- }, " ↓ ", 8, de),
450
- s("button", {
448
+ disabled: !X.value.length,
449
+ onClick: n[2] ||= (e) => Ct(1)
450
+ }, " ↓ ", 8, pe),
451
+ u("button", {
451
452
  type: "button",
452
- class: d(["log__nav log__nav--text", { "log__nav--on": G.value }]),
453
- disabled: !U.value,
453
+ class: m(["log__nav log__nav--text", { "log__nav--on": q.value }]),
454
+ disabled: !G.value,
454
455
  title: "只看匹配行(命中的堆栈整条保留,行间可展开上下文)",
455
- onClick: i[3] ||= (e) => G.value = !G.value
456
- }, " 过滤 ", 10, fe),
457
- s("button", {
456
+ onClick: n[3] ||= (e) => q.value = !q.value
457
+ }, " 过滤 ", 10, me),
458
+ u("button", {
458
459
  type: "button",
459
- class: d(["log__nav log__nav--text", { "log__nav--on": K.value }]),
460
+ class: m(["log__nav log__nav--text", { "log__nav--on": J.value }]),
460
461
  title: "只显示异常/错误行(异常头、ERROR/FATAL、*Exception/*Error 等;可与搜索过滤叠加)",
461
- onClick: i[4] ||= (e) => K.value = !K.value
462
+ onClick: n[4] ||= (e) => J.value = !J.value
462
463
  }, " 只看异常 ", 2),
463
- F.value ? (m(), o("button", {
464
+ R.value ? (g(), l("button", {
464
465
  key: 1,
465
466
  type: "button",
466
- class: d(["log__nav log__nav--text", { "log__nav--on": R.value }]),
467
- title: `共 ${P.value.length} 处调用堆栈,点击${R.value ? "折叠" : "展开"}全部`,
468
- onClick: Ke
469
- }, g(R.value ? "折叠堆栈" : "展开堆栈"), 11, pe)) : a("", !0),
470
- s("button", {
467
+ class: m(["log__nav log__nav--text", { "log__nav--on": V.value }]),
468
+ title: `共 ${L.value.length} 处调用堆栈,点击${V.value ? "折叠" : "展开"}全部`,
469
+ onClick: Je
470
+ }, v(V.value ? "折叠堆栈" : "展开堆栈"), 11, he)) : c("", !0),
471
+ u("button", {
471
472
  type: "button",
472
- class: d(["log__nav log__nav--text", { "log__nav--on": V.value || Xe.value.length > 0 }]),
473
+ class: m(["log__nav log__nav--text", { "log__nav--on": U.value || $e.value.length > 0 }]),
473
474
  title: "按规则给行上色",
474
- onClick: i[5] ||= (e) => V.value = !V.value
475
+ onClick: n[5] ||= (e) => U.value = !U.value
475
476
  }, " 上色 ", 2),
476
- i[15] ||= s("span", { class: "log__spacer" }, null, -1),
477
- x(s("input", {
478
- "onUpdate:modelValue": i[6] ||= (e) => St.value = e,
477
+ n[15] ||= u("span", { class: "log__spacer" }, null, -1),
478
+ C(u("input", {
479
+ "onUpdate:modelValue": n[6] ||= (e) => wt.value = e,
479
480
  class: "log__goto",
480
481
  type: "text",
481
482
  inputmode: "numeric",
482
483
  placeholder: "行号",
483
484
  "aria-label": "跳转到行",
484
- onKeydown: te(Ct, ["enter"])
485
- }, null, 544), [[y, St.value]]),
486
- s("span", me, [c(g(D.value.length) + " 行", 1), F.value ? (m(), o(r, { key: 0 }, [c(" · " + g(P.value.length) + " 堆栈", 1)], 64)) : a("", !0)]),
487
- V.value ? (m(), o("div", {
485
+ onKeydown: re(Tt, ["enter"])
486
+ }, null, 544), [[x, wt.value]]),
487
+ u("span", ge, [d(v(k.value.length) + " 行", 1), R.value ? (g(), l(o, { key: 0 }, [d(" · " + v(L.value.length) + " 堆栈", 1)], 64)) : c("", !0)]),
488
+ U.value ? (g(), l("div", {
488
489
  key: 2,
489
490
  class: "log__overlay",
490
- onClick: i[7] ||= (e) => V.value = !1
491
- })) : a("", !0),
492
- V.value ? (m(), o("div", {
491
+ onClick: n[7] ||= (e) => U.value = !1
492
+ })) : c("", !0),
493
+ U.value ? (g(), l("div", {
493
494
  key: 3,
494
495
  class: "log__rules",
495
- onClick: i[9] ||= ne(() => {}, ["stop"])
496
+ onClick: n[9] ||= ie(() => {}, ["stop"])
496
497
  }, [
497
- i[14] ||= s("div", { class: "log__rules-head" }, [s("span", { class: "log__rules-title" }, "行上色规则"), s("span", { class: "log__rules-hint" }, "从上到下,首个匹配生效")], -1),
498
- _(B).length ? a("", !0) : (m(), o("p", he, [...i[10] ||= [
499
- c(" 还没有规则。添加一条,用关键字或正则给匹配行上色(如 ", -1),
500
- s("code", null, "ERROR", -1),
501
- c(" 标红)。 ", -1)
498
+ n[14] ||= u("div", { class: "log__rules-head" }, [u("span", { class: "log__rules-title" }, "行上色规则"), u("span", { class: "log__rules-hint" }, "从上到下,首个匹配生效")], -1),
499
+ y(H).length ? c("", !0) : (g(), l("p", _e, [...n[10] ||= [
500
+ d(" 还没有规则。添加一条,用关键字或正则给匹配行上色(如 ", -1),
501
+ u("code", null, "ERROR", -1),
502
+ d(" 标红)。 ", -1)
502
503
  ]])),
503
- (m(!0), o(r, null, ee(_(B), (e, n) => (m(), o("div", {
504
+ (g(!0), l(o, null, te(y(H), (e, t) => (g(), l("div", {
504
505
  key: e.id,
505
506
  class: "log__rule"
506
507
  }, [
507
- x(s("input", {
508
+ C(u("input", {
508
509
  "onUpdate:modelValue": (t) => e.enabled = t,
509
510
  type: "checkbox",
510
511
  title: "启用该规则"
511
- }, null, 8, ge), [[v, e.enabled]]),
512
- x(s("input", {
512
+ }, null, 8, ve), [[b, e.enabled]]),
513
+ C(u("input", {
513
514
  "onUpdate:modelValue": (t) => e.pattern = t,
514
- class: d(["log__rule-pat", { "log__rule-pat--bad": Qe(e) }]),
515
+ class: m(["log__rule-pat", { "log__rule-pat--bad": tt(e) }]),
515
516
  type: "text",
516
517
  placeholder: "关键字或正则"
517
- }, null, 10, _e), [[y, e.pattern]]),
518
- s("button", {
518
+ }, null, 10, ye), [[x, e.pattern]]),
519
+ u("button", {
519
520
  type: "button",
520
- class: d(["log__rule-tog", { "log__rule-tog--on": e.regex }]),
521
+ class: m(["log__rule-tog", { "log__rule-tog--on": e.regex }]),
521
522
  title: "按正则匹配",
522
523
  onClick: (t) => e.regex = !e.regex
523
- }, " .* ", 10, ve),
524
- s("button", {
524
+ }, " .* ", 10, be),
525
+ u("button", {
525
526
  type: "button",
526
- class: d(["log__rule-tog", { "log__rule-tog--on": e.caseSensitive }]),
527
+ class: m(["log__rule-tog", { "log__rule-tog--on": e.caseSensitive }]),
527
528
  title: "区分大小写",
528
529
  onClick: (t) => e.caseSensitive = !e.caseSensitive
529
- }, " Aa ", 10, ye),
530
- s("label", be, [
531
- x(s("input", {
530
+ }, " Aa ", 10, xe),
531
+ u("label", Se, [
532
+ C(u("input", {
532
533
  "onUpdate:modelValue": (t) => e.bgOn = t,
533
534
  type: "checkbox"
534
- }, null, 8, xe), [[v, e.bgOn]]),
535
- x(s("input", {
535
+ }, null, 8, Ce), [[b, e.bgOn]]),
536
+ C(u("input", {
536
537
  "onUpdate:modelValue": (t) => e.bg = t,
537
538
  type: "color",
538
539
  disabled: !e.bgOn
539
- }, null, 8, Se), [[y, e.bg]]),
540
- i[11] ||= s("span", null, "底", -1)
540
+ }, null, 8, we), [[x, e.bg]]),
541
+ n[11] ||= u("span", null, "底", -1)
541
542
  ]),
542
- s("label", Ce, [
543
- x(s("input", {
543
+ u("label", Te, [
544
+ C(u("input", {
544
545
  "onUpdate:modelValue": (t) => e.fgOn = t,
545
546
  type: "checkbox"
546
- }, null, 8, we), [[v, e.fgOn]]),
547
- x(s("input", {
547
+ }, null, 8, Ee), [[b, e.fgOn]]),
548
+ C(u("input", {
548
549
  "onUpdate:modelValue": (t) => e.fg = t,
549
550
  type: "color",
550
551
  disabled: !e.fgOn
551
- }, null, 8, Te), [[y, e.fg]]),
552
- i[12] ||= s("span", null, "字", -1)
552
+ }, null, 8, De), [[x, e.fg]]),
553
+ n[12] ||= u("span", null, "字", -1)
553
554
  ]),
554
- s("button", {
555
+ u("button", {
555
556
  type: "button",
556
557
  class: "log__rule-ic",
557
558
  title: "上移",
558
- disabled: n === 0,
559
- onClick: (t) => _(Ye)(e.id, -1)
560
- }, [l(t, {
559
+ disabled: t === 0,
560
+ onClick: (t) => y(Qe)(e.id, -1)
561
+ }, [f(r, {
561
562
  name: "arrowUp",
562
563
  size: 12
563
- })], 8, Ee),
564
- s("button", {
564
+ })], 8, Oe),
565
+ u("button", {
565
566
  type: "button",
566
567
  class: "log__rule-ic",
567
568
  title: "下移",
568
- disabled: n === _(B).length - 1,
569
- onClick: (t) => _(Ye)(e.id, 1)
570
- }, [l(t, {
569
+ disabled: t === y(H).length - 1,
570
+ onClick: (t) => y(Qe)(e.id, 1)
571
+ }, [f(r, {
571
572
  name: "arrowDown",
572
573
  size: 12
573
- })], 8, De),
574
- s("button", {
574
+ })], 8, ke),
575
+ u("button", {
575
576
  type: "button",
576
577
  class: "log__rule-ic log__rule-del",
577
578
  title: "删除",
578
- onClick: (t) => _(Je)(e.id)
579
- }, [l(t, {
579
+ onClick: (t) => y(Ze)(e.id)
580
+ }, [f(r, {
580
581
  name: "trash",
581
582
  size: 12
582
- })], 8, Oe)
583
+ })], 8, Ae)
583
584
  ]))), 128)),
584
- s("button", {
585
+ u("button", {
585
586
  type: "button",
586
587
  class: "log__rules-add",
587
- onClick: i[8] ||= (...e) => _(qe) && _(qe)(...e)
588
- }, [l(t, {
588
+ onClick: n[8] ||= (...e) => y(Xe) && y(Xe)(...e)
589
+ }, [f(r, {
589
590
  name: "plus",
590
591
  size: 12
591
- }), i[13] ||= c(" 添加规则 ", -1)])
592
- ])) : a("", !0)
593
- ]), s("div", {
592
+ }), n[13] ||= d(" 添加规则 ", -1)])
593
+ ])) : c("", !0)
594
+ ]), u("div", {
594
595
  ref_key: "scrollEl",
595
- ref: O,
596
+ ref: j,
596
597
  class: "log__scroll",
597
- onScroll: wt
598
- }, [s("div", {
598
+ onScroll: Et
599
+ }, [u("div", {
599
600
  class: "log__sizer",
600
- style: f({ height: dt.value * S + "px" })
601
- }, [s("div", {
601
+ style: h({ height: mt.value * w + "px" })
602
+ }, [u("div", {
602
603
  class: "log__rows",
603
- style: f({ paddingTop: mt.value * S + "px" })
604
- }, [(m(!0), o(r, null, ee(_t.value, (e) => (m(), o("div", {
604
+ style: h({ paddingTop: _t.value * w + "px" })
605
+ }, [(g(!0), l(o, null, te(bt.value, (e) => (g(), l("div", {
605
606
  key: e.i,
606
- class: d(["log__row", {
607
+ class: m(["log__row", {
607
608
  log__gaprow: e.isGap,
608
- "log__row--active": !e.isGap && e.n - 1 === nt.value,
609
+ "log__row--active": !e.isGap && e.n - 1 === at.value,
609
610
  "log__row--header": !e.isGap && e.kind === "header",
610
611
  "log__row--frame": !e.isGap && e.kind === "frame",
611
612
  "log__row--context": e.context
612
613
  }]),
613
- style: f(!e.isGap && e.style && e.style.bg ? { background: e.style.bg } : void 0)
614
- }, [e.isGap ? (m(), o(r, { key: 0 }, [
615
- e.size > C ? (m(), o("button", {
614
+ style: h(!e.isGap && e.style && e.style.bg ? { background: e.style.bg } : void 0)
615
+ }, [e.isGap ? (g(), l(o, { key: 0 }, [
616
+ e.size > T ? (g(), l("button", {
616
617
  key: 0,
617
618
  type: "button",
618
619
  class: "log__gapbtn",
619
620
  title: `向下展开 ${e.step} 行(上方匹配之后)`,
620
- onClick: (t) => X(e.top, e.bottom, "down")
621
- }, [l(t, {
621
+ onClick: (t) => ft(e.top, e.bottom, "down")
622
+ }, [f(r, {
622
623
  name: "chevronDown",
623
624
  size: 12
624
- })], 8, ke)) : a("", !0),
625
- s("button", {
625
+ })], 8, je)) : c("", !0),
626
+ u("button", {
626
627
  type: "button",
627
628
  class: "log__gapmain",
628
629
  title: `展开全部 ${e.size} 行`,
629
- onClick: (t) => X(e.top, e.bottom, "all")
630
- }, " ⋯ " + g(e.size) + " 行 ", 9, Ae),
631
- e.size > C ? (m(), o("button", {
630
+ onClick: (t) => ft(e.top, e.bottom, "all")
631
+ }, " ⋯ " + v(e.size) + " 行 ", 9, Me),
632
+ e.size > T ? (g(), l("button", {
632
633
  key: 1,
633
634
  type: "button",
634
635
  class: "log__gapbtn log__gapbtn--up",
635
636
  title: `向上展开 ${e.step} 行(下方匹配之前)`,
636
- onClick: (t) => X(e.top, e.bottom, "up")
637
- }, [l(t, {
637
+ onClick: (t) => ft(e.top, e.bottom, "up")
638
+ }, [f(r, {
638
639
  name: "chevronDown",
639
640
  size: 12
640
- })], 8, je)) : a("", !0)
641
- ], 64)) : (m(), o(r, { key: 1 }, [
642
- s("span", Me, g(e.n), 1),
643
- F.value ? (m(), o("span", Ne, [e.kind === "header" && !ut.value ? (m(), o("button", {
641
+ })], 8, Ne)) : c("", !0)
642
+ ], 64)) : (g(), l(o, { key: 1 }, [
643
+ u("span", Pe, v(e.n), 1),
644
+ R.value ? (g(), l("span", Fe, [e.kind === "header" && !pt.value ? (g(), l("button", {
644
645
  key: 0,
645
646
  type: "button",
646
647
  class: "log__fold",
647
648
  title: e.collapsed ? "展开堆栈" : "折叠堆栈",
648
- onClick: (t) => Ge(e.gid)
649
- }, [l(t, {
649
+ onClick: (t) => qe(e.gid)
650
+ }, [f(r, {
650
651
  name: "chevronRight",
651
652
  size: 12,
652
- class: d(["log__chev", { "log__chev--open": !e.collapsed }])
653
- }, null, 8, ["class"])], 8, Pe)) : a("", !0)])) : a("", !0),
654
- s("span", {
653
+ class: m(["log__chev", { "log__chev--open": !e.collapsed }])
654
+ }, null, 8, ["class"])], 8, Ie)) : c("", !0)])) : c("", !0),
655
+ u("span", {
655
656
  class: "log__tx",
656
- style: f(e.style && e.style.fg ? { color: e.style.fg } : void 0),
657
- innerHTML: vt(e.text)
658
- }, null, 12, Fe),
659
- e.kind === "header" && e.collapsed && !ut.value ? (m(), o("button", {
657
+ style: h(e.style && e.style.fg ? { color: e.style.fg } : void 0)
658
+ }, [f(y(i), {
659
+ line: A.value?.lines[e.n - 1] ?? e.text,
660
+ query: G.value,
661
+ "mark-class": "log__hit"
662
+ }, null, 8, ["line", "query"])], 4),
663
+ e.kind === "header" && e.collapsed && !pt.value ? (g(), l("button", {
660
664
  key: 1,
661
665
  type: "button",
662
666
  class: "log__badge",
663
667
  title: "展开堆栈",
664
- onClick: (t) => Ge(e.gid)
665
- }, " ⋯ " + g(e.count) + " 帧 ", 9, Ie)) : a("", !0)
668
+ onClick: (t) => qe(e.gid)
669
+ }, " ⋯ " + v(e.count) + " 帧 ", 9, Le)) : c("", !0)
666
670
  ], 64))], 6))), 128))], 4)], 4)], 544)], 64))]));
667
671
  }
668
672
  });
669
673
  //#endregion
670
- export { w as default };
674
+ export { Ve as default };
671
675
 
672
676
  //# sourceMappingURL=LogViewer.vue_vue_type_script_setup_true_lang.js.map