{"version":3,"sources":["node_modules/@ctrl/ngx-csv/fesm2020/ctrl-ngx-csv.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { Directive, Input, HostBinding, NgModule } from '@angular/core';\nimport * as i1 from '@angular/platform-browser';\nconst isJsons = array => Array.isArray(array) && array.every(row => typeof row === 'object' && !(row instanceof Array));\nconst isArrays = array => Array.isArray(array) && array.every(row => Array.isArray(row));\nfunction jsonsHeaders(array) {\n return Array.from(new Set(array.map(item => Object.keys(item)).reduce((a, b) => [...a, ...b], [])));\n}\nfunction jsons2arrays(jsons, headers) {\n headers = headers || jsonsHeaders(jsons);\n // allow headers to have custom labels, defaulting to having the header data key be the label\n let headerLabels = headers;\n let headerKeys = headers;\n if (isJsons(headers)) {\n headerLabels = headers.map(header => header.label);\n headerKeys = headers.map(header => header.key);\n }\n const data = jsons.map(object => headerKeys.map(header => header in object ? object[header] : ''));\n return [headerLabels, ...data];\n}\nconst elementOrEmpty = element => element || element === 0 ? element : '';\nfunction joiner(data, delimiter = ',') {\n return data.map((row, index) => row.map(element => '\"' + elementOrEmpty(element) + '\"').join(delimiter)).join(`\\n`);\n}\nfunction arrays2csv(data, headers, delimiter) {\n return joiner(headers ? [headers, ...data] : data, delimiter);\n}\nfunction jsons2csv(data, headers, delimiter) {\n return joiner(jsons2arrays(data, headers), delimiter);\n}\nfunction string2csv(data, headers, delimiter) {\n return headers ? `${headers.join(delimiter)}\\n${data}` : data;\n}\nfunction toCSV(data, headers, delimiter) {\n if (isJsons(data)) {\n return jsons2csv(data, headers, delimiter);\n }\n if (isArrays(data)) {\n return arrays2csv(data, headers, delimiter);\n }\n if (typeof data === 'string') {\n return string2csv(data, headers, delimiter);\n }\n throw new TypeError(`Data should be a \"String\", \"Array of arrays\" OR \"Array of objects\" `);\n}\nfunction blob(data, uFEFF = true, headers, delimiter) {\n const csv = toCSV(data, headers, delimiter);\n return new Blob([uFEFF ? '\\uFEFF' : '', csv], {\n type: 'text/csv'\n });\n}\nfunction buildURI(data, uFEFF = true, headers, delimiter) {\n return URL.createObjectURL(blob(data, uFEFF, headers, delimiter));\n}\nlet CsvDirective = /*#__PURE__*/(() => {\n class CsvDirective {\n constructor(sanitizer) {\n this.sanitizer = sanitizer;\n /** the body of the csv */\n this.data = [];\n /** Set the seperator between values */\n this.delimiter = ',';\n /** adds a Byte order mark to setup the csv as UTF-8 */\n this.uFEFF = true;\n /** filename */\n this.download = 'data.csv';\n this.target = '_blank';\n }\n /** Set the filename of the csv. Default is `data.csv` */\n set filename(a) {\n this.download = a;\n }\n ngOnChanges() {\n this.href = this.sanitizer.bypassSecurityTrustResourceUrl(buildURI(this.data, this.uFEFF, this.headers, this.delimiter));\n }\n }\n CsvDirective.ɵfac = function CsvDirective_Factory(t) {\n return new (t || CsvDirective)(i0.ɵɵdirectiveInject(i1.DomSanitizer));\n };\n CsvDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: CsvDirective,\n selectors: [[\"\", \"csvLink\", \"\"]],\n hostVars: 3,\n hostBindings: function CsvDirective_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"href\", ctx.href, i0.ɵɵsanitizeUrlOrResourceUrl)(\"download\", ctx.download)(\"target\", ctx.target);\n }\n },\n inputs: {\n data: \"data\",\n headers: \"headers\",\n delimiter: \"delimiter\",\n filename: \"filename\",\n uFEFF: \"uFEFF\",\n target: \"target\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return CsvDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CsvModule = /*#__PURE__*/(() => {\n class CsvModule {}\n CsvModule.ɵfac = function CsvModule_Factory(t) {\n return new (t || CsvModule)();\n };\n CsvModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CsvModule\n });\n CsvModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n return CsvModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CsvDirective, CsvModule, arrays2csv, blob, buildURI, elementOrEmpty, isArrays, isJsons, joiner, jsons2arrays, jsons2csv, jsonsHeaders, string2csv, toCSV };\n"],"mappings":"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","names":["isJsons","array","row","isArrays","jsonsHeaders","item","a","b","jsons2arrays","jsons","headers","headerLabels","headerKeys","header","data","object","elementOrEmpty","element","joiner","delimiter","index","arrays2csv","jsons2csv","string2csv","toCSV","blob","uFEFF","csv","buildURI","CsvDirective","sanitizer","t","ɵɵdirectiveInject","DomSanitizer","ɵɵdefineDirective","rf","ctx","ɵɵhostProperty","ɵɵsanitizeUrlOrResourceUrl","ɵɵNgOnChangesFeature","CsvModule","ɵɵdefineNgModule","ɵɵdefineInjector"],"x_google_ignoreList":[0]}