@eristack/spreadsheet-render
Version:
Declarative workbook model and xlsx/csv render drivers — ExcelJS/SheetJS in app or adapter
1 lines • 3.53 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/core/renderer.ts","../src/core/workbook.ts"],"sourcesContent":["export * from \"./core/index.js\";\n","import type {\n SpreadsheetFormat,\n SpreadsheetRenderDriver,\n SpreadsheetWorkbook,\n} from \"./types.js\";\n\nfunction escapeCsvCell(value: string): string {\n if (/[\",\\n\\r]/.test(value)) {\n return `\"${value.replaceAll('\"', '\"\"')}\"`;\n }\n return value;\n}\n\nfunction workbookToCsv(workbook: SpreadsheetWorkbook): string {\n const sheet = workbook.sheets[0];\n if (!sheet) return \"\";\n const header = sheet.columns.map((c) => escapeCsvCell(c.header)).join(\",\");\n const body = sheet.rows.map((row) =>\n sheet.columns.map((c) => escapeCsvCell(row[c.key] ?? \"\")).join(\",\"),\n );\n return [header, ...body].join(\"\\n\");\n}\n\nexport function createSpreadsheetRenderer(driver: SpreadsheetRenderDriver) {\n return {\n renderWorkbook(workbook: SpreadsheetWorkbook, format: SpreadsheetFormat) {\n return driver.renderWorkbook(workbook, format);\n },\n };\n}\n\nexport function createStubSpreadsheetDriver(): SpreadsheetRenderDriver {\n return {\n async renderWorkbook(workbook, format) {\n if (format === \"csv\") {\n const text = workbookToCsv(workbook);\n return {\n bytes: new TextEncoder().encode(text),\n contentType: \"text/csv; charset=utf-8\",\n };\n }\n const marker = `PK-stub-xlsx:${workbook.sheets.length}`;\n return {\n bytes: new TextEncoder().encode(marker),\n contentType:\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n };\n },\n };\n}\n","import type { SpreadsheetColumn, SpreadsheetSheet, SpreadsheetWorkbook } from \"./types.js\";\n\nexport function workbookFromRows(\n sheetName: string,\n columns: SpreadsheetColumn[],\n rows: string[][],\n): SpreadsheetWorkbook {\n const sheetRows = rows.map((cells) => {\n const record: Record<string, string> = {};\n columns.forEach((col, index) => {\n record[col.key] = cells[index] ?? \"\";\n });\n return record;\n });\n const sheet: SpreadsheetSheet = { name: sheetName, columns, rows: sheetRows };\n return { sheets: [sheet] };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMA,SAAS,cAAc,OAAuB;AAC5C,MAAI,WAAW,KAAK,KAAK,GAAG;AAC1B,WAAO,IAAI,MAAM,WAAW,KAAK,IAAI,CAAC;AAAA,EACxC;AACA,SAAO;AACT;AAEA,SAAS,cAAc,UAAuC;AAC5D,QAAM,QAAQ,SAAS,OAAO,CAAC;AAC/B,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,SAAS,MAAM,QAAQ,IAAI,CAAC,MAAM,cAAc,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG;AACzE,QAAM,OAAO,MAAM,KAAK;AAAA,IAAI,CAAC,QAC3B,MAAM,QAAQ,IAAI,CAAC,MAAM,cAAc,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG;AAAA,EACpE;AACA,SAAO,CAAC,QAAQ,GAAG,IAAI,EAAE,KAAK,IAAI;AACpC;AAEO,SAAS,0BAA0B,QAAiC;AACzE,SAAO;AAAA,IACL,eAAe,UAA+B,QAA2B;AACvE,aAAO,OAAO,eAAe,UAAU,MAAM;AAAA,IAC/C;AAAA,EACF;AACF;AAEO,SAAS,8BAAuD;AACrE,SAAO;AAAA,IACL,MAAM,eAAe,UAAU,QAAQ;AACrC,UAAI,WAAW,OAAO;AACpB,cAAM,OAAO,cAAc,QAAQ;AACnC,eAAO;AAAA,UACL,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI;AAAA,UACpC,aAAa;AAAA,QACf;AAAA,MACF;AACA,YAAM,SAAS,gBAAgB,SAAS,OAAO,MAAM;AACrD,aAAO;AAAA,QACL,OAAO,IAAI,YAAY,EAAE,OAAO,MAAM;AAAA,QACtC,aACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACF;;;AC/CO,SAAS,iBACd,WACA,SACA,MACqB;AACrB,QAAM,YAAY,KAAK,IAAI,CAAC,UAAU;AACpC,UAAM,SAAiC,CAAC;AACxC,YAAQ,QAAQ,CAAC,KAAK,UAAU;AAC9B,aAAO,IAAI,GAAG,IAAI,MAAM,KAAK,KAAK;AAAA,IACpC,CAAC;AACD,WAAO;AAAA,EACT,CAAC;AACD,QAAM,QAA0B,EAAE,MAAM,WAAW,SAAS,MAAM,UAAU;AAC5E,SAAO,EAAE,QAAQ,CAAC,KAAK,EAAE;AAC3B;","names":[]}