@mulmochat-plugin/summarize-pdf 0.1.0

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.
package/dist/index.js ADDED
@@ -0,0 +1,1606 @@
1
+ import { defineComponent as re, ref as Y, watch as xe, computed as le, createElementBlock as R, openBlock as S, createElementVNode as w, createCommentVNode as N, createTextVNode as be, toDisplayString as oe } from "vue";
2
+ const O = "summarizePDF", we = {
3
+ type: "function",
4
+ name: O,
5
+ description: "Summarize the content of a currently selected PDF file using Claude.",
6
+ parameters: {
7
+ type: "object",
8
+ properties: {
9
+ prompt: {
10
+ type: "string",
11
+ description: "Instructions for Claude on how to summarize or analyze the PDF"
12
+ }
13
+ },
14
+ required: ["prompt"]
15
+ }
16
+ };
17
+ function Q() {
18
+ return {
19
+ async: !1,
20
+ breaks: !1,
21
+ extensions: null,
22
+ gfm: !0,
23
+ hooks: null,
24
+ pedantic: !1,
25
+ renderer: null,
26
+ silent: !1,
27
+ tokenizer: null,
28
+ walkTokens: null
29
+ };
30
+ }
31
+ let z = Q();
32
+ function ae(a) {
33
+ z = a;
34
+ }
35
+ const ce = /[&<>"']/, ye = new RegExp(ce.source, "g"), ue = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, $e = new RegExp(ue.source, "g"), Te = {
36
+ "&": "&amp;",
37
+ "<": "&lt;",
38
+ ">": "&gt;",
39
+ '"': "&quot;",
40
+ "'": "&#39;"
41
+ }, ee = (a) => Te[a];
42
+ function k(a, n) {
43
+ if (n) {
44
+ if (ce.test(a))
45
+ return a.replace(ye, ee);
46
+ } else if (ue.test(a))
47
+ return a.replace($e, ee);
48
+ return a;
49
+ }
50
+ const ze = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
51
+ function _e(a) {
52
+ return a.replace(ze, (n, t) => (t = t.toLowerCase(), t === "colon" ? ":" : t.charAt(0) === "#" ? t.charAt(1) === "x" ? String.fromCharCode(parseInt(t.substring(2), 16)) : String.fromCharCode(+t.substring(1)) : ""));
53
+ }
54
+ const Re = /(^|[^\[])\^/g;
55
+ function g(a, n) {
56
+ let t = typeof a == "string" ? a : a.source;
57
+ n = n || "";
58
+ const e = {
59
+ replace: (i, r) => {
60
+ let s = typeof r == "string" ? r : r.source;
61
+ return s = s.replace(Re, "$1"), t = t.replace(i, s), e;
62
+ },
63
+ getRegex: () => new RegExp(t, n)
64
+ };
65
+ return e;
66
+ }
67
+ function te(a) {
68
+ try {
69
+ a = encodeURI(a).replace(/%25/g, "%");
70
+ } catch {
71
+ return null;
72
+ }
73
+ return a;
74
+ }
75
+ const v = { exec: () => null };
76
+ function ne(a, n) {
77
+ const t = a.replace(/\|/g, (r, s, l) => {
78
+ let o = !1, p = s;
79
+ for (; --p >= 0 && l[p] === "\\"; )
80
+ o = !o;
81
+ return o ? "|" : " |";
82
+ }), e = t.split(/ \|/);
83
+ let i = 0;
84
+ if (e[0].trim() || e.shift(), e.length > 0 && !e[e.length - 1].trim() && e.pop(), n)
85
+ if (e.length > n)
86
+ e.splice(n);
87
+ else
88
+ for (; e.length < n; )
89
+ e.push("");
90
+ for (; i < e.length; i++)
91
+ e[i] = e[i].trim().replace(/\\\|/g, "|");
92
+ return e;
93
+ }
94
+ function A(a, n, t) {
95
+ const e = a.length;
96
+ if (e === 0)
97
+ return "";
98
+ let i = 0;
99
+ for (; i < e && a.charAt(e - i - 1) === n; )
100
+ i++;
101
+ return a.slice(0, e - i);
102
+ }
103
+ function Se(a, n) {
104
+ if (a.indexOf(n[1]) === -1)
105
+ return -1;
106
+ let t = 0;
107
+ for (let e = 0; e < a.length; e++)
108
+ if (a[e] === "\\")
109
+ e++;
110
+ else if (a[e] === n[0])
111
+ t++;
112
+ else if (a[e] === n[1] && (t--, t < 0))
113
+ return e;
114
+ return -1;
115
+ }
116
+ function se(a, n, t, e) {
117
+ const i = n.href, r = n.title ? k(n.title) : null, s = a[1].replace(/\\([\[\]])/g, "$1");
118
+ if (a[0].charAt(0) !== "!") {
119
+ e.state.inLink = !0;
120
+ const l = {
121
+ type: "link",
122
+ raw: t,
123
+ href: i,
124
+ title: r,
125
+ text: s,
126
+ tokens: e.inlineTokens(s)
127
+ };
128
+ return e.state.inLink = !1, l;
129
+ }
130
+ return {
131
+ type: "image",
132
+ raw: t,
133
+ href: i,
134
+ title: r,
135
+ text: k(s)
136
+ };
137
+ }
138
+ function ve(a, n) {
139
+ const t = a.match(/^(\s+)(?:```)/);
140
+ if (t === null)
141
+ return n;
142
+ const e = t[1];
143
+ return n.split(`
144
+ `).map((i) => {
145
+ const r = i.match(/^\s+/);
146
+ if (r === null)
147
+ return i;
148
+ const [s] = r;
149
+ return s.length >= e.length ? i.slice(e.length) : i;
150
+ }).join(`
151
+ `);
152
+ }
153
+ class E {
154
+ options;
155
+ rules;
156
+ // set by the lexer
157
+ lexer;
158
+ // set by the lexer
159
+ constructor(n) {
160
+ this.options = n || z;
161
+ }
162
+ space(n) {
163
+ const t = this.rules.block.newline.exec(n);
164
+ if (t && t[0].length > 0)
165
+ return {
166
+ type: "space",
167
+ raw: t[0]
168
+ };
169
+ }
170
+ code(n) {
171
+ const t = this.rules.block.code.exec(n);
172
+ if (t) {
173
+ const e = t[0].replace(/^ {1,4}/gm, "");
174
+ return {
175
+ type: "code",
176
+ raw: t[0],
177
+ codeBlockStyle: "indented",
178
+ text: this.options.pedantic ? e : A(e, `
179
+ `)
180
+ };
181
+ }
182
+ }
183
+ fences(n) {
184
+ const t = this.rules.block.fences.exec(n);
185
+ if (t) {
186
+ const e = t[0], i = ve(e, t[3] || "");
187
+ return {
188
+ type: "code",
189
+ raw: e,
190
+ lang: t[2] ? t[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : t[2],
191
+ text: i
192
+ };
193
+ }
194
+ }
195
+ heading(n) {
196
+ const t = this.rules.block.heading.exec(n);
197
+ if (t) {
198
+ let e = t[2].trim();
199
+ if (/#$/.test(e)) {
200
+ const i = A(e, "#");
201
+ (this.options.pedantic || !i || / $/.test(i)) && (e = i.trim());
202
+ }
203
+ return {
204
+ type: "heading",
205
+ raw: t[0],
206
+ depth: t[1].length,
207
+ text: e,
208
+ tokens: this.lexer.inline(e)
209
+ };
210
+ }
211
+ }
212
+ hr(n) {
213
+ const t = this.rules.block.hr.exec(n);
214
+ if (t)
215
+ return {
216
+ type: "hr",
217
+ raw: t[0]
218
+ };
219
+ }
220
+ blockquote(n) {
221
+ const t = this.rules.block.blockquote.exec(n);
222
+ if (t) {
223
+ let e = t[0].replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g, `
224
+ $1`);
225
+ e = A(e.replace(/^ *>[ \t]?/gm, ""), `
226
+ `);
227
+ const i = this.lexer.state.top;
228
+ this.lexer.state.top = !0;
229
+ const r = this.lexer.blockTokens(e);
230
+ return this.lexer.state.top = i, {
231
+ type: "blockquote",
232
+ raw: t[0],
233
+ tokens: r,
234
+ text: e
235
+ };
236
+ }
237
+ }
238
+ list(n) {
239
+ let t = this.rules.block.list.exec(n);
240
+ if (t) {
241
+ let e = t[1].trim();
242
+ const i = e.length > 1, r = {
243
+ type: "list",
244
+ raw: "",
245
+ ordered: i,
246
+ start: i ? +e.slice(0, -1) : "",
247
+ loose: !1,
248
+ items: []
249
+ };
250
+ e = i ? `\\d{1,9}\\${e.slice(-1)}` : `\\${e}`, this.options.pedantic && (e = i ? e : "[*+-]");
251
+ const s = new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`);
252
+ let l = "", o = "", p = !1;
253
+ for (; n; ) {
254
+ let c = !1;
255
+ if (!(t = s.exec(n)) || this.rules.block.hr.test(n))
256
+ break;
257
+ l = t[0], n = n.substring(l.length);
258
+ let h = t[2].split(`
259
+ `, 1)[0].replace(/^\t+/, (B) => " ".repeat(3 * B.length)), u = n.split(`
260
+ `, 1)[0], d = 0;
261
+ this.options.pedantic ? (d = 2, o = h.trimStart()) : (d = t[2].search(/[^ ]/), d = d > 4 ? 1 : d, o = h.slice(d), d += t[1].length);
262
+ let y = !1;
263
+ if (!h && /^ *$/.test(u) && (l += u + `
264
+ `, n = n.substring(u.length + 1), c = !0), !c) {
265
+ const B = new RegExp(`^ {0,${Math.min(3, d - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`), W = new RegExp(`^ {0,${Math.min(3, d - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), J = new RegExp(`^ {0,${Math.min(3, d - 1)}}(?:\`\`\`|~~~)`), K = new RegExp(`^ {0,${Math.min(3, d - 1)}}#`);
266
+ for (; n; ) {
267
+ const Z = n.split(`
268
+ `, 1)[0];
269
+ if (u = Z, this.options.pedantic && (u = u.replace(/^ {1,4}(?=( {4})*[^ ])/g, " ")), J.test(u) || K.test(u) || B.test(u) || W.test(n))
270
+ break;
271
+ if (u.search(/[^ ]/) >= d || !u.trim())
272
+ o += `
273
+ ` + u.slice(d);
274
+ else {
275
+ if (y || h.search(/[^ ]/) >= 4 || J.test(h) || K.test(h) || W.test(h))
276
+ break;
277
+ o += `
278
+ ` + u;
279
+ }
280
+ !y && !u.trim() && (y = !0), l += Z + `
281
+ `, n = n.substring(Z.length + 1), h = u.slice(d);
282
+ }
283
+ }
284
+ r.loose || (p ? r.loose = !0 : /\n *\n *$/.test(l) && (p = !0));
285
+ let m = null, $;
286
+ this.options.gfm && (m = /^\[[ xX]\] /.exec(o), m && ($ = m[0] !== "[ ] ", o = o.replace(/^\[[ xX]\] +/, ""))), r.items.push({
287
+ type: "list_item",
288
+ raw: l,
289
+ task: !!m,
290
+ checked: $,
291
+ loose: !1,
292
+ text: o,
293
+ tokens: []
294
+ }), r.raw += l;
295
+ }
296
+ r.items[r.items.length - 1].raw = l.trimEnd(), r.items[r.items.length - 1].text = o.trimEnd(), r.raw = r.raw.trimEnd();
297
+ for (let c = 0; c < r.items.length; c++)
298
+ if (this.lexer.state.top = !1, r.items[c].tokens = this.lexer.blockTokens(r.items[c].text, []), !r.loose) {
299
+ const h = r.items[c].tokens.filter((d) => d.type === "space"), u = h.length > 0 && h.some((d) => /\n.*\n/.test(d.raw));
300
+ r.loose = u;
301
+ }
302
+ if (r.loose)
303
+ for (let c = 0; c < r.items.length; c++)
304
+ r.items[c].loose = !0;
305
+ return r;
306
+ }
307
+ }
308
+ html(n) {
309
+ const t = this.rules.block.html.exec(n);
310
+ if (t)
311
+ return {
312
+ type: "html",
313
+ block: !0,
314
+ raw: t[0],
315
+ pre: t[1] === "pre" || t[1] === "script" || t[1] === "style",
316
+ text: t[0]
317
+ };
318
+ }
319
+ def(n) {
320
+ const t = this.rules.block.def.exec(n);
321
+ if (t) {
322
+ const e = t[1].toLowerCase().replace(/\s+/g, " "), i = t[2] ? t[2].replace(/^<(.*)>$/, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "", r = t[3] ? t[3].substring(1, t[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : t[3];
323
+ return {
324
+ type: "def",
325
+ tag: e,
326
+ raw: t[0],
327
+ href: i,
328
+ title: r
329
+ };
330
+ }
331
+ }
332
+ table(n) {
333
+ const t = this.rules.block.table.exec(n);
334
+ if (!t || !/[:|]/.test(t[2]))
335
+ return;
336
+ const e = ne(t[1]), i = t[2].replace(/^\||\| *$/g, "").split("|"), r = t[3] && t[3].trim() ? t[3].replace(/\n[ \t]*$/, "").split(`
337
+ `) : [], s = {
338
+ type: "table",
339
+ raw: t[0],
340
+ header: [],
341
+ align: [],
342
+ rows: []
343
+ };
344
+ if (e.length === i.length) {
345
+ for (const l of i)
346
+ /^ *-+: *$/.test(l) ? s.align.push("right") : /^ *:-+: *$/.test(l) ? s.align.push("center") : /^ *:-+ *$/.test(l) ? s.align.push("left") : s.align.push(null);
347
+ for (const l of e)
348
+ s.header.push({
349
+ text: l,
350
+ tokens: this.lexer.inline(l)
351
+ });
352
+ for (const l of r)
353
+ s.rows.push(ne(l, s.header.length).map((o) => ({
354
+ text: o,
355
+ tokens: this.lexer.inline(o)
356
+ })));
357
+ return s;
358
+ }
359
+ }
360
+ lheading(n) {
361
+ const t = this.rules.block.lheading.exec(n);
362
+ if (t)
363
+ return {
364
+ type: "heading",
365
+ raw: t[0],
366
+ depth: t[2].charAt(0) === "=" ? 1 : 2,
367
+ text: t[1],
368
+ tokens: this.lexer.inline(t[1])
369
+ };
370
+ }
371
+ paragraph(n) {
372
+ const t = this.rules.block.paragraph.exec(n);
373
+ if (t) {
374
+ const e = t[1].charAt(t[1].length - 1) === `
375
+ ` ? t[1].slice(0, -1) : t[1];
376
+ return {
377
+ type: "paragraph",
378
+ raw: t[0],
379
+ text: e,
380
+ tokens: this.lexer.inline(e)
381
+ };
382
+ }
383
+ }
384
+ text(n) {
385
+ const t = this.rules.block.text.exec(n);
386
+ if (t)
387
+ return {
388
+ type: "text",
389
+ raw: t[0],
390
+ text: t[0],
391
+ tokens: this.lexer.inline(t[0])
392
+ };
393
+ }
394
+ escape(n) {
395
+ const t = this.rules.inline.escape.exec(n);
396
+ if (t)
397
+ return {
398
+ type: "escape",
399
+ raw: t[0],
400
+ text: k(t[1])
401
+ };
402
+ }
403
+ tag(n) {
404
+ const t = this.rules.inline.tag.exec(n);
405
+ if (t)
406
+ return !this.lexer.state.inLink && /^<a /i.test(t[0]) ? this.lexer.state.inLink = !0 : this.lexer.state.inLink && /^<\/a>/i.test(t[0]) && (this.lexer.state.inLink = !1), !this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(t[0]) ? this.lexer.state.inRawBlock = !0 : this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0]) && (this.lexer.state.inRawBlock = !1), {
407
+ type: "html",
408
+ raw: t[0],
409
+ inLink: this.lexer.state.inLink,
410
+ inRawBlock: this.lexer.state.inRawBlock,
411
+ block: !1,
412
+ text: t[0]
413
+ };
414
+ }
415
+ link(n) {
416
+ const t = this.rules.inline.link.exec(n);
417
+ if (t) {
418
+ const e = t[2].trim();
419
+ if (!this.options.pedantic && /^</.test(e)) {
420
+ if (!/>$/.test(e))
421
+ return;
422
+ const s = A(e.slice(0, -1), "\\");
423
+ if ((e.length - s.length) % 2 === 0)
424
+ return;
425
+ } else {
426
+ const s = Se(t[2], "()");
427
+ if (s > -1) {
428
+ const o = (t[0].indexOf("!") === 0 ? 5 : 4) + t[1].length + s;
429
+ t[2] = t[2].substring(0, s), t[0] = t[0].substring(0, o).trim(), t[3] = "";
430
+ }
431
+ }
432
+ let i = t[2], r = "";
433
+ if (this.options.pedantic) {
434
+ const s = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i);
435
+ s && (i = s[1], r = s[3]);
436
+ } else
437
+ r = t[3] ? t[3].slice(1, -1) : "";
438
+ return i = i.trim(), /^</.test(i) && (this.options.pedantic && !/>$/.test(e) ? i = i.slice(1) : i = i.slice(1, -1)), se(t, {
439
+ href: i && i.replace(this.rules.inline.anyPunctuation, "$1"),
440
+ title: r && r.replace(this.rules.inline.anyPunctuation, "$1")
441
+ }, t[0], this.lexer);
442
+ }
443
+ }
444
+ reflink(n, t) {
445
+ let e;
446
+ if ((e = this.rules.inline.reflink.exec(n)) || (e = this.rules.inline.nolink.exec(n))) {
447
+ const i = (e[2] || e[1]).replace(/\s+/g, " "), r = t[i.toLowerCase()];
448
+ if (!r) {
449
+ const s = e[0].charAt(0);
450
+ return {
451
+ type: "text",
452
+ raw: s,
453
+ text: s
454
+ };
455
+ }
456
+ return se(e, r, e[0], this.lexer);
457
+ }
458
+ }
459
+ emStrong(n, t, e = "") {
460
+ let i = this.rules.inline.emStrongLDelim.exec(n);
461
+ if (!i || i[3] && e.match(/[\p{L}\p{N}]/u))
462
+ return;
463
+ if (!(i[1] || i[2] || "") || !e || this.rules.inline.punctuation.exec(e)) {
464
+ const s = [...i[0]].length - 1;
465
+ let l, o, p = s, c = 0;
466
+ const h = i[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;
467
+ for (h.lastIndex = 0, t = t.slice(-1 * n.length + s); (i = h.exec(t)) != null; ) {
468
+ if (l = i[1] || i[2] || i[3] || i[4] || i[5] || i[6], !l)
469
+ continue;
470
+ if (o = [...l].length, i[3] || i[4]) {
471
+ p += o;
472
+ continue;
473
+ } else if ((i[5] || i[6]) && s % 3 && !((s + o) % 3)) {
474
+ c += o;
475
+ continue;
476
+ }
477
+ if (p -= o, p > 0)
478
+ continue;
479
+ o = Math.min(o, o + p + c);
480
+ const u = [...i[0]][0].length, d = n.slice(0, s + i.index + u + o);
481
+ if (Math.min(s, o) % 2) {
482
+ const m = d.slice(1, -1);
483
+ return {
484
+ type: "em",
485
+ raw: d,
486
+ text: m,
487
+ tokens: this.lexer.inlineTokens(m)
488
+ };
489
+ }
490
+ const y = d.slice(2, -2);
491
+ return {
492
+ type: "strong",
493
+ raw: d,
494
+ text: y,
495
+ tokens: this.lexer.inlineTokens(y)
496
+ };
497
+ }
498
+ }
499
+ }
500
+ codespan(n) {
501
+ const t = this.rules.inline.code.exec(n);
502
+ if (t) {
503
+ let e = t[2].replace(/\n/g, " ");
504
+ const i = /[^ ]/.test(e), r = /^ /.test(e) && / $/.test(e);
505
+ return i && r && (e = e.substring(1, e.length - 1)), e = k(e, !0), {
506
+ type: "codespan",
507
+ raw: t[0],
508
+ text: e
509
+ };
510
+ }
511
+ }
512
+ br(n) {
513
+ const t = this.rules.inline.br.exec(n);
514
+ if (t)
515
+ return {
516
+ type: "br",
517
+ raw: t[0]
518
+ };
519
+ }
520
+ del(n) {
521
+ const t = this.rules.inline.del.exec(n);
522
+ if (t)
523
+ return {
524
+ type: "del",
525
+ raw: t[0],
526
+ text: t[2],
527
+ tokens: this.lexer.inlineTokens(t[2])
528
+ };
529
+ }
530
+ autolink(n) {
531
+ const t = this.rules.inline.autolink.exec(n);
532
+ if (t) {
533
+ let e, i;
534
+ return t[2] === "@" ? (e = k(t[1]), i = "mailto:" + e) : (e = k(t[1]), i = e), {
535
+ type: "link",
536
+ raw: t[0],
537
+ text: e,
538
+ href: i,
539
+ tokens: [
540
+ {
541
+ type: "text",
542
+ raw: e,
543
+ text: e
544
+ }
545
+ ]
546
+ };
547
+ }
548
+ }
549
+ url(n) {
550
+ let t;
551
+ if (t = this.rules.inline.url.exec(n)) {
552
+ let e, i;
553
+ if (t[2] === "@")
554
+ e = k(t[0]), i = "mailto:" + e;
555
+ else {
556
+ let r;
557
+ do
558
+ r = t[0], t[0] = this.rules.inline._backpedal.exec(t[0])?.[0] ?? "";
559
+ while (r !== t[0]);
560
+ e = k(t[0]), t[1] === "www." ? i = "http://" + t[0] : i = t[0];
561
+ }
562
+ return {
563
+ type: "link",
564
+ raw: t[0],
565
+ text: e,
566
+ href: i,
567
+ tokens: [
568
+ {
569
+ type: "text",
570
+ raw: e,
571
+ text: e
572
+ }
573
+ ]
574
+ };
575
+ }
576
+ }
577
+ inlineText(n) {
578
+ const t = this.rules.inline.text.exec(n);
579
+ if (t) {
580
+ let e;
581
+ return this.lexer.state.inRawBlock ? e = t[0] : e = k(t[0]), {
582
+ type: "text",
583
+ raw: t[0],
584
+ text: e
585
+ };
586
+ }
587
+ }
588
+ }
589
+ const Pe = /^(?: *(?:\n|$))+/, Ie = /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/, Ae = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/, P = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/, De = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/, pe = /(?:[*+-]|\d{1,9}[.)])/, he = g(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g, pe).replace(/blockCode/g, / {4}/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).getRegex(), j = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/, Ce = /^[^\n]+/, H = /(?!\s*\])(?:\\.|[^\[\]\\])+/, Ee = g(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label", H).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(), Le = g(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, pe).getRegex(), q = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul", U = /<!--(?:-?>|[\s\S]*?(?:-->|$))/, Fe = g("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))", "i").replace("comment", U).replace("tag", q).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(), fe = g(j).replace("hr", P).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", q).getRegex(), qe = g(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", fe).getRegex(), V = {
590
+ blockquote: qe,
591
+ code: Ie,
592
+ def: Ee,
593
+ fences: Ae,
594
+ heading: De,
595
+ hr: P,
596
+ html: Fe,
597
+ lheading: he,
598
+ list: Le,
599
+ newline: Pe,
600
+ paragraph: fe,
601
+ table: v,
602
+ text: Ce
603
+ }, ie = g("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", P).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", " {4}[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", q).getRegex(), Be = {
604
+ ...V,
605
+ table: ie,
606
+ paragraph: g(j).replace("hr", P).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", ie).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)]) ").replace("html", "</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag", q).getRegex()
607
+ }, Ze = {
608
+ ...V,
609
+ html: g(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", U).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),
610
+ def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
611
+ heading: /^(#{1,6})(.*)(?:\n+|$)/,
612
+ fences: v,
613
+ // fences not supported
614
+ lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
615
+ paragraph: g(j).replace("hr", P).replace("heading", ` *#{1,6} *[^
616
+ ]`).replace("lheading", he).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex()
617
+ }, de = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/, Ne = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/, ge = /^( {2,}|\\)\n(?!\s*$)/, Me = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/, I = "\\p{P}\\p{S}", Oe = g(/^((?![*_])[\spunctuation])/, "u").replace(/punctuation/g, I).getRegex(), Qe = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g, je = g(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/, "u").replace(/punct/g, I).getRegex(), He = g("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])", "gu").replace(/punct/g, I).getRegex(), Ue = g("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])", "gu").replace(/punct/g, I).getRegex(), Ve = g(/\\([punct])/, "gu").replace(/punct/g, I).getRegex(), Ge = g(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(), Xe = g(U).replace("(?:-->|$)", "-->").getRegex(), We = g("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment", Xe).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(), L = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/, Je = g(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label", L).replace("href", /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(), ke = g(/^!?\[(label)\]\[(ref)\]/).replace("label", L).replace("ref", H).getRegex(), me = g(/^!?\[(ref)\](?:\[\])?/).replace("ref", H).getRegex(), Ke = g("reflink|nolink(?!\\()", "g").replace("reflink", ke).replace("nolink", me).getRegex(), G = {
618
+ _backpedal: v,
619
+ // only used for GFM url
620
+ anyPunctuation: Ve,
621
+ autolink: Ge,
622
+ blockSkip: Qe,
623
+ br: ge,
624
+ code: Ne,
625
+ del: v,
626
+ emStrongLDelim: je,
627
+ emStrongRDelimAst: He,
628
+ emStrongRDelimUnd: Ue,
629
+ escape: de,
630
+ link: Je,
631
+ nolink: me,
632
+ punctuation: Oe,
633
+ reflink: ke,
634
+ reflinkSearch: Ke,
635
+ tag: We,
636
+ text: Me,
637
+ url: v
638
+ }, Ye = {
639
+ ...G,
640
+ link: g(/^!?\[(label)\]\((.*?)\)/).replace("label", L).getRegex(),
641
+ reflink: g(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", L).getRegex()
642
+ }, M = {
643
+ ...G,
644
+ escape: g(de).replace("])", "~|])").getRegex(),
645
+ url: g(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/, "i").replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),
646
+ _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
647
+ del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
648
+ text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
649
+ }, et = {
650
+ ...M,
651
+ br: g(ge).replace("{2,}", "*").getRegex(),
652
+ text: g(M.text).replace("\\b_", "\\b_| {2,}\\n").replace(/\{2,\}/g, "*").getRegex()
653
+ }, D = {
654
+ normal: V,
655
+ gfm: Be,
656
+ pedantic: Ze
657
+ }, _ = {
658
+ normal: G,
659
+ gfm: M,
660
+ breaks: et,
661
+ pedantic: Ye
662
+ };
663
+ class x {
664
+ tokens;
665
+ options;
666
+ state;
667
+ tokenizer;
668
+ inlineQueue;
669
+ constructor(n) {
670
+ this.tokens = [], this.tokens.links = /* @__PURE__ */ Object.create(null), this.options = n || z, this.options.tokenizer = this.options.tokenizer || new E(), this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = {
671
+ inLink: !1,
672
+ inRawBlock: !1,
673
+ top: !0
674
+ };
675
+ const t = {
676
+ block: D.normal,
677
+ inline: _.normal
678
+ };
679
+ this.options.pedantic ? (t.block = D.pedantic, t.inline = _.pedantic) : this.options.gfm && (t.block = D.gfm, this.options.breaks ? t.inline = _.breaks : t.inline = _.gfm), this.tokenizer.rules = t;
680
+ }
681
+ /**
682
+ * Expose Rules
683
+ */
684
+ static get rules() {
685
+ return {
686
+ block: D,
687
+ inline: _
688
+ };
689
+ }
690
+ /**
691
+ * Static Lex Method
692
+ */
693
+ static lex(n, t) {
694
+ return new x(t).lex(n);
695
+ }
696
+ /**
697
+ * Static Lex Inline Method
698
+ */
699
+ static lexInline(n, t) {
700
+ return new x(t).inlineTokens(n);
701
+ }
702
+ /**
703
+ * Preprocessing
704
+ */
705
+ lex(n) {
706
+ n = n.replace(/\r\n|\r/g, `
707
+ `), this.blockTokens(n, this.tokens);
708
+ for (let t = 0; t < this.inlineQueue.length; t++) {
709
+ const e = this.inlineQueue[t];
710
+ this.inlineTokens(e.src, e.tokens);
711
+ }
712
+ return this.inlineQueue = [], this.tokens;
713
+ }
714
+ blockTokens(n, t = []) {
715
+ this.options.pedantic ? n = n.replace(/\t/g, " ").replace(/^ +$/gm, "") : n = n.replace(/^( *)(\t+)/gm, (l, o, p) => o + " ".repeat(p.length));
716
+ let e, i, r, s;
717
+ for (; n; )
718
+ if (!(this.options.extensions && this.options.extensions.block && this.options.extensions.block.some((l) => (e = l.call({ lexer: this }, n, t)) ? (n = n.substring(e.raw.length), t.push(e), !0) : !1))) {
719
+ if (e = this.tokenizer.space(n)) {
720
+ n = n.substring(e.raw.length), e.raw.length === 1 && t.length > 0 ? t[t.length - 1].raw += `
721
+ ` : t.push(e);
722
+ continue;
723
+ }
724
+ if (e = this.tokenizer.code(n)) {
725
+ n = n.substring(e.raw.length), i = t[t.length - 1], i && (i.type === "paragraph" || i.type === "text") ? (i.raw += `
726
+ ` + e.raw, i.text += `
727
+ ` + e.text, this.inlineQueue[this.inlineQueue.length - 1].src = i.text) : t.push(e);
728
+ continue;
729
+ }
730
+ if (e = this.tokenizer.fences(n)) {
731
+ n = n.substring(e.raw.length), t.push(e);
732
+ continue;
733
+ }
734
+ if (e = this.tokenizer.heading(n)) {
735
+ n = n.substring(e.raw.length), t.push(e);
736
+ continue;
737
+ }
738
+ if (e = this.tokenizer.hr(n)) {
739
+ n = n.substring(e.raw.length), t.push(e);
740
+ continue;
741
+ }
742
+ if (e = this.tokenizer.blockquote(n)) {
743
+ n = n.substring(e.raw.length), t.push(e);
744
+ continue;
745
+ }
746
+ if (e = this.tokenizer.list(n)) {
747
+ n = n.substring(e.raw.length), t.push(e);
748
+ continue;
749
+ }
750
+ if (e = this.tokenizer.html(n)) {
751
+ n = n.substring(e.raw.length), t.push(e);
752
+ continue;
753
+ }
754
+ if (e = this.tokenizer.def(n)) {
755
+ n = n.substring(e.raw.length), i = t[t.length - 1], i && (i.type === "paragraph" || i.type === "text") ? (i.raw += `
756
+ ` + e.raw, i.text += `
757
+ ` + e.raw, this.inlineQueue[this.inlineQueue.length - 1].src = i.text) : this.tokens.links[e.tag] || (this.tokens.links[e.tag] = {
758
+ href: e.href,
759
+ title: e.title
760
+ });
761
+ continue;
762
+ }
763
+ if (e = this.tokenizer.table(n)) {
764
+ n = n.substring(e.raw.length), t.push(e);
765
+ continue;
766
+ }
767
+ if (e = this.tokenizer.lheading(n)) {
768
+ n = n.substring(e.raw.length), t.push(e);
769
+ continue;
770
+ }
771
+ if (r = n, this.options.extensions && this.options.extensions.startBlock) {
772
+ let l = 1 / 0;
773
+ const o = n.slice(1);
774
+ let p;
775
+ this.options.extensions.startBlock.forEach((c) => {
776
+ p = c.call({ lexer: this }, o), typeof p == "number" && p >= 0 && (l = Math.min(l, p));
777
+ }), l < 1 / 0 && l >= 0 && (r = n.substring(0, l + 1));
778
+ }
779
+ if (this.state.top && (e = this.tokenizer.paragraph(r))) {
780
+ i = t[t.length - 1], s && i.type === "paragraph" ? (i.raw += `
781
+ ` + e.raw, i.text += `
782
+ ` + e.text, this.inlineQueue.pop(), this.inlineQueue[this.inlineQueue.length - 1].src = i.text) : t.push(e), s = r.length !== n.length, n = n.substring(e.raw.length);
783
+ continue;
784
+ }
785
+ if (e = this.tokenizer.text(n)) {
786
+ n = n.substring(e.raw.length), i = t[t.length - 1], i && i.type === "text" ? (i.raw += `
787
+ ` + e.raw, i.text += `
788
+ ` + e.text, this.inlineQueue.pop(), this.inlineQueue[this.inlineQueue.length - 1].src = i.text) : t.push(e);
789
+ continue;
790
+ }
791
+ if (n) {
792
+ const l = "Infinite loop on byte: " + n.charCodeAt(0);
793
+ if (this.options.silent) {
794
+ console.error(l);
795
+ break;
796
+ } else
797
+ throw new Error(l);
798
+ }
799
+ }
800
+ return this.state.top = !0, t;
801
+ }
802
+ inline(n, t = []) {
803
+ return this.inlineQueue.push({ src: n, tokens: t }), t;
804
+ }
805
+ /**
806
+ * Lexing/Compiling
807
+ */
808
+ inlineTokens(n, t = []) {
809
+ let e, i, r, s = n, l, o, p;
810
+ if (this.tokens.links) {
811
+ const c = Object.keys(this.tokens.links);
812
+ if (c.length > 0)
813
+ for (; (l = this.tokenizer.rules.inline.reflinkSearch.exec(s)) != null; )
814
+ c.includes(l[0].slice(l[0].lastIndexOf("[") + 1, -1)) && (s = s.slice(0, l.index) + "[" + "a".repeat(l[0].length - 2) + "]" + s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex));
815
+ }
816
+ for (; (l = this.tokenizer.rules.inline.blockSkip.exec(s)) != null; )
817
+ s = s.slice(0, l.index) + "[" + "a".repeat(l[0].length - 2) + "]" + s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
818
+ for (; (l = this.tokenizer.rules.inline.anyPunctuation.exec(s)) != null; )
819
+ s = s.slice(0, l.index) + "++" + s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);
820
+ for (; n; )
821
+ if (o || (p = ""), o = !1, !(this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some((c) => (e = c.call({ lexer: this }, n, t)) ? (n = n.substring(e.raw.length), t.push(e), !0) : !1))) {
822
+ if (e = this.tokenizer.escape(n)) {
823
+ n = n.substring(e.raw.length), t.push(e);
824
+ continue;
825
+ }
826
+ if (e = this.tokenizer.tag(n)) {
827
+ n = n.substring(e.raw.length), i = t[t.length - 1], i && e.type === "text" && i.type === "text" ? (i.raw += e.raw, i.text += e.text) : t.push(e);
828
+ continue;
829
+ }
830
+ if (e = this.tokenizer.link(n)) {
831
+ n = n.substring(e.raw.length), t.push(e);
832
+ continue;
833
+ }
834
+ if (e = this.tokenizer.reflink(n, this.tokens.links)) {
835
+ n = n.substring(e.raw.length), i = t[t.length - 1], i && e.type === "text" && i.type === "text" ? (i.raw += e.raw, i.text += e.text) : t.push(e);
836
+ continue;
837
+ }
838
+ if (e = this.tokenizer.emStrong(n, s, p)) {
839
+ n = n.substring(e.raw.length), t.push(e);
840
+ continue;
841
+ }
842
+ if (e = this.tokenizer.codespan(n)) {
843
+ n = n.substring(e.raw.length), t.push(e);
844
+ continue;
845
+ }
846
+ if (e = this.tokenizer.br(n)) {
847
+ n = n.substring(e.raw.length), t.push(e);
848
+ continue;
849
+ }
850
+ if (e = this.tokenizer.del(n)) {
851
+ n = n.substring(e.raw.length), t.push(e);
852
+ continue;
853
+ }
854
+ if (e = this.tokenizer.autolink(n)) {
855
+ n = n.substring(e.raw.length), t.push(e);
856
+ continue;
857
+ }
858
+ if (!this.state.inLink && (e = this.tokenizer.url(n))) {
859
+ n = n.substring(e.raw.length), t.push(e);
860
+ continue;
861
+ }
862
+ if (r = n, this.options.extensions && this.options.extensions.startInline) {
863
+ let c = 1 / 0;
864
+ const h = n.slice(1);
865
+ let u;
866
+ this.options.extensions.startInline.forEach((d) => {
867
+ u = d.call({ lexer: this }, h), typeof u == "number" && u >= 0 && (c = Math.min(c, u));
868
+ }), c < 1 / 0 && c >= 0 && (r = n.substring(0, c + 1));
869
+ }
870
+ if (e = this.tokenizer.inlineText(r)) {
871
+ n = n.substring(e.raw.length), e.raw.slice(-1) !== "_" && (p = e.raw.slice(-1)), o = !0, i = t[t.length - 1], i && i.type === "text" ? (i.raw += e.raw, i.text += e.text) : t.push(e);
872
+ continue;
873
+ }
874
+ if (n) {
875
+ const c = "Infinite loop on byte: " + n.charCodeAt(0);
876
+ if (this.options.silent) {
877
+ console.error(c);
878
+ break;
879
+ } else
880
+ throw new Error(c);
881
+ }
882
+ }
883
+ return t;
884
+ }
885
+ }
886
+ class F {
887
+ options;
888
+ constructor(n) {
889
+ this.options = n || z;
890
+ }
891
+ code(n, t, e) {
892
+ const i = (t || "").match(/^\S*/)?.[0];
893
+ return n = n.replace(/\n$/, "") + `
894
+ `, i ? '<pre><code class="language-' + k(i) + '">' + (e ? n : k(n, !0)) + `</code></pre>
895
+ ` : "<pre><code>" + (e ? n : k(n, !0)) + `</code></pre>
896
+ `;
897
+ }
898
+ blockquote(n) {
899
+ return `<blockquote>
900
+ ${n}</blockquote>
901
+ `;
902
+ }
903
+ html(n, t) {
904
+ return n;
905
+ }
906
+ heading(n, t, e) {
907
+ return `<h${t}>${n}</h${t}>
908
+ `;
909
+ }
910
+ hr() {
911
+ return `<hr>
912
+ `;
913
+ }
914
+ list(n, t, e) {
915
+ const i = t ? "ol" : "ul", r = t && e !== 1 ? ' start="' + e + '"' : "";
916
+ return "<" + i + r + `>
917
+ ` + n + "</" + i + `>
918
+ `;
919
+ }
920
+ listitem(n, t, e) {
921
+ return `<li>${n}</li>
922
+ `;
923
+ }
924
+ checkbox(n) {
925
+ return "<input " + (n ? 'checked="" ' : "") + 'disabled="" type="checkbox">';
926
+ }
927
+ paragraph(n) {
928
+ return `<p>${n}</p>
929
+ `;
930
+ }
931
+ table(n, t) {
932
+ return t && (t = `<tbody>${t}</tbody>`), `<table>
933
+ <thead>
934
+ ` + n + `</thead>
935
+ ` + t + `</table>
936
+ `;
937
+ }
938
+ tablerow(n) {
939
+ return `<tr>
940
+ ${n}</tr>
941
+ `;
942
+ }
943
+ tablecell(n, t) {
944
+ const e = t.header ? "th" : "td";
945
+ return (t.align ? `<${e} align="${t.align}">` : `<${e}>`) + n + `</${e}>
946
+ `;
947
+ }
948
+ /**
949
+ * span level renderer
950
+ */
951
+ strong(n) {
952
+ return `<strong>${n}</strong>`;
953
+ }
954
+ em(n) {
955
+ return `<em>${n}</em>`;
956
+ }
957
+ codespan(n) {
958
+ return `<code>${n}</code>`;
959
+ }
960
+ br() {
961
+ return "<br>";
962
+ }
963
+ del(n) {
964
+ return `<del>${n}</del>`;
965
+ }
966
+ link(n, t, e) {
967
+ const i = te(n);
968
+ if (i === null)
969
+ return e;
970
+ n = i;
971
+ let r = '<a href="' + n + '"';
972
+ return t && (r += ' title="' + t + '"'), r += ">" + e + "</a>", r;
973
+ }
974
+ image(n, t, e) {
975
+ const i = te(n);
976
+ if (i === null)
977
+ return e;
978
+ n = i;
979
+ let r = `<img src="${n}" alt="${e}"`;
980
+ return t && (r += ` title="${t}"`), r += ">", r;
981
+ }
982
+ text(n) {
983
+ return n;
984
+ }
985
+ }
986
+ class X {
987
+ // no need for block level renderers
988
+ strong(n) {
989
+ return n;
990
+ }
991
+ em(n) {
992
+ return n;
993
+ }
994
+ codespan(n) {
995
+ return n;
996
+ }
997
+ del(n) {
998
+ return n;
999
+ }
1000
+ html(n) {
1001
+ return n;
1002
+ }
1003
+ text(n) {
1004
+ return n;
1005
+ }
1006
+ link(n, t, e) {
1007
+ return "" + e;
1008
+ }
1009
+ image(n, t, e) {
1010
+ return "" + e;
1011
+ }
1012
+ br() {
1013
+ return "";
1014
+ }
1015
+ }
1016
+ class b {
1017
+ options;
1018
+ renderer;
1019
+ textRenderer;
1020
+ constructor(n) {
1021
+ this.options = n || z, this.options.renderer = this.options.renderer || new F(), this.renderer = this.options.renderer, this.renderer.options = this.options, this.textRenderer = new X();
1022
+ }
1023
+ /**
1024
+ * Static Parse Method
1025
+ */
1026
+ static parse(n, t) {
1027
+ return new b(t).parse(n);
1028
+ }
1029
+ /**
1030
+ * Static Parse Inline Method
1031
+ */
1032
+ static parseInline(n, t) {
1033
+ return new b(t).parseInline(n);
1034
+ }
1035
+ /**
1036
+ * Parse Loop
1037
+ */
1038
+ parse(n, t = !0) {
1039
+ let e = "";
1040
+ for (let i = 0; i < n.length; i++) {
1041
+ const r = n[i];
1042
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[r.type]) {
1043
+ const s = r, l = this.options.extensions.renderers[s.type].call({ parser: this }, s);
1044
+ if (l !== !1 || !["space", "hr", "heading", "code", "table", "blockquote", "list", "html", "paragraph", "text"].includes(s.type)) {
1045
+ e += l || "";
1046
+ continue;
1047
+ }
1048
+ }
1049
+ switch (r.type) {
1050
+ case "space":
1051
+ continue;
1052
+ case "hr": {
1053
+ e += this.renderer.hr();
1054
+ continue;
1055
+ }
1056
+ case "heading": {
1057
+ const s = r;
1058
+ e += this.renderer.heading(this.parseInline(s.tokens), s.depth, _e(this.parseInline(s.tokens, this.textRenderer)));
1059
+ continue;
1060
+ }
1061
+ case "code": {
1062
+ const s = r;
1063
+ e += this.renderer.code(s.text, s.lang, !!s.escaped);
1064
+ continue;
1065
+ }
1066
+ case "table": {
1067
+ const s = r;
1068
+ let l = "", o = "";
1069
+ for (let c = 0; c < s.header.length; c++)
1070
+ o += this.renderer.tablecell(this.parseInline(s.header[c].tokens), { header: !0, align: s.align[c] });
1071
+ l += this.renderer.tablerow(o);
1072
+ let p = "";
1073
+ for (let c = 0; c < s.rows.length; c++) {
1074
+ const h = s.rows[c];
1075
+ o = "";
1076
+ for (let u = 0; u < h.length; u++)
1077
+ o += this.renderer.tablecell(this.parseInline(h[u].tokens), { header: !1, align: s.align[u] });
1078
+ p += this.renderer.tablerow(o);
1079
+ }
1080
+ e += this.renderer.table(l, p);
1081
+ continue;
1082
+ }
1083
+ case "blockquote": {
1084
+ const s = r, l = this.parse(s.tokens);
1085
+ e += this.renderer.blockquote(l);
1086
+ continue;
1087
+ }
1088
+ case "list": {
1089
+ const s = r, l = s.ordered, o = s.start, p = s.loose;
1090
+ let c = "";
1091
+ for (let h = 0; h < s.items.length; h++) {
1092
+ const u = s.items[h], d = u.checked, y = u.task;
1093
+ let m = "";
1094
+ if (u.task) {
1095
+ const $ = this.renderer.checkbox(!!d);
1096
+ p ? u.tokens.length > 0 && u.tokens[0].type === "paragraph" ? (u.tokens[0].text = $ + " " + u.tokens[0].text, u.tokens[0].tokens && u.tokens[0].tokens.length > 0 && u.tokens[0].tokens[0].type === "text" && (u.tokens[0].tokens[0].text = $ + " " + u.tokens[0].tokens[0].text)) : u.tokens.unshift({
1097
+ type: "text",
1098
+ text: $ + " "
1099
+ }) : m += $ + " ";
1100
+ }
1101
+ m += this.parse(u.tokens, p), c += this.renderer.listitem(m, y, !!d);
1102
+ }
1103
+ e += this.renderer.list(c, l, o);
1104
+ continue;
1105
+ }
1106
+ case "html": {
1107
+ const s = r;
1108
+ e += this.renderer.html(s.text, s.block);
1109
+ continue;
1110
+ }
1111
+ case "paragraph": {
1112
+ const s = r;
1113
+ e += this.renderer.paragraph(this.parseInline(s.tokens));
1114
+ continue;
1115
+ }
1116
+ case "text": {
1117
+ let s = r, l = s.tokens ? this.parseInline(s.tokens) : s.text;
1118
+ for (; i + 1 < n.length && n[i + 1].type === "text"; )
1119
+ s = n[++i], l += `
1120
+ ` + (s.tokens ? this.parseInline(s.tokens) : s.text);
1121
+ e += t ? this.renderer.paragraph(l) : l;
1122
+ continue;
1123
+ }
1124
+ default: {
1125
+ const s = 'Token with "' + r.type + '" type was not found.';
1126
+ if (this.options.silent)
1127
+ return console.error(s), "";
1128
+ throw new Error(s);
1129
+ }
1130
+ }
1131
+ }
1132
+ return e;
1133
+ }
1134
+ /**
1135
+ * Parse Inline Tokens
1136
+ */
1137
+ parseInline(n, t) {
1138
+ t = t || this.renderer;
1139
+ let e = "";
1140
+ for (let i = 0; i < n.length; i++) {
1141
+ const r = n[i];
1142
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[r.type]) {
1143
+ const s = this.options.extensions.renderers[r.type].call({ parser: this }, r);
1144
+ if (s !== !1 || !["escape", "html", "link", "image", "strong", "em", "codespan", "br", "del", "text"].includes(r.type)) {
1145
+ e += s || "";
1146
+ continue;
1147
+ }
1148
+ }
1149
+ switch (r.type) {
1150
+ case "escape": {
1151
+ const s = r;
1152
+ e += t.text(s.text);
1153
+ break;
1154
+ }
1155
+ case "html": {
1156
+ const s = r;
1157
+ e += t.html(s.text);
1158
+ break;
1159
+ }
1160
+ case "link": {
1161
+ const s = r;
1162
+ e += t.link(s.href, s.title, this.parseInline(s.tokens, t));
1163
+ break;
1164
+ }
1165
+ case "image": {
1166
+ const s = r;
1167
+ e += t.image(s.href, s.title, s.text);
1168
+ break;
1169
+ }
1170
+ case "strong": {
1171
+ const s = r;
1172
+ e += t.strong(this.parseInline(s.tokens, t));
1173
+ break;
1174
+ }
1175
+ case "em": {
1176
+ const s = r;
1177
+ e += t.em(this.parseInline(s.tokens, t));
1178
+ break;
1179
+ }
1180
+ case "codespan": {
1181
+ const s = r;
1182
+ e += t.codespan(s.text);
1183
+ break;
1184
+ }
1185
+ case "br": {
1186
+ e += t.br();
1187
+ break;
1188
+ }
1189
+ case "del": {
1190
+ const s = r;
1191
+ e += t.del(this.parseInline(s.tokens, t));
1192
+ break;
1193
+ }
1194
+ case "text": {
1195
+ const s = r;
1196
+ e += t.text(s.text);
1197
+ break;
1198
+ }
1199
+ default: {
1200
+ const s = 'Token with "' + r.type + '" type was not found.';
1201
+ if (this.options.silent)
1202
+ return console.error(s), "";
1203
+ throw new Error(s);
1204
+ }
1205
+ }
1206
+ }
1207
+ return e;
1208
+ }
1209
+ }
1210
+ class C {
1211
+ options;
1212
+ constructor(n) {
1213
+ this.options = n || z;
1214
+ }
1215
+ static passThroughHooks = /* @__PURE__ */ new Set([
1216
+ "preprocess",
1217
+ "postprocess",
1218
+ "processAllTokens"
1219
+ ]);
1220
+ /**
1221
+ * Process markdown before marked
1222
+ */
1223
+ preprocess(n) {
1224
+ return n;
1225
+ }
1226
+ /**
1227
+ * Process HTML after marked is finished
1228
+ */
1229
+ postprocess(n) {
1230
+ return n;
1231
+ }
1232
+ /**
1233
+ * Process all tokens before walk tokens
1234
+ */
1235
+ processAllTokens(n) {
1236
+ return n;
1237
+ }
1238
+ }
1239
+ class tt {
1240
+ defaults = Q();
1241
+ options = this.setOptions;
1242
+ parse = this.#e(x.lex, b.parse);
1243
+ parseInline = this.#e(x.lexInline, b.parseInline);
1244
+ Parser = b;
1245
+ Renderer = F;
1246
+ TextRenderer = X;
1247
+ Lexer = x;
1248
+ Tokenizer = E;
1249
+ Hooks = C;
1250
+ constructor(...n) {
1251
+ this.use(...n);
1252
+ }
1253
+ /**
1254
+ * Run callback for every token
1255
+ */
1256
+ walkTokens(n, t) {
1257
+ let e = [];
1258
+ for (const i of n)
1259
+ switch (e = e.concat(t.call(this, i)), i.type) {
1260
+ case "table": {
1261
+ const r = i;
1262
+ for (const s of r.header)
1263
+ e = e.concat(this.walkTokens(s.tokens, t));
1264
+ for (const s of r.rows)
1265
+ for (const l of s)
1266
+ e = e.concat(this.walkTokens(l.tokens, t));
1267
+ break;
1268
+ }
1269
+ case "list": {
1270
+ const r = i;
1271
+ e = e.concat(this.walkTokens(r.items, t));
1272
+ break;
1273
+ }
1274
+ default: {
1275
+ const r = i;
1276
+ this.defaults.extensions?.childTokens?.[r.type] ? this.defaults.extensions.childTokens[r.type].forEach((s) => {
1277
+ const l = r[s].flat(1 / 0);
1278
+ e = e.concat(this.walkTokens(l, t));
1279
+ }) : r.tokens && (e = e.concat(this.walkTokens(r.tokens, t)));
1280
+ }
1281
+ }
1282
+ return e;
1283
+ }
1284
+ use(...n) {
1285
+ const t = this.defaults.extensions || { renderers: {}, childTokens: {} };
1286
+ return n.forEach((e) => {
1287
+ const i = { ...e };
1288
+ if (i.async = this.defaults.async || i.async || !1, e.extensions && (e.extensions.forEach((r) => {
1289
+ if (!r.name)
1290
+ throw new Error("extension name required");
1291
+ if ("renderer" in r) {
1292
+ const s = t.renderers[r.name];
1293
+ s ? t.renderers[r.name] = function(...l) {
1294
+ let o = r.renderer.apply(this, l);
1295
+ return o === !1 && (o = s.apply(this, l)), o;
1296
+ } : t.renderers[r.name] = r.renderer;
1297
+ }
1298
+ if ("tokenizer" in r) {
1299
+ if (!r.level || r.level !== "block" && r.level !== "inline")
1300
+ throw new Error("extension level must be 'block' or 'inline'");
1301
+ const s = t[r.level];
1302
+ s ? s.unshift(r.tokenizer) : t[r.level] = [r.tokenizer], r.start && (r.level === "block" ? t.startBlock ? t.startBlock.push(r.start) : t.startBlock = [r.start] : r.level === "inline" && (t.startInline ? t.startInline.push(r.start) : t.startInline = [r.start]));
1303
+ }
1304
+ "childTokens" in r && r.childTokens && (t.childTokens[r.name] = r.childTokens);
1305
+ }), i.extensions = t), e.renderer) {
1306
+ const r = this.defaults.renderer || new F(this.defaults);
1307
+ for (const s in e.renderer) {
1308
+ if (!(s in r))
1309
+ throw new Error(`renderer '${s}' does not exist`);
1310
+ if (s === "options")
1311
+ continue;
1312
+ const l = s, o = e.renderer[l], p = r[l];
1313
+ r[l] = (...c) => {
1314
+ let h = o.apply(r, c);
1315
+ return h === !1 && (h = p.apply(r, c)), h || "";
1316
+ };
1317
+ }
1318
+ i.renderer = r;
1319
+ }
1320
+ if (e.tokenizer) {
1321
+ const r = this.defaults.tokenizer || new E(this.defaults);
1322
+ for (const s in e.tokenizer) {
1323
+ if (!(s in r))
1324
+ throw new Error(`tokenizer '${s}' does not exist`);
1325
+ if (["options", "rules", "lexer"].includes(s))
1326
+ continue;
1327
+ const l = s, o = e.tokenizer[l], p = r[l];
1328
+ r[l] = (...c) => {
1329
+ let h = o.apply(r, c);
1330
+ return h === !1 && (h = p.apply(r, c)), h;
1331
+ };
1332
+ }
1333
+ i.tokenizer = r;
1334
+ }
1335
+ if (e.hooks) {
1336
+ const r = this.defaults.hooks || new C();
1337
+ for (const s in e.hooks) {
1338
+ if (!(s in r))
1339
+ throw new Error(`hook '${s}' does not exist`);
1340
+ if (s === "options")
1341
+ continue;
1342
+ const l = s, o = e.hooks[l], p = r[l];
1343
+ C.passThroughHooks.has(s) ? r[l] = (c) => {
1344
+ if (this.defaults.async)
1345
+ return Promise.resolve(o.call(r, c)).then((u) => p.call(r, u));
1346
+ const h = o.call(r, c);
1347
+ return p.call(r, h);
1348
+ } : r[l] = (...c) => {
1349
+ let h = o.apply(r, c);
1350
+ return h === !1 && (h = p.apply(r, c)), h;
1351
+ };
1352
+ }
1353
+ i.hooks = r;
1354
+ }
1355
+ if (e.walkTokens) {
1356
+ const r = this.defaults.walkTokens, s = e.walkTokens;
1357
+ i.walkTokens = function(l) {
1358
+ let o = [];
1359
+ return o.push(s.call(this, l)), r && (o = o.concat(r.call(this, l))), o;
1360
+ };
1361
+ }
1362
+ this.defaults = { ...this.defaults, ...i };
1363
+ }), this;
1364
+ }
1365
+ setOptions(n) {
1366
+ return this.defaults = { ...this.defaults, ...n }, this;
1367
+ }
1368
+ lexer(n, t) {
1369
+ return x.lex(n, t ?? this.defaults);
1370
+ }
1371
+ parser(n, t) {
1372
+ return b.parse(n, t ?? this.defaults);
1373
+ }
1374
+ #e(n, t) {
1375
+ return (e, i) => {
1376
+ const r = { ...i }, s = { ...this.defaults, ...r };
1377
+ this.defaults.async === !0 && r.async === !1 && (s.silent || console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."), s.async = !0);
1378
+ const l = this.#t(!!s.silent, !!s.async);
1379
+ if (typeof e > "u" || e === null)
1380
+ return l(new Error("marked(): input parameter is undefined or null"));
1381
+ if (typeof e != "string")
1382
+ return l(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(e) + ", string expected"));
1383
+ if (s.hooks && (s.hooks.options = s), s.async)
1384
+ return Promise.resolve(s.hooks ? s.hooks.preprocess(e) : e).then((o) => n(o, s)).then((o) => s.hooks ? s.hooks.processAllTokens(o) : o).then((o) => s.walkTokens ? Promise.all(this.walkTokens(o, s.walkTokens)).then(() => o) : o).then((o) => t(o, s)).then((o) => s.hooks ? s.hooks.postprocess(o) : o).catch(l);
1385
+ try {
1386
+ s.hooks && (e = s.hooks.preprocess(e));
1387
+ let o = n(e, s);
1388
+ s.hooks && (o = s.hooks.processAllTokens(o)), s.walkTokens && this.walkTokens(o, s.walkTokens);
1389
+ let p = t(o, s);
1390
+ return s.hooks && (p = s.hooks.postprocess(p)), p;
1391
+ } catch (o) {
1392
+ return l(o);
1393
+ }
1394
+ };
1395
+ }
1396
+ #t(n, t) {
1397
+ return (e) => {
1398
+ if (e.message += `
1399
+ Please report this to https://github.com/markedjs/marked.`, n) {
1400
+ const i = "<p>An error occurred:</p><pre>" + k(e.message + "", !0) + "</pre>";
1401
+ return t ? Promise.resolve(i) : i;
1402
+ }
1403
+ if (t)
1404
+ return Promise.reject(e);
1405
+ throw e;
1406
+ };
1407
+ }
1408
+ }
1409
+ const T = new tt();
1410
+ function f(a, n) {
1411
+ return T.parse(a, n);
1412
+ }
1413
+ f.options = f.setOptions = function(a) {
1414
+ return T.setOptions(a), f.defaults = T.defaults, ae(f.defaults), f;
1415
+ };
1416
+ f.getDefaults = Q;
1417
+ f.defaults = z;
1418
+ f.use = function(...a) {
1419
+ return T.use(...a), f.defaults = T.defaults, ae(f.defaults), f;
1420
+ };
1421
+ f.walkTokens = function(a, n) {
1422
+ return T.walkTokens(a, n);
1423
+ };
1424
+ f.parseInline = T.parseInline;
1425
+ f.Parser = b;
1426
+ f.parser = b.parse;
1427
+ f.Renderer = F;
1428
+ f.TextRenderer = X;
1429
+ f.Lexer = x;
1430
+ f.lexer = x.lex;
1431
+ f.Tokenizer = E;
1432
+ f.Hooks = C;
1433
+ f.parse = f;
1434
+ f.options;
1435
+ f.setOptions;
1436
+ f.use;
1437
+ f.walkTokens;
1438
+ f.parseInline;
1439
+ b.parse;
1440
+ x.lex;
1441
+ const nt = { class: "w-full h-full flex flex-col p-4" }, st = { class: "flex-1 w-full min-h-0" }, it = ["src"], rt = {
1442
+ key: 0,
1443
+ class: "mt-4 p-3 bg-gray-100 dark:bg-gray-800 rounded-lg flex-shrink-0"
1444
+ }, lt = { class: "text-sm text-gray-700 dark:text-gray-300" }, ot = {
1445
+ key: 1,
1446
+ class: "mt-2 p-3 bg-white rounded-lg flex-shrink-0 max-h-64 overflow-y-auto border border-gray-200"
1447
+ }, at = ["innerHTML"], ct = /* @__PURE__ */ re({
1448
+ __name: "View",
1449
+ props: {
1450
+ selectedResult: {}
1451
+ },
1452
+ setup(a) {
1453
+ const n = a, t = Y(null), e = Y("");
1454
+ xe(
1455
+ () => n.selectedResult,
1456
+ (s) => {
1457
+ s?.toolName === O && s.data && (t.value = s.data, r(s));
1458
+ },
1459
+ { immediate: !0, deep: !0 }
1460
+ );
1461
+ const i = le(() => {
1462
+ const s = t.value?.summary;
1463
+ return s ? f(s) : "";
1464
+ });
1465
+ async function r(s) {
1466
+ const l = s.data, o = s.uuid;
1467
+ if (l?.pdfData) {
1468
+ if (!o) {
1469
+ e.value = l.pdfData;
1470
+ return;
1471
+ }
1472
+ try {
1473
+ const p = await fetch("/api/save-pdf", {
1474
+ method: "POST",
1475
+ headers: {
1476
+ "Content-Type": "application/json"
1477
+ },
1478
+ body: JSON.stringify({
1479
+ pdfData: l.pdfData,
1480
+ uuid: o,
1481
+ fileName: l.fileName || "document.pdf"
1482
+ })
1483
+ });
1484
+ if (!p.ok)
1485
+ throw new Error("Failed to save PDF");
1486
+ const c = await p.json();
1487
+ e.value = c.pdfUrl;
1488
+ } catch (p) {
1489
+ console.error("Failed to save PDF to output folder:", p), e.value = l.pdfData;
1490
+ }
1491
+ }
1492
+ }
1493
+ return (s, l) => (S(), R("div", nt, [
1494
+ w("div", st, [
1495
+ e.value ? (S(), R("iframe", {
1496
+ key: 0,
1497
+ src: e.value,
1498
+ class: "w-full h-full border-0 rounded",
1499
+ title: "PDF Viewer"
1500
+ }, null, 8, it)) : N("", !0)
1501
+ ]),
1502
+ t.value?.fileName ? (S(), R("div", rt, [
1503
+ w("p", lt, [
1504
+ l[0] || (l[0] = w("span", { class: "font-medium" }, "File:", -1)),
1505
+ be(" " + oe(t.value.fileName), 1)
1506
+ ])
1507
+ ])) : N("", !0),
1508
+ t.value?.summary ? (S(), R("div", ot, [
1509
+ l[1] || (l[1] = w("p", { class: "text-sm font-medium text-gray-700 mb-2" }, "Summary:", -1)),
1510
+ w("div", {
1511
+ class: "markdown-content prose prose-sm prose-slate max-w-none",
1512
+ innerHTML: i.value
1513
+ }, null, 8, at)
1514
+ ])) : N("", !0)
1515
+ ]));
1516
+ }
1517
+ }), ut = { class: "w-full h-32 bg-gray-200 dark:bg-gray-700 rounded flex items-center justify-center" }, pt = { class: "text-center" }, ht = { class: "text-xs mt-2 text-gray-600 dark:text-gray-300" }, ft = /* @__PURE__ */ re({
1518
+ __name: "Preview",
1519
+ props: {
1520
+ result: {}
1521
+ },
1522
+ setup(a) {
1523
+ const n = a, t = le(() => n.result.data);
1524
+ return (e, i) => (S(), R("div", ut, [
1525
+ w("div", pt, [
1526
+ i[0] || (i[0] = w("svg", {
1527
+ class: "w-12 h-12 mx-auto text-red-500",
1528
+ fill: "currentColor",
1529
+ viewBox: "0 0 20 20",
1530
+ xmlns: "http://www.w3.org/2000/svg"
1531
+ }, [
1532
+ w("path", {
1533
+ "fill-rule": "evenodd",
1534
+ d: "M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4z",
1535
+ "clip-rule": "evenodd"
1536
+ })
1537
+ ], -1)),
1538
+ w("p", ht, oe(t.value?.fileName || "PDF"), 1)
1539
+ ])
1540
+ ]));
1541
+ }
1542
+ });
1543
+ function dt(a, n) {
1544
+ return {
1545
+ toolName: O,
1546
+ data: { pdfData: a, fileName: n },
1547
+ message: "",
1548
+ title: n
1549
+ };
1550
+ }
1551
+ const gt = async (a, n) => {
1552
+ const { prompt: t } = n, e = a.currentResult?.data;
1553
+ if (!e?.pdfData)
1554
+ return {
1555
+ message: "No PDF file available to summarize. Please select a PDF file first.",
1556
+ instructions: "Tell the user that no PDF file is currently selected and they need to upload a PDF file first."
1557
+ };
1558
+ if (!a.app?.fetchSummarizePdf)
1559
+ return {
1560
+ message: "fetchSummarizePdf function not available",
1561
+ instructions: "Tell the user that the PDF summarization failed."
1562
+ };
1563
+ try {
1564
+ const r = (await a.app.fetchSummarizePdf({
1565
+ prompt: t,
1566
+ pdfData: e.pdfData
1567
+ })).summary || "";
1568
+ return {
1569
+ data: {
1570
+ ...e,
1571
+ summary: r
1572
+ },
1573
+ jsonData: {
1574
+ fileName: e.fileName,
1575
+ summary: r
1576
+ },
1577
+ message: "PDF summarized successfully",
1578
+ instructions: "Give the user a brief summary of the PDF.",
1579
+ instructionsRequired: !0,
1580
+ updating: !0
1581
+ };
1582
+ } catch (i) {
1583
+ console.error("PDF summarization failed", i);
1584
+ const r = i instanceof Error ? i.message : "Unknown error";
1585
+ return {
1586
+ message: `PDF summarization failed: ${r}`,
1587
+ instructions: `Tell the user that the PDF summarization failed with error: ${r}`
1588
+ };
1589
+ }
1590
+ }, kt = {
1591
+ toolDefinition: we,
1592
+ execute: gt,
1593
+ generatingMessage: "Summarizing PDF...",
1594
+ uploadMessage: "PDF file is available. Call 'summarizePDF' to see its summary",
1595
+ isEnabled: (a) => !!a?.hasAnthropicApiKey,
1596
+ viewComponent: ct,
1597
+ previewComponent: ft,
1598
+ fileUpload: {
1599
+ acceptedTypes: ["application/pdf"],
1600
+ handleUpload: dt
1601
+ }
1602
+ }, xt = { plugin: kt };
1603
+ export {
1604
+ dt as createUploadedPdfResult,
1605
+ xt as default
1606
+ };