@dealpos-npm/ng-dealpos-library 4.1.9 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,2 @@
1
1
  export * from "./src/custom-dialog-config/modal-material-config";
2
2
  export * from "./src/custom-dialog/modal-material.component";
3
- export * from "./src/custom-dialog-config/header-type.enum";
@@ -9,9 +9,10 @@ export declare class UppyComponent {
9
9
  sampleUrl: string;
10
10
  subtitle: string;
11
11
  showSample: boolean;
12
+ showSubtitle: boolean;
12
13
  uppyCoreConfiguration: import("@angular/core").InputSignal<any>;
13
14
  dashboardPropsConfiguration: import("@angular/core").InputSignal<any>;
14
- fileUploaded: EventEmitter<File | Blob>;
15
+ fileUploaded: EventEmitter<Blob | File>;
15
16
  fileRemoved: EventEmitter<void>;
16
17
  onParser: EventEmitter<any>;
17
18
  http: HttpService;
@@ -1,4 +1,3 @@
1
1
  export * from "./src/custom-dialog-config/modal-material-config";
2
2
  export * from "./src/custom-dialog/modal-material.component";
3
- export * from "./src/custom-dialog-config/header-type.enum";
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYWxwb3MtbnBtL25nLWRlYWxwb3MtbGlicmFyeS9jb21wb25lbnRzL2RpYWxvZy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDZDQUE2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vc3JjL2N1c3RvbS1kaWFsb2ctY29uZmlnL21vZGFsLW1hdGVyaWFsLWNvbmZpZ1wiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9zcmMvY3VzdG9tLWRpYWxvZy9tb2RhbC1tYXRlcmlhbC5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2N1c3RvbS1kaWFsb2ctY29uZmlnL2hlYWRlci10eXBlLmVudW1cIjsiXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYWxwb3MtbnBtL25nLWRlYWxwb3MtbGlicmFyeS9jb21wb25lbnRzL2RpYWxvZy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw4Q0FBOEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3NyYy9jdXN0b20tZGlhbG9nLWNvbmZpZy9tb2RhbC1tYXRlcmlhbC1jb25maWdcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vc3JjL2N1c3RvbS1kaWFsb2cvbW9kYWwtbWF0ZXJpYWwuY29tcG9uZW50XCI7Il19
@@ -17,6 +17,7 @@ export class UppyComponent {
17
17
  this.sampleUrl = '';
18
18
  this.subtitle = '';
19
19
  this.showSample = true;
20
+ this.showSubtitle = true;
20
21
  this.uppyCoreConfiguration = input();
21
22
  this.dashboardPropsConfiguration = input();
22
23
  this.fileUploaded = new EventEmitter();
@@ -44,6 +45,7 @@ export class UppyComponent {
44
45
  this.uppy.on('upload', (_, uppyFiles) => {
45
46
  const file = uppyFiles[0]?.data;
46
47
  this.showSample = false;
48
+ this.showSubtitle = false;
47
49
  this.fileUploaded.emit(file);
48
50
  this.file.set(uppyFiles[0].data);
49
51
  Papa.parse(file, {
@@ -71,6 +73,7 @@ export class UppyComponent {
71
73
  });
72
74
  this.uppy.on('file-removed', () => {
73
75
  this.showSample = true;
76
+ this.showSubtitle = true;
74
77
  this.fileRemoved.emit();
75
78
  this.file.set(null);
76
79
  this.rowSummary.set({ rowCount: 0, rowEmpty: 0 });
@@ -91,11 +94,11 @@ export class UppyComponent {
91
94
  return `${size.toFixed(decimalPoints)} ${UppyComponent.sizes[i]}`;
92
95
  }
93
96
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: UppyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: UppyComponent, isStandalone: true, selector: "POS-uppy", inputs: { sampleUrl: { classPropertyName: "sampleUrl", publicName: "sampleUrl", isSignal: false, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: false, isRequired: false, transformFunction: null }, uppyCoreConfiguration: { classPropertyName: "uppyCoreConfiguration", publicName: "uppyCoreConfiguration", isSignal: true, isRequired: false, transformFunction: null }, dashboardPropsConfiguration: { classPropertyName: "dashboardPropsConfiguration", publicName: "dashboardPropsConfiguration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileUploaded: "fileUploaded", fileRemoved: "fileRemoved", onParser: "onParser" }, ngImport: i0, template: "<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>", styles: ["::ng-deep .uppy-Dashboard-AddFiles-info{display:none!important}::ng-deep .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;max-width:600px;margin-top:15px;padding-top:0;overflow-y:visible}.sample,.subtitle{top:56%;width:100%;text-align:center}.top-58{top:61%}\n"], dependencies: [{ kind: "ngmodule", type: UppyAngularDashboardModule }, { kind: "component", type: i1.DashboardComponent, selector: "uppy-dashboard", inputs: ["uppy", "props"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
97
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: UppyComponent, isStandalone: true, selector: "POS-uppy", inputs: { sampleUrl: { classPropertyName: "sampleUrl", publicName: "sampleUrl", isSignal: false, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: false, isRequired: false, transformFunction: null }, uppyCoreConfiguration: { classPropertyName: "uppyCoreConfiguration", publicName: "uppyCoreConfiguration", isSignal: true, isRequired: false, transformFunction: null }, dashboardPropsConfiguration: { classPropertyName: "dashboardPropsConfiguration", publicName: "dashboardPropsConfiguration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileUploaded: "fileUploaded", fileRemoved: "fileRemoved", onParser: "onParser" }, ngImport: i0, template: "<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle && showSubtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>", styles: ["::ng-deep .uppy-Dashboard-AddFiles-info{display:none!important}::ng-deep .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;max-width:600px;margin-top:15px;padding-top:0;overflow-y:visible}.sample,.subtitle{top:56%;width:100%;text-align:center}.top-58{top:61%}\n"], dependencies: [{ kind: "ngmodule", type: UppyAngularDashboardModule }, { kind: "component", type: i1.DashboardComponent, selector: "uppy-dashboard", inputs: ["uppy", "props"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
95
98
  }
96
99
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: UppyComponent, decorators: [{
97
100
  type: Component,
98
- args: [{ selector: 'POS-uppy', standalone: true, imports: [UppyAngularDashboardModule, CommonModule], template: "<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>", styles: ["::ng-deep .uppy-Dashboard-AddFiles-info{display:none!important}::ng-deep .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;max-width:600px;margin-top:15px;padding-top:0;overflow-y:visible}.sample,.subtitle{top:56%;width:100%;text-align:center}.top-58{top:61%}\n"] }]
101
+ args: [{ selector: 'POS-uppy', standalone: true, imports: [UppyAngularDashboardModule, CommonModule], template: "<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle && showSubtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>", styles: ["::ng-deep .uppy-Dashboard-AddFiles-info{display:none!important}::ng-deep .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;max-width:600px;margin-top:15px;padding-top:0;overflow-y:visible}.sample,.subtitle{top:56%;width:100%;text-align:center}.top-58{top:61%}\n"] }]
99
102
  }], ctorParameters: () => [], propDecorators: { sampleUrl: [{
100
103
  type: Input
101
104
  }], subtitle: [{
@@ -107,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
107
110
  }], onParser: [{
108
111
  type: Output
109
112
  }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBweS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZWFscG9zLW5wbS9uZy1kZWFscG9zLWxpYnJhcnkvY29tcG9uZW50cy91cHB5LWZpbGUtdXBsb2FkL3NyYy91cHB5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYWxwb3MtbnBtL25nLWRlYWxwb3MtbGlicmFyeS9jb21wb25lbnRzL3VwcHktZmlsZS11cGxvYWQvc3JjL3VwcHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsQyxPQUFPLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDOzs7O0FBUzdCLE1BQU0sT0FBTyxhQUFhO2FBaUJULFVBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFVLEFBQXJFLENBQXFFO2FBQzFFLGFBQVEsR0FBRyxJQUFJLEFBQVAsQ0FBTztJQWlCOUI7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LENBQUM7WUFDZixPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO1FBRUQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDeEUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDekQsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25FLENBQUM7OEdBOUZVLGFBQWE7a0dBQWIsYUFBYSxzeEJDakIxQixnOEJBaUJNLDZXREpNLDBCQUEwQix5SUFBRSxZQUFZOzsyRkFJdkMsYUFBYTtrQkFQekIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQLENBQUMsMEJBQTBCLEVBQUUsWUFBWSxDQUFDO3dEQUsxQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIGlucHV0LCBJbnB1dCwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udmVydENzdlNlcnZpY2UgfSBmcm9tICdAZGVhbHBvcy1ucG0vbmctZGVhbHBvcy1saWJyYXJ5L3NlcnZpY2VzL2Nzdi1wYXJzZXInO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJ0BkZWFscG9zLW5wbS9uZy1kZWFscG9zLWxpYnJhcnkvc2VydmljZXMvaHR0cCc7XHJcbmltcG9ydCB7IFVwcHlBbmd1bGFyRGFzaGJvYXJkTW9kdWxlIH0gZnJvbSAnQHVwcHkvYW5ndWxhcic7XHJcbmltcG9ydCB7IFVwcHkgfSBmcm9tICdAdXBweS9jb3JlJztcclxuaW1wb3J0ICdAdXBweS9jb3JlL2Rpc3Qvc3R5bGUubWluLmNzcyc7XHJcbmltcG9ydCAnQHVwcHkvZGFzaGJvYXJkL2Rpc3Qvc3R5bGUubWluLmNzcyc7XHJcbmltcG9ydCBQYXBhIGZyb20gJ3BhcGFwYXJzZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1BPUy11cHB5JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtVcHB5QW5ndWxhckRhc2hib2FyZE1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBweS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3VwcHkuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcHB5Q29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzYW1wbGVVcmw6IHN0cmluZyA9ICcnXHJcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZyA9ICcnXHJcbiAgc2hvd1NhbXBsZTogYm9vbGVhbiA9IHRydWVcclxuICB1cHB5Q29yZUNvbmZpZ3VyYXRpb24gPSBpbnB1dDxhbnk+KCk7XHJcbiAgZGFzaGJvYXJkUHJvcHNDb25maWd1cmF0aW9uID0gaW5wdXQ8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBmaWxlVXBsb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEJsb2IgfCBGaWxlPigpXHJcbiAgQE91dHB1dCgpIGZpbGVSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXHJcbiAgQE91dHB1dCgpIG9uUGFyc2VyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcclxuXHJcbiAgaHR0cCA9IGluamVjdChIdHRwU2VydmljZSlcclxuICBjc3ZQYXJzZXIgPSBpbmplY3QoQ29udmVydENzdlNlcnZpY2UpXHJcblxyXG4gIHJvd1N1bW1hcnkgPSBzaWduYWw8e3Jvd0NvdW50OiBudW1iZXIsIHJvd0VtcHR5OiBudW1iZXJ9Pih7cm93Q291bnQ6IDAsIHJvd0VtcHR5OiAwfSlcclxuXHJcbiAgZmlsZSA9IHNpZ25hbDxGaWxlIHwgbnVsbD4obnVsbClcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2l6ZXMgPSBbJ0J5dGVzJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ10gYXMgY29uc3RcclxuICBwcml2YXRlIHN0YXRpYyBraWxvYnl0ZSA9IDEwMjRcclxuXHJcbiAgdXBweTogVXBweSA9IG5ldyBVcHB5KHsgXHJcbiAgICBkZWJ1ZzogdHJ1ZSwgXHJcbiAgICBhdXRvUHJvY2VlZDogdHJ1ZSwgXHJcbiAgICBhbGxvd011bHRpcGxlVXBsb2FkQmF0Y2hlczogZmFsc2UsXHJcbiAgICByZXN0cmljdGlvbnM6IHtcclxuICAgICAgYWxsb3dlZEZpbGVUeXBlczogWycuY3N2J10sXHJcbiAgICAgIG1heFRvdGFsRmlsZVNpemU6IDEwMDAwMDBcclxuICAgIH1cclxuICB9KTtcclxuICBcclxuICBkYXNoYm9hcmRQcm9wcyA9IHtcclxuICAgIGhpZGVVcGxvYWRCdXR0b246IHRydWUsXHJcbiAgICBoZWlnaHQ6IDM1MFxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBlZmZlY3QoKCkgPT4gdGhpcy51cHB5LnNldE9wdGlvbnMoey4uLnRoaXMudXBweUNvcmVDb25maWd1cmF0aW9uKCl9KSlcclxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLmRhc2hib2FyZFByb3BzID0gKHsuLi50aGlzLmRhc2hib2FyZFByb3BzLCAuLi50aGlzLmRhc2hib2FyZFByb3BzQ29uZmlndXJhdGlvbigpfSkpXHJcblxyXG4gICAgdGhpcy51cHB5Lm9uKCd1cGxvYWQnLCAoXywgdXBweUZpbGVzKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSB1cHB5RmlsZXNbMF0/LmRhdGEgYXMgRmlsZVxyXG4gICAgICB0aGlzLnNob3dTYW1wbGUgPSBmYWxzZVxyXG5cclxuXHJcbiAgICAgIHRoaXMuZmlsZVVwbG9hZGVkLmVtaXQoZmlsZSlcclxuICAgICAgdGhpcy5maWxlLnNldCh1cHB5RmlsZXNbMF0uZGF0YSBhcyBGaWxlKVxyXG5cclxuICAgICAgUGFwYS5wYXJzZShmaWxlLCB7XHJcbiAgICAgICAgc2tpcEVtcHR5TGluZXM6ICdncmVlZHknLFxyXG4gICAgICAgIGhlYWRlcjogdHJ1ZSxcclxuICAgICAgICBiZWZvcmVGaXJzdENodW5rOiAoX2NodW5rKSA9PiB7XHJcbiAgXHJcbiAgICAgICAgICBjb25zdCB3aXRoT3V0SGVhZGVyID0gX2NodW5rLnNwbGl0KC9cXHI/XFxuLykuc2xpY2UoMSlcclxuICAgICAgICAgIGlmICh3aXRoT3V0SGVhZGVyW3dpdGhPdXRIZWFkZXIubGVuZ3RoIC0gMV0gPT09ICcnKSB3aXRoT3V0SGVhZGVyLnBvcCgpXHJcbiAgICAgICAgICB0aGlzLnJvd1N1bW1hcnkudXBkYXRlKHJlcyA9PiAoey4uLnJlcywgcm93Q291bnQ6IHdpdGhPdXRIZWFkZXIubGVuZ3RofSkpXHJcbiAgICAgICAgICB3aXRoT3V0SGVhZGVyLmZvckVhY2gocm93ID0+IHtcclxuICBcclxuICAgICAgICAgICAgY29uc3QgZW1wdHlSb3cgPSByb3cuc3BsaXQoJywnKS5ldmVyeShyb3cgPT4gcm93ID09PSAnJylcclxuICBcclxuICAgICAgICAgICAgaWYgKGVtcHR5Um93KSB0aGlzLnJvd1N1bW1hcnkudXBkYXRlKHJlcyA9PiAoey4uLnJlcywgcm93RW1wdHk6IHJlcy5yb3dFbXB0eSArIDF9KSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICByZXR1cm4gX2NodW5rOyAvLyBSZXR1cm4gdGhlIG9yaWdpbmFsIGNodW5rIHRvIGNvbnRpbnVlIHBhcnNpbmdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yKGVycm9yLCBmaWxlKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnRVJST1InLCBlcnJvciwgZmlsZSlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAocmVzdWx0cywgX2ZpbGUpID0+IHtcclxuICAgICAgICAgIHRoaXMub25QYXJzZXIuZW1pdChyZXN1bHRzLmRhdGEpXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy51cHB5Lm9uKCdmaWxlLXJlbW92ZWQnLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvd1NhbXBsZSA9IHRydWVcclxuICAgICAgdGhpcy5maWxlUmVtb3ZlZC5lbWl0KClcclxuICAgICAgdGhpcy5maWxlLnNldChudWxsKVxyXG4gICAgICB0aGlzLnJvd1N1bW1hcnkuc2V0KHtyb3dDb3VudDogMCwgcm93RW1wdHk6IDB9KVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0cyBhIGdpdmVuIG51bWJlciBvZiBieXRlcyBpbnRvIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSBieXRlcyBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGNvbnZlcnQuXHJcbiAgICogQHBhcmFtIGRlY2ltYWxQb2ludHMgVGhlIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyB0byBkaXNwbGF5LiBEZWZhdWx0cyB0byAyLlxyXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIGluIHRoZSBmb3JtIG9mIFwiWC5YWCBbdW5pdF1cIiB3aGVyZSBYIGlzIHRoZSBudW1lcmljYWwgdmFsdWUgYW5kIHVuaXQgaXMgdGhlIGFwcHJvcHJpYXRlIHVuaXQgb2YgbWVhc3VyZW1lbnQgKEJ5dGVzLCBLQiwgTUIsIEdCLCBldGMuKS5cclxuICAgKi9cclxuICBmb3JtYXRGaWxlU2l6ZShieXRlczogbnVtYmVyLCBkZWNpbWFsUG9pbnRzID0gMik6IHN0cmluZyB7XHJcbiAgICBpZihieXRlcyA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gYDAgYnl0ZXNgXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coVXBweUNvbXBvbmVudC5raWxvYnl0ZSkpXHJcbiAgICBjb25zdCBzaXplID0gKGJ5dGVzIC8gTWF0aC5wb3coVXBweUNvbXBvbmVudC5raWxvYnl0ZSxpKSlcclxuICAgIHJldHVybiBgJHtzaXplLnRvRml4ZWQoZGVjaW1hbFBvaW50cyl9ICR7VXBweUNvbXBvbmVudC5zaXplc1tpXX1gXHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiPlxyXG4gICAgPHVwcHktZGFzaGJvYXJkIFt1cHB5XT1cInVwcHlcIiBbcHJvcHNdPVwiZGFzaGJvYXJkUHJvcHNcIj4gPC91cHB5LWRhc2hib2FyZD5cclxuICAgIDxzbWFsbCAqbmdJZj1cInN1YnRpdGxlXCIgY2xhc3M9XCJzdWJ0aXRsZSBwb3NpdGlvbi1hYnNvbHV0ZVwiPnt7c3VidGl0bGV9fTwvc21hbGw+XHJcbiAgICA8YSAqbmdJZj1cInNhbXBsZVVybCAmJiBzaG93U2FtcGxlXCIgY2xhc3M9XCJzYW1wbGUgcG9zaXRpb24tYWJzb2x1dGVcIiBbY2xhc3MudG9wLTU4XT1cInN1YnRpdGxlXCIgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgW2hyZWZdPVwic2FtcGxlVXJsXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1kb3dubG9hZCBtcy0zXCI+PC9pPiBEb3dubG9hZCBUZW1wbGF0ZVxyXG4gICAgPC9hPlxyXG5cclxuICAgIEBpZiAoZmlsZSgpICYmIGZpbGUoKT8udHlwZSA9PT0gJ3RleHQvY3N2Jykge1xyXG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yXCIgc3R5bGU9XCJtYXJnaW46IDFyZW0gMCAwIDA7XCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwiYWxlcnQtaGVhZGluZ1wiPkNTViBGaWxlIENvbnRlbnQgU3VtbWFyeTwvaDQ+XHJcbiAgICAgICAgPGhyPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiZnMtNiBtLTBcIj57e3Jvd1N1bW1hcnkoKS5yb3dDb3VudH19IHJvd3MgZm91bmQgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd1N1bW1hcnkoKS5yb3dFbXB0eSA+IDBcIj4tXHJcbiAgICAgICAgICAgICAgICB7e3Jvd1N1bW1hcnkoKS5yb3dFbXB0eX19IGVtcHR5IGluIHRoZSBDU1YgeW91IHVwbG9hZGVkPC9uZy1jb250YWluZXI+PC9wPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgfVxyXG48L2Rpdj4iXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBweS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZWFscG9zLW5wbS9uZy1kZWFscG9zLWxpYnJhcnkvY29tcG9uZW50cy91cHB5LWZpbGUtdXBsb2FkL3NyYy91cHB5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYWxwb3MtbnBtL25nLWRlYWxwb3MtbGlicmFyeS9jb21wb25lbnRzL3VwcHktZmlsZS11cGxvYWQvc3JjL3VwcHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsQyxPQUFPLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDOzs7O0FBUzdCLE1BQU0sT0FBTyxhQUFhO2FBa0JULFVBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFVLEFBQXJFLENBQXFFO2FBQzFFLGFBQVEsR0FBRyxJQUFJLEFBQVAsQ0FBTztJQWlCOUI7UUFuQ1MsY0FBUyxHQUFXLEVBQUUsQ0FBQTtRQUN0QixhQUFRLEdBQVcsRUFBRSxDQUFBO1FBQzlCLGVBQVUsR0FBWSxJQUFJLENBQUE7UUFDMUIsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDN0IsMEJBQXFCLEdBQUcsS0FBSyxFQUFPLENBQUM7UUFDckMsZ0NBQTJCLEdBQUcsS0FBSyxFQUFPLENBQUM7UUFDakMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFBO1FBQzlDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQTtRQUN0QyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQTtRQUU1QyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzFCLGNBQVMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUVyQyxlQUFVLEdBQUcsTUFBTSxDQUF1QyxFQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUE7UUFFckYsU0FBSSxHQUFHLE1BQU0sQ0FBYyxJQUFJLENBQUMsQ0FBQTtRQUtoQyxTQUFJLEdBQVMsSUFBSSxJQUFJLENBQUM7WUFDcEIsS0FBSyxFQUFFLElBQUk7WUFDWCxXQUFXLEVBQUUsSUFBSTtZQUNqQiwwQkFBMEIsRUFBRSxLQUFLO1lBQ2pDLFlBQVksRUFBRTtnQkFDWixnQkFBZ0IsRUFBRSxDQUFDLE1BQU0sQ0FBQztnQkFDMUIsZ0JBQWdCLEVBQUUsT0FBTzthQUMxQjtTQUNGLENBQUMsQ0FBQztRQUVILG1CQUFjLEdBQUc7WUFDZixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLE1BQU0sRUFBRSxHQUFHO1NBQ1osQ0FBQTtRQUdDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFDLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUE7UUFDckUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxFQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQywyQkFBMkIsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXJHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRTtZQUN0QyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBWSxDQUFBO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFBO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO1lBR3pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFZLENBQUMsQ0FBQTtZQUV4QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDZixjQUFjLEVBQUUsUUFBUTtnQkFDeEIsTUFBTSxFQUFFLElBQUk7Z0JBQ1osZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFFM0IsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ3BELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRTt3QkFBRSxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUE7b0JBQ3ZFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFBO29CQUN6RSxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO3dCQUUxQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQTt3QkFFeEQsSUFBSSxRQUFROzRCQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQTtvQkFDckYsQ0FBQyxDQUFDLENBQUE7b0JBQ0YsT0FBTyxNQUFNLENBQUMsQ0FBQyxnREFBZ0Q7Z0JBQ2pFLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJO29CQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDbkMsQ0FBQztnQkFDRCxRQUFRLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDbEMsQ0FBQzthQUNGLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtZQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtZQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtZQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQTtRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxLQUFhLEVBQUUsYUFBYSxHQUFHLENBQUM7UUFDN0MsSUFBRyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDZixPQUFPLFNBQVMsQ0FBQTtRQUNsQixDQUFDO1FBRUQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDeEUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDekQsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ25FLENBQUM7OEdBakdVLGFBQWE7a0dBQWIsYUFBYSxzeEJDakIxQixnOUJBaUJNLDZXREpNLDBCQUEwQix5SUFBRSxZQUFZOzsyRkFJdkMsYUFBYTtrQkFQekIsU0FBUzsrQkFDRSxVQUFVLGNBQ1IsSUFBSSxXQUNQLENBQUMsMEJBQTBCLEVBQUUsWUFBWSxDQUFDO3dEQUsxQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0ksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIGlucHV0LCBJbnB1dCwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udmVydENzdlNlcnZpY2UgfSBmcm9tICdAZGVhbHBvcy1ucG0vbmctZGVhbHBvcy1saWJyYXJ5L3NlcnZpY2VzL2Nzdi1wYXJzZXInO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJ0BkZWFscG9zLW5wbS9uZy1kZWFscG9zLWxpYnJhcnkvc2VydmljZXMvaHR0cCc7XHJcbmltcG9ydCB7IFVwcHlBbmd1bGFyRGFzaGJvYXJkTW9kdWxlIH0gZnJvbSAnQHVwcHkvYW5ndWxhcic7XHJcbmltcG9ydCB7IFVwcHkgfSBmcm9tICdAdXBweS9jb3JlJztcclxuaW1wb3J0ICdAdXBweS9jb3JlL2Rpc3Qvc3R5bGUubWluLmNzcyc7XHJcbmltcG9ydCAnQHVwcHkvZGFzaGJvYXJkL2Rpc3Qvc3R5bGUubWluLmNzcyc7XHJcbmltcG9ydCBQYXBhIGZyb20gJ3BhcGFwYXJzZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ1BPUy11cHB5JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtVcHB5QW5ndWxhckRhc2hib2FyZE1vZHVsZSwgQ29tbW9uTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXBweS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3VwcHkuY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVcHB5Q29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzYW1wbGVVcmw6IHN0cmluZyA9ICcnXHJcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZyA9ICcnXHJcbiAgc2hvd1NhbXBsZTogYm9vbGVhbiA9IHRydWVcclxuICBzaG93U3VidGl0bGU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHVwcHlDb3JlQ29uZmlndXJhdGlvbiA9IGlucHV0PGFueT4oKTtcclxuICBkYXNoYm9hcmRQcm9wc0NvbmZpZ3VyYXRpb24gPSBpbnB1dDxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGZpbGVVcGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QmxvYiB8IEZpbGU+KClcclxuICBAT3V0cHV0KCkgZmlsZVJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KClcclxuICBAT3V0cHV0KCkgb25QYXJzZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxyXG5cclxuICBodHRwID0gaW5qZWN0KEh0dHBTZXJ2aWNlKVxyXG4gIGNzdlBhcnNlciA9IGluamVjdChDb252ZXJ0Q3N2U2VydmljZSlcclxuXHJcbiAgcm93U3VtbWFyeSA9IHNpZ25hbDx7cm93Q291bnQ6IG51bWJlciwgcm93RW1wdHk6IG51bWJlcn0+KHtyb3dDb3VudDogMCwgcm93RW1wdHk6IDB9KVxyXG5cclxuICBmaWxlID0gc2lnbmFsPEZpbGUgfCBudWxsPihudWxsKVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBzaXplcyA9IFsnQnl0ZXMnLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXSBhcyBjb25zdFxyXG4gIHByaXZhdGUgc3RhdGljIGtpbG9ieXRlID0gMTAyNFxyXG5cclxuICB1cHB5OiBVcHB5ID0gbmV3IFVwcHkoeyBcclxuICAgIGRlYnVnOiB0cnVlLCBcclxuICAgIGF1dG9Qcm9jZWVkOiB0cnVlLCBcclxuICAgIGFsbG93TXVsdGlwbGVVcGxvYWRCYXRjaGVzOiBmYWxzZSxcclxuICAgIHJlc3RyaWN0aW9uczoge1xyXG4gICAgICBhbGxvd2VkRmlsZVR5cGVzOiBbJy5jc3YnXSxcclxuICAgICAgbWF4VG90YWxGaWxlU2l6ZTogMTAwMDAwMFxyXG4gICAgfVxyXG4gIH0pO1xyXG4gIFxyXG4gIGRhc2hib2FyZFByb3BzID0ge1xyXG4gICAgaGlkZVVwbG9hZEJ1dHRvbjogdHJ1ZSxcclxuICAgIGhlaWdodDogMzUwXHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGVmZmVjdCgoKSA9PiB0aGlzLnVwcHkuc2V0T3B0aW9ucyh7Li4udGhpcy51cHB5Q29yZUNvbmZpZ3VyYXRpb24oKX0pKVxyXG4gICAgZWZmZWN0KCgpID0+IHRoaXMuZGFzaGJvYXJkUHJvcHMgPSAoey4uLnRoaXMuZGFzaGJvYXJkUHJvcHMsIC4uLnRoaXMuZGFzaGJvYXJkUHJvcHNDb25maWd1cmF0aW9uKCl9KSlcclxuXHJcbiAgICB0aGlzLnVwcHkub24oJ3VwbG9hZCcsIChfLCB1cHB5RmlsZXMpID0+IHtcclxuICAgICAgY29uc3QgZmlsZSA9IHVwcHlGaWxlc1swXT8uZGF0YSBhcyBGaWxlXHJcbiAgICAgIHRoaXMuc2hvd1NhbXBsZSA9IGZhbHNlXHJcbiAgICAgIHRoaXMuc2hvd1N1YnRpdGxlID0gZmFsc2VcclxuXHJcblxyXG4gICAgICB0aGlzLmZpbGVVcGxvYWRlZC5lbWl0KGZpbGUpXHJcbiAgICAgIHRoaXMuZmlsZS5zZXQodXBweUZpbGVzWzBdLmRhdGEgYXMgRmlsZSlcclxuXHJcbiAgICAgIFBhcGEucGFyc2UoZmlsZSwge1xyXG4gICAgICAgIHNraXBFbXB0eUxpbmVzOiAnZ3JlZWR5JyxcclxuICAgICAgICBoZWFkZXI6IHRydWUsXHJcbiAgICAgICAgYmVmb3JlRmlyc3RDaHVuazogKF9jaHVuaykgPT4ge1xyXG4gIFxyXG4gICAgICAgICAgY29uc3Qgd2l0aE91dEhlYWRlciA9IF9jaHVuay5zcGxpdCgvXFxyP1xcbi8pLnNsaWNlKDEpXHJcbiAgICAgICAgICBpZiAod2l0aE91dEhlYWRlclt3aXRoT3V0SGVhZGVyLmxlbmd0aCAtIDFdID09PSAnJykgd2l0aE91dEhlYWRlci5wb3AoKVxyXG4gICAgICAgICAgdGhpcy5yb3dTdW1tYXJ5LnVwZGF0ZShyZXMgPT4gKHsuLi5yZXMsIHJvd0NvdW50OiB3aXRoT3V0SGVhZGVyLmxlbmd0aH0pKVxyXG4gICAgICAgICAgd2l0aE91dEhlYWRlci5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgXHJcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5Um93ID0gcm93LnNwbGl0KCcsJykuZXZlcnkocm93ID0+IHJvdyA9PT0gJycpXHJcbiAgXHJcbiAgICAgICAgICAgIGlmIChlbXB0eVJvdykgdGhpcy5yb3dTdW1tYXJ5LnVwZGF0ZShyZXMgPT4gKHsuLi5yZXMsIHJvd0VtcHR5OiByZXMucm93RW1wdHkgKyAxfSkpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgcmV0dXJuIF9jaHVuazsgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBjaHVuayB0byBjb250aW51ZSBwYXJzaW5nXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcihlcnJvciwgZmlsZSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0VSUk9SJywgZXJyb3IsIGZpbGUpXHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKHJlc3VsdHMsIF9maWxlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uUGFyc2VyLmVtaXQocmVzdWx0cy5kYXRhKVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMudXBweS5vbignZmlsZS1yZW1vdmVkJywgKCkgPT4ge1xyXG4gICAgICB0aGlzLnNob3dTYW1wbGUgPSB0cnVlXHJcbiAgICAgIHRoaXMuc2hvd1N1YnRpdGxlID0gdHJ1ZVxyXG4gICAgICB0aGlzLmZpbGVSZW1vdmVkLmVtaXQoKVxyXG4gICAgICB0aGlzLmZpbGUuc2V0KG51bGwpXHJcbiAgICAgIHRoaXMucm93U3VtbWFyeS5zZXQoe3Jvd0NvdW50OiAwLCByb3dFbXB0eTogMH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIGEgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIGludG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuXHJcbiAgICogQHBhcmFtIGJ5dGVzIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gY29udmVydC5cclxuICAgKiBAcGFyYW0gZGVjaW1hbFBvaW50cyBUaGUgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIHRvIGRpc3BsYXkuIERlZmF1bHRzIHRvIDIuXHJcbiAgICogQHJldHVybnMgQSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YgXCJYLlhYIFt1bml0XVwiIHdoZXJlIFggaXMgdGhlIG51bWVyaWNhbCB2YWx1ZSBhbmQgdW5pdCBpcyB0aGUgYXBwcm9wcmlhdGUgdW5pdCBvZiBtZWFzdXJlbWVudCAoQnl0ZXMsIEtCLCBNQiwgR0IsIGV0Yy4pLlxyXG4gICAqL1xyXG4gIGZvcm1hdEZpbGVTaXplKGJ5dGVzOiBudW1iZXIsIGRlY2ltYWxQb2ludHMgPSAyKTogc3RyaW5nIHtcclxuICAgIGlmKGJ5dGVzID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBgMCBieXRlc2BcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhVcHB5Q29tcG9uZW50LmtpbG9ieXRlKSlcclxuICAgIGNvbnN0IHNpemUgPSAoYnl0ZXMgLyBNYXRoLnBvdyhVcHB5Q29tcG9uZW50LmtpbG9ieXRlLGkpKVxyXG4gICAgcmV0dXJuIGAke3NpemUudG9GaXhlZChkZWNpbWFsUG9pbnRzKX0gJHtVcHB5Q29tcG9uZW50LnNpemVzW2ldfWBcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlXCI+XHJcbiAgICA8dXBweS1kYXNoYm9hcmQgW3VwcHldPVwidXBweVwiIFtwcm9wc109XCJkYXNoYm9hcmRQcm9wc1wiPiA8L3VwcHktZGFzaGJvYXJkPlxyXG4gICAgPHNtYWxsICpuZ0lmPVwic3VidGl0bGUgJiYgc2hvd1N1YnRpdGxlXCIgY2xhc3M9XCJzdWJ0aXRsZSBwb3NpdGlvbi1hYnNvbHV0ZVwiPnt7c3VidGl0bGV9fTwvc21hbGw+XHJcbiAgICA8YSAqbmdJZj1cInNhbXBsZVVybCAmJiBzaG93U2FtcGxlXCIgY2xhc3M9XCJzYW1wbGUgcG9zaXRpb24tYWJzb2x1dGVcIiBbY2xhc3MudG9wLTU4XT1cInN1YnRpdGxlXCIgcm9sZT1cImJ1dHRvblwiXHJcbiAgICAgICAgW2hyZWZdPVwic2FtcGxlVXJsXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1kb3dubG9hZCBtcy0zXCI+PC9pPiBEb3dubG9hZCBUZW1wbGF0ZVxyXG4gICAgPC9hPlxyXG5cclxuICAgIEBpZiAoZmlsZSgpICYmIGZpbGUoKT8udHlwZSA9PT0gJ3RleHQvY3N2Jykge1xyXG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yXCIgc3R5bGU9XCJtYXJnaW46IDFyZW0gMCAwIDA7XCIgcm9sZT1cImFsZXJ0XCI+XHJcbiAgICAgICAgPGg0IGNsYXNzPVwiYWxlcnQtaGVhZGluZ1wiPkNTViBGaWxlIENvbnRlbnQgU3VtbWFyeTwvaDQ+XHJcbiAgICAgICAgPGhyPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiZnMtNiBtLTBcIj57e3Jvd1N1bW1hcnkoKS5yb3dDb3VudH19IHJvd3MgZm91bmQgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd1N1bW1hcnkoKS5yb3dFbXB0eSA+IDBcIj4tXHJcbiAgICAgICAgICAgICAgICB7e3Jvd1N1bW1hcnkoKS5yb3dFbXB0eX19IGVtcHR5IGluIHRoZSBDU1YgeW91IHVwbG9hZGVkPC9uZy1jb250YWluZXI+PC9wPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgfVxyXG48L2Rpdj4iXX0=
@@ -1,4 +1,4 @@
1
- import { HeaderType as HeaderType$1 } from '@dealpos-npm/ng-dealpos-library/header-type';
1
+ import { HeaderType } from '@dealpos-npm/ng-dealpos-library/header-type';
2
2
  import * as i0 from '@angular/core';
3
3
  import { EventEmitter, Component, Input, Output } from '@angular/core';
4
4
  import * as i1 from '@angular/common';
@@ -43,7 +43,7 @@ class ModalMaterialConfig {
43
43
  /**
44
44
  * header type to change the color of the dialog. ex: Success for Green color, Danger for Red color
45
45
  */
46
- this.headerType = HeaderType$1.Success;
46
+ this.headerType = HeaderType.Success;
47
47
  /**
48
48
  * conditions for disable OK button
49
49
  */
@@ -78,7 +78,7 @@ class ModalMaterialComponent {
78
78
  this.onCancel = new EventEmitter();
79
79
  this.onClose = new EventEmitter();
80
80
  this.onBack = new EventEmitter();
81
- this.headerType = HeaderType$1;
81
+ this.headerType = HeaderType;
82
82
  }
83
83
  ngOnInit() {
84
84
  if (this.config == null) {
@@ -115,17 +115,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
115
115
  type: Output
116
116
  }] } });
117
117
 
118
- var HeaderType;
119
- (function (HeaderType) {
120
- HeaderType["Success"] = "Success";
121
- HeaderType["Info"] = "Info";
122
- HeaderType["Warning"] = "Warning";
123
- HeaderType["Error"] = "Error";
124
- })(HeaderType || (HeaderType = {}));
125
-
126
118
  /**
127
119
  * Generated bundle index. Do not edit.
128
120
  */
129
121
 
130
- export { HeaderType, ModalMaterialComponent, ModalMaterialConfig };
122
+ export { ModalMaterialComponent, ModalMaterialConfig };
131
123
  //# sourceMappingURL=dealpos-npm-ng-dealpos-library-components-dialog.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dealpos-npm-ng-dealpos-library-components-dialog.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/components/dialog/src/custom-dialog-config/modal-material-config.ts","../../../projects/dealpos-npm/ng-dealpos-library/components/dialog/src/custom-dialog/modal-material.component.ts","../../../projects/dealpos-npm/ng-dealpos-library/components/dialog/src/custom-dialog/modal-material.component.html","../../../projects/dealpos-npm/ng-dealpos-library/components/dialog/src/custom-dialog-config/header-type.enum.ts","../../../projects/dealpos-npm/ng-dealpos-library/components/dialog/dealpos-npm-ng-dealpos-library-components-dialog.ts"],"sourcesContent":["import { HeaderType } from \"@dealpos-npm/ng-dealpos-library/header-type\";\r\n\r\n/**../../../../enum/header-type/HeaderType\r\n * Control the modal UI and UX\r\n */\r\nexport class ModalMaterialConfig {\r\n /**\r\n * Text inside of mat-dialog-title in h4 tag\r\n */\r\n title = \"New Modal\";\r\n /**\r\n * the name of the OK button to be displayed\r\n */\r\n okText= \"Ok (F2)\";\r\n /**\r\n * the name of the CANCEL button to be displayed\r\n */\r\n cancelText = \"Cancel\";\r\n /**\r\n * the condition of whether the footer is displayed\r\n */\r\n hideFooter = false;\r\n /**\r\n * the condition of whether the CANCEL Button is displayed\r\n */\r\n hideCancel = false;\r\n /**\r\n * the condition of whether the OK Button is displayed\r\n */\r\n hideOk = false;\r\n /**\r\n * the condition of whether the CLOSE Button is displayed\r\n */\r\n hideClose = false;\r\n eMoney = false;\r\n /**\r\n * header type to change the color of the dialog. ex: Success for Green color, Danger for Red color\r\n */\r\n headerType = HeaderType.Success;\r\n /**\r\n * conditions for disable OK button\r\n */\r\n validated = true;\r\n /**\r\n * Customization width for the dialog\r\n */\r\n customWidth = 'initial';\r\n /**\r\n * condition whether the dialog body can be scrolled\r\n */\r\n bodyScrollable = false;\r\n /**\r\n * condition whether the scrollbar body is hide\r\n */\r\n hideScrollbar = false;\r\n /**\r\n * \r\n */\r\n disableKeyup? = false;\r\n /**\r\n * condition to remove the padding in the body of the dialog\r\n */\r\n noPadding = false;\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n} from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ModalMaterialConfig } from \"../custom-dialog-config/modal-material-config\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { HeaderType } from \"@dealpos-npm/ng-dealpos-library/header-type\";\r\n\r\n@Component({\r\n selector: \"modal-material\",\r\n templateUrl: \"./modal-material.component.html\",\r\n styleUrls: [\"./modal-material.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, MatDialogModule]\r\n})\r\nexport class ModalMaterialComponent implements OnInit {\r\n @Input() config?: ModalMaterialConfig;\r\n @Input() dynamicValidated: boolean = true;\r\n\r\n @Output() onOk = new EventEmitter<any>();\r\n @Output() onCancel = new EventEmitter<any>();\r\n @Output() onClose = new EventEmitter<any>();\r\n @Output() onBack = new EventEmitter<any>();\r\n public headerType = HeaderType;\r\n\r\n ngOnInit(): void {\r\n if (this.config == null) {\r\n this.config = new ModalMaterialConfig();\r\n }\r\n }\r\n\r\n onKeyup(event: KeyboardEvent): void {\r\n if (!this.config?.disableKeyup) {\r\n if (event.code == \"F2\") {\r\n this.onOk.emit(\"F2\");\r\n }\r\n if (event.code == \"Enter\" || event.code == \"NumpadEnter\") {\r\n this.onOk.emit(\"Enter\");\r\n }\r\n }\r\n }\r\n}","<div (keyup)=\"onKeyup($event)\" class=\"modal-material d-flex align-items-start flex-column position-relative maxHeight\" id=\"modal_material\"\r\n [style.width]=\"config?.customWidth\" [ngClass]=\"{\r\n bodyScrollable: config?.bodyScrollable,\r\n hideScrollbar: config?.hideScrollbar\r\n }\">\r\n <div mat-dialog-title class=\"d-flex w-100 justify-content-between modal-header position-relative\" [ngClass]=\"{\r\n 'bg-success': headerType.Success == config?.headerType,\r\n 'bg-warning': headerType.Warning == config?.headerType,\r\n 'bg-info': headerType.Info == config?.headerType,\r\n 'bg-danger': headerType.Error == config?.headerType\r\n }\">\r\n <div class=\"back-button position-absolute pointer d-print-none\" (click)=\"onBack.emit()\" *ngIf=\"config?.eMoney\">\r\n <a class=\"btn back-button\"><i class=\"fa-solid fa-arrow-left\"></i></a>\r\n </div>\r\n <div class=\"d-flex flex-row d-print-none align-items-center\" [ngClass]=\"{ 'mx-auto': config?.eMoney }\">\r\n <h4 class=\"fw-normal\">{{ config?.title }}</h4>\r\n <ng-content select=\"header\"></ng-content>\r\n </div>\r\n <div *ngIf=\"!config?.hideClose\">\r\n <a class=\"btn-light-blue btn-sm pointer close\" (click)=\"onClose.emit()\">\r\n <i class=\"fa-solid fa-xmark fa-lg text-primary\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n <mat-dialog-content class=\"modal-body w-100\" [ngClass]=\"{\r\n 'show-footer': !config?.hideFooter,\r\n 'p-0': config?.noPadding\r\n }\">\r\n <ng-content select=\"content\"></ng-content>\r\n\r\n </mat-dialog-content>\r\n <mat-dialog-actions *ngIf=\"!config?.hideFooter\" class=\"w-100 py-7 border-top d-flex justify-content-end d-print-none\">\r\n <ng-content select=\"footer\"></ng-content>\r\n <a *ngIf=\"!config?.hideCancel\" class=\"btn btn-light-blue text-primary btn-lg fw-bold mx-3\" (click)=\"onCancel.emit()\">\r\n {{ config?.cancelText ? config?.cancelText : \"Cancel\" }}</a>\r\n <button *ngIf=\"!config?.hideOk\" class=\"btn btn-light-blue me-6 text-primary btn-lg fw-bold mx-3\"\r\n [disabled]=\"!config?.validated || !dynamicValidated\" (click)=\"onOk.emit()\" (keyup.F2)=\"onOk.emit()\"\r\n data-cy=\"btn-ok\" [innerHTML]=\"config?.okText ? config?.okText : 'Ok (F2)'\">\r\n </button>\r\n </mat-dialog-actions>\r\n</div>","export enum HeaderType {\r\n Success = \"Success\",\r\n Info = \"Info\",\r\n Warning = \"Warning\",\r\n Error = \"Error\",\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["HeaderType"],"mappings":"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"}
1
+ {"version":3,"file":"dealpos-npm-ng-dealpos-library-components-dialog.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/components/dialog/src/custom-dialog-config/modal-material-config.ts","../../../projects/dealpos-npm/ng-dealpos-library/components/dialog/src/custom-dialog/modal-material.component.ts","../../../projects/dealpos-npm/ng-dealpos-library/components/dialog/src/custom-dialog/modal-material.component.html","../../../projects/dealpos-npm/ng-dealpos-library/components/dialog/dealpos-npm-ng-dealpos-library-components-dialog.ts"],"sourcesContent":["import { HeaderType } from \"@dealpos-npm/ng-dealpos-library/header-type\";\r\n\r\n/**../../../../enum/header-type/HeaderType\r\n * Control the modal UI and UX\r\n */\r\nexport class ModalMaterialConfig {\r\n /**\r\n * Text inside of mat-dialog-title in h4 tag\r\n */\r\n title = \"New Modal\";\r\n /**\r\n * the name of the OK button to be displayed\r\n */\r\n okText= \"Ok (F2)\";\r\n /**\r\n * the name of the CANCEL button to be displayed\r\n */\r\n cancelText = \"Cancel\";\r\n /**\r\n * the condition of whether the footer is displayed\r\n */\r\n hideFooter = false;\r\n /**\r\n * the condition of whether the CANCEL Button is displayed\r\n */\r\n hideCancel = false;\r\n /**\r\n * the condition of whether the OK Button is displayed\r\n */\r\n hideOk = false;\r\n /**\r\n * the condition of whether the CLOSE Button is displayed\r\n */\r\n hideClose = false;\r\n eMoney = false;\r\n /**\r\n * header type to change the color of the dialog. ex: Success for Green color, Danger for Red color\r\n */\r\n headerType = HeaderType.Success;\r\n /**\r\n * conditions for disable OK button\r\n */\r\n validated = true;\r\n /**\r\n * Customization width for the dialog\r\n */\r\n customWidth = 'initial';\r\n /**\r\n * condition whether the dialog body can be scrolled\r\n */\r\n bodyScrollable = false;\r\n /**\r\n * condition whether the scrollbar body is hide\r\n */\r\n hideScrollbar = false;\r\n /**\r\n * \r\n */\r\n disableKeyup? = false;\r\n /**\r\n * condition to remove the padding in the body of the dialog\r\n */\r\n noPadding = false;\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n} from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { ModalMaterialConfig } from \"../custom-dialog-config/modal-material-config\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { HeaderType } from \"@dealpos-npm/ng-dealpos-library/header-type\";\r\n\r\n@Component({\r\n selector: \"modal-material\",\r\n templateUrl: \"./modal-material.component.html\",\r\n styleUrls: [\"./modal-material.component.scss\"],\r\n standalone: true,\r\n imports: [CommonModule, MatDialogModule]\r\n})\r\nexport class ModalMaterialComponent implements OnInit {\r\n @Input() config?: ModalMaterialConfig;\r\n @Input() dynamicValidated: boolean = true;\r\n\r\n @Output() onOk = new EventEmitter<any>();\r\n @Output() onCancel = new EventEmitter<any>();\r\n @Output() onClose = new EventEmitter<any>();\r\n @Output() onBack = new EventEmitter<any>();\r\n public headerType = HeaderType;\r\n\r\n ngOnInit(): void {\r\n if (this.config == null) {\r\n this.config = new ModalMaterialConfig();\r\n }\r\n }\r\n\r\n onKeyup(event: KeyboardEvent): void {\r\n if (!this.config?.disableKeyup) {\r\n if (event.code == \"F2\") {\r\n this.onOk.emit(\"F2\");\r\n }\r\n if (event.code == \"Enter\" || event.code == \"NumpadEnter\") {\r\n this.onOk.emit(\"Enter\");\r\n }\r\n }\r\n }\r\n}","<div (keyup)=\"onKeyup($event)\" class=\"modal-material d-flex align-items-start flex-column position-relative maxHeight\" id=\"modal_material\"\r\n [style.width]=\"config?.customWidth\" [ngClass]=\"{\r\n bodyScrollable: config?.bodyScrollable,\r\n hideScrollbar: config?.hideScrollbar\r\n }\">\r\n <div mat-dialog-title class=\"d-flex w-100 justify-content-between modal-header position-relative\" [ngClass]=\"{\r\n 'bg-success': headerType.Success == config?.headerType,\r\n 'bg-warning': headerType.Warning == config?.headerType,\r\n 'bg-info': headerType.Info == config?.headerType,\r\n 'bg-danger': headerType.Error == config?.headerType\r\n }\">\r\n <div class=\"back-button position-absolute pointer d-print-none\" (click)=\"onBack.emit()\" *ngIf=\"config?.eMoney\">\r\n <a class=\"btn back-button\"><i class=\"fa-solid fa-arrow-left\"></i></a>\r\n </div>\r\n <div class=\"d-flex flex-row d-print-none align-items-center\" [ngClass]=\"{ 'mx-auto': config?.eMoney }\">\r\n <h4 class=\"fw-normal\">{{ config?.title }}</h4>\r\n <ng-content select=\"header\"></ng-content>\r\n </div>\r\n <div *ngIf=\"!config?.hideClose\">\r\n <a class=\"btn-light-blue btn-sm pointer close\" (click)=\"onClose.emit()\">\r\n <i class=\"fa-solid fa-xmark fa-lg text-primary\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n <mat-dialog-content class=\"modal-body w-100\" [ngClass]=\"{\r\n 'show-footer': !config?.hideFooter,\r\n 'p-0': config?.noPadding\r\n }\">\r\n <ng-content select=\"content\"></ng-content>\r\n\r\n </mat-dialog-content>\r\n <mat-dialog-actions *ngIf=\"!config?.hideFooter\" class=\"w-100 py-7 border-top d-flex justify-content-end d-print-none\">\r\n <ng-content select=\"footer\"></ng-content>\r\n <a *ngIf=\"!config?.hideCancel\" class=\"btn btn-light-blue text-primary btn-lg fw-bold mx-3\" (click)=\"onCancel.emit()\">\r\n {{ config?.cancelText ? config?.cancelText : \"Cancel\" }}</a>\r\n <button *ngIf=\"!config?.hideOk\" class=\"btn btn-light-blue me-6 text-primary btn-lg fw-bold mx-3\"\r\n [disabled]=\"!config?.validated || !dynamicValidated\" (click)=\"onOk.emit()\" (keyup.F2)=\"onOk.emit()\"\r\n data-cy=\"btn-ok\" [innerHTML]=\"config?.okText ? config?.okText : 'Ok (F2)'\">\r\n </button>\r\n </mat-dialog-actions>\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ class UppyComponent {
18
18
  this.sampleUrl = '';
19
19
  this.subtitle = '';
20
20
  this.showSample = true;
21
+ this.showSubtitle = true;
21
22
  this.uppyCoreConfiguration = input();
22
23
  this.dashboardPropsConfiguration = input();
23
24
  this.fileUploaded = new EventEmitter();
@@ -45,6 +46,7 @@ class UppyComponent {
45
46
  this.uppy.on('upload', (_, uppyFiles) => {
46
47
  const file = uppyFiles[0]?.data;
47
48
  this.showSample = false;
49
+ this.showSubtitle = false;
48
50
  this.fileUploaded.emit(file);
49
51
  this.file.set(uppyFiles[0].data);
50
52
  Papa.parse(file, {
@@ -72,6 +74,7 @@ class UppyComponent {
72
74
  });
73
75
  this.uppy.on('file-removed', () => {
74
76
  this.showSample = true;
77
+ this.showSubtitle = true;
75
78
  this.fileRemoved.emit();
76
79
  this.file.set(null);
77
80
  this.rowSummary.set({ rowCount: 0, rowEmpty: 0 });
@@ -92,11 +95,11 @@ class UppyComponent {
92
95
  return `${size.toFixed(decimalPoints)} ${UppyComponent.sizes[i]}`;
93
96
  }
94
97
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: UppyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: UppyComponent, isStandalone: true, selector: "POS-uppy", inputs: { sampleUrl: { classPropertyName: "sampleUrl", publicName: "sampleUrl", isSignal: false, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: false, isRequired: false, transformFunction: null }, uppyCoreConfiguration: { classPropertyName: "uppyCoreConfiguration", publicName: "uppyCoreConfiguration", isSignal: true, isRequired: false, transformFunction: null }, dashboardPropsConfiguration: { classPropertyName: "dashboardPropsConfiguration", publicName: "dashboardPropsConfiguration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileUploaded: "fileUploaded", fileRemoved: "fileRemoved", onParser: "onParser" }, ngImport: i0, template: "<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>", styles: ["::ng-deep .uppy-Dashboard-AddFiles-info{display:none!important}::ng-deep .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;max-width:600px;margin-top:15px;padding-top:0;overflow-y:visible}.sample,.subtitle{top:56%;width:100%;text-align:center}.top-58{top:61%}\n"], dependencies: [{ kind: "ngmodule", type: UppyAngularDashboardModule }, { kind: "component", type: i1.DashboardComponent, selector: "uppy-dashboard", inputs: ["uppy", "props"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: UppyComponent, isStandalone: true, selector: "POS-uppy", inputs: { sampleUrl: { classPropertyName: "sampleUrl", publicName: "sampleUrl", isSignal: false, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: false, isRequired: false, transformFunction: null }, uppyCoreConfiguration: { classPropertyName: "uppyCoreConfiguration", publicName: "uppyCoreConfiguration", isSignal: true, isRequired: false, transformFunction: null }, dashboardPropsConfiguration: { classPropertyName: "dashboardPropsConfiguration", publicName: "dashboardPropsConfiguration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileUploaded: "fileUploaded", fileRemoved: "fileRemoved", onParser: "onParser" }, ngImport: i0, template: "<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle && showSubtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>", styles: ["::ng-deep .uppy-Dashboard-AddFiles-info{display:none!important}::ng-deep .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;max-width:600px;margin-top:15px;padding-top:0;overflow-y:visible}.sample,.subtitle{top:56%;width:100%;text-align:center}.top-58{top:61%}\n"], dependencies: [{ kind: "ngmodule", type: UppyAngularDashboardModule }, { kind: "component", type: i1.DashboardComponent, selector: "uppy-dashboard", inputs: ["uppy", "props"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
96
99
  }
97
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: UppyComponent, decorators: [{
98
101
  type: Component,
99
- args: [{ selector: 'POS-uppy', standalone: true, imports: [UppyAngularDashboardModule, CommonModule], template: "<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>", styles: ["::ng-deep .uppy-Dashboard-AddFiles-info{display:none!important}::ng-deep .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;max-width:600px;margin-top:15px;padding-top:0;overflow-y:visible}.sample,.subtitle{top:56%;width:100%;text-align:center}.top-58{top:61%}\n"] }]
102
+ args: [{ selector: 'POS-uppy', standalone: true, imports: [UppyAngularDashboardModule, CommonModule], template: "<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle && showSubtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>", styles: ["::ng-deep .uppy-Dashboard-AddFiles-info{display:none!important}::ng-deep .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;max-width:600px;margin-top:15px;padding-top:0;overflow-y:visible}.sample,.subtitle{top:56%;width:100%;text-align:center}.top-58{top:61%}\n"] }]
100
103
  }], ctorParameters: () => [], propDecorators: { sampleUrl: [{
101
104
  type: Input
102
105
  }], subtitle: [{
@@ -1 +1 @@
1
- {"version":3,"file":"dealpos-npm-ng-dealpos-library-components-uppy-file-upload.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/src/uppy.component.ts","../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/src/uppy.component.html","../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/dealpos-npm-ng-dealpos-library-components-uppy-file-upload.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, effect, EventEmitter, inject, input, Input, Output, signal } from '@angular/core';\r\nimport { ConvertCsvService } from '@dealpos-npm/ng-dealpos-library/services/csv-parser';\r\nimport { HttpService } from '@dealpos-npm/ng-dealpos-library/services/http';\r\nimport { UppyAngularDashboardModule } from '@uppy/angular';\r\nimport { Uppy } from '@uppy/core';\r\nimport '@uppy/core/dist/style.min.css';\r\nimport '@uppy/dashboard/dist/style.min.css';\r\nimport Papa from 'papaparse';\r\n\r\n@Component({\r\n selector: 'POS-uppy',\r\n standalone: true,\r\n imports: [UppyAngularDashboardModule, CommonModule],\r\n templateUrl: './uppy.component.html',\r\n styleUrl: './uppy.component.scss'\r\n})\r\nexport class UppyComponent {\r\n @Input() sampleUrl: string = ''\r\n @Input() subtitle: string = ''\r\n showSample: boolean = true\r\n uppyCoreConfiguration = input<any>();\r\n dashboardPropsConfiguration = input<any>();\r\n @Output() fileUploaded = new EventEmitter<Blob | File>()\r\n @Output() fileRemoved = new EventEmitter<void>()\r\n @Output() onParser = new EventEmitter<any>()\r\n\r\n http = inject(HttpService)\r\n csvParser = inject(ConvertCsvService)\r\n\r\n rowSummary = signal<{rowCount: number, rowEmpty: number}>({rowCount: 0, rowEmpty: 0})\r\n\r\n file = signal<File | null>(null)\r\n\r\n private static sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] as const\r\n private static kilobyte = 1024\r\n\r\n uppy: Uppy = new Uppy({ \r\n debug: true, \r\n autoProceed: true, \r\n allowMultipleUploadBatches: false,\r\n restrictions: {\r\n allowedFileTypes: ['.csv'],\r\n maxTotalFileSize: 1000000\r\n }\r\n });\r\n \r\n dashboardProps = {\r\n hideUploadButton: true,\r\n height: 350\r\n }\r\n\r\n constructor() {\r\n effect(() => this.uppy.setOptions({...this.uppyCoreConfiguration()}))\r\n effect(() => this.dashboardProps = ({...this.dashboardProps, ...this.dashboardPropsConfiguration()}))\r\n\r\n this.uppy.on('upload', (_, uppyFiles) => {\r\n const file = uppyFiles[0]?.data as File\r\n this.showSample = false\r\n\r\n\r\n this.fileUploaded.emit(file)\r\n this.file.set(uppyFiles[0].data as File)\r\n\r\n Papa.parse(file, {\r\n skipEmptyLines: 'greedy',\r\n header: true,\r\n beforeFirstChunk: (_chunk) => {\r\n \r\n const withOutHeader = _chunk.split(/\\r?\\n/).slice(1)\r\n if (withOutHeader[withOutHeader.length - 1] === '') withOutHeader.pop()\r\n this.rowSummary.update(res => ({...res, rowCount: withOutHeader.length}))\r\n withOutHeader.forEach(row => {\r\n \r\n const emptyRow = row.split(',').every(row => row === '')\r\n \r\n if (emptyRow) this.rowSummary.update(res => ({...res, rowEmpty: res.rowEmpty + 1}))\r\n })\r\n return _chunk; // Return the original chunk to continue parsing\r\n },\r\n error(error, file) {\r\n console.log('ERROR', error, file)\r\n },\r\n complete: (results, _file) => {\r\n this.onParser.emit(results.data)\r\n },\r\n })\r\n })\r\n\r\n this.uppy.on('file-removed', () => {\r\n this.showSample = true\r\n this.fileRemoved.emit()\r\n this.file.set(null)\r\n this.rowSummary.set({rowCount: 0, rowEmpty: 0})\r\n });\r\n }\r\n\r\n /**\r\n * Converts a given number of bytes into a human-readable string.\r\n * @param bytes The number of bytes to convert.\r\n * @param decimalPoints The number of decimal places to display. Defaults to 2.\r\n * @returns A string in the form of \"X.XX [unit]\" where X is the numerical value and unit is the appropriate unit of measurement (Bytes, KB, MB, GB, etc.).\r\n */\r\n formatFileSize(bytes: number, decimalPoints = 2): string {\r\n if(bytes === 0) {\r\n return `0 bytes`\r\n }\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(UppyComponent.kilobyte))\r\n const size = (bytes / Math.pow(UppyComponent.kilobyte,i))\r\n return `${size.toFixed(decimalPoints)} ${UppyComponent.sizes[i]}`\r\n }\r\n}\r\n","<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;MAiBa,aAAa,CAAA;aAiBT,IAAK,CAAA,KAAA,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAA3D,CAAqE,EAAA;aAC1E,IAAQ,CAAA,QAAA,GAAG,IAAH,CAAO,EAAA;AAiB9B,IAAA,WAAA,GAAA;QAlCS,IAAS,CAAA,SAAA,GAAW,EAAE,CAAA;QACtB,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAA;QAC9B,IAAU,CAAA,UAAA,GAAY,IAAI,CAAA;QAC1B,IAAqB,CAAA,qBAAA,GAAG,KAAK,EAAO,CAAC;QACrC,IAA2B,CAAA,2BAAA,GAAG,KAAK,EAAO,CAAC;AACjC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAe,CAAA;AAC9C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAA;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAO,CAAA;AAE5C,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;AAC1B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAErC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAuC,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAA;AAErF,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;QAKhC,IAAI,CAAA,IAAA,GAAS,IAAI,IAAI,CAAC;AACpB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,0BAA0B,EAAE,KAAK;AACjC,YAAA,YAAY,EAAE;gBACZ,gBAAgB,EAAE,CAAC,MAAM,CAAC;AAC1B,gBAAA,gBAAgB,EAAE,OAAO;AAC1B,aAAA;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,IAAA,CAAA,cAAc,GAAG;AACf,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,MAAM,EAAE,GAAG;SACZ,CAAA;AAGC,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,EAAC,CAAC,CAAC,CAAA;QACrE,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,IAAI,EAAC,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,2BAA2B,EAAE,EAAC,CAAC,CAAC,CAAA;AAErG,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,KAAI;YACtC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,IAAY,CAAA;AACvC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;AAGvB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAY,CAAC,CAAA;AAExC,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,gBAAA,cAAc,EAAE,QAAQ;AACxB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,gBAAgB,EAAE,CAAC,MAAM,KAAI;AAE3B,oBAAA,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBACpD,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;wBAAE,aAAa,CAAC,GAAG,EAAE,CAAA;oBACvE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,KAAK,EAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAC,CAAC,CAAC,CAAA;AACzE,oBAAA,aAAa,CAAC,OAAO,CAAC,GAAG,IAAG;AAE1B,wBAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAA;AAExD,wBAAA,IAAI,QAAQ;4BAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,KAAK,EAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAC,CAAC,CAAC,CAAA;AACrF,qBAAC,CAAC,CAAA;oBACF,OAAO,MAAM,CAAC;iBACf;gBACD,KAAK,CAAC,KAAK,EAAE,IAAI,EAAA;oBACf,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;iBAClC;AACD,gBAAA,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,KAAI;oBAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;iBACjC;AACF,aAAA,CAAC,CAAA;AACJ,SAAC,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,MAAK;AAChC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAA;AACjD,SAAC,CAAC,CAAC;KACJ;AAED;;;;;AAKG;AACH,IAAA,cAAc,CAAC,KAAa,EAAE,aAAa,GAAG,CAAC,EAAA;AAC7C,QAAA,IAAG,KAAK,KAAK,CAAC,EAAE;AACd,YAAA,OAAO,SAAS,CAAA;SACjB;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;AACxE,QAAA,MAAM,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,CAAA;AACzD,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAI,CAAA,EAAA,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;KAClE;8GA9FU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,ECjB1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,2BAAA,EAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,g8BAiBM,EDJM,MAAA,EAAA,CAAA,sTAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,0BAA0B,yIAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIvC,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cACR,IAAI,EAAA,OAAA,EACP,CAAC,0BAA0B,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,g8BAAA,EAAA,MAAA,EAAA,CAAA,sTAAA,CAAA,EAAA,CAAA;wDAK1C,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAII,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACG,WAAW,EAAA,CAAA;sBAApB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;;;AEzBT;;AAEG;;;;"}
1
+ {"version":3,"file":"dealpos-npm-ng-dealpos-library-components-uppy-file-upload.mjs","sources":["../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/src/uppy.component.ts","../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/src/uppy.component.html","../../../projects/dealpos-npm/ng-dealpos-library/components/uppy-file-upload/dealpos-npm-ng-dealpos-library-components-uppy-file-upload.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, effect, EventEmitter, inject, input, Input, Output, signal } from '@angular/core';\r\nimport { ConvertCsvService } from '@dealpos-npm/ng-dealpos-library/services/csv-parser';\r\nimport { HttpService } from '@dealpos-npm/ng-dealpos-library/services/http';\r\nimport { UppyAngularDashboardModule } from '@uppy/angular';\r\nimport { Uppy } from '@uppy/core';\r\nimport '@uppy/core/dist/style.min.css';\r\nimport '@uppy/dashboard/dist/style.min.css';\r\nimport Papa from 'papaparse';\r\n\r\n@Component({\r\n selector: 'POS-uppy',\r\n standalone: true,\r\n imports: [UppyAngularDashboardModule, CommonModule],\r\n templateUrl: './uppy.component.html',\r\n styleUrl: './uppy.component.scss'\r\n})\r\nexport class UppyComponent {\r\n @Input() sampleUrl: string = ''\r\n @Input() subtitle: string = ''\r\n showSample: boolean = true\r\n showSubtitle: boolean = true;\r\n uppyCoreConfiguration = input<any>();\r\n dashboardPropsConfiguration = input<any>();\r\n @Output() fileUploaded = new EventEmitter<Blob | File>()\r\n @Output() fileRemoved = new EventEmitter<void>()\r\n @Output() onParser = new EventEmitter<any>()\r\n\r\n http = inject(HttpService)\r\n csvParser = inject(ConvertCsvService)\r\n\r\n rowSummary = signal<{rowCount: number, rowEmpty: number}>({rowCount: 0, rowEmpty: 0})\r\n\r\n file = signal<File | null>(null)\r\n\r\n private static sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] as const\r\n private static kilobyte = 1024\r\n\r\n uppy: Uppy = new Uppy({ \r\n debug: true, \r\n autoProceed: true, \r\n allowMultipleUploadBatches: false,\r\n restrictions: {\r\n allowedFileTypes: ['.csv'],\r\n maxTotalFileSize: 1000000\r\n }\r\n });\r\n \r\n dashboardProps = {\r\n hideUploadButton: true,\r\n height: 350\r\n }\r\n\r\n constructor() {\r\n effect(() => this.uppy.setOptions({...this.uppyCoreConfiguration()}))\r\n effect(() => this.dashboardProps = ({...this.dashboardProps, ...this.dashboardPropsConfiguration()}))\r\n\r\n this.uppy.on('upload', (_, uppyFiles) => {\r\n const file = uppyFiles[0]?.data as File\r\n this.showSample = false\r\n this.showSubtitle = false\r\n\r\n\r\n this.fileUploaded.emit(file)\r\n this.file.set(uppyFiles[0].data as File)\r\n\r\n Papa.parse(file, {\r\n skipEmptyLines: 'greedy',\r\n header: true,\r\n beforeFirstChunk: (_chunk) => {\r\n \r\n const withOutHeader = _chunk.split(/\\r?\\n/).slice(1)\r\n if (withOutHeader[withOutHeader.length - 1] === '') withOutHeader.pop()\r\n this.rowSummary.update(res => ({...res, rowCount: withOutHeader.length}))\r\n withOutHeader.forEach(row => {\r\n \r\n const emptyRow = row.split(',').every(row => row === '')\r\n \r\n if (emptyRow) this.rowSummary.update(res => ({...res, rowEmpty: res.rowEmpty + 1}))\r\n })\r\n return _chunk; // Return the original chunk to continue parsing\r\n },\r\n error(error, file) {\r\n console.log('ERROR', error, file)\r\n },\r\n complete: (results, _file) => {\r\n this.onParser.emit(results.data)\r\n },\r\n })\r\n })\r\n\r\n this.uppy.on('file-removed', () => {\r\n this.showSample = true\r\n this.showSubtitle = true\r\n this.fileRemoved.emit()\r\n this.file.set(null)\r\n this.rowSummary.set({rowCount: 0, rowEmpty: 0})\r\n });\r\n }\r\n\r\n /**\r\n * Converts a given number of bytes into a human-readable string.\r\n * @param bytes The number of bytes to convert.\r\n * @param decimalPoints The number of decimal places to display. Defaults to 2.\r\n * @returns A string in the form of \"X.XX [unit]\" where X is the numerical value and unit is the appropriate unit of measurement (Bytes, KB, MB, GB, etc.).\r\n */\r\n formatFileSize(bytes: number, decimalPoints = 2): string {\r\n if(bytes === 0) {\r\n return `0 bytes`\r\n }\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(UppyComponent.kilobyte))\r\n const size = (bytes / Math.pow(UppyComponent.kilobyte,i))\r\n return `${size.toFixed(decimalPoints)} ${UppyComponent.sizes[i]}`\r\n }\r\n}\r\n","<div class=\"position-relative\">\r\n <uppy-dashboard [uppy]=\"uppy\" [props]=\"dashboardProps\"> </uppy-dashboard>\r\n <small *ngIf=\"subtitle && showSubtitle\" class=\"subtitle position-absolute\">{{subtitle}}</small>\r\n <a *ngIf=\"sampleUrl && showSample\" class=\"sample position-absolute\" [class.top-58]=\"subtitle\" role=\"button\"\r\n [href]=\"sampleUrl\">\r\n <i class=\"fa-solid fa-download ms-3\"></i> Download Template\r\n </a>\r\n\r\n @if (file() && file()?.type === 'text/csv') {\r\n <div class=\"alert alert-warning d-flex flex-column gap-2\" style=\"margin: 1rem 0 0 0;\" role=\"alert\">\r\n <h4 class=\"alert-heading\">CSV File Content Summary</h4>\r\n <hr>\r\n <p class=\"fs-6 m-0\">{{rowSummary().rowCount}} rows found <ng-container *ngIf=\"rowSummary().rowEmpty > 0\">-\r\n {{rowSummary().rowEmpty}} empty in the CSV you uploaded</ng-container></p>\r\n </div>\r\n\r\n }\r\n</div>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dealpos-npm/ng-dealpos-library",
3
- "version": "4.1.9",
3
+ "version": "4.2.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0",
@@ -152,18 +152,18 @@
152
152
  "esm": "./esm2022/directives/simple-keyboard/dealpos-npm-ng-dealpos-library-directives-simple-keyboard.mjs",
153
153
  "default": "./fesm2022/dealpos-npm-ng-dealpos-library-directives-simple-keyboard.mjs"
154
154
  },
155
- "./pipes/duration": {
156
- "types": "./pipes/duration/index.d.ts",
157
- "esm2022": "./esm2022/pipes/duration/dealpos-npm-ng-dealpos-library-pipes-duration.mjs",
158
- "esm": "./esm2022/pipes/duration/dealpos-npm-ng-dealpos-library-pipes-duration.mjs",
159
- "default": "./fesm2022/dealpos-npm-ng-dealpos-library-pipes-duration.mjs"
160
- },
161
155
  "./pipes/filter": {
162
156
  "types": "./pipes/filter/index.d.ts",
163
157
  "esm2022": "./esm2022/pipes/filter/dealpos-npm-ng-dealpos-library-pipes-filter.mjs",
164
158
  "esm": "./esm2022/pipes/filter/dealpos-npm-ng-dealpos-library-pipes-filter.mjs",
165
159
  "default": "./fesm2022/dealpos-npm-ng-dealpos-library-pipes-filter.mjs"
166
160
  },
161
+ "./pipes/duration": {
162
+ "types": "./pipes/duration/index.d.ts",
163
+ "esm2022": "./esm2022/pipes/duration/dealpos-npm-ng-dealpos-library-pipes-duration.mjs",
164
+ "esm": "./esm2022/pipes/duration/dealpos-npm-ng-dealpos-library-pipes-duration.mjs",
165
+ "default": "./fesm2022/dealpos-npm-ng-dealpos-library-pipes-duration.mjs"
166
+ },
167
167
  "./pipes/fraction": {
168
168
  "types": "./pipes/fraction/index.d.ts",
169
169
  "esm2022": "./esm2022/pipes/fraction/dealpos-npm-ng-dealpos-library-pipes-fraction.mjs",
@@ -176,17 +176,17 @@
176
176
  "esm": "./esm2022/pipes/newlines/dealpos-npm-ng-dealpos-library-pipes-newlines.mjs",
177
177
  "default": "./fesm2022/dealpos-npm-ng-dealpos-library-pipes-newlines.mjs"
178
178
  },
179
- "./services/csv-parser": {
180
- "types": "./services/csv-parser/index.d.ts",
181
- "esm2022": "./esm2022/services/csv-parser/dealpos-npm-ng-dealpos-library-services-csv-parser.mjs",
182
- "esm": "./esm2022/services/csv-parser/dealpos-npm-ng-dealpos-library-services-csv-parser.mjs",
183
- "default": "./fesm2022/dealpos-npm-ng-dealpos-library-services-csv-parser.mjs"
184
- },
185
179
  "./services/http": {
186
180
  "types": "./services/http/index.d.ts",
187
181
  "esm2022": "./esm2022/services/http/dealpos-npm-ng-dealpos-library-services-http.mjs",
188
182
  "esm": "./esm2022/services/http/dealpos-npm-ng-dealpos-library-services-http.mjs",
189
183
  "default": "./fesm2022/dealpos-npm-ng-dealpos-library-services-http.mjs"
184
+ },
185
+ "./services/csv-parser": {
186
+ "types": "./services/csv-parser/index.d.ts",
187
+ "esm2022": "./esm2022/services/csv-parser/dealpos-npm-ng-dealpos-library-services-csv-parser.mjs",
188
+ "esm": "./esm2022/services/csv-parser/dealpos-npm-ng-dealpos-library-services-csv-parser.mjs",
189
+ "default": "./fesm2022/dealpos-npm-ng-dealpos-library-services-csv-parser.mjs"
190
190
  }
191
191
  }
192
192
  }
@@ -1,6 +0,0 @@
1
- export declare enum HeaderType {
2
- Success = "Success",
3
- Info = "Info",
4
- Warning = "Warning",
5
- Error = "Error"
6
- }
@@ -1,8 +0,0 @@
1
- export var HeaderType;
2
- (function (HeaderType) {
3
- HeaderType["Success"] = "Success";
4
- HeaderType["Info"] = "Info";
5
- HeaderType["Warning"] = "Warning";
6
- HeaderType["Error"] = "Error";
7
- })(HeaderType || (HeaderType = {}));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RlYWxwb3MtbnBtL25nLWRlYWxwb3MtbGlicmFyeS9jb21wb25lbnRzL2RpYWxvZy9zcmMvY3VzdG9tLWRpYWxvZy1jb25maWcvaGVhZGVyLXR5cGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxVQUtYO0FBTEQsV0FBWSxVQUFVO0lBQ3BCLGlDQUFtQixDQUFBO0lBQ25CLDJCQUFhLENBQUE7SUFDYixpQ0FBbUIsQ0FBQTtJQUNuQiw2QkFBZSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxVQUFVLEtBQVYsVUFBVSxRQUtyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEhlYWRlclR5cGUge1xyXG4gIFN1Y2Nlc3MgPSBcIlN1Y2Nlc3NcIixcclxuICBJbmZvID0gXCJJbmZvXCIsXHJcbiAgV2FybmluZyA9IFwiV2FybmluZ1wiLFxyXG4gIEVycm9yID0gXCJFcnJvclwiLFxyXG59XHJcbiJdfQ==