verben-ng-ui 0.7.7 → 0.7.9

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.
@@ -0,0 +1,113 @@
1
+ import { Component, computed, effect, input, output, signal, } from '@angular/core';
2
+ import { DataType } from './data-extend.types';
3
+ import { Validators } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/forms";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "../svg/svg.component";
8
+ import * as i4 from "../card/card.component";
9
+ import * as i5 from "../drop-down/drop-down.component";
10
+ import * as i6 from "../../Verbena-input/verbena-input.component";
11
+ import * as i7 from "../../verbena-switch/verbena-switch.component";
12
+ import * as i8 from "../chip/chip.component";
13
+ export class DataExtendComponent {
14
+ fb;
15
+ properties = input([]);
16
+ extendDataEvent = output();
17
+ items = signal([]);
18
+ showAll = signal(false);
19
+ visibleItems;
20
+ form;
21
+ selectedItem = null;
22
+ dataTypes = Object.values(DataType);
23
+ constructor(fb) {
24
+ this.fb = fb;
25
+ this.visibleItems = computed(() => this.showAll() ? this.items() : this.items().slice(0, 3));
26
+ effect(() => {
27
+ this.items.set(this.properties());
28
+ });
29
+ this.form = this.fb.group({
30
+ Name: ['', Validators.required],
31
+ DefaultValue: [''],
32
+ DataType: ['', Validators.required],
33
+ MaxValue: [0],
34
+ MinValue: [0],
35
+ IsRequired: [false],
36
+ Options: [''],
37
+ });
38
+ this.form.get('DataType')?.valueChanges.subscribe((value) => {
39
+ if (value === DataType.SingleSelection ||
40
+ value === DataType.MultiSelection) {
41
+ this.form.get('Options')?.enable();
42
+ this.form.get('Options')?.setValue('');
43
+ this.form.get('Options')?.setValidators([Validators.required]);
44
+ }
45
+ else {
46
+ this.form.get('Options')?.clearValidators();
47
+ this.form.get('Options')?.disable();
48
+ }
49
+ if (value === DataType.Number ||
50
+ value === DataType.Decimal ||
51
+ value === DataType.SingleSelection ||
52
+ value === DataType.MultiSelection) {
53
+ this.form.get('MaxValue')?.setValidators([Validators.required]);
54
+ this.form.get('MinValue')?.setValidators([Validators.required]);
55
+ }
56
+ if (value === DataType.Text) {
57
+ this.form.get('MaxValue')?.clearValidators();
58
+ this.form.get('MinValue')?.clearValidators();
59
+ this.form.get('MaxValue')?.disable();
60
+ this.form.get('MinValue')?.disable();
61
+ }
62
+ else {
63
+ this.form.get('MaxValue')?.enable();
64
+ this.form.get('MinValue')?.enable();
65
+ }
66
+ this.form.get('Options')?.updateValueAndValidity();
67
+ });
68
+ }
69
+ toggleShowAll() {
70
+ this.showAll.update((prev) => !prev);
71
+ }
72
+ addItem() {
73
+ const newItem = this.form.value;
74
+ if (this.selectedItem) {
75
+ const index = this.items().indexOf(this.selectedItem);
76
+ this.items.update((prev) => {
77
+ const updatedItems = [...prev];
78
+ updatedItems[index] = newItem;
79
+ return updatedItems;
80
+ });
81
+ this.selectedItem = null;
82
+ }
83
+ else {
84
+ this.items.update((prev) => [...prev, newItem]);
85
+ }
86
+ this.form.reset();
87
+ }
88
+ removeItem(index) {
89
+ this.items.update((prev) => prev.filter((_, i) => i !== index));
90
+ }
91
+ save() {
92
+ this.extendDataEvent.emit(this.items());
93
+ }
94
+ cancel() {
95
+ this.items.set(this.properties());
96
+ }
97
+ reset() {
98
+ this.items.set([]);
99
+ this.form.reset();
100
+ }
101
+ editItem(index) {
102
+ const item = this.items()[index];
103
+ this.form.patchValue(item);
104
+ this.selectedItem = item;
105
+ }
106
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataExtendComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
107
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.10", type: DataExtendComponent, selector: "lib-data-extend", inputs: { properties: { classPropertyName: "properties", publicName: "properties", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { extendDataEvent: "extendDataEvent" }, ngImport: i0, 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"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i3.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }, { kind: "component", type: i4.CardComponent, selector: "verben-card", inputs: ["pd", "mg", "height", "width", "textColor", "bgColor", "border", "borderRadius", "disabled", "aspectRatio"] }, { kind: "component", type: i5.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "component", type: i6.VerbenaInputComponent, selector: "verbena-input", inputs: ["label", "placeHolder", "required", "svgPosition", "minLength", "maxLength", "type", "bgColor", "border", "borderRadius", "textColor", "value", "labelPosition", "labelColor", "disable", "readOnly", "min", "max", "showBorder", "showErrorMessage", "errorMessageColor", "errorBorderColor", "errorPosition", "svg", "svgWidth", "svgHeight", "svgColor", "capitalization", "inputContainerClass", "inputFieldClass", "passLength", "inputWrapperClass", "passwordToggle", "customErrorMessages", "fontSize", "icon", "textPass"], outputs: ["valueChange"] }, { kind: "component", type: i7.VerbenaSwitchComponent, selector: "verbena-switch", inputs: ["label", "checked", "disabled", "offColor", "onColor", "onText", "offText", "width", "height", "customStyles"], outputs: ["change"] }, { kind: "component", type: i8.ChipComponent, selector: "verben-chip", inputs: ["width", "placeholder", "max", "styleClass", "separator", "disabled", "required", "invalidMessage", "errorPosition"], outputs: ["onChange"] }] });
108
+ }
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataExtendComponent, decorators: [{
110
+ type: Component,
111
+ 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
+ }], ctorParameters: () => [{ type: i1.FormBuilder }] });
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHRlbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4dGVuZC9kYXRhLWV4dGVuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXh0ZW5kL2RhdGEtZXh0ZW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUVOLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWtCLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPcEUsTUFBTSxPQUFPLG1CQUFtQjtJQVlWO0lBWHBCLFVBQVUsR0FBRyxLQUFLLENBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLGVBQWUsR0FBRyxNQUFNLEVBQW9CLENBQUM7SUFFN0MsS0FBSyxHQUFxQyxNQUFNLENBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLE9BQU8sR0FBNEIsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzFELFlBQVksQ0FBMkI7SUFDdkMsSUFBSSxDQUFZO0lBQ2hCLFlBQVksR0FBMEIsSUFBSSxDQUFDO0lBRTNDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXBDLFlBQW9CLEVBQWU7UUFBZixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMs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QUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7d0dBM0dVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDJQQ2xCaEMsZ2lLQW9MQTs7NEZEbEthLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBlZmZlY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIFNpZ25hbCxcbiAgc2lnbmFsLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhRXh0ZW5kSXRlbSwgRGF0YVR5cGUgfSBmcm9tICcuL2RhdGEtZXh0ZW5kLnR5cGVzJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLWV4dGVuZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWV4dGVuZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLWV4dGVuZC5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUV4dGVuZENvbXBvbmVudCB7XG4gIHByb3BlcnRpZXMgPSBpbnB1dDxEYXRhRXh0ZW5kSXRlbVtdPihbXSk7XG4gIGV4dGVuZERhdGFFdmVudCA9IG91dHB1dDxEYXRhRXh0ZW5kSXRlbVtdPigpO1xuXG4gIGl0ZW1zOiBXcml0YWJsZVNpZ25hbDxEYXRhRXh0ZW5kSXRlbVtdPiA9IHNpZ25hbDxEYXRhRXh0ZW5kSXRlbVtdPihbXSk7XG4gIHNob3dBbGw6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+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
@@ -0,0 +1,55 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { DataExtendComponent } from './data-extend.component';
4
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import { SvgModule } from '../svg/svg.module';
6
+ import { CardModule } from '../card/card.module';
7
+ import { DropDownModule } from '../drop-down/drop-down.module';
8
+ import { TooltipModule } from '../tooltip/tooltip.module';
9
+ import { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';
10
+ import { VerbenaSwitchModule } from '../../verbena-switch/verbena-switch.module';
11
+ import { ChipModule } from '../chip/chip.module';
12
+ import * as i0 from "@angular/core";
13
+ export class DataExtendModule {
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataExtendModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.10", ngImport: i0, type: DataExtendModule, declarations: [DataExtendComponent], imports: [CommonModule,
16
+ FormsModule,
17
+ ReactiveFormsModule,
18
+ SvgModule,
19
+ CardModule,
20
+ DropDownModule,
21
+ TooltipModule,
22
+ VerbenaInputModule,
23
+ VerbenaSwitchModule,
24
+ ChipModule], exports: [DataExtendComponent] });
25
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataExtendModule, imports: [CommonModule,
26
+ FormsModule,
27
+ ReactiveFormsModule,
28
+ SvgModule,
29
+ CardModule,
30
+ DropDownModule,
31
+ TooltipModule,
32
+ VerbenaInputModule,
33
+ VerbenaSwitchModule,
34
+ ChipModule] });
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataExtendModule, decorators: [{
37
+ type: NgModule,
38
+ args: [{
39
+ declarations: [DataExtendComponent],
40
+ imports: [
41
+ CommonModule,
42
+ FormsModule,
43
+ ReactiveFormsModule,
44
+ SvgModule,
45
+ CardModule,
46
+ DropDownModule,
47
+ TooltipModule,
48
+ VerbenaInputModule,
49
+ VerbenaSwitchModule,
50
+ ChipModule,
51
+ ],
52
+ exports: [DataExtendComponent],
53
+ }]
54
+ }] });
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHRlbmQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWV4dGVuZC9kYXRhLWV4dGVuZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBa0JqRCxNQUFNLE9BQU8sZ0JBQWdCO3dHQUFoQixnQkFBZ0I7eUdBQWhCLGdCQUFnQixpQkFmWixtQkFBbUIsYUFFaEMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsU0FBUztZQUNULFVBQVU7WUFDVixjQUFjO1lBQ2QsYUFBYTtZQUNiLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsVUFBVSxhQUVGLG1CQUFtQjt5R0FFbEIsZ0JBQWdCLFlBYnpCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLFNBQVM7WUFDVCxVQUFVO1lBQ1YsY0FBYztZQUNkLGFBQWE7WUFDYixrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLFVBQVU7OzRGQUlELGdCQUFnQjtrQkFoQjVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixVQUFVO3FCQUNYO29CQUNELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0YUV4dGVuZENvbXBvbmVudCB9IGZyb20gJy4vZGF0YS1leHRlbmQuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAnLi4vc3ZnL3N2Zy5tb2R1bGUnO1xuaW1wb3J0IHsgQ2FyZE1vZHVsZSB9IGZyb20gJy4uL2NhcmQvY2FyZC5tb2R1bGUnO1xuaW1wb3J0IHsgRHJvcERvd25Nb2R1bGUgfSBmcm9tICcuLi9kcm9wLWRvd24vZHJvcC1kb3duLm1vZHVsZSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAnLi4vdG9vbHRpcC90b29sdGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBWZXJiZW5hSW5wdXRNb2R1bGUgfSBmcm9tICcuLi8uLi9WZXJiZW5hLWlucHV0L3ZlcmJlbmEtaW5wdXQubW9kdWxlJztcbmltcG9ydCB7IFZlcmJlbmFTd2l0Y2hNb2R1bGUgfSBmcm9tICcuLi8uLi92ZXJiZW5hLXN3aXRjaC92ZXJiZW5hLXN3aXRjaC5tb2R1bGUnO1xuaW1wb3J0IHsgQ2hpcE1vZHVsZSB9IGZyb20gJy4uL2NoaXAvY2hpcC5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtEYXRhRXh0ZW5kQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFN2Z01vZHVsZSxcbiAgICBDYXJkTW9kdWxlLFxuICAgIERyb3BEb3duTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgVmVyYmVuYUlucHV0TW9kdWxlLFxuICAgIFZlcmJlbmFTd2l0Y2hNb2R1bGUsXG4gICAgQ2hpcE1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW0RhdGFFeHRlbmRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhRXh0ZW5kTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,20 @@
1
+ export var DataType;
2
+ (function (DataType) {
3
+ DataType["Text"] = "Text";
4
+ DataType["MultilineText"] = "MultilineText";
5
+ DataType["MailAddress"] = "MailAddress";
6
+ DataType["PhoneNumber"] = "PhoneNumber";
7
+ DataType["Number"] = "Number";
8
+ DataType["Decimal"] = "Decimal";
9
+ DataType["YesNo"] = "YesNo";
10
+ DataType["URL"] = "URL";
11
+ DataType["Image"] = "Image";
12
+ DataType["SingleSelection"] = "SingleSelection";
13
+ DataType["MultiSelection"] = "MultiSelection";
14
+ DataType["Colour"] = "Colour";
15
+ DataType["Video"] = "Video";
16
+ DataType["Audio"] = "Audio";
17
+ DataType["SingleFileSelection"] = "SingleFileSelection";
18
+ DataType["MultiFileSelection"] = "MultiFileSelection";
19
+ })(DataType || (DataType = {}));
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHRlbmQudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtZXh0ZW5kL2RhdGEtZXh0ZW5kLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sQ0FBTixJQUFZLFFBaUJYO0FBakJELFdBQVksUUFBUTtJQUNsQix5QkFBYSxDQUFBO0lBQ2IsMkNBQStCLENBQUE7SUFDL0IsdUNBQTJCLENBQUE7SUFDM0IsdUNBQTJCLENBQUE7SUFDM0IsNkJBQWlCLENBQUE7SUFDakIsK0JBQW1CLENBQUE7SUFDbkIsMkJBQWUsQ0FBQTtJQUNmLHVCQUFXLENBQUE7SUFDWCwyQkFBZSxDQUFBO0lBQ2YsK0NBQW1DLENBQUE7SUFDbkMsNkNBQWlDLENBQUE7SUFDakMsNkJBQWlCLENBQUE7SUFDakIsMkJBQWUsQ0FBQTtJQUNmLDJCQUFlLENBQUE7SUFDZix1REFBMkMsQ0FBQTtJQUMzQyxxREFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBakJXLFFBQVEsS0FBUixRQUFRLFFBaUJuQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF0YUV4dGVuZEl0ZW0ge1xuICBOYW1lOiBzdHJpbmc7XG4gIERhdGFUeXBlOiBEYXRhVHlwZTtcbiAgTWF4VmFsdWU6IG51bWJlcjtcbiAgTWluVmFsdWU6IG51bWJlcjtcbiAgSXNSZXF1aXJlZDogYm9vbGVhbjtcbiAgRGVmYXVsdFZhbHVlOiBhbnk7XG4gIFZhbHVlOiBhbnk7XG4gIE9wdGlvbnM6IHN0cmluZztcbiAgSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gRGF0YVR5cGUge1xuICBUZXh0ID0gJ1RleHQnLFxuICBNdWx0aWxpbmVUZXh0ID0gJ011bHRpbGluZVRleHQnLFxuICBNYWlsQWRkcmVzcyA9ICdNYWlsQWRkcmVzcycsXG4gIFBob25lTnVtYmVyID0gJ1Bob25lTnVtYmVyJyxcbiAgTnVtYmVyID0gJ051bWJlcicsXG4gIERlY2ltYWwgPSAnRGVjaW1hbCcsXG4gIFllc05vID0gJ1llc05vJyxcbiAgVVJMID0gJ1VSTCcsXG4gIEltYWdlID0gJ0ltYWdlJyxcbiAgU2luZ2xlU2VsZWN0aW9uID0gJ1NpbmdsZVNlbGVjdGlvbicsXG4gIE11bHRpU2VsZWN0aW9uID0gJ011bHRpU2VsZWN0aW9uJyxcbiAgQ29sb3VyID0gJ0NvbG91cicsXG4gIFZpZGVvID0gJ1ZpZGVvJyxcbiAgQXVkaW8gPSAnQXVkaW8nLFxuICBTaW5nbGVGaWxlU2VsZWN0aW9uID0gJ1NpbmdsZUZpbGVTZWxlY3Rpb24nLFxuICBNdWx0aUZpbGVTZWxlY3Rpb24gPSAnTXVsdGlGaWxlU2VsZWN0aW9uJyxcbn1cbiJdfQ==
@@ -0,0 +1,78 @@
1
+ import { Component, effect, input, output, signal, } from '@angular/core';
2
+ import { FormArray, } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "../card/card.component";
6
+ import * as i3 from "../verben-dialogue/verben-dialogue.component";
7
+ import * as i4 from "../data-table/data-table.component";
8
+ import * as i5 from "../data-table/column.directive";
9
+ import * as i6 from "../drop-down/drop-down.component";
10
+ import * as i7 from "@angular/forms";
11
+ import * as i8 from "../svg/svg.component";
12
+ export class DataImportComponent {
13
+ previewColumns = input();
14
+ formGroupConfig = input();
15
+ title = input();
16
+ previewData = input();
17
+ exportTemplateEvent = output();
18
+ importEvent = output();
19
+ previewColumnsList = [];
20
+ forms = new FormArray([]);
21
+ uniqueIdentifiers = signal([]);
22
+ _ext = 'xlsx';
23
+ files = [];
24
+ isDragging = false;
25
+ showPreview = false;
26
+ constructor() {
27
+ effect(() => {
28
+ this.previewData()?.forEach((datum) => {
29
+ console.log(datum);
30
+ });
31
+ console.log(this.previewColumns());
32
+ });
33
+ }
34
+ onDragOver(event) {
35
+ event.preventDefault();
36
+ this.isDragging = true;
37
+ }
38
+ onDragLeave(event) {
39
+ event.preventDefault();
40
+ this.isDragging = false;
41
+ }
42
+ onDrop(event) {
43
+ event.preventDefault();
44
+ this.isDragging = false;
45
+ this.files = Array.from(event.dataTransfer.files);
46
+ this.importEvent.emit(this.files[0]);
47
+ this.showPreview = true;
48
+ }
49
+ onFileSelected(event) {
50
+ this.files = Array.from(event.target.files);
51
+ this.importEvent.emit(this.files[0]);
52
+ this.showPreview = true;
53
+ }
54
+ reset() { }
55
+ save() {
56
+ this.showPreview = true;
57
+ }
58
+ getControlNames() {
59
+ const controls = this.formGroupConfig()?.controls;
60
+ if (controls) {
61
+ return Object.keys(controls);
62
+ }
63
+ return [];
64
+ }
65
+ handleTemplateExport() {
66
+ const fg = this.formGroupConfig()?.controls;
67
+ if (fg) {
68
+ this.exportTemplateEvent.emit(Object.keys(fg));
69
+ }
70
+ }
71
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataImportComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
72
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.10", type: DataImportComponent, selector: "lib-data-import", inputs: { previewColumns: { classPropertyName: "previewColumns", publicName: "previewColumns", isSignal: true, isRequired: false, transformFunction: null }, formGroupConfig: { classPropertyName: "formGroupConfig", publicName: "formGroupConfig", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, previewData: { classPropertyName: "previewData", publicName: "previewData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { exportTemplateEvent: "exportTemplateEvent", importEvent: "importEvent" }, ngImport: i0, 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 <button class=\"export-button\" (click)=\"save()\">Upload File</button>\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\">click to browse</label>\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 class=\"export-button\" (click)=\"save()\">Import</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: { first_name: 'verben-ng', last_name: 'verbena' } }]\"\n [isVisible]=\"showPreview\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\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\">\n <p class=\"\">Total Items: {{ previewData()?.length }}</p>\n\n <verben-drop-down\n [multiselect]=\"true\"\n placeholder=\"Find duplicates by\"\n [options]=\"getControlNames()\"\n [ngModel]=\"uniqueIdentifiers()\"\n (ngModelChange)=\"uniqueIdentifiers.set($event)\"\n ></verben-drop-down>\n </div>\n <lib-data-table\n [data]=\"previewData() ?? []\"\n [columns]=\"previewColumns() ?? []\"\n [formGroupConfig]=\"formGroupConfig()\"\n >\n @for (column of previewColumns(); track column.id) {\n <ng-container [libColumn]=\"column.id\">\n <!-- <ng-template #cell let-value=\"value\" let-row=\"row\">\n <p>{{ value }}</p>\n </ng-template> -->\n @if (column.formControlName || column.accessorKey) {\n <ng-template\n #cell\n let-value=\"value\"\n let-row=\"row\"\n let-formControl=\"formControl\"\n >\n @if (formControl) {\n <input type=\"text\" [formControl]=\"formControl\" />\n } @else if (column.accessorKey) {\n <input type=\"text\" [ngModel]=\"value\" />\n } @else if (column.cellEditTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellEditTemplate\"\n [ngTemplateOutletContext]=\"formControl\"\n ></ng-container>\n }\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value=\"value\"\n let-row=\"row\"\n let-formControl=\"formControl\"\n >\n @if (formControl) {\n <input type=\"text\" [formControl]=\"formControl\" />\n } @else if (column.accessorKey) {\n <input type=\"text\" [ngModel]=\"value\" />\n } @else if (column.cellEditTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellEditTemplate\"\n [ngTemplateOutletContext]=\"formControl\"\n ></ng-container>\n }\n </ng-template>\n }\n </ng-container>\n }\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 gap-6\">\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\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\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)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n</ng-template>\n\n<ng-template #footerTemplate>\n <!-- <button class=\"btn btn-secondary\" (click)=\"onModalClose($event)\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"onConfirm()\">Confirm</button> -->\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{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}.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"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.CardComponent, selector: "verben-card", inputs: ["pd", "mg", "height", "width", "textColor", "bgColor", "border", "borderRadius", "disabled", "aspectRatio"] }, { kind: "component", type: i3.VerbenDialogueComponent, selector: "verben-dialogue", inputs: ["headerTemplate", "bodyTemplate", "footerTemplate", "showCloseIcon", "dismissOutsideClick", "closeOnEscape", "isVisible", "size", "backdropColor", "customClass", "disableFooter", "margin", "padding", "borderRadius", "dialogueBgColor", "closeIconClass", "boxShadow", "enableTransition", "modalData", "mode", "position", "drawerWidth"], outputs: ["openModal", "closeModal"] }, { kind: "component", type: i4.DataTableComponent, selector: "lib-data-table", inputs: ["data", "columns", "dataKey", "formGroupConfig", "groupBy", "styleConfig"], outputs: ["rowEdit", "rowSave", "rowDelete", "selectionChange"] }, { kind: "directive", type: i5.ColumnDirective, selector: "[libColumn]", inputs: ["libColumn"] }, { kind: "component", type: i6.DropDownComponent, selector: "verben-drop-down", inputs: ["options", "width", "showHorizontalLine", "horizontalLineColor", "optionLabel", "optionSubLabel", "optionValue", "placeholder", "invalidMessage", "errorPosition", "loadMoreCaption", "display", "showClear", "lazyLoad", "selectKey", "styleClass", "group", "multiselect", "filter", "avoidDuplication", "filterBy", "debounceTime", "minChar", "disabled", "required", "load", "asyncLabel", "search"], outputs: ["optionsChange", "onChange", "onClick", "onClear"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.SvgComponent, selector: "verben-svg", inputs: ["icon", "width", "height", "fill", "stroke", "type", "size"] }] });
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataImportComponent, decorators: [{
75
+ type: Component,
76
+ args: [{ selector: 'lib-data-import', 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 <button class=\"export-button\" (click)=\"save()\">Upload File</button>\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\">click to browse</label>\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 class=\"export-button\" (click)=\"save()\">Import</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: { first_name: 'verben-ng', last_name: 'verbena' } }]\"\n [isVisible]=\"showPreview\"\n [headerTemplate]=\"headerTemplate\"\n [bodyTemplate]=\"bodyTemplate\"\n [footerTemplate]=\"footerTemplate\"\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\">\n <p class=\"\">Total Items: {{ previewData()?.length }}</p>\n\n <verben-drop-down\n [multiselect]=\"true\"\n placeholder=\"Find duplicates by\"\n [options]=\"getControlNames()\"\n [ngModel]=\"uniqueIdentifiers()\"\n (ngModelChange)=\"uniqueIdentifiers.set($event)\"\n ></verben-drop-down>\n </div>\n <lib-data-table\n [data]=\"previewData() ?? []\"\n [columns]=\"previewColumns() ?? []\"\n [formGroupConfig]=\"formGroupConfig()\"\n >\n @for (column of previewColumns(); track column.id) {\n <ng-container [libColumn]=\"column.id\">\n <!-- <ng-template #cell let-value=\"value\" let-row=\"row\">\n <p>{{ value }}</p>\n </ng-template> -->\n @if (column.formControlName || column.accessorKey) {\n <ng-template\n #cell\n let-value=\"value\"\n let-row=\"row\"\n let-formControl=\"formControl\"\n >\n @if (formControl) {\n <input type=\"text\" [formControl]=\"formControl\" />\n } @else if (column.accessorKey) {\n <input type=\"text\" [ngModel]=\"value\" />\n } @else if (column.cellEditTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellEditTemplate\"\n [ngTemplateOutletContext]=\"formControl\"\n ></ng-container>\n }\n </ng-template>\n\n <ng-template\n #cellEdit\n let-value=\"value\"\n let-row=\"row\"\n let-formControl=\"formControl\"\n >\n @if (formControl) {\n <input type=\"text\" [formControl]=\"formControl\" />\n } @else if (column.accessorKey) {\n <input type=\"text\" [ngModel]=\"value\" />\n } @else if (column.cellEditTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"column.cellEditTemplate\"\n [ngTemplateOutletContext]=\"formControl\"\n ></ng-container>\n }\n </ng-template>\n }\n </ng-container>\n }\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 gap-6\">\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\n let-isEditing=\"isEditing\"\n let-toggleRowEdit=\"toggleRowEdit\"\n let-row=\"row\"\n let-rowIndex=\"rowIndex\"\n >\n <div class=\"flex gap-6\">\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)=\"toggleRowEdit()\"\n class=\"cursor-pointer\"\n ></verben-svg>\n </div>\n </ng-template>\n </ng-container>\n </lib-data-table>\n</ng-template>\n\n<ng-template #footerTemplate>\n <!-- <button class=\"btn btn-secondary\" (click)=\"onModalClose($event)\">Cancel</button>\n <button class=\"btn btn-primary\" (click)=\"onConfirm()\">Confirm</button> -->\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{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}.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"] }]
77
+ }], ctorParameters: () => [] });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWltcG9ydC9kYXRhLWltcG9ydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92ZXJiZW4tbmctdWkvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtaW1wb3J0L2RhdGEtaW1wb3J0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLE9BQU8sRUFFTCxTQUFTLEdBR1YsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQU94QixNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLGNBQWMsR0FBRyxLQUFLLEVBQXlCLENBQUM7SUFDaEQsZUFBZSxHQUFHLEtBQUssRUFJcEIsQ0FBQztJQUNKLEtBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUN4QixXQUFXLEdBQUcsS0FBSyxFQUFPLENBQUM7SUFDM0IsbUJBQW1CLEdBQUcsTUFBTSxFQUFZLENBQUM7SUFDekMsV0FBVyxHQUFHLE1BQU0sRUFBUSxDQUFDO0lBRTdCLGtCQUFrQixHQUEwQixFQUFFLENBQUM7SUFDL0MsS0FBSyxHQUFHLElBQUksU0FBUyxDQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLGlCQUFpQixHQUE2QixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFakQsSUFBSSxHQUEyQixNQUFNLENBQUM7SUFFOUMsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFFcEI7UUFDRSxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBZ0I7UUFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBZ0I7UUFDMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBZ0I7UUFDckIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLEtBQUksQ0FBQztJQUVWLElBQUk7UUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxRQUFRLENBQUM7UUFDbEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxRQUFRLENBQUM7UUFDNUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDO3dHQTNFVSxtQkFBbUI7NEZBQW5CLG1CQUFtQixtc0JDeEJoQywrck1BbU5BOzs0RkQzTGEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgZWZmZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbHVtbkRlZmluaXRpb24sXG4gIEZvcm1Hcm91cENvbmZpZyxcbn0gZnJvbSAnLi4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLnR5cGVzJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUFycmF5LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1kYXRhLWltcG9ydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWltcG9ydC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRhLWltcG9ydC5jb21wb25lbnQuY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUltcG9ydENvbXBvbmVudDxUPiB7XG4gIHByZXZpZXdDb2x1bW5zID0gaW5wdXQ8Q29sdW1uRGVmaW5pdGlvbjxUPltdPigpO1xuICBmb3JtR3JvdXBDb25maWcgPSBpbnB1dDxcbiAgICBGb3JtR3JvdXBDb25maWc8e1xuICAgICAgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDtcbiAgICB9PlxuICA+KCk7XG4gIHRpdGxlID0gaW5wdXQ8c3RyaW5nPigpO1xuICBwcmV2aWV3RGF0YSA9IGlucHV0PFRbXT4oKTtcbiAgZXhwb3J0VGVtcGxhdGVFdmVudCA9IG91dHB1dDxzdHJpbmdbXT4oKTtcbiAgaW1wb3J0RXZlbnQgPSBvdXRwdXQ8RmlsZT4oKTtcblxuICBwcmV2aWV3Q29sdW1uc0xpc3Q6IENvbHVtbkRlZmluaXRpb248VD5bXSA9IFtdO1xuICBmb3JtcyA9IG5ldyBGb3JtQXJyYXk8Rm9ybUdyb3VwPihbXSk7XG4gIHVuaXF1ZUlkZW50aWZpZXJzOiBXcml0YWJsZVNpZ25hbDxzdHJpbmdbXT4gPSBzaWduYWwoW10pO1xuXG4gIHByaXZhdGUgX2V4dDogJ3hsc3gnIHwgJ3hscycgfCAnY3N2JyA9ICd4bHN4JztcblxuICBmaWxlczogRmlsZVtdID0gW107XG4gIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgc2hvd1ByZXZpZXcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5wcmV2aWV3RGF0YSgpPy5mb3JFYWNoKChkYXR1bSkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhkYXR1bSk7XG4gICAgICB9KTtcblxuICAgICAgY29uc29sZS5sb2codGhpcy5wcmV2aWV3Q29sdW1ucygpKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcbiAgfVxuXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICB9XG5cbiAgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZmlsZXMgPSBBcnJheS5mcm9tKGV2ZW50LmRhdGFUcmFuc2ZlciEuZmlsZXMpO1xuICAgIHRoaXMuaW1wb3J0RXZlbnQuZW1pdCh0aGlzLmZpbGVzWzBdKTtcbiAgICB0aGlzLnNob3dQcmV2aWV3ID0gdHJ1ZTtcbiAgfVxuXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbGVzID0gQXJyYXkuZnJvbShldmVudC50YXJnZXQuZmlsZXMpO1xuICAgIHRoaXMuaW1wb3J0RXZlbnQuZW1pdCh0aGlzLmZpbGVzWzBdKTtcbiAgICB0aGlzLnNob3dQcmV2aWV3ID0gdHJ1ZTtcbiAgfVxuXG4gIHJlc2V0KCkge31cblxuICBzYXZlKCkge1xuICAgIHRoaXMuc2hvd1ByZXZpZXcgPSB0cnVlO1xuICB9XG5cbiAgZ2V0Q29udHJvbE5hbWVzKCkge1xuICAgIGNvbnN0IGNvbnRyb2xzID0gdGhpcy5mb3JtR3JvdXBDb25maWcoKT8uY29udHJvbHM7XG4gICAgaWYgKGNvbnRyb2xzKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoY29udHJvbHMpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBoYW5kbGVUZW1wbGF0ZUV4cG9ydCgpIHtcbiAgICBjb25zdCBmZyA9IHRoaXMuZm9ybUdyb3VwQ29uZmlnKCk/LmNvbnRyb2xzO1xuICAgIGlmIChmZykge1xuICAgICAgdGhpcy5leHBvcnRUZW1wbGF0ZUV2ZW50LmVtaXQoT2JqZWN0LmtleXMoZmcpKTtcbiAgICB9XG4gIH1cblxuICAvLyBnZXRGb3JtQ29udHJvbChpbmRleDogbnVtYmVyLCBmaWVsZDogc3RyaW5nKSB7XG4gIC8vICAgY29uc3QgY29udHJvbCA9IHRoaXMuLmdldChpbmRleCk/LmdldChmaWVsZCkgYXMgRm9ybUNvbnRyb2w8YW55PjtcbiAgLy8gICBjb25zb2xlLmxvZyhjb250cm9sKTtcbiAgLy8gICByZXR1cm4gY29udHJvbDtcbiAgLy8gfVxufVxuIiwiPHZlcmJlbi1jYXJkXG4gIHdpZHRoPVwiMjRyZW1cIlxuICBib3JkZXJSYWRpdXM9XCIxcmVtXCJcbiAgW2JvcmRlcl09XCInMXB4IHNvbGlkICNENEEwMDcnXCJcbiAgYmdDb2xvcj1cIiNGRkZGRkZcIlxuICBjbGFzcz1cImV4cG9ydC1jYXJkXCJcbj5cbiAgPGRpdiBjYXJkLWhlYWRlciBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgPGg0IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+SW1wb3J0PC9oND5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInJlc2V0LWJ1dHRvblwiXG4gICAgICBbc3R5bGUuY29sb3JdPVwiJyMzNDc5RTknXCJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgW3N0eWxlLmJvcmRlcl09XCInbm9uZSdcIlxuICAgICAgW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIlxuICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCInMTJweCdcIlxuICAgICAgKGNsaWNrKT1cInJlc2V0KClcIlxuICAgID5cbiAgICAgIFJlc2V0XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNhcmQtYm9keSBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC00IGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImV4cG9ydC1idXR0b25cIiAoY2xpY2spPVwiaGFuZGxlVGVtcGxhdGVFeHBvcnQoKVwiPlxuICAgICAgICBEb3dubG9hZCBUZW1wbGF0ZVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiZXhwb3J0LWJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIj5VcGxvYWQgRmlsZTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxociBjbGFzcz1cImRpdmlkZXJcIiAvPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvblwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImRyb3AtYXJlYVwiXG4gICAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxwPlxuICAgICAgICAgIERyYWcgYW5kIGRyb3AgZmlsZXMgaGVyZSBvclxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaWxlSW5wdXRcIj5jbGljayB0byBicm93c2U8L2xhYmVsPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBpZD1cImZpbGVJbnB1dFwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgICAgICAgIGFjY2VwdD1cIi5jc3YsIGFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0LCBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJmaWxlcy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxoMz5VcGxvYWRlZCBGaWxlczo8L2gzPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBmaWxlIG9mIGZpbGVzXCI+e3sgZmlsZS5uYW1lIH19PC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2FyZC1mb290ZXIgY2xhc3M9XCJjYXJkLWZvb3RlclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJleHBvcnQtYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiPkltcG9ydDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdmVyYmVuLWNhcmQ+XG5cbjwhLS0gTW9kYWwgQ29tcG9uZW50IC0tPlxuPHZlcmJlbi1kaWFsb2d1ZVxuICBbc2hvd0Nsb3NlSWNvbl09XCJ0cnVlXCJcbiAgW2Rpc21pc3NPdXRzaWRlQ2xpY2tdPVwidHJ1ZVwiXG4gIFtjbG9zZU9uRXNjYXBlXT1cInRydWVcIlxuICBbc2l6ZV09XCInbGFyZ2UnXCJcbiAgW21vZGVdPVwiJ2RpYWxvZ3VlJ1wiXG4gIFtjdXN0b21DbGFzc109XCInbXktbW9kYWwtY3VzdG9tLWNsYXNzJ1wiXG4gIFtkaXNhYmxlRm9vdGVyXT1cImZhbHNlXCJcbiAgW21vZGFsRGF0YV09XCJbeyBkYXRhOiB7IGZpcnN0X25hbWU6ICd2ZXJiZW4tbmcnLCBsYXN0X25hbWU6ICd2ZXJiZW5hJyB9IH1dXCJcbiAgW2lzVmlzaWJsZV09XCJzaG93UHJldmlld1wiXG4gIFtoZWFkZXJUZW1wbGF0ZV09XCJoZWFkZXJUZW1wbGF0ZVwiXG4gIFtib2R5VGVtcGxhdGVdPVwiYm9keVRlbXBsYXRlXCJcbiAgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCJcbj5cbiAgPGEgZG93bmxvYWQ9XCJcIj48L2E+XG48L3ZlcmJlbi1kaWFsb2d1ZT5cblxuPCEtLSBEZWZpbmUgdGVtcGxhdGVzIC0tPlxuPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZT5cbiAgPGgyPlVwbG9hZCBQcmV2aWV3PC9oMj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYm9keVRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtNCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgPHAgY2xhc3M9XCJcIj5Ub3RhbCBJdGVtczoge3sgcHJldmlld0RhdGEoKT8ubGVuZ3RoIH19PC9wPlxuXG4gICAgPHZlcmJlbi1kcm9wLWRvd25cbiAgICAgIFttdWx0aXNlbGVjdF09XCJ0cnVlXCJcbiAgICAgIHBsYWNlaG9sZGVyPVwiRmluZCBkdXBsaWNhdGVzIGJ5XCJcbiAgICAgIFtvcHRpb25zXT1cImdldENvbnRyb2xOYW1lcygpXCJcbiAgICAgIFtuZ01vZGVsXT1cInVuaXF1ZUlkZW50aWZpZXJzKClcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidW5pcXVlSWRlbnRpZmllcnMuc2V0KCRldmVudClcIlxuICAgID48L3ZlcmJlbi1kcm9wLWRvd24+XG4gIDwvZGl2PlxuICA8bGliLWRhdGEtdGFibGVcbiAgICBbZGF0YV09XCJwcmV2aWV3RGF0YSgpID8/IFtdXCJcbiAgICBbY29sdW1uc109XCJwcmV2aWV3Q29sdW1ucygpID8/IFtdXCJcbiAgICBbZm9ybUdyb3VwQ29uZmlnXT1cImZvcm1Hcm91cENvbmZpZygpXCJcbiAgPlxuICAgIEBmb3IgKGNvbHVtbiBvZiBwcmV2aWV3Q29sdW1ucygpOyB0cmFjayBjb2x1bW4uaWQpIHtcbiAgICA8bmctY29udGFpbmVyIFtsaWJDb2x1bW5dPVwiY29sdW1uLmlkXCI+XG4gICAgICA8IS0tIDxuZy10ZW1wbGF0ZSAjY2VsbCBsZXQtdmFsdWU9XCJ2YWx1ZVwiIGxldC1yb3c9XCJyb3dcIj5cbiAgICAgICAgPHA+e3sgdmFsdWUgfX08L3A+XG4gICAgICA8L25nLXRlbXBsYXRlPiAtLT5cbiAgICAgIEBpZiAoY29sdW1uLmZvcm1Db250cm9sTmFtZSB8fCBjb2x1bW4uYWNjZXNzb3JLZXkpIHtcbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAjY2VsbFxuICAgICAgICBsZXQtdmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgIGxldC1yb3c9XCJyb3dcIlxuICAgICAgICBsZXQtZm9ybUNvbnRyb2w9XCJmb3JtQ29udHJvbFwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoZm9ybUNvbnRyb2wpIHtcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoY29sdW1uLmFjY2Vzc29yS2V5KSB7XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtuZ01vZGVsXT1cInZhbHVlXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoY29sdW1uLmNlbGxFZGl0VGVtcGxhdGUpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbHVtbi5jZWxsRWRpdFRlbXBsYXRlXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAjY2VsbEVkaXRcbiAgICAgICAgbGV0LXZhbHVlPVwidmFsdWVcIlxuICAgICAgICBsZXQtcm93PVwicm93XCJcbiAgICAgICAgbGV0LWZvcm1Db250cm9sPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgPlxuICAgICAgICBAaWYgKGZvcm1Db250cm9sKSB7XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKGNvbHVtbi5hY2Nlc3NvcktleSkge1xuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbbmdNb2RlbF09XCJ2YWx1ZVwiIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKGNvbHVtbi5jZWxsRWRpdFRlbXBsYXRlKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uY2VsbEVkaXRUZW1wbGF0ZVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIH1cblxuICAgIDxuZy1jb250YWluZXIgbGliQ29sdW1uPVwiYWN0aW9uc1wiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICNjZWxsXG4gICAgICAgIGxldC12YWx1ZVxuICAgICAgICBsZXQtZGVsZXRlUm93PVwiZGVsZXRlUm93XCJcbiAgICAgICAgbGV0LWlzRWRpdGluZz1cImlzRWRpdGluZ1wiXG4gICAgICAgIGxldC10b2dnbGVSb3dFZGl0PVwidG9nZ2xlUm93RWRpdFwiXG4gICAgICAgIGxldC1yb3c9XCJyb3dcIlxuICAgICAgICBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC02XCI+XG4gICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgaWNvbj1cImVkaXRcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cblxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSb3coKVwiXG4gICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICA+PC92ZXJiZW4tc3ZnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAjY2VsbEVkaXRcbiAgICAgICAgbGV0LXZhbHVlXG4gICAgICAgIGxldC1kZWxldGVSb3dcbiAgICAgICAgbGV0LWlzRWRpdGluZz1cImlzRWRpdGluZ1wiXG4gICAgICAgIGxldC10b2dnbGVSb3dFZGl0PVwidG9nZ2xlUm93RWRpdFwiXG4gICAgICAgIGxldC1yb3c9XCJyb3dcIlxuICAgICAgICBsZXQtcm93SW5kZXg9XCJyb3dJbmRleFwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC02XCI+XG4gICAgICAgICAgPHZlcmJlbi1zdmdcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgaWNvbj1cInRpY2tcIlxuICAgICAgICAgICAgW3dpZHRoXT1cIjE1XCJcbiAgICAgICAgICAgIFtoZWlnaHRdPVwiMTVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cblxuICAgICAgICAgIDx2ZXJiZW4tc3ZnXG4gICAgICAgICAgICBpY29uPVwiZGVsZXRlXCJcbiAgICAgICAgICAgIFt3aWR0aF09XCIxNVwiXG4gICAgICAgICAgICBbaGVpZ2h0XT1cIjE1XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVSb3dFZGl0KClcIlxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgPjwvdmVyYmVuLXN2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2xpYi1kYXRhLXRhYmxlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cbiAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwib25Nb2RhbENsb3NlKCRldmVudClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJvbkNvbmZpcm0oKVwiPkNvbmZpcm08L2J1dHRvbj4gLS0+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,51 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { DataImportComponent } from './data-import.component';
4
+ import { CardModule } from '../card/card.module';
5
+ import { VerbenDialogueModule } from '../verben-dialogue/verben-dialogue.module';
6
+ import { DataTableModule } from '../data-table/data-table.module';
7
+ import { VerbenaInputModule } from '../../Verbena-input/verbena-input.module';
8
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
9
+ import { SvgModule } from '../svg/svg.module';
10
+ import { DropDownModule } from '../drop-down/drop-down.module';
11
+ import * as i0 from "@angular/core";
12
+ export class DataImportModule {
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataImportModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.10", ngImport: i0, type: DataImportModule, declarations: [DataImportComponent], imports: [CommonModule,
15
+ CardModule,
16
+ VerbenDialogueModule,
17
+ DataTableModule,
18
+ VerbenaInputModule,
19
+ DropDownModule,
20
+ ReactiveFormsModule,
21
+ FormsModule,
22
+ SvgModule], exports: [DataImportComponent] });
23
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataImportModule, imports: [CommonModule,
24
+ CardModule,
25
+ VerbenDialogueModule,
26
+ DataTableModule,
27
+ VerbenaInputModule,
28
+ DropDownModule,
29
+ ReactiveFormsModule,
30
+ FormsModule,
31
+ SvgModule] });
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: DataImportModule, decorators: [{
34
+ type: NgModule,
35
+ args: [{
36
+ declarations: [DataImportComponent],
37
+ imports: [
38
+ CommonModule,
39
+ CardModule,
40
+ VerbenDialogueModule,
41
+ DataTableModule,
42
+ VerbenaInputModule,
43
+ DropDownModule,
44
+ ReactiveFormsModule,
45
+ FormsModule,
46
+ SvgModule,
47
+ ],
48
+ exports: [DataImportComponent],
49
+ }]
50
+ }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1pbXBvcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLW5nLXVpL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWltcG9ydC9kYXRhLWltcG9ydC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFpQi9ELE1BQU0sT0FBTyxnQkFBZ0I7d0dBQWhCLGdCQUFnQjt5R0FBaEIsZ0JBQWdCLGlCQWRaLG1CQUFtQixhQUVoQyxZQUFZO1lBQ1osVUFBVTtZQUNWLG9CQUFvQjtZQUNwQixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsV0FBVztZQUNYLFNBQVMsYUFFRCxtQkFBbUI7eUdBRWxCLGdCQUFnQixZQVp6QixZQUFZO1lBQ1osVUFBVTtZQUNWLG9CQUFvQjtZQUNwQixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsV0FBVztZQUNYLFNBQVM7OzRGQUlBLGdCQUFnQjtrQkFmNUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDbkMsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxTQUFTO3FCQUNWO29CQUNELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0YUltcG9ydENvbXBvbmVudCB9IGZyb20gJy4vZGF0YS1pbXBvcnQuY29tcG9uZW50JztcbmltcG9ydCB7IENhcmRNb2R1bGUgfSBmcm9tICcuLi9jYXJkL2NhcmQubW9kdWxlJztcbmltcG9ydCB7IFZlcmJlbkRpYWxvZ3VlTW9kdWxlIH0gZnJvbSAnLi4vdmVyYmVuLWRpYWxvZ3VlL3ZlcmJlbi1kaWFsb2d1ZS5tb2R1bGUnO1xuaW1wb3J0IHsgRGF0YVRhYmxlTW9kdWxlIH0gZnJvbSAnLi4vZGF0YS10YWJsZS9kYXRhLXRhYmxlLm1vZHVsZSc7XG5pbXBvcnQgeyBWZXJiZW5hSW5wdXRNb2R1bGUgfSBmcm9tICcuLi8uLi9WZXJiZW5hLWlucHV0L3ZlcmJlbmEtaW5wdXQubW9kdWxlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ZnTW9kdWxlIH0gZnJvbSAnLi4vc3ZnL3N2Zy5tb2R1bGUnO1xuaW1wb3J0IHsgRHJvcERvd25Nb2R1bGUgfSBmcm9tICcuLi9kcm9wLWRvd24vZHJvcC1kb3duLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0RhdGFJbXBvcnRDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENhcmRNb2R1bGUsXG4gICAgVmVyYmVuRGlhbG9ndWVNb2R1bGUsXG4gICAgRGF0YVRhYmxlTW9kdWxlLFxuICAgIFZlcmJlbmFJbnB1dE1vZHVsZSxcbiAgICBEcm9wRG93bk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFN2Z01vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW0RhdGFJbXBvcnRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhSW1wb3J0TW9kdWxlIHt9XG4iXX0=