{"version":3,"sources":["index.js"],"names":[],"mappings":"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","file":"static/js/main.db878182.chunk.js","sourcesContent":["import { Document, Paragraph, TextRun, Packer } from 'docx';\nimport Docxtemplater from 'docxtemplater';\nimport React from 'react';\nimport { unstable_createRoot as createRoot } from 'react-dom';\nimport FileReader from '@tanker/file-reader';\nimport PizZip from 'pizzip';\nimport { saveAs } from 'file-saver';\nimport Papa from 'papaparse';\nimport clsx from 'clsx';\n\nimport {\n MultiSelectIcon,\n FileCodeIcon,\n RocketIcon,\n BroadcastIcon,\n XIcon,\n} from '@primer/octicons-react';\n\nconst MimeTypes = {\n docx: [\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/msword',\n ],\n csv: [\n 'application/csv',\n 'text/csv',\n 'text/comma-separated-values',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel',\n ],\n};\n\nconst Styles = {\n input: {\n display: 'none',\n },\n group: {\n position: 'relative',\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n container: {\n paddingLeft: 24,\n paddingRight: 24,\n },\n};\n\nconst parseCSV = (file) => {\n return new Promise((resolve, reject) => {\n return Papa.parse(file, {\n header: true,\n dynamicTyping: false,\n worker: false,\n complete: ({ data }) => resolve(data),\n error: (error) => reject(error),\n skipEmptyLines: true,\n });\n });\n};\n\nconst UploadButton = React.memo((props) => {\n const {\n children,\n className = '',\n accept = '*',\n icon = null,\n onUpload,\n onClear,\n disabled,\n count,\n ...rest\n } = props;\n\n const inputRef = React.useRef();\n\n const handleClick = React.useCallback(() => {\n return inputRef.current.click();\n }, []);\n\n const handleChange = React.useCallback(\n ({ target }) => onUpload(target.files),\n [onUpload],\n );\n\n return (\n <>\n \n \n \n {icon}\n \n {children}\n {count ? {count} : null}\n \n \n {count ? (\n \n \n \n ) : null}\n \n \n );\n});\n\nconst Application = () => {\n const [templates, setTemplates] = React.useState([]);\n const [datas, setDatas] = React.useState([]);\n\n const fileCodeIcon = React.useMemo(() => , []);\n const multiSelectIcon = React.useMemo(\n () => ,\n [],\n );\n\n const handleTemplate = React.useCallback((files) => setTemplates(files), []);\n const handleData = React.useCallback((files) => setDatas(files), []);\n\n const handleTemplatesClear = React.useCallback(() => setTemplates([]), []);\n const handleDatasClear = React.useCallback(() => setDatas([]), []);\n\n const handleSample = React.useCallback(async () => {\n const doc = new Document();\n\n doc.addSection({\n properties: {},\n children: [\n new Paragraph({\n children: [new TextRun('Hello {name}')],\n }),\n ],\n });\n\n const reader = new FileReader(await Packer.toBlob(doc));\n const docxBuffer = await reader.readAsArrayBuffer();\n const zip = new PizZip();\n\n zip.file('sample.csv', 'filename,name\\njhon-silva,Jhon\\ndan-costa,Dan');\n zip.file('sample.docx', docxBuffer, { type: 'uint8array' });\n\n saveAs(zip.generate({ type: 'blob' }), 'sample.zip');\n }, []);\n\n const handleProcess = React.useCallback(async () => {\n const mimeType = MimeTypes.docx[0];\n\n for await (const templateFile of templates) {\n const output = new PizZip();\n for await (const dataFile of datas) {\n for await (const { filename, ...entry } of await parseCSV(dataFile)) {\n const reader = new FileReader(templateFile);\n const templateBuffer = await reader.readAsArrayBuffer();\n const zip = new PizZip(templateBuffer);\n const docx = new Docxtemplater(zip);\n\n docx.setData(entry);\n docx.render();\n\n output.file(\n `${filename}.docx`,\n docx.getZip().generate({ type: 'uint8array', mimeType }),\n { type: 'uint8array' },\n );\n }\n }\n\n saveAs(output.generate({ type: 'blob' }), 'output.zip');\n }\n\n setTemplates([]);\n setDatas([]);\n }, [datas, templates]);\n\n return (\n \n \n

Document generator.

\n

\n Process a docx template against a csv data\n source. Get started by downloading a{' '}\n \n sample\n \n , or go straight into processing mode.\n

\n \n Upload Template\n \n \n Upload Data\n \n
\n \n \n Process\n \n \n );\n};\n\ncreateRoot(document.getElementById('root')).render();\n"],"sourceRoot":""}