jspdf-md-renderer 3.0.1 → 3.2.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.mjs CHANGED
@@ -1,112 +1,186 @@
1
- import { marked as wt } from "marked";
2
- var y = /* @__PURE__ */ ((e) => (e.Heading = "heading", e.Paragraph = "paragraph", e.List = "list", e.ListItem = "list_item", e.Blockquote = "blockquote", e.Code = "code", e.CodeSpan = "codespan", e.Table = "table", e.Html = "html", e.Hr = "hr", e.Image = "image", e.Link = "link", e.Strong = "strong", e.Em = "em", e.TableHeader = "table_header", e.TableCell = "table_cell", e.Raw = "raw", e.Text = "text", e))(y || {});
3
- const Ct = async (e) => {
4
- const t = await wt.lexer(e, { async: !0, gfm: !0 });
5
- return b(t);
6
- }, b = (e) => {
7
- const t = [];
8
- return e.forEach((n) => {
1
+ import { marked as j } from "marked";
2
+ import O from "jspdf-autotable";
3
+ var u = /* @__PURE__ */ ((t) => (t.Heading = "heading", t.Paragraph = "paragraph", t.List = "list", t.ListItem = "list_item", t.Blockquote = "blockquote", t.Code = "code", t.CodeSpan = "codespan", t.Table = "table", t.Html = "html", t.Hr = "hr", t.Image = "image", t.Link = "link", t.Strong = "strong", t.Em = "em", t.TableHeader = "table_header", t.TableCell = "table_cell", t.Raw = "raw", t.Text = "text", t))(u || {});
4
+ const A = "__jmr_", G = /(!\[[^\]]*\]\()([^)]+)(\))\s*\{([^}]+)\}/g, q = /(\w+)\s*=\s*(\w+)/g, B = ["left", "center", "right"], U = (t) => {
5
+ const e = [];
6
+ return t.width !== void 0 && e.push(`w=${t.width}`), t.height !== void 0 && e.push(`h=${t.height}`), t.align && e.push(`a=${t.align}`), e.length > 0 ? `#${A}${e.join("&")}` : "";
7
+ }, J = (t) => {
8
+ const e = {};
9
+ let s;
10
+ for (; (s = q.exec(t)) !== null; ) {
11
+ const c = s[1].toLowerCase(), g = s[2];
12
+ switch (c) {
13
+ case "width":
14
+ case "w": {
15
+ const r = parseInt(g, 10);
16
+ !isNaN(r) && r > 0 && (e.width = r);
17
+ break;
18
+ }
19
+ case "height":
20
+ case "h": {
21
+ const r = parseInt(g, 10);
22
+ !isNaN(r) && r > 0 && (e.height = r);
23
+ break;
24
+ }
25
+ case "align": {
26
+ const r = g.toLowerCase();
27
+ B.includes(
28
+ r
29
+ ) && (e.align = r);
30
+ break;
31
+ }
32
+ }
33
+ }
34
+ return e;
35
+ }, V = (t) => t.replace(
36
+ G,
37
+ (e, s, c, g, r) => {
38
+ const l = J(r), i = U(l);
39
+ return `${s}${c}${i}${g}`;
40
+ }
41
+ ), K = (t) => {
42
+ const e = t.indexOf(`#${A}`);
43
+ if (e === -1)
44
+ return { cleanHref: t, attrs: {} };
45
+ const s = t.substring(0, e), c = t.substring(e + 1 + A.length), g = {}, r = c.split("&");
46
+ for (const l of r) {
47
+ const [i, a] = l.split("=");
48
+ switch (i) {
49
+ case "w": {
50
+ const p = parseInt(a, 10);
51
+ !isNaN(p) && p > 0 && (g.width = p);
52
+ break;
53
+ }
54
+ case "h": {
55
+ const p = parseInt(a, 10);
56
+ !isNaN(p) && p > 0 && (g.height = p);
57
+ break;
58
+ }
59
+ case "a": {
60
+ B.includes(
61
+ a
62
+ ) && (g.align = a);
63
+ break;
64
+ }
65
+ }
66
+ }
67
+ return { cleanHref: s, attrs: g };
68
+ }, Q = async (t) => {
69
+ const e = V(t), s = await j.lexer(e, {
70
+ async: !0,
71
+ gfm: !0
72
+ });
73
+ return W(s);
74
+ }, W = (t) => {
75
+ const e = [];
76
+ return t.forEach((s) => {
9
77
  try {
10
- const i = Ft[n.type];
11
- i ? t.push(i(n)) : t.push({
12
- type: y.Raw,
13
- content: n.raw
78
+ const c = Z[s.type];
79
+ c ? e.push(c(s)) : e.push({
80
+ type: u.Raw,
81
+ content: s.raw
14
82
  });
15
- } catch (i) {
16
- console.error("Failed to handle token ==>", n, i);
83
+ } catch (c) {
84
+ console.error("Failed to handle token ==>", s, c);
17
85
  }
18
- }), t;
19
- }, Ft = {
20
- [y.Heading]: (e) => ({
21
- type: y.Heading,
22
- depth: e.depth,
23
- content: e.text,
24
- items: e.tokens ? b(e.tokens) : []
86
+ }), e;
87
+ }, Z = {
88
+ [u.Heading]: (t) => ({
89
+ type: u.Heading,
90
+ depth: t.depth,
91
+ content: t.text,
92
+ items: t.tokens ? W(t.tokens) : []
25
93
  }),
26
- [y.Paragraph]: (e) => ({
27
- type: y.Paragraph,
28
- content: e.text,
29
- items: e.tokens ? b(e.tokens) : []
94
+ [u.Paragraph]: (t) => ({
95
+ type: u.Paragraph,
96
+ content: t.text,
97
+ items: t.tokens ? W(t.tokens) : []
30
98
  }),
31
- [y.List]: (e) => ({
32
- type: y.List,
33
- ordered: e.ordered,
34
- start: e.start,
35
- items: e.items ? b(e.items) : []
99
+ [u.List]: (t) => ({
100
+ type: u.List,
101
+ ordered: t.ordered,
102
+ start: t.start,
103
+ items: t.items ? W(t.items) : []
36
104
  }),
37
- [y.ListItem]: (e) => ({
38
- type: y.ListItem,
39
- content: e.text,
40
- items: e.tokens ? b(e.tokens) : []
105
+ [u.ListItem]: (t) => ({
106
+ type: u.ListItem,
107
+ content: t.text,
108
+ items: t.tokens ? W(t.tokens) : []
41
109
  }),
42
- [y.Code]: (e) => ({
43
- type: y.Code,
44
- lang: e.lang,
45
- code: e.text
110
+ [u.Code]: (t) => ({
111
+ type: u.Code,
112
+ lang: t.lang,
113
+ code: t.text
46
114
  }),
47
- [y.Table]: (e) => ({
48
- type: y.Table,
49
- header: e.header.map((t) => ({
50
- type: y.TableHeader,
51
- content: t.text
115
+ [u.Table]: (t) => ({
116
+ type: u.Table,
117
+ header: t.header.map((e) => ({
118
+ type: u.TableHeader,
119
+ content: e.text
52
120
  })),
53
- rows: e.rows.map(
54
- (t) => t.map((n) => ({
55
- type: y.TableCell,
56
- content: n.text
121
+ rows: t.rows.map(
122
+ (e) => e.map((s) => ({
123
+ type: u.TableCell,
124
+ content: s.text
57
125
  }))
58
126
  )
59
127
  }),
60
- [y.Image]: (e) => ({
61
- type: y.Image,
62
- src: e.href,
63
- alt: e.text
64
- }),
65
- [y.Link]: (e) => ({
66
- type: y.Link,
67
- href: e.href,
68
- text: e.text,
69
- items: e.tokens ? b(e.tokens) : []
128
+ [u.Image]: (t) => {
129
+ const { cleanHref: e, attrs: s } = K(t.href);
130
+ return {
131
+ type: u.Image,
132
+ src: e,
133
+ alt: t.text,
134
+ width: s.width,
135
+ height: s.height,
136
+ align: s.align
137
+ };
138
+ },
139
+ [u.Link]: (t) => ({
140
+ type: u.Link,
141
+ href: t.href,
142
+ text: t.text,
143
+ items: t.tokens ? W(t.tokens) : []
70
144
  }),
71
- [y.Strong]: (e) => ({
72
- type: y.Strong,
73
- content: e.text,
74
- items: e.tokens ? b(e.tokens) : []
145
+ [u.Strong]: (t) => ({
146
+ type: u.Strong,
147
+ content: t.text,
148
+ items: t.tokens ? W(t.tokens) : []
75
149
  }),
76
- [y.Em]: (e) => ({
77
- type: y.Em,
78
- content: e.text,
79
- items: e.tokens ? b(e.tokens) : []
150
+ [u.Em]: (t) => ({
151
+ type: u.Em,
152
+ content: t.text,
153
+ items: t.tokens ? W(t.tokens) : []
80
154
  }),
81
- [y.Text]: (e) => ({
82
- type: y.Text,
83
- content: e.text,
84
- items: e.tokens ? b(e.tokens) : []
155
+ [u.Text]: (t) => ({
156
+ type: u.Text,
157
+ content: t.text,
158
+ items: t.tokens ? W(t.tokens) : []
85
159
  }),
86
- [y.Hr]: (e) => ({
87
- type: y.Hr,
88
- content: e.raw,
89
- items: e.tokens ? b(e.tokens) : []
160
+ [u.Hr]: (t) => ({
161
+ type: u.Hr,
162
+ content: t.raw,
163
+ items: t.tokens ? W(t.tokens) : []
90
164
  }),
91
- [y.CodeSpan]: (e) => ({
92
- type: y.CodeSpan,
93
- content: e.text,
94
- items: e.tokens ? b(e.tokens) : []
165
+ [u.CodeSpan]: (t) => ({
166
+ type: u.CodeSpan,
167
+ content: t.text,
168
+ items: t.tokens ? W(t.tokens) : []
95
169
  }),
96
- [y.Blockquote]: (e) => ({
97
- type: y.Blockquote,
98
- content: e.text,
99
- items: e.tokens ? b(e.tokens) : []
170
+ [u.Blockquote]: (t) => ({
171
+ type: u.Blockquote,
172
+ content: t.text,
173
+ items: t.tokens ? W(t.tokens) : []
100
174
  })
101
- }, L = class L {
102
- static initialize(t) {
103
- this.options_ = t, this.cursor = { x: t.cursor.x, y: t.cursor.y }, this.lastContentY_ = t.cursor.y;
175
+ }, H = class H {
176
+ static initialize(e) {
177
+ this.options_ = e, this.cursor = { x: e.cursor.x, y: e.cursor.y }, this.lastContentY_ = e.cursor.y;
104
178
  }
105
179
  static getCursor() {
106
180
  return this.cursor;
107
181
  }
108
- static setCursor(t) {
109
- this.cursor = t;
182
+ static setCursor(e) {
183
+ this.cursor = e;
110
184
  }
111
185
  static get options() {
112
186
  return this.options_;
@@ -126,8 +200,8 @@ const Ct = async (e) => {
126
200
  * @param operation 'set' to assign a new value, 'add' to increment the current value.
127
201
  * @default operation = 'set'
128
202
  */
129
- static updateX(t, n = "set") {
130
- n === "set" ? this.cursor.x = t : n === "add" && (this.cursor.x += t);
203
+ static updateX(e, s = "set") {
204
+ s === "set" ? this.cursor.x = e : s === "add" && (this.cursor.x += e);
131
205
  }
132
206
  /**
133
207
  * Updates the y pointer of the cursor.
@@ -135,8 +209,8 @@ const Ct = async (e) => {
135
209
  * @param operation 'set' to assign a new value, 'add' to increment the current value.
136
210
  * @default operation = 'set'
137
211
  */
138
- static updateY(t, n = "set") {
139
- n === "set" ? this.cursor.y = t : n === "add" && (this.cursor.y += t);
212
+ static updateY(e, s = "set") {
213
+ s === "set" ? this.cursor.y = e : s === "add" && (this.cursor.y += e);
140
214
  }
141
215
  /**
142
216
  * Records a Y position as the bottom of rendered content.
@@ -144,8 +218,8 @@ const Ct = async (e) => {
144
218
  * where their actual text content ends, ignoring any trailing margins.
145
219
  * @param specificY Optional Y value to record. Defaults to current cursor Y.
146
220
  */
147
- static recordContentY(t) {
148
- this.lastContentY_ = t !== void 0 ? t : this.cursor.y;
221
+ static recordContentY(e) {
222
+ this.lastContentY_ = e !== void 0 ? e : this.cursor.y;
149
223
  }
150
224
  /**
151
225
  * Gets the last Y position recorded as content bottom.
@@ -161,75 +235,75 @@ const Ct = async (e) => {
161
235
  return this.cursor.y;
162
236
  }
163
237
  };
164
- L.cursor = { x: 0, y: 0 }, L.lastContentY_ = 0, L.inlineLock = !1;
165
- let g = L;
166
- const w = (e) => e.getTextDimensions("H").h * g.options.page.defaultLineHeightFactor, k = (e) => e.getTextDimensions("H").w * g.options.page.defaultLineHeightFactor, bt = (e, t, n, i) => {
167
- const r = 6 - (t?.depth ?? 0) > 0 ? 6 - (t?.depth ?? 0) : 1;
168
- if (e.setFontSize(g.options.page.defaultFontSize + r), t?.items && t?.items.length > 0)
169
- for (const a of t?.items ?? [])
170
- i(a, n, !1);
238
+ H.cursor = { x: 0, y: 0 }, H.lastContentY_ = 0, H.inlineLock = !1;
239
+ let n = H;
240
+ const C = (t) => t.getTextDimensions("H").h * n.options.page.defaultLineHeightFactor, Y = (t) => t.getTextDimensions("H").w * n.options.page.defaultLineHeightFactor, M = (t, e, s, c) => {
241
+ const g = 6 - (e?.depth ?? 0) > 0 ? 6 - (e?.depth ?? 0) : 1;
242
+ if (t.setFontSize(n.options.page.defaultFontSize + g), e?.items && e?.items.length > 0)
243
+ for (const r of e?.items ?? [])
244
+ c(r, s, !1);
171
245
  else {
172
- const a = w(e);
173
- e.text(
174
- t?.content ?? "",
175
- g.X + n,
176
- g.Y,
246
+ const r = C(t);
247
+ t.text(
248
+ e?.content ?? "",
249
+ n.X + s,
250
+ n.Y,
177
251
  {
178
252
  align: "left",
179
- maxWidth: g.options.page.maxContentWidth - n,
253
+ maxWidth: n.options.page.maxContentWidth - s,
180
254
  baseline: "top"
181
255
  }
182
- ), g.recordContentY(g.Y + a), g.updateY(a, "add");
256
+ ), n.recordContentY(n.Y + r), n.updateY(r, "add");
183
257
  }
184
- e.setFontSize(g.options.page.defaultFontSize), g.updateX(g.options.page.xpading, "set");
185
- }, T = (e) => {
186
- typeof g.options.pageBreakHandler == "function" ? g.options.pageBreakHandler(e) : e.addPage(
187
- g.options.page?.format,
188
- g.options.page?.orientation
189
- ), g.updateY(g.options.page.topmargin), g.updateX(g.options.page.xpading);
258
+ t.setFontSize(n.options.page.defaultFontSize), n.updateX(n.options.page.xpading, "set");
259
+ }, y = (t) => {
260
+ typeof n.options.pageBreakHandler == "function" ? n.options.pageBreakHandler(t) : t.addPage(
261
+ n.options.page?.format,
262
+ n.options.page?.orientation
263
+ ), n.updateY(n.options.page.topmargin), n.updateX(n.options.page.xpading);
190
264
  };
191
- class q {
265
+ class v {
192
266
  // Default codespan styling (can be overridden via RenderStore.options.codespan)
193
267
  static getCodespanOptions() {
194
- const t = g.options.codespan ?? {};
268
+ const e = n.options.codespan ?? {};
195
269
  return {
196
- backgroundColor: t.backgroundColor ?? "#EEEEEE",
197
- padding: t.padding ?? 0.5,
198
- showBackground: t.showBackground !== !1,
199
- fontSizeScale: t.fontSizeScale ?? 0.9
270
+ backgroundColor: e.backgroundColor ?? "#EEEEEE",
271
+ padding: e.padding ?? 0.5,
272
+ showBackground: e.showBackground !== !1,
273
+ fontSizeScale: e.fontSizeScale ?? 0.9
200
274
  };
201
275
  }
202
276
  /**
203
277
  * Apply font style to the jsPDF document.
204
278
  */
205
- static applyStyle(t, n) {
206
- const i = t.getFont().fontName, r = t.getFontSize(), a = () => {
207
- const o = g.options.font.bold?.name;
208
- return o && o !== "" ? o : i;
279
+ static applyStyle(e, s) {
280
+ const c = e.getFont().fontName, g = e.getFontSize(), r = () => {
281
+ const i = n.options.font.bold?.name;
282
+ return i && i !== "" ? i : c;
209
283
  }, l = () => {
210
- const o = g.options.font.regular?.name;
211
- return o && o !== "" ? o : i;
284
+ const i = n.options.font.regular?.name;
285
+ return i && i !== "" ? i : c;
212
286
  };
213
- switch (n) {
287
+ switch (s) {
214
288
  case "bold":
215
- t.setFont(
216
- a(),
217
- g.options.font.bold?.style || "bold"
289
+ e.setFont(
290
+ r(),
291
+ n.options.font.bold?.style || "bold"
218
292
  );
219
293
  break;
220
294
  case "italic":
221
- t.setFont(l(), "italic");
295
+ e.setFont(l(), "italic");
222
296
  break;
223
297
  case "bolditalic":
224
- t.setFont(a(), "bolditalic");
298
+ e.setFont(r(), "bolditalic");
225
299
  break;
226
300
  case "codespan":
227
- t.setFont("courier", "normal"), t.setFontSize(
228
- r * this.getCodespanOptions().fontSizeScale
301
+ e.setFont("courier", "normal"), e.setFontSize(
302
+ g * this.getCodespanOptions().fontSizeScale
229
303
  );
230
304
  break;
231
305
  default:
232
- t.setFont(l(), t.getFont().fontStyle);
306
+ e.setFont(l(), e.getFont().fontStyle);
233
307
  break;
234
308
  }
235
309
  }
@@ -238,60 +312,60 @@ class q {
238
312
  * NOTE: jsPDF's getTextWidth() does NOT include charSpace in its calculation,
239
313
  * so we must manually add it: effectiveWidth = getTextWidth(text) + (text.length * charSpace)
240
314
  */
241
- static measureWordWidth(t, n, i) {
242
- const r = t.getFont(), a = t.getFontSize();
243
- this.applyStyle(t, i);
244
- const l = t.getTextWidth(n), o = t.getCharSpace?.() ?? 0, h = l + n.length * o;
245
- return t.setFont(r.fontName, r.fontStyle), t.setFontSize(a), h;
315
+ static measureWordWidth(e, s, c) {
316
+ const g = e.getFont(), r = e.getFontSize();
317
+ this.applyStyle(e, c);
318
+ const l = e.getTextWidth(s), i = e.getCharSpace?.() ?? 0, a = l + s.length * i;
319
+ return e.setFont(g.fontName, g.fontStyle), e.setFontSize(r), a;
246
320
  }
247
321
  /**
248
322
  * Extract style from element type string.
249
323
  */
250
- static getStyleFromType(t, n) {
251
- switch (t) {
324
+ static getStyleFromType(e, s) {
325
+ switch (e) {
252
326
  case "strong":
253
- return n === "italic" ? "bolditalic" : "bold";
327
+ return s === "italic" ? "bolditalic" : "bold";
254
328
  case "em":
255
- return n === "bold" ? "bolditalic" : "italic";
329
+ return s === "bold" ? "bolditalic" : "italic";
256
330
  case "codespan":
257
331
  return "codespan";
258
332
  default:
259
- return n || "normal";
333
+ return s || "normal";
260
334
  }
261
335
  }
262
336
  /**
263
337
  * Flatten ParsedElement tree into an array of StyledWordInfo.
264
338
  * Handles nested inline elements.
265
339
  */
266
- static flattenToWords(t, n, i = "normal", r = !1, a) {
340
+ static flattenToWords(e, s, c = "normal", g = !1, r) {
267
341
  const l = [];
268
- for (const o of n) {
269
- const h = this.getStyleFromType(o.type, i), s = o.type === "link" || r, f = o.href || a;
270
- if (o.items && o.items.length > 0) {
271
- const u = this.flattenToWords(
272
- t,
273
- o.items,
274
- h,
275
- s,
276
- f
342
+ for (const i of s) {
343
+ const a = this.getStyleFromType(i.type, c), p = i.type === "link" || g, h = i.href || r;
344
+ if (i.items && i.items.length > 0) {
345
+ const f = this.flattenToWords(
346
+ e,
347
+ i.items,
348
+ a,
349
+ p,
350
+ h
277
351
  );
278
- l.push(...u);
352
+ l.push(...f);
279
353
  } else {
280
- const u = o.content || o.text || "";
281
- if (!u) continue;
282
- if (h === "codespan") {
283
- const p = u.trim();
284
- p && l.push({
285
- text: p,
354
+ const f = i.content || i.text || "";
355
+ if (!f) continue;
356
+ if (a === "codespan") {
357
+ const o = f.trim();
358
+ o && l.push({
359
+ text: o,
286
360
  width: this.measureWordWidth(
287
- t,
288
- p,
289
- h
361
+ e,
362
+ o,
363
+ a
290
364
  ),
291
- style: h,
292
- isLink: s,
293
- href: f,
294
- linkColor: s ? g.options.link?.linkColor || [
365
+ style: a,
366
+ isLink: p,
367
+ href: h,
368
+ linkColor: p ? n.options.link?.linkColor || [
295
369
  0,
296
370
  0,
297
371
  255
@@ -299,18 +373,18 @@ class q {
299
373
  });
300
374
  continue;
301
375
  }
302
- const d = u.split(/\s+/).filter((p) => p.length > 0);
376
+ const d = f.split(/\s+/).filter((o) => o.length > 0);
303
377
  if (d.length === 0)
304
378
  continue;
305
- for (let p = 0; p < d.length; p++) {
306
- const c = d[p];
379
+ for (let o = 0; o < d.length; o++) {
380
+ const m = d[o];
307
381
  l.push({
308
- text: c,
309
- width: this.measureWordWidth(t, c, h),
310
- style: h,
311
- isLink: s,
312
- href: f,
313
- linkColor: s ? g.options.link?.linkColor || [0, 0, 255] : void 0
382
+ text: m,
383
+ width: this.measureWordWidth(e, m, a),
384
+ style: a,
385
+ isLink: p,
386
+ href: h,
387
+ linkColor: p ? n.options.link?.linkColor || [0, 0, 255] : void 0
314
388
  });
315
389
  }
316
390
  }
@@ -321,71 +395,71 @@ class q {
321
395
  * Break a flat list of words into lines that fit within maxWidth.
322
396
  * Correctly tracks totalTextWidth (sum of word widths only) for justification.
323
397
  */
324
- static breakIntoLines(t, n, i) {
325
- const r = [];
326
- let a = [], l = 0, o = 0;
327
- const h = t.getTextWidth(" ");
328
- for (let s = 0; s < n.length; s++) {
329
- const f = n[s], u = a.length > 0 ? h + f.width : f.width;
330
- o + u > i && a.length > 0 ? (r.push({
331
- words: a,
398
+ static breakIntoLines(e, s, c) {
399
+ const g = [];
400
+ let r = [], l = 0, i = 0;
401
+ const a = e.getTextWidth(" ");
402
+ for (let p = 0; p < s.length; p++) {
403
+ const h = s[p], f = r.length > 0 ? a + h.width : h.width;
404
+ i + f > c && r.length > 0 ? (g.push({
405
+ words: r,
332
406
  totalTextWidth: l,
333
407
  isLastLine: !1
334
- }), a = [f], l = f.width, o = f.width) : (a.push(f), l += f.width, o += u);
408
+ }), r = [h], l = h.width, i = h.width) : (r.push(h), l += h.width, i += f);
335
409
  }
336
- return a.length > 0 && r.push({
337
- words: a,
410
+ return r.length > 0 && g.push({
411
+ words: r,
338
412
  totalTextWidth: l,
339
413
  isLastLine: !0
340
- }), r;
414
+ }), g;
341
415
  }
342
416
  /**
343
417
  * Render a single word with its style applied.
344
418
  */
345
- static renderWord(t, n, i, r) {
346
- const a = t.getFont(), l = t.getFontSize(), o = t.getTextColor();
347
- if (this.applyStyle(t, n.style), n.isLink && n.linkColor && t.setTextColor(...n.linkColor), n.style === "codespan") {
348
- const h = this.getCodespanOptions();
349
- if (h.showBackground) {
350
- const s = w(t), f = h.padding;
351
- t.setFillColor(h.backgroundColor), t.rect(
352
- i - f,
353
- r - f,
354
- n.width + f * 2,
355
- s + f * 2,
419
+ static renderWord(e, s, c, g) {
420
+ const r = e.getFont(), l = e.getFontSize(), i = e.getTextColor();
421
+ if (this.applyStyle(e, s.style), s.isLink && s.linkColor && e.setTextColor(...s.linkColor), s.style === "codespan") {
422
+ const a = this.getCodespanOptions();
423
+ if (a.showBackground) {
424
+ const p = C(e), h = a.padding;
425
+ e.setFillColor(a.backgroundColor), e.rect(
426
+ c - h,
427
+ g - h,
428
+ s.width + h * 2,
429
+ p + h * 2,
356
430
  "F"
357
- ), t.setFillColor("#000000");
431
+ ), e.setFillColor("#000000");
358
432
  }
359
433
  }
360
- if (t.text(n.text, i, r, { baseline: "top" }), n.isLink && n.href) {
361
- const h = w(t) / 2;
362
- t.link(i, r, n.width, h, { url: n.href });
434
+ if (e.text(s.text, c, g, { baseline: "top" }), s.isLink && s.href) {
435
+ const a = C(e) / 2;
436
+ e.link(c, g, s.width, a, { url: s.href });
363
437
  }
364
- t.setFont(a.fontName, a.fontStyle), t.setFontSize(l), t.setTextColor(o);
438
+ e.setFont(r.fontName, r.fontStyle), e.setFontSize(l), e.setTextColor(i);
365
439
  }
366
440
  /**
367
441
  * Render a single line with specified alignment.
368
442
  */
369
- static renderAlignedLine(t, n, i, r, a, l = "left") {
370
- const { words: o, totalTextWidth: h, isLastLine: s } = n;
371
- if (o.length === 0) return;
372
- const f = t.getTextWidth(" ");
373
- let u = i, d = f;
374
- const p = h + (o.length - 1) * f;
443
+ static renderAlignedLine(e, s, c, g, r, l = "left") {
444
+ const { words: i, totalTextWidth: a, isLastLine: p } = s;
445
+ if (i.length === 0) return;
446
+ const h = e.getTextWidth(" ");
447
+ let f = c, d = h;
448
+ const o = a + (i.length - 1) * h;
375
449
  switch (l) {
376
450
  case "right":
377
- u = i + a - p;
451
+ f = c + r - o;
378
452
  break;
379
453
  case "center":
380
- u = i + (a - p) / 2;
454
+ f = c + (r - o) / 2;
381
455
  break;
382
456
  case "justify":
383
- !s && o.length > 1 && (d = (a - h) / (o.length - 1));
457
+ !p && i.length > 1 && (d = (r - a) / (i.length - 1));
384
458
  break;
385
459
  }
386
- let c = u;
387
- for (let v = 0; v < o.length; v++)
388
- this.renderWord(t, o[v], c, r), c += o[v].width, v < o.length - 1 && (c += d);
460
+ let m = f;
461
+ for (let x = 0; x < i.length; x++)
462
+ this.renderWord(e, i[x], m, g), m += i[x].width, x < i.length - 1 && (m += d);
389
463
  }
390
464
  /**
391
465
  * Main entry point: Render a paragraph with mixed inline elements.
@@ -398,34 +472,34 @@ class q {
398
472
  * @param maxWidth Maximum width for text wrapping
399
473
  * @param alignment Optional alignment override (defaults to RenderStore option)
400
474
  */
401
- static renderStyledParagraph(t, n, i, r, a, l) {
402
- const o = l ?? g.options.content?.textAlignment ?? "left", h = this.flattenToWords(t, n);
403
- if (h.length === 0) return;
404
- const s = this.breakIntoLines(t, h, a), f = w(t) * g.options.page.defaultLineHeightFactor;
405
- let u = r;
406
- for (const p of s)
407
- u + f > g.options.page.maxContentHeight && (T(t), u = g.Y), this.renderAlignedLine(
408
- t,
409
- p,
410
- i,
411
- u,
412
- a,
413
- o
414
- ), g.recordContentY(u + w(t)), u += f, g.updateY(f, "add");
415
- const d = s[s.length - 1];
475
+ static renderStyledParagraph(e, s, c, g, r, l) {
476
+ const i = l ?? n.options.content?.textAlignment ?? "left", a = this.flattenToWords(e, s);
477
+ if (a.length === 0) return;
478
+ const p = this.breakIntoLines(e, a, r), h = C(e) * n.options.page.defaultLineHeightFactor;
479
+ let f = g;
480
+ for (const o of p)
481
+ f + h > n.options.page.maxContentHeight && (y(e), f = n.Y), this.renderAlignedLine(
482
+ e,
483
+ o,
484
+ c,
485
+ f,
486
+ r,
487
+ i
488
+ ), n.recordContentY(f + C(e)), f += h, n.updateY(h, "add");
489
+ const d = p[p.length - 1];
416
490
  if (d) {
417
- const p = d.totalTextWidth + (d.words.length - 1) * t.getTextWidth(" ");
418
- g.updateX(i + p, "set");
491
+ const o = d.totalTextWidth + (d.words.length - 1) * e.getTextWidth(" ");
492
+ n.updateX(c + o, "set");
419
493
  }
420
494
  }
421
495
  /**
422
496
  * @deprecated Use renderStyledParagraph instead
423
497
  */
424
- static renderJustifiedParagraph(t, n, i, r, a) {
425
- this.renderStyledParagraph(t, n, i, r, a);
498
+ static renderJustifiedParagraph(e, s, c, g, r) {
499
+ this.renderStyledParagraph(e, s, c, g, r);
426
500
  }
427
501
  }
428
- class Y {
502
+ class I {
429
503
  /**
430
504
  * Renders text with automatic line wrapping and page breaking.
431
505
  * @param doc jsPDF instance
@@ -435,228 +509,228 @@ class Y {
435
509
  * @param maxWidth Max width for text wrapping
436
510
  * @param justify Whether to justify the text
437
511
  */
438
- static renderText(t, n, i = g.X, r = g.Y, a, l = !1) {
439
- const o = t.splitTextToSize(n, a), h = w(t), s = h * g.options.page.defaultLineHeightFactor;
440
- let f = r;
441
- for (let u = 0; u < o.length; u++) {
442
- const d = o[u];
443
- f + s > g.options.page.maxContentHeight && (T(t), f = g.Y), l ? u === o.length - 1 ? t.text(d, i, f, { baseline: "top" }) : t.text(d, i, f, {
444
- maxWidth: a,
512
+ static renderText(e, s, c = n.X, g = n.Y, r, l = !1) {
513
+ const i = e.splitTextToSize(s, r), a = C(e), p = a * n.options.page.defaultLineHeightFactor;
514
+ let h = g;
515
+ for (let f = 0; f < i.length; f++) {
516
+ const d = i[f];
517
+ h + p > n.options.page.maxContentHeight && (y(e), h = n.Y), l ? f === i.length - 1 ? e.text(d, c, h, { baseline: "top" }) : e.text(d, c, h, {
518
+ maxWidth: r,
445
519
  align: "justify",
446
520
  baseline: "top"
447
- }) : t.text(d, i, f, { baseline: "top" }), g.recordContentY(f + h), f += s, g.updateY(s, "add");
521
+ }) : e.text(d, c, h, { baseline: "top" }), n.recordContentY(h + a), h += p, n.updateY(p, "add");
448
522
  }
449
- return f;
523
+ return h;
450
524
  }
451
525
  }
452
- const Wt = (e, t, n, i) => {
453
- g.activateInlineLock(), e.setFontSize(g.options.page.defaultFontSize);
454
- const r = g.options.page.maxContentWidth - n;
455
- if (t?.items && t?.items.length > 0)
456
- if (t.items.some(
526
+ const tt = (t, e, s, c) => {
527
+ n.activateInlineLock(), t.setFontSize(n.options.page.defaultFontSize);
528
+ const g = n.options.page.maxContentWidth - s;
529
+ if (e?.items && e?.items.length > 0)
530
+ if (e.items.some(
457
531
  (l) => !["strong", "em", "text", "codespan", "link"].includes(
458
532
  l.type
459
533
  )
460
534
  )) {
461
- const l = [], o = () => {
462
- l.length > 0 && (q.renderStyledParagraph(
463
- e,
535
+ const l = [], i = () => {
536
+ l.length > 0 && (v.renderStyledParagraph(
537
+ t,
464
538
  l,
465
- g.X + n,
466
- g.Y,
467
- r
539
+ n.X + s,
540
+ n.Y,
541
+ g
468
542
  ), l.length = 0);
469
543
  };
470
- for (const h of t.items)
544
+ for (const a of e.items)
471
545
  ["strong", "em", "text", "codespan", "link"].includes(
472
- h.type
473
- ) ? l.push(h) : (o(), i(h, n, !1));
474
- o();
546
+ a.type
547
+ ) ? l.push(a) : (i(), c(a, s, !1));
548
+ i();
475
549
  } else
476
- q.renderStyledParagraph(
477
- e,
478
- t.items,
479
- g.X + n,
480
- g.Y,
481
- r
550
+ v.renderStyledParagraph(
551
+ t,
552
+ e.items,
553
+ n.X + s,
554
+ n.Y,
555
+ g
482
556
  );
483
557
  else {
484
- const a = t.content ?? "", l = g.options.content?.textAlignment ?? "left";
485
- a.trim() && Y.renderText(
486
- e,
487
- a,
488
- g.X + n,
489
- g.Y,
558
+ const r = e.content ?? "", l = n.options.content?.textAlignment ?? "left";
559
+ r.trim() && I.renderText(
560
+ t,
490
561
  r,
562
+ n.X + s,
563
+ n.Y,
564
+ g,
491
565
  l === "justify"
492
566
  );
493
567
  }
494
- g.updateX(g.options.page.xpading), g.deactivateInlineLock();
495
- }, Ht = (e, t, n, i) => {
496
- e.setFontSize(g.options.page.defaultFontSize);
497
- for (const [r, a] of t?.items?.entries() ?? []) {
498
- const l = t.ordered ? (t.start ?? 0) + r : t.start;
499
- i(
500
- a,
501
- n + 1,
568
+ n.updateX(n.options.page.xpading), n.deactivateInlineLock();
569
+ }, et = (t, e, s, c) => {
570
+ t.setFontSize(n.options.page.defaultFontSize);
571
+ for (const [g, r] of e?.items?.entries() ?? []) {
572
+ const l = e.ordered ? (e.start ?? 0) + g : e.start;
573
+ c(
574
+ r,
575
+ s + 1,
502
576
  !0,
503
577
  l,
504
- t.ordered
578
+ e.ordered
505
579
  );
506
580
  }
507
- }, Pt = (e, t, n, i, r, a) => {
508
- g.Y + w(e) >= g.options.page.maxContentHeight && T(e);
509
- const l = g.options, o = n * l.page.indent, h = a ? `${r}. ` : "• ", s = l.page.xpading;
510
- g.updateX(s, "set"), e.setFont(l.font.regular.name, l.font.regular.style), e.text(h, s + o, g.Y, { baseline: "top" });
511
- const f = e.getTextWidth(h), u = s + o + f, d = l.page.maxContentWidth - o - f;
512
- if (t.items && t.items.length > 0) {
513
- const p = [], c = () => {
514
- p.length > 0 && (q.renderStyledParagraph(
515
- e,
516
- p,
517
- u,
518
- g.Y,
581
+ }, nt = (t, e, s, c, g, r) => {
582
+ n.Y + C(t) >= n.options.page.maxContentHeight && y(t);
583
+ const l = n.options, i = s * l.page.indent, a = r ? `${g}. ` : "• ", p = l.page.xpading;
584
+ n.updateX(p, "set"), t.setFont(l.font.regular.name, l.font.regular.style), t.text(a, p + i, n.Y, { baseline: "top" });
585
+ const h = t.getTextWidth(a), f = p + i + h, d = l.page.maxContentWidth - i - h;
586
+ if (e.items && e.items.length > 0) {
587
+ const o = [], m = () => {
588
+ o.length > 0 && (v.renderStyledParagraph(
589
+ t,
590
+ o,
591
+ f,
592
+ n.Y,
519
593
  d
520
- ), p.length = 0, g.updateX(s, "set"));
594
+ ), o.length = 0, n.updateX(p, "set"));
521
595
  };
522
- for (const v of t.items)
523
- v.type === y.List ? (c(), i(
524
- v,
525
- n + 1,
596
+ for (const x of e.items)
597
+ x.type === u.List ? (m(), c(
598
+ x,
599
+ s,
526
600
  !0,
527
- r,
528
- v.ordered ?? !1
529
- )) : v.type === y.ListItem ? (c(), i(
530
- v,
531
- n + 1,
601
+ g,
602
+ x.ordered ?? !1
603
+ )) : x.type === u.ListItem ? (m(), c(
604
+ x,
605
+ s,
532
606
  !0,
533
- r,
534
- a
535
- )) : p.push(v);
536
- c();
537
- } else if (t.content) {
538
- const p = l.content?.textAlignment ?? "left";
539
- Y.renderText(
540
- e,
541
- t.content,
542
- u,
543
- g.Y,
607
+ g,
608
+ r
609
+ )) : o.push(x);
610
+ m();
611
+ } else if (e.content) {
612
+ const o = l.content?.textAlignment ?? "left";
613
+ I.renderText(
614
+ t,
615
+ e.content,
616
+ f,
617
+ n.Y,
544
618
  d,
545
- p === "justify"
619
+ o === "justify"
546
620
  );
547
621
  }
548
- }, kt = (e, t, n, i, r, a, l, o = !0) => {
549
- if (t?.items && t?.items.length > 0)
550
- for (const h of t?.items ?? [])
551
- r(
552
- h,
553
- n,
554
- i,
622
+ }, st = (t, e, s, c, g, r, l, i = !0) => {
623
+ if (e?.items && e?.items.length > 0)
624
+ for (const a of e?.items ?? [])
625
+ g(
555
626
  a,
627
+ s,
628
+ c,
629
+ r,
556
630
  l,
557
- o
631
+ i
558
632
  );
559
633
  else {
560
- const h = g.options, s = n * h.page.indent, f = i ? l ? `${a}. ` : "• " : "", u = t.content || "", d = h.page.xpading;
561
- if (!u && !f) return;
562
- if (!u.trim() && !f) {
563
- const p = (u.match(/\n/g) || []).length;
564
- if (p > 1) {
565
- const c = p - 1, v = e.getTextDimensions("A").h * h.page.defaultLineHeightFactor, m = c * v;
566
- g.Y + m > h.page.maxContentHeight ? T(e) : (g.updateY(m, "add"), g.recordContentY(g.Y));
634
+ const a = n.options, p = s * a.page.indent, h = c ? l ? `${r}. ` : "• " : "", f = e.content || "", d = a.page.xpading;
635
+ if (!f && !h) return;
636
+ if (!f.trim() && !h) {
637
+ const o = (f.match(/\n/g) || []).length;
638
+ if (o > 1) {
639
+ const m = o - 1, x = t.getTextDimensions("A").h * a.page.defaultLineHeightFactor, F = m * x;
640
+ n.Y + F > a.page.maxContentHeight ? y(t) : (n.updateY(F, "add"), n.recordContentY(n.Y));
567
641
  }
568
642
  return;
569
643
  }
570
- if (g.updateX(d, "set"), i && f) {
571
- const p = e.getTextWidth(f), c = h.page.maxContentWidth - s - p;
572
- e.setFont(h.font.regular.name, h.font.regular.style), e.text(f, d + s, g.Y, {
644
+ if (n.updateX(d, "set"), c && h) {
645
+ const o = t.getTextWidth(h), m = a.page.maxContentWidth - p - o;
646
+ t.setFont(a.font.regular.name, a.font.regular.style), t.text(h, d + p, n.Y, {
573
647
  baseline: "top"
574
- }), Y.renderText(
575
- e,
576
- u,
577
- d + s + p,
578
- g.Y,
579
- c,
580
- o
648
+ }), I.renderText(
649
+ t,
650
+ f,
651
+ d + p + o,
652
+ n.Y,
653
+ m,
654
+ i
581
655
  );
582
656
  } else {
583
- const p = h.page.maxContentWidth - s;
584
- Y.renderText(
585
- e,
586
- u,
587
- d + s,
588
- g.Y,
589
- p,
590
- o
657
+ const o = a.page.maxContentWidth - p;
658
+ I.renderText(
659
+ t,
660
+ f,
661
+ d + p,
662
+ n.Y,
663
+ o,
664
+ i
591
665
  );
592
666
  }
593
- g.updateX(d, "set");
667
+ n.updateX(d, "set");
594
668
  }
595
- }, Dt = (e) => {
596
- const t = e.internal.pageSize.getWidth();
597
- e.setLineDashPattern([1, 1], 0), e.setLineWidth(0.1), e.line(
598
- g.options.page.xpading,
599
- g.Y,
600
- t - g.options.page.xpading,
601
- g.Y
602
- ), e.setLineWidth(0.1), e.setLineDashPattern([], 0), g.updateY(w(e), "add");
603
- }, Tt = (e, t, n, i) => {
604
- const r = e.getFont(), a = e.getFontSize();
605
- e.setFont("courier", "normal");
606
- const l = g.options.page.defaultFontSize * 0.9;
607
- e.setFontSize(l);
608
- const o = n * g.options.page.indent, h = g.options.page.maxContentWidth - o - 8, s = e.getLineHeightFactor(), f = l / e.internal.scaleFactor * s, d = (t.code ?? "").replace(/[\r\n\s]+$/, "");
669
+ }, it = (t) => {
670
+ const e = t.internal.pageSize.getWidth();
671
+ t.setLineDashPattern([1, 1], 0), t.setLineWidth(0.1), t.line(
672
+ n.options.page.xpading,
673
+ n.Y,
674
+ e - n.options.page.xpading,
675
+ n.Y
676
+ ), t.setLineWidth(0.1), t.setLineDashPattern([], 0), n.updateY(C(t), "add");
677
+ }, at = (t, e, s, c) => {
678
+ const g = t.getFont(), r = t.getFontSize();
679
+ t.setFont("courier", "normal");
680
+ const l = n.options.page.defaultFontSize * 0.9;
681
+ t.setFontSize(l);
682
+ const i = s * n.options.page.indent, a = n.options.page.maxContentWidth - i - 8, p = t.getLineHeightFactor(), h = l / t.internal.scaleFactor * p, d = (e.code ?? "").replace(/[\r\n\s]+$/, "");
609
683
  if (!d) {
610
- e.setFont(r.fontName, r.fontStyle), e.setFontSize(a);
684
+ t.setFont(g.fontName, g.fontStyle), t.setFontSize(r);
611
685
  return;
612
686
  }
613
- const p = e.splitTextToSize(d, h);
614
- for (; p.length > 0 && p[p.length - 1].trim() === ""; )
615
- p.pop();
616
- if (p.length === 0) {
617
- e.setFont(r.fontName, r.fontStyle), e.setFontSize(a);
687
+ const o = t.splitTextToSize(d, a);
688
+ for (; o.length > 0 && o[o.length - 1].trim() === ""; )
689
+ o.pop();
690
+ if (o.length === 0) {
691
+ t.setFont(g.fontName, g.fontStyle), t.setFontSize(r);
618
692
  return;
619
693
  }
620
- const c = 4, v = "#EEEEEE", m = "#DDDDDD";
621
- let x = 0;
622
- for (; x < p.length; ) {
623
- const C = g.options.page.maxContentHeight - g.Y, S = p.length - x, F = C - c * 2;
624
- let W = Math.floor(F / f);
625
- if (W <= 0) {
626
- T(e);
694
+ const m = 4, x = "#EEEEEE", F = "#DDDDDD";
695
+ let b = 0;
696
+ for (; b < o.length; ) {
697
+ const k = n.options.page.maxContentHeight - n.Y, w = o.length - b, T = k - m * 2;
698
+ let S = Math.floor(T / h);
699
+ if (S <= 0) {
700
+ y(t);
627
701
  continue;
628
702
  }
629
- W > S && (W = S);
630
- const St = p.slice(
631
- x,
632
- x + W
633
- ), B = x === 0, X = x + W >= p.length, K = W * f;
634
- if (B && g.updateY(c, "add"), e.setFillColor(v), e.setDrawColor(m), e.roundedRect(
635
- g.X,
636
- g.Y - c,
637
- g.options.page.maxContentWidth,
638
- K + (B ? c : 0) + (X ? c : 0),
703
+ S > w && (S = w);
704
+ const $ = o.slice(
705
+ b,
706
+ b + S
707
+ ), X = b === 0, z = b + S >= o.length, N = S * h;
708
+ if (X && n.updateY(m, "add"), t.setFillColor(x), t.setDrawColor(F), t.roundedRect(
709
+ n.X,
710
+ n.Y - m,
711
+ n.options.page.maxContentWidth,
712
+ N + (X ? m : 0) + (z ? m : 0),
639
713
  2,
640
714
  2,
641
715
  "FD"
642
- ), B && t.lang) {
643
- const j = e.getFontSize();
644
- e.setFontSize(10), e.setTextColor("#666666"), e.text(
645
- t.lang,
646
- g.X + g.options.page.maxContentWidth - e.getTextWidth(t.lang) - 4,
647
- g.Y,
716
+ ), X && e.lang) {
717
+ const E = t.getFontSize();
718
+ t.setFontSize(10), t.setTextColor("#666666"), t.text(
719
+ e.lang,
720
+ n.X + n.options.page.maxContentWidth - t.getTextWidth(e.lang) - 4,
721
+ n.Y,
648
722
  { baseline: "top" }
649
- ), e.setFontSize(j), e.setTextColor("#000000");
723
+ ), t.setFontSize(E), t.setTextColor("#000000");
650
724
  }
651
- let G = g.Y;
652
- for (const j of St)
653
- e.text(j, g.X + 4, G, { baseline: "top" }), G += f;
654
- g.updateY(K, "add"), g.recordContentY(g.Y + (X ? c : 0)), X && g.updateY(c, "add"), x += W, x < p.length && T(e);
725
+ let R = n.Y;
726
+ for (const E of $)
727
+ t.text(E, n.X + 4, R, { baseline: "top" }), R += h;
728
+ n.updateY(N, "add"), n.recordContentY(n.Y + (z ? m : 0)), z && n.updateY(m, "add"), b += S, b < o.length && y(t);
655
729
  }
656
- e.setFont(r.fontName, r.fontStyle), e.setFontSize(a);
657
- }, zt = (e, t, n) => {
658
- const i = e.getFont().fontName, r = e.getFont().fontStyle, a = e.getFontSize(), l = (h) => {
659
- switch (h) {
730
+ t.setFont(g.fontName, g.fontStyle), t.setFontSize(r);
731
+ }, ot = (t, e, s) => {
732
+ const c = t.getFont().fontName, g = t.getFont().fontStyle, r = t.getFontSize(), l = (a) => {
733
+ switch (a) {
660
734
  case "normal":
661
735
  return 0;
662
736
  case "bold":
@@ -670,1363 +744,338 @@ const Wt = (e, t, n, i) => {
670
744
  default:
671
745
  return 0;
672
746
  }
673
- }, o = (h, s) => {
674
- s === "bold" ? e.setFont(
675
- g.options.font.bold.name && g.options.font.bold.name !== "" ? g.options.font.bold.name : i,
676
- g.options.font.bold.style || "bold"
677
- ) : s === "italic" ? e.setFont(g.options.font.regular.name, "italic") : s === "bolditalic" ? e.setFont(
678
- g.options.font.bold.name && g.options.font.bold.name !== "" ? g.options.font.bold.name : i,
747
+ }, i = (a, p) => {
748
+ p === "bold" ? t.setFont(
749
+ n.options.font.bold.name && n.options.font.bold.name !== "" ? n.options.font.bold.name : c,
750
+ n.options.font.bold.style || "bold"
751
+ ) : p === "italic" ? t.setFont(n.options.font.regular.name, "italic") : p === "bolditalic" ? t.setFont(
752
+ n.options.font.bold.name && n.options.font.bold.name !== "" ? n.options.font.bold.name : c,
679
753
  "bolditalic"
680
- ) : s === "codespan" ? (e.setFont("courier", "normal"), e.setFontSize(a * 0.9)) : e.setFont(
681
- g.options.font.regular.name,
682
- r
754
+ ) : p === "codespan" ? (t.setFont("courier", "normal"), t.setFontSize(r * 0.9)) : t.setFont(
755
+ n.options.font.regular.name,
756
+ g
683
757
  );
684
- const f = g.options.page.maxContentWidth - n - g.X, u = e.splitTextToSize(h, f), d = s === "codespan", p = 1, c = "#EEEEEE";
685
- if (g.isInlineLockActive)
686
- for (let v = 0; v < u.length; v++) {
758
+ const h = n.options.page.maxContentWidth - s - n.X, f = t.splitTextToSize(a, h), d = p === "codespan", o = 1, m = "#EEEEEE";
759
+ if (n.isInlineLockActive)
760
+ for (let x = 0; x < f.length; x++) {
687
761
  if (d) {
688
- const m = e.getTextWidth(u[v]) + k(e), x = w(e);
689
- e.setFillColor(c), e.roundedRect(
690
- g.X + n - p,
691
- g.Y - p,
692
- m + p * 2,
693
- x + p * 2,
762
+ const F = t.getTextWidth(f[x]) + Y(t), b = C(t);
763
+ t.setFillColor(m), t.roundedRect(
764
+ n.X + s - o,
765
+ n.Y - o,
766
+ F + o * 2,
767
+ b + o * 2,
694
768
  2,
695
769
  2,
696
770
  "F"
697
- ), e.setFillColor("#000000");
771
+ ), t.setFillColor("#000000");
698
772
  }
699
- e.text(u[v], g.X + n, g.Y, {
773
+ t.text(f[x], n.X + s, n.Y, {
700
774
  baseline: "top",
701
- maxWidth: f
702
- }), g.updateX(
703
- e.getTextDimensions(u[v]).w + (d ? p * 2 : 1),
775
+ maxWidth: h
776
+ }), n.updateX(
777
+ t.getTextDimensions(f[x]).w + (d ? o * 2 : 1),
704
778
  "add"
705
- ), v < u.length - 1 && (g.updateY(w(e), "add"), g.updateX(
706
- g.options.page.xpading,
779
+ ), x < f.length - 1 && (n.updateY(C(t), "add"), n.updateX(
780
+ n.options.page.xpading,
707
781
  "set"
708
782
  ));
709
783
  }
710
- else if (u.length > 1) {
711
- const v = u[0], m = u?.slice(1)?.join(" ");
784
+ else if (f.length > 1) {
785
+ const x = f[0], F = f?.slice(1)?.join(" ");
712
786
  if (d) {
713
- const S = e.getTextWidth(v) + k(e), F = w(e);
714
- e.setFillColor(c), e.roundedRect(
715
- g.X + (n >= 2 ? n + 2 : 0) - p,
716
- g.Y - p,
717
- S + p * 2,
718
- F + p * 2,
787
+ const w = t.getTextWidth(x) + Y(t), T = C(t);
788
+ t.setFillColor(m), t.roundedRect(
789
+ n.X + (s >= 2 ? s + 2 : 0) - o,
790
+ n.Y - o,
791
+ w + o * 2,
792
+ T + o * 2,
719
793
  2,
720
794
  2,
721
795
  "F"
722
- ), e.setFillColor("#000000");
796
+ ), t.setFillColor("#000000");
723
797
  }
724
- e.text(
725
- v,
726
- g.X + (n >= 2 ? n + 2 * l(s) : 0),
727
- g.Y,
798
+ t.text(
799
+ x,
800
+ n.X + (s >= 2 ? s + 2 * l(p) : 0),
801
+ n.Y,
728
802
  {
729
803
  baseline: "top",
730
- maxWidth: f
804
+ maxWidth: h
731
805
  }
732
- ), g.updateX(g.options.page.xpading + n), g.updateY(w(e), "add");
733
- const x = g.options.page.maxContentWidth - n - g.options.page.xpading;
734
- e.splitTextToSize(
735
- m,
736
- x
737
- ).forEach((S) => {
806
+ ), n.updateX(n.options.page.xpading + s), n.updateY(C(t), "add");
807
+ const b = n.options.page.maxContentWidth - s - n.options.page.xpading;
808
+ t.splitTextToSize(
809
+ F,
810
+ b
811
+ ).forEach((w) => {
738
812
  if (d) {
739
- const F = e.getTextWidth(S) + k(e), W = w(e);
740
- e.setFillColor(c), e.roundedRect(
741
- g.X + k(e) - p,
742
- g.Y - p,
743
- F + p * 2,
744
- W + p * 2,
813
+ const T = t.getTextWidth(w) + Y(t), S = C(t);
814
+ t.setFillColor(m), t.roundedRect(
815
+ n.X + Y(t) - o,
816
+ n.Y - o,
817
+ T + o * 2,
818
+ S + o * 2,
745
819
  2,
746
820
  2,
747
821
  "F"
748
- ), e.setFillColor("#000000");
822
+ ), t.setFillColor("#000000");
749
823
  }
750
- e.text(
751
- S,
752
- g.X + k(e),
753
- g.Y,
824
+ t.text(
825
+ w,
826
+ n.X + Y(t),
827
+ n.Y,
754
828
  {
755
829
  baseline: "top",
756
- maxWidth: x
830
+ maxWidth: b
757
831
  }
758
832
  );
759
833
  });
760
834
  } else {
761
835
  if (d) {
762
- const v = e.getTextWidth(h) + k(e), m = w(e);
763
- e.setFillColor(c), e.roundedRect(
764
- g.X + n - p,
765
- g.Y - p,
766
- v + p * 2,
767
- m + p * 2,
836
+ const x = t.getTextWidth(a) + Y(t), F = C(t);
837
+ t.setFillColor(m), t.roundedRect(
838
+ n.X + s - o,
839
+ n.Y - o,
840
+ x + o * 2,
841
+ F + o * 2,
768
842
  2,
769
843
  2,
770
844
  "F"
771
- ), e.setFillColor("#000000");
845
+ ), t.setFillColor("#000000");
772
846
  }
773
- e.text(h, g.X + n, g.Y, {
847
+ t.text(a, n.X + s, n.Y, {
774
848
  baseline: "top",
775
- maxWidth: f
776
- }), g.updateX(
777
- e.getTextDimensions(h).w + (n >= 2 ? h.split(" ").length + 2 : 2) * l(s) * 0.5 + (d ? p * 2 : 0),
849
+ maxWidth: h
850
+ }), n.updateX(
851
+ t.getTextDimensions(a).w + (s >= 2 ? a.split(" ").length + 2 : 2) * l(p) * 0.5 + (d ? o * 2 : 0),
778
852
  "add"
779
853
  );
780
854
  }
781
855
  };
782
- if (t.type === "text" && t.items && t.items.length > 0)
783
- for (const h of t.items)
784
- if (h.type === "codespan")
785
- o(h.content || "", "codespan");
786
- else if (h.type === "em" || h.type === "strong") {
787
- const s = h.type === "em" ? "italic" : "bold";
788
- if (h.items && h.items.length > 0)
789
- for (const f of h.items)
790
- f.type === "strong" && s === "italic" || f.type === "em" && s === "bold" ? o(
791
- f.content || "",
856
+ if (e.type === "text" && e.items && e.items.length > 0)
857
+ for (const a of e.items)
858
+ if (a.type === "codespan")
859
+ i(a.content || "", "codespan");
860
+ else if (a.type === "em" || a.type === "strong") {
861
+ const p = a.type === "em" ? "italic" : "bold";
862
+ if (a.items && a.items.length > 0)
863
+ for (const h of a.items)
864
+ h.type === "strong" && p === "italic" || h.type === "em" && p === "bold" ? i(
865
+ h.content || "",
792
866
  "bolditalic"
793
- ) : o(
794
- f.content || "",
795
- s
867
+ ) : i(
868
+ h.content || "",
869
+ p
796
870
  );
797
871
  else
798
- o(h.content || "", s);
872
+ i(a.content || "", p);
799
873
  } else
800
- o(h.content || "", "normal");
801
- else t.type === "em" ? o(t.content || "", "italic") : t.type === "strong" ? o(t.content || "", "bold") : t.type === "codespan" ? o(t.content || "", "codespan") : o(t.content || "", "normal");
802
- e.setFont(i, r), e.setFontSize(a);
803
- }, Lt = (e, t, n) => {
804
- const i = e.getFont().fontName, r = e.getFont().fontStyle, a = e.getFontSize(), l = e.getTextColor(), o = g.options.link?.linkColor || [0, 0, 255];
805
- e.setTextColor(...o);
806
- const h = g.options.page.maxContentWidth - n - g.X, s = t.text || t.content || "", f = t.href || "", u = e.splitTextToSize(s, h);
807
- if (g.isInlineLockActive)
808
- for (let d = 0; d < u.length; d++) {
809
- const p = e.getTextDimensions(u[d]).w, c = w(e) / 2;
810
- e.link(
811
- g.X + n,
812
- g.Y,
813
- p,
814
- c,
815
- { url: f }
816
- ), e.text(u[d], g.X + n, g.Y, {
874
+ i(a.content || "", "normal");
875
+ else e.type === "em" ? i(e.content || "", "italic") : e.type === "strong" ? i(e.content || "", "bold") : e.type === "codespan" ? i(e.content || "", "codespan") : i(e.content || "", "normal");
876
+ t.setFont(c, g), t.setFontSize(r);
877
+ }, rt = (t, e, s) => {
878
+ const c = t.getFont().fontName, g = t.getFont().fontStyle, r = t.getFontSize(), l = t.getTextColor(), i = n.options.link?.linkColor || [0, 0, 255];
879
+ t.setTextColor(...i);
880
+ const a = n.options.page.maxContentWidth - s - n.X, p = e.text || e.content || "", h = e.href || "", f = t.splitTextToSize(p, a);
881
+ if (n.isInlineLockActive)
882
+ for (let d = 0; d < f.length; d++) {
883
+ const o = t.getTextDimensions(f[d]).w, m = C(t) / 2;
884
+ t.link(
885
+ n.X + s,
886
+ n.Y,
887
+ o,
888
+ m,
889
+ { url: h }
890
+ ), t.text(f[d], n.X + s, n.Y, {
817
891
  baseline: "top",
818
- maxWidth: h
819
- }), g.updateX(p + 1, "add"), g.X + p > g.options.page.maxContentWidth - n && (g.updateY(c, "add"), g.updateX(
820
- g.options.page.xpading + n,
892
+ maxWidth: a
893
+ }), n.updateX(o + 1, "add"), n.X + o > n.options.page.maxContentWidth - s && (n.updateY(m, "add"), n.updateX(
894
+ n.options.page.xpading + s,
821
895
  "set"
822
- )), d < u.length - 1 && (g.updateY(c, "add"), g.updateX(
823
- g.options.page.xpading + n,
896
+ )), d < f.length - 1 && (n.updateY(m, "add"), n.updateX(
897
+ n.options.page.xpading + s,
824
898
  "set"
825
899
  ));
826
900
  }
827
- else if (u.length > 1) {
828
- const d = u[0], p = u?.slice(1)?.join(" "), c = e.getTextDimensions(d).w, v = w(e) / 2;
829
- e.link(
830
- g.X + n,
831
- g.Y,
832
- c,
833
- v,
834
- { url: f }
835
- ), e.text(d, g.X + n, g.Y, {
901
+ else if (f.length > 1) {
902
+ const d = f[0], o = f?.slice(1)?.join(" "), m = t.getTextDimensions(d).w, x = C(t) / 2;
903
+ t.link(
904
+ n.X + s,
905
+ n.Y,
906
+ m,
907
+ x,
908
+ { url: h }
909
+ ), t.text(d, n.X + s, n.Y, {
836
910
  baseline: "top",
837
- maxWidth: h
838
- }), g.updateX(g.options.page.xpading + n), g.updateY(v, "add");
839
- const m = g.options.page.maxContentWidth - n - g.options.page.xpading;
840
- e.splitTextToSize(p, m).forEach((C) => {
841
- const S = e.getTextDimensions(C).w;
842
- e.link(
843
- g.X + k(e),
844
- g.Y,
845
- S,
846
- v,
847
- { url: f }
848
- ), e.text(
849
- C,
850
- g.X + k(e),
851
- g.Y,
911
+ maxWidth: a
912
+ }), n.updateX(n.options.page.xpading + s), n.updateY(x, "add");
913
+ const F = n.options.page.maxContentWidth - s - n.options.page.xpading;
914
+ t.splitTextToSize(o, F).forEach((k) => {
915
+ const w = t.getTextDimensions(k).w;
916
+ t.link(
917
+ n.X + Y(t),
918
+ n.Y,
919
+ w,
920
+ x,
921
+ { url: h }
922
+ ), t.text(
923
+ k,
924
+ n.X + Y(t),
925
+ n.Y,
852
926
  {
853
927
  baseline: "top",
854
- maxWidth: m
928
+ maxWidth: F
855
929
  }
856
930
  );
857
931
  });
858
932
  } else {
859
- const d = e.getTextDimensions(s).w, p = w(e) / 2;
860
- e.link(
861
- g.X + n,
862
- g.Y,
933
+ const d = t.getTextDimensions(p).w, o = C(t) / 2;
934
+ t.link(
935
+ n.X + s,
936
+ n.Y,
863
937
  d,
864
- p,
865
- { url: f }
866
- ), e.text(s, g.X + n, g.Y, {
938
+ o,
939
+ { url: h }
940
+ ), t.text(p, n.X + s, n.Y, {
867
941
  baseline: "top",
868
- maxWidth: h
869
- }), g.updateX(d + 2, "add");
870
- }
871
- e.setFont(i, r), e.setFontSize(a), e.setTextColor(l);
872
- }, Yt = (e, t, n, i) => {
873
- const r = g.options, a = n + 1, l = g.X + n * r.page.indent, o = g.Y, h = l + r.page.indent / 2, s = o, f = e.internal.getCurrentPageInfo().pageNumber;
874
- t.items && t.items.length > 0 && t.items.forEach((p) => {
875
- i(p, a);
876
- });
877
- const u = g.Y, d = e.internal.getCurrentPageInfo().pageNumber;
878
- e.setDrawColor(100), e.setLineWidth(1);
879
- for (let p = f; p <= d; p++) {
880
- e.setPage(p);
881
- const c = p === f, v = p === d, m = c ? s : r.page.topmargin, x = v ? u : r.page.maxContentHeight;
882
- e.line(h, m, h, x);
883
- }
884
- g.recordContentY(), e.setPage(d);
885
- }, Rt = (e, t, n) => {
886
- if (!t.data)
887
- return;
888
- const i = g.options, r = g.X + n * i.page.indent;
889
- let a = g.Y;
890
- const l = i.page.maxContentWidth - n * i.page.indent;
891
- try {
892
- const o = e.getImageProperties(t.data), h = o.width, s = o.height;
893
- let f = h, u = s;
894
- const d = h / s;
895
- f > 0 && (f = l, u = f / d), a + u > i.page.maxContentHeight && (e.addPage(), a = i.page.topmargin, g.updateY(a));
896
- let p = t.src?.split(".").pop()?.toUpperCase() || "JPEG";
897
- t.data.startsWith("data:image/png") ? p = "PNG" : t.data.startsWith("data:image/jpeg") || t.data.startsWith("data:image/jpg") ? p = "JPEG" : t.data.startsWith("data:image/webp") && (p = "WEBP"), e.addImage(
898
- t.data,
899
- p,
900
- r,
901
- a,
902
- f,
903
- u
904
- ), g.updateY(u, "add"), g.recordContentY();
905
- } catch (o) {
906
- console.warn("Failed to render image", o);
907
- }
908
- };
909
- function rt(e, t, n, i, r) {
910
- i = i || {};
911
- var a = 1.15, l = r.internal.scaleFactor, o = r.internal.getFontSize() / l, h = r.getLineHeightFactor ? r.getLineHeightFactor() : a, s = o * h, f = /\r\n|\r|\n/g, u = "", d = 1;
912
- if ((i.valign === "middle" || i.valign === "bottom" || i.halign === "center" || i.halign === "right") && (u = typeof e == "string" ? e.split(f) : e, d = u.length || 1), n += o * (2 - a), i.valign === "middle" ? n -= d / 2 * s : i.valign === "bottom" && (n -= d * s), i.halign === "center" || i.halign === "right") {
913
- var p = o;
914
- if (i.halign === "center" && (p *= 0.5), u && d >= 1) {
915
- for (var c = 0; c < u.length; c++)
916
- r.text(u[c], t - r.getStringUnitWidth(u[c]) * p, n), n += s;
917
- return r;
918
- }
919
- t -= r.getStringUnitWidth(e) * p;
920
- }
921
- return i.halign === "justify" ? r.text(e, t, n, { maxWidth: i.maxWidth || 100, align: "justify" }) : r.text(e, t, n), r;
922
- }
923
- var U = {}, D = (
924
- /** @class */
925
- (function() {
926
- function e(t) {
927
- this.jsPDFDocument = t, this.userStyles = {
928
- // Black for versions of jspdf without getTextColor
929
- textColor: t.getTextColor ? this.jsPDFDocument.getTextColor() : 0,
930
- fontSize: t.internal.getFontSize(),
931
- fontStyle: t.internal.getFont().fontStyle,
932
- font: t.internal.getFont().fontName,
933
- // 0 for versions of jspdf without getLineWidth
934
- lineWidth: t.getLineWidth ? this.jsPDFDocument.getLineWidth() : 0,
935
- // Black for versions of jspdf without getDrawColor
936
- lineColor: t.getDrawColor ? this.jsPDFDocument.getDrawColor() : 0
937
- };
938
- }
939
- return e.setDefaults = function(t, n) {
940
- n === void 0 && (n = null), n ? n.__autoTableDocumentDefaults = t : U = t;
941
- }, e.unifyColor = function(t) {
942
- return Array.isArray(t) ? t : typeof t == "number" ? [t, t, t] : typeof t == "string" ? [t] : null;
943
- }, e.prototype.applyStyles = function(t, n) {
944
- var i, r, a;
945
- n === void 0 && (n = !1), t.fontStyle && this.jsPDFDocument.setFontStyle && this.jsPDFDocument.setFontStyle(t.fontStyle);
946
- var l = this.jsPDFDocument.internal.getFont(), o = l.fontStyle, h = l.fontName;
947
- if (t.font && (h = t.font), t.fontStyle) {
948
- o = t.fontStyle;
949
- var s = this.getFontList()[h];
950
- s && s.indexOf(o) === -1 && this.jsPDFDocument.setFontStyle && (this.jsPDFDocument.setFontStyle(s[0]), o = s[0]);
951
- }
952
- if (this.jsPDFDocument.setFont(h, o), t.fontSize && this.jsPDFDocument.setFontSize(t.fontSize), !n) {
953
- var f = e.unifyColor(t.fillColor);
954
- f && (i = this.jsPDFDocument).setFillColor.apply(i, f), f = e.unifyColor(t.textColor), f && (r = this.jsPDFDocument).setTextColor.apply(r, f), f = e.unifyColor(t.lineColor), f && (a = this.jsPDFDocument).setDrawColor.apply(a, f), typeof t.lineWidth == "number" && this.jsPDFDocument.setLineWidth(t.lineWidth);
955
- }
956
- }, e.prototype.splitTextToSize = function(t, n, i) {
957
- return this.jsPDFDocument.splitTextToSize(t, n, i);
958
- }, e.prototype.rect = function(t, n, i, r, a) {
959
- return this.jsPDFDocument.rect(t, n, i, r, a);
960
- }, e.prototype.getLastAutoTable = function() {
961
- return this.jsPDFDocument.lastAutoTable || null;
962
- }, e.prototype.getTextWidth = function(t) {
963
- return this.jsPDFDocument.getTextWidth(t);
964
- }, e.prototype.getDocument = function() {
965
- return this.jsPDFDocument;
966
- }, e.prototype.setPage = function(t) {
967
- this.jsPDFDocument.setPage(t);
968
- }, e.prototype.addPage = function() {
969
- return this.jsPDFDocument.addPage();
970
- }, e.prototype.getFontList = function() {
971
- return this.jsPDFDocument.getFontList();
972
- }, e.prototype.getGlobalOptions = function() {
973
- return U || {};
974
- }, e.prototype.getDocumentOptions = function() {
975
- return this.jsPDFDocument.__autoTableDocumentDefaults || {};
976
- }, e.prototype.pageSize = function() {
977
- var t = this.jsPDFDocument.internal.pageSize;
978
- return t.width == null && (t = { width: t.getWidth(), height: t.getHeight() }), t;
979
- }, e.prototype.scaleFactor = function() {
980
- return this.jsPDFDocument.internal.scaleFactor;
981
- }, e.prototype.getLineHeightFactor = function() {
982
- var t = this.jsPDFDocument;
983
- return t.getLineHeightFactor ? t.getLineHeightFactor() : 1.15;
984
- }, e.prototype.getLineHeight = function(t) {
985
- return t / this.scaleFactor() * this.getLineHeightFactor();
986
- }, e.prototype.pageNumber = function() {
987
- var t = this.jsPDFDocument.internal.getCurrentPageInfo();
988
- return t ? t.pageNumber : this.jsPDFDocument.internal.getNumberOfPages();
989
- }, e;
990
- })()
991
- ), _ = function(e, t) {
992
- return _ = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, i) {
993
- n.__proto__ = i;
994
- } || function(n, i) {
995
- for (var r in i) Object.prototype.hasOwnProperty.call(i, r) && (n[r] = i[r]);
996
- }, _(e, t);
997
- };
998
- function at(e, t) {
999
- if (typeof t != "function" && t !== null)
1000
- throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
1001
- _(e, t);
1002
- function n() {
1003
- this.constructor = e;
1004
- }
1005
- e.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n());
1006
- }
1007
- var ot = (
1008
- /** @class */
1009
- (function(e) {
1010
- at(t, e);
1011
- function t(n) {
1012
- var i = e.call(this) || this;
1013
- return i._element = n, i;
1014
- }
1015
- return t;
1016
- })(Array)
1017
- );
1018
- function Et(e) {
1019
- return {
1020
- font: "helvetica",
1021
- // helvetica, times, courier
1022
- fontStyle: "normal",
1023
- // normal, bold, italic, bolditalic
1024
- overflow: "linebreak",
1025
- // linebreak, ellipsize, visible or hidden
1026
- fillColor: !1,
1027
- // Either false for transparent, rbg array e.g. [255, 255, 255] or gray level e.g 200
1028
- textColor: 20,
1029
- halign: "left",
1030
- // left, center, right, justify
1031
- valign: "top",
1032
- // top, middle, bottom
1033
- fontSize: 10,
1034
- cellPadding: 5 / e,
1035
- // number or {top,left,right,left,vertical,horizontal}
1036
- lineColor: 200,
1037
- lineWidth: 0,
1038
- cellWidth: "auto",
1039
- // 'auto'|'wrap'|number
1040
- minCellHeight: 0,
1041
- minCellWidth: 0
1042
- };
1043
- }
1044
- function At(e) {
1045
- var t = {
1046
- striped: {
1047
- table: { fillColor: 255, textColor: 80, fontStyle: "normal" },
1048
- head: { textColor: 255, fillColor: [41, 128, 185], fontStyle: "bold" },
1049
- body: {},
1050
- foot: { textColor: 255, fillColor: [41, 128, 185], fontStyle: "bold" },
1051
- alternateRow: { fillColor: 245 }
1052
- },
1053
- grid: {
1054
- table: {
1055
- fillColor: 255,
1056
- textColor: 80,
1057
- fontStyle: "normal",
1058
- lineWidth: 0.1
1059
- },
1060
- head: {
1061
- textColor: 255,
1062
- fillColor: [26, 188, 156],
1063
- fontStyle: "bold",
1064
- lineWidth: 0
1065
- },
1066
- body: {},
1067
- foot: {
1068
- textColor: 255,
1069
- fillColor: [26, 188, 156],
1070
- fontStyle: "bold",
1071
- lineWidth: 0
1072
- },
1073
- alternateRow: {}
1074
- },
1075
- plain: { head: { fontStyle: "bold" }, foot: { fontStyle: "bold" } }
1076
- };
1077
- return t[e];
1078
- }
1079
- function R(e, t, n) {
1080
- n.applyStyles(t, !0);
1081
- var i = Array.isArray(e) ? e : [e], r = i.map(function(a) {
1082
- return n.getTextWidth(a);
1083
- }).reduce(function(a, l) {
1084
- return Math.max(a, l);
1085
- }, 0);
1086
- return r;
1087
- }
1088
- function st(e, t, n, i) {
1089
- var r = t.settings.tableLineWidth, a = t.settings.tableLineColor;
1090
- e.applyStyles({ lineWidth: r, lineColor: a });
1091
- var l = lt(r, !1);
1092
- l && e.rect(n.x, n.y, t.getWidth(e.pageSize().width), i.y - n.y, l);
1093
- }
1094
- function lt(e, t) {
1095
- var n = e > 0, i = t || t === 0;
1096
- return n && i ? "DF" : n ? "S" : i ? "F" : null;
1097
- }
1098
- function A(e, t) {
1099
- var n, i, r, a;
1100
- if (e = e || t, Array.isArray(e)) {
1101
- if (e.length >= 4)
1102
- return {
1103
- top: e[0],
1104
- right: e[1],
1105
- bottom: e[2],
1106
- left: e[3]
1107
- };
1108
- if (e.length === 3)
1109
- return {
1110
- top: e[0],
1111
- right: e[1],
1112
- bottom: e[2],
1113
- left: e[1]
1114
- };
1115
- if (e.length === 2)
1116
- return {
1117
- top: e[0],
1118
- right: e[1],
1119
- bottom: e[0],
1120
- left: e[1]
1121
- };
1122
- e.length === 1 ? e = e[0] : e = t;
942
+ maxWidth: a
943
+ }), n.updateX(d + 2, "add");
1123
944
  }
1124
- return typeof e == "object" ? (typeof e.vertical == "number" && (e.top = e.vertical, e.bottom = e.vertical), typeof e.horizontal == "number" && (e.right = e.horizontal, e.left = e.horizontal), {
1125
- left: (n = e.left) !== null && n !== void 0 ? n : t,
1126
- top: (i = e.top) !== null && i !== void 0 ? i : t,
1127
- right: (r = e.right) !== null && r !== void 0 ? r : t,
1128
- bottom: (a = e.bottom) !== null && a !== void 0 ? a : t
1129
- }) : (typeof e != "number" && (e = t), { top: e, right: e, bottom: e, left: e });
1130
- }
1131
- function ht(e, t) {
1132
- var n = A(t.settings.margin, 0);
1133
- return e.pageSize().width - (n.left + n.right);
1134
- }
1135
- function Bt(e, t, n, i, r) {
1136
- var a = {}, l = 1.3333333333333333, o = I(t, function(S) {
1137
- return r.getComputedStyle(S).backgroundColor;
1138
- });
1139
- o != null && (a.fillColor = o);
1140
- var h = I(t, function(S) {
1141
- return r.getComputedStyle(S).color;
945
+ t.setFont(c, g), t.setFontSize(r), t.setTextColor(l);
946
+ }, lt = (t, e, s, c) => {
947
+ const g = n.options, r = s + 1, l = n.X + s * g.page.indent, i = n.Y, a = l + g.page.indent / 2, p = i, h = t.internal.getCurrentPageInfo().pageNumber;
948
+ e.items && e.items.length > 0 && e.items.forEach((o) => {
949
+ c(o, r);
1142
950
  });
1143
- h != null && (a.textColor = h);
1144
- var s = jt(i, n);
1145
- s && (a.cellPadding = s);
1146
- var f = "borderTopColor", u = l * n, d = i.borderTopWidth;
1147
- if (i.borderBottomWidth === d && i.borderRightWidth === d && i.borderLeftWidth === d) {
1148
- var p = (parseFloat(d) || 0) / u;
1149
- p && (a.lineWidth = p);
1150
- } else
1151
- a.lineWidth = {
1152
- top: (parseFloat(i.borderTopWidth) || 0) / u,
1153
- right: (parseFloat(i.borderRightWidth) || 0) / u,
1154
- bottom: (parseFloat(i.borderBottomWidth) || 0) / u,
1155
- left: (parseFloat(i.borderLeftWidth) || 0) / u
1156
- }, a.lineWidth.top || (a.lineWidth.right ? f = "borderRightColor" : a.lineWidth.bottom ? f = "borderBottomColor" : a.lineWidth.left && (f = "borderLeftColor"));
1157
- var c = I(t, function(S) {
1158
- return r.getComputedStyle(S)[f];
1159
- });
1160
- c != null && (a.lineColor = c);
1161
- var v = ["left", "right", "center", "justify"];
1162
- v.indexOf(i.textAlign) !== -1 && (a.halign = i.textAlign), v = ["middle", "bottom", "top"], v.indexOf(i.verticalAlign) !== -1 && (a.valign = i.verticalAlign);
1163
- var m = parseInt(i.fontSize || "");
1164
- isNaN(m) || (a.fontSize = m / l);
1165
- var x = Xt(i);
1166
- x && (a.fontStyle = x);
1167
- var C = (i.fontFamily || "").toLowerCase();
1168
- return e.indexOf(C) !== -1 && (a.font = C), a;
1169
- }
1170
- function Xt(e) {
1171
- var t = "";
1172
- return (e.fontWeight === "bold" || e.fontWeight === "bolder" || parseInt(e.fontWeight) >= 700) && (t = "bold"), (e.fontStyle === "italic" || e.fontStyle === "oblique") && (t += "italic"), t;
1173
- }
1174
- function I(e, t) {
1175
- var n = ft(e, t);
1176
- if (!n)
1177
- return null;
1178
- var i = n.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d*))?\)$/);
1179
- if (!i || !Array.isArray(i))
1180
- return null;
1181
- var r = [
1182
- parseInt(i[1]),
1183
- parseInt(i[2]),
1184
- parseInt(i[3])
1185
- ], a = parseInt(i[4]);
1186
- return a === 0 || isNaN(r[0]) || isNaN(r[1]) || isNaN(r[2]) ? null : r;
1187
- }
1188
- function ft(e, t) {
1189
- var n = t(e);
1190
- return n === "rgba(0, 0, 0, 0)" || n === "transparent" || n === "initial" || n === "inherit" ? e.parentElement == null ? null : ft(e.parentElement, t) : n;
1191
- }
1192
- function jt(e, t) {
1193
- var n = [
1194
- e.paddingTop,
1195
- e.paddingRight,
1196
- e.paddingBottom,
1197
- e.paddingLeft
1198
- ], i = 96 / (72 / t), r = (parseInt(e.lineHeight) - parseInt(e.fontSize)) / t / 2, a = n.map(function(o) {
1199
- return parseInt(o || "0") / i;
1200
- }), l = A(a, 0);
1201
- return r > l.top && (l.top = r), r > l.bottom && (l.bottom = r), l;
1202
- }
1203
- function gt(e, t, n, i, r) {
1204
- var a, l;
1205
- i === void 0 && (i = !1), r === void 0 && (r = !1);
1206
- var o;
1207
- typeof t == "string" ? o = n.document.querySelector(t) : o = t;
1208
- var h = Object.keys(e.getFontList()), s = e.scaleFactor(), f = [], u = [], d = [];
1209
- if (!o)
1210
- return console.error("Html table could not be found with input: ", t), { head: f, body: u, foot: d };
1211
- for (var p = 0; p < o.rows.length; p++) {
1212
- var c = o.rows[p], v = (l = (a = c?.parentElement) === null || a === void 0 ? void 0 : a.tagName) === null || l === void 0 ? void 0 : l.toLowerCase(), m = It(h, s, n, c, i, r);
1213
- m && (v === "thead" ? f.push(m) : v === "tfoot" ? d.push(m) : u.push(m));
1214
- }
1215
- return { head: f, body: u, foot: d };
1216
- }
1217
- function It(e, t, n, i, r, a) {
1218
- for (var l = new ot(i), o = 0; o < i.cells.length; o++) {
1219
- var h = i.cells[o], s = n.getComputedStyle(h);
1220
- if (r || s.display !== "none") {
1221
- var f = void 0;
1222
- a && (f = Bt(e, h, t, s, n)), l.push({
1223
- rowSpan: h.rowSpan,
1224
- colSpan: h.colSpan,
1225
- styles: f,
1226
- _element: h,
1227
- content: Nt(h)
1228
- });
1229
- }
1230
- }
1231
- var u = n.getComputedStyle(i);
1232
- if (l.length > 0 && (r || u.display !== "none"))
1233
- return l;
1234
- }
1235
- function Nt(e) {
1236
- var t = e.cloneNode(!0);
1237
- return t.innerHTML = t.innerHTML.replace(/\n/g, "").replace(/ +/g, " "), t.innerHTML = t.innerHTML.split(/<br.*?>/).map(function(n) {
1238
- return n.trim();
1239
- }).join(`
1240
- `), t.innerText || t.textContent || "";
1241
- }
1242
- function Ot(e, t, n) {
1243
- for (var i = 0, r = [e, t, n]; i < r.length; i++) {
1244
- var a = r[i];
1245
- a && typeof a != "object" && console.error("The options parameter should be of type object, is: " + typeof a), a.startY && typeof a.startY != "number" && (console.error("Invalid value for startY option", a.startY), delete a.startY);
1246
- }
1247
- }
1248
- function H(e, t, n, i, r) {
1249
- if (e == null)
1250
- throw new TypeError("Cannot convert undefined or null to object");
1251
- for (var a = Object(e), l = 1; l < arguments.length; l++) {
1252
- var o = arguments[l];
1253
- if (o != null)
1254
- for (var h in o)
1255
- Object.prototype.hasOwnProperty.call(o, h) && (a[h] = o[h]);
951
+ const f = n.Y, d = t.internal.getCurrentPageInfo().pageNumber;
952
+ t.setDrawColor(100), t.setLineWidth(1);
953
+ for (let o = h; o <= d; o++) {
954
+ t.setPage(o);
955
+ const m = o === h, x = o === d, F = m ? p : g.page.topmargin, b = x ? f : g.page.maxContentHeight;
956
+ t.line(a, F, a, b);
1256
957
  }
1257
- return a;
1258
- }
1259
- function pt(e, t) {
1260
- var n = new D(e), i = n.getDocumentOptions(), r = n.getGlobalOptions();
1261
- Ot(r, i, t);
1262
- var a = H({}, r, i, t), l;
1263
- typeof window < "u" && (l = window);
1264
- var o = Mt(r, i, t), h = qt(r, i, t), s = _t(n, a), f = Jt(n, a, l);
1265
- return { id: t.tableId, content: f, hooks: h, styles: o, settings: s };
1266
- }
1267
- function Mt(e, t, n) {
1268
- for (var i = {
1269
- styles: {},
1270
- headStyles: {},
1271
- bodyStyles: {},
1272
- footStyles: {},
1273
- alternateRowStyles: {},
1274
- columnStyles: {}
1275
- }, r = function(h) {
1276
- if (h === "columnStyles") {
1277
- var s = e[h], f = t[h], u = n[h];
1278
- i.columnStyles = H({}, s, f, u);
1279
- } else {
1280
- var d = [e, t, n], p = d.map(function(c) {
1281
- return c[h] || {};
1282
- });
1283
- i[h] = H({}, p[0], p[1], p[2]);
1284
- }
1285
- }, a = 0, l = Object.keys(i); a < l.length; a++) {
1286
- var o = l[a];
1287
- r(o);
1288
- }
1289
- return i;
1290
- }
1291
- function qt(e, t, n) {
1292
- for (var i = [e, t, n], r = {
1293
- didParseCell: [],
1294
- willDrawCell: [],
1295
- didDrawCell: [],
1296
- willDrawPage: [],
1297
- didDrawPage: []
1298
- }, a = 0, l = i; a < l.length; a++) {
1299
- var o = l[a];
1300
- o.didParseCell && r.didParseCell.push(o.didParseCell), o.willDrawCell && r.willDrawCell.push(o.willDrawCell), o.didDrawCell && r.didDrawCell.push(o.didDrawCell), o.willDrawPage && r.willDrawPage.push(o.willDrawPage), o.didDrawPage && r.didDrawPage.push(o.didDrawPage);
958
+ n.recordContentY(), t.setPage(d);
959
+ }, P = 96, ct = (t) => {
960
+ if (t.data) {
961
+ if (t.data.startsWith("data:image/png")) return "PNG";
962
+ if (t.data.startsWith("data:image/jpeg") || t.data.startsWith("data:image/jpg"))
963
+ return "JPEG";
964
+ if (t.data.startsWith("data:image/webp")) return "WEBP";
965
+ if (t.data.startsWith("data:image/gif")) return "GIF";
1301
966
  }
1302
- return r;
1303
- }
1304
- function _t(e, t) {
1305
- var n, i, r, a, l, o, h, s, f, u, d, p, c = A(t.margin, 40 / e.scaleFactor()), v = (n = $t(e, t.startY)) !== null && n !== void 0 ? n : c.top, m;
1306
- t.showFoot === !0 ? m = "everyPage" : t.showFoot === !1 ? m = "never" : m = (i = t.showFoot) !== null && i !== void 0 ? i : "everyPage";
1307
- var x;
1308
- t.showHead === !0 ? x = "everyPage" : t.showHead === !1 ? x = "never" : x = (r = t.showHead) !== null && r !== void 0 ? r : "everyPage";
1309
- var C = (a = t.useCss) !== null && a !== void 0 ? a : !1, S = t.theme || (C ? "plain" : "striped"), F = !!t.horizontalPageBreak, W = (l = t.horizontalPageBreakRepeat) !== null && l !== void 0 ? l : null;
1310
- return {
1311
- includeHiddenHtml: (o = t.includeHiddenHtml) !== null && o !== void 0 ? o : !1,
1312
- useCss: C,
1313
- theme: S,
1314
- startY: v,
1315
- margin: c,
1316
- pageBreak: (h = t.pageBreak) !== null && h !== void 0 ? h : "auto",
1317
- rowPageBreak: (s = t.rowPageBreak) !== null && s !== void 0 ? s : "auto",
1318
- tableWidth: (f = t.tableWidth) !== null && f !== void 0 ? f : "auto",
1319
- showHead: x,
1320
- showFoot: m,
1321
- tableLineWidth: (u = t.tableLineWidth) !== null && u !== void 0 ? u : 0,
1322
- tableLineColor: (d = t.tableLineColor) !== null && d !== void 0 ? d : 200,
1323
- horizontalPageBreak: F,
1324
- horizontalPageBreakRepeat: W,
1325
- horizontalPageBreakBehaviour: (p = t.horizontalPageBreakBehaviour) !== null && p !== void 0 ? p : "afterAllRows"
1326
- };
1327
- }
1328
- function $t(e, t) {
1329
- var n = e.getLastAutoTable(), i = e.scaleFactor(), r = e.pageNumber(), a = !1;
1330
- if (n && n.startPageNumber) {
1331
- var l = n.startPageNumber + n.pageNumber - 1;
1332
- a = l === r;
1333
- }
1334
- return typeof t == "number" ? t : (t == null || t === !1) && a && n?.finalY != null ? n.finalY + 20 / i : null;
1335
- }
1336
- function Jt(e, t, n) {
1337
- var i = t.head || [], r = t.body || [], a = t.foot || [];
1338
- if (t.html) {
1339
- var l = t.includeHiddenHtml;
1340
- if (n) {
1341
- var o = gt(e, t.html, n, l, t.useCss) || {};
1342
- i = o.head || i, r = o.body || i, a = o.foot || i;
1343
- } else
1344
- console.error("Cannot parse html in non browser environment");
1345
- }
1346
- var h = t.columns || Kt(i, r, a);
1347
- return { columns: h, head: i, body: r, foot: a };
1348
- }
1349
- function Kt(e, t, n) {
1350
- var i = e[0] || t[0] || n[0] || [], r = [];
1351
- return Object.keys(i).filter(function(a) {
1352
- return a !== "_element";
1353
- }).forEach(function(a) {
1354
- var l = 1, o;
1355
- Array.isArray(i) ? o = i[parseInt(a)] : o = i[a], typeof o == "object" && !Array.isArray(o) && (l = o?.colSpan || 1);
1356
- for (var h = 0; h < l; h++) {
1357
- var s = void 0;
1358
- Array.isArray(i) ? s = r.length : s = a + (h > 0 ? "_".concat(h) : "");
1359
- var f = { dataKey: s };
1360
- r.push(f);
1361
- }
1362
- }), r;
1363
- }
1364
- var $ = (
1365
- /** @class */
1366
- /* @__PURE__ */ (function() {
1367
- function e(t, n, i) {
1368
- this.table = n, this.pageNumber = n.pageNumber, this.settings = n.settings, this.cursor = i, this.doc = t.getDocument();
1369
- }
1370
- return e;
1371
- })()
1372
- ), Gt = (
1373
- /** @class */
1374
- (function(e) {
1375
- at(t, e);
1376
- function t(n, i, r, a, l, o) {
1377
- var h = e.call(this, n, i, o) || this;
1378
- return h.cell = r, h.row = a, h.column = l, h.section = a.section, h;
1379
- }
1380
- return t;
1381
- })($)
1382
- ), Ut = (
1383
- /** @class */
1384
- (function() {
1385
- function e(t, n) {
1386
- this.pageNumber = 1, this.id = t.id, this.settings = t.settings, this.styles = t.styles, this.hooks = t.hooks, this.columns = n.columns, this.head = n.head, this.body = n.body, this.foot = n.foot;
1387
- }
1388
- return e.prototype.getHeadHeight = function(t) {
1389
- return this.head.reduce(function(n, i) {
1390
- return n + i.getMaxCellHeight(t);
1391
- }, 0);
1392
- }, e.prototype.getFootHeight = function(t) {
1393
- return this.foot.reduce(function(n, i) {
1394
- return n + i.getMaxCellHeight(t);
1395
- }, 0);
1396
- }, e.prototype.allRows = function() {
1397
- return this.head.concat(this.body).concat(this.foot);
1398
- }, e.prototype.callCellHooks = function(t, n, i, r, a, l) {
1399
- for (var o = 0, h = n; o < h.length; o++) {
1400
- var s = h[o], f = new Gt(t, this, i, r, a, l), u = s(f) === !1;
1401
- if (i.text = Array.isArray(i.text) ? i.text : [i.text], u)
1402
- return !1;
1403
- }
1404
- return !0;
1405
- }, e.prototype.callEndPageHooks = function(t, n) {
1406
- t.applyStyles(t.userStyles);
1407
- for (var i = 0, r = this.hooks.didDrawPage; i < r.length; i++) {
1408
- var a = r[i];
1409
- a(new $(t, this, n));
1410
- }
1411
- }, e.prototype.callWillDrawPageHooks = function(t, n) {
1412
- for (var i = 0, r = this.hooks.willDrawPage; i < r.length; i++) {
1413
- var a = r[i];
1414
- a(new $(t, this, n));
1415
- }
1416
- }, e.prototype.getWidth = function(t) {
1417
- if (typeof this.settings.tableWidth == "number")
1418
- return this.settings.tableWidth;
1419
- if (this.settings.tableWidth === "wrap") {
1420
- var n = this.columns.reduce(function(r, a) {
1421
- return r + a.wrappedWidth;
1422
- }, 0);
1423
- return n;
1424
- } else {
1425
- var i = this.settings.margin;
1426
- return t - i.left - i.right;
1427
- }
1428
- }, e;
1429
- })()
1430
- ), ut = (
1431
- /** @class */
1432
- (function() {
1433
- function e(t, n, i, r, a) {
1434
- a === void 0 && (a = !1), this.height = 0, this.raw = t, t instanceof ot && (this.raw = t._element, this.element = t._element), this.index = n, this.section = i, this.cells = r, this.spansMultiplePages = a;
1435
- }
1436
- return e.prototype.getMaxCellHeight = function(t) {
1437
- var n = this;
1438
- return t.reduce(function(i, r) {
1439
- var a;
1440
- return Math.max(i, ((a = n.cells[r.index]) === null || a === void 0 ? void 0 : a.height) || 0);
1441
- }, 0);
1442
- }, e.prototype.hasRowSpan = function(t) {
1443
- var n = this;
1444
- return t.filter(function(i) {
1445
- var r = n.cells[i.index];
1446
- return r ? r.rowSpan > 1 : !1;
1447
- }).length > 0;
1448
- }, e.prototype.canEntireRowFit = function(t, n) {
1449
- return this.getMaxCellHeight(n) <= t;
1450
- }, e.prototype.getMinimumRowHeight = function(t, n) {
1451
- var i = this;
1452
- return t.reduce(function(r, a) {
1453
- var l = i.cells[a.index];
1454
- if (!l)
1455
- return 0;
1456
- var o = n.getLineHeight(l.styles.fontSize), h = l.padding("vertical"), s = h + o;
1457
- return s > r ? s : r;
1458
- }, 0);
1459
- }, e;
1460
- })()
1461
- ), dt = (
1462
- /** @class */
1463
- (function() {
1464
- function e(t, n, i) {
1465
- var r;
1466
- this.contentHeight = 0, this.contentWidth = 0, this.wrappedWidth = 0, this.minReadableWidth = 0, this.minWidth = 0, this.width = 0, this.height = 0, this.x = 0, this.y = 0, this.styles = n, this.section = i, this.raw = t;
1467
- var a = t;
1468
- t != null && typeof t == "object" && !Array.isArray(t) ? (this.rowSpan = t.rowSpan || 1, this.colSpan = t.colSpan || 1, a = (r = t.content) !== null && r !== void 0 ? r : t, t._element && (this.raw = t._element)) : (this.rowSpan = 1, this.colSpan = 1);
1469
- var l = a != null ? "" + a : "", o = /\r\n|\r|\n/g;
1470
- this.text = l.split(o);
1471
- }
1472
- return e.prototype.getTextPos = function() {
1473
- var t;
1474
- if (this.styles.valign === "top")
1475
- t = this.y + this.padding("top");
1476
- else if (this.styles.valign === "bottom")
1477
- t = this.y + this.height - this.padding("bottom");
1478
- else {
1479
- var n = this.height - this.padding("vertical");
1480
- t = this.y + n / 2 + this.padding("top");
1481
- }
1482
- var i;
1483
- if (this.styles.halign === "right")
1484
- i = this.x + this.width - this.padding("right");
1485
- else if (this.styles.halign === "center") {
1486
- var r = this.width - this.padding("horizontal");
1487
- i = this.x + r / 2 + this.padding("left");
1488
- } else
1489
- i = this.x + this.padding("left");
1490
- return { x: i, y: t };
1491
- }, e.prototype.getContentHeight = function(t, n) {
1492
- n === void 0 && (n = 1.15);
1493
- var i = Array.isArray(this.text) ? this.text.length : 1, r = this.styles.fontSize / t * n, a = i * r + this.padding("vertical");
1494
- return Math.max(a, this.styles.minCellHeight);
1495
- }, e.prototype.padding = function(t) {
1496
- var n = A(this.styles.cellPadding, 0);
1497
- return t === "vertical" ? n.top + n.bottom : t === "horizontal" ? n.left + n.right : n[t];
1498
- }, e;
1499
- })()
1500
- ), Qt = (
1501
- /** @class */
1502
- (function() {
1503
- function e(t, n, i) {
1504
- this.wrappedWidth = 0, this.minReadableWidth = 0, this.minWidth = 0, this.width = 0, this.dataKey = t, this.raw = n, this.index = i;
1505
- }
1506
- return e.prototype.getMaxCustomCellWidth = function(t) {
1507
- for (var n = 0, i = 0, r = t.allRows(); i < r.length; i++) {
1508
- var a = r[i], l = a.cells[this.index];
1509
- l && typeof l.styles.cellWidth == "number" && (n = Math.max(n, l.styles.cellWidth));
1510
- }
1511
- return n;
1512
- }, e;
1513
- })()
1514
- );
1515
- function Zt(e, t) {
1516
- Vt(e, t);
1517
- var n = [], i = 0;
1518
- t.columns.forEach(function(a) {
1519
- var l = a.getMaxCustomCellWidth(t);
1520
- l ? a.width = l : (a.width = a.wrappedWidth, n.push(a)), i += a.width;
1521
- });
1522
- var r = t.getWidth(e.pageSize().width) - i;
1523
- r && (r = J(n, r, function(a) {
1524
- return Math.max(a.minReadableWidth, a.minWidth);
1525
- })), r && (r = J(n, r, function(a) {
1526
- return a.minWidth;
1527
- })), r = Math.abs(r), !t.settings.horizontalPageBreak && r > 0.1 / e.scaleFactor() && (r = r < 1 ? r : Math.round(r), console.log("Of the table content, ".concat(r, " units width could not fit page"))), ee(t), ne(t, e), te(t);
1528
- }
1529
- function Vt(e, t) {
1530
- var n = e.scaleFactor(), i = t.settings.horizontalPageBreak, r = ht(e, t);
1531
- t.allRows().forEach(function(a) {
1532
- for (var l = 0, o = t.columns; l < o.length; l++) {
1533
- var h = o[l], s = a.cells[h.index];
1534
- if (s) {
1535
- var f = t.hooks.didParseCell;
1536
- t.callCellHooks(e, f, s, a, h, null);
1537
- var u = s.padding("horizontal");
1538
- s.contentWidth = R(s.text, s.styles, e) + u;
1539
- var d = R(s.text.join(" ").split(/[^\S\u00A0]+/), s.styles, e);
1540
- if (s.minReadableWidth = d + s.padding("horizontal"), typeof s.styles.cellWidth == "number")
1541
- s.minWidth = s.styles.cellWidth, s.wrappedWidth = s.styles.cellWidth;
1542
- else if (s.styles.cellWidth === "wrap" || i === !0)
1543
- s.contentWidth > r ? (s.minWidth = r, s.wrappedWidth = r) : (s.minWidth = s.contentWidth, s.wrappedWidth = s.contentWidth);
1544
- else {
1545
- var p = 10 / n;
1546
- s.minWidth = s.styles.minCellWidth || p, s.wrappedWidth = s.contentWidth, s.minWidth > s.wrappedWidth && (s.wrappedWidth = s.minWidth);
1547
- }
1548
- }
1549
- }
1550
- }), t.allRows().forEach(function(a) {
1551
- for (var l = 0, o = t.columns; l < o.length; l++) {
1552
- var h = o[l], s = a.cells[h.index];
1553
- if (s && s.colSpan === 1)
1554
- h.wrappedWidth = Math.max(h.wrappedWidth, s.wrappedWidth), h.minWidth = Math.max(h.minWidth, s.minWidth), h.minReadableWidth = Math.max(h.minReadableWidth, s.minReadableWidth);
1555
- else {
1556
- var f = t.styles.columnStyles[h.dataKey] || t.styles.columnStyles[h.index] || {}, u = f.cellWidth || f.minCellWidth;
1557
- u && typeof u == "number" && (h.minWidth = u, h.wrappedWidth = u);
1558
- }
1559
- s && (s.colSpan > 1 && !h.minWidth && (h.minWidth = s.minWidth), s.colSpan > 1 && !h.wrappedWidth && (h.wrappedWidth = s.minWidth));
1560
- }
1561
- });
1562
- }
1563
- function J(e, t, n) {
1564
- for (var i = t, r = e.reduce(function(p, c) {
1565
- return p + c.wrappedWidth;
1566
- }, 0), a = 0; a < e.length; a++) {
1567
- var l = e[a], o = l.wrappedWidth / r, h = i * o, s = l.width + h, f = n(l), u = s < f ? f : s;
1568
- t -= u - l.width, l.width = u;
1569
- }
1570
- if (t = Math.round(t * 1e10) / 1e10, t) {
1571
- var d = e.filter(function(p) {
1572
- return t < 0 ? p.width > n(p) : !0;
1573
- });
1574
- d.length && (t = J(d, t, n));
1575
- }
1576
- return t;
1577
- }
1578
- function te(e) {
1579
- for (var t = {}, n = 1, i = e.allRows(), r = 0; r < i.length; r++)
1580
- for (var a = i[r], l = 0, o = e.columns; l < o.length; l++) {
1581
- var h = o[l], s = t[h.index];
1582
- if (n > 1)
1583
- n--, delete a.cells[h.index];
1584
- else if (s)
1585
- s.cell.height += a.height, n = s.cell.colSpan, delete a.cells[h.index], s.left--, s.left <= 1 && delete t[h.index];
1586
- else {
1587
- var f = a.cells[h.index];
1588
- if (!f)
1589
- continue;
1590
- if (f.height = a.height, f.rowSpan > 1) {
1591
- var u = i.length - r, d = f.rowSpan > u ? u : f.rowSpan;
1592
- t[h.index] = { cell: f, left: d, row: a };
1593
- }
1594
- }
1595
- }
1596
- }
1597
- function ee(e) {
1598
- for (var t = e.allRows(), n = 0; n < t.length; n++)
1599
- for (var i = t[n], r = null, a = 0, l = 0, o = 0; o < e.columns.length; o++) {
1600
- var h = e.columns[o];
1601
- if (l -= 1, l > 1 && e.columns[o + 1])
1602
- a += h.width, delete i.cells[h.index];
1603
- else if (r) {
1604
- var s = r;
1605
- delete i.cells[h.index], r = null, s.width = h.width + a;
1606
- } else {
1607
- var s = i.cells[h.index];
1608
- if (!s)
1609
- continue;
1610
- if (l = s.colSpan, a = 0, s.colSpan > 1) {
1611
- r = s, a += h.width;
1612
- continue;
1613
- }
1614
- s.width = h.width + a;
1615
- }
1616
- }
1617
- }
1618
- function ne(e, t) {
1619
- for (var n = { count: 0, height: 0 }, i = 0, r = e.allRows(); i < r.length; i++) {
1620
- for (var a = r[i], l = 0, o = e.columns; l < o.length; l++) {
1621
- var h = o[l], s = a.cells[h.index];
1622
- if (s) {
1623
- t.applyStyles(s.styles, !0);
1624
- var f = s.width - s.padding("horizontal");
1625
- if (s.styles.overflow === "linebreak")
1626
- s.text = t.splitTextToSize(s.text, f + 1 / t.scaleFactor(), { fontSize: s.styles.fontSize });
1627
- else if (s.styles.overflow === "ellipsize")
1628
- s.text = Q(s.text, f, s.styles, t, "...");
1629
- else if (s.styles.overflow === "hidden")
1630
- s.text = Q(s.text, f, s.styles, t, "");
1631
- else if (typeof s.styles.overflow == "function") {
1632
- var u = s.styles.overflow(s.text, f);
1633
- typeof u == "string" ? s.text = [u] : s.text = u;
1634
- }
1635
- s.contentHeight = s.getContentHeight(t.scaleFactor(), t.getLineHeightFactor());
1636
- var d = s.contentHeight / s.rowSpan;
1637
- s.rowSpan > 1 && n.count * n.height < d * s.rowSpan ? n = { height: d, count: s.rowSpan } : n && n.count > 0 && n.height > d && (d = n.height), d > a.height && (a.height = d);
1638
- }
1639
- }
1640
- n.count--;
1641
- }
1642
- }
1643
- function Q(e, t, n, i, r) {
1644
- return e.map(function(a) {
1645
- return ie(a, t, n, i, r);
1646
- });
1647
- }
1648
- function ie(e, t, n, i, r) {
1649
- var a = 1e4 * i.scaleFactor();
1650
- if (t = Math.ceil(t * a) / a, t >= R(e, n, i))
1651
- return e;
1652
- for (; t < R(e + r, n, i) && !(e.length <= 1); )
1653
- e = e.substring(0, e.length - 1);
1654
- return e.trim() + r;
1655
- }
1656
- function ct(e, t) {
1657
- var n = new D(e), i = re(t, n.scaleFactor()), r = new Ut(t, i);
1658
- return Zt(n, r), n.applyStyles(n.userStyles), r;
1659
- }
1660
- function re(e, t) {
1661
- var n = e.content, i = oe(n.columns);
1662
- if (n.head.length === 0) {
1663
- var r = Z(i, "head");
1664
- r && n.head.push(r);
1665
- }
1666
- if (n.foot.length === 0) {
1667
- var r = Z(i, "foot");
1668
- r && n.foot.push(r);
1669
- }
1670
- var a = e.settings.theme, l = e.styles;
1671
- return {
1672
- columns: i,
1673
- head: N("head", n.head, i, l, a, t),
1674
- body: N("body", n.body, i, l, a, t),
1675
- foot: N("foot", n.foot, i, l, a, t)
1676
- };
1677
- }
1678
- function N(e, t, n, i, r, a) {
1679
- var l = {}, o = t.map(function(h, s) {
1680
- for (var f = 0, u = {}, d = 0, p = 0, c = 0, v = n; c < v.length; c++) {
1681
- var m = v[c];
1682
- if (l[m.index] == null || l[m.index].left === 0)
1683
- if (p === 0) {
1684
- var x = void 0;
1685
- Array.isArray(h) ? x = h[m.index - d - f] : x = h[m.dataKey];
1686
- var C = {};
1687
- typeof x == "object" && !Array.isArray(x) && (C = x?.styles || {});
1688
- var S = se(e, m, s, r, i, a, C), F = new dt(x, S, e);
1689
- u[m.dataKey] = F, u[m.index] = F, p = F.colSpan - 1, l[m.index] = {
1690
- left: F.rowSpan - 1,
1691
- times: p
1692
- };
1693
- } else
1694
- p--, d++;
1695
- else
1696
- l[m.index].left--, p = l[m.index].times, f++;
1697
- }
1698
- return new ut(h, s, e, u);
1699
- });
1700
- return o;
1701
- }
1702
- function Z(e, t) {
1703
- var n = {};
1704
- return e.forEach(function(i) {
1705
- if (i.raw != null) {
1706
- var r = ae(t, i.raw);
1707
- r != null && (n[i.dataKey] = r);
1708
- }
1709
- }), Object.keys(n).length > 0 ? n : null;
1710
- }
1711
- function ae(e, t) {
1712
- if (e === "head") {
1713
- if (typeof t == "object")
1714
- return t.header || null;
1715
- if (typeof t == "string" || typeof t == "number")
967
+ return t.src?.split(".").pop()?.toUpperCase() || "JPEG";
968
+ }, L = (t, e = "mm") => {
969
+ switch (e) {
970
+ case "pt":
971
+ return t * 72 / P;
972
+ case "in":
973
+ return t / P;
974
+ case "px":
1716
975
  return t;
1717
- } else if (e === "foot" && typeof t == "object")
1718
- return t.footer;
1719
- return null;
1720
- }
1721
- function oe(e) {
1722
- return e.map(function(t, n) {
1723
- var i, r;
1724
- return typeof t == "object" ? r = (i = t.dataKey) !== null && i !== void 0 ? i : n : r = n, new Qt(r, t, n);
1725
- });
1726
- }
1727
- function se(e, t, n, i, r, a, l) {
1728
- var o = At(i), h;
1729
- e === "head" ? h = r.headStyles : e === "body" ? h = r.bodyStyles : e === "foot" && (h = r.footStyles);
1730
- var s = H({}, o.table, o[e], r.styles, h), f = r.columnStyles[t.dataKey] || r.columnStyles[t.index] || {}, u = e === "body" ? f : {}, d = e === "body" && n % 2 === 0 ? H({}, o.alternateRow, r.alternateRowStyles) : {}, p = Et(a), c = H({}, p, s, d, u);
1731
- return H(c, l);
1732
- }
1733
- function le(e, t, n) {
1734
- var i;
1735
- n === void 0 && (n = {});
1736
- var r = ht(e, t), a = /* @__PURE__ */ new Map(), l = [], o = [], h = [];
1737
- Array.isArray(t.settings.horizontalPageBreakRepeat) ? h = t.settings.horizontalPageBreakRepeat : (typeof t.settings.horizontalPageBreakRepeat == "string" || typeof t.settings.horizontalPageBreakRepeat == "number") && (h = [t.settings.horizontalPageBreakRepeat]), h.forEach(function(d) {
1738
- var p = t.columns.find(function(c) {
1739
- return c.dataKey === d || c.index === d;
1740
- });
1741
- p && !a.has(p.index) && (a.set(p.index, !0), l.push(p.index), o.push(t.columns[p.index]), r -= p.wrappedWidth);
1742
- });
1743
- for (var s = !0, f = (i = n?.start) !== null && i !== void 0 ? i : 0; f < t.columns.length; ) {
1744
- if (a.has(f)) {
1745
- f++;
1746
- continue;
1747
- }
1748
- var u = t.columns[f].wrappedWidth;
1749
- if (s || r >= u)
1750
- s = !1, l.push(f), o.push(t.columns[f]), r -= u;
1751
- else
1752
- break;
1753
- f++;
1754
- }
1755
- return { colIndexes: l, columns: o, lastIndex: f - 1 };
1756
- }
1757
- function he(e, t) {
1758
- for (var n = [], i = 0; i < t.columns.length; i++) {
1759
- var r = le(e, t, { start: i });
1760
- r.columns.length && (n.push(r), i = r.lastIndex);
1761
- }
1762
- return n;
1763
- }
1764
- function vt(e, t) {
1765
- var n = t.settings, i = n.startY, r = n.margin, a = { x: r.left, y: i }, l = t.getHeadHeight(t.columns) + t.getFootHeight(t.columns), o = i + r.bottom + l;
1766
- if (n.pageBreak === "avoid") {
1767
- var h = t.body, s = h.reduce(function(d, p) {
1768
- return d + p.height;
1769
- }, 0);
1770
- o += s;
976
+ default:
977
+ return t * 25.4 / P;
1771
978
  }
1772
- var f = new D(e);
1773
- (n.pageBreak === "always" || n.startY != null && o > f.pageSize().height) && (mt(f), a.y = r.top), t.callWillDrawPageHooks(f, a);
1774
- var u = H({}, a);
1775
- t.startPageNumber = f.pageNumber(), n.horizontalPageBreak ? fe(f, t, u, a) : (f.applyStyles(f.userStyles), (n.showHead === "firstPage" || n.showHead === "everyPage") && t.head.forEach(function(d) {
1776
- return P(f, t, d, a, t.columns);
1777
- }), f.applyStyles(f.userStyles), t.body.forEach(function(d, p) {
1778
- var c = p === t.body.length - 1;
1779
- E(f, t, d, c, u, a, t.columns);
1780
- }), f.applyStyles(f.userStyles), (n.showFoot === "lastPage" || n.showFoot === "everyPage") && t.foot.forEach(function(d) {
1781
- return P(f, t, d, a, t.columns);
1782
- })), st(f, t, u, a), t.callEndPageHooks(f, a), t.finalY = a.y, e.lastAutoTable = t, f.applyStyles(f.userStyles);
1783
- }
1784
- function fe(e, t, n, i) {
1785
- var r = he(e, t), a = t.settings;
1786
- if (a.horizontalPageBreakBehaviour === "afterAllRows")
1787
- r.forEach(function(s, f) {
1788
- e.applyStyles(e.userStyles), f > 0 ? z(e, t, n, i, s.columns, !0) : V(e, t, i, s.columns), ge(e, t, n, i, s.columns), O(e, t, i, s.columns);
1789
- });
1790
- else
1791
- for (var l = -1, o = r[0], h = function() {
1792
- var s = l;
1793
- if (o) {
1794
- e.applyStyles(e.userStyles);
1795
- var f = o.columns;
1796
- l >= 0 ? z(e, t, n, i, f, !0) : V(e, t, i, f), s = tt(e, t, l + 1, i, f), O(e, t, i, f);
1797
- }
1798
- var u = s - l;
1799
- r.slice(1).forEach(function(d) {
1800
- e.applyStyles(e.userStyles), z(e, t, n, i, d.columns, !0), tt(e, t, l + 1, i, d.columns, u), O(e, t, i, d.columns);
1801
- }), l = s;
1802
- }; l < t.body.length - 1; )
1803
- h();
1804
- }
1805
- function V(e, t, n, i) {
1806
- var r = t.settings;
1807
- e.applyStyles(e.userStyles), (r.showHead === "firstPage" || r.showHead === "everyPage") && t.head.forEach(function(a) {
1808
- return P(e, t, a, n, i);
1809
- });
1810
- }
1811
- function ge(e, t, n, i, r) {
1812
- e.applyStyles(e.userStyles), t.body.forEach(function(a, l) {
1813
- var o = l === t.body.length - 1;
1814
- E(e, t, a, o, n, i, r);
1815
- });
1816
- }
1817
- function tt(e, t, n, i, r, a) {
1818
- e.applyStyles(e.userStyles), a = a ?? t.body.length;
1819
- var l = Math.min(n + a, t.body.length), o = -1;
1820
- return t.body.slice(n, l).forEach(function(h, s) {
1821
- var f = n + s === t.body.length - 1, u = yt(e, t, f, i);
1822
- h.canEntireRowFit(u, r) && (P(e, t, h, i, r), o = n + s);
1823
- }), o;
1824
- }
1825
- function O(e, t, n, i) {
1826
- var r = t.settings;
1827
- e.applyStyles(e.userStyles), (r.showFoot === "lastPage" || r.showFoot === "everyPage") && t.foot.forEach(function(a) {
1828
- return P(e, t, a, n, i);
1829
- });
1830
- }
1831
- function pe(e, t, n) {
1832
- var i = n.getLineHeight(e.styles.fontSize), r = e.padding("vertical"), a = Math.floor((t - r) / i);
1833
- return Math.max(0, a);
1834
- }
1835
- function ue(e, t, n, i) {
1836
- var r = {};
1837
- e.spansMultiplePages = !0, e.height = 0;
1838
- for (var a = 0, l = 0, o = n.columns; l < o.length; l++) {
1839
- var h = o[l], s = e.cells[h.index];
1840
- if (s) {
1841
- Array.isArray(s.text) || (s.text = [s.text]);
1842
- var f = new dt(s.raw, s.styles, s.section);
1843
- f = H(f, s), f.text = [];
1844
- var u = pe(s, t, i);
1845
- s.text.length > u && (f.text = s.text.splice(u, s.text.length));
1846
- var d = i.scaleFactor(), p = i.getLineHeightFactor();
1847
- s.contentHeight = s.getContentHeight(d, p), s.contentHeight >= t && (s.contentHeight = t, f.styles.minCellHeight -= t), s.contentHeight > e.height && (e.height = s.contentHeight), f.contentHeight = f.getContentHeight(d, p), f.contentHeight > a && (a = f.contentHeight), r[h.index] = f;
979
+ }, gt = (t, e, s) => {
980
+ if (!e.data)
981
+ return;
982
+ const c = n.options, g = c.page.unit || "mm", r = s * c.page.indent, l = c.page.maxContentWidth - r, i = n.X + r;
983
+ let a = n.Y;
984
+ try {
985
+ const p = t.getImageProperties(e.data), h = p.width, f = p.height, d = f > 0 ? h / f : 1;
986
+ let o, m;
987
+ if (e.width && e.height ? (o = L(e.width, g), m = L(e.height, g)) : e.width ? (o = L(e.width, g), m = o / d) : e.height ? (m = L(e.height, g), o = m * d) : (o = L(h, g), m = L(f, g)), o > l) {
988
+ const w = l / o;
989
+ o = l, m = m * w;
1848
990
  }
1849
- }
1850
- var c = new ut(e.raw, -1, e.section, r, !0);
1851
- c.height = a;
1852
- for (var v = 0, m = n.columns; v < m.length; v++) {
1853
- var h = m[v], f = c.cells[h.index];
1854
- f && (f.height = c.height);
1855
- var s = e.cells[h.index];
1856
- s && (s.height = e.height);
1857
- }
1858
- return c;
1859
- }
1860
- function de(e, t, n, i) {
1861
- var r = e.pageSize().height, a = i.settings.margin, l = a.top + a.bottom, o = r - l;
1862
- t.section === "body" && (o -= i.getHeadHeight(i.columns) + i.getFootHeight(i.columns));
1863
- var h = t.getMinimumRowHeight(i.columns, e), s = h < n;
1864
- if (h > o)
1865
- return console.log("Will not be able to print row ".concat(t.index, " correctly since it's minimum height is larger than page height")), !0;
1866
- if (!s)
1867
- return !1;
1868
- var f = t.hasRowSpan(i.columns), u = t.getMaxCellHeight(i.columns) > o;
1869
- return u ? (f && console.log("The content of row ".concat(t.index, " will not be drawn correctly since drawing rows with a height larger than the page height and has cells with rowspans is not supported.")), !0) : !(f || i.settings.rowPageBreak === "avoid");
1870
- }
1871
- function E(e, t, n, i, r, a, l) {
1872
- var o = yt(e, t, i, a);
1873
- if (n.canEntireRowFit(o, l))
1874
- P(e, t, n, a, l);
1875
- else if (de(e, n, o, t)) {
1876
- var h = ue(n, o, t, e);
1877
- P(e, t, n, a, l), z(e, t, r, a, l), E(e, t, h, i, r, a, l);
1878
- } else
1879
- z(e, t, r, a, l), E(e, t, n, i, r, a, l);
1880
- }
1881
- function P(e, t, n, i, r) {
1882
- i.x = t.settings.margin.left;
1883
- for (var a = 0, l = r; a < l.length; a++) {
1884
- var o = l[a], h = n.cells[o.index];
1885
- if (!h) {
1886
- i.x += o.width;
1887
- continue;
991
+ const x = c.page.maxContentHeight - c.page.topmargin;
992
+ if (m > x) {
993
+ const w = x / m;
994
+ m = x, o = o * w;
1888
995
  }
1889
- e.applyStyles(h.styles), h.x = i.x, h.y = i.y;
1890
- var s = t.callCellHooks(e, t.hooks.willDrawCell, h, n, o, i);
1891
- if (s === !1) {
1892
- i.x += o.width;
1893
- continue;
996
+ a + m > c.page.maxContentHeight && (y(t), a = n.Y);
997
+ const F = e.align || c.image?.defaultAlign || "left";
998
+ let b;
999
+ switch (F) {
1000
+ case "right":
1001
+ b = i + l - o;
1002
+ break;
1003
+ case "center":
1004
+ b = i + (l - o) / 2;
1005
+ break;
1006
+ default:
1007
+ b = i;
1008
+ break;
1894
1009
  }
1895
- ce(e, h, i);
1896
- var f = h.getTextPos();
1897
- rt(h.text, f.x, f.y, {
1898
- halign: h.styles.halign,
1899
- valign: h.styles.valign,
1900
- maxWidth: Math.ceil(h.width - h.padding("left") - h.padding("right"))
1901
- }, e.getDocument()), t.callCellHooks(e, t.hooks.didDrawCell, h, n, o, i), i.x += o.width;
1902
- }
1903
- i.y += n.height;
1904
- }
1905
- function ce(e, t, n) {
1906
- var i = t.styles;
1907
- if (e.getDocument().setFillColor(e.getDocument().getFillColor()), typeof i.lineWidth == "number") {
1908
- var r = lt(i.lineWidth, i.fillColor);
1909
- r && e.rect(t.x, n.y, t.width, t.height, r);
1910
- } else typeof i.lineWidth == "object" && (i.fillColor && e.rect(t.x, n.y, t.width, t.height, "F"), ve(e, t, n, i.lineWidth));
1911
- }
1912
- function ve(e, t, n, i) {
1913
- var r, a, l, o;
1914
- i.top && (r = n.x, a = n.y, l = n.x + t.width, o = n.y, i.right && (l += 0.5 * i.right), i.left && (r -= 0.5 * i.left), h(i.top, r, a, l, o)), i.bottom && (r = n.x, a = n.y + t.height, l = n.x + t.width, o = n.y + t.height, i.right && (l += 0.5 * i.right), i.left && (r -= 0.5 * i.left), h(i.bottom, r, a, l, o)), i.left && (r = n.x, a = n.y, l = n.x, o = n.y + t.height, i.top && (a -= 0.5 * i.top), i.bottom && (o += 0.5 * i.bottom), h(i.left, r, a, l, o)), i.right && (r = n.x + t.width, a = n.y, l = n.x + t.width, o = n.y + t.height, i.top && (a -= 0.5 * i.top), i.bottom && (o += 0.5 * i.bottom), h(i.right, r, a, l, o));
1915
- function h(s, f, u, d, p) {
1916
- e.getDocument().setLineWidth(s), e.getDocument().line(f, u, d, p, "S");
1917
- }
1918
- }
1919
- function yt(e, t, n, i) {
1920
- var r = t.settings.margin.bottom, a = t.settings.showFoot;
1921
- return (a === "everyPage" || a === "lastPage" && n) && (r += t.getFootHeight(t.columns)), e.pageSize().height - i.y - r;
1922
- }
1923
- function z(e, t, n, i, r, a) {
1924
- r === void 0 && (r = []), a === void 0 && (a = !1), e.applyStyles(e.userStyles), t.settings.showFoot === "everyPage" && !a && t.foot.forEach(function(o) {
1925
- return P(e, t, o, i, r);
1926
- }), t.callEndPageHooks(e, i);
1927
- var l = t.settings.margin;
1928
- st(e, t, n, i), mt(e), t.pageNumber++, i.x = l.left, i.y = l.top, n.y = l.top, t.callWillDrawPageHooks(e, i), t.settings.showHead === "everyPage" && (t.head.forEach(function(o) {
1929
- return P(e, t, o, i, r);
1930
- }), e.applyStyles(e.userStyles));
1931
- }
1932
- function mt(e) {
1933
- var t = e.pageNumber();
1934
- e.setPage(t + 1);
1935
- var n = e.pageNumber();
1936
- return n === t ? (e.addPage(), !0) : !1;
1937
- }
1938
- function ye(e) {
1939
- e.API.autoTable = function() {
1940
- for (var t = [], n = 0; n < arguments.length; n++)
1941
- t[n] = arguments[n];
1942
- var i = t[0], r = pt(this, i), a = ct(this, r);
1943
- return vt(this, a), this;
1944
- }, e.API.lastAutoTable = !1, e.API.autoTableText = function(t, n, i, r) {
1945
- rt(t, n, i, r, this);
1946
- }, e.API.autoTableSetDefaults = function(t) {
1947
- return D.setDefaults(t, this), this;
1948
- }, e.autoTableSetDefaults = function(t, n) {
1949
- D.setDefaults(t, n);
1950
- }, e.API.autoTableHtmlToJson = function(t, n) {
1951
- var i;
1952
- if (n === void 0 && (n = !1), typeof window > "u")
1953
- return console.error("Cannot run autoTableHtmlToJson in non browser environment"), null;
1954
- var r = new D(this), a = gt(r, t, window, n, !1), l = a.head, o = a.body, h = ((i = l[0]) === null || i === void 0 ? void 0 : i.map(function(s) {
1955
- return s.content;
1956
- })) || [];
1957
- return { columns: h, rows: o, data: o };
1958
- };
1959
- }
1960
- var M;
1961
- function me(e, t) {
1962
- var n = pt(e, t), i = ct(e, n);
1963
- vt(e, i);
1964
- }
1965
- try {
1966
- if (typeof window < "u" && window) {
1967
- var et = window, nt = et.jsPDF || ((M = et.jspdf) === null || M === void 0 ? void 0 : M.jsPDF);
1968
- nt && ye(nt);
1010
+ const k = ct(e);
1011
+ t.addImage(
1012
+ e.data,
1013
+ k,
1014
+ b,
1015
+ a,
1016
+ o,
1017
+ m
1018
+ ), n.updateY(m, "add"), n.recordContentY();
1019
+ } catch (p) {
1020
+ console.warn("Failed to render image", p);
1969
1021
  }
1970
- } catch (e) {
1971
- console.error("Could not apply autoTable plugin", e);
1972
- }
1973
- const xe = (e, t, n) => {
1974
- if (!t.header || !t.rows)
1022
+ }, pt = (t, e, s) => {
1023
+ if (!e.header || !e.rows)
1975
1024
  return;
1976
- const i = g.options, r = i.page.xmargin + n * i.page.indent, a = [t.header.map((h) => h.content || "")], l = t.rows.map(
1977
- (h) => h.map((s) => s.content || "")
1978
- ), o = i.table || {};
1979
- me(e, {
1980
- head: a,
1025
+ const c = n.options, g = c.page.xmargin + s * c.page.indent, r = [e.header.map((a) => a.content || "")], l = e.rows.map(
1026
+ (a) => a.map((p) => p.content || "")
1027
+ ), i = c.table || {};
1028
+ O(t, {
1029
+ head: r,
1981
1030
  body: l,
1982
- startY: g.Y,
1983
- margin: { left: r, right: i.page.xmargin },
1984
- ...o,
1985
- didDrawPage: (h) => {
1986
- o.didDrawPage && o.didDrawPage(h);
1031
+ startY: n.Y,
1032
+ margin: { left: g, right: c.page.xmargin },
1033
+ ...i,
1034
+ didDrawPage: (a) => {
1035
+ i.didDrawPage && i.didDrawPage(a);
1987
1036
  },
1988
- didDrawCell: (h) => {
1989
- o.didDrawCell && o.didDrawCell(h), g.setCursor({
1990
- x: g.X,
1991
- y: h.cell.y + 2 * i.page.lineSpace
1037
+ didDrawCell: (a) => {
1038
+ i.didDrawCell && i.didDrawCell(a), n.setCursor({
1039
+ x: n.X,
1040
+ y: a.cell.y + 2 * c.page.lineSpace
1992
1041
  });
1993
1042
  }
1994
1043
  });
1995
- }, xt = async (e) => {
1996
- for (const t of e) {
1997
- if (t.type === y.Image && t.src)
1044
+ }, _ = async (t) => {
1045
+ for (const e of t) {
1046
+ if (e.type === u.Image && e.src)
1998
1047
  try {
1999
- if (t.src.startsWith("data:"))
2000
- t.data = t.src;
1048
+ if (e.src.startsWith("data:"))
1049
+ e.data = e.src;
2001
1050
  else {
2002
- const n = await fetch(t.src);
2003
- if (!n.ok)
1051
+ const s = await fetch(e.src);
1052
+ if (!s.ok)
2004
1053
  throw new Error(
2005
- `Failed to fetch image: ${n.statusText}`
1054
+ `Failed to fetch image: ${s.statusText}`
2006
1055
  );
2007
- const i = await n.blob(), r = await new Promise(
2008
- (a, l) => {
2009
- const o = new FileReader();
2010
- o.onloadend = () => {
2011
- typeof o.result == "string" ? a(o.result) : l(
1056
+ const c = await s.blob(), g = await new Promise(
1057
+ (r, l) => {
1058
+ const i = new FileReader();
1059
+ i.onloadend = () => {
1060
+ typeof i.result == "string" ? r(i.result) : l(
2012
1061
  new Error(
2013
1062
  "Failed to convert image to base64 string"
2014
1063
  )
2015
1064
  );
2016
- }, o.onerror = l, o.readAsDataURL(i);
1065
+ }, i.onerror = l, i.readAsDataURL(c);
2017
1066
  }
2018
1067
  );
2019
- t.data = r;
1068
+ e.data = g;
2020
1069
  }
2021
- } catch (n) {
1070
+ } catch (s) {
2022
1071
  console.warn(
2023
- `[jspdf-md-renderer] Warning: Failed to load image at ${t.src}. It will be skipped.`,
2024
- n
1072
+ `[jspdf-md-renderer] Warning: Failed to load image at ${e.src}. It will be skipped.`,
1073
+ s
2025
1074
  );
2026
1075
  }
2027
- t.items && t.items.length > 0 && await xt(t.items);
1076
+ e.items && e.items.length > 0 && await _(e.items);
2028
1077
  }
2029
- }, it = {
1078
+ }, D = {
2030
1079
  page: {
2031
1080
  indent: 10,
2032
1081
  maxContentWidth: 190,
@@ -2045,77 +1094,81 @@ const xe = (e, t, n) => {
2045
1094
  bold: { name: "helvetica", style: "bold" },
2046
1095
  regular: { name: "helvetica", style: "normal" },
2047
1096
  light: { name: "helvetica", style: "light" }
1097
+ },
1098
+ image: {
1099
+ defaultAlign: "left"
2048
1100
  }
2049
- }, Se = (e) => {
2050
- if (!e)
1101
+ }, ht = (t) => {
1102
+ if (!t)
2051
1103
  throw new Error("RenderOption is required");
2052
- const t = { ...it.page, ...e.page }, n = { ...it.font, ...e.font };
2053
- return t.maxContentWidth || (t.maxContentWidth = 190), t.maxContentHeight || (t.maxContentHeight = 277), {
2054
- ...e,
2055
- page: t,
2056
- font: n
1104
+ const e = { ...D.page, ...t.page }, s = { ...D.font, ...t.font }, c = { ...D.image, ...t.image };
1105
+ return e.maxContentWidth || (e.maxContentWidth = 190), e.maxContentHeight || (e.maxContentHeight = 277), {
1106
+ ...t,
1107
+ page: e,
1108
+ font: s,
1109
+ image: c
2057
1110
  };
2058
- }, Ce = async (e, t, n) => {
2059
- const i = Se(n);
2060
- g.initialize(i);
2061
- const r = await Ct(t);
2062
- await xt(r);
2063
- const a = (l, o = 0, h = !1, s = 0, f = !1, u = !0) => {
2064
- const d = o * i.page.indent;
1111
+ }, ut = async (t, e, s) => {
1112
+ const c = ht(s);
1113
+ n.initialize(c);
1114
+ const g = await Q(e);
1115
+ await _(g);
1116
+ const r = (l, i = 0, a = !1, p = 0, h = !1, f = !0) => {
1117
+ const d = i * c.page.indent;
2065
1118
  switch (l.type) {
2066
- case y.Heading:
2067
- bt(e, l, d, a);
1119
+ case u.Heading:
1120
+ M(t, l, d, r);
2068
1121
  break;
2069
- case y.Paragraph:
2070
- Wt(e, l, d, a);
1122
+ case u.Paragraph:
1123
+ tt(t, l, d, r);
2071
1124
  break;
2072
- case y.List:
2073
- Ht(e, l, o, a);
1125
+ case u.List:
1126
+ et(t, l, i, r);
2074
1127
  break;
2075
- case y.ListItem:
2076
- Pt(
2077
- e,
1128
+ case u.ListItem:
1129
+ nt(
1130
+ t,
2078
1131
  l,
2079
- o,
2080
- a,
2081
- s,
2082
- f
1132
+ i,
1133
+ r,
1134
+ p,
1135
+ h
2083
1136
  );
2084
1137
  break;
2085
- case y.Hr:
2086
- Dt(e);
1138
+ case u.Hr:
1139
+ it(t);
2087
1140
  break;
2088
- case y.Code:
2089
- Tt(e, l, o);
1141
+ case u.Code:
1142
+ at(t, l, i);
2090
1143
  break;
2091
- case y.Strong:
2092
- case y.Em:
2093
- case y.CodeSpan:
2094
- zt(e, l, d);
1144
+ case u.Strong:
1145
+ case u.Em:
1146
+ case u.CodeSpan:
1147
+ ot(t, l, d);
2095
1148
  break;
2096
- case y.Link:
2097
- Lt(e, l, d);
1149
+ case u.Link:
1150
+ rt(t, l, d);
2098
1151
  break;
2099
- case y.Blockquote:
2100
- Yt(e, l, o, a);
1152
+ case u.Blockquote:
1153
+ lt(t, l, i, r);
2101
1154
  break;
2102
- case y.Image:
2103
- Rt(e, l, o);
1155
+ case u.Image:
1156
+ gt(t, l, i);
2104
1157
  break;
2105
- case y.Table:
2106
- xe(e, l, o);
1158
+ case u.Table:
1159
+ pt(t, l, i);
2107
1160
  break;
2108
- case y.Raw:
2109
- case y.Text:
2110
- kt(
2111
- e,
1161
+ case u.Raw:
1162
+ case u.Text:
1163
+ st(
1164
+ t,
2112
1165
  l,
2113
- o,
2114
- h,
1166
+ i,
2115
1167
  a,
2116
- s,
2117
- f,
2118
- i.page.defaultFontSize > 0
1168
+ r,
1169
+ p,
1170
+ h,
1171
+ c.page.defaultFontSize > 0
2119
1172
  // Using validOptions here if needed, or just true for justify
2120
1173
  );
2121
1174
  break;
@@ -2129,11 +1182,11 @@ const xe = (e, t, n) => {
2129
1182
  break;
2130
1183
  }
2131
1184
  };
2132
- for (const l of r)
2133
- a(l);
2134
- i.endCursorYHandler(g.Y);
1185
+ for (const l of g)
1186
+ r(l);
1187
+ c.endCursorYHandler(n.Y);
2135
1188
  };
2136
1189
  export {
2137
- Ct as MdTextParser,
2138
- Ce as MdTextRender
1190
+ Q as MdTextParser,
1191
+ ut as MdTextRender
2139
1192
  };