verben-ng-ui 1.2.60 → 1.2.61
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/esm2022/src/lib/components/data-extend/data-extend.component.mjs +8 -7
- package/esm2022/src/lib/components/data-import/data-import.component.mjs +4 -4
- package/esm2022/src/lib/components/data-import/data-import.service.mjs +32 -10
- package/fesm2022/verben-ng-ui-src-lib-components-data-extend.mjs +6 -5
- package/fesm2022/verben-ng-ui-src-lib-components-data-extend.mjs.map +1 -1
- package/fesm2022/verben-ng-ui-src-lib-components-data-import.mjs +33 -11
- package/fesm2022/verben-ng-ui-src-lib-components-data-import.mjs.map +1 -1
- package/package.json +58 -58
- package/src/lib/components/data-extend/data-extend.component.d.ts +1 -1
- package/src/lib/components/data-import/data-import.component.d.ts +1 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Component, computed,
|
|
2
|
-
import { DataType } from './data-extend.types';
|
|
1
|
+
import { Component, computed, input, output, signal } from '@angular/core';
|
|
3
2
|
import { Validators } from '@angular/forms';
|
|
3
|
+
import { DataType } from './data-extend.types';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@angular/forms";
|
|
6
6
|
import * as i2 from "@angular/common";
|
|
@@ -14,7 +14,7 @@ export class DataExtendComponent {
|
|
|
14
14
|
fb;
|
|
15
15
|
properties = input([]);
|
|
16
16
|
extendDataEvent = output();
|
|
17
|
-
items
|
|
17
|
+
items;
|
|
18
18
|
showAll = signal(false);
|
|
19
19
|
visibleItems;
|
|
20
20
|
form;
|
|
@@ -23,9 +23,10 @@ export class DataExtendComponent {
|
|
|
23
23
|
constructor(fb) {
|
|
24
24
|
this.fb = fb;
|
|
25
25
|
this.visibleItems = computed(() => this.showAll() ? this.items() : this.items().slice(0, 3));
|
|
26
|
-
effect(() => {
|
|
27
|
-
|
|
28
|
-
});
|
|
26
|
+
// effect(() => {
|
|
27
|
+
// this.items.set(this.properties());
|
|
28
|
+
// });
|
|
29
|
+
this.items = signal([]);
|
|
29
30
|
this.form = this.fb.group({
|
|
30
31
|
Name: ['', Validators.required],
|
|
31
32
|
DefaultValue: [''],
|
|
@@ -110,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
110
111
|
type: Component,
|
|
111
112
|
args: [{ selector: 'lib-data-extend', template: "<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Expand</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Entity</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let item of visibleItems(); let i = index\" class=\"item\">\n <div class=\"item-label\">\n <!-- <input\n type=\"checkbox\"\n [id]=\"'item-' + i\"\n [(ngModel)]=\"item.selected\"\n /> -->\n <label [for]=\"'item-' + i\" class=\"checkbox-label\">\n {{ item.Name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editItem(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeItem(i)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"items().length > 3\"\n (click)=\"toggleShowAll()\"\n class=\"show-more\"\n >\n <span>{{ showAll() ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Properties</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"form\" (ngSubmit)=\"addItem()\">\n <div class=\"\">\n <p class=\"\">Name</p>\n <verbena-input\n placeholder=\"Enter property name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"Name\"\n ></verbena-input>\n </div>\n\n <div>\n <label for=\"DataType\">Data Type</label>\n <verben-drop-down\n id=\"DataType\"\n width=\"'100%'\"\n height=\"'1.25rem'\"\n placeholder=\"Select type\"\n [options]=\"dataTypes\"\n formControlName=\"DataType\"\n >\n </verben-drop-down>\n </div>\n\n <div>\n <label htmlFor=\"Options\" class=\"mb-2\">Enter Options</label>\n <verben-chip\n label=\"Options\"\n id=\"Options\"\n [placeholder]=\"'Enter Options'\"\n formControlName=\"Options\"\n ></verben-chip>\n </div>\n\n <div>\n <label for=\"DefaultValue\">Default Value</label>\n\n <verbena-input\n [placeHolder]=\"'Enter default text'\"\n formControlName=\"DefaultValue\"\n id=\"DefaultValue\"\n label=\"Default Value (optional)\"\n />\n </div>\n\n <div>\n <p class=\"mb-2\">Required</p>\n\n <verbena-switch\n label=\"Required\"\n [onColor]=\"'#1A237E'\"\n formControlName=\"IsRequired\"\n ></verbena-switch>\n </div>\n\n <div class=\"value-range\">\n <verbena-input\n [type]=\"'number'\"\n name=\"minValue\"\n label=\"Min Value\"\n formControlName=\"MinValue\"\n />\n <verbena-input\n [type]=\"'number'\"\n name=\"maxValue\"\n label=\"Max Value\"\n formControlName=\"MinValue\"\n />\n </div>\n\n <button\n [disabled]=\"!form.valid\"\n class=\"add-button ml-auto\"\n type=\"submit\"\n >\n + Add\n </button>\n </form>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"save()\">Extend</button>\n </div>\n</verben-card>\n", styles: [".export-card{font-size:.75rem;z-index:10}.card-header{display:flex;justify-content:space-between;align-items:center;background-color:transparent;padding:4px!important}.header-title{font-weight:600;font-size:.8125rem}.card-body,.section{display:flex;flex-direction:column;gap:.5rem}.section-header{display:flex;justify-content:space-between;align-items:center}.section-title{font-size:.8125rem}.item{display:flex;justify-content:space-between;align-items:center}.item-label{display:flex;align-items:center;gap:.5rem}.checkbox-label{line-height:1}.item-actions{display:flex;gap:.5rem}.show-more{display:flex;gap:.5em;align-items:center;color:#6b7280;cursor:pointer}.divider{border:none;border-top:1px solid #e8eaf1}.operation-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.add-button{margin-top:.5rem;margin-left:auto;outline:none;border:none;background-color:transparent;color:#3479e9;font-size:.75rem;font-weight:500;cursor:pointer}.card-footer{display:flex;justify-content:flex-end;background-color:transparent}.export-button{margin-top:.5rem;outline:none;border:none;padding:.2rem 1.6rem;background-color:#ffe681;color:#404040;font-size:.75rem;font-weight:600;cursor:pointer}.value-range{display:flex;gap:.5rem;align-items:center}\n"] }]
|
|
112
113
|
}], ctorParameters: () => [{ type: i1.FormBuilder }] });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHRlbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4dGVuZC9kYXRhLWV4dGVuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXh0ZW5kL2RhdGEtZXh0ZW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPcEUsTUFBTSxPQUFPLG1CQUFtQjtJQVlWO0lBWHBCLFVBQVUsR0FBRyxLQUFLLENBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLGVBQWUsR0FBRyxNQUFNLEVBQW9CLENBQUM7SUFFN0MsS0FBSyxHQUFxQyxNQUFNLENBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLE9BQU8sR0FBNEIsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzFELFlBQVksQ0FBMkI7SUFDdkMsSUFBSSxDQUFZO0lBQ2hCLFlBQVksR0FBMEIsSUFBSSxDQUFDO0lBRTNDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXBDLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ3pELENBQUM7UUFDRixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQy9CLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNsQixRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUNuQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDYixRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDYixVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFELElBQ0UsS0FBSyxLQUFLLFFBQVEsQ0FBQyxlQUFlO2dCQUNsQyxLQUFLLEtBQUssUUFBUSxDQUFDLGNBQWMsRUFDakMsQ0FBQztnQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNqRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3RDLENBQUM7WUFFRCxJQUNFLEtBQUssS0FBSyxRQUFRLENBQUMsTUFBTTtnQkFDekIsS0FBSyxLQUFLLFFBQVEsQ0FBQyxPQUFPO2dCQUMxQixLQUFLLEtBQUssUUFBUSxDQUFDLGVBQWU7Z0JBQ2xDLEtBQUssS0FBSyxRQUFRLENBQUMsY0FBYyxFQUNqQyxDQUFDO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDO1lBQ0QsSUFBSSxLQUFLLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUN2QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3RDLENBQUM7WUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxzQkFBc0IsRUFBRSxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3pCLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQztnQkFDOUIsT0FBTyxZQUFZLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7d0dBM0dVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDJQQ2xCaEMsZ2lLQW9MQTs7NEZEbEthLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIFNpZ25hbCxcbiAgc2lnbmFsLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhRXh0ZW5kSXRlbSwgRGF0YVR5cGUgfSBmcm9tICcuL2RhdGEtZXh0ZW5kLnR5cGVzJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLWV4dGVuZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWV4dGVuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLWV4dGVuZC5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUV4dGVuZENvbXBvbmVudCB7XG4gIHByb3BlcnRpZXMgPSBpbnB1dDxEYXRhRXh0ZW5kSXRlbVtdPihbXSk7XG4gIGV4dGVuZERhdGFFdmVudCA9IG91dHB1dDxEYXRhRXh0ZW5kSXRlbVtdPigpO1xuXG4gIGl0ZW1zOiBXcml0YWJsZVNpZ25hbDxEYXRhRXh0ZW5kSXRlbVtdPiA9IHNpZ25hbDxEYXRhRXh0ZW5kSXRlbVtdPihbXSk7XG4gIHNob3dBbGw6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgdmlzaWJsZUl0ZW1zOiBTaWduYWw8RGF0YUV4dGVuZEl0ZW1bXT47XG4gIGZvcm06IEZvcm1Hcm91cDtcbiAgc2VsZWN0ZWRJdGVtOiBEYXRhRXh0ZW5kSXRlbSB8IG51bGwgPSBudWxsO1xuXG4gIGRhdGFUeXBlcyA9IE9iamVjdC52YWx1ZXMoRGF0YVR5cGUpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy52aXNpYmxlSXRlbXMgPSBjb21wdXRlZCgoKSA9PlxuICAgICAgdGhpcy5zaG93QWxsKCkgPyB0aGlzLml0ZW1zKCkgOiB0aGlzLml0ZW1zKCkuc2xpY2UoMCwgMylcbiAgICApO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLml0ZW1zLnNldCh0aGlzLnByb3BlcnRpZXMoKSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIE5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBEZWZhdWx0VmFsdWU6IFsnJ10sXG4gICAgICBEYXRhVHlwZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIE1heFZhbHVlOiBbMF0sXG4gICAgICBNaW5WYWx1ZTogWzBdLFxuICAgICAgSXNSZXF1aXJlZDogW2ZhbHNlXSxcbiAgICAgIE9wdGlvbnM6IFsnJ10sXG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm0uZ2V0KCdEYXRhVHlwZScpPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB2YWx1ZSA9PT0gRGF0YVR5cGUuU2luZ2xlU2VsZWN0aW9uIHx8XG4gICAgICAgIHZhbHVlID09PSBEYXRhVHlwZS5NdWx0aVNlbGVjdGlvblxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8uc2V0VmFsdWUoJycpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdPcHRpb25zJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8uZGlzYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIHZhbHVlID09PSBEYXRhVHlwZS5OdW1iZXIgfHxcbiAgICAgICAgdmFsdWUgPT09IERhdGFUeXBlLkRlY2ltYWwgfHxcbiAgICAgICAgdmFsdWUgPT09IERhdGFUeXBlLlNpbmdsZVNlbGVjdGlvbiB8fFxuICAgICAgICB2YWx1ZSA9PT0gRGF0YVR5cGUuTXVsdGlTZWxlY3Rpb25cbiAgICAgICkge1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdNYXhWYWx1ZScpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ01pblZhbHVlJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PT0gRGF0YVR5cGUuVGV4dCkge1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdNYXhWYWx1ZScpPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWluVmFsdWUnKT8uY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ01heFZhbHVlJyk/LmRpc2FibGUoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWluVmFsdWUnKT8uZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWF4VmFsdWUnKT8uZW5hYmxlKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ01pblZhbHVlJyk/LmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdPcHRpb25zJyk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvZ2dsZVNob3dBbGwoKSB7XG4gICAgdGhpcy5zaG93QWxsLnVwZGF0ZSgocHJldikgPT4gIXByZXYpO1xuICB9XG5cbiAgYWRkSXRlbSgpIHtcbiAgICBjb25zdCBuZXdJdGVtID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbSkge1xuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLml0ZW1zKCkuaW5kZXhPZih0aGlzLnNlbGVjdGVkSXRlbSk7XG4gICAgICB0aGlzLml0ZW1zLnVwZGF0ZSgocHJldikgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkSXRlbXMgPSBbLi4ucHJldl07XG4gICAgICAgIHVwZGF0ZWRJdGVtc1tpbmRleF0gPSBuZXdJdGVtO1xuICAgICAgICByZXR1cm4gdXBkYXRlZEl0ZW1zO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXRlbXMudXBkYXRlKChwcmV2KSA9PiBbLi4ucHJldiwgbmV3SXRlbV0pO1xuICAgIH1cbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuaXRlbXMudXBkYXRlKChwcmV2KSA9PiBwcmV2LmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5leHRlbmREYXRhRXZlbnQuZW1pdCh0aGlzLml0ZW1zKCkpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIHRoaXMuaXRlbXMuc2V0KHRoaXMucHJvcGVydGllcygpKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuaXRlbXMuc2V0KFtdKTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIGVkaXRJdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcygpW2luZGV4XTtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZShpdGVtKTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XG4gIH1cbn1cbiIsIjx2ZXJiZW4tY2FyZFxuICB3aWR0aD1cIjI0cmVtXCJcbiAgYm9yZGVyUmFkaXVzPVwiMXJlbVwiXG4gIFtib3JkZXJdPVwiJzFweCBzb2xpZCAjRDRBMDA3J1wiXG4gIGJnQ29sb3I9XCIjRkZGRkZGXCJcbiAgY2xhc3M9XCJleHBvcnQtY2FyZFwiXG4+XG4gIDxkaXYgY2FyZC1oZWFkZXIgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cImhlYWRlci10aXRsZVwiPkV4cGFuZDwvaDQ+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJyZXNldC1idXR0b25cIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cIicjMzQ3OUU5J1wiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgIFtzdHlsZS5ib3JkZXJdPVwiJ25vbmUnXCJcbiAgICAgIFtzdHlsZS5jdXJzb3JdPVwiJ3BvaW50ZXInXCJcbiAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiJzEycHgnXCJcbiAgICAgIChjbGljayk9XCJyZXNldCgpXCJcbiAgICA+XG4gICAgICBSZXNldFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjYXJkLWJvZHkgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWhlYWRlclwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI+RW50aXR5PC9oMz5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiaW5mb1wiXG4gICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICBmaWxsPVwiZ3JleVwiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdmlzaWJsZUl0ZW1zKCk7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tbGFiZWxcIj5cbiAgICAgICAgICA8IS0tIDxpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIFtpZF09XCInaXRlbS0nICsgaVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgIC8+IC0tPlxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidpdGVtLScgKyBpXCIgY2xhc3M9XCJjaGVja2JveC1sYWJlbFwiPlxuICAgICAgICAgICAge3sgaXRlbS5OYW1lIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWFjdGlvbnNcIj5cbiAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgaWNvbj1cImVkaXRcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NzlFOVwiXG4gICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRJdGVtKGkpXCJcbiAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNFMjAwMDBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oaSlcIlxuICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiaXRlbXMoKS5sZW5ndGggPiAzXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3dBbGwoKVwiXG4gICAgICAgIGNsYXNzPVwic2hvdy1tb3JlXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW4+e3sgc2hvd0FsbCgpID8gXCJTaG93IGxlc3NcIiA6IFwiU2hvdyBtb3JlXCIgfX08L3NwYW4+XG4gICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgaWNvbj1cImNoZXZyb25cIlxuICAgICAgICAgIFt3aWR0aF09XCI4XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjZcIlxuICAgICAgICAgIGZpbGw9XCJibGFja1wiXG4gICAgICAgICAgc3Ryb2tlPVwiYmxhY2tcIlxuICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxociBjbGFzcz1cImRpdmlkZXJcIiAvPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5Qcm9wZXJ0aWVzPC9oMz5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiaW5mb1wiXG4gICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICBmaWxsPVwiZ3JleVwiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJhZGRJdGVtKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiXCI+TmFtZTwvcD5cbiAgICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBwcm9wZXJ0eSBuYW1lXCJcbiAgICAgICAgICAgIGJvcmRlcj1cIjFweCBzb2xpZCAjY2NjXCJcbiAgICAgICAgICAgIGJvcmRlclJhZGl1cz1cIjVweFwiXG4gICAgICAgICAgICB0ZXh0Q29sb3I9XCJibGFja1wiXG4gICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgZm9udFNpemU9XCIxMXB4XCJcbiAgICAgICAgICAgIGhlaWdodD1cIjIwcHhcIlxuICAgICAgICAgICAgcGQ9XCIycHggNHB4ICFpbXBvcnRhbnRcIlxuICAgICAgICAgICAgYmdDb2xvcj1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIFtzaG93Qm9yZGVyXT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dFcnJvck1lc3NhZ2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZXJyb3JQb3NpdGlvbl09XCInYm90dG9tJ1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJOYW1lXCJcbiAgICAgICAgICA+PC92ZXJiZW5hLWlucHV0PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJEYXRhVHlwZVwiPkRhdGEgVHlwZTwvbGFiZWw+XG4gICAgICAgICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgICAgICAgIGlkPVwiRGF0YVR5cGVcIlxuICAgICAgICAgICAgd2lkdGg9XCInMTAwJSdcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiJzEuMjVyZW0nXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IHR5cGVcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwiZGF0YVR5cGVzXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIkRhdGFUeXBlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC92ZXJiZW4tZHJvcC1kb3duPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxsYWJlbCBodG1sRm9yPVwiT3B0aW9uc1wiIGNsYXNzPVwibWItMlwiPkVudGVyIE9wdGlvbnM8L2xhYmVsPlxuICAgICAgICAgIDx2ZXJiZW4tY2hpcFxuICAgICAgICAgICAgbGFiZWw9XCJPcHRpb25zXCJcbiAgICAgICAgICAgIGlkPVwiT3B0aW9uc1wiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0VudGVyIE9wdGlvbnMnXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk9wdGlvbnNcIlxuICAgICAgICAgID48L3ZlcmJlbi1jaGlwPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJEZWZhdWx0VmFsdWVcIj5EZWZhdWx0IFZhbHVlPC9sYWJlbD5cblxuICAgICAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICAgICBbcGxhY2VIb2xkZXJdPVwiJ0VudGVyIGRlZmF1bHQgdGV4dCdcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiRGVmYXVsdFZhbHVlXCJcbiAgICAgICAgICAgIGlkPVwiRGVmYXVsdFZhbHVlXCJcbiAgICAgICAgICAgIGxhYmVsPVwiRGVmYXVsdCBWYWx1ZSAob3B0aW9uYWwpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwibWItMlwiPlJlcXVpcmVkPC9wPlxuXG4gICAgICAgICAgPHZlcmJlbmEtc3dpdGNoXG4gICAgICAgICAgICBsYWJlbD1cIlJlcXVpcmVkXCJcbiAgICAgICAgICAgIFtvbkNvbG9yXT1cIicjMUEyMzdFJ1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJJc1JlcXVpcmVkXCJcbiAgICAgICAgICA+PC92ZXJiZW5hLXN3aXRjaD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlLXJhbmdlXCI+XG4gICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgICAgIG5hbWU9XCJtaW5WYWx1ZVwiXG4gICAgICAgICAgICBsYWJlbD1cIk1pbiBWYWx1ZVwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNaW5WYWx1ZVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgbmFtZT1cIm1heFZhbHVlXCJcbiAgICAgICAgICAgIGxhYmVsPVwiTWF4IFZhbHVlXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1pblZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cImFkZC1idXR0b24gbWwtYXV0b1wiXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgID5cbiAgICAgICAgICArIEFkZFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L3NlY3Rpb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNhcmQtZm9vdGVyIGNsYXNzPVwiY2FyZC1mb290ZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIj5FeHRlbmQ8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3ZlcmJlbi1jYXJkPlxuIl19
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHRlbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4dGVuZC9kYXRhLWV4dGVuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXh0ZW5kL2RhdGEtZXh0ZW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFrQixRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7OztBQU8vRCxNQUFNLE9BQU8sbUJBQW1CO0lBWVY7SUFYcEIsVUFBVSxHQUFHLEtBQUssQ0FBbUIsRUFBRSxDQUFDLENBQUM7SUFDekMsZUFBZSxHQUFHLE1BQU0sRUFBb0IsQ0FBQztJQUU3QyxLQUFLLENBQW1DO0lBQ3hDLE9BQU8sR0FBNEIsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzFELFlBQVksQ0FBMkI7SUFDdkMsSUFBSSxDQUFZO0lBQ2hCLFlBQVksR0FBMEIsSUFBSSxDQUFDO0lBRTNDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXBDLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUs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QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO3dHQTdHVSxtQkFBbUI7NEZBQW5CLG1CQUFtQiwyUENqQmhDLGdpS0FvTEE7OzRGRG5LYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgU2lnbmFsLFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGFFeHRlbmRJdGVtLCBEYXRhVHlwZSB9IGZyb20gJy4vZGF0YS1leHRlbmQudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGF0YS1leHRlbmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1leHRlbmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZGF0YS1leHRlbmQuY29tcG9uZW50LmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIERhdGFFeHRlbmRDb21wb25lbnQge1xuICBwcm9wZXJ0aWVzID0gaW5wdXQ8RGF0YUV4dGVuZEl0ZW1bXT4oW10pO1xuICBleHRlbmREYXRhRXZlbnQgPSBvdXRwdXQ8RGF0YUV4dGVuZEl0ZW1bXT4oKTtcblxuICBpdGVtczogV3JpdGFibGVTaWduYWw8RGF0YUV4dGVuZEl0ZW1bXT47XG4gIHNob3dBbGw6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgdmlzaWJsZUl0ZW1zOiBTaWduYWw8RGF0YUV4dGVuZEl0ZW1bXT47XG4gIGZvcm06IEZvcm1Hcm91cDtcbiAgc2VsZWN0ZWRJdGVtOiBEYXRhRXh0ZW5kSXRlbSB8IG51bGwgPSBudWxsO1xuXG4gIGRhdGFUeXBlcyA9IE9iamVjdC52YWx1ZXMoRGF0YVR5cGUpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy52aXNpYmxlSXRlbXMgPSBjb21wdXRlZCgoKSA9PlxuICAgICAgdGhpcy5zaG93QWxsKCkgPyB0aGlzLml0ZW1zKCkgOiB0aGlzLml0ZW1zKCkuc2xpY2UoMCwgMylcbiAgICApO1xuICAgIC8vIGVmZmVjdCgoKSA9PiB7XG4gICAgLy8gICB0aGlzLml0ZW1zLnNldCh0aGlzLnByb3BlcnRpZXMoKSk7XG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLml0ZW1zID0gc2lnbmFsPERhdGFFeHRlbmRJdGVtW10+KFtdKTtcblxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgTmFtZTogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgIERlZmF1bHRWYWx1ZTogWycnXSxcbiAgICAgIERhdGFUeXBlOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgTWF4VmFsdWU6IFswXSxcbiAgICAgIE1pblZhbHVlOiBbMF0sXG4gICAgICBJc1JlcXVpcmVkOiBbZmFsc2VdLFxuICAgICAgT3B0aW9uczogWycnXSxcbiAgICB9KTtcblxuICAgIHRoaXMuZm9ybS5nZXQoJ0RhdGFUeXBlJyk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHZhbHVlID09PSBEYXRhVHlwZS5TaW5nbGVTZWxlY3Rpb24gfHxcbiAgICAgICAgdmFsdWUgPT09IERhdGFUeXBlLk11bHRpU2VsZWN0aW9uXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnT3B0aW9ucycpPy5lbmFibGUoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnT3B0aW9ucycpPy5zZXRWYWx1ZSgnJyk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnT3B0aW9ucycpPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnT3B0aW9ucycpPy5kaXNhYmxlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWUgPT09IERhdGFUeXBlLk51bWJlciB8fFxuICAgICAgICB2YWx1ZSA9PT0gRGF0YVR5cGUuRGVjaW1hbCB8fFxuICAgICAgICB2YWx1ZSA9PT0gRGF0YVR5cGUuU2luZ2xlU2VsZWN0aW9uIHx8XG4gICAgICAgIHZhbHVlID09PSBEYXRhVHlwZS5NdWx0aVNlbGVjdGlvblxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ01heFZhbHVlJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWluVmFsdWUnKT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09PSBEYXRhVHlwZS5UZXh0KSB7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ01heFZhbHVlJyk/LmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdNaW5WYWx1ZScpPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWF4VmFsdWUnKT8uZGlzYWJsZSgpO1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdNaW5WYWx1ZScpPy5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvcm0uZ2V0KCdNYXhWYWx1ZScpPy5lbmFibGUoKTtcbiAgICAgICAgdGhpcy5mb3JtLmdldCgnTWluVmFsdWUnKT8uZW5hYmxlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybS5nZXQoJ09wdGlvbnMnKT8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0pO1xuICB9XG5cbiAgdG9nZ2xlU2hvd0FsbCgpIHtcbiAgICB0aGlzLnNob3dBbGwudXBkYXRlKChwcmV2KSA9PiAhcHJldik7XG4gIH1cblxuICBhZGRJdGVtKCkge1xuICAgIGNvbnN0IG5ld0l0ZW0gPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlbXMoKS5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtKTtcbiAgICAgIHRoaXMuaXRlbXMudXBkYXRlKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRJdGVtcyA9IFsuLi5wcmV2XTtcbiAgICAgICAgdXBkYXRlZEl0ZW1zW2luZGV4XSA9IG5ld0l0ZW07XG4gICAgICAgIHJldHVybiB1cGRhdGVkSXRlbXM7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcy51cGRhdGUoKHByZXYpID0+IFsuLi5wcmV2LCBuZXdJdGVtXSk7XG4gICAgfVxuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5pdGVtcy51cGRhdGUoKHByZXYpID0+IHByZXYuZmlsdGVyKChfLCBpKSA9PiBpICE9PSBpbmRleCkpO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmV4dGVuZERhdGFFdmVudC5lbWl0KHRoaXMuaXRlbXMoKSk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5pdGVtcy5zZXQodGhpcy5wcm9wZXJ0aWVzKCkpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5pdGVtcy5zZXQoW10pO1xuICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICB9XG5cbiAgZWRpdEl0ZW0oaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zKClbaW5kZXhdO1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKGl0ZW0pO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gaXRlbTtcbiAgfVxufVxuIiwiPHZlcmJlbi1jYXJkXG4gIHdpZHRoPVwiMjRyZW1cIlxuICBib3JkZXJSYWRpdXM9XCIxcmVtXCJcbiAgW2JvcmRlcl09XCInMXB4IHNvbGlkICNENEEwMDcnXCJcbiAgYmdDb2xvcj1cIiNGRkZGRkZcIlxuICBjbGFzcz1cImV4cG9ydC1jYXJkXCJcbj5cbiAgPGRpdiBjYXJkLWhlYWRlciBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgPGg0IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+RXhwYW5kPC9oND5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInJlc2V0LWJ1dHRvblwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiJyMzNDc5RTknXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgW3N0eWxlLmJvcmRlcl09XCInbm9uZSdcIlxuICAgICAgW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIlxuICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCInMTJweCdcIlxuICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxuICAgID5cbiAgICAgIFJlc2V0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNhcmQtYm9keSBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5FbnRpdHk8L2gzPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIGljb249XCJpbmZvXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgIGZpbGw9XCJncmV5XCJcbiAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2aXNpYmxlSXRlbXMoKTsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS1sYWJlbFwiPlxuICAgICAgICAgIDwhLS0gPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW2lkXT1cIidpdGVtLScgKyBpXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgLz4gLS0+XG4gICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2l0ZW0tJyArIGlcIiBjbGFzcz1cImNoZWNrYm94LWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBpdGVtLk5hbWUgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0tYWN0aW9uc1wiPlxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiZWRpdFwiXG4gICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICBzdHJva2U9XCIjMzQ3OUU5XCJcbiAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdEl0ZW0oaSlcIlxuICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgc3Ryb2tlPVwiI0UyMDAwMFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbShpKVwiXG4gICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpdGVtcygpLmxlbmd0aCA+IDNcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2hvd0FsbCgpXCJcbiAgICAgICAgY2xhc3M9XCJzaG93LW1vcmVcIlxuICAgICAgPlxuICAgICAgICA8c3Bhbj57eyBzaG93QWxsKCkgPyBcIlNob3cgbGVzc1wiIDogXCJTaG93IG1vcmVcIiB9fTwvc3Bhbj5cbiAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICBpY29uPVwiY2hldnJvblwiXG4gICAgICAgICAgW3dpZHRoXT1cIjhcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiNlwiXG4gICAgICAgICAgZmlsbD1cImJsYWNrXCJcbiAgICAgICAgICBzdHJva2U9XCJibGFja1wiXG4gICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICAgPGhyIGNsYXNzPVwiZGl2aWRlclwiIC8+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1oZWFkZXJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwic2VjdGlvbi10aXRsZVwiPlByb3BlcnRpZXM8L2gzPlxuICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgIGljb249XCJpbmZvXCJcbiAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgIGZpbGw9XCJncmV5XCJcbiAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cImFkZEl0ZW0oKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJcIj5OYW1lPC9wPlxuICAgICAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByb3BlcnR5IG5hbWVcIlxuICAgICAgICAgICAgYm9yZGVyPVwiMXB4IHNvbGlkICNjY2NcIlxuICAgICAgICAgICAgYm9yZGVyUmFkaXVzPVwiNXB4XCJcbiAgICAgICAgICAgIHRleHRDb2xvcj1cImJsYWNrXCJcbiAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICBmb250U2l6ZT1cIjExcHhcIlxuICAgICAgICAgICAgaGVpZ2h0PVwiMjBweFwiXG4gICAgICAgICAgICBwZD1cIjJweCA0cHggIWltcG9ydGFudFwiXG4gICAgICAgICAgICBiZ0NvbG9yPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgW3Nob3dCb3JkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc2hvd0Vycm9yTWVzc2FnZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtlcnJvclBvc2l0aW9uXT1cIidib3R0b20nXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk5hbWVcIlxuICAgICAgICAgID48L3ZlcmJlbmEtaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIkRhdGFUeXBlXCI+RGF0YSBUeXBlPC9sYWJlbD5cbiAgICAgICAgICA8dmVyYmVuLWRyb3AtZG93blxuICAgICAgICAgICAgaWQ9XCJEYXRhVHlwZVwiXG4gICAgICAgICAgICB3aWR0aD1cIicxMDAlJ1wiXG4gICAgICAgICAgICBoZWlnaHQ9XCInMS4yNXJlbSdcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdHlwZVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJkYXRhVHlwZXNcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiRGF0YVR5cGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L3ZlcmJlbi1kcm9wLWRvd24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJPcHRpb25zXCIgY2xhc3M9XCJtYi0yXCI+RW50ZXIgT3B0aW9uczwvbGFiZWw+XG4gICAgICAgICAgPHZlcmJlbi1jaGlwXG4gICAgICAgICAgICBsYWJlbD1cIk9wdGlvbnNcIlxuICAgICAgICAgICAgaWQ9XCJPcHRpb25zXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRW50ZXIgT3B0aW9ucydcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiT3B0aW9uc1wiXG4gICAgICAgICAgPjwvdmVyYmVuLWNoaXA+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cIkRlZmF1bHRWYWx1ZVwiPkRlZmF1bHQgVmFsdWU8L2xhYmVsPlxuXG4gICAgICAgICAgPHZlcmJlbmEtaW5wdXRcbiAgICAgICAgICAgIFtwbGFjZUhvbGRlcl09XCInRW50ZXIgZGVmYXVsdCB0ZXh0J1wiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJEZWZhdWx0VmFsdWVcIlxuICAgICAgICAgICAgaWQ9XCJEZWZhdWx0VmFsdWVcIlxuICAgICAgICAgICAgbGFiZWw9XCJEZWZhdWx0IFZhbHVlIChvcHRpb25hbClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHAgY2xhc3M9XCJtYi0yXCI+UmVxdWlyZWQ8L3A+XG5cbiAgICAgICAgICA8dmVyYmVuYS1zd2l0Y2hcbiAgICAgICAgICAgIGxhYmVsPVwiUmVxdWlyZWRcIlxuICAgICAgICAgICAgW29uQ29sb3JdPVwiJyMxQTIzN0UnXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIklzUmVxdWlyZWRcIlxuICAgICAgICAgID48L3ZlcmJlbmEtc3dpdGNoPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUtcmFuZ2VcIj5cbiAgICAgICAgICA8dmVyYmVuYS1pbnB1dFxuICAgICAgICAgICAgW3R5cGVdPVwiJ251bWJlcidcIlxuICAgICAgICAgICAgbmFtZT1cIm1pblZhbHVlXCJcbiAgICAgICAgICAgIGxhYmVsPVwiTWluIFZhbHVlXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1pblZhbHVlXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDx2ZXJiZW5hLWlucHV0XG4gICAgICAgICAgICBbdHlwZV09XCInbnVtYmVyJ1wiXG4gICAgICAgICAgICBuYW1lPVwibWF4VmFsdWVcIlxuICAgICAgICAgICAgbGFiZWw9XCJNYXggVmFsdWVcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWluVmFsdWVcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWRcIlxuICAgICAgICAgIGNsYXNzPVwiYWRkLWJ1dHRvbiBtbC1hdXRvXCJcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgPlxuICAgICAgICAgICsgQWRkXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9mb3JtPlxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2FyZC1mb290ZXIgY2xhc3M9XCJjYXJkLWZvb3RlclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJleHBvcnQtYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiPkV4dGVuZDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdmVyYmVuLWNhcmQ+XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, computed, effect, input, output, signal, } from '@angular/core';
|
|
2
|
-
import { FormArray
|
|
2
|
+
import { FormArray } from '@angular/forms';
|
|
3
3
|
import { DataImportService } from './data-import.service';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "./data-import.service";
|
|
@@ -90,7 +90,7 @@ export class DataImportComponent {
|
|
|
90
90
|
});
|
|
91
91
|
this.previewColumnsList = computed(() => {
|
|
92
92
|
return this.previewColumns()
|
|
93
|
-
.filter((col) => col.importKey || col.formControlName)
|
|
93
|
+
.filter((col) => col.importKey || col.importBy || col.formControlName)
|
|
94
94
|
.map((column) => {
|
|
95
95
|
const matchingTemplate = this.columnTemplates().find((t) => t.columnId === column.id);
|
|
96
96
|
if (matchingTemplate) {
|
|
@@ -115,7 +115,7 @@ export class DataImportComponent {
|
|
|
115
115
|
this.headers = computed(() => {
|
|
116
116
|
return (this.fields() ??
|
|
117
117
|
this.previewColumnsList()
|
|
118
|
-
.filter((col) => col.importKey)
|
|
118
|
+
.filter((col) => col.importKey || col.importBy)
|
|
119
119
|
.map((col) => col.header.toString()));
|
|
120
120
|
});
|
|
121
121
|
}
|
|
@@ -180,4 +180,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImpo
|
|
|
180
180
|
type: Component,
|
|
181
181
|
args: [{ selector: 'lib-data-import', providers: [DataImportService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Import</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <div class=\"flex gap-4 justify-between\">\n <button class=\"export-button\" (click)=\"handleTemplateExport()\">\n Download Template\n </button>\n <label for=\"fileInput\" class=\"export-button\">Upload File</label>\n </div>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div\n class=\"drop-area\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <p>\n Drag and drop files here or\n <label for=\"fileInput\" [style.color]=\"'#3479E9'\"\n >click to browse</label\n >\n </p>\n <input\n type=\"file\"\n id=\"fileInput\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n accept=\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\n multiple\n />\n </div>\n <div *ngIf=\"files.length > 0\">\n <h3>Uploaded Files:</h3>\n <ul>\n <li *ngFor=\"let file of files\">{{ file.name }}</li>\n </ul>\n </div>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button\n [disabled]=\"service.importedData().length < 1\"\n class=\"export-button\"\n (click)=\"save()\"\n >\n Import\n </button>\n </div>\n</verben-card>\n\n<!-- Modal Component -->\n<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'large'\"\n [mode]=\"'dialogue'\"\n [customClass]=\"'my-modal-custom-class'\"\n [disableFooter]=\"false\"\n [modalData]=\"[{ data: {} }]\"\n [isVisible]=\"showPreview\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n dialogueWidth=\"85%\"\n>\n <a download=\"\"></a>\n</verben-dialogue>\n\n<!-- Define templates -->\n<ng-template #headerTemplate>\n <h2>Upload Preview</h2>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"flex gap-4 items-center justify-between my-4\">\n <p class=\"\">Total Items: {{ service.importedData().length }}</p>\n\n <p class=\"\">Duplicates: {{ duplicateIndexSet.size }}</p>\n\n <p class=\"\">Invalid Items: {{ invalidIndexSet.size }}</p>\n\n <verben-drop-down\n [multiselect]=\"true\"\n placeholder=\"Find duplicates by\"\n [options]=\"headers()\"\n [ngModel]=\"uniqueIdentifiers()\"\n (ngModelChange)=\"uniqueIdentifiers.set($event)\"\n ></verben-drop-down>\n </div>\n <div style=\"max-height: min(75vh, 780px); overflow: auto\">\n <lib-data-table\n [data]=\"service.importedData()\"\n [columns]=\"previewColumnsList()\"\n [formGroupConfig]=\"formGroupConfig()\"\n [useVirtualScroll]=\"true\"\n (rowSave)=\"service.addRow($event)\"\n >\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div class=\"footer-buttons flex gap-4 items-center justify-between my-4\">\n <button\n class=\"btn btn-secondary cancel-button\"\n (click)=\"showPreview = false\"\n >\n Cancel\n </button>\n <button class=\"btn btn-primary export-button\" (click)=\"save()\">\n Complete\n </button>\n </div>\n</ng-template>\n", styles: [".drop-area{border:2px dashed #ccc;padding:20px;text-align:center;cursor:pointer}.drop-area.drag-active{background-color:#eee}.export-card{font-size:.75rem;z-index:10}.card-header,.card-footer{display:flex;justify-content:space-between;align-items:center;background-color:transparent;padding:4px!important}.header-title{font-weight:600;font-size:.8125rem}.card-body{display:flex;flex-direction:column;gap:.5rem;padding-top:-8px!important}.section{display:flex;flex-direction:column;gap:.5rem}.section-header{display:flex;justify-content:space-between;align-items:center}.section-title{font-size:.8125rem}.item{display:flex;justify-content:space-between;align-items:center}.item-label{display:flex;align-items:center;gap:.5rem}.checkbox-label{line-height:1}.item-actions{display:flex;gap:.5rem}.show-more{display:flex;gap:.5em;align-items:center;color:#6b7280;cursor:pointer}.divider{border:none;border-top:1px solid #e8eaf1}.operation-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.add-button{margin-top:.5rem;margin-left:auto;outline:none;border:none;background-color:transparent;color:#3479e9;font-size:.75rem;font-weight:500;cursor:pointer}.footer-buttons{display:flex;gap:.5rem;align-items:center;justify-content:space-between;width:100%}.cancel-button,.export-button{outline:none;border:none;padding:.2rem 1.6rem;font-size:.75rem;font-weight:600;cursor:pointer}.cancel-button{background-color:#404040;color:#fff}.export-button{background-color:#ffe681;color:#404040}.value-range{display:flex;gap:.5rem;align-items:center}.action-buttons{display:flex;align-items:center;gap:2rem}\n"] }]
|
|
182
182
|
}], ctorParameters: () => [{ type: i1.DataImportService }] });
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWltcG9ydC9kYXRhLWltcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtaW1wb3J0L2RhdGEtaW1wb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUVMLFNBQVMsR0FHVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7O0FBUzFELE1BQU0sT0FBTyxtQkFBbUI7SUE0RFg7SUEzRG5CLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF5QixDQUFDO0lBQ3pELGVBQWUsR0FBRyxLQUFLLEVBSXBCLENBQUM7SUFDSjs7T0FFRztJQUNILE1BQU0sR0FBRyxLQUFLLEVBQVksQ0FBQztJQUMzQixLQUFLLEdBQUcsS0FBSyxDQUFTLGlCQUFpQixDQUFDLENBQUM7SUFDekMsZUFBZSxHQUFHLEtBQUssQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDeEQsTUFBTSxHQUFHLEtBQUssRUFBK0IsQ0FBQztJQUM5Qzs7T0FFRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQU8sQ0FBQztJQUMzQjs7O09BR0c7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQTRDLENBQUM7SUFDckU7O09BRUc7SUFDSCxtQkFBbUIsR0FBRyxNQUFNLEVBQVksQ0FBQztJQUN6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RSxRQUFRLENBQUM7UUFDbEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLGlEQUFpRDtJQUNuRCxDQUFDO3dHQXpNVSxtQkFBbUI7NEZBQW5CLG1CQUFtQixreENBSG5CLENBQUMsaUJBQWlCLENBQUMsMEJDNUJoQyw4OEtBZ01BOzs0RkRqS2EsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGlCQUFpQixhQUdoQixDQUFDLGlCQUFpQixDQUFDLG1CQUNiLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBTaWduYWwsXG4gIHNpZ25hbCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29sdW1uRGVmaW5pdGlvbixcbiAgRm9ybUdyb3VwQ29uZmlnLFxufSBmcm9tICd2ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdGFibGUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQXJyYXksXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBEYXRhSW1wb3J0U2VydmljZSB9IGZyb20gJy4vZGF0YS1pbXBvcnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLWltcG9ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWltcG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLWltcG9ydC5jb21wb25lbnQuY3NzJyxcbiAgcHJvdmlkZXJzOiBbRGF0YUltcG9ydFNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUltcG9ydENvbXBvbmVudDxUIGV4dGVuZHMge30+IHtcbiAgcHJldmlld0NvbHVtbnMgPSBpbnB1dC5yZXF1aXJlZDxDb2x1bW5EZWZpbml0aW9uPFQ+W10+KCk7XG4gIGZvcm1Hcm91cENvbmZpZyA9IGlucHV0PFxuICAgIEZvcm1Hcm91cENvbmZpZzx7XG4gICAgICBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sO1xuICAgIH0+XG4gID4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBpbXBvcnRLZXkgb2YgcHJldmlld0NvbHVtbnMgaW5zdGVhZFxuICAgKi9cbiAgZmllbGRzID0gaW5wdXQ8c3RyaW5nW10+KCk7XG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nPignZXhwb3J0LXRlbXBsYXRlJyk7XG4gIGNvbHVtblRlbXBsYXRlcyA9IGlucHV0PHJlYWRvbmx5IENvbHVtbkRpcmVjdGl2ZVtdPihbXSk7XG4gIHBhcnNlciA9IGlucHV0PChkYXRhOiBhbnkpID0+IFBhcnRpYWw8VD5bXT4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSByZW1vdmUsIG5vdyBoYW5kbGVkIGludGVybmFsbHlcbiAgICovXG4gIHByZXZpZXdEYXRhID0gaW5wdXQ8VFtdPigpO1xuICAvKipcbiAgICogUGFzcyB0aGUgbWV0aG9kIHRvIHVzZSB0aGUgaW1wb3J0ZWQgZGF0YSxcbiAgICogYW5kIGV2ZW50dWFsbHkgcmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWxseSB1c2VkXG4gICAqL1xuICBvbkltcG9ydENvbXBsZXRlID0gaW5wdXQ8KGRhdGE6IFBhcnRpYWw8VD5bXSkgPT4gUHJvbWlzZTxib29sZWFuPj4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSByZW1vdmUsIG5vdyBoYW5kbGVkIGludGVybmFsbHlcbiAgICovXG4gIGV4cG9ydFRlbXBsYXRlRXZlbnQgPSBvdXRwdXQ8c3RyaW5nW10+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgcmVtb3ZlLCBub3cgaGFuZGxlZCBpbnRlcm5hbGx5XG4gICAqL1xuICBpbXBvcnRFdmVudCA9IG91dHB1dDxGaWxlPigpO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBvbkltcG9ydENvbXBsZXRlIGlucHV0IGluc3RlYWRcbiAgICovXG4gIGltcG9ydEV2ZW50RGF0YSA9IG91dHB1dDxQYXJ0aWFsPFQ+W10+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgcmVtb3ZlLCBub3cgaGFuZGxlZCBpbnRlcm5hbGx5XG4gICAqL1xuICByb3dTYXZlID0gb3V0cHV0PHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGtleTogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGRhdGE6IFBhcnRpYWw8VD47XG4gIH0+KCk7XG5cbiAgLy8gZGF0YTogU2lnbmFsPChUICYgeyBpc0R1cGxpY2F0ZTogYm9vbGVhbiB9KVtdPjtcbiAgcHJldmlld0NvbHVtbnNMaXN0OiBTaWduYWw8Q29sdW1uRGVmaW5pdGlvbjxUPltdPjtcbiAgZm9ybXMgPSBuZXcgRm9ybUFycmF5PEZvcm1Hcm91cD4oW10pO1xuICB1bmlxdWVJZGVudGlmaWVyczogV3JpdGFibGVTaWduYWw8c3RyaW5nW10+ID0gc2lnbmFsKFtdKTtcbiAgLy8gZHVwbGljYXRlRGF0YU1hcDogTWFwPHN0cmluZywgbnVtYmVyPiA9IG5ldyBNYXAoKTtcbiAgZHVwbGljYXRlSW5kZXhTZXQgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgaW52YWxpZEluZGV4U2V0ID0gbmV3IE1hcDxudW1iZXIsIENvbHVtbkRpcmVjdGl2ZVsnY29sdW1uSWQnXVtdPigpO1xuXG4gIGhlYWRlcnM6IFNpZ25hbDxzdHJpbmdbXT47XG5cbiAgcHJpdmF0ZSBfZXh0OiAneGxzeCcgfCAneGxzJyB8ICdjc3YnID0gJ3hsc3gnO1xuXG4gIGZpbGVzOiBGaWxlW10gPSBbXTtcbiAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBzaG93UHJldmlldyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOiBEYXRhSW1wb3J0U2VydmljZTxUPikge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBjb25zdCBjb2x1bW5zID0gdGhpcy5wcmV2aWV3Q29sdW1uc0xpc3QoKTtcblxuICAgICAgY29uc3QgaWRlbnRpZmllcnMgPSB0aGlzLnVuaXF1ZUlkZW50aWZpZXJzKCk7XG5cbiAgICAgIHRoaXMuc2VydmljZS5pbXBvcnRlZERhdGEoKT8uZm9yRWFjaCgoZCwgaSwgYXJyKSA9PiB7XG4gICAgICAgIGlmIChzZXJ2aWNlLmlzRHVwbGljYXRlKGQsIGFyciwgaWRlbnRpZmllcnMpKSB7XG4gICAgICAgICAgdGhpcy5kdXBsaWNhdGVJbmRleFNldC5hZGQoaSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb2x1bW5zXG4gICAgICAgIC8vICAgLmZpbHRlcigoeyB2YWxpZGF0b3JGbiB9KSA9PiB2YWxpZGF0b3JGbiAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAvLyAgIC5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgLy8gICAgIGNvbnN0IGludmFsaWRGaWVsZHMgPSBPYmplY3QuZW50cmllcyhkKS5yZWR1Y2U8c3RyaW5nW10+KFxuICAgICAgICAvLyAgICAgICAoZiwgW2ssIHZdLCBpKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaWYgKFxuICAgICAgICAvLyAgICAgICAgICAgY29sdW1uLnZhbGlkYXRvckZuICYmXG4gICAgICAgIC8vICAgICAgICAgICAhY29sdW1uLnZhbGlkYXRvckZuKHYgYXMgVFtrZXlvZiBUXSlcbiAgICAgICAgLy8gICAgICAgICApIHtcbiAgICAgICAgLy8gICAgICAgICAgIGYucHVzaChjb2x1bW4uaWQpO1xuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgLy8gICAgICAgfSxcbiAgICAgICAgLy8gICAgICAgW11cbiAgICAgICAgLy8gICAgICk7XG5cbiAgICAgICAgLy8gICAgIGlmIChpbnZhbGlkRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gICAgICAgdGhpcy5pbnZhbGlkSW5kZXhTZXQuc2V0KGksIGludmFsaWRGaWVsZHMpO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdDb2x1bW5zTGlzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnByZXZpZXdDb2x1bW5zKClcbiAgICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuaW1wb3J0S2V5IHx8IGNvbC5mb3JtQ29udHJvbE5hbWUpXG4gICAgICAgIC5tYXAoKGNvbHVtbikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nVGVtcGxhdGUgPSB0aGlzLmNvbHVtblRlbXBsYXRlcygpLmZpbmQoXG4gICAgICAgICAgICAodCkgPT4gdC5jb2x1bW5JZCA9PT0gY29sdW1uLmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobWF0Y2hpbmdUZW1wbGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgICAgICAvLyBhY2Nlc3NvcktleTogY29sdW1uLmltcG9ydEtleSxcbiAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlOiBtYXRjaGluZ1RlbXBsYXRlLmNlbGxUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgY2VsbEVkaXRUZW1wbGF0ZTogbWF0Y2hpbmdUZW1wbGF0ZS5jZWxsRWRpdFRlbXBsYXRlLFxuICAgICAgICAgICAgICBoZWFkZXJUZW1wbGF0ZTogbWF0Y2hpbmdUZW1wbGF0ZS5oZWFkZXJUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgZm9vdGVyVGVtcGxhdGU6IG1hdGNoaW5nVGVtcGxhdGUuZm9vdGVyVGVtcGxhdGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgICB9KVxuICAgICAgICAuY29uY2F0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ2FjdGlvbnMnLFxuICAgICAgICAgICAgaGVhZGVyOiAnQWN0aW9ucycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmhlYWRlcnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLmZpZWxkcygpID8/XG4gICAgICAgIHRoaXMucHJldmlld0NvbHVtbnNMaXN0KClcbiAgICAgICAgICAuZmlsdGVyKChjb2wpID0+IGNvbC5pbXBvcnRLZXkpXG4gICAgICAgICAgLm1hcCgoY29sKSA9PiBjb2wuaGVhZGVyLnRvU3RyaW5nKCkpXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICB9XG5cbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gIH1cblxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgdGhpcy5maWxlcyA9IEFycmF5LmZyb20oZXZlbnQuZGF0YVRyYW5zZmVyIS5maWxlcyk7XG5cbiAgICB0aGlzLnNlcnZpY2UuaGFuZGxlSW1wb3J0KFxuICAgICAgdGhpcy5maWxlc1swXSxcbiAgICAgIHRoaXMucHJldmlld0NvbHVtbnNMaXN0KCksXG4gICAgICB0aGlzLnBhcnNlcigpXG4gICAgKTtcbiAgICAvLyB0aGlzLmltcG9ydEV2ZW50LmVtaXQodGhpcy5maWxlc1swXSk7XG4gICAgdGhpcy5zaG93UHJldmlldyA9IHRydWU7XG4gIH1cblxuICBvbkZpbGVTZWxlY3RlZChldmVudDogYW55KSB7XG4gICAgdGhpcy5maWxlcyA9IEFycmF5LmZyb20oZXZlbnQudGFyZ2V0LmZpbGVzKTtcbiAgICB0aGlzLnNlcnZpY2UuaGFuZGxlSW1wb3J0KFxuICAgICAgdGhpcy5maWxlc1swXSxcbiAgICAgIHRoaXMucHJldmlld0NvbHVtbnNMaXN0KCksXG4gICAgICB0aGlzLnBhcnNlcigpXG4gICAgKTtcblxuICAgIGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuXG4gICAgLy8gdGhpcy5pbXBvcnRFdmVudC5lbWl0KHRoaXMuZmlsZXNbMF0pO1xuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSB0cnVlO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5maWxlcyA9IFtdO1xuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSBmYWxzZTtcbiAgICB0aGlzLnNlcnZpY2UuY2xlYXJEYXRhKCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdQUkVWREFUQScsIHRoaXMuc2VydmljZS5pbXBvcnRlZERhdGEoKSk7XG4gICAgY29uc3Qgb25Db21wbGV0ZSA9IHRoaXMub25JbXBvcnRDb21wbGV0ZSgpO1xuICAgIGlmIChvbkNvbXBsZXRlKSB7XG4gICAgICBvbkNvbXBsZXRlKHRoaXMuc2VydmljZS5pbXBvcnRlZERhdGEoKSkudGhlbigoc3VjY2VzcykgPT4ge1xuICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgIHRoaXMuc2hvd1ByZXZpZXcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW1wb3J0RXZlbnREYXRhLmVtaXQodGhpcy5zZXJ2aWNlLmltcG9ydGVkRGF0YSgpIHx8IFtdKTtcbiAgICAgIHRoaXMuc2hvd1ByZXZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXRDb250cm9sTmFtZXMoKSB7XG4gICAgY29uc3QgY29udHJvbHMgPSB0aGlzLmZvcm1Hcm91cENvbmZpZygpPy5jb250cm9scztcbiAgICBpZiAoY29udHJvbHMpIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhjb250cm9scyk7XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGhhbmRsZVRlbXBsYXRlRXhwb3J0KCkge1xuICAgIHRoaXMuc2VydmljZS5oYW5kbGVUZW1wbGF0ZUV4cG9ydCh0aGlzLmhlYWRlcnMoKSwgdGhpcy50aXRsZSgpKTtcbiAgICAvLyB0aGlzLmV4cG9ydFRlbXBsYXRlRXZlbnQuZW1pdCh0aGlzLmhlYWRlcnMoKSk7XG4gIH1cblxuICAvLyBnZXRGb3JtQ29udHJvbChpbmRleDogbnVtYmVyLCBmaWVsZDogc3RyaW5nKSB7XG4gIC8vICAgY29uc3QgY29udHJvbCA9IHRoaXMuLmdldChpbmRleCk/LmdldChmaWVsZCkgYXMgRm9ybUNvbnRyb2w8YW55PjtcbiAgLy8gICBjb25zb2xlLmxvZyhjb250cm9sKTtcbiAgLy8gICByZXR1cm4gY29udHJvbDtcbiAgLy8gfVxufVxuIiwiPHZlcmJlbi1jYXJkXG4gIHdpZHRoPVwiMjRyZW1cIlxuICBib3JkZXJSYWRpdXM9XCIxcmVtXCJcbiAgW2JvcmRlcl09XCInMXB4IHNvbGlkICNENEEwMDcnXCJcbiAgYmdDb2xvcj1cIiNGRkZGRkZcIlxuICBjbGFzcz1cImV4cG9ydC1jYXJkXCJcbj5cbiAgPGRpdiBjYXJkLWhlYWRlciBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgPGg0IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+SW1wb3J0PC9oND5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInJlc2V0LWJ1dHRvblwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiJyMzNDc5RTknXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgW3N0eWxlLmJvcmRlcl09XCInbm9uZSdcIlxuICAgICAgW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIlxuICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCInMTJweCdcIlxuICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxuICAgID5cbiAgICAgIFJlc2V0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNhcmQtYm9keSBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImV4cG9ydC1idXR0b25cIiAoY2xpY2spPVwiaGFuZGxlVGVtcGxhdGVFeHBvcnQoKVwiPlxuICAgICAgICBEb3dubG9hZCBUZW1wbGF0ZVxuICAgICAgPC9idXR0b24+XG4gICAgICA8bGFiZWwgZm9yPVwiZmlsZUlucHV0XCIgY2xhc3M9XCJleHBvcnQtYnV0dG9uXCI+VXBsb2FkIEZpbGU8L2xhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxociBjbGFzcz1cImRpdmlkZXJcIiAvPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRyb3AtYXJlYVwiXG4gICAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxwPlxuICAgICAgICAgIERyYWcgYW5kIGRyb3AgZmlsZXMgaGVyZSBvclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaWxlSW5wdXRcIiBbc3R5bGUuY29sb3JdPVwiJyMzNDc5RTknXCJcbiAgICAgICAgICAgID5jbGljayB0byBicm93c2U8L2xhYmVsXG4gICAgICAgICAgPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBpZD1cImZpbGVJbnB1dFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgICAgICAgIGFjY2VwdD1cIi5jc3YsIGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0LCBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmaWxlcy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxoMz5VcGxvYWRlZCBGaWxlczo8L2gzPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCI+e3sgZmlsZS5uYW1lIH19PC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2FyZC1mb290ZXIgY2xhc3M9XCJjYXJkLWZvb3RlclwiPlxuICAgIDxidXR0b25cbiAgICAgIFtkaXNhYmxlZF09XCJzZXJ2aWNlLmltcG9ydGVkRGF0YSgpLmxlbmd0aCA8IDFcIlxuICAgICAgY2xhc3M9XCJleHBvcnQtYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgID5cbiAgICAgIEltcG9ydFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdmVyYmVuLWNhcmQ+XG5cbjwhLS0gTW9kYWwgQ29tcG9uZW50IC0tPlxuPHZlcmJlbi1kaWFsb2d1ZVxuICBbc2hvd0Nsb3NlSWNvbl09XCJ0cnVlXCJcbiAgW2Rpc21pc3NPdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gIFtjbG9zZU9uRXNjYXBlXT1cInRydWVcIlxuICBbc2l6ZV09XCInbGFyZ2UnXCJcbiAgW21vZGVdPVwiJ2RpYWxvZ3VlJ1wiXG4gIFtjdXN0b21DbGFzc109XCInbXktbW9kYWwtY3VzdG9tLWNsYXNzJ1wiXG4gIFtkaXNhYmxlRm9vdGVyXT1cImZhbHNlXCJcbiAgW21vZGFsRGF0YV09XCJbeyBkYXRhOiB7fSB9XVwiXG4gIFtpc1Zpc2libGVdPVwic2hvd1ByZXZpZXdcIlxuICBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIlxuICBbYm9keVRlbXBsYXRlXT1cImJvZHlUZW1wbGF0ZVwiXG4gIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiXG4gIGRpYWxvZ3VlV2lkdGg9XCI4NSVcIlxuPlxuICA8YSBkb3dubG9hZD1cIlwiPjwvYT5cbjwvdmVyYmVuLWRpYWxvZ3VlPlxuXG48IS0tIERlZmluZSB0ZW1wbGF0ZXMgLS0+XG48bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPlxuICA8aDI+VXBsb2FkIFByZXZpZXc8L2gyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNib2R5VGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbXktNFwiPlxuICAgIDxwIGNsYXNzPVwiXCI+VG90YWwgSXRlbXM6IHt7IHNlcnZpY2UuaW1wb3J0ZWREYXRhKCkubGVuZ3RoIH19PC9wPlxuXG4gICAgPHAgY2xhc3M9XCJcIj5EdXBsaWNhdGVzOiB7eyBkdXBsaWNhdGVJbmRleFNldC5zaXplIH19PC9wPlxuXG4gICAgPHAgY2xhc3M9XCJcIj5JbnZhbGlkIEl0ZW1zOiB7eyBpbnZhbGlkSW5kZXhTZXQuc2l6ZSB9fTwvcD5cblxuICAgIDx2ZXJiZW4tZHJvcC1kb3duXG4gICAgICBbbXVsdGlzZWxlY3RdPVwidHJ1ZVwiXG4gICAgICBwbGFjZWhvbGRlcj1cIkZpbmQgZHVwbGljYXRlcyBieVwiXG4gICAgICBbb3B0aW9uc109XCJoZWFkZXJzKClcIlxuICAgICAgW25nTW9kZWxdPVwidW5pcXVlSWRlbnRpZmllcnMoKVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJ1bmlxdWVJZGVudGlmaWVycy5zZXQoJGV2ZW50KVwiXG4gICAgPjwvdmVyYmVuLWRyb3AtZG93bj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJtYXgtaGVpZ2h0OiBtaW4oNzV2aCwgNzgwcHgpOyBvdmVyZmxvdzogYXV0b1wiPlxuICAgIDxsaWItZGF0YS10YWJsZVxuICAgICAgW2RhdGFdPVwic2VydmljZS5pbXBvcnRlZERhdGEoKVwiXG4gICAgICBbY29sdW1uc109XCJwcmV2aWV3Q29sdW1uc0xpc3QoKVwiXG4gICAgICBbZm9ybUdyb3VwQ29uZmlnXT1cImZvcm1Hcm91cENvbmZpZygpXCJcbiAgICAgIFt1c2VWaXJ0dWFsU2Nyb2xsXT1cInRydWVcIlxuICAgICAgKHJvd1NhdmUpPVwic2VydmljZS5hZGRSb3coJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciBsaWJDb2x1bW49XCJhY3Rpb25zXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICNjZWxsXG4gICAgICAgICAgbGV0LXZhbHVlXG4gICAgICAgICAgbGV0LWRlbGV0ZVJvdz1cImRlbGV0ZVJvd1wiXG4gICAgICAgICAgbGV0LWlzRWRpdGluZz1cImlzRWRpdGluZ1wiXG4gICAgICAgICAgbGV0LXRvZ2dsZVJvd0VkaXQ9XCJ0b2dnbGVSb3dFZGl0XCJcbiAgICAgICAgICBsZXQtcm93PVwicm93XCJcbiAgICAgICAgICBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvd0VkaXQoKVwiXG4gICAgICAgICAgICAgIGljb249XCJlZGl0XCJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cblxuICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUm93KClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI2NlbGxFZGl0XG4gICAgICAgICAgbGV0LXZhbHVlXG4gICAgICAgICAgbGV0LWRlbGV0ZVJvdz1cImRlbGV0ZVJvd1wiXG4gICAgICAgICAgbGV0LWlzRWRpdGluZz1cImlzRWRpdGluZ1wiXG4gICAgICAgICAgbGV0LXRvZ2dsZVJvd0VkaXQ9XCJ0b2dnbGVSb3dFZGl0XCJcbiAgICAgICAgICBsZXQtcm93PVwicm93XCJcbiAgICAgICAgICBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhY3Rpb24tYnV0dG9uc1wiPlxuICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVJvd0VkaXQoKVwiXG4gICAgICAgICAgICAgIGljb249XCJ0aWNrXCJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cblxuICAgICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgICAgaWNvbj1cImRlbGV0ZVwiXG4gICAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUm93KClcIlxuICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgID48L3ZlcmJlbi1zdmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2xpYi1kYXRhLXRhYmxlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmb290ZXItYnV0dG9ucyBmbGV4IGdhcC00IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbXktNFwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgY2FuY2VsLWJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwic2hvd1ByZXZpZXcgPSBmYWxzZVwiXG4gICAgPlxuICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBleHBvcnQtYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiPlxuICAgICAgQ29tcGxldGVcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWltcG9ydC9kYXRhLWltcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtaW1wb3J0L2RhdGEtaW1wb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFNBQVMsRUFFVixNQUFNLGdCQUFnQixDQUFDO0FBTXhCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7O0FBUzFELE1BQU0sT0FBTyxtQkFBbUI7SUE0RFg7SUEzRG5CLGNBQWMsR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF5QixDQUFDO0lBQ3pELGVBQWUsR0FBRyxLQUFLLEVBSXBCLENBQUM7SUFDSjs7T0FFRztJQUNILE1BQU0sR0FBRyxLQUFLLEVBQVksQ0FBQztJQUMzQixLQUFLLEdBQUcsS0FBSyxDQUFTLGlCQUFpQixDQUFDLENBQUM7SUFDekMsZUFBZSxHQUFHLEtBQUssQ0FBNkIsRUFBRSxDQUFDLENBQUM7SUFDeEQsTUFBTSxHQUFHLEtBQUssRUFBK0IsQ0FBQztJQUM5Qzs7T0FFRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQU8sQ0FBQztJQUMzQjs7O09BR0c7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQTRDLENBQUM7SUFDckU7O09BRUc7SUFDSCxtQkFBbUIsR0FBRyxNQUFNLEVBQVksQ0FBQztJQUN6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YixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsUUFBUSxDQUFDO1FBQ2xELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNoRSxpREFBaUQ7SUFDbkQsQ0FBQzt3R0F6TVUsbUJBQW1COzRGQUFuQixtQkFBbUIsa3hDQUhuQixDQUFDLGlCQUFpQixDQUFDLDBCQzNCaEMsODhLQWdNQTs7NEZEbEthLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxpQkFBaUIsYUFHaEIsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFDYix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgU2lnbmFsLFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUFycmF5LFxuICBGb3JtR3JvdXBcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQ29sdW1uRGVmaW5pdGlvbixcbiAgQ29sdW1uRGlyZWN0aXZlLFxuICBGb3JtR3JvdXBDb25maWcsXG59IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBEYXRhSW1wb3J0U2VydmljZSB9IGZyb20gJy4vZGF0YS1pbXBvcnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLWltcG9ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWltcG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLWltcG9ydC5jb21wb25lbnQuY3NzJyxcbiAgcHJvdmlkZXJzOiBbRGF0YUltcG9ydFNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUltcG9ydENvbXBvbmVudDxUIGV4dGVuZHMge30+IHtcbiAgcHJldmlld0NvbHVtbnMgPSBpbnB1dC5yZXF1aXJlZDxDb2x1bW5EZWZpbml0aW9uPFQ+W10+KCk7XG4gIGZvcm1Hcm91cENvbmZpZyA9IGlucHV0PFxuICAgIEZvcm1Hcm91cENvbmZpZzx7XG4gICAgICBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sO1xuICAgIH0+XG4gID4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSBpbXBvcnRLZXkgb2YgcHJldmlld0NvbHVtbnMgaW5zdGVhZFxuICAgKi9cbiAgZmllbGRzID0gaW5wdXQ8c3RyaW5nW10+KCk7XG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nPignZXhwb3J0LXRlbXBsYXRlJyk7XG4gIGNvbHVtblRlbXBsYXRlcyA9IGlucHV0PHJlYWRvbmx5IENvbHVtbkRpcmVjdGl2ZVtdPihbXSk7XG4gIHBhcnNlciA9IGlucHV0PChkYXRhOiBhbnkpID0+IFBhcnRpYWw8VD5bXT4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSByZW1vdmUsIG5vdyBoYW5kbGVkIGludGVybmFsbHlcbiAgICovXG4gIHByZXZpZXdEYXRhID0gaW5wdXQ8VFtdPigpO1xuICAvKipcbiAgICogUGFzcyB0aGUgbWV0aG9kIHRvIHVzZSB0aGUgaW1wb3J0ZWQgZGF0YSxcbiAgICogYW5kIGV2ZW50dWFsbHkgcmV0dXJucyB0cnVlIGlmIHN1Y2Nlc3NmdWxseSB1c2VkXG4gICAqL1xuICBvbkltcG9ydENvbXBsZXRlID0gaW5wdXQ8KGRhdGE6IFBhcnRpYWw8VD5bXSkgPT4gUHJvbWlzZTxib29sZWFuPj4oKTtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFBsZWFzZSByZW1vdmUsIG5vdyBoYW5kbGVkIGludGVybmFsbHlcbiAgICovXG4gIGV4cG9ydFRlbXBsYXRlRXZlbnQgPSBvdXRwdXQ8c3RyaW5nW10+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgcmVtb3ZlLCBub3cgaGFuZGxlZCBpbnRlcm5hbGx5XG4gICAqL1xuICBpbXBvcnRFdmVudCA9IG91dHB1dDxGaWxlPigpO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBvbkltcG9ydENvbXBsZXRlIGlucHV0IGluc3RlYWRcbiAgICovXG4gIGltcG9ydEV2ZW50RGF0YSA9IG91dHB1dDxQYXJ0aWFsPFQ+W10+KCk7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBQbGVhc2UgcmVtb3ZlLCBub3cgaGFuZGxlZCBpbnRlcm5hbGx5XG4gICAqL1xuICByb3dTYXZlID0gb3V0cHV0PHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGtleTogbnVtYmVyIHwgc3RyaW5nO1xuICAgIGRhdGE6IFBhcnRpYWw8VD47XG4gIH0+KCk7XG5cbiAgLy8gZGF0YTogU2lnbmFsPChUICYgeyBpc0R1cGxpY2F0ZTogYm9vbGVhbiB9KVtdPjtcbiAgcHJldmlld0NvbHVtbnNMaXN0OiBTaWduYWw8Q29sdW1uRGVmaW5pdGlvbjxUPltdPjtcbiAgZm9ybXMgPSBuZXcgRm9ybUFycmF5PEZvcm1Hcm91cD4oW10pO1xuICB1bmlxdWVJZGVudGlmaWVyczogV3JpdGFibGVTaWduYWw8c3RyaW5nW10+ID0gc2lnbmFsKFtdKTtcbiAgLy8gZHVwbGljYXRlRGF0YU1hcDogTWFwPHN0cmluZywgbnVtYmVyPiA9IG5ldyBNYXAoKTtcbiAgZHVwbGljYXRlSW5kZXhTZXQgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgaW52YWxpZEluZGV4U2V0ID0gbmV3IE1hcDxudW1iZXIsIENvbHVtbkRpcmVjdGl2ZVsnY29sdW1uSWQnXVtdPigpO1xuXG4gIGhlYWRlcnM6IFNpZ25hbDxzdHJpbmdbXT47XG5cbiAgcHJpdmF0ZSBfZXh0OiAneGxzeCcgfCAneGxzJyB8ICdjc3YnID0gJ3hsc3gnO1xuXG4gIGZpbGVzOiBGaWxlW10gPSBbXTtcbiAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBzaG93UHJldmlldyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzZXJ2aWNlOiBEYXRhSW1wb3J0U2VydmljZTxUPikge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBjb25zdCBjb2x1bW5zID0gdGhpcy5wcmV2aWV3Q29sdW1uc0xpc3QoKTtcblxuICAgICAgY29uc3QgaWRlbnRpZmllcnMgPSB0aGlzLnVuaXF1ZUlkZW50aWZpZXJzKCk7XG5cbiAgICAgIHRoaXMuc2VydmljZS5pbXBvcnRlZERhdGEoKT8uZm9yRWFjaCgoZCwgaSwgYXJyKSA9PiB7XG4gICAgICAgIGlmIChzZXJ2aWNlLmlzRHVwbGljYXRlKGQsIGFyciwgaWRlbnRpZmllcnMpKSB7XG4gICAgICAgICAgdGhpcy5kdXBsaWNhdGVJbmRleFNldC5hZGQoaSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb2x1bW5zXG4gICAgICAgIC8vICAgLmZpbHRlcigoeyB2YWxpZGF0b3JGbiB9KSA9PiB2YWxpZGF0b3JGbiAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAvLyAgIC5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgLy8gICAgIGNvbnN0IGludmFsaWRGaWVsZHMgPSBPYmplY3QuZW50cmllcyhkKS5yZWR1Y2U8c3RyaW5nW10+KFxuICAgICAgICAvLyAgICAgICAoZiwgW2ssIHZdLCBpKSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaWYgKFxuICAgICAgICAvLyAgICAgICAgICAgY29sdW1uLnZhbGlkYXRvckZuICYmXG4gICAgICAgIC8vICAgICAgICAgICAhY29sdW1uLnZhbGlkYXRvckZuKHYgYXMgVFtrZXlvZiBUXSlcbiAgICAgICAgLy8gICAgICAgICApIHtcbiAgICAgICAgLy8gICAgICAgICAgIGYucHVzaChjb2x1bW4uaWQpO1xuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgLy8gICAgICAgfSxcbiAgICAgICAgLy8gICAgICAgW11cbiAgICAgICAgLy8gICAgICk7XG5cbiAgICAgICAgLy8gICAgIGlmIChpbnZhbGlkRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gICAgICAgdGhpcy5pbnZhbGlkSW5kZXhTZXQuc2V0KGksIGludmFsaWRGaWVsZHMpO1xuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnByZXZpZXdDb2x1bW5zTGlzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnByZXZpZXdDb2x1bW5zKClcbiAgICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuaW1wb3J0S2V5IHx8IGNvbC5pbXBvcnRCeSB8fCBjb2wuZm9ybUNvbnRyb2xOYW1lKVxuICAgICAgICAubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgICBjb25zdCBtYXRjaGluZ1RlbXBsYXRlID0gdGhpcy5jb2x1bW5UZW1wbGF0ZXMoKS5maW5kKFxuICAgICAgICAgICAgKHQpID0+IHQuY29sdW1uSWQgPT09IGNvbHVtbi5pZFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKG1hdGNoaW5nVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmNvbHVtbixcbiAgICAgICAgICAgICAgLy8gYWNjZXNzb3JLZXk6IGNvbHVtbi5pbXBvcnRLZXksXG4gICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZTogbWF0Y2hpbmdUZW1wbGF0ZS5jZWxsVGVtcGxhdGUsXG4gICAgICAgICAgICAgIGNlbGxFZGl0VGVtcGxhdGU6IG1hdGNoaW5nVGVtcGxhdGUuY2VsbEVkaXRUZW1wbGF0ZSxcbiAgICAgICAgICAgICAgaGVhZGVyVGVtcGxhdGU6IG1hdGNoaW5nVGVtcGxhdGUuaGVhZGVyVGVtcGxhdGUsXG4gICAgICAgICAgICAgIGZvb3RlclRlbXBsYXRlOiBtYXRjaGluZ1RlbXBsYXRlLmZvb3RlclRlbXBsYXRlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICAgICAgfSlcbiAgICAgICAgLmNvbmNhdChbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdhY3Rpb25zJyxcbiAgICAgICAgICAgIGhlYWRlcjogJ0FjdGlvbnMnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5oZWFkZXJzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5maWVsZHMoKSA/P1xuICAgICAgICB0aGlzLnByZXZpZXdDb2x1bW5zTGlzdCgpXG4gICAgICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuaW1wb3J0S2V5IHx8IGNvbC5pbXBvcnRCeSlcbiAgICAgICAgICAubWFwKChjb2wpID0+IGNvbC5oZWFkZXIudG9TdHJpbmcoKSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XG4gIH1cblxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmZpbGVzID0gQXJyYXkuZnJvbShldmVudC5kYXRhVHJhbnNmZXIhLmZpbGVzKTtcblxuICAgIHRoaXMuc2VydmljZS5oYW5kbGVJbXBvcnQoXG4gICAgICB0aGlzLmZpbGVzWzBdLFxuICAgICAgdGhpcy5wcmV2aWV3Q29sdW1uc0xpc3QoKSxcbiAgICAgIHRoaXMucGFyc2VyKClcbiAgICApO1xuICAgIC8vIHRoaXMuaW1wb3J0RXZlbnQuZW1pdCh0aGlzLmZpbGVzWzBdKTtcbiAgICB0aGlzLnNob3dQcmV2aWV3ID0gdHJ1ZTtcbiAgfVxuXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbGVzID0gQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMpO1xuICAgIHRoaXMuc2VydmljZS5oYW5kbGVJbXBvcnQoXG4gICAgICB0aGlzLmZpbGVzWzBdLFxuICAgICAgdGhpcy5wcmV2aWV3Q29sdW1uc0xpc3QoKSxcbiAgICAgIHRoaXMucGFyc2VyKClcbiAgICApO1xuXG4gICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG5cbiAgICAvLyB0aGlzLmltcG9ydEV2ZW50LmVtaXQodGhpcy5maWxlc1swXSk7XG4gICAgdGhpcy5zaG93UHJldmlldyA9IHRydWU7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmZpbGVzID0gW107XG4gICAgdGhpcy5zaG93UHJldmlldyA9IGZhbHNlO1xuICAgIHRoaXMuc2VydmljZS5jbGVhckRhdGEoKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgLy8gY29uc29sZS5sb2coJ1BSRVZEQVRBJywgdGhpcy5zZXJ2aWNlLmltcG9ydGVkRGF0YSgpKTtcbiAgICBjb25zdCBvbkNvbXBsZXRlID0gdGhpcy5vbkltcG9ydENvbXBsZXRlKCk7XG4gICAgaWYgKG9uQ29tcGxldGUpIHtcbiAgICAgIG9uQ29tcGxldGUodGhpcy5zZXJ2aWNlLmltcG9ydGVkRGF0YSgpKS50aGVuKChzdWNjZXNzKSA9PiB7XG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy5zaG93UHJldmlldyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbXBvcnRFdmVudERhdGEuZW1pdCh0aGlzLnNlcnZpY2UuaW1wb3J0ZWREYXRhKCkgfHwgW10pO1xuICAgICAgdGhpcy5zaG93UHJldmlldyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbnRyb2xOYW1lcygpIHtcbiAgICBjb25zdCBjb250cm9scyA9IHRoaXMuZm9ybUdyb3VwQ29uZmlnKCk/LmNvbnRyb2xzO1xuICAgIGlmIChjb250cm9scykge1xuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGNvbnRyb2xzKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgaGFuZGxlVGVtcGxhdGVFeHBvcnQoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmhhbmRsZVRlbXBsYXRlRXhwb3J0KHRoaXMuaGVhZGVycygpLCB0aGlzLnRpdGxlKCkpO1xuICAgIC8vIHRoaXMuZXhwb3J0VGVtcGxhdGVFdmVudC5lbWl0KHRoaXMuaGVhZGVycygpKTtcbiAgfVxuXG4gIC8vIGdldEZvcm1Db250cm9sKGluZGV4OiBudW1iZXIsIGZpZWxkOiBzdHJpbmcpIHtcbiAgLy8gICBjb25zdCBjb250cm9sID0gdGhpcy4uZ2V0KGluZGV4KT8uZ2V0KGZpZWxkKSBhcyBGb3JtQ29udHJvbDxhbnk+O1xuICAvLyAgIGNvbnNvbGUubG9nKGNvbnRyb2wpO1xuICAvLyAgIHJldHVybiBjb250cm9sO1xuICAvLyB9XG59XG4iLCI8dmVyYmVuLWNhcmRcbiAgd2lkdGg9XCIyNHJlbVwiXG4gIGJvcmRlclJhZGl1cz1cIjFyZW1cIlxuICBbYm9yZGVyXT1cIicxcHggc29saWQgI0Q0QTAwNydcIlxuICBiZ0NvbG9yPVwiI0ZGRkZGRlwiXG4gIGNsYXNzPVwiZXhwb3J0LWNhcmRcIlxuPlxuICA8ZGl2IGNhcmQtaGVhZGVyIGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICA8aDQgY2xhc3M9XCJoZWFkZXItdGl0bGVcIj5JbXBvcnQ8L2g0PlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwicmVzZXQtYnV0dG9uXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCInIzM0NzlFOSdcIlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICBbc3R5bGUuYm9yZGVyXT1cIidub25lJ1wiXG4gICAgICBbc3R5bGUuY3Vyc29yXT1cIidwb2ludGVyJ1wiXG4gICAgICBbc3R5bGUuZm9udC1zaXplXT1cIicxMnB4J1wiXG4gICAgICAoY2xpY2spPVwicmVzZXQoKVwiXG4gICAgPlxuICAgICAgUmVzZXRcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2FyZC1ib2R5IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTQganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVUZW1wbGF0ZUV4cG9ydCgpXCI+XG4gICAgICAgIERvd25sb2FkIFRlbXBsYXRlXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxsYWJlbCBmb3I9XCJmaWxlSW5wdXRcIiBjbGFzcz1cImV4cG9ydC1idXR0b25cIj5VcGxvYWQgRmlsZTwvbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGhyIGNsYXNzPVwiZGl2aWRlclwiIC8+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJzZWN0aW9uXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZHJvcC1hcmVhXCJcbiAgICAgICAgKGRyYWdvdmVyKT1cIm9uRHJhZ092ZXIoJGV2ZW50KVwiXG4gICAgICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXG4gICAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPHA+XG4gICAgICAgICAgRHJhZyBhbmQgZHJvcCBmaWxlcyBoZXJlIG9yXG4gICAgICAgICAgPGxhYmVsIGZvcj1cImZpbGVJbnB1dFwiIFtzdHlsZS5jb2xvcl09XCInIzM0NzlFOSdcIlxuICAgICAgICAgICAgPmNsaWNrIHRvIGJyb3dzZTwvbGFiZWxcbiAgICAgICAgICA+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIGlkPVwiZmlsZUlucHV0XCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgICAgICAgYWNjZXB0PVwiLmNzdiwgYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQsIGFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbFwiXG4gICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImZpbGVzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGgzPlVwbG9hZGVkIEZpbGVzOjwvaDM+XG4gICAgICAgIDx1bD5cbiAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGZpbGUgb2YgZmlsZXNcIj57eyBmaWxlLm5hbWUgfX08L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjYXJkLWZvb3RlciBjbGFzcz1cImNhcmQtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgW2Rpc2FibGVkXT1cInNlcnZpY2UuaW1wb3J0ZWREYXRhKCkubGVuZ3RoIDwgMVwiXG4gICAgICBjbGFzcz1cImV4cG9ydC1idXR0b25cIlxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgPlxuICAgICAgSW1wb3J0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC92ZXJiZW4tY2FyZD5cblxuPCEtLSBNb2RhbCBDb21wb25lbnQgLS0+XG48dmVyYmVuLWRpYWxvZ3VlXG4gIFtzaG93Q2xvc2VJY29uXT1cInRydWVcIlxuICBbZGlzbWlzc091dHNpZGVDbGlja109XCJ0cnVlXCJcbiAgW2Nsb3NlT25Fc2NhcGVdPVwidHJ1ZVwiXG4gIFtzaXplXT1cIidsYXJnZSdcIlxuICBbbW9kZV09XCInZGlhbG9ndWUnXCJcbiAgW2N1c3RvbUNsYXNzXT1cIidteS1tb2RhbC1jdXN0b20tY2xhc3MnXCJcbiAgW2Rpc2FibGVGb290ZXJdPVwiZmFsc2VcIlxuICBbbW9kYWxEYXRhXT1cIlt7IGRhdGE6IHt9IH1dXCJcbiAgW2lzVmlzaWJsZV09XCJzaG93UHJldmlld1wiXG4gIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXG4gIFtib2R5VGVtcGxhdGVdPVwiYm9keVRlbXBsYXRlXCJcbiAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcbiAgZGlhbG9ndWVXaWR0aD1cIjg1JVwiXG4+XG4gIDxhIGRvd25sb2FkPVwiXCI+PC9hPlxuPC92ZXJiZW4tZGlhbG9ndWU+XG5cbjwhLS0gRGVmaW5lIHRlbXBsYXRlcyAtLT5cbjxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XG4gIDxoMj5VcGxvYWQgUHJldmlldzwvaDI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTQgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBteS00XCI+XG4gICAgPHAgY2xhc3M9XCJcIj5Ub3RhbCBJdGVtczoge3sgc2VydmljZS5pbXBvcnRlZERhdGEoKS5sZW5ndGggfX08L3A+XG5cbiAgICA8cCBjbGFzcz1cIlwiPkR1cGxpY2F0ZXM6IHt7IGR1cGxpY2F0ZUluZGV4U2V0LnNpemUgfX08L3A+XG5cbiAgICA8cCBjbGFzcz1cIlwiPkludmFsaWQgSXRlbXM6IHt7IGludmFsaWRJbmRleFNldC5zaXplIH19PC9wPlxuXG4gICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiRmluZCBkdXBsaWNhdGVzIGJ5XCJcbiAgICAgIFtvcHRpb25zXT1cImhlYWRlcnMoKVwiXG4gICAgICBbbmdNb2RlbF09XCJ1bmlxdWVJZGVudGlmaWVycygpXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVuaXF1ZUlkZW50aWZpZXJzLnNldCgkZXZlbnQpXCJcbiAgICA+PC92ZXJiZW4tZHJvcC1kb3duPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1heC1oZWlnaHQ6IG1pbig3NXZoLCA3ODBweCk7IG92ZXJmbG93OiBhdXRvXCI+XG4gICAgPGxpYi1kYXRhLXRhYmxlXG4gICAgICBbZGF0YV09XCJzZXJ2aWNlLmltcG9ydGVkRGF0YSgpXCJcbiAgICAgIFtjb2x1bW5zXT1cInByZXZpZXdDb2x1bW5zTGlzdCgpXCJcbiAgICAgIFtmb3JtR3JvdXBDb25maWddPVwiZm9ybUdyb3VwQ29uZmlnKClcIlxuICAgICAgW3VzZVZpcnR1YWxTY3JvbGxdPVwidHJ1ZVwiXG4gICAgICAocm93U2F2ZSk9XCJzZXJ2aWNlLmFkZFJvdygkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyIGxpYkNvbHVtbj1cImFjdGlvbnNcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI2NlbGxcbiAgICAgICAgICBsZXQtdmFsdWVcbiAgICAgICAgICBsZXQtZGVsZXRlUm93PVwiZGVsZXRlUm93XCJcbiAgICAgICAgICBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICBsZXQtdG9nZ2xlUm93RWRpdD1cInRvZ2dsZVJvd0VkaXRcIlxuICAgICAgICAgIGxldC1yb3c9XCJyb3dcIlxuICAgICAgICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFjdGlvbi1idXR0b25zXCI+XG4gICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm93RWRpdCgpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImVkaXRcIlxuICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSb3coKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAjY2VsbEVkaXRcbiAgICAgICAgICBsZXQtdmFsdWVcbiAgICAgICAgICBsZXQtZGVsZXRlUm93PVwiZGVsZXRlUm93XCJcbiAgICAgICAgICBsZXQtaXNFZGl0aW5nPVwiaXNFZGl0aW5nXCJcbiAgICAgICAgICBsZXQtdG9nZ2xlUm93RWRpdD1cInRvZ2dsZVJvd0VkaXRcIlxuICAgICAgICAgIGxldC1yb3c9XCJyb3dcIlxuICAgICAgICAgIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFjdGlvbi1idXR0b25zXCI+XG4gICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUm93RWRpdCgpXCJcbiAgICAgICAgICAgICAgaWNvbj1cInRpY2tcIlxuICAgICAgICAgICAgICBbd2lkdGhdPVwiMTVcIlxuICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuXG4gICAgICAgICAgICA8dmVyYmVuLXN2Z1xuICAgICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIxNVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSb3coKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbGliLWRhdGEtdGFibGU+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZvb3Rlci1idXR0b25zIGZsZXggZ2FwLTQgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBteS00XCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBjYW5jZWwtYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzaG93UHJldmlldyA9IGZhbHNlXCJcbiAgICA+XG4gICAgICBDYW5jZWxcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGV4cG9ydC1idXR0b25cIiAoY2xpY2spPVwic2F2ZSgpXCI+XG4gICAgICBDb21wbGV0ZVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -6,27 +6,49 @@ export class DataImportService {
|
|
|
6
6
|
constructor() { }
|
|
7
7
|
// Function to transform imported data to match your model structure
|
|
8
8
|
transformImportData(importedData, columnDefinitions) {
|
|
9
|
-
// Create
|
|
9
|
+
// Create mappings from header to importKey and importBy
|
|
10
10
|
const headerToImportKeyMap = new Map();
|
|
11
|
-
|
|
11
|
+
const headerToImportByMap = new Map();
|
|
12
|
+
// Filter column definitions to only those with importKey or importBy and populate the maps
|
|
12
13
|
columnDefinitions
|
|
13
|
-
.filter((col) => col.importKey)
|
|
14
|
+
.filter((col) => col.importKey || col.importBy)
|
|
14
15
|
.forEach((col) => {
|
|
15
16
|
const header = typeof col.header === 'string'
|
|
16
17
|
? col.header
|
|
17
18
|
: col.header({}).toString();
|
|
18
|
-
|
|
19
|
+
if (col.importKey) {
|
|
20
|
+
headerToImportKeyMap.set(header, col.importKey);
|
|
21
|
+
}
|
|
22
|
+
if (col.importBy) {
|
|
23
|
+
headerToImportByMap.set(header, col.importBy);
|
|
24
|
+
}
|
|
19
25
|
});
|
|
20
26
|
// Transform each row in the imported data
|
|
21
27
|
return importedData.map((row) => {
|
|
22
28
|
const transformedRow = {};
|
|
23
29
|
// Process each key in the row
|
|
24
30
|
Object.entries(row).forEach(([key, value]) => {
|
|
25
|
-
//
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
// Check if there's an importBy transformation first (takes priority)
|
|
32
|
+
const importBy = headerToImportByMap.get(key);
|
|
33
|
+
if (importBy) {
|
|
34
|
+
if (typeof importBy === 'function') {
|
|
35
|
+
// Use the importBy function to transform the entire imported row
|
|
36
|
+
const importKey = headerToImportKeyMap.get(key);
|
|
37
|
+
if (importKey) {
|
|
38
|
+
transformedRow[importKey] = importBy(row);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// importBy is a direct key reference
|
|
43
|
+
transformedRow[importBy] = value;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Fall back to importKey if no importBy is defined
|
|
48
|
+
const importKey = headerToImportKeyMap.get(key);
|
|
49
|
+
if (importKey) {
|
|
50
|
+
transformedRow[importKey] = value;
|
|
51
|
+
}
|
|
30
52
|
}
|
|
31
53
|
});
|
|
32
54
|
return transformedRow;
|
|
@@ -107,4 +129,4 @@ export class DataImportService {
|
|
|
107
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataImportService, decorators: [{
|
|
108
130
|
type: Injectable
|
|
109
131
|
}], ctorParameters: () => [] });
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS1pbXBvcnQvZGF0YS1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUk5QyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQVksR0FBd0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLGdCQUFlLENBQUM7SUFFaEIsb0VBQW9FO0lBQ3BFLG1CQUFtQixDQUNqQixZQUFtQyxFQUNuQyxpQkFBd0M7UUFFeEMsNENBQTRDO1FBQzVDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7UUFFeEQsOEVBQThFO1FBQzlFLGlCQUFpQjthQUNkLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQzthQUM5QixPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNmLE1BQU0sTUFBTSxHQUNWLE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxRQUFRO2dCQUM1QixDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU07Z0JBQ1osQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsU0FBb0IsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUwsMENBQTBDO1FBQzFDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFD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c0JBQXNCO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDL0IsNkRBQTZEO1lBQzdELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUN0QixPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2pDLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLENBQUM7WUFDWCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsb0NBQW9DO0lBQ3RDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBaUIsRUFBRSxLQUFtQixFQUFFLFdBQXFCO1FBQ3ZFLE9BQU8sQ0FDTCxLQUFLLENBQUMsTUFBTSxDQUNWLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDTixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDdEIsV0FBVyxDQUFDLEtBQUssQ0FDZixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ2IsS0FBSyxDQUFDLFVBQXFCLENBQUM7Z0JBQzVCLEtBQUssQ0FBQyxVQUFxQixDQUFDLEtBQUssR0FBRyxDQUFDLFVBQXFCLENBQUMsQ0FDOUQsQ0FDSixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQzt3R0FoSVUsaUJBQWlCOzRHQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyByZWFkLCB1dGlscywgd3JpdGVGaWxlIH0gZnJvbSAneGxzeCc7XG5pbXBvcnQgeyBDb2x1bW5EZWZpbml0aW9uIH0gZnJvbSAndmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLXRhYmxlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGFJbXBvcnRTZXJ2aWNlPFQ+IHtcbiAgaW1wb3J0ZWREYXRhOiBXcml0YWJsZVNpZ25hbDxUW10+ID0gc2lnbmFsKFtdKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLy8gRnVuY3Rpb24gdG8gdHJhbnNmb3JtIGltcG9ydGVkIGRhdGEgdG8gbWF0Y2ggeW91ciBtb2RlbCBzdHJ1Y3R1cmVcbiAgdHJhbnNmb3JtSW1wb3J0RGF0YTxUPihcbiAgICBpbXBvcnRlZERhdGE6IFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICBjb2x1bW5EZWZpbml0aW9uczogQ29sdW1uRGVmaW5pdGlvbjxUPltdXG4gICk6IFBhcnRpYWw8VD5bXSB7XG4gICAgLy8gQ3JlYXRlIGEgbWFwcGluZyBmcm9tIGhlYWRlciB0byBpbXBvcnRLZXlcbiAgICBjb25zdCBoZWFkZXJUb0ltcG9ydEtleU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBrZXlvZiBUPigpO1xuXG4gICAgLy8gRmlsdGVyIGNvbHVtbiBkZWZpbml0aW9ucyB0byBvbmx5IHRob3NlIHdpdGggaW1wb3J0S2V5IGFuZCBwb3B1bGF0ZSB0aGUgbWFwXG4gICAgY29sdW1uRGVmaW5pdGlvbnNcbiAgICAgIC5maWx0ZXIoKGNvbCkgPT4gY29sLmltcG9ydEtleSlcbiAgICAgIC5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgaGVhZGVyID1cbiAgICAgICAgICB0eXBlb2YgY29sLmhlYWRlciA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gY29sLmhlYWRlclxuICAgICAgICAgICAgOiBjb2wuaGVhZGVyKHt9KS50b1N0cmluZygpO1xuICAgICAgICBoZWFkZXJUb0ltcG9ydEtleU1hcC5zZXQoaGVhZGVyLCBjb2wuaW1wb3J0S2V5IGFzIGtleW9mIFQpO1xuICAgICAgfSk7XG5cbiAgICAvLyBUcmFuc2Zvcm0gZWFjaCByb3cgaW4gdGhlIGltcG9ydGVkIGRhdGFcbiAgICByZXR1cm4gaW1wb3J0ZWREYXRhLm1hcCgocm93KSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2Zvcm1lZFJvdzogUGFydGlhbDxUPiA9IHt9O1xuXG4gICAgICAvLyBQcm9jZXNzIGVhY2gga2V5IGluIHRoZSByb3dcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJvdykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIC8vIEZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW1wb3J0IGtleSBmb3IgdGhpcyBoZWFkZXIva2V5XG4gICAgICAgIGNvbnN0IGltcG9ydEtleSA9IGhlYWRlclRvSW1wb3J0S2V5TWFwLmdldChrZXkpO1xuXG4gICAgICAgIC8vIE9ubHkgYWRkIHRoZSBmaWVsZCBpZiB0aGVyZSdzIGEgbWF0Y2hpbmcgaW1wb3J0IGtleVxuICAgICAgICBpZiAoaW1wb3J0S2V5KSB7XG4gICAgICAgICAgdHJhbnNmb3JtZWRSb3dbaW1wb3J0S2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUm93O1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlSW1wb3J0KFxuICAgIGZpbGU6IEZpbGUsXG4gICAgLy8gcHJldmlld2VyPzogKGRhdGE6IGFueVtdKSA9PiB2b2lkLFxuICAgIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W10sXG4gICAgcGFyc2VJbXBvcnQ/OiAoZGF0YTogYW55KSA9PiBQYXJ0aWFsPFQ+W11cbiAgKSB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIC8vIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7XG4gICAgICAvLyAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICByYXc6IHRydWUsXG4gICAgICAvLyAgIGNlbGxUZXh0OiB0cnVlLFxuICAgICAgLy8gICBjZWxsRm9ybXVsYTogZmFsc2UsXG4gICAgICAvLyAgIGNlbGxORjogZmFsc2UsXG4gICAgICAvLyB9KTtcbiAgICAgIC8vIGNvbnNvbGUudGltZSgnQmVnaW4nKTtcbiAgICAgIGxldCBpbXBvcnRlZDogYW55W10gPSBbXTtcbiAgICAgIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7IHJhdzogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IHNoZWV0cyA9IHdiLlNoZWV0TmFtZXM7XG4gICAgICBpZiAoc2hlZXRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByb3dzID0gdXRpbHMuc2hlZXRfdG9fanNvbih3Yi5TaGVldHNbc2hlZXRzWzBdXSwge1xuICAgICAgICAgIHJhdzogZmFsc2UsXG4gICAgICAgICAgLy8gZGVmdmFsOiAnJyxcbiAgICAgICAgICAvLyByYXdOdW1iZXJzOiB0cnVlLFxuICAgICAgICAgIC8vIGRhdGVORjogJ2RkL21tL3l5eXknLFxuICAgICAgICB9KSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG5cbiAgICAgICAgaW1wb3J0ZWQgPSB0aGlzLnRyYW5zZm9ybUltcG9ydERhdGEocm93cywgY29sdW1uRGVmaW5pdGlvbnMpIGFzIFRbXTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ1RSQU5TRk9STUVEJywgaW1wb3J0ZWQpO1xuXG4gICAgICAgIGlmIChwYXJzZUltcG9ydCkge1xuICAgICAgICAgIGltcG9ydGVkID0gcGFyc2VJbXBvcnQoaW1wb3J0ZWQpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdQQVJTRUQnLCBpbXBvcnRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJldmlld2VyKGltcG9ydGVkKTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdJbXBvcnRlZCBkYXRhOicsIEpTT04uc3RyaW5naWZ5KGltcG9ydGVkLCBudWxsLCAyKSk7XG4gICAgICAvLyBjb25zb2xlLnRpbWUoJ1N0YXJ0IFByb2Nlc3MnKTtcbiAgICAgIHRoaXMuaW1wb3J0ZWREYXRhLnNldChpbXBvcnRlZCk7XG4gICAgICAvLyBjb25zb2xlLnRpbWVFbmQoJ0JlZ2luJyk7XG4gICAgICByZXR1cm4gaW1wb3J0ZWQ7XG4gICAgfTtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICB9XG5cbiAgaGFuZGxlVGVtcGxhdGVFeHBvcnQoZmllbGRzOiBzdHJpbmdbXSwgdGl0bGU6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKGZpZWxkcyk7XG4gICAgY29uc3Qgd2IgPSB1dGlscy5ib29rX25ldygpO1xuICAgIGNvbnN0IHdzOiBhbnkgPSB1dGlscy5qc29uX3RvX3NoZWV0KFtdKTtcbiAgICB1dGlscy5zaGVldF9hZGRfYW9hKHdzLCBbZmllbGRzXSk7XG4gICAgLy8gdXRpbHMuc2hlZXRfYWRkX2pzb24od3MsIHRoaXMuX2RhdGEsIHsgb3JpZ2luOiAnQTInLCBza2lwSGVhZGVyOiB0cnVlIH0pO1xuICAgIHV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdiLCB3cywgdGl0bGUpO1xuICAgIHdyaXRlRmlsZSh3YiwgdGl0bGUgKyAnLXRlbXBsYXRlLicgKyAneGxzeCcpO1xuICB9XG5cbiAgYWRkUm93KGV2ZW50OiB7IGluZGV4OiBudW1iZXI7IGtleTogc3RyaW5nIHwgbnVtYmVyOyBkYXRhOiBQYXJ0aWFsPFQ+IH0pIHtcbiAgICAvLyBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgdGhpcy5pbXBvcnRlZERhdGEudXBkYXRlKChkYXQpID0+IHtcbiAgICAgIC8vIGRhdFtldmVudC5pbmRleF0gPSB7IC4uLmRhdFtldmVudC5pbmRleF0sIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgIHJldHVybiBkYXQubWFwKChkLCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBldmVudC5pbmRleCkge1xuICAgICAgICAgIHJldHVybiB7IC4uLmQsIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuaW1wb3J0ZWREYXRhKCkpO1xuICB9XG5cbiAgaXNEdXBsaWNhdGUoZGF0dW06IFBhcnRpYWw8VD4sIGFycmF5OiBQYXJ0aWFsPFQ+W10sIGlkZW50aWZpZXJzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiAoXG4gICAgICBhcnJheS5maWx0ZXIoXG4gICAgICAgIChkYXQpID0+XG4gICAgICAgICAgaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGlkZW50aWZpZXJzLmV2ZXJ5KFxuICAgICAgICAgICAgKGlkZW50aWZpZXIpID0+XG4gICAgICAgICAgICAgIGRhdHVtW2lkZW50aWZpZXIgYXMga2V5b2YgVF0gJiZcbiAgICAgICAgICAgICAgZGF0dW1baWRlbnRpZmllciBhcyBrZXlvZiBUXSA9PT0gZGF0W2lkZW50aWZpZXIgYXMga2V5b2YgVF1cbiAgICAgICAgICApXG4gICAgICApLmxlbmd0aCA+IDFcbiAgICApO1xuICB9XG5cbiAgY2xlYXJEYXRhKCkge1xuICAgIHRoaXMuaW1wb3J0ZWREYXRhLnNldChbXSk7XG4gIH1cbn1cbiJdfQ==
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS1pbXBvcnQvZGF0YS1pbXBvcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUc5QyxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQVksR0FBd0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRS9DLGdCQUFnQixDQUFDO0lBRWpCLG9FQUFvRTtJQUNwRSxtQkFBbUIsQ0FDakIsWUFBbUMsRUFDbkMsaUJBQXdDO1FBRXhDLHdEQUF3RDtRQUN4RCxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO1FBQ3hELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLEVBR2hDLENBQUM7UUFFSiwyRkFBMkY7UUFDM0YsaUJBQWlCO2FBQ2QsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUM7YUFDOUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixNQUFNLE1BQU0sR0FDVixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssUUFBUTtnQkFDNUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNO2dCQUNaLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRWhDLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNsQixvQkFBb0IsQ0FBQyxHQUFHLENBQUMsTUFB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LE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILG9DQUFvQztJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCLEVBQUUsS0FBbUIsRUFBRSxXQUFxQjtRQUN2RSxPQUFPLENBQ0wsS0FBSyxDQUFDLE1BQU0sQ0FDVixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3RCLFdBQVcsQ0FBQyxLQUFLLENBQ2YsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLEtBQUssQ0FBQyxVQUFxQixDQUFDO2dCQUM1QixLQUFLLENBQUMsVUFBcUIsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxVQUFxQixDQUFDLENBQzlELENBQ0osQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7d0dBekpVLGlCQUFpQjs0R0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sdW1uRGVmaW5pdGlvbiB9IGZyb20gJ3ZlcmJlbi1uZy11aS9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyByZWFkLCB1dGlscywgd3JpdGVGaWxlIH0gZnJvbSAneGxzeCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXRhSW1wb3J0U2VydmljZTxUPiB7XG4gIGltcG9ydGVkRGF0YTogV3JpdGFibGVTaWduYWw8VFtdPiA9IHNpZ25hbChbXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvLyBGdW5jdGlvbiB0byB0cmFuc2Zvcm0gaW1wb3J0ZWQgZGF0YSB0byBtYXRjaCB5b3VyIG1vZGVsIHN0cnVjdHVyZVxuICB0cmFuc2Zvcm1JbXBvcnREYXRhPFQ+KFxuICAgIGltcG9ydGVkRGF0YTogUmVjb3JkPHN0cmluZywgYW55PltdLFxuICAgIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W11cbiAgKTogUGFydGlhbDxUPltdIHtcbiAgICAvLyBDcmVhdGUgbWFwcGluZ3MgZnJvbSBoZWFkZXIgdG8gaW1wb3J0S2V5IGFuZCBpbXBvcnRCeVxuICAgIGNvbnN0IGhlYWRlclRvSW1wb3J0S2V5TWFwID0gbmV3IE1hcDxzdHJpbmcsIGtleW9mIFQ+KCk7XG4gICAgY29uc3QgaGVhZGVyVG9JbXBvcnRCeU1hcCA9IG5ldyBNYXA8XG4gICAgICBzdHJpbmcsXG4gICAgICBrZXlvZiBUIHwgKChpbXBvcnRlZFJvdzogYW55KSA9PiBUW2tleW9mIFRdKVxuICAgID4oKTtcblxuICAgIC8vIEZpbHRlciBjb2x1bW4gZGVmaW5pdGlvbnMgdG8gb25seSB0aG9zZSB3aXRoIGltcG9ydEtleSBvciBpbXBvcnRCeSBhbmQgcG9wdWxhdGUgdGhlIG1hcHNcbiAgICBjb2x1bW5EZWZpbml0aW9uc1xuICAgICAgLmZpbHRlcigoY29sKSA9PiBjb2wuaW1wb3J0S2V5IHx8IGNvbC5pbXBvcnRCeSlcbiAgICAgIC5mb3JFYWNoKChjb2wpID0+IHtcbiAgICAgICAgY29uc3QgaGVhZGVyID1cbiAgICAgICAgICB0eXBlb2YgY29sLmhlYWRlciA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gY29sLmhlYWRlclxuICAgICAgICAgICAgOiBjb2wuaGVhZGVyKHt9KS50b1N0cmluZygpO1xuXG4gICAgICAgIGlmIChjb2wuaW1wb3J0S2V5KSB7XG4gICAgICAgICAgaGVhZGVyVG9JbXBvcnRLZXlNYXAuc2V0KGhlYWRlciwgY29sLmltcG9ydEtleSBhcyBrZXlvZiBUKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2wuaW1wb3J0QnkpIHtcbiAgICAgICAgICBoZWFkZXJUb0ltcG9ydEJ5TWFwLnNldChoZWFkZXIsIGNvbC5pbXBvcnRCeSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIGVhY2ggcm93IGluIHRoZSBpbXBvcnRlZCBkYXRhXG4gICAgcmV0dXJuIGltcG9ydGVkRGF0YS5tYXAoKHJvdykgPT4ge1xuICAgICAgY29uc3QgdHJhbnNmb3JtZWRSb3c6IFBhcnRpYWw8VD4gPSB7fTtcblxuICAgICAgLy8gUHJvY2VzcyBlYWNoIGtleSBpbiB0aGUgcm93XG4gICAgICBPYmplY3QuZW50cmllcyhyb3cpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGFuIGltcG9ydEJ5IHRyYW5zZm9ybWF0aW9uIGZpcnN0ICh0YWtlcyBwcmlvcml0eSlcbiAgICAgICAgY29uc3QgaW1wb3J0QnkgPSBoZWFkZXJUb0ltcG9ydEJ5TWFwLmdldChrZXkpO1xuXG4gICAgICAgIGlmIChpbXBvcnRCeSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgaW1wb3J0QnkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIC8vIFVzZSB0aGUgaW1wb3J0QnkgZnVuY3Rpb24gdG8gdHJhbnNmb3JtIHRoZSBlbnRpcmUgaW1wb3J0ZWQgcm93XG4gICAgICAgICAgICBjb25zdCBpbXBvcnRLZXkgPSBoZWFkZXJUb0ltcG9ydEtleU1hcC5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmIChpbXBvcnRLZXkpIHtcbiAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSb3dbaW1wb3J0S2V5XSA9IGltcG9ydEJ5KHJvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGltcG9ydEJ5IGlzIGEgZGlyZWN0IGtleSByZWZlcmVuY2VcbiAgICAgICAgICAgIHRyYW5zZm9ybWVkUm93W2ltcG9ydEJ5XSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBGYWxsIGJhY2sgdG8gaW1wb3J0S2V5IGlmIG5vIGltcG9ydEJ5IGlzIGRlZmluZWRcbiAgICAgICAgICBjb25zdCBpbXBvcnRLZXkgPSBoZWFkZXJUb0ltcG9ydEtleU1hcC5nZXQoa2V5KTtcbiAgICAgICAgICBpZiAoaW1wb3J0S2V5KSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFJvd1tpbXBvcnRLZXldID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybWVkUm93O1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlSW1wb3J0KFxuICAgIGZpbGU6IEZpbGUsXG4gICAgLy8gcHJldmlld2VyPzogKGRhdGE6IGFueVtdKSA9PiB2b2lkLFxuICAgIGNvbHVtbkRlZmluaXRpb25zOiBDb2x1bW5EZWZpbml0aW9uPFQ+W10sXG4gICAgcGFyc2VJbXBvcnQ/OiAoZGF0YTogYW55KSA9PiBQYXJ0aWFsPFQ+W11cbiAgKSB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIC8vIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7XG4gICAgICAvLyAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgLy8gICByYXc6IHRydWUsXG4gICAgICAvLyAgIGNlbGxUZXh0OiB0cnVlLFxuICAgICAgLy8gICBjZWxsRm9ybXVsYTogZmFsc2UsXG4gICAgICAvLyAgIGNlbGxORjogZmFsc2UsXG4gICAgICAvLyB9KTtcbiAgICAgIC8vIGNvbnNvbGUudGltZSgnQmVnaW4nKTtcbiAgICAgIGxldCBpbXBvcnRlZDogYW55W10gPSBbXTtcbiAgICAgIGNvbnN0IHdiID0gcmVhZChldmVudC50YXJnZXQucmVzdWx0LCB7IHJhdzogdHJ1ZSB9KTtcbiAgICAgIGNvbnN0IHNoZWV0cyA9IHdiLlNoZWV0TmFtZXM7XG4gICAgICBpZiAoc2hlZXRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByb3dzID0gdXRpbHMuc2hlZXRfdG9fanNvbih3Yi5TaGVldHNbc2hlZXRzWzBdXSwge1xuICAgICAgICAgIHJhdzogZmFsc2UsXG4gICAgICAgICAgLy8gZGVmdmFsOiAnJyxcbiAgICAgICAgICAvLyByYXdOdW1iZXJzOiB0cnVlLFxuICAgICAgICAgIC8vIGRhdGVORjogJ2RkL21tL3l5eXknLFxuICAgICAgICB9KSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG5cbiAgICAgICAgaW1wb3J0ZWQgPSB0aGlzLnRyYW5zZm9ybUltcG9ydERhdGEocm93cywgY29sdW1uRGVmaW5pdGlvbnMpIGFzIFRbXTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ1RSQU5TRk9STUVEJywgaW1wb3J0ZWQpO1xuXG4gICAgICAgIGlmIChwYXJzZUltcG9ydCkge1xuICAgICAgICAgIGltcG9ydGVkID0gcGFyc2VJbXBvcnQoaW1wb3J0ZWQpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdQQVJTRUQnLCBpbXBvcnRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcHJldmlld2VyKGltcG9ydGVkKTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnNvbGUubG9nKCdJbXBvcnRlZCBkYXRhOicsIEpTT04uc3RyaW5naWZ5KGltcG9ydGVkLCBudWxsLCAyKSk7XG4gICAgICAvLyBjb25zb2xlLnRpbWUoJ1N0YXJ0IFByb2Nlc3MnKTtcbiAgICAgIHRoaXMuaW1wb3J0ZWREYXRhLnNldChpbXBvcnRlZCk7XG4gICAgICAvLyBjb25zb2xlLnRpbWVFbmQoJ0JlZ2luJyk7XG4gICAgICByZXR1cm4gaW1wb3J0ZWQ7XG4gICAgfTtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpO1xuICB9XG5cbiAgaGFuZGxlVGVtcGxhdGVFeHBvcnQoZmllbGRzOiBzdHJpbmdbXSwgdGl0bGU6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKGZpZWxkcyk7XG4gICAgY29uc3Qgd2IgPSB1dGlscy5ib29rX25ldygpO1xuICAgIGNvbnN0IHdzOiBhbnkgPSB1dGlscy5qc29uX3RvX3NoZWV0KFtdKTtcbiAgICB1dGlscy5zaGVldF9hZGRfYW9hKHdzLCBbZmllbGRzXSk7XG4gICAgLy8gdXRpbHMuc2hlZXRfYWRkX2pzb24od3MsIHRoaXMuX2RhdGEsIHsgb3JpZ2luOiAnQTInLCBza2lwSGVhZGVyOiB0cnVlIH0pO1xuICAgIHV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdiLCB3cywgdGl0bGUpO1xuICAgIHdyaXRlRmlsZSh3YiwgdGl0bGUgKyAnLXRlbXBsYXRlLicgKyAneGxzeCcpO1xuICB9XG5cbiAgYWRkUm93KGV2ZW50OiB7IGluZGV4OiBudW1iZXI7IGtleTogc3RyaW5nIHwgbnVtYmVyOyBkYXRhOiBQYXJ0aWFsPFQ+IH0pIHtcbiAgICAvLyBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgdGhpcy5pbXBvcnRlZERhdGEudXBkYXRlKChkYXQpID0+IHtcbiAgICAgIC8vIGRhdFtldmVudC5pbmRleF0gPSB7IC4uLmRhdFtldmVudC5pbmRleF0sIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgIHJldHVybiBkYXQubWFwKChkLCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBldmVudC5pbmRleCkge1xuICAgICAgICAgIHJldHVybiB7IC4uLmQsIC4uLmV2ZW50LmRhdGEgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuaW1wb3J0ZWREYXRhKCkpO1xuICB9XG5cbiAgaXNEdXBsaWNhdGUoZGF0dW06IFBhcnRpYWw8VD4sIGFycmF5OiBQYXJ0aWFsPFQ+W10sIGlkZW50aWZpZXJzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiAoXG4gICAgICBhcnJheS5maWx0ZXIoXG4gICAgICAgIChkYXQpID0+XG4gICAgICAgICAgaWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGlkZW50aWZpZXJzLmV2ZXJ5KFxuICAgICAgICAgICAgKGlkZW50aWZpZXIpID0+XG4gICAgICAgICAgICAgIGRhdHVtW2lkZW50aWZpZXIgYXMga2V5b2YgVF0gJiZcbiAgICAgICAgICAgICAgZGF0dW1baWRlbnRpZmllciBhcyBrZXlvZiBUXSA9PT0gZGF0W2lkZW50aWZpZXIgYXMga2V5b2YgVF1cbiAgICAgICAgICApXG4gICAgICApLmxlbmd0aCA+IDFcbiAgICApO1xuICB9XG5cbiAgY2xlYXJEYXRhKCkge1xuICAgIHRoaXMuaW1wb3J0ZWREYXRhLnNldChbXSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, output, signal, computed,
|
|
2
|
+
import { input, output, signal, computed, Component, NgModule } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import * as i1 from '@angular/forms';
|
|
@@ -42,7 +42,7 @@ class DataExtendComponent {
|
|
|
42
42
|
fb;
|
|
43
43
|
properties = input([]);
|
|
44
44
|
extendDataEvent = output();
|
|
45
|
-
items
|
|
45
|
+
items;
|
|
46
46
|
showAll = signal(false);
|
|
47
47
|
visibleItems;
|
|
48
48
|
form;
|
|
@@ -51,9 +51,10 @@ class DataExtendComponent {
|
|
|
51
51
|
constructor(fb) {
|
|
52
52
|
this.fb = fb;
|
|
53
53
|
this.visibleItems = computed(() => this.showAll() ? this.items() : this.items().slice(0, 3));
|
|
54
|
-
effect(() => {
|
|
55
|
-
|
|
56
|
-
});
|
|
54
|
+
// effect(() => {
|
|
55
|
+
// this.items.set(this.properties());
|
|
56
|
+
// });
|
|
57
|
+
this.items = signal([]);
|
|
57
58
|
this.form = this.fb.group({
|
|
58
59
|
Name: ['', Validators.required],
|
|
59
60
|
DefaultValue: [''],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verben-ng-ui-src-lib-components-data-extend.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.component.html","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.ts"],"sourcesContent":["export interface DataExtendItem {\n Name: string;\n DataType: DataType;\n MaxValue: number;\n MinValue: number;\n IsRequired: boolean;\n DefaultValue: any;\n Value: any;\n Options: string;\n Id: string;\n}\n\nexport enum DataType {\n Text = 'Text',\n MultilineText = 'MultilineText',\n MailAddress = 'MailAddress',\n PhoneNumber = 'PhoneNumber',\n Number = 'Number',\n Decimal = 'Decimal',\n YesNo = 'YesNo',\n URL = 'URL',\n Image = 'Image',\n SingleSelection = 'SingleSelection',\n MultiSelection = 'MultiSelection',\n Colour = 'Colour',\n Video = 'Video',\n Audio = 'Audio',\n SingleFileSelection = 'SingleFileSelection',\n MultiFileSelection = 'MultiFileSelection',\n}\n","import {\n Component,\n computed,\n effect,\n input,\n output,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport { DataExtendItem, DataType } from './data-extend.types';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'lib-data-extend',\n templateUrl: './data-extend.component.html',\n styleUrl: './data-extend.component.css',\n})\nexport class DataExtendComponent {\n properties = input<DataExtendItem[]>([]);\n extendDataEvent = output<DataExtendItem[]>();\n\n items: WritableSignal<DataExtendItem[]> = signal<DataExtendItem[]>([]);\n showAll: WritableSignal<boolean> = signal<boolean>(false);\n visibleItems: Signal<DataExtendItem[]>;\n form: FormGroup;\n selectedItem: DataExtendItem | null = null;\n\n dataTypes = Object.values(DataType);\n\n constructor(private fb: FormBuilder) {\n this.visibleItems = computed(() =>\n this.showAll() ? this.items() : this.items().slice(0, 3)\n );\n effect(() => {\n this.items.set(this.properties());\n });\n\n this.form = this.fb.group({\n Name: ['', Validators.required],\n DefaultValue: [''],\n DataType: ['', Validators.required],\n MaxValue: [0],\n MinValue: [0],\n IsRequired: [false],\n Options: [''],\n });\n\n this.form.get('DataType')?.valueChanges.subscribe((value) => {\n if (\n value === DataType.SingleSelection ||\n value === DataType.MultiSelection\n ) {\n this.form.get('Options')?.enable();\n this.form.get('Options')?.setValue('');\n this.form.get('Options')?.setValidators([Validators.required]);\n } else {\n this.form.get('Options')?.clearValidators();\n this.form.get('Options')?.disable();\n }\n\n if (\n value === DataType.Number ||\n value === DataType.Decimal ||\n value === DataType.SingleSelection ||\n value === DataType.MultiSelection\n ) {\n this.form.get('MaxValue')?.setValidators([Validators.required]);\n this.form.get('MinValue')?.setValidators([Validators.required]);\n }\n if (value === DataType.Text) {\n this.form.get('MaxValue')?.clearValidators();\n this.form.get('MinValue')?.clearValidators();\n this.form.get('MaxValue')?.disable();\n this.form.get('MinValue')?.disable();\n } else {\n this.form.get('MaxValue')?.enable();\n this.form.get('MinValue')?.enable();\n }\n\n this.form.get('Options')?.updateValueAndValidity();\n });\n }\n\n toggleShowAll() {\n this.showAll.update((prev) => !prev);\n }\n\n addItem() {\n const newItem = this.form.value;\n if (this.selectedItem) {\n const index = this.items().indexOf(this.selectedItem);\n this.items.update((prev) => {\n const updatedItems = [...prev];\n updatedItems[index] = newItem;\n return updatedItems;\n });\n this.selectedItem = null;\n } else {\n this.items.update((prev) => [...prev, newItem]);\n }\n this.form.reset();\n }\n\n removeItem(index: number) {\n this.items.update((prev) => prev.filter((_, i) => i !== index));\n }\n\n save() {\n this.extendDataEvent.emit(this.items());\n }\n\n cancel() {\n this.items.set(this.properties());\n }\n\n reset() {\n this.items.set([]);\n this.form.reset();\n }\n\n editItem(index: number) {\n const item = this.items()[index];\n this.form.patchValue(item);\n this.selectedItem = item;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Expand</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Entity</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let item of visibleItems(); let i = index\" class=\"item\">\n <div class=\"item-label\">\n <!-- <input\n type=\"checkbox\"\n [id]=\"'item-' + i\"\n [(ngModel)]=\"item.selected\"\n /> -->\n <label [for]=\"'item-' + i\" class=\"checkbox-label\">\n {{ item.Name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editItem(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeItem(i)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"items().length > 3\"\n (click)=\"toggleShowAll()\"\n class=\"show-more\"\n >\n <span>{{ showAll() ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Properties</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"form\" (ngSubmit)=\"addItem()\">\n <div class=\"\">\n <p class=\"\">Name</p>\n <verbena-input\n placeholder=\"Enter property name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"Name\"\n ></verbena-input>\n </div>\n\n <div>\n <label for=\"DataType\">Data Type</label>\n <verben-drop-down\n id=\"DataType\"\n width=\"'100%'\"\n height=\"'1.25rem'\"\n placeholder=\"Select type\"\n [options]=\"dataTypes\"\n formControlName=\"DataType\"\n >\n </verben-drop-down>\n </div>\n\n <div>\n <label htmlFor=\"Options\" class=\"mb-2\">Enter Options</label>\n <verben-chip\n label=\"Options\"\n id=\"Options\"\n [placeholder]=\"'Enter Options'\"\n formControlName=\"Options\"\n ></verben-chip>\n </div>\n\n <div>\n <label for=\"DefaultValue\">Default Value</label>\n\n <verbena-input\n [placeHolder]=\"'Enter default text'\"\n formControlName=\"DefaultValue\"\n id=\"DefaultValue\"\n label=\"Default Value (optional)\"\n />\n </div>\n\n <div>\n <p class=\"mb-2\">Required</p>\n\n <verbena-switch\n label=\"Required\"\n [onColor]=\"'#1A237E'\"\n formControlName=\"IsRequired\"\n ></verbena-switch>\n </div>\n\n <div class=\"value-range\">\n <verbena-input\n [type]=\"'number'\"\n name=\"minValue\"\n label=\"Min Value\"\n formControlName=\"MinValue\"\n />\n <verbena-input\n [type]=\"'number'\"\n name=\"maxValue\"\n label=\"Max Value\"\n formControlName=\"MinValue\"\n />\n </div>\n\n <button\n [disabled]=\"!form.valid\"\n class=\"add-button ml-auto\"\n type=\"submit\"\n >\n + Add\n </button>\n </form>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"save()\">Extend</button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataExtendComponent } from './data-extend.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { CardModule } from 'verben-ng-ui/src/lib/components/card';\nimport { DropDownModule } from 'verben-ng-ui/src/lib/components/drop-down';\nimport { TooltipModule } from 'verben-ng-ui/src/lib/components/tooltip';\nimport { VerbenaInputModule } from 'verben-ng-ui/src/lib/verbena-input';\nimport { VerbenaSwitchModule } from 'verben-ng-ui/src/lib/verbena-switch';\nimport { ChipModule } from 'verben-ng-ui/src/lib/components/chip';\n\n@NgModule({\n declarations: [DataExtendComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n VerbenaInputModule,\n VerbenaSwitchModule,\n ChipModule,\n ],\n exports: [DataExtendComponent],\n})\nexport class DataExtendModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;IAYY,SAiBX;AAjBD,CAAA,UAAY,QAAQ,EAAA;AAClB,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,QAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,QAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,QAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,QAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,QAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjC,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,QAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3C,IAAA,QAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AAC3C,CAAC,EAjBW,QAAQ,KAAR,QAAQ,GAiBnB,EAAA,CAAA,CAAA;;MCXY,mBAAmB,CAAA;AAYV,IAAA,EAAA,CAAA;AAXpB,IAAA,UAAU,GAAG,KAAK,CAAmB,EAAE,CAAC,CAAC;IACzC,eAAe,GAAG,MAAM,EAAoB,CAAC;AAE7C,IAAA,KAAK,GAAqC,MAAM,CAAmB,EAAE,CAAC,CAAC;AACvE,IAAA,OAAO,GAA4B,MAAM,CAAU,KAAK,CAAC,CAAC;AAC1D,IAAA,YAAY,CAA2B;AACvC,IAAA,IAAI,CAAY;IAChB,YAAY,GAA0B,IAAI,CAAC;AAE3C,IAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEpC,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;AACjC,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,MAC3B,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACzD,CAAC;QACF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAC/B,YAAY,EAAE,CAAC,EAAE,CAAC;AAClB,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YACnC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACb,QAAQ,EAAE,CAAC,CAAC,CAAC;YACb,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,OAAO,EAAE,CAAC,EAAE,CAAC;AACd,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC1D,YAAA,IACE,KAAK,KAAK,QAAQ,CAAC,eAAe;AAClC,gBAAA,KAAK,KAAK,QAAQ,CAAC,cAAc,EACjC;gBACA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;AACnC,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;aAChE;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;gBAC5C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;aACrC;AAED,YAAA,IACE,KAAK,KAAK,QAAQ,CAAC,MAAM;gBACzB,KAAK,KAAK,QAAQ,CAAC,OAAO;gBAC1B,KAAK,KAAK,QAAQ,CAAC,eAAe;AAClC,gBAAA,KAAK,KAAK,QAAQ,CAAC,cAAc,EACjC;AACA,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChE,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;aACjE;AACD,YAAA,IAAI,KAAK,KAAK,QAAQ,CAAC,IAAI,EAAE;gBAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;gBAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;gBAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;aACtC;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;aACrC;YAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACrD,SAAC,CAAC,CAAC;KACJ;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;KACtC;IAED,OAAO,GAAA;AACL,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACzB,gBAAA,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,gBAAA,YAAY,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;AAC9B,gBAAA,OAAO,YAAY,CAAC;AACtB,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;aAAM;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;SACjD;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACnB;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;KACjE;IAED,IAAI,GAAA;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACzC;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;KACnC;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;KACnB;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC1B;wGA3GU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,2PClBhC,giKAoLA,EAAA,MAAA,EAAA,CAAA,0vCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,OAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,YAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,OAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,KAAA,EAAA,KAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,KAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDlKa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,giKAAA,EAAA,MAAA,EAAA,CAAA,0vCAAA,CAAA,EAAA,CAAA;;;MEchB,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAhB,gBAAgB,EAAA,YAAA,EAAA,CAfZ,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAEhC,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,SAAS;YACT,UAAU;YACV,cAAc;YACd,aAAa;YACb,kBAAkB;YAClB,mBAAmB;AACnB,YAAA,UAAU,aAEF,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAElB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAbzB,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,SAAS;YACT,UAAU;YACV,cAAc;YACd,aAAa;YACb,kBAAkB;YAClB,mBAAmB;YACnB,UAAU,CAAA,EAAA,CAAA,CAAA;;4FAID,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,SAAS;wBACT,UAAU;wBACV,cAAc;wBACd,aAAa;wBACb,kBAAkB;wBAClB,mBAAmB;wBACnB,UAAU;AACX,qBAAA;oBACD,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA,CAAA;;;AC3BD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"verben-ng-ui-src-lib-components-data-extend.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.types.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.component.html","../../../projects/verben-ng-ui/src/lib/components/data-extend/data-extend.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.ts"],"sourcesContent":["export interface DataExtendItem {\n Name: string;\n DataType: DataType;\n MaxValue: number;\n MinValue: number;\n IsRequired: boolean;\n DefaultValue: any;\n Value: any;\n Options: string;\n Id: string;\n}\n\nexport enum DataType {\n Text = 'Text',\n MultilineText = 'MultilineText',\n MailAddress = 'MailAddress',\n PhoneNumber = 'PhoneNumber',\n Number = 'Number',\n Decimal = 'Decimal',\n YesNo = 'YesNo',\n URL = 'URL',\n Image = 'Image',\n SingleSelection = 'SingleSelection',\n MultiSelection = 'MultiSelection',\n Colour = 'Colour',\n Video = 'Video',\n Audio = 'Audio',\n SingleFileSelection = 'SingleFileSelection',\n MultiFileSelection = 'MultiFileSelection',\n}\n","import {\n Component,\n computed,\n input,\n output,\n Signal,\n signal,\n WritableSignal\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { DataExtendItem, DataType } from './data-extend.types';\n\n@Component({\n selector: 'lib-data-extend',\n templateUrl: './data-extend.component.html',\n styleUrl: './data-extend.component.css',\n})\nexport class DataExtendComponent {\n properties = input<DataExtendItem[]>([]);\n extendDataEvent = output<DataExtendItem[]>();\n\n items: WritableSignal<DataExtendItem[]>;\n showAll: WritableSignal<boolean> = signal<boolean>(false);\n visibleItems: Signal<DataExtendItem[]>;\n form: FormGroup;\n selectedItem: DataExtendItem | null = null;\n\n dataTypes = Object.values(DataType);\n\n constructor(private fb: FormBuilder) {\n this.visibleItems = computed(() =>\n this.showAll() ? this.items() : this.items().slice(0, 3)\n );\n // effect(() => {\n // this.items.set(this.properties());\n // });\n\n this.items = signal<DataExtendItem[]>([]);\n\n this.form = this.fb.group({\n Name: ['', Validators.required],\n DefaultValue: [''],\n DataType: ['', Validators.required],\n MaxValue: [0],\n MinValue: [0],\n IsRequired: [false],\n Options: [''],\n });\n\n this.form.get('DataType')?.valueChanges.subscribe((value) => {\n if (\n value === DataType.SingleSelection ||\n value === DataType.MultiSelection\n ) {\n this.form.get('Options')?.enable();\n this.form.get('Options')?.setValue('');\n this.form.get('Options')?.setValidators([Validators.required]);\n } else {\n this.form.get('Options')?.clearValidators();\n this.form.get('Options')?.disable();\n }\n\n if (\n value === DataType.Number ||\n value === DataType.Decimal ||\n value === DataType.SingleSelection ||\n value === DataType.MultiSelection\n ) {\n this.form.get('MaxValue')?.setValidators([Validators.required]);\n this.form.get('MinValue')?.setValidators([Validators.required]);\n }\n if (value === DataType.Text) {\n this.form.get('MaxValue')?.clearValidators();\n this.form.get('MinValue')?.clearValidators();\n this.form.get('MaxValue')?.disable();\n this.form.get('MinValue')?.disable();\n } else {\n this.form.get('MaxValue')?.enable();\n this.form.get('MinValue')?.enable();\n }\n\n this.form.get('Options')?.updateValueAndValidity();\n });\n }\n\n toggleShowAll() {\n this.showAll.update((prev) => !prev);\n }\n\n addItem() {\n const newItem = this.form.value;\n if (this.selectedItem) {\n const index = this.items().indexOf(this.selectedItem);\n this.items.update((prev) => {\n const updatedItems = [...prev];\n updatedItems[index] = newItem;\n return updatedItems;\n });\n this.selectedItem = null;\n } else {\n this.items.update((prev) => [...prev, newItem]);\n }\n this.form.reset();\n }\n\n removeItem(index: number) {\n this.items.update((prev) => prev.filter((_, i) => i !== index));\n }\n\n save() {\n this.extendDataEvent.emit(this.items());\n }\n\n cancel() {\n this.items.set(this.properties());\n }\n\n reset() {\n this.items.set([]);\n this.form.reset();\n }\n\n editItem(index: number) {\n const item = this.items()[index];\n this.form.patchValue(item);\n this.selectedItem = item;\n }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Expand</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Entity</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <div *ngFor=\"let item of visibleItems(); let i = index\" class=\"item\">\n <div class=\"item-label\">\n <!-- <input\n type=\"checkbox\"\n [id]=\"'item-' + i\"\n [(ngModel)]=\"item.selected\"\n /> -->\n <label [for]=\"'item-' + i\" class=\"checkbox-label\">\n {{ item.Name }}\n </label>\n </div>\n <div class=\"item-actions\">\n <verben-svg\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#3479E9\"\n fill=\"white\"\n (click)=\"editItem(i)\"\n ></verben-svg>\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n stroke=\"#E20000\"\n (click)=\"removeItem(i)\"\n ></verben-svg>\n </div>\n </div>\n <div\n *ngIf=\"items().length > 3\"\n (click)=\"toggleShowAll()\"\n class=\"show-more\"\n >\n <span>{{ showAll() ? \"Show less\" : \"Show more\" }}</span>\n <verben-svg\n icon=\"chevron\"\n [width]=\"8\"\n [height]=\"6\"\n fill=\"black\"\n stroke=\"black\"\n ></verben-svg>\n </div>\n </section>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div class=\"section-header\">\n <h3 class=\"section-title\">Properties</h3>\n <verben-svg\n icon=\"info\"\n [width]=\"15\"\n [height]=\"15\"\n fill=\"grey\"\n ></verben-svg>\n </div>\n <form [formGroup]=\"form\" (ngSubmit)=\"addItem()\">\n <div class=\"\">\n <p class=\"\">Name</p>\n <verbena-input\n placeholder=\"Enter property name\"\n border=\"1px solid #ccc\"\n borderRadius=\"5px\"\n textColor=\"black\"\n width=\"100%\"\n fontSize=\"11px\"\n height=\"20px\"\n pd=\"2px 4px !important\"\n bgColor=\"transparent\"\n [showBorder]=\"true\"\n [showErrorMessage]=\"true\"\n [errorPosition]=\"'bottom'\"\n formControlName=\"Name\"\n ></verbena-input>\n </div>\n\n <div>\n <label for=\"DataType\">Data Type</label>\n <verben-drop-down\n id=\"DataType\"\n width=\"'100%'\"\n height=\"'1.25rem'\"\n placeholder=\"Select type\"\n [options]=\"dataTypes\"\n formControlName=\"DataType\"\n >\n </verben-drop-down>\n </div>\n\n <div>\n <label htmlFor=\"Options\" class=\"mb-2\">Enter Options</label>\n <verben-chip\n label=\"Options\"\n id=\"Options\"\n [placeholder]=\"'Enter Options'\"\n formControlName=\"Options\"\n ></verben-chip>\n </div>\n\n <div>\n <label for=\"DefaultValue\">Default Value</label>\n\n <verbena-input\n [placeHolder]=\"'Enter default text'\"\n formControlName=\"DefaultValue\"\n id=\"DefaultValue\"\n label=\"Default Value (optional)\"\n />\n </div>\n\n <div>\n <p class=\"mb-2\">Required</p>\n\n <verbena-switch\n label=\"Required\"\n [onColor]=\"'#1A237E'\"\n formControlName=\"IsRequired\"\n ></verbena-switch>\n </div>\n\n <div class=\"value-range\">\n <verbena-input\n [type]=\"'number'\"\n name=\"minValue\"\n label=\"Min Value\"\n formControlName=\"MinValue\"\n />\n <verbena-input\n [type]=\"'number'\"\n name=\"maxValue\"\n label=\"Max Value\"\n formControlName=\"MinValue\"\n />\n </div>\n\n <button\n [disabled]=\"!form.valid\"\n class=\"add-button ml-auto\"\n type=\"submit\"\n >\n + Add\n </button>\n </form>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button class=\"export-button\" (click)=\"save()\">Extend</button>\n </div>\n</verben-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataExtendComponent } from './data-extend.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { CardModule } from 'verben-ng-ui/src/lib/components/card';\nimport { DropDownModule } from 'verben-ng-ui/src/lib/components/drop-down';\nimport { TooltipModule } from 'verben-ng-ui/src/lib/components/tooltip';\nimport { VerbenaInputModule } from 'verben-ng-ui/src/lib/verbena-input';\nimport { VerbenaSwitchModule } from 'verben-ng-ui/src/lib/verbena-switch';\nimport { ChipModule } from 'verben-ng-ui/src/lib/components/chip';\n\n@NgModule({\n declarations: [DataExtendComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SvgModule,\n CardModule,\n DropDownModule,\n TooltipModule,\n VerbenaInputModule,\n VerbenaSwitchModule,\n ChipModule,\n ],\n exports: [DataExtendComponent],\n})\nexport class DataExtendModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -22,27 +22,49 @@ class DataImportService {
|
|
|
22
22
|
constructor() { }
|
|
23
23
|
// Function to transform imported data to match your model structure
|
|
24
24
|
transformImportData(importedData, columnDefinitions) {
|
|
25
|
-
// Create
|
|
25
|
+
// Create mappings from header to importKey and importBy
|
|
26
26
|
const headerToImportKeyMap = new Map();
|
|
27
|
-
|
|
27
|
+
const headerToImportByMap = new Map();
|
|
28
|
+
// Filter column definitions to only those with importKey or importBy and populate the maps
|
|
28
29
|
columnDefinitions
|
|
29
|
-
.filter((col) => col.importKey)
|
|
30
|
+
.filter((col) => col.importKey || col.importBy)
|
|
30
31
|
.forEach((col) => {
|
|
31
32
|
const header = typeof col.header === 'string'
|
|
32
33
|
? col.header
|
|
33
34
|
: col.header({}).toString();
|
|
34
|
-
|
|
35
|
+
if (col.importKey) {
|
|
36
|
+
headerToImportKeyMap.set(header, col.importKey);
|
|
37
|
+
}
|
|
38
|
+
if (col.importBy) {
|
|
39
|
+
headerToImportByMap.set(header, col.importBy);
|
|
40
|
+
}
|
|
35
41
|
});
|
|
36
42
|
// Transform each row in the imported data
|
|
37
43
|
return importedData.map((row) => {
|
|
38
44
|
const transformedRow = {};
|
|
39
45
|
// Process each key in the row
|
|
40
46
|
Object.entries(row).forEach(([key, value]) => {
|
|
41
|
-
//
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
// Check if there's an importBy transformation first (takes priority)
|
|
48
|
+
const importBy = headerToImportByMap.get(key);
|
|
49
|
+
if (importBy) {
|
|
50
|
+
if (typeof importBy === 'function') {
|
|
51
|
+
// Use the importBy function to transform the entire imported row
|
|
52
|
+
const importKey = headerToImportKeyMap.get(key);
|
|
53
|
+
if (importKey) {
|
|
54
|
+
transformedRow[importKey] = importBy(row);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// importBy is a direct key reference
|
|
59
|
+
transformedRow[importBy] = value;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Fall back to importKey if no importBy is defined
|
|
64
|
+
const importKey = headerToImportKeyMap.get(key);
|
|
65
|
+
if (importKey) {
|
|
66
|
+
transformedRow[importKey] = value;
|
|
67
|
+
}
|
|
46
68
|
}
|
|
47
69
|
});
|
|
48
70
|
return transformedRow;
|
|
@@ -204,7 +226,7 @@ class DataImportComponent {
|
|
|
204
226
|
});
|
|
205
227
|
this.previewColumnsList = computed(() => {
|
|
206
228
|
return this.previewColumns()
|
|
207
|
-
.filter((col) => col.importKey || col.formControlName)
|
|
229
|
+
.filter((col) => col.importKey || col.importBy || col.formControlName)
|
|
208
230
|
.map((column) => {
|
|
209
231
|
const matchingTemplate = this.columnTemplates().find((t) => t.columnId === column.id);
|
|
210
232
|
if (matchingTemplate) {
|
|
@@ -229,7 +251,7 @@ class DataImportComponent {
|
|
|
229
251
|
this.headers = computed(() => {
|
|
230
252
|
return (this.fields() ??
|
|
231
253
|
this.previewColumnsList()
|
|
232
|
-
.filter((col) => col.importKey)
|
|
254
|
+
.filter((col) => col.importKey || col.importBy)
|
|
233
255
|
.map((col) => col.header.toString()));
|
|
234
256
|
});
|
|
235
257
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verben-ng-ui-src-lib-components-data-import.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.html","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.ts"],"sourcesContent":["import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { read, utils, writeFile } from 'xlsx';\nimport { ColumnDefinition } from 'verben-ng-ui/src/lib/components/data-table';\n\n@Injectable()\nexport class DataImportService<T> {\n importedData: WritableSignal<T[]> = signal([]);\n\n constructor() {}\n\n // Function to transform imported data to match your model structure\n transformImportData<T>(\n importedData: Record<string, any>[],\n columnDefinitions: ColumnDefinition<T>[]\n ): Partial<T>[] {\n // Create a mapping from header to importKey\n const headerToImportKeyMap = new Map<string, keyof T>();\n\n // Filter column definitions to only those with importKey and populate the map\n columnDefinitions\n .filter((col) => col.importKey)\n .forEach((col) => {\n const header =\n typeof col.header === 'string'\n ? col.header\n : col.header({}).toString();\n headerToImportKeyMap.set(header, col.importKey as keyof T);\n });\n\n // Transform each row in the imported data\n return importedData.map((row) => {\n const transformedRow: Partial<T> = {};\n\n // Process each key in the row\n Object.entries(row).forEach(([key, value]) => {\n // Find the corresponding import key for this header/key\n const importKey = headerToImportKeyMap.get(key);\n\n // Only add the field if there's a matching import key\n if (importKey) {\n transformedRow[importKey] = value;\n }\n });\n\n return transformedRow;\n });\n }\n\n handleImport(\n file: File,\n // previewer?: (data: any[]) => void,\n columnDefinitions: ColumnDefinition<T>[],\n parseImport?: (data: any) => Partial<T>[]\n ) {\n const reader = new FileReader();\n reader.onload = (event: any) => {\n // const wb = read(event.target.result, {\n // type: 'string',\n // raw: true,\n // cellText: true,\n // cellFormula: false,\n // cellNF: false,\n // });\n // console.time('Begin');\n let imported: any[] = [];\n const wb = read(event.target.result, { raw: true });\n const sheets = wb.SheetNames;\n if (sheets.length) {\n const rows = utils.sheet_to_json(wb.Sheets[sheets[0]], {\n raw: false,\n // defval: '',\n // rawNumbers: true,\n // dateNF: 'dd/mm/yyyy',\n }) as Record<string, any>[];\n\n imported = this.transformImportData(rows, columnDefinitions) as T[];\n // console.log('TRANSFORMED', imported);\n\n if (parseImport) {\n imported = parseImport(imported);\n // console.log('PARSED', imported);\n }\n // previewer(imported);\n }\n // console.log('Imported data:', JSON.stringify(imported, null, 2));\n // console.time('Start Process');\n this.importedData.set(imported);\n // console.timeEnd('Begin');\n return imported;\n };\n return reader.readAsArrayBuffer(file);\n }\n\n handleTemplateExport(fields: string[], title: string) {\n console.log(fields);\n const wb = utils.book_new();\n const ws: any = utils.json_to_sheet([]);\n utils.sheet_add_aoa(ws, [fields]);\n // utils.sheet_add_json(ws, this._data, { origin: 'A2', skipHeader: true });\n utils.book_append_sheet(wb, ws, title);\n writeFile(wb, title + '-template.' + 'xlsx');\n }\n\n addRow(event: { index: number; key: string | number; data: Partial<T> }) {\n // console.log(event);\n this.importedData.update((dat) => {\n // dat[event.index] = { ...dat[event.index], ...event.data };\n return dat.map((d, i) => {\n if (i === event.index) {\n return { ...d, ...event.data };\n }\n return d;\n });\n });\n // console.log(this.importedData());\n }\n\n isDuplicate(datum: Partial<T>, array: Partial<T>[], identifiers: string[]) {\n return (\n array.filter(\n (dat) =>\n identifiers.length > 0 &&\n identifiers.every(\n (identifier) =>\n datum[identifier as keyof T] &&\n datum[identifier as keyof T] === dat[identifier as keyof T]\n )\n ).length > 1\n );\n }\n\n clearData() {\n this.importedData.set([]);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n ColumnDefinition,\n FormGroupConfig,\n} from 'verben-ng-ui/src/lib/components/data-table';\nimport {\n AbstractControl,\n FormArray,\n FormControl,\n FormGroup,\n} from '@angular/forms';\nimport { ColumnDirective } from 'verben-ng-ui/src/lib/components/data-table';\nimport { DataImportService } from './data-import.service';\n\n@Component({\n selector: 'lib-data-import',\n templateUrl: './data-import.component.html',\n styleUrl: './data-import.component.css',\n providers: [DataImportService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataImportComponent<T extends {}> {\n previewColumns = input.required<ColumnDefinition<T>[]>();\n formGroupConfig = input<\n FormGroupConfig<{\n [K in keyof T]: AbstractControl;\n }>\n >();\n /**\n * @deprecated Use importKey of previewColumns instead\n */\n fields = input<string[]>();\n title = input<string>('export-template');\n columnTemplates = input<readonly ColumnDirective[]>([]);\n parser = input<(data: any) => Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n previewData = input<T[]>();\n /**\n * Pass the method to use the imported data,\n * and eventually returns true if successfully used\n */\n onImportComplete = input<(data: Partial<T>[]) => Promise<boolean>>();\n /**\n * @deprecated Please remove, now handled internally\n */\n exportTemplateEvent = output<string[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n importEvent = output<File>();\n /**\n * @deprecated Use the onImportComplete input instead\n */\n importEventData = output<Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n rowSave = output<{\n index: number;\n key: number | string;\n data: Partial<T>;\n }>();\n\n // data: Signal<(T & { isDuplicate: boolean })[]>;\n previewColumnsList: Signal<ColumnDefinition<T>[]>;\n forms = new FormArray<FormGroup>([]);\n uniqueIdentifiers: WritableSignal<string[]> = signal([]);\n // duplicateDataMap: Map<string, number> = new Map();\n duplicateIndexSet = new Set<number>();\n invalidIndexSet = new Map<number, ColumnDirective['columnId'][]>();\n\n headers: Signal<string[]>;\n\n private _ext: 'xlsx' | 'xls' | 'csv' = 'xlsx';\n\n files: File[] = [];\n isDragging = false;\n showPreview = false;\n\n constructor(public service: DataImportService<T>) {\n effect(() => {\n // const columns = this.previewColumnsList();\n\n const identifiers = this.uniqueIdentifiers();\n\n this.service.importedData()?.forEach((d, i, arr) => {\n if (service.isDuplicate(d, arr, identifiers)) {\n this.duplicateIndexSet.add(i);\n }\n\n // columns\n // .filter(({ validatorFn }) => validatorFn !== undefined)\n // .forEach((column) => {\n // const invalidFields = Object.entries(d).reduce<string[]>(\n // (f, [k, v], i) => {\n // if (\n // column.validatorFn &&\n // !column.validatorFn(v as T[keyof T])\n // ) {\n // f.push(column.id);\n // }\n // return f;\n // },\n // []\n // );\n\n // if (invalidFields.length > 0) {\n // this.invalidIndexSet.set(i, invalidFields);\n // }\n // });\n });\n });\n\n this.previewColumnsList = computed(() => {\n return this.previewColumns()\n .filter((col) => col.importKey || col.formControlName)\n .map((column) => {\n const matchingTemplate = this.columnTemplates().find(\n (t) => t.columnId === column.id\n );\n if (matchingTemplate) {\n return {\n ...column,\n // accessorKey: column.importKey,\n cellTemplate: matchingTemplate.cellTemplate,\n cellEditTemplate: matchingTemplate.cellEditTemplate,\n headerTemplate: matchingTemplate.headerTemplate,\n footerTemplate: matchingTemplate.footerTemplate,\n };\n }\n return column;\n })\n .concat([\n {\n id: 'actions',\n header: 'Actions',\n },\n ]);\n });\n\n this.headers = computed(() => {\n return (\n this.fields() ??\n this.previewColumnsList()\n .filter((col) => col.importKey)\n .map((col) => col.header.toString())\n );\n });\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n this.isDragging = true;\n }\n\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n }\n\n onDrop(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n this.files = Array.from(event.dataTransfer!.files);\n\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n onFileSelected(event: any) {\n this.files = Array.from(event.target.files);\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n\n event.target.value = '';\n\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n reset() {\n this.files = [];\n this.showPreview = false;\n this.service.clearData();\n }\n\n save() {\n // console.log('PREVDATA', this.service.importedData());\n const onComplete = this.onImportComplete();\n if (onComplete) {\n onComplete(this.service.importedData()).then((success) => {\n if (success) {\n this.showPreview = false;\n }\n });\n } else {\n this.importEventData.emit(this.service.importedData() || []);\n this.showPreview = false;\n }\n }\n\n getControlNames() {\n const controls = this.formGroupConfig()?.controls;\n if (controls) {\n return Object.keys(controls);\n }\n return [];\n }\n\n handleTemplateExport() {\n this.service.handleTemplateExport(this.headers(), this.title());\n // this.exportTemplateEvent.emit(this.headers());\n }\n\n // getFormControl(index: number, field: string) {\n // const control = this..get(index)?.get(field) as FormControl<any>;\n // console.log(control);\n // return control;\n // }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Import</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <div class=\"flex gap-4 justify-between\">\n <button class=\"export-button\" (click)=\"handleTemplateExport()\">\n Download Template\n </button>\n <label for=\"fileInput\" class=\"export-button\">Upload File</label>\n </div>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div\n class=\"drop-area\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <p>\n Drag and drop files here or\n <label for=\"fileInput\" [style.color]=\"'#3479E9'\"\n >click to browse</label\n >\n </p>\n <input\n type=\"file\"\n id=\"fileInput\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n accept=\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\n multiple\n />\n </div>\n <div *ngIf=\"files.length > 0\">\n <h3>Uploaded Files:</h3>\n <ul>\n <li *ngFor=\"let file of files\">{{ file.name }}</li>\n </ul>\n </div>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button\n [disabled]=\"service.importedData().length < 1\"\n class=\"export-button\"\n (click)=\"save()\"\n >\n Import\n </button>\n </div>\n</verben-card>\n\n<!-- Modal Component -->\n<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'large'\"\n [mode]=\"'dialogue'\"\n [customClass]=\"'my-modal-custom-class'\"\n [disableFooter]=\"false\"\n [modalData]=\"[{ data: {} }]\"\n [isVisible]=\"showPreview\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n dialogueWidth=\"85%\"\n>\n <a download=\"\"></a>\n</verben-dialogue>\n\n<!-- Define templates -->\n<ng-template #headerTemplate>\n <h2>Upload Preview</h2>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"flex gap-4 items-center justify-between my-4\">\n <p class=\"\">Total Items: {{ service.importedData().length }}</p>\n\n <p class=\"\">Duplicates: {{ duplicateIndexSet.size }}</p>\n\n <p class=\"\">Invalid Items: {{ invalidIndexSet.size }}</p>\n\n <verben-drop-down\n [multiselect]=\"true\"\n placeholder=\"Find duplicates by\"\n [options]=\"headers()\"\n [ngModel]=\"uniqueIdentifiers()\"\n (ngModelChange)=\"uniqueIdentifiers.set($event)\"\n ></verben-drop-down>\n </div>\n <div style=\"max-height: min(75vh, 780px); overflow: auto\">\n <lib-data-table\n [data]=\"service.importedData()\"\n [columns]=\"previewColumnsList()\"\n [formGroupConfig]=\"formGroupConfig()\"\n [useVirtualScroll]=\"true\"\n (rowSave)=\"service.addRow($event)\"\n >\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div class=\"footer-buttons flex gap-4 items-center justify-between my-4\">\n <button\n class=\"btn btn-secondary cancel-button\"\n (click)=\"showPreview = false\"\n >\n Cancel\n </button>\n <button class=\"btn btn-primary export-button\" (click)=\"save()\">\n Complete\n </button>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataImportComponent } from './data-import.component';\nimport { CardModule } from 'verben-ng-ui/src/lib/components/card';\nimport { VerbenDialogueModule } from 'verben-ng-ui/src/lib/components/verben-dialogue';\nimport { DataTableModule } from 'verben-ng-ui/src/lib/components/data-table';\nimport { VerbenaInputModule } from 'verben-ng-ui/src/lib/verbena-input';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { DropDownModule } from 'verben-ng-ui/src/lib/components/drop-down';\n\n@NgModule({\n declarations: [DataImportComponent],\n imports: [\n CommonModule,\n CardModule,\n VerbenDialogueModule,\n DataTableModule,\n VerbenaInputModule,\n DropDownModule,\n ReactiveFormsModule,\n FormsModule,\n SvgModule,\n ],\n exports: [DataImportComponent],\n})\nexport class DataImportModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DataImportService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verben-ng-ui-src-lib-components-data-import.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.service.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.component.html","../../../projects/verben-ng-ui/src/lib/components/data-import/data-import.module.ts","../../../projects/verben-ng-ui/src/lib/components/data-import/verben-ng-ui-src-lib-components-data-import.ts"],"sourcesContent":["import { Injectable, signal, WritableSignal } from '@angular/core';\nimport { ColumnDefinition } from 'verben-ng-ui/src/lib/components/data-table';\nimport { read, utils, writeFile } from 'xlsx';\n\n@Injectable()\nexport class DataImportService<T> {\n importedData: WritableSignal<T[]> = signal([]);\n\n constructor() { }\n\n // Function to transform imported data to match your model structure\n transformImportData<T>(\n importedData: Record<string, any>[],\n columnDefinitions: ColumnDefinition<T>[]\n ): Partial<T>[] {\n // Create mappings from header to importKey and importBy\n const headerToImportKeyMap = new Map<string, keyof T>();\n const headerToImportByMap = new Map<\n string,\n keyof T | ((importedRow: any) => T[keyof T])\n >();\n\n // Filter column definitions to only those with importKey or importBy and populate the maps\n columnDefinitions\n .filter((col) => col.importKey || col.importBy)\n .forEach((col) => {\n const header =\n typeof col.header === 'string'\n ? col.header\n : col.header({}).toString();\n\n if (col.importKey) {\n headerToImportKeyMap.set(header, col.importKey as keyof T);\n }\n\n if (col.importBy) {\n headerToImportByMap.set(header, col.importBy);\n }\n });\n\n // Transform each row in the imported data\n return importedData.map((row) => {\n const transformedRow: Partial<T> = {};\n\n // Process each key in the row\n Object.entries(row).forEach(([key, value]) => {\n // Check if there's an importBy transformation first (takes priority)\n const importBy = headerToImportByMap.get(key);\n\n if (importBy) {\n if (typeof importBy === 'function') {\n // Use the importBy function to transform the entire imported row\n const importKey = headerToImportKeyMap.get(key);\n if (importKey) {\n transformedRow[importKey] = importBy(row);\n }\n } else {\n // importBy is a direct key reference\n transformedRow[importBy] = value;\n }\n } else {\n // Fall back to importKey if no importBy is defined\n const importKey = headerToImportKeyMap.get(key);\n if (importKey) {\n transformedRow[importKey] = value;\n }\n }\n });\n\n return transformedRow;\n });\n }\n\n handleImport(\n file: File,\n // previewer?: (data: any[]) => void,\n columnDefinitions: ColumnDefinition<T>[],\n parseImport?: (data: any) => Partial<T>[]\n ) {\n const reader = new FileReader();\n reader.onload = (event: any) => {\n // const wb = read(event.target.result, {\n // type: 'string',\n // raw: true,\n // cellText: true,\n // cellFormula: false,\n // cellNF: false,\n // });\n // console.time('Begin');\n let imported: any[] = [];\n const wb = read(event.target.result, { raw: true });\n const sheets = wb.SheetNames;\n if (sheets.length) {\n const rows = utils.sheet_to_json(wb.Sheets[sheets[0]], {\n raw: false,\n // defval: '',\n // rawNumbers: true,\n // dateNF: 'dd/mm/yyyy',\n }) as Record<string, any>[];\n\n imported = this.transformImportData(rows, columnDefinitions) as T[];\n // console.log('TRANSFORMED', imported);\n\n if (parseImport) {\n imported = parseImport(imported);\n // console.log('PARSED', imported);\n }\n // previewer(imported);\n }\n // console.log('Imported data:', JSON.stringify(imported, null, 2));\n // console.time('Start Process');\n this.importedData.set(imported);\n // console.timeEnd('Begin');\n return imported;\n };\n return reader.readAsArrayBuffer(file);\n }\n\n handleTemplateExport(fields: string[], title: string) {\n console.log(fields);\n const wb = utils.book_new();\n const ws: any = utils.json_to_sheet([]);\n utils.sheet_add_aoa(ws, [fields]);\n // utils.sheet_add_json(ws, this._data, { origin: 'A2', skipHeader: true });\n utils.book_append_sheet(wb, ws, title);\n writeFile(wb, title + '-template.' + 'xlsx');\n }\n\n addRow(event: { index: number; key: string | number; data: Partial<T> }) {\n // console.log(event);\n this.importedData.update((dat) => {\n // dat[event.index] = { ...dat[event.index], ...event.data };\n return dat.map((d, i) => {\n if (i === event.index) {\n return { ...d, ...event.data };\n }\n return d;\n });\n });\n // console.log(this.importedData());\n }\n\n isDuplicate(datum: Partial<T>, array: Partial<T>[], identifiers: string[]) {\n return (\n array.filter(\n (dat) =>\n identifiers.length > 0 &&\n identifiers.every(\n (identifier) =>\n datum[identifier as keyof T] &&\n datum[identifier as keyof T] === dat[identifier as keyof T]\n )\n ).length > 1\n );\n }\n\n clearData() {\n this.importedData.set([]);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n output,\n Signal,\n signal,\n WritableSignal,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormGroup\n} from '@angular/forms';\nimport {\n ColumnDefinition,\n ColumnDirective,\n FormGroupConfig,\n} from 'verben-ng-ui/src/lib/components/data-table';\nimport { DataImportService } from './data-import.service';\n\n@Component({\n selector: 'lib-data-import',\n templateUrl: './data-import.component.html',\n styleUrl: './data-import.component.css',\n providers: [DataImportService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataImportComponent<T extends {}> {\n previewColumns = input.required<ColumnDefinition<T>[]>();\n formGroupConfig = input<\n FormGroupConfig<{\n [K in keyof T]: AbstractControl;\n }>\n >();\n /**\n * @deprecated Use importKey of previewColumns instead\n */\n fields = input<string[]>();\n title = input<string>('export-template');\n columnTemplates = input<readonly ColumnDirective[]>([]);\n parser = input<(data: any) => Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n previewData = input<T[]>();\n /**\n * Pass the method to use the imported data,\n * and eventually returns true if successfully used\n */\n onImportComplete = input<(data: Partial<T>[]) => Promise<boolean>>();\n /**\n * @deprecated Please remove, now handled internally\n */\n exportTemplateEvent = output<string[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n importEvent = output<File>();\n /**\n * @deprecated Use the onImportComplete input instead\n */\n importEventData = output<Partial<T>[]>();\n /**\n * @deprecated Please remove, now handled internally\n */\n rowSave = output<{\n index: number;\n key: number | string;\n data: Partial<T>;\n }>();\n\n // data: Signal<(T & { isDuplicate: boolean })[]>;\n previewColumnsList: Signal<ColumnDefinition<T>[]>;\n forms = new FormArray<FormGroup>([]);\n uniqueIdentifiers: WritableSignal<string[]> = signal([]);\n // duplicateDataMap: Map<string, number> = new Map();\n duplicateIndexSet = new Set<number>();\n invalidIndexSet = new Map<number, ColumnDirective['columnId'][]>();\n\n headers: Signal<string[]>;\n\n private _ext: 'xlsx' | 'xls' | 'csv' = 'xlsx';\n\n files: File[] = [];\n isDragging = false;\n showPreview = false;\n\n constructor(public service: DataImportService<T>) {\n effect(() => {\n // const columns = this.previewColumnsList();\n\n const identifiers = this.uniqueIdentifiers();\n\n this.service.importedData()?.forEach((d, i, arr) => {\n if (service.isDuplicate(d, arr, identifiers)) {\n this.duplicateIndexSet.add(i);\n }\n\n // columns\n // .filter(({ validatorFn }) => validatorFn !== undefined)\n // .forEach((column) => {\n // const invalidFields = Object.entries(d).reduce<string[]>(\n // (f, [k, v], i) => {\n // if (\n // column.validatorFn &&\n // !column.validatorFn(v as T[keyof T])\n // ) {\n // f.push(column.id);\n // }\n // return f;\n // },\n // []\n // );\n\n // if (invalidFields.length > 0) {\n // this.invalidIndexSet.set(i, invalidFields);\n // }\n // });\n });\n });\n\n this.previewColumnsList = computed(() => {\n return this.previewColumns()\n .filter((col) => col.importKey || col.importBy || col.formControlName)\n .map((column) => {\n const matchingTemplate = this.columnTemplates().find(\n (t) => t.columnId === column.id\n );\n if (matchingTemplate) {\n return {\n ...column,\n // accessorKey: column.importKey,\n cellTemplate: matchingTemplate.cellTemplate,\n cellEditTemplate: matchingTemplate.cellEditTemplate,\n headerTemplate: matchingTemplate.headerTemplate,\n footerTemplate: matchingTemplate.footerTemplate,\n };\n }\n return column;\n })\n .concat([\n {\n id: 'actions',\n header: 'Actions',\n },\n ]);\n });\n\n this.headers = computed(() => {\n return (\n this.fields() ??\n this.previewColumnsList()\n .filter((col) => col.importKey || col.importBy)\n .map((col) => col.header.toString())\n );\n });\n }\n\n onDragOver(event: DragEvent) {\n event.preventDefault();\n this.isDragging = true;\n }\n\n onDragLeave(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n }\n\n onDrop(event: DragEvent) {\n event.preventDefault();\n this.isDragging = false;\n this.files = Array.from(event.dataTransfer!.files);\n\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n onFileSelected(event: any) {\n this.files = Array.from(event.target.files);\n this.service.handleImport(\n this.files[0],\n this.previewColumnsList(),\n this.parser()\n );\n\n event.target.value = '';\n\n // this.importEvent.emit(this.files[0]);\n this.showPreview = true;\n }\n\n reset() {\n this.files = [];\n this.showPreview = false;\n this.service.clearData();\n }\n\n save() {\n // console.log('PREVDATA', this.service.importedData());\n const onComplete = this.onImportComplete();\n if (onComplete) {\n onComplete(this.service.importedData()).then((success) => {\n if (success) {\n this.showPreview = false;\n }\n });\n } else {\n this.importEventData.emit(this.service.importedData() || []);\n this.showPreview = false;\n }\n }\n\n getControlNames() {\n const controls = this.formGroupConfig()?.controls;\n if (controls) {\n return Object.keys(controls);\n }\n return [];\n }\n\n handleTemplateExport() {\n this.service.handleTemplateExport(this.headers(), this.title());\n // this.exportTemplateEvent.emit(this.headers());\n }\n\n // getFormControl(index: number, field: string) {\n // const control = this..get(index)?.get(field) as FormControl<any>;\n // console.log(control);\n // return control;\n // }\n}\n","<verben-card\n width=\"24rem\"\n borderRadius=\"1rem\"\n [border]=\"'1px solid #D4A007'\"\n bgColor=\"#FFFFFF\"\n class=\"export-card\"\n>\n <div card-header class=\"card-header\">\n <h4 class=\"header-title\">Import</h4>\n <button\n class=\"reset-button\"\n [style.color]=\"'#3479E9'\"\n [style.background-color]=\"'transparent'\"\n [style.border]=\"'none'\"\n [style.cursor]=\"'pointer'\"\n [style.font-size]=\"'12px'\"\n (click)=\"reset()\"\n >\n Reset\n </button>\n </div>\n <div card-body class=\"card-body\">\n <div class=\"flex gap-4 justify-between\">\n <button class=\"export-button\" (click)=\"handleTemplateExport()\">\n Download Template\n </button>\n <label for=\"fileInput\" class=\"export-button\">Upload File</label>\n </div>\n <hr class=\"divider\" />\n <section class=\"section\">\n <div\n class=\"drop-area\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <p>\n Drag and drop files here or\n <label for=\"fileInput\" [style.color]=\"'#3479E9'\"\n >click to browse</label\n >\n </p>\n <input\n type=\"file\"\n id=\"fileInput\"\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n accept=\".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\"\n multiple\n />\n </div>\n <div *ngIf=\"files.length > 0\">\n <h3>Uploaded Files:</h3>\n <ul>\n <li *ngFor=\"let file of files\">{{ file.name }}</li>\n </ul>\n </div>\n </section>\n </div>\n <div card-footer class=\"card-footer\">\n <button\n [disabled]=\"service.importedData().length < 1\"\n class=\"export-button\"\n (click)=\"save()\"\n >\n Import\n </button>\n </div>\n</verben-card>\n\n<!-- Modal Component -->\n<verben-dialogue\n [showCloseIcon]=\"true\"\n [dismissOutsideClick]=\"true\"\n [closeOnEscape]=\"true\"\n [size]=\"'large'\"\n [mode]=\"'dialogue'\"\n [customClass]=\"'my-modal-custom-class'\"\n [disableFooter]=\"false\"\n [modalData]=\"[{ data: {} }]\"\n [isVisible]=\"showPreview\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\n dialogueWidth=\"85%\"\n>\n <a download=\"\"></a>\n</verben-dialogue>\n\n<!-- Define templates -->\n<ng-template #headerTemplate>\n <h2>Upload Preview</h2>\n</ng-template>\n\n<ng-template #bodyTemplate>\n <div class=\"flex gap-4 items-center justify-between my-4\">\n <p class=\"\">Total Items: {{ service.importedData().length }}</p>\n\n <p class=\"\">Duplicates: {{ duplicateIndexSet.size }}</p>\n\n <p class=\"\">Invalid Items: {{ invalidIndexSet.size }}</p>\n\n <verben-drop-down\n [multiselect]=\"true\"\n placeholder=\"Find duplicates by\"\n [options]=\"headers()\"\n [ngModel]=\"uniqueIdentifiers()\"\n (ngModelChange)=\"uniqueIdentifiers.set($event)\"\n ></verben-drop-down>\n </div>\n <div style=\"max-height: min(75vh, 780px); overflow: auto\">\n <lib-data-table\n [data]=\"service.importedData()\"\n [columns]=\"previewColumnsList()\"\n [formGroupConfig]=\"formGroupConfig()\"\n [useVirtualScroll]=\"true\"\n (rowSave)=\"service.addRow($event)\"\n >\n <ng-container libColumn=\"actions\">\n <ng-template\n #cell\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"edit\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value\n let-deleteRow=\"deleteRow\"\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex action-buttons\">\n <verben-svg\n (click)=\"toggleRowEdit()\"\n icon=\"tick\"\n [width]=\"15\"\n [height]=\"15\"\n class=\"cursor-pointer\"\n ></verben-svg>\n\n <verben-svg\n icon=\"delete\"\n [width]=\"15\"\n [height]=\"15\"\n (click)=\"deleteRow()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n </div>\n</ng-template>\n\n<ng-template #footerTemplate>\n <div class=\"footer-buttons flex gap-4 items-center justify-between my-4\">\n <button\n class=\"btn btn-secondary cancel-button\"\n (click)=\"showPreview = false\"\n >\n Cancel\n </button>\n <button class=\"btn btn-primary export-button\" (click)=\"save()\">\n Complete\n </button>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataImportComponent } from './data-import.component';\nimport { CardModule } from 'verben-ng-ui/src/lib/components/card';\nimport { VerbenDialogueModule } from 'verben-ng-ui/src/lib/components/verben-dialogue';\nimport { DataTableModule } from 'verben-ng-ui/src/lib/components/data-table';\nimport { VerbenaInputModule } from 'verben-ng-ui/src/lib/verbena-input';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\nimport { DropDownModule } from 'verben-ng-ui/src/lib/components/drop-down';\n\n@NgModule({\n declarations: [DataImportComponent],\n imports: [\n CommonModule,\n CardModule,\n VerbenDialogueModule,\n DataTableModule,\n VerbenaInputModule,\n DropDownModule,\n ReactiveFormsModule,\n FormsModule,\n SvgModule,\n ],\n exports: [DataImportComponent],\n})\nexport class DataImportModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DataImportService"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "verben-ng-ui",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.61",
|
|
4
4
|
"author": "Verbena Logic",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -51,6 +51,12 @@
|
|
|
51
51
|
"esm": "./esm2022/src/lib/convert-to-integer/verben-ng-ui-src-lib-convert-to-integer.mjs",
|
|
52
52
|
"default": "./fesm2022/verben-ng-ui-src-lib-convert-to-integer.mjs"
|
|
53
53
|
},
|
|
54
|
+
"./src/lib/convert-to-number": {
|
|
55
|
+
"types": "./src/lib/convert-to-number/index.d.ts",
|
|
56
|
+
"esm2022": "./esm2022/src/lib/convert-to-number/verben-ng-ui-src-lib-convert-to-number.mjs",
|
|
57
|
+
"esm": "./esm2022/src/lib/convert-to-number/verben-ng-ui-src-lib-convert-to-number.mjs",
|
|
58
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-convert-to-number.mjs"
|
|
59
|
+
},
|
|
54
60
|
"./src/lib/email-validator": {
|
|
55
61
|
"types": "./src/lib/email-validator/index.d.ts",
|
|
56
62
|
"esm2022": "./esm2022/src/lib/email-validator/verben-ng-ui-src-lib-email-validator.mjs",
|
|
@@ -63,12 +69,6 @@
|
|
|
63
69
|
"esm": "./esm2022/src/lib/models/verben-ng-ui-src-lib-models.mjs",
|
|
64
70
|
"default": "./fesm2022/verben-ng-ui-src-lib-models.mjs"
|
|
65
71
|
},
|
|
66
|
-
"./src/lib/convert-to-number": {
|
|
67
|
-
"types": "./src/lib/convert-to-number/index.d.ts",
|
|
68
|
-
"esm2022": "./esm2022/src/lib/convert-to-number/verben-ng-ui-src-lib-convert-to-number.mjs",
|
|
69
|
-
"esm": "./esm2022/src/lib/convert-to-number/verben-ng-ui-src-lib-convert-to-number.mjs",
|
|
70
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-convert-to-number.mjs"
|
|
71
|
-
},
|
|
72
72
|
"./src/lib/number-range": {
|
|
73
73
|
"types": "./src/lib/number-range/index.d.ts",
|
|
74
74
|
"esm2022": "./esm2022/src/lib/number-range/verben-ng-ui-src-lib-number-range.mjs",
|
|
@@ -129,6 +129,12 @@
|
|
|
129
129
|
"esm": "./esm2022/src/lib/verbena-input/verben-ng-ui-src-lib-verbena-input.mjs",
|
|
130
130
|
"default": "./fesm2022/verben-ng-ui-src-lib-verbena-input.mjs"
|
|
131
131
|
},
|
|
132
|
+
"./src/lib/components/card": {
|
|
133
|
+
"types": "./src/lib/components/card/index.d.ts",
|
|
134
|
+
"esm2022": "./esm2022/src/lib/components/card/verben-ng-ui-src-lib-components-card.mjs",
|
|
135
|
+
"esm": "./esm2022/src/lib/components/card/verben-ng-ui-src-lib-components-card.mjs",
|
|
136
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-card.mjs"
|
|
137
|
+
},
|
|
132
138
|
"./src/lib/verbena-switch": {
|
|
133
139
|
"types": "./src/lib/verbena-switch/index.d.ts",
|
|
134
140
|
"esm2022": "./esm2022/src/lib/verbena-switch/verben-ng-ui-src-lib-verbena-switch.mjs",
|
|
@@ -141,17 +147,11 @@
|
|
|
141
147
|
"esm": "./esm2022/src/lib/verbena-textarea/verben-ng-ui-src-lib-verbena-textarea.mjs",
|
|
142
148
|
"default": "./fesm2022/verben-ng-ui-src-lib-verbena-textarea.mjs"
|
|
143
149
|
},
|
|
144
|
-
"./src/lib/components/
|
|
145
|
-
"types": "./src/lib/components/
|
|
146
|
-
"esm2022": "./esm2022/src/lib/components/
|
|
147
|
-
"esm": "./esm2022/src/lib/components/
|
|
148
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-
|
|
149
|
-
},
|
|
150
|
-
"./src/lib/components/card-data-view": {
|
|
151
|
-
"types": "./src/lib/components/card-data-view/index.d.ts",
|
|
152
|
-
"esm2022": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
|
|
153
|
-
"esm": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
|
|
154
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-card-data-view.mjs"
|
|
150
|
+
"./src/lib/components/data-columns": {
|
|
151
|
+
"types": "./src/lib/components/data-columns/index.d.ts",
|
|
152
|
+
"esm2022": "./esm2022/src/lib/components/data-columns/verben-ng-ui-src-lib-components-data-columns.mjs",
|
|
153
|
+
"esm": "./esm2022/src/lib/components/data-columns/verben-ng-ui-src-lib-components-data-columns.mjs",
|
|
154
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-columns.mjs"
|
|
155
155
|
},
|
|
156
156
|
"./src/lib/components/chip": {
|
|
157
157
|
"types": "./src/lib/components/chip/index.d.ts",
|
|
@@ -159,11 +159,11 @@
|
|
|
159
159
|
"esm": "./esm2022/src/lib/components/chip/verben-ng-ui-src-lib-components-chip.mjs",
|
|
160
160
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-chip.mjs"
|
|
161
161
|
},
|
|
162
|
-
"./src/lib/components/data-
|
|
163
|
-
"types": "./src/lib/components/data-
|
|
164
|
-
"esm2022": "./esm2022/src/lib/components/data-
|
|
165
|
-
"esm": "./esm2022/src/lib/components/data-
|
|
166
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-
|
|
162
|
+
"./src/lib/components/card-data-view": {
|
|
163
|
+
"types": "./src/lib/components/card-data-view/index.d.ts",
|
|
164
|
+
"esm2022": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
|
|
165
|
+
"esm": "./esm2022/src/lib/components/card-data-view/verben-ng-ui-src-lib-components-card-data-view.mjs",
|
|
166
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-card-data-view.mjs"
|
|
167
167
|
},
|
|
168
168
|
"./src/lib/components/data-export": {
|
|
169
169
|
"types": "./src/lib/components/data-export/index.d.ts",
|
|
@@ -171,12 +171,6 @@
|
|
|
171
171
|
"esm": "./esm2022/src/lib/components/data-export/verben-ng-ui-src-lib-components-data-export.mjs",
|
|
172
172
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-export.mjs"
|
|
173
173
|
},
|
|
174
|
-
"./src/lib/components/data-extend": {
|
|
175
|
-
"types": "./src/lib/components/data-extend/index.d.ts",
|
|
176
|
-
"esm2022": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
|
|
177
|
-
"esm": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
|
|
178
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-extend.mjs"
|
|
179
|
-
},
|
|
180
174
|
"./src/lib/components/data-filter": {
|
|
181
175
|
"types": "./src/lib/components/data-filter/index.d.ts",
|
|
182
176
|
"esm2022": "./esm2022/src/lib/components/data-filter/verben-ng-ui-src-lib-components-data-filter.mjs",
|
|
@@ -195,12 +189,6 @@
|
|
|
195
189
|
"esm": "./esm2022/src/lib/components/data-sort/verben-ng-ui-src-lib-components-data-sort.mjs",
|
|
196
190
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-sort.mjs"
|
|
197
191
|
},
|
|
198
|
-
"./src/lib/components/data-table": {
|
|
199
|
-
"types": "./src/lib/components/data-table/index.d.ts",
|
|
200
|
-
"esm2022": "./esm2022/src/lib/components/data-table/verben-ng-ui-src-lib-components-data-table.mjs",
|
|
201
|
-
"esm": "./esm2022/src/lib/components/data-table/verben-ng-ui-src-lib-components-data-table.mjs",
|
|
202
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-table.mjs"
|
|
203
|
-
},
|
|
204
192
|
"./src/lib/components/data-view": {
|
|
205
193
|
"types": "./src/lib/components/data-view/index.d.ts",
|
|
206
194
|
"esm2022": "./esm2022/src/lib/components/data-view/verben-ng-ui-src-lib-components-data-view.mjs",
|
|
@@ -213,6 +201,12 @@
|
|
|
213
201
|
"esm": "./esm2022/src/lib/components/data-xport/verben-ng-ui-src-lib-components-data-xport.mjs",
|
|
214
202
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-xport.mjs"
|
|
215
203
|
},
|
|
204
|
+
"./src/lib/components/data-table": {
|
|
205
|
+
"types": "./src/lib/components/data-table/index.d.ts",
|
|
206
|
+
"esm2022": "./esm2022/src/lib/components/data-table/verben-ng-ui-src-lib-components-data-table.mjs",
|
|
207
|
+
"esm": "./esm2022/src/lib/components/data-table/verben-ng-ui-src-lib-components-data-table.mjs",
|
|
208
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-table.mjs"
|
|
209
|
+
},
|
|
216
210
|
"./src/lib/components/date-picker": {
|
|
217
211
|
"types": "./src/lib/components/date-picker/index.d.ts",
|
|
218
212
|
"esm2022": "./esm2022/src/lib/components/date-picker/verben-ng-ui-src-lib-components-date-picker.mjs",
|
|
@@ -225,24 +219,30 @@
|
|
|
225
219
|
"esm": "./esm2022/src/lib/components/drop-down/verben-ng-ui-src-lib-components-drop-down.mjs",
|
|
226
220
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-drop-down.mjs"
|
|
227
221
|
},
|
|
228
|
-
"./src/lib/components/icons": {
|
|
229
|
-
"types": "./src/lib/components/icons/index.d.ts",
|
|
230
|
-
"esm2022": "./esm2022/src/lib/components/icons/verben-ng-ui-src-lib-components-icons.mjs",
|
|
231
|
-
"esm": "./esm2022/src/lib/components/icons/verben-ng-ui-src-lib-components-icons.mjs",
|
|
232
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-icons.mjs"
|
|
233
|
-
},
|
|
234
222
|
"./src/lib/components/image": {
|
|
235
223
|
"types": "./src/lib/components/image/index.d.ts",
|
|
236
224
|
"esm2022": "./esm2022/src/lib/components/image/verben-ng-ui-src-lib-components-image.mjs",
|
|
237
225
|
"esm": "./esm2022/src/lib/components/image/verben-ng-ui-src-lib-components-image.mjs",
|
|
238
226
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-image.mjs"
|
|
239
227
|
},
|
|
228
|
+
"./src/lib/components/data-extend": {
|
|
229
|
+
"types": "./src/lib/components/data-extend/index.d.ts",
|
|
230
|
+
"esm2022": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
|
|
231
|
+
"esm": "./esm2022/src/lib/components/data-extend/verben-ng-ui-src-lib-components-data-extend.mjs",
|
|
232
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-data-extend.mjs"
|
|
233
|
+
},
|
|
240
234
|
"./src/lib/components/notification": {
|
|
241
235
|
"types": "./src/lib/components/notification/index.d.ts",
|
|
242
236
|
"esm2022": "./esm2022/src/lib/components/notification/verben-ng-ui-src-lib-components-notification.mjs",
|
|
243
237
|
"esm": "./esm2022/src/lib/components/notification/verben-ng-ui-src-lib-components-notification.mjs",
|
|
244
238
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-notification.mjs"
|
|
245
239
|
},
|
|
240
|
+
"./src/lib/components/icons": {
|
|
241
|
+
"types": "./src/lib/components/icons/index.d.ts",
|
|
242
|
+
"esm2022": "./esm2022/src/lib/components/icons/verben-ng-ui-src-lib-components-icons.mjs",
|
|
243
|
+
"esm": "./esm2022/src/lib/components/icons/verben-ng-ui-src-lib-components-icons.mjs",
|
|
244
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-icons.mjs"
|
|
245
|
+
},
|
|
246
246
|
"./src/lib/components/number-input": {
|
|
247
247
|
"types": "./src/lib/components/number-input/index.d.ts",
|
|
248
248
|
"esm2022": "./esm2022/src/lib/components/number-input/verben-ng-ui-src-lib-components-number-input.mjs",
|
|
@@ -255,35 +255,23 @@
|
|
|
255
255
|
"esm": "./esm2022/src/lib/components/pop-up/verben-ng-ui-src-lib-components-pop-up.mjs",
|
|
256
256
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-pop-up.mjs"
|
|
257
257
|
},
|
|
258
|
-
"./src/lib/components/shared": {
|
|
259
|
-
"types": "./src/lib/components/shared/index.d.ts",
|
|
260
|
-
"esm2022": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
|
|
261
|
-
"esm": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
|
|
262
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-shared.mjs"
|
|
263
|
-
},
|
|
264
258
|
"./src/lib/components/sort-table": {
|
|
265
259
|
"types": "./src/lib/components/sort-table/index.d.ts",
|
|
266
260
|
"esm2022": "./esm2022/src/lib/components/sort-table/verben-ng-ui-src-lib-components-sort-table.mjs",
|
|
267
261
|
"esm": "./esm2022/src/lib/components/sort-table/verben-ng-ui-src-lib-components-sort-table.mjs",
|
|
268
262
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-sort-table.mjs"
|
|
269
263
|
},
|
|
270
|
-
"./src/lib/components/svg": {
|
|
271
|
-
"types": "./src/lib/components/svg/index.d.ts",
|
|
272
|
-
"esm2022": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
|
|
273
|
-
"esm": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
|
|
274
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-svg.mjs"
|
|
275
|
-
},
|
|
276
264
|
"./src/lib/components/table-filter": {
|
|
277
265
|
"types": "./src/lib/components/table-filter/index.d.ts",
|
|
278
266
|
"esm2022": "./esm2022/src/lib/components/table-filter/verben-ng-ui-src-lib-components-table-filter.mjs",
|
|
279
267
|
"esm": "./esm2022/src/lib/components/table-filter/verben-ng-ui-src-lib-components-table-filter.mjs",
|
|
280
268
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-table-filter.mjs"
|
|
281
269
|
},
|
|
282
|
-
"./src/lib/components/
|
|
283
|
-
"types": "./src/lib/components/
|
|
284
|
-
"esm2022": "./esm2022/src/lib/components/
|
|
285
|
-
"esm": "./esm2022/src/lib/components/
|
|
286
|
-
"default": "./fesm2022/verben-ng-ui-src-lib-components-
|
|
270
|
+
"./src/lib/components/shared": {
|
|
271
|
+
"types": "./src/lib/components/shared/index.d.ts",
|
|
272
|
+
"esm2022": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
|
|
273
|
+
"esm": "./esm2022/src/lib/components/shared/verben-ng-ui-src-lib-components-shared.mjs",
|
|
274
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-shared.mjs"
|
|
287
275
|
},
|
|
288
276
|
"./src/lib/components/verben-dialogue": {
|
|
289
277
|
"types": "./src/lib/components/verben-dialogue/index.d.ts",
|
|
@@ -291,6 +279,18 @@
|
|
|
291
279
|
"esm": "./esm2022/src/lib/components/verben-dialogue/verben-ng-ui-src-lib-components-verben-dialogue.mjs",
|
|
292
280
|
"default": "./fesm2022/verben-ng-ui-src-lib-components-verben-dialogue.mjs"
|
|
293
281
|
},
|
|
282
|
+
"./src/lib/components/svg": {
|
|
283
|
+
"types": "./src/lib/components/svg/index.d.ts",
|
|
284
|
+
"esm2022": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
|
|
285
|
+
"esm": "./esm2022/src/lib/components/svg/verben-ng-ui-src-lib-components-svg.mjs",
|
|
286
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-svg.mjs"
|
|
287
|
+
},
|
|
288
|
+
"./src/lib/components/tooltip": {
|
|
289
|
+
"types": "./src/lib/components/tooltip/index.d.ts",
|
|
290
|
+
"esm2022": "./esm2022/src/lib/components/tooltip/verben-ng-ui-src-lib-components-tooltip.mjs",
|
|
291
|
+
"esm": "./esm2022/src/lib/components/tooltip/verben-ng-ui-src-lib-components-tooltip.mjs",
|
|
292
|
+
"default": "./fesm2022/verben-ng-ui-src-lib-components-tooltip.mjs"
|
|
293
|
+
},
|
|
294
294
|
"./src/lib/components/verben-mail": {
|
|
295
295
|
"types": "./src/lib/components/verben-mail/index.d.ts",
|
|
296
296
|
"esm2022": "./esm2022/src/lib/components/verben-mail/verben-ng-ui-src-lib-components-verben-mail.mjs",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Signal, WritableSignal } from '@angular/core';
|
|
2
|
-
import { DataExtendItem, DataType } from './data-extend.types';
|
|
3
2
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
3
|
+
import { DataExtendItem, DataType } from './data-extend.types';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class DataExtendComponent {
|
|
6
6
|
private fb;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Signal, WritableSignal } from '@angular/core';
|
|
2
|
-
import { ColumnDefinition, FormGroupConfig } from 'verben-ng-ui/src/lib/components/data-table';
|
|
3
2
|
import { AbstractControl, FormArray, FormGroup } from '@angular/forms';
|
|
4
|
-
import { ColumnDirective } from 'verben-ng-ui/src/lib/components/data-table';
|
|
3
|
+
import { ColumnDefinition, ColumnDirective, FormGroupConfig } from 'verben-ng-ui/src/lib/components/data-table';
|
|
5
4
|
import { DataImportService } from './data-import.service';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
export declare class DataImportComponent<T extends {}> {
|