{"version":3,"file":"catrx-ui-utils-xlsx.mjs","sources":["../../../../projects/catrx/ui/utils/xlsx/xlsx.config.ts","../../../../projects/catrx/ui/utils/xlsx/cat-xlsx.service.ts","../../../../projects/catrx/ui/utils/xlsx/catrx-ui-utils-xlsx.ts"],"sourcesContent":["export class CatXlsxConfig {\n  static config: CatXlsxConfigInterface = {\n    headerBackgroundColor: '#ffffff',\n    headerFontColor: '#000000',\n    normalizeHeader: true,\n  };\n}\n\nexport interface CatXlsxConfigInterface {\n  headerFontColor?: string;\n  headerBackgroundColor?: string;\n  password?: string;\n  normalizeHeader?: boolean;\n}\n","import { Workbook } from 'exceljs';\nimport * as fs from 'file-saver';\n\nimport { Injectable } from '@angular/core';\nimport { CatXlsxConfig } from './xlsx.config';\nimport { klString } from '@koalarx/utils/operators/string';\n\n@Injectable({ providedIn: 'any' })\nexport class CatXlsxService {\n  public async convertJsonToXlsx(\n    tabs: {\n      sheetName: string;\n      json: any[];\n    }[],\n    filename: string\n  ) {\n    const config = CatXlsxConfig.config;\n    const workbook: Workbook = new Workbook();\n\n    for (const tab of tabs.values()) {\n      const header = [];\n      Object.keys(tab.json[0] ?? {}).forEach((name) => {\n        header.push(\n          config.normalizeHeader === true ||\n            config.normalizeHeader === null ||\n            config.normalizeHeader === undefined\n            ? klString(name).normalize().getValue().toUpperCase()\n            : name\n        );\n      });\n\n      if (header.length > 0) {\n        const worksheet = workbook.addWorksheet(tab.sheetName);\n        if (config.password) {\n          await worksheet.protect(config.password, {\n            selectLockedCells: true,\n            selectUnlockedCells: true,\n            scenarios: true,\n          });\n        }\n\n        const headerRow = worksheet.addRow(header);\n        headerRow.eachCell((cell) => {\n          if (config.headerBackgroundColor) {\n            cell.fill = {\n              type: 'pattern',\n              pattern: 'solid',\n              fgColor: { argb: config.headerBackgroundColor.replace('#', '') },\n              bgColor: { argb: config.headerBackgroundColor.replace('#', '') },\n            };\n          }\n          if (config.headerFontColor) {\n            cell.font = {\n              color: { argb: config.headerFontColor.replace('#', '') },\n            };\n          }\n        });\n\n        tab.json.forEach((item) => {\n          const data = [];\n          Object.values(item).forEach((value) => data.push(value));\n          worksheet.addRow(data);\n        });\n      }\n    }\n\n    workbook.xlsx.writeBuffer().then((data) => {\n      const blob = new Blob([data], {\n        type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n      });\n      fs.saveAs(blob, filename + '.xlsx');\n    });\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}