@dignite-ng/expand.cms 3.0.0 → 3.1.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/esm2022/lib/components/admin/entries/create.component.mjs +2 -1
- package/esm2022/lib/components/admin/entries/entries.component.mjs +1 -2
- package/esm2022/lib/components/admin/fields/edit-field.component.mjs +3 -2
- package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +12 -3
- package/esm2022/lib/components/dynamic-form/entry/entry-view.component.mjs +17 -3
- package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +1 -1
- package/esm2022/lib/services/fields-data.service.mjs +1 -1
- package/fesm2022/dignite-ng-expand.cms.mjs +30 -6
- package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -1
- package/lib/components/admin/sections/entry-types/create-or-edit.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -20,8 +20,22 @@ export class EntryViewComponent {
|
|
|
20
20
|
async ngAfterContentInit() {
|
|
21
21
|
//Called after ngOnInit when the component's or directive's content has been initialized.
|
|
22
22
|
//Add 'implements AfterContentInit' to the class.
|
|
23
|
+
console.log('valueOptions', this.fields);
|
|
23
24
|
if (this.type && this._value) {
|
|
24
|
-
|
|
25
|
+
const options = this.fields?.field?.formConfiguration?.['Entry.Options'] || [];
|
|
26
|
+
if (options.length > 0) {
|
|
27
|
+
const getTextByValue = (val) => {
|
|
28
|
+
const option = options.find((opt) => opt.value === val || opt.Value === val);
|
|
29
|
+
return option?.text || option?.Text || val;
|
|
30
|
+
};
|
|
31
|
+
if (Array.isArray(this._value)) {
|
|
32
|
+
this.showValue = this._value.map(getTextByValue).join(',');
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.showValue = getTextByValue(this._value);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else if (Array.isArray(this._value)) {
|
|
25
39
|
this.showValue = await this.getListByIds(this._value);
|
|
26
40
|
}
|
|
27
41
|
else {
|
|
@@ -37,7 +51,7 @@ export class EntryViewComponent {
|
|
|
37
51
|
.subscribe((res) => {
|
|
38
52
|
const result = res.items
|
|
39
53
|
.map((item) => {
|
|
40
|
-
return item.
|
|
54
|
+
return item.slug;
|
|
41
55
|
})
|
|
42
56
|
.join(',');
|
|
43
57
|
resolve(result);
|
|
@@ -59,4 +73,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
59
73
|
}], value: [{
|
|
60
74
|
type: Input
|
|
61
75
|
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9lbnRyeS9lbnRyeS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL2VudHJ5L2VudHJ5LXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7O0FBTzdFLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDekQsV0FBVztRQUNYLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFFcEIsYUFBYTtRQUNKLGVBQVUsR0FBZ0IsS0FBSyxDQUFDO1FBT3pDLGVBQWU7UUFDZixXQUFNLEdBQVEsRUFBRSxDQUFDO0lBYjJDLENBQUM7SUFjN0QsSUFDVyxLQUFLLENBQUMsQ0FBTTtRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLGtCQUFrQjtRQUN0Qix5RkFBeUY7UUFDekYsaURBQWlEO1FBQ2pELE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2QyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBRS9FLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDbEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDbEYsT0FBTyxNQUFNLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxJQUFJLElBQUksR0FBRyxDQUFDO2dCQUM3QyxDQUFDLENBQUM7Z0JBRUYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDN0QsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZO0lBQ1osWUFBWSxDQUFDLEdBQVU7UUFDckIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsa0JBQWtCO2lCQUNwQixZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsRUFBRSxHQUFHLENBQUM7aUJBQ3pFLFNBQVMsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUN0QixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSztxQkFDckIsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7b0JBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDbkIsQ0FBQyxDQUFDO3FCQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDYixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBNURVLGtCQUFrQjtrR0FBbEIsa0JBQWtCLDRJQ1QvQixtUUFTQzs7MkZEQVksa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjtzRkFVakIsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUtLLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL2FkbWluL2VudHJpZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjbXMtZW50cnktdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VudHJ5LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9lbnRyeS12aWV3LmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEVudHJ5Vmlld0NvbXBvbmVudCB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfRW50cnlBZG1pblNlcnZpY2U6IEVudHJ5QWRtaW5TZXJ2aWNlKSB7fVxyXG4gIC8qKuWxleekuuWImeWGheWuuSAqL1xyXG4gIHNob3dWYWx1ZTogYW55ID0gJyc7XHJcblxyXG4gIC8qKuaYr+WQpuaYvuekuuWGjeWIl+ihqCAqL1xyXG4gIEBJbnB1dCgpIHNob3dJbkxpc3Q6IGJvb2xlYW58YW55ID0gZmFsc2U7XHJcbiAgLyoq6KGo5Y2V5a2X5q615pWw5o2uICovXHJcbiAgQElucHV0KCkgZmllbGRzOiBhbnk7XHJcblxyXG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xyXG4gIEBJbnB1dCgpIHR5cGU6IGFueTtcclxuXHJcbiAgLyoq6KGo5Y2V5o6n5Lu2VmFsdWUgKi9cclxuICBfdmFsdWU6IGFueSA9ICcnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCB2YWx1ZSh2OiBhbnkpIHtcclxuICAgIHRoaXMuX3ZhbHVlID0gdjtcclxuICB9XHJcblxyXG4gIGFzeW5jIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIC8vQ2FsbGVkIGFmdGVyIG5nT25Jbml0IHdoZW4gdGhlIGNvbXBvbmVudCdzIG9yIGRpcmVjdGl2ZSdzIGNvbnRlbnQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuXHJcbiAgICAvL0FkZCAnaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0JyB0byB0aGUgY2xhc3MuXHJcbiAgICBjb25zb2xlLmxvZygndmFsdWVPcHRpb25zJyx0aGlzLmZpZWxkcylcclxuICAgIGlmICh0aGlzLnR5cGUgJiYgdGhpcy5fdmFsdWUpIHtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZmllbGRzPy5maWVsZD8uZm9ybUNvbmZpZ3VyYXRpb24/LlsnRW50cnkuT3B0aW9ucyddIHx8IFtdO1xyXG4gICAgICBcclxuICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IGdldFRleHRCeVZhbHVlID0gKHZhbDogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb24gPSBvcHRpb25zLmZpbmQoKG9wdDogYW55KSA9PiBvcHQudmFsdWUgPT09IHZhbCB8fCBvcHQuVmFsdWUgPT09IHZhbCk7XHJcbiAgICAgICAgICByZXR1cm4gb3B0aW9uPy50ZXh0IHx8IG9wdGlvbj8uVGV4dCB8fCB2YWw7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl92YWx1ZSkpIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1ZhbHVlID0gdGhpcy5fdmFsdWUubWFwKGdldFRleHRCeVZhbHVlKS5qb2luKCcsJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2hvd1ZhbHVlID0gZ2V0VGV4dEJ5VmFsdWUodGhpcy5fdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX3ZhbHVlKSkge1xyXG4gICAgICAgIHRoaXMuc2hvd1ZhbHVlID0gYXdhaXQgdGhpcy5nZXRMaXN0QnlJZHModGhpcy5fdmFsdWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1ZhbHVlID0gdGhpcy5fdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKuiOt+WPluadoeebruivpuaDhSAqL1xyXG4gIGdldExpc3RCeUlkcyhpZHM6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZVxyXG4gICAgICAgIC5nZXRMaXN0QnlJZHModGhpcy5maWVsZHMuZmllbGQuZm9ybUNvbmZpZ3VyYXRpb25bJ0VudHJ5LlNlY3Rpb25JZCddLCBpZHMpXHJcbiAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlcy5pdGVtc1xyXG4gICAgICAgICAgICAubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gaXRlbS5zbHVnO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuam9pbignLCcpO1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIkBpZihzaG93SW5MaXN0KXtcclxue3tzaG93VmFsdWV9fVxyXG59IEBlbHNle1xyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgKm5nSWY9XCJmaWVsZHMuZGlzcGxheU5hbWVcIj57eyBmaWVsZHMuZGlzcGxheU5hbWUgfX08L2xhYmVsPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIHt7c2hvd1ZhbHVlfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG59Il19
|
|
@@ -191,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
191
191
|
type: ViewChild,
|
|
192
192
|
args: ['tableSelectModalSubmit', { static: false }]
|
|
193
193
|
}] } });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL3RhYmxlL3RhYmxlLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS90YWJsZS90YWJsZS1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOENBQThDO0FBQzlDLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFHLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQWEsV0FBVyxFQUFHLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7OztBQU0xRCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQ1UsRUFBZSxFQUNmLDhCQUE2RCxFQUM3RCxrQkFBcUMsRUFDckMsZUFBZ0M7UUFIaEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBK0I7UUFDN0QsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUF5QjFDLFdBQVc7UUFDWCx1QkFB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Q0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDN0MsQ0FBQzs4R0FsTVUsb0JBQW9CO2tHQUFwQixvQkFBb0Isc1dDYmpDLGtoS0FrRlk7OzJGRHJFQyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzBMQWNoQixNQUFNO3NCQURoQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBb0JLLElBQUk7c0JBRGQsS0FBSztnQkFXc0MsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXVGYyxzQkFBc0I7c0JBQTdFLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvciAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRhYmxlQ29uZmlnLCBUYWJsZUZvcm1Db250cm9sIH0gZnJvbSAnLi90YWJsZS1jb25maWcnO1xuaW1wb3J0IHsgS2V5c0NvbnZlcnRUb0xvd2VyY2FzZVNlcnZpY2UsIEZpZWxkc0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBUb1BpbnlpblNlcnZpY2UgfSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZi10YWJsZS1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY29uZmlnLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29uZmlnQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBfS2V5c0NvbnZlcnRUb0xvd2VyY2FzZVNlcnZpY2U6IEtleXNDb252ZXJ0VG9Mb3dlcmNhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgX0ZpZWxkc0RhdGFTZXJ2aWNlOiBGaWVsZHNEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHRvUGlueWluU2VydmljZTogVG9QaW55aW5TZXJ2aWNlLFxuICApIHt9XG4gIC8qKuihqOWNleWunuS9kyAqL1xuICBfRW50aXR5OiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgRW50aXR5KHY6IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuX0VudGl0eSA9IHY7XG4gICAgdGhpcy5kYXRhTG9hZGVkKCk7XG4gIH1cbiAgLyoq6YCJ5oup55qE6KGo5Y2V5L+h5oGvICovXG4gIF9zZWxlY3RlZDogYW55O1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHY6IGFueSkge1xuICAgIGlmICh2KSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB2LmZvcm1Db25maWd1cmF0aW9uKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYuZm9ybUNvbmZpZ3VyYXRpb25ba2V5XSkpIHtcbiAgICAgICAgICB2LmZvcm1Db25maWd1cmF0aW9uW2tleV0gPSB0aGlzLl9LZXlzQ29udmVydFRvTG93ZXJjYXNlU2VydmljZS5nZXQoXG4gICAgICAgICAgICB2LmZvcm1Db25maWd1cmF0aW9uW2tleV0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2O1xuICAgICAgdGhpcy5kYXRhTG9hZGVkKCk7XG4gICAgfVxuICB9XG4gIC8qKuihqOWNleaOp+S7tue7hCAqL1xuICBfZmllbGRDb250cm9sR3JvdXA6IGFueSA9IFtdO1xuXG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xuICBfdHlwZTogYW55O1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHR5cGUodjogYW55KSB7XG4gICAgdGhpcy5fdHlwZSA9IHY7XG4gICAgdGhpcy5kYXRhTG9hZGVkKCk7XG4gIH1cbiAgZ2V0IGZvcm1Db25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9FbnRpdHk/LmdldCgnZm9ybUNvbmZpZ3VyYXRpb24nKSBhcyBGb3JtR3JvdXA7XG4gIH1cbiAgZ2V0IFRhYmxlQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlndXJhdGlvbi5jb250cm9sc1snVGFibGVDb2x1bW5zJ10gYXMgRm9ybUFycmF5O1xuICB9XG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBhc3luYyBkYXRhTG9hZGVkKCkge1xuICAgIGlmICh0aGlzLl9FbnRpdHkgJiYgdGhpcy5fdHlwZSkge1xuICAgICAgYXdhaXQgdGhpcy5BZnRlckluaXQoKTtcbiAgICB9XG4gIH1cbiAgLyoq5aKe5Yqg6YCJ6aG5ICovXG4gIGFkZFRhYmxlQ29sdW1ucygpIHtcbiAgICB0aGlzLlRhYmxlQ29sdW1ucy5wdXNoKFxuICAgICAgdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIC4uLm5ldyBUYWJsZUZvcm1Db250cm9sKCksXG4gICAgICAgIGZvcm1Db25maWd1cmF0aW9uOiBbe31dLFxuICAgICAgfSksXG4gICAgKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IC8vIOaJi+WKqOinpuWPkeWPmOabtOajgOa1i1xuICB9XG4gIC8qKuWIoOmZpOafkOS4qumAiemhuSAqL1xuICBkZWxldGVUYWJsZUNvbHVtbnMoaW5kZXgpIHtcbiAgICB0aGlzLlRhYmxlQ29sdW1ucy5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBhc3luYyBBZnRlckluaXQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIHJlc29sdmUgPT4ge1xuICAgICAgdGhpcy5fRW50aXR5Py5zZXRDb250cm9sKCdmb3JtQ29uZmlndXJhdGlvbicsIHRoaXMuZmIuZ3JvdXAobmV3IFRhYmxlQ29uZmlnKCkpKTtcbiAgICAgIC8vIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24uYWRkVmFsaWRhdG9ycyhbdGhpcy52YWxpZGF0ZVRhYmxlQ29sdW1uc10pO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyDmiYvliqjop6blj5Hlj5jmm7Tmo4DmtYtcbiAgICAgIHRoaXMuc3VibWl0Y2xpY2s/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XG4gICAgICB0aGlzLl9maWVsZENvbnRyb2xHcm91cCA9IGF3YWl0IHRoaXMuX0ZpZWxkc0RhdGFTZXJ2aWNlLmdldENvbnRyb2xzZmllbGRUeXBlcygpO1xuICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkICYmIHRoaXMuX3NlbGVjdGVkLmZvcm1Db250cm9sTmFtZSA9PSB0aGlzLl90eXBlKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkLmZvcm1Db25maWd1cmF0aW9uWydUYWJsZUNvbHVtbnMnXS5mb3JFYWNoKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFkZFRhYmxlQ29sdW1ucygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtQ29uZmlndXJhdGlvbi5wYXRjaFZhbHVlKHRoaXMuX3NlbGVjdGVkLmZvcm1Db25maWd1cmF0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWRkVGFibGVDb2x1bW5zKCk7XG4gICAgICB9XG4gICAgICB0aGlzLlRhYmxlQ29sdW1ucy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlPT57XG4gICAgICAgIGNvbnNvbGUubG9nKHZhbHVlLCd2YWx1ZScpO1xuICAgICAgfSlcblxuICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICog6Ieq5a6a5LmJ6aqM6K+B5Ye95pWwXG4gICAqIEBwYXJhbSBmb3JtQXJyYXkg6KaB6aqM6K+B55qEIEZvcm1BcnJheVxuICAgKiBAcmV0dXJucyDpqozor4Hnu5PmnpzvvIzlpoLmnpzmiYDmnInpobnpg73pgJrov4fpqozor4HliJnov5Tlm54gbnVsbO+8jOWQpuWImei/lOWbniB7IGludmFsaWRBcnJheTogdHJ1ZSB9XG4gICAqL1xuICB2YWxpZGF0ZVRhYmxlQ29sdW1ucyhmb3JtQXJyYXk6IEZvcm1BcnJheSkge1xuICAgIC8vIGNvbnNvbGUubG9nKGZvcm1BcnJheSwn6Ieq5a6a5LmJ6aqM6K+B5Ye95pWwJyk7XG4gICAgaWYgKGZvcm1BcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IGludmFsaWRBcnJheTogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpdGVtRm9ybTogYW55O1xuXG4gIC8qKumAieaLqeihqOagvOeahOihqOWNleaOp+S7tiAqL1xuICBzZWxlY3RUYWJsZUNvbnRyb2woZXZlbnQsIGksIGl0ZW0pIHtcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnJykgcmV0dXJuO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWUsJ0N1cnJlbnRTZWxlY3Rpb25UYWJsZUNvbnRyb2xOYW1lJyk7XG4gICAgdGhpcy5DdXJyZW50U2VsZWN0aW9uVGFibGVDb250cm9sTmFtZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnRhYmxlU2VsZWN0T3BlbiA9IHRydWU7XG4gICAgdGhpcy50YWJsZVNlbGVjdEZvcm0gPSB0aGlzLmZiLmdyb3VwKG5ldyBUYWJsZUZvcm1Db250cm9sKCkpO1xuICAgIHRoaXMuVGFibGVDb2x1bW5zSW5kZXggPSBpO1xuICAgIHRoaXMuaXRlbUZvcm0gPSBpdGVtO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuVGFibGVDb2x1bW5zLCdUYWJsZUNvbHVtbnMnLHRoaXMuX3RhYmxlU2VsZWN0ZWQpO1xuICB9XG5cbiAgQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWU6IGFueTtcblxuICAvKirmraPlnKjliJvlu7rmiJbnvJbovpHnmoTooajmoLzpobnkuIvmoIcgKi9cbiAgVGFibGVDb2x1bW5zSW5kZXg6IGFueTtcbiAgLyoq5Yib5bu656uZ54K55qih5oCB5qGG54q25oCBICovXG4gIHRhYmxlU2VsZWN0T3BlbjogYm9vbGVhbiB8IGFueSA9IGZhbHNlO1xuXG4gIC8qKueUqOS6juehruWumuaooeaAgeeahOe5geW/meeKtuaAgeaYr+WQpuS4uuecnyAqL1xuICBtb2RhbEJ1c3k6IGJvb2xlYW4gfCBhbnkgPSBmYWxzZTtcbiAgLyoq5Yib5bu656uZ54K56KGo5Y2VICovXG4gIHRhYmxlU2VsZWN0Rm9ybTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuXG4gIC8qKuihqOagvOW3sumAieaLqeaVsOaNriAqL1xuICBfdGFibGVTZWxlY3RlZDogYW55O1xuXG4gIC8qKuihqOWNleaOp+S7tuaooeadvy3liqjmgIHotYvlgLzooajljZXmjqfku7YgKi9cbiAgQFZpZXdDaGlsZCgndGFibGVTZWxlY3RNb2RhbFN1Ym1pdCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJsZVNlbGVjdE1vZGFsU3VibWl0OiBFbGVtZW50UmVmO1xuXG4gIC8qKuWIm+W7uuermeeCueaooeaAgeahhueKtuaAgeaUueWPmCAqL1xuICB0YWJsZVNlbGVjdFZpc2libGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgXG5cbiAgICAgIHRoaXMuX3RhYmxlU2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnRhYmxlU2VsZWN0Rm9ybSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLlRhYmxlQ29sdW1uc0luZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICAvKirooajljZXkv53lrZjmj5DkuqQgKi9cbiAgY3JlYXRlT3JFZGl0U2F2ZSgpIHtcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLlRhYmxlQ29sdW1ucy5hdCh0aGlzLlRhYmxlQ29sdW1uc0luZGV4KSBhcyBGb3JtR3JvdXA7XG4gICAgY29uc3QgZm9ybUNvbmZpZ3VyYXRpb25ncm91cCA9IGZvcm1Hcm91cC5nZXQoJ2Zvcm1Db25maWd1cmF0aW9uJykgYXMgRm9ybUdyb3VwO1xuXG4gICAgZm9ybUNvbmZpZ3VyYXRpb25ncm91cC5zZXRWYWx1ZSh7XG4gICAgICAuLi50aGlzLnRhYmxlU2VsZWN0Rm9ybT8udmFsdWVbJ2Zvcm1Db25maWd1cmF0aW9uJ10sXG4gICAgfSk7XG4gICAgdGhpcy50YWJsZVNlbGVjdE9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIC8qKue8lui+keermeeCueaMiemSriAqL1xuICBFZGl0U2l0ZXNCdG4ocm93cywgaSkge1xuICAgIHRoaXMuQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWUgPSByb3dzLmdldCgnZm9ybUNvbnRyb2xOYW1lJykudmFsdWU7XG4gICAgdGhpcy50YWJsZVNlbGVjdEZvcm0gPSB0aGlzLmZiLmdyb3VwKG5ldyBUYWJsZUZvcm1Db250cm9sKCkpO1xuICAgIHRoaXMudGFibGVTZWxlY3RGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgLi4ucm93cy52YWx1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnRhYmxlU2VsZWN0Rm9ybS5nZXQoJ2Zvcm1Db25maWd1cmF0aW9uJyk/LnBhdGNoVmFsdWUoe1xuICAgICAgLi4ucm93cy52YWx1ZVsnZm9ybUNvbmZpZ3VyYXRpb24nXSxcbiAgICB9KTtcbiAgICB0aGlzLl90YWJsZVNlbGVjdGVkID0gcm93cy52YWx1ZTtcbiAgICB0aGlzLlRhYmxlQ29sdW1uc0luZGV4ID0gaTtcbiAgICB0aGlzLnRhYmxlU2VsZWN0T3BlbiA9IHRydWU7XG4gIH1cblxuICAvLyAvKirosIPmlbTooajmoLzkvY3nva4gKi9cbiAgLy8gVGFibGVBcnJvd1VwT3JEb3duKHR5cGUsIGluZGV4KSB7XG4gIC8vICAgY29uc3QgY29udHJvbEF0ID0gdGhpcy5UYWJsZUNvbHVtbnMuYXQoaW5kZXgpXG4gIC8vICAgdGhpcy5UYWJsZUNvbHVtbnMucmVtb3ZlQXQoaW5kZXgpXG4gIC8vICAgY29uc3QgbGFzdGluZGV4ID0gdHlwZSA9PSAndXAnID8gaW5kZXggLSAxIDogaW5kZXggKyAxXG4gIC8vICAgdGhpcy5UYWJsZUNvbHVtbnMuaW5zZXJ0KGxhc3RpbmRleCwgY29udHJvbEF0KVxuICAvLyB9XG5cbiAgLyoq5a2X5q615qCH562+aW5wdXTlpLHljrvmoIfngrnnlJ/miJDlrZfmrrXlkI3lrZcgKi9cbiAgZGlzUGxheU5hbWVJbnB1dEJsdXIoZXZlbnQsIGl0ZW0pIHtcbiAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICBjb25zdCBwaW55aW4gPSB0aGlzLnRvUGlueWluU2VydmljZS5nZXQodmFsdWUpO1xuICAgIGNvbnN0IG5hbWVJbnB1dCA9IGl0ZW0uZ2V0KCduYW1lJyk7XG4gICAgaWYgKG5hbWVJbnB1dC52YWx1ZSkgcmV0dXJuO1xuICAgIG5hbWVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbik7XG4gIH1cbiAgLyoq6LCD5pW06KGo5qC85L2N572uICovXG4gIGRyb3AoZXZlbnQ6IGFueSkge1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLlRhYmxlQ29sdW1ucy5jb250cm9scywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLlRhYmxlQ29sdW1ucy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiX0VudGl0eVwiPlxuICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImZvcm1Db25maWd1cmF0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snQWJwRHluYW1pY0Zvcm06OlNlbGVjdExpc3RJdGVtJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGRyYWctdGFibGVcIiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0Ntczo6VGFibGVDb2x1bW5EaXNwbGF5TmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydDbXM6OlRhYmxlQ29sdW1uTmFtZScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydDbXM6OlRhYmxlQ29sdW1uRm9ybScgfCBhYnBMb2NhbGl6YXRpb259fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cImZsZXgtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljay5zdG9wKT1cImFkZFRhYmxlQ29sdW1ucygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keSBmb3JtQXJyYXlOYW1lPVwiVGFibGVDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgVGFibGVDb2x1bW5zLmNvbnRyb2xzO2xldCBpPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiICBjZGtEcmFnIGNka0RyYWdMb2NrQXhpcz1cInlcIiBbY2RrRHJhZ0RhdGFdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyYWctaGFuZGxlXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmkgYmktYXJyb3dzLW1vdmUgZnMtNVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TmFtZVwiIHJlcXVpcmVkIChibHVyKT1cImRpc1BsYXlOYW1lSW5wdXRCbHVyKCRldmVudCxpdGVtKVwiID48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiByZXF1aXJlZD48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZm9ybUNvbnRyb2xOYW1lXCIgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0VGFibGVDb250cm9sKCRldmVudCxpLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e3snQ21zOjpTZWxlY3RGb3JtQ29udHJvbCcgfCBhYnBMb2NhbGl6YXRpb259fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbV9mIG9mIF9maWVsZENvbnRyb2xHcm91cDtsZXQgaV9mID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW1fZi5uYW1lXCI+e3tpdGVtX2YuZGlzcGxheU5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHNjb3BlPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gXCIgdHlwZT1cImJ1dHRvblwiIChjbGljay5zdG9wKT1cIkVkaXRTaXRlc0J0bihpdGVtLGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZWRpdFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1zLTFcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrLnN0b3ApPVwiZGVsZXRlVGFibGVDb2x1bW5zKGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbWludXNcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIlxuICAgICAgICAgICAgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuXG5cbjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJ0YWJsZVNlbGVjdE9wZW5cIiBbYnVzeV09XCJtb2RhbEJ1c3lcIiAodmlzaWJsZUNoYW5nZSk9XCJ0YWJsZVNlbGVjdFZpc2libGVDaGFuZ2UoJGV2ZW50KVwiIFtvcHRpb25zXT1cInsgc2l6ZTogQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWU9PT0nTWF0cml4Jz8neGwnOicnICxzY3JvbGxhYmxlOmZhbHNlIH1cIj5cbiAgICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cbiAgICAgICAgPGgzPnt7X3RhYmxlU2VsZWN0ZWQ/KCdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24pOignQ21zOjpOZXcnIHwgYWJwTG9jYWxpemF0aW9uKX19PC9oMz5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXJSZWY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImZhIGZhLXB1bHNlIGZhLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZVNlbGVjdEZvcm07IGVsc2UgbG9hZGVyUmVmXCI+XG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cInNpdGVzLW1vZGFsLWZvcm1cIiAjbXlGb3JtPVwibmdGb3JtXCIgW2Zvcm1Hcm91cF09XCJ0YWJsZVNlbGVjdEZvcm1cIlxuICAgICAgICAgICAgICAgICAoc3VibWl0KT1cImNyZWF0ZU9yRWRpdFNhdmUoKVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiICN0YWJsZVNlbGVjdE1vZGFsU3VibWl0IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJDdXJyZW50U2VsZWN0aW9uVGFibGVDb250cm9sTmFtZSYmdGFibGVTZWxlY3RGb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkZi1keW5hbWljLWNvbmZpZyBbdHlwZV09XCJDdXJyZW50U2VsZWN0aW9uVGFibGVDb250cm9sTmFtZVwiIFxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiX3RhYmxlU2VsZWN0ZWRcIiBbZm9ybUdyb3VwXT1cInRhYmxlU2VsZWN0Rm9ybVwiIFtmb3JtXT1cInRhYmxlU2VsZWN0Rm9ybVwiPjwvZGYtZHluYW1pYy1jb25maWc+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT57eydBYnBVaTo6Q2xvc2UnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRhYmxlU2VsZWN0TW9kYWxTdWJtaXQubmF0aXZlRWxlbWVudC5jbGljaygpXCI+e3snQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2FicC1idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvYWJwLW1vZGFsPiJdfQ==
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL3RhYmxlL3RhYmxlLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS90YWJsZS90YWJsZS1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOENBQThDO0FBQzlDLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFHLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQWEsV0FBVyxFQUFHLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7OztBQU0xRCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQ1UsRUFBZSxFQUNmLDhCQUE2RCxFQUM3RCxrQkFBcUMsRUFDckMsZUFBZ0M7UUFIaEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBK0I7UUFDN0QsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUF5QjFDLFdBQVc7UUFDWCx1QkFB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Q0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyRixJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDN0MsQ0FBQzs4R0FqTVUsb0JBQW9CO2tHQUFwQixvQkFBb0Isc1dDYmpDLGtoS0FrRlk7OzJGRHJFQyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCOzBMQWNoQixNQUFNO3NCQURoQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBb0JLLElBQUk7c0JBRGQsS0FBSztnQkFXc0MsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXNGYyxzQkFBc0I7c0JBQTdFLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXN5bmMtcHJvbWlzZS1leGVjdXRvciAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRhYmxlQ29uZmlnLCBUYWJsZUZvcm1Db250cm9sIH0gZnJvbSAnLi90YWJsZS1jb25maWcnO1xuaW1wb3J0IHsgS2V5c0NvbnZlcnRUb0xvd2VyY2FzZVNlcnZpY2UsIEZpZWxkc0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBUb1BpbnlpblNlcnZpY2UgfSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZi10YWJsZS1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY29uZmlnLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29uZmlnQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBfS2V5c0NvbnZlcnRUb0xvd2VyY2FzZVNlcnZpY2U6IEtleXNDb252ZXJ0VG9Mb3dlcmNhc2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgX0ZpZWxkc0RhdGFTZXJ2aWNlOiBGaWVsZHNEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHRvUGlueWluU2VydmljZTogVG9QaW55aW5TZXJ2aWNlLFxuICApIHt9XG4gIC8qKuihqOWNleWunuS9kyAqL1xuICBfRW50aXR5OiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgRW50aXR5KHY6IEZvcm1Hcm91cCkge1xuICAgIHRoaXMuX0VudGl0eSA9IHY7XG4gICAgdGhpcy5kYXRhTG9hZGVkKCk7XG4gIH1cbiAgLyoq6YCJ5oup55qE6KGo5Y2V5L+h5oGvICovXG4gIF9zZWxlY3RlZDogYW55O1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkKHY6IGFueSkge1xuICAgIGlmICh2KSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB2LmZvcm1Db25maWd1cmF0aW9uKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYuZm9ybUNvbmZpZ3VyYXRpb25ba2V5XSkpIHtcbiAgICAgICAgICB2LmZvcm1Db25maWd1cmF0aW9uW2tleV0gPSB0aGlzLl9LZXlzQ29udmVydFRvTG93ZXJjYXNlU2VydmljZS5nZXQoXG4gICAgICAgICAgICB2LmZvcm1Db25maWd1cmF0aW9uW2tleV0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2O1xuICAgICAgdGhpcy5kYXRhTG9hZGVkKCk7XG4gICAgfVxuICB9XG4gIC8qKuihqOWNleaOp+S7tue7hCAqL1xuICBfZmllbGRDb250cm9sR3JvdXA6IGFueSA9IFtdO1xuXG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xuICBfdHlwZTogYW55O1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHR5cGUodjogYW55KSB7XG4gICAgdGhpcy5fdHlwZSA9IHY7XG4gICAgdGhpcy5kYXRhTG9hZGVkKCk7XG4gIH1cbiAgZ2V0IGZvcm1Db25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9FbnRpdHk/LmdldCgnZm9ybUNvbmZpZ3VyYXRpb24nKSBhcyBGb3JtR3JvdXA7XG4gIH1cbiAgZ2V0IFRhYmxlQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29uZmlndXJhdGlvbi5jb250cm9sc1snVGFibGVDb2x1bW5zJ10gYXMgRm9ybUFycmF5O1xuICB9XG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBhc3luYyBkYXRhTG9hZGVkKCkge1xuICAgIGlmICh0aGlzLl9FbnRpdHkgJiYgdGhpcy5fdHlwZSkge1xuICAgICAgYXdhaXQgdGhpcy5BZnRlckluaXQoKTtcbiAgICB9XG4gIH1cbiAgLyoq5aKe5Yqg6YCJ6aG5ICovXG4gIGFkZFRhYmxlQ29sdW1ucygpIHtcbiAgICB0aGlzLlRhYmxlQ29sdW1ucy5wdXNoKFxuICAgICAgdGhpcy5mYi5ncm91cCh7XG4gICAgICAgIC4uLm5ldyBUYWJsZUZvcm1Db250cm9sKCksXG4gICAgICAgIGZvcm1Db25maWd1cmF0aW9uOiBbe31dLFxuICAgICAgfSksXG4gICAgKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IC8vIOaJi+WKqOinpuWPkeWPmOabtOajgOa1i1xuICB9XG4gIC8qKuWIoOmZpOafkOS4qumAiemhuSAqL1xuICBkZWxldGVUYWJsZUNvbHVtbnMoaW5kZXgpIHtcbiAgICB0aGlzLlRhYmxlQ29sdW1ucy5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBhc3luYyBBZnRlckluaXQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIHJlc29sdmUgPT4ge1xuICAgICAgdGhpcy5fRW50aXR5Py5zZXRDb250cm9sKCdmb3JtQ29uZmlndXJhdGlvbicsIHRoaXMuZmIuZ3JvdXAobmV3IFRhYmxlQ29uZmlnKCkpKTtcbiAgICAgIC8vIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24uYWRkVmFsaWRhdG9ycyhbdGhpcy52YWxpZGF0ZVRhYmxlQ29sdW1uc10pO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyAvLyDmiYvliqjop6blj5Hlj5jmm7Tmo4DmtYtcbiAgICAgIHRoaXMuc3VibWl0Y2xpY2s/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKCk7XG4gICAgICB0aGlzLl9maWVsZENvbnRyb2xHcm91cCA9IGF3YWl0IHRoaXMuX0ZpZWxkc0RhdGFTZXJ2aWNlLmdldENvbnRyb2xzZmllbGRUeXBlcygpO1xuICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkICYmIHRoaXMuX3NlbGVjdGVkLmZvcm1Db250cm9sTmFtZSA9PSB0aGlzLl90eXBlKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkLmZvcm1Db25maWd1cmF0aW9uWydUYWJsZUNvbHVtbnMnXS5mb3JFYWNoKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFkZFRhYmxlQ29sdW1ucygpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtQ29uZmlndXJhdGlvbi5wYXRjaFZhbHVlKHRoaXMuX3NlbGVjdGVkLmZvcm1Db25maWd1cmF0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWRkVGFibGVDb2x1bW5zKCk7XG4gICAgICB9XG4gICAgICB0aGlzLlRhYmxlQ29sdW1ucy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbHVlPT57XG4gICAgICAgIGNvbnNvbGUubG9nKHZhbHVlLCd2YWx1ZScpO1xuICAgICAgfSlcblxuICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICog6Ieq5a6a5LmJ6aqM6K+B5Ye95pWwXG4gICAqIEBwYXJhbSBmb3JtQXJyYXkg6KaB6aqM6K+B55qEIEZvcm1BcnJheVxuICAgKiBAcmV0dXJucyDpqozor4Hnu5PmnpzvvIzlpoLmnpzmiYDmnInpobnpg73pgJrov4fpqozor4HliJnov5Tlm54gbnVsbO+8jOWQpuWImei/lOWbniB7IGludmFsaWRBcnJheTogdHJ1ZSB9XG4gICAqL1xuICB2YWxpZGF0ZVRhYmxlQ29sdW1ucyhmb3JtQXJyYXk6IEZvcm1BcnJheSkge1xuICAgIC8vIGNvbnNvbGUubG9nKGZvcm1BcnJheSwn6Ieq5a6a5LmJ6aqM6K+B5Ye95pWwJyk7XG4gICAgaWYgKGZvcm1BcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IGludmFsaWRBcnJheTogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpdGVtRm9ybTogYW55O1xuXG4gIC8qKumAieaLqeihqOagvOeahOihqOWNleaOp+S7tiAqL1xuICBzZWxlY3RUYWJsZUNvbnRyb2woZXZlbnQsIGksIGl0ZW0pIHtcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09PSAnJykgcmV0dXJuO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWUsJ0N1cnJlbnRTZWxlY3Rpb25UYWJsZUNvbnRyb2xOYW1lJyk7XG4gICAgdGhpcy5DdXJyZW50U2VsZWN0aW9uVGFibGVDb250cm9sTmFtZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLnRhYmxlU2VsZWN0T3BlbiA9IHRydWU7XG4gICAgdGhpcy50YWJsZVNlbGVjdEZvcm0gPSB0aGlzLmZiLmdyb3VwKG5ldyBUYWJsZUZvcm1Db250cm9sKCkpO1xuICAgIHRoaXMuVGFibGVDb2x1bW5zSW5kZXggPSBpO1xuICAgIHRoaXMuaXRlbUZvcm0gPSBpdGVtO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuVGFibGVDb2x1bW5zLCdUYWJsZUNvbHVtbnMnLHRoaXMuX3RhYmxlU2VsZWN0ZWQpO1xuICB9XG5cbiAgQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWU6IGFueTtcblxuICAvKirmraPlnKjliJvlu7rmiJbnvJbovpHnmoTooajmoLzpobnkuIvmoIcgKi9cbiAgVGFibGVDb2x1bW5zSW5kZXg6IGFueTtcbiAgLyoq5Yib5bu656uZ54K55qih5oCB5qGG54q25oCBICovXG4gIHRhYmxlU2VsZWN0T3BlbjogYm9vbGVhbiB8IGFueSA9IGZhbHNlO1xuXG4gIC8qKueUqOS6juehruWumuaooeaAgeeahOe5geW/meeKtuaAgeaYr+WQpuS4uuecnyAqL1xuICBtb2RhbEJ1c3k6IGJvb2xlYW4gfCBhbnkgPSBmYWxzZTtcbiAgLyoq5Yib5bu656uZ54K56KGo5Y2VICovXG4gIHRhYmxlU2VsZWN0Rm9ybTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuICAvKirooajmoLzlt7LpgInmi6nmlbDmja4gKi9cbiAgX3RhYmxlU2VsZWN0ZWQ6IGFueTtcblxuICAvKirooajljZXmjqfku7bmqKHmnb8t5Yqo5oCB6LWL5YC86KGo5Y2V5o6n5Lu2ICovXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlU2VsZWN0TW9kYWxTdWJtaXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGFibGVTZWxlY3RNb2RhbFN1Ym1pdDogRWxlbWVudFJlZjtcblxuICAvKirliJvlu7rnq5nngrnmqKHmgIHmoYbnirbmgIHmlLnlj5ggKi9cbiAgdGFibGVTZWxlY3RWaXNpYmxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgXG4gICAgaWYgKCFldmVudCkge1xuICAgIFxuXG4gICAgICB0aGlzLl90YWJsZVNlbGVjdGVkID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy50YWJsZVNlbGVjdEZvcm0gPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLkN1cnJlbnRTZWxlY3Rpb25UYWJsZUNvbnRyb2xOYW1lID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5UYWJsZUNvbHVtbnNJbmRleCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgLyoq6KGo5Y2V5L+d5a2Y5o+Q5LqkICovXG4gIGNyZWF0ZU9yRWRpdFNhdmUoKSB7XG4gICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5UYWJsZUNvbHVtbnMuYXQodGhpcy5UYWJsZUNvbHVtbnNJbmRleCkgYXMgRm9ybUdyb3VwO1xuICAgIGNvbnN0IGZvcm1Db25maWd1cmF0aW9uZ3JvdXAgPSBmb3JtR3JvdXAuZ2V0KCdmb3JtQ29uZmlndXJhdGlvbicpIGFzIEZvcm1Hcm91cDtcblxuICAgIGZvcm1Db25maWd1cmF0aW9uZ3JvdXAuc2V0VmFsdWUoe1xuICAgICAgLi4udGhpcy50YWJsZVNlbGVjdEZvcm0/LnZhbHVlWydmb3JtQ29uZmlndXJhdGlvbiddLFxuICAgIH0pO1xuICAgIHRoaXMudGFibGVTZWxlY3RPcGVuID0gZmFsc2U7XG4gIH1cblxuICAvKirnvJbovpHnq5nngrnmjInpkq4gKi9cbiAgRWRpdFNpdGVzQnRuKHJvd3MsIGkpIHtcbiAgICB0aGlzLkN1cnJlbnRTZWxlY3Rpb25UYWJsZUNvbnRyb2xOYW1lID0gcm93cy5nZXQoJ2Zvcm1Db250cm9sTmFtZScpLnZhbHVlO1xuICAgIHRoaXMudGFibGVTZWxlY3RGb3JtID0gdGhpcy5mYi5ncm91cChuZXcgVGFibGVGb3JtQ29udHJvbCgpKTtcbiAgICB0aGlzLnRhYmxlU2VsZWN0Rm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIC4uLnJvd3MudmFsdWUsXG4gICAgfSk7XG4gICAgdGhpcy50YWJsZVNlbGVjdEZvcm0uZ2V0KCdmb3JtQ29uZmlndXJhdGlvbicpPy5wYXRjaFZhbHVlKHtcbiAgICAgIC4uLnJvd3MudmFsdWVbJ2Zvcm1Db25maWd1cmF0aW9uJ10sXG4gICAgfSk7XG4gICAgdGhpcy5fdGFibGVTZWxlY3RlZCA9IHJvd3MudmFsdWU7XG4gICAgdGhpcy5UYWJsZUNvbHVtbnNJbmRleCA9IGk7XG4gICAgdGhpcy50YWJsZVNlbGVjdE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgLy8gLyoq6LCD5pW06KGo5qC85L2N572uICovXG4gIC8vIFRhYmxlQXJyb3dVcE9yRG93bih0eXBlLCBpbmRleCkge1xuICAvLyAgIGNvbnN0IGNvbnRyb2xBdCA9IHRoaXMuVGFibGVDb2x1bW5zLmF0KGluZGV4KVxuICAvLyAgIHRoaXMuVGFibGVDb2x1bW5zLnJlbW92ZUF0KGluZGV4KVxuICAvLyAgIGNvbnN0IGxhc3RpbmRleCA9IHR5cGUgPT0gJ3VwJyA/IGluZGV4IC0gMSA6IGluZGV4ICsgMVxuICAvLyAgIHRoaXMuVGFibGVDb2x1bW5zLmluc2VydChsYXN0aW5kZXgsIGNvbnRyb2xBdClcbiAgLy8gfVxuXG4gIC8qKuWtl+auteagh+etvmlucHV05aSx5Y675qCH54K555Sf5oiQ5a2X5q615ZCN5a2XICovXG4gIGRpc1BsYXlOYW1lSW5wdXRCbHVyKGV2ZW50LCBpdGVtKSB7XG4gICAgY29uc3QgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgY29uc3QgcGlueWluID0gdGhpcy50b1BpbnlpblNlcnZpY2UuZ2V0KHZhbHVlKTtcbiAgICBjb25zdCBuYW1lSW5wdXQgPSBpdGVtLmdldCgnbmFtZScpO1xuICAgIGlmIChuYW1lSW5wdXQudmFsdWUpIHJldHVybjtcbiAgICBuYW1lSW5wdXQucGF0Y2hWYWx1ZShwaW55aW4pO1xuICB9XG4gIC8qKuiwg+aVtOihqOagvOS9jee9riAqL1xuICBkcm9wKGV2ZW50OiBhbnkpIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5UYWJsZUNvbHVtbnMuY29udHJvbHMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgdGhpcy5UYWJsZUNvbHVtbnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cIl9FbnRpdHlcIj5cbiAgICA8ZGl2IGZvcm1Hcm91cE5hbWU9XCJmb3JtQ29uZmlndXJhdGlvblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPnt7J0FicER5bmFtaWNGb3JtOjpTZWxlY3RMaXN0SXRlbScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBkcmFnLXRhYmxlXCIgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPjwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydDbXM6OlRhYmxlQ29sdW1uRGlzcGxheU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snQ21zOjpUYWJsZUNvbHVtbk5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snQ21zOjpUYWJsZUNvbHVtbkZvcm0nIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJmbGV4LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2suc3RvcCk9XCJhZGRUYWJsZUNvbHVtbnMoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4gICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHkgZm9ybUFycmF5TmFtZT1cIlRhYmxlQ29sdW1uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIFRhYmxlQ29sdW1ucy5jb250cm9scztsZXQgaT1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFtmb3JtR3JvdXBOYW1lXT1cImlcIiAgY2RrRHJhZyBjZGtEcmFnTG9ja0F4aXM9XCJ5XCIgW2Nka0RyYWdEYXRhXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcmFnLWhhbmRsZVwiIGNka0RyYWdIYW5kbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJpIGJpLWFycm93cy1tb3ZlIGZzLTVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiZGlzcGxheU5hbWVcIiByZXF1aXJlZCAoYmx1cik9XCJkaXNQbGF5TmFtZUlucHV0Qmx1cigkZXZlbnQsaXRlbSlcIiA+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgcmVxdWlyZWQ+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImZvcm1Db250cm9sTmFtZVwiIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdFRhYmxlQ29udHJvbCgkZXZlbnQsaSxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPnt7J0Ntczo6U2VsZWN0Rm9ybUNvbnRyb2wnIHwgYWJwTG9jYWxpemF0aW9ufX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW1fZiBvZiBfZmllbGRDb250cm9sR3JvdXA7bGV0IGlfZiA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJpdGVtX2YubmFtZVwiPnt7aXRlbV9mLmRpc3BsYXlOYW1lfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2suc3RvcCk9XCJFZGl0U2l0ZXNCdG4oaXRlbSxpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWVkaXRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBtcy0xXCIgdHlwZT1cImJ1dHRvblwiIChjbGljay5zdG9wKT1cImRlbGV0ZVRhYmxlQ29sdW1ucyhpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiICBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCJcbiAgICAgICAgICAgICNzdWJtaXRjbGljaz48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cblxuXG48YWJwLW1vZGFsIFsodmlzaWJsZSldPVwidGFibGVTZWxlY3RPcGVuXCIgW2J1c3ldPVwibW9kYWxCdXN5XCIgKHZpc2libGVDaGFuZ2UpPVwidGFibGVTZWxlY3RWaXNpYmxlQ2hhbmdlKCRldmVudClcIiBbb3B0aW9uc109XCJ7IHNpemU6IEN1cnJlbnRTZWxlY3Rpb25UYWJsZUNvbnRyb2xOYW1lPT09J01hdHJpeCc/J3hsJzonJyAsc2Nyb2xsYWJsZTpmYWxzZSB9XCI+XG4gICAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XG4gICAgICAgIDxoMz57e190YWJsZVNlbGVjdGVkPygnQWJwVWk6OkVkaXQnIHwgYWJwTG9jYWxpemF0aW9uKTooJ0Ntczo6TmV3JyB8IGFicExvY2FsaXphdGlvbil9fTwvaDM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9hZGVyUmVmPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+PGkgY2xhc3M9XCJmYSBmYS1wdWxzZSBmYS1zcGlubmVyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPjwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVTZWxlY3RGb3JtOyBlbHNlIGxvYWRlclJlZlwiPlxuICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJzaXRlcy1tb2RhbC1mb3JtXCIgI215Rm9ybT1cIm5nRm9ybVwiIFtmb3JtR3JvdXBdPVwidGFibGVTZWxlY3RGb3JtXCJcbiAgICAgICAgICAgICAgICAgKHN1Ym1pdCk9XCJjcmVhdGVPckVkaXRTYXZlKClcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAjdGFibGVTZWxlY3RNb2RhbFN1Ym1pdCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWUmJnRhYmxlU2VsZWN0Rm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGYtZHluYW1pYy1jb25maWcgW3R5cGVdPVwiQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWVcIiBcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIl90YWJsZVNlbGVjdGVkXCIgW2Zvcm1Hcm91cF09XCJ0YWJsZVNlbGVjdEZvcm1cIiBbZm9ybV09XCJ0YWJsZVNlbGVjdEZvcm1cIj48L2RmLWR5bmFtaWMtY29uZmlnPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+e3snQWJwVWk6OkNsb3NlJyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG4gICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0YWJsZVNlbGVjdE1vZGFsU3VibWl0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKVwiPnt7J0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbn19PC9hYnAtYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2FicC1tb2RhbD4iXX0=
|
|
@@ -97,4 +97,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
97
97
|
providedIn: 'root'
|
|
98
98
|
}]
|
|
99
99
|
}], ctorParameters: () => [{ type: i1.FieldGroupAdminService }, { type: i2.FormAdminService }, { type: i1.FieldAdminService }] });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzLWRhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL3NlcnZpY2VzL2ZpZWxkcy1kYXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQW1ELGlCQUFpQixFQUFFLHNCQUFzQixFQUFvQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pMLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7O0FBSzVFLE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsWUFDVSxrQkFBeUMsRUFDekMsWUFBNkIsRUFDN0IsYUFBK0I7UUFGL0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF1QjtRQUN6QyxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBRXpDOztXQUVHO1FBQ0gsb0JBQWUsR0FBUyxFQUFFLENBQUM7UUFDM0I7O1dBRUc7UUFDSCwyQkFBc0IsR0FBUyxFQUFFLENBQUM7SUFSOUIsQ0FBQztJQVNMOztPQUVHO0lBQ0gsY0FBYyxDQUFDLE9BQU8sR0FBRyxLQUFLO1FBQzVCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUMsTUFBTSxFQUFDLEVBQUU7WUFDbkMsSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUUsT0FBTyxJQUFJLEtBQUssRUFBQyxDQUFDO2dCQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM5QixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQSxFQUFFO2dCQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsQ0FBQyxFQUFDLEdBQUUsRUFBRTtnQkFDSixNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDYixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUMsTUFBTSxFQUFDLEVBQUU7WUFFbkMsSUFBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQyxDQUFDO2dCQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQ3JDLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQSxFQUFFO2dCQUNuRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixDQUFDLEVBQUMsR0FBRSxFQUFFO2dCQUNKLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNiLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsVUFBVTtJQUNWLGdCQUFnQixDQUFDLEtBQW1DO1FBQ2xELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBQ0QsVUFBVTtJQUNWLGdCQUFnQixDQUFDLEVBQVMsRUFBQyxLQUFtQztRQUM1RCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxVQUFVO0lBQ1YsZ0JBQWdCLENBQUMsRUFBUztRQUN4QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFlBQVk7SUFDWixhQUFhLENBQUMsS0FBb0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsVUFBVTtJQUNWLFdBQVcsQ0FBQyxLQUFzQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxVQUFVO0lBQ1YsV0FBVyxDQUFDLEVBQVMsRUFBQyxLQUFzQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsWUFBWTtJQUNaLGNBQWMsQ0FBQyxFQUFTO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELFVBQVU7SUFDVixVQUFVLENBQUMsSUFBVztRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxVQUFVO0lBQ1YsV0FBVyxDQUFDLEVBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDOzhHQXhGVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzsyRkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDcmVhdGVGaWVsZElucHV0LCBDcmVhdGVPclVwZGF0ZUZpZWxkR3JvdXBJbnB1dCwgRmllbGRBZG1pblNlcnZpY2UsIEZpZWxkR3JvdXBBZG1pblNlcnZpY2UsIEdldEZpZWxkc0lucHV0LCBVcGRhdGVGaWVsZElucHV0IH0gZnJvbSAnLi4vcHJveHkvZGlnbml0ZS9jbXMvYWRtaW4vZmllbGRzJztcclxuaW1wb3J0IHsgRm9ybUFkbWluU2VydmljZSB9IGZyb20gJy4uL3Byb3h5L2RpZ25pdGUvY21zL2FkbWluL2R5bmFtaWMtZm9ybXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmllbGRzRGF0YVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2ZpZWxkR3JvdXBTZXJ2aWNlOkZpZWxkR3JvdXBBZG1pblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9mb3JtU2VydmljZTpGb3JtQWRtaW5TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZmllbGRTZXJ2aWNlOkZpZWxkQWRtaW5TZXJ2aWNlXHJcbiAgKSB7IH1cclxuICAvKipcclxuICAgKiDlrZfmrrXliIbnu4TliJfooahcclxuICAgKi9cclxuICBmaWVsZEdyb3Vwc0xpc3Q6YW55W10gPSBbXTtcclxuICAvKipcclxuICAgKiDlrZfmrrXmjqfku7bnsbvlnovliJfooahcclxuICAgKi9cclxuICBmaWVsZENvbnRyb2xzVHlwZXNMaXN0OmFueVtdID0gW107XHJcbiAgLyoqXHJcbiAgICog6I635Y+W5a2X5q615YiG57uEXHJcbiAgICovXHJcbiAgZ2V0ZmllbGRHcm91cHMobmV3TGlzdCA9IGZhbHNlKXtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpPT57XHJcbiAgICAgIGlmKHRoaXMuZmllbGRHcm91cHNMaXN0Lmxlbmd0aCA+IDAmJm5ld0xpc3QgPT0gZmFsc2Upe1xyXG4gICAgICAgIHJlc29sdmUodGhpcy5maWVsZEdyb3Vwc0xpc3QpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9maWVsZEdyb3VwU2VydmljZS5nZXRMaXN0KHt9KS5zdWJzY3JpYmUocmVzPT57XHJcbiAgICAgICAgdGhpcy5maWVsZEdyb3Vwc0xpc3QgPSByZXMuaXRlbXM7XHJcbiAgICAgICAgcmVzb2x2ZShyZXMuaXRlbXMpO1xyXG4gICAgICB9LCgpPT57XHJcbiAgICAgICAgcmVqZWN0KFtdKTtcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDojrflj5blrZfmrrXnsbvlnovliJfooahcclxuICAgKi9cclxuICBnZXRDb250cm9sc2ZpZWxkVHlwZXMoKTpQcm9taXNlPGFueVtdPntcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSxyZWplY3QpPT57XHJcbiAgICAgXHJcbiAgICAgIGlmKHRoaXMuZmllbGRDb250cm9sc1R5cGVzTGlzdC5sZW5ndGggPiAwKXtcclxuICAgICAgICByZXNvbHZlKHRoaXMuZmllbGRDb250cm9sc1R5cGVzTGlzdCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX2Zvcm1TZXJ2aWNlLmdldEZvcm1Db250cm9scyh7fSkuc3Vic2NyaWJlKHJlcz0+e1xyXG4gICAgICAgIHRoaXMuZmllbGRDb250cm9sc1R5cGVzTGlzdCA9IHJlcy5pdGVtcztcclxuICAgICAgICByZXNvbHZlKHJlcy5pdGVtcyk7XHJcbiAgICAgIH0sKCk9PntcclxuICAgICAgICByZWplY3QoW10pO1xyXG4gICAgICB9KVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKuWIm+W7uuWIhue7hCAqL1xyXG4gIGNyZWF0ZUZpZWxkR3JvdXAoaW5wdXQ6Q3JlYXRlT3JVcGRhdGVGaWVsZEdyb3VwSW5wdXQpe1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkR3JvdXBTZXJ2aWNlLmNyZWF0ZShpbnB1dCk7XHJcbiAgfVxyXG4gIC8qKue8lui+keWIhue7hCAqL1xyXG4gIHVwZGF0ZUZpZWxkR3JvdXAoaWQ6c3RyaW5nLGlucHV0OkNyZWF0ZU9yVXBkYXRlRmllbGRHcm91cElucHV0KXtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZEdyb3VwU2VydmljZS51cGRhdGUoaWQsaW5wdXQpO1xyXG4gIH1cclxuICAvKirliKDpmaTliIbnu4QgKi9cclxuICBkZWxldGVGaWVsZEdyb3VwKGlkOnN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRHcm91cFNlcnZpY2UuZGVsZXRlKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKuiOt+WPluWtl+auteWIl+ihqCAqL1xyXG4gIGdldEZpZWxkc0xpc3QoaW5wdXQ6R2V0RmllbGRzSW5wdXQpe1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkU2VydmljZS5nZXRMaXN0KGlucHV0KTtcclxuICB9XHJcbiAgLyoq5Yib5bu65a2X5q61ICovXHJcbiAgY3JlYXRlRmllbGQoaW5wdXQ6Q3JlYXRlRmllbGRJbnB1dCl7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRTZXJ2aWNlLmNyZWF0ZShpbnB1dCk7XHJcbiAgfVxyXG4gIC8qKue8lui+keWtl+autSAqL1xyXG4gIHVwZGF0ZUZpZWxkKGlkOnN0cmluZyxpbnB1dDpVcGRhdGVGaWVsZElucHV0KXtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZFNlcnZpY2UudXBkYXRlKGlkLGlucHV0KTtcclxuICB9XHJcbiAgLyoq6I635Y+W5a2X5q616K+m5oOFICovXHJcbiAgZ2V0RmllbGREZXRhaWwoaWQ6c3RyaW5nKXtcclxuICAgIHJldHVybiB0aGlzLl9maWVsZFNlcnZpY2UuZ2V0KGlkKTtcclxuICB9XHJcbiAgLyoq5a2X5q616aqM6K+BICovXHJcbiAgbmFtZUV4aXN0cyhuYW1lOnN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRTZXJ2aWNlLm5hbWVFeGlzdHMobmFtZSk7XHJcbiAgfVxyXG4gIC8qKuWIoOmZpOWtl+autSAqL1xyXG4gIGRlbGV0ZUZpZWxkKGlkOnN0cmluZyl7XHJcbiAgICByZXR1cm4gdGhpcy5fZmllbGRTZXJ2aWNlLmRlbGV0ZShpZCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
|
@@ -584,7 +584,6 @@ class EntriesComponent {
|
|
|
584
584
|
await this.getSectionLanguagesList();
|
|
585
585
|
this.filters.sorting = 'creationTime desc';
|
|
586
586
|
this.hookToQuery();
|
|
587
|
-
console.log(this.entryTypeList, 'entryTypeList', this.data.items);
|
|
588
587
|
}
|
|
589
588
|
/**切换板块 */
|
|
590
589
|
async sectionIdChange() {
|
|
@@ -1320,6 +1319,7 @@ class CreateComponent {
|
|
|
1320
1319
|
input.publishTime = new Date(new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000).toISOString();
|
|
1321
1320
|
this.formEntity.markAllAsTouched();
|
|
1322
1321
|
this.formValidation = true;
|
|
1322
|
+
// console.log(input,'提交',this.formEntity)
|
|
1323
1323
|
if (!this.formEntity.valid) {
|
|
1324
1324
|
for (const item of this.showEntryTypeInfo.fieldTabs) {
|
|
1325
1325
|
for (const el of item.fields) {
|
|
@@ -2182,7 +2182,6 @@ class EditFieldComponent {
|
|
|
2182
2182
|
}
|
|
2183
2183
|
/**提交表单 */
|
|
2184
2184
|
save() {
|
|
2185
|
-
console.log(this.formEntity.value, '提交表单', this.formEntity);
|
|
2186
2185
|
this.formValidation = true;
|
|
2187
2186
|
if (!this.formEntity.valid) {
|
|
2188
2187
|
this._DigniteValidatorsService.getErrorMessage({
|
|
@@ -2191,6 +2190,8 @@ class EditFieldComponent {
|
|
|
2191
2190
|
});
|
|
2192
2191
|
return;
|
|
2193
2192
|
}
|
|
2193
|
+
console.log(this.formEntity.value, '提交表单', this.formEntity);
|
|
2194
|
+
// return
|
|
2194
2195
|
if (this.isSubmitted)
|
|
2195
2196
|
return;
|
|
2196
2197
|
this.isSubmitted = true;
|
|
@@ -2679,6 +2680,11 @@ class CreateOrEditComponent {
|
|
|
2679
2680
|
submitclickBtn() {
|
|
2680
2681
|
this.submitclick.nativeElement.click();
|
|
2681
2682
|
}
|
|
2683
|
+
/**检查字段类型是否支持搜索 */
|
|
2684
|
+
getEnableSearchTypeList(field) {
|
|
2685
|
+
const formControlName = field?.field?.formControlName;
|
|
2686
|
+
return this.enableSearchTypeList.includes(formControlName);
|
|
2687
|
+
}
|
|
2682
2688
|
async ngOnInit() {
|
|
2683
2689
|
const sectionId = this.route.snapshot.params.sectionsId;
|
|
2684
2690
|
//条目类型id
|
|
@@ -2686,6 +2692,8 @@ class CreateOrEditComponent {
|
|
|
2686
2692
|
//板块id
|
|
2687
2693
|
this.sectionId = sectionId;
|
|
2688
2694
|
this.newEntity = this.fb.group(new CreateOrEditEntryTypeInputBase());
|
|
2695
|
+
//获取支持搜索的字段类型列表
|
|
2696
|
+
this.enableSearchTypeList = await this._FormControlsService.getEnableSearchTypeList();
|
|
2689
2697
|
//获取条目类型详情
|
|
2690
2698
|
if (this.entryTypesId) {
|
|
2691
2699
|
await this.getEntryTypes();
|
|
@@ -3041,6 +3049,8 @@ class CreateOrEditComponent {
|
|
|
3041
3049
|
allSelectChange(event, name) {
|
|
3042
3050
|
const { checked } = event.target;
|
|
3043
3051
|
this.resultSource[this.navActive].fields.forEach(el => {
|
|
3052
|
+
if (name === 'enableSearch' && !this.getEnableSearchTypeList(el))
|
|
3053
|
+
return;
|
|
3044
3054
|
el[name] = checked;
|
|
3045
3055
|
});
|
|
3046
3056
|
console.log(this.resultSource[this.navActive].fields, 'this.resultSource[this.navActive].fields', name, checked);
|
|
@@ -3066,7 +3076,7 @@ class CreateOrEditComponent {
|
|
|
3066
3076
|
provide: EXTENSIONS_IDENTIFIER,
|
|
3067
3077
|
useValue: ECmsComponent.SectionsCreateOrEdit,
|
|
3068
3078
|
},
|
|
3069
|
-
], viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }, { propertyName: "editFieldTabsModalSubmitBtn", first: true, predicate: ["editFieldTabsModalSubmitBtn"], descendants: true }, { propertyName: "editFieldModalSubmitBtn", first: true, predicate: ["editFieldModalSubmitBtn"], descendants: true }], ngImport: i0, template: "<form class=\"row g-3 needs-validation\" [formGroup]=\"newEntity\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"save()\">\n <abp-page [title]=\"entryTypesId ? ('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)\"\n [toolbar]=\"true\">\n <div class=\"create-or-edit-entry-type-page\">\n <div class=\"card\">\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <div class=\"card-body\">\n <div class=\"\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n </div>\n <div formArrayName=\"fieldTabs\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::FieldLayout' | abpLocalization}}</label>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-sm-8 border rounded\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"navActive\" class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let item of resultSource; let i = index\">\n <li [ngbNavItem]=\"i\" ngbDropdown class=\"nav-item\"\n role=\"presentation\">\n <button type=\"button\" ngbNavLink class=\"nav-link\" (click.stop)=\"setAllSelectStauts()\">\n {{ item.name }}\n <span class=\"ms-1\" (click.stop)=\"$event.stopPropagation()\"\n ngbDropdownToggle></span>\n </button>\n <div ngbDropdownMenu style=\"z-index: 999;\">\n <span ngbDropdownItem type=\"button\"\n (click.stop)=\"editFieldTabs(item,i)\">\n <i class=\"fas fa-edit\"></i>\n {{'AbpUi::Edit' | abpLocalization}}\n </span>\n <span ngbDropdownItem *ngIf=\"resultSource.length !== 1\"\n type=\"button\" (click.stop)=\"deleteFieldTabs(i)\">\n <i class=\"fas fa-trash\"></i>\n {{'AbpUi::Delete' | abpLocalization}}\n </span>\n </div>\n <ng-template ngbNavContent>\n <div class=\"p-2\" ondragover=\"event.preventDefault();\"\n (drop)=\"dragToResultSourceDropped(item,i)\"\n style=\"height: 100%;\">\n <p class=\"form-text text-muted\"\n *ngIf=\"item.fields.length === 0\">\n {{'Cms::DragAndDropFieldTips' | abpLocalization}}\n </p>\n <table class=\"table\" *ngIf=\"item.fields.length>0\">\n <thead>\n <th></th>\n <th>{{'Cms::DisplayName' | abpLocalization}}\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isRequired\" (change)=\"allSelectChange($event,'required')\" />{{'Cms::Required' | abpLocalization}}\n </div>\n \n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isShowInList\" (change)=\"allSelectChange($event,'showInList')\" />{{'Cms::ShowInList' | abpLocalization}}\n </div>\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isEnableSearch\" (change)=\"allSelectChange($event,'enableSearch')\" />{{'Cms::EnableSearch' | abpLocalization}}\n </div>\n </th>\n <th></th>\n </thead>\n <tbody>\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <tr draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\">\n <td >\n <div class=\"drag-handle d-inline\" \n cdkDragHandle>\n <span\n class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n \n <td>{{ el.displayName }}</td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.required\" name=\"required\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.showInList\" name=\"showInList\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.enableSearch\" name=\"enableSearch\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td style=\"width: 1%;\"> \n <button\n class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n\n\n <!-- <ul class=\"list-group\" style=\"height: 100%;\">\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\"\n class=\"list-group-item d-flex align-items-center justify-content-between py-1\"\n style=\"position: unset;\">\n {{ el.displayName }}\n <button class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </li>\n </ng-container>\n </ul> -->\n\n </div>\n </ng-template>\n </li>\n </ng-container>\n <li class=\"nav-item\" role=\"presentation\">\n <button type=\"button\" class=\"nav-link\"\n (click.stop)=\"addFieldTabs()\">\n <i class=\"fas fa-plus-circle\"></i>\n {{'Cms::NewTab' | abpLocalization}}\n </button>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\" class=\"mt-2 bordernNavs p-0\"></div>\n </div>\n <div class=\"col-sm-4\">\n <div ngbAccordion #accordion=\"ngbAccordion\"\n ondragover=\"event.preventDefault();\" (drop)=\"dragToDataSourceDropped()\"\n style=\"min-height: 80px;\">\n <ng-container *ngFor=\"let item of fieldGroupList; let i = index\">\n <div [ngbAccordionItem]=\"item.name\" *ngIf=\"item.fields.length > 0\">\n <h2 ngbAccordionHeader>\n <button ngbAccordionButton>{{\n ('Cms::'+item.name) | abpLocalization }}</button>\n </h2>\n <div ngbAccordionCollapse>\n <div ngbAccordionBody>\n <ng-template>\n <ul class=\"list-group\">\n <ng-container\n *ngFor=\"let el of item.fields; let ii = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromDataSourceDragStart(el,ii,i)\"\n class=\"list-group-item\">\n {{ el.displayName }}\n </li>\n </ng-container>\n </ul>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <!-- </div> -->\n </abp-page>\n\n</form>\n<!-- \u7528\u4E8E\u521B\u5EFA\u7F16\u8F91tab\u7684\u6A21\u6001\u6846 -->\n<abp-modal [(visible)]=\"visibleTabsOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleTabsChange($event)\">\n <ng-template #abpHeader>\n <h3>{{ editFieldTabsSelect ? ('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"editFieldTabsFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldTabsFrom\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"editFieldTabsSave()\">\n <button type=\"submit\" #editFieldTabsModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"editFieldTabsModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save'\n | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>\n\n<!-- \u7528\u4E8E\u4FEE\u6539\u5B57\u6BB5\u914D\u7F6E\u7684\u6A21\u6001\u6846 -->\n<abp-modal [(visible)]=\"visibleEditFieldOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleEditFieldChange($event)\">\n <ng-template #abpHeader>\n <h3>{{'AbpUi::Edit' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"editFieldFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldFrom\" (submit)=\"editFieldSave()\">\n <button type=\"submit\" #editFieldModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\" placeholder=\"\" />\n </div>\n <!-- <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"required\"\n id=\"required\" />\n <label class=\"form-check-label\" for=\"required\"> {{'Cms::Required' | abpLocalization}} </label>\n </div>\n </div> -->\n <!-- @if(isShowInList){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"showInList\"\n id=\"showInList\" />\n <label class=\"form-check-label\" for=\"showInList\"> {{'Cms::ShowInList' | abpLocalization}}\n </label>\n </div>\n </div>\n }\n @if(isEnableSearch){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"enableSearch\"\n id=\"enableSearch\" />\n <label class=\"form-check-label\" for=\"enableSearch\"> {{'Cms::EnableSearch' | abpLocalization}}\n </label>\n </div>\n </div>\n } -->\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"!editFieldFrom.valid\"\n (click)=\"editFieldModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .create-or-edit-entry-type-page .dignite_page{height:calc(100vh - 125px);overflow:auto}::ng-deep .create-or-edit-entry-type-page .form-control,::ng-deep .create-or-edit-entry-type-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-type-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-type-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit;height:calc(100% - 60px)}::ng-deep .create-or-edit-entry-type-page .tab-pane{height:100%}::ng-deep .create-or-edit-entry-type-page .nav-tabs .nav-link.active{border-color:var(--bs-nav-tabs-link-active-border-color)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.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: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i1.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i6$1.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i6$1.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i11$1.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i11$1.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i11$1.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i11$1.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i11$1.NgbNavLinkButton, selector: "button[ngbNavLink]" }, { kind: "directive", type: i11$1.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i11$1.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "directive", type: i11$1.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i11$1.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i11$1.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i11$1.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i11$1.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i11$1.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "directive", type: i11$1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i11$1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i11$1.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i11$1.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "component", type: i14.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] }); }
|
|
3079
|
+
], viewQueries: [{ propertyName: "submitclick", first: true, predicate: ["submitclick"], descendants: true, static: true }, { propertyName: "editFieldTabsModalSubmitBtn", first: true, predicate: ["editFieldTabsModalSubmitBtn"], descendants: true }, { propertyName: "editFieldModalSubmitBtn", first: true, predicate: ["editFieldModalSubmitBtn"], descendants: true }], ngImport: i0, template: "<form class=\"row g-3 needs-validation\" [formGroup]=\"newEntity\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"save()\">\n <abp-page [title]=\"entryTypesId ? ('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)\"\n [toolbar]=\"true\">\n <div class=\"create-or-edit-entry-type-page\">\n <div class=\"card\">\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <div class=\"card-body\">\n <div class=\"\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n </div>\n <div formArrayName=\"fieldTabs\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::FieldLayout' | abpLocalization}}</label>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-sm-8 border rounded\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"navActive\" class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let item of resultSource; let i = index\">\n <li [ngbNavItem]=\"i\" ngbDropdown class=\"nav-item\"\n role=\"presentation\">\n <button type=\"button\" ngbNavLink class=\"nav-link\" (click.stop)=\"setAllSelectStauts()\">\n {{ item.name }}\n <span class=\"ms-1\" (click.stop)=\"$event.stopPropagation()\"\n ngbDropdownToggle></span>\n </button>\n <div ngbDropdownMenu style=\"z-index: 999;\">\n <span ngbDropdownItem type=\"button\"\n (click.stop)=\"editFieldTabs(item,i)\">\n <i class=\"fas fa-edit\"></i>\n {{'AbpUi::Edit' | abpLocalization}}\n </span>\n <span ngbDropdownItem *ngIf=\"resultSource.length !== 1\"\n type=\"button\" (click.stop)=\"deleteFieldTabs(i)\">\n <i class=\"fas fa-trash\"></i>\n {{'AbpUi::Delete' | abpLocalization}}\n </span>\n </div>\n <ng-template ngbNavContent>\n <div class=\"p-2\" ondragover=\"event.preventDefault();\"\n (drop)=\"dragToResultSourceDropped(item,i)\"\n style=\"height: 100%;\">\n <p class=\"form-text text-muted\"\n *ngIf=\"item.fields.length === 0\">\n {{'Cms::DragAndDropFieldTips' | abpLocalization}}\n </p>\n <table class=\"table\" *ngIf=\"item.fields.length>0\">\n <thead>\n <th></th>\n <th>{{'Cms::DisplayName' | abpLocalization}}\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isRequired\" (change)=\"allSelectChange($event,'required')\" />{{'Cms::Required' | abpLocalization}}\n </div>\n \n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isShowInList\" (change)=\"allSelectChange($event,'showInList')\" />{{'Cms::ShowInList' | abpLocalization}}\n </div>\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isEnableSearch\" (change)=\"allSelectChange($event,'enableSearch')\" />{{'Cms::EnableSearch' | abpLocalization}}\n </div>\n </th>\n <th></th>\n </thead>\n <tbody>\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <tr draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\">\n <td >\n <div class=\"drag-handle d-inline\" \n cdkDragHandle>\n <span\n class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n \n <td>{{ el.displayName }}</td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.required\" name=\"required\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.showInList\" name=\"showInList\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td [style.cursor]=\"getEnableSearchTypeList(el) ? 'pointer' : 'not-allowed'\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.enableSearch\" [disabled]=\"!getEnableSearchTypeList(el)\" name=\"enableSearch\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td style=\"width: 1%;\"> \n <button\n class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n\n\n <!-- <ul class=\"list-group\" style=\"height: 100%;\">\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\"\n class=\"list-group-item d-flex align-items-center justify-content-between py-1\"\n style=\"position: unset;\">\n {{ el.displayName }}\n <button class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </li>\n </ng-container>\n </ul> -->\n\n </div>\n </ng-template>\n </li>\n </ng-container>\n <li class=\"nav-item\" role=\"presentation\">\n <button type=\"button\" class=\"nav-link\"\n (click.stop)=\"addFieldTabs()\">\n <i class=\"fas fa-plus-circle\"></i>\n {{'Cms::NewTab' | abpLocalization}}\n </button>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\" class=\"mt-2 bordernNavs p-0\"></div>\n </div>\n <div class=\"col-sm-4\">\n <div ngbAccordion #accordion=\"ngbAccordion\"\n ondragover=\"event.preventDefault();\" (drop)=\"dragToDataSourceDropped()\"\n style=\"min-height: 80px;\">\n <ng-container *ngFor=\"let item of fieldGroupList; let i = index\">\n <div [ngbAccordionItem]=\"item.name\" *ngIf=\"item.fields.length > 0\">\n <h2 ngbAccordionHeader>\n <button ngbAccordionButton>{{\n ('Cms::'+item.name) | abpLocalization }}</button>\n </h2>\n <div ngbAccordionCollapse>\n <div ngbAccordionBody>\n <ng-template>\n <ul class=\"list-group\">\n <ng-container\n *ngFor=\"let el of item.fields; let ii = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromDataSourceDragStart(el,ii,i)\"\n class=\"list-group-item\">\n {{ el.displayName }}\n </li>\n </ng-container>\n </ul>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <!-- </div> -->\n </abp-page>\n\n</form>\n<!-- \u7528\u4E8E\u521B\u5EFA\u7F16\u8F91tab\u7684\u6A21\u6001\u6846 -->\n<abp-modal [(visible)]=\"visibleTabsOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleTabsChange($event)\">\n <ng-template #abpHeader>\n <h3>{{ editFieldTabsSelect ? ('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"editFieldTabsFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldTabsFrom\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"editFieldTabsSave()\">\n <button type=\"submit\" #editFieldTabsModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"editFieldTabsModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save'\n | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>\n\n<!-- \u7528\u4E8E\u4FEE\u6539\u5B57\u6BB5\u914D\u7F6E\u7684\u6A21\u6001\u6846 -->\n<abp-modal [(visible)]=\"visibleEditFieldOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleEditFieldChange($event)\">\n <ng-template #abpHeader>\n <h3>{{'AbpUi::Edit' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"editFieldFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldFrom\" (submit)=\"editFieldSave()\">\n <button type=\"submit\" #editFieldModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\" placeholder=\"\" />\n </div>\n <!-- <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"required\"\n id=\"required\" />\n <label class=\"form-check-label\" for=\"required\"> {{'Cms::Required' | abpLocalization}} </label>\n </div>\n </div> -->\n <!-- @if(isShowInList){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"showInList\"\n id=\"showInList\" />\n <label class=\"form-check-label\" for=\"showInList\"> {{'Cms::ShowInList' | abpLocalization}}\n </label>\n </div>\n </div>\n }\n @if(isEnableSearch){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"enableSearch\"\n id=\"enableSearch\" />\n <label class=\"form-check-label\" for=\"enableSearch\"> {{'Cms::EnableSearch' | abpLocalization}}\n </label>\n </div>\n </div>\n } -->\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"!editFieldFrom.valid\"\n (click)=\"editFieldModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .create-or-edit-entry-type-page .dignite_page{height:calc(100vh - 125px);overflow:auto}::ng-deep .create-or-edit-entry-type-page .form-control,::ng-deep .create-or-edit-entry-type-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-type-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-type-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit;height:calc(100% - 60px)}::ng-deep .create-or-edit-entry-type-page .tab-pane{height:100%}::ng-deep .create-or-edit-entry-type-page .nav-tabs .nav-link.active{border-color:var(--bs-nav-tabs-link-active-border-color)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.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: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i1.StopPropagationDirective, selector: "[click.stop]", outputs: ["click.stop"] }, { kind: "directive", type: i6$1.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i6$1.ValidationDirective, selector: "[formControl],[formControlName]", exportAs: ["validationDirective"] }, { kind: "component", type: i3.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.ModalCloseDirective, selector: "[abpClose]" }, { kind: "directive", type: i11$1.NgbNavContent, selector: "ng-template[ngbNavContent]" }, { kind: "directive", type: i11$1.NgbNav, selector: "[ngbNav]", inputs: ["activeId", "animation", "destroyOnHide", "orientation", "roles", "keyboard"], outputs: ["activeIdChange", "shown", "hidden", "navChange"], exportAs: ["ngbNav"] }, { kind: "directive", type: i11$1.NgbNavItem, selector: "[ngbNavItem]", inputs: ["destroyOnHide", "disabled", "domId", "ngbNavItem"], outputs: ["shown", "hidden"], exportAs: ["ngbNavItem"] }, { kind: "directive", type: i11$1.NgbNavItemRole, selector: "[ngbNavItem]:not(ng-container)" }, { kind: "directive", type: i11$1.NgbNavLinkButton, selector: "button[ngbNavLink]" }, { kind: "directive", type: i11$1.NgbNavLinkBase, selector: "[ngbNavLink]" }, { kind: "component", type: i11$1.NgbNavOutlet, selector: "[ngbNavOutlet]", inputs: ["paneRole", "ngbNavOutlet"] }, { kind: "directive", type: i11$1.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i11$1.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i11$1.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i11$1.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i11$1.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i11$1.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "directive", type: i11$1.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i11$1.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i11$1.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i11$1.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "component", type: i14.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] }); }
|
|
3070
3080
|
}
|
|
3071
3081
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: CreateOrEditComponent, decorators: [{
|
|
3072
3082
|
type: Component,
|
|
@@ -3075,7 +3085,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
3075
3085
|
provide: EXTENSIONS_IDENTIFIER,
|
|
3076
3086
|
useValue: ECmsComponent.SectionsCreateOrEdit,
|
|
3077
3087
|
},
|
|
3078
|
-
], template: "<form class=\"row g-3 needs-validation\" [formGroup]=\"newEntity\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"save()\">\n <abp-page [title]=\"entryTypesId ? ('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)\"\n [toolbar]=\"true\">\n <div class=\"create-or-edit-entry-type-page\">\n <div class=\"card\">\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <div class=\"card-body\">\n <div class=\"\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n </div>\n <div formArrayName=\"fieldTabs\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::FieldLayout' | abpLocalization}}</label>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-sm-8 border rounded\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"navActive\" class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let item of resultSource; let i = index\">\n <li [ngbNavItem]=\"i\" ngbDropdown class=\"nav-item\"\n role=\"presentation\">\n <button type=\"button\" ngbNavLink class=\"nav-link\" (click.stop)=\"setAllSelectStauts()\">\n {{ item.name }}\n <span class=\"ms-1\" (click.stop)=\"$event.stopPropagation()\"\n ngbDropdownToggle></span>\n </button>\n <div ngbDropdownMenu style=\"z-index: 999;\">\n <span ngbDropdownItem type=\"button\"\n (click.stop)=\"editFieldTabs(item,i)\">\n <i class=\"fas fa-edit\"></i>\n {{'AbpUi::Edit' | abpLocalization}}\n </span>\n <span ngbDropdownItem *ngIf=\"resultSource.length !== 1\"\n type=\"button\" (click.stop)=\"deleteFieldTabs(i)\">\n <i class=\"fas fa-trash\"></i>\n {{'AbpUi::Delete' | abpLocalization}}\n </span>\n </div>\n <ng-template ngbNavContent>\n <div class=\"p-2\" ondragover=\"event.preventDefault();\"\n (drop)=\"dragToResultSourceDropped(item,i)\"\n style=\"height: 100%;\">\n <p class=\"form-text text-muted\"\n *ngIf=\"item.fields.length === 0\">\n {{'Cms::DragAndDropFieldTips' | abpLocalization}}\n </p>\n <table class=\"table\" *ngIf=\"item.fields.length>0\">\n <thead>\n <th></th>\n <th>{{'Cms::DisplayName' | abpLocalization}}\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isRequired\" (change)=\"allSelectChange($event,'required')\" />{{'Cms::Required' | abpLocalization}}\n </div>\n \n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isShowInList\" (change)=\"allSelectChange($event,'showInList')\" />{{'Cms::ShowInList' | abpLocalization}}\n </div>\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isEnableSearch\" (change)=\"allSelectChange($event,'enableSearch')\" />{{'Cms::EnableSearch' | abpLocalization}}\n </div>\n </th>\n <th></th>\n </thead>\n <tbody>\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <tr draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\">\n <td >\n <div class=\"drag-handle d-inline\" \n cdkDragHandle>\n <span\n class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n \n <td>{{ el.displayName }}</td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.required\" name=\"required\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.showInList\" name=\"showInList\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.enableSearch\" name=\"enableSearch\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td style=\"width: 1%;\"> \n <button\n class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n\n\n <!-- <ul class=\"list-group\" style=\"height: 100%;\">\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\"\n class=\"list-group-item d-flex align-items-center justify-content-between py-1\"\n style=\"position: unset;\">\n {{ el.displayName }}\n <button class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </li>\n </ng-container>\n </ul> -->\n\n </div>\n </ng-template>\n </li>\n </ng-container>\n <li class=\"nav-item\" role=\"presentation\">\n <button type=\"button\" class=\"nav-link\"\n (click.stop)=\"addFieldTabs()\">\n <i class=\"fas fa-plus-circle\"></i>\n {{'Cms::NewTab' | abpLocalization}}\n </button>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\" class=\"mt-2 bordernNavs p-0\"></div>\n </div>\n <div class=\"col-sm-4\">\n <div ngbAccordion #accordion=\"ngbAccordion\"\n ondragover=\"event.preventDefault();\" (drop)=\"dragToDataSourceDropped()\"\n style=\"min-height: 80px;\">\n <ng-container *ngFor=\"let item of fieldGroupList; let i = index\">\n <div [ngbAccordionItem]=\"item.name\" *ngIf=\"item.fields.length > 0\">\n <h2 ngbAccordionHeader>\n <button ngbAccordionButton>{{\n ('Cms::'+item.name) | abpLocalization }}</button>\n </h2>\n <div ngbAccordionCollapse>\n <div ngbAccordionBody>\n <ng-template>\n <ul class=\"list-group\">\n <ng-container\n *ngFor=\"let el of item.fields; let ii = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromDataSourceDragStart(el,ii,i)\"\n class=\"list-group-item\">\n {{ el.displayName }}\n </li>\n </ng-container>\n </ul>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <!-- </div> -->\n </abp-page>\n\n</form>\n<!-- \u7528\u4E8E\u521B\u5EFA\u7F16\u8F91tab\u7684\u6A21\u6001\u6846 -->\n<abp-modal [(visible)]=\"visibleTabsOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleTabsChange($event)\">\n <ng-template #abpHeader>\n <h3>{{ editFieldTabsSelect ? ('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"editFieldTabsFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldTabsFrom\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"editFieldTabsSave()\">\n <button type=\"submit\" #editFieldTabsModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"editFieldTabsModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save'\n | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>\n\n<!-- \u7528\u4E8E\u4FEE\u6539\u5B57\u6BB5\u914D\u7F6E\u7684\u6A21\u6001\u6846 -->\n<abp-modal [(visible)]=\"visibleEditFieldOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleEditFieldChange($event)\">\n <ng-template #abpHeader>\n <h3>{{'AbpUi::Edit' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"editFieldFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldFrom\" (submit)=\"editFieldSave()\">\n <button type=\"submit\" #editFieldModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\" placeholder=\"\" />\n </div>\n <!-- <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"required\"\n id=\"required\" />\n <label class=\"form-check-label\" for=\"required\"> {{'Cms::Required' | abpLocalization}} </label>\n </div>\n </div> -->\n <!-- @if(isShowInList){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"showInList\"\n id=\"showInList\" />\n <label class=\"form-check-label\" for=\"showInList\"> {{'Cms::ShowInList' | abpLocalization}}\n </label>\n </div>\n </div>\n }\n @if(isEnableSearch){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"enableSearch\"\n id=\"enableSearch\" />\n <label class=\"form-check-label\" for=\"enableSearch\"> {{'Cms::EnableSearch' | abpLocalization}}\n </label>\n </div>\n </div>\n } -->\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"!editFieldFrom.valid\"\n (click)=\"editFieldModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .create-or-edit-entry-type-page .dignite_page{height:calc(100vh - 125px);overflow:auto}::ng-deep .create-or-edit-entry-type-page .form-control,::ng-deep .create-or-edit-entry-type-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-type-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-type-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit;height:calc(100% - 60px)}::ng-deep .create-or-edit-entry-type-page .tab-pane{height:100%}::ng-deep .create-or-edit-entry-type-page .nav-tabs .nav-link.active{border-color:var(--bs-nav-tabs-link-active-border-color)!important}\n"] }]
|
|
3088
|
+
], template: "<form class=\"row g-3 needs-validation\" [formGroup]=\"newEntity\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"save()\">\n <abp-page [title]=\"entryTypesId ? ('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)\"\n [toolbar]=\"true\">\n <div class=\"create-or-edit-entry-type-page\">\n <div class=\"card\">\n <button type=\"submit\" style=\"display: none;\" #submitclick></button>\n <div class=\"card-body\">\n <div class=\"\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\"\n (blur)=\"disPlayNameInputBlur($event)\" placeholder=\"\" />\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n </div>\n <div formArrayName=\"fieldTabs\">\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::FieldLayout' | abpLocalization}}</label>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-sm-8 border rounded\">\n <ul ngbNav #nav=\"ngbNav\" [(activeId)]=\"navActive\" class=\"nav nav-tabs\">\n <ng-container *ngFor=\"let item of resultSource; let i = index\">\n <li [ngbNavItem]=\"i\" ngbDropdown class=\"nav-item\"\n role=\"presentation\">\n <button type=\"button\" ngbNavLink class=\"nav-link\" (click.stop)=\"setAllSelectStauts()\">\n {{ item.name }}\n <span class=\"ms-1\" (click.stop)=\"$event.stopPropagation()\"\n ngbDropdownToggle></span>\n </button>\n <div ngbDropdownMenu style=\"z-index: 999;\">\n <span ngbDropdownItem type=\"button\"\n (click.stop)=\"editFieldTabs(item,i)\">\n <i class=\"fas fa-edit\"></i>\n {{'AbpUi::Edit' | abpLocalization}}\n </span>\n <span ngbDropdownItem *ngIf=\"resultSource.length !== 1\"\n type=\"button\" (click.stop)=\"deleteFieldTabs(i)\">\n <i class=\"fas fa-trash\"></i>\n {{'AbpUi::Delete' | abpLocalization}}\n </span>\n </div>\n <ng-template ngbNavContent>\n <div class=\"p-2\" ondragover=\"event.preventDefault();\"\n (drop)=\"dragToResultSourceDropped(item,i)\"\n style=\"height: 100%;\">\n <p class=\"form-text text-muted\"\n *ngIf=\"item.fields.length === 0\">\n {{'Cms::DragAndDropFieldTips' | abpLocalization}}\n </p>\n <table class=\"table\" *ngIf=\"item.fields.length>0\">\n <thead>\n <th></th>\n <th>{{'Cms::DisplayName' | abpLocalization}}\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isRequired\" (change)=\"allSelectChange($event,'required')\" />{{'Cms::Required' | abpLocalization}}\n </div>\n \n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isShowInList\" (change)=\"allSelectChange($event,'showInList')\" />{{'Cms::ShowInList' | abpLocalization}}\n </div>\n </th>\n <th>\n <div class=\"d-flex align-items-center p-0\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input me-1\" [checked]=\"isAllSelect.isEnableSearch\" (change)=\"allSelectChange($event,'enableSearch')\" />{{'Cms::EnableSearch' | abpLocalization}}\n </div>\n </th>\n <th></th>\n </thead>\n <tbody>\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <tr draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\">\n <td >\n <div class=\"drag-handle d-inline\" \n cdkDragHandle>\n <span\n class=\"bi bi-arrows-move fs-5\"></span>\n </div>\n </td>\n \n <td>{{ el.displayName }}</td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.required\" name=\"required\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td>\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.showInList\" name=\"showInList\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td [style.cursor]=\"getEnableSearchTypeList(el) ? 'pointer' : 'not-allowed'\">\n <input type=\"checkbox\" role=\"button\" class=\"form-check-input\" [checked]=\"el.enableSearch\" [disabled]=\"!getEnableSearchTypeList(el)\" name=\"enableSearch\" (change)=\"checkboxChange($event,{row:el,index:iel})\" />\n </td>\n <td style=\"width: 1%;\"> \n <button\n class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n\n\n <!-- <ul class=\"list-group\" style=\"height: 100%;\">\n <ng-container\n *ngFor=\"let el of item.fields; let iel = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromResultSourceDragStart(el)\"\n (drop)=\"dragToResultSourceItemDropped(iel)\"\n class=\"list-group-item d-flex align-items-center justify-content-between py-1\"\n style=\"position: unset;\">\n {{ el.displayName }}\n <button class=\"p-0 btn btn-sm btn-light\"\n (click.stop)=\"EditFieldModalOpen(el,iel)\"\n type=\"button\"><i\n class=\"fas fa-wrench p-sm-1\"\n role=\"button\"></i></button>\n </li>\n </ng-container>\n </ul> -->\n\n </div>\n </ng-template>\n </li>\n </ng-container>\n <li class=\"nav-item\" role=\"presentation\">\n <button type=\"button\" class=\"nav-link\"\n (click.stop)=\"addFieldTabs()\">\n <i class=\"fas fa-plus-circle\"></i>\n {{'Cms::NewTab' | abpLocalization}}\n </button>\n </li>\n </ul>\n <div [ngbNavOutlet]=\"nav\" class=\"mt-2 bordernNavs p-0\"></div>\n </div>\n <div class=\"col-sm-4\">\n <div ngbAccordion #accordion=\"ngbAccordion\"\n ondragover=\"event.preventDefault();\" (drop)=\"dragToDataSourceDropped()\"\n style=\"min-height: 80px;\">\n <ng-container *ngFor=\"let item of fieldGroupList; let i = index\">\n <div [ngbAccordionItem]=\"item.name\" *ngIf=\"item.fields.length > 0\">\n <h2 ngbAccordionHeader>\n <button ngbAccordionButton>{{\n ('Cms::'+item.name) | abpLocalization }}</button>\n </h2>\n <div ngbAccordionCollapse>\n <div ngbAccordionBody>\n <ng-template>\n <ul class=\"list-group\">\n <ng-container\n *ngFor=\"let el of item.fields; let ii = index\">\n <li draggable=\"true\"\n (dragstart)=\"fromDataSourceDragStart(el,ii,i)\"\n class=\"list-group-item\">\n {{ el.displayName }}\n </li>\n </ng-container>\n </ul>\n </ng-template>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n </div>\n </div>\n\n\n <!-- </div> -->\n </abp-page>\n\n</form>\n<!-- \u7528\u4E8E\u521B\u5EFA\u7F16\u8F91tab\u7684\u6A21\u6001\u6846 -->\n<abp-modal [(visible)]=\"visibleTabsOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleTabsChange($event)\">\n <ng-template #abpHeader>\n <h3>{{ editFieldTabsSelect ? ('AbpUi::Edit' | abpLocalization):('Cms::New' | abpLocalization)}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"editFieldTabsFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldTabsFrom\" [class]=\"{'was-validated':formValidation}\"\n (submit)=\"editFieldTabsSave()\">\n <button type=\"submit\" #editFieldTabsModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::Name' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"name\" placeholder=\"\" />\n </div>\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" (click)=\"editFieldTabsModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save'\n | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>\n\n<!-- \u7528\u4E8E\u4FEE\u6539\u5B57\u6BB5\u914D\u7F6E\u7684\u6A21\u6001\u6846 -->\n<abp-modal [(visible)]=\"visibleEditFieldOpen\" [busy]=\"modalBusy\" (visibleChange)=\"VisibleEditFieldChange($event)\">\n <ng-template #abpHeader>\n <h3>{{'AbpUi::Edit' | abpLocalization}}</h3>\n </ng-template>\n <ng-template #abpBody>\n <ng-template #loaderRef>\n <div class=\"text-center\"><i class=\"fa fa-pulse fa-spinner\" aria-hidden=\"true\"></i></div>\n </ng-template>\n <ng-container *ngIf=\"editFieldFrom; else loaderRef\">\n <form class=\"sites-modal-form\" [formGroup]=\"editFieldFrom\" (submit)=\"editFieldSave()\">\n <button type=\"submit\" #editFieldModalSubmitBtn style=\"display: none\"></button>\n <div class=\"mb-3\">\n <label class=\"form-label\">{{'Cms::DisplayName' | abpLocalization}}</label>\n <input type=\"text\" class=\"form-control\" formControlName=\"displayName\" placeholder=\"\" />\n </div>\n <!-- <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"required\"\n id=\"required\" />\n <label class=\"form-check-label\" for=\"required\"> {{'Cms::Required' | abpLocalization}} </label>\n </div>\n </div> -->\n <!-- @if(isShowInList){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"showInList\"\n id=\"showInList\" />\n <label class=\"form-check-label\" for=\"showInList\"> {{'Cms::ShowInList' | abpLocalization}}\n </label>\n </div>\n </div>\n }\n @if(isEnableSearch){\n <div class=\"mb-3\">\n <div class=\"form-check form-check-inline\">\n <input class=\"form-check-input\" type=\"checkbox\" value=\"true\" formControlName=\"enableSearch\"\n id=\"enableSearch\" />\n <label class=\"form-check-label\" for=\"enableSearch\"> {{'Cms::EnableSearch' | abpLocalization}}\n </label>\n </div>\n </div>\n } -->\n </form>\n </ng-container>\n </ng-template>\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{'AbpUi::Close' | abpLocalization}}</button>\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"!editFieldFrom.valid\"\n (click)=\"editFieldModalSubmitBtn.nativeElement.click()\">{{'AbpUi::Save' | abpLocalization}}</abp-button>\n </ng-template>\n</abp-modal>", styles: ["::ng-deep .create-or-edit-entry-type-page .dignite_page{height:calc(100vh - 125px);overflow:auto}::ng-deep .create-or-edit-entry-type-page .form-control,::ng-deep .create-or-edit-entry-type-page .form-select{padding:.475rem 1.25rem}::ng-deep .create-or-edit-entry-type-page .cursor-move{cursor:move}::ng-deep .create-or-edit-entry-type-page .bordernNavs{border:var(--bs-border-width) solid var(--lpx-border-color);padding-left:inherit;padding-right:inherit;height:calc(100% - 60px)}::ng-deep .create-or-edit-entry-type-page .tab-pane{height:100%}::ng-deep .create-or-edit-entry-type-page .nav-tabs .nav-link.active{border-color:var(--bs-nav-tabs-link-active-border-color)!important}\n"] }]
|
|
3079
3089
|
}], ctorParameters: () => [{ type: i3.ToasterService }, { type: i4.LocationBackService }, { type: i6.ActivatedRoute }, { type: FieldGroupAdminService }, { type: FieldAdminService }, { type: EntryTypeAdminService }, { type: i1.LocalizationService }, { type: FormControlsService }, { type: i4.ToPinyinService }], propDecorators: { submitclick: [{
|
|
3080
3090
|
type: ViewChild,
|
|
3081
3091
|
args: ['submitclick', { static: true }]
|
|
@@ -3331,8 +3341,22 @@ class EntryViewComponent {
|
|
|
3331
3341
|
async ngAfterContentInit() {
|
|
3332
3342
|
//Called after ngOnInit when the component's or directive's content has been initialized.
|
|
3333
3343
|
//Add 'implements AfterContentInit' to the class.
|
|
3344
|
+
console.log('valueOptions', this.fields);
|
|
3334
3345
|
if (this.type && this._value) {
|
|
3335
|
-
|
|
3346
|
+
const options = this.fields?.field?.formConfiguration?.['Entry.Options'] || [];
|
|
3347
|
+
if (options.length > 0) {
|
|
3348
|
+
const getTextByValue = (val) => {
|
|
3349
|
+
const option = options.find((opt) => opt.value === val || opt.Value === val);
|
|
3350
|
+
return option?.text || option?.Text || val;
|
|
3351
|
+
};
|
|
3352
|
+
if (Array.isArray(this._value)) {
|
|
3353
|
+
this.showValue = this._value.map(getTextByValue).join(',');
|
|
3354
|
+
}
|
|
3355
|
+
else {
|
|
3356
|
+
this.showValue = getTextByValue(this._value);
|
|
3357
|
+
}
|
|
3358
|
+
}
|
|
3359
|
+
else if (Array.isArray(this._value)) {
|
|
3336
3360
|
this.showValue = await this.getListByIds(this._value);
|
|
3337
3361
|
}
|
|
3338
3362
|
else {
|
|
@@ -3348,7 +3372,7 @@ class EntryViewComponent {
|
|
|
3348
3372
|
.subscribe((res) => {
|
|
3349
3373
|
const result = res.items
|
|
3350
3374
|
.map((item) => {
|
|
3351
|
-
return item.
|
|
3375
|
+
return item.slug;
|
|
3352
3376
|
})
|
|
3353
3377
|
.join(',');
|
|
3354
3378
|
resolve(result);
|