@valtimo/form-management 12.14.0 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/valtimo-form-management.mjs +845 -562
- package/fesm2022/valtimo-form-management.mjs.map +1 -1
- package/lib/components/form-management/form-management.component.d.ts +24 -0
- package/lib/components/form-management/form-management.component.d.ts.map +1 -0
- package/lib/components/form-management-create/form-management-create.component.d.ts +28 -0
- package/lib/components/form-management-create/form-management-create.component.d.ts.map +1 -0
- package/lib/components/form-management-create/index.d.ts +2 -0
- package/lib/components/form-management-create/index.d.ts.map +1 -0
- package/lib/components/form-management-duplicate/form-management-duplicate.component.d.ts +31 -0
- package/lib/components/form-management-duplicate/form-management-duplicate.component.d.ts.map +1 -0
- package/lib/components/form-management-duplicate/index.d.ts +2 -0
- package/lib/components/form-management-duplicate/index.d.ts.map +1 -0
- package/lib/components/form-management-edit/form-management-edit.component.d.ts +83 -0
- package/lib/components/form-management-edit/form-management-edit.component.d.ts.map +1 -0
- package/lib/components/form-management-edit/index.d.ts +2 -0
- package/lib/components/form-management-edit/index.d.ts.map +1 -0
- package/lib/components/form-management-list/form-management-list.component.d.ts +50 -0
- package/lib/components/form-management-list/form-management-list.component.d.ts.map +1 -0
- package/lib/components/form-management-list/index.d.ts +2 -0
- package/lib/components/form-management-list/index.d.ts.map +1 -0
- package/lib/components/form-management-upload/form-management-upload.component.d.ts +28 -0
- package/lib/components/form-management-upload/form-management-upload.component.d.ts.map +1 -0
- package/lib/components/form-management-upload/index.d.ts +2 -0
- package/lib/components/form-management-upload/index.d.ts.map +1 -0
- package/lib/components/index.d.ts +6 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/form-management.module.d.ts +8 -13
- package/lib/form-management.module.d.ts.map +1 -1
- package/lib/models/form-definition.model.d.ts +14 -0
- package/lib/models/form-definition.model.d.ts.map +1 -1
- package/lib/models/form-management.model.d.ts +11 -0
- package/lib/models/form-management.model.d.ts.map +1 -0
- package/lib/models/index.d.ts +1 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/services/form-management.service.d.ts +13 -8
- package/lib/services/form-management.service.d.ts.map +1 -1
- package/lib/services/index.d.ts +0 -1
- package/lib/services/index.d.ts.map +1 -1
- package/lib/utils/form-management.utils.d.ts +6 -0
- package/lib/utils/form-management.utils.d.ts.map +1 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/validators/no-duplicate-form.validator.d.ts +3 -1
- package/lib/validators/no-duplicate-form.validator.d.ts.map +1 -1
- package/package.json +4 -6
- package/public-api.d.ts +3 -2
- package/public-api.d.ts.map +1 -1
- package/esm2022/lib/form-management-create/form-management-create.component.mjs +0 -86
- package/esm2022/lib/form-management-duplicate/form-management-duplicate.component.mjs +0 -87
- package/esm2022/lib/form-management-edit/form-management-edit.component.mjs +0 -233
- package/esm2022/lib/form-management-routing.module.mjs +0 -59
- package/esm2022/lib/form-management-upload/form-management-upload.component.mjs +0 -150
- package/esm2022/lib/form-management.component.mjs +0 -80
- package/esm2022/lib/form-management.module.mjs +0 -148
- package/esm2022/lib/models/form-definition.model.mjs +0 -25
- package/esm2022/lib/models/form-edit-tabs.enum.mjs +0 -22
- package/esm2022/lib/models/index.mjs +0 -18
- package/esm2022/lib/services/form-management-state.service.mjs +0 -59
- package/esm2022/lib/services/form-management.service.mjs +0 -56
- package/esm2022/lib/services/index.mjs +0 -18
- package/esm2022/lib/validators/no-duplicate-form.validator.mjs +0 -22
- package/esm2022/public-api.mjs +0 -23
- package/esm2022/valtimo-form-management.mjs +0 -5
- package/lib/form-management-create/form-management-create.component.d.ts +0 -24
- package/lib/form-management-create/form-management-create.component.d.ts.map +0 -1
- package/lib/form-management-duplicate/form-management-duplicate.component.d.ts +0 -24
- package/lib/form-management-duplicate/form-management-duplicate.component.d.ts.map +0 -1
- package/lib/form-management-edit/form-management-edit.component.d.ts +0 -61
- package/lib/form-management-edit/form-management-edit.component.d.ts.map +0 -1
- package/lib/form-management-routing.module.d.ts +0 -8
- package/lib/form-management-routing.module.d.ts.map +0 -1
- package/lib/form-management-upload/form-management-upload.component.d.ts +0 -41
- package/lib/form-management-upload/form-management-upload.component.d.ts.map +0 -1
- package/lib/form-management.component.d.ts +0 -23
- package/lib/form-management.component.d.ts.map +0 -1
- package/lib/services/form-management-state.service.d.ts +0 -19
- package/lib/services/form-management-state.service.d.ts.map +0 -1
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { Component } from '@angular/core';
|
|
17
|
-
import { FormControl, Validators } from '@angular/forms';
|
|
18
|
-
import { combineLatest } from 'rxjs';
|
|
19
|
-
import { take } from 'rxjs/operators';
|
|
20
|
-
import { noDuplicateFormValidator } from '../validators/no-duplicate-form.validator';
|
|
21
|
-
import * as i0 from "@angular/core";
|
|
22
|
-
import * as i1 from "../services";
|
|
23
|
-
import * as i2 from "@angular/forms";
|
|
24
|
-
import * as i3 from "@angular/router";
|
|
25
|
-
import * as i4 from "@valtimo/components";
|
|
26
|
-
import * as i5 from "@angular/common";
|
|
27
|
-
import * as i6 from "@ngx-translate/core";
|
|
28
|
-
export class FormManagementCreateComponent {
|
|
29
|
-
constructor(formManagementService, formBuilder, router, alertService, route) {
|
|
30
|
-
this.formManagementService = formManagementService;
|
|
31
|
-
this.formBuilder = formBuilder;
|
|
32
|
-
this.router = router;
|
|
33
|
-
this.alertService = alertService;
|
|
34
|
-
this.route = route;
|
|
35
|
-
}
|
|
36
|
-
get formControls() {
|
|
37
|
-
return this.form.controls;
|
|
38
|
-
}
|
|
39
|
-
ngOnInit() {
|
|
40
|
-
this.form = this.formBuilder.group({
|
|
41
|
-
name: new FormControl('', Validators.required, [
|
|
42
|
-
noDuplicateFormValidator(this.formManagementService),
|
|
43
|
-
]),
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
reset() {
|
|
47
|
-
this.form.setValue({
|
|
48
|
-
name: '',
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
createFormDefinition() {
|
|
52
|
-
const emptyForm = {
|
|
53
|
-
display: 'form',
|
|
54
|
-
components: [],
|
|
55
|
-
};
|
|
56
|
-
const request = {
|
|
57
|
-
name: this.form.value.name,
|
|
58
|
-
formDefinition: JSON.stringify(emptyForm),
|
|
59
|
-
};
|
|
60
|
-
combineLatest([
|
|
61
|
-
this.formManagementService.createFormDefinition(request),
|
|
62
|
-
this.route.queryParams,
|
|
63
|
-
])
|
|
64
|
-
.pipe(take(1))
|
|
65
|
-
.subscribe(([formDefinition, params]) => {
|
|
66
|
-
this.alertService.success('Created new Form');
|
|
67
|
-
if (params?.upload === 'true') {
|
|
68
|
-
this.router.navigate(['/form-management/edit', formDefinition.id], {
|
|
69
|
-
queryParams: { upload: 'true' },
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
this.router.navigate(['/form-management/edit', formDefinition.id]);
|
|
74
|
-
}
|
|
75
|
-
}, err => {
|
|
76
|
-
this.alertService.error('Error creating new Form');
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormManagementCreateComponent, deps: [{ token: i1.FormManagementService }, { token: i2.FormBuilder }, { token: i3.Router }, { token: i4.AlertService }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormManagementCreateComponent, selector: "valtimo-form-management-create", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"bg-white p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"createFormDefinition()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"name\">{{\n 'formManagement.name' | translate\n }}</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"name\"\n formControlName=\"name\"\n class=\"form-control\"\n placeholder=\"Form definition name\"\n [ngClass]=\"{\n 'is-valid': formControls.name.touched && formControls.name.valid,\n 'is-invalid': formControls.name.touched && formControls.name.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.name.touched && formControls.name.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.name.errors.required\">\n {{ 'formManagement.nameIsRequired' | translate }}\n </div>\n <div *ngIf=\"formControls.name.errors.duplicate\">\n {{ 'formManagement.nameIsInUse' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12 col-sm-6 text-left\">\n <a [routerLink]=\"'/form-management'\" class=\"btn btn-space btn-default\">{{\n 'formManagement.back' | translate\n }}</a>\n </div>\n <div class=\"col-12 col-sm-6 text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n {{ 'formManagement.reset' | translate }}\n </button>\n <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n {{ 'formManagement.submit' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
|
|
81
|
-
}
|
|
82
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormManagementCreateComponent, decorators: [{
|
|
83
|
-
type: Component,
|
|
84
|
-
args: [{ selector: 'valtimo-form-management-create', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <valtimo-widget>\n <div class=\"bg-white p-5\">\n <form [formGroup]=\"form\" (ngSubmit)=\"createFormDefinition()\">\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"name\">{{\n 'formManagement.name' | translate\n }}</label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <input\n type=\"text\"\n id=\"name\"\n formControlName=\"name\"\n class=\"form-control\"\n placeholder=\"Form definition name\"\n [ngClass]=\"{\n 'is-valid': formControls.name.touched && formControls.name.valid,\n 'is-invalid': formControls.name.touched && formControls.name.errors,\n }\"\n required\n />\n <div\n *ngIf=\"formControls.name.touched && formControls.name.errors\"\n class=\"invalid-feedback\"\n >\n <div *ngIf=\"formControls.name.errors.required\">\n {{ 'formManagement.nameIsRequired' | translate }}\n </div>\n <div *ngIf=\"formControls.name.errors.duplicate\">\n {{ 'formManagement.nameIsInUse' | translate }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"row pt-3 mt-1\">\n <div class=\"col-12 col-sm-6 text-left\">\n <a [routerLink]=\"'/form-management'\" class=\"btn btn-space btn-default\">{{\n 'formManagement.back' | translate\n }}</a>\n </div>\n <div class=\"col-12 col-sm-6 text-right\">\n <button class=\"btn btn-space btn-secondary\" type=\"button\" (click)=\"reset()\">\n {{ 'formManagement.reset' | translate }}\n </button>\n <button class=\"btn btn-space btn-primary\" type=\"submit\" [disabled]=\"form.invalid\">\n {{ 'formManagement.submit' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </valtimo-widget>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
85
|
-
}], ctorParameters: () => [{ type: i1.FormManagementService }, { type: i2.FormBuilder }, { type: i3.Router }, { type: i4.AlertService }, { type: i3.ActivatedRoute }] });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tYW5hZ2VtZW50LWNyZWF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Zvcm0tbWFuYWdlbWVudC9zcmMvbGliL2Zvcm0tbWFuYWdlbWVudC1jcmVhdGUvZm9ybS1tYW5hZ2VtZW50LWNyZWF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Zvcm0tbWFuYWdlbWVudC9zcmMvbGliL2Zvcm0tbWFuYWdlbWVudC1jcmVhdGUvZm9ybS1tYW5hZ2VtZW50LWNyZWF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFjLFdBQVcsRUFBYSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUsvRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ25DLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwQyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7QUFPbkYsTUFBTSxPQUFPLDZCQUE2QjtJQUd4QyxZQUNVLHFCQUE0QyxFQUM1QyxXQUF3QixFQUN4QixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsS0FBcUI7UUFKckIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7SUFDNUIsQ0FBQztJQUVKLElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQkFDN0Msd0JBQXdCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO2FBQ3JELENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ2pCLElBQUksRUFBRSxFQUFFO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixNQUFNLFNBQVMsR0FBRztZQUNoQixPQUFPLEVBQUUsTUFBTTtZQUNmLFVBQVUsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUFnQztZQUMzQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUMxQixjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7U0FDMUMsQ0FBQztRQUNGLGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7WUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO1NBQ3ZCLENBQUM7YUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUNSLENBQUMsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRTlDLElBQUksTUFBTSxFQUFFLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUU7b0JBQ2pFLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUM7aUJBQzlCLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHVCQUF1QixFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQzsrR0EzRFUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsc0VDL0IxQyx3aUdBeUVBOzs0RkQxQ2EsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLGdDQUFnQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBbGVydFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtGb3JtTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7Q3JlYXRlRm9ybURlZmluaXRpb25SZXF1ZXN0fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtub0R1cGxpY2F0ZUZvcm1WYWxpZGF0b3J9IGZyb20gJy4uL3ZhbGlkYXRvcnMvbm8tZHVwbGljYXRlLWZvcm0udmFsaWRhdG9yJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1mb3JtLW1hbmFnZW1lbnQtY3JlYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tbWFuYWdlbWVudC1jcmVhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLW1hbmFnZW1lbnQtY3JlYXRlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1NYW5hZ2VtZW50Q3JlYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1NYW5hZ2VtZW50U2VydmljZTogRm9ybU1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHt9XG5cbiAgZ2V0IGZvcm1Db250cm9scygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQsIFtcbiAgICAgICAgbm9EdXBsaWNhdGVGb3JtVmFsaWRhdG9yKHRoaXMuZm9ybU1hbmFnZW1lbnRTZXJ2aWNlKSxcbiAgICAgIF0pLFxuICAgIH0pO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5mb3JtLnNldFZhbHVlKHtcbiAgICAgIG5hbWU6ICcnLFxuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlRm9ybURlZmluaXRpb24oKSB7XG4gICAgY29uc3QgZW1wdHlGb3JtID0ge1xuICAgICAgZGlzcGxheTogJ2Zvcm0nLFxuICAgICAgY29tcG9uZW50czogW10sXG4gICAgfTtcbiAgICBjb25zdCByZXF1ZXN0OiBDcmVhdGVGb3JtRGVmaW5pdGlvblJlcXVlc3QgPSB7XG4gICAgICBuYW1lOiB0aGlzLmZvcm0udmFsdWUubmFtZSxcbiAgICAgIGZvcm1EZWZpbml0aW9uOiBKU09OLnN0cmluZ2lmeShlbXB0eUZvcm0pLFxuICAgIH07XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZvcm1NYW5hZ2VtZW50U2VydmljZS5jcmVhdGVGb3JtRGVmaW5pdGlvbihyZXF1ZXN0KSxcbiAgICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMsXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoW2Zvcm1EZWZpbml0aW9uLCBwYXJhbXNdKSA9PiB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcygnQ3JlYXRlZCBuZXcgRm9ybScpO1xuXG4gICAgICAgICAgaWYgKHBhcmFtcz8udXBsb2FkID09PSAndHJ1ZScpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Zvcm0tbWFuYWdlbWVudC9lZGl0JywgZm9ybURlZmluaXRpb24uaWRdLCB7XG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7dXBsb2FkOiAndHJ1ZSd9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Zvcm0tbWFuYWdlbWVudC9lZGl0JywgZm9ybURlZmluaXRpb24uaWRdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuZXJyb3IoJ0Vycm9yIGNyZWF0aW5nIG5ldyBGb3JtJyk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBweC0wIG1iLTVcIj5cbiAgICAgIDx2YWx0aW1vLXdpZGdldD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIHAtNVwiPlxuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJjcmVhdGVGb3JtRGVmaW5pdGlvbigpXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCByb3dcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsIHRleHQtc20tcmlnaHRcIiBmb3I9XCJuYW1lXCI+e3tcbiAgICAgICAgICAgICAgICAnZm9ybU1hbmFnZW1lbnQubmFtZScgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS04IGNvbC1sZy02XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBpZD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkZvcm0gZGVmaW5pdGlvbiBuYW1lXCJcbiAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgJ2lzLXZhbGlkJzogZm9ybUNvbnRyb2xzLm5hbWUudG91Y2hlZCAmJiBmb3JtQ29udHJvbHMubmFtZS52YWxpZCxcbiAgICAgICAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBmb3JtQ29udHJvbHMubmFtZS50b3VjaGVkICYmIGZvcm1Db250cm9scy5uYW1lLmVycm9ycyxcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZm9ybUNvbnRyb2xzLm5hbWUudG91Y2hlZCAmJiBmb3JtQ29udHJvbHMubmFtZS5lcnJvcnNcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZm9ybUNvbnRyb2xzLm5hbWUuZXJyb3JzLnJlcXVpcmVkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5uYW1lSXNSZXF1aXJlZCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZvcm1Db250cm9scy5uYW1lLmVycm9ycy5kdXBsaWNhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ2Zvcm1NYW5hZ2VtZW50Lm5hbWVJc0luVXNlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTMgbXQtMVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS02IHRleHQtbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxhIFtyb3V0ZXJMaW5rXT1cIicvZm9ybS1tYW5hZ2VtZW50J1wiIGNsYXNzPVwiYnRuIGJ0bi1zcGFjZSBidG4tZGVmYXVsdFwiPnt7XG4gICAgICAgICAgICAgICAgICAnZm9ybU1hbmFnZW1lbnQuYmFjaycgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fTwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTYgdGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNwYWNlIGJ0bi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc2V0KClcIj5cbiAgICAgICAgICAgICAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5yZXNldCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zcGFjZSBidG4tcHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCI+XG4gICAgICAgICAgICAgICAgICB7eyAnZm9ybU1hbmFnZW1lbnQuc3VibWl0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3ZhbHRpbW8td2lkZ2V0PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { Component, Inject } from '@angular/core';
|
|
17
|
-
import { combineLatest } from 'rxjs';
|
|
18
|
-
import { take } from 'rxjs/operators';
|
|
19
|
-
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
20
|
-
import { BaseModal } from 'carbon-components-angular/modal';
|
|
21
|
-
import { noDuplicateFormValidator } from '../validators/no-duplicate-form.validator';
|
|
22
|
-
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "@valtimo/components";
|
|
24
|
-
import * as i2 from "../services";
|
|
25
|
-
import * as i3 from "@angular/router";
|
|
26
|
-
import * as i4 from "@angular/common";
|
|
27
|
-
import * as i5 from "@angular/forms";
|
|
28
|
-
import * as i6 from "carbon-components-angular";
|
|
29
|
-
import * as i7 from "@ngx-translate/core";
|
|
30
|
-
export class FormManagementDuplicateComponent extends BaseModal {
|
|
31
|
-
constructor(formToDuplicate, modalService, formManagementService, alertService, route, router) {
|
|
32
|
-
super();
|
|
33
|
-
this.formToDuplicate = formToDuplicate;
|
|
34
|
-
this.modalService = modalService;
|
|
35
|
-
this.formManagementService = formManagementService;
|
|
36
|
-
this.alertService = alertService;
|
|
37
|
-
this.route = route;
|
|
38
|
-
this.router = router;
|
|
39
|
-
this.duplicateForm = new FormGroup({
|
|
40
|
-
duplicateFormName: new FormControl(this.getDefaultName(), Validators.compose([Validators.required]), [noDuplicateFormValidator(this.formManagementService)]),
|
|
41
|
-
});
|
|
42
|
-
this.duplicateForm.markAllAsTouched();
|
|
43
|
-
}
|
|
44
|
-
duplicate() {
|
|
45
|
-
const control = this.duplicateFormName;
|
|
46
|
-
const request = {
|
|
47
|
-
name: control.value.toString(),
|
|
48
|
-
formDefinition: JSON.stringify(this.formToDuplicate.formDefinition),
|
|
49
|
-
};
|
|
50
|
-
combineLatest([
|
|
51
|
-
this.formManagementService.createFormDefinition(request),
|
|
52
|
-
this.route.queryParams,
|
|
53
|
-
])
|
|
54
|
-
.pipe(take(1))
|
|
55
|
-
.subscribe(([formDefinition, params]) => {
|
|
56
|
-
this.alertService.success('Created new Form');
|
|
57
|
-
this.router
|
|
58
|
-
.navigateByUrl(`/form-management/edit/${formDefinition.id}`)
|
|
59
|
-
.then(function (result) {
|
|
60
|
-
window.location.reload();
|
|
61
|
-
});
|
|
62
|
-
}, err => {
|
|
63
|
-
if (err.toString().includes('Duplicate name')) {
|
|
64
|
-
control.setErrors({ duplicate: true });
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
control.setErrors({ incorrect: true });
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
get duplicateFormName() {
|
|
72
|
-
return this.duplicateForm.controls['duplicateFormName'];
|
|
73
|
-
}
|
|
74
|
-
getDefaultName() {
|
|
75
|
-
return this.formToDuplicate.name + '-duplicate';
|
|
76
|
-
}
|
|
77
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormManagementDuplicateComponent, deps: [{ token: 'formToDuplicate' }, { token: i1.ModalService }, { token: i2.FormManagementService }, { token: i1.AlertService }, { token: i3.ActivatedRoute }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormManagementDuplicateComponent, selector: "valtimo-form-management-duplicate-modal", usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<cds-modal\n valtimoCdsModal\n [open]=\"open\"\n (overlaySelected)=\"closeModal()\"\n [formGroup]=\"duplicateForm\"\n>\n <cds-modal-header (closeSelect)=\"closeModal()\">{{\n 'formManagement.duplicate' | translate\n }}</cds-modal-header>\n <section class=\"bx--modal-content p-2\">\n <cds-label labelState=\"error\">\n {{ 'formManagement.name' | translate }}\n <input cdsText formControlName=\"duplicateFormName\" [invalid]=\"duplicateFormName.invalid\" />\n </cds-label>\n <div\n *ngIf=\"duplicateFormName.invalid && (duplicateFormName.dirty || duplicateFormName.touched)\"\n class=\"bg-warning text-black mb-0 p-2 pl-3 pr-3\"\n role=\"alert\"\n >\n <div *ngIf=\"duplicateFormName.errors.required\">\n {{ 'formManagement.nameIsRequired' | translate }}\n </div>\n <div *ngIf=\"duplicateFormName.errors.duplicate\">\n {{ 'formManagement.nameIsInUse' | translate }}\n </div>\n </div>\n </section>\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n modal-primary-focus\n (click)=\"duplicate()\"\n [disabled]=\"duplicateForm.invalid\"\n >\n {{ 'formManagement.submit' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i6.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i6.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "component", type: i6.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i1.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["enableOverflow"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
|
|
79
|
-
}
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormManagementDuplicateComponent, decorators: [{
|
|
81
|
-
type: Component,
|
|
82
|
-
args: [{ selector: 'valtimo-form-management-duplicate-modal', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<cds-modal\n valtimoCdsModal\n [open]=\"open\"\n (overlaySelected)=\"closeModal()\"\n [formGroup]=\"duplicateForm\"\n>\n <cds-modal-header (closeSelect)=\"closeModal()\">{{\n 'formManagement.duplicate' | translate\n }}</cds-modal-header>\n <section class=\"bx--modal-content p-2\">\n <cds-label labelState=\"error\">\n {{ 'formManagement.name' | translate }}\n <input cdsText formControlName=\"duplicateFormName\" [invalid]=\"duplicateFormName.invalid\" />\n </cds-label>\n <div\n *ngIf=\"duplicateFormName.invalid && (duplicateFormName.dirty || duplicateFormName.touched)\"\n class=\"bg-warning text-black mb-0 p-2 pl-3 pr-3\"\n role=\"alert\"\n >\n <div *ngIf=\"duplicateFormName.errors.required\">\n {{ 'formManagement.nameIsRequired' | translate }}\n </div>\n <div *ngIf=\"duplicateFormName.errors.duplicate\">\n {{ 'formManagement.nameIsInUse' | translate }}\n </div>\n </div>\n </section>\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"closeModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n modal-primary-focus\n (click)=\"duplicate()\"\n [disabled]=\"duplicateForm.invalid\"\n >\n {{ 'formManagement.submit' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
83
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
84
|
-
type: Inject,
|
|
85
|
-
args: ['formToDuplicate']
|
|
86
|
-
}] }, { type: i1.ModalService }, { type: i2.FormManagementService }, { type: i1.AlertService }, { type: i3.ActivatedRoute }, { type: i3.Router }] });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tYW5hZ2VtZW50LWR1cGxpY2F0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Zvcm0tbWFuYWdlbWVudC9zcmMvbGliL2Zvcm0tbWFuYWdlbWVudC1kdXBsaWNhdGUvZm9ybS1tYW5hZ2VtZW50LWR1cGxpY2F0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Zvcm0tbWFuYWdlbWVudC9zcmMvbGliL2Zvcm0tbWFuYWdlbWVudC1kdXBsaWNhdGUvZm9ybS1tYW5hZ2VtZW50LWR1cGxpY2F0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BDLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUkxRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQzs7Ozs7Ozs7O0FBT25GLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxTQUFTO0lBUzdELFlBQ29DLGVBQWUsRUFDdkMsWUFBMEIsRUFDMUIscUJBQTRDLEVBQzlDLFlBQTBCLEVBQ3hCLEtBQXFCLEVBQ3ZCLE1BQWM7UUFFdEIsS0FBSyxFQUFFLENBQUM7UUFQMEIsb0JBQWUsR0FBZixlQUFlLENBQUE7UUFDdkMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM5QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZHhCLGtCQUFhLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDNUIsaUJBQWlCLEVBQUUsSUFBSSxXQUFXLENBQ2hDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFDckIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUN6QyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQ3ZEO1NBQ0YsQ0FBQyxDQUFDO1FBV0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxTQUFTO1FBQ2QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBRXZDLE1BQU0sT0FBTyxHQUFnQztZQUMzQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDOUIsY0FBYyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUM7U0FDcEUsQ0FBQztRQUNGLGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7WUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXO1NBQ3ZCLENBQUM7YUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUNSLENBQUMsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNO2lCQUNSLGFBQWEsQ0FBQyx5QkFBeUIsY0FBYyxDQUFDLEVBQUUsRUFBRSxDQUFDO2lCQUMzRCxJQUFJLENBQUMsVUFBVSxNQUFNO2dCQUNwQixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztJQUNsRCxDQUFDOytHQTFEVSxnQ0FBZ0Msa0JBVWpDLGlCQUFpQjttR0FWaEIsZ0NBQWdDLHNHQ2hDN0MsNGhFQXlEQTs7NEZEekJhLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSx5Q0FBeUM7OzBCQWNoRCxNQUFNOzJCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBJbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0NyZWF0ZUZvcm1EZWZpbml0aW9uUmVxdWVzdH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7QmFzZU1vZGFsfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL21vZGFsJztcbmltcG9ydCB7Rm9ybU1hbmFnZW1lbnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0FsZXJ0U2VydmljZSwgTW9kYWxTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7bm9EdXBsaWNhdGVGb3JtVmFsaWRhdG9yfSBmcm9tICcuLi92YWxpZGF0b3JzL25vLWR1cGxpY2F0ZS1mb3JtLnZhbGlkYXRvcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZm9ybS1tYW5hZ2VtZW50LWR1cGxpY2F0ZS1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLW1hbmFnZW1lbnQtZHVwbGljYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybS1tYW5hZ2VtZW50LWR1cGxpY2F0ZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtTWFuYWdlbWVudER1cGxpY2F0ZUNvbXBvbmVudCBleHRlbmRzIEJhc2VNb2RhbCB7XG4gIGR1cGxpY2F0ZUZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICBkdXBsaWNhdGVGb3JtTmFtZTogbmV3IEZvcm1Db250cm9sKFxuICAgICAgdGhpcy5nZXREZWZhdWx0TmFtZSgpLFxuICAgICAgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBbbm9EdXBsaWNhdGVGb3JtVmFsaWRhdG9yKHRoaXMuZm9ybU1hbmFnZW1lbnRTZXJ2aWNlKV1cbiAgICApLFxuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdmb3JtVG9EdXBsaWNhdGUnKSBwdWJsaWMgZm9ybVRvRHVwbGljYXRlLFxuICAgIHByb3RlY3RlZCBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZm9ybU1hbmFnZW1lbnRTZXJ2aWNlOiBGb3JtTWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmR1cGxpY2F0ZUZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIGR1cGxpY2F0ZSgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5kdXBsaWNhdGVGb3JtTmFtZTtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IENyZWF0ZUZvcm1EZWZpbml0aW9uUmVxdWVzdCA9IHtcbiAgICAgIG5hbWU6IGNvbnRyb2wudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIGZvcm1EZWZpbml0aW9uOiBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1Ub0R1cGxpY2F0ZS5mb3JtRGVmaW5pdGlvbiksXG4gICAgfTtcbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZm9ybU1hbmFnZW1lbnRTZXJ2aWNlLmNyZWF0ZUZvcm1EZWZpbml0aW9uKHJlcXVlc3QpLFxuICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcyxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChbZm9ybURlZmluaXRpb24sIHBhcmFtc10pID0+IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKCdDcmVhdGVkIG5ldyBGb3JtJyk7XG4gICAgICAgICAgdGhpcy5yb3V0ZXJcbiAgICAgICAgICAgIC5uYXZpZ2F0ZUJ5VXJsKGAvZm9ybS1tYW5hZ2VtZW50L2VkaXQvJHtmb3JtRGVmaW5pdGlvbi5pZH1gKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICBpZiAoZXJyLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ0R1cGxpY2F0ZSBuYW1lJykpIHtcbiAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHtkdXBsaWNhdGU6IHRydWV9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoe2luY29ycmVjdDogdHJ1ZX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIGdldCBkdXBsaWNhdGVGb3JtTmFtZSgpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuZHVwbGljYXRlRm9ybS5jb250cm9sc1snZHVwbGljYXRlRm9ybU5hbWUnXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWZhdWx0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZvcm1Ub0R1cGxpY2F0ZS5uYW1lICsgJy1kdXBsaWNhdGUnO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG48Y2RzLW1vZGFsXG4gIHZhbHRpbW9DZHNNb2RhbFxuICBbb3Blbl09XCJvcGVuXCJcbiAgKG92ZXJsYXlTZWxlY3RlZCk9XCJjbG9zZU1vZGFsKClcIlxuICBbZm9ybUdyb3VwXT1cImR1cGxpY2F0ZUZvcm1cIlxuPlxuICA8Y2RzLW1vZGFsLWhlYWRlciAoY2xvc2VTZWxlY3QpPVwiY2xvc2VNb2RhbCgpXCI+e3tcbiAgICAnZm9ybU1hbmFnZW1lbnQuZHVwbGljYXRlJyB8IHRyYW5zbGF0ZVxuICB9fTwvY2RzLW1vZGFsLWhlYWRlcj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJieC0tbW9kYWwtY29udGVudCBwLTJcIj5cbiAgICA8Y2RzLWxhYmVsIGxhYmVsU3RhdGU9XCJlcnJvclwiPlxuICAgICAge3sgJ2Zvcm1NYW5hZ2VtZW50Lm5hbWUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8aW5wdXQgY2RzVGV4dCBmb3JtQ29udHJvbE5hbWU9XCJkdXBsaWNhdGVGb3JtTmFtZVwiIFtpbnZhbGlkXT1cImR1cGxpY2F0ZUZvcm1OYW1lLmludmFsaWRcIiAvPlxuICAgIDwvY2RzLWxhYmVsPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiZHVwbGljYXRlRm9ybU5hbWUuaW52YWxpZCAmJiAoZHVwbGljYXRlRm9ybU5hbWUuZGlydHkgfHwgZHVwbGljYXRlRm9ybU5hbWUudG91Y2hlZClcIlxuICAgICAgY2xhc3M9XCJiZy13YXJuaW5nIHRleHQtYmxhY2sgbWItMCBwLTIgcGwtMyBwci0zXCJcbiAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgPlxuICAgICAgPGRpdiAqbmdJZj1cImR1cGxpY2F0ZUZvcm1OYW1lLmVycm9ycy5yZXF1aXJlZFwiPlxuICAgICAgICB7eyAnZm9ybU1hbmFnZW1lbnQubmFtZUlzUmVxdWlyZWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJkdXBsaWNhdGVGb3JtTmFtZS5lcnJvcnMuZHVwbGljYXRlXCI+XG4gICAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5uYW1lSXNJblVzZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG4gIDxjZHMtbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPlxuICAgICAge3sgJ2ludGVyZmFjZS5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICBbYXR0ci5tb2RhbC1wcmltYXJ5LWZvY3VzXT1cInRydWVcIlxuICAgICAgbW9kYWwtcHJpbWFyeS1mb2N1c1xuICAgICAgKGNsaWNrKT1cImR1cGxpY2F0ZSgpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkdXBsaWNhdGVGb3JtLmludmFsaWRcIlxuICAgID5cbiAgICAgIHt7ICdmb3JtTWFuYWdlbWVudC5zdWJtaXQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvY2RzLW1vZGFsLWZvb3Rlcj5cbjwvY2RzLW1vZGFsPlxuIl19
|
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { Component, HostBinding, ViewEncapsulation } from '@angular/core';
|
|
17
|
-
import { PendingChangesComponent, } from '@valtimo/components';
|
|
18
|
-
import { BehaviorSubject, distinctUntilChanged, filter, Subscription, switchMap, take, tap, } from 'rxjs';
|
|
19
|
-
import { FormManagementDuplicateComponent } from '../form-management-duplicate/form-management-duplicate.component';
|
|
20
|
-
import { EDIT_TABS } from '../models';
|
|
21
|
-
import * as i0 from "@angular/core";
|
|
22
|
-
import * as i1 from "@valtimo/components";
|
|
23
|
-
import * as i2 from "../services";
|
|
24
|
-
import * as i3 from "carbon-components-angular";
|
|
25
|
-
import * as i4 from "@angular/router";
|
|
26
|
-
import * as i5 from "@angular/common";
|
|
27
|
-
import * as i6 from "../form-management-upload/form-management-upload.component";
|
|
28
|
-
import * as i7 from "@ngx-translate/core";
|
|
29
|
-
export class FormManagementEditComponent extends PendingChangesComponent {
|
|
30
|
-
get _formDefinition() {
|
|
31
|
-
return this._formDefinition$.getValue();
|
|
32
|
-
}
|
|
33
|
-
constructor(alertService, formManagementService, modalService, pageTitleService, route, router, shellService, pageHeaderService) {
|
|
34
|
-
super();
|
|
35
|
-
this.alertService = alertService;
|
|
36
|
-
this.formManagementService = formManagementService;
|
|
37
|
-
this.modalService = modalService;
|
|
38
|
-
this.pageTitleService = pageTitleService;
|
|
39
|
-
this.route = route;
|
|
40
|
-
this.router = router;
|
|
41
|
-
this.shellService = shellService;
|
|
42
|
-
this.pageHeaderService = pageHeaderService;
|
|
43
|
-
this.class = 'valtimo-form-management-edit';
|
|
44
|
-
this.modifiedFormDefinition = null;
|
|
45
|
-
this.validJsonChange = null;
|
|
46
|
-
this.CARBON_THEME = 'g10';
|
|
47
|
-
this.TABS = EDIT_TABS;
|
|
48
|
-
this.activeTab = EDIT_TABS.BUILDER;
|
|
49
|
-
this._formDefinition$ = new BehaviorSubject(null);
|
|
50
|
-
this.formDefinition$ = this._formDefinition$.pipe(filter((definition) => !!definition), distinctUntilChanged((prevFormDefinition, currFormDefinition) => JSON.stringify(prevFormDefinition?.formDefinition?.components) ===
|
|
51
|
-
JSON.stringify(currFormDefinition?.formDefinition?.components)), tap(() => {
|
|
52
|
-
if (!this._editorInitialized) {
|
|
53
|
-
this._editorInitialized = true;
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
this.pendingChanges = true;
|
|
57
|
-
}));
|
|
58
|
-
this.jsonFormDefinition$ = new BehaviorSubject(null);
|
|
59
|
-
this.jsonOutput$ = new BehaviorSubject(null);
|
|
60
|
-
this.reloading$ = new BehaviorSubject(false);
|
|
61
|
-
this.showDeleteModal$ = new BehaviorSubject(false);
|
|
62
|
-
this.showModal$ = new BehaviorSubject(false);
|
|
63
|
-
this.compactMode$ = this.pageHeaderService.compactMode$;
|
|
64
|
-
this._alertSub = Subscription.EMPTY;
|
|
65
|
-
this._changeActive = false;
|
|
66
|
-
this._editorInitialized = false;
|
|
67
|
-
}
|
|
68
|
-
ngOnInit() {
|
|
69
|
-
this.pageTitleService.disableReset();
|
|
70
|
-
this.loadFormDefinition();
|
|
71
|
-
this.checkToOpenUploadModal();
|
|
72
|
-
}
|
|
73
|
-
ngOnDestroy() {
|
|
74
|
-
this._alertSub.unsubscribe();
|
|
75
|
-
this.pageTitleService.enableReset();
|
|
76
|
-
}
|
|
77
|
-
formBuilderChanged(event, definition) {
|
|
78
|
-
if (event.type === 'updateComponent') {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
this._changeActive = true;
|
|
82
|
-
this.modifiedFormDefinition = event.form;
|
|
83
|
-
this._formDefinition$.next({ ...this._formDefinition, formDefinition: event.form });
|
|
84
|
-
this.jsonFormDefinition$.next({ ...definition, value: JSON.stringify(event.form) });
|
|
85
|
-
this._changeActive = false;
|
|
86
|
-
}
|
|
87
|
-
delete() {
|
|
88
|
-
this.showDeleteModal$.next(true);
|
|
89
|
-
}
|
|
90
|
-
deleteFormDefinition(definition) {
|
|
91
|
-
this.pendingChanges = false;
|
|
92
|
-
this.formManagementService.deleteFormDefinition(definition.id).subscribe({
|
|
93
|
-
next: () => {
|
|
94
|
-
this.router.navigate(['/form-management']);
|
|
95
|
-
this.alertService.success('Form deleted');
|
|
96
|
-
},
|
|
97
|
-
error: () => {
|
|
98
|
-
this.alertService.error('Error deleting Form');
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
downloadFormDefinition(definition) {
|
|
103
|
-
const file = new Blob([JSON.stringify(definition.formDefinition)], {
|
|
104
|
-
type: 'text/json',
|
|
105
|
-
});
|
|
106
|
-
const link = document.createElement('a');
|
|
107
|
-
link.download = `form_${definition.name}.json`;
|
|
108
|
-
link.href = window.URL.createObjectURL(file);
|
|
109
|
-
link.click();
|
|
110
|
-
window.URL.revokeObjectURL(link.href);
|
|
111
|
-
link.remove();
|
|
112
|
-
}
|
|
113
|
-
modifyFormDefinition(definition) {
|
|
114
|
-
this.pendingChanges = false;
|
|
115
|
-
const form = JSON.stringify(this.modifiedFormDefinition !== null ? this.modifiedFormDefinition : definition.formDefinition);
|
|
116
|
-
const request = {
|
|
117
|
-
id: definition.id,
|
|
118
|
-
name: definition.name,
|
|
119
|
-
formDefinition: form,
|
|
120
|
-
};
|
|
121
|
-
this.formManagementService.modifyFormDefinition(request).subscribe({
|
|
122
|
-
next: () => {
|
|
123
|
-
this.router.navigate(['/form-management']);
|
|
124
|
-
this.alertService.success('Form deployed');
|
|
125
|
-
},
|
|
126
|
-
error: () => {
|
|
127
|
-
this.alertService.error('Error deploying Form');
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
onSelectedTab(tab) {
|
|
132
|
-
this.activeTab = tab;
|
|
133
|
-
if (tab === EDIT_TABS.BUILDER) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
setTimeout(() => {
|
|
137
|
-
this.shellService.onMainContentResize();
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
onOutputChange(event) {
|
|
141
|
-
this.reloading$.next(false);
|
|
142
|
-
if (!event.data) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
else if (JSON.stringify(event.data) === this._activeOuput) {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
this._activeOuput = JSON.stringify(event.data);
|
|
149
|
-
this.jsonOutput$.next({ value: this._activeOuput, language: 'json' });
|
|
150
|
-
}
|
|
151
|
-
onValueChangeEvent(value, definition, disabled) {
|
|
152
|
-
if (this._changeActive || this.validJsonChange === false || disabled) {
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
const parsedDefinition = JSON.parse(value);
|
|
156
|
-
this.modifiedFormDefinition = parsedDefinition;
|
|
157
|
-
this._formDefinition$.next({
|
|
158
|
-
...definition,
|
|
159
|
-
formDefinition: parsedDefinition,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
onValidEvent(value, disabled) {
|
|
163
|
-
if (this._changeActive || disabled) {
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
this.validJsonChange = value;
|
|
167
|
-
}
|
|
168
|
-
showUploadModal() {
|
|
169
|
-
this.showModal$.next(true);
|
|
170
|
-
}
|
|
171
|
-
showDuplicateModal(definition) {
|
|
172
|
-
this.modalService.create({
|
|
173
|
-
component: FormManagementDuplicateComponent,
|
|
174
|
-
inputs: {
|
|
175
|
-
formToDuplicate: definition,
|
|
176
|
-
},
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
setFormDefinition(formDefinition) {
|
|
180
|
-
this.reloading$.next(true);
|
|
181
|
-
const definition = JSON.parse(formDefinition);
|
|
182
|
-
if (!definition?.components) {
|
|
183
|
-
this.reloading$.next(false);
|
|
184
|
-
this.alertService.error('Invalid form.io. Missing JSON field "components".');
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
const components = definition.components;
|
|
188
|
-
const currentDefinition = this.modifiedFormDefinition || definition.formDefinition;
|
|
189
|
-
const newDefinition = { ...currentDefinition, ...(components && { components }) };
|
|
190
|
-
this.modifiedFormDefinition = newDefinition;
|
|
191
|
-
definition.formDefinition = newDefinition;
|
|
192
|
-
this.jsonFormDefinition$.next({
|
|
193
|
-
value: JSON.stringify(newDefinition),
|
|
194
|
-
language: 'json',
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
onConfirmRedirect() {
|
|
198
|
-
const cancelButton = document.querySelector('button[ref="cancelButton"]');
|
|
199
|
-
if (!cancelButton) {
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
cancelButton.click();
|
|
203
|
-
}
|
|
204
|
-
checkToOpenUploadModal() {
|
|
205
|
-
this.route.queryParams.pipe(take(1)).subscribe(params => {
|
|
206
|
-
if (params?.upload === 'true') {
|
|
207
|
-
this.showUploadModal();
|
|
208
|
-
}
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
loadFormDefinition() {
|
|
212
|
-
this.route.paramMap
|
|
213
|
-
.pipe(take(1), switchMap((paramMap) => this.formManagementService.getFormDefinition(paramMap.get('id') ?? '')))
|
|
214
|
-
.subscribe((definition) => {
|
|
215
|
-
this._formDefinition$.next(definition);
|
|
216
|
-
this.pageTitleService.setCustomPageTitle(definition.name);
|
|
217
|
-
this.jsonFormDefinition$.next({
|
|
218
|
-
value: JSON.stringify(definition.formDefinition),
|
|
219
|
-
language: 'json',
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormManagementEditComponent, deps: [{ token: i1.AlertService }, { token: i2.FormManagementService }, { token: i3.ModalService }, { token: i1.PageTitleService }, { token: i4.ActivatedRoute }, { token: i4.Router }, { token: i1.ShellService }, { token: i1.PageHeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
224
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FormManagementEditComponent, selector: "valtimo-form-management-edit", host: { properties: { "class": "this.class" } }, usesInheritance: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n jsonFormDefinition: jsonFormDefinition$ | async,\n jsonOutput: jsonOutput$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n>\n @if (obs.formDefinition) {\n <ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"valtimo-form-management-edit__header-container\"\n [ngClass]=\"{'--compact': obs.compactMode}\"\n >\n @if (obs.formDefinition.readOnly) {\n <cds-tag size=\"sm\" type=\"blue\">{{ 'formManagement.readOnly' | translate }}</cds-tag>\n }\n\n <div class=\"valtimo-form-management-edit__header\">\n <cds-overflow-menu>\n <cds-overflow-menu-option (selected)=\"downloadFormDefinition(obs.formDefinition)\">\n {{ 'Download' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.formDefinition.readOnly\"\n (selected)=\"showUploadModal()\"\n >\n {{ 'Upload' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.formDefinition.readOnly\"\n (selected)=\"delete(obs.formDefinition)\"\n >\n {{ 'interface.delete' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option (selected)=\"showDuplicateModal(obs.formDefinition)\">\n {{ 'formManagement.duplicate' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"obs.formDefinition.readOnly || !validJsonChange\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"modifyFormDefinition(obs.formDefinition)\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </ng-template>\n </ng-container>\n\n <cds-tabs type=\"contained\">\n <cds-tab [heading]=\"TABS.BUILDER | translate\" (selected)=\"onSelectedTab(TABS.BUILDER)\">\n <valtimo-form-io-builder\n *ngIf=\"(reloading$ | async) === false && activeTab === TABS.BUILDER\"\n [form]=\"obs.formDefinition.formDefinition\"\n (change)=\"formBuilderChanged($event, obs.jsonFormDefinition)\"\n ></valtimo-form-io-builder>\n </cds-tab>\n\n <cds-tab [heading]=\"TABS.EDITOR | translate\" (selected)=\"onSelectedTab(TABS.EDITOR)\">\n <ng-container\n *ngTemplateOutlet=\"\n jsonEditor;\n context: {\n data: {\n disabled: obs.formDefinition.readOnly,\n formDefinition: obs.formDefinition,\n model: obs.jsonFormDefinition,\n },\n }\n \"\n ></ng-container>\n </cds-tab>\n\n <cds-tab\n [heading]=\"TABS.OUTPUT | translate\"\n (selected)=\"onSelectedTab(TABS.OUTPUT)\"\n class=\"valtimo-form-management-edit__output\"\n >\n <valtimo-form-io\n [form]=\"obs.formDefinition.formDefinition\"\n (change)=\"onOutputChange($event)\"\n ></valtimo-form-io>\n\n <ng-container\n *ngTemplateOutlet=\"\n jsonEditor;\n context: {\n data: {disabled: true, formDefinition: obs.formDefinition, model: obs.jsonOutput},\n }\n \"\n ></ng-container>\n </cds-tab>\n </cds-tabs>\n } @else {\n <valtimo-spinner></valtimo-spinner>\n }\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"interface.deleteConfirmation\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n [outputOnConfirm]=\"obs.formDefinition\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dashboardManagement.delete\"\n (confirmEvent)=\"deleteFormDefinition($event)\"\n ></valtimo-confirmation-modal>\n\n <valtimo-form-management-upload\n [show$]=\"showModal$\"\n (definitionUploaded)=\"setFormDefinition($event)\"\n ></valtimo-form-management-upload>\n\n <ng-template #jsonEditor let-data=\"data\">\n <valtimo-editor\n [model]=\"data.model\"\n [disabled]=\"data.disabled\"\n (validEvent)=\"onValidEvent($event, data.disabled)\"\n (valueChangeEvent)=\"onValueChangeEvent($event, data.formDefinition, data.disabled)\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"80\"\n ></valtimo-editor>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-form-management-edit__header{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin-left:auto}.valtimo-form-management-edit__header-container{width:100%;display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.valtimo-form-management-edit__header-container .cds--tag{margin:0;height:var(--cds-layout-size-height-md)}.valtimo-form-management-edit__header-container.--compact{align-items:flex-start;padding-bottom:0}.valtimo-form-management-edit__output .cds--tab-content{display:grid;grid-template-columns:1fr 1fr}.valtimo-form-management-edit__output .cds--tab-content>*{min-width:100%!important}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy,.valtimo-form-management-edit .btn.formcomponent.gu-mirror{font-weight:400;background-color:silver;border-color:silver;color:#fff}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:hover,.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:active,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:hover,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:active{box-shadow:none}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:active,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:active{background-color:silver;border-color:silver}.valtimo-form-management-edit .formbuilder-header{padding-left:18px;padding-right:18px;font-size:18px;height:80px;border:1px solid #dee2e6;border-bottom:0}.valtimo-form-management-edit .formbuilder-header .formbuilder-title{margin-top:21px;margin-bottom:7px}.valtimo-form-management-edit .formbuilder-header .formbuilder-subtitle{margin-top:0;margin-bottom:12px}.valtimo-form-management-edit .formbuilder{background:#fff;padding:1rem;border:1px solid #dee2e6;margin-right:0!important;margin-left:0!important}.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=false],.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=\"\"]{color:#a9a9a9}.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=true]{color:#000}.valtimo-form-management-edit .formbuilder .drag-and-drop-alert{display:none}.valtimo-form-management-edit .formbuilder .formarea{padding:10px;border:solid 1px silver;background-color:#fff}.valtimo-form-management-edit .increase-size{font-size:1rem}.valtimo-form-management-edit .cds--tab-content{background:#fff!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "component", type: i1.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i1.FormioBuilderComponent, selector: "valtimo-form-io-builder", inputs: ["form"], outputs: ["change"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i3.OverflowMenu, selector: "cds-overflow-menu, ibm-overflow-menu", inputs: ["buttonLabel", "flip", "placement", "open", "customTrigger", "offset", "wrapperClass", "triggerClass"], outputs: ["openChange"] }, { kind: "component", type: i3.OverflowMenuOption, selector: "cds-overflow-menu-option, ibm-overflow-menu-option", inputs: ["divider", "type", "disabled", "href", "target", "innerClass"], outputs: ["selected"] }, { kind: "directive", type: i1.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i3.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i3.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "component", type: i1.EditorComponent, selector: "valtimo-editor", inputs: ["editorOptions", "model", "disabled", "formatOnLoad", "widthPx", "heightPx", "heightStyle", "jsonSchema", "fitPage", "fitPageExtraSpace"], outputs: ["validEvent", "valueChangeEvent"] }, { kind: "component", type: i1.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: i3.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class"] }, { kind: "component", type: i6.FormManagementUploadComponent, selector: "valtimo-form-management-upload", inputs: ["show$"], outputs: ["definitionUploaded"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
225
|
-
}
|
|
226
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormManagementEditComponent, decorators: [{
|
|
227
|
-
type: Component,
|
|
228
|
-
args: [{ selector: 'valtimo-form-management-edit', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<ng-container\n *ngIf=\"{\n formDefinition: formDefinition$ | async,\n jsonFormDefinition: jsonFormDefinition$ | async,\n jsonOutput: jsonOutput$ | async,\n compactMode: compactMode$ | async,\n } as obs\"\n>\n @if (obs.formDefinition) {\n <ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div\n class=\"valtimo-form-management-edit__header-container\"\n [ngClass]=\"{'--compact': obs.compactMode}\"\n >\n @if (obs.formDefinition.readOnly) {\n <cds-tag size=\"sm\" type=\"blue\">{{ 'formManagement.readOnly' | translate }}</cds-tag>\n }\n\n <div class=\"valtimo-form-management-edit__header\">\n <cds-overflow-menu>\n <cds-overflow-menu-option (selected)=\"downloadFormDefinition(obs.formDefinition)\">\n {{ 'Download' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.formDefinition.readOnly\"\n (selected)=\"showUploadModal()\"\n >\n {{ 'Upload' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option\n [disabled]=\"obs.formDefinition.readOnly\"\n (selected)=\"delete(obs.formDefinition)\"\n >\n {{ 'interface.delete' | translate }}\n </cds-overflow-menu-option>\n\n <cds-overflow-menu-option (selected)=\"showDuplicateModal(obs.formDefinition)\">\n {{ 'formManagement.duplicate' | translate }}\n </cds-overflow-menu-option>\n </cds-overflow-menu>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"obs.formDefinition.readOnly || !validJsonChange\"\n [size]=\"obs.compactMode ? 'sm' : 'md'\"\n (click)=\"modifyFormDefinition(obs.formDefinition)\"\n >\n {{ 'interface.save' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"save\" size=\"16\"></svg>\n </button>\n </div>\n </div>\n </ng-template>\n </ng-container>\n\n <cds-tabs type=\"contained\">\n <cds-tab [heading]=\"TABS.BUILDER | translate\" (selected)=\"onSelectedTab(TABS.BUILDER)\">\n <valtimo-form-io-builder\n *ngIf=\"(reloading$ | async) === false && activeTab === TABS.BUILDER\"\n [form]=\"obs.formDefinition.formDefinition\"\n (change)=\"formBuilderChanged($event, obs.jsonFormDefinition)\"\n ></valtimo-form-io-builder>\n </cds-tab>\n\n <cds-tab [heading]=\"TABS.EDITOR | translate\" (selected)=\"onSelectedTab(TABS.EDITOR)\">\n <ng-container\n *ngTemplateOutlet=\"\n jsonEditor;\n context: {\n data: {\n disabled: obs.formDefinition.readOnly,\n formDefinition: obs.formDefinition,\n model: obs.jsonFormDefinition,\n },\n }\n \"\n ></ng-container>\n </cds-tab>\n\n <cds-tab\n [heading]=\"TABS.OUTPUT | translate\"\n (selected)=\"onSelectedTab(TABS.OUTPUT)\"\n class=\"valtimo-form-management-edit__output\"\n >\n <valtimo-form-io\n [form]=\"obs.formDefinition.formDefinition\"\n (change)=\"onOutputChange($event)\"\n ></valtimo-form-io>\n\n <ng-container\n *ngTemplateOutlet=\"\n jsonEditor;\n context: {\n data: {disabled: true, formDefinition: obs.formDefinition, model: obs.jsonOutput},\n }\n \"\n ></ng-container>\n </cds-tab>\n </cds-tabs>\n } @else {\n <valtimo-spinner></valtimo-spinner>\n }\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"interface.deleteConfirmation\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n [outputOnConfirm]=\"obs.formDefinition\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dashboardManagement.delete\"\n (confirmEvent)=\"deleteFormDefinition($event)\"\n ></valtimo-confirmation-modal>\n\n <valtimo-form-management-upload\n [show$]=\"showModal$\"\n (definitionUploaded)=\"setFormDefinition($event)\"\n ></valtimo-form-management-upload>\n\n <ng-template #jsonEditor let-data=\"data\">\n <valtimo-editor\n [model]=\"data.model\"\n [disabled]=\"data.disabled\"\n (validEvent)=\"onValidEvent($event, data.disabled)\"\n (valueChangeEvent)=\"onValueChangeEvent($event, data.formDefinition, data.disabled)\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"80\"\n ></valtimo-editor>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-form-management-edit__header{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin-left:auto}.valtimo-form-management-edit__header-container{width:100%;display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:4px}.valtimo-form-management-edit__header-container .cds--tag{margin:0;height:var(--cds-layout-size-height-md)}.valtimo-form-management-edit__header-container.--compact{align-items:flex-start;padding-bottom:0}.valtimo-form-management-edit__output .cds--tab-content{display:grid;grid-template-columns:1fr 1fr}.valtimo-form-management-edit__output .cds--tab-content>*{min-width:100%!important}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy,.valtimo-form-management-edit .btn.formcomponent.gu-mirror{font-weight:400;background-color:silver;border-color:silver;color:#fff}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:hover,.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:active,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:hover,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:active{box-shadow:none}.valtimo-form-management-edit .formbuilder .btn.formcomponent.drag-copy:active,.valtimo-form-management-edit .btn.formcomponent.gu-mirror:active{background-color:silver;border-color:silver}.valtimo-form-management-edit .formbuilder-header{padding-left:18px;padding-right:18px;font-size:18px;height:80px;border:1px solid #dee2e6;border-bottom:0}.valtimo-form-management-edit .formbuilder-header .formbuilder-title{margin-top:21px;margin-bottom:7px}.valtimo-form-management-edit .formbuilder-header .formbuilder-subtitle{margin-top:0;margin-bottom:12px}.valtimo-form-management-edit .formbuilder{background:#fff;padding:1rem;border:1px solid #dee2e6;margin-right:0!important;margin-left:0!important}.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=false],.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=\"\"]{color:#a9a9a9}.valtimo-form-management-edit .formbuilder .form-builder-panel .builder-group-button[aria-expanded=true]{color:#000}.valtimo-form-management-edit .formbuilder .drag-and-drop-alert{display:none}.valtimo-form-management-edit .formbuilder .formarea{padding:10px;border:solid 1px silver;background-color:#fff}.valtimo-form-management-edit .increase-size{font-size:1rem}.valtimo-form-management-edit .cds--tab-content{background:#fff!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
229
|
-
}], ctorParameters: () => [{ type: i1.AlertService }, { type: i2.FormManagementService }, { type: i3.ModalService }, { type: i1.PageTitleService }, { type: i4.ActivatedRoute }, { type: i4.Router }, { type: i1.ShellService }, { type: i1.PageHeaderService }], propDecorators: { class: [{
|
|
230
|
-
type: HostBinding,
|
|
231
|
-
args: ['class']
|
|
232
|
-
}] } });
|
|
233
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tYW5hZ2VtZW50LWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9mb3JtLW1hbmFnZW1lbnQvc3JjL2xpYi9mb3JtLW1hbmFnZW1lbnQtZWRpdC9mb3JtLW1hbmFnZW1lbnQtZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Zvcm0tbWFuYWdlbWVudC9zcmMvbGliL2Zvcm0tbWFuYWdlbWVudC1lZGl0L2Zvcm0tbWFuYWdlbWVudC1lZGl0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQXFCLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRzNGLE9BQU8sRUFLTCx1QkFBdUIsR0FFeEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDbEgsT0FBTyxFQUFDLFNBQVMsRUFBOEMsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7OztBQVNqRixNQUFNLE9BQU8sMkJBQ1gsU0FBUSx1QkFBdUI7SUFjL0IsSUFBWSxlQUFlO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUE0QkQsWUFDbUIsWUFBMEIsRUFDMUIscUJBQTRDLEVBQzVDLFlBQTBCLEVBQzFCLGdCQUFrQyxFQUNsQyxLQUFxQixFQUNyQixNQUFjLEVBQ2QsWUFBMEIsRUFDMUIsaUJBQW9DO1FBRXJELEtBQUssRUFBRSxD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QUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7Z0JBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7Z0JBQ2hELFFBQVEsRUFBRSxNQUFNO2FBQ2pCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0F4UFUsMkJBQTJCO21HQUEzQiwyQkFBMkIsNElDOUN4Qyw2NEtBcUpBOzs0RkR2R2EsMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLDhCQUE4QixpQkFHekIsaUJBQWlCLENBQUMsSUFBSTs0UkFNQyxLQUFLO3NCQUExQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1NYXAsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Rm9ybWlvRm9ybX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgRWRpdG9yTW9kZWwsXG4gIFBhZ2VIZWFkZXJTZXJ2aWNlLFxuICBQYWdlVGl0bGVTZXJ2aWNlLFxuICBQZW5kaW5nQ2hhbmdlc0NvbXBvbmVudCxcbiAgU2hlbGxTZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7TW9kYWxTZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Zvcm1NYW5hZ2VtZW50RHVwbGljYXRlQ29tcG9uZW50fSBmcm9tICcuLi9mb3JtLW1hbmFnZW1lbnQtZHVwbGljYXRlL2Zvcm0tbWFuYWdlbWVudC1kdXBsaWNhdGUuY29tcG9uZW50JztcbmltcG9ydCB7RURJVF9UQUJTLCBGb3JtRGVmaW5pdGlvbiwgTW9kaWZ5Rm9ybURlZmluaXRpb25SZXF1ZXN0fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtGb3JtTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1mb3JtLW1hbmFnZW1lbnQtZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLW1hbmFnZW1lbnQtZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tbWFuYWdlbWVudC1lZGl0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1NYW5hZ2VtZW50RWRpdENvbXBvbmVudFxuICBleHRlbmRzIFBlbmRpbmdDaGFuZ2VzQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHB1YmxpYyByZWFkb25seSBjbGFzcyA9ICd2YWx0aW1vLWZvcm0tbWFuYWdlbWVudC1lZGl0JztcblxuICBwdWJsaWMgbW9kaWZpZWRGb3JtRGVmaW5pdGlvbjogRm9ybWlvRm9ybSB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgdmFsaWRKc29uQ2hhbmdlOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIHJlYWRvbmx5IENBUkJPTl9USEVNRSA9ICdnMTAnO1xuICBwdWJsaWMgcmVhZG9ubHkgVEFCUyA9IEVESVRfVEFCUztcblxuICBwdWJsaWMgYWN0aXZlVGFiID0gRURJVF9UQUJTLkJVSUxERVI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybURlZmluaXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIGdldCBfZm9ybURlZmluaXRpb24oKTogRm9ybURlZmluaXRpb24ge1xuICAgIHJldHVybiB0aGlzLl9mb3JtRGVmaW5pdGlvbiQuZ2V0VmFsdWUoKTtcbiAgfVxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybURlZmluaXRpb24kID0gdGhpcy5fZm9ybURlZmluaXRpb24kLnBpcGUoXG4gICAgZmlsdGVyKChkZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbiB8IG51bGwpID0+ICEhZGVmaW5pdGlvbiksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoXG4gICAgICAocHJldkZvcm1EZWZpbml0aW9uLCBjdXJyRm9ybURlZmluaXRpb24pID0+XG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXZGb3JtRGVmaW5pdGlvbj8uZm9ybURlZmluaXRpb24/LmNvbXBvbmVudHMpID09PVxuICAgICAgICBKU09OLnN0cmluZ2lmeShjdXJyRm9ybURlZmluaXRpb24/LmZvcm1EZWZpbml0aW9uPy5jb21wb25lbnRzKVxuICAgICksXG4gICAgdGFwKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5fZWRpdG9ySW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5fZWRpdG9ySW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzID0gdHJ1ZTtcbiAgICB9KVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkganNvbkZvcm1EZWZpbml0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RWRpdG9yTW9kZWwgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IGpzb25PdXRwdXQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFZGl0b3JNb2RlbCB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0RlbGV0ZU1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd01vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgY29tcGFjdE1vZGUkID0gdGhpcy5wYWdlSGVhZGVyU2VydmljZS5jb21wYWN0TW9kZSQ7XG5cbiAgcHJpdmF0ZSBfYWN0aXZlT3VwdXQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfYWxlcnRTdWI6IFN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcbiAgcHJpdmF0ZSBfY2hhbmdlQWN0aXZlID0gZmFsc2U7XG4gIHByaXZhdGUgX2VkaXRvckluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1NYW5hZ2VtZW50U2VydmljZTogRm9ybU1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzaGVsbFNlcnZpY2U6IFNoZWxsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VIZWFkZXJTZXJ2aWNlOiBQYWdlSGVhZGVyU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5kaXNhYmxlUmVzZXQoKTtcbiAgICB0aGlzLmxvYWRGb3JtRGVmaW5pdGlvbigpO1xuICAgIHRoaXMuY2hlY2tUb09wZW5VcGxvYWRNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsZXJ0U3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgZm9ybUJ1aWxkZXJDaGFuZ2VkKGV2ZW50LCBkZWZpbml0aW9uOiBFZGl0b3JNb2RlbCk6IHZvaWQge1xuICAgIGlmIChldmVudC50eXBlID09PSAndXBkYXRlQ29tcG9uZW50Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9jaGFuZ2VBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMubW9kaWZpZWRGb3JtRGVmaW5pdGlvbiA9IGV2ZW50LmZvcm07XG4gICAgdGhpcy5fZm9ybURlZmluaXRpb24kLm5leHQoey4uLnRoaXMuX2Zvcm1EZWZpbml0aW9uLCBmb3JtRGVmaW5pdGlvbjogZXZlbnQuZm9ybX0pO1xuICAgIHRoaXMuanNvbkZvcm1EZWZpbml0aW9uJC5uZXh0KHsuLi5kZWZpbml0aW9uLCB2YWx1ZTogSlNPTi5zdHJpbmdpZnkoZXZlbnQuZm9ybSl9KTtcbiAgICB0aGlzLl9jaGFuZ2VBY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RGVsZXRlTW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRm9ybURlZmluaXRpb24oZGVmaW5pdGlvbjogRm9ybURlZmluaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzID0gZmFsc2U7XG4gICAgdGhpcy5mb3JtTWFuYWdlbWVudFNlcnZpY2UuZGVsZXRlRm9ybURlZmluaXRpb24oZGVmaW5pdGlvbi5pZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZm9ybS1tYW5hZ2VtZW50J10pO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKCdGb3JtIGRlbGV0ZWQnKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5lcnJvcignRXJyb3IgZGVsZXRpbmcgRm9ybScpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkb3dubG9hZEZvcm1EZWZpbml0aW9uKGRlZmluaXRpb246IEZvcm1EZWZpbml0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShkZWZpbml0aW9uLmZvcm1EZWZpbml0aW9uKV0sIHtcbiAgICAgIHR5cGU6ICd0ZXh0L2pzb24nLFxuICAgIH0pO1xuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5kb3dubG9hZCA9IGBmb3JtXyR7ZGVmaW5pdGlvbi5uYW1lfS5qc29uYDtcbiAgICBsaW5rLmhyZWYgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlKTtcbiAgICBsaW5rLmNsaWNrKCk7XG4gICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwobGluay5ocmVmKTtcbiAgICBsaW5rLnJlbW92ZSgpO1xuICB9XG5cbiAgcHVibGljIG1vZGlmeUZvcm1EZWZpbml0aW9uKGRlZmluaXRpb246IEZvcm1EZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgZm9ybSA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgdGhpcy5tb2RpZmllZEZvcm1EZWZpbml0aW9uICE9PSBudWxsID8gdGhpcy5tb2RpZmllZEZvcm1EZWZpbml0aW9uIDogZGVmaW5pdGlvbi5mb3JtRGVmaW5pdGlvblxuICAgICk7XG4gICAgY29uc3QgcmVxdWVzdDogTW9kaWZ5Rm9ybURlZmluaXRpb25SZXF1ZXN0ID0ge1xuICAgICAgaWQ6IGRlZmluaXRpb24uaWQsXG4gICAgICBuYW1lOiBkZWZpbml0aW9uLm5hbWUsXG4gICAgICBmb3JtRGVmaW5pdGlvbjogZm9ybSxcbiAgICB9O1xuICAgIHRoaXMuZm9ybU1hbmFnZW1lbnRTZXJ2aWNlLm1vZGlmeUZvcm1EZWZpbml0aW9uKHJlcXVlc3QpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Zvcm0tbWFuYWdlbWVudCddKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcygnRm9ybSBkZXBsb3llZCcpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKCdFcnJvciBkZXBsb3lpbmcgRm9ybScpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkVGFiKHRhYjogRURJVF9UQUJTKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG5cbiAgICBpZiAodGFiID09PSBFRElUX1RBQlMuQlVJTERFUikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zaGVsbFNlcnZpY2Uub25NYWluQ29udGVudFJlc2l6ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uT3V0cHV0Q2hhbmdlKGV2ZW50OiB7ZGF0YTogb2JqZWN0IHwgdW5kZWZpbmVkfSk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkaW5nJC5uZXh0KGZhbHNlKTtcblxuICAgIGlmICghZXZlbnQuZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoSlNPTi5zdHJpbmdpZnkoZXZlbnQuZGF0YSkgPT09IHRoaXMuX2FjdGl2ZU91cHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYWN0aXZlT3VwdXQgPSBKU09OLnN0cmluZ2lmeShldmVudC5kYXRhKTtcbiAgICB0aGlzLmpzb25PdXRwdXQkLm5leHQoe3ZhbHVlOiB0aGlzLl9hY3RpdmVPdXB1dCwgbGFuZ3VhZ2U6ICdqc29uJ30pO1xuICB9XG5cbiAgcHVibGljIG9uVmFsdWVDaGFuZ2VFdmVudCh2YWx1ZTogc3RyaW5nLCBkZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbiwgZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2hhbmdlQWN0aXZlIHx8IHRoaXMudmFsaWRKc29uQ2hhbmdlID09PSBmYWxzZSB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZERlZmluaXRpb24gPSBKU09OLnBhcnNlKHZhbHVlKTtcblxuICAgIHRoaXMubW9kaWZpZWRGb3JtRGVmaW5pdGlvbiA9IHBhcnNlZERlZmluaXRpb247XG5cbiAgICB0aGlzLl9mb3JtRGVmaW5pdGlvbiQubmV4dCh7XG4gICAgICAuLi5kZWZpbml0aW9uLFxuICAgICAgZm9ybURlZmluaXRpb246IHBhcnNlZERlZmluaXRpb24sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25WYWxpZEV2ZW50KHZhbHVlOiBib29sZWFuLCBkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFuZ2VBY3RpdmUgfHwgZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnZhbGlkSnNvbkNoYW5nZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNob3dVcGxvYWRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RHVwbGljYXRlTW9kYWwoZGVmaW5pdGlvbjogRm9ybURlZmluaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBGb3JtTWFuYWdlbWVudER1cGxpY2F0ZUNvbXBvbmVudCxcbiAgICAgIGlucHV0czoge1xuICAgICAgICBmb3JtVG9EdXBsaWNhdGU6IGRlZmluaXRpb24sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldEZvcm1EZWZpbml0aW9uKGZvcm1EZWZpbml0aW9uOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZGluZyQubmV4dCh0cnVlKTtcblxuICAgIGNvbnN0IGRlZmluaXRpb24gPSBKU09OLnBhcnNlKGZvcm1EZWZpbml0aW9uKTtcbiAgICBpZiAoIWRlZmluaXRpb24/LmNvbXBvbmVudHMpIHtcbiAgICAgIHRoaXMucmVsb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKCdJbnZhbGlkIGZvcm0uaW8uIE1pc3NpbmcgSlNPTiBmaWVsZCBcImNvbXBvbmVudHNcIi4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRzID0gZGVmaW5pdGlvbi5jb21wb25lbnRzO1xuICAgIGNvbnN0IGN1cnJlbnREZWZpbml0aW9uID0gdGhpcy5tb2RpZmllZEZvcm1EZWZpbml0aW9uIHx8IGRlZmluaXRpb24uZm9ybURlZmluaXRpb247XG4gICAgY29uc3QgbmV3RGVmaW5pdGlvbiA9IHsuLi5jdXJyZW50RGVmaW5pdGlvbiwgLi4uKGNvbXBvbmVudHMgJiYge2NvbXBvbmVudHN9KX07XG5cbiAgICB0aGlzLm1vZGlmaWVkRm9ybURlZmluaXRpb24gPSBuZXdEZWZpbml0aW9uO1xuICAgIGRlZmluaXRpb24uZm9ybURlZmluaXRpb24gPSBuZXdEZWZpbml0aW9uO1xuXG4gICAgdGhpcy5qc29uRm9ybURlZmluaXRpb24kLm5leHQoe1xuICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KG5ld0RlZmluaXRpb24pLFxuICAgICAgbGFuZ3VhZ2U6ICdqc29uJyxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNvbmZpcm1SZWRpcmVjdCgpOiB2b2lkIHtcbiAgICBjb25zdCBjYW5jZWxCdXR0b246IEhUTUxFbGVtZW50IHwgbnVsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbltyZWY9XCJjYW5jZWxCdXR0b25cIl0nKTtcbiAgICBpZiAoIWNhbmNlbEJ1dHRvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNhbmNlbEJ1dHRvbi5jbGljaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1RvT3BlblVwbG9hZE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIGlmIChwYXJhbXM/LnVwbG9hZCA9PT0gJ3RydWUnKSB7XG4gICAgICAgIHRoaXMuc2hvd1VwbG9hZE1vZGFsKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRGb3JtRGVmaW5pdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnBhcmFtTWFwXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKChwYXJhbU1hcDogUGFyYW1NYXApID0+XG4gICAgICAgICAgdGhpcy5mb3JtTWFuYWdlbWVudFNlcnZpY2UuZ2V0Rm9ybURlZmluaXRpb24ocGFyYW1NYXAuZ2V0KCdpZCcpID8/ICcnKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChkZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbikgPT4ge1xuICAgICAgICB0aGlzLl9mb3JtRGVmaW5pdGlvbiQubmV4dChkZWZpbml0aW9uKTtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLnNldEN1c3RvbVBhZ2VUaXRsZShkZWZpbml0aW9uLm5hbWUpO1xuICAgICAgICB0aGlzLmpzb25Gb3JtRGVmaW5pdGlvbiQubmV4dCh7XG4gICAgICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KGRlZmluaXRpb24uZm9ybURlZmluaXRpb24pLFxuICAgICAgICAgIGxhbmd1YWdlOiAnanNvbicsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgZm9ybURlZmluaXRpb246IGZvcm1EZWZpbml0aW9uJCB8IGFzeW5jLFxuICAgIGpzb25Gb3JtRGVmaW5pdGlvbjoganNvbkZvcm1EZWZpbml0aW9uJCB8IGFzeW5jLFxuICAgIGpzb25PdXRwdXQ6IGpzb25PdXRwdXQkIHwgYXN5bmMsXG4gICAgY29tcGFjdE1vZGU6IGNvbXBhY3RNb2RlJCB8IGFzeW5jLFxuICB9IGFzIG9ic1wiXG4+XG4gIEBpZiAob2JzLmZvcm1EZWZpbml0aW9uKSB7XG4gICAgPG5nLWNvbnRhaW5lciByZW5kZXJJblBhZ2VIZWFkZXIgW2Z1bGxXaWR0aF09XCJ0cnVlXCI+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZhbHRpbW8tZm9ybS1tYW5hZ2VtZW50LWVkaXRfX2hlYWRlci1jb250YWluZXJcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnLS1jb21wYWN0Jzogb2JzLmNvbXBhY3RNb2RlfVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKG9icy5mb3JtRGVmaW5pdGlvbi5yZWFkT25seSkge1xuICAgICAgICAgICAgPGNkcy10YWcgc2l6ZT1cInNtXCIgdHlwZT1cImJsdWVcIj57eyAnZm9ybU1hbmFnZW1lbnQucmVhZE9ubHknIHwgdHJhbnNsYXRlIH19PC9jZHMtdGFnPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLWZvcm0tbWFuYWdlbWVudC1lZGl0X19oZWFkZXJcIj5cbiAgICAgICAgICAgIDxjZHMtb3ZlcmZsb3ctbWVudT5cbiAgICAgICAgICAgICAgPGNkcy1vdmVyZmxvdy1tZW51LW9wdGlvbiAoc2VsZWN0ZWQpPVwiZG93bmxvYWRGb3JtRGVmaW5pdGlvbihvYnMuZm9ybURlZmluaXRpb24pXCI+XG4gICAgICAgICAgICAgICAge3sgJ0Rvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Nkcy1vdmVyZmxvdy1tZW51LW9wdGlvbj5cblxuICAgICAgICAgICAgICA8Y2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5mb3JtRGVmaW5pdGlvbi5yZWFkT25seVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cInNob3dVcGxvYWRNb2RhbCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7ICdVcGxvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuXG4gICAgICAgICAgICAgIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb25cbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmZvcm1EZWZpbml0aW9uLnJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwiZGVsZXRlKG9icy5mb3JtRGVmaW5pdGlvbilcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgJ2ludGVyZmFjZS5kZWxldGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvY2RzLW92ZXJmbG93LW1lbnUtb3B0aW9uPlxuXG4gICAgICAgICAgICAgIDxjZHMtb3ZlcmZsb3ctbWVudS1vcHRpb24gKHNlbGVjdGVkKT1cInNob3dEdXBsaWNhdGVNb2RhbChvYnMuZm9ybURlZmluaXRpb24pXCI+XG4gICAgICAgICAgICAgICAge3sgJ2Zvcm1NYW5hZ2VtZW50LmR1cGxpY2F0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9jZHMtb3ZlcmZsb3ctbWVudS1vcHRpb24+XG4gICAgICAgICAgICA8L2Nkcy1vdmVyZmxvdy1tZW51PlxuXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmZvcm1EZWZpbml0aW9uLnJlYWRPbmx5IHx8ICF2YWxpZEpzb25DaGFuZ2VcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJvYnMuY29tcGFjdE1vZGUgPyAnc20nIDogJ21kJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJtb2RpZnlGb3JtRGVmaW5pdGlvbihvYnMuZm9ybURlZmluaXRpb24pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ2ludGVyZmFjZS5zYXZlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJzYXZlXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPGNkcy10YWJzIHR5cGU9XCJjb250YWluZWRcIj5cbiAgICAgIDxjZHMtdGFiIFtoZWFkaW5nXT1cIlRBQlMuQlVJTERFUiB8IHRyYW5zbGF0ZVwiIChzZWxlY3RlZCk9XCJvblNlbGVjdGVkVGFiKFRBQlMuQlVJTERFUilcIj5cbiAgICAgICAgPHZhbHRpbW8tZm9ybS1pby1idWlsZGVyXG4gICAgICAgICAgKm5nSWY9XCIocmVsb2FkaW5nJCB8IGFzeW5jKSA9PT0gZmFsc2UgJiYgYWN0aXZlVGFiID09PSBUQUJTLkJVSUxERVJcIlxuICAgICAgICAgIFtmb3JtXT1cIm9icy5mb3JtRGVmaW5pdGlvbi5mb3JtRGVmaW5pdGlvblwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJmb3JtQnVpbGRlckNoYW5nZWQoJGV2ZW50LCBvYnMuanNvbkZvcm1EZWZpbml0aW9uKVwiXG4gICAgICAgID48L3ZhbHRpbW8tZm9ybS1pby1idWlsZGVyPlxuICAgICAgPC9jZHMtdGFiPlxuXG4gICAgICA8Y2RzLXRhYiBbaGVhZGluZ109XCJUQUJTLkVESVRPUiB8IHRyYW5zbGF0ZVwiIChzZWxlY3RlZCk9XCJvblNlbGVjdGVkVGFiKFRBQlMuRURJVE9SKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGpzb25FZGl0b3I7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBkaXNhYmxlZDogb2JzLmZvcm1EZWZpbml0aW9uLnJlYWRPbmx5LFxuICAgICAgICAgICAgICAgIGZvcm1EZWZpbml0aW9uOiBvYnMuZm9ybURlZmluaXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWw6IG9icy5qc29uRm9ybURlZmluaXRpb24sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9jZHMtdGFiPlxuXG4gICAgICA8Y2RzLXRhYlxuICAgICAgICBbaGVhZGluZ109XCJUQUJTLk9VVFBVVCB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIChzZWxlY3RlZCk9XCJvblNlbGVjdGVkVGFiKFRBQlMuT1VUUFVUKVwiXG4gICAgICAgIGNsYXNzPVwidmFsdGltby1mb3JtLW1hbmFnZW1lbnQtZWRpdF9fb3V0cHV0XCJcbiAgICAgID5cbiAgICAgICAgPHZhbHRpbW8tZm9ybS1pb1xuICAgICAgICAgIFtmb3JtXT1cIm9icy5mb3JtRGVmaW5pdGlvbi5mb3JtRGVmaW5pdGlvblwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJvbk91dHB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdmFsdGltby1mb3JtLWlvPlxuXG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAganNvbkVkaXRvcjtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgZGF0YToge2Rpc2FibGVkOiB0cnVlLCBmb3JtRGVmaW5pdGlvbjogb2JzLmZvcm1EZWZpbml0aW9uLCBtb2RlbDogb2JzLmpzb25PdXRwdXR9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvY2RzLXRhYj5cbiAgICA8L2Nkcy10YWJzPlxuICB9IEBlbHNlIHtcbiAgICA8dmFsdGltby1zcGlubmVyPjwvdmFsdGltby1zcGlubmVyPlxuICB9XG5cbiAgPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gICAgY29uZmlybUJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImludGVyZmFjZS5kZWxldGVcIlxuICAgIGNvbmZpcm1CdXR0b25UeXBlPVwiZGFuZ2VyXCJcbiAgICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJpbnRlcmZhY2UuZGVsZXRlQ29uZmlybWF0aW9uXCJcbiAgICBjYW5jZWxCdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJpbnRlcmZhY2UuY2FuY2VsXCJcbiAgICBbb3V0cHV0T25Db25maXJtXT1cIm9icy5mb3JtRGVmaW5pdGlvblwiXG4gICAgW3Nob3dNb2RhbFN1YmplY3QkXT1cInNob3dEZWxldGVNb2RhbCRcIlxuICAgIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJkYXNoYm9hcmRNYW5hZ2VtZW50LmRlbGV0ZVwiXG4gICAgKGNvbmZpcm1FdmVudCk9XCJkZWxldGVGb3JtRGVmaW5pdGlvbigkZXZlbnQpXCJcbiAgPjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG5cbiAgPHZhbHRpbW8tZm9ybS1tYW5hZ2VtZW50LXVwbG9hZFxuICAgIFtzaG93JF09XCJzaG93TW9kYWwkXCJcbiAgICAoZGVmaW5pdGlvblVwbG9hZGVkKT1cInNldEZvcm1EZWZpbml0aW9uKCRldmVudClcIlxuICA+PC92YWx0aW1vLWZvcm0tbWFuYWdlbWVudC11cGxvYWQ+XG5cbiAgPG5nLXRlbXBsYXRlICNqc29uRWRpdG9yIGxldC1kYXRhPVwiZGF0YVwiPlxuICAgIDx2YWx0aW1vLWVkaXRvclxuICAgICAgW21vZGVsXT1cImRhdGEubW9kZWxcIlxuICAgICAgW2Rpc2FibGVkXT1cImRhdGEuZGlzYWJsZWRcIlxuICAgICAgKHZhbGlkRXZlbnQpPVwib25WYWxpZEV2ZW50KCRldmVudCwgZGF0YS5kaXNhYmxlZClcIlxuICAgICAgKHZhbHVlQ2hhbmdlRXZlbnQpPVwib25WYWx1ZUNoYW5nZUV2ZW50KCRldmVudCwgZGF0YS5mb3JtRGVmaW5pdGlvbiwgZGF0YS5kaXNhYmxlZClcIlxuICAgICAgW2ZpdFBhZ2VdPVwidHJ1ZVwiXG4gICAgICBbZml0UGFnZUV4dHJhU3BhY2VdPVwiODBcIlxuICAgID48L3ZhbHRpbW8tZWRpdG9yPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|