@ctrl/ngx-csv 4.0.0 → 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 +2 -1
- package/csv.directive.d.ts +3 -2
- 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/{esm2015/ctrl-ngx-csv.js → esm2020/ctrl-ngx-csv.mjs} +0 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/{esm2015/util.js → esm2020/util.mjs} +1 -1
- package/fesm2015/{ctrl-ngx-csv.js → ctrl-ngx-csv.mjs} +39 -37
- 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 +21 -9
- package/bundles/ctrl-ngx-csv.umd.js +0 -452
- 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 -52
- package/esm2015/csv.module.js +0 -11
- package/fesm2015/ctrl-ngx-csv.js.map +0 -1
package/README.md
CHANGED
package/csv.directive.d.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import { OnChanges } from '@angular/core';
|
2
2
|
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
|
3
3
|
import { HeaderObj } from './util';
|
4
|
+
import * as i0 from "@angular/core";
|
4
5
|
export declare class CsvDirective implements OnChanges {
|
5
6
|
private sanitizer;
|
6
7
|
/** the body of the csv */
|
@@ -20,7 +21,7 @@ export declare class CsvDirective implements OnChanges {
|
|
20
21
|
download: string;
|
21
22
|
target: string;
|
22
23
|
constructor(sanitizer: DomSanitizer);
|
23
|
-
onClick(): void;
|
24
|
-
isIEBrowser(): boolean;
|
25
24
|
ngOnChanges(): void;
|
25
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CsvDirective, never>;
|
26
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CsvDirective, "[csvLink]", never, { "data": "data"; "headers": "headers"; "delimiter": "delimiter"; "filename": "filename"; "uFEFF": "uFEFF"; "target": "target"; }, {}, never>;
|
26
27
|
}
|
package/csv.module.d.ts
CHANGED
@@ -1,2 +1,7 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
import * as i1 from "./csv.directive";
|
1
3
|
export declare class CsvModule {
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CsvModule, never>;
|
5
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CsvModule, [typeof i1.CsvDirective], never, [typeof i1.CsvDirective]>;
|
6
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<CsvModule>;
|
2
7
|
}
|
package/ctrl-ngx-csv.d.ts
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
import { Directive, HostBinding, Input } from '@angular/core';
|
2
|
+
import { buildURI } from './util';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "@angular/platform-browser";
|
5
|
+
export 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 = '_blank';
|
17
|
+
}
|
18
|
+
/** Set the filename of the csv. Default is `data.csv` */
|
19
|
+
set filename(a) {
|
20
|
+
this.download = a;
|
21
|
+
}
|
22
|
+
ngOnChanges() {
|
23
|
+
this.href = this.sanitizer.bypassSecurityTrustResourceUrl(buildURI(this.data, this.uFEFF, this.headers, this.delimiter));
|
24
|
+
}
|
25
|
+
}
|
26
|
+
CsvDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvDirective, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Directive });
|
27
|
+
CsvDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: CsvDirective, selector: "[csvLink]", inputs: { data: "data", headers: "headers", delimiter: "delimiter", filename: "filename", uFEFF: "uFEFF", target: "target" }, host: { properties: { "href": "this.href", "download": "this.download", "target": "this.target" } }, usesOnChanges: true, ngImport: i0 });
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvDirective, decorators: [{
|
29
|
+
type: Directive,
|
30
|
+
args: [{ selector: '[csvLink]' }]
|
31
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { data: [{
|
32
|
+
type: Input
|
33
|
+
}], headers: [{
|
34
|
+
type: Input
|
35
|
+
}], delimiter: [{
|
36
|
+
type: Input
|
37
|
+
}], filename: [{
|
38
|
+
type: Input
|
39
|
+
}], uFEFF: [{
|
40
|
+
type: Input
|
41
|
+
}], href: [{
|
42
|
+
type: HostBinding
|
43
|
+
}], download: [{
|
44
|
+
type: HostBinding
|
45
|
+
}], target: [{
|
46
|
+
type: Input
|
47
|
+
}, {
|
48
|
+
type: HostBinding
|
49
|
+
}] } });
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3N2LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHekUsT0FBTyxFQUFFLFFBQVEsRUFBYSxNQUFNLFFBQVEsQ0FBQzs7O0FBRzdDLE1BQU0sT0FBTyxZQUFZO0lBbUJ2QixZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBbEIzQywwQkFBMEI7UUFDakIsU0FBSSxHQUE4RCxFQUFFLENBQUM7UUFHOUUsdUNBQXVDO1FBQzlCLGNBQVMsR0FBRyxHQUFHLENBQUM7UUFNekIsd0RBQXdEO1FBQy9DLFVBQUssR0FBRyxJQUFJLENBQUM7UUFFdEIsZUFBZTtRQUNBLGFBQVEsR0FBRyxVQUFVLENBQUM7UUFDYixXQUFNLEdBQUcsUUFBUSxDQUFDO0lBRUksQ0FBQztJQVovQyx5REFBeUQ7SUFDekQsSUFDSSxRQUFRLENBQUMsQ0FBUztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBVUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FDdkQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDOUQsQ0FBQztJQUNKLENBQUM7O3lHQXpCVSxZQUFZOzZGQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFEeEIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUU7bUdBR3pCLElBQUk7c0JBQVosS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUNTLElBQUk7c0JBQWxCLFdBQVc7Z0JBRUcsUUFBUTtzQkFBdEIsV0FBVztnQkFDWSxNQUFNO3NCQUE3QixLQUFLOztzQkFBSSxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuaW1wb3J0IHsgYnVpbGRVUkksIEhlYWRlck9iaiB9IGZyb20gJy4vdXRpbCc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tjc3ZMaW5rXScgfSlcbmV4cG9ydCBjbGFzcyBDc3ZEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKiogdGhlIGJvZHkgb2YgdGhlIGNzdiAqL1xuICBASW5wdXQoKSBkYXRhOiBzdHJpbmcgfCBzdHJpbmdbXVtdIHwgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVtdIHwgYW55W10gPSBbXTtcbiAgLyoqIFNldCB0aGUgZmlyc3QgbGluZSBvZiB0aGUgY3N2ICovXG4gIEBJbnB1dCgpIGhlYWRlcnM/OiBzdHJpbmdbXSB8IEhlYWRlck9ialtdO1xuICAvKiogU2V0IHRoZSBzZXBlcmF0b3IgYmV0d2VlbiB2YWx1ZXMgKi9cbiAgQElucHV0KCkgZGVsaW1pdGVyID0gJywnO1xuICAvKiogU2V0IHRoZSBmaWxlbmFtZSBvZiB0aGUgY3N2LiBEZWZhdWx0IGlzIGBkYXRhLmNzdmAgKi9cbiAgQElucHV0KClcbiAgc2V0IGZpbGVuYW1lKGE6IHN0cmluZykge1xuICAgIHRoaXMuZG93bmxvYWQgPSBhO1xuICB9XG4gIC8qKiBhZGRzIGEgQnl0ZSBvcmRlciBtYXJrIHRvIHNldHVwIHRoZSBjc3YgYXMgVVRGLTggICovXG4gIEBJbnB1dCgpIHVGRUZGID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCkgaHJlZj86IFNhZmVSZXNvdXJjZVVybDtcbiAgLyoqIGZpbGVuYW1lICovXG4gIEBIb3N0QmluZGluZygpIGRvd25sb2FkID0gJ2RhdGEuY3N2JztcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCkgdGFyZ2V0ID0gJ19ibGFuayc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmhyZWYgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoXG4gICAgICBidWlsZFVSSSh0aGlzLmRhdGEsIHRoaXMudUZFRkYsIHRoaXMuaGVhZGVycywgdGhpcy5kZWxpbWl0ZXIpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { NgModule } from '@angular/core';
|
2
|
+
import { CsvDirective } from './csv.directive';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export class CsvModule {
|
5
|
+
}
|
6
|
+
CsvModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
7
|
+
CsvModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule, declarations: [CsvDirective], exports: [CsvDirective] });
|
8
|
+
CsvModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule });
|
9
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule, decorators: [{
|
10
|
+
type: NgModule,
|
11
|
+
args: [{
|
12
|
+
declarations: [CsvDirective],
|
13
|
+
exports: [CsvDirective],
|
14
|
+
}]
|
15
|
+
}] });
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3N2Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFNL0MsTUFBTSxPQUFPLFNBQVM7O3NHQUFULFNBQVM7dUdBQVQsU0FBUyxpQkFITCxZQUFZLGFBQ2pCLFlBQVk7dUdBRVgsU0FBUzsyRkFBVCxTQUFTO2tCQUpyQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDNUIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENzdkRpcmVjdGl2ZSB9IGZyb20gJy4vY3N2LmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NzdkRpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtDc3ZEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBDc3ZNb2R1bGUge31cbiJdfQ==
|
File without changes
|
File without changes
|
@@ -50,4 +50,4 @@ export function blob(data, uFEFF = true, headers, delimiter) {
|
|
50
50
|
export function buildURI(data, uFEFF = true, headers, delimiter) {
|
51
51
|
return URL.createObjectURL(blob(data, uFEFF, headers, delimiter));
|
52
52
|
}
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUN0QyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNwQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQztBQUV6RSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRSxDQUN2QyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFakUsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFlO0lBQzFDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixJQUFJLEdBQUcsQ0FDTCxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDeEUsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQzFCLEtBQWtDLEVBQ2xDLE9BQWdDO0lBRWhDLE9BQU8sR0FBRyxPQUFPLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXpDLDZGQUE2RjtJQUM3RixJQUFJLFlBQVksR0FBYSxPQUFtQixDQUFDO0lBQ2pELElB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LENBQ2xCLElBQStELEVBQy9ELEtBQUssR0FBRyxJQUFJLEVBQ1osT0FBZ0MsRUFDaEMsU0FBa0I7SUFFbEIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDNUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsSUFBK0QsRUFDL0QsS0FBSyxHQUFHLElBQUksRUFDWixPQUFnQyxFQUNoQyxTQUFrQjtJQUVsQixPQUFPLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1hcnJvdy9wcmVmZXItYXJyb3ctZnVuY3Rpb25zICovXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlck9iaiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgaXNKc29ucyA9IChhcnJheTogYW55W10pID0+XG4gIEFycmF5LmlzQXJyYXkoYXJyYXkpICYmXG4gIGFycmF5LmV2ZXJ5KHJvdyA9PiB0eXBlb2Ygcm93ID09PSAnb2JqZWN0JyAmJiAhKHJvdyBpbnN0YW5jZW9mIEFycmF5KSk7XG5cbmV4cG9ydCBjb25zdCBpc0FycmF5cyA9IChhcnJheTogYW55W10pID0+XG4gIEFycmF5LmlzQXJyYXkoYXJyYXkpICYmIGFycmF5LmV2ZXJ5KHJvdyA9PiBBcnJheS5pc0FycmF5KHJvdykpO1xuXG5leHBvcnQgZnVuY3Rpb24ganNvbnNIZWFkZXJzKGFycmF5OiBvYmplY3RbXSkge1xuICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICBuZXcgU2V0KFxuICAgICAgYXJyYXkubWFwKGl0ZW0gPT4gT2JqZWN0LmtleXMoaXRlbSkpLnJlZHVjZSgoYSwgYikgPT4gWy4uLmEsIC4uLmJdLCBbXSksXG4gICAgKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGpzb25zMmFycmF5cyhcbiAganNvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSxcbiAgaGVhZGVycz86IHN0cmluZ1tdIHwgSGVhZGVyT2JqW10sXG4pIHtcbiAgaGVhZGVycyA9IGhlYWRlcnMgfHwganNvbnNIZWFkZXJzKGpzb25zKTtcblxuICAvLyBhbGxvdyBoZWFkZXJzIHRvIGhhdmUgY3VzdG9tIGxhYmVscywgZGVmYXVsdGluZyB0byBoYXZpbmcgdGhlIGhlYWRlciBkYXRhIGtleSBiZSB0aGUgbGFiZWxcbiAgbGV0IGhlYWRlckxhYmVsczogc3RyaW5nW10gPSBoZWFkZXJzIGFzIHN0cmluZ1tdO1xuICBsZXQgaGVhZGVyS2V5czogc3RyaW5nW10gPSBoZWFkZXJzIGFzIHN0cmluZ1tdO1xuICBpZiAoaXNKc29ucyhoZWFkZXJzKSkge1xuICAgIGhlYWRlckxhYmVscyA9IChoZWFkZXJzIGFzIEhlYWRlck9ialtdKS5tYXAoaGVhZGVyID0+IGhlYWRlci5sYWJlbCk7XG4gICAgaGVhZGVyS2V5cyA9IChoZWFkZXJzIGFzIEhlYWRlck9ialtdKS5tYXAoaGVhZGVyID0+IGhlYWRlci5rZXkpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGpzb25zLm1hcChvYmplY3QgPT5cbiAgICBoZWFkZXJLZXlzLm1hcChoZWFkZXIgPT4gKGhlYWRlciBpbiBvYmplY3QgPyBvYmplY3RbaGVhZGVyXSA6ICcnKSksXG4gICk7XG4gIHJldHVybiBbaGVhZGVyTGFiZWxzLCAuLi5kYXRhXTtcbn1cblxuZXhwb3J0IGNvbnN0IGVsZW1lbnRPckVtcHR5ID0gKGVsZW1lbnQ6IGFueSkgPT5cbiAgZWxlbWVudCB8fCBlbGVtZW50ID09PSAwID8gZWxlbWVudCA6ICcnO1xuXG5leHBvcnQgZnVuY3Rpb24gam9pbmVyKGRhdGE6IGFueSwgZGVsaW1pdGVyID0gJywnKSB7XG4gIHJldHVybiBkYXRhXG4gICAgLm1hcCgocm93OiBhbnksIGluZGV4OiBudW1iZXIpID0+XG4gICAgICByb3cubWFwKChlbGVtZW50OiBhbnkpID0+ICdcIicgKyBlbGVtZW50T3JFbXB0eShlbGVtZW50KSArICdcIicpLmpvaW4oZGVsaW1pdGVyKSxcbiAgICApXG4gICAgLmpvaW4oYFxcbmApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlzMmNzdihcbiAgZGF0YTogc3RyaW5nW11bXSxcbiAgaGVhZGVycz86IHN0cmluZ1tdIHwgSGVhZGVyT2JqW10sXG4gIGRlbGltaXRlcj86IHN0cmluZyxcbikge1xuICByZXR1cm4gam9pbmVyKGhlYWRlcnMgPyBbaGVhZGVycywgLi4uZGF0YV0gOiBkYXRhLCBkZWxpbWl0ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganNvbnMyY3N2KFxuICBkYXRhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9W10sXG4gIGhlYWRlcnM/OiBzdHJpbmdbXSB8IEhlYWRlck9ialtdLFxuICBkZWxpbWl0ZXI/OiBzdHJpbmcsXG4pIHtcbiAgcmV0dXJuIGpvaW5lcihqc29uczJhcnJheXMoZGF0YSwgaGVhZGVycyksIGRlbGltaXRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcyY3N2KFxuICBkYXRhOiBzdHJpbmcsXG4gIGhlYWRlcnM/OiBzdHJpbmdbXSxcbiAgZGVsaW1pdGVyPzogc3RyaW5nLFxuKSB7XG4gIHJldHVybiBoZWFkZXJzID8gYCR7aGVhZGVycy5qb2luKGRlbGltaXRlcil9XFxuJHtkYXRhfWAgOiBkYXRhO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9DU1YoXG4gIGRhdGE6IHN0cmluZyB8IHN0cmluZ1tdW10gfCB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9W10gfCBhbnlbXSxcbiAgaGVhZGVycz86IHN0cmluZ1tdIHwgSGVhZGVyT2JqW10sXG4gIGRlbGltaXRlcj86IHN0cmluZyxcbikge1xuICBpZiAoaXNKc29ucyhkYXRhIGFzIGFueSkpIHtcbiAgICByZXR1cm4ganNvbnMyY3N2KGRhdGEgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVtdLCBoZWFkZXJzLCBkZWxpbWl0ZXIpO1xuICB9XG4gIGlmIChpc0FycmF5cyhkYXRhIGFzIGFueSkpIHtcbiAgICByZXR1cm4gYXJyYXlzMmNzdihkYXRhIGFzIHN0cmluZ1tdW10sIGhlYWRlcnMsIGRlbGltaXRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzdHJpbmcyY3N2KGRhdGEsIGhlYWRlcnMgYXMgc3RyaW5nW10sIGRlbGltaXRlcik7XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICBgRGF0YSBzaG91bGQgYmUgYSBcIlN0cmluZ1wiLCBcIkFycmF5IG9mIGFycmF5c1wiIE9SIFwiQXJyYXkgb2Ygb2JqZWN0c1wiIGAsXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBibG9iKFxuICBkYXRhOiBzdHJpbmcgfCBzdHJpbmdbXVtdIHwgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVtdIHwgYW55W10sXG4gIHVGRUZGID0gdHJ1ZSxcbiAgaGVhZGVycz86IHN0cmluZ1tdIHwgSGVhZGVyT2JqW10sXG4gIGRlbGltaXRlcj86IHN0cmluZyxcbikge1xuICBjb25zdCBjc3YgPSB0b0NTVihkYXRhLCBoZWFkZXJzLCBkZWxpbWl0ZXIpO1xuICByZXR1cm4gbmV3IEJsb2IoW3VGRUZGID8gJ1xcdUZFRkYnIDogJycsIGNzdl0sIHsgdHlwZTogJ3RleHQvY3N2JyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVVJJKFxuICBkYXRhOiBzdHJpbmcgfCBzdHJpbmdbXVtdIHwgeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfVtdIHwgYW55W10sXG4gIHVGRUZGID0gdHJ1ZSxcbiAgaGVhZGVycz86IHN0cmluZ1tdIHwgSGVhZGVyT2JqW10sXG4gIGRlbGltaXRlcj86IHN0cmluZyxcbikge1xuICByZXR1cm4gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKGRhdGEsIHVGRUZGLCBoZWFkZXJzLCBkZWxpbWl0ZXIpKTtcbn1cbiJdfQ==
|
@@ -1,5 +1,6 @@
|
|
1
|
-
import
|
2
|
-
import {
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { Directive, Input, HostBinding, NgModule } from '@angular/core';
|
3
|
+
import * as i1 from '@angular/platform-browser';
|
3
4
|
|
4
5
|
const isJsons = (array) => Array.isArray(array) &&
|
5
6
|
array.every(row => typeof row === 'object' && !(row instanceof Array));
|
@@ -65,56 +66,57 @@ class CsvDirective {
|
|
65
66
|
this.uFEFF = true;
|
66
67
|
/** filename */
|
67
68
|
this.download = 'data.csv';
|
68
|
-
this.target =
|
69
|
+
this.target = '_blank';
|
69
70
|
}
|
70
71
|
/** Set the filename of the csv. Default is `data.csv` */
|
71
72
|
set filename(a) {
|
72
73
|
this.download = a;
|
73
74
|
}
|
74
|
-
onClick() {
|
75
|
-
// IE handling
|
76
|
-
if (this.isIEBrowser()) {
|
77
|
-
const file = blob(this.data, this.uFEFF, this.headers, this.delimiter);
|
78
|
-
window.navigator.msSaveBlob(file, this.download);
|
79
|
-
}
|
80
|
-
}
|
81
|
-
isIEBrowser() {
|
82
|
-
return !!window.navigator.msSaveOrOpenBlob;
|
83
|
-
}
|
84
75
|
ngOnChanges() {
|
85
76
|
this.href = this.sanitizer.bypassSecurityTrustResourceUrl(buildURI(this.data, this.uFEFF, this.headers, this.delimiter));
|
86
77
|
}
|
87
78
|
}
|
88
|
-
CsvDirective
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
];
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
79
|
+
CsvDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvDirective, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Directive });
|
80
|
+
CsvDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: CsvDirective, selector: "[csvLink]", inputs: { data: "data", headers: "headers", delimiter: "delimiter", filename: "filename", uFEFF: "uFEFF", target: "target" }, host: { properties: { "href": "this.href", "download": "this.download", "target": "this.target" } }, usesOnChanges: true, ngImport: i0 });
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvDirective, decorators: [{
|
82
|
+
type: Directive,
|
83
|
+
args: [{ selector: '[csvLink]' }]
|
84
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { data: [{
|
85
|
+
type: Input
|
86
|
+
}], headers: [{
|
87
|
+
type: Input
|
88
|
+
}], delimiter: [{
|
89
|
+
type: Input
|
90
|
+
}], filename: [{
|
91
|
+
type: Input
|
92
|
+
}], uFEFF: [{
|
93
|
+
type: Input
|
94
|
+
}], href: [{
|
95
|
+
type: HostBinding
|
96
|
+
}], download: [{
|
97
|
+
type: HostBinding
|
98
|
+
}], target: [{
|
99
|
+
type: Input
|
100
|
+
}, {
|
101
|
+
type: HostBinding
|
102
|
+
}] } });
|
105
103
|
|
106
104
|
class CsvModule {
|
107
105
|
}
|
108
|
-
CsvModule
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
106
|
+
CsvModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
107
|
+
CsvModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule, declarations: [CsvDirective], exports: [CsvDirective] });
|
108
|
+
CsvModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule });
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule, decorators: [{
|
110
|
+
type: NgModule,
|
111
|
+
args: [{
|
112
|
+
declarations: [CsvDirective],
|
113
|
+
exports: [CsvDirective],
|
114
|
+
}]
|
115
|
+
}] });
|
114
116
|
|
115
117
|
/**
|
116
118
|
* Generated bundle index. Do not edit.
|
117
119
|
*/
|
118
120
|
|
119
121
|
export { CsvDirective, CsvModule, arrays2csv, blob, buildURI, elementOrEmpty, isArrays, isJsons, joiner, jsons2arrays, jsons2csv, jsonsHeaders, string2csv, toCSV };
|
120
|
-
//# sourceMappingURL=ctrl-ngx-csv.
|
122
|
+
//# sourceMappingURL=ctrl-ngx-csv.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ctrl-ngx-csv.mjs","sources":["../../src/lib/util.ts","../../src/lib/csv.directive.ts","../../src/lib/csv.module.ts","../../src/lib/ctrl-ngx-csv.ts"],"sourcesContent":["/* eslint-disable prefer-arrow/prefer-arrow-functions */\nexport 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, Input, OnChanges } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { 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 = '_blank';\n\n constructor(private sanitizer: DomSanitizer) {}\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":[],"mappings":"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"}
|
@@ -0,0 +1,122 @@
|
|
1
|
+
import * as i0 from '@angular/core';
|
2
|
+
import { Directive, Input, HostBinding, NgModule } from '@angular/core';
|
3
|
+
import * as i1 from '@angular/platform-browser';
|
4
|
+
|
5
|
+
const isJsons = (array) => Array.isArray(array) &&
|
6
|
+
array.every(row => typeof row === 'object' && !(row instanceof Array));
|
7
|
+
const isArrays = (array) => Array.isArray(array) && array.every(row => Array.isArray(row));
|
8
|
+
function jsonsHeaders(array) {
|
9
|
+
return Array.from(new Set(array.map(item => Object.keys(item)).reduce((a, b) => [...a, ...b], [])));
|
10
|
+
}
|
11
|
+
function jsons2arrays(jsons, headers) {
|
12
|
+
headers = headers || jsonsHeaders(jsons);
|
13
|
+
// allow headers to have custom labels, defaulting to having the header data key be the label
|
14
|
+
let headerLabels = headers;
|
15
|
+
let headerKeys = headers;
|
16
|
+
if (isJsons(headers)) {
|
17
|
+
headerLabels = headers.map(header => header.label);
|
18
|
+
headerKeys = headers.map(header => header.key);
|
19
|
+
}
|
20
|
+
const data = jsons.map(object => headerKeys.map(header => (header in object ? object[header] : '')));
|
21
|
+
return [headerLabels, ...data];
|
22
|
+
}
|
23
|
+
const elementOrEmpty = (element) => element || element === 0 ? element : '';
|
24
|
+
function joiner(data, delimiter = ',') {
|
25
|
+
return data
|
26
|
+
.map((row, index) => row.map((element) => '"' + elementOrEmpty(element) + '"').join(delimiter))
|
27
|
+
.join(`\n`);
|
28
|
+
}
|
29
|
+
function arrays2csv(data, headers, delimiter) {
|
30
|
+
return joiner(headers ? [headers, ...data] : data, delimiter);
|
31
|
+
}
|
32
|
+
function jsons2csv(data, headers, delimiter) {
|
33
|
+
return joiner(jsons2arrays(data, headers), delimiter);
|
34
|
+
}
|
35
|
+
function string2csv(data, headers, delimiter) {
|
36
|
+
return headers ? `${headers.join(delimiter)}\n${data}` : data;
|
37
|
+
}
|
38
|
+
function toCSV(data, headers, delimiter) {
|
39
|
+
if (isJsons(data)) {
|
40
|
+
return jsons2csv(data, headers, delimiter);
|
41
|
+
}
|
42
|
+
if (isArrays(data)) {
|
43
|
+
return arrays2csv(data, headers, delimiter);
|
44
|
+
}
|
45
|
+
if (typeof data === 'string') {
|
46
|
+
return string2csv(data, headers, delimiter);
|
47
|
+
}
|
48
|
+
throw new TypeError(`Data should be a "String", "Array of arrays" OR "Array of objects" `);
|
49
|
+
}
|
50
|
+
function blob(data, uFEFF = true, headers, delimiter) {
|
51
|
+
const csv = toCSV(data, headers, delimiter);
|
52
|
+
return new Blob([uFEFF ? '\uFEFF' : '', csv], { type: 'text/csv' });
|
53
|
+
}
|
54
|
+
function buildURI(data, uFEFF = true, headers, delimiter) {
|
55
|
+
return URL.createObjectURL(blob(data, uFEFF, headers, delimiter));
|
56
|
+
}
|
57
|
+
|
58
|
+
class CsvDirective {
|
59
|
+
constructor(sanitizer) {
|
60
|
+
this.sanitizer = sanitizer;
|
61
|
+
/** the body of the csv */
|
62
|
+
this.data = [];
|
63
|
+
/** Set the seperator between values */
|
64
|
+
this.delimiter = ',';
|
65
|
+
/** adds a Byte order mark to setup the csv as UTF-8 */
|
66
|
+
this.uFEFF = true;
|
67
|
+
/** filename */
|
68
|
+
this.download = 'data.csv';
|
69
|
+
this.target = '_blank';
|
70
|
+
}
|
71
|
+
/** Set the filename of the csv. Default is `data.csv` */
|
72
|
+
set filename(a) {
|
73
|
+
this.download = a;
|
74
|
+
}
|
75
|
+
ngOnChanges() {
|
76
|
+
this.href = this.sanitizer.bypassSecurityTrustResourceUrl(buildURI(this.data, this.uFEFF, this.headers, this.delimiter));
|
77
|
+
}
|
78
|
+
}
|
79
|
+
CsvDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvDirective, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Directive });
|
80
|
+
CsvDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.0", type: CsvDirective, selector: "[csvLink]", inputs: { data: "data", headers: "headers", delimiter: "delimiter", filename: "filename", uFEFF: "uFEFF", target: "target" }, host: { properties: { "href": "this.href", "download": "this.download", "target": "this.target" } }, usesOnChanges: true, ngImport: i0 });
|
81
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvDirective, decorators: [{
|
82
|
+
type: Directive,
|
83
|
+
args: [{ selector: '[csvLink]' }]
|
84
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { data: [{
|
85
|
+
type: Input
|
86
|
+
}], headers: [{
|
87
|
+
type: Input
|
88
|
+
}], delimiter: [{
|
89
|
+
type: Input
|
90
|
+
}], filename: [{
|
91
|
+
type: Input
|
92
|
+
}], uFEFF: [{
|
93
|
+
type: Input
|
94
|
+
}], href: [{
|
95
|
+
type: HostBinding
|
96
|
+
}], download: [{
|
97
|
+
type: HostBinding
|
98
|
+
}], target: [{
|
99
|
+
type: Input
|
100
|
+
}, {
|
101
|
+
type: HostBinding
|
102
|
+
}] } });
|
103
|
+
|
104
|
+
class CsvModule {
|
105
|
+
}
|
106
|
+
CsvModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
107
|
+
CsvModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule, declarations: [CsvDirective], exports: [CsvDirective] });
|
108
|
+
CsvModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule });
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0", ngImport: i0, type: CsvModule, decorators: [{
|
110
|
+
type: NgModule,
|
111
|
+
args: [{
|
112
|
+
declarations: [CsvDirective],
|
113
|
+
exports: [CsvDirective],
|
114
|
+
}]
|
115
|
+
}] });
|
116
|
+
|
117
|
+
/**
|
118
|
+
* Generated bundle index. Do not edit.
|
119
|
+
*/
|
120
|
+
|
121
|
+
export { CsvDirective, CsvModule, arrays2csv, blob, buildURI, elementOrEmpty, isArrays, isJsons, joiner, jsons2arrays, jsons2csv, jsonsHeaders, string2csv, toCSV };
|
122
|
+
//# sourceMappingURL=ctrl-ngx-csv.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ctrl-ngx-csv.mjs","sources":["../../src/lib/util.ts","../../src/lib/csv.directive.ts","../../src/lib/csv.module.ts","../../src/lib/ctrl-ngx-csv.ts"],"sourcesContent":["/* eslint-disable prefer-arrow/prefer-arrow-functions */\nexport 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, Input, OnChanges } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport { 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 = '_blank';\n\n constructor(private sanitizer: DomSanitizer) {}\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":[],"mappings":";;;;MAMa,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;;MC1Ga,YAAY;IAmBvB,YAAoB,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;;QAjBlC,SAAI,GAA8D,EAAE,CAAC;;QAIrE,cAAS,GAAG,GAAG,CAAC;;QAOhB,UAAK,GAAG,IAAI,CAAC;;QAGP,aAAQ,GAAG,UAAU,CAAC;QACb,WAAM,GAAG,QAAQ,CAAC;KAEK;;IAX/C,IACI,QAAQ,CAAC,CAAS;QACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KACnB;IAUD,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;;yGAzBU,YAAY;6FAAZ,YAAY;2FAAZ,YAAY;kBADxB,SAAS;mBAAC,EAAE,QAAQ,EAAE,WAAW,EAAE;mGAGzB,IAAI;sBAAZ,KAAK;gBAEG,OAAO;sBAAf,KAAK;gBAEG,SAAS;sBAAjB,KAAK;gBAGF,QAAQ;sBADX,KAAK;gBAKG,KAAK;sBAAb,KAAK;gBACS,IAAI;sBAAlB,WAAW;gBAEG,QAAQ;sBAAtB,WAAW;gBACY,MAAM;sBAA7B,KAAK;;sBAAI,WAAW;;;MCfV,SAAS;;sGAAT,SAAS;uGAAT,SAAS,iBAHL,YAAY,aACjB,YAAY;uGAEX,SAAS;2FAAT,SAAS;kBAJrB,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,YAAY,CAAC;oBAC5B,OAAO,EAAE,CAAC,YAAY,CAAC;iBACxB;;;ACPD;;;;;;"}
|
package/package.json
CHANGED
@@ -5,9 +5,9 @@
|
|
5
5
|
"publishConfig": {
|
6
6
|
"access": "public"
|
7
7
|
},
|
8
|
-
"version": "
|
8
|
+
"version": "5.0.0",
|
9
9
|
"peerDependencies": {
|
10
|
-
"@angular/core": ">=
|
10
|
+
"@angular/core": ">=12.0.0-0"
|
11
11
|
},
|
12
12
|
"repository": "scttcper/ngx-csv",
|
13
13
|
"homepage": "https://ngx-csv.vercel.app",
|
@@ -18,15 +18,27 @@
|
|
18
18
|
"angular-component",
|
19
19
|
"csv"
|
20
20
|
],
|
21
|
-
"
|
22
|
-
"
|
23
|
-
"
|
24
|
-
"
|
25
|
-
"fesm2015": "fesm2015/ctrl-ngx-csv.
|
21
|
+
"module": "fesm2015/ctrl-ngx-csv.mjs",
|
22
|
+
"es2020": "fesm2020/ctrl-ngx-csv.mjs",
|
23
|
+
"esm2020": "esm2020/ctrl-ngx-csv.mjs",
|
24
|
+
"fesm2020": "fesm2020/ctrl-ngx-csv.mjs",
|
25
|
+
"fesm2015": "fesm2015/ctrl-ngx-csv.mjs",
|
26
26
|
"typings": "ctrl-ngx-csv.d.ts",
|
27
|
-
"
|
27
|
+
"exports": {
|
28
|
+
"./package.json": {
|
29
|
+
"default": "./package.json"
|
30
|
+
},
|
31
|
+
".": {
|
32
|
+
"types": "./ctrl-ngx-csv.d.ts",
|
33
|
+
"esm2020": "./esm2020/ctrl-ngx-csv.mjs",
|
34
|
+
"es2020": "./fesm2020/ctrl-ngx-csv.mjs",
|
35
|
+
"es2015": "./fesm2015/ctrl-ngx-csv.mjs",
|
36
|
+
"node": "./fesm2015/ctrl-ngx-csv.mjs",
|
37
|
+
"default": "./fesm2020/ctrl-ngx-csv.mjs"
|
38
|
+
}
|
39
|
+
},
|
28
40
|
"sideEffects": false,
|
29
41
|
"dependencies": {
|
30
|
-
"tslib": "^2.
|
42
|
+
"tslib": "^2.3.0"
|
31
43
|
}
|
32
44
|
}
|
@@ -1,452 +0,0 @@
|
|
1
|
-
(function (global, factory) {
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/platform-browser')) :
|
3
|
-
typeof define === 'function' && define.amd ? define('@ctrl/ngx-csv', ['exports', '@angular/core', '@angular/platform-browser'], factory) :
|
4
|
-
(global = global || self, factory((global.ctrl = global.ctrl || {}, global.ctrl['ngx-csv'] = {}), global.ng.core, global.ng.platformBrowser));
|
5
|
-
}(this, (function (exports, core, platformBrowser) { 'use strict';
|
6
|
-
|
7
|
-
/*! *****************************************************************************
|
8
|
-
Copyright (c) Microsoft Corporation.
|
9
|
-
|
10
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
11
|
-
purpose with or without fee is hereby granted.
|
12
|
-
|
13
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
14
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
15
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
16
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
17
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
18
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
19
|
-
PERFORMANCE OF THIS SOFTWARE.
|
20
|
-
***************************************************************************** */
|
21
|
-
/* global Reflect, Promise */
|
22
|
-
var extendStatics = function (d, b) {
|
23
|
-
extendStatics = Object.setPrototypeOf ||
|
24
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
25
|
-
function (d, b) { for (var p in b)
|
26
|
-
if (b.hasOwnProperty(p))
|
27
|
-
d[p] = b[p]; };
|
28
|
-
return extendStatics(d, b);
|
29
|
-
};
|
30
|
-
function __extends(d, b) {
|
31
|
-
extendStatics(d, b);
|
32
|
-
function __() { this.constructor = d; }
|
33
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
34
|
-
}
|
35
|
-
var __assign = function () {
|
36
|
-
__assign = Object.assign || function __assign(t) {
|
37
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
38
|
-
s = arguments[i];
|
39
|
-
for (var p in s)
|
40
|
-
if (Object.prototype.hasOwnProperty.call(s, p))
|
41
|
-
t[p] = s[p];
|
42
|
-
}
|
43
|
-
return t;
|
44
|
-
};
|
45
|
-
return __assign.apply(this, arguments);
|
46
|
-
};
|
47
|
-
function __rest(s, e) {
|
48
|
-
var t = {};
|
49
|
-
for (var p in s)
|
50
|
-
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
51
|
-
t[p] = s[p];
|
52
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
53
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
54
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
55
|
-
t[p[i]] = s[p[i]];
|
56
|
-
}
|
57
|
-
return t;
|
58
|
-
}
|
59
|
-
function __decorate(decorators, target, key, desc) {
|
60
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
61
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
62
|
-
r = Reflect.decorate(decorators, target, key, desc);
|
63
|
-
else
|
64
|
-
for (var i = decorators.length - 1; i >= 0; i--)
|
65
|
-
if (d = decorators[i])
|
66
|
-
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
67
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
68
|
-
}
|
69
|
-
function __param(paramIndex, decorator) {
|
70
|
-
return function (target, key) { decorator(target, key, paramIndex); };
|
71
|
-
}
|
72
|
-
function __metadata(metadataKey, metadataValue) {
|
73
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
74
|
-
return Reflect.metadata(metadataKey, metadataValue);
|
75
|
-
}
|
76
|
-
function __awaiter(thisArg, _arguments, P, generator) {
|
77
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
78
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
79
|
-
function fulfilled(value) { try {
|
80
|
-
step(generator.next(value));
|
81
|
-
}
|
82
|
-
catch (e) {
|
83
|
-
reject(e);
|
84
|
-
} }
|
85
|
-
function rejected(value) { try {
|
86
|
-
step(generator["throw"](value));
|
87
|
-
}
|
88
|
-
catch (e) {
|
89
|
-
reject(e);
|
90
|
-
} }
|
91
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
92
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
93
|
-
});
|
94
|
-
}
|
95
|
-
function __generator(thisArg, body) {
|
96
|
-
var _ = { label: 0, sent: function () { if (t[0] & 1)
|
97
|
-
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
98
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
|
99
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
100
|
-
function step(op) {
|
101
|
-
if (f)
|
102
|
-
throw new TypeError("Generator is already executing.");
|
103
|
-
while (_)
|
104
|
-
try {
|
105
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
|
106
|
-
return t;
|
107
|
-
if (y = 0, t)
|
108
|
-
op = [op[0] & 2, t.value];
|
109
|
-
switch (op[0]) {
|
110
|
-
case 0:
|
111
|
-
case 1:
|
112
|
-
t = op;
|
113
|
-
break;
|
114
|
-
case 4:
|
115
|
-
_.label++;
|
116
|
-
return { value: op[1], done: false };
|
117
|
-
case 5:
|
118
|
-
_.label++;
|
119
|
-
y = op[1];
|
120
|
-
op = [0];
|
121
|
-
continue;
|
122
|
-
case 7:
|
123
|
-
op = _.ops.pop();
|
124
|
-
_.trys.pop();
|
125
|
-
continue;
|
126
|
-
default:
|
127
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
128
|
-
_ = 0;
|
129
|
-
continue;
|
130
|
-
}
|
131
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
|
132
|
-
_.label = op[1];
|
133
|
-
break;
|
134
|
-
}
|
135
|
-
if (op[0] === 6 && _.label < t[1]) {
|
136
|
-
_.label = t[1];
|
137
|
-
t = op;
|
138
|
-
break;
|
139
|
-
}
|
140
|
-
if (t && _.label < t[2]) {
|
141
|
-
_.label = t[2];
|
142
|
-
_.ops.push(op);
|
143
|
-
break;
|
144
|
-
}
|
145
|
-
if (t[2])
|
146
|
-
_.ops.pop();
|
147
|
-
_.trys.pop();
|
148
|
-
continue;
|
149
|
-
}
|
150
|
-
op = body.call(thisArg, _);
|
151
|
-
}
|
152
|
-
catch (e) {
|
153
|
-
op = [6, e];
|
154
|
-
y = 0;
|
155
|
-
}
|
156
|
-
finally {
|
157
|
-
f = t = 0;
|
158
|
-
}
|
159
|
-
if (op[0] & 5)
|
160
|
-
throw op[1];
|
161
|
-
return { value: op[0] ? op[1] : void 0, done: true };
|
162
|
-
}
|
163
|
-
}
|
164
|
-
var __createBinding = Object.create ? (function (o, m, k, k2) {
|
165
|
-
if (k2 === undefined)
|
166
|
-
k2 = k;
|
167
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
|
168
|
-
}) : (function (o, m, k, k2) {
|
169
|
-
if (k2 === undefined)
|
170
|
-
k2 = k;
|
171
|
-
o[k2] = m[k];
|
172
|
-
});
|
173
|
-
function __exportStar(m, exports) {
|
174
|
-
for (var p in m)
|
175
|
-
if (p !== "default" && !exports.hasOwnProperty(p))
|
176
|
-
__createBinding(exports, m, p);
|
177
|
-
}
|
178
|
-
function __values(o) {
|
179
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
180
|
-
if (m)
|
181
|
-
return m.call(o);
|
182
|
-
if (o && typeof o.length === "number")
|
183
|
-
return {
|
184
|
-
next: function () {
|
185
|
-
if (o && i >= o.length)
|
186
|
-
o = void 0;
|
187
|
-
return { value: o && o[i++], done: !o };
|
188
|
-
}
|
189
|
-
};
|
190
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
191
|
-
}
|
192
|
-
function __read(o, n) {
|
193
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
194
|
-
if (!m)
|
195
|
-
return o;
|
196
|
-
var i = m.call(o), r, ar = [], e;
|
197
|
-
try {
|
198
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
|
199
|
-
ar.push(r.value);
|
200
|
-
}
|
201
|
-
catch (error) {
|
202
|
-
e = { error: error };
|
203
|
-
}
|
204
|
-
finally {
|
205
|
-
try {
|
206
|
-
if (r && !r.done && (m = i["return"]))
|
207
|
-
m.call(i);
|
208
|
-
}
|
209
|
-
finally {
|
210
|
-
if (e)
|
211
|
-
throw e.error;
|
212
|
-
}
|
213
|
-
}
|
214
|
-
return ar;
|
215
|
-
}
|
216
|
-
function __spread() {
|
217
|
-
for (var ar = [], i = 0; i < arguments.length; i++)
|
218
|
-
ar = ar.concat(__read(arguments[i]));
|
219
|
-
return ar;
|
220
|
-
}
|
221
|
-
function __spreadArrays() {
|
222
|
-
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
|
223
|
-
s += arguments[i].length;
|
224
|
-
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
225
|
-
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
226
|
-
r[k] = a[j];
|
227
|
-
return r;
|
228
|
-
}
|
229
|
-
;
|
230
|
-
function __await(v) {
|
231
|
-
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
232
|
-
}
|
233
|
-
function __asyncGenerator(thisArg, _arguments, generator) {
|
234
|
-
if (!Symbol.asyncIterator)
|
235
|
-
throw new TypeError("Symbol.asyncIterator is not defined.");
|
236
|
-
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
237
|
-
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
238
|
-
function verb(n) { if (g[n])
|
239
|
-
i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
240
|
-
function resume(n, v) { try {
|
241
|
-
step(g[n](v));
|
242
|
-
}
|
243
|
-
catch (e) {
|
244
|
-
settle(q[0][3], e);
|
245
|
-
} }
|
246
|
-
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
247
|
-
function fulfill(value) { resume("next", value); }
|
248
|
-
function reject(value) { resume("throw", value); }
|
249
|
-
function settle(f, v) { if (f(v), q.shift(), q.length)
|
250
|
-
resume(q[0][0], q[0][1]); }
|
251
|
-
}
|
252
|
-
function __asyncDelegator(o) {
|
253
|
-
var i, p;
|
254
|
-
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
255
|
-
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
256
|
-
}
|
257
|
-
function __asyncValues(o) {
|
258
|
-
if (!Symbol.asyncIterator)
|
259
|
-
throw new TypeError("Symbol.asyncIterator is not defined.");
|
260
|
-
var m = o[Symbol.asyncIterator], i;
|
261
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
262
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
263
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
|
264
|
-
}
|
265
|
-
function __makeTemplateObject(cooked, raw) {
|
266
|
-
if (Object.defineProperty) {
|
267
|
-
Object.defineProperty(cooked, "raw", { value: raw });
|
268
|
-
}
|
269
|
-
else {
|
270
|
-
cooked.raw = raw;
|
271
|
-
}
|
272
|
-
return cooked;
|
273
|
-
}
|
274
|
-
;
|
275
|
-
var __setModuleDefault = Object.create ? (function (o, v) {
|
276
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
277
|
-
}) : function (o, v) {
|
278
|
-
o["default"] = v;
|
279
|
-
};
|
280
|
-
function __importStar(mod) {
|
281
|
-
if (mod && mod.__esModule)
|
282
|
-
return mod;
|
283
|
-
var result = {};
|
284
|
-
if (mod != null)
|
285
|
-
for (var k in mod)
|
286
|
-
if (Object.hasOwnProperty.call(mod, k))
|
287
|
-
__createBinding(result, mod, k);
|
288
|
-
__setModuleDefault(result, mod);
|
289
|
-
return result;
|
290
|
-
}
|
291
|
-
function __importDefault(mod) {
|
292
|
-
return (mod && mod.__esModule) ? mod : { default: mod };
|
293
|
-
}
|
294
|
-
function __classPrivateFieldGet(receiver, privateMap) {
|
295
|
-
if (!privateMap.has(receiver)) {
|
296
|
-
throw new TypeError("attempted to get private field on non-instance");
|
297
|
-
}
|
298
|
-
return privateMap.get(receiver);
|
299
|
-
}
|
300
|
-
function __classPrivateFieldSet(receiver, privateMap, value) {
|
301
|
-
if (!privateMap.has(receiver)) {
|
302
|
-
throw new TypeError("attempted to set private field on non-instance");
|
303
|
-
}
|
304
|
-
privateMap.set(receiver, value);
|
305
|
-
return value;
|
306
|
-
}
|
307
|
-
|
308
|
-
var isJsons = function (array) { return Array.isArray(array) &&
|
309
|
-
array.every(function (row) { return typeof row === 'object' && !(row instanceof Array); }); };
|
310
|
-
var isArrays = function (array) { return Array.isArray(array) && array.every(function (row) { return Array.isArray(row); }); };
|
311
|
-
function jsonsHeaders(array) {
|
312
|
-
return Array.from(new Set(array.map(function (item) { return Object.keys(item); }).reduce(function (a, b) { return __spread(a, b); }, [])));
|
313
|
-
}
|
314
|
-
function jsons2arrays(jsons, headers) {
|
315
|
-
headers = headers || jsonsHeaders(jsons);
|
316
|
-
// allow headers to have custom labels, defaulting to having the header data key be the label
|
317
|
-
var headerLabels = headers;
|
318
|
-
var headerKeys = headers;
|
319
|
-
if (isJsons(headers)) {
|
320
|
-
headerLabels = headers.map(function (header) { return header.label; });
|
321
|
-
headerKeys = headers.map(function (header) { return header.key; });
|
322
|
-
}
|
323
|
-
var data = jsons.map(function (object) { return headerKeys.map(function (header) { return (header in object ? object[header] : ''); }); });
|
324
|
-
return __spread([headerLabels], data);
|
325
|
-
}
|
326
|
-
var elementOrEmpty = function (element) { return element || element === 0 ? element : ''; };
|
327
|
-
function joiner(data, delimiter) {
|
328
|
-
if (delimiter === void 0) { delimiter = ','; }
|
329
|
-
return data
|
330
|
-
.map(function (row, index) { return row.map(function (element) { return '"' + elementOrEmpty(element) + '"'; }).join(delimiter); })
|
331
|
-
.join("\n");
|
332
|
-
}
|
333
|
-
function arrays2csv(data, headers, delimiter) {
|
334
|
-
return joiner(headers ? __spread([headers], data) : data, delimiter);
|
335
|
-
}
|
336
|
-
function jsons2csv(data, headers, delimiter) {
|
337
|
-
return joiner(jsons2arrays(data, headers), delimiter);
|
338
|
-
}
|
339
|
-
function string2csv(data, headers, delimiter) {
|
340
|
-
return headers ? headers.join(delimiter) + "\n" + data : data;
|
341
|
-
}
|
342
|
-
function toCSV(data, headers, delimiter) {
|
343
|
-
if (isJsons(data)) {
|
344
|
-
return jsons2csv(data, headers, delimiter);
|
345
|
-
}
|
346
|
-
if (isArrays(data)) {
|
347
|
-
return arrays2csv(data, headers, delimiter);
|
348
|
-
}
|
349
|
-
if (typeof data === 'string') {
|
350
|
-
return string2csv(data, headers, delimiter);
|
351
|
-
}
|
352
|
-
throw new TypeError("Data should be a \"String\", \"Array of arrays\" OR \"Array of objects\" ");
|
353
|
-
}
|
354
|
-
function blob(data, uFEFF, headers, delimiter) {
|
355
|
-
if (uFEFF === void 0) { uFEFF = true; }
|
356
|
-
var csv = toCSV(data, headers, delimiter);
|
357
|
-
return new Blob([uFEFF ? '\uFEFF' : '', csv], { type: 'text/csv' });
|
358
|
-
}
|
359
|
-
function buildURI(data, uFEFF, headers, delimiter) {
|
360
|
-
if (uFEFF === void 0) { uFEFF = true; }
|
361
|
-
return URL.createObjectURL(blob(data, uFEFF, headers, delimiter));
|
362
|
-
}
|
363
|
-
|
364
|
-
var CsvDirective = /** @class */ (function () {
|
365
|
-
function CsvDirective(sanitizer) {
|
366
|
-
this.sanitizer = sanitizer;
|
367
|
-
/** the body of the csv */
|
368
|
-
this.data = [];
|
369
|
-
/** Set the seperator between values */
|
370
|
-
this.delimiter = ',';
|
371
|
-
/** adds a Byte order mark to setup the csv as UTF-8 */
|
372
|
-
this.uFEFF = true;
|
373
|
-
/** filename */
|
374
|
-
this.download = 'data.csv';
|
375
|
-
this.target = this.isIEBrowser() ? '' : '_blank';
|
376
|
-
}
|
377
|
-
Object.defineProperty(CsvDirective.prototype, "filename", {
|
378
|
-
/** Set the filename of the csv. Default is `data.csv` */
|
379
|
-
set: function (a) {
|
380
|
-
this.download = a;
|
381
|
-
},
|
382
|
-
enumerable: false,
|
383
|
-
configurable: true
|
384
|
-
});
|
385
|
-
CsvDirective.prototype.onClick = function () {
|
386
|
-
// IE handling
|
387
|
-
if (this.isIEBrowser()) {
|
388
|
-
var file = blob(this.data, this.uFEFF, this.headers, this.delimiter);
|
389
|
-
window.navigator.msSaveBlob(file, this.download);
|
390
|
-
}
|
391
|
-
};
|
392
|
-
CsvDirective.prototype.isIEBrowser = function () {
|
393
|
-
return !!window.navigator.msSaveOrOpenBlob;
|
394
|
-
};
|
395
|
-
CsvDirective.prototype.ngOnChanges = function () {
|
396
|
-
this.href = this.sanitizer.bypassSecurityTrustResourceUrl(buildURI(this.data, this.uFEFF, this.headers, this.delimiter));
|
397
|
-
};
|
398
|
-
return CsvDirective;
|
399
|
-
}());
|
400
|
-
CsvDirective.decorators = [
|
401
|
-
{ type: core.Directive, args: [{ selector: '[csvLink]' },] }
|
402
|
-
];
|
403
|
-
CsvDirective.ctorParameters = function () { return [
|
404
|
-
{ type: platformBrowser.DomSanitizer }
|
405
|
-
]; };
|
406
|
-
CsvDirective.propDecorators = {
|
407
|
-
data: [{ type: core.Input }],
|
408
|
-
headers: [{ type: core.Input }],
|
409
|
-
delimiter: [{ type: core.Input }],
|
410
|
-
filename: [{ type: core.Input }],
|
411
|
-
uFEFF: [{ type: core.Input }],
|
412
|
-
href: [{ type: core.HostBinding }],
|
413
|
-
download: [{ type: core.HostBinding }],
|
414
|
-
target: [{ type: core.Input }, { type: core.HostBinding }],
|
415
|
-
onClick: [{ type: core.HostListener, args: ['click',] }]
|
416
|
-
};
|
417
|
-
|
418
|
-
var CsvModule = /** @class */ (function () {
|
419
|
-
function CsvModule() {
|
420
|
-
}
|
421
|
-
return CsvModule;
|
422
|
-
}());
|
423
|
-
CsvModule.decorators = [
|
424
|
-
{ type: core.NgModule, args: [{
|
425
|
-
declarations: [CsvDirective],
|
426
|
-
exports: [CsvDirective],
|
427
|
-
},] }
|
428
|
-
];
|
429
|
-
|
430
|
-
/**
|
431
|
-
* Generated bundle index. Do not edit.
|
432
|
-
*/
|
433
|
-
|
434
|
-
exports.CsvDirective = CsvDirective;
|
435
|
-
exports.CsvModule = CsvModule;
|
436
|
-
exports.arrays2csv = arrays2csv;
|
437
|
-
exports.blob = blob;
|
438
|
-
exports.buildURI = buildURI;
|
439
|
-
exports.elementOrEmpty = elementOrEmpty;
|
440
|
-
exports.isArrays = isArrays;
|
441
|
-
exports.isJsons = isJsons;
|
442
|
-
exports.joiner = joiner;
|
443
|
-
exports.jsons2arrays = jsons2arrays;
|
444
|
-
exports.jsons2csv = jsons2csv;
|
445
|
-
exports.jsonsHeaders = jsonsHeaders;
|
446
|
-
exports.string2csv = string2csv;
|
447
|
-
exports.toCSV = toCSV;
|
448
|
-
|
449
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
450
|
-
|
451
|
-
})));
|
452
|
-
//# sourceMappingURL=ctrl-ngx-csv.umd.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"ctrl-ngx-csv.umd.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/util.ts","../../src/lib/csv.directive.ts","../../src/lib/csv.module.ts","../../src/lib/ctrl-ngx-csv.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","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":["Directive","DomSanitizer","Input","HostBinding","HostListener","NgModule"],"mappings":"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"}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/platform-browser")):"function"==typeof define&&define.amd?define("@ctrl/ngx-csv",["exports","@angular/core","@angular/platform-browser"],t):t(((r=r||self).ctrl=r.ctrl||{},r.ctrl["ngx-csv"]={}),r.ng.core,r.ng.platformBrowser)}(this,(function(r,t,e){"use strict";
|
2
|
-
/*! *****************************************************************************
|
3
|
-
Copyright (c) Microsoft Corporation.
|
4
|
-
|
5
|
-
Permission to use, copy, modify, and/or distribute this software for any
|
6
|
-
purpose with or without fee is hereby granted.
|
7
|
-
|
8
|
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
9
|
-
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
10
|
-
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
11
|
-
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
12
|
-
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
13
|
-
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
14
|
-
PERFORMANCE OF THIS SOFTWARE.
|
15
|
-
***************************************************************************** */Object.create;function n(r,t){var e="function"==typeof Symbol&&r[Symbol.iterator];if(!e)return r;var n,o,i=e.call(r),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(r){o={error:r}}finally{try{n&&!n.done&&(e=i.return)&&e.call(i)}finally{if(o)throw o.error}}return a}function o(){for(var r=[],t=0;t<arguments.length;t++)r=r.concat(n(arguments[t]));return r}Object.create;var i=function(r){return Array.isArray(r)&&r.every((function(r){return"object"==typeof r&&!(r instanceof Array)}))},a=function(r){return Array.isArray(r)&&r.every((function(r){return Array.isArray(r)}))};function u(r){return Array.from(new Set(r.map((function(r){return Object.keys(r)})).reduce((function(r,t){return o(r,t)}),[])))}function s(r,t){var e=t=t||u(r),n=t;return i(t)&&(e=t.map((function(r){return r.label})),n=t.map((function(r){return r.key}))),o([e],r.map((function(r){return n.map((function(t){return t in r?r[t]:""}))})))}var c=function(r){return r||0===r?r:""};function f(r,t){return void 0===t&&(t=","),r.map((function(r,e){return r.map((function(r){return'"'+c(r)+'"'})).join(t)})).join("\n")}function l(r,t,e){return f(t?o([t],r):r,e)}function p(r,t,e){return f(s(r,t),e)}function y(r,t,e){return t?t.join(e)+"\n"+r:r}function d(r,t,e){if(i(r))return p(r,t,e);if(a(r))return l(r,t,e);if("string"==typeof r)return y(r,t,e);throw new TypeError('Data should be a "String", "Array of arrays" OR "Array of objects" ')}function v(r,t,e,n){void 0===t&&(t=!0);var o=d(r,e,n);return new Blob([t?"\ufeff":"",o],{type:"text/csv"})}function h(r,t,e,n){return void 0===t&&(t=!0),URL.createObjectURL(v(r,t,e,n))}var m=function(){function r(r){this.sanitizer=r,this.data=[],this.delimiter=",",this.uFEFF=!0,this.download="data.csv",this.target=this.isIEBrowser()?"":"_blank"}return Object.defineProperty(r.prototype,"filename",{set:function(r){this.download=r},enumerable:!1,configurable:!0}),r.prototype.onClick=function(){if(this.isIEBrowser()){var r=v(this.data,this.uFEFF,this.headers,this.delimiter);window.navigator.msSaveBlob(r,this.download)}},r.prototype.isIEBrowser=function(){return!!window.navigator.msSaveOrOpenBlob},r.prototype.ngOnChanges=function(){this.href=this.sanitizer.bypassSecurityTrustResourceUrl(h(this.data,this.uFEFF,this.headers,this.delimiter))},r}();m.decorators=[{type:t.Directive,args:[{selector:"[csvLink]"}]}],m.ctorParameters=function(){return[{type:e.DomSanitizer}]},m.propDecorators={data:[{type:t.Input}],headers:[{type:t.Input}],delimiter:[{type:t.Input}],filename:[{type:t.Input}],uFEFF:[{type:t.Input}],href:[{type:t.HostBinding}],download:[{type:t.HostBinding}],target:[{type:t.Input},{type:t.HostBinding}],onClick:[{type:t.HostListener,args:["click"]}]};var g=function(){};g.decorators=[{type:t.NgModule,args:[{declarations:[m],exports:[m]}]}],r.CsvDirective=m,r.CsvModule=g,r.arrays2csv=l,r.blob=v,r.buildURI=h,r.elementOrEmpty=c,r.isArrays=a,r.isJsons=i,r.joiner=f,r.jsons2arrays=s,r.jsons2csv=p,r.jsonsHeaders=u,r.string2csv=y,r.toCSV=d,Object.defineProperty(r,"__esModule",{value:!0})}));
|
16
|
-
//# sourceMappingURL=ctrl-ngx-csv.umd.min.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","../../src/lib/util.ts","../../src/lib/csv.directive.ts","../../src/lib/csv.module.ts"],"names":["Object","create","__read","o","n","m","Symbol","iterator","r","e","i","call","ar","next","done","push","value","error","__spread","arguments","length","concat","isJsons","array","Array","isArray","every","row","isArrays","jsonsHeaders","from","Set","map","item","keys","reduce","a","b","jsons2arrays","jsons","headers","headerLabels","headerKeys","header","label","key","object","elementOrEmpty","element","joiner","data","delimiter","index","join","arrays2csv","jsons2csv","string2csv","toCSV","TypeError","blob","uFEFF","csv","Blob","type","buildURI","URL","createObjectURL","CsvDirective","sanitizer","this","download","target","isIEBrowser","defineProperty","prototype","onClick","file","window","navigator","msSaveBlob","msSaveOrOpenBlob","ngOnChanges","href","bypassSecurityTrustResourceUrl","Directive","args","selector","DomSanitizer","Input","HostBinding","HostListener","NgModule","declarations","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","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"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"CsvModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"CsvDirective"}],"exports":[{"__symbolic":"reference","name":"CsvDirective"}]}]}],"members":{}},"CsvDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[csvLink]"}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":3}}]}],"headers":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"delimiter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"filename":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"uFEFF":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"href":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":20,"character":3}}]}],"download":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":22,"character":3}}]}],"target":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":23,"character":12}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":24,"character":33}]}],"onClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":26,"character":3},"arguments":["click"]}]}],"isIEBrowser":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}]}},"HeaderObj":{"__symbolic":"interface"},"isJsons":{"__symbolic":"error","message":"Lambda not supported","line":5,"character":23,"module":"./util"},"isArrays":{"__symbolic":"error","message":"Lambda not supported","line":9,"character":24,"module":"./util"},"jsonsHeaders":{"__symbolic":"function","parameters":["array"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"Array"},"member":"from"},"arguments":[{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Set"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"array"},"member":"map"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":15,"character":16,"module":"./util"}]},"member":"reduce"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":15,"character":50,"module":"./util"},[]]}]}]}},"jsons2arrays":{"__symbolic":"function"},"elementOrEmpty":{"__symbolic":"error","message":"Lambda not supported","line":40,"character":30,"module":"./util"},"joiner":{"__symbolic":"function","parameters":["data","delimiter"],"defaults":[null,","],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"data"},"member":"map"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":45,"character":9,"module":"./util"}]},"member":"join"},"arguments":["\n"]}},"arrays2csv":{"__symbolic":"function","parameters":["data","headers","delimiter"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"joiner"},"arguments":[{"__symbolic":"if","condition":{"__symbolic":"reference","name":"headers"},"thenExpression":[{"__symbolic":"reference","name":"headers"},{"__symbolic":"spread","expression":{"__symbolic":"reference","name":"data"}}],"elseExpression":{"__symbolic":"reference","name":"data"}},{"__symbolic":"reference","name":"delimiter"}]}},"jsons2csv":{"__symbolic":"function","parameters":["data","headers","delimiter"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"joiner"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"jsons2arrays"},"arguments":[{"__symbolic":"reference","name":"data"},{"__symbolic":"reference","name":"headers"}]},{"__symbolic":"reference","name":"delimiter"}]}},"string2csv":{"__symbolic":"function","parameters":["data","headers","delimiter"],"value":{"__symbolic":"if","condition":{"__symbolic":"reference","name":"headers"},"thenExpression":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"binop","operator":"+","left":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"headers"},"member":"join"},"arguments":[{"__symbolic":"reference","name":"delimiter"}]},"right":"\n"},"right":{"__symbolic":"reference","name":"data"}},"elseExpression":{"__symbolic":"reference","name":"data"}}},"toCSV":{"__symbolic":"function"},"blob":{"__symbolic":"function"},"buildURI":{"__symbolic":"function","parameters":["data","uFEFF","headers","delimiter"],"defaults":[null,true,null,null],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"URL"},"member":"createObjectURL"},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","name":"blob"},"arguments":[{"__symbolic":"reference","name":"data"},{"__symbolic":"reference","name":"uFEFF"},{"__symbolic":"reference","name":"headers"},{"__symbolic":"reference","name":"delimiter"}]}]}}},"origins":{"CsvModule":"./csv.module","CsvDirective":"./csv.directive","HeaderObj":"./util","isJsons":"./util","isArrays":"./util","jsonsHeaders":"./util","jsons2arrays":"./util","elementOrEmpty":"./util","joiner":"./util","arrays2csv":"./util","jsons2csv":"./util","string2csv":"./util","toCSV":"./util","blob":"./util","buildURI":"./util"},"importAs":"@ctrl/ngx-csv"}
|
package/esm2015/csv.directive.js
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
import { Directive, HostBinding, HostListener, Input } from '@angular/core';
|
2
|
-
import { DomSanitizer } from '@angular/platform-browser';
|
3
|
-
import { blob, buildURI } from './util';
|
4
|
-
export class CsvDirective {
|
5
|
-
constructor(sanitizer) {
|
6
|
-
this.sanitizer = sanitizer;
|
7
|
-
/** the body of the csv */
|
8
|
-
this.data = [];
|
9
|
-
/** Set the seperator between values */
|
10
|
-
this.delimiter = ',';
|
11
|
-
/** adds a Byte order mark to setup the csv as UTF-8 */
|
12
|
-
this.uFEFF = true;
|
13
|
-
/** filename */
|
14
|
-
this.download = 'data.csv';
|
15
|
-
this.target = this.isIEBrowser() ? '' : '_blank';
|
16
|
-
}
|
17
|
-
/** Set the filename of the csv. Default is `data.csv` */
|
18
|
-
set filename(a) {
|
19
|
-
this.download = a;
|
20
|
-
}
|
21
|
-
onClick() {
|
22
|
-
// IE handling
|
23
|
-
if (this.isIEBrowser()) {
|
24
|
-
const file = blob(this.data, this.uFEFF, this.headers, this.delimiter);
|
25
|
-
window.navigator.msSaveBlob(file, this.download);
|
26
|
-
}
|
27
|
-
}
|
28
|
-
isIEBrowser() {
|
29
|
-
return !!window.navigator.msSaveOrOpenBlob;
|
30
|
-
}
|
31
|
-
ngOnChanges() {
|
32
|
-
this.href = this.sanitizer.bypassSecurityTrustResourceUrl(buildURI(this.data, this.uFEFF, this.headers, this.delimiter));
|
33
|
-
}
|
34
|
-
}
|
35
|
-
CsvDirective.decorators = [
|
36
|
-
{ type: Directive, args: [{ selector: '[csvLink]' },] }
|
37
|
-
];
|
38
|
-
CsvDirective.ctorParameters = () => [
|
39
|
-
{ type: DomSanitizer }
|
40
|
-
];
|
41
|
-
CsvDirective.propDecorators = {
|
42
|
-
data: [{ type: Input }],
|
43
|
-
headers: [{ type: Input }],
|
44
|
-
delimiter: [{ type: Input }],
|
45
|
-
filename: [{ type: Input }],
|
46
|
-
uFEFF: [{ type: Input }],
|
47
|
-
href: [{ type: HostBinding }],
|
48
|
-
download: [{ type: HostBinding }],
|
49
|
-
target: [{ type: Input }, { type: HostBinding }],
|
50
|
-
onClick: [{ type: HostListener, args: ['click',] }]
|
51
|
-
};
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3N2LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxZQUFZLEVBQW1CLE1BQU0sMkJBQTJCLENBQUM7QUFFMUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQWEsTUFBTSxRQUFRLENBQUM7QUFHbkQsTUFBTSxPQUFPLFlBQVk7SUFrQnZCLFlBQW9CLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFqQjNDLDBCQUEwQjtRQUNqQixTQUFJLEdBQThELEVBQUUsQ0FBQztRQUc5RSx1Q0FBdUM7UUFDOUIsY0FBUyxHQUFHLEdBQUcsQ0FBQztRQU16Qix3REFBd0Q7UUFDL0MsVUFBSyxHQUFHLElBQUksQ0FBQztRQUV0QixlQUFlO1FBQ0EsYUFBUSxHQUFHLFVBQVUsQ0FBQztRQUNiLFdBQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3RCLENBQUM7SUFYL0MseURBQXlEO0lBQ3pELElBQ0ksUUFBUSxDQUFDLENBQVM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQVNzQixPQUFPO1FBQzVCLGNBQWM7UUFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZFLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7SUFDN0MsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQ3ZELFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzlELENBQUM7SUFDSixDQUFDOzs7WUFyQ0YsU0FBUyxTQUFDLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTs7O1lBSjNCLFlBQVk7OzttQkFPbEIsS0FBSztzQkFFTCxLQUFLO3dCQUVMLEtBQUs7dUJBRUwsS0FBSztvQkFLTCxLQUFLO21CQUNMLFdBQVc7dUJBRVgsV0FBVztxQkFDWCxLQUFLLFlBQUksV0FBVztzQkFHcEIsWUFBWSxTQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbmltcG9ydCB7IGJsb2IsIGJ1aWxkVVJJLCBIZWFkZXJPYmogfSBmcm9tICcuL3V0aWwnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbY3N2TGlua10nIH0pXG5leHBvcnQgY2xhc3MgQ3N2RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgLyoqIHRoZSBib2R5IG9mIHRoZSBjc3YgKi9cbiAgQElucHV0KCkgZGF0YTogc3RyaW5nIHwgc3RyaW5nW11bXSB8IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSB8IGFueVtdID0gW107XG4gIC8qKiBTZXQgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGNzdiAqL1xuICBASW5wdXQoKSBoZWFkZXJzPzogc3RyaW5nW10gfCBIZWFkZXJPYmpbXTtcbiAgLyoqIFNldCB0aGUgc2VwZXJhdG9yIGJldHdlZW4gdmFsdWVzICovXG4gIEBJbnB1dCgpIGRlbGltaXRlciA9ICcsJztcbiAgLyoqIFNldCB0aGUgZmlsZW5hbWUgb2YgdGhlIGNzdi4gRGVmYXVsdCBpcyBgZGF0YS5jc3ZgICovXG4gIEBJbnB1dCgpXG4gIHNldCBmaWxlbmFtZShhOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRvd25sb2FkID0gYTtcbiAgfVxuICAvKiogYWRkcyBhIEJ5dGUgb3JkZXIgbWFyayB0byBzZXR1cCB0aGUgY3N2IGFzIFVURi04ICAqL1xuICBASW5wdXQoKSB1RkVGRiA9IHRydWU7XG4gIEBIb3N0QmluZGluZygpIGhyZWY/OiBTYWZlUmVzb3VyY2VVcmw7XG4gIC8qKiBmaWxlbmFtZSAqL1xuICBASG9zdEJpbmRpbmcoKSBkb3dubG9hZCA9ICdkYXRhLmNzdic7XG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygpIHRhcmdldCA9IHRoaXMuaXNJRUJyb3dzZXIoKSA/ICcnIDogJ19ibGFuayc7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKSBvbkNsaWNrKCkge1xuICAgIC8vIElFIGhhbmRsaW5nXG4gICAgaWYgKHRoaXMuaXNJRUJyb3dzZXIoKSkge1xuICAgICAgY29uc3QgZmlsZSA9IGJsb2IodGhpcy5kYXRhLCB0aGlzLnVGRUZGLCB0aGlzLmhlYWRlcnMsIHRoaXMuZGVsaW1pdGVyKTtcbiAgICAgIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYihmaWxlLCB0aGlzLmRvd25sb2FkKTtcbiAgICB9XG4gIH1cblxuICBpc0lFQnJvd3NlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2I7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmhyZWYgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoXG4gICAgICBidWlsZFVSSSh0aGlzLmRhdGEsIHRoaXMudUZFRkYsIHRoaXMuaGVhZGVycywgdGhpcy5kZWxpbWl0ZXIpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
package/esm2015/csv.module.js
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
import { NgModule } from '@angular/core';
|
2
|
-
import { CsvDirective } from './csv.directive';
|
3
|
-
export class CsvModule {
|
4
|
-
}
|
5
|
-
CsvModule.decorators = [
|
6
|
-
{ type: NgModule, args: [{
|
7
|
-
declarations: [CsvDirective],
|
8
|
-
exports: [CsvDirective],
|
9
|
-
},] }
|
10
|
-
];
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3N2Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU0vQyxNQUFNLE9BQU8sU0FBUzs7O1lBSnJCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQzVCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQzthQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENzdkRpcmVjdGl2ZSB9IGZyb20gJy4vY3N2LmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NzdkRpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtDc3ZEaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBDc3ZNb2R1bGUge31cbiJdfQ==
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"ctrl-ngx-csv.js","sources":["../../src/lib/util.ts","../../src/lib/csv.directive.ts","../../src/lib/csv.module.ts","../../src/lib/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":[],"mappings":"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"}
|