@acorex/layout 3.0.65 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/acorex-layout.d.ts +1 -2
- package/esm2020/acorex-layout.mjs +5 -0
- package/esm2020/lib/widget-board/editors/widget-size-editor/widget-size.editor.mjs +46 -0
- package/esm2020/lib/widget-board/editors/widget-size-editor/widget-size.module.mjs +21 -0
- package/esm2020/lib/widget-board/widget-board.component.mjs +441 -0
- package/esm2020/lib/widget-board/widget-board.module.mjs +111 -0
- package/esm2020/lib/widget-board/widget-config.component.mjs +82 -0
- package/esm2020/lib/widget-board/widget-host.component.mjs +290 -0
- package/esm2020/lib/widget-board/widget-save.component.mjs +79 -0
- package/esm2020/lib/widget-board/widget.class.mjs +127 -0
- package/esm2020/public-api.mjs +7 -0
- package/fesm2015/acorex-layout.mjs +1166 -0
- package/fesm2015/acorex-layout.mjs.map +1 -0
- package/fesm2020/acorex-layout.mjs +1159 -0
- package/fesm2020/acorex-layout.mjs.map +1 -0
- package/lib/widget-board/editors/widget-size-editor/widget-size.editor.d.ts +3 -0
- package/lib/widget-board/editors/widget-size-editor/widget-size.module.d.ts +8 -0
- package/lib/widget-board/widget-board.component.d.ts +3 -0
- package/lib/widget-board/widget-board.module.d.ts +12 -0
- package/lib/widget-board/widget-config.component.d.ts +3 -0
- package/lib/widget-board/widget-host.component.d.ts +3 -0
- package/lib/widget-board/widget-save.component.d.ts +3 -0
- package/lib/widget-board/widget.class.d.ts +3 -0
- package/package.json +23 -13
- package/acorex-layout.metadata.json +0 -1
- package/bundles/acorex-layout.umd.js +0 -1487
- package/bundles/acorex-layout.umd.js.map +0 -1
- package/bundles/acorex-layout.umd.min.js +0 -16
- package/bundles/acorex-layout.umd.min.js.map +0 -1
- package/esm2015/acorex-layout.js +0 -7
- package/esm2015/lib/widget-board/editors/widget-size-editor/widget-size.editor.js +0 -49
- package/esm2015/lib/widget-board/editors/widget-size-editor/widget-size.module.js +0 -19
- package/esm2015/lib/widget-board/widget-board.component.js +0 -468
- package/esm2015/lib/widget-board/widget-board.module.js +0 -67
- package/esm2015/lib/widget-board/widget-config.component.js +0 -86
- package/esm2015/lib/widget-board/widget-host.component.js +0 -323
- package/esm2015/lib/widget-board/widget-save.component.js +0 -79
- package/esm2015/lib/widget-board/widget.class.js +0 -123
- package/esm2015/public-api.js +0 -7
- package/esm5/acorex-layout.js +0 -7
- package/esm5/lib/widget-board/editors/widget-size-editor/widget-size.editor.js +0 -52
- package/esm5/lib/widget-board/editors/widget-size-editor/widget-size.module.js +0 -22
- package/esm5/lib/widget-board/widget-board.component.js +0 -494
- package/esm5/lib/widget-board/widget-board.module.js +0 -68
- package/esm5/lib/widget-board/widget-config.component.js +0 -90
- package/esm5/lib/widget-board/widget-host.component.js +0 -359
- package/esm5/lib/widget-board/widget-save.component.js +0 -83
- package/esm5/lib/widget-board/widget.class.js +0 -134
- package/esm5/public-api.js +0 -7
- package/fesm2015/acorex-layout.js +0 -1177
- package/fesm2015/acorex-layout.js.map +0 -1
- package/fesm5/acorex-layout.js +0 -1264
- package/fesm5/acorex-layout.js.map +0 -1
@@ -1,86 +0,0 @@
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
2
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild } from '@angular/core';
|
3
|
-
import { AXBasePopupPageComponent, AXValidationFormComponent } from '@acorex/components';
|
4
|
-
import { AXTranslator } from '@acorex/core';
|
5
|
-
let AXWidgetConfigComponent = class AXWidgetConfigComponent extends AXBasePopupPageComponent {
|
6
|
-
constructor(cdr) {
|
7
|
-
super();
|
8
|
-
this.cdr = cdr;
|
9
|
-
this.props = [];
|
10
|
-
this.displayProps = [];
|
11
|
-
this.changes = [];
|
12
|
-
this.context = {};
|
13
|
-
}
|
14
|
-
getFooterButtons() {
|
15
|
-
return [
|
16
|
-
{
|
17
|
-
name: 'okay',
|
18
|
-
submitBehavior: true,
|
19
|
-
text: AXTranslator.get('common.confirm'),
|
20
|
-
style: 'success'
|
21
|
-
},
|
22
|
-
{
|
23
|
-
name: 'cancel',
|
24
|
-
cancelBehavior: true,
|
25
|
-
text: AXTranslator.get('common.cancel'),
|
26
|
-
style: 'danger blank'
|
27
|
-
}
|
28
|
-
];
|
29
|
-
}
|
30
|
-
onFooterButtonClick(e) {
|
31
|
-
if (e.name === 'cancel') {
|
32
|
-
this.close();
|
33
|
-
}
|
34
|
-
if (e.name === 'okay') {
|
35
|
-
this.form.validate().then(c => {
|
36
|
-
if (c.result) {
|
37
|
-
this.close(this.changes);
|
38
|
-
}
|
39
|
-
});
|
40
|
-
}
|
41
|
-
}
|
42
|
-
handleValueChange(e) {
|
43
|
-
const prop = this.changes.find(c => c.property.name === e.property.name);
|
44
|
-
if (prop) {
|
45
|
-
prop.value = e.value;
|
46
|
-
}
|
47
|
-
else {
|
48
|
-
this.changes.push({ property: e.property, value: e.value });
|
49
|
-
}
|
50
|
-
this.updateContext();
|
51
|
-
}
|
52
|
-
ngOnInit() {
|
53
|
-
this.displayProps = this.props.filter(c => c.property.visible !== false).sort((a, b) => a.property.order - b.property.order);
|
54
|
-
this.updateContext();
|
55
|
-
}
|
56
|
-
updateContext() {
|
57
|
-
const ctx = {};
|
58
|
-
this.props.forEach(p => {
|
59
|
-
ctx[p.property.name] = p.value;
|
60
|
-
});
|
61
|
-
this.changes.forEach(p => {
|
62
|
-
ctx[p.property.name] = p.value;
|
63
|
-
});
|
64
|
-
this.context = ctx;
|
65
|
-
}
|
66
|
-
identify(index, item) {
|
67
|
-
return item.property.name;
|
68
|
-
}
|
69
|
-
};
|
70
|
-
AXWidgetConfigComponent.ctorParameters = () => [
|
71
|
-
{ type: ChangeDetectorRef }
|
72
|
-
];
|
73
|
-
__decorate([
|
74
|
-
ViewChild(AXValidationFormComponent),
|
75
|
-
__metadata("design:type", AXValidationFormComponent)
|
76
|
-
], AXWidgetConfigComponent.prototype, "form", void 0);
|
77
|
-
AXWidgetConfigComponent = __decorate([
|
78
|
-
Component({
|
79
|
-
template: "<ax-page>\r\n <ax-page-content>\r\n <div class=\"container\">\r\n <ax-validation-form #form>\r\n <div class=\"row\" *ngFor=\"let p of displayProps; trackBy: identify\">\r\n <div class=\"col-12\">\r\n <ax-label>{{p.property.title | trans}}</ax-label>\r\n <ng-container ax-property-editor-renderer [property]=\"p\" [context]=\"context\" [host]=\"widget\" [validationForm]=\"form\"\r\n (onValueChange)=\"handleValueChange($event)\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ax-validation-form>\r\n </div>\r\n </ax-page-content>\r\n</ax-page>",
|
80
|
-
encapsulation: ViewEncapsulation.None,
|
81
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
82
|
-
}),
|
83
|
-
__metadata("design:paramtypes", [ChangeDetectorRef])
|
84
|
-
], AXWidgetConfigComponent);
|
85
|
-
export { AXWidgetConfigComponent };
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWNvcmV4L2xheW91dC8iLCJzb3VyY2VzIjpbImxpYi93aWRnZXQtYm9hcmQvd2lkZ2V0LWNvbmZpZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBb0Isd0JBQXdCLEVBQXlELHlCQUF5QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEssT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFVMUQsSUFBYSx1QkFBdUIsR0FBcEMsTUFBYSx1QkFBd0IsU0FBUSx3QkFBd0I7SUFJakUsWUFBb0IsR0FBc0I7UUFDdEMsS0FBSyxFQUFFLENBQUM7UUFEUSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQU0xQyxVQUFLLEdBQXVCLEVBQUUsQ0FBQztRQUMvQixpQkFBWSxHQUF1QixFQUFFLENBQUM7UUFHdEMsWUFBTyxHQUF1QixFQUFFLENBQUM7UUFFakMsWUFBTyxHQUFRLEVBQUUsQ0FBQztJQVZsQixDQUFDO0lBYUQsZ0JBQWdCO1FBQ1osT0FBTztZQUNIO2dCQUNJLElBQUksRUFBRSxNQUFNO2dCQUNaLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixJQUFJLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDeEMsS0FBSyxFQUFFLFNBQVM7YUFDbkI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxjQUFjLEVBQUUsSUFBSTtnQkFDcEIsSUFBSSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO2dCQUN2QyxLQUFLLEVBQUUsY0FBYzthQUN4QjtTQUNKLENBQUM7SUFDTixDQUFDO0lBTUQsbUJBQW1CLENBQUMsQ0FBdUI7UUFDdkMsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUNyQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUMxQixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzVCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxDQUFrQztRQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDeEI7YUFDSTtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0gsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFHTyxhQUFhO1FBQ2pCLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25CLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyQixHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDdkIsQ0FBQztJQUdELFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBc0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0NBRUosQ0FBQTs7WUFsRjRCLGlCQUFpQjs7QUFGSjtJQUFyQyxTQUFTLENBQUMseUJBQXlCLENBQUM7OEJBQU8seUJBQXlCO3FEQUFDO0FBRjdELHVCQUF1QjtJQU5uQyxTQUFTLENBQUM7UUFDUCw0dkJBQTZDO1FBQzdDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1FBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO0tBQ2xELENBQUM7cUNBTTJCLGlCQUFpQjtHQUpqQyx1QkFBdUIsQ0FzRm5DO1NBdEZZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYUHJvcGVydHlDb25maWcsIEFYQmFzZVBvcHVwUGFnZUNvbXBvbmVudCwgQVhNZW51SXRlbUNsaWNrRXZlbnQsIEFYUHJvcGVyeUVkaXRvclZhbHVlQ2hhbmdlRXZlbnQsIEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBBWEJ1dHRvbkl0ZW0sIEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IEFYV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQuY2xhc3MnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1jb25maWcuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQVhXaWRnZXRDb25maWdDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VQb3B1cFBhZ2VDb21wb25lbnQge1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoQVhWYWxpZGF0aW9uRm9ybUNvbXBvbmVudCkgZm9ybTogQVhWYWxpZGF0aW9uRm9ybUNvbXBvbmVudDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB3aWRnZXQ6IEFYV2lkZ2V0Q29tcG9uZW50O1xyXG4gICAgcHJvcHM6IEFYUHJvcGVydHlDb25maWdbXSA9IFtdO1xyXG4gICAgZGlzcGxheVByb3BzOiBBWFByb3BlcnR5Q29uZmlnW10gPSBbXTtcclxuXHJcblxyXG4gICAgY2hhbmdlczogQVhQcm9wZXJ0eUNvbmZpZ1tdID0gW107XHJcblxyXG4gICAgY29udGV4dDogYW55ID0ge307XHJcblxyXG5cclxuICAgIGdldEZvb3RlckJ1dHRvbnMoKTogQVhCdXR0b25JdGVtW10ge1xyXG4gICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdva2F5JyxcclxuICAgICAgICAgICAgICAgIHN1Ym1pdEJlaGF2aW9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgnY29tbW9uLmNvbmZpcm0nKSxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiAnc3VjY2VzcydcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NhbmNlbCcsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWxCZWhhdmlvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5jYW5jZWwnKSxcclxuICAgICAgICAgICAgICAgIHN0eWxlOiAnZGFuZ2VyIGJsYW5rJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgb25Gb290ZXJCdXR0b25DbGljayhlOiBBWE1lbnVJdGVtQ2xpY2tFdmVudCkge1xyXG4gICAgICAgIGlmIChlLm5hbWUgPT09ICdjYW5jZWwnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGUubmFtZSA9PT0gJ29rYXknKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybS52YWxpZGF0ZSgpLnRoZW4oYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYy5yZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKHRoaXMuY2hhbmdlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVWYWx1ZUNoYW5nZShlOiBBWFByb3BlcnlFZGl0b3JWYWx1ZUNoYW5nZUV2ZW50KSB7XHJcbiAgICAgICAgY29uc3QgcHJvcCA9IHRoaXMuY2hhbmdlcy5maW5kKGMgPT4gYy5wcm9wZXJ0eS5uYW1lID09PSBlLnByb3BlcnR5Lm5hbWUpO1xyXG4gICAgICAgIGlmIChwcm9wKSB7XHJcbiAgICAgICAgICAgIHByb3AudmFsdWUgPSBlLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VzLnB1c2goeyBwcm9wZXJ0eTogZS5wcm9wZXJ0eSwgdmFsdWU6IGUudmFsdWUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlQ29udGV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheVByb3BzID0gdGhpcy5wcm9wcy5maWx0ZXIoYyA9PiBjLnByb3BlcnR5LnZpc2libGUgIT09IGZhbHNlKS5zb3J0KChhLCBiKSA9PiBhLnByb3BlcnR5Lm9yZGVyIC0gYi5wcm9wZXJ0eS5vcmRlcik7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZXh0KCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlQ29udGV4dCgpIHtcclxuICAgICAgICBjb25zdCBjdHggPSB7fTtcclxuICAgICAgICB0aGlzLnByb3BzLmZvckVhY2gocCA9PiB7XHJcbiAgICAgICAgICAgIGN0eFtwLnByb3BlcnR5Lm5hbWVdID0gcC52YWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmNoYW5nZXMuZm9yRWFjaChwID0+IHtcclxuICAgICAgICAgICAgY3R4W3AucHJvcGVydHkubmFtZV0gPSBwLnZhbHVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY29udGV4dCA9IGN0eDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaWRlbnRpZnkoaW5kZXgsIGl0ZW06IEFYUHJvcGVydHlDb25maWcpIHtcclxuICAgICAgICByZXR1cm4gaXRlbS5wcm9wZXJ0eS5uYW1lO1xyXG4gICAgfVxyXG5cclxufSJdfQ==
|
@@ -1,323 +0,0 @@
|
|
1
|
-
import { __awaiter, __decorate, __metadata } from "tslib";
|
2
|
-
import { Component, ViewEncapsulation, Input, ElementRef, HostBinding, ComponentFactoryResolver, ViewChild, ViewContainerRef, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ComponentRef } from '@angular/core';
|
3
|
-
import { AXObjectUtil, AXRenderService } from '@acorex/core';
|
4
|
-
import { AXPopupService, AXPropertyDecorators, AXPropertyDecorator, AXLoadingService } from '@acorex/components';
|
5
|
-
import { AXWidgetConfigComponent } from './widget-config.component';
|
6
|
-
import { AXTranslator } from '@acorex/core';
|
7
|
-
import { AXWidgetSaveComponent } from './widget-save.component';
|
8
|
-
let AXWidgetHostComponent = class AXWidgetHostComponent {
|
9
|
-
constructor(ref, componentFactoryResolver, rendererService, cdr, popup, loadingService) {
|
10
|
-
this.ref = ref;
|
11
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
12
|
-
this.rendererService = rendererService;
|
13
|
-
this.cdr = cdr;
|
14
|
-
this.popup = popup;
|
15
|
-
this.loadingService = loadingService;
|
16
|
-
this._hasProps = false;
|
17
|
-
this._hasMenu = false;
|
18
|
-
this.configMenuItem = [
|
19
|
-
{
|
20
|
-
icon: 'far fa-ellipsis-h',
|
21
|
-
items: []
|
22
|
-
}
|
23
|
-
];
|
24
|
-
this.onRemove = new EventEmitter();
|
25
|
-
this.onConfigChanged = new EventEmitter();
|
26
|
-
this.onResized = new EventEmitter();
|
27
|
-
this.onSave = new EventEmitter();
|
28
|
-
this._isLoading = false;
|
29
|
-
this.sizeX = 1;
|
30
|
-
this.sizeY = 1;
|
31
|
-
this.col = 1;
|
32
|
-
this.row = 1;
|
33
|
-
}
|
34
|
-
get widget() {
|
35
|
-
return this._widget;
|
36
|
-
}
|
37
|
-
get element() {
|
38
|
-
return this.ref.nativeElement;
|
39
|
-
}
|
40
|
-
get isLoading() {
|
41
|
-
return this._isLoading;
|
42
|
-
}
|
43
|
-
set isLoading(v) {
|
44
|
-
this._isLoading = v;
|
45
|
-
if (this._loadingId && !v) {
|
46
|
-
this.loadingService.hide(this._loadingId);
|
47
|
-
this._loadingId = null;
|
48
|
-
}
|
49
|
-
if (v) {
|
50
|
-
this._loadingId = this.loadingService.show(this.ref.nativeElement);
|
51
|
-
}
|
52
|
-
}
|
53
|
-
get isConfigured() {
|
54
|
-
var _a;
|
55
|
-
return ((_a = this._widget) === null || _a === void 0 ? void 0 : _a.isConfigured) || false;
|
56
|
-
}
|
57
|
-
ngOnInit() {
|
58
|
-
this.isLoading = true;
|
59
|
-
}
|
60
|
-
ngAfterViewInit() {
|
61
|
-
var _a;
|
62
|
-
return __awaiter(this, void 0, void 0, function* () {
|
63
|
-
let component;
|
64
|
-
if (typeof this.config.component === 'string') {
|
65
|
-
const route = yield this.rendererService.findLoadedComponentByRoute(this.config.component, 20);
|
66
|
-
component = (_a = route) === null || _a === void 0 ? void 0 : _a.component;
|
67
|
-
}
|
68
|
-
else if (typeof this.config.component === 'function') {
|
69
|
-
component = this.config.component;
|
70
|
-
}
|
71
|
-
if (component == null) {
|
72
|
-
console.error(`Invalid Widget Component!`, this.config);
|
73
|
-
this.onRemove.emit(this);
|
74
|
-
return;
|
75
|
-
}
|
76
|
-
const widgetFactory = this.componentFactoryResolver.resolveComponentFactory(component);
|
77
|
-
this.componentRef = this.vc.createComponent(widgetFactory);
|
78
|
-
this._widget = this.componentRef.instance;
|
79
|
-
this._widget.provideValue = this.provideValue;
|
80
|
-
if (this._widget.onBusyChanged) {
|
81
|
-
this._widget.onBusyChanged.subscribe((d) => {
|
82
|
-
if (!this._widget.widgetSize) {
|
83
|
-
this._widget.setValue('widgetSize', [this.sizeX, this.sizeY]);
|
84
|
-
}
|
85
|
-
else {
|
86
|
-
this.setSizeFromOptions();
|
87
|
-
}
|
88
|
-
this.isLoading = d.value;
|
89
|
-
this.cdr.detectChanges();
|
90
|
-
});
|
91
|
-
}
|
92
|
-
if (this._widget.onConfiguredChanged) {
|
93
|
-
this._widget.onConfiguredChanged.subscribe(() => {
|
94
|
-
this.setSizeFromOptions();
|
95
|
-
});
|
96
|
-
}
|
97
|
-
//
|
98
|
-
if (this.config.options) {
|
99
|
-
Object.assign(this._widget, this.config.options);
|
100
|
-
}
|
101
|
-
this._hasProps = AXPropertyDecorators.getProperties(this._widget).length > 0;
|
102
|
-
this.isLoading = false;
|
103
|
-
this.config['__meta__'].instance = this;
|
104
|
-
this._widget['__meta__'] = {};
|
105
|
-
this._widget['__meta__'].config = this.config;
|
106
|
-
//
|
107
|
-
this.configMenuItem[0].items.push({
|
108
|
-
name: 'refresh',
|
109
|
-
icon: 'far fa-undo',
|
110
|
-
text: AXTranslator.get('common.refresh'),
|
111
|
-
onClick: () => {
|
112
|
-
var _a, _b;
|
113
|
-
(_b = (_a = this) === null || _a === void 0 ? void 0 : _a.widget) === null || _b === void 0 ? void 0 : _b.refresh();
|
114
|
-
}
|
115
|
-
});
|
116
|
-
//
|
117
|
-
if (this._hasProps) {
|
118
|
-
this.configMenuItem[0].items.push({
|
119
|
-
name: 'configs',
|
120
|
-
icon: 'far fa-cogs',
|
121
|
-
text: AXTranslator.get('common.configs'),
|
122
|
-
onClick: () => {
|
123
|
-
this.openConfigDialog();
|
124
|
-
}
|
125
|
-
});
|
126
|
-
}
|
127
|
-
this.configMenuItem[0].items.push({
|
128
|
-
name: 'save',
|
129
|
-
icon: 'far fa-save',
|
130
|
-
text: AXTranslator.get('common.save-as'),
|
131
|
-
onClick: () => {
|
132
|
-
this.openSaveDialog();
|
133
|
-
}
|
134
|
-
});
|
135
|
-
if (true) {
|
136
|
-
this.configMenuItem[0].items.push({
|
137
|
-
name: 'remove',
|
138
|
-
icon: 'far fa-times',
|
139
|
-
style: 'ax danger blank',
|
140
|
-
text: AXTranslator.get('common.remove'),
|
141
|
-
onClick: () => {
|
142
|
-
this.onRemove.emit(this);
|
143
|
-
}
|
144
|
-
});
|
145
|
-
}
|
146
|
-
this._hasMenu = this.configMenuItem[0].items.length > 0;
|
147
|
-
this.cdr.detectChanges();
|
148
|
-
});
|
149
|
-
}
|
150
|
-
setSizeFromOptions() {
|
151
|
-
this._widget.getValue('widgetSize').then(c => {
|
152
|
-
const oldSizeX = this.sizeX;
|
153
|
-
const oldSizeY = this.sizeY;
|
154
|
-
if (c && Array.isArray(c) && (oldSizeX !== c[0] || oldSizeY !== c[1])) {
|
155
|
-
this.config.sizeX = this.sizeX = c[0];
|
156
|
-
this.config.sizeY = this.sizeY = c[1];
|
157
|
-
this.onResized.emit({
|
158
|
-
component: this._widget,
|
159
|
-
config: this.config
|
160
|
-
});
|
161
|
-
}
|
162
|
-
this.cdr.detectChanges();
|
163
|
-
});
|
164
|
-
}
|
165
|
-
remove(e) {
|
166
|
-
e.preventDefault();
|
167
|
-
e.stopPropagation();
|
168
|
-
this.onRemove.emit(this);
|
169
|
-
return false;
|
170
|
-
}
|
171
|
-
handleConfig(e) {
|
172
|
-
e.preventDefault();
|
173
|
-
e.stopPropagation();
|
174
|
-
this.openConfigDialog();
|
175
|
-
return false;
|
176
|
-
}
|
177
|
-
openConfigDialog() {
|
178
|
-
const ppp = this.getMergedProps();
|
179
|
-
this.popup.open(AXWidgetConfigComponent, {
|
180
|
-
title: AXTranslator.get('common.configs'),
|
181
|
-
size: 'sm',
|
182
|
-
data: {
|
183
|
-
props: ppp.map(c => ({ property: c.options, value: this._widget[c.options.name] })),
|
184
|
-
widget: this.widget
|
185
|
-
}
|
186
|
-
}).then(c => {
|
187
|
-
if (c.data) {
|
188
|
-
if (!this.config.options) {
|
189
|
-
this.config.options = {};
|
190
|
-
}
|
191
|
-
c.data.forEach(p => {
|
192
|
-
this._widget.setValue(p.property.name, p.value);
|
193
|
-
this.config.options[p.property.name] = p.value;
|
194
|
-
});
|
195
|
-
this.emitConfigChanged();
|
196
|
-
this._widget.redraw();
|
197
|
-
this.cdr.detectChanges();
|
198
|
-
}
|
199
|
-
});
|
200
|
-
}
|
201
|
-
openSaveDialog() {
|
202
|
-
const ppp = this.getMergedProps();
|
203
|
-
this.popup.open(AXWidgetSaveComponent, {
|
204
|
-
title: AXTranslator.get('common.save-as'),
|
205
|
-
size: 'sm',
|
206
|
-
data: {
|
207
|
-
config: this.config,
|
208
|
-
props: ppp.map(c => ({ property: c.options, value: this._widget[c.options.name] }))
|
209
|
-
}
|
210
|
-
}).then(c => {
|
211
|
-
if (c.data) {
|
212
|
-
this.onSave.emit({
|
213
|
-
component: this._widget,
|
214
|
-
data: c.data
|
215
|
-
});
|
216
|
-
}
|
217
|
-
});
|
218
|
-
}
|
219
|
-
handleOptionClick(e) {
|
220
|
-
e.preventDefault();
|
221
|
-
e.stopPropagation();
|
222
|
-
this.openConfigDialog();
|
223
|
-
return false;
|
224
|
-
}
|
225
|
-
ngOnDestroy() {
|
226
|
-
this.vc.clear();
|
227
|
-
if (this.componentRef) {
|
228
|
-
this.componentRef.destroy();
|
229
|
-
}
|
230
|
-
}
|
231
|
-
getMergedProps() {
|
232
|
-
const ppp = AXObjectUtil.deepCopy(AXPropertyDecorators.getProperties(this._widget));
|
233
|
-
for (const key in this.config.props) {
|
234
|
-
if (Object.prototype.hasOwnProperty.call(this.config.props, key)) {
|
235
|
-
const newP = this.config.props[key];
|
236
|
-
const existPropDec = ppp.find(p => p.property === key);
|
237
|
-
if (existPropDec) {
|
238
|
-
Object.assign(existPropDec.options, newP);
|
239
|
-
}
|
240
|
-
}
|
241
|
-
}
|
242
|
-
return ppp;
|
243
|
-
}
|
244
|
-
emitConfigChanged() {
|
245
|
-
this.onConfigChanged.emit({
|
246
|
-
component: this._widget,
|
247
|
-
config: this.config
|
248
|
-
});
|
249
|
-
}
|
250
|
-
};
|
251
|
-
AXWidgetHostComponent.ctorParameters = () => [
|
252
|
-
{ type: ElementRef },
|
253
|
-
{ type: ComponentFactoryResolver },
|
254
|
-
{ type: AXRenderService },
|
255
|
-
{ type: ChangeDetectorRef },
|
256
|
-
{ type: AXPopupService },
|
257
|
-
{ type: AXLoadingService }
|
258
|
-
];
|
259
|
-
__decorate([
|
260
|
-
Input(),
|
261
|
-
__metadata("design:type", Function)
|
262
|
-
], AXWidgetHostComponent.prototype, "provideValue", void 0);
|
263
|
-
__decorate([
|
264
|
-
Output(),
|
265
|
-
__metadata("design:type", EventEmitter)
|
266
|
-
], AXWidgetHostComponent.prototype, "onRemove", void 0);
|
267
|
-
__decorate([
|
268
|
-
Output(),
|
269
|
-
__metadata("design:type", EventEmitter)
|
270
|
-
], AXWidgetHostComponent.prototype, "onConfigChanged", void 0);
|
271
|
-
__decorate([
|
272
|
-
Output(),
|
273
|
-
__metadata("design:type", EventEmitter)
|
274
|
-
], AXWidgetHostComponent.prototype, "onResized", void 0);
|
275
|
-
__decorate([
|
276
|
-
Output(),
|
277
|
-
__metadata("design:type", EventEmitter)
|
278
|
-
], AXWidgetHostComponent.prototype, "onSave", void 0);
|
279
|
-
__decorate([
|
280
|
-
Input(),
|
281
|
-
__metadata("design:type", Object)
|
282
|
-
], AXWidgetHostComponent.prototype, "config", void 0);
|
283
|
-
__decorate([
|
284
|
-
ViewChild('vc', { read: ViewContainerRef }),
|
285
|
-
__metadata("design:type", ViewContainerRef)
|
286
|
-
], AXWidgetHostComponent.prototype, "vc", void 0);
|
287
|
-
__decorate([
|
288
|
-
HostBinding('attr.data-size-x'),
|
289
|
-
Input(),
|
290
|
-
__metadata("design:type", Number)
|
291
|
-
], AXWidgetHostComponent.prototype, "sizeX", void 0);
|
292
|
-
__decorate([
|
293
|
-
HostBinding('attr.data-size-y'),
|
294
|
-
Input(),
|
295
|
-
__metadata("design:type", Number)
|
296
|
-
], AXWidgetHostComponent.prototype, "sizeY", void 0);
|
297
|
-
__decorate([
|
298
|
-
HostBinding('attr.data-col'),
|
299
|
-
Input(),
|
300
|
-
__metadata("design:type", Number)
|
301
|
-
], AXWidgetHostComponent.prototype, "col", void 0);
|
302
|
-
__decorate([
|
303
|
-
HostBinding('attr.data-row'),
|
304
|
-
Input(),
|
305
|
-
__metadata("design:type", Number)
|
306
|
-
], AXWidgetHostComponent.prototype, "row", void 0);
|
307
|
-
AXWidgetHostComponent = __decorate([
|
308
|
-
Component({
|
309
|
-
selector: 'ax-widget-host',
|
310
|
-
template: "<div class='widget-container'>\r\n <div class=\"widget-config-overlay\" *ngIf=\"!isConfigured\" (click)=\"handleConfig($event)\">\r\n <div class=\"widget-title\">{{config.title}}</div>\r\n <div class=\"widget-config-box\">\r\n <div class=\"config-title\">{{ 'widget-board.configure' | trans}}</div>\r\n <div class=\"config-icon\"><i class=\"fas fa-cogs fa-5x\" aria-hidden=\"true\"></i></div>\r\n </div>\r\n </div>\r\n <div class='widget-edit-overlay'>\r\n <div class='widget-edit-menu'>\r\n <button class=\"widget-edit-menu-button\" (click)=\"handleConfig($event)\"\r\n (mousedown)=\"$event.stopPropagation()\" *ngIf=\"_hasProps\" (mouseup)=\"$event.stopPropagation()\">\r\n <i class=\"far fa-cogs\" aria-hidden=\"true\"></i>\r\n </button>\r\n <button class=\"widget-edit-menu-button\" (click)=\"remove($event)\" (mousedown)=\"$event.stopPropagation()\"\r\n (mouseup)=\"$event.stopPropagation()\">\r\n <i class=\"far fa-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n <div class=\"widget-options-menu\" *ngIf=\"_hasMenu\">\r\n <ax-menu [items]='configMenuItem' direction=\"horizontal\"></ax-menu>\r\n </div>\r\n <!-- <ax-loading-panel [visible]=\"isBusy\">\r\n </ax-loading-panel> -->\r\n <div class=\"widget-content\">\r\n <ng-container #vc></ng-container>\r\n </div>\r\n</div>",
|
311
|
-
host: { class: 'ax widget-host', tabindex: '0' },
|
312
|
-
encapsulation: ViewEncapsulation.None,
|
313
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
314
|
-
}),
|
315
|
-
__metadata("design:paramtypes", [ElementRef,
|
316
|
-
ComponentFactoryResolver,
|
317
|
-
AXRenderService,
|
318
|
-
ChangeDetectorRef,
|
319
|
-
AXPopupService,
|
320
|
-
AXLoadingService])
|
321
|
-
], AXWidgetHostComponent);
|
322
|
-
export { AXWidgetHostComponent };
|
323
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWhvc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjb3JleC9sYXlvdXQvIiwic291cmNlcyI6WyJsaWIvd2lkZ2V0LWJvYXJkL3dpZGdldC1ob3N0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFBRSxLQUFLLEVBQ3hCLFVBQVUsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsU0FBUyxFQUM1RCxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUMvRCxpQkFBaUIsRUFBRSxZQUFZLEVBQ2xDLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBY2hFLElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXFCO0lBK0U5QixZQUNZLEdBQStCLEVBQy9CLHdCQUFrRCxFQUNsRCxlQUFnQyxFQUNoQyxHQUFzQixFQUN0QixLQUFxQixFQUNyQixjQUFnQztRQUxoQyxRQUFHLEdBQUgsR0FBRyxDQUE0QjtRQUMvQiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUE5RTVDLGNBQVMsR0FBWSxL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QyxrQkFBa0IsQ0FBQztJQUMvQixLQUFLLEVBQUU7O29EQUNVO0FBSWxCO0lBRkMsV0FBVyxDQUFDLGVBQWUsQ0FBQztJQUM1QixLQUFLLEVBQUU7O2tEQUNRO0FBS2hCO0lBRkMsV0FBVyxDQUFDLGVBQWUsQ0FBQztJQUM1QixLQUFLLEVBQUU7O2tEQUNRO0FBek1QLHFCQUFxQjtJQVJqQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsZ0JBQWdCO1FBQzFCLHUvQ0FBMkM7UUFDM0MsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDaEQsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7UUFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07S0FDbEQsQ0FBQztxQ0FrRm1CLFVBQVU7UUFDVyx3QkFBd0I7UUFDakMsZUFBZTtRQUMzQixpQkFBaUI7UUFDZixjQUFjO1FBQ0wsZ0JBQWdCO0dBckZuQyxxQkFBcUIsQ0EyVGpDO1NBM1RZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsXHJcbiAgICBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBWaWV3Q2hpbGQsXHJcbiAgICBWaWV3Q29udGFpbmVyUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50UmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYV2lkZ2V0Q29uZmlnLCBBWFdpZGdldENvbXBvbmVudCwgQVhXaWRnZXRDb25maWdDaGFuZ2VkLCBBWFdpZGdldENvbmZpZ1NhdmVkRXZlbnQgfSBmcm9tICcuL3dpZGdldC5jbGFzcyc7XHJcbmltcG9ydCB7IEFYT2JqZWN0VXRpbCwgQVhSZW5kZXJTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UsIEFYUHJvcGVydHlEZWNvcmF0b3JzLCBBWFByb3BlcnR5RGVjb3JhdG9yLCBBWExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzJztcclxuaW1wb3J0IHsgQVhXaWRnZXRDb25maWdDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldC1jb25maWcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQVhNZW51SXRlbSB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IEFYV2lkZ2V0U2F2ZUNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LXNhdmUuY29tcG9uZW50JztcclxuXHJcblxyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXgtd2lkZ2V0LWhvc3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi93aWRnZXQtaG9zdC5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgaG9zdDogeyBjbGFzczogJ2F4IHdpZGdldC1ob3N0JywgdGFiaW5kZXg6ICcwJyB9LFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQVhXaWRnZXRIb3N0Q29tcG9uZW50IHtcclxuXHJcbiAgICBwcml2YXRlIF93aWRnZXQ6IEFYV2lkZ2V0Q29tcG9uZW50O1xyXG4gICAgcHVibGljIGdldCB3aWRnZXQoKTogQVhXaWRnZXRDb21wb25lbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl93aWRnZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhc1Byb3BzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICAgIF9oYXNNZW51OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHByb3ZpZGVWYWx1ZTogKGU6IGFueSkgPT4gYW55O1xyXG5cclxuXHJcbiAgICBnZXQgZWxlbWVudCgpOiBIVE1MRGl2RWxlbWVudCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbmZpZ01lbnVJdGVtOiBBWE1lbnVJdGVtW10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBpY29uOiAnZmFyIGZhLWVsbGlwc2lzLWgnLFxyXG4gICAgICAgICAgICBpdGVtczogW11cclxuICAgICAgICB9XHJcbiAgICBdO1xyXG5cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIG9uUmVtb3ZlOiBFdmVudEVtaXR0ZXI8QVhXaWRnZXRIb3N0Q29tcG9uZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhXaWRnZXRIb3N0Q29tcG9uZW50PigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgb25Db25maWdDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhXaWRnZXRDb25maWdDaGFuZ2VkPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhXaWRnZXRDb25maWdDaGFuZ2VkPigpO1xyXG5cclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIG9uUmVzaXplZDogRXZlbnRFbWl0dGVyPEFYV2lkZ2V0Q29uZmlnQ2hhbmdlZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYV2lkZ2V0Q29uZmlnQ2hhbmdlZD4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIG9uU2F2ZTogRXZlbnRFbWl0dGVyPEFYV2lkZ2V0Q29uZmlnU2F2ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYV2lkZ2V0Q29uZmlnU2F2ZWRFdmVudD4oKTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgY29uZmlnOiBBWFdpZGdldENvbmZpZztcclxuXHJcbiAgICBAVmlld0NoaWxkKCd2YycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KVxyXG4gICAgdmM6IFZpZXdDb250YWluZXJSZWY7XHJcblxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xyXG4gICAgLy9wcml2YXRlIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLy8gZ2V0IGlzQnVzeSgpIHtcclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5fd2lkZ2V0Py5pc0J1c3kgfHwgdGhpcy5pc0xvYWRpbmc7XHJcbiAgICAvLyB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgX2xvYWRpbmdJZDogbnVtYmVyO1xyXG5cclxuICAgIHByaXZhdGUgX2lzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGdldCBpc0xvYWRpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9hZGluZztcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgaXNMb2FkaW5nKHY6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9pc0xvYWRpbmcgPSB2O1xyXG4gICAgICAgIGlmICh0aGlzLl9sb2FkaW5nSWQgJiYgIXYpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5oaWRlKHRoaXMuX2xvYWRpbmdJZCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJZCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJZCA9IHRoaXMubG9hZGluZ1NlcnZpY2Uuc2hvdyh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGdldCBpc0NvbmZpZ3VyZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpZGdldD8uaXNDb25maWd1cmVkIHx8IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sXHJcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyU2VydmljZTogQVhSZW5kZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIHBvcHVwOiBBWFBvcHVwU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBBWExvYWRpbmdTZXJ2aWNlXHJcblxyXG4gICAgKSB7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICBsZXQgY29tcG9uZW50OiBhbnk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy5jb21wb25lbnQgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gYXdhaXQgdGhpcy5yZW5kZXJlclNlcnZpY2UuZmluZExvYWRlZENvbXBvbmVudEJ5Um91dGUodGhpcy5jb25maWcuY29tcG9uZW50LCAyMCk7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudCA9IHJvdXRlPy5jb21wb25lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy5jb21wb25lbnQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgY29tcG9uZW50ID0gdGhpcy5jb25maWcuY29tcG9uZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29tcG9uZW50ID09IG51bGwpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgSW52YWxpZCBXaWRnZXQgQ29tcG9uZW50IWAsIHRoaXMuY29uZmlnKTtcclxuICAgICAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KHRoaXMpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB3aWRnZXRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50KTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmMuY3JlYXRlQ29tcG9uZW50KHdpZGdldEZhY3RvcnkpO1xyXG4gICAgICAgIHRoaXMuX3dpZGdldCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIEFYV2lkZ2V0Q29tcG9uZW50O1xyXG4gICAgICAgIHRoaXMuX3dpZGdldC5wcm92aWRlVmFsdWUgPSB0aGlzLnByb3ZpZGVWYWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5fd2lkZ2V0Lm9uQnVzeUNoYW5nZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fd2lkZ2V0Lm9uQnVzeUNoYW5nZWQuc3Vic2NyaWJlKChkKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3dpZGdldC53aWRnZXRTaXplKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fd2lkZ2V0LnNldFZhbHVlKCd3aWRnZXRTaXplJywgW3RoaXMuc2l6ZVgsIHRoaXMuc2l6ZVldKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U2l6ZUZyb21PcHRpb25zKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGQudmFsdWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fd2lkZ2V0Lm9uQ29uZmlndXJlZENoYW5nZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fd2lkZ2V0Lm9uQ29uZmlndXJlZENoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2l6ZUZyb21PcHRpb25zKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL1xyXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fd2lkZ2V0LCB0aGlzLmNvbmZpZy5vcHRpb25zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5faGFzUHJvcHMgPSBBWFByb3BlcnR5RGVjb3JhdG9ycy5nZXRQcm9wZXJ0aWVzKHRoaXMuX3dpZGdldCkubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbmZpZ1snX19tZXRhX18nXS5pbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgdGhpcy5fd2lkZ2V0WydfX21ldGFfXyddID0ge307XHJcbiAgICAgICAgdGhpcy5fd2lkZ2V0WydfX21ldGFfXyddLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgdGhpcy5jb25maWdNZW51SXRlbVswXS5pdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogJ3JlZnJlc2gnLFxyXG4gICAgICAgICAgICBpY29uOiAnZmFyIGZhLXVuZG8nLFxyXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24ucmVmcmVzaCcpLFxyXG4gICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzPy53aWRnZXQ/LnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vXHJcbiAgICAgICAgaWYgKHRoaXMuX2hhc1Byb3BzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlnTWVudUl0ZW1bMF0uaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnY29uZmlncycsXHJcbiAgICAgICAgICAgICAgICBpY29uOiAnZmFyIGZhLWNvZ3MnLFxyXG4gICAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgnY29tbW9uLmNvbmZpZ3MnKSxcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5Db25maWdEaWFsb2coKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY29uZmlnTWVudUl0ZW1bMF0uaXRlbXMucHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6ICdzYXZlJyxcclxuICAgICAgICAgICAgaWNvbjogJ2ZhciBmYS1zYXZlJyxcclxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgnY29tbW9uLnNhdmUtYXMnKSxcclxuICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuU2F2ZURpYWxvZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maWdNZW51SXRlbVswXS5pdGVtcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdyZW1vdmUnLFxyXG4gICAgICAgICAgICAgICAgaWNvbjogJ2ZhciBmYS10aW1lcycsXHJcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2F4IGRhbmdlciBibGFuaycsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24ucmVtb3ZlJyksXHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5faGFzTWVudSA9IHRoaXMuY29uZmlnTWVudUl0ZW1bMF0uaXRlbXMubGVuZ3RoID4gMDtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZS14JylcclxuICAgIEBJbnB1dCgpXHJcbiAgICBzaXplWDogbnVtYmVyID0gMTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplLXknKVxyXG4gICAgQElucHV0KClcclxuICAgIHNpemVZOiBudW1iZXIgPSAxO1xyXG5cclxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLWNvbCcpXHJcbiAgICBASW5wdXQoKVxyXG4gICAgY29sOiBudW1iZXIgPSAxO1xyXG5cclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1yb3cnKVxyXG4gICAgQElucHV0KClcclxuICAgIHJvdzogbnVtYmVyID0gMTtcclxuXHJcblxyXG4gICAgcHJpdmF0ZSBzZXRTaXplRnJvbU9wdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5fd2lkZ2V0LmdldFZhbHVlKCd3aWRnZXRTaXplJykudGhlbihjID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgb2xkU2l6ZVggPSB0aGlzLnNpemVYO1xyXG4gICAgICAgICAgICBjb25zdCBvbGRTaXplWSA9IHRoaXMuc2l6ZVk7XHJcbiAgICAgICAgICAgIGlmIChjICYmIEFycmF5LmlzQXJyYXkoYykgJiYgKG9sZFNpemVYICE9PSBjWzBdIHx8IG9sZFNpemVZICE9PSBjWzFdKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2l6ZVggPSB0aGlzLnNpemVYID0gY1swXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNpemVZID0gdGhpcy5zaXplWSA9IGNbMV07XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uUmVzaXplZC5lbWl0KHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuX3dpZGdldCxcclxuICAgICAgICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlKGU6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB0aGlzLm9uUmVtb3ZlLmVtaXQodGhpcyk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUNvbmZpZyhlOiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5vcGVuQ29uZmlnRGlhbG9nKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb3BlbkNvbmZpZ0RpYWxvZygpIHtcclxuICAgICAgICBjb25zdCBwcHAgPSB0aGlzLmdldE1lcmdlZFByb3BzKCk7XHJcbiAgICAgICAgdGhpcy5wb3B1cC5vcGVuKEFYV2lkZ2V0Q29uZmlnQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24uY29uZmlncycpLFxyXG4gICAgICAgICAgICBzaXplOiAnc20nLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBwcm9wczogcHBwLm1hcChjID0+ICh7IHByb3BlcnR5OiBjLm9wdGlvbnMsIHZhbHVlOiB0aGlzLl93aWRnZXRbYy5vcHRpb25zLm5hbWVdIH0pKSxcclxuICAgICAgICAgICAgICAgIHdpZGdldDogdGhpcy53aWRnZXRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pLnRoZW4oYyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb25maWcub3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMgPSB7fTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGMuZGF0YS5mb3JFYWNoKHAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3dpZGdldC5zZXRWYWx1ZShwLnByb3BlcnR5Lm5hbWUsIHAudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnNbcC5wcm9wZXJ0eS5uYW1lXSA9IHAudmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1pdENvbmZpZ0NoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3dpZGdldC5yZWRyYXcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb3BlblNhdmVEaWFsb2coKSB7XHJcbiAgICAgICAgY29uc3QgcHBwID0gdGhpcy5nZXRNZXJnZWRQcm9wcygpO1xyXG4gICAgICAgIHRoaXMucG9wdXAub3BlbihBWFdpZGdldFNhdmVDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgdGl0bGU6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5zYXZlLWFzJyksXHJcbiAgICAgICAgICAgIHNpemU6ICdzbScsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXHJcbiAgICAgICAgICAgICAgICBwcm9wczogcHBwLm1hcChjID0+ICh7IHByb3BlcnR5OiBjLm9wdGlvbnMsIHZhbHVlOiB0aGlzLl93aWRnZXRbYy5vcHRpb25zLm5hbWVdIH0pKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkudGhlbihjID0+IHtcclxuICAgICAgICAgICAgaWYgKGMuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLl93aWRnZXQsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogYy5kYXRhXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgaGFuZGxlT3B0aW9uQ2xpY2soZTogTW91c2VFdmVudCkge1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMub3BlbkNvbmZpZ0RpYWxvZygpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnZjLmNsZWFyKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRNZXJnZWRQcm9wcygpOiBBWFByb3BlcnR5RGVjb3JhdG9yW10ge1xyXG4gICAgICAgIGNvbnN0IHBwcCA9IEFYT2JqZWN0VXRpbC5kZWVwQ29weShBWFByb3BlcnR5RGVjb3JhdG9ycy5nZXRQcm9wZXJ0aWVzKHRoaXMuX3dpZGdldCkpIGFzIEFYUHJvcGVydHlEZWNvcmF0b3JbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmNvbmZpZy5wcm9wcykge1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29uZmlnLnByb3BzLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQID0gdGhpcy5jb25maWcucHJvcHNba2V5XTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0UHJvcERlYyA9IHBwcC5maW5kKHAgPT4gcC5wcm9wZXJ0eSA9PT0ga2V5KTtcclxuICAgICAgICAgICAgICAgIGlmIChleGlzdFByb3BEZWMpIHtcclxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGV4aXN0UHJvcERlYy5vcHRpb25zLCBuZXdQKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHBwO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZW1pdENvbmZpZ0NoYW5nZWQoKSB7XHJcbiAgICAgICAgdGhpcy5vbkNvbmZpZ0NoYW5nZWQuZW1pdCh7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5fd2lkZ2V0LFxyXG4gICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG59Il19
|
@@ -1,79 +0,0 @@
|
|
1
|
-
import { __decorate } from "tslib";
|
2
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, } from '@angular/core';
|
3
|
-
import { AXHtmlUtil, AXObjectUtil, AXTranslator } from '@acorex/core';
|
4
|
-
import { AXBasePopupPageComponent } from '@acorex/components';
|
5
|
-
let AXWidgetSaveComponent = class AXWidgetSaveComponent extends AXBasePopupPageComponent {
|
6
|
-
constructor() {
|
7
|
-
super(...arguments);
|
8
|
-
this.props = [];
|
9
|
-
}
|
10
|
-
getFooterButtons() {
|
11
|
-
return [
|
12
|
-
{
|
13
|
-
name: 'okay',
|
14
|
-
submitBehavior: true,
|
15
|
-
text: AXTranslator.get('common.confirm'),
|
16
|
-
style: 'ax success'
|
17
|
-
},
|
18
|
-
{
|
19
|
-
name: 'cancel',
|
20
|
-
cancelBehavior: true,
|
21
|
-
text: AXTranslator.get('common.cancel'),
|
22
|
-
style: 'ax light'
|
23
|
-
}
|
24
|
-
];
|
25
|
-
}
|
26
|
-
ngOnInit() {
|
27
|
-
var _a, _b;
|
28
|
-
const titleProp = this.props.find(c => c.property.name === 'title' || c.property.name === 'name');
|
29
|
-
const title = ((_a = titleProp) === null || _a === void 0 ? void 0 : _a.value) || this.config.title;
|
30
|
-
const pp = {};
|
31
|
-
(_b = this.props) === null || _b === void 0 ? void 0 : _b.forEach(c => {
|
32
|
-
pp[c.property.name] = c.property;
|
33
|
-
});
|
34
|
-
this.data = {
|
35
|
-
component: this.config.component,
|
36
|
-
title,
|
37
|
-
uniqueName: `${this.config.uniqueName}-${AXHtmlUtil.getUID()}`,
|
38
|
-
options: AXObjectUtil.deepJSONClone(this.config.options),
|
39
|
-
props: AXObjectUtil.deepJSONClone(pp)
|
40
|
-
};
|
41
|
-
this.displayProps = this.props
|
42
|
-
.filter(c => c.property.visible !== false)
|
43
|
-
.sort((a, b) => a.property.order - b.property.order)
|
44
|
-
.map(c => ({
|
45
|
-
name: c.property.name,
|
46
|
-
title: c.property.title,
|
47
|
-
allow: true
|
48
|
-
}));
|
49
|
-
}
|
50
|
-
onFooterButtonClick(e) {
|
51
|
-
if (e.name === 'cancel') {
|
52
|
-
this.close();
|
53
|
-
}
|
54
|
-
if (e.name === 'okay') {
|
55
|
-
this.props.forEach(p => {
|
56
|
-
const pp = this.displayProps.find(c => c.name === p.property.name);
|
57
|
-
if (pp == null || !pp.allow) {
|
58
|
-
let ppp = this.data.props[p.property.name];
|
59
|
-
if (ppp) {
|
60
|
-
ppp.visible = false;
|
61
|
-
}
|
62
|
-
else {
|
63
|
-
ppp = { visible: false };
|
64
|
-
}
|
65
|
-
}
|
66
|
-
});
|
67
|
-
this.close(this.data);
|
68
|
-
}
|
69
|
-
}
|
70
|
-
};
|
71
|
-
AXWidgetSaveComponent = __decorate([
|
72
|
-
Component({
|
73
|
-
template: "<ax-page>\r\n <ax-page-content>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <ax-form-group>\r\n <ax-label>{{'common.title' | trans}}</ax-label>\r\n <ax-text-box [(value)]=\"data.title\"></ax-text-box>\r\n </ax-form-group>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <ax-form-group>\r\n <ax-label>{{'common.description' | trans}}</ax-label>\r\n <ax-text-area [(value)]=\"data.description\"></ax-text-area>\r\n </ax-form-group>\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\">\r\n <div class=\"col-12\">\r\n <ax-form-group>\r\n <ax-label>{{'common.uniquename' | trans}}</ax-label>\r\n <ax-text-box></ax-text-box>\r\n </ax-form-group>\r\n </div>\r\n </div> -->\r\n <div class=\"row\" style=\"margin-block-end: var(--ax-size-md);margin-block-start: var(--ax-size-md);\">\r\n <div class=\"col-12\">\r\n <ax-fieldset caption=\"{{'widget-board.configurable-props' | trans}}\">\r\n <div class=\"row\" *ngFor=\"let prop of displayProps\">\r\n <div class=\"col-12\" style=\"margin-block-end: var(--ax-size-sm)\">\r\n <ax-check-box [(value)]=\"prop.allow\" label=\"{{ prop.title | trans }}\">\r\n\r\n </ax-check-box>\r\n </div>\r\n </div>\r\n </ax-fieldset>\r\n </div>\r\n </div>\r\n </div>\r\n </ax-page-content>\r\n</ax-page>",
|
74
|
-
encapsulation: ViewEncapsulation.None,
|
75
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
76
|
-
})
|
77
|
-
], AXWidgetSaveComponent);
|
78
|
-
export { AXWidgetSaveComponent };
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXNhdmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFjb3JleC9sYXlvdXQvIiwic291cmNlcyI6WyJsaWIvd2lkZ2V0LWJvYXJkL3dpZGdldC1zYXZlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEdBRTFCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEYsT0FBTyxFQUEwQyx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBU3RHLElBQWEscUJBQXFCLEdBQWxDLE1BQWEscUJBQXNCLFNBQVEsd0JBQXdCO0lBQW5FOztRQUVJLFVBQUssR0FBdUIsRUFBRSxDQUFDO0lBb0VuQyxDQUFDO0lBL0RHLGdCQUFnQjtRQUNaLE9BQU87WUFDSDtnQkFDSSxJQUFJLEVBQUUsTUFBTTtnQkFDWixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsSUFBSSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ3hDLEtBQUssRUFBRSxZQUFZO2FBQ3RCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLElBQUksRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztnQkFDdkMsS0FBSyxFQUFFLFVBQVU7YUFDcEI7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFFBQVE7O1FBQ0osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDbEcsTUFBTSxLQUFL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biAgICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhXaWRnZXRDb25maWcsIEFYV2lkZ2V0U2F2ZUFzRGF0YSB9IGZyb20gJy4vd2lkZ2V0LmNsYXNzJztcclxuaW1wb3J0IHsgQVhCdXR0b25JdGVtLCBBWEh0bWxVdGlsLCBBWE9iamVjdFV0aWwsIEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IEFYUHJvcGVydHlDb25maWcsIEFYTWVudUl0ZW1DbGlja0V2ZW50LCBBWEJhc2VQb3B1cFBhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMnO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vd2lkZ2V0LXNhdmUuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYV2lkZ2V0U2F2ZUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZVBvcHVwUGFnZUNvbXBvbmVudCB7XHJcbiAgICBjb25maWc6IEFYV2lkZ2V0Q29uZmlnO1xyXG4gICAgcHJvcHM6IEFYUHJvcGVydHlDb25maWdbXSA9IFtdO1xyXG4gICAgZGlzcGxheVByb3BzOiB7IG5hbWU6IHN0cmluZywgdGl0bGU6IHN0cmluZywgYWxsb3c6IGJvb2xlYW4gfVtdO1xyXG5cclxuICAgIGRhdGE6IEFYV2lkZ2V0U2F2ZUFzRGF0YTtcclxuXHJcbiAgICBnZXRGb290ZXJCdXR0b25zKCk6IEFYQnV0dG9uSXRlbVtdIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAnb2theScsXHJcbiAgICAgICAgICAgICAgICBzdWJtaXRCZWhhdmlvcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5jb25maXJtJyksXHJcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2F4IHN1Y2Nlc3MnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICdjYW5jZWwnLFxyXG4gICAgICAgICAgICAgICAgY2FuY2VsQmVoYXZpb3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24uY2FuY2VsJyksXHJcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2F4IGxpZ2h0J1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBjb25zdCB0aXRsZVByb3AgPSB0aGlzLnByb3BzLmZpbmQoYyA9PiBjLnByb3BlcnR5Lm5hbWUgPT09ICd0aXRsZScgfHwgYy5wcm9wZXJ0eS5uYW1lID09PSAnbmFtZScpO1xyXG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGl0bGVQcm9wPy52YWx1ZSB8fCB0aGlzLmNvbmZpZy50aXRsZTtcclxuICAgICAgICBjb25zdCBwcDogYW55ID0ge307XHJcbiAgICAgICAgdGhpcy5wcm9wcz8uZm9yRWFjaChjID0+IHtcclxuICAgICAgICAgICAgcHBbYy5wcm9wZXJ0eS5uYW1lXSA9IGMucHJvcGVydHk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5kYXRhID0ge1xyXG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuY29uZmlnLmNvbXBvbmVudCxcclxuICAgICAgICAgICAgdGl0bGUsXHJcbiAgICAgICAgICAgIHVuaXF1ZU5hbWU6IGAke3RoaXMuY29uZmlnLnVuaXF1ZU5hbWV9LSR7QVhIdG1sVXRpbC5nZXRVSUQoKX1gLFxyXG4gICAgICAgICAgICBvcHRpb25zOiBBWE9iamVjdFV0aWwuZGVlcEpTT05DbG9uZSh0aGlzLmNvbmZpZy5vcHRpb25zKSxcclxuICAgICAgICAgICAgcHJvcHM6IEFYT2JqZWN0VXRpbC5kZWVwSlNPTkNsb25lKHBwKVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5UHJvcHMgPSB0aGlzLnByb3BzXHJcbiAgICAgICAgICAgIC5maWx0ZXIoYyA9PiBjLnByb3BlcnR5LnZpc2libGUgIT09IGZhbHNlKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5wcm9wZXJ0eS5vcmRlciAtIGIucHJvcGVydHkub3JkZXIpXHJcbiAgICAgICAgICAgIC5tYXAoYyA9PiAoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogYy5wcm9wZXJ0eS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGMucHJvcGVydHkudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBhbGxvdzogdHJ1ZVxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBvbkZvb3RlckJ1dHRvbkNsaWNrKGU6IEFYTWVudUl0ZW1DbGlja0V2ZW50KSB7XHJcbiAgICAgICAgaWYgKGUubmFtZSA9PT0gJ2NhbmNlbCcpIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZS5uYW1lID09PSAnb2theScpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5mb3JFYWNoKHAgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcHAgPSB0aGlzLmRpc3BsYXlQcm9wcy5maW5kKGMgPT4gYy5uYW1lID09PSBwLnByb3BlcnR5Lm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBwID09IG51bGwgfHwgIXBwLmFsbG93KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBwcCA9IHRoaXMuZGF0YS5wcm9wc1twLnByb3BlcnR5Lm5hbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcHApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHBwLnZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBwcCA9IHsgdmlzaWJsZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKHRoaXMuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|