react-pdf-levelup 3.2.10 → 3.3.2

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 CHANGED
@@ -2,11 +2,19 @@
2
2
  <img src="https://genarogg.github.io/media/react-pdf-levelup/logo-de-react-pdf-levelup.png" alt="react-pdf-levelup logo" width="160" />
3
3
  </p>
4
4
 
5
+ <h3 style="text-transform: uppercase">
6
+ <strong style="color: red">📢 Esta librería ha cambiado de nombre a
7
+
8
+ <a href="https://www.npmjs.com/package/@react-pdf-levelup/core">@react-pdf-levelup/core</a></strong>
9
+ </h3>
10
+
11
+
5
12
  # react-pdf-levelup
6
13
 
7
14
  Generador de PDFs dinámicos con React. Esta herramienta te permite crear plantillas PDF con componentes JSX personalizados y previsualizarlas en tiempo real dentro de una aplicación web. Ideal para etiquetas, facturas, reportes, certificados, tablas y más.
8
15
 
9
- # 🌐 **Playground en vivo:**
16
+ # 🌐 **Playground en vivo:**
17
+
10
18
  [https://react-pdf-levelup.nimbux.cloud](https://react-pdf-levelup.nimbux.cloud)
11
19
  or
12
20
  [https://react-pdf-levelup.nimbux.cloud](https://react-pdf-levelup.nimbux.cloud)
@@ -34,18 +42,19 @@ npm install react-pdf-levelup
34
42
  Genera un PDF en formato base64 a partir de un componente de React.
35
43
 
36
44
  ```typescript
37
- import { generatePDF } from 'react-pdf-levelup';
45
+ import { generatePDF } from "react-pdf-levelup";
38
46
 
39
47
  const pdfBase64 = await generatePDF({
40
48
  template: MyPDFTemplate,
41
49
  data: {
42
- title: 'Mi Documento',
43
- items: ['Item 1', 'Item 2', 'Item 3']
44
- }
50
+ title: "Mi Documento",
51
+ items: ["Item 1", "Item 2", "Item 3"],
52
+ },
45
53
  });
46
54
  ```
47
55
 
48
56
  **Parámetros:**
57
+
49
58
  - `template`: Componente de React que define la estructura del PDF
50
59
  - `data`: Datos opcionales que se pasarán al template
51
60
 
@@ -56,20 +65,22 @@ const pdfBase64 = await generatePDF({
56
65
  Decodifica un PDF en base64 y permite descargarlo o abrirlo en una nueva pestaña.
57
66
 
58
67
  ```typescript
59
- import { decodeBase64Pdf } from 'react-pdf-levelup';
68
+ import { decodeBase64Pdf } from "react-pdf-levelup";
60
69
 
61
70
  // Después de generar el PDF
62
71
  const pdfBase64 = await generatePDF({ template: MyTemplate });
63
72
 
64
73
  // Descargar y abrir el PDF
65
- decodeBase64Pdf(pdfBase64, 'mi-documento.pdf');
74
+ decodeBase64Pdf(pdfBase64, "mi-documento.pdf");
66
75
  ```
67
76
 
68
77
  **Parámetros:**
78
+
69
79
  - `base64`: String del PDF en formato base64
70
80
  - `fileName`: Nombre del archivo para la descarga
71
81
 
72
82
  **Funcionalidad:**
83
+
73
84
  - Descarga automática del archivo PDF
74
85
  - Abre el PDF en una nueva pestaña del navegador
75
86
  - Limpia automáticamente los recursos de memoria
@@ -138,10 +149,10 @@ const handleGeneratePDF = async () => {
138
149
  ]
139
150
  }
140
151
  });
141
-
152
+
142
153
  // Descargar y abrir el PDF
143
154
  decodeBase64Pdf(pdfBase64, 'lista-tareas.pdf');
144
-
155
+
145
156
  } catch (error) {
146
157
  console.error('Error generando PDF:', error);
147
158
  }
@@ -175,12 +186,12 @@ const InvoiceTemplate = ({ data }) => (
175
186
  <Text style={styles.companyName}>{data.company}</Text>
176
187
  <Text>Factura #{data.invoiceNumber}</Text>
177
188
  </View>
178
-
189
+
179
190
  <View style={styles.customerInfo}>
180
191
  <Text>Cliente: {data.customer.name}</Text>
181
192
  <Text>Email: {data.customer.email}</Text>
182
193
  </View>
183
-
194
+
184
195
  <View style={styles.itemsTable}>
185
196
  {data.items.map((item, index) => (
186
197
  <View key={index} style={styles.tableRow}>
@@ -190,7 +201,7 @@ const InvoiceTemplate = ({ data }) => (
190
201
  </View>
191
202
  ))}
192
203
  </View>
193
-
204
+
194
205
  <View style={styles.total}>
195
206
  <Text>Total: ${data.total}</Text>
196
207
  </View>
@@ -208,16 +219,15 @@ const handlePDFGeneration = async () => {
208
219
  try {
209
220
  const pdfBase64 = await generatePDF({
210
221
  template: MyTemplate,
211
- data: myData
222
+ data: myData,
212
223
  });
213
-
214
- decodeBase64Pdf(pdfBase64, 'documento.pdf');
215
-
224
+
225
+ decodeBase64Pdf(pdfBase64, "documento.pdf");
216
226
  } catch (error) {
217
- if (error.message.includes('Template not provided')) {
218
- console.error('Error: No se proporcionó un template válido');
227
+ if (error.message.includes("Template not provided")) {
228
+ console.error("Error: No se proporcionó un template válido");
219
229
  } else {
220
- console.error('Error inesperado:', error.message);
230
+ console.error("Error inesperado:", error.message);
221
231
  }
222
232
  }
223
233
  };
@@ -229,11 +239,11 @@ const handlePDFGeneration = async () => {
229
239
  const generatePDFOnly = async () => {
230
240
  const pdfBase64 = await generatePDF({
231
241
  template: MyTemplate,
232
- data: myData
242
+ data: myData,
233
243
  });
234
-
244
+
235
245
  // Usar el base64 para otros propósitos (envío por API, almacenamiento, etc.)
236
- console.log('PDF generado:', pdfBase64);
246
+ console.log("PDF generado:", pdfBase64);
237
247
  return pdfBase64;
238
248
  };
239
249
  ```
@@ -241,6 +251,7 @@ const generatePDFOnly = async () => {
241
251
  ## 🛠 Dependencias
242
252
 
243
253
  Esta librería utiliza internamente:
254
+
244
255
  - `@react-pdf/renderer` - Para la generación de PDFs
245
256
  - `react` - Para los componentes JSX
246
257
 
@@ -299,7 +310,13 @@ import path from "path";
299
310
  type ApiResponse = { data?: { pdf?: string } };
300
311
  const ENDPOINT_API = "https://react-pdf-levelup.nimbux.cloud/api";
301
312
 
302
- const petition = async ({ template, data }: { template: string, data: any }): Promise<string> => {
313
+ const petition = async ({
314
+ template,
315
+ data,
316
+ }: {
317
+ template: string;
318
+ data: any;
319
+ }): Promise<string> => {
303
320
  const templatePath = path.join(process.cwd(), "src", "useExample", template);
304
321
  const tsxCode = fs.readFileSync(templatePath, "utf-8");
305
322
  const templateBase64 = Buffer.from(tsxCode, "utf-8").toString("base64");
@@ -309,17 +326,18 @@ const petition = async ({ template, data }: { template: string, data: any }): Pr
309
326
  headers: { "Content-Type": "application/json" },
310
327
  body: JSON.stringify({ template: templateBase64, data }),
311
328
  });
312
- if (!res.ok) throw new Error(`API error (${res.status}): ${await res.text()}`);
313
- const json = await res.json() as ApiResponse;
329
+ if (!res.ok)
330
+ throw new Error(`API error (${res.status}): ${await res.text()}`);
331
+ const json = (await res.json()) as ApiResponse;
314
332
  return json?.data?.pdf ?? "";
315
- }
333
+ };
316
334
 
317
335
  const savePDF = (base64: string) => {
318
336
  const buffer = Buffer.from(base64, "base64");
319
337
  const outputPath = path.join(process.cwd(), "example.pdf");
320
338
  fs.writeFileSync(outputPath, buffer);
321
339
  console.log("PDF guardado:", outputPath);
322
- }
340
+ };
323
341
  ```
324
342
 
325
343
  ### Self‑hosting propio
@@ -1 +1 @@
1
- {"version":3,"sources":["../../frontend/src/functions/decodeBase64Pdf.ts","../../frontend/src/functions/generatePDF.ts","../../frontend/src/components/core/LayoutPDF.tsx","../../frontend/src/components/core/Img.tsx","../../frontend/src/components/core/Position.tsx","../../frontend/src/components/core/Etiquetas.tsx","../../frontend/src/components/core/Tablet.tsx","../../frontend/src/components/core/Grid.tsx","../../frontend/src/components/core/QRGenerator.ts","../../frontend/src/components/core/QR.tsx","../../frontend/src/components/core/QRGeneratorV2.ts","../../frontend/src/components/core/QRV2.tsx","../../frontend/src/components/core/Lista.tsx","../../frontend/src/components/core/ImgBg.tsx"],"names":["decodeBase64Pdf","base64","fileName","byteCharacters","byteNumbers","i","byteArray","blob","blobUrl","link","decodeBase64Pdf_default","generatePDF","Template","data","MyDocument","createElement","stream","renderToStream","resolve","reject","chunks","chunk","error","generatePDF_default","styles","StyleSheet","LayoutPDF","children","size","orientation","backgroundColor","padding","margen","style","pagination","footer","lines","rule","footerHeight","getMargins","pageSize","normalizedSize","safeSize","safeOrientation","safeBackgroundColor","safeMargen","validOrientations","normalizedOrientation","e","transformOrientation","getFooterPosition","pageDimensions","mmToPoints","dimensions","heightInPoints","widthInPoints","pdfOrientation","margins","footerTop","renderGrid","cmToPoints","pageWidth","pageHeight","horizontalLines","verticalLines","jsx","View","jsxs","pageStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","rest","footerStyle","Document","Page","Text","pageNumber","totalPages","LayoutPDF_default","Img","src","Image","Img_default","Left","Right","Center","P","H1","H2","H3","H4","H5","H6","Strong","Em","U","Small","Blockquote","Mark","A","href","Link","BR","HR","Span","Header","fixed","Div","TableContext","createContext","Table","cellHeight","Thead","textAlign","useContext","Tbody","rows","React","count","Fragment","row","idx","Tr","isLastRow","isOdd","elements","child","isLast","width","Th","height","colSpan","propTextAlign","contextTextAlign","finalTextAlign","baseWidth","borders","Td","Container","Row","Col1","Col2","Col3","Col4","Col5","Col6","Col7","Col8","Col9","Col10","Col11","Col12","generateQRAsBase64","value","colorDark","colorLight","margin","errorCorrectionLevel","options","QRCode","addLogoToQR","qrDataUrl","logoUrl","logoWidth","logoHeight","isBrowser","canvas","ctx","ImageConstructor","createCanvas","qrImage","logoImage","x","finalQrDataUrl","err","errorLevelMap","QR","logo","setQrDataUrl","useState","useEffect","baseQrDataUrl","qrWithLogo","fallbackUrl","QR_default","generateQRV2AsBase64","QRCodeStylingConstructor","extraOptions","mod","jsdomName","canvasName","qrCommonName","jsdomMod","canvasMod","qrCommonMod","JSDOM","nodeCanvas","QRCodeStyling","qrOptions","rawData","reader","QRV2","image","dotsOptions","backgroundOptions","imageOptions","cornersSquareOptions","cornersDotOptions","QRV2_default","getBulletPoint","type","getOrderedMarker","index","start","actualIndex","toRoman","num","romanNumerals","UL","childrenWithBullets","OL","childrenWithNumbers","LI","bulletType","isOrdered","marker","ImgBg","opacity","objectFit","objectPosition","ImgBg_default"],"mappings":"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","file":"index.cjs","sourcesContent":["const decodeBase64Pdf = (base64: string, fileName: string) => {\r\n const byteCharacters = atob(base64);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n\r\n if (document === undefined) {\r\n console.error(\"document is undefined, only works in browser context\");\r\n return;\r\n }\r\n\r\n // Crear un enlace para descargar el archivo\r\n const link = document.createElement('a');\r\n link.href = blobUrl;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n\r\n // Abrir el PDF en una nueva pestaña\r\n window.open(blobUrl, '_blank');\r\n\r\n // Revocar el objeto URL después de un tiempo\r\n setTimeout(() => {\r\n URL.revokeObjectURL(blobUrl);\r\n }, 100);\r\n};\r\n\r\nexport default decodeBase64Pdf;","import { renderToStream } from \"@react-pdf/renderer\";\r\nimport { createElement } from \"react\";\r\n\r\ninterface PDFData {\r\n template: React.ElementType;\r\n data?: any;\r\n}\r\n\r\nconst generatePDF = async ({ template: Template, data }: PDFData): Promise<string> => {\r\n try {\r\n if (!Template) {\r\n throw new Error(\"Template not provided\");\r\n }\r\n\r\n // Crear el componente con los datos\r\n const MyDocument = createElement(Template, { data });\r\n\r\n // Renderizar a stream\r\n const stream = await renderToStream(MyDocument);\r\n\r\n const base64String: string = await new Promise((resolve, reject) => {\r\n const chunks: Buffer[] = [];\r\n stream.on(\"data\", (chunk) => chunks.push(chunk));\r\n stream.on(\"end\", () => resolve(Buffer.concat(chunks).toString(\"base64\")));\r\n stream.on(\"error\", (error) => reject(error));\r\n });\r\n\r\n return base64String;\r\n } catch (error) {\r\n throw new Error(\"Error generating PDF: \" + (error instanceof Error ? error.message : \"Unknown error\"));\r\n }\r\n};\r\n\r\nexport default generatePDF;\r\n","import React from \"react\"\r\nimport { Page, Document, StyleSheet, Text, View } from \"@react-pdf/renderer\"\r\n\r\nconst styles = StyleSheet.create({\r\n page: {\r\n backgroundColor: \"white\",\r\n padding: 30,\r\n fontFamily: \"Helvetica\",\r\n fontSize: 14,\r\n },\r\n footer: {\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n textAlign: \"center\",\r\n }\r\n})\r\n\r\ninterface LayoutPDFProps {\r\n children: React.ReactNode\r\n size?: string\r\n orientation?: \"vertical\" | \"horizontal\" | \"h\" | \"v\" | \"portrait\" | \"landscape\"\r\n backgroundColor?: string\r\n padding?: number\r\n margen?: \"apa\" | \"normal\" | \"estrecho\" | \"ancho\"\r\n style?: any\r\n pagination?: boolean\r\n footer?: React.ReactNode\r\n lines?: number\r\n rule?: boolean\r\n}\r\n\r\nconst LayoutPDF: React.FC<LayoutPDFProps> = ({\r\n children,\r\n size = \"A4\",\r\n orientation = \"vertical\",\r\n backgroundColor = \"white\",\r\n padding = 30,\r\n margen = \"normal\",\r\n style = {},\r\n pagination = true,\r\n footer,\r\n lines = footer ? 2 : 1,\r\n rule = false,\r\n}) => {\r\n // Calculate footer height based on number of lines\r\n // Each line is approximately 20 points (considering font size and line height)\r\n const LINE_HEIGHT = 20\r\n const FOOTER_PADDING = 10\r\n const footerHeight = (lines * LINE_HEIGHT) + FOOTER_PADDING\r\n\r\n // Función para obtener márgenes según las normas APA y otros estándares\r\n const getMargins = (margen: string, pageSize: string) => {\r\n const normalizedSize = pageSize.toUpperCase()\r\n\r\n switch (margen) {\r\n case \"apa\":\r\n // Normas APA: 1 pulgada en todos los lados (72 puntos)\r\n if (normalizedSize === \"LETTER\" || normalizedSize === \"LEGAL\") {\r\n return {\r\n paddingTop: 72,\r\n paddingRight: 72,\r\n paddingBottom: 72,\r\n paddingLeft: 72\r\n }\r\n }\r\n // Para otros tamaños, usar equivalente proporcional\r\n return {\r\n paddingTop: 72,\r\n paddingRight: 72,\r\n paddingBottom: 72,\r\n paddingLeft: 72\r\n }\r\n\r\n case \"estrecho\":\r\n return {\r\n paddingTop: 36,\r\n paddingRight: 36,\r\n paddingBottom: 36,\r\n paddingLeft: 36\r\n }\r\n\r\n case \"ancho\":\r\n return {\r\n paddingTop: 108,\r\n paddingRight: 108,\r\n paddingBottom: 108,\r\n paddingLeft: 108\r\n }\r\n\r\n case \"normal\":\r\n default:\r\n return {\r\n paddingTop: padding,\r\n paddingRight: padding,\r\n paddingBottom: padding,\r\n paddingLeft: padding\r\n }\r\n }\r\n }\r\n\r\n // Validar y sanitizar props\r\n let safeSize = size\r\n let safeOrientation = orientation\r\n let safeBackgroundColor = backgroundColor\r\n\r\n let safeMargen = margen\r\n\r\n try {\r\n // Validar size\r\n const validSizes = [\"A0\", \"A1\", \"A2\", \"A3\", \"A4\", \"A5\", \"A6\", \"A7\", \"A8\", \"A9\", \"LETTER\", \"LEGAL\", \"TABLOID\"]\r\n if (typeof size === \"string\" && !validSizes.includes(size.toUpperCase())) {\r\n console.warn(`Invalid page size: ${size}. Using A4 as default.`)\r\n safeSize = \"A4\"\r\n }\r\n\r\n // Validar orientation\r\n const validOrientations = [\"vertical\", \"horizontal\", \"portrait\", \"landscape\", \"h\", \"v\"]\r\n const normalizedOrientation = typeof orientation === \"string\" ? orientation.toLowerCase() : \"vertical\"\r\n if (!validOrientations.includes(normalizedOrientation)) {\r\n console.warn(`Invalid orientation: ${orientation}. Using vertical as default.`)\r\n safeOrientation = \"vertical\"\r\n } else {\r\n // Mantener el valor original si es válido, respetando alias\r\n safeOrientation = orientation\r\n }\r\n\r\n // Validar backgroundColor\r\n if (typeof backgroundColor !== \"string\") {\r\n console.warn(`Invalid background color: ${backgroundColor}. Using white as default.`)\r\n safeBackgroundColor = \"white\"\r\n }\r\n\r\n // Validar margen\r\n const validMargins = [\"apa\", \"normal\", \"estrecho\", \"ancho\"]\r\n if (!validMargins.includes(margen)) {\r\n console.warn(`Invalid margin type: ${margen}. Using normal as default.`)\r\n safeMargen = \"normal\"\r\n }\r\n\r\n // Validar lines\r\n if (typeof lines !== \"number\" || lines < 1) {\r\n console.warn(`Invalid lines value: ${lines}. Using 1 as default.`)\r\n\r\n }\r\n } catch (e) {\r\n console.warn(\"Error processing props in LayoutPDF:\", e)\r\n }\r\n\r\n // Transform orientation from \"vertical\"/\"horizontal\" to \"portrait\"/\"landscape\"\r\n const transformOrientation = (orientation: \"vertical\" | \"horizontal\" | \"h\" | \"v\" | \"portrait\" | \"landscape\"): \"portrait\" | \"landscape\" => {\r\n switch (orientation) {\r\n case \"vertical\":\r\n case \"portrait\":\r\n case \"v\":\r\n return \"portrait\"\r\n case \"horizontal\":\r\n case \"landscape\":\r\n case \"h\":\r\n return \"landscape\"\r\n default:\r\n console.warn(`Unrecognized orientation: ${orientation}. Using portrait as default.`)\r\n return \"portrait\"\r\n }\r\n }\r\n\r\n // Function to calculate footer position based on size and orientation\r\n const getFooterPosition = (pageSize: string, orientation: \"portrait\" | \"landscape\", footerHeight: number) => {\r\n // Dimensions in millimeters according to ISO 216 standard\r\n const pageDimensions: Record<string, { width: number; height: number }> = {\r\n A0: { width: 841, height: 1189 },\r\n A1: { width: 594, height: 841 },\r\n A2: { width: 420, height: 594 },\r\n A3: { width: 297, height: 420 },\r\n A4: { width: 210, height: 297 },\r\n A5: { width: 148, height: 210 },\r\n A6: { width: 105, height: 148 },\r\n A7: { width: 74, height: 105 },\r\n A8: { width: 52, height: 74 },\r\n A9: { width: 37, height: 52 },\r\n LETTER: { width: 216, height: 279 },\r\n LEGAL: { width: 216, height: 356 },\r\n TABLOID: { width: 279, height: 432 },\r\n }\r\n\r\n // Convert mm to points (1mm = 2.834645669 points)\r\n const mmToPoints = 2.834645669\r\n\r\n const dimensions = pageDimensions[pageSize.toUpperCase()]\r\n if (!dimensions) {\r\n // A4 default in points\r\n return orientation === \"landscape\" ? 595 - footerHeight - 10 : 842 - footerHeight - 10\r\n }\r\n\r\n const heightInPoints = dimensions.height * mmToPoints\r\n const widthInPoints = dimensions.width * mmToPoints\r\n\r\n // Subtract footer height and additional margin\r\n return orientation === \"landscape\"\r\n ? widthInPoints - footerHeight - 10\r\n : heightInPoints - footerHeight - 10\r\n }\r\n\r\n const pdfOrientation = transformOrientation(safeOrientation)\r\n\r\n // Obtener márgenes según el tipo seleccionado\r\n const margins = getMargins(safeMargen, safeSize)\r\n\r\n // Calculate footer position based on calculated footer height\r\n const footerTop = getFooterPosition(safeSize, pdfOrientation, footerHeight)\r\n\r\n // Function to render grid (ruler)\r\n const renderGrid = () => {\r\n if (!rule) return null\r\n\r\n // 1 cm = 28.3465 points\r\n const cmToPoints = 28.3465\r\n\r\n // Get page dimensions in points\r\n const pageDimensions: Record<string, { width: number; height: number }> = {\r\n A0: { width: 841 * 2.834645669, height: 1189 * 2.834645669 },\r\n A1: { width: 594 * 2.834645669, height: 841 * 2.834645669 },\r\n A2: { width: 420 * 2.834645669, height: 594 * 2.834645669 },\r\n A3: { width: 297 * 2.834645669, height: 420 * 2.834645669 },\r\n A4: { width: 210 * 2.834645669, height: 297 * 2.834645669 },\r\n A5: { width: 148 * 2.834645669, height: 210 * 2.834645669 },\r\n A6: { width: 105 * 2.834645669, height: 148 * 2.834645669 },\r\n A7: { width: 74 * 2.834645669, height: 105 * 2.834645669 },\r\n A8: { width: 52 * 2.834645669, height: 74 * 2.834645669 },\r\n A9: { width: 37 * 2.834645669, height: 52 * 2.834645669 },\r\n LETTER: { width: 216 * 2.834645669, height: 279 * 2.834645669 },\r\n LEGAL: { width: 216 * 2.834645669, height: 356 * 2.834645669 },\r\n TABLOID: { width: 279 * 2.834645669, height: 432 * 2.834645669 },\r\n }\r\n\r\n const dimensions = pageDimensions[safeSize.toUpperCase()] || pageDimensions.A4\r\n const pageWidth = pdfOrientation === \"landscape\" ? dimensions.height : dimensions.width\r\n const pageHeight = pdfOrientation === \"landscape\" ? dimensions.width : dimensions.height\r\n\r\n const horizontalLines = []\r\n const verticalLines = []\r\n\r\n // Generate horizontal lines (every cm)\r\n for (let i = 0; i <= Math.ceil(pageHeight / cmToPoints); i++) {\r\n horizontalLines.push(\r\n <View\r\n key={`h-${i}`}\r\n style={{\r\n position: \"absolute\",\r\n top: i * cmToPoints,\r\n left: 0,\r\n right: 0,\r\n height: i % 5 === 0 ? 1 : 0.5,\r\n backgroundColor: i % 5 === 0 ? \"rgba(255, 0, 0, 0.8)\" : \"rgba(100, 100, 100, 0.5)\",\r\n }}\r\n />\r\n )\r\n }\r\n\r\n // Generate vertical lines (every cm)\r\n for (let i = 0; i <= Math.ceil(pageWidth / cmToPoints); i++) {\r\n verticalLines.push(\r\n <View\r\n key={`v-${i}`}\r\n style={{\r\n position: \"absolute\",\r\n left: i * cmToPoints,\r\n top: 0,\r\n bottom: 0,\r\n width: i % 5 === 0 ? 1 : 0.5,\r\n backgroundColor: i % 5 === 0 ? \"rgba(255, 0, 0, 0.8)\" : \"rgba(100, 100, 100, 0.5)\",\r\n }}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <View style={{ position: \"absolute\", top: 0, left: 0, right: 0, bottom: 0 }} fixed>\r\n {horizontalLines}\r\n {verticalLines}\r\n </View>\r\n )\r\n }\r\n\r\n const pageStyle = {\r\n ...styles.page,\r\n backgroundColor: safeBackgroundColor,\r\n paddingTop: (style?.paddingTop ?? style?.padding ?? margins.paddingTop),\r\n paddingRight: (style?.paddingRight ?? style?.padding ?? margins.paddingRight),\r\n paddingLeft: (style?.paddingLeft ?? style?.padding ?? margins.paddingLeft),\r\n paddingBottom: (style?.paddingBottom ?? style?.padding ?? margins.paddingBottom) + footerHeight,\r\n ...( (() => { const { padding, paddingTop, paddingRight, paddingBottom, paddingLeft, ...rest } = style || {}; return rest })() ),\r\n }\r\n\r\n const footerStyle = {\r\n ...styles.footer,\r\n top: footerTop,\r\n height: footerHeight,\r\n display: \"flex\" as const,\r\n flexDirection: \"column\" as const,\r\n justifyContent: \"center\" as const,\r\n alignItems: \"center\" as const,\r\n fontSize: 10,\r\n color: \"grey\"\r\n }\r\n\r\n return (\r\n <Document>\r\n <Page size={safeSize as any} orientation={pdfOrientation} style={pageStyle} wrap>\r\n {renderGrid()}\r\n <View style={{ paddingBottom: footerHeight }}>\r\n {children}\r\n </View>\r\n\r\n <View style={footerStyle} fixed>\r\n {footer && (footer)}\r\n {pagination && (\r\n <Text style={{ fontSize: footerStyle.fontSize }} render={({ pageNumber, totalPages }) => (\r\n `${pageNumber} / ${totalPages}`\r\n )} />\r\n )}\r\n </View>\r\n\r\n </Page>\r\n </Document>\r\n )\r\n}\r\n\r\nexport default LayoutPDF\r\n","import React from \"react\"\r\nimport { Image, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ImgProps {\r\n src?: string\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n image: {\r\n width: \"100%\",\r\n height: \"auto\",\r\n marginBottom: 14,\r\n },\r\n})\r\n\r\nconst Img: React.FC<ImgProps> = ({ src, style }) => {\r\n return <Image src={src} style={[styles.image, style]} />\r\n}\r\n\r\nexport default Img\r\n\r\n","import React from \"react\"\r\nimport { View, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface PositionProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n left: {\r\n textAlign: \"left\",\r\n },\r\n right: {\r\n textAlign: \"right\",\r\n },\r\n center: {\r\n textAlign: \"center\",\r\n },\r\n})\r\n\r\nconst Left: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.left, style]}>{children}</View>\r\n}\r\n\r\nconst Right: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.right, style]}>{children}</View>\r\n}\r\n\r\nconst Center: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.center, style]}>{children}</View>\r\n}\r\n\r\nexport { Left, Right, Center }\r\n\r\n","import React from \"react\"\r\nimport { Text, StyleSheet, Link, View } from \"@react-pdf/renderer\"\r\n\r\ninterface TextProps {\r\n children: React.ReactNode\r\n style?: any\r\n href?: string\r\n}\r\n\r\ninterface DivProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface HeaderProps {\r\n children: React.ReactNode\r\n style?: any\r\n fixed?: boolean\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n p: {\r\n fontSize: 12,\r\n marginBottom: 5,\r\n lineHeight: 1.2,\r\n },\r\n h1: {\r\n fontSize: 24,\r\n fontWeight: \"bold\",\r\n marginBottom: 12,\r\n },\r\n h2: {\r\n fontSize: 20,\r\n fontWeight: \"bold\",\r\n marginBottom: 10,\r\n },\r\n h3: {\r\n fontSize: 18,\r\n fontWeight: \"bold\",\r\n marginBottom: 8,\r\n },\r\n h4: {\r\n fontSize: 16,\r\n fontWeight: \"bold\",\r\n marginBottom: 6,\r\n },\r\n h5: {\r\n fontSize: 14,\r\n fontWeight: \"bold\",\r\n marginBottom: 4,\r\n },\r\n h6: {\r\n fontSize: 12,\r\n fontWeight: \"bold\",\r\n marginBottom: 0,\r\n },\r\n strong: {\r\n fontWeight: \"bold\",\r\n },\r\n em: {\r\n fontStyle: \"italic\",\r\n },\r\n u: {\r\n textDecoration: \"underline\",\r\n },\r\n small: {\r\n fontSize: 10,\r\n },\r\n blockquote: {\r\n marginLeft: 20,\r\n marginRight: 20,\r\n fontStyle: \"italic\",\r\n borderLeft: \"4px solid #ccc\",\r\n paddingLeft: 10,\r\n },\r\n mark: {\r\n backgroundColor: \"yellow\",\r\n },\r\n A: {\r\n color: \"#3d65fd\",\r\n textDecoration: \"none\",\r\n },\r\n br: {\r\n width: \"100%\",\r\n height: 1,\r\n marginTop: 7,\r\n marginBottom: 7,\r\n },\r\n header: {\r\n position: \"absolute\",\r\n top: 20,\r\n left: 0,\r\n right: 0,\r\n textAlign: \"center\",\r\n fontSize: 10,\r\n color: \"#666\",\r\n paddingHorizontal: 40,\r\n },\r\n hr: {\r\n width: \"100%\",\r\n borderTop: \"1px solid #000\",\r\n marginTop: 8,\r\n marginBottom: 8,\r\n },\r\n})\r\n\r\nconst P: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.p, style]}>{children}</Text>\r\n}\r\n\r\nconst H1: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h1, style]}>{children}</Text>\r\n}\r\n\r\nconst H2: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h2, style]}>{children}</Text>\r\n}\r\n\r\nconst H3: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h3, style]}>{children}</Text>\r\n}\r\n\r\nconst H4: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h4, style]}>{children}</Text>\r\n}\r\n\r\nconst H5: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h5, style]}>{children}</Text>\r\n}\r\n\r\nconst H6: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h6, style]}>{children}</Text>\r\n}\r\n\r\nconst Strong: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.strong, style]}>{children}</Text>\r\n}\r\n\r\nconst Em: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.em, style]}>{children}</Text>\r\n}\r\n\r\nconst U: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.u, style]}>{children}</Text>\r\n}\r\n\r\nconst Small: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.small, style]}>{children}</Text>\r\n}\r\n\r\nconst Blockquote: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.blockquote, style]}>{children}</Text>\r\n}\r\n\r\nconst Mark: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.mark, style]}>{children}</Text>\r\n}\r\n\r\nconst A: React.FC<TextProps> = ({ children, style, href }) => {\r\n return (\r\n <Link src={href} style={[styles.A, style]}>\r\n {children}\r\n </Link>\r\n )\r\n}\r\n\r\nconst BR: React.FC<{ style?: any }> = ({ style }) => {\r\n return <Text style={[styles.br, style]}>{\"\\n\"}</Text>\r\n}\r\n\r\nconst HR: React.FC<{ style?: any }> = ({ style }) => {\r\n return <View style={[styles.hr, style]} />\r\n}\r\n\r\nconst Span: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[style]}>{children}</Text>\r\n}\r\n\r\nconst Header: React.FC<HeaderProps> = ({ children, style, fixed = false }) => {\r\n return (\r\n <View style={[styles.header, style]} fixed={fixed}>\r\n {typeof children === \"string\" ? <Text>{children}</Text> : children}\r\n </View>\r\n )\r\n}\r\n\r\nconst Div: React.FC<DivProps> = ({ children, style }) => {\r\n return <View style={style}>{children}</View>\r\n}\r\n\r\nexport { P, A, H1, H2, H3, H4, H5, H6, Strong, Em, U, Small, Blockquote, Mark, Span, BR, HR, Header, Div }","import React, { createContext, useContext } from \"react\";\r\nimport { View, Text, StyleSheet } from \"@react-pdf/renderer\";\r\n\r\ninterface TableProps {\r\n children: React.ReactNode;\r\n style?: any;\r\n cellHeight?: number;\r\n}\r\n\r\ninterface TheadProps {\r\n children: React.ReactNode;\r\n style?: any;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}\r\n\r\ninterface CellProps {\r\n children?: React.ReactNode;\r\n style?: any;\r\n width?: string | number;\r\n height?: string | number;\r\n colSpan?: number;\r\n isLast?: boolean;\r\n isLastRow?: boolean;\r\n isOdd?: boolean;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}\r\n\r\n// Context para pasar cellHeight y textAlign a los componentes hijos\r\nconst TableContext = createContext<{\r\n cellHeight: number;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}>({\r\n cellHeight: 22,\r\n textAlign: \"left\",\r\n});\r\n\r\nconst styles = StyleSheet.create({\r\n table: {\r\n width: \"100%\",\r\n borderWidth: 1,\r\n borderColor: \"#000\",\r\n marginBottom: 20,\r\n },\r\n thead: {\r\n backgroundColor: \"#ccc\",\r\n },\r\n tr: {\r\n flexDirection: \"row\",\r\n },\r\n textBold: {\r\n fontSize: 10,\r\n fontWeight: \"bold\",\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n justifyContent: \"center\",\r\n\r\n },\r\n text: {\r\n fontSize: 10,\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n justifyContent: \"center\",\r\n\r\n },\r\n zebraOdd: {\r\n backgroundColor: \"#eeeeee\",\r\n },\r\n});\r\n\r\nconst Table: React.FC<TableProps> = ({ children, style, cellHeight = 22 }) => (\r\n <TableContext.Provider value={{ cellHeight, textAlign: \"left\" }}>\r\n <View style={[styles.table, style]}>{children}</View>\r\n </TableContext.Provider>\r\n);\r\n\r\nconst Thead: React.FC<TheadProps> = ({\r\n children,\r\n style,\r\n textAlign = \"left\",\r\n}) => {\r\n const { cellHeight } = useContext(TableContext);\r\n\r\n return (\r\n <TableContext.Provider value={{ cellHeight, textAlign }}>\r\n <View style={[styles.thead, style]}>{children}</View>\r\n </TableContext.Provider>\r\n );\r\n};\r\n\r\nconst Tbody: React.FC<TableProps> = ({ children }) => {\r\n const rows = React.Children.toArray(children) as React.ReactElement<any>[];\r\n const count = rows.length;\r\n return (\r\n <>\r\n {rows.map((row, idx) =>\r\n React.cloneElement(row, {\r\n isLastRow: idx === count - 1,\r\n isOdd: idx % 2 === 1,\r\n })\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst Tr: React.FC<TableProps & { isLastRow?: boolean; isOdd?: boolean }> = ({\r\n children,\r\n style,\r\n isLastRow = false,\r\n isOdd = false,\r\n}) => {\r\n const elements = React.Children.toArray(\r\n children\r\n ) as React.ReactElement<CellProps>[];\r\n const count = elements.length;\r\n return (\r\n <View style={[styles.tr, style]}>\r\n {elements.map((child, idx) => {\r\n const isLast = idx === count - 1;\r\n const width = `${(100 / count).toFixed(2)}%`;\r\n return React.cloneElement(child, { width, isLast, isLastRow, isOdd });\r\n })}\r\n </View>\r\n );\r\n};\r\n\r\nconst Th: React.FC<CellProps> = ({\r\n children,\r\n style,\r\n width,\r\n height,\r\n colSpan,\r\n isLast = false,\r\n isLastRow = false,\r\n textAlign: propTextAlign,\r\n}) => {\r\n const { cellHeight, textAlign: contextTextAlign } = useContext(TableContext);\r\n\r\n // Usar textAlign del prop si está definido, sino el del contexto\r\n const finalTextAlign = propTextAlign || contextTextAlign || \"left\";\r\n\r\n const baseWidth =\r\n typeof width === \"string\" && colSpan\r\n ? `${(parseFloat(width) * colSpan).toFixed(2)}%`\r\n : width;\r\n\r\n const cellHeightValue = height !== undefined ? height : cellHeight;\r\n\r\n const borders = {\r\n borderRightWidth: isLast ? 0 : 1,\r\n borderBottomWidth: isLastRow ? 0 : 1,\r\n borderColor: \"#000\",\r\n minHeight: cellHeightValue,\r\n };\r\n\r\n return (\r\n <View\r\n style={[\r\n styles.textBold,\r\n {\r\n width: baseWidth,\r\n },\r\n borders,\r\n style,\r\n ]}\r\n >\r\n <Text style={{ textAlign: finalTextAlign }}>{children}</Text>\r\n </View>\r\n );\r\n};\r\n\r\nconst Td: React.FC<CellProps> = ({\r\n children,\r\n style,\r\n width,\r\n height,\r\n colSpan,\r\n isLast = false,\r\n isLastRow = false,\r\n isOdd = false,\r\n textAlign: propTextAlign,\r\n}) => {\r\n const { cellHeight, textAlign: contextTextAlign } = useContext(TableContext);\r\n\r\n // Usar textAlign del prop si está definido, sino el del contexto, sino 'left'\r\n const finalTextAlign = propTextAlign || contextTextAlign || \"left\";\r\n\r\n const baseWidth =\r\n typeof width === \"string\" && colSpan\r\n ? `${(parseFloat(width) * colSpan).toFixed(2)}%`\r\n : width;\r\n\r\n const cellHeightValue = height !== undefined ? height : cellHeight;\r\n\r\n const borders = {\r\n borderRightWidth: isLast ? 0 : 1,\r\n borderBottomWidth: isLastRow ? 0 : 1,\r\n borderColor: \"#000\",\r\n minHeight: cellHeightValue,\r\n };\r\n\r\n return (\r\n <View\r\n style={[\r\n styles.text,\r\n isOdd && styles.zebraOdd,\r\n {\r\n width: baseWidth,\r\n },\r\n borders,\r\n style,\r\n ]}\r\n >\r\n <Text style={{ textAlign: finalTextAlign }}>{children}</Text>\r\n </View>\r\n );\r\n};\r\n\r\nexport { Table, Thead, Tbody, Tr, Th, Td };\r\n","import React from \"react\"\r\nimport { View, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ContainerProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface RowProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface ColProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n width: \"100%\",\r\n paddingHorizontal: 20,\r\n },\r\n row: {\r\n flexDirection: \"row\",\r\n flexWrap: \"wrap\",\r\n marginHorizontal: -5,\r\n },\r\n col: {\r\n paddingHorizontal: 5,\r\n },\r\n col1: { width: \"8.33%\" },\r\n col2: { width: \"16.66%\" },\r\n col3: { width: \"25%\" },\r\n col4: { width: \"33.33%\" },\r\n col5: { width: \"41.66%\" },\r\n col6: { width: \"50%\" },\r\n col7: { width: \"58.33%\" },\r\n col8: { width: \"66.66%\" },\r\n col9: { width: \"75%\" },\r\n col10: { width: \"83.33%\" },\r\n col11: { width: \"91.66%\" },\r\n col12: { width: \"100%\" },\r\n})\r\n\r\nexport const Container: React.FC<ContainerProps> = ({ children, style }) => {\r\n return <View style={[styles.container, style]}>{children}</View>\r\n}\r\n\r\nexport const Row: React.FC<RowProps> = ({ children, style }) => {\r\n return <View style={[styles.row, style]}>{children}</View>\r\n}\r\n\r\nexport const Col1: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col1, style]}>{children}</View>\r\n}\r\n\r\nexport const Col2: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col2, style]}>{children}</View>\r\n}\r\n\r\nexport const Col3: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col3, style]}>{children}</View>\r\n}\r\n\r\nexport const Col4: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col4, style]}>{children}</View>\r\n}\r\n\r\nexport const Col5: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col5, style]}>{children}</View>\r\n}\r\n\r\nexport const Col6: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col6, style]}>{children}</View>\r\n}\r\n\r\nexport const Col7: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col7, style]}>{children}</View>\r\n}\r\n\r\nexport const Col8: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col8, style]}>{children}</View>\r\n}\r\n\r\nexport const Col9: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col9, style]}>{children}</View>\r\n}\r\n\r\nexport const Col10: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col10, style]}>{children}</View>\r\n}\r\n\r\nexport const Col11: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col11, style]}>{children}</View>\r\n}\r\n\r\nexport const Col12: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col12, style]}>{children}</View>\r\n}\r\n\r\n","import QRCode from \"qrcode\"\r\n\r\ninterface QROptions {\r\n value: string\r\n size?: number\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n logoImage?: string\r\n logoWidth?: number\r\n logoHeight?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nexport const generateQRAsBase64 = async ({\r\n value,\r\n size = 150,\r\n colorDark = \"#000000\",\r\n colorLight = \"#ffffff\",\r\n margin = 0,\r\n errorCorrectionLevel = \"M\",\r\n}: QROptions): Promise<string> => {\r\n try {\r\n // Configuración para QRCode\r\n const options = {\r\n errorCorrectionLevel: errorCorrectionLevel,\r\n type: \"image/png\" as const,\r\n quality: 0.92,\r\n margin: margin,\r\n color: {\r\n dark: colorDark,\r\n light: colorLight,\r\n },\r\n width: size,\r\n }\r\n\r\n // Generar el código QR como base64\r\n const qrDataUrl = QRCode.toDataURL(value, options)\r\n return qrDataUrl\r\n } catch (error) {\r\n console.error(\"Error generando QR:\", error)\r\n return \"\"\r\n }\r\n}\r\n\r\n// Función para añadir un logo al QR generado\r\nexport const addLogoToQR = async (\r\n qrDataUrl: string,\r\n logoUrl: string,\r\n logoWidth: number,\r\n logoHeight: number,\r\n): Promise<string> => {\r\n return new Promise(async (resolve) => {\r\n if (!qrDataUrl || !logoUrl) {\r\n resolve(qrDataUrl)\r\n return\r\n }\r\n\r\n try {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n let canvas: any;\r\n let ctx: any;\r\n let ImageConstructor: any;\r\n\r\n if (isBrowser) {\r\n canvas = document.createElement(\"canvas\")\r\n ctx = canvas.getContext(\"2d\")\r\n ImageConstructor = window.Image;\r\n } else {\r\n // Node environment\r\n try {\r\n // Use dynamic imports to avoid bundling canvas in browser build if possible\r\n // although typically 'canvas' is excluded from browser bundles or shimmed.\r\n const { createCanvas, Image } = await import('canvas');\r\n canvas = createCanvas(100, 100); // Initial size, will be resized\r\n ctx = canvas.getContext(\"2d\");\r\n ImageConstructor = Image;\r\n } catch (e) {\r\n console.error(\"Canvas not available in Node environment for addLogoToQR\", e);\r\n resolve(qrDataUrl);\r\n return;\r\n }\r\n }\r\n\r\n if (!ctx) {\r\n resolve(qrDataUrl)\r\n return\r\n }\r\n\r\n // Cargar la imagen del QR\r\n const qrImage = new ImageConstructor()\r\n // crossOrigin is only needed in browser usually, but node-canvas might support/ignore it\r\n if (isBrowser) qrImage.crossOrigin = \"anonymous\"\r\n \r\n qrImage.onload = () => {\r\n // Establecer el tamaño del canvas\r\n canvas.width = qrImage.width\r\n canvas.height = qrImage.height\r\n\r\n // Dibujar el QR en el canvas\r\n ctx.drawImage(qrImage, 0, 0, canvas.width, canvas.height)\r\n\r\n // Cargar el logo\r\n const logoImage = new ImageConstructor()\r\n if (isBrowser) logoImage.crossOrigin = \"anonymous\"\r\n \r\n logoImage.onload = () => {\r\n // Calcular la posición central para el logo\r\n const x = (canvas.width - logoWidth) / 2\r\n const y = (canvas.height - logoHeight) / 2\r\n\r\n // Dibujar un fondo blanco para el logo (opcional)\r\n ctx.fillStyle = \"#FFFFFF\"\r\n ctx.fillRect(x - 5, y - 5, logoWidth + 10, logoHeight + 10)\r\n\r\n // Dibujar el logo\r\n ctx.drawImage(logoImage, x, y, logoWidth, logoHeight)\r\n\r\n // Convertir el canvas a base64\r\n const finalQrDataUrl = canvas.toDataURL(\"image/png\")\r\n resolve(finalQrDataUrl)\r\n }\r\n\r\n logoImage.onerror = (err: any) => {\r\n console.error(\"Error cargando el logo:\", err)\r\n resolve(qrDataUrl) // Devolver el QR sin logo en caso de error\r\n }\r\n\r\n logoImage.src = logoUrl\r\n }\r\n\r\n qrImage.onerror = (err: any) => {\r\n console.error(\"Error cargando el QR:\", err)\r\n resolve(\"\")\r\n }\r\n\r\n qrImage.src = qrDataUrl\r\n } catch (error) {\r\n console.error(\"Error procesando el QR con logo:\", error)\r\n resolve(qrDataUrl) // Devolver el QR sin logo en caso de error\r\n }\r\n })\r\n}\r\n","\"use client\"\r\n\r\nimport React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\nimport { useEffect, useState } from \"react\"\r\nimport { generateQRAsBase64, addLogoToQR } from \"./QRGenerator\"\r\n\r\n// Define the props for the QR component\r\ninterface QRProps {\r\n value: string\r\n size?: number\r\n style?: any\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n logo?: string\r\n logoWidth?: number\r\n logoHeight?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n qrContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n margin: 10,\r\n },\r\n})\r\n\r\n// Mapa para convertir niveles de corrección numéricos a letras\r\nconst errorLevelMap: Record<number, \"L\" | \"M\" | \"Q\" | \"H\"> = {\r\n 0: \"L\",\r\n 1: \"M\",\r\n 2: \"Q\",\r\n 3: \"H\",\r\n}\r\n\r\n// Este componente funciona con React PDF\r\nconst QR: React.FC<QRProps> = ({\r\n value,\r\n size = 150,\r\n style,\r\n colorDark = \"#000000\",\r\n colorLight = \"#ffffff\",\r\n margin = 0,\r\n logo = \"\",\r\n logoWidth = 30,\r\n logoHeight = 30,\r\n errorCorrectionLevel = logo ? \"H\" : \"M\",\r\n}) => {\r\n const [qrDataUrl, setQrDataUrl] = useState<string>(\"\")\r\n\r\n // Generar el código QR cuando el componente se monta o cuando cambian las props\r\n useEffect(() => {\r\n const generateQR = async () => {\r\n try {\r\n // Primero generamos el QR básico\r\n const baseQrDataUrl = await generateQRAsBase64({\r\n value,\r\n size,\r\n colorDark,\r\n colorLight,\r\n margin,\r\n errorCorrectionLevel:\r\n typeof errorCorrectionLevel === \"number\"\r\n ? errorLevelMap[errorCorrectionLevel] || \"M\"\r\n : errorCorrectionLevel,\r\n })\r\n\r\n // Si hay un logo, lo añadimos al QR\r\n if (logo && logoWidth && logoHeight) {\r\n const qrWithLogo = await addLogoToQR(baseQrDataUrl, logo, logoWidth, logoHeight)\r\n setQrDataUrl(qrWithLogo)\r\n } else {\r\n setQrDataUrl(baseQrDataUrl)\r\n }\r\n } catch (error) {\r\n console.error(\"Error generando QR:\", error)\r\n // En caso de error, generamos un QR básico usando una API externa\r\n const fallbackUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(\r\n value,\r\n )}&size=${size}x${size}&color=${encodeURIComponent(colorDark.replace(\"#\", \"\"))}&bgcolor=${encodeURIComponent(\r\n colorLight.replace(\"#\", \"\"),\r\n )}`\r\n setQrDataUrl(fallbackUrl)\r\n }\r\n }\r\n\r\n generateQR()\r\n }, [value, size, colorDark, colorLight, margin, logo, logoWidth, logoHeight, errorCorrectionLevel])\r\n\r\n // Mostrar un QR de respaldo mientras se genera el QR personalizado\r\n const fallbackUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(\r\n value,\r\n )}&size=${size}x${size}`\r\n\r\n return (\r\n <View style={[styles.qrContainer, style]}>\r\n <Image src={qrDataUrl || fallbackUrl} style={{ width: size, height: size }} />\r\n </View>\r\n )\r\n}\r\n\r\nexport default QR\r\n\r\n","import { generateQRAsBase64 } from \"./QRGenerator\"\r\n\r\nexport interface QRV2Options {\r\n value: string\r\n width?: number\r\n height?: number\r\n image?: string\r\n dotsOptions?: {\r\n color?: string\r\n type?: \"rounded\" | \"dots\" | \"classy\" | \"classy-rounded\" | \"square\" | \"extra-rounded\"\r\n }\r\n backgroundOptions?: {\r\n color?: string\r\n }\r\n imageOptions?: {\r\n crossOrigin?: string\r\n margin?: number\r\n imageSize?: number // 0-1 (e.g., 0.4)\r\n }\r\n cornersSquareOptions?: {\r\n type?: \"dot\" | \"square\" | \"extra-rounded\"\r\n color?: string\r\n }\r\n cornersDotOptions?: {\r\n type?: \"dot\" | \"square\"\r\n color?: string\r\n }\r\n // Fallback options\r\n fallbackColorDark?: string\r\n fallbackColorLight?: string\r\n fallbackMargin?: number\r\n fallbackErrorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nexport const generateQRV2AsBase64 = async (options: QRV2Options): Promise<string> => {\r\n try {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n \r\n let QRCodeStylingConstructor: any;\r\n let extraOptions = {};\r\n\r\n if (isBrowser) {\r\n // Dynamic import for browser\r\n try {\r\n const mod = await import('qr-code-styling');\r\n QRCodeStylingConstructor = mod.default || mod;\r\n } catch (e) {\r\n console.error(\"Failed to load qr-code-styling in browser\", e);\r\n throw e;\r\n }\r\n } else {\r\n // Node environment\r\n // We use variable names to prevent bundlers (like Vite) from analyzing/bundling these dependencies\r\n // when building for the browser.\r\n const jsdomName = \"jsdom\";\r\n const canvasName = \"canvas\";\r\n const qrCommonName = \"qr-code-styling/lib/qr-code-styling.common.js\";\r\n \r\n try {\r\n const [jsdomMod, canvasMod, qrCommonMod] = await Promise.all([\r\n import(/* @vite-ignore */ jsdomName),\r\n import(/* @vite-ignore */ canvasName),\r\n import(/* @vite-ignore */ qrCommonName)\r\n ]);\r\n\r\n const { JSDOM } = jsdomMod;\r\n // canvas might be default export or named export depending on version/bundling\r\n const nodeCanvas = canvasMod.default || canvasMod;\r\n const { QRCodeStyling } = qrCommonMod;\r\n\r\n QRCodeStylingConstructor = QRCodeStyling;\r\n extraOptions = {\r\n jsdom: JSDOM,\r\n nodeCanvas: nodeCanvas\r\n };\r\n } catch (e) {\r\n console.error(\"Failed to load Node dependencies for QR generation\", e);\r\n throw e;\r\n }\r\n }\r\n\r\n const width = typeof options.width === \"number\" && isFinite(options.width) ? Math.round(options.width) : 300;\r\n const height = typeof options.height === \"number\" && isFinite(options.height) ? Math.round(options.height) : 300;\r\n \r\n\r\n const qrOptions = {\r\n width,\r\n height,\r\n data: options.value,\r\n image: options.image,\r\n dotsOptions: options.dotsOptions,\r\n backgroundOptions: {\r\n // Default to white background if not specified to prevent transparency issues\r\n // The \"blue stripe\" or weird artifacts can happen if the background is transparent or handled incorrectly\r\n color: options.backgroundOptions?.color || \"#ffffff\",\r\n ...options.backgroundOptions\r\n },\r\n imageOptions: {\r\n crossOrigin: \"anonymous\",\r\n margin: typeof options.imageOptions?.margin === \"number\" && isFinite(options.imageOptions.margin) ? options.imageOptions.margin : 0,\r\n saveAsBlob: true,\r\n imageSize: typeof options.imageOptions?.imageSize === \"number\" && isFinite(options.imageOptions.imageSize)\r\n ? Math.max(0, Math.min(1, options.imageOptions.imageSize))\r\n : 0.4,\r\n },\r\n cornersSquareOptions: options.cornersSquareOptions,\r\n cornersDotOptions: options.cornersDotOptions,\r\n }\r\n\r\n // @ts-ignore\r\n const qrCodeImage = new QRCodeStylingConstructor({\r\n type: \"png\", // Force PNG type\r\n ...extraOptions,\r\n ...qrOptions,\r\n })\r\n\r\n const rawData = await qrCodeImage.getRawData(\"png\")\r\n \r\n if (!rawData) throw new Error(\"Failed to generate raw data from qr-code-styling\")\r\n\r\n // Handle Blob (Browser) vs Buffer (Node)\r\n if (isBrowser) {\r\n if (rawData instanceof Blob) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n if (typeof reader.result === 'string') {\r\n resolve(reader.result);\r\n } else {\r\n reject(new Error(\"Failed to convert blob to base64\"));\r\n }\r\n };\r\n reader.onerror = reject;\r\n reader.readAsDataURL(rawData);\r\n });\r\n } else {\r\n // Sometimes in browser it might return something else if configured differently?\r\n // But usually Blob.\r\n console.warn(\"Unexpected rawData type in browser:\", rawData);\r\n }\r\n } \r\n \r\n // Node environment usually returns Buffer\r\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(rawData)) {\r\n return `data:image/png;base64,${rawData.toString(\"base64\")}`;\r\n }\r\n \r\n // Fallback if type is unexpected\r\n // Try to handle if it's a blob-like object in Node (unlikely but possible with polyfills)\r\n throw new Error(`Unexpected raw data type: ${typeof rawData}`);\r\n\r\n } catch (error) {\r\n console.error(\"Error generating QR V2, falling back to V1:\", error)\r\n \r\n // Fallback to existing implementation\r\n return generateQRAsBase64({\r\n value: options.value,\r\n size: options.width,\r\n colorDark: options.fallbackColorDark || options.dotsOptions?.color,\r\n colorLight: options.fallbackColorLight || options.backgroundOptions?.color,\r\n margin: options.fallbackMargin || 0,\r\n errorCorrectionLevel: options.fallbackErrorCorrectionLevel || \"M\",\r\n })\r\n }\r\n}\r\n","\"use client\"\r\n\r\nimport React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\nimport { generateQRV2AsBase64, type QRV2Options } from \"./QRGeneratorV2\"\r\n\r\n// Define props\r\nexport interface QRV2Props {\r\n value: string\r\n size?: number\r\n style?: any\r\n image?: string\r\n dotsOptions?: QRV2Options[\"dotsOptions\"]\r\n backgroundOptions?: QRV2Options[\"backgroundOptions\"]\r\n imageOptions?: QRV2Options[\"imageOptions\"]\r\n cornersSquareOptions?: QRV2Options[\"cornersSquareOptions\"]\r\n cornersDotOptions?: QRV2Options[\"cornersDotOptions\"]\r\n // Fallback/Compatibility props\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n qrContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n})\r\n\r\nconst QRV2: React.FC<QRV2Props> = ({\r\n value,\r\n size = 300,\r\n style,\r\n image,\r\n dotsOptions,\r\n backgroundOptions,\r\n imageOptions,\r\n cornersSquareOptions,\r\n cornersDotOptions,\r\n colorDark,\r\n colorLight,\r\n margin,\r\n errorCorrectionLevel,\r\n}) => {\r\n return (\r\n <View style={[styles.qrContainer, style]}>\r\n {/* We pass a function that returns the promise/result or use the state if available. \r\n Actually, we can pass the promise directly to src! */}\r\n <Image \r\n style={{ width: size, height: size }} \r\n src={generateQRV2AsBase64({\r\n value,\r\n width: size,\r\n height: size,\r\n image,\r\n dotsOptions: dotsOptions || (colorDark ? { color: colorDark } : undefined),\r\n backgroundOptions: backgroundOptions || (colorLight ? { color: colorLight } : undefined),\r\n imageOptions: {\r\n ...imageOptions,\r\n margin: imageOptions?.margin !== undefined ? imageOptions.margin : margin\r\n },\r\n cornersSquareOptions,\r\n cornersDotOptions,\r\n fallbackColorDark: colorDark,\r\n fallbackColorLight: colorLight,\r\n fallbackMargin: margin,\r\n fallbackErrorCorrectionLevel: errorCorrectionLevel,\r\n })} \r\n />\r\n </View>\r\n )\r\n}\r\n\r\nexport default QRV2\r\n","import React from \"react\"\r\nimport { View, Text, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ListProps {\r\n children: React.ReactNode\r\n style?: any\r\n start?: number // Para listas ordenadas, desde qué número empezar\r\n type?: \"disc\" | \"circle\" | \"square\" | \"decimal\" | \"lower-alpha\" | \"upper-alpha\" | \"lower-roman\" | \"upper-roman\"\r\n}\r\n\r\ninterface ListItemProps {\r\n children: React.ReactNode\r\n style?: any\r\n value?: number | string // Valor específico para este elemento de lista\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n ul: {\r\n marginBottom: 10,\r\n paddingLeft: 15,\r\n },\r\n ol: {\r\n marginBottom: 10,\r\n paddingLeft: 15,\r\n },\r\n li: {\r\n marginBottom: 5,\r\n flexDirection: \"row\",\r\n },\r\n bulletPoint: {\r\n width: 15,\r\n marginRight: 5,\r\n fontSize: 12,\r\n },\r\n itemContent: {\r\n flex: 1,\r\n },\r\n})\r\n\r\n// Función para generar marcadores de lista desordenada\r\nconst getBulletPoint = (type = \"disc\") => {\r\n switch (type) {\r\n case \"circle\":\r\n return \"○\"\r\n case \"square\":\r\n return \"■\"\r\n case \"disc\":\r\n default:\r\n return \"•\"\r\n }\r\n}\r\n\r\n// Función para generar marcadores de lista ordenada\r\nconst getOrderedMarker = (index: number, type = \"decimal\", start = 1) => {\r\n const actualIndex = start + index - 1\r\n\r\n switch (type) {\r\n case \"lower-alpha\":\r\n return String.fromCharCode(97 + (actualIndex % 26)) + \".\"\r\n case \"upper-alpha\":\r\n return String.fromCharCode(65 + (actualIndex % 26)) + \".\"\r\n case \"lower-roman\":\r\n return toRoman(actualIndex).toLowerCase() + \".\"\r\n case \"upper-roman\":\r\n return toRoman(actualIndex) + \".\"\r\n case \"decimal\":\r\n default:\r\n return actualIndex + \".\"\r\n }\r\n}\r\n\r\n// Función para convertir números a numerales romanos\r\nconst toRoman = (num: number): string => {\r\n if (num <= 0 || num > 3999) return String(num)\r\n\r\n const romanNumerals = [\r\n [\"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"],\r\n [\"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\"],\r\n [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\"],\r\n [\"\", \"M\", \"MM\", \"MMM\"],\r\n ]\r\n\r\n return (\r\n romanNumerals[3][Math.floor(num / 1000)] +\r\n romanNumerals[2][Math.floor((num % 1000) / 100)] +\r\n romanNumerals[1][Math.floor((num % 100) / 10)] +\r\n romanNumerals[0][num % 10]\r\n )\r\n}\r\n\r\n// Componente de lista desordenada (UL)\r\nexport const UL: React.FC<ListProps> = ({ children, style, type = \"disc\" }) => {\r\n // Clonar los hijos para añadir el tipo de marcador\r\n const childrenWithBullets = React.Children.map(children, (child, index) => {\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child as React.ReactElement<any>, {\r\n bulletType: type,\r\n isOrdered: false,\r\n index: index + 1,\r\n })\r\n }\r\n return child\r\n })\r\n\r\n return <View style={[styles.ul, style]}>{childrenWithBullets}</View>\r\n}\r\n\r\n// Componente de lista ordenada (OL)\r\nexport const OL: React.FC<ListProps> = ({ children, style, type = \"decimal\", start = 1 }) => {\r\n // Clonar los hijos para añadir el tipo de marcador y el índice\r\n const childrenWithNumbers = React.Children.map(children, (child, index) => {\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child as React.ReactElement<any>, {\r\n bulletType: type,\r\n isOrdered: true,\r\n index: index + 1,\r\n start,\r\n })\r\n }\r\n return child\r\n })\r\n\r\n return <View style={[styles.ol, style]}>{childrenWithNumbers}</View>\r\n}\r\n\r\n// Componente de elemento de lista (LI)\r\nexport const LI: React.FC<\r\n ListItemProps & {\r\n bulletType?: string\r\n isOrdered?: boolean\r\n index?: number\r\n start?: number\r\n }\r\n> = ({ children, style, bulletType = \"disc\", isOrdered = false, index = 1, start = 1, value }) => {\r\n // Determinar el marcador a mostrar\r\n let marker\r\n if (isOrdered) {\r\n // Si se proporciona un valor específico, usarlo en lugar del índice\r\n const actualIndex = value !== undefined ? Number(value) : index\r\n marker = getOrderedMarker(actualIndex, bulletType, start)\r\n } else {\r\n marker = getBulletPoint(bulletType)\r\n }\r\n\r\n return (\r\n <View style={[styles.li, style]}>\r\n <Text style={styles.bulletPoint}>{marker}</Text>\r\n <View style={styles.itemContent}>{typeof children === \"string\" ? <Text>{children}</Text> : children}</View>\r\n </View>\r\n )\r\n}\r\n\r\n","import React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\n\r\ninterface ImgBgProps {\r\n src: string\r\n width?: number | string\r\n height?: number | string\r\n opacity?: number\r\n children?: React.ReactNode\r\n style?: any\r\n fixed?: boolean\r\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\"\r\n objectPosition?: string // ej: \"center\", \"top\", \"left top\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n background: {\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n content: {\r\n position: \"relative\",\r\n },\r\n})\r\n\r\nconst ImgBg: React.FC<ImgBgProps> = ({\r\n src,\r\n width = \"100%\",\r\n height = \"100%\",\r\n opacity = 0.2,\r\n children,\r\n style,\r\n fixed = false,\r\n objectFit = \"cover\",\r\n objectPosition = \"center\",\r\n}) => {\r\n return (\r\n <View style={[styles.container, style]}>\r\n <Image\r\n src={src}\r\n style={[\r\n styles.background,\r\n { width, height, opacity, objectFit, objectPosition },\r\n ]}\r\n fixed={fixed}\r\n />\r\n <View style={styles.content}>{children}</View>\r\n </View>\r\n )\r\n}\r\n\r\nexport default ImgBg\r\n"]}
1
+ {"version":3,"sources":["../../frontend/src/functions/decodeBase64Pdf.ts","../../frontend/src/functions/generatePDF.ts","../../frontend/src/components/core/LayoutPDF.tsx","../../frontend/src/components/core/Img.tsx","../../frontend/src/components/core/Position.tsx","../../frontend/src/components/core/Etiquetas.tsx","../../frontend/src/components/core/Tablet.tsx","../../frontend/src/components/core/Grid.tsx","../../frontend/src/components/core/QRGenerator.ts","../../frontend/src/components/core/QR.tsx","../../frontend/src/components/core/QRGeneratorV2.ts","../../frontend/src/components/core/QRV2.tsx","../../frontend/src/components/core/Lista.tsx","../../frontend/src/components/core/ImgBg.tsx"],"names":["decodeBase64Pdf","base64","fileName","byteCharacters","byteNumbers","i","byteArray","blob","blobUrl","link","decodeBase64Pdf_default","generatePDF","Template","data","MyDocument","createElement","stream","renderToStream","resolve","reject","chunks","chunk","error","generatePDF_default","styles","StyleSheet","LayoutPDF","children","size","orientation","backgroundColor","padding","margen","style","pagination","footer","lines","rule","footerHeight","getMargins","pageSize","normalizedSize","safeSize","safeOrientation","safeBackgroundColor","safeMargen","validOrientations","normalizedOrientation","e","transformOrientation","getFooterPosition","pageDimensions","mmToPoints","dimensions","heightInPoints","widthInPoints","pdfOrientation","margins","footerTop","renderGrid","cmToPoints","pageWidth","pageHeight","horizontalLines","verticalLines","jsx","View","jsxs","pageStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","rest","footerStyle","Document","Page","Text","pageNumber","totalPages","LayoutPDF_default","Img","src","Image","Img_default","Left","Right","Center","P","H1","H2","H3","H4","H5","H6","Strong","Em","U","Small","Blockquote","Mark","A","href","Link","BR","HR","Span","Header","fixed","Div","TableContext","createContext","Table","cellHeight","Thead","textAlign","useContext","Tbody","rows","React","count","Fragment","row","idx","Tr","isLastRow","isOdd","elements","child","isLast","width","Th","height","colSpan","propTextAlign","contextTextAlign","finalTextAlign","baseWidth","borders","Td","Container","Row","Col1","Col2","Col3","Col4","Col5","Col6","Col7","Col8","Col9","Col10","Col11","Col12","generateQRAsBase64","value","colorDark","colorLight","margin","errorCorrectionLevel","options","QRCode","addLogoToQR","qrDataUrl","logoUrl","logoWidth","logoHeight","isBrowser","canvas","ctx","ImageConstructor","createCanvas","qrImage","logoImage","x","finalQrDataUrl","err","errorLevelMap","QR","logo","setQrDataUrl","useState","useEffect","baseQrDataUrl","qrWithLogo","fallbackUrl","QR_default","generateQRV2AsBase64","QRCodeStylingConstructor","extraOptions","mod","jsdomName","canvasName","qrCommonName","jsdomMod","canvasMod","qrCommonMod","JSDOM","nodeCanvas","QRCodeStyling","qrOptions","rawData","reader","QRV2","image","dotsOptions","backgroundOptions","imageOptions","cornersSquareOptions","cornersDotOptions","QRV2_default","getBulletPoint","type","getOrderedMarker","index","start","actualIndex","toRoman","num","romanNumerals","UL","childrenWithBullets","OL","childrenWithNumbers","LI","bulletType","isOrdered","marker","ImgBg","opacity","objectFit","objectPosition","ImgBg_default"],"mappings":"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","file":"index.cjs","sourcesContent":["const decodeBase64Pdf = (base64: string, fileName: string) => {\r\n const byteCharacters = atob(base64);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n\r\n if (document === undefined) {\r\n console.error(\"document is undefined, only works in browser context\");\r\n return;\r\n }\r\n\r\n // Crear un enlace para descargar el archivo\r\n const link = document.createElement('a');\r\n link.href = blobUrl;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n\r\n // Abrir el PDF en una nueva pestaña\r\n window.open(blobUrl, '_blank');\r\n\r\n // Revocar el objeto URL después de un tiempo\r\n setTimeout(() => {\r\n URL.revokeObjectURL(blobUrl);\r\n }, 100);\r\n};\r\n\r\nexport default decodeBase64Pdf;","import { renderToStream } from \"@react-pdf/renderer\";\r\nimport { createElement } from \"react\";\r\n\r\ninterface PDFData {\r\n template: React.ElementType;\r\n data?: any;\r\n}\r\n\r\nconst generatePDF = async ({ template: Template, data }: PDFData): Promise<string> => {\r\n try {\r\n if (!Template) {\r\n throw new Error(\"Template not provided\");\r\n }\r\n\r\n // Crear el componente con los datos\r\n const MyDocument = createElement(Template, { data });\r\n\r\n // Renderizar a stream\r\n const stream = await renderToStream(MyDocument);\r\n\r\n const base64String: string = await new Promise((resolve, reject) => {\r\n const chunks: Buffer[] = [];\r\n stream.on(\"data\", (chunk) => chunks.push(chunk));\r\n stream.on(\"end\", () => resolve(Buffer.concat(chunks).toString(\"base64\")));\r\n stream.on(\"error\", (error) => reject(error));\r\n });\r\n\r\n return base64String;\r\n } catch (error) {\r\n throw new Error(\"Error generating PDF: \" + (error instanceof Error ? error.message : \"Unknown error\"));\r\n }\r\n};\r\n\r\nexport default generatePDF;\r\n","import React from \"react\"\r\nimport { Page, Document, StyleSheet, Text, View } from \"@react-pdf/renderer\"\r\n\r\nconst styles = StyleSheet.create({\r\n page: {\r\n backgroundColor: \"white\",\r\n padding: 30,\r\n fontFamily: \"Helvetica\",\r\n fontSize: 14,\r\n },\r\n footer: {\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n textAlign: \"center\",\r\n }\r\n})\r\n\r\ninterface LayoutPDFProps {\r\n children: React.ReactNode\r\n size?: string\r\n orientation?: \"vertical\" | \"horizontal\" | \"h\" | \"v\" | \"portrait\" | \"landscape\"\r\n backgroundColor?: string\r\n padding?: number\r\n margen?: \"apa\" | \"normal\" | \"estrecho\" | \"ancho\"\r\n style?: any\r\n pagination?: boolean\r\n footer?: React.ReactNode\r\n lines?: number\r\n rule?: boolean\r\n}\r\n\r\nconst LayoutPDF: React.FC<LayoutPDFProps> = ({\r\n children,\r\n size = \"A4\",\r\n orientation = \"vertical\",\r\n backgroundColor = \"white\",\r\n padding = 30,\r\n margen = \"normal\",\r\n style = {},\r\n pagination = true,\r\n footer,\r\n lines = footer ? 2 : 1,\r\n rule = false,\r\n}) => {\r\n // Calculate footer height based on number of lines\r\n // Each line is approximately 20 points (considering font size and line height)\r\n const LINE_HEIGHT = 20\r\n const FOOTER_PADDING = 10\r\n const footerHeight = (lines * LINE_HEIGHT) + FOOTER_PADDING\r\n\r\n // Función para obtener márgenes según las normas APA y otros estándares\r\n const getMargins = (margen: string, pageSize: string) => {\r\n const normalizedSize = pageSize.toUpperCase()\r\n\r\n switch (margen) {\r\n case \"apa\":\r\n // Normas APA: 1 pulgada en todos los lados (72 puntos)\r\n if (normalizedSize === \"LETTER\" || normalizedSize === \"LEGAL\") {\r\n return {\r\n paddingTop: 72,\r\n paddingRight: 72,\r\n paddingBottom: 72,\r\n paddingLeft: 72\r\n }\r\n }\r\n // Para otros tamaños, usar equivalente proporcional\r\n return {\r\n paddingTop: 72,\r\n paddingRight: 72,\r\n paddingBottom: 72,\r\n paddingLeft: 72\r\n }\r\n\r\n case \"estrecho\":\r\n return {\r\n paddingTop: 36,\r\n paddingRight: 36,\r\n paddingBottom: 36,\r\n paddingLeft: 36\r\n }\r\n\r\n case \"ancho\":\r\n return {\r\n paddingTop: 108,\r\n paddingRight: 108,\r\n paddingBottom: 108,\r\n paddingLeft: 108\r\n }\r\n\r\n case \"normal\":\r\n default:\r\n return {\r\n paddingTop: padding,\r\n paddingRight: padding,\r\n paddingBottom: padding,\r\n paddingLeft: padding\r\n }\r\n }\r\n }\r\n\r\n // Validar y sanitizar props\r\n let safeSize = size\r\n let safeOrientation = orientation\r\n let safeBackgroundColor = backgroundColor\r\n\r\n let safeMargen = margen\r\n\r\n try {\r\n // Validar size\r\n const validSizes = [\"A0\", \"A1\", \"A2\", \"A3\", \"A4\", \"A5\", \"A6\", \"A7\", \"A8\", \"A9\", \"LETTER\", \"LEGAL\", \"TABLOID\"]\r\n if (typeof size === \"string\" && !validSizes.includes(size.toUpperCase())) {\r\n console.warn(`Invalid page size: ${size}. Using A4 as default.`)\r\n safeSize = \"A4\"\r\n }\r\n\r\n // Validar orientation\r\n const validOrientations = [\"vertical\", \"horizontal\", \"portrait\", \"landscape\", \"h\", \"v\"]\r\n const normalizedOrientation = typeof orientation === \"string\" ? orientation.toLowerCase() : \"vertical\"\r\n if (!validOrientations.includes(normalizedOrientation)) {\r\n console.warn(`Invalid orientation: ${orientation}. Using vertical as default.`)\r\n safeOrientation = \"vertical\"\r\n } else {\r\n // Mantener el valor original si es válido, respetando alias\r\n safeOrientation = orientation\r\n }\r\n\r\n // Validar backgroundColor\r\n if (typeof backgroundColor !== \"string\") {\r\n console.warn(`Invalid background color: ${backgroundColor}. Using white as default.`)\r\n safeBackgroundColor = \"white\"\r\n }\r\n\r\n // Validar margen\r\n const validMargins = [\"apa\", \"normal\", \"estrecho\", \"ancho\"]\r\n if (!validMargins.includes(margen)) {\r\n console.warn(`Invalid margin type: ${margen}. Using normal as default.`)\r\n safeMargen = \"normal\"\r\n }\r\n\r\n // Validar lines\r\n if (typeof lines !== \"number\" || lines < 1) {\r\n console.warn(`Invalid lines value: ${lines}. Using 1 as default.`)\r\n\r\n }\r\n } catch (e) {\r\n console.warn(\"Error processing props in LayoutPDF:\", e)\r\n }\r\n\r\n // Transform orientation from \"vertical\"/\"horizontal\" to \"portrait\"/\"landscape\"\r\n const transformOrientation = (orientation: \"vertical\" | \"horizontal\" | \"h\" | \"v\" | \"portrait\" | \"landscape\"): \"portrait\" | \"landscape\" => {\r\n switch (orientation) {\r\n case \"vertical\":\r\n case \"portrait\":\r\n case \"v\":\r\n return \"portrait\"\r\n case \"horizontal\":\r\n case \"landscape\":\r\n case \"h\":\r\n return \"landscape\"\r\n default:\r\n console.warn(`Unrecognized orientation: ${orientation}. Using portrait as default.`)\r\n return \"portrait\"\r\n }\r\n }\r\n\r\n // Function to calculate footer position based on size and orientation\r\n const getFooterPosition = (pageSize: string, orientation: \"portrait\" | \"landscape\", footerHeight: number) => {\r\n // Dimensions in millimeters according to ISO 216 standard\r\n const pageDimensions: Record<string, { width: number; height: number }> = {\r\n A0: { width: 841, height: 1189 },\r\n A1: { width: 594, height: 841 },\r\n A2: { width: 420, height: 594 },\r\n A3: { width: 297, height: 420 },\r\n A4: { width: 210, height: 297 },\r\n A5: { width: 148, height: 210 },\r\n A6: { width: 105, height: 148 },\r\n A7: { width: 74, height: 105 },\r\n A8: { width: 52, height: 74 },\r\n A9: { width: 37, height: 52 },\r\n LETTER: { width: 216, height: 279 },\r\n LEGAL: { width: 216, height: 356 },\r\n TABLOID: { width: 279, height: 432 },\r\n }\r\n\r\n // Convert mm to points (1mm = 2.834645669 points)\r\n const mmToPoints = 2.834645669\r\n\r\n const dimensions = pageDimensions[pageSize.toUpperCase()]\r\n if (!dimensions) {\r\n // A4 default in points\r\n return orientation === \"landscape\" ? 595 - footerHeight - 10 : 842 - footerHeight - 10\r\n }\r\n\r\n const heightInPoints = dimensions.height * mmToPoints\r\n const widthInPoints = dimensions.width * mmToPoints\r\n\r\n // Subtract footer height and additional margin\r\n return orientation === \"landscape\"\r\n ? widthInPoints - footerHeight - 10\r\n : heightInPoints - footerHeight - 10\r\n }\r\n\r\n const pdfOrientation = transformOrientation(safeOrientation)\r\n\r\n // Obtener márgenes según el tipo seleccionado\r\n const margins = getMargins(safeMargen, safeSize)\r\n\r\n // Calculate footer position based on calculated footer height\r\n const footerTop = getFooterPosition(safeSize, pdfOrientation, footerHeight)\r\n\r\n // Function to render grid (ruler)\r\n const renderGrid = () => {\r\n if (!rule) return null\r\n\r\n // 1 cm = 28.3465 points\r\n const cmToPoints = 28.3465\r\n\r\n // Get page dimensions in points\r\n const pageDimensions: Record<string, { width: number; height: number }> = {\r\n A0: { width: 841 * 2.834645669, height: 1189 * 2.834645669 },\r\n A1: { width: 594 * 2.834645669, height: 841 * 2.834645669 },\r\n A2: { width: 420 * 2.834645669, height: 594 * 2.834645669 },\r\n A3: { width: 297 * 2.834645669, height: 420 * 2.834645669 },\r\n A4: { width: 210 * 2.834645669, height: 297 * 2.834645669 },\r\n A5: { width: 148 * 2.834645669, height: 210 * 2.834645669 },\r\n A6: { width: 105 * 2.834645669, height: 148 * 2.834645669 },\r\n A7: { width: 74 * 2.834645669, height: 105 * 2.834645669 },\r\n A8: { width: 52 * 2.834645669, height: 74 * 2.834645669 },\r\n A9: { width: 37 * 2.834645669, height: 52 * 2.834645669 },\r\n LETTER: { width: 216 * 2.834645669, height: 279 * 2.834645669 },\r\n LEGAL: { width: 216 * 2.834645669, height: 356 * 2.834645669 },\r\n TABLOID: { width: 279 * 2.834645669, height: 432 * 2.834645669 },\r\n }\r\n\r\n const dimensions = pageDimensions[safeSize.toUpperCase()] || pageDimensions.A4\r\n const pageWidth = pdfOrientation === \"landscape\" ? dimensions.height : dimensions.width\r\n const pageHeight = pdfOrientation === \"landscape\" ? dimensions.width : dimensions.height\r\n\r\n const horizontalLines = []\r\n const verticalLines = []\r\n\r\n // Generate horizontal lines (every cm)\r\n for (let i = 0; i <= Math.ceil(pageHeight / cmToPoints); i++) {\r\n horizontalLines.push(\r\n <View\r\n key={`h-${i}`}\r\n style={{\r\n position: \"absolute\",\r\n top: i * cmToPoints,\r\n left: 0,\r\n right: 0,\r\n height: i % 5 === 0 ? 1 : 0.5,\r\n backgroundColor: i % 5 === 0 ? \"rgba(255, 0, 0, 0.8)\" : \"rgba(100, 100, 100, 0.5)\",\r\n }}\r\n />\r\n )\r\n }\r\n\r\n // Generate vertical lines (every cm)\r\n for (let i = 0; i <= Math.ceil(pageWidth / cmToPoints); i++) {\r\n verticalLines.push(\r\n <View\r\n key={`v-${i}`}\r\n style={{\r\n position: \"absolute\",\r\n left: i * cmToPoints,\r\n top: 0,\r\n bottom: 0,\r\n width: i % 5 === 0 ? 1 : 0.5,\r\n backgroundColor: i % 5 === 0 ? \"rgba(255, 0, 0, 0.8)\" : \"rgba(100, 100, 100, 0.5)\",\r\n }}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <View style={{ position: \"absolute\", top: 0, left: 0, right: 0, bottom: 0 }} fixed>\r\n {horizontalLines}\r\n {verticalLines}\r\n </View>\r\n )\r\n }\r\n\r\n const pageStyle = {\r\n ...styles.page,\r\n backgroundColor: safeBackgroundColor,\r\n paddingTop: (style?.paddingTop ?? style?.padding ?? margins.paddingTop),\r\n paddingRight: (style?.paddingRight ?? style?.padding ?? margins.paddingRight),\r\n paddingLeft: (style?.paddingLeft ?? style?.padding ?? margins.paddingLeft),\r\n paddingBottom: (style?.paddingBottom ?? style?.padding ?? margins.paddingBottom) + footerHeight,\r\n ...( (() => { const { padding, paddingTop, paddingRight, paddingBottom, paddingLeft, ...rest } = style || {}; return rest })() ),\r\n }\r\n\r\n const footerStyle = {\r\n ...styles.footer,\r\n top: footerTop,\r\n height: footerHeight,\r\n display: \"flex\" as const,\r\n flexDirection: \"column\" as const,\r\n justifyContent: \"center\" as const,\r\n alignItems: \"center\" as const,\r\n fontSize: 10,\r\n color: \"grey\"\r\n }\r\n\r\n return (\r\n <Document>\r\n <Page size={safeSize as any} orientation={pdfOrientation} style={pageStyle} wrap>\r\n {renderGrid()}\r\n <View style={{ paddingBottom: footerHeight }}>\r\n {children}\r\n </View>\r\n\r\n <View style={footerStyle} fixed>\r\n {footer && (footer)}\r\n {pagination && (\r\n <Text style={{ fontSize: footerStyle.fontSize }} render={({ pageNumber, totalPages }) => (\r\n `${pageNumber} / ${totalPages}`\r\n )} />\r\n )}\r\n </View>\r\n\r\n </Page>\r\n </Document>\r\n )\r\n}\r\n\r\nexport default LayoutPDF\r\n","import React from \"react\"\r\nimport { Image, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ImgProps {\r\n src?: string\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n image: {\r\n width: \"100%\",\r\n height: \"auto\",\r\n marginBottom: 14,\r\n },\r\n})\r\n\r\nconst Img: React.FC<ImgProps> = ({ src, style }) => {\r\n return <Image src={src} style={[styles.image, style]} />\r\n}\r\n\r\nexport default Img\r\n\r\n","import React from \"react\"\r\nimport { View, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface PositionProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n left: {\r\n textAlign: \"left\",\r\n },\r\n right: {\r\n textAlign: \"right\",\r\n },\r\n center: {\r\n textAlign: \"center\",\r\n },\r\n})\r\n\r\nconst Left: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.left, style]}>{children}</View>\r\n}\r\n\r\nconst Right: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.right, style]}>{children}</View>\r\n}\r\n\r\nconst Center: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.center, style]}>{children}</View>\r\n}\r\n\r\nexport { Left, Right, Center }\r\n\r\n","import React from \"react\"\r\nimport { Text, StyleSheet, Link, View } from \"@react-pdf/renderer\"\r\n\r\ninterface TextProps {\r\n children: React.ReactNode\r\n style?: any\r\n href?: string\r\n}\r\n\r\ninterface DivProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface HeaderProps {\r\n children: React.ReactNode\r\n style?: any\r\n fixed?: boolean\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n p: {\r\n fontSize: 12,\r\n marginBottom: 5,\r\n lineHeight: 1.2,\r\n },\r\n h1: {\r\n fontSize: 24,\r\n fontWeight: \"bold\",\r\n marginBottom: 12,\r\n },\r\n h2: {\r\n fontSize: 20,\r\n fontWeight: \"bold\",\r\n marginBottom: 10,\r\n },\r\n h3: {\r\n fontSize: 18,\r\n fontWeight: \"bold\",\r\n marginBottom: 8,\r\n },\r\n h4: {\r\n fontSize: 16,\r\n fontWeight: \"bold\",\r\n marginBottom: 6,\r\n },\r\n h5: {\r\n fontSize: 14,\r\n fontWeight: \"bold\",\r\n marginBottom: 4,\r\n },\r\n h6: {\r\n fontSize: 12,\r\n fontWeight: \"bold\",\r\n marginBottom: 0,\r\n },\r\n strong: {\r\n fontWeight: \"bold\",\r\n },\r\n em: {\r\n fontStyle: \"italic\",\r\n },\r\n u: {\r\n textDecoration: \"underline\",\r\n },\r\n small: {\r\n fontSize: 10,\r\n },\r\n blockquote: {\r\n marginLeft: 20,\r\n marginRight: 20,\r\n fontStyle: \"italic\",\r\n borderLeft: \"4px solid #ccc\",\r\n paddingLeft: 10,\r\n },\r\n mark: {\r\n backgroundColor: \"yellow\",\r\n },\r\n A: {\r\n color: \"#3d65fd\",\r\n textDecoration: \"none\",\r\n },\r\n br: {\r\n width: \"100%\",\r\n height: 1,\r\n marginTop: 7,\r\n marginBottom: 7,\r\n },\r\n header: {\r\n position: \"absolute\",\r\n top: 20,\r\n left: 0,\r\n right: 0,\r\n textAlign: \"center\",\r\n fontSize: 10,\r\n color: \"#666\",\r\n paddingHorizontal: 40,\r\n },\r\n hr: {\r\n width: \"100%\",\r\n borderTop: \"1px solid #000\",\r\n marginTop: 8,\r\n marginBottom: 8,\r\n },\r\n})\r\n\r\nconst P: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.p, style]}>{children}</Text>\r\n}\r\n\r\nconst H1: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h1, style]}>{children}</Text>\r\n}\r\n\r\nconst H2: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h2, style]}>{children}</Text>\r\n}\r\n\r\nconst H3: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h3, style]}>{children}</Text>\r\n}\r\n\r\nconst H4: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h4, style]}>{children}</Text>\r\n}\r\n\r\nconst H5: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h5, style]}>{children}</Text>\r\n}\r\n\r\nconst H6: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h6, style]}>{children}</Text>\r\n}\r\n\r\nconst Strong: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.strong, style]}>{children}</Text>\r\n}\r\n\r\nconst Em: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.em, style]}>{children}</Text>\r\n}\r\n\r\nconst U: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.u, style]}>{children}</Text>\r\n}\r\n\r\nconst Small: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.small, style]}>{children}</Text>\r\n}\r\n\r\nconst Blockquote: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.blockquote, style]}>{children}</Text>\r\n}\r\n\r\nconst Mark: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.mark, style]}>{children}</Text>\r\n}\r\n\r\nconst A: React.FC<TextProps> = ({ children, style, href }) => {\r\n return (\r\n <Link src={href} style={[styles.A, style]}>\r\n {children}\r\n </Link>\r\n )\r\n}\r\n\r\nconst BR: React.FC<{ style?: any }> = ({ style }) => {\r\n return <Text style={[styles.br, style]}>{\"\\n\"}</Text>\r\n}\r\n\r\nconst HR: React.FC<{ style?: any }> = ({ style }) => {\r\n return <View style={[styles.hr, style]} />\r\n}\r\n\r\nconst Span: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[style]}>{children}</Text>\r\n}\r\n\r\nconst Header: React.FC<HeaderProps> = ({ children, style, fixed = false }) => {\r\n return (\r\n <View style={[styles.header, style]} fixed={fixed}>\r\n {typeof children === \"string\" ? <Text>{children}</Text> : children}\r\n </View>\r\n )\r\n}\r\n\r\nconst Div: React.FC<DivProps> = ({ children, style }) => {\r\n return <View style={style}>{children}</View>\r\n}\r\n\r\nexport { P, A, H1, H2, H3, H4, H5, H6, Strong, Em, U, Small, Blockquote, Mark, Span, BR, HR, Header, Div }","import React, { createContext, useContext } from \"react\";\r\nimport { View, Text, StyleSheet } from \"@react-pdf/renderer\";\r\n\r\ninterface TableProps {\r\n children: React.ReactNode;\r\n style?: any;\r\n cellHeight?: number;\r\n}\r\n\r\ninterface TheadProps {\r\n children: React.ReactNode;\r\n style?: any;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}\r\n\r\ninterface CellProps {\r\n children?: React.ReactNode;\r\n style?: any;\r\n width?: string | number;\r\n height?: string | number;\r\n colSpan?: number;\r\n isLast?: boolean;\r\n isLastRow?: boolean;\r\n isOdd?: boolean;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}\r\n\r\n// Context para pasar cellHeight y textAlign a los componentes hijos\r\nconst TableContext = createContext<{\r\n cellHeight: number;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}>({\r\n cellHeight: 22,\r\n textAlign: \"left\",\r\n});\r\n\r\nconst styles = StyleSheet.create({\r\n table: {\r\n width: \"100%\",\r\n borderWidth: 1,\r\n borderColor: \"#000\",\r\n marginBottom: 20,\r\n },\r\n thead: {\r\n backgroundColor: \"#ccc\",\r\n },\r\n tr: {\r\n flexDirection: \"row\",\r\n },\r\n textBold: {\r\n fontSize: 10,\r\n fontWeight: \"bold\",\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n justifyContent: \"center\",\r\n\r\n },\r\n text: {\r\n fontSize: 10,\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n justifyContent: \"center\",\r\n\r\n },\r\n zebraOdd: {\r\n backgroundColor: \"#eeeeee\",\r\n },\r\n});\r\n\r\nconst Table: React.FC<TableProps> = ({ children, style, cellHeight = 22 }) => (\r\n <TableContext.Provider value={{ cellHeight, textAlign: \"left\" }}>\r\n <View style={[styles.table, style]}>{children}</View>\r\n </TableContext.Provider>\r\n);\r\n\r\nconst Thead: React.FC<TheadProps> = ({\r\n children,\r\n style,\r\n textAlign = \"left\",\r\n}) => {\r\n const { cellHeight } = useContext(TableContext);\r\n\r\n return (\r\n <TableContext.Provider value={{ cellHeight, textAlign }}>\r\n <View style={[styles.thead, style]}>{children}</View>\r\n </TableContext.Provider>\r\n );\r\n};\r\n\r\nconst Tbody: React.FC<TableProps> = ({ children }) => {\r\n const rows = React.Children.toArray(children) as React.ReactElement<any>[];\r\n const count = rows.length;\r\n return (\r\n <>\r\n {rows.map((row, idx) =>\r\n React.cloneElement(row, {\r\n isLastRow: idx === count - 1,\r\n isOdd: idx % 2 === 1,\r\n })\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst Tr: React.FC<TableProps & { isLastRow?: boolean; isOdd?: boolean }> = ({\r\n children,\r\n style,\r\n isLastRow = false,\r\n isOdd = false,\r\n}) => {\r\n const elements = React.Children.toArray(\r\n children\r\n ) as React.ReactElement<CellProps>[];\r\n const count = elements.length;\r\n return (\r\n <View style={[styles.tr, style]}>\r\n {elements.map((child, idx) => {\r\n const isLast = idx === count - 1;\r\n const width = `${(100 / count).toFixed(2)}%`;\r\n return React.cloneElement(child, { width, isLast, isLastRow, isOdd });\r\n })}\r\n </View>\r\n );\r\n};\r\n\r\nconst Th: React.FC<CellProps> = ({\r\n children,\r\n style,\r\n width,\r\n height,\r\n colSpan,\r\n isLast = false,\r\n isLastRow = false,\r\n textAlign: propTextAlign,\r\n}) => {\r\n const { cellHeight, textAlign: contextTextAlign } = useContext(TableContext);\r\n\r\n // Usar textAlign del prop si está definido, sino el del contexto\r\n const finalTextAlign = propTextAlign || contextTextAlign || \"left\";\r\n\r\n const baseWidth =\r\n typeof width === \"string\" && colSpan\r\n ? `${(parseFloat(width) * colSpan).toFixed(2)}%`\r\n : width;\r\n\r\n const cellHeightValue = height !== undefined ? height : cellHeight;\r\n\r\n const borders = {\r\n borderRightWidth: isLast ? 0 : 1,\r\n borderBottomWidth: isLastRow ? 0 : 1,\r\n borderColor: \"#000\",\r\n minHeight: cellHeightValue,\r\n };\r\n\r\n return (\r\n <View\r\n style={[\r\n styles.textBold,\r\n {\r\n width: baseWidth,\r\n },\r\n borders,\r\n style,\r\n ]}\r\n >\r\n <Text style={{ textAlign: finalTextAlign }}>{children}</Text>\r\n </View>\r\n );\r\n};\r\n\r\nconst Td: React.FC<CellProps> = ({\r\n children,\r\n style,\r\n width,\r\n height,\r\n colSpan,\r\n isLast = false,\r\n isLastRow = false,\r\n isOdd = false,\r\n textAlign: propTextAlign,\r\n}) => {\r\n const { cellHeight, textAlign: contextTextAlign } = useContext(TableContext);\r\n\r\n // Usar textAlign del prop si está definido, sino el del contexto, sino 'left'\r\n const finalTextAlign = propTextAlign || contextTextAlign || \"left\";\r\n\r\n const baseWidth =\r\n typeof width === \"string\" && colSpan\r\n ? `${(parseFloat(width) * colSpan).toFixed(2)}%`\r\n : width;\r\n\r\n const cellHeightValue = height !== undefined ? height : cellHeight;\r\n\r\n const borders = {\r\n borderRightWidth: isLast ? 0 : 1,\r\n borderBottomWidth: isLastRow ? 0 : 1,\r\n borderColor: \"#000\",\r\n minHeight: cellHeightValue,\r\n };\r\n\r\n return (\r\n <View\r\n style={[\r\n styles.text,\r\n isOdd && styles.zebraOdd,\r\n {\r\n width: baseWidth,\r\n },\r\n borders,\r\n style,\r\n ]}\r\n >\r\n <Text style={{ textAlign: finalTextAlign }}>{children}</Text>\r\n </View>\r\n );\r\n};\r\n\r\nexport { Table, Thead, Tbody, Tr, Th, Td };\r\n","import React from \"react\"\r\nimport { View, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ContainerProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface RowProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface ColProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n width: \"100%\",\r\n paddingHorizontal: 20,\r\n },\r\n row: {\r\n flexDirection: \"row\",\r\n flexWrap: \"wrap\",\r\n marginHorizontal: -5,\r\n },\r\n col: {\r\n paddingHorizontal: 5,\r\n },\r\n col1: { width: \"8.33%\" },\r\n col2: { width: \"16.66%\" },\r\n col3: { width: \"25%\" },\r\n col4: { width: \"33.33%\" },\r\n col5: { width: \"41.66%\" },\r\n col6: { width: \"50%\" },\r\n col7: { width: \"58.33%\" },\r\n col8: { width: \"66.66%\" },\r\n col9: { width: \"75%\" },\r\n col10: { width: \"83.33%\" },\r\n col11: { width: \"91.66%\" },\r\n col12: { width: \"100%\" },\r\n})\r\n\r\nexport const Container: React.FC<ContainerProps> = ({ children, style }) => {\r\n return <View style={[styles.container, style]}>{children}</View>\r\n}\r\n\r\nexport const Row: React.FC<RowProps> = ({ children, style }) => {\r\n return <View style={[styles.row, style]}>{children}</View>\r\n}\r\n\r\nexport const Col1: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col1, style]}>{children}</View>\r\n}\r\n\r\nexport const Col2: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col2, style]}>{children}</View>\r\n}\r\n\r\nexport const Col3: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col3, style]}>{children}</View>\r\n}\r\n\r\nexport const Col4: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col4, style]}>{children}</View>\r\n}\r\n\r\nexport const Col5: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col5, style]}>{children}</View>\r\n}\r\n\r\nexport const Col6: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col6, style]}>{children}</View>\r\n}\r\n\r\nexport const Col7: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col7, style]}>{children}</View>\r\n}\r\n\r\nexport const Col8: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col8, style]}>{children}</View>\r\n}\r\n\r\nexport const Col9: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col9, style]}>{children}</View>\r\n}\r\n\r\nexport const Col10: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col10, style]}>{children}</View>\r\n}\r\n\r\nexport const Col11: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col11, style]}>{children}</View>\r\n}\r\n\r\nexport const Col12: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col12, style]}>{children}</View>\r\n}\r\n\r\n","import QRCode from \"qrcode\"\r\n\r\ninterface QROptions {\r\n value: string\r\n size?: number\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n logoImage?: string\r\n logoWidth?: number\r\n logoHeight?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nexport const generateQRAsBase64 = async ({\r\n value,\r\n size = 150,\r\n colorDark = \"#000000\",\r\n colorLight = \"#ffffff\",\r\n margin = 0,\r\n errorCorrectionLevel = \"M\",\r\n}: QROptions): Promise<string> => {\r\n try {\r\n // Configuración para QRCode\r\n const options = {\r\n errorCorrectionLevel: errorCorrectionLevel,\r\n type: \"image/png\" as const,\r\n quality: 0.92,\r\n margin: margin,\r\n color: {\r\n dark: colorDark,\r\n light: colorLight,\r\n },\r\n width: size,\r\n }\r\n\r\n // Generar el código QR como base64\r\n const qrDataUrl = QRCode.toDataURL(value, options)\r\n return qrDataUrl\r\n } catch (error) {\r\n console.error(\"Error generando QR:\", error)\r\n return \"\"\r\n }\r\n}\r\n\r\n// Función para añadir un logo al QR generado\r\nexport const addLogoToQR = async (\r\n qrDataUrl: string,\r\n logoUrl: string,\r\n logoWidth: number,\r\n logoHeight: number,\r\n): Promise<string> => {\r\n return new Promise(async (resolve) => {\r\n if (!qrDataUrl || !logoUrl) {\r\n resolve(qrDataUrl)\r\n return\r\n }\r\n\r\n try {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n let canvas: any;\r\n let ctx: any;\r\n let ImageConstructor: any;\r\n\r\n if (isBrowser) {\r\n canvas = document.createElement(\"canvas\")\r\n ctx = canvas.getContext(\"2d\")\r\n ImageConstructor = window.Image;\r\n } else {\r\n // Node environment\r\n try {\r\n // Use dynamic imports to avoid bundling canvas in browser build if possible\r\n // although typically 'canvas' is excluded from browser bundles or shimmed.\r\n const { createCanvas, Image } = await import('canvas');\r\n canvas = createCanvas(100, 100); // Initial size, will be resized\r\n ctx = canvas.getContext(\"2d\");\r\n ImageConstructor = Image;\r\n } catch (e) {\r\n console.error(\"Canvas not available in Node environment for addLogoToQR\", e);\r\n resolve(qrDataUrl);\r\n return;\r\n }\r\n }\r\n\r\n if (!ctx) {\r\n resolve(qrDataUrl)\r\n return\r\n }\r\n\r\n // Cargar la imagen del QR\r\n const qrImage = new ImageConstructor()\r\n // crossOrigin is only needed in browser usually, but node-canvas might support/ignore it\r\n if (isBrowser) qrImage.crossOrigin = \"anonymous\"\r\n \r\n qrImage.onload = () => {\r\n // Establecer el tamaño del canvas\r\n canvas.width = qrImage.width\r\n canvas.height = qrImage.height\r\n\r\n // Dibujar el QR en el canvas\r\n ctx.drawImage(qrImage, 0, 0, canvas.width, canvas.height)\r\n\r\n // Cargar el logo\r\n const logoImage = new ImageConstructor()\r\n if (isBrowser) logoImage.crossOrigin = \"anonymous\"\r\n \r\n logoImage.onload = () => {\r\n // Calcular la posición central para el logo\r\n const x = (canvas.width - logoWidth) / 2\r\n const y = (canvas.height - logoHeight) / 2\r\n\r\n // Dibujar un fondo blanco para el logo (opcional)\r\n ctx.fillStyle = \"#FFFFFF\"\r\n ctx.fillRect(x - 5, y - 5, logoWidth + 10, logoHeight + 10)\r\n\r\n // Dibujar el logo\r\n ctx.drawImage(logoImage, x, y, logoWidth, logoHeight)\r\n\r\n // Convertir el canvas a base64\r\n const finalQrDataUrl = canvas.toDataURL(\"image/png\")\r\n resolve(finalQrDataUrl)\r\n }\r\n\r\n logoImage.onerror = (err: any) => {\r\n console.error(\"Error cargando el logo:\", err)\r\n resolve(qrDataUrl) // Devolver el QR sin logo en caso de error\r\n }\r\n\r\n logoImage.src = logoUrl\r\n }\r\n\r\n qrImage.onerror = (err: any) => {\r\n console.error(\"Error cargando el QR:\", err)\r\n resolve(\"\")\r\n }\r\n\r\n qrImage.src = qrDataUrl\r\n } catch (error) {\r\n console.error(\"Error procesando el QR con logo:\", error)\r\n resolve(qrDataUrl) // Devolver el QR sin logo en caso de error\r\n }\r\n })\r\n}\r\n","\"use client\"\r\n\r\nimport React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\nimport { useEffect, useState } from \"react\"\r\nimport { generateQRAsBase64, addLogoToQR } from \"./QRGenerator\"\r\n\r\n// Define the props for the QR component\r\ninterface QRProps {\r\n value: string\r\n size?: number\r\n style?: any\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n logo?: string\r\n logoWidth?: number\r\n logoHeight?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n qrContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n margin: 10,\r\n },\r\n})\r\n\r\n// Mapa para convertir niveles de corrección numéricos a letras\r\nconst errorLevelMap: Record<number, \"L\" | \"M\" | \"Q\" | \"H\"> = {\r\n 0: \"L\",\r\n 1: \"M\",\r\n 2: \"Q\",\r\n 3: \"H\",\r\n}\r\n\r\n// Este componente funciona con React PDF\r\nconst QR: React.FC<QRProps> = ({\r\n value,\r\n size = 150,\r\n style,\r\n colorDark = \"#000000\",\r\n colorLight = \"#ffffff\",\r\n margin = 0,\r\n logo = \"\",\r\n logoWidth = 30,\r\n logoHeight = 30,\r\n errorCorrectionLevel = logo ? \"H\" : \"M\",\r\n}) => {\r\n const [qrDataUrl, setQrDataUrl] = useState<string>(\"\")\r\n\r\n // Generar el código QR cuando el componente se monta o cuando cambian las props\r\n useEffect(() => {\r\n const generateQR = async () => {\r\n try {\r\n // Primero generamos el QR básico\r\n const baseQrDataUrl = await generateQRAsBase64({\r\n value,\r\n size,\r\n colorDark,\r\n colorLight,\r\n margin,\r\n errorCorrectionLevel:\r\n typeof errorCorrectionLevel === \"number\"\r\n ? errorLevelMap[errorCorrectionLevel] || \"M\"\r\n : errorCorrectionLevel,\r\n })\r\n\r\n // Si hay un logo, lo añadimos al QR\r\n if (logo && logoWidth && logoHeight) {\r\n const qrWithLogo = await addLogoToQR(baseQrDataUrl, logo, logoWidth, logoHeight)\r\n setQrDataUrl(qrWithLogo)\r\n } else {\r\n setQrDataUrl(baseQrDataUrl)\r\n }\r\n } catch (error) {\r\n console.error(\"Error generando QR:\", error)\r\n // En caso de error, generamos un QR básico usando una API externa\r\n const fallbackUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(\r\n value,\r\n )}&size=${size}x${size}&color=${encodeURIComponent(colorDark.replace(\"#\", \"\"))}&bgcolor=${encodeURIComponent(\r\n colorLight.replace(\"#\", \"\"),\r\n )}`\r\n setQrDataUrl(fallbackUrl)\r\n }\r\n }\r\n\r\n generateQR()\r\n }, [value, size, colorDark, colorLight, margin, logo, logoWidth, logoHeight, errorCorrectionLevel])\r\n\r\n // Mostrar un QR de respaldo mientras se genera el QR personalizado\r\n const fallbackUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(\r\n value,\r\n )}&size=${size}x${size}`\r\n\r\n return (\r\n <View style={[styles.qrContainer, style]}>\r\n <Image src={qrDataUrl || fallbackUrl} style={{ width: size, height: size }} />\r\n </View>\r\n )\r\n}\r\n\r\nexport default QR\r\n\r\n","import { generateQRAsBase64 } from \"./QRGenerator\"\r\n\r\nexport interface QRV2Options {\r\n value: string\r\n width?: number\r\n height?: number\r\n image?: string\r\n dotsOptions?: {\r\n color?: string\r\n type?: \"rounded\" | \"dots\" | \"classy\" | \"classy-rounded\" | \"square\" | \"extra-rounded\"\r\n }\r\n backgroundOptions?: {\r\n color?: string\r\n }\r\n imageOptions?: {\r\n crossOrigin?: string\r\n margin?: number\r\n imageSize?: number // 0-1 (e.g., 0.4)\r\n }\r\n cornersSquareOptions?: {\r\n type?: \"dot\" | \"square\" | \"extra-rounded\"\r\n color?: string\r\n }\r\n cornersDotOptions?: {\r\n type?: \"dot\" | \"square\"\r\n color?: string\r\n }\r\n // Fallback options\r\n fallbackColorDark?: string\r\n fallbackColorLight?: string\r\n fallbackMargin?: number\r\n fallbackErrorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nexport const generateQRV2AsBase64 = async (options: QRV2Options): Promise<string> => {\r\n try {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n \r\n let QRCodeStylingConstructor: any;\r\n let extraOptions = {};\r\n\r\n if (isBrowser) {\r\n // Dynamic import for browser\r\n try {\r\n const mod = await import('qr-code-styling');\r\n QRCodeStylingConstructor = mod.default || mod;\r\n } catch (e) {\r\n console.error(\"Failed to load qr-code-styling in browser\", e);\r\n throw e;\r\n }\r\n } else {\r\n // Node environment\r\n // We use variable names to prevent bundlers (like Vite) from analyzing/bundling these dependencies\r\n // when building for the browser.\r\n const jsdomName = \"jsdom\";\r\n const canvasName = \"canvas\";\r\n const qrCommonName = \"qr-code-styling/lib/qr-code-styling.common.js\";\r\n \r\n try {\r\n const [jsdomMod, canvasMod, qrCommonMod] = await Promise.all([\r\n import(/* @vite-ignore */ jsdomName),\r\n import(/* @vite-ignore */ canvasName),\r\n import(/* @vite-ignore */ qrCommonName)\r\n ]);\r\n\r\n const { JSDOM } = jsdomMod;\r\n // canvas might be default export or named export depending on version/bundling\r\n const nodeCanvas = canvasMod.default || canvasMod;\r\n const { QRCodeStyling } = qrCommonMod;\r\n\r\n QRCodeStylingConstructor = QRCodeStyling;\r\n extraOptions = {\r\n jsdom: JSDOM,\r\n nodeCanvas: nodeCanvas\r\n };\r\n } catch (e) {\r\n console.error(\"Failed to load Node dependencies for QR generation\", e);\r\n throw e;\r\n }\r\n }\r\n\r\n const width = typeof options.width === \"number\" && isFinite(options.width) ? Math.round(options.width) : 300;\r\n const height = typeof options.height === \"number\" && isFinite(options.height) ? Math.round(options.height) : 300;\r\n \r\n\r\n const qrOptions = {\r\n width,\r\n height,\r\n data: options.value,\r\n image: options.image,\r\n dotsOptions: options.dotsOptions,\r\n backgroundOptions: {\r\n // Default to white background if not specified to prevent transparency issues\r\n // The \"blue stripe\" or weird artifacts can happen if the background is transparent or handled incorrectly\r\n color: options.backgroundOptions?.color || \"#ffffff\",\r\n ...options.backgroundOptions\r\n },\r\n imageOptions: {\r\n crossOrigin: \"anonymous\",\r\n margin: typeof options.imageOptions?.margin === \"number\" && isFinite(options.imageOptions.margin) ? options.imageOptions.margin : 0,\r\n saveAsBlob: true,\r\n imageSize: typeof options.imageOptions?.imageSize === \"number\" && isFinite(options.imageOptions.imageSize)\r\n ? Math.max(0, Math.min(1, options.imageOptions.imageSize))\r\n : 0.4,\r\n },\r\n cornersSquareOptions: options.cornersSquareOptions,\r\n cornersDotOptions: options.cornersDotOptions,\r\n }\r\n\r\n // @ts-ignore\r\n const qrCodeImage = new QRCodeStylingConstructor({\r\n type: \"png\", // Force PNG type\r\n ...extraOptions,\r\n ...qrOptions,\r\n })\r\n\r\n const rawData = await qrCodeImage.getRawData(\"png\")\r\n \r\n if (!rawData) throw new Error(\"Failed to generate raw data from qr-code-styling\")\r\n\r\n // Handle Blob (Browser) vs Buffer (Node)\r\n if (isBrowser) {\r\n if (rawData instanceof Blob) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n if (typeof reader.result === 'string') {\r\n resolve(reader.result);\r\n } else {\r\n reject(new Error(\"Failed to convert blob to base64\"));\r\n }\r\n };\r\n reader.onerror = reject;\r\n reader.readAsDataURL(rawData);\r\n });\r\n } else {\r\n // Sometimes in browser it might return something else if configured differently?\r\n // But usually Blob.\r\n console.warn(\"Unexpected rawData type in browser:\", rawData);\r\n }\r\n } \r\n \r\n // Node environment usually returns Buffer\r\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(rawData)) {\r\n return `data:image/png;base64,${rawData.toString(\"base64\")}`;\r\n }\r\n \r\n // Fallback if type is unexpected\r\n // Try to handle if it's a blob-like object in Node (unlikely but possible with polyfills)\r\n throw new Error(`Unexpected raw data type: ${typeof rawData}`);\r\n\r\n } catch (error) {\r\n console.error(\"Error generating QR V2, falling back to V1:\", error)\r\n \r\n // Fallback to existing implementation\r\n return generateQRAsBase64({\r\n value: options.value,\r\n size: options.width,\r\n colorDark: options.fallbackColorDark || options.dotsOptions?.color,\r\n colorLight: options.fallbackColorLight || options.backgroundOptions?.color,\r\n margin: options.fallbackMargin || 0,\r\n errorCorrectionLevel: options.fallbackErrorCorrectionLevel || \"M\",\r\n })\r\n }\r\n}\r\n","\"use client\"\r\n\r\nimport React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\nimport { generateQRV2AsBase64, type QRV2Options } from \"./QRGeneratorV2\"\r\n\r\n// Define props\r\nexport interface QRV2Props {\r\n value: string\r\n size?: number\r\n style?: any\r\n image?: string\r\n dotsOptions?: QRV2Options[\"dotsOptions\"]\r\n backgroundOptions?: QRV2Options[\"backgroundOptions\"]\r\n imageOptions?: QRV2Options[\"imageOptions\"]\r\n cornersSquareOptions?: QRV2Options[\"cornersSquareOptions\"]\r\n cornersDotOptions?: QRV2Options[\"cornersDotOptions\"]\r\n // Fallback/Compatibility props\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n qrContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n})\r\n\r\nconst QRV2: React.FC<QRV2Props> = ({\r\n value,\r\n size = 300,\r\n style,\r\n image,\r\n dotsOptions,\r\n backgroundOptions,\r\n imageOptions,\r\n cornersSquareOptions,\r\n cornersDotOptions,\r\n colorDark,\r\n colorLight,\r\n margin,\r\n errorCorrectionLevel,\r\n}) => {\r\n return (\r\n <View style={[styles.qrContainer, style]}>\r\n {/* We pass a function that returns the promise/result or use the state if available. \r\n Actually, we can pass the promise directly to src! */}\r\n <Image \r\n style={{ width: size, height: size }} \r\n src={generateQRV2AsBase64({\r\n value,\r\n width: size,\r\n height: size,\r\n image,\r\n dotsOptions: dotsOptions || (colorDark ? { color: colorDark } : undefined),\r\n backgroundOptions: backgroundOptions || (colorLight ? { color: colorLight } : undefined),\r\n imageOptions: {\r\n ...imageOptions,\r\n margin: imageOptions?.margin !== undefined ? imageOptions.margin : margin\r\n },\r\n cornersSquareOptions,\r\n cornersDotOptions,\r\n fallbackColorDark: colorDark,\r\n fallbackColorLight: colorLight,\r\n fallbackMargin: margin,\r\n fallbackErrorCorrectionLevel: errorCorrectionLevel,\r\n })} \r\n />\r\n </View>\r\n )\r\n}\r\n\r\nexport default QRV2\r\n","import React from \"react\"\r\nimport { View, Text, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ListProps {\r\n children: React.ReactNode\r\n style?: any\r\n start?: number // Para listas ordenadas, desde qué número empezar\r\n type?: \"disc\" | \"circle\" | \"square\" | \"decimal\" | \"lower-alpha\" | \"upper-alpha\" | \"lower-roman\" | \"upper-roman\"\r\n}\r\n\r\ninterface ListItemProps {\r\n children: React.ReactNode\r\n style?: any\r\n value?: number | string // Valor específico para este elemento de lista\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n ul: {\r\n marginBottom: 10,\r\n paddingLeft: 15,\r\n },\r\n ol: {\r\n marginBottom: 10,\r\n paddingLeft: 15,\r\n },\r\n li: {\r\n marginBottom: 5,\r\n flexDirection: \"row\",\r\n },\r\n bulletPoint: {\r\n width: 15,\r\n marginRight: 5,\r\n fontSize: 12,\r\n },\r\n itemContent: {\r\n flex: 1,\r\n },\r\n})\r\n\r\n// Función para generar marcadores de lista desordenada\r\nconst getBulletPoint = (type = \"disc\") => {\r\n switch (type) {\r\n case \"circle\":\r\n return \"○\"\r\n case \"square\":\r\n return \"■\"\r\n case \"disc\":\r\n default:\r\n return \"•\"\r\n }\r\n}\r\n\r\n// Función para generar marcadores de lista ordenada\r\nconst getOrderedMarker = (index: number, type = \"decimal\", start = 1) => {\r\n const actualIndex = start + index - 1\r\n\r\n switch (type) {\r\n case \"lower-alpha\":\r\n return String.fromCharCode(97 + (actualIndex % 26)) + \".\"\r\n case \"upper-alpha\":\r\n return String.fromCharCode(65 + (actualIndex % 26)) + \".\"\r\n case \"lower-roman\":\r\n return toRoman(actualIndex).toLowerCase() + \".\"\r\n case \"upper-roman\":\r\n return toRoman(actualIndex) + \".\"\r\n case \"decimal\":\r\n default:\r\n return actualIndex + \".\"\r\n }\r\n}\r\n\r\n// Función para convertir números a numerales romanos\r\nconst toRoman = (num: number): string => {\r\n if (num <= 0 || num > 3999) return String(num)\r\n\r\n const romanNumerals = [\r\n [\"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"],\r\n [\"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\"],\r\n [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\"],\r\n [\"\", \"M\", \"MM\", \"MMM\"],\r\n ]\r\n\r\n return (\r\n romanNumerals[3][Math.floor(num / 1000)] +\r\n romanNumerals[2][Math.floor((num % 1000) / 100)] +\r\n romanNumerals[1][Math.floor((num % 100) / 10)] +\r\n romanNumerals[0][num % 10]\r\n )\r\n}\r\n\r\n// Componente de lista desordenada (UL)\r\nexport const UL: React.FC<ListProps> = ({ children, style, type = \"disc\" }) => {\r\n // Clonar los hijos para añadir el tipo de marcador\r\n const childrenWithBullets = React.Children.map(children, (child, index) => {\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child as React.ReactElement<any>, {\r\n bulletType: type,\r\n isOrdered: false,\r\n index: index + 1,\r\n })\r\n }\r\n return child\r\n })\r\n\r\n return <View style={[styles.ul, style]}>{childrenWithBullets}</View>\r\n}\r\n\r\n// Componente de lista ordenada (OL)\r\nexport const OL: React.FC<ListProps> = ({ children, style, type = \"decimal\", start = 1 }) => {\r\n // Clonar los hijos para añadir el tipo de marcador y el índice\r\n const childrenWithNumbers = React.Children.map(children, (child, index) => {\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child as React.ReactElement<any>, {\r\n bulletType: type,\r\n isOrdered: true,\r\n index: index + 1,\r\n start,\r\n })\r\n }\r\n return child\r\n })\r\n\r\n return <View style={[styles.ol, style]}>{childrenWithNumbers}</View>\r\n}\r\n\r\n// Componente de elemento de lista (LI)\r\nexport const LI: React.FC<\r\n ListItemProps & {\r\n bulletType?: string\r\n isOrdered?: boolean\r\n index?: number\r\n start?: number\r\n }\r\n> = ({ children, style, bulletType = \"disc\", isOrdered = false, index = 1, start = 1, value }) => {\r\n // Determinar el marcador a mostrar\r\n let marker\r\n if (isOrdered) {\r\n // Si se proporciona un valor específico, usarlo en lugar del índice\r\n const actualIndex = value !== undefined ? Number(value) : index\r\n marker = getOrderedMarker(actualIndex, bulletType, start)\r\n } else {\r\n marker = getBulletPoint(bulletType)\r\n }\r\n\r\n return (\r\n <View style={[styles.li, style]}>\r\n <Text style={styles.bulletPoint}>{marker}</Text>\r\n <View style={styles.itemContent}>{typeof children === \"string\" ? <Text>{children}</Text> : children}</View>\r\n </View>\r\n )\r\n}\r\n\r\n","import React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\n\r\ninterface ImgBgProps {\r\n src: string\r\n width?: number | string\r\n height?: number | string\r\n opacity?: number\r\n children?: React.ReactNode\r\n style?: any\r\n fixed?: boolean\r\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\"\r\n objectPosition?: string // ej: \"center\", \"top\", \"left top\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n background: {\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n content: {\r\n position: \"relative\",\r\n },\r\n})\r\n\r\nconst ImgBg: React.FC<ImgBgProps> = ({\r\n src,\r\n width = \"100%\",\r\n height = \"100%\",\r\n opacity = 0.2,\r\n children,\r\n style,\r\n fixed = false,\r\n objectFit = \"cover\",\r\n objectPosition = \"center\",\r\n}) => {\r\n return (\r\n <View style={[styles.container, style]}>\r\n <Image\r\n src={src}\r\n style={[\r\n styles.background,\r\n { width, height, opacity, objectFit, objectPosition },\r\n ]}\r\n fixed={fixed}\r\n />\r\n <View style={styles.content}>{children}</View>\r\n </View>\r\n )\r\n}\r\n\r\nexport default ImgBg\r\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../frontend/src/functions/decodeBase64Pdf.ts","../../frontend/src/functions/generatePDF.ts","../../frontend/src/components/core/LayoutPDF.tsx","../../frontend/src/components/core/Img.tsx","../../frontend/src/components/core/Position.tsx","../../frontend/src/components/core/Etiquetas.tsx","../../frontend/src/components/core/Tablet.tsx","../../frontend/src/components/core/Grid.tsx","../../frontend/src/components/core/QRGenerator.ts","../../frontend/src/components/core/QR.tsx","../../frontend/src/components/core/QRGeneratorV2.ts","../../frontend/src/components/core/QRV2.tsx","../../frontend/src/components/core/Lista.tsx","../../frontend/src/components/core/ImgBg.tsx"],"names":["decodeBase64Pdf","base64","fileName","byteCharacters","byteNumbers","i","byteArray","blob","blobUrl","link","decodeBase64Pdf_default","generatePDF","Template","data","MyDocument","createElement","stream","renderToStream","resolve","reject","chunks","chunk","error","generatePDF_default","styles","StyleSheet","LayoutPDF","children","size","orientation","backgroundColor","padding","margen","style","pagination","footer","lines","rule","footerHeight","getMargins","pageSize","normalizedSize","safeSize","safeOrientation","safeBackgroundColor","safeMargen","validOrientations","normalizedOrientation","e","transformOrientation","getFooterPosition","pageDimensions","mmToPoints","dimensions","heightInPoints","widthInPoints","pdfOrientation","margins","footerTop","renderGrid","cmToPoints","pageWidth","pageHeight","horizontalLines","verticalLines","jsx","View","jsxs","pageStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","rest","footerStyle","Document","Page","Text","pageNumber","totalPages","LayoutPDF_default","Img","src","Image","Img_default","Left","Right","Center","P","H1","H2","H3","H4","H5","H6","Strong","Em","U","Small","Blockquote","Mark","A","href","Link","BR","HR","Span","Header","fixed","Div","TableContext","createContext","Table","cellHeight","Thead","textAlign","useContext","Tbody","rows","React","count","Fragment","row","idx","Tr","isLastRow","isOdd","elements","child","isLast","width","Th","height","colSpan","propTextAlign","contextTextAlign","finalTextAlign","baseWidth","borders","Td","Container","Row","Col1","Col2","Col3","Col4","Col5","Col6","Col7","Col8","Col9","Col10","Col11","Col12","generateQRAsBase64","value","colorDark","colorLight","margin","errorCorrectionLevel","options","QRCode","addLogoToQR","qrDataUrl","logoUrl","logoWidth","logoHeight","isBrowser","canvas","ctx","ImageConstructor","createCanvas","qrImage","logoImage","x","finalQrDataUrl","err","errorLevelMap","QR","logo","setQrDataUrl","useState","useEffect","baseQrDataUrl","qrWithLogo","fallbackUrl","QR_default","generateQRV2AsBase64","QRCodeStylingConstructor","extraOptions","mod","jsdomName","canvasName","qrCommonName","jsdomMod","canvasMod","qrCommonMod","JSDOM","nodeCanvas","QRCodeStyling","qrOptions","rawData","reader","QRV2","image","dotsOptions","backgroundOptions","imageOptions","cornersSquareOptions","cornersDotOptions","QRV2_default","getBulletPoint","type","getOrderedMarker","index","start","actualIndex","toRoman","num","romanNumerals","UL","childrenWithBullets","OL","childrenWithNumbers","LI","bulletType","isOrdered","marker","ImgBg","opacity","objectFit","objectPosition","ImgBg_default"],"mappings":"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","file":"index.js","sourcesContent":["const decodeBase64Pdf = (base64: string, fileName: string) => {\r\n const byteCharacters = atob(base64);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n\r\n if (document === undefined) {\r\n console.error(\"document is undefined, only works in browser context\");\r\n return;\r\n }\r\n\r\n // Crear un enlace para descargar el archivo\r\n const link = document.createElement('a');\r\n link.href = blobUrl;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n\r\n // Abrir el PDF en una nueva pestaña\r\n window.open(blobUrl, '_blank');\r\n\r\n // Revocar el objeto URL después de un tiempo\r\n setTimeout(() => {\r\n URL.revokeObjectURL(blobUrl);\r\n }, 100);\r\n};\r\n\r\nexport default decodeBase64Pdf;","import { renderToStream } from \"@react-pdf/renderer\";\r\nimport { createElement } from \"react\";\r\n\r\ninterface PDFData {\r\n template: React.ElementType;\r\n data?: any;\r\n}\r\n\r\nconst generatePDF = async ({ template: Template, data }: PDFData): Promise<string> => {\r\n try {\r\n if (!Template) {\r\n throw new Error(\"Template not provided\");\r\n }\r\n\r\n // Crear el componente con los datos\r\n const MyDocument = createElement(Template, { data });\r\n\r\n // Renderizar a stream\r\n const stream = await renderToStream(MyDocument);\r\n\r\n const base64String: string = await new Promise((resolve, reject) => {\r\n const chunks: Buffer[] = [];\r\n stream.on(\"data\", (chunk) => chunks.push(chunk));\r\n stream.on(\"end\", () => resolve(Buffer.concat(chunks).toString(\"base64\")));\r\n stream.on(\"error\", (error) => reject(error));\r\n });\r\n\r\n return base64String;\r\n } catch (error) {\r\n throw new Error(\"Error generating PDF: \" + (error instanceof Error ? error.message : \"Unknown error\"));\r\n }\r\n};\r\n\r\nexport default generatePDF;\r\n","import React from \"react\"\r\nimport { Page, Document, StyleSheet, Text, View } from \"@react-pdf/renderer\"\r\n\r\nconst styles = StyleSheet.create({\r\n page: {\r\n backgroundColor: \"white\",\r\n padding: 30,\r\n fontFamily: \"Helvetica\",\r\n fontSize: 14,\r\n },\r\n footer: {\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n textAlign: \"center\",\r\n }\r\n})\r\n\r\ninterface LayoutPDFProps {\r\n children: React.ReactNode\r\n size?: string\r\n orientation?: \"vertical\" | \"horizontal\" | \"h\" | \"v\" | \"portrait\" | \"landscape\"\r\n backgroundColor?: string\r\n padding?: number\r\n margen?: \"apa\" | \"normal\" | \"estrecho\" | \"ancho\"\r\n style?: any\r\n pagination?: boolean\r\n footer?: React.ReactNode\r\n lines?: number\r\n rule?: boolean\r\n}\r\n\r\nconst LayoutPDF: React.FC<LayoutPDFProps> = ({\r\n children,\r\n size = \"A4\",\r\n orientation = \"vertical\",\r\n backgroundColor = \"white\",\r\n padding = 30,\r\n margen = \"normal\",\r\n style = {},\r\n pagination = true,\r\n footer,\r\n lines = footer ? 2 : 1,\r\n rule = false,\r\n}) => {\r\n // Calculate footer height based on number of lines\r\n // Each line is approximately 20 points (considering font size and line height)\r\n const LINE_HEIGHT = 20\r\n const FOOTER_PADDING = 10\r\n const footerHeight = (lines * LINE_HEIGHT) + FOOTER_PADDING\r\n\r\n // Función para obtener márgenes según las normas APA y otros estándares\r\n const getMargins = (margen: string, pageSize: string) => {\r\n const normalizedSize = pageSize.toUpperCase()\r\n\r\n switch (margen) {\r\n case \"apa\":\r\n // Normas APA: 1 pulgada en todos los lados (72 puntos)\r\n if (normalizedSize === \"LETTER\" || normalizedSize === \"LEGAL\") {\r\n return {\r\n paddingTop: 72,\r\n paddingRight: 72,\r\n paddingBottom: 72,\r\n paddingLeft: 72\r\n }\r\n }\r\n // Para otros tamaños, usar equivalente proporcional\r\n return {\r\n paddingTop: 72,\r\n paddingRight: 72,\r\n paddingBottom: 72,\r\n paddingLeft: 72\r\n }\r\n\r\n case \"estrecho\":\r\n return {\r\n paddingTop: 36,\r\n paddingRight: 36,\r\n paddingBottom: 36,\r\n paddingLeft: 36\r\n }\r\n\r\n case \"ancho\":\r\n return {\r\n paddingTop: 108,\r\n paddingRight: 108,\r\n paddingBottom: 108,\r\n paddingLeft: 108\r\n }\r\n\r\n case \"normal\":\r\n default:\r\n return {\r\n paddingTop: padding,\r\n paddingRight: padding,\r\n paddingBottom: padding,\r\n paddingLeft: padding\r\n }\r\n }\r\n }\r\n\r\n // Validar y sanitizar props\r\n let safeSize = size\r\n let safeOrientation = orientation\r\n let safeBackgroundColor = backgroundColor\r\n\r\n let safeMargen = margen\r\n\r\n try {\r\n // Validar size\r\n const validSizes = [\"A0\", \"A1\", \"A2\", \"A3\", \"A4\", \"A5\", \"A6\", \"A7\", \"A8\", \"A9\", \"LETTER\", \"LEGAL\", \"TABLOID\"]\r\n if (typeof size === \"string\" && !validSizes.includes(size.toUpperCase())) {\r\n console.warn(`Invalid page size: ${size}. Using A4 as default.`)\r\n safeSize = \"A4\"\r\n }\r\n\r\n // Validar orientation\r\n const validOrientations = [\"vertical\", \"horizontal\", \"portrait\", \"landscape\", \"h\", \"v\"]\r\n const normalizedOrientation = typeof orientation === \"string\" ? orientation.toLowerCase() : \"vertical\"\r\n if (!validOrientations.includes(normalizedOrientation)) {\r\n console.warn(`Invalid orientation: ${orientation}. Using vertical as default.`)\r\n safeOrientation = \"vertical\"\r\n } else {\r\n // Mantener el valor original si es válido, respetando alias\r\n safeOrientation = orientation\r\n }\r\n\r\n // Validar backgroundColor\r\n if (typeof backgroundColor !== \"string\") {\r\n console.warn(`Invalid background color: ${backgroundColor}. Using white as default.`)\r\n safeBackgroundColor = \"white\"\r\n }\r\n\r\n // Validar margen\r\n const validMargins = [\"apa\", \"normal\", \"estrecho\", \"ancho\"]\r\n if (!validMargins.includes(margen)) {\r\n console.warn(`Invalid margin type: ${margen}. Using normal as default.`)\r\n safeMargen = \"normal\"\r\n }\r\n\r\n // Validar lines\r\n if (typeof lines !== \"number\" || lines < 1) {\r\n console.warn(`Invalid lines value: ${lines}. Using 1 as default.`)\r\n\r\n }\r\n } catch (e) {\r\n console.warn(\"Error processing props in LayoutPDF:\", e)\r\n }\r\n\r\n // Transform orientation from \"vertical\"/\"horizontal\" to \"portrait\"/\"landscape\"\r\n const transformOrientation = (orientation: \"vertical\" | \"horizontal\" | \"h\" | \"v\" | \"portrait\" | \"landscape\"): \"portrait\" | \"landscape\" => {\r\n switch (orientation) {\r\n case \"vertical\":\r\n case \"portrait\":\r\n case \"v\":\r\n return \"portrait\"\r\n case \"horizontal\":\r\n case \"landscape\":\r\n case \"h\":\r\n return \"landscape\"\r\n default:\r\n console.warn(`Unrecognized orientation: ${orientation}. Using portrait as default.`)\r\n return \"portrait\"\r\n }\r\n }\r\n\r\n // Function to calculate footer position based on size and orientation\r\n const getFooterPosition = (pageSize: string, orientation: \"portrait\" | \"landscape\", footerHeight: number) => {\r\n // Dimensions in millimeters according to ISO 216 standard\r\n const pageDimensions: Record<string, { width: number; height: number }> = {\r\n A0: { width: 841, height: 1189 },\r\n A1: { width: 594, height: 841 },\r\n A2: { width: 420, height: 594 },\r\n A3: { width: 297, height: 420 },\r\n A4: { width: 210, height: 297 },\r\n A5: { width: 148, height: 210 },\r\n A6: { width: 105, height: 148 },\r\n A7: { width: 74, height: 105 },\r\n A8: { width: 52, height: 74 },\r\n A9: { width: 37, height: 52 },\r\n LETTER: { width: 216, height: 279 },\r\n LEGAL: { width: 216, height: 356 },\r\n TABLOID: { width: 279, height: 432 },\r\n }\r\n\r\n // Convert mm to points (1mm = 2.834645669 points)\r\n const mmToPoints = 2.834645669\r\n\r\n const dimensions = pageDimensions[pageSize.toUpperCase()]\r\n if (!dimensions) {\r\n // A4 default in points\r\n return orientation === \"landscape\" ? 595 - footerHeight - 10 : 842 - footerHeight - 10\r\n }\r\n\r\n const heightInPoints = dimensions.height * mmToPoints\r\n const widthInPoints = dimensions.width * mmToPoints\r\n\r\n // Subtract footer height and additional margin\r\n return orientation === \"landscape\"\r\n ? widthInPoints - footerHeight - 10\r\n : heightInPoints - footerHeight - 10\r\n }\r\n\r\n const pdfOrientation = transformOrientation(safeOrientation)\r\n\r\n // Obtener márgenes según el tipo seleccionado\r\n const margins = getMargins(safeMargen, safeSize)\r\n\r\n // Calculate footer position based on calculated footer height\r\n const footerTop = getFooterPosition(safeSize, pdfOrientation, footerHeight)\r\n\r\n // Function to render grid (ruler)\r\n const renderGrid = () => {\r\n if (!rule) return null\r\n\r\n // 1 cm = 28.3465 points\r\n const cmToPoints = 28.3465\r\n\r\n // Get page dimensions in points\r\n const pageDimensions: Record<string, { width: number; height: number }> = {\r\n A0: { width: 841 * 2.834645669, height: 1189 * 2.834645669 },\r\n A1: { width: 594 * 2.834645669, height: 841 * 2.834645669 },\r\n A2: { width: 420 * 2.834645669, height: 594 * 2.834645669 },\r\n A3: { width: 297 * 2.834645669, height: 420 * 2.834645669 },\r\n A4: { width: 210 * 2.834645669, height: 297 * 2.834645669 },\r\n A5: { width: 148 * 2.834645669, height: 210 * 2.834645669 },\r\n A6: { width: 105 * 2.834645669, height: 148 * 2.834645669 },\r\n A7: { width: 74 * 2.834645669, height: 105 * 2.834645669 },\r\n A8: { width: 52 * 2.834645669, height: 74 * 2.834645669 },\r\n A9: { width: 37 * 2.834645669, height: 52 * 2.834645669 },\r\n LETTER: { width: 216 * 2.834645669, height: 279 * 2.834645669 },\r\n LEGAL: { width: 216 * 2.834645669, height: 356 * 2.834645669 },\r\n TABLOID: { width: 279 * 2.834645669, height: 432 * 2.834645669 },\r\n }\r\n\r\n const dimensions = pageDimensions[safeSize.toUpperCase()] || pageDimensions.A4\r\n const pageWidth = pdfOrientation === \"landscape\" ? dimensions.height : dimensions.width\r\n const pageHeight = pdfOrientation === \"landscape\" ? dimensions.width : dimensions.height\r\n\r\n const horizontalLines = []\r\n const verticalLines = []\r\n\r\n // Generate horizontal lines (every cm)\r\n for (let i = 0; i <= Math.ceil(pageHeight / cmToPoints); i++) {\r\n horizontalLines.push(\r\n <View\r\n key={`h-${i}`}\r\n style={{\r\n position: \"absolute\",\r\n top: i * cmToPoints,\r\n left: 0,\r\n right: 0,\r\n height: i % 5 === 0 ? 1 : 0.5,\r\n backgroundColor: i % 5 === 0 ? \"rgba(255, 0, 0, 0.8)\" : \"rgba(100, 100, 100, 0.5)\",\r\n }}\r\n />\r\n )\r\n }\r\n\r\n // Generate vertical lines (every cm)\r\n for (let i = 0; i <= Math.ceil(pageWidth / cmToPoints); i++) {\r\n verticalLines.push(\r\n <View\r\n key={`v-${i}`}\r\n style={{\r\n position: \"absolute\",\r\n left: i * cmToPoints,\r\n top: 0,\r\n bottom: 0,\r\n width: i % 5 === 0 ? 1 : 0.5,\r\n backgroundColor: i % 5 === 0 ? \"rgba(255, 0, 0, 0.8)\" : \"rgba(100, 100, 100, 0.5)\",\r\n }}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <View style={{ position: \"absolute\", top: 0, left: 0, right: 0, bottom: 0 }} fixed>\r\n {horizontalLines}\r\n {verticalLines}\r\n </View>\r\n )\r\n }\r\n\r\n const pageStyle = {\r\n ...styles.page,\r\n backgroundColor: safeBackgroundColor,\r\n paddingTop: (style?.paddingTop ?? style?.padding ?? margins.paddingTop),\r\n paddingRight: (style?.paddingRight ?? style?.padding ?? margins.paddingRight),\r\n paddingLeft: (style?.paddingLeft ?? style?.padding ?? margins.paddingLeft),\r\n paddingBottom: (style?.paddingBottom ?? style?.padding ?? margins.paddingBottom) + footerHeight,\r\n ...( (() => { const { padding, paddingTop, paddingRight, paddingBottom, paddingLeft, ...rest } = style || {}; return rest })() ),\r\n }\r\n\r\n const footerStyle = {\r\n ...styles.footer,\r\n top: footerTop,\r\n height: footerHeight,\r\n display: \"flex\" as const,\r\n flexDirection: \"column\" as const,\r\n justifyContent: \"center\" as const,\r\n alignItems: \"center\" as const,\r\n fontSize: 10,\r\n color: \"grey\"\r\n }\r\n\r\n return (\r\n <Document>\r\n <Page size={safeSize as any} orientation={pdfOrientation} style={pageStyle} wrap>\r\n {renderGrid()}\r\n <View style={{ paddingBottom: footerHeight }}>\r\n {children}\r\n </View>\r\n\r\n <View style={footerStyle} fixed>\r\n {footer && (footer)}\r\n {pagination && (\r\n <Text style={{ fontSize: footerStyle.fontSize }} render={({ pageNumber, totalPages }) => (\r\n `${pageNumber} / ${totalPages}`\r\n )} />\r\n )}\r\n </View>\r\n\r\n </Page>\r\n </Document>\r\n )\r\n}\r\n\r\nexport default LayoutPDF\r\n","import React from \"react\"\r\nimport { Image, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ImgProps {\r\n src?: string\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n image: {\r\n width: \"100%\",\r\n height: \"auto\",\r\n marginBottom: 14,\r\n },\r\n})\r\n\r\nconst Img: React.FC<ImgProps> = ({ src, style }) => {\r\n return <Image src={src} style={[styles.image, style]} />\r\n}\r\n\r\nexport default Img\r\n\r\n","import React from \"react\"\r\nimport { View, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface PositionProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n left: {\r\n textAlign: \"left\",\r\n },\r\n right: {\r\n textAlign: \"right\",\r\n },\r\n center: {\r\n textAlign: \"center\",\r\n },\r\n})\r\n\r\nconst Left: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.left, style]}>{children}</View>\r\n}\r\n\r\nconst Right: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.right, style]}>{children}</View>\r\n}\r\n\r\nconst Center: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.center, style]}>{children}</View>\r\n}\r\n\r\nexport { Left, Right, Center }\r\n\r\n","import React from \"react\"\r\nimport { Text, StyleSheet, Link, View } from \"@react-pdf/renderer\"\r\n\r\ninterface TextProps {\r\n children: React.ReactNode\r\n style?: any\r\n href?: string\r\n}\r\n\r\ninterface DivProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface HeaderProps {\r\n children: React.ReactNode\r\n style?: any\r\n fixed?: boolean\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n p: {\r\n fontSize: 12,\r\n marginBottom: 5,\r\n lineHeight: 1.2,\r\n },\r\n h1: {\r\n fontSize: 24,\r\n fontWeight: \"bold\",\r\n marginBottom: 12,\r\n },\r\n h2: {\r\n fontSize: 20,\r\n fontWeight: \"bold\",\r\n marginBottom: 10,\r\n },\r\n h3: {\r\n fontSize: 18,\r\n fontWeight: \"bold\",\r\n marginBottom: 8,\r\n },\r\n h4: {\r\n fontSize: 16,\r\n fontWeight: \"bold\",\r\n marginBottom: 6,\r\n },\r\n h5: {\r\n fontSize: 14,\r\n fontWeight: \"bold\",\r\n marginBottom: 4,\r\n },\r\n h6: {\r\n fontSize: 12,\r\n fontWeight: \"bold\",\r\n marginBottom: 0,\r\n },\r\n strong: {\r\n fontWeight: \"bold\",\r\n },\r\n em: {\r\n fontStyle: \"italic\",\r\n },\r\n u: {\r\n textDecoration: \"underline\",\r\n },\r\n small: {\r\n fontSize: 10,\r\n },\r\n blockquote: {\r\n marginLeft: 20,\r\n marginRight: 20,\r\n fontStyle: \"italic\",\r\n borderLeft: \"4px solid #ccc\",\r\n paddingLeft: 10,\r\n },\r\n mark: {\r\n backgroundColor: \"yellow\",\r\n },\r\n A: {\r\n color: \"#3d65fd\",\r\n textDecoration: \"none\",\r\n },\r\n br: {\r\n width: \"100%\",\r\n height: 1,\r\n marginTop: 7,\r\n marginBottom: 7,\r\n },\r\n header: {\r\n position: \"absolute\",\r\n top: 20,\r\n left: 0,\r\n right: 0,\r\n textAlign: \"center\",\r\n fontSize: 10,\r\n color: \"#666\",\r\n paddingHorizontal: 40,\r\n },\r\n hr: {\r\n width: \"100%\",\r\n borderTop: \"1px solid #000\",\r\n marginTop: 8,\r\n marginBottom: 8,\r\n },\r\n})\r\n\r\nconst P: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.p, style]}>{children}</Text>\r\n}\r\n\r\nconst H1: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h1, style]}>{children}</Text>\r\n}\r\n\r\nconst H2: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h2, style]}>{children}</Text>\r\n}\r\n\r\nconst H3: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h3, style]}>{children}</Text>\r\n}\r\n\r\nconst H4: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h4, style]}>{children}</Text>\r\n}\r\n\r\nconst H5: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h5, style]}>{children}</Text>\r\n}\r\n\r\nconst H6: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h6, style]}>{children}</Text>\r\n}\r\n\r\nconst Strong: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.strong, style]}>{children}</Text>\r\n}\r\n\r\nconst Em: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.em, style]}>{children}</Text>\r\n}\r\n\r\nconst U: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.u, style]}>{children}</Text>\r\n}\r\n\r\nconst Small: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.small, style]}>{children}</Text>\r\n}\r\n\r\nconst Blockquote: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.blockquote, style]}>{children}</Text>\r\n}\r\n\r\nconst Mark: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.mark, style]}>{children}</Text>\r\n}\r\n\r\nconst A: React.FC<TextProps> = ({ children, style, href }) => {\r\n return (\r\n <Link src={href} style={[styles.A, style]}>\r\n {children}\r\n </Link>\r\n )\r\n}\r\n\r\nconst BR: React.FC<{ style?: any }> = ({ style }) => {\r\n return <Text style={[styles.br, style]}>{\"\\n\"}</Text>\r\n}\r\n\r\nconst HR: React.FC<{ style?: any }> = ({ style }) => {\r\n return <View style={[styles.hr, style]} />\r\n}\r\n\r\nconst Span: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[style]}>{children}</Text>\r\n}\r\n\r\nconst Header: React.FC<HeaderProps> = ({ children, style, fixed = false }) => {\r\n return (\r\n <View style={[styles.header, style]} fixed={fixed}>\r\n {typeof children === \"string\" ? <Text>{children}</Text> : children}\r\n </View>\r\n )\r\n}\r\n\r\nconst Div: React.FC<DivProps> = ({ children, style }) => {\r\n return <View style={style}>{children}</View>\r\n}\r\n\r\nexport { P, A, H1, H2, H3, H4, H5, H6, Strong, Em, U, Small, Blockquote, Mark, Span, BR, HR, Header, Div }","import React, { createContext, useContext } from \"react\";\r\nimport { View, Text, StyleSheet } from \"@react-pdf/renderer\";\r\n\r\ninterface TableProps {\r\n children: React.ReactNode;\r\n style?: any;\r\n cellHeight?: number;\r\n}\r\n\r\ninterface TheadProps {\r\n children: React.ReactNode;\r\n style?: any;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}\r\n\r\ninterface CellProps {\r\n children?: React.ReactNode;\r\n style?: any;\r\n width?: string | number;\r\n height?: string | number;\r\n colSpan?: number;\r\n isLast?: boolean;\r\n isLastRow?: boolean;\r\n isOdd?: boolean;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}\r\n\r\n// Context para pasar cellHeight y textAlign a los componentes hijos\r\nconst TableContext = createContext<{\r\n cellHeight: number;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}>({\r\n cellHeight: 22,\r\n textAlign: \"left\",\r\n});\r\n\r\nconst styles = StyleSheet.create({\r\n table: {\r\n width: \"100%\",\r\n borderWidth: 1,\r\n borderColor: \"#000\",\r\n marginBottom: 20,\r\n },\r\n thead: {\r\n backgroundColor: \"#ccc\",\r\n },\r\n tr: {\r\n flexDirection: \"row\",\r\n },\r\n textBold: {\r\n fontSize: 10,\r\n fontWeight: \"bold\",\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n justifyContent: \"center\",\r\n\r\n },\r\n text: {\r\n fontSize: 10,\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n justifyContent: \"center\",\r\n\r\n },\r\n zebraOdd: {\r\n backgroundColor: \"#eeeeee\",\r\n },\r\n});\r\n\r\nconst Table: React.FC<TableProps> = ({ children, style, cellHeight = 22 }) => (\r\n <TableContext.Provider value={{ cellHeight, textAlign: \"left\" }}>\r\n <View style={[styles.table, style]}>{children}</View>\r\n </TableContext.Provider>\r\n);\r\n\r\nconst Thead: React.FC<TheadProps> = ({\r\n children,\r\n style,\r\n textAlign = \"left\",\r\n}) => {\r\n const { cellHeight } = useContext(TableContext);\r\n\r\n return (\r\n <TableContext.Provider value={{ cellHeight, textAlign }}>\r\n <View style={[styles.thead, style]}>{children}</View>\r\n </TableContext.Provider>\r\n );\r\n};\r\n\r\nconst Tbody: React.FC<TableProps> = ({ children }) => {\r\n const rows = React.Children.toArray(children) as React.ReactElement<any>[];\r\n const count = rows.length;\r\n return (\r\n <>\r\n {rows.map((row, idx) =>\r\n React.cloneElement(row, {\r\n isLastRow: idx === count - 1,\r\n isOdd: idx % 2 === 1,\r\n })\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst Tr: React.FC<TableProps & { isLastRow?: boolean; isOdd?: boolean }> = ({\r\n children,\r\n style,\r\n isLastRow = false,\r\n isOdd = false,\r\n}) => {\r\n const elements = React.Children.toArray(\r\n children\r\n ) as React.ReactElement<CellProps>[];\r\n const count = elements.length;\r\n return (\r\n <View style={[styles.tr, style]}>\r\n {elements.map((child, idx) => {\r\n const isLast = idx === count - 1;\r\n const width = `${(100 / count).toFixed(2)}%`;\r\n return React.cloneElement(child, { width, isLast, isLastRow, isOdd });\r\n })}\r\n </View>\r\n );\r\n};\r\n\r\nconst Th: React.FC<CellProps> = ({\r\n children,\r\n style,\r\n width,\r\n height,\r\n colSpan,\r\n isLast = false,\r\n isLastRow = false,\r\n textAlign: propTextAlign,\r\n}) => {\r\n const { cellHeight, textAlign: contextTextAlign } = useContext(TableContext);\r\n\r\n // Usar textAlign del prop si está definido, sino el del contexto\r\n const finalTextAlign = propTextAlign || contextTextAlign || \"left\";\r\n\r\n const baseWidth =\r\n typeof width === \"string\" && colSpan\r\n ? `${(parseFloat(width) * colSpan).toFixed(2)}%`\r\n : width;\r\n\r\n const cellHeightValue = height !== undefined ? height : cellHeight;\r\n\r\n const borders = {\r\n borderRightWidth: isLast ? 0 : 1,\r\n borderBottomWidth: isLastRow ? 0 : 1,\r\n borderColor: \"#000\",\r\n minHeight: cellHeightValue,\r\n };\r\n\r\n return (\r\n <View\r\n style={[\r\n styles.textBold,\r\n {\r\n width: baseWidth,\r\n },\r\n borders,\r\n style,\r\n ]}\r\n >\r\n <Text style={{ textAlign: finalTextAlign }}>{children}</Text>\r\n </View>\r\n );\r\n};\r\n\r\nconst Td: React.FC<CellProps> = ({\r\n children,\r\n style,\r\n width,\r\n height,\r\n colSpan,\r\n isLast = false,\r\n isLastRow = false,\r\n isOdd = false,\r\n textAlign: propTextAlign,\r\n}) => {\r\n const { cellHeight, textAlign: contextTextAlign } = useContext(TableContext);\r\n\r\n // Usar textAlign del prop si está definido, sino el del contexto, sino 'left'\r\n const finalTextAlign = propTextAlign || contextTextAlign || \"left\";\r\n\r\n const baseWidth =\r\n typeof width === \"string\" && colSpan\r\n ? `${(parseFloat(width) * colSpan).toFixed(2)}%`\r\n : width;\r\n\r\n const cellHeightValue = height !== undefined ? height : cellHeight;\r\n\r\n const borders = {\r\n borderRightWidth: isLast ? 0 : 1,\r\n borderBottomWidth: isLastRow ? 0 : 1,\r\n borderColor: \"#000\",\r\n minHeight: cellHeightValue,\r\n };\r\n\r\n return (\r\n <View\r\n style={[\r\n styles.text,\r\n isOdd && styles.zebraOdd,\r\n {\r\n width: baseWidth,\r\n },\r\n borders,\r\n style,\r\n ]}\r\n >\r\n <Text style={{ textAlign: finalTextAlign }}>{children}</Text>\r\n </View>\r\n );\r\n};\r\n\r\nexport { Table, Thead, Tbody, Tr, Th, Td };\r\n","import React from \"react\"\r\nimport { View, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ContainerProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface RowProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface ColProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n width: \"100%\",\r\n paddingHorizontal: 20,\r\n },\r\n row: {\r\n flexDirection: \"row\",\r\n flexWrap: \"wrap\",\r\n marginHorizontal: -5,\r\n },\r\n col: {\r\n paddingHorizontal: 5,\r\n },\r\n col1: { width: \"8.33%\" },\r\n col2: { width: \"16.66%\" },\r\n col3: { width: \"25%\" },\r\n col4: { width: \"33.33%\" },\r\n col5: { width: \"41.66%\" },\r\n col6: { width: \"50%\" },\r\n col7: { width: \"58.33%\" },\r\n col8: { width: \"66.66%\" },\r\n col9: { width: \"75%\" },\r\n col10: { width: \"83.33%\" },\r\n col11: { width: \"91.66%\" },\r\n col12: { width: \"100%\" },\r\n})\r\n\r\nexport const Container: React.FC<ContainerProps> = ({ children, style }) => {\r\n return <View style={[styles.container, style]}>{children}</View>\r\n}\r\n\r\nexport const Row: React.FC<RowProps> = ({ children, style }) => {\r\n return <View style={[styles.row, style]}>{children}</View>\r\n}\r\n\r\nexport const Col1: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col1, style]}>{children}</View>\r\n}\r\n\r\nexport const Col2: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col2, style]}>{children}</View>\r\n}\r\n\r\nexport const Col3: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col3, style]}>{children}</View>\r\n}\r\n\r\nexport const Col4: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col4, style]}>{children}</View>\r\n}\r\n\r\nexport const Col5: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col5, style]}>{children}</View>\r\n}\r\n\r\nexport const Col6: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col6, style]}>{children}</View>\r\n}\r\n\r\nexport const Col7: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col7, style]}>{children}</View>\r\n}\r\n\r\nexport const Col8: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col8, style]}>{children}</View>\r\n}\r\n\r\nexport const Col9: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col9, style]}>{children}</View>\r\n}\r\n\r\nexport const Col10: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col10, style]}>{children}</View>\r\n}\r\n\r\nexport const Col11: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col11, style]}>{children}</View>\r\n}\r\n\r\nexport const Col12: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col12, style]}>{children}</View>\r\n}\r\n\r\n","import QRCode from \"qrcode\"\r\n\r\ninterface QROptions {\r\n value: string\r\n size?: number\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n logoImage?: string\r\n logoWidth?: number\r\n logoHeight?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nexport const generateQRAsBase64 = async ({\r\n value,\r\n size = 150,\r\n colorDark = \"#000000\",\r\n colorLight = \"#ffffff\",\r\n margin = 0,\r\n errorCorrectionLevel = \"M\",\r\n}: QROptions): Promise<string> => {\r\n try {\r\n // Configuración para QRCode\r\n const options = {\r\n errorCorrectionLevel: errorCorrectionLevel,\r\n type: \"image/png\" as const,\r\n quality: 0.92,\r\n margin: margin,\r\n color: {\r\n dark: colorDark,\r\n light: colorLight,\r\n },\r\n width: size,\r\n }\r\n\r\n // Generar el código QR como base64\r\n const qrDataUrl = QRCode.toDataURL(value, options)\r\n return qrDataUrl\r\n } catch (error) {\r\n console.error(\"Error generando QR:\", error)\r\n return \"\"\r\n }\r\n}\r\n\r\n// Función para añadir un logo al QR generado\r\nexport const addLogoToQR = async (\r\n qrDataUrl: string,\r\n logoUrl: string,\r\n logoWidth: number,\r\n logoHeight: number,\r\n): Promise<string> => {\r\n return new Promise(async (resolve) => {\r\n if (!qrDataUrl || !logoUrl) {\r\n resolve(qrDataUrl)\r\n return\r\n }\r\n\r\n try {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n let canvas: any;\r\n let ctx: any;\r\n let ImageConstructor: any;\r\n\r\n if (isBrowser) {\r\n canvas = document.createElement(\"canvas\")\r\n ctx = canvas.getContext(\"2d\")\r\n ImageConstructor = window.Image;\r\n } else {\r\n // Node environment\r\n try {\r\n // Use dynamic imports to avoid bundling canvas in browser build if possible\r\n // although typically 'canvas' is excluded from browser bundles or shimmed.\r\n const { createCanvas, Image } = await import('canvas');\r\n canvas = createCanvas(100, 100); // Initial size, will be resized\r\n ctx = canvas.getContext(\"2d\");\r\n ImageConstructor = Image;\r\n } catch (e) {\r\n console.error(\"Canvas not available in Node environment for addLogoToQR\", e);\r\n resolve(qrDataUrl);\r\n return;\r\n }\r\n }\r\n\r\n if (!ctx) {\r\n resolve(qrDataUrl)\r\n return\r\n }\r\n\r\n // Cargar la imagen del QR\r\n const qrImage = new ImageConstructor()\r\n // crossOrigin is only needed in browser usually, but node-canvas might support/ignore it\r\n if (isBrowser) qrImage.crossOrigin = \"anonymous\"\r\n \r\n qrImage.onload = () => {\r\n // Establecer el tamaño del canvas\r\n canvas.width = qrImage.width\r\n canvas.height = qrImage.height\r\n\r\n // Dibujar el QR en el canvas\r\n ctx.drawImage(qrImage, 0, 0, canvas.width, canvas.height)\r\n\r\n // Cargar el logo\r\n const logoImage = new ImageConstructor()\r\n if (isBrowser) logoImage.crossOrigin = \"anonymous\"\r\n \r\n logoImage.onload = () => {\r\n // Calcular la posición central para el logo\r\n const x = (canvas.width - logoWidth) / 2\r\n const y = (canvas.height - logoHeight) / 2\r\n\r\n // Dibujar un fondo blanco para el logo (opcional)\r\n ctx.fillStyle = \"#FFFFFF\"\r\n ctx.fillRect(x - 5, y - 5, logoWidth + 10, logoHeight + 10)\r\n\r\n // Dibujar el logo\r\n ctx.drawImage(logoImage, x, y, logoWidth, logoHeight)\r\n\r\n // Convertir el canvas a base64\r\n const finalQrDataUrl = canvas.toDataURL(\"image/png\")\r\n resolve(finalQrDataUrl)\r\n }\r\n\r\n logoImage.onerror = (err: any) => {\r\n console.error(\"Error cargando el logo:\", err)\r\n resolve(qrDataUrl) // Devolver el QR sin logo en caso de error\r\n }\r\n\r\n logoImage.src = logoUrl\r\n }\r\n\r\n qrImage.onerror = (err: any) => {\r\n console.error(\"Error cargando el QR:\", err)\r\n resolve(\"\")\r\n }\r\n\r\n qrImage.src = qrDataUrl\r\n } catch (error) {\r\n console.error(\"Error procesando el QR con logo:\", error)\r\n resolve(qrDataUrl) // Devolver el QR sin logo en caso de error\r\n }\r\n })\r\n}\r\n","\"use client\"\r\n\r\nimport React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\nimport { useEffect, useState } from \"react\"\r\nimport { generateQRAsBase64, addLogoToQR } from \"./QRGenerator\"\r\n\r\n// Define the props for the QR component\r\ninterface QRProps {\r\n value: string\r\n size?: number\r\n style?: any\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n logo?: string\r\n logoWidth?: number\r\n logoHeight?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n qrContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n margin: 10,\r\n },\r\n})\r\n\r\n// Mapa para convertir niveles de corrección numéricos a letras\r\nconst errorLevelMap: Record<number, \"L\" | \"M\" | \"Q\" | \"H\"> = {\r\n 0: \"L\",\r\n 1: \"M\",\r\n 2: \"Q\",\r\n 3: \"H\",\r\n}\r\n\r\n// Este componente funciona con React PDF\r\nconst QR: React.FC<QRProps> = ({\r\n value,\r\n size = 150,\r\n style,\r\n colorDark = \"#000000\",\r\n colorLight = \"#ffffff\",\r\n margin = 0,\r\n logo = \"\",\r\n logoWidth = 30,\r\n logoHeight = 30,\r\n errorCorrectionLevel = logo ? \"H\" : \"M\",\r\n}) => {\r\n const [qrDataUrl, setQrDataUrl] = useState<string>(\"\")\r\n\r\n // Generar el código QR cuando el componente se monta o cuando cambian las props\r\n useEffect(() => {\r\n const generateQR = async () => {\r\n try {\r\n // Primero generamos el QR básico\r\n const baseQrDataUrl = await generateQRAsBase64({\r\n value,\r\n size,\r\n colorDark,\r\n colorLight,\r\n margin,\r\n errorCorrectionLevel:\r\n typeof errorCorrectionLevel === \"number\"\r\n ? errorLevelMap[errorCorrectionLevel] || \"M\"\r\n : errorCorrectionLevel,\r\n })\r\n\r\n // Si hay un logo, lo añadimos al QR\r\n if (logo && logoWidth && logoHeight) {\r\n const qrWithLogo = await addLogoToQR(baseQrDataUrl, logo, logoWidth, logoHeight)\r\n setQrDataUrl(qrWithLogo)\r\n } else {\r\n setQrDataUrl(baseQrDataUrl)\r\n }\r\n } catch (error) {\r\n console.error(\"Error generando QR:\", error)\r\n // En caso de error, generamos un QR básico usando una API externa\r\n const fallbackUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(\r\n value,\r\n )}&size=${size}x${size}&color=${encodeURIComponent(colorDark.replace(\"#\", \"\"))}&bgcolor=${encodeURIComponent(\r\n colorLight.replace(\"#\", \"\"),\r\n )}`\r\n setQrDataUrl(fallbackUrl)\r\n }\r\n }\r\n\r\n generateQR()\r\n }, [value, size, colorDark, colorLight, margin, logo, logoWidth, logoHeight, errorCorrectionLevel])\r\n\r\n // Mostrar un QR de respaldo mientras se genera el QR personalizado\r\n const fallbackUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(\r\n value,\r\n )}&size=${size}x${size}`\r\n\r\n return (\r\n <View style={[styles.qrContainer, style]}>\r\n <Image src={qrDataUrl || fallbackUrl} style={{ width: size, height: size }} />\r\n </View>\r\n )\r\n}\r\n\r\nexport default QR\r\n\r\n","import { generateQRAsBase64 } from \"./QRGenerator\"\r\n\r\nexport interface QRV2Options {\r\n value: string\r\n width?: number\r\n height?: number\r\n image?: string\r\n dotsOptions?: {\r\n color?: string\r\n type?: \"rounded\" | \"dots\" | \"classy\" | \"classy-rounded\" | \"square\" | \"extra-rounded\"\r\n }\r\n backgroundOptions?: {\r\n color?: string\r\n }\r\n imageOptions?: {\r\n crossOrigin?: string\r\n margin?: number\r\n imageSize?: number // 0-1 (e.g., 0.4)\r\n }\r\n cornersSquareOptions?: {\r\n type?: \"dot\" | \"square\" | \"extra-rounded\"\r\n color?: string\r\n }\r\n cornersDotOptions?: {\r\n type?: \"dot\" | \"square\"\r\n color?: string\r\n }\r\n // Fallback options\r\n fallbackColorDark?: string\r\n fallbackColorLight?: string\r\n fallbackMargin?: number\r\n fallbackErrorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nexport const generateQRV2AsBase64 = async (options: QRV2Options): Promise<string> => {\r\n try {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n \r\n let QRCodeStylingConstructor: any;\r\n let extraOptions = {};\r\n\r\n if (isBrowser) {\r\n // Dynamic import for browser\r\n try {\r\n const mod = await import('qr-code-styling');\r\n QRCodeStylingConstructor = mod.default || mod;\r\n } catch (e) {\r\n console.error(\"Failed to load qr-code-styling in browser\", e);\r\n throw e;\r\n }\r\n } else {\r\n // Node environment\r\n // We use variable names to prevent bundlers (like Vite) from analyzing/bundling these dependencies\r\n // when building for the browser.\r\n const jsdomName = \"jsdom\";\r\n const canvasName = \"canvas\";\r\n const qrCommonName = \"qr-code-styling/lib/qr-code-styling.common.js\";\r\n \r\n try {\r\n const [jsdomMod, canvasMod, qrCommonMod] = await Promise.all([\r\n import(/* @vite-ignore */ jsdomName),\r\n import(/* @vite-ignore */ canvasName),\r\n import(/* @vite-ignore */ qrCommonName)\r\n ]);\r\n\r\n const { JSDOM } = jsdomMod;\r\n // canvas might be default export or named export depending on version/bundling\r\n const nodeCanvas = canvasMod.default || canvasMod;\r\n const { QRCodeStyling } = qrCommonMod;\r\n\r\n QRCodeStylingConstructor = QRCodeStyling;\r\n extraOptions = {\r\n jsdom: JSDOM,\r\n nodeCanvas: nodeCanvas\r\n };\r\n } catch (e) {\r\n console.error(\"Failed to load Node dependencies for QR generation\", e);\r\n throw e;\r\n }\r\n }\r\n\r\n const width = typeof options.width === \"number\" && isFinite(options.width) ? Math.round(options.width) : 300;\r\n const height = typeof options.height === \"number\" && isFinite(options.height) ? Math.round(options.height) : 300;\r\n \r\n\r\n const qrOptions = {\r\n width,\r\n height,\r\n data: options.value,\r\n image: options.image,\r\n dotsOptions: options.dotsOptions,\r\n backgroundOptions: {\r\n // Default to white background if not specified to prevent transparency issues\r\n // The \"blue stripe\" or weird artifacts can happen if the background is transparent or handled incorrectly\r\n color: options.backgroundOptions?.color || \"#ffffff\",\r\n ...options.backgroundOptions\r\n },\r\n imageOptions: {\r\n crossOrigin: \"anonymous\",\r\n margin: typeof options.imageOptions?.margin === \"number\" && isFinite(options.imageOptions.margin) ? options.imageOptions.margin : 0,\r\n saveAsBlob: true,\r\n imageSize: typeof options.imageOptions?.imageSize === \"number\" && isFinite(options.imageOptions.imageSize)\r\n ? Math.max(0, Math.min(1, options.imageOptions.imageSize))\r\n : 0.4,\r\n },\r\n cornersSquareOptions: options.cornersSquareOptions,\r\n cornersDotOptions: options.cornersDotOptions,\r\n }\r\n\r\n // @ts-ignore\r\n const qrCodeImage = new QRCodeStylingConstructor({\r\n type: \"png\", // Force PNG type\r\n ...extraOptions,\r\n ...qrOptions,\r\n })\r\n\r\n const rawData = await qrCodeImage.getRawData(\"png\")\r\n \r\n if (!rawData) throw new Error(\"Failed to generate raw data from qr-code-styling\")\r\n\r\n // Handle Blob (Browser) vs Buffer (Node)\r\n if (isBrowser) {\r\n if (rawData instanceof Blob) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n if (typeof reader.result === 'string') {\r\n resolve(reader.result);\r\n } else {\r\n reject(new Error(\"Failed to convert blob to base64\"));\r\n }\r\n };\r\n reader.onerror = reject;\r\n reader.readAsDataURL(rawData);\r\n });\r\n } else {\r\n // Sometimes in browser it might return something else if configured differently?\r\n // But usually Blob.\r\n console.warn(\"Unexpected rawData type in browser:\", rawData);\r\n }\r\n } \r\n \r\n // Node environment usually returns Buffer\r\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(rawData)) {\r\n return `data:image/png;base64,${rawData.toString(\"base64\")}`;\r\n }\r\n \r\n // Fallback if type is unexpected\r\n // Try to handle if it's a blob-like object in Node (unlikely but possible with polyfills)\r\n throw new Error(`Unexpected raw data type: ${typeof rawData}`);\r\n\r\n } catch (error) {\r\n console.error(\"Error generating QR V2, falling back to V1:\", error)\r\n \r\n // Fallback to existing implementation\r\n return generateQRAsBase64({\r\n value: options.value,\r\n size: options.width,\r\n colorDark: options.fallbackColorDark || options.dotsOptions?.color,\r\n colorLight: options.fallbackColorLight || options.backgroundOptions?.color,\r\n margin: options.fallbackMargin || 0,\r\n errorCorrectionLevel: options.fallbackErrorCorrectionLevel || \"M\",\r\n })\r\n }\r\n}\r\n","\"use client\"\r\n\r\nimport React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\nimport { generateQRV2AsBase64, type QRV2Options } from \"./QRGeneratorV2\"\r\n\r\n// Define props\r\nexport interface QRV2Props {\r\n value: string\r\n size?: number\r\n style?: any\r\n image?: string\r\n dotsOptions?: QRV2Options[\"dotsOptions\"]\r\n backgroundOptions?: QRV2Options[\"backgroundOptions\"]\r\n imageOptions?: QRV2Options[\"imageOptions\"]\r\n cornersSquareOptions?: QRV2Options[\"cornersSquareOptions\"]\r\n cornersDotOptions?: QRV2Options[\"cornersDotOptions\"]\r\n // Fallback/Compatibility props\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n qrContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n})\r\n\r\nconst QRV2: React.FC<QRV2Props> = ({\r\n value,\r\n size = 300,\r\n style,\r\n image,\r\n dotsOptions,\r\n backgroundOptions,\r\n imageOptions,\r\n cornersSquareOptions,\r\n cornersDotOptions,\r\n colorDark,\r\n colorLight,\r\n margin,\r\n errorCorrectionLevel,\r\n}) => {\r\n return (\r\n <View style={[styles.qrContainer, style]}>\r\n {/* We pass a function that returns the promise/result or use the state if available. \r\n Actually, we can pass the promise directly to src! */}\r\n <Image \r\n style={{ width: size, height: size }} \r\n src={generateQRV2AsBase64({\r\n value,\r\n width: size,\r\n height: size,\r\n image,\r\n dotsOptions: dotsOptions || (colorDark ? { color: colorDark } : undefined),\r\n backgroundOptions: backgroundOptions || (colorLight ? { color: colorLight } : undefined),\r\n imageOptions: {\r\n ...imageOptions,\r\n margin: imageOptions?.margin !== undefined ? imageOptions.margin : margin\r\n },\r\n cornersSquareOptions,\r\n cornersDotOptions,\r\n fallbackColorDark: colorDark,\r\n fallbackColorLight: colorLight,\r\n fallbackMargin: margin,\r\n fallbackErrorCorrectionLevel: errorCorrectionLevel,\r\n })} \r\n />\r\n </View>\r\n )\r\n}\r\n\r\nexport default QRV2\r\n","import React from \"react\"\r\nimport { View, Text, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ListProps {\r\n children: React.ReactNode\r\n style?: any\r\n start?: number // Para listas ordenadas, desde qué número empezar\r\n type?: \"disc\" | \"circle\" | \"square\" | \"decimal\" | \"lower-alpha\" | \"upper-alpha\" | \"lower-roman\" | \"upper-roman\"\r\n}\r\n\r\ninterface ListItemProps {\r\n children: React.ReactNode\r\n style?: any\r\n value?: number | string // Valor específico para este elemento de lista\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n ul: {\r\n marginBottom: 10,\r\n paddingLeft: 15,\r\n },\r\n ol: {\r\n marginBottom: 10,\r\n paddingLeft: 15,\r\n },\r\n li: {\r\n marginBottom: 5,\r\n flexDirection: \"row\",\r\n },\r\n bulletPoint: {\r\n width: 15,\r\n marginRight: 5,\r\n fontSize: 12,\r\n },\r\n itemContent: {\r\n flex: 1,\r\n },\r\n})\r\n\r\n// Función para generar marcadores de lista desordenada\r\nconst getBulletPoint = (type = \"disc\") => {\r\n switch (type) {\r\n case \"circle\":\r\n return \"○\"\r\n case \"square\":\r\n return \"■\"\r\n case \"disc\":\r\n default:\r\n return \"•\"\r\n }\r\n}\r\n\r\n// Función para generar marcadores de lista ordenada\r\nconst getOrderedMarker = (index: number, type = \"decimal\", start = 1) => {\r\n const actualIndex = start + index - 1\r\n\r\n switch (type) {\r\n case \"lower-alpha\":\r\n return String.fromCharCode(97 + (actualIndex % 26)) + \".\"\r\n case \"upper-alpha\":\r\n return String.fromCharCode(65 + (actualIndex % 26)) + \".\"\r\n case \"lower-roman\":\r\n return toRoman(actualIndex).toLowerCase() + \".\"\r\n case \"upper-roman\":\r\n return toRoman(actualIndex) + \".\"\r\n case \"decimal\":\r\n default:\r\n return actualIndex + \".\"\r\n }\r\n}\r\n\r\n// Función para convertir números a numerales romanos\r\nconst toRoman = (num: number): string => {\r\n if (num <= 0 || num > 3999) return String(num)\r\n\r\n const romanNumerals = [\r\n [\"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"],\r\n [\"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\"],\r\n [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\"],\r\n [\"\", \"M\", \"MM\", \"MMM\"],\r\n ]\r\n\r\n return (\r\n romanNumerals[3][Math.floor(num / 1000)] +\r\n romanNumerals[2][Math.floor((num % 1000) / 100)] +\r\n romanNumerals[1][Math.floor((num % 100) / 10)] +\r\n romanNumerals[0][num % 10]\r\n )\r\n}\r\n\r\n// Componente de lista desordenada (UL)\r\nexport const UL: React.FC<ListProps> = ({ children, style, type = \"disc\" }) => {\r\n // Clonar los hijos para añadir el tipo de marcador\r\n const childrenWithBullets = React.Children.map(children, (child, index) => {\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child as React.ReactElement<any>, {\r\n bulletType: type,\r\n isOrdered: false,\r\n index: index + 1,\r\n })\r\n }\r\n return child\r\n })\r\n\r\n return <View style={[styles.ul, style]}>{childrenWithBullets}</View>\r\n}\r\n\r\n// Componente de lista ordenada (OL)\r\nexport const OL: React.FC<ListProps> = ({ children, style, type = \"decimal\", start = 1 }) => {\r\n // Clonar los hijos para añadir el tipo de marcador y el índice\r\n const childrenWithNumbers = React.Children.map(children, (child, index) => {\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child as React.ReactElement<any>, {\r\n bulletType: type,\r\n isOrdered: true,\r\n index: index + 1,\r\n start,\r\n })\r\n }\r\n return child\r\n })\r\n\r\n return <View style={[styles.ol, style]}>{childrenWithNumbers}</View>\r\n}\r\n\r\n// Componente de elemento de lista (LI)\r\nexport const LI: React.FC<\r\n ListItemProps & {\r\n bulletType?: string\r\n isOrdered?: boolean\r\n index?: number\r\n start?: number\r\n }\r\n> = ({ children, style, bulletType = \"disc\", isOrdered = false, index = 1, start = 1, value }) => {\r\n // Determinar el marcador a mostrar\r\n let marker\r\n if (isOrdered) {\r\n // Si se proporciona un valor específico, usarlo en lugar del índice\r\n const actualIndex = value !== undefined ? Number(value) : index\r\n marker = getOrderedMarker(actualIndex, bulletType, start)\r\n } else {\r\n marker = getBulletPoint(bulletType)\r\n }\r\n\r\n return (\r\n <View style={[styles.li, style]}>\r\n <Text style={styles.bulletPoint}>{marker}</Text>\r\n <View style={styles.itemContent}>{typeof children === \"string\" ? <Text>{children}</Text> : children}</View>\r\n </View>\r\n )\r\n}\r\n\r\n","import React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\n\r\ninterface ImgBgProps {\r\n src: string\r\n width?: number | string\r\n height?: number | string\r\n opacity?: number\r\n children?: React.ReactNode\r\n style?: any\r\n fixed?: boolean\r\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\"\r\n objectPosition?: string // ej: \"center\", \"top\", \"left top\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n background: {\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n content: {\r\n position: \"relative\",\r\n },\r\n})\r\n\r\nconst ImgBg: React.FC<ImgBgProps> = ({\r\n src,\r\n width = \"100%\",\r\n height = \"100%\",\r\n opacity = 0.2,\r\n children,\r\n style,\r\n fixed = false,\r\n objectFit = \"cover\",\r\n objectPosition = \"center\",\r\n}) => {\r\n return (\r\n <View style={[styles.container, style]}>\r\n <Image\r\n src={src}\r\n style={[\r\n styles.background,\r\n { width, height, opacity, objectFit, objectPosition },\r\n ]}\r\n fixed={fixed}\r\n />\r\n <View style={styles.content}>{children}</View>\r\n </View>\r\n )\r\n}\r\n\r\nexport default ImgBg\r\n"]}
1
+ {"version":3,"sources":["../../frontend/src/functions/decodeBase64Pdf.ts","../../frontend/src/functions/generatePDF.ts","../../frontend/src/components/core/LayoutPDF.tsx","../../frontend/src/components/core/Img.tsx","../../frontend/src/components/core/Position.tsx","../../frontend/src/components/core/Etiquetas.tsx","../../frontend/src/components/core/Tablet.tsx","../../frontend/src/components/core/Grid.tsx","../../frontend/src/components/core/QRGenerator.ts","../../frontend/src/components/core/QR.tsx","../../frontend/src/components/core/QRGeneratorV2.ts","../../frontend/src/components/core/QRV2.tsx","../../frontend/src/components/core/Lista.tsx","../../frontend/src/components/core/ImgBg.tsx"],"names":["decodeBase64Pdf","base64","fileName","byteCharacters","byteNumbers","i","byteArray","blob","blobUrl","link","decodeBase64Pdf_default","generatePDF","Template","data","MyDocument","createElement","stream","renderToStream","resolve","reject","chunks","chunk","error","generatePDF_default","styles","StyleSheet","LayoutPDF","children","size","orientation","backgroundColor","padding","margen","style","pagination","footer","lines","rule","footerHeight","getMargins","pageSize","normalizedSize","safeSize","safeOrientation","safeBackgroundColor","safeMargen","validOrientations","normalizedOrientation","e","transformOrientation","getFooterPosition","pageDimensions","mmToPoints","dimensions","heightInPoints","widthInPoints","pdfOrientation","margins","footerTop","renderGrid","cmToPoints","pageWidth","pageHeight","horizontalLines","verticalLines","jsx","View","jsxs","pageStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","rest","footerStyle","Document","Page","Text","pageNumber","totalPages","LayoutPDF_default","Img","src","Image","Img_default","Left","Right","Center","P","H1","H2","H3","H4","H5","H6","Strong","Em","U","Small","Blockquote","Mark","A","href","Link","BR","HR","Span","Header","fixed","Div","TableContext","createContext","Table","cellHeight","Thead","textAlign","useContext","Tbody","rows","React","count","Fragment","row","idx","Tr","isLastRow","isOdd","elements","child","isLast","width","Th","height","colSpan","propTextAlign","contextTextAlign","finalTextAlign","baseWidth","borders","Td","Container","Row","Col1","Col2","Col3","Col4","Col5","Col6","Col7","Col8","Col9","Col10","Col11","Col12","generateQRAsBase64","value","colorDark","colorLight","margin","errorCorrectionLevel","options","QRCode","addLogoToQR","qrDataUrl","logoUrl","logoWidth","logoHeight","isBrowser","canvas","ctx","ImageConstructor","createCanvas","qrImage","logoImage","x","finalQrDataUrl","err","errorLevelMap","QR","logo","setQrDataUrl","useState","useEffect","baseQrDataUrl","qrWithLogo","fallbackUrl","QR_default","generateQRV2AsBase64","QRCodeStylingConstructor","extraOptions","mod","jsdomName","canvasName","qrCommonName","jsdomMod","canvasMod","qrCommonMod","JSDOM","nodeCanvas","QRCodeStyling","qrOptions","rawData","reader","QRV2","image","dotsOptions","backgroundOptions","imageOptions","cornersSquareOptions","cornersDotOptions","QRV2_default","getBulletPoint","type","getOrderedMarker","index","start","actualIndex","toRoman","num","romanNumerals","UL","childrenWithBullets","OL","childrenWithNumbers","LI","bulletType","isOrdered","marker","ImgBg","opacity","objectFit","objectPosition","ImgBg_default"],"mappings":"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","file":"index.js","sourcesContent":["const decodeBase64Pdf = (base64: string, fileName: string) => {\r\n const byteCharacters = atob(base64);\r\n const byteNumbers = new Array(byteCharacters.length);\r\n for (let i = 0; i < byteCharacters.length; i++) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i);\r\n }\r\n const byteArray = new Uint8Array(byteNumbers);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n\r\n if (document === undefined) {\r\n console.error(\"document is undefined, only works in browser context\");\r\n return;\r\n }\r\n\r\n // Crear un enlace para descargar el archivo\r\n const link = document.createElement('a');\r\n link.href = blobUrl;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n\r\n // Abrir el PDF en una nueva pestaña\r\n window.open(blobUrl, '_blank');\r\n\r\n // Revocar el objeto URL después de un tiempo\r\n setTimeout(() => {\r\n URL.revokeObjectURL(blobUrl);\r\n }, 100);\r\n};\r\n\r\nexport default decodeBase64Pdf;","import { renderToStream } from \"@react-pdf/renderer\";\r\nimport { createElement } from \"react\";\r\n\r\ninterface PDFData {\r\n template: React.ElementType;\r\n data?: any;\r\n}\r\n\r\nconst generatePDF = async ({ template: Template, data }: PDFData): Promise<string> => {\r\n try {\r\n if (!Template) {\r\n throw new Error(\"Template not provided\");\r\n }\r\n\r\n // Crear el componente con los datos\r\n const MyDocument = createElement(Template, { data });\r\n\r\n // Renderizar a stream\r\n const stream = await renderToStream(MyDocument);\r\n\r\n const base64String: string = await new Promise((resolve, reject) => {\r\n const chunks: Buffer[] = [];\r\n stream.on(\"data\", (chunk) => chunks.push(chunk));\r\n stream.on(\"end\", () => resolve(Buffer.concat(chunks).toString(\"base64\")));\r\n stream.on(\"error\", (error) => reject(error));\r\n });\r\n\r\n return base64String;\r\n } catch (error) {\r\n throw new Error(\"Error generating PDF: \" + (error instanceof Error ? error.message : \"Unknown error\"));\r\n }\r\n};\r\n\r\nexport default generatePDF;\r\n","import React from \"react\"\r\nimport { Page, Document, StyleSheet, Text, View } from \"@react-pdf/renderer\"\r\n\r\nconst styles = StyleSheet.create({\r\n page: {\r\n backgroundColor: \"white\",\r\n padding: 30,\r\n fontFamily: \"Helvetica\",\r\n fontSize: 14,\r\n },\r\n footer: {\r\n position: \"absolute\",\r\n left: 0,\r\n right: 0,\r\n textAlign: \"center\",\r\n }\r\n})\r\n\r\ninterface LayoutPDFProps {\r\n children: React.ReactNode\r\n size?: string\r\n orientation?: \"vertical\" | \"horizontal\" | \"h\" | \"v\" | \"portrait\" | \"landscape\"\r\n backgroundColor?: string\r\n padding?: number\r\n margen?: \"apa\" | \"normal\" | \"estrecho\" | \"ancho\"\r\n style?: any\r\n pagination?: boolean\r\n footer?: React.ReactNode\r\n lines?: number\r\n rule?: boolean\r\n}\r\n\r\nconst LayoutPDF: React.FC<LayoutPDFProps> = ({\r\n children,\r\n size = \"A4\",\r\n orientation = \"vertical\",\r\n backgroundColor = \"white\",\r\n padding = 30,\r\n margen = \"normal\",\r\n style = {},\r\n pagination = true,\r\n footer,\r\n lines = footer ? 2 : 1,\r\n rule = false,\r\n}) => {\r\n // Calculate footer height based on number of lines\r\n // Each line is approximately 20 points (considering font size and line height)\r\n const LINE_HEIGHT = 20\r\n const FOOTER_PADDING = 10\r\n const footerHeight = (lines * LINE_HEIGHT) + FOOTER_PADDING\r\n\r\n // Función para obtener márgenes según las normas APA y otros estándares\r\n const getMargins = (margen: string, pageSize: string) => {\r\n const normalizedSize = pageSize.toUpperCase()\r\n\r\n switch (margen) {\r\n case \"apa\":\r\n // Normas APA: 1 pulgada en todos los lados (72 puntos)\r\n if (normalizedSize === \"LETTER\" || normalizedSize === \"LEGAL\") {\r\n return {\r\n paddingTop: 72,\r\n paddingRight: 72,\r\n paddingBottom: 72,\r\n paddingLeft: 72\r\n }\r\n }\r\n // Para otros tamaños, usar equivalente proporcional\r\n return {\r\n paddingTop: 72,\r\n paddingRight: 72,\r\n paddingBottom: 72,\r\n paddingLeft: 72\r\n }\r\n\r\n case \"estrecho\":\r\n return {\r\n paddingTop: 36,\r\n paddingRight: 36,\r\n paddingBottom: 36,\r\n paddingLeft: 36\r\n }\r\n\r\n case \"ancho\":\r\n return {\r\n paddingTop: 108,\r\n paddingRight: 108,\r\n paddingBottom: 108,\r\n paddingLeft: 108\r\n }\r\n\r\n case \"normal\":\r\n default:\r\n return {\r\n paddingTop: padding,\r\n paddingRight: padding,\r\n paddingBottom: padding,\r\n paddingLeft: padding\r\n }\r\n }\r\n }\r\n\r\n // Validar y sanitizar props\r\n let safeSize = size\r\n let safeOrientation = orientation\r\n let safeBackgroundColor = backgroundColor\r\n\r\n let safeMargen = margen\r\n\r\n try {\r\n // Validar size\r\n const validSizes = [\"A0\", \"A1\", \"A2\", \"A3\", \"A4\", \"A5\", \"A6\", \"A7\", \"A8\", \"A9\", \"LETTER\", \"LEGAL\", \"TABLOID\"]\r\n if (typeof size === \"string\" && !validSizes.includes(size.toUpperCase())) {\r\n console.warn(`Invalid page size: ${size}. Using A4 as default.`)\r\n safeSize = \"A4\"\r\n }\r\n\r\n // Validar orientation\r\n const validOrientations = [\"vertical\", \"horizontal\", \"portrait\", \"landscape\", \"h\", \"v\"]\r\n const normalizedOrientation = typeof orientation === \"string\" ? orientation.toLowerCase() : \"vertical\"\r\n if (!validOrientations.includes(normalizedOrientation)) {\r\n console.warn(`Invalid orientation: ${orientation}. Using vertical as default.`)\r\n safeOrientation = \"vertical\"\r\n } else {\r\n // Mantener el valor original si es válido, respetando alias\r\n safeOrientation = orientation\r\n }\r\n\r\n // Validar backgroundColor\r\n if (typeof backgroundColor !== \"string\") {\r\n console.warn(`Invalid background color: ${backgroundColor}. Using white as default.`)\r\n safeBackgroundColor = \"white\"\r\n }\r\n\r\n // Validar margen\r\n const validMargins = [\"apa\", \"normal\", \"estrecho\", \"ancho\"]\r\n if (!validMargins.includes(margen)) {\r\n console.warn(`Invalid margin type: ${margen}. Using normal as default.`)\r\n safeMargen = \"normal\"\r\n }\r\n\r\n // Validar lines\r\n if (typeof lines !== \"number\" || lines < 1) {\r\n console.warn(`Invalid lines value: ${lines}. Using 1 as default.`)\r\n\r\n }\r\n } catch (e) {\r\n console.warn(\"Error processing props in LayoutPDF:\", e)\r\n }\r\n\r\n // Transform orientation from \"vertical\"/\"horizontal\" to \"portrait\"/\"landscape\"\r\n const transformOrientation = (orientation: \"vertical\" | \"horizontal\" | \"h\" | \"v\" | \"portrait\" | \"landscape\"): \"portrait\" | \"landscape\" => {\r\n switch (orientation) {\r\n case \"vertical\":\r\n case \"portrait\":\r\n case \"v\":\r\n return \"portrait\"\r\n case \"horizontal\":\r\n case \"landscape\":\r\n case \"h\":\r\n return \"landscape\"\r\n default:\r\n console.warn(`Unrecognized orientation: ${orientation}. Using portrait as default.`)\r\n return \"portrait\"\r\n }\r\n }\r\n\r\n // Function to calculate footer position based on size and orientation\r\n const getFooterPosition = (pageSize: string, orientation: \"portrait\" | \"landscape\", footerHeight: number) => {\r\n // Dimensions in millimeters according to ISO 216 standard\r\n const pageDimensions: Record<string, { width: number; height: number }> = {\r\n A0: { width: 841, height: 1189 },\r\n A1: { width: 594, height: 841 },\r\n A2: { width: 420, height: 594 },\r\n A3: { width: 297, height: 420 },\r\n A4: { width: 210, height: 297 },\r\n A5: { width: 148, height: 210 },\r\n A6: { width: 105, height: 148 },\r\n A7: { width: 74, height: 105 },\r\n A8: { width: 52, height: 74 },\r\n A9: { width: 37, height: 52 },\r\n LETTER: { width: 216, height: 279 },\r\n LEGAL: { width: 216, height: 356 },\r\n TABLOID: { width: 279, height: 432 },\r\n }\r\n\r\n // Convert mm to points (1mm = 2.834645669 points)\r\n const mmToPoints = 2.834645669\r\n\r\n const dimensions = pageDimensions[pageSize.toUpperCase()]\r\n if (!dimensions) {\r\n // A4 default in points\r\n return orientation === \"landscape\" ? 595 - footerHeight - 10 : 842 - footerHeight - 10\r\n }\r\n\r\n const heightInPoints = dimensions.height * mmToPoints\r\n const widthInPoints = dimensions.width * mmToPoints\r\n\r\n // Subtract footer height and additional margin\r\n return orientation === \"landscape\"\r\n ? widthInPoints - footerHeight - 10\r\n : heightInPoints - footerHeight - 10\r\n }\r\n\r\n const pdfOrientation = transformOrientation(safeOrientation)\r\n\r\n // Obtener márgenes según el tipo seleccionado\r\n const margins = getMargins(safeMargen, safeSize)\r\n\r\n // Calculate footer position based on calculated footer height\r\n const footerTop = getFooterPosition(safeSize, pdfOrientation, footerHeight)\r\n\r\n // Function to render grid (ruler)\r\n const renderGrid = () => {\r\n if (!rule) return null\r\n\r\n // 1 cm = 28.3465 points\r\n const cmToPoints = 28.3465\r\n\r\n // Get page dimensions in points\r\n const pageDimensions: Record<string, { width: number; height: number }> = {\r\n A0: { width: 841 * 2.834645669, height: 1189 * 2.834645669 },\r\n A1: { width: 594 * 2.834645669, height: 841 * 2.834645669 },\r\n A2: { width: 420 * 2.834645669, height: 594 * 2.834645669 },\r\n A3: { width: 297 * 2.834645669, height: 420 * 2.834645669 },\r\n A4: { width: 210 * 2.834645669, height: 297 * 2.834645669 },\r\n A5: { width: 148 * 2.834645669, height: 210 * 2.834645669 },\r\n A6: { width: 105 * 2.834645669, height: 148 * 2.834645669 },\r\n A7: { width: 74 * 2.834645669, height: 105 * 2.834645669 },\r\n A8: { width: 52 * 2.834645669, height: 74 * 2.834645669 },\r\n A9: { width: 37 * 2.834645669, height: 52 * 2.834645669 },\r\n LETTER: { width: 216 * 2.834645669, height: 279 * 2.834645669 },\r\n LEGAL: { width: 216 * 2.834645669, height: 356 * 2.834645669 },\r\n TABLOID: { width: 279 * 2.834645669, height: 432 * 2.834645669 },\r\n }\r\n\r\n const dimensions = pageDimensions[safeSize.toUpperCase()] || pageDimensions.A4\r\n const pageWidth = pdfOrientation === \"landscape\" ? dimensions.height : dimensions.width\r\n const pageHeight = pdfOrientation === \"landscape\" ? dimensions.width : dimensions.height\r\n\r\n const horizontalLines = []\r\n const verticalLines = []\r\n\r\n // Generate horizontal lines (every cm)\r\n for (let i = 0; i <= Math.ceil(pageHeight / cmToPoints); i++) {\r\n horizontalLines.push(\r\n <View\r\n key={`h-${i}`}\r\n style={{\r\n position: \"absolute\",\r\n top: i * cmToPoints,\r\n left: 0,\r\n right: 0,\r\n height: i % 5 === 0 ? 1 : 0.5,\r\n backgroundColor: i % 5 === 0 ? \"rgba(255, 0, 0, 0.8)\" : \"rgba(100, 100, 100, 0.5)\",\r\n }}\r\n />\r\n )\r\n }\r\n\r\n // Generate vertical lines (every cm)\r\n for (let i = 0; i <= Math.ceil(pageWidth / cmToPoints); i++) {\r\n verticalLines.push(\r\n <View\r\n key={`v-${i}`}\r\n style={{\r\n position: \"absolute\",\r\n left: i * cmToPoints,\r\n top: 0,\r\n bottom: 0,\r\n width: i % 5 === 0 ? 1 : 0.5,\r\n backgroundColor: i % 5 === 0 ? \"rgba(255, 0, 0, 0.8)\" : \"rgba(100, 100, 100, 0.5)\",\r\n }}\r\n />\r\n )\r\n }\r\n\r\n return (\r\n <View style={{ position: \"absolute\", top: 0, left: 0, right: 0, bottom: 0 }} fixed>\r\n {horizontalLines}\r\n {verticalLines}\r\n </View>\r\n )\r\n }\r\n\r\n const pageStyle = {\r\n ...styles.page,\r\n backgroundColor: safeBackgroundColor,\r\n paddingTop: (style?.paddingTop ?? style?.padding ?? margins.paddingTop),\r\n paddingRight: (style?.paddingRight ?? style?.padding ?? margins.paddingRight),\r\n paddingLeft: (style?.paddingLeft ?? style?.padding ?? margins.paddingLeft),\r\n paddingBottom: (style?.paddingBottom ?? style?.padding ?? margins.paddingBottom) + footerHeight,\r\n ...( (() => { const { padding, paddingTop, paddingRight, paddingBottom, paddingLeft, ...rest } = style || {}; return rest })() ),\r\n }\r\n\r\n const footerStyle = {\r\n ...styles.footer,\r\n top: footerTop,\r\n height: footerHeight,\r\n display: \"flex\" as const,\r\n flexDirection: \"column\" as const,\r\n justifyContent: \"center\" as const,\r\n alignItems: \"center\" as const,\r\n fontSize: 10,\r\n color: \"grey\"\r\n }\r\n\r\n return (\r\n <Document>\r\n <Page size={safeSize as any} orientation={pdfOrientation} style={pageStyle} wrap>\r\n {renderGrid()}\r\n <View style={{ paddingBottom: footerHeight }}>\r\n {children}\r\n </View>\r\n\r\n <View style={footerStyle} fixed>\r\n {footer && (footer)}\r\n {pagination && (\r\n <Text style={{ fontSize: footerStyle.fontSize }} render={({ pageNumber, totalPages }) => (\r\n `${pageNumber} / ${totalPages}`\r\n )} />\r\n )}\r\n </View>\r\n\r\n </Page>\r\n </Document>\r\n )\r\n}\r\n\r\nexport default LayoutPDF\r\n","import React from \"react\"\r\nimport { Image, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ImgProps {\r\n src?: string\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n image: {\r\n width: \"100%\",\r\n height: \"auto\",\r\n marginBottom: 14,\r\n },\r\n})\r\n\r\nconst Img: React.FC<ImgProps> = ({ src, style }) => {\r\n return <Image src={src} style={[styles.image, style]} />\r\n}\r\n\r\nexport default Img\r\n\r\n","import React from \"react\"\r\nimport { View, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface PositionProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n left: {\r\n textAlign: \"left\",\r\n },\r\n right: {\r\n textAlign: \"right\",\r\n },\r\n center: {\r\n textAlign: \"center\",\r\n },\r\n})\r\n\r\nconst Left: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.left, style]}>{children}</View>\r\n}\r\n\r\nconst Right: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.right, style]}>{children}</View>\r\n}\r\n\r\nconst Center: React.FC<PositionProps> = ({ children, style }) => {\r\n return <View style={[styles.center, style]}>{children}</View>\r\n}\r\n\r\nexport { Left, Right, Center }\r\n\r\n","import React from \"react\"\r\nimport { Text, StyleSheet, Link, View } from \"@react-pdf/renderer\"\r\n\r\ninterface TextProps {\r\n children: React.ReactNode\r\n style?: any\r\n href?: string\r\n}\r\n\r\ninterface DivProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface HeaderProps {\r\n children: React.ReactNode\r\n style?: any\r\n fixed?: boolean\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n p: {\r\n fontSize: 12,\r\n marginBottom: 5,\r\n lineHeight: 1.2,\r\n },\r\n h1: {\r\n fontSize: 24,\r\n fontWeight: \"bold\",\r\n marginBottom: 12,\r\n },\r\n h2: {\r\n fontSize: 20,\r\n fontWeight: \"bold\",\r\n marginBottom: 10,\r\n },\r\n h3: {\r\n fontSize: 18,\r\n fontWeight: \"bold\",\r\n marginBottom: 8,\r\n },\r\n h4: {\r\n fontSize: 16,\r\n fontWeight: \"bold\",\r\n marginBottom: 6,\r\n },\r\n h5: {\r\n fontSize: 14,\r\n fontWeight: \"bold\",\r\n marginBottom: 4,\r\n },\r\n h6: {\r\n fontSize: 12,\r\n fontWeight: \"bold\",\r\n marginBottom: 0,\r\n },\r\n strong: {\r\n fontWeight: \"bold\",\r\n },\r\n em: {\r\n fontStyle: \"italic\",\r\n },\r\n u: {\r\n textDecoration: \"underline\",\r\n },\r\n small: {\r\n fontSize: 10,\r\n },\r\n blockquote: {\r\n marginLeft: 20,\r\n marginRight: 20,\r\n fontStyle: \"italic\",\r\n borderLeft: \"4px solid #ccc\",\r\n paddingLeft: 10,\r\n },\r\n mark: {\r\n backgroundColor: \"yellow\",\r\n },\r\n A: {\r\n color: \"#3d65fd\",\r\n textDecoration: \"none\",\r\n },\r\n br: {\r\n width: \"100%\",\r\n height: 1,\r\n marginTop: 7,\r\n marginBottom: 7,\r\n },\r\n header: {\r\n position: \"absolute\",\r\n top: 20,\r\n left: 0,\r\n right: 0,\r\n textAlign: \"center\",\r\n fontSize: 10,\r\n color: \"#666\",\r\n paddingHorizontal: 40,\r\n },\r\n hr: {\r\n width: \"100%\",\r\n borderTop: \"1px solid #000\",\r\n marginTop: 8,\r\n marginBottom: 8,\r\n },\r\n})\r\n\r\nconst P: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.p, style]}>{children}</Text>\r\n}\r\n\r\nconst H1: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h1, style]}>{children}</Text>\r\n}\r\n\r\nconst H2: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h2, style]}>{children}</Text>\r\n}\r\n\r\nconst H3: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h3, style]}>{children}</Text>\r\n}\r\n\r\nconst H4: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h4, style]}>{children}</Text>\r\n}\r\n\r\nconst H5: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h5, style]}>{children}</Text>\r\n}\r\n\r\nconst H6: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.h6, style]}>{children}</Text>\r\n}\r\n\r\nconst Strong: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.strong, style]}>{children}</Text>\r\n}\r\n\r\nconst Em: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.em, style]}>{children}</Text>\r\n}\r\n\r\nconst U: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.u, style]}>{children}</Text>\r\n}\r\n\r\nconst Small: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.small, style]}>{children}</Text>\r\n}\r\n\r\nconst Blockquote: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.blockquote, style]}>{children}</Text>\r\n}\r\n\r\nconst Mark: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[styles.mark, style]}>{children}</Text>\r\n}\r\n\r\nconst A: React.FC<TextProps> = ({ children, style, href }) => {\r\n return (\r\n <Link src={href} style={[styles.A, style]}>\r\n {children}\r\n </Link>\r\n )\r\n}\r\n\r\nconst BR: React.FC<{ style?: any }> = ({ style }) => {\r\n return <Text style={[styles.br, style]}>{\"\\n\"}</Text>\r\n}\r\n\r\nconst HR: React.FC<{ style?: any }> = ({ style }) => {\r\n return <View style={[styles.hr, style]} />\r\n}\r\n\r\nconst Span: React.FC<TextProps> = ({ children, style }) => {\r\n return <Text style={[style]}>{children}</Text>\r\n}\r\n\r\nconst Header: React.FC<HeaderProps> = ({ children, style, fixed = false }) => {\r\n return (\r\n <View style={[styles.header, style]} fixed={fixed}>\r\n {typeof children === \"string\" ? <Text>{children}</Text> : children}\r\n </View>\r\n )\r\n}\r\n\r\nconst Div: React.FC<DivProps> = ({ children, style }) => {\r\n return <View style={style}>{children}</View>\r\n}\r\n\r\nexport { P, A, H1, H2, H3, H4, H5, H6, Strong, Em, U, Small, Blockquote, Mark, Span, BR, HR, Header, Div }","import React, { createContext, useContext } from \"react\";\r\nimport { View, Text, StyleSheet } from \"@react-pdf/renderer\";\r\n\r\ninterface TableProps {\r\n children: React.ReactNode;\r\n style?: any;\r\n cellHeight?: number;\r\n}\r\n\r\ninterface TheadProps {\r\n children: React.ReactNode;\r\n style?: any;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}\r\n\r\ninterface CellProps {\r\n children?: React.ReactNode;\r\n style?: any;\r\n width?: string | number;\r\n height?: string | number;\r\n colSpan?: number;\r\n isLast?: boolean;\r\n isLastRow?: boolean;\r\n isOdd?: boolean;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}\r\n\r\n// Context para pasar cellHeight y textAlign a los componentes hijos\r\nconst TableContext = createContext<{\r\n cellHeight: number;\r\n textAlign?: \"left\" | \"center\" | \"right\" | any;\r\n}>({\r\n cellHeight: 22,\r\n textAlign: \"left\",\r\n});\r\n\r\nconst styles = StyleSheet.create({\r\n table: {\r\n width: \"100%\",\r\n borderWidth: 1,\r\n borderColor: \"#000\",\r\n marginBottom: 20,\r\n },\r\n thead: {\r\n backgroundColor: \"#ccc\",\r\n },\r\n tr: {\r\n flexDirection: \"row\",\r\n },\r\n textBold: {\r\n fontSize: 10,\r\n fontWeight: \"bold\",\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n justifyContent: \"center\",\r\n\r\n },\r\n text: {\r\n fontSize: 10,\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n justifyContent: \"center\",\r\n\r\n },\r\n zebraOdd: {\r\n backgroundColor: \"#eeeeee\",\r\n },\r\n});\r\n\r\nconst Table: React.FC<TableProps> = ({ children, style, cellHeight = 22 }) => (\r\n <TableContext.Provider value={{ cellHeight, textAlign: \"left\" }}>\r\n <View style={[styles.table, style]}>{children}</View>\r\n </TableContext.Provider>\r\n);\r\n\r\nconst Thead: React.FC<TheadProps> = ({\r\n children,\r\n style,\r\n textAlign = \"left\",\r\n}) => {\r\n const { cellHeight } = useContext(TableContext);\r\n\r\n return (\r\n <TableContext.Provider value={{ cellHeight, textAlign }}>\r\n <View style={[styles.thead, style]}>{children}</View>\r\n </TableContext.Provider>\r\n );\r\n};\r\n\r\nconst Tbody: React.FC<TableProps> = ({ children }) => {\r\n const rows = React.Children.toArray(children) as React.ReactElement<any>[];\r\n const count = rows.length;\r\n return (\r\n <>\r\n {rows.map((row, idx) =>\r\n React.cloneElement(row, {\r\n isLastRow: idx === count - 1,\r\n isOdd: idx % 2 === 1,\r\n })\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst Tr: React.FC<TableProps & { isLastRow?: boolean; isOdd?: boolean }> = ({\r\n children,\r\n style,\r\n isLastRow = false,\r\n isOdd = false,\r\n}) => {\r\n const elements = React.Children.toArray(\r\n children\r\n ) as React.ReactElement<CellProps>[];\r\n const count = elements.length;\r\n return (\r\n <View style={[styles.tr, style]}>\r\n {elements.map((child, idx) => {\r\n const isLast = idx === count - 1;\r\n const width = `${(100 / count).toFixed(2)}%`;\r\n return React.cloneElement(child, { width, isLast, isLastRow, isOdd });\r\n })}\r\n </View>\r\n );\r\n};\r\n\r\nconst Th: React.FC<CellProps> = ({\r\n children,\r\n style,\r\n width,\r\n height,\r\n colSpan,\r\n isLast = false,\r\n isLastRow = false,\r\n textAlign: propTextAlign,\r\n}) => {\r\n const { cellHeight, textAlign: contextTextAlign } = useContext(TableContext);\r\n\r\n // Usar textAlign del prop si está definido, sino el del contexto\r\n const finalTextAlign = propTextAlign || contextTextAlign || \"left\";\r\n\r\n const baseWidth =\r\n typeof width === \"string\" && colSpan\r\n ? `${(parseFloat(width) * colSpan).toFixed(2)}%`\r\n : width;\r\n\r\n const cellHeightValue = height !== undefined ? height : cellHeight;\r\n\r\n const borders = {\r\n borderRightWidth: isLast ? 0 : 1,\r\n borderBottomWidth: isLastRow ? 0 : 1,\r\n borderColor: \"#000\",\r\n minHeight: cellHeightValue,\r\n };\r\n\r\n return (\r\n <View\r\n style={[\r\n styles.textBold,\r\n {\r\n width: baseWidth,\r\n },\r\n borders,\r\n style,\r\n ]}\r\n >\r\n <Text style={{ textAlign: finalTextAlign }}>{children}</Text>\r\n </View>\r\n );\r\n};\r\n\r\nconst Td: React.FC<CellProps> = ({\r\n children,\r\n style,\r\n width,\r\n height,\r\n colSpan,\r\n isLast = false,\r\n isLastRow = false,\r\n isOdd = false,\r\n textAlign: propTextAlign,\r\n}) => {\r\n const { cellHeight, textAlign: contextTextAlign } = useContext(TableContext);\r\n\r\n // Usar textAlign del prop si está definido, sino el del contexto, sino 'left'\r\n const finalTextAlign = propTextAlign || contextTextAlign || \"left\";\r\n\r\n const baseWidth =\r\n typeof width === \"string\" && colSpan\r\n ? `${(parseFloat(width) * colSpan).toFixed(2)}%`\r\n : width;\r\n\r\n const cellHeightValue = height !== undefined ? height : cellHeight;\r\n\r\n const borders = {\r\n borderRightWidth: isLast ? 0 : 1,\r\n borderBottomWidth: isLastRow ? 0 : 1,\r\n borderColor: \"#000\",\r\n minHeight: cellHeightValue,\r\n };\r\n\r\n return (\r\n <View\r\n style={[\r\n styles.text,\r\n isOdd && styles.zebraOdd,\r\n {\r\n width: baseWidth,\r\n },\r\n borders,\r\n style,\r\n ]}\r\n >\r\n <Text style={{ textAlign: finalTextAlign }}>{children}</Text>\r\n </View>\r\n );\r\n};\r\n\r\nexport { Table, Thead, Tbody, Tr, Th, Td };\r\n","import React from \"react\"\r\nimport { View, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ContainerProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface RowProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\ninterface ColProps {\r\n children: React.ReactNode\r\n style?: any\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n width: \"100%\",\r\n paddingHorizontal: 20,\r\n },\r\n row: {\r\n flexDirection: \"row\",\r\n flexWrap: \"wrap\",\r\n marginHorizontal: -5,\r\n },\r\n col: {\r\n paddingHorizontal: 5,\r\n },\r\n col1: { width: \"8.33%\" },\r\n col2: { width: \"16.66%\" },\r\n col3: { width: \"25%\" },\r\n col4: { width: \"33.33%\" },\r\n col5: { width: \"41.66%\" },\r\n col6: { width: \"50%\" },\r\n col7: { width: \"58.33%\" },\r\n col8: { width: \"66.66%\" },\r\n col9: { width: \"75%\" },\r\n col10: { width: \"83.33%\" },\r\n col11: { width: \"91.66%\" },\r\n col12: { width: \"100%\" },\r\n})\r\n\r\nexport const Container: React.FC<ContainerProps> = ({ children, style }) => {\r\n return <View style={[styles.container, style]}>{children}</View>\r\n}\r\n\r\nexport const Row: React.FC<RowProps> = ({ children, style }) => {\r\n return <View style={[styles.row, style]}>{children}</View>\r\n}\r\n\r\nexport const Col1: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col1, style]}>{children}</View>\r\n}\r\n\r\nexport const Col2: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col2, style]}>{children}</View>\r\n}\r\n\r\nexport const Col3: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col3, style]}>{children}</View>\r\n}\r\n\r\nexport const Col4: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col4, style]}>{children}</View>\r\n}\r\n\r\nexport const Col5: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col5, style]}>{children}</View>\r\n}\r\n\r\nexport const Col6: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col6, style]}>{children}</View>\r\n}\r\n\r\nexport const Col7: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col7, style]}>{children}</View>\r\n}\r\n\r\nexport const Col8: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col8, style]}>{children}</View>\r\n}\r\n\r\nexport const Col9: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col9, style]}>{children}</View>\r\n}\r\n\r\nexport const Col10: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col10, style]}>{children}</View>\r\n}\r\n\r\nexport const Col11: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col11, style]}>{children}</View>\r\n}\r\n\r\nexport const Col12: React.FC<ColProps> = ({ children, style }) => {\r\n return <View style={[styles.col, styles.col12, style]}>{children}</View>\r\n}\r\n\r\n","import QRCode from \"qrcode\"\r\n\r\ninterface QROptions {\r\n value: string\r\n size?: number\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n logoImage?: string\r\n logoWidth?: number\r\n logoHeight?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nexport const generateQRAsBase64 = async ({\r\n value,\r\n size = 150,\r\n colorDark = \"#000000\",\r\n colorLight = \"#ffffff\",\r\n margin = 0,\r\n errorCorrectionLevel = \"M\",\r\n}: QROptions): Promise<string> => {\r\n try {\r\n // Configuración para QRCode\r\n const options = {\r\n errorCorrectionLevel: errorCorrectionLevel,\r\n type: \"image/png\" as const,\r\n quality: 0.92,\r\n margin: margin,\r\n color: {\r\n dark: colorDark,\r\n light: colorLight,\r\n },\r\n width: size,\r\n }\r\n\r\n // Generar el código QR como base64\r\n const qrDataUrl = QRCode.toDataURL(value, options)\r\n return qrDataUrl\r\n } catch (error) {\r\n console.error(\"Error generando QR:\", error)\r\n return \"\"\r\n }\r\n}\r\n\r\n// Función para añadir un logo al QR generado\r\nexport const addLogoToQR = async (\r\n qrDataUrl: string,\r\n logoUrl: string,\r\n logoWidth: number,\r\n logoHeight: number,\r\n): Promise<string> => {\r\n return new Promise(async (resolve) => {\r\n if (!qrDataUrl || !logoUrl) {\r\n resolve(qrDataUrl)\r\n return\r\n }\r\n\r\n try {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n let canvas: any;\r\n let ctx: any;\r\n let ImageConstructor: any;\r\n\r\n if (isBrowser) {\r\n canvas = document.createElement(\"canvas\")\r\n ctx = canvas.getContext(\"2d\")\r\n ImageConstructor = window.Image;\r\n } else {\r\n // Node environment\r\n try {\r\n // Use dynamic imports to avoid bundling canvas in browser build if possible\r\n // although typically 'canvas' is excluded from browser bundles or shimmed.\r\n const { createCanvas, Image } = await import('canvas');\r\n canvas = createCanvas(100, 100); // Initial size, will be resized\r\n ctx = canvas.getContext(\"2d\");\r\n ImageConstructor = Image;\r\n } catch (e) {\r\n console.error(\"Canvas not available in Node environment for addLogoToQR\", e);\r\n resolve(qrDataUrl);\r\n return;\r\n }\r\n }\r\n\r\n if (!ctx) {\r\n resolve(qrDataUrl)\r\n return\r\n }\r\n\r\n // Cargar la imagen del QR\r\n const qrImage = new ImageConstructor()\r\n // crossOrigin is only needed in browser usually, but node-canvas might support/ignore it\r\n if (isBrowser) qrImage.crossOrigin = \"anonymous\"\r\n \r\n qrImage.onload = () => {\r\n // Establecer el tamaño del canvas\r\n canvas.width = qrImage.width\r\n canvas.height = qrImage.height\r\n\r\n // Dibujar el QR en el canvas\r\n ctx.drawImage(qrImage, 0, 0, canvas.width, canvas.height)\r\n\r\n // Cargar el logo\r\n const logoImage = new ImageConstructor()\r\n if (isBrowser) logoImage.crossOrigin = \"anonymous\"\r\n \r\n logoImage.onload = () => {\r\n // Calcular la posición central para el logo\r\n const x = (canvas.width - logoWidth) / 2\r\n const y = (canvas.height - logoHeight) / 2\r\n\r\n // Dibujar un fondo blanco para el logo (opcional)\r\n ctx.fillStyle = \"#FFFFFF\"\r\n ctx.fillRect(x - 5, y - 5, logoWidth + 10, logoHeight + 10)\r\n\r\n // Dibujar el logo\r\n ctx.drawImage(logoImage, x, y, logoWidth, logoHeight)\r\n\r\n // Convertir el canvas a base64\r\n const finalQrDataUrl = canvas.toDataURL(\"image/png\")\r\n resolve(finalQrDataUrl)\r\n }\r\n\r\n logoImage.onerror = (err: any) => {\r\n console.error(\"Error cargando el logo:\", err)\r\n resolve(qrDataUrl) // Devolver el QR sin logo en caso de error\r\n }\r\n\r\n logoImage.src = logoUrl\r\n }\r\n\r\n qrImage.onerror = (err: any) => {\r\n console.error(\"Error cargando el QR:\", err)\r\n resolve(\"\")\r\n }\r\n\r\n qrImage.src = qrDataUrl\r\n } catch (error) {\r\n console.error(\"Error procesando el QR con logo:\", error)\r\n resolve(qrDataUrl) // Devolver el QR sin logo en caso de error\r\n }\r\n })\r\n}\r\n","\"use client\"\r\n\r\nimport React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\nimport { useEffect, useState } from \"react\"\r\nimport { generateQRAsBase64, addLogoToQR } from \"./QRGenerator\"\r\n\r\n// Define the props for the QR component\r\ninterface QRProps {\r\n value: string\r\n size?: number\r\n style?: any\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n logo?: string\r\n logoWidth?: number\r\n logoHeight?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n qrContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n margin: 10,\r\n },\r\n})\r\n\r\n// Mapa para convertir niveles de corrección numéricos a letras\r\nconst errorLevelMap: Record<number, \"L\" | \"M\" | \"Q\" | \"H\"> = {\r\n 0: \"L\",\r\n 1: \"M\",\r\n 2: \"Q\",\r\n 3: \"H\",\r\n}\r\n\r\n// Este componente funciona con React PDF\r\nconst QR: React.FC<QRProps> = ({\r\n value,\r\n size = 150,\r\n style,\r\n colorDark = \"#000000\",\r\n colorLight = \"#ffffff\",\r\n margin = 0,\r\n logo = \"\",\r\n logoWidth = 30,\r\n logoHeight = 30,\r\n errorCorrectionLevel = logo ? \"H\" : \"M\",\r\n}) => {\r\n const [qrDataUrl, setQrDataUrl] = useState<string>(\"\")\r\n\r\n // Generar el código QR cuando el componente se monta o cuando cambian las props\r\n useEffect(() => {\r\n const generateQR = async () => {\r\n try {\r\n // Primero generamos el QR básico\r\n const baseQrDataUrl = await generateQRAsBase64({\r\n value,\r\n size,\r\n colorDark,\r\n colorLight,\r\n margin,\r\n errorCorrectionLevel:\r\n typeof errorCorrectionLevel === \"number\"\r\n ? errorLevelMap[errorCorrectionLevel] || \"M\"\r\n : errorCorrectionLevel,\r\n })\r\n\r\n // Si hay un logo, lo añadimos al QR\r\n if (logo && logoWidth && logoHeight) {\r\n const qrWithLogo = await addLogoToQR(baseQrDataUrl, logo, logoWidth, logoHeight)\r\n setQrDataUrl(qrWithLogo)\r\n } else {\r\n setQrDataUrl(baseQrDataUrl)\r\n }\r\n } catch (error) {\r\n console.error(\"Error generando QR:\", error)\r\n // En caso de error, generamos un QR básico usando una API externa\r\n const fallbackUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(\r\n value,\r\n )}&size=${size}x${size}&color=${encodeURIComponent(colorDark.replace(\"#\", \"\"))}&bgcolor=${encodeURIComponent(\r\n colorLight.replace(\"#\", \"\"),\r\n )}`\r\n setQrDataUrl(fallbackUrl)\r\n }\r\n }\r\n\r\n generateQR()\r\n }, [value, size, colorDark, colorLight, margin, logo, logoWidth, logoHeight, errorCorrectionLevel])\r\n\r\n // Mostrar un QR de respaldo mientras se genera el QR personalizado\r\n const fallbackUrl = `https://api.qrserver.com/v1/create-qr-code/?data=${encodeURIComponent(\r\n value,\r\n )}&size=${size}x${size}`\r\n\r\n return (\r\n <View style={[styles.qrContainer, style]}>\r\n <Image src={qrDataUrl || fallbackUrl} style={{ width: size, height: size }} />\r\n </View>\r\n )\r\n}\r\n\r\nexport default QR\r\n\r\n","import { generateQRAsBase64 } from \"./QRGenerator\"\r\n\r\nexport interface QRV2Options {\r\n value: string\r\n width?: number\r\n height?: number\r\n image?: string\r\n dotsOptions?: {\r\n color?: string\r\n type?: \"rounded\" | \"dots\" | \"classy\" | \"classy-rounded\" | \"square\" | \"extra-rounded\"\r\n }\r\n backgroundOptions?: {\r\n color?: string\r\n }\r\n imageOptions?: {\r\n crossOrigin?: string\r\n margin?: number\r\n imageSize?: number // 0-1 (e.g., 0.4)\r\n }\r\n cornersSquareOptions?: {\r\n type?: \"dot\" | \"square\" | \"extra-rounded\"\r\n color?: string\r\n }\r\n cornersDotOptions?: {\r\n type?: \"dot\" | \"square\"\r\n color?: string\r\n }\r\n // Fallback options\r\n fallbackColorDark?: string\r\n fallbackColorLight?: string\r\n fallbackMargin?: number\r\n fallbackErrorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nexport const generateQRV2AsBase64 = async (options: QRV2Options): Promise<string> => {\r\n try {\r\n const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\r\n \r\n let QRCodeStylingConstructor: any;\r\n let extraOptions = {};\r\n\r\n if (isBrowser) {\r\n // Dynamic import for browser\r\n try {\r\n const mod = await import('qr-code-styling');\r\n QRCodeStylingConstructor = mod.default || mod;\r\n } catch (e) {\r\n console.error(\"Failed to load qr-code-styling in browser\", e);\r\n throw e;\r\n }\r\n } else {\r\n // Node environment\r\n // We use variable names to prevent bundlers (like Vite) from analyzing/bundling these dependencies\r\n // when building for the browser.\r\n const jsdomName = \"jsdom\";\r\n const canvasName = \"canvas\";\r\n const qrCommonName = \"qr-code-styling/lib/qr-code-styling.common.js\";\r\n \r\n try {\r\n const [jsdomMod, canvasMod, qrCommonMod] = await Promise.all([\r\n import(/* @vite-ignore */ jsdomName),\r\n import(/* @vite-ignore */ canvasName),\r\n import(/* @vite-ignore */ qrCommonName)\r\n ]);\r\n\r\n const { JSDOM } = jsdomMod;\r\n // canvas might be default export or named export depending on version/bundling\r\n const nodeCanvas = canvasMod.default || canvasMod;\r\n const { QRCodeStyling } = qrCommonMod;\r\n\r\n QRCodeStylingConstructor = QRCodeStyling;\r\n extraOptions = {\r\n jsdom: JSDOM,\r\n nodeCanvas: nodeCanvas\r\n };\r\n } catch (e) {\r\n console.error(\"Failed to load Node dependencies for QR generation\", e);\r\n throw e;\r\n }\r\n }\r\n\r\n const width = typeof options.width === \"number\" && isFinite(options.width) ? Math.round(options.width) : 300;\r\n const height = typeof options.height === \"number\" && isFinite(options.height) ? Math.round(options.height) : 300;\r\n \r\n\r\n const qrOptions = {\r\n width,\r\n height,\r\n data: options.value,\r\n image: options.image,\r\n dotsOptions: options.dotsOptions,\r\n backgroundOptions: {\r\n // Default to white background if not specified to prevent transparency issues\r\n // The \"blue stripe\" or weird artifacts can happen if the background is transparent or handled incorrectly\r\n color: options.backgroundOptions?.color || \"#ffffff\",\r\n ...options.backgroundOptions\r\n },\r\n imageOptions: {\r\n crossOrigin: \"anonymous\",\r\n margin: typeof options.imageOptions?.margin === \"number\" && isFinite(options.imageOptions.margin) ? options.imageOptions.margin : 0,\r\n saveAsBlob: true,\r\n imageSize: typeof options.imageOptions?.imageSize === \"number\" && isFinite(options.imageOptions.imageSize)\r\n ? Math.max(0, Math.min(1, options.imageOptions.imageSize))\r\n : 0.4,\r\n },\r\n cornersSquareOptions: options.cornersSquareOptions,\r\n cornersDotOptions: options.cornersDotOptions,\r\n }\r\n\r\n // @ts-ignore\r\n const qrCodeImage = new QRCodeStylingConstructor({\r\n type: \"png\", // Force PNG type\r\n ...extraOptions,\r\n ...qrOptions,\r\n })\r\n\r\n const rawData = await qrCodeImage.getRawData(\"png\")\r\n \r\n if (!rawData) throw new Error(\"Failed to generate raw data from qr-code-styling\")\r\n\r\n // Handle Blob (Browser) vs Buffer (Node)\r\n if (isBrowser) {\r\n if (rawData instanceof Blob) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n if (typeof reader.result === 'string') {\r\n resolve(reader.result);\r\n } else {\r\n reject(new Error(\"Failed to convert blob to base64\"));\r\n }\r\n };\r\n reader.onerror = reject;\r\n reader.readAsDataURL(rawData);\r\n });\r\n } else {\r\n // Sometimes in browser it might return something else if configured differently?\r\n // But usually Blob.\r\n console.warn(\"Unexpected rawData type in browser:\", rawData);\r\n }\r\n } \r\n \r\n // Node environment usually returns Buffer\r\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(rawData)) {\r\n return `data:image/png;base64,${rawData.toString(\"base64\")}`;\r\n }\r\n \r\n // Fallback if type is unexpected\r\n // Try to handle if it's a blob-like object in Node (unlikely but possible with polyfills)\r\n throw new Error(`Unexpected raw data type: ${typeof rawData}`);\r\n\r\n } catch (error) {\r\n console.error(\"Error generating QR V2, falling back to V1:\", error)\r\n \r\n // Fallback to existing implementation\r\n return generateQRAsBase64({\r\n value: options.value,\r\n size: options.width,\r\n colorDark: options.fallbackColorDark || options.dotsOptions?.color,\r\n colorLight: options.fallbackColorLight || options.backgroundOptions?.color,\r\n margin: options.fallbackMargin || 0,\r\n errorCorrectionLevel: options.fallbackErrorCorrectionLevel || \"M\",\r\n })\r\n }\r\n}\r\n","\"use client\"\r\n\r\nimport React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\nimport { generateQRV2AsBase64, type QRV2Options } from \"./QRGeneratorV2\"\r\n\r\n// Define props\r\nexport interface QRV2Props {\r\n value: string\r\n size?: number\r\n style?: any\r\n image?: string\r\n dotsOptions?: QRV2Options[\"dotsOptions\"]\r\n backgroundOptions?: QRV2Options[\"backgroundOptions\"]\r\n imageOptions?: QRV2Options[\"imageOptions\"]\r\n cornersSquareOptions?: QRV2Options[\"cornersSquareOptions\"]\r\n cornersDotOptions?: QRV2Options[\"cornersDotOptions\"]\r\n // Fallback/Compatibility props\r\n colorDark?: string\r\n colorLight?: string\r\n margin?: number\r\n errorCorrectionLevel?: \"L\" | \"M\" | \"Q\" | \"H\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n qrContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n})\r\n\r\nconst QRV2: React.FC<QRV2Props> = ({\r\n value,\r\n size = 300,\r\n style,\r\n image,\r\n dotsOptions,\r\n backgroundOptions,\r\n imageOptions,\r\n cornersSquareOptions,\r\n cornersDotOptions,\r\n colorDark,\r\n colorLight,\r\n margin,\r\n errorCorrectionLevel,\r\n}) => {\r\n return (\r\n <View style={[styles.qrContainer, style]}>\r\n {/* We pass a function that returns the promise/result or use the state if available. \r\n Actually, we can pass the promise directly to src! */}\r\n <Image \r\n style={{ width: size, height: size }} \r\n src={generateQRV2AsBase64({\r\n value,\r\n width: size,\r\n height: size,\r\n image,\r\n dotsOptions: dotsOptions || (colorDark ? { color: colorDark } : undefined),\r\n backgroundOptions: backgroundOptions || (colorLight ? { color: colorLight } : undefined),\r\n imageOptions: {\r\n ...imageOptions,\r\n margin: imageOptions?.margin !== undefined ? imageOptions.margin : margin\r\n },\r\n cornersSquareOptions,\r\n cornersDotOptions,\r\n fallbackColorDark: colorDark,\r\n fallbackColorLight: colorLight,\r\n fallbackMargin: margin,\r\n fallbackErrorCorrectionLevel: errorCorrectionLevel,\r\n })} \r\n />\r\n </View>\r\n )\r\n}\r\n\r\nexport default QRV2\r\n","import React from \"react\"\r\nimport { View, Text, StyleSheet } from \"@react-pdf/renderer\"\r\n\r\ninterface ListProps {\r\n children: React.ReactNode\r\n style?: any\r\n start?: number // Para listas ordenadas, desde qué número empezar\r\n type?: \"disc\" | \"circle\" | \"square\" | \"decimal\" | \"lower-alpha\" | \"upper-alpha\" | \"lower-roman\" | \"upper-roman\"\r\n}\r\n\r\ninterface ListItemProps {\r\n children: React.ReactNode\r\n style?: any\r\n value?: number | string // Valor específico para este elemento de lista\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n ul: {\r\n marginBottom: 10,\r\n paddingLeft: 15,\r\n },\r\n ol: {\r\n marginBottom: 10,\r\n paddingLeft: 15,\r\n },\r\n li: {\r\n marginBottom: 5,\r\n flexDirection: \"row\",\r\n },\r\n bulletPoint: {\r\n width: 15,\r\n marginRight: 5,\r\n fontSize: 12,\r\n },\r\n itemContent: {\r\n flex: 1,\r\n },\r\n})\r\n\r\n// Función para generar marcadores de lista desordenada\r\nconst getBulletPoint = (type = \"disc\") => {\r\n switch (type) {\r\n case \"circle\":\r\n return \"○\"\r\n case \"square\":\r\n return \"■\"\r\n case \"disc\":\r\n default:\r\n return \"•\"\r\n }\r\n}\r\n\r\n// Función para generar marcadores de lista ordenada\r\nconst getOrderedMarker = (index: number, type = \"decimal\", start = 1) => {\r\n const actualIndex = start + index - 1\r\n\r\n switch (type) {\r\n case \"lower-alpha\":\r\n return String.fromCharCode(97 + (actualIndex % 26)) + \".\"\r\n case \"upper-alpha\":\r\n return String.fromCharCode(65 + (actualIndex % 26)) + \".\"\r\n case \"lower-roman\":\r\n return toRoman(actualIndex).toLowerCase() + \".\"\r\n case \"upper-roman\":\r\n return toRoman(actualIndex) + \".\"\r\n case \"decimal\":\r\n default:\r\n return actualIndex + \".\"\r\n }\r\n}\r\n\r\n// Función para convertir números a numerales romanos\r\nconst toRoman = (num: number): string => {\r\n if (num <= 0 || num > 3999) return String(num)\r\n\r\n const romanNumerals = [\r\n [\"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"],\r\n [\"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\"],\r\n [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\"],\r\n [\"\", \"M\", \"MM\", \"MMM\"],\r\n ]\r\n\r\n return (\r\n romanNumerals[3][Math.floor(num / 1000)] +\r\n romanNumerals[2][Math.floor((num % 1000) / 100)] +\r\n romanNumerals[1][Math.floor((num % 100) / 10)] +\r\n romanNumerals[0][num % 10]\r\n )\r\n}\r\n\r\n// Componente de lista desordenada (UL)\r\nexport const UL: React.FC<ListProps> = ({ children, style, type = \"disc\" }) => {\r\n // Clonar los hijos para añadir el tipo de marcador\r\n const childrenWithBullets = React.Children.map(children, (child, index) => {\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child as React.ReactElement<any>, {\r\n bulletType: type,\r\n isOrdered: false,\r\n index: index + 1,\r\n })\r\n }\r\n return child\r\n })\r\n\r\n return <View style={[styles.ul, style]}>{childrenWithBullets}</View>\r\n}\r\n\r\n// Componente de lista ordenada (OL)\r\nexport const OL: React.FC<ListProps> = ({ children, style, type = \"decimal\", start = 1 }) => {\r\n // Clonar los hijos para añadir el tipo de marcador y el índice\r\n const childrenWithNumbers = React.Children.map(children, (child, index) => {\r\n if (React.isValidElement(child)) {\r\n return React.cloneElement(child as React.ReactElement<any>, {\r\n bulletType: type,\r\n isOrdered: true,\r\n index: index + 1,\r\n start,\r\n })\r\n }\r\n return child\r\n })\r\n\r\n return <View style={[styles.ol, style]}>{childrenWithNumbers}</View>\r\n}\r\n\r\n// Componente de elemento de lista (LI)\r\nexport const LI: React.FC<\r\n ListItemProps & {\r\n bulletType?: string\r\n isOrdered?: boolean\r\n index?: number\r\n start?: number\r\n }\r\n> = ({ children, style, bulletType = \"disc\", isOrdered = false, index = 1, start = 1, value }) => {\r\n // Determinar el marcador a mostrar\r\n let marker\r\n if (isOrdered) {\r\n // Si se proporciona un valor específico, usarlo en lugar del índice\r\n const actualIndex = value !== undefined ? Number(value) : index\r\n marker = getOrderedMarker(actualIndex, bulletType, start)\r\n } else {\r\n marker = getBulletPoint(bulletType)\r\n }\r\n\r\n return (\r\n <View style={[styles.li, style]}>\r\n <Text style={styles.bulletPoint}>{marker}</Text>\r\n <View style={styles.itemContent}>{typeof children === \"string\" ? <Text>{children}</Text> : children}</View>\r\n </View>\r\n )\r\n}\r\n\r\n","import React from \"react\"\r\nimport { Image, StyleSheet, View } from \"@react-pdf/renderer\"\r\n\r\ninterface ImgBgProps {\r\n src: string\r\n width?: number | string\r\n height?: number | string\r\n opacity?: number\r\n children?: React.ReactNode\r\n style?: any\r\n fixed?: boolean\r\n objectFit?: \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\"\r\n objectPosition?: string // ej: \"center\", \"top\", \"left top\"\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n position: \"relative\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n background: {\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n content: {\r\n position: \"relative\",\r\n },\r\n})\r\n\r\nconst ImgBg: React.FC<ImgBgProps> = ({\r\n src,\r\n width = \"100%\",\r\n height = \"100%\",\r\n opacity = 0.2,\r\n children,\r\n style,\r\n fixed = false,\r\n objectFit = \"cover\",\r\n objectPosition = \"center\",\r\n}) => {\r\n return (\r\n <View style={[styles.container, style]}>\r\n <Image\r\n src={src}\r\n style={[\r\n styles.background,\r\n { width, height, opacity, objectFit, objectPosition },\r\n ]}\r\n fixed={fixed}\r\n />\r\n <View style={styles.content}>{children}</View>\r\n </View>\r\n )\r\n}\r\n\r\nexport default ImgBg\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-pdf-levelup",
3
- "version": "3.2.10",
3
+ "version": "3.3.2",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "author": "",