rm-ng-export-to-csv
Version:
A lightweight and customizable Angular library to export JSON data to CSV files with auto-download support. Ideal for charts, tables, reports, and dashboards.
1 lines • 3.82 kB
Source Map (JSON)
{"version":3,"file":"rm-ng-export-to-csv.mjs","sources":["../../../projects/rm-ng-export-to-csv/src/lib/rm-ng-export-to-csv.service.ts","../../../projects/rm-ng-export-to-csv/src/public-api.ts","../../../projects/rm-ng-export-to-csv/src/rm-ng-export-to-csv.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nexport interface CsvHeaderMapping {\n label: string; // Header name in CSV\n key: string; // Key from JSON\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RmNgExportToCsvService {\n exportAsCSV<T extends Record<string, any>>(\n data: T[],\n filename: string = 'export.csv',\n headers?: CsvHeaderMapping[],\n ): void {\n if (!data || !data.length) return;\n\n let keys: string[] = [];\n let headerRow: string[] = [];\n\n if (headers && headers.length) {\n // Use custom headers\n keys = headers.map((h) => h.key);\n headerRow = headers.map((h) => h.label);\n } else {\n // Use keys from the first object\n keys = Object.keys(data[0]);\n headerRow = keys;\n }\n\n const csvRows = [];\n csvRows.push(headerRow.join(','));\n\n for (const row of data) {\n const values = keys.map((key) => {\n const cell = row[key] ?? '';\n return `\"${cell.toString().replace(/\"/g, '\"\"')}\"`;\n });\n csvRows.push(values.join(','));\n }\n\n const csvContent = csvRows.join('\\r\\n');\n const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n const link = document.createElement('a');\n const url = URL.createObjectURL(blob);\n\n link.setAttribute('href', url);\n link.setAttribute('download', filename);\n link.style.visibility = 'hidden';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n}\n","/*\n * Public API Surface of rm-ng-export-to-csv\n */\n\nexport * from './lib/rm-ng-export-to-csv.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAUa,sBAAsB,CAAA;AACjC,IAAA,WAAW,CACT,IAAS,EACT,QAAA,GAAmB,YAAY,EAC/B,OAA4B,EAAA;AAE5B,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAE3B,IAAI,IAAI,GAAa,EAAE;QACvB,IAAI,SAAS,GAAa,EAAE;AAE5B,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;;AAE7B,YAAA,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAChC,YAAA,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;;aAClC;;YAEL,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,SAAS,GAAG,IAAI;;QAGlB,MAAM,OAAO,GAAG,EAAE;QAClB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEjC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AAC3B,gBAAA,OAAO,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;AACnD,aAAC,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;QAGhC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AACvC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QACxC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;AAErC,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;AACvC,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AAChC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;uGA1CtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA;;2FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACTD;;AAEG;;ACFH;;AAEG;;;;"}