{"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('\\\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;QACzC;aAAO;;YAEL,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,SAAS,GAAG,IAAI;QAClB;QAEA,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,YAAA,CAAC,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC;QAEA,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;IACjC;uGA3CW,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;;;;"}