@ctrl/ngx-csv 2.1.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,83 +0,0 @@
1
- import * as tslib_1 from "tslib";
2
- import { Directive, HostBinding, HostListener, Input } from '@angular/core';
3
- import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
4
- import { blob, buildURI } from './util';
5
- let CsvDirective = class CsvDirective {
6
- constructor(sanitizer) {
7
- this.sanitizer = sanitizer;
8
- /** the body of the csv */
9
- this.data = [];
10
- /** Set the seperator between values */
11
- this.delimiter = ',';
12
- /** adds a Byte order mark to setup the csv as UTF-8 */
13
- this.uFEFF = true;
14
- /** filename */
15
- this.download = 'data.csv';
16
- this.target = this.isIEBrowser() ? '' : '_blank';
17
- }
18
- /** Set the filename of the csv. Default is `data.csv` */
19
- set filename(a) {
20
- this.download = a;
21
- }
22
- onClick() {
23
- // IE handling
24
- if (this.isIEBrowser()) {
25
- const file = blob(this.data, this.uFEFF, this.headers, this.delimiter);
26
- window.navigator.msSaveBlob(file, this.download);
27
- }
28
- }
29
- isIEBrowser() {
30
- return !!window.navigator.msSaveOrOpenBlob;
31
- }
32
- ngOnChanges() {
33
- this.href = this.sanitizer.bypassSecurityTrustResourceUrl(buildURI(this.data, this.uFEFF, this.headers, this.delimiter));
34
- }
35
- };
36
- CsvDirective.ctorParameters = () => [
37
- { type: DomSanitizer }
38
- ];
39
- tslib_1.__decorate([
40
- Input(),
41
- tslib_1.__metadata("design:type", Object)
42
- ], CsvDirective.prototype, "data", void 0);
43
- tslib_1.__decorate([
44
- Input(),
45
- tslib_1.__metadata("design:type", Array)
46
- ], CsvDirective.prototype, "headers", void 0);
47
- tslib_1.__decorate([
48
- Input(),
49
- tslib_1.__metadata("design:type", Object)
50
- ], CsvDirective.prototype, "delimiter", void 0);
51
- tslib_1.__decorate([
52
- Input(),
53
- tslib_1.__metadata("design:type", String),
54
- tslib_1.__metadata("design:paramtypes", [String])
55
- ], CsvDirective.prototype, "filename", null);
56
- tslib_1.__decorate([
57
- Input(),
58
- tslib_1.__metadata("design:type", Object)
59
- ], CsvDirective.prototype, "uFEFF", void 0);
60
- tslib_1.__decorate([
61
- HostBinding(),
62
- tslib_1.__metadata("design:type", Object)
63
- ], CsvDirective.prototype, "href", void 0);
64
- tslib_1.__decorate([
65
- HostBinding(),
66
- tslib_1.__metadata("design:type", Object)
67
- ], CsvDirective.prototype, "download", void 0);
68
- tslib_1.__decorate([
69
- Input(), HostBinding(),
70
- tslib_1.__metadata("design:type", Object)
71
- ], CsvDirective.prototype, "target", void 0);
72
- tslib_1.__decorate([
73
- HostListener('click'),
74
- tslib_1.__metadata("design:type", Function),
75
- tslib_1.__metadata("design:paramtypes", []),
76
- tslib_1.__metadata("design:returntype", void 0)
77
- ], CsvDirective.prototype, "onClick", null);
78
- CsvDirective = tslib_1.__decorate([
79
- Directive({ selector: '[csvLink]' }),
80
- tslib_1.__metadata("design:paramtypes", [DomSanitizer])
81
- ], CsvDirective);
82
- export { CsvDirective };
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdHJsL25neC1jc3YvIiwic291cmNlcyI6WyJjc3YuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQWEsTUFBTSxRQUFRLENBQUM7QUFHbkQsSUFBYSxZQUFZLEdBQXpCLE1BQWEsWUFBWTtJQWtCdkIsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQWpCM0MsMEJBQTBCO1FBQ2pCLFNBQUksR0FBOEQsRUFBRSxDQUFDO1FBRzlFLHVDQUF1QztRQUM5QixjQUFTLEdBQUcsR0FBRyxDQUFDO1FBTXpCLHdEQUF3RDtRQUMvQyxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBRXRCLGVBQWU7UUFDQSxhQUFRLEdBQUcsVUFBVSxDQUFDO1FBQ2IsV0FBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztJQVgvQyx5REFBeUQ7SUFFekQsSUFBSSxRQUFRLENBQUMsQ0FBUztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBU3NCLE9BQU87UUFDNUIsY0FBYztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FDdkQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDOUQsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFBOztZQW5CZ0MsWUFBWTs7QUFoQmxDO0lBQVIsS0FBSyxFQUFFOzswQ0FBc0U7QUFFckU7SUFBUixLQUFLLEVBQUU7OzZDQUFrQztBQUVqQztJQUFSLEtBQUssRUFBRTs7K0NBQWlCO0FBR3pCO0lBREMsS0FBSyxFQUFFOzs7NENBR1A7QUFFUTtJQUFSLEtBQUssRUFBRTs7MkNBQWM7QUFDUDtJQUFkLFdBQVcsRUFBRTs7MENBQXdCO0FBRXZCO0lBQWQsV0FBVyxFQUFFOzs4Q0FBdUI7QUFDYjtJQUF2QixLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUU7OzRDQUE2QztBQUc3QztJQUF0QixZQUFZLENBQUMsT0FBTyxDQUFDOzs7OzJDQU1yQjtBQTFCVSxZQUFZO0lBRHhCLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQzs2Q0FtQkosWUFBWTtHQWxCaEMsWUFBWSxDQXFDeEI7U0FyQ1ksWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgYmxvYiwgYnVpbGRVUkksIEhlYWRlck9iaiB9IGZyb20gJy4vdXRpbCc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tjc3ZMaW5rXScgfSlcbmV4cG9ydCBjbGFzcyBDc3ZEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKiogdGhlIGJvZHkgb2YgdGhlIGNzdiAqL1xuICBASW5wdXQoKSBkYXRhOiBzdHJpbmcgfCBzdHJpbmdbXVtdIHwgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVtdIHwgYW55W10gPSBbXTtcbiAgLyoqIFNldCB0aGUgZmlyc3QgbGluZSBvZiB0aGUgY3N2ICovXG4gIEBJbnB1dCgpIGhlYWRlcnM/OiBzdHJpbmdbXSB8IEhlYWRlck9ialtdO1xuICAvKiogU2V0IHRoZSBzZXBlcmF0b3IgYmV0d2VlbiB2YWx1ZXMgKi9cbiAgQElucHV0KCkgZGVsaW1pdGVyID0gJywnO1xuICAvKiogU2V0IHRoZSBmaWxlbmFtZSBvZiB0aGUgY3N2LiBEZWZhdWx0IGlzIGBkYXRhLmNzdmAgKi9cbiAgQElucHV0KClcbiAgc2V0IGZpbGVuYW1lKGE6IHN0cmluZykge1xuICAgIHRoaXMuZG93bmxvYWQgPSBhO1xuICB9XG4gIC8qKiBhZGRzIGEgQnl0ZSBvcmRlciBtYXJrIHRvIHNldHVwIHRoZSBjc3YgYXMgVVRGLTggICovXG4gIEBJbnB1dCgpIHVGRUZGID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCkgaHJlZj86IFNhZmVSZXNvdXJjZVVybDtcbiAgLyoqIGZpbGVuYW1lICovXG4gIEBIb3N0QmluZGluZygpIGRvd25sb2FkID0gJ2RhdGEuY3N2JztcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCkgdGFyZ2V0ID0gdGhpcy5pc0lFQnJvd3NlcigpID8gJycgOiAnX2JsYW5rJztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpIG9uQ2xpY2soKSB7XG4gICAgLy8gSUUgaGFuZGxpbmdcbiAgICBpZiAodGhpcy5pc0lFQnJvd3NlcigpKSB7XG4gICAgICBjb25zdCBmaWxlID0gYmxvYih0aGlzLmRhdGEsIHRoaXMudUZFRkYsIHRoaXMuaGVhZGVycywgdGhpcy5kZWxpbWl0ZXIpO1xuICAgICAgd2luZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKGZpbGUsIHRoaXMuZG93bmxvYWQpO1xuICAgIH1cbiAgfVxuXG4gIGlzSUVCcm93c2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYjtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuaHJlZiA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChcbiAgICAgIGJ1aWxkVVJJKHRoaXMuZGF0YSwgdGhpcy51RkVGRiwgdGhpcy5oZWFkZXJzLCB0aGlzLmRlbGltaXRlciksXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,13 +0,0 @@
1
- import * as tslib_1 from "tslib";
2
- import { NgModule } from '@angular/core';
3
- import { CsvDirective } from './csv.directive';
4
- let CsvModule = class CsvModule {
5
- };
6
- CsvModule = tslib_1.__decorate([
7
- NgModule({
8
- declarations: [CsvDirective],
9
- exports: [CsvDirective],
10
- })
11
- ], CsvModule);
12
- export { CsvModule };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdHJsL25neC1jc3YvIiwic291cmNlcyI6WyJjc3YubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU0vQyxJQUFhLFNBQVMsR0FBdEIsTUFBYSxTQUFTO0NBQUcsQ0FBQTtBQUFaLFNBQVM7SUFKckIsUUFBUSxDQUFDO1FBQ1IsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDO1FBQzVCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztLQUN4QixDQUFDO0dBQ1csU0FBUyxDQUFHO1NBQVosU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENzdkRpcmVjdGl2ZSB9IGZyb20gJy4vY3N2LmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NzdkRpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtDc3ZEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBDc3ZNb2R1bGUge31cbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3RybC1uZ3gtY3N2LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGN0cmwvbmd4LWNzdi8iLCJzb3VyY2VzIjpbImN0cmwtbmd4LWNzdi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
@@ -1,4 +0,0 @@
1
- export { CsvModule } from './csv.module';
2
- export { CsvDirective } from './csv.directive';
3
- export * from './util';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdHJsL25neC1jc3YvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLGNBQWMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ3N2TW9kdWxlIH0gZnJvbSAnLi9jc3YubW9kdWxlJztcbmV4cG9ydCB7IENzdkRpcmVjdGl2ZSB9IGZyb20gJy4vY3N2LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwnO1xuIl19
package/esm2015/util.js DELETED
@@ -1,53 +0,0 @@
1
- export const isJsons = (array) => Array.isArray(array) &&
2
- array.every(row => typeof row === 'object' && !(row instanceof Array));
3
- export const isArrays = (array) => Array.isArray(array) && array.every(row => Array.isArray(row));
4
- export function jsonsHeaders(array) {
5
- return Array.from(new Set(array.map(item => Object.keys(item)).reduce((a, b) => [...a, ...b], [])));
6
- }
7
- export function jsons2arrays(jsons, headers) {
8
- headers = headers || jsonsHeaders(jsons);
9
- // allow headers to have custom labels, defaulting to having the header data key be the label
10
- let headerLabels = headers;
11
- let headerKeys = headers;
12
- if (isJsons(headers)) {
13
- headerLabels = headers.map(header => header.label);
14
- headerKeys = headers.map(header => header.key);
15
- }
16
- const data = jsons.map(object => headerKeys.map(header => (header in object ? object[header] : '')));
17
- return [headerLabels, ...data];
18
- }
19
- export const elementOrEmpty = (element) => element || element === 0 ? element : '';
20
- export function joiner(data, delimiter = ',') {
21
- return data
22
- .map((row, index) => row.map((element) => '"' + elementOrEmpty(element) + '"').join(delimiter))
23
- .join(`\n`);
24
- }
25
- export function arrays2csv(data, headers, delimiter) {
26
- return joiner(headers ? [headers, ...data] : data, delimiter);
27
- }
28
- export function jsons2csv(data, headers, delimiter) {
29
- return joiner(jsons2arrays(data, headers), delimiter);
30
- }
31
- export function string2csv(data, headers, delimiter) {
32
- return headers ? `${headers.join(delimiter)}\n${data}` : data;
33
- }
34
- export function toCSV(data, headers, delimiter) {
35
- if (isJsons(data)) {
36
- return jsons2csv(data, headers, delimiter);
37
- }
38
- if (isArrays(data)) {
39
- return arrays2csv(data, headers, delimiter);
40
- }
41
- if (typeof data === 'string') {
42
- return string2csv(data, headers, delimiter);
43
- }
44
- throw new TypeError(`Data should be a "String", "Array of arrays" OR "Array of objects" `);
45
- }
46
- export function blob(data, uFEFF = true, headers, delimiter) {
47
- const csv = toCSV(data, headers, delimiter);
48
- return new Blob([uFEFF ? '\uFEFF' : '', csv], { type: 'text/csv' });
49
- }
50
- export function buildURI(data, uFEFF = true, headers, delimiter) {
51
- return URL.createObjectURL(blob(data, uFEFF, headers, delimiter));
52
- }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdHJsL25neC1jc3YvIiwic291cmNlcyI6WyJ1dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFLENBQ3RDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ3BCLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFLENBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUVqRSxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWU7SUFDMUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNmLElBQUksR0FBRyxDQUNMLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUN4RSxDQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsS0FBa0MsRUFDbEMsT0FBZ0M7SUFFaEMsT0FBTyxHQUFHLE9BQU8sSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFekMsNkZBQTZGO0lBQzdGLElBQUksWUFBWSxHQUFhLE9BQW1CLENBQUM7SUFD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LElBQUksQ0FDbEIsSUFBK0QsRUFDL0QsS0FBSyxHQUFHLElBQUksRUFDWixPQUFnQyxFQUNoQyxTQUFrQjtJQUVsQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUN0QixJQUErRCxFQUMvRCxLQUFLLEdBQUcsSUFBSSxFQUNaLE9BQWdDLEVBQ2hDLFNBQWtCO0lBRWxCLE9BQU8sR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBIZWFkZXJPYmoge1xuICBsYWJlbDogc3RyaW5nO1xuICBrZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGlzSnNvbnMgPSAoYXJyYXk6IGFueVtdKSA9PlxuICBBcnJheS5pc0FycmF5KGFycmF5KSAmJlxuICBhcnJheS5ldmVyeShyb3cgPT4gdHlwZW9mIHJvdyA9PT0gJ29iamVjdCcgJiYgIShyb3cgaW5zdGFuY2VvZiBBcnJheSkpO1xuXG5leHBvcnQgY29uc3QgaXNBcnJheXMgPSAoYXJyYXk6IGFueVtdKSA9PlxuICBBcnJheS5pc0FycmF5KGFycmF5KSAmJiBhcnJheS5ldmVyeShyb3cgPT4gQXJyYXkuaXNBcnJheShyb3cpKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGpzb25zSGVhZGVycyhhcnJheTogb2JqZWN0W10pIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgbmV3IFNldChcbiAgICAgIGFycmF5Lm1hcChpdGVtID0+IE9iamVjdC5rZXlzKGl0ZW0pKS5yZWR1Y2UoKGEsIGIpID0+IFsuLi5hLCAuLi5iXSwgW10pLFxuICAgICksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqc29uczJhcnJheXMoXG4gIGpzb25zOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9W10sXG4gIGhlYWRlcnM/OiBzdHJpbmdbXSB8IEhlYWRlck9ialtdLFxuKSB7XG4gIGhlYWRlcnMgPSBoZWFkZXJzIHx8IGpzb25zSGVhZGVycyhqc29ucyk7XG5cbiAgLy8gYWxsb3cgaGVhZGVycyB0byBoYXZlIGN1c3RvbSBsYWJlbHMsIGRlZmF1bHRpbmcgdG8gaGF2aW5nIHRoZSBoZWFkZXIgZGF0YSBrZXkgYmUgdGhlIGxhYmVsXG4gIGxldCBoZWFkZXJMYWJlbHM6IHN0cmluZ1tdID0gaGVhZGVycyBhcyBzdHJpbmdbXTtcbiAgbGV0IGhlYWRlcktleXM6IHN0cmluZ1tdID0gaGVhZGVycyBhcyBzdHJpbmdbXTtcbiAgaWYgKGlzSnNvbnMoaGVhZGVycykpIHtcbiAgICBoZWFkZXJMYWJlbHMgPSAoaGVhZGVycyBhcyBIZWFkZXJPYmpbXSkubWFwKGhlYWRlciA9PiBoZWFkZXIubGFiZWwpO1xuICAgIGhlYWRlcktleXMgPSAoaGVhZGVycyBhcyBIZWFkZXJPYmpbXSkubWFwKGhlYWRlciA9PiBoZWFkZXIua2V5KTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBqc29ucy5tYXAob2JqZWN0ID0+XG4gICAgaGVhZGVyS2V5cy5tYXAoaGVhZGVyID0+IChoZWFkZXIgaW4gb2JqZWN0ID8gb2JqZWN0W2hlYWRlcl0gOiAnJykpLFxuICApO1xuICByZXR1cm4gW2hlYWRlckxhYmVscywgLi4uZGF0YV07XG59XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50T3JFbXB0eSA9IChlbGVtZW50OiBhbnkpID0+XG4gIGVsZW1lbnQgfHwgZWxlbWVudCA9PT0gMCA/IGVsZW1lbnQgOiAnJztcblxuZXhwb3J0IGZ1bmN0aW9uIGpvaW5lcihkYXRhOiBhbnksIGRlbGltaXRlciA9ICcsJykge1xuICByZXR1cm4gZGF0YVxuICAgIC5tYXAoKHJvdzogYW55LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgcm93Lm1hcCgoZWxlbWVudDogYW55KSA9PiAnXCInICsgZWxlbWVudE9yRW1wdHkoZWxlbWVudCkgKyAnXCInKS5qb2luKGRlbGltaXRlciksXG4gICAgKVxuICAgIC5qb2luKGBcXG5gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5czJjc3YoXG4gIGRhdGE6IHN0cmluZ1tdW10sXG4gIGhlYWRlcnM/OiBzdHJpbmdbXSB8IEhlYWRlck9ialtdLFxuICBkZWxpbWl0ZXI/OiBzdHJpbmcsXG4pIHtcbiAgcmV0dXJuIGpvaW5lcihoZWFkZXJzID8gW2hlYWRlcnMsIC4uLmRhdGFdIDogZGF0YSwgZGVsaW1pdGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGpzb25zMmNzdihcbiAgZGF0YTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVtdLFxuICBoZWFkZXJzPzogc3RyaW5nW10gfCBIZWFkZXJPYmpbXSxcbiAgZGVsaW1pdGVyPzogc3RyaW5nLFxuKSB7XG4gIHJldHVybiBqb2luZXIoanNvbnMyYXJyYXlzKGRhdGEsIGhlYWRlcnMpLCBkZWxpbWl0ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nMmNzdihcbiAgZGF0YTogc3RyaW5nLFxuICBoZWFkZXJzPzogc3RyaW5nW10sXG4gIGRlbGltaXRlcj86IHN0cmluZyxcbikge1xuICByZXR1cm4gaGVhZGVycyA/IGAke2hlYWRlcnMuam9pbihkZWxpbWl0ZXIpfVxcbiR7ZGF0YX1gIDogZGF0YTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQ1NWKFxuICBkYXRhOiBzdHJpbmcgfCBzdHJpbmdbXVtdIHwgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVtdIHwgYW55W10sXG4gIGhlYWRlcnM/OiBzdHJpbmdbXSB8IEhlYWRlck9ialtdLFxuICBkZWxpbWl0ZXI/OiBzdHJpbmcsXG4pIHtcbiAgaWYgKGlzSnNvbnMoZGF0YSBhcyBhbnkpKSB7XG4gICAgcmV0dXJuIGpzb25zMmNzdihkYXRhIGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSwgaGVhZGVycywgZGVsaW1pdGVyKTtcbiAgfVxuICBpZiAoaXNBcnJheXMoZGF0YSBhcyBhbnkpKSB7XG4gICAgcmV0dXJuIGFycmF5czJjc3YoZGF0YSBhcyBzdHJpbmdbXVtdLCBoZWFkZXJzLCBkZWxpbWl0ZXIpO1xuICB9XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gc3RyaW5nMmNzdihkYXRhLCBoZWFkZXJzIGFzIHN0cmluZ1tdLCBkZWxpbWl0ZXIpO1xuICB9XG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgYERhdGEgc2hvdWxkIGJlIGEgXCJTdHJpbmdcIiwgXCJBcnJheSBvZiBhcnJheXNcIiBPUiBcIkFycmF5IG9mIG9iamVjdHNcIiBgLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvYihcbiAgZGF0YTogc3RyaW5nIHwgc3RyaW5nW11bXSB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSB8IGFueVtdLFxuICB1RkVGRiA9IHRydWUsXG4gIGhlYWRlcnM/OiBzdHJpbmdbXSB8IEhlYWRlck9ialtdLFxuICBkZWxpbWl0ZXI/OiBzdHJpbmcsXG4pIHtcbiAgY29uc3QgY3N2ID0gdG9DU1YoZGF0YSwgaGVhZGVycywgZGVsaW1pdGVyKTtcbiAgcmV0dXJuIG5ldyBCbG9iKFt1RkVGRiA/ICdcXHVGRUZGJyA6ICcnLCBjc3ZdLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFVSSShcbiAgZGF0YTogc3RyaW5nIHwgc3RyaW5nW11bXSB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSB8IGFueVtdLFxuICB1RkVGRiA9IHRydWUsXG4gIGhlYWRlcnM/OiBzdHJpbmdbXSB8IEhlYWRlck9ialtdLFxuICBkZWxpbWl0ZXI/OiBzdHJpbmcsXG4pIHtcbiAgcmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYihkYXRhLCB1RkVGRiwgaGVhZGVycywgZGVsaW1pdGVyKSk7XG59XG4iXX0=
@@ -1,88 +0,0 @@
1
- import * as tslib_1 from "tslib";
2
- import { Directive, HostBinding, HostListener, Input } from '@angular/core';
3
- import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
4
- import { blob, buildURI } from './util';
5
- var CsvDirective = /** @class */ (function () {
6
- function CsvDirective(sanitizer) {
7
- this.sanitizer = sanitizer;
8
- /** the body of the csv */
9
- this.data = [];
10
- /** Set the seperator between values */
11
- this.delimiter = ',';
12
- /** adds a Byte order mark to setup the csv as UTF-8 */
13
- this.uFEFF = true;
14
- /** filename */
15
- this.download = 'data.csv';
16
- this.target = this.isIEBrowser() ? '' : '_blank';
17
- }
18
- Object.defineProperty(CsvDirective.prototype, "filename", {
19
- /** Set the filename of the csv. Default is `data.csv` */
20
- set: function (a) {
21
- this.download = a;
22
- },
23
- enumerable: true,
24
- configurable: true
25
- });
26
- CsvDirective.prototype.onClick = function () {
27
- // IE handling
28
- if (this.isIEBrowser()) {
29
- var file = blob(this.data, this.uFEFF, this.headers, this.delimiter);
30
- window.navigator.msSaveBlob(file, this.download);
31
- }
32
- };
33
- CsvDirective.prototype.isIEBrowser = function () {
34
- return !!window.navigator.msSaveOrOpenBlob;
35
- };
36
- CsvDirective.prototype.ngOnChanges = function () {
37
- this.href = this.sanitizer.bypassSecurityTrustResourceUrl(buildURI(this.data, this.uFEFF, this.headers, this.delimiter));
38
- };
39
- CsvDirective.ctorParameters = function () { return [
40
- { type: DomSanitizer }
41
- ]; };
42
- tslib_1.__decorate([
43
- Input(),
44
- tslib_1.__metadata("design:type", Object)
45
- ], CsvDirective.prototype, "data", void 0);
46
- tslib_1.__decorate([
47
- Input(),
48
- tslib_1.__metadata("design:type", Array)
49
- ], CsvDirective.prototype, "headers", void 0);
50
- tslib_1.__decorate([
51
- Input(),
52
- tslib_1.__metadata("design:type", Object)
53
- ], CsvDirective.prototype, "delimiter", void 0);
54
- tslib_1.__decorate([
55
- Input(),
56
- tslib_1.__metadata("design:type", String),
57
- tslib_1.__metadata("design:paramtypes", [String])
58
- ], CsvDirective.prototype, "filename", null);
59
- tslib_1.__decorate([
60
- Input(),
61
- tslib_1.__metadata("design:type", Object)
62
- ], CsvDirective.prototype, "uFEFF", void 0);
63
- tslib_1.__decorate([
64
- HostBinding(),
65
- tslib_1.__metadata("design:type", Object)
66
- ], CsvDirective.prototype, "href", void 0);
67
- tslib_1.__decorate([
68
- HostBinding(),
69
- tslib_1.__metadata("design:type", Object)
70
- ], CsvDirective.prototype, "download", void 0);
71
- tslib_1.__decorate([
72
- Input(), HostBinding(),
73
- tslib_1.__metadata("design:type", Object)
74
- ], CsvDirective.prototype, "target", void 0);
75
- tslib_1.__decorate([
76
- HostListener('click'),
77
- tslib_1.__metadata("design:type", Function),
78
- tslib_1.__metadata("design:paramtypes", []),
79
- tslib_1.__metadata("design:returntype", void 0)
80
- ], CsvDirective.prototype, "onClick", null);
81
- CsvDirective = tslib_1.__decorate([
82
- Directive({ selector: '[csvLink]' }),
83
- tslib_1.__metadata("design:paramtypes", [DomSanitizer])
84
- ], CsvDirective);
85
- return CsvDirective;
86
- }());
87
- export { CsvDirective };
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdHJsL25neC1jc3YvIiwic291cmNlcyI6WyJjc3YuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQWEsTUFBTSxRQUFRLENBQUM7QUFHbkQ7SUFrQkUsc0JBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFqQjNDLDBCQUEwQjtRQUNqQixTQUFJLEdBQThELEVBQUUsQ0FBQztRQUc5RSx1Q0FBdUM7UUFDOUIsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQU16Qix3REFBd0Q7UUFDL0MsVUFBSyxHQUFHLElBQUksQ0FBQztRQUV0QixlQUFlO1FBQ0EsYUFBUSxHQUFHLFVBQVUsQ0FBQztRQUNiLFdBQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3RCLENBQUM7SUFUL0Msc0JBQUksa0NBQVE7UUFGWix5REFBeUQ7YUFFekQsVUFBYSxDQUFTO1lBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7OztPQUFBO0lBU3NCLDhCQUFPLEdBQVA7UUFDckIsY0FBYztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3RCLElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFRCxrQ0FBVyxHQUFYO1FBQ0UsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0NBQVcsR0FBWDtRQUNFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FDdkQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDOUQsQ0FBQztJQUNKLENBQUM7O2dCQWxCOEIsWUFBWTs7SUFoQmxDO1FBQVIsS0FBSyxFQUFFOzs4Q0FBc0U7SUFFckU7UUFBUixLQUFLLEVBQUU7O2lEQUFrQztJQUVqQztRQUFSLEtBQUssRUFBRTs7bURBQWlCO0lBR3pCO1FBREMsS0FBSyxFQUFFOzs7Z0RBR1A7SUFFUTtRQUFSLEtBQUssRUFBRTs7K0NBQWM7SUFDUDtRQUFkLFdBQVcsRUFBRTs7OENBQXdCO0lBRXZCO1FBQWQsV0FBVyxFQUFFOztrREFBdUI7SUFDYjtRQUF2QixLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUU7O2dEQUE2QztJQUc3QztRQUF0QixZQUFZLENBQUMsT0FBTyxDQUFDOzs7OytDQU1yQjtJQTFCVSxZQUFZO1FBRHhCLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztpREFtQkosWUFBWTtPQWxCaEMsWUFBWSxDQXFDeEI7SUFBRCxtQkFBQztDQUFBLEFBckNELElBcUNDO1NBckNZLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IGJsb2IsIGJ1aWxkVVJJLCBIZWFkZXJPYmogfSBmcm9tICcuL3V0aWwnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbY3N2TGlua10nIH0pXG5leHBvcnQgY2xhc3MgQ3N2RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqIHRoZSBib2R5IG9mIHRoZSBjc3YgKi9cbiAgQElucHV0KCkgZGF0YTogc3RyaW5nIHwgc3RyaW5nW11bXSB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSB8IGFueVtdID0gW107XG4gIC8qKiBTZXQgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGNzdiAqL1xuICBASW5wdXQoKSBoZWFkZXJzPzogc3RyaW5nW10gfCBIZWFkZXJPYmpbXTtcbiAgLyoqIFNldCB0aGUgc2VwZXJhdG9yIGJldHdlZW4gdmFsdWVzICovXG4gIEBJbnB1dCgpIGRlbGltaXRlciA9ICcsJztcbiAgLyoqIFNldCB0aGUgZmlsZW5hbWUgb2YgdGhlIGNzdi4gRGVmYXVsdCBpcyBgZGF0YS5jc3ZgICovXG4gIEBJbnB1dCgpXG4gIHNldCBmaWxlbmFtZShhOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRvd25sb2FkID0gYTtcbiAgfVxuICAvKiogYWRkcyBhIEJ5dGUgb3JkZXIgbWFyayB0byBzZXR1cCB0aGUgY3N2IGFzIFVURi04ICAqL1xuICBASW5wdXQoKSB1RkVGRiA9IHRydWU7XG4gIEBIb3N0QmluZGluZygpIGhyZWY/OiBTYWZlUmVzb3VyY2VVcmw7XG4gIC8qKiBmaWxlbmFtZSAqL1xuICBASG9zdEJpbmRpbmcoKSBkb3dubG9hZCA9ICdkYXRhLmNzdic7XG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygpIHRhcmdldCA9IHRoaXMuaXNJRUJyb3dzZXIoKSA/ICcnIDogJ19ibGFuayc7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKSBvbkNsaWNrKCkge1xuICAgIC8vIElFIGhhbmRsaW5nXG4gICAgaWYgKHRoaXMuaXNJRUJyb3dzZXIoKSkge1xuICAgICAgY29uc3QgZmlsZSA9IGJsb2IodGhpcy5kYXRhLCB0aGlzLnVGRUZGLCB0aGlzLmhlYWRlcnMsIHRoaXMuZGVsaW1pdGVyKTtcbiAgICAgIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYihmaWxlLCB0aGlzLmRvd25sb2FkKTtcbiAgICB9XG4gIH1cblxuICBpc0lFQnJvd3NlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2I7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmhyZWYgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoXG4gICAgICBidWlsZFVSSSh0aGlzLmRhdGEsIHRoaXMudUZFRkYsIHRoaXMuaGVhZGVycywgdGhpcy5kZWxpbWl0ZXIpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,16 +0,0 @@
1
- import * as tslib_1 from "tslib";
2
- import { NgModule } from '@angular/core';
3
- import { CsvDirective } from './csv.directive';
4
- var CsvModule = /** @class */ (function () {
5
- function CsvModule() {
6
- }
7
- CsvModule = tslib_1.__decorate([
8
- NgModule({
9
- declarations: [CsvDirective],
10
- exports: [CsvDirective],
11
- })
12
- ], CsvModule);
13
- return CsvModule;
14
- }());
15
- export { CsvModule };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdHJsL25neC1jc3YvIiwic291cmNlcyI6WyJjc3YubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU0vQztJQUFBO0lBQXdCLENBQUM7SUFBWixTQUFTO1FBSnJCLFFBQVEsQ0FBQztZQUNSLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQztZQUM1QixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7U0FDeEIsQ0FBQztPQUNXLFNBQVMsQ0FBRztJQUFELGdCQUFDO0NBQUEsQUFBekIsSUFBeUI7U0FBWixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ3N2RGlyZWN0aXZlIH0gZnJvbSAnLi9jc3YuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQ3N2RGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW0NzdkRpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIENzdk1vZHVsZSB7fVxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3RybC1uZ3gtY3N2LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGN0cmwvbmd4LWNzdi8iLCJzb3VyY2VzIjpbImN0cmwtbmd4LWNzdi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
@@ -1,4 +0,0 @@
1
- export { CsvModule } from './csv.module';
2
- export { CsvDirective } from './csv.directive';
3
- export * from './util';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdHJsL25neC1jc3YvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLGNBQWMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ3N2TW9kdWxlIH0gZnJvbSAnLi9jc3YubW9kdWxlJztcbmV4cG9ydCB7IENzdkRpcmVjdGl2ZSB9IGZyb20gJy4vY3N2LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWwnO1xuIl19
package/esm5/util.js DELETED
@@ -1,67 +0,0 @@
1
- import * as tslib_1 from "tslib";
2
- export var isJsons = function (array) {
3
- return Array.isArray(array) &&
4
- array.every(function (row) { return typeof row === 'object' && !(row instanceof Array); });
5
- };
6
- export var isArrays = function (array) {
7
- return Array.isArray(array) && array.every(function (row) { return Array.isArray(row); });
8
- };
9
- export function jsonsHeaders(array) {
10
- return Array.from(new Set(array.map(function (item) { return Object.keys(item); }).reduce(function (a, b) { return tslib_1.__spread(a, b); }, [])));
11
- }
12
- export function jsons2arrays(jsons, headers) {
13
- headers = headers || jsonsHeaders(jsons);
14
- // allow headers to have custom labels, defaulting to having the header data key be the label
15
- var headerLabels = headers;
16
- var headerKeys = headers;
17
- if (isJsons(headers)) {
18
- headerLabels = headers.map(function (header) { return header.label; });
19
- headerKeys = headers.map(function (header) { return header.key; });
20
- }
21
- var data = jsons.map(function (object) {
22
- return headerKeys.map(function (header) { return (header in object ? object[header] : ''); });
23
- });
24
- return tslib_1.__spread([headerLabels], data);
25
- }
26
- export var elementOrEmpty = function (element) {
27
- return element || element === 0 ? element : '';
28
- };
29
- export function joiner(data, delimiter) {
30
- if (delimiter === void 0) { delimiter = ','; }
31
- return data
32
- .map(function (row, index) {
33
- return row.map(function (element) { return '"' + elementOrEmpty(element) + '"'; }).join(delimiter);
34
- })
35
- .join("\n");
36
- }
37
- export function arrays2csv(data, headers, delimiter) {
38
- return joiner(headers ? tslib_1.__spread([headers], data) : data, delimiter);
39
- }
40
- export function jsons2csv(data, headers, delimiter) {
41
- return joiner(jsons2arrays(data, headers), delimiter);
42
- }
43
- export function string2csv(data, headers, delimiter) {
44
- return headers ? headers.join(delimiter) + "\n" + data : data;
45
- }
46
- export function toCSV(data, headers, delimiter) {
47
- if (isJsons(data)) {
48
- return jsons2csv(data, headers, delimiter);
49
- }
50
- if (isArrays(data)) {
51
- return arrays2csv(data, headers, delimiter);
52
- }
53
- if (typeof data === 'string') {
54
- return string2csv(data, headers, delimiter);
55
- }
56
- throw new TypeError("Data should be a \"String\", \"Array of arrays\" OR \"Array of objects\" ");
57
- }
58
- export function blob(data, uFEFF, headers, delimiter) {
59
- if (uFEFF === void 0) { uFEFF = true; }
60
- var csv = toCSV(data, headers, delimiter);
61
- return new Blob([uFEFF ? '\uFEFF' : '', csv], { type: 'text/csv' });
62
- }
63
- export function buildURI(data, uFEFF, headers, delimiter) {
64
- if (uFEFF === void 0) { uFEFF = true; }
65
- return URL.createObjectURL(blob(data, uFEFF, headers, delimiter));
66
- }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjdHJsL25neC1jc3YvIiwic291cmNlcyI6WyJ1dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFLQSxNQUFNLENBQUMsSUFBTSxPQUFPLEdBQUcsVUFBQyxLQUFZO0lBQ2xDLE9BQUEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxZQUFZLEtBQUssQ0FBQyxFQUFsRCxDQUFrRCxDQUFDO0FBRHRFLENBQ3NFLENBQUM7QUFFekUsTUFBTSxDQUFDLElBQU0sUUFBUSxHQUFHLFVBQUMsS0FBWTtJQUNuQyxPQUFBLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQWxCLENBQWtCLENBQUM7QUFBOUQsQ0FBOEQsQ0FBQztBQUVqRSxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWU7SUFDMUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUNmLElBQUksR0FBRyxDQUNMLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFqQixDQUFpQixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSyx3QkFBSSxDQUFDLEVBQUssQ0FBQyxHQUFYLENBQVksRUFBRSxFQUFFLENBQUMsQ0FDeEUsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQzFCLEtBQWtDLEVBQ2xDLE9BQWdDO0lBRWhDLE9BQU8sR0FBRyxPQUFPLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXpDLDZGQUE2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O0tBQ3pEO0lBQ0QsTUFBTSxJQUFJLFNBQVMsQ0FDakIsMkVBQXFFLENBQ3RFLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLElBQUksQ0FDbEIsSUFBK0QsRUFDL0QsS0FBWSxFQUNaLE9BQWdDLEVBQ2hDLFNBQWtCO0lBRmxCLHNCQUFBLEVBQUEsWUFBWTtJQUlaLElBQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDdEUsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQ3RCLElBQStELEVBQy9ELEtBQVksRUFDWixPQUFnQyxFQUNoQyxTQUFrQjtJQUZsQixzQkFBQSxFQUFBLFlBQVk7SUFJWixPQUFPLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyT2JqIHtcbiAgbGFiZWw6IHN0cmluZztcbiAga2V5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBpc0pzb25zID0gKGFycmF5OiBhbnlbXSkgPT5cbiAgQXJyYXkuaXNBcnJheShhcnJheSkgJiZcbiAgYXJyYXkuZXZlcnkocm93ID0+IHR5cGVvZiByb3cgPT09ICdvYmplY3QnICYmICEocm93IGluc3RhbmNlb2YgQXJyYXkpKTtcblxuZXhwb3J0IGNvbnN0IGlzQXJyYXlzID0gKGFycmF5OiBhbnlbXSkgPT5cbiAgQXJyYXkuaXNBcnJheShhcnJheSkgJiYgYXJyYXkuZXZlcnkocm93ID0+IEFycmF5LmlzQXJyYXkocm93KSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBqc29uc0hlYWRlcnMoYXJyYXk6IG9iamVjdFtdKSB7XG4gIHJldHVybiBBcnJheS5mcm9tKFxuICAgIG5ldyBTZXQoXG4gICAgICBhcnJheS5tYXAoaXRlbSA9PiBPYmplY3Qua2V5cyhpdGVtKSkucmVkdWNlKChhLCBiKSA9PiBbLi4uYSwgLi4uYl0sIFtdKSxcbiAgICApLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganNvbnMyYXJyYXlzKFxuICBqc29uczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVtdLFxuICBoZWFkZXJzPzogc3RyaW5nW10gfCBIZWFkZXJPYmpbXSxcbikge1xuICBoZWFkZXJzID0gaGVhZGVycyB8fCBqc29uc0hlYWRlcnMoanNvbnMpO1xuXG4gIC8vIGFsbG93IGhlYWRlcnMgdG8gaGF2ZSBjdXN0b20gbGFiZWxzLCBkZWZhdWx0aW5nIHRvIGhhdmluZyB0aGUgaGVhZGVyIGRhdGEga2V5IGJlIHRoZSBsYWJlbFxuICBsZXQgaGVhZGVyTGFiZWxzOiBzdHJpbmdbXSA9IGhlYWRlcnMgYXMgc3RyaW5nW107XG4gIGxldCBoZWFkZXJLZXlzOiBzdHJpbmdbXSA9IGhlYWRlcnMgYXMgc3RyaW5nW107XG4gIGlmIChpc0pzb25zKGhlYWRlcnMpKSB7XG4gICAgaGVhZGVyTGFiZWxzID0gKGhlYWRlcnMgYXMgSGVhZGVyT2JqW10pLm1hcChoZWFkZXIgPT4gaGVhZGVyLmxhYmVsKTtcbiAgICBoZWFkZXJLZXlzID0gKGhlYWRlcnMgYXMgSGVhZGVyT2JqW10pLm1hcChoZWFkZXIgPT4gaGVhZGVyLmtleSk7XG4gIH1cblxuICBjb25zdCBkYXRhID0ganNvbnMubWFwKG9iamVjdCA9PlxuICAgIGhlYWRlcktleXMubWFwKGhlYWRlciA9PiAoaGVhZGVyIGluIG9iamVjdCA/IG9iamVjdFtoZWFkZXJdIDogJycpKSxcbiAgKTtcbiAgcmV0dXJuIFtoZWFkZXJMYWJlbHMsIC4uLmRhdGFdO1xufVxuXG5leHBvcnQgY29uc3QgZWxlbWVudE9yRW1wdHkgPSAoZWxlbWVudDogYW55KSA9PlxuICBlbGVtZW50IHx8IGVsZW1lbnQgPT09IDAgPyBlbGVtZW50IDogJyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBqb2luZXIoZGF0YTogYW55LCBkZWxpbWl0ZXIgPSAnLCcpIHtcbiAgcmV0dXJuIGRhdGFcbiAgICAubWFwKChyb3c6IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgIHJvdy5tYXAoKGVsZW1lbnQ6IGFueSkgPT4gJ1wiJyArIGVsZW1lbnRPckVtcHR5KGVsZW1lbnQpICsgJ1wiJykuam9pbihkZWxpbWl0ZXIpLFxuICAgIClcbiAgICAuam9pbihgXFxuYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheXMyY3N2KFxuICBkYXRhOiBzdHJpbmdbXVtdLFxuICBoZWFkZXJzPzogc3RyaW5nW10gfCBIZWFkZXJPYmpbXSxcbiAgZGVsaW1pdGVyPzogc3RyaW5nLFxuKSB7XG4gIHJldHVybiBqb2luZXIoaGVhZGVycyA/IFtoZWFkZXJzLCAuLi5kYXRhXSA6IGRhdGEsIGRlbGltaXRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqc29uczJjc3YoXG4gIGRhdGE6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSxcbiAgaGVhZGVycz86IHN0cmluZ1tdIHwgSGVhZGVyT2JqW10sXG4gIGRlbGltaXRlcj86IHN0cmluZyxcbikge1xuICByZXR1cm4gam9pbmVyKGpzb25zMmFycmF5cyhkYXRhLCBoZWFkZXJzKSwgZGVsaW1pdGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZzJjc3YoXG4gIGRhdGE6IHN0cmluZyxcbiAgaGVhZGVycz86IHN0cmluZ1tdLFxuICBkZWxpbWl0ZXI/OiBzdHJpbmcsXG4pIHtcbiAgcmV0dXJuIGhlYWRlcnMgPyBgJHtoZWFkZXJzLmpvaW4oZGVsaW1pdGVyKX1cXG4ke2RhdGF9YCA6IGRhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0NTVihcbiAgZGF0YTogc3RyaW5nIHwgc3RyaW5nW11bXSB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSB8IGFueVtdLFxuICBoZWFkZXJzPzogc3RyaW5nW10gfCBIZWFkZXJPYmpbXSxcbiAgZGVsaW1pdGVyPzogc3RyaW5nLFxuKSB7XG4gIGlmIChpc0pzb25zKGRhdGEgYXMgYW55KSkge1xuICAgIHJldHVybiBqc29uczJjc3YoZGF0YSBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9W10sIGhlYWRlcnMsIGRlbGltaXRlcik7XG4gIH1cbiAgaWYgKGlzQXJyYXlzKGRhdGEgYXMgYW55KSkge1xuICAgIHJldHVybiBhcnJheXMyY3N2KGRhdGEgYXMgc3RyaW5nW11bXSwgaGVhZGVycywgZGVsaW1pdGVyKTtcbiAgfVxuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHN0cmluZzJjc3YoZGF0YSwgaGVhZGVycyBhcyBzdHJpbmdbXSwgZGVsaW1pdGVyKTtcbiAgfVxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgIGBEYXRhIHNob3VsZCBiZSBhIFwiU3RyaW5nXCIsIFwiQXJyYXkgb2YgYXJyYXlzXCIgT1IgXCJBcnJheSBvZiBvYmplY3RzXCIgYCxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsb2IoXG4gIGRhdGE6IHN0cmluZyB8IHN0cmluZ1tdW10gfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9W10gfCBhbnlbXSxcbiAgdUZFRkYgPSB0cnVlLFxuICBoZWFkZXJzPzogc3RyaW5nW10gfCBIZWFkZXJPYmpbXSxcbiAgZGVsaW1pdGVyPzogc3RyaW5nLFxuKSB7XG4gIGNvbnN0IGNzdiA9IHRvQ1NWKGRhdGEsIGhlYWRlcnMsIGRlbGltaXRlcik7XG4gIHJldHVybiBuZXcgQmxvYihbdUZFRkYgPyAnXFx1RkVGRicgOiAnJywgY3N2XSwgeyB0eXBlOiAndGV4dC9jc3YnIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRVUkkoXG4gIGRhdGE6IHN0cmluZyB8IHN0cmluZ1tdW10gfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9W10gfCBhbnlbXSxcbiAgdUZFRkYgPSB0cnVlLFxuICBoZWFkZXJzPzogc3RyaW5nW10gfCBIZWFkZXJPYmpbXSxcbiAgZGVsaW1pdGVyPzogc3RyaW5nLFxuKSB7XG4gIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IoZGF0YSwgdUZFRkYsIGhlYWRlcnMsIGRlbGltaXRlcikpO1xufVxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"ctrl-ngx-csv.js","sources":["ng://@ctrl/ngx-csv/util.ts","ng://@ctrl/ngx-csv/csv.directive.ts","ng://@ctrl/ngx-csv/csv.module.ts","ng://@ctrl/ngx-csv/ctrl-ngx-csv.ts"],"sourcesContent":["export interface HeaderObj {\n label: string;\n key: string;\n}\n\nexport const isJsons = (array: any[]) =>\n Array.isArray(array) &&\n array.every(row => typeof row === 'object' && !(row instanceof Array));\n\nexport const isArrays = (array: any[]) =>\n Array.isArray(array) && array.every(row => Array.isArray(row));\n\nexport function jsonsHeaders(array: object[]) {\n return Array.from(\n new Set(\n array.map(item => Object.keys(item)).reduce((a, b) => [...a, ...b], []),\n ),\n );\n}\n\nexport function jsons2arrays(\n jsons: { [key: string]: string }[],\n headers?: string[] | HeaderObj[],\n) {\n headers = headers || jsonsHeaders(jsons);\n\n // allow headers to have custom labels, defaulting to having the header data key be the label\n let headerLabels: string[] = headers as string[];\n let headerKeys: string[] = headers as string[];\n if (isJsons(headers)) {\n headerLabels = (headers as HeaderObj[]).map(header => header.label);\n headerKeys = (headers as HeaderObj[]).map(header => header.key);\n }\n\n const data = jsons.map(object =>\n headerKeys.map(header => (header in object ? object[header] : '')),\n );\n return [headerLabels, ...data];\n}\n\nexport const elementOrEmpty = (element: any) =>\n element || element === 0 ? element : '';\n\nexport function joiner(data: any, delimiter = ',') {\n return data\n .map((row: any, index: number) =>\n row.map((element: any) => '\"' + elementOrEmpty(element) + '\"').join(delimiter),\n )\n .join(`\\n`);\n}\n\nexport function arrays2csv(\n data: string[][],\n headers?: string[] | HeaderObj[],\n delimiter?: string,\n) {\n return joiner(headers ? [headers, ...data] : data, delimiter);\n}\n\nexport function jsons2csv(\n data: { [key: string]: string }[],\n headers?: string[] | HeaderObj[],\n delimiter?: string,\n) {\n return joiner(jsons2arrays(data, headers), delimiter);\n}\n\nexport function string2csv(\n data: string,\n headers?: string[],\n delimiter?: string,\n) {\n return headers ? `${headers.join(delimiter)}\\n${data}` : data;\n}\n\nexport function toCSV(\n data: string | string[][] | { [key: string]: string }[] | any[],\n headers?: string[] | HeaderObj[],\n delimiter?: string,\n) {\n if (isJsons(data as any)) {\n return jsons2csv(data as { [key: string]: string }[], headers, delimiter);\n }\n if (isArrays(data as any)) {\n return arrays2csv(data as string[][], headers, delimiter);\n }\n if (typeof data === 'string') {\n return string2csv(data, headers as string[], delimiter);\n }\n throw new TypeError(\n `Data should be a \"String\", \"Array of arrays\" OR \"Array of objects\" `,\n );\n}\n\nexport function blob(\n data: string | string[][] | { [key: string]: string }[] | any[],\n uFEFF = true,\n headers?: string[] | HeaderObj[],\n delimiter?: string,\n) {\n const csv = toCSV(data, headers, delimiter);\n return new Blob([uFEFF ? '\\uFEFF' : '', csv], { type: 'text/csv' });\n}\n\nexport function buildURI(\n data: string | string[][] | { [key: string]: string }[] | any[],\n uFEFF = true,\n headers?: string[] | HeaderObj[],\n delimiter?: string,\n) {\n return URL.createObjectURL(blob(data, uFEFF, headers, delimiter));\n}\n","import { Directive, HostBinding, HostListener, Input, OnChanges } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { blob, buildURI, HeaderObj } from './util';\n\n@Directive({ selector: '[csvLink]' })\nexport class CsvDirective implements OnChanges {\n /** the body of the csv */\n @Input() data: string | string[][] | { [key: string]: string }[] | any[] = [];\n /** Set the first line of the csv */\n @Input() headers?: string[] | HeaderObj[];\n /** Set the seperator between values */\n @Input() delimiter = ',';\n /** Set the filename of the csv. Default is `data.csv` */\n @Input()\n set filename(a: string) {\n this.download = a;\n }\n /** adds a Byte order mark to setup the csv as UTF-8 */\n @Input() uFEFF = true;\n @HostBinding() href?: SafeResourceUrl;\n /** filename */\n @HostBinding() download = 'data.csv';\n @Input() @HostBinding() target = this.isIEBrowser() ? '' : '_blank';\n constructor(private sanitizer: DomSanitizer) {}\n\n @HostListener('click') onClick() {\n // IE handling\n if (this.isIEBrowser()) {\n const file = blob(this.data, this.uFEFF, this.headers, this.delimiter);\n window.navigator.msSaveBlob(file, this.download);\n }\n }\n\n isIEBrowser(): boolean {\n return !!window.navigator.msSaveOrOpenBlob;\n }\n\n ngOnChanges() {\n this.href = this.sanitizer.bypassSecurityTrustResourceUrl(\n buildURI(this.data, this.uFEFF, this.headers, this.delimiter),\n );\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { CsvDirective } from './csv.directive';\n\n@NgModule({\n declarations: [CsvDirective],\n exports: [CsvDirective],\n})\nexport class CsvModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["tslib_1.__decorate"],"mappings":";;;;MAKa,OAAO,GAAG,CAAC,KAAY,KAClC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IACpB,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,EAAE,GAAG,YAAY,KAAK,CAAC,EAAE;MAE5D,QAAQ,GAAG,CAAC,KAAY,KACnC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;SAEjD,YAAY,CAAC,KAAe;IAC1C,OAAO,KAAK,CAAC,IAAI,CACf,IAAI,GAAG,CACL,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CACxE,CACF,CAAC;AACJ,CAAC;SAEe,YAAY,CAC1B,KAAkC,EAClC,OAAgC;IAEhC,OAAO,GAAG,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;;IAGzC,IAAI,YAAY,GAAa,OAAmB,CAAC;IACjD,IAAI,UAAU,GAAa,OAAmB,CAAC;IAC/C,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QACpB,YAAY,GAAI,OAAuB,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACpE,UAAU,GAAI,OAAuB,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;KACjE;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,IAC3B,UAAU,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CACnE,CAAC;IACF,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAAC;AACjC,CAAC;MAEY,cAAc,GAAG,CAAC,OAAY,KACzC,OAAO,IAAI,OAAO,KAAK,CAAC,GAAG,OAAO,GAAG,GAAG;SAE1B,MAAM,CAAC,IAAS,EAAE,SAAS,GAAG,GAAG;IAC/C,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,GAAQ,EAAE,KAAa,KAC3B,GAAG,CAAC,GAAG,CAAC,CAAC,OAAY,KAAK,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAC/E;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;SAEe,UAAU,CACxB,IAAgB,EAChB,OAAgC,EAChC,SAAkB;IAElB,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC;AAChE,CAAC;SAEe,SAAS,CACvB,IAAiC,EACjC,OAAgC,EAChC,SAAkB;IAElB,OAAO,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;AACxD,CAAC;SAEe,UAAU,CACxB,IAAY,EACZ,OAAkB,EAClB,SAAkB;IAElB,OAAO,OAAO,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC;AAChE,CAAC;SAEe,KAAK,CACnB,IAA+D,EAC/D,OAAgC,EAChC,SAAkB;IAElB,IAAI,OAAO,CAAC,IAAW,CAAC,EAAE;QACxB,OAAO,SAAS,CAAC,IAAmC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;KAC3E;IACD,IAAI,QAAQ,CAAC,IAAW,CAAC,EAAE;QACzB,OAAO,UAAU,CAAC,IAAkB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;KAC3D;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,OAAO,UAAU,CAAC,IAAI,EAAE,OAAmB,EAAE,SAAS,CAAC,CAAC;KACzD;IACD,MAAM,IAAI,SAAS,CACjB,qEAAqE,CACtE,CAAC;AACJ,CAAC;SAEe,IAAI,CAClB,IAA+D,EAC/D,KAAK,GAAG,IAAI,EACZ,OAAgC,EAChC,SAAkB;IAElB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5C,OAAO,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,QAAQ,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;AACtE,CAAC;SAEe,QAAQ,CACtB,IAA+D,EAC/D,KAAK,GAAG,IAAI,EACZ,OAAgC,EAChC,SAAkB;IAElB,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AACpE;;ICzGa,YAAY,GAAzB,MAAa,YAAY;IAkBvB,YAAoB,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;;QAhBlC,SAAI,GAA8D,EAAE,CAAC;;QAIrE,cAAS,GAAG,GAAG,CAAC;;QAOhB,UAAK,GAAG,IAAI,CAAC;;QAGP,aAAQ,GAAG,UAAU,CAAC;QACb,WAAM,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC;KACrB;;IAT/C,IAAI,QAAQ,CAAC,CAAS;QACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KACnB;IASsB,OAAO;;QAE5B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACvE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAClD;KACF;IAED,WAAW;QACT,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;KAC5C;IAED,WAAW;QACT,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CACvD,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAC9D,CAAC;KACH;CACF,CAAA;;YAnBgC,YAAY;;AAhBlCA;IAAR,KAAK,EAAE;;0CAAsE;AAErEA;IAAR,KAAK,EAAE;;6CAAkC;AAEjCA;IAAR,KAAK,EAAE;;+CAAiB;AAGzBA;IADC,KAAK,EAAE;;;4CAGP;AAEQA;IAAR,KAAK,EAAE;;2CAAc;AACPA;IAAd,WAAW,EAAE;;0CAAwB;AAEvBA;IAAd,WAAW,EAAE;;8CAAuB;AACbA;IAAvB,KAAK,EAAE,EAAE,WAAW,EAAE;;4CAA6C;AAG7CA;IAAtB,YAAY,CAAC,OAAO,CAAC;;;;2CAMrB;AA1BU,YAAY;IADxB,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;qCAmBJ,YAAY;GAlBhC,YAAY,CAqCxB;;ICnCY,SAAS,GAAtB,MAAa,SAAS;CAAG,CAAA;AAAZ,SAAS;IAJrB,QAAQ,CAAC;QACR,YAAY,EAAE,CAAC,YAAY,CAAC;QAC5B,OAAO,EAAE,CAAC,YAAY,CAAC;KACxB,CAAC;GACW,SAAS,CAAG;;ACRzB;;GAEG;;;;"}
@@ -1,171 +0,0 @@
1
- import { __spread, __decorate, __metadata } from 'tslib';
2
- import { Input, HostBinding, HostListener, Directive, NgModule } from '@angular/core';
3
- import { DomSanitizer } from '@angular/platform-browser';
4
-
5
- var isJsons = function (array) {
6
- return Array.isArray(array) &&
7
- array.every(function (row) { return typeof row === 'object' && !(row instanceof Array); });
8
- };
9
- var isArrays = function (array) {
10
- return Array.isArray(array) && array.every(function (row) { return Array.isArray(row); });
11
- };
12
- function jsonsHeaders(array) {
13
- return Array.from(new Set(array.map(function (item) { return Object.keys(item); }).reduce(function (a, b) { return __spread(a, b); }, [])));
14
- }
15
- function jsons2arrays(jsons, headers) {
16
- headers = headers || jsonsHeaders(jsons);
17
- // allow headers to have custom labels, defaulting to having the header data key be the label
18
- var headerLabels = headers;
19
- var headerKeys = headers;
20
- if (isJsons(headers)) {
21
- headerLabels = headers.map(function (header) { return header.label; });
22
- headerKeys = headers.map(function (header) { return header.key; });
23
- }
24
- var data = jsons.map(function (object) {
25
- return headerKeys.map(function (header) { return (header in object ? object[header] : ''); });
26
- });
27
- return __spread([headerLabels], data);
28
- }
29
- var elementOrEmpty = function (element) {
30
- return element || element === 0 ? element : '';
31
- };
32
- function joiner(data, delimiter) {
33
- if (delimiter === void 0) { delimiter = ','; }
34
- return data
35
- .map(function (row, index) {
36
- return row.map(function (element) { return '"' + elementOrEmpty(element) + '"'; }).join(delimiter);
37
- })
38
- .join("\n");
39
- }
40
- function arrays2csv(data, headers, delimiter) {
41
- return joiner(headers ? __spread([headers], data) : data, delimiter);
42
- }
43
- function jsons2csv(data, headers, delimiter) {
44
- return joiner(jsons2arrays(data, headers), delimiter);
45
- }
46
- function string2csv(data, headers, delimiter) {
47
- return headers ? headers.join(delimiter) + "\n" + data : data;
48
- }
49
- function toCSV(data, headers, delimiter) {
50
- if (isJsons(data)) {
51
- return jsons2csv(data, headers, delimiter);
52
- }
53
- if (isArrays(data)) {
54
- return arrays2csv(data, headers, delimiter);
55
- }
56
- if (typeof data === 'string') {
57
- return string2csv(data, headers, delimiter);
58
- }
59
- throw new TypeError("Data should be a \"String\", \"Array of arrays\" OR \"Array of objects\" ");
60
- }
61
- function blob(data, uFEFF, headers, delimiter) {
62
- if (uFEFF === void 0) { uFEFF = true; }
63
- var csv = toCSV(data, headers, delimiter);
64
- return new Blob([uFEFF ? '\uFEFF' : '', csv], { type: 'text/csv' });
65
- }
66
- function buildURI(data, uFEFF, headers, delimiter) {
67
- if (uFEFF === void 0) { uFEFF = true; }
68
- return URL.createObjectURL(blob(data, uFEFF, headers, delimiter));
69
- }
70
-
71
- var CsvDirective = /** @class */ (function () {
72
- function CsvDirective(sanitizer) {
73
- this.sanitizer = sanitizer;
74
- /** the body of the csv */
75
- this.data = [];
76
- /** Set the seperator between values */
77
- this.delimiter = ',';
78
- /** adds a Byte order mark to setup the csv as UTF-8 */
79
- this.uFEFF = true;
80
- /** filename */
81
- this.download = 'data.csv';
82
- this.target = this.isIEBrowser() ? '' : '_blank';
83
- }
84
- Object.defineProperty(CsvDirective.prototype, "filename", {
85
- /** Set the filename of the csv. Default is `data.csv` */
86
- set: function (a) {
87
- this.download = a;
88
- },
89
- enumerable: true,
90
- configurable: true
91
- });
92
- CsvDirective.prototype.onClick = function () {
93
- // IE handling
94
- if (this.isIEBrowser()) {
95
- var file = blob(this.data, this.uFEFF, this.headers, this.delimiter);
96
- window.navigator.msSaveBlob(file, this.download);
97
- }
98
- };
99
- CsvDirective.prototype.isIEBrowser = function () {
100
- return !!window.navigator.msSaveOrOpenBlob;
101
- };
102
- CsvDirective.prototype.ngOnChanges = function () {
103
- this.href = this.sanitizer.bypassSecurityTrustResourceUrl(buildURI(this.data, this.uFEFF, this.headers, this.delimiter));
104
- };
105
- CsvDirective.ctorParameters = function () { return [
106
- { type: DomSanitizer }
107
- ]; };
108
- __decorate([
109
- Input(),
110
- __metadata("design:type", Object)
111
- ], CsvDirective.prototype, "data", void 0);
112
- __decorate([
113
- Input(),
114
- __metadata("design:type", Array)
115
- ], CsvDirective.prototype, "headers", void 0);
116
- __decorate([
117
- Input(),
118
- __metadata("design:type", Object)
119
- ], CsvDirective.prototype, "delimiter", void 0);
120
- __decorate([
121
- Input(),
122
- __metadata("design:type", String),
123
- __metadata("design:paramtypes", [String])
124
- ], CsvDirective.prototype, "filename", null);
125
- __decorate([
126
- Input(),
127
- __metadata("design:type", Object)
128
- ], CsvDirective.prototype, "uFEFF", void 0);
129
- __decorate([
130
- HostBinding(),
131
- __metadata("design:type", Object)
132
- ], CsvDirective.prototype, "href", void 0);
133
- __decorate([
134
- HostBinding(),
135
- __metadata("design:type", Object)
136
- ], CsvDirective.prototype, "download", void 0);
137
- __decorate([
138
- Input(), HostBinding(),
139
- __metadata("design:type", Object)
140
- ], CsvDirective.prototype, "target", void 0);
141
- __decorate([
142
- HostListener('click'),
143
- __metadata("design:type", Function),
144
- __metadata("design:paramtypes", []),
145
- __metadata("design:returntype", void 0)
146
- ], CsvDirective.prototype, "onClick", null);
147
- CsvDirective = __decorate([
148
- Directive({ selector: '[csvLink]' }),
149
- __metadata("design:paramtypes", [DomSanitizer])
150
- ], CsvDirective);
151
- return CsvDirective;
152
- }());
153
-
154
- var CsvModule = /** @class */ (function () {
155
- function CsvModule() {
156
- }
157
- CsvModule = __decorate([
158
- NgModule({
159
- declarations: [CsvDirective],
160
- exports: [CsvDirective],
161
- })
162
- ], CsvModule);
163
- return CsvModule;
164
- }());
165
-
166
- /**
167
- * Generated bundle index. Do not edit.
168
- */
169
-
170
- export { CsvDirective, CsvModule, arrays2csv, blob, buildURI, elementOrEmpty, isArrays, isJsons, joiner, jsons2arrays, jsons2csv, jsonsHeaders, string2csv, toCSV };
171
- //# sourceMappingURL=ctrl-ngx-csv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ctrl-ngx-csv.js","sources":["ng://@ctrl/ngx-csv/util.ts","ng://@ctrl/ngx-csv/csv.directive.ts","ng://@ctrl/ngx-csv/csv.module.ts","ng://@ctrl/ngx-csv/ctrl-ngx-csv.ts"],"sourcesContent":["export interface HeaderObj {\n label: string;\n key: string;\n}\n\nexport const isJsons = (array: any[]) =>\n Array.isArray(array) &&\n array.every(row => typeof row === 'object' && !(row instanceof Array));\n\nexport const isArrays = (array: any[]) =>\n Array.isArray(array) && array.every(row => Array.isArray(row));\n\nexport function jsonsHeaders(array: object[]) {\n return Array.from(\n new Set(\n array.map(item => Object.keys(item)).reduce((a, b) => [...a, ...b], []),\n ),\n );\n}\n\nexport function jsons2arrays(\n jsons: { [key: string]: string }[],\n headers?: string[] | HeaderObj[],\n) {\n headers = headers || jsonsHeaders(jsons);\n\n // allow headers to have custom labels, defaulting to having the header data key be the label\n let headerLabels: string[] = headers as string[];\n let headerKeys: string[] = headers as string[];\n if (isJsons(headers)) {\n headerLabels = (headers as HeaderObj[]).map(header => header.label);\n headerKeys = (headers as HeaderObj[]).map(header => header.key);\n }\n\n const data = jsons.map(object =>\n headerKeys.map(header => (header in object ? object[header] : '')),\n );\n return [headerLabels, ...data];\n}\n\nexport const elementOrEmpty = (element: any) =>\n element || element === 0 ? element : '';\n\nexport function joiner(data: any, delimiter = ',') {\n return data\n .map((row: any, index: number) =>\n row.map((element: any) => '\"' + elementOrEmpty(element) + '\"').join(delimiter),\n )\n .join(`\\n`);\n}\n\nexport function arrays2csv(\n data: string[][],\n headers?: string[] | HeaderObj[],\n delimiter?: string,\n) {\n return joiner(headers ? [headers, ...data] : data, delimiter);\n}\n\nexport function jsons2csv(\n data: { [key: string]: string }[],\n headers?: string[] | HeaderObj[],\n delimiter?: string,\n) {\n return joiner(jsons2arrays(data, headers), delimiter);\n}\n\nexport function string2csv(\n data: string,\n headers?: string[],\n delimiter?: string,\n) {\n return headers ? `${headers.join(delimiter)}\\n${data}` : data;\n}\n\nexport function toCSV(\n data: string | string[][] | { [key: string]: string }[] | any[],\n headers?: string[] | HeaderObj[],\n delimiter?: string,\n) {\n if (isJsons(data as any)) {\n return jsons2csv(data as { [key: string]: string }[], headers, delimiter);\n }\n if (isArrays(data as any)) {\n return arrays2csv(data as string[][], headers, delimiter);\n }\n if (typeof data === 'string') {\n return string2csv(data, headers as string[], delimiter);\n }\n throw new TypeError(\n `Data should be a \"String\", \"Array of arrays\" OR \"Array of objects\" `,\n );\n}\n\nexport function blob(\n data: string | string[][] | { [key: string]: string }[] | any[],\n uFEFF = true,\n headers?: string[] | HeaderObj[],\n delimiter?: string,\n) {\n const csv = toCSV(data, headers, delimiter);\n return new Blob([uFEFF ? '\\uFEFF' : '', csv], { type: 'text/csv' });\n}\n\nexport function buildURI(\n data: string | string[][] | { [key: string]: string }[] | any[],\n uFEFF = true,\n headers?: string[] | HeaderObj[],\n delimiter?: string,\n) {\n return URL.createObjectURL(blob(data, uFEFF, headers, delimiter));\n}\n","import { Directive, HostBinding, HostListener, Input, OnChanges } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { blob, buildURI, HeaderObj } from './util';\n\n@Directive({ selector: '[csvLink]' })\nexport class CsvDirective implements OnChanges {\n /** the body of the csv */\n @Input() data: string | string[][] | { [key: string]: string }[] | any[] = [];\n /** Set the first line of the csv */\n @Input() headers?: string[] | HeaderObj[];\n /** Set the seperator between values */\n @Input() delimiter = ',';\n /** Set the filename of the csv. Default is `data.csv` */\n @Input()\n set filename(a: string) {\n this.download = a;\n }\n /** adds a Byte order mark to setup the csv as UTF-8 */\n @Input() uFEFF = true;\n @HostBinding() href?: SafeResourceUrl;\n /** filename */\n @HostBinding() download = 'data.csv';\n @Input() @HostBinding() target = this.isIEBrowser() ? '' : '_blank';\n constructor(private sanitizer: DomSanitizer) {}\n\n @HostListener('click') onClick() {\n // IE handling\n if (this.isIEBrowser()) {\n const file = blob(this.data, this.uFEFF, this.headers, this.delimiter);\n window.navigator.msSaveBlob(file, this.download);\n }\n }\n\n isIEBrowser(): boolean {\n return !!window.navigator.msSaveOrOpenBlob;\n }\n\n ngOnChanges() {\n this.href = this.sanitizer.bypassSecurityTrustResourceUrl(\n buildURI(this.data, this.uFEFF, this.headers, this.delimiter),\n );\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { CsvDirective } from './csv.directive';\n\n@NgModule({\n declarations: [CsvDirective],\n exports: [CsvDirective],\n})\nexport class CsvModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["tslib_1.__decorate"],"mappings":"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"}