@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.
- package/README.md +24 -23
- package/csv.directive.d.ts +4 -3
- package/csv.module.d.ts +5 -0
- package/ctrl-ngx-csv.d.ts +1 -0
- package/esm2020/csv.directive.mjs +50 -0
- package/esm2020/csv.module.mjs +16 -0
- package/esm2020/ctrl-ngx-csv.mjs +5 -0
- package/esm2020/public_api.mjs +4 -0
- package/esm2020/util.mjs +53 -0
- package/fesm2015/{ctrl-ngx-csv.js → ctrl-ngx-csv.mjs} +43 -71
- package/fesm2015/ctrl-ngx-csv.mjs.map +1 -0
- package/fesm2020/ctrl-ngx-csv.mjs +122 -0
- package/fesm2020/ctrl-ngx-csv.mjs.map +1 -0
- package/package.json +23 -15
- package/bundles/ctrl-ngx-csv.umd.js +0 -383
- package/bundles/ctrl-ngx-csv.umd.js.map +0 -1
- package/bundles/ctrl-ngx-csv.umd.min.js +0 -16
- package/bundles/ctrl-ngx-csv.umd.min.js.map +0 -1
- package/ctrl-ngx-csv.metadata.json +0 -1
- package/esm2015/csv.directive.js +0 -83
- package/esm2015/csv.module.js +0 -13
- package/esm2015/ctrl-ngx-csv.js +0 -5
- package/esm2015/public_api.js +0 -4
- package/esm2015/util.js +0 -53
- package/esm5/csv.directive.js +0 -88
- package/esm5/csv.module.js +0 -16
- package/esm5/ctrl-ngx-csv.js +0 -5
- package/esm5/public_api.js +0 -4
- package/esm5/util.js +0 -67
- package/fesm2015/ctrl-ngx-csv.js.map +0 -1
- package/fesm5/ctrl-ngx-csv.js +0 -171
- package/fesm5/ctrl-ngx-csv.js.map +0 -1
package/esm2015/csv.directive.js
DELETED
@@ -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
|
package/esm2015/csv.module.js
DELETED
@@ -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==
|
package/esm2015/ctrl-ngx-csv.js
DELETED
@@ -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
|
package/esm2015/public_api.js
DELETED
@@ -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=
|
package/esm5/csv.directive.js
DELETED
@@ -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==
|
package/esm5/csv.module.js
DELETED
@@ -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
|
package/esm5/ctrl-ngx-csv.js
DELETED
@@ -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
|
package/esm5/public_api.js
DELETED
@@ -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":"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"}
|
package/fesm5/ctrl-ngx-csv.js
DELETED
@@ -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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"}
|