react-pdf-levelup 2.0.32 → 3.0.34
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/README.md +237 -47
- package/dist/index.cjs +954 -0
- package/dist/{index.d.mts → index.d.cts} +11 -11
- package/dist/index.d.ts +11 -11
- package/dist/index.js +237 -252
- package/license +17 -0
- package/package.json +8 -2
- package/dist/index.mjs +0 -792
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,954 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/components/core/index.tsx
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
A: () => A,
|
|
34
|
+
BR: () => BR,
|
|
35
|
+
Blockquote: () => Blockquote,
|
|
36
|
+
Center: () => Center,
|
|
37
|
+
Col1: () => Col1,
|
|
38
|
+
Col10: () => Col10,
|
|
39
|
+
Col11: () => Col11,
|
|
40
|
+
Col12: () => Col12,
|
|
41
|
+
Col2: () => Col2,
|
|
42
|
+
Col3: () => Col3,
|
|
43
|
+
Col4: () => Col4,
|
|
44
|
+
Col5: () => Col5,
|
|
45
|
+
Col6: () => Col6,
|
|
46
|
+
Col7: () => Col7,
|
|
47
|
+
Col8: () => Col8,
|
|
48
|
+
Col9: () => Col9,
|
|
49
|
+
Container: () => Container,
|
|
50
|
+
Em: () => Em,
|
|
51
|
+
Font: () => import_renderer10.Font,
|
|
52
|
+
H1: () => H1,
|
|
53
|
+
H2: () => H2,
|
|
54
|
+
H3: () => H3,
|
|
55
|
+
H4: () => H4,
|
|
56
|
+
H5: () => H5,
|
|
57
|
+
H6: () => H6,
|
|
58
|
+
Header: () => Header,
|
|
59
|
+
Img: () => Img_default,
|
|
60
|
+
LI: () => LI,
|
|
61
|
+
LayoutPDF: () => LayoutPDF_default,
|
|
62
|
+
Left: () => Left,
|
|
63
|
+
Mark: () => Mark,
|
|
64
|
+
OL: () => OL,
|
|
65
|
+
P: () => P,
|
|
66
|
+
QR: () => QR_default,
|
|
67
|
+
Right: () => Right,
|
|
68
|
+
Row: () => Row,
|
|
69
|
+
Small: () => Small,
|
|
70
|
+
Span: () => Span,
|
|
71
|
+
Strong: () => Strong,
|
|
72
|
+
StyleSheet: () => import_renderer10.StyleSheet,
|
|
73
|
+
Table: () => Table,
|
|
74
|
+
Tbody: () => Tbody,
|
|
75
|
+
Td: () => Td,
|
|
76
|
+
Text: () => import_renderer10.Text,
|
|
77
|
+
Th: () => Th,
|
|
78
|
+
Thead: () => Thead,
|
|
79
|
+
Tr: () => Tr,
|
|
80
|
+
U: () => U,
|
|
81
|
+
UL: () => UL,
|
|
82
|
+
View: () => import_renderer10.View,
|
|
83
|
+
decodeBase64Pdf: () => decodeBase64Pdf_default,
|
|
84
|
+
generatePDF: () => generatePDF_default
|
|
85
|
+
});
|
|
86
|
+
module.exports = __toCommonJS(index_exports);
|
|
87
|
+
|
|
88
|
+
// src/components/core/LayoutPDF.tsx
|
|
89
|
+
var import_react = __toESM(require("react"), 1);
|
|
90
|
+
var import_renderer = require("@react-pdf/renderer");
|
|
91
|
+
var styles = import_renderer.StyleSheet.create({
|
|
92
|
+
page: {
|
|
93
|
+
backgroundColor: "white",
|
|
94
|
+
padding: 30,
|
|
95
|
+
fontFamily: "Helvetica",
|
|
96
|
+
fontSize: 14
|
|
97
|
+
},
|
|
98
|
+
footer: {
|
|
99
|
+
position: "absolute",
|
|
100
|
+
left: 0,
|
|
101
|
+
right: 0,
|
|
102
|
+
textAlign: "center"
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
var LayoutPDF = ({
|
|
106
|
+
children,
|
|
107
|
+
size = "A4",
|
|
108
|
+
orientation = "vertical",
|
|
109
|
+
backgroundColor = "white",
|
|
110
|
+
padding = 30,
|
|
111
|
+
margen = "normal",
|
|
112
|
+
style = {},
|
|
113
|
+
footer,
|
|
114
|
+
lines = footer ? 2 : 1
|
|
115
|
+
}) => {
|
|
116
|
+
const LINE_HEIGHT = 20;
|
|
117
|
+
const FOOTER_PADDING = 10;
|
|
118
|
+
const footerHeight = lines * LINE_HEIGHT + FOOTER_PADDING;
|
|
119
|
+
const getMargins = (margen2, pageSize) => {
|
|
120
|
+
const normalizedSize = pageSize.toUpperCase();
|
|
121
|
+
switch (margen2) {
|
|
122
|
+
case "apa":
|
|
123
|
+
if (normalizedSize === "LETTER" || normalizedSize === "LEGAL") {
|
|
124
|
+
return {
|
|
125
|
+
paddingTop: 72,
|
|
126
|
+
paddingRight: 72,
|
|
127
|
+
paddingBottom: 72,
|
|
128
|
+
paddingLeft: 72
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
paddingTop: 72,
|
|
133
|
+
paddingRight: 72,
|
|
134
|
+
paddingBottom: 72,
|
|
135
|
+
paddingLeft: 72
|
|
136
|
+
};
|
|
137
|
+
case "estrecho":
|
|
138
|
+
return {
|
|
139
|
+
paddingTop: 36,
|
|
140
|
+
paddingRight: 36,
|
|
141
|
+
paddingBottom: 36,
|
|
142
|
+
paddingLeft: 36
|
|
143
|
+
};
|
|
144
|
+
case "ancho":
|
|
145
|
+
return {
|
|
146
|
+
paddingTop: 108,
|
|
147
|
+
paddingRight: 108,
|
|
148
|
+
paddingBottom: 108,
|
|
149
|
+
paddingLeft: 108
|
|
150
|
+
};
|
|
151
|
+
case "normal":
|
|
152
|
+
default:
|
|
153
|
+
return {
|
|
154
|
+
paddingTop: padding,
|
|
155
|
+
paddingRight: padding,
|
|
156
|
+
paddingBottom: padding,
|
|
157
|
+
paddingLeft: padding
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
let safeSize = size;
|
|
162
|
+
let safeOrientation = orientation;
|
|
163
|
+
let safeBackgroundColor = backgroundColor;
|
|
164
|
+
let safeLines = Math.max(1, Math.min(lines, 10));
|
|
165
|
+
let safeMargen = margen;
|
|
166
|
+
try {
|
|
167
|
+
const validSizes = ["A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "LETTER", "LEGAL", "TABLOID"];
|
|
168
|
+
if (typeof size === "string" && !validSizes.includes(size.toUpperCase())) {
|
|
169
|
+
console.warn(`Invalid page size: ${size}. Using A4 as default.`);
|
|
170
|
+
safeSize = "A4";
|
|
171
|
+
}
|
|
172
|
+
if (orientation !== "vertical" && orientation !== "horizontal") {
|
|
173
|
+
console.warn(`Invalid orientation: ${orientation}. Using vertical as default.`);
|
|
174
|
+
safeOrientation = "vertical";
|
|
175
|
+
}
|
|
176
|
+
if (typeof backgroundColor !== "string") {
|
|
177
|
+
console.warn(`Invalid background color: ${backgroundColor}. Using white as default.`);
|
|
178
|
+
safeBackgroundColor = "white";
|
|
179
|
+
}
|
|
180
|
+
const validMargins = ["apa", "normal", "estrecho", "ancho"];
|
|
181
|
+
if (!validMargins.includes(margen)) {
|
|
182
|
+
console.warn(`Invalid margin type: ${margen}. Using normal as default.`);
|
|
183
|
+
safeMargen = "normal";
|
|
184
|
+
}
|
|
185
|
+
if (typeof lines !== "number" || lines < 1) {
|
|
186
|
+
console.warn(`Invalid lines value: ${lines}. Using 1 as default.`);
|
|
187
|
+
safeLines = 1;
|
|
188
|
+
}
|
|
189
|
+
} catch (e) {
|
|
190
|
+
console.warn("Error processing props in LayoutPDF:", e);
|
|
191
|
+
}
|
|
192
|
+
const transformOrientation = (orientation2) => {
|
|
193
|
+
switch (orientation2) {
|
|
194
|
+
case "vertical":
|
|
195
|
+
return "portrait";
|
|
196
|
+
case "horizontal":
|
|
197
|
+
return "landscape";
|
|
198
|
+
default:
|
|
199
|
+
console.warn(`Unrecognized orientation: ${orientation2}. Using portrait as default.`);
|
|
200
|
+
return "portrait";
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
const getFooterPosition = (pageSize, orientation2, footerHeight2) => {
|
|
204
|
+
const pageDimensions = {
|
|
205
|
+
A0: { width: 841, height: 1189 },
|
|
206
|
+
A1: { width: 594, height: 841 },
|
|
207
|
+
A2: { width: 420, height: 594 },
|
|
208
|
+
A3: { width: 297, height: 420 },
|
|
209
|
+
A4: { width: 210, height: 297 },
|
|
210
|
+
A5: { width: 148, height: 210 },
|
|
211
|
+
A6: { width: 105, height: 148 },
|
|
212
|
+
A7: { width: 74, height: 105 },
|
|
213
|
+
A8: { width: 52, height: 74 },
|
|
214
|
+
A9: { width: 37, height: 52 },
|
|
215
|
+
LETTER: { width: 216, height: 279 },
|
|
216
|
+
LEGAL: { width: 216, height: 356 },
|
|
217
|
+
TABLOID: { width: 279, height: 432 }
|
|
218
|
+
};
|
|
219
|
+
const mmToPoints = 2.834645669;
|
|
220
|
+
const dimensions = pageDimensions[pageSize.toUpperCase()];
|
|
221
|
+
if (!dimensions) {
|
|
222
|
+
return orientation2 === "landscape" ? 595 - footerHeight2 - 10 : 842 - footerHeight2 - 10;
|
|
223
|
+
}
|
|
224
|
+
const heightInPoints = dimensions.height * mmToPoints;
|
|
225
|
+
const widthInPoints = dimensions.width * mmToPoints;
|
|
226
|
+
return orientation2 === "landscape" ? widthInPoints - footerHeight2 - 10 : heightInPoints - footerHeight2 - 10;
|
|
227
|
+
};
|
|
228
|
+
const pdfOrientation = transformOrientation(safeOrientation);
|
|
229
|
+
const margins = getMargins(safeMargen, safeSize);
|
|
230
|
+
const footerTop = getFooterPosition(safeSize, pdfOrientation, footerHeight);
|
|
231
|
+
const pageStyle = {
|
|
232
|
+
...styles.page,
|
|
233
|
+
backgroundColor: safeBackgroundColor,
|
|
234
|
+
...margins,
|
|
235
|
+
paddingBottom: margins.paddingBottom + footerHeight,
|
|
236
|
+
...style
|
|
237
|
+
};
|
|
238
|
+
const footerStyle = {
|
|
239
|
+
...styles.footer,
|
|
240
|
+
top: footerTop,
|
|
241
|
+
height: footerHeight,
|
|
242
|
+
display: "flex",
|
|
243
|
+
flexDirection: "column",
|
|
244
|
+
justifyContent: "center",
|
|
245
|
+
alignItems: "center",
|
|
246
|
+
fontSize: 10,
|
|
247
|
+
color: "grey"
|
|
248
|
+
};
|
|
249
|
+
return /* @__PURE__ */ import_react.default.createElement(import_renderer.Document, null, /* @__PURE__ */ import_react.default.createElement(import_renderer.Page, { size: safeSize, orientation: pdfOrientation, style: pageStyle, wrap: true }, /* @__PURE__ */ import_react.default.createElement(import_renderer.View, { style: { paddingBottom: footerHeight } }, children), /* @__PURE__ */ import_react.default.createElement(import_renderer.View, { style: footerStyle, fixed: true }, footer, /* @__PURE__ */ import_react.default.createElement(import_renderer.Text, { style: { fontSize: footerStyle.fontSize }, render: ({ pageNumber, totalPages }) => `${pageNumber} / ${totalPages}` }))));
|
|
250
|
+
};
|
|
251
|
+
var LayoutPDF_default = LayoutPDF;
|
|
252
|
+
|
|
253
|
+
// src/components/core/Img.tsx
|
|
254
|
+
var import_react2 = __toESM(require("react"), 1);
|
|
255
|
+
var import_renderer2 = require("@react-pdf/renderer");
|
|
256
|
+
var styles2 = import_renderer2.StyleSheet.create({
|
|
257
|
+
image: {
|
|
258
|
+
width: "100%",
|
|
259
|
+
height: "auto",
|
|
260
|
+
marginBottom: 14
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
var Img = ({ src, style }) => {
|
|
264
|
+
return /* @__PURE__ */ import_react2.default.createElement(import_renderer2.Image, { src, style: [styles2.image, style] });
|
|
265
|
+
};
|
|
266
|
+
var Img_default = Img;
|
|
267
|
+
|
|
268
|
+
// src/components/core/Position.tsx
|
|
269
|
+
var import_react3 = __toESM(require("react"), 1);
|
|
270
|
+
var import_renderer3 = require("@react-pdf/renderer");
|
|
271
|
+
var styles3 = import_renderer3.StyleSheet.create({
|
|
272
|
+
left: {
|
|
273
|
+
textAlign: "left"
|
|
274
|
+
},
|
|
275
|
+
right: {
|
|
276
|
+
textAlign: "right"
|
|
277
|
+
},
|
|
278
|
+
center: {
|
|
279
|
+
textAlign: "center"
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
var Left = ({ children, style }) => {
|
|
283
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_renderer3.View, { style: [styles3.left, style] }, children);
|
|
284
|
+
};
|
|
285
|
+
var Right = ({ children, style }) => {
|
|
286
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_renderer3.View, { style: [styles3.right, style] }, children);
|
|
287
|
+
};
|
|
288
|
+
var Center = ({ children, style }) => {
|
|
289
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_renderer3.View, { style: [styles3.center, style] }, children);
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
// src/components/core/Etiquetas.tsx
|
|
293
|
+
var import_react4 = __toESM(require("react"), 1);
|
|
294
|
+
var import_renderer4 = require("@react-pdf/renderer");
|
|
295
|
+
var styles4 = import_renderer4.StyleSheet.create({
|
|
296
|
+
p: {
|
|
297
|
+
fontSize: 12,
|
|
298
|
+
marginBottom: 5,
|
|
299
|
+
lineHeight: 1.2
|
|
300
|
+
},
|
|
301
|
+
h1: {
|
|
302
|
+
fontSize: 24,
|
|
303
|
+
fontWeight: "bold",
|
|
304
|
+
marginBottom: 12
|
|
305
|
+
},
|
|
306
|
+
h2: {
|
|
307
|
+
fontSize: 20,
|
|
308
|
+
fontWeight: "bold",
|
|
309
|
+
marginBottom: 10
|
|
310
|
+
},
|
|
311
|
+
h3: {
|
|
312
|
+
fontSize: 18,
|
|
313
|
+
fontWeight: "bold",
|
|
314
|
+
marginBottom: 8
|
|
315
|
+
},
|
|
316
|
+
h4: {
|
|
317
|
+
fontSize: 16,
|
|
318
|
+
fontWeight: "bold",
|
|
319
|
+
marginBottom: 6
|
|
320
|
+
},
|
|
321
|
+
h5: {
|
|
322
|
+
fontSize: 14,
|
|
323
|
+
fontWeight: "bold",
|
|
324
|
+
marginBottom: 4
|
|
325
|
+
},
|
|
326
|
+
h6: {
|
|
327
|
+
fontSize: 12,
|
|
328
|
+
fontWeight: "bold",
|
|
329
|
+
marginBottom: 0
|
|
330
|
+
},
|
|
331
|
+
strong: {
|
|
332
|
+
fontWeight: "bold"
|
|
333
|
+
},
|
|
334
|
+
em: {
|
|
335
|
+
fontStyle: "italic"
|
|
336
|
+
},
|
|
337
|
+
u: {
|
|
338
|
+
textDecoration: "underline"
|
|
339
|
+
},
|
|
340
|
+
small: {
|
|
341
|
+
fontSize: 10
|
|
342
|
+
},
|
|
343
|
+
blockquote: {
|
|
344
|
+
marginLeft: 20,
|
|
345
|
+
marginRight: 20,
|
|
346
|
+
fontStyle: "italic",
|
|
347
|
+
borderLeft: "4px solid #ccc",
|
|
348
|
+
paddingLeft: 10
|
|
349
|
+
},
|
|
350
|
+
mark: {
|
|
351
|
+
backgroundColor: "yellow"
|
|
352
|
+
},
|
|
353
|
+
A: {
|
|
354
|
+
color: "#3d65fd",
|
|
355
|
+
textDecoration: "none"
|
|
356
|
+
},
|
|
357
|
+
br: {
|
|
358
|
+
width: "100%",
|
|
359
|
+
height: 1,
|
|
360
|
+
marginTop: 7,
|
|
361
|
+
marginBottom: 7
|
|
362
|
+
},
|
|
363
|
+
header: {
|
|
364
|
+
position: "absolute",
|
|
365
|
+
top: 20,
|
|
366
|
+
left: 0,
|
|
367
|
+
right: 0,
|
|
368
|
+
textAlign: "center",
|
|
369
|
+
fontSize: 10,
|
|
370
|
+
color: "#666",
|
|
371
|
+
paddingHorizontal: 40
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
var P = ({ children, style }) => {
|
|
375
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.p, style] }, children);
|
|
376
|
+
};
|
|
377
|
+
var H1 = ({ children, style }) => {
|
|
378
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.h1, style] }, children);
|
|
379
|
+
};
|
|
380
|
+
var H2 = ({ children, style }) => {
|
|
381
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.h2, style] }, children);
|
|
382
|
+
};
|
|
383
|
+
var H3 = ({ children, style }) => {
|
|
384
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.h3, style] }, children);
|
|
385
|
+
};
|
|
386
|
+
var H4 = ({ children, style }) => {
|
|
387
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.h4, style] }, children);
|
|
388
|
+
};
|
|
389
|
+
var H5 = ({ children, style }) => {
|
|
390
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.h5, style] }, children);
|
|
391
|
+
};
|
|
392
|
+
var H6 = ({ children, style }) => {
|
|
393
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.h6, style] }, children);
|
|
394
|
+
};
|
|
395
|
+
var Strong = ({ children, style }) => {
|
|
396
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.strong, style] }, children);
|
|
397
|
+
};
|
|
398
|
+
var Em = ({ children, style }) => {
|
|
399
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.em, style] }, children);
|
|
400
|
+
};
|
|
401
|
+
var U = ({ children, style }) => {
|
|
402
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.u, style] }, children);
|
|
403
|
+
};
|
|
404
|
+
var Small = ({ children, style }) => {
|
|
405
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.small, style] }, children);
|
|
406
|
+
};
|
|
407
|
+
var Blockquote = ({ children, style }) => {
|
|
408
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.blockquote, style] }, children);
|
|
409
|
+
};
|
|
410
|
+
var Mark = ({ children, style }) => {
|
|
411
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.mark, style] }, children);
|
|
412
|
+
};
|
|
413
|
+
var A = ({ children, style, href }) => {
|
|
414
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Link, { src: href, style: [styles4.A, style] }, children);
|
|
415
|
+
};
|
|
416
|
+
var BR = ({ style }) => {
|
|
417
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [styles4.br, style] }, "\n");
|
|
418
|
+
};
|
|
419
|
+
var Span = ({ children, style }) => {
|
|
420
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, { style: [style] }, children);
|
|
421
|
+
};
|
|
422
|
+
var Header = ({ children, style, fixed = false }) => {
|
|
423
|
+
return /* @__PURE__ */ import_react4.default.createElement(import_renderer4.View, { style: [styles4.header, style], fixed }, typeof children === "string" ? /* @__PURE__ */ import_react4.default.createElement(import_renderer4.Text, null, children) : children);
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
// src/components/core/Tablet.tsx
|
|
427
|
+
var import_react5 = __toESM(require("react"), 1);
|
|
428
|
+
var import_renderer5 = require("@react-pdf/renderer");
|
|
429
|
+
var styles5 = import_renderer5.StyleSheet.create({
|
|
430
|
+
table: {
|
|
431
|
+
width: "100%",
|
|
432
|
+
borderWidth: 1,
|
|
433
|
+
borderColor: "#000",
|
|
434
|
+
marginBottom: 20
|
|
435
|
+
},
|
|
436
|
+
thead: {
|
|
437
|
+
backgroundColor: "#ccc"
|
|
438
|
+
},
|
|
439
|
+
tr: {
|
|
440
|
+
flexDirection: "row"
|
|
441
|
+
},
|
|
442
|
+
textBold: {
|
|
443
|
+
fontSize: 10,
|
|
444
|
+
fontFamily: "Helvetica",
|
|
445
|
+
fontWeight: "bold",
|
|
446
|
+
textAlign: "center",
|
|
447
|
+
paddingTop: 4
|
|
448
|
+
},
|
|
449
|
+
text: {
|
|
450
|
+
fontSize: 10,
|
|
451
|
+
fontFamily: "Helvetica",
|
|
452
|
+
paddingTop: 4,
|
|
453
|
+
paddingLeft: 8,
|
|
454
|
+
paddingRight: 8
|
|
455
|
+
},
|
|
456
|
+
zebraOdd: {
|
|
457
|
+
backgroundColor: "#eeeeee"
|
|
458
|
+
}
|
|
459
|
+
});
|
|
460
|
+
var Table = ({ children, style }) => /* @__PURE__ */ import_react5.default.createElement(import_renderer5.View, { style: [styles5.table, style] }, children);
|
|
461
|
+
var Thead = ({ children, style }) => /* @__PURE__ */ import_react5.default.createElement(import_renderer5.View, { style: [styles5.thead, style] }, children);
|
|
462
|
+
var Tbody = ({ children, style }) => {
|
|
463
|
+
const rows = import_react5.default.Children.toArray(children);
|
|
464
|
+
const count = rows.length;
|
|
465
|
+
return /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null, rows.map(
|
|
466
|
+
(row, idx) => import_react5.default.cloneElement(row, {
|
|
467
|
+
isLastRow: idx === count - 1,
|
|
468
|
+
isOdd: idx % 2 === 1
|
|
469
|
+
})
|
|
470
|
+
));
|
|
471
|
+
};
|
|
472
|
+
var Tr = ({
|
|
473
|
+
children,
|
|
474
|
+
style,
|
|
475
|
+
isLastRow = false,
|
|
476
|
+
isOdd = false
|
|
477
|
+
}) => {
|
|
478
|
+
const elements = import_react5.default.Children.toArray(children);
|
|
479
|
+
const count = elements.length;
|
|
480
|
+
return /* @__PURE__ */ import_react5.default.createElement(import_renderer5.View, { style: [styles5.tr, style] }, elements.map((child, idx) => {
|
|
481
|
+
const isLast = idx === count - 1;
|
|
482
|
+
const width = `${(100 / count).toFixed(2)}%`;
|
|
483
|
+
return import_react5.default.cloneElement(child, { width, isLast, isLastRow, isOdd });
|
|
484
|
+
}));
|
|
485
|
+
};
|
|
486
|
+
var Th = ({
|
|
487
|
+
children,
|
|
488
|
+
style,
|
|
489
|
+
width,
|
|
490
|
+
height,
|
|
491
|
+
colSpan,
|
|
492
|
+
isLast = false,
|
|
493
|
+
isLastRow = false
|
|
494
|
+
}) => {
|
|
495
|
+
const baseWidth = typeof width === "string" && colSpan ? `${(parseFloat(width) * colSpan).toFixed(2)}%` : width;
|
|
496
|
+
const borders = {
|
|
497
|
+
borderRightWidth: isLast ? 0 : 1,
|
|
498
|
+
borderBottomWidth: isLastRow ? 0 : 1,
|
|
499
|
+
borderColor: "#000",
|
|
500
|
+
...height !== void 0 && { height }
|
|
501
|
+
};
|
|
502
|
+
return /* @__PURE__ */ import_react5.default.createElement(import_renderer5.View, { style: [styles5.textBold, { width: baseWidth }, borders, style] }, /* @__PURE__ */ import_react5.default.createElement(import_renderer5.Text, null, children));
|
|
503
|
+
};
|
|
504
|
+
var Td = ({
|
|
505
|
+
children,
|
|
506
|
+
style,
|
|
507
|
+
width,
|
|
508
|
+
height,
|
|
509
|
+
colSpan,
|
|
510
|
+
isLast = false,
|
|
511
|
+
isLastRow = false,
|
|
512
|
+
isOdd = false
|
|
513
|
+
}) => {
|
|
514
|
+
const baseWidth = typeof width === "string" && colSpan ? `${(parseFloat(width) * colSpan).toFixed(2)}%` : width;
|
|
515
|
+
const borders = {
|
|
516
|
+
borderRightWidth: isLast ? 0 : 1,
|
|
517
|
+
borderBottomWidth: isLastRow ? 0 : 1,
|
|
518
|
+
borderColor: "#000",
|
|
519
|
+
...height !== void 0 && { height }
|
|
520
|
+
};
|
|
521
|
+
return /* @__PURE__ */ import_react5.default.createElement(import_renderer5.View, { style: [
|
|
522
|
+
styles5.text,
|
|
523
|
+
isOdd && styles5.zebraOdd,
|
|
524
|
+
{ width: baseWidth },
|
|
525
|
+
borders,
|
|
526
|
+
style
|
|
527
|
+
] }, /* @__PURE__ */ import_react5.default.createElement(import_renderer5.Text, null, children));
|
|
528
|
+
};
|
|
529
|
+
|
|
530
|
+
// src/components/core/Grid.tsx
|
|
531
|
+
var import_react6 = __toESM(require("react"), 1);
|
|
532
|
+
var import_renderer6 = require("@react-pdf/renderer");
|
|
533
|
+
var styles6 = import_renderer6.StyleSheet.create({
|
|
534
|
+
container: {
|
|
535
|
+
width: "100%",
|
|
536
|
+
paddingHorizontal: 20
|
|
537
|
+
},
|
|
538
|
+
row: {
|
|
539
|
+
flexDirection: "row",
|
|
540
|
+
flexWrap: "wrap",
|
|
541
|
+
marginHorizontal: -5
|
|
542
|
+
},
|
|
543
|
+
col: {
|
|
544
|
+
paddingHorizontal: 5
|
|
545
|
+
},
|
|
546
|
+
col1: { width: "8.33%" },
|
|
547
|
+
col2: { width: "16.66%" },
|
|
548
|
+
col3: { width: "25%" },
|
|
549
|
+
col4: { width: "33.33%" },
|
|
550
|
+
col5: { width: "41.66%" },
|
|
551
|
+
col6: { width: "50%" },
|
|
552
|
+
col7: { width: "58.33%" },
|
|
553
|
+
col8: { width: "66.66%" },
|
|
554
|
+
col9: { width: "75%" },
|
|
555
|
+
col10: { width: "83.33%" },
|
|
556
|
+
col11: { width: "91.66%" },
|
|
557
|
+
col12: { width: "100%" }
|
|
558
|
+
});
|
|
559
|
+
var Container = ({ children, style }) => {
|
|
560
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.container, style] }, children);
|
|
561
|
+
};
|
|
562
|
+
var Row = ({ children, style }) => {
|
|
563
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.row, style] }, children);
|
|
564
|
+
};
|
|
565
|
+
var Col1 = ({ children, style }) => {
|
|
566
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col1, style] }, children);
|
|
567
|
+
};
|
|
568
|
+
var Col2 = ({ children, style }) => {
|
|
569
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col2, style] }, children);
|
|
570
|
+
};
|
|
571
|
+
var Col3 = ({ children, style }) => {
|
|
572
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col3, style] }, children);
|
|
573
|
+
};
|
|
574
|
+
var Col4 = ({ children, style }) => {
|
|
575
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col4, style] }, children);
|
|
576
|
+
};
|
|
577
|
+
var Col5 = ({ children, style }) => {
|
|
578
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col5, style] }, children);
|
|
579
|
+
};
|
|
580
|
+
var Col6 = ({ children, style }) => {
|
|
581
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col6, style] }, children);
|
|
582
|
+
};
|
|
583
|
+
var Col7 = ({ children, style }) => {
|
|
584
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col7, style] }, children);
|
|
585
|
+
};
|
|
586
|
+
var Col8 = ({ children, style }) => {
|
|
587
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col8, style] }, children);
|
|
588
|
+
};
|
|
589
|
+
var Col9 = ({ children, style }) => {
|
|
590
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col9, style] }, children);
|
|
591
|
+
};
|
|
592
|
+
var Col10 = ({ children, style }) => {
|
|
593
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col10, style] }, children);
|
|
594
|
+
};
|
|
595
|
+
var Col11 = ({ children, style }) => {
|
|
596
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col11, style] }, children);
|
|
597
|
+
};
|
|
598
|
+
var Col12 = ({ children, style }) => {
|
|
599
|
+
return /* @__PURE__ */ import_react6.default.createElement(import_renderer6.View, { style: [styles6.col, styles6.col12, style] }, children);
|
|
600
|
+
};
|
|
601
|
+
|
|
602
|
+
// src/components/core/QR.tsx
|
|
603
|
+
var import_react7 = __toESM(require("react"), 1);
|
|
604
|
+
var import_renderer7 = require("@react-pdf/renderer");
|
|
605
|
+
var import_react8 = require("react");
|
|
606
|
+
|
|
607
|
+
// src/components/core/QRGenerator.tsx
|
|
608
|
+
var import_qrcode = __toESM(require("qrcode"), 1);
|
|
609
|
+
var generateQRAsBase64 = async ({
|
|
610
|
+
value,
|
|
611
|
+
size = 150,
|
|
612
|
+
colorDark = "#000000",
|
|
613
|
+
colorLight = "#ffffff",
|
|
614
|
+
margin = 0,
|
|
615
|
+
errorCorrectionLevel = "M"
|
|
616
|
+
}) => {
|
|
617
|
+
try {
|
|
618
|
+
const options = {
|
|
619
|
+
errorCorrectionLevel,
|
|
620
|
+
type: "image/png",
|
|
621
|
+
quality: 0.92,
|
|
622
|
+
margin,
|
|
623
|
+
color: {
|
|
624
|
+
dark: colorDark,
|
|
625
|
+
light: colorLight
|
|
626
|
+
},
|
|
627
|
+
width: size
|
|
628
|
+
};
|
|
629
|
+
const qrDataUrl = import_qrcode.default.toDataURL(value, options);
|
|
630
|
+
return qrDataUrl;
|
|
631
|
+
} catch (error) {
|
|
632
|
+
console.error("Error generando QR:", error);
|
|
633
|
+
return "";
|
|
634
|
+
}
|
|
635
|
+
};
|
|
636
|
+
var addLogoToQR = async (qrDataUrl, logoUrl, logoWidth, logoHeight) => {
|
|
637
|
+
return new Promise((resolve) => {
|
|
638
|
+
if (!qrDataUrl || !logoUrl) {
|
|
639
|
+
resolve(qrDataUrl);
|
|
640
|
+
return;
|
|
641
|
+
}
|
|
642
|
+
try {
|
|
643
|
+
const canvas = document.createElement("canvas");
|
|
644
|
+
const ctx = canvas.getContext("2d");
|
|
645
|
+
if (!ctx) {
|
|
646
|
+
resolve(qrDataUrl);
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
const qrImage = new Image();
|
|
650
|
+
qrImage.crossOrigin = "anonymous";
|
|
651
|
+
qrImage.onload = () => {
|
|
652
|
+
canvas.width = qrImage.width;
|
|
653
|
+
canvas.height = qrImage.height;
|
|
654
|
+
ctx.drawImage(qrImage, 0, 0, canvas.width, canvas.height);
|
|
655
|
+
const logoImage = new Image();
|
|
656
|
+
logoImage.crossOrigin = "anonymous";
|
|
657
|
+
logoImage.onload = () => {
|
|
658
|
+
const x = (canvas.width - logoWidth) / 2;
|
|
659
|
+
const y = (canvas.height - logoHeight) / 2;
|
|
660
|
+
ctx.fillStyle = "#FFFFFF";
|
|
661
|
+
ctx.fillRect(x - 5, y - 5, logoWidth + 10, logoHeight + 10);
|
|
662
|
+
ctx.drawImage(logoImage, x, y, logoWidth, logoHeight);
|
|
663
|
+
const finalQrDataUrl = canvas.toDataURL("image/png");
|
|
664
|
+
resolve(finalQrDataUrl);
|
|
665
|
+
};
|
|
666
|
+
logoImage.onerror = () => {
|
|
667
|
+
console.error("Error cargando el logo");
|
|
668
|
+
resolve(qrDataUrl);
|
|
669
|
+
};
|
|
670
|
+
logoImage.src = logoUrl;
|
|
671
|
+
};
|
|
672
|
+
qrImage.onerror = () => {
|
|
673
|
+
console.error("Error cargando el QR");
|
|
674
|
+
resolve("");
|
|
675
|
+
};
|
|
676
|
+
qrImage.src = qrDataUrl;
|
|
677
|
+
} catch (error) {
|
|
678
|
+
console.error("Error procesando el QR con logo:", error);
|
|
679
|
+
resolve(qrDataUrl);
|
|
680
|
+
}
|
|
681
|
+
});
|
|
682
|
+
};
|
|
683
|
+
|
|
684
|
+
// src/components/core/QR.tsx
|
|
685
|
+
var styles7 = import_renderer7.StyleSheet.create({
|
|
686
|
+
qrContainer: {
|
|
687
|
+
display: "flex",
|
|
688
|
+
alignItems: "center",
|
|
689
|
+
justifyContent: "center",
|
|
690
|
+
margin: 10
|
|
691
|
+
}
|
|
692
|
+
});
|
|
693
|
+
var errorLevelMap = {
|
|
694
|
+
0: "L",
|
|
695
|
+
1: "M",
|
|
696
|
+
2: "Q",
|
|
697
|
+
3: "H"
|
|
698
|
+
};
|
|
699
|
+
var QR = ({
|
|
700
|
+
value,
|
|
701
|
+
size = 150,
|
|
702
|
+
style,
|
|
703
|
+
colorDark = "#000000",
|
|
704
|
+
colorLight = "#ffffff",
|
|
705
|
+
margin = 0,
|
|
706
|
+
logo = "",
|
|
707
|
+
logoWidth = 30,
|
|
708
|
+
logoHeight = 30,
|
|
709
|
+
errorCorrectionLevel = "M"
|
|
710
|
+
}) => {
|
|
711
|
+
const [qrDataUrl, setQrDataUrl] = (0, import_react8.useState)("");
|
|
712
|
+
(0, import_react8.useEffect)(() => {
|
|
713
|
+
const generateQR = async () => {
|
|
714
|
+
try {
|
|
715
|
+
const baseQrDataUrl = await generateQRAsBase64({
|
|
716
|
+
value,
|
|
717
|
+
size,
|
|
718
|
+
colorDark,
|
|
719
|
+
colorLight,
|
|
720
|
+
margin,
|
|
721
|
+
errorCorrectionLevel: typeof errorCorrectionLevel === "number" ? errorLevelMap[errorCorrectionLevel] || "M" : errorCorrectionLevel
|
|
722
|
+
});
|
|
723
|
+
if (logo && logoWidth && logoHeight) {
|
|
724
|
+
const qrWithLogo = await addLogoToQR(baseQrDataUrl, logo, logoWidth, logoHeight);
|
|
725
|
+
setQrDataUrl(qrWithLogo);
|
|
726
|
+
} else {
|
|
727
|
+
setQrDataUrl(baseQrDataUrl);
|
|
728
|
+
}
|
|
729
|
+
} catch (error) {
|
|
730
|
+
console.error("Error generando QR:", error);
|
|
731
|
+
const fallbackUrl2 = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(
|
|
732
|
+
value
|
|
733
|
+
)}&size=${size}x${size}&color=${encodeURIComponent(colorDark.replace("#", ""))}&bgcolor=${encodeURIComponent(
|
|
734
|
+
colorLight.replace("#", "")
|
|
735
|
+
)}`;
|
|
736
|
+
setQrDataUrl(fallbackUrl2);
|
|
737
|
+
}
|
|
738
|
+
};
|
|
739
|
+
generateQR();
|
|
740
|
+
}, [value, size, colorDark, colorLight, margin, logo, logoWidth, logoHeight, errorCorrectionLevel]);
|
|
741
|
+
const fallbackUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(
|
|
742
|
+
value
|
|
743
|
+
)}&size=${size}x${size}`;
|
|
744
|
+
return /* @__PURE__ */ import_react7.default.createElement(import_renderer7.View, { style: [styles7.qrContainer, style] }, /* @__PURE__ */ import_react7.default.createElement(import_renderer7.Image, { src: qrDataUrl || fallbackUrl, style: { width: size, height: size } }));
|
|
745
|
+
};
|
|
746
|
+
var QR_default = QR;
|
|
747
|
+
|
|
748
|
+
// src/components/core/Lista.tsx
|
|
749
|
+
var import_react9 = __toESM(require("react"), 1);
|
|
750
|
+
var import_renderer8 = require("@react-pdf/renderer");
|
|
751
|
+
var styles8 = import_renderer8.StyleSheet.create({
|
|
752
|
+
ul: {
|
|
753
|
+
marginBottom: 10,
|
|
754
|
+
paddingLeft: 15
|
|
755
|
+
},
|
|
756
|
+
ol: {
|
|
757
|
+
marginBottom: 10,
|
|
758
|
+
paddingLeft: 15
|
|
759
|
+
},
|
|
760
|
+
li: {
|
|
761
|
+
marginBottom: 5,
|
|
762
|
+
flexDirection: "row"
|
|
763
|
+
},
|
|
764
|
+
bulletPoint: {
|
|
765
|
+
width: 15,
|
|
766
|
+
marginRight: 5,
|
|
767
|
+
fontSize: 12
|
|
768
|
+
},
|
|
769
|
+
itemContent: {
|
|
770
|
+
flex: 1
|
|
771
|
+
}
|
|
772
|
+
});
|
|
773
|
+
var getBulletPoint = (type = "disc") => {
|
|
774
|
+
switch (type) {
|
|
775
|
+
case "circle":
|
|
776
|
+
return "\u25CB";
|
|
777
|
+
case "square":
|
|
778
|
+
return "\u25A0";
|
|
779
|
+
case "disc":
|
|
780
|
+
default:
|
|
781
|
+
return "\u2022";
|
|
782
|
+
}
|
|
783
|
+
};
|
|
784
|
+
var getOrderedMarker = (index, type = "decimal", start = 1) => {
|
|
785
|
+
const actualIndex = start + index - 1;
|
|
786
|
+
switch (type) {
|
|
787
|
+
case "lower-alpha":
|
|
788
|
+
return String.fromCharCode(97 + actualIndex % 26) + ".";
|
|
789
|
+
case "upper-alpha":
|
|
790
|
+
return String.fromCharCode(65 + actualIndex % 26) + ".";
|
|
791
|
+
case "lower-roman":
|
|
792
|
+
return toRoman(actualIndex).toLowerCase() + ".";
|
|
793
|
+
case "upper-roman":
|
|
794
|
+
return toRoman(actualIndex) + ".";
|
|
795
|
+
case "decimal":
|
|
796
|
+
default:
|
|
797
|
+
return actualIndex + ".";
|
|
798
|
+
}
|
|
799
|
+
};
|
|
800
|
+
var toRoman = (num) => {
|
|
801
|
+
if (num <= 0 || num > 3999) return String(num);
|
|
802
|
+
const romanNumerals = [
|
|
803
|
+
["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"],
|
|
804
|
+
["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"],
|
|
805
|
+
["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"],
|
|
806
|
+
["", "M", "MM", "MMM"]
|
|
807
|
+
];
|
|
808
|
+
return romanNumerals[3][Math.floor(num / 1e3)] + romanNumerals[2][Math.floor(num % 1e3 / 100)] + romanNumerals[1][Math.floor(num % 100 / 10)] + romanNumerals[0][num % 10];
|
|
809
|
+
};
|
|
810
|
+
var UL = ({ children, style, type = "disc" }) => {
|
|
811
|
+
const childrenWithBullets = import_react9.default.Children.map(children, (child, index) => {
|
|
812
|
+
if (import_react9.default.isValidElement(child)) {
|
|
813
|
+
return import_react9.default.cloneElement(child, {
|
|
814
|
+
bulletType: type,
|
|
815
|
+
isOrdered: false,
|
|
816
|
+
index: index + 1
|
|
817
|
+
});
|
|
818
|
+
}
|
|
819
|
+
return child;
|
|
820
|
+
});
|
|
821
|
+
return /* @__PURE__ */ import_react9.default.createElement(import_renderer8.View, { style: [styles8.ul, style] }, childrenWithBullets);
|
|
822
|
+
};
|
|
823
|
+
var OL = ({ children, style, type = "decimal", start = 1 }) => {
|
|
824
|
+
const childrenWithNumbers = import_react9.default.Children.map(children, (child, index) => {
|
|
825
|
+
if (import_react9.default.isValidElement(child)) {
|
|
826
|
+
return import_react9.default.cloneElement(child, {
|
|
827
|
+
bulletType: type,
|
|
828
|
+
isOrdered: true,
|
|
829
|
+
index: index + 1,
|
|
830
|
+
start
|
|
831
|
+
});
|
|
832
|
+
}
|
|
833
|
+
return child;
|
|
834
|
+
});
|
|
835
|
+
return /* @__PURE__ */ import_react9.default.createElement(import_renderer8.View, { style: [styles8.ol, style] }, childrenWithNumbers);
|
|
836
|
+
};
|
|
837
|
+
var LI = ({ children, style, bulletType = "disc", isOrdered = false, index = 1, start = 1, value }) => {
|
|
838
|
+
let marker;
|
|
839
|
+
if (isOrdered) {
|
|
840
|
+
const actualIndex = value !== void 0 ? Number(value) : index;
|
|
841
|
+
marker = getOrderedMarker(actualIndex, bulletType, start);
|
|
842
|
+
} else {
|
|
843
|
+
marker = getBulletPoint(bulletType);
|
|
844
|
+
}
|
|
845
|
+
return /* @__PURE__ */ import_react9.default.createElement(import_renderer8.View, { style: [styles8.li, style] }, /* @__PURE__ */ import_react9.default.createElement(import_renderer8.Text, { style: styles8.bulletPoint }, marker), /* @__PURE__ */ import_react9.default.createElement(import_renderer8.View, { style: styles8.itemContent }, typeof children === "string" ? /* @__PURE__ */ import_react9.default.createElement(import_renderer8.Text, null, children) : children));
|
|
846
|
+
};
|
|
847
|
+
|
|
848
|
+
// src/components/core/index.tsx
|
|
849
|
+
var import_renderer10 = require("@react-pdf/renderer");
|
|
850
|
+
|
|
851
|
+
// src/functions/decodeBase64Pdf.ts
|
|
852
|
+
var decodeBase64Pdf = (base64, fileName) => {
|
|
853
|
+
const byteCharacters = atob(base64);
|
|
854
|
+
const byteNumbers = new Array(byteCharacters.length);
|
|
855
|
+
for (let i = 0; i < byteCharacters.length; i++) {
|
|
856
|
+
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
857
|
+
}
|
|
858
|
+
const byteArray = new Uint8Array(byteNumbers);
|
|
859
|
+
const blob = new Blob([byteArray], { type: "application/pdf" });
|
|
860
|
+
const blobUrl = URL.createObjectURL(blob);
|
|
861
|
+
if (document === void 0) {
|
|
862
|
+
console.error("document is undefined, only works in browser context");
|
|
863
|
+
return;
|
|
864
|
+
}
|
|
865
|
+
const link = document.createElement("a");
|
|
866
|
+
link.href = blobUrl;
|
|
867
|
+
link.download = fileName;
|
|
868
|
+
document.body.appendChild(link);
|
|
869
|
+
link.click();
|
|
870
|
+
document.body.removeChild(link);
|
|
871
|
+
window.open(blobUrl, "_blank");
|
|
872
|
+
setTimeout(() => {
|
|
873
|
+
URL.revokeObjectURL(blobUrl);
|
|
874
|
+
}, 100);
|
|
875
|
+
};
|
|
876
|
+
var decodeBase64Pdf_default = decodeBase64Pdf;
|
|
877
|
+
|
|
878
|
+
// src/functions/generatePDF.ts
|
|
879
|
+
var import_renderer9 = require("@react-pdf/renderer");
|
|
880
|
+
var import_react10 = require("react");
|
|
881
|
+
var generatePDF = async ({ template: Template, data }) => {
|
|
882
|
+
try {
|
|
883
|
+
if (!Template) {
|
|
884
|
+
throw new Error("Template not provided");
|
|
885
|
+
}
|
|
886
|
+
const MyDocument = (0, import_react10.createElement)(Template, { data });
|
|
887
|
+
const stream = await (0, import_renderer9.renderToStream)(MyDocument);
|
|
888
|
+
const base64String = await new Promise((resolve, reject) => {
|
|
889
|
+
const chunks = [];
|
|
890
|
+
stream.on("data", (chunk) => chunks.push(chunk));
|
|
891
|
+
stream.on("end", () => resolve(Buffer.concat(chunks).toString("base64")));
|
|
892
|
+
stream.on("error", (error) => reject(error));
|
|
893
|
+
});
|
|
894
|
+
return base64String;
|
|
895
|
+
} catch (error) {
|
|
896
|
+
throw new Error("Error generating PDF: " + (error instanceof Error ? error.message : "Unknown error"));
|
|
897
|
+
}
|
|
898
|
+
};
|
|
899
|
+
var generatePDF_default = generatePDF;
|
|
900
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
901
|
+
0 && (module.exports = {
|
|
902
|
+
A,
|
|
903
|
+
BR,
|
|
904
|
+
Blockquote,
|
|
905
|
+
Center,
|
|
906
|
+
Col1,
|
|
907
|
+
Col10,
|
|
908
|
+
Col11,
|
|
909
|
+
Col12,
|
|
910
|
+
Col2,
|
|
911
|
+
Col3,
|
|
912
|
+
Col4,
|
|
913
|
+
Col5,
|
|
914
|
+
Col6,
|
|
915
|
+
Col7,
|
|
916
|
+
Col8,
|
|
917
|
+
Col9,
|
|
918
|
+
Container,
|
|
919
|
+
Em,
|
|
920
|
+
Font,
|
|
921
|
+
H1,
|
|
922
|
+
H2,
|
|
923
|
+
H3,
|
|
924
|
+
H4,
|
|
925
|
+
H5,
|
|
926
|
+
H6,
|
|
927
|
+
Header,
|
|
928
|
+
Img,
|
|
929
|
+
LI,
|
|
930
|
+
LayoutPDF,
|
|
931
|
+
Left,
|
|
932
|
+
Mark,
|
|
933
|
+
OL,
|
|
934
|
+
P,
|
|
935
|
+
QR,
|
|
936
|
+
Right,
|
|
937
|
+
Row,
|
|
938
|
+
Small,
|
|
939
|
+
Span,
|
|
940
|
+
Strong,
|
|
941
|
+
StyleSheet,
|
|
942
|
+
Table,
|
|
943
|
+
Tbody,
|
|
944
|
+
Td,
|
|
945
|
+
Text,
|
|
946
|
+
Th,
|
|
947
|
+
Thead,
|
|
948
|
+
Tr,
|
|
949
|
+
U,
|
|
950
|
+
UL,
|
|
951
|
+
View,
|
|
952
|
+
decodeBase64Pdf,
|
|
953
|
+
generatePDF
|
|
954
|
+
});
|