@acorex/layout 6.5.79 → 6.5.81
Sign up to get free protection for your applications and to get access to all the features.
@@ -423,11 +423,11 @@ export class AXWidgetBoardComponent {
|
|
423
423
|
});
|
424
424
|
}
|
425
425
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXWidgetBoardComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
426
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXWidgetBoardComponent, selector: "ax-widget-board", inputs: { galleryItems: "galleryItems", tileSize: "tileSize", gapSize: "gapSize", readonly: "readonly", provideValue: "provideValue" }, outputs: { onConfigChanged: "onConfigChanged", onWidgetSave: "onWidgetSave" }, host: { classAttribute: "ax widget-board" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "widgetHosts", predicate: AXWidgetHostComponent, descendants: true }], ngImport: i0, template: "<div class=\"widgets-container\" [class.rtl]=\"rtl\" #container>\n <ax-widget-host *ngFor=\"let w of widgets;trackBy: trackByFn\" [config]='w' [sizeX]=\"w.sizeX\" [readonly]=\"readonly || w.readonly\"\n [sizeY]=\"w.sizeY\" [col]=\"w.col\" [row]=\"w.row\" (onRemove)=\"handleOnRemove($event)\" (onSave)=\"handleOnSave($event)\"\n (onConfigChanged)=\"handleOnConfigChanged($event)\" (onResized)=\"handleOnResizedChanged($event)\"\n [provideValue]=\"provideValue\">\n </ax-widget-host>\n</div>\n", styles: [".widget-board{display:inline-block;margin:15px 20px;min-width:calc(100% - 40px);min-height:calc(100% - 34px);--animate-duration: .5s;background-repeat:no-repeat}.widget-board.grid-background{background-repeat:repeat!important}.widget-board.grid-background .widgets-container .widget-host{touch-action:none;-webkit-user-select:none;user-select:none}.widget-board.grid-background .widgets-container .widget-host .widget-edit-overlay{display:block;cursor:move}.widget-board.grid-background .widgets-container .widget-host.widget-dragging{z-index:1000}.widget-board.grid-background .widgets-container .widget-host:focus{outline-width:1px;outline-style:solid;outline-color:var(--ax-primary-color)}.widget-board.grid-background .widget-blank-placeholder{background:var(--ax-primary-trans-light-color);position:absolute}.widget-board .widgets-container{position:relative;touch-action:none}.widget-board .widgets-container.rtl .widget-host .widget-options-menu{right:unset!important;left:0!important}.widget-board .widgets-container .widget-host{position:absolute;background:#fff;box-shadow:2px 2px 3px #dadada;z-index:0}.widget-board .widgets-container .widget-host .widget-content{width:100%;height:100%;display:flex;flex-direction:column}.widget-board .widgets-container .widget-host .widget-content .widget-title{padding:var(--ax-size-md);text-align:start;font-size:1.5em;position:absolute}.widget-board .widgets-container .widget-host .widget-edit-loading{display:none;background
|
426
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXWidgetBoardComponent, selector: "ax-widget-board", inputs: { galleryItems: "galleryItems", tileSize: "tileSize", gapSize: "gapSize", readonly: "readonly", provideValue: "provideValue" }, outputs: { onConfigChanged: "onConfigChanged", onWidgetSave: "onWidgetSave" }, host: { classAttribute: "ax widget-board" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "widgetHosts", predicate: AXWidgetHostComponent, descendants: true }], ngImport: i0, template: "<div class=\"widgets-container\" [class.rtl]=\"rtl\" #container>\n <ax-widget-host *ngFor=\"let w of widgets;trackBy: trackByFn\" [config]='w' [sizeX]=\"w.sizeX\" [readonly]=\"readonly || w.readonly\"\n [sizeY]=\"w.sizeY\" [col]=\"w.col\" [row]=\"w.row\" (onRemove)=\"handleOnRemove($event)\" (onSave)=\"handleOnSave($event)\"\n (onConfigChanged)=\"handleOnConfigChanged($event)\" (onResized)=\"handleOnResizedChanged($event)\"\n [provideValue]=\"provideValue\">\n </ax-widget-host>\n</div>\n", styles: [".widget-board{display:inline-block;margin:15px 20px;min-width:calc(100% - 40px);min-height:calc(100% - 34px);--animate-duration: .5s;background-repeat:no-repeat}.widget-board.grid-background{background-repeat:repeat!important}.widget-board.grid-background .widgets-container .widget-host{touch-action:none;-webkit-user-select:none;user-select:none}.widget-board.grid-background .widgets-container .widget-host .widget-edit-overlay{display:block;cursor:move}.widget-board.grid-background .widgets-container .widget-host.widget-dragging{z-index:1000}.widget-board.grid-background .widgets-container .widget-host:focus{outline-width:1px;outline-style:solid;outline-color:var(--ax-primary-color)}.widget-board.grid-background .widget-blank-placeholder{background:var(--ax-primary-trans-light-color);position:absolute}.widget-board .widgets-container{position:relative;touch-action:none}.widget-board .widgets-container.rtl .widget-host .widget-options-menu{right:unset!important;left:0!important}.widget-board .widgets-container .widget-host{position:absolute;background:#fff;box-shadow:2px 2px 3px #dadada;z-index:0}.widget-board .widgets-container .widget-host .widget-content{width:100%;height:100%;display:flex;flex-direction:column}.widget-board .widgets-container .widget-host .widget-content .widget-title{padding:var(--ax-size-md);text-align:start;font-size:1.5em;position:absolute}.widget-board .widgets-container .widget-host .widget-edit-loading{display:none;background:#ffffffd9;position:absolute;width:100%;height:100%;top:0;left:0;z-index:2;display:flex}.widget-board .widgets-container .widget-host .widget-config-overlay{position:absolute;background:#fff;width:100%;height:100%;top:0;left:0;z-index:1;padding:var(--ax-size-md);cursor:pointer}.widget-board .widgets-container .widget-host .widget-config-overlay:hover .widget-title{text-decoration:underline}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-title{text-align:start;font-size:1.5em}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-config-box{align-self:center;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--ax-gray-dark-color)}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-config-box .config-title{font-size:1.2em;margin-bottom:var(--ax-size-md)}.widget-board .widgets-container .widget-host .widget-edit-overlay{display:none;background:#ffffff80;position:absolute;width:100%;height:100%;top:0;left:0;z-index:10}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu{margin:6px;text-align:end;float:inline-end;opacity:1;transition:opacity 1s ease}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu .widget-edit-menu-button{display:inline-block;background-color:#f0f0f0;border-radius:1px;border:2px solid #fff;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding:0;height:32px;width:32px;cursor:pointer;color:#666}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu .widget-edit-menu-button:hover{border-color:#a6a6a6;background-color:#c8c8c8}.widget-board .widgets-container .widget-host .widget-options-menu{display:none;position:absolute;top:0;right:0;z-index:2;cursor:pointer;padding:2px 5px}.widget-board .widgets-container .widget-host .widget-options-menu:hover{background-color:#f0f0f0}.widget-board .widgets-container .widget-host .widget-container{padding:1px;height:100%}.widget-board .widgets-container .widget-host .widget-container:hover .widget-options-menu{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i2.AXWidgetHostComponent, selector: "ax-widget-host", inputs: ["provideValue", "config", "readonly", "sizeX", "sizeY", "col", "row"], outputs: ["onRemove", "onConfigChanged", "onResized", "onSave"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
427
427
|
}
|
428
428
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXWidgetBoardComponent, decorators: [{
|
429
429
|
type: Component,
|
430
|
-
args: [{ selector: 'ax-widget-board', host: { class: 'ax widget-board' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"widgets-container\" [class.rtl]=\"rtl\" #container>\n <ax-widget-host *ngFor=\"let w of widgets;trackBy: trackByFn\" [config]='w' [sizeX]=\"w.sizeX\" [readonly]=\"readonly || w.readonly\"\n [sizeY]=\"w.sizeY\" [col]=\"w.col\" [row]=\"w.row\" (onRemove)=\"handleOnRemove($event)\" (onSave)=\"handleOnSave($event)\"\n (onConfigChanged)=\"handleOnConfigChanged($event)\" (onResized)=\"handleOnResizedChanged($event)\"\n [provideValue]=\"provideValue\">\n </ax-widget-host>\n</div>\n", styles: [".widget-board{display:inline-block;margin:15px 20px;min-width:calc(100% - 40px);min-height:calc(100% - 34px);--animate-duration: .5s;background-repeat:no-repeat}.widget-board.grid-background{background-repeat:repeat!important}.widget-board.grid-background .widgets-container .widget-host{touch-action:none;-webkit-user-select:none;user-select:none}.widget-board.grid-background .widgets-container .widget-host .widget-edit-overlay{display:block;cursor:move}.widget-board.grid-background .widgets-container .widget-host.widget-dragging{z-index:1000}.widget-board.grid-background .widgets-container .widget-host:focus{outline-width:1px;outline-style:solid;outline-color:var(--ax-primary-color)}.widget-board.grid-background .widget-blank-placeholder{background:var(--ax-primary-trans-light-color);position:absolute}.widget-board .widgets-container{position:relative;touch-action:none}.widget-board .widgets-container.rtl .widget-host .widget-options-menu{right:unset!important;left:0!important}.widget-board .widgets-container .widget-host{position:absolute;background:#fff;box-shadow:2px 2px 3px #dadada;z-index:0}.widget-board .widgets-container .widget-host .widget-content{width:100%;height:100%;display:flex;flex-direction:column}.widget-board .widgets-container .widget-host .widget-content .widget-title{padding:var(--ax-size-md);text-align:start;font-size:1.5em;position:absolute}.widget-board .widgets-container .widget-host .widget-edit-loading{display:none;background
|
430
|
+
args: [{ selector: 'ax-widget-board', host: { class: 'ax widget-board' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"widgets-container\" [class.rtl]=\"rtl\" #container>\n <ax-widget-host *ngFor=\"let w of widgets;trackBy: trackByFn\" [config]='w' [sizeX]=\"w.sizeX\" [readonly]=\"readonly || w.readonly\"\n [sizeY]=\"w.sizeY\" [col]=\"w.col\" [row]=\"w.row\" (onRemove)=\"handleOnRemove($event)\" (onSave)=\"handleOnSave($event)\"\n (onConfigChanged)=\"handleOnConfigChanged($event)\" (onResized)=\"handleOnResizedChanged($event)\"\n [provideValue]=\"provideValue\">\n </ax-widget-host>\n</div>\n", styles: [".widget-board{display:inline-block;margin:15px 20px;min-width:calc(100% - 40px);min-height:calc(100% - 34px);--animate-duration: .5s;background-repeat:no-repeat}.widget-board.grid-background{background-repeat:repeat!important}.widget-board.grid-background .widgets-container .widget-host{touch-action:none;-webkit-user-select:none;user-select:none}.widget-board.grid-background .widgets-container .widget-host .widget-edit-overlay{display:block;cursor:move}.widget-board.grid-background .widgets-container .widget-host.widget-dragging{z-index:1000}.widget-board.grid-background .widgets-container .widget-host:focus{outline-width:1px;outline-style:solid;outline-color:var(--ax-primary-color)}.widget-board.grid-background .widget-blank-placeholder{background:var(--ax-primary-trans-light-color);position:absolute}.widget-board .widgets-container{position:relative;touch-action:none}.widget-board .widgets-container.rtl .widget-host .widget-options-menu{right:unset!important;left:0!important}.widget-board .widgets-container .widget-host{position:absolute;background:#fff;box-shadow:2px 2px 3px #dadada;z-index:0}.widget-board .widgets-container .widget-host .widget-content{width:100%;height:100%;display:flex;flex-direction:column}.widget-board .widgets-container .widget-host .widget-content .widget-title{padding:var(--ax-size-md);text-align:start;font-size:1.5em;position:absolute}.widget-board .widgets-container .widget-host .widget-edit-loading{display:none;background:#ffffffd9;position:absolute;width:100%;height:100%;top:0;left:0;z-index:2;display:flex}.widget-board .widgets-container .widget-host .widget-config-overlay{position:absolute;background:#fff;width:100%;height:100%;top:0;left:0;z-index:1;padding:var(--ax-size-md);cursor:pointer}.widget-board .widgets-container .widget-host .widget-config-overlay:hover .widget-title{text-decoration:underline}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-title{text-align:start;font-size:1.5em}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-config-box{align-self:center;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--ax-gray-dark-color)}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-config-box .config-title{font-size:1.2em;margin-bottom:var(--ax-size-md)}.widget-board .widgets-container .widget-host .widget-edit-overlay{display:none;background:#ffffff80;position:absolute;width:100%;height:100%;top:0;left:0;z-index:10}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu{margin:6px;text-align:end;float:inline-end;opacity:1;transition:opacity 1s ease}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu .widget-edit-menu-button{display:inline-block;background-color:#f0f0f0;border-radius:1px;border:2px solid #fff;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding:0;height:32px;width:32px;cursor:pointer;color:#666}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu .widget-edit-menu-button:hover{border-color:#a6a6a6;background-color:#c8c8c8}.widget-board .widgets-container .widget-host .widget-options-menu{display:none;position:absolute;top:0;right:0;z-index:2;cursor:pointer;padding:2px 5px}.widget-board .widgets-container .widget-host .widget-options-menu:hover{background-color:#f0f0f0}.widget-board .widgets-container .widget-host .widget-container{padding:1px;height:100%}.widget-board .widgets-container .widget-host .widget-container:hover .widget-options-menu{display:block}\n"] }]
|
431
431
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { container: [{
|
432
432
|
type: ViewChild,
|
433
433
|
args: ['container']
|
@@ -55,7 +55,7 @@ export class AXWidgetHostComponent {
|
|
55
55
|
this._loadingId = null;
|
56
56
|
}
|
57
57
|
if (v) {
|
58
|
-
this._loadingId = this.loadingService.show(this.ref.nativeElement);
|
58
|
+
// this._loadingId = this.loadingService.show(this.ref.nativeElement);
|
59
59
|
}
|
60
60
|
}
|
61
61
|
get isConfigured() {
|
@@ -70,7 +70,7 @@ export class AXWidgetHostComponent {
|
|
70
70
|
this.loadingService = loadingService;
|
71
71
|
}
|
72
72
|
ngOnInit() {
|
73
|
-
this.isLoading = true;
|
73
|
+
// this.isLoading = true;
|
74
74
|
}
|
75
75
|
async ngAfterViewInit() {
|
76
76
|
let component;
|
@@ -98,7 +98,7 @@ export class AXWidgetHostComponent {
|
|
98
98
|
else {
|
99
99
|
this.setSizeFromOptions();
|
100
100
|
}
|
101
|
-
this.isLoading = d.value;
|
101
|
+
// this.isLoading = d.value;
|
102
102
|
this.cdr.detectChanges();
|
103
103
|
});
|
104
104
|
}
|
@@ -308,4 +308,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
308
308
|
}, {
|
309
309
|
type: Input
|
310
310
|
}] } });
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWhvc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9sYXlvdXQvc3JjL2xpYi93aWRnZXQtYm9hcmQvd2lkZ2V0LWhvc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9sYXlvdXQvc3JjL2xpYi93aWRnZXQtYm9hcmQvd2lkZ2V0LWhvc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFBRSxLQUFLLEVBQ3hCLFVBQVUsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsU0FBUyxFQUM1RCxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUMvRCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBdUIsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQWNoRSxNQUFNLE9BQU8scUJBQXFCO0lBcUZsQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUF4RkosT0FBTyxDQUFvQjtJQUNuQyxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELFNBQVMsR0FBWSxLQUFLLENBQUM7SUFHM0IsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUcxQixZQUFZLENBQWtCO0lBRzlCLElBQUksT0FBTztRQUNQLE9BQU8sSUFB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LENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTtrUUFnQi9DLFlBQVk7c0JBRFgsS0FBSztnQkFrQk4sUUFBUTtzQkFEUCxNQUFNO2dCQUlQLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxTQUFTO3NCQURSLE1BQU07Z0JBSVAsTUFBTTtzQkFETCxNQUFNO2dCQUlQLE1BQU07c0JBREwsS0FBSztnQkFJTixFQUFFO3NCQURELFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQU0zQyxRQUFRO3NCQURQLEtBQUs7Z0JBK0lOLEtBQUs7c0JBRkosV0FBVzt1QkFBQyxrQkFBa0I7O3NCQUM5QixLQUFLO2dCQUtOLEtBQUs7c0JBRkosV0FBVzt1QkFBQyxrQkFBa0I7O3NCQUM5QixLQUFLO2dCQUtOLEdBQUc7c0JBRkYsV0FBVzt1QkFBQyxlQUFlOztzQkFDM0IsS0FBSztnQkFNTixHQUFHO3NCQUZGLFdBQVc7dUJBQUMsZUFBZTs7c0JBQzNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbiwgSW5wdXQsXG4gICAgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhXaWRnZXRDb25maWcsIEFYV2lkZ2V0Q29tcG9uZW50LCBBWFdpZGdldENvbmZpZ0NoYW5nZWQsIEFYV2lkZ2V0Q29uZmlnU2F2ZWRFdmVudCB9IGZyb20gJy4vd2lkZ2V0LmNsYXNzJztcbmltcG9ydCB7IEFYT2JqZWN0VXRpbCwgQVhSZW5kZXJTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcbmltcG9ydCB7IEFYUG9wdXBTZXJ2aWNlLCBBWFByb3BlcnR5RGVjb3JhdG9ycywgQVhQcm9wZXJ0eURlY29yYXRvciwgQVhMb2FkaW5nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWFdpZGdldENvbmZpZ0NvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LWNvbmZpZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhNZW51SXRlbSB9IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3IgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xuaW1wb3J0IHsgQVhXaWRnZXRTYXZlQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtc2F2ZS5jb21wb25lbnQnO1xuXG5cblxuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXgtd2lkZ2V0LWhvc3QnLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vd2lkZ2V0LWhvc3QuY29tcG9uZW50Lmh0bWxcIixcbiAgICBob3N0OiB7IGNsYXNzOiAnYXggd2lkZ2V0LWhvc3QnLCB0YWJpbmRleDogJzAnIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIEFYV2lkZ2V0SG9zdENvbXBvbmVudCB7XG5cbiAgICBwcml2YXRlIF93aWRnZXQ6IEFYV2lkZ2V0Q29tcG9uZW50O1xuICAgIHB1YmxpYyBnZXQgd2lkZ2V0KCk6IEFYV2lkZ2V0Q29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpZGdldDtcbiAgICB9XG5cbiAgICBfaGFzUHJvcHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuXG4gICAgX2hhc01lbnU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHJvdmlkZVZhbHVlOiAoZTogYW55KSA9PiBhbnk7XG5cblxuICAgIGdldCBlbGVtZW50KCk6IEhUTUxEaXZFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG5cbiAgICBjb25maWdNZW51SXRlbTogQVhNZW51SXRlbVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBpY29uOiAnZmFyIGZhLWVsbGlwc2lzLWgnLFxuICAgICAgICAgICAgaXRlbXM6IFtdXG4gICAgICAgIH1cbiAgICBdO1xuXG5cbiAgICBAT3V0cHV0KClcbiAgICBvblJlbW92ZTogRXZlbnRFbWl0dGVyPEFYV2lkZ2V0SG9zdENvbXBvbmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYV2lkZ2V0SG9zdENvbXBvbmVudD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG9uQ29uZmlnQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYV2lkZ2V0Q29uZmlnQ2hhbmdlZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYV2lkZ2V0Q29uZmlnQ2hhbmdlZD4oKTtcblxuXG4gICAgQE91dHB1dCgpXG4gICAgb25SZXNpemVkOiBFdmVudEVtaXR0ZXI8QVhXaWRnZXRDb25maWdDaGFuZ2VkPiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhXaWRnZXRDb25maWdDaGFuZ2VkPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgb25TYXZlOiBFdmVudEVtaXR0ZXI8QVhXaWRnZXRDb25maWdTYXZlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhXaWRnZXRDb25maWdTYXZlZEV2ZW50PigpO1xuXG4gICAgQElucHV0KClcbiAgICBjb25maWc6IEFYV2lkZ2V0Q29uZmlnO1xuXG4gICAgQFZpZXdDaGlsZCgndmMnLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSlcbiAgICB2YzogVmlld0NvbnRhaW5lclJlZjtcblxuXG5cbiAgICBASW5wdXQoKVxuICAgIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XG4gICAgLy9wcml2YXRlIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvLyBnZXQgaXNCdXN5KCkge1xuICAgIC8vICAgICByZXR1cm4gdGhpcy5fd2lkZ2V0Py5pc0J1c3kgfHwgdGhpcy5pc0xvYWRpbmc7XG4gICAgLy8gfVxuXG5cbiAgICBwcml2YXRlIF9sb2FkaW5nSWQ6IG51bWJlcjtcblxuICAgIHByaXZhdGUgX2lzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2FkaW5nO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGlzTG9hZGluZyh2OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzTG9hZGluZyA9IHY7XG4gICAgICAgIGlmICh0aGlzLl9sb2FkaW5nSWQgJiYgIXYpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2UuaGlkZSh0aGlzLl9sb2FkaW5nSWQpO1xuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0lkID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0lkID0gdGhpcy5sb2FkaW5nU2VydmljZS5zaG93KHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBnZXQgaXNDb25maWd1cmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2lkZ2V0Py5pc0NvbmZpZ3VyZWQgfHwgZmFsc2U7XG4gICAgfVxuXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyU2VydmljZTogQVhSZW5kZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcG9wdXA6IEFYUG9wdXBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBBWExvYWRpbmdTZXJ2aWNlXG5cbiAgICApIHtcblxuICAgIH1cblxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB9XG5cblxuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudDogYW55O1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlnLmNvbXBvbmVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gYXdhaXQgdGhpcy5yZW5kZXJlclNlcnZpY2UuZmluZExvYWRlZENvbXBvbmVudEJ5Um91dGUodGhpcy5jb25maWcuY29tcG9uZW50LCAyMCk7XG4gICAgICAgICAgICBjb21wb25lbnQgPSByb3V0ZT8uY29tcG9uZW50O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy5jb21wb25lbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbXBvbmVudCA9IHRoaXMuY29uZmlnLmNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9uZW50ID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgV2lkZ2V0IENvbXBvbmVudCFgLCB0aGlzLmNvbmZpZyk7XG4gICAgICAgICAgICB0aGlzLm9uUmVtb3ZlLmVtaXQodGhpcyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aWRnZXRGYWN0b3J5ID0gdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcG9uZW50KTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLnZjLmNyZWF0ZUNvbXBvbmVudCh3aWRnZXRGYWN0b3J5KTtcbiAgICAgICAgdGhpcy5fd2lkZ2V0ID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgQVhXaWRnZXRDb21wb25lbnQ7XG4gICAgICAgIHRoaXMuX3dpZGdldC5wcm92aWRlVmFsdWUgPSB0aGlzLnByb3ZpZGVWYWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX3dpZGdldC5vbkJ1c3lDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLl93aWRnZXQub25CdXN5Q2hhbmdlZC5zdWJzY3JpYmUoKGQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3dpZGdldC53aWRnZXRTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3dpZGdldC5zZXRWYWx1ZSgnd2lkZ2V0U2l6ZScsIFt0aGlzLnNpemVYLCB0aGlzLnNpemVZXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNpemVGcm9tT3B0aW9ucygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGQudmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3dpZGdldC5vbkNvbmZpZ3VyZWRDaGFuZ2VkKSB7XG4gICAgICAgICAgICB0aGlzLl93aWRnZXQub25Db25maWd1cmVkQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2l6ZUZyb21PcHRpb25zKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvL1xuICAgICAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucykge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl93aWRnZXQsIHRoaXMuY29uZmlnLm9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hhc1Byb3BzID0gQVhQcm9wZXJ0eURlY29yYXRvcnMuZ2V0UHJvcGVydGllcyh0aGlzLl93aWRnZXQpLmxlbmd0aCA+IDA7XG5cbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jb25maWdbJ19fbWV0YV9fJ10uaW5zdGFuY2UgPSB0aGlzO1xuICAgICAgICB0aGlzLl93aWRnZXRbJ19fbWV0YV9fJ10gPSB7fTtcbiAgICAgICAgdGhpcy5fd2lkZ2V0WydfX21ldGFfXyddLmNvbmZpZyA9IHRoaXMuY29uZmlnO1xuICAgICAgICAvL1xuICAgICAgICB0aGlzLmNvbmZpZ01lbnVJdGVtWzBdLml0ZW1zLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogJ3JlZnJlc2gnLFxuICAgICAgICAgICAgaWNvbjogJ2ZhciBmYS11bmRvJyxcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5yZWZyZXNoJyksXG4gICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcz8ud2lkZ2V0Py5yZWZyZXNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvL1xuICAgICAgICBpZiAodGhpcy5faGFzUHJvcHMpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnTWVudUl0ZW1bMF0uaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2NvbmZpZ3MnLFxuICAgICAgICAgICAgICAgIGljb246ICdmYXIgZmEtY29ncycsXG4gICAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgnY29tbW9uLmNvbmZpZ3MnKSxcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3BlbkNvbmZpZ0RpYWxvZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29uZmlnTWVudUl0ZW1bMF0uaXRlbXMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiAnc2F2ZScsXG4gICAgICAgICAgICBpY29uOiAnZmFyIGZhLXNhdmUnLFxuICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgnY29tbW9uLnNhdmUtYXMnKSxcbiAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5TYXZlRGlhbG9nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5jb25maWdNZW51SXRlbVswXS5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiAncmVtb3ZlJyxcbiAgICAgICAgICAgICAgICBpY29uOiAnZmFyIGZhLXRpbWVzJyxcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2F4IGRhbmdlciBibGFuaycsXG4gICAgICAgICAgICAgICAgdGV4dDogQVhUcmFuc2xhdG9yLmdldCgnY29tbW9uLnJlbW92ZScpLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2hhc01lbnUgPSB0aGlzLmNvbmZpZ01lbnVJdGVtWzBdLml0ZW1zLmxlbmd0aCA+IDA7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplLXgnKVxuICAgIEBJbnB1dCgpXG4gICAgc2l6ZVg6IG51bWJlciA9IDE7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1zaXplLXknKVxuICAgIEBJbnB1dCgpXG4gICAgc2l6ZVk6IG51bWJlciA9IDE7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1jb2wnKVxuICAgIEBJbnB1dCgpXG4gICAgY29sOiBudW1iZXIgPSAxO1xuXG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1yb3cnKVxuICAgIEBJbnB1dCgpXG4gICAgcm93OiBudW1iZXIgPSAxO1xuXG5cbiAgICBwcml2YXRlIHNldFNpemVGcm9tT3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy5fd2lkZ2V0LmdldFZhbHVlKCd3aWRnZXRTaXplJykudGhlbihjID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9sZFNpemVYID0gdGhpcy5zaXplWDtcbiAgICAgICAgICAgIGNvbnN0IG9sZFNpemVZID0gdGhpcy5zaXplWTtcbiAgICAgICAgICAgIGlmIChjICYmIEFycmF5LmlzQXJyYXkoYykgJiYgKG9sZFNpemVYICE9PSBjWzBdIHx8IG9sZFNpemVZICE9PSBjWzFdKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNpemVYID0gdGhpcy5zaXplWCA9IGNbMF07XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuc2l6ZVkgPSB0aGlzLnNpemVZID0gY1sxXTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUmVzaXplZC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLl93aWRnZXQsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlKGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoIXRoaXMucmVhZG9ubHkpXG4gICAgICAgICAgICB0aGlzLm9uUmVtb3ZlLmVtaXQodGhpcyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBoYW5kbGVDb25maWcoZTogTW91c2VFdmVudCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICghdGhpcy5yZWFkb25seSlcbiAgICAgICAgICAgIHRoaXMub3BlbkNvbmZpZ0RpYWxvZygpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuQ29uZmlnRGlhbG9nKCkge1xuICAgICAgICBjb25zdCBwcHAgPSB0aGlzLmdldE1lcmdlZFByb3BzKCk7XG4gICAgICAgIHRoaXMucG9wdXAub3BlbihBWFdpZGdldENvbmZpZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgdGl0bGU6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5jb25maWdzJyksXG4gICAgICAgICAgICBzaXplOiAnc20nLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIHByb3BzOiBwcHAubWFwKGMgPT4gKHsgcHJvcGVydHk6IGMub3B0aW9ucywgdmFsdWU6IHRoaXMuX3dpZGdldFtjLm9wdGlvbnMubmFtZV0gfSkpLFxuICAgICAgICAgICAgICAgIHdpZGdldDogdGhpcy53aWRnZXRcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbihjID0+IHtcbiAgICAgICAgICAgIGlmIChjLmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29uZmlnLm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcub3B0aW9ucyA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjLmRhdGEuZm9yRWFjaChwID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fd2lkZ2V0LnNldFZhbHVlKHAucHJvcGVydHkubmFtZSwgcC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnNbcC5wcm9wZXJ0eS5uYW1lXSA9IHAudmFsdWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q29uZmlnQ2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpZGdldC5yZWRyYXcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlblNhdmVEaWFsb2coKSB7XG4gICAgICAgIGNvbnN0IHBwcCA9IHRoaXMuZ2V0TWVyZ2VkUHJvcHMoKTtcbiAgICAgICAgdGhpcy5wb3B1cC5vcGVuKEFYV2lkZ2V0U2F2ZUNvbXBvbmVudCwge1xuICAgICAgICAgICAgdGl0bGU6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5zYXZlLWFzJyksXG4gICAgICAgICAgICBzaXplOiAnc20nLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHBwcC5tYXAoYyA9PiAoeyBwcm9wZXJ0eTogYy5vcHRpb25zLCB2YWx1ZTogdGhpcy5fd2lkZ2V0W2Mub3B0aW9ucy5uYW1lXSB9KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkudGhlbihjID0+IHtcbiAgICAgICAgICAgIGlmIChjLmRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLl93aWRnZXQsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGMuZGF0YVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgaGFuZGxlT3B0aW9uQ2xpY2soZTogTW91c2VFdmVudCkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMub3BlbkNvbmZpZ0RpYWxvZygpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMudmMuY2xlYXIoKTtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE1lcmdlZFByb3BzKCk6IEFYUHJvcGVydHlEZWNvcmF0b3JbXSB7XG4gICAgICAgIGNvbnN0IHBwcCA9IEFYT2JqZWN0VXRpbC5kZWVwQ29weShBWFByb3BlcnR5RGVjb3JhdG9ycy5nZXRQcm9wZXJ0aWVzKHRoaXMuX3dpZGdldCkpIGFzIEFYUHJvcGVydHlEZWNvcmF0b3JbXTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jb25maWcucHJvcHMpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5jb25maWcucHJvcHMsIGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdQID0gdGhpcy5jb25maWcucHJvcHNba2V5XTtcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdFByb3BEZWMgPSBwcHAuZmluZChwID0+IHAucHJvcGVydHkgPT09IGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0UHJvcERlYykge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGV4aXN0UHJvcERlYy5vcHRpb25zLCBuZXdQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBwcDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVtaXRDb25maWdDaGFuZ2VkKCkge1xuICAgICAgICB0aGlzLm9uQ29uZmlnQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5fd2lkZ2V0LFxuICAgICAgICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZ1xuICAgICAgICB9KTtcbiAgICB9XG5cbn0iLCI8ZGl2IGNsYXNzPSd3aWRnZXQtY29udGFpbmVyJz5cbiAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0LWNvbmZpZy1vdmVybGF5XCIgKm5nSWY9XCIhaXNDb25maWd1cmVkXCIgKGNsaWNrKT1cImhhbmRsZUNvbmZpZygkZXZlbnQpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXQtdGl0bGVcIj57e2NvbmZpZy50aXRsZX19PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXQtY29uZmlnLWJveFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmZpZy10aXRsZVwiPnt7ICd3aWRnZXQtYm9hcmQuY29uZmlndXJlJyB8IHRyYW5zfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctaWNvblwiICpuZ0lmPVwiIXJlYWRvbmx5XCI+PGkgY2xhc3M9XCJmYXMgZmEtY29ncyBmYS01eFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz0nd2lkZ2V0LWVkaXQtb3ZlcmxheScgPlxuICAgICAgICA8ZGl2IGNsYXNzPSd3aWRnZXQtZWRpdC1tZW51Jz5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3aWRnZXQtZWRpdC1tZW51LWJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVDb25maWcoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIiAqbmdJZj1cIl9oYXNQcm9wc1wiIChtb3VzZXVwKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNvZ3NcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3aWRnZXQtZWRpdC1tZW51LWJ1dHRvblwiIChjbGljayk9XCJyZW1vdmUoJGV2ZW50KVwiIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAobW91c2V1cCk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS10aW1lc1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXQtb3B0aW9ucy1tZW51XCIgICpuZ0lmPVwiX2hhc01lbnUgJiYgIXJlYWRvbmx5XCI+XG4gICAgICAgIDxheC1tZW51IFtpdGVtc109J2NvbmZpZ01lbnVJdGVtJyBkaXJlY3Rpb249XCJob3Jpem9udGFsXCI+PC9heC1tZW51PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gPGF4LWxvYWRpbmctcGFuZWwgW3Zpc2libGVdPVwiaXNCdXN5XCI+XG4gICAgPC9heC1sb2FkaW5nLXBhbmVsPiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0LWNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAjdmM+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWhvc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9sYXlvdXQvc3JjL2xpYi93aWRnZXQtYm9hcmQvd2lkZ2V0LWhvc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9sYXlvdXQvc3JjL2xpYi93aWRnZXQtYm9hcmQvd2lkZ2V0LWhvc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFBRSxLQUFLLEVBQ3hCLFVBQVUsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsU0FBUyxFQUM1RCxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUMvRCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBdUIsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQWNoRSxNQUFNLE9BQU8scUJBQXFCO0lBcUZsQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUF4RkosT0FBTyxDQUFvQjtJQUNuQyxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELFNBQVMsR0FBWSxLQUFLLENBQUM7SUFHM0IsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUcxQixZQUFZLENBQWtCO0lBRzlCLElBQUksT0FBTztRQUNQLE9BQU8sSUFB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QU07c0JBREwsTUFBTTtnQkFJUCxNQUFNO3NCQURMLEtBQUs7Z0JBSU4sRUFBRTtzQkFERCxTQUFTO3VCQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFNM0MsUUFBUTtzQkFEUCxLQUFLO2dCQStJTixLQUFLO3NCQUZKLFdBQVc7dUJBQUMsa0JBQWtCOztzQkFDOUIsS0FBSztnQkFLTixLQUFLO3NCQUZKLFdBQVc7dUJBQUMsa0JBQWtCOztzQkFDOUIsS0FBSztnQkFLTixHQUFHO3NCQUZGLFdBQVc7dUJBQUMsZUFBZTs7c0JBQzNCLEtBQUs7Z0JBTU4sR0FBRztzQkFGRixXQUFXO3VCQUFDLGVBQWU7O3NCQUMzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sIElucHV0LFxuICAgIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYV2lkZ2V0Q29uZmlnLCBBWFdpZGdldENvbXBvbmVudCwgQVhXaWRnZXRDb25maWdDaGFuZ2VkLCBBWFdpZGdldENvbmZpZ1NhdmVkRXZlbnQgfSBmcm9tICcuL3dpZGdldC5jbGFzcyc7XG5pbXBvcnQgeyBBWE9iamVjdFV0aWwsIEFYUmVuZGVyU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQgeyBBWFBvcHVwU2VydmljZSwgQVhQcm9wZXJ0eURlY29yYXRvcnMsIEFYUHJvcGVydHlEZWNvcmF0b3IsIEFYTG9hZGluZ1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhXaWRnZXRDb25maWdDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldC1jb25maWcuY29tcG9uZW50JztcbmltcG9ydCB7IEFYTWVudUl0ZW0gfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcbmltcG9ydCB7IEFYV2lkZ2V0U2F2ZUNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LXNhdmUuY29tcG9uZW50JztcblxuXG5cblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2F4LXdpZGdldC1ob3N0JyxcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3dpZGdldC1ob3N0LmNvbXBvbmVudC5odG1sXCIsXG4gICAgaG9zdDogeyBjbGFzczogJ2F4IHdpZGdldC1ob3N0JywgdGFiaW5kZXg6ICcwJyB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5cbmV4cG9ydCBjbGFzcyBBWFdpZGdldEhvc3RDb21wb25lbnQge1xuXG4gICAgcHJpdmF0ZSBfd2lkZ2V0OiBBWFdpZGdldENvbXBvbmVudDtcbiAgICBwdWJsaWMgZ2V0IHdpZGdldCgpOiBBWFdpZGdldENvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aWRnZXQ7XG4gICAgfVxuXG4gICAgX2hhc1Byb3BzOiBib29sZWFuID0gZmFsc2U7XG5cblxuICAgIF9oYXNNZW51OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHByb3ZpZGVWYWx1ZTogKGU6IGFueSkgPT4gYW55O1xuXG5cbiAgICBnZXQgZWxlbWVudCgpOiBIVE1MRGl2RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuXG4gICAgY29uZmlnTWVudUl0ZW06IEFYTWVudUl0ZW1bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgaWNvbjogJ2ZhciBmYS1lbGxpcHNpcy1oJyxcbiAgICAgICAgICAgIGl0ZW1zOiBbXVxuICAgICAgICB9XG4gICAgXTtcblxuXG4gICAgQE91dHB1dCgpXG4gICAgb25SZW1vdmU6IEV2ZW50RW1pdHRlcjxBWFdpZGdldEhvc3RDb21wb25lbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFdpZGdldEhvc3RDb21wb25lbnQ+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBvbkNvbmZpZ0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFdpZGdldENvbmZpZ0NoYW5nZWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFdpZGdldENvbmZpZ0NoYW5nZWQ+KCk7XG5cblxuICAgIEBPdXRwdXQoKVxuICAgIG9uUmVzaXplZDogRXZlbnRFbWl0dGVyPEFYV2lkZ2V0Q29uZmlnQ2hhbmdlZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYV2lkZ2V0Q29uZmlnQ2hhbmdlZD4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG9uU2F2ZTogRXZlbnRFbWl0dGVyPEFYV2lkZ2V0Q29uZmlnU2F2ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYV2lkZ2V0Q29uZmlnU2F2ZWRFdmVudD4oKTtcblxuICAgIEBJbnB1dCgpXG4gICAgY29uZmlnOiBBWFdpZGdldENvbmZpZztcblxuICAgIEBWaWV3Q2hpbGQoJ3ZjJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pXG4gICAgdmM6IFZpZXdDb250YWluZXJSZWY7XG5cblxuXG4gICAgQElucHV0KClcbiAgICByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuICAgIC8vcHJpdmF0ZSBpc0xvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLy8gZ2V0IGlzQnVzeSgpIHtcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuX3dpZGdldD8uaXNCdXN5IHx8IHRoaXMuaXNMb2FkaW5nO1xuICAgIC8vIH1cblxuXG4gICAgcHJpdmF0ZSBfbG9hZGluZ0lkOiBudW1iZXI7XG5cbiAgICBwcml2YXRlIF9pc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgZ2V0IGlzTG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9hZGluZztcbiAgICB9XG4gICAgcHVibGljIHNldCBpc0xvYWRpbmcodjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9pc0xvYWRpbmcgPSB2O1xuICAgICAgICBpZiAodGhpcy5fbG9hZGluZ0lkICYmICF2KSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLmhpZGUodGhpcy5fbG9hZGluZ0lkKTtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJZCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIC8vIHRoaXMuX2xvYWRpbmdJZCA9IHRoaXMubG9hZGluZ1NlcnZpY2Uuc2hvdyh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZ2V0IGlzQ29uZmlndXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpZGdldD8uaXNDb25maWd1cmVkIHx8IGZhbHNlO1xuICAgIH1cblxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlclNlcnZpY2U6IEFYUmVuZGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHBvcHVwOiBBWFBvcHVwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogQVhMb2FkaW5nU2VydmljZVxuXG4gICAgKSB7XG5cbiAgICB9XG5cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvLyB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgfVxuXG5cbiAgICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGxldCBjb21wb25lbnQ6IGFueTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy5jb21wb25lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IGF3YWl0IHRoaXMucmVuZGVyZXJTZXJ2aWNlLmZpbmRMb2FkZWRDb21wb25lbnRCeVJvdXRlKHRoaXMuY29uZmlnLmNvbXBvbmVudCwgMjApO1xuICAgICAgICAgICAgY29tcG9uZW50ID0gcm91dGU/LmNvbXBvbmVudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb25maWcuY29tcG9uZW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLmNvbmZpZy5jb21wb25lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBvbmVudCA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIFdpZGdldCBDb21wb25lbnQhYCwgdGhpcy5jb25maWcpO1xuICAgICAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KHRoaXMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2lkZ2V0RmFjdG9yeSA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudCk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52Yy5jcmVhdGVDb21wb25lbnQod2lkZ2V0RmFjdG9yeSk7XG4gICAgICAgIHRoaXMuX3dpZGdldCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIEFYV2lkZ2V0Q29tcG9uZW50O1xuICAgICAgICB0aGlzLl93aWRnZXQucHJvdmlkZVZhbHVlID0gdGhpcy5wcm92aWRlVmFsdWU7XG4gICAgICAgIGlmICh0aGlzLl93aWRnZXQub25CdXN5Q2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5fd2lkZ2V0Lm9uQnVzeUNoYW5nZWQuc3Vic2NyaWJlKChkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl93aWRnZXQud2lkZ2V0U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl93aWRnZXQuc2V0VmFsdWUoJ3dpZGdldFNpemUnLCBbdGhpcy5zaXplWCwgdGhpcy5zaXplWV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTaXplRnJvbU9wdGlvbnMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5pc0xvYWRpbmcgPSBkLnZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl93aWRnZXQub25Db25maWd1cmVkQ2hhbmdlZCkge1xuICAgICAgICAgICAgdGhpcy5fd2lkZ2V0Lm9uQ29uZmlndXJlZENoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNpemVGcm9tT3B0aW9ucygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fd2lkZ2V0LCB0aGlzLmNvbmZpZy5vcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oYXNQcm9wcyA9IEFYUHJvcGVydHlEZWNvcmF0b3JzLmdldFByb3BlcnRpZXModGhpcy5fd2lkZ2V0KS5sZW5ndGggPiAwO1xuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29uZmlnWydfX21ldGFfXyddLmluc3RhbmNlID0gdGhpcztcbiAgICAgICAgdGhpcy5fd2lkZ2V0WydfX21ldGFfXyddID0ge307XG4gICAgICAgIHRoaXMuX3dpZGdldFsnX19tZXRhX18nXS5jb25maWcgPSB0aGlzLmNvbmZpZztcbiAgICAgICAgLy9cbiAgICAgICAgdGhpcy5jb25maWdNZW51SXRlbVswXS5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6ICdyZWZyZXNoJyxcbiAgICAgICAgICAgIGljb246ICdmYXIgZmEtdW5kbycsXG4gICAgICAgICAgICB0ZXh0OiBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24ucmVmcmVzaCcpLFxuICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXM/LndpZGdldD8ucmVmcmVzaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHRoaXMuX2hhc1Byb3BzKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ01lbnVJdGVtWzBdLml0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjb25maWdzJyxcbiAgICAgICAgICAgICAgICBpY29uOiAnZmFyIGZhLWNvZ3MnLFxuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5jb25maWdzJyksXG4gICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5Db25maWdEaWFsb2coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbmZpZ01lbnVJdGVtWzBdLml0ZW1zLnB1c2goe1xuICAgICAgICAgICAgbmFtZTogJ3NhdmUnLFxuICAgICAgICAgICAgaWNvbjogJ2ZhciBmYS1zYXZlJyxcbiAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5zYXZlLWFzJyksXG4gICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuU2F2ZURpYWxvZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnTWVudUl0ZW1bMF0uaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3JlbW92ZScsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2ZhciBmYS10aW1lcycsXG4gICAgICAgICAgICAgICAgc3R5bGU6ICdheCBkYW5nZXIgYmxhbmsnLFxuICAgICAgICAgICAgICAgIHRleHQ6IEFYVHJhbnNsYXRvci5nZXQoJ2NvbW1vbi5yZW1vdmUnKSxcbiAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmUuZW1pdCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9oYXNNZW51ID0gdGhpcy5jb25maWdNZW51SXRlbVswXS5pdGVtcy5sZW5ndGggPiAwO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZS14JylcbiAgICBASW5wdXQoKVxuICAgIHNpemVYOiBudW1iZXIgPSAxO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2l6ZS15JylcbiAgICBASW5wdXQoKVxuICAgIHNpemVZOiBudW1iZXIgPSAxO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtY29sJylcbiAgICBASW5wdXQoKVxuICAgIGNvbDogbnVtYmVyID0gMTtcblxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtcm93JylcbiAgICBASW5wdXQoKVxuICAgIHJvdzogbnVtYmVyID0gMTtcblxuXG4gICAgcHJpdmF0ZSBzZXRTaXplRnJvbU9wdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuX3dpZGdldC5nZXRWYWx1ZSgnd2lkZ2V0U2l6ZScpLnRoZW4oYyA9PiB7XG4gICAgICAgICAgICBjb25zdCBvbGRTaXplWCA9IHRoaXMuc2l6ZVg7XG4gICAgICAgICAgICBjb25zdCBvbGRTaXplWSA9IHRoaXMuc2l6ZVk7XG4gICAgICAgICAgICBpZiAoYyAmJiBBcnJheS5pc0FycmF5KGMpICYmIChvbGRTaXplWCAhPT0gY1swXSB8fCBvbGRTaXplWSAhPT0gY1sxXSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5zaXplWCA9IHRoaXMuc2l6ZVggPSBjWzBdO1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLnNpemVZID0gdGhpcy5zaXplWSA9IGNbMV07XG4gICAgICAgICAgICAgICAgdGhpcy5vblJlc2l6ZWQuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5fd2lkZ2V0LFxuICAgICAgICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbW92ZShlOiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKCF0aGlzLnJlYWRvbmx5KVxuICAgICAgICAgICAgdGhpcy5vblJlbW92ZS5lbWl0KHRoaXMpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaGFuZGxlQ29uZmlnKGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoIXRoaXMucmVhZG9ubHkpXG4gICAgICAgICAgICB0aGlzLm9wZW5Db25maWdEaWFsb2coKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3BlbkNvbmZpZ0RpYWxvZygpIHtcbiAgICAgICAgY29uc3QgcHBwID0gdGhpcy5nZXRNZXJnZWRQcm9wcygpO1xuICAgICAgICB0aGlzLnBvcHVwLm9wZW4oQVhXaWRnZXRDb25maWdDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHRpdGxlOiBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24uY29uZmlncycpLFxuICAgICAgICAgICAgc2l6ZTogJ3NtJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBwcm9wczogcHBwLm1hcChjID0+ICh7IHByb3BlcnR5OiBjLm9wdGlvbnMsIHZhbHVlOiB0aGlzLl93aWRnZXRbYy5vcHRpb25zLm5hbWVdIH0pKSxcbiAgICAgICAgICAgICAgICB3aWRnZXQ6IHRoaXMud2lkZ2V0XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oYyA9PiB7XG4gICAgICAgICAgICBpZiAoYy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbmZpZy5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLm9wdGlvbnMgPSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYy5kYXRhLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3dpZGdldC5zZXRWYWx1ZShwLnByb3BlcnR5Lm5hbWUsIHAudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5vcHRpb25zW3AucHJvcGVydHkubmFtZV0gPSBwLnZhbHVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdENvbmZpZ0NoYW5nZWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93aWRnZXQucmVkcmF3KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5TYXZlRGlhbG9nKCkge1xuICAgICAgICBjb25zdCBwcHAgPSB0aGlzLmdldE1lcmdlZFByb3BzKCk7XG4gICAgICAgIHRoaXMucG9wdXAub3BlbihBWFdpZGdldFNhdmVDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHRpdGxlOiBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24uc2F2ZS1hcycpLFxuICAgICAgICAgICAgc2l6ZTogJ3NtJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgICAgICAgICAgIHByb3BzOiBwcHAubWFwKGMgPT4gKHsgcHJvcGVydHk6IGMub3B0aW9ucywgdmFsdWU6IHRoaXMuX3dpZGdldFtjLm9wdGlvbnMubmFtZV0gfSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLnRoZW4oYyA9PiB7XG4gICAgICAgICAgICBpZiAoYy5kYXRhKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogdGhpcy5fd2lkZ2V0LFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjLmRhdGFcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIGhhbmRsZU9wdGlvbkNsaWNrKGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLm9wZW5Db25maWdEaWFsb2coKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnZjLmNsZWFyKCk7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRNZXJnZWRQcm9wcygpOiBBWFByb3BlcnR5RGVjb3JhdG9yW10ge1xuICAgICAgICBjb25zdCBwcHAgPSBBWE9iamVjdFV0aWwuZGVlcENvcHkoQVhQcm9wZXJ0eURlY29yYXRvcnMuZ2V0UHJvcGVydGllcyh0aGlzLl93aWRnZXQpKSBhcyBBWFByb3BlcnR5RGVjb3JhdG9yW107XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuY29uZmlnLnByb3BzKSB7XG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuY29uZmlnLnByb3BzLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3UCA9IHRoaXMuY29uZmlnLnByb3BzW2tleV07XG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RQcm9wRGVjID0gcHBwLmZpbmQocCA9PiBwLnByb3BlcnR5ID09PSBrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChleGlzdFByb3BEZWMpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihleGlzdFByb3BEZWMub3B0aW9ucywgbmV3UCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcHA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0Q29uZmlnQ2hhbmdlZCgpIHtcbiAgICAgICAgdGhpcy5vbkNvbmZpZ0NoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgICBjb21wb25lbnQ6IHRoaXMuX3dpZGdldCxcbiAgICAgICAgICAgIGNvbmZpZzogdGhpcy5jb25maWdcbiAgICAgICAgfSk7XG4gICAgfVxuXG59IiwiPGRpdiBjbGFzcz0nd2lkZ2V0LWNvbnRhaW5lcic+XG4gICAgPGRpdiBjbGFzcz1cIndpZGdldC1jb25maWctb3ZlcmxheVwiICpuZ0lmPVwiIWlzQ29uZmlndXJlZFwiIChjbGljayk9XCJoYW5kbGVDb25maWcoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0LXRpdGxlXCI+e3tjb25maWcudGl0bGV9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0LWNvbmZpZy1ib3hcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWctdGl0bGVcIj57eyAnd2lkZ2V0LWJvYXJkLmNvbmZpZ3VyZScgfCB0cmFuc319PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlnLWljb25cIiAqbmdJZj1cIiFyZWFkb25seVwiPjxpIGNsYXNzPVwiZmFzIGZhLWNvZ3MgZmEtNXhcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9J3dpZGdldC1lZGl0LW92ZXJsYXknID5cbiAgICAgICAgPGRpdiBjbGFzcz0nd2lkZ2V0LWVkaXQtbWVudSc+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2lkZ2V0LWVkaXQtbWVudS1idXR0b25cIiAoY2xpY2spPVwiaGFuZGxlQ29uZmlnKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKm5nSWY9XCJfaGFzUHJvcHNcIiAobW91c2V1cCk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1jb2dzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2lkZ2V0LWVkaXQtbWVudS1idXR0b25cIiAoY2xpY2spPVwicmVtb3ZlKCRldmVudClcIiAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNldXApPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwid2lkZ2V0LW9wdGlvbnMtbWVudVwiICAqbmdJZj1cIl9oYXNNZW51ICYmICFyZWFkb25seVwiPlxuICAgICAgICA8YXgtbWVudSBbaXRlbXNdPSdjb25maWdNZW51SXRlbScgZGlyZWN0aW9uPVwiaG9yaXpvbnRhbFwiPjwvYXgtbWVudT5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIDxheC1sb2FkaW5nLXBhbmVsIFt2aXNpYmxlXT1cImlzQnVzeVwiPlxuICAgIDwvYXgtbG9hZGluZy1wYW5lbD4gLS0+XG4gICAgPGRpdiBjbGFzcz1cIndpZGdldC1jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgI3ZjPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+Il19
|
@@ -335,7 +335,7 @@ class AXWidgetHostComponent {
|
|
335
335
|
this._loadingId = null;
|
336
336
|
}
|
337
337
|
if (v) {
|
338
|
-
this._loadingId = this.loadingService.show(this.ref.nativeElement);
|
338
|
+
// this._loadingId = this.loadingService.show(this.ref.nativeElement);
|
339
339
|
}
|
340
340
|
}
|
341
341
|
get isConfigured() {
|
@@ -350,7 +350,7 @@ class AXWidgetHostComponent {
|
|
350
350
|
this.loadingService = loadingService;
|
351
351
|
}
|
352
352
|
ngOnInit() {
|
353
|
-
this.isLoading = true;
|
353
|
+
// this.isLoading = true;
|
354
354
|
}
|
355
355
|
async ngAfterViewInit() {
|
356
356
|
let component;
|
@@ -378,7 +378,7 @@ class AXWidgetHostComponent {
|
|
378
378
|
else {
|
379
379
|
this.setSizeFromOptions();
|
380
380
|
}
|
381
|
-
this.isLoading = d.value;
|
381
|
+
// this.isLoading = d.value;
|
382
382
|
this.cdr.detectChanges();
|
383
383
|
});
|
384
384
|
}
|
@@ -1006,11 +1006,11 @@ class AXWidgetBoardComponent {
|
|
1006
1006
|
});
|
1007
1007
|
}
|
1008
1008
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXWidgetBoardComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
1009
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXWidgetBoardComponent, selector: "ax-widget-board", inputs: { galleryItems: "galleryItems", tileSize: "tileSize", gapSize: "gapSize", readonly: "readonly", provideValue: "provideValue" }, outputs: { onConfigChanged: "onConfigChanged", onWidgetSave: "onWidgetSave" }, host: { classAttribute: "ax widget-board" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "widgetHosts", predicate: AXWidgetHostComponent, descendants: true }], ngImport: i0, template: "<div class=\"widgets-container\" [class.rtl]=\"rtl\" #container>\n <ax-widget-host *ngFor=\"let w of widgets;trackBy: trackByFn\" [config]='w' [sizeX]=\"w.sizeX\" [readonly]=\"readonly || w.readonly\"\n [sizeY]=\"w.sizeY\" [col]=\"w.col\" [row]=\"w.row\" (onRemove)=\"handleOnRemove($event)\" (onSave)=\"handleOnSave($event)\"\n (onConfigChanged)=\"handleOnConfigChanged($event)\" (onResized)=\"handleOnResizedChanged($event)\"\n [provideValue]=\"provideValue\">\n </ax-widget-host>\n</div>\n", styles: [".widget-board{display:inline-block;margin:15px 20px;min-width:calc(100% - 40px);min-height:calc(100% - 34px);--animate-duration: .5s;background-repeat:no-repeat}.widget-board.grid-background{background-repeat:repeat!important}.widget-board.grid-background .widgets-container .widget-host{touch-action:none;-webkit-user-select:none;user-select:none}.widget-board.grid-background .widgets-container .widget-host .widget-edit-overlay{display:block;cursor:move}.widget-board.grid-background .widgets-container .widget-host.widget-dragging{z-index:1000}.widget-board.grid-background .widgets-container .widget-host:focus{outline-width:1px;outline-style:solid;outline-color:var(--ax-primary-color)}.widget-board.grid-background .widget-blank-placeholder{background:var(--ax-primary-trans-light-color);position:absolute}.widget-board .widgets-container{position:relative;touch-action:none}.widget-board .widgets-container.rtl .widget-host .widget-options-menu{right:unset!important;left:0!important}.widget-board .widgets-container .widget-host{position:absolute;background:#fff;box-shadow:2px 2px 3px #dadada;z-index:0}.widget-board .widgets-container .widget-host .widget-content{width:100%;height:100%;display:flex;flex-direction:column}.widget-board .widgets-container .widget-host .widget-content .widget-title{padding:var(--ax-size-md);text-align:start;font-size:1.5em;position:absolute}.widget-board .widgets-container .widget-host .widget-edit-loading{display:none;background
|
1009
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXWidgetBoardComponent, selector: "ax-widget-board", inputs: { galleryItems: "galleryItems", tileSize: "tileSize", gapSize: "gapSize", readonly: "readonly", provideValue: "provideValue" }, outputs: { onConfigChanged: "onConfigChanged", onWidgetSave: "onWidgetSave" }, host: { classAttribute: "ax widget-board" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }, { propertyName: "widgetHosts", predicate: AXWidgetHostComponent, descendants: true }], ngImport: i0, template: "<div class=\"widgets-container\" [class.rtl]=\"rtl\" #container>\n <ax-widget-host *ngFor=\"let w of widgets;trackBy: trackByFn\" [config]='w' [sizeX]=\"w.sizeX\" [readonly]=\"readonly || w.readonly\"\n [sizeY]=\"w.sizeY\" [col]=\"w.col\" [row]=\"w.row\" (onRemove)=\"handleOnRemove($event)\" (onSave)=\"handleOnSave($event)\"\n (onConfigChanged)=\"handleOnConfigChanged($event)\" (onResized)=\"handleOnResizedChanged($event)\"\n [provideValue]=\"provideValue\">\n </ax-widget-host>\n</div>\n", styles: [".widget-board{display:inline-block;margin:15px 20px;min-width:calc(100% - 40px);min-height:calc(100% - 34px);--animate-duration: .5s;background-repeat:no-repeat}.widget-board.grid-background{background-repeat:repeat!important}.widget-board.grid-background .widgets-container .widget-host{touch-action:none;-webkit-user-select:none;user-select:none}.widget-board.grid-background .widgets-container .widget-host .widget-edit-overlay{display:block;cursor:move}.widget-board.grid-background .widgets-container .widget-host.widget-dragging{z-index:1000}.widget-board.grid-background .widgets-container .widget-host:focus{outline-width:1px;outline-style:solid;outline-color:var(--ax-primary-color)}.widget-board.grid-background .widget-blank-placeholder{background:var(--ax-primary-trans-light-color);position:absolute}.widget-board .widgets-container{position:relative;touch-action:none}.widget-board .widgets-container.rtl .widget-host .widget-options-menu{right:unset!important;left:0!important}.widget-board .widgets-container .widget-host{position:absolute;background:#fff;box-shadow:2px 2px 3px #dadada;z-index:0}.widget-board .widgets-container .widget-host .widget-content{width:100%;height:100%;display:flex;flex-direction:column}.widget-board .widgets-container .widget-host .widget-content .widget-title{padding:var(--ax-size-md);text-align:start;font-size:1.5em;position:absolute}.widget-board .widgets-container .widget-host .widget-edit-loading{display:none;background:#ffffffd9;position:absolute;width:100%;height:100%;top:0;left:0;z-index:2;display:flex}.widget-board .widgets-container .widget-host .widget-config-overlay{position:absolute;background:#fff;width:100%;height:100%;top:0;left:0;z-index:1;padding:var(--ax-size-md);cursor:pointer}.widget-board .widgets-container .widget-host .widget-config-overlay:hover .widget-title{text-decoration:underline}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-title{text-align:start;font-size:1.5em}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-config-box{align-self:center;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--ax-gray-dark-color)}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-config-box .config-title{font-size:1.2em;margin-bottom:var(--ax-size-md)}.widget-board .widgets-container .widget-host .widget-edit-overlay{display:none;background:#ffffff80;position:absolute;width:100%;height:100%;top:0;left:0;z-index:10}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu{margin:6px;text-align:end;float:inline-end;opacity:1;transition:opacity 1s ease}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu .widget-edit-menu-button{display:inline-block;background-color:#f0f0f0;border-radius:1px;border:2px solid #fff;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding:0;height:32px;width:32px;cursor:pointer;color:#666}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu .widget-edit-menu-button:hover{border-color:#a6a6a6;background-color:#c8c8c8}.widget-board .widgets-container .widget-host .widget-options-menu{display:none;position:absolute;top:0;right:0;z-index:2;cursor:pointer;padding:2px 5px}.widget-board .widgets-container .widget-host .widget-options-menu:hover{background-color:#f0f0f0}.widget-board .widgets-container .widget-host .widget-container{padding:1px;height:100%}.widget-board .widgets-container .widget-host .widget-container:hover .widget-options-menu{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: AXWidgetHostComponent, selector: "ax-widget-host", inputs: ["provideValue", "config", "readonly", "sizeX", "sizeY", "col", "row"], outputs: ["onRemove", "onConfigChanged", "onResized", "onSave"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
1010
1010
|
}
|
1011
1011
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXWidgetBoardComponent, decorators: [{
|
1012
1012
|
type: Component,
|
1013
|
-
args: [{ selector: 'ax-widget-board', host: { class: 'ax widget-board' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"widgets-container\" [class.rtl]=\"rtl\" #container>\n <ax-widget-host *ngFor=\"let w of widgets;trackBy: trackByFn\" [config]='w' [sizeX]=\"w.sizeX\" [readonly]=\"readonly || w.readonly\"\n [sizeY]=\"w.sizeY\" [col]=\"w.col\" [row]=\"w.row\" (onRemove)=\"handleOnRemove($event)\" (onSave)=\"handleOnSave($event)\"\n (onConfigChanged)=\"handleOnConfigChanged($event)\" (onResized)=\"handleOnResizedChanged($event)\"\n [provideValue]=\"provideValue\">\n </ax-widget-host>\n</div>\n", styles: [".widget-board{display:inline-block;margin:15px 20px;min-width:calc(100% - 40px);min-height:calc(100% - 34px);--animate-duration: .5s;background-repeat:no-repeat}.widget-board.grid-background{background-repeat:repeat!important}.widget-board.grid-background .widgets-container .widget-host{touch-action:none;-webkit-user-select:none;user-select:none}.widget-board.grid-background .widgets-container .widget-host .widget-edit-overlay{display:block;cursor:move}.widget-board.grid-background .widgets-container .widget-host.widget-dragging{z-index:1000}.widget-board.grid-background .widgets-container .widget-host:focus{outline-width:1px;outline-style:solid;outline-color:var(--ax-primary-color)}.widget-board.grid-background .widget-blank-placeholder{background:var(--ax-primary-trans-light-color);position:absolute}.widget-board .widgets-container{position:relative;touch-action:none}.widget-board .widgets-container.rtl .widget-host .widget-options-menu{right:unset!important;left:0!important}.widget-board .widgets-container .widget-host{position:absolute;background:#fff;box-shadow:2px 2px 3px #dadada;z-index:0}.widget-board .widgets-container .widget-host .widget-content{width:100%;height:100%;display:flex;flex-direction:column}.widget-board .widgets-container .widget-host .widget-content .widget-title{padding:var(--ax-size-md);text-align:start;font-size:1.5em;position:absolute}.widget-board .widgets-container .widget-host .widget-edit-loading{display:none;background
|
1013
|
+
args: [{ selector: 'ax-widget-board', host: { class: 'ax widget-board' }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"widgets-container\" [class.rtl]=\"rtl\" #container>\n <ax-widget-host *ngFor=\"let w of widgets;trackBy: trackByFn\" [config]='w' [sizeX]=\"w.sizeX\" [readonly]=\"readonly || w.readonly\"\n [sizeY]=\"w.sizeY\" [col]=\"w.col\" [row]=\"w.row\" (onRemove)=\"handleOnRemove($event)\" (onSave)=\"handleOnSave($event)\"\n (onConfigChanged)=\"handleOnConfigChanged($event)\" (onResized)=\"handleOnResizedChanged($event)\"\n [provideValue]=\"provideValue\">\n </ax-widget-host>\n</div>\n", styles: [".widget-board{display:inline-block;margin:15px 20px;min-width:calc(100% - 40px);min-height:calc(100% - 34px);--animate-duration: .5s;background-repeat:no-repeat}.widget-board.grid-background{background-repeat:repeat!important}.widget-board.grid-background .widgets-container .widget-host{touch-action:none;-webkit-user-select:none;user-select:none}.widget-board.grid-background .widgets-container .widget-host .widget-edit-overlay{display:block;cursor:move}.widget-board.grid-background .widgets-container .widget-host.widget-dragging{z-index:1000}.widget-board.grid-background .widgets-container .widget-host:focus{outline-width:1px;outline-style:solid;outline-color:var(--ax-primary-color)}.widget-board.grid-background .widget-blank-placeholder{background:var(--ax-primary-trans-light-color);position:absolute}.widget-board .widgets-container{position:relative;touch-action:none}.widget-board .widgets-container.rtl .widget-host .widget-options-menu{right:unset!important;left:0!important}.widget-board .widgets-container .widget-host{position:absolute;background:#fff;box-shadow:2px 2px 3px #dadada;z-index:0}.widget-board .widgets-container .widget-host .widget-content{width:100%;height:100%;display:flex;flex-direction:column}.widget-board .widgets-container .widget-host .widget-content .widget-title{padding:var(--ax-size-md);text-align:start;font-size:1.5em;position:absolute}.widget-board .widgets-container .widget-host .widget-edit-loading{display:none;background:#ffffffd9;position:absolute;width:100%;height:100%;top:0;left:0;z-index:2;display:flex}.widget-board .widgets-container .widget-host .widget-config-overlay{position:absolute;background:#fff;width:100%;height:100%;top:0;left:0;z-index:1;padding:var(--ax-size-md);cursor:pointer}.widget-board .widgets-container .widget-host .widget-config-overlay:hover .widget-title{text-decoration:underline}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-title{text-align:start;font-size:1.5em}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-config-box{align-self:center;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--ax-gray-dark-color)}.widget-board .widgets-container .widget-host .widget-config-overlay .widget-config-box .config-title{font-size:1.2em;margin-bottom:var(--ax-size-md)}.widget-board .widgets-container .widget-host .widget-edit-overlay{display:none;background:#ffffff80;position:absolute;width:100%;height:100%;top:0;left:0;z-index:10}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu{margin:6px;text-align:end;float:inline-end;opacity:1;transition:opacity 1s ease}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu .widget-edit-menu-button{display:inline-block;background-color:#f0f0f0;border-radius:1px;border:2px solid #fff;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;padding:0;height:32px;width:32px;cursor:pointer;color:#666}.widget-board .widgets-container .widget-host .widget-edit-overlay .widget-edit-menu .widget-edit-menu-button:hover{border-color:#a6a6a6;background-color:#c8c8c8}.widget-board .widgets-container .widget-host .widget-options-menu{display:none;position:absolute;top:0;right:0;z-index:2;cursor:pointer;padding:2px 5px}.widget-board .widgets-container .widget-host .widget-options-menu:hover{background-color:#f0f0f0}.widget-board .widgets-container .widget-host .widget-container{padding:1px;height:100%}.widget-board .widgets-container .widget-host .widget-container:hover .widget-options-menu{display:block}\n"] }]
|
1014
1014
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { container: [{
|
1015
1015
|
type: ViewChild,
|
1016
1016
|
args: ['container']
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-layout.mjs","sources":["../../../../libs/layout/src/lib/widget-board/widget.class.ts","../../../../libs/layout/src/lib/widget-board/widget-config.component.ts","../../../../libs/layout/src/lib/widget-board/widget-config.component.html","../../../../libs/layout/src/lib/widget-board/widget-save.component.ts","../../../../libs/layout/src/lib/widget-board/widget-save.component.html","../../../../libs/layout/src/lib/widget-board/widget-host.component.ts","../../../../libs/layout/src/lib/widget-board/widget-host.component.html","../../../../libs/layout/src/lib/widget-board/widget-board.component.ts","../../../../libs/layout/src/lib/widget-board/widget-board.component.html","../../../../libs/layout/src/lib/widget-board/editors/widget-size-editor/widget-size.editor.ts","../../../../libs/layout/src/lib/widget-board/editors/widget-size-editor/widget-size.editor.html","../../../../libs/layout/src/lib/widget-board/widget-board.module.ts","../../../../libs/layout/src/lib/widget-board/editors/widget-size-editor/widget-size.module.ts","../../../../libs/layout/src/acorex-layout.ts"],"sourcesContent":["import { EventEmitter, Injectable } from '@angular/core';\nimport { AXValueEvent, AXBaseEvent, propertyEditor, AXDataEvent } from '@acorex/components';\nimport { AXHtmlUtil, AXTranslator } from '@acorex/core';\n\nexport interface AXWidgetConfig {\n uniqueName: string;\n component: any;\n title: string;\n sizeX: number;\n sizeY: number;\n col?: number;\n row?: number;\n options?: any;\n props?: any;\n readonly?: boolean;\n}\n\nexport interface AXWidgetConfigChanged extends AXBaseEvent {\n config: AXWidgetConfig;\n}\n\n\n\nexport interface AXWidgetBoardConfigChanged extends AXBaseEvent {\n mode: 'clear' | 'add' | 'remove' | 'load' | 'config';\n}\n\nexport interface AXWidgetConfigSavedEvent extends AXDataEvent<AXWidgetSaveAsData> {\n\n}\n\n\nexport interface AXWidgetSaveAsData {\n title?: string;\n description?: string;\n icon?: string;\n group?: string;\n //\n uniqueName: string;\n component: any;\n options?: any;\n props?: any;\n}\n\n// @dynamic\n// TODO: Add Angular decorator.\n@Injectable()\nexport abstract class AXWidgetComponent {\n\n readonly uid: string = AXHtmlUtil.getUID();\n provideValue: (e: any) => any;\n\n onBusyChanged: EventEmitter<AXValueEvent<boolean>> = new EventEmitter<AXValueEvent<boolean>>();\n\n private _isBusy: boolean = true;\n public get isBusy(): boolean {\n return this._isBusy;\n }\n public set isBusy(v: boolean) {\n if (v !== this._isBusy) {\n const eventData: AXValueEvent<boolean> = {\n component: this,\n oldValue: this._isBusy,\n value: v\n };\n this._isBusy = v;\n this.onBusyChanged.emit(eventData);\n }\n }\n\n @propertyEditor({\n editorClass: 'ax/editors/widget-size',\n title: 'common.size',\n visible: false,\n order: -99,\n })\n widgetSize: number[];\n\n @propertyEditor({\n editorClass: 'ax/editors/select',\n title: 'common.refresh-rate',\n visible: true,\n order: -98,\n editorOptions: {\n items: () => {\n return [1, 2, 3, 5, 10, 20, 30, 60].map(c => ({\n id: 60000 * c,\n text: AXTranslator.get('dateTime.duration.format_minute').replace('{0}', c.toString())\n }));\n },\n allowNull: false,\n allowSearch: false,\n selectionDataMode: 'value',\n selectionMode: 'single',\n valueField: 'id',\n }\n })\n refreshRate: any = [{\n id: 60000 * 5,\n text: AXTranslator.get('dateTime.duration.format_minute').replace('{0}', '5')\n }];\n\n // ???\n getRefreshRate() {\n return Array.isArray(this.refreshRate) && this.refreshRate.length ? this.refreshRate[0].id : this.refreshRate;\n }\n\n private intervalId: number;\n\n constructor() {\n this.onConfiguredChanged.subscribe(() => {\n if (this.isConfigured === true && this.getRefreshRate()) {\n this.restartRefreshTimer();\n }\n else {\n this.stopRefreshTimer();\n }\n });\n }\n\n\n private startRefreshTimer() {\n this.intervalId = window.setInterval(this.refresh.bind(this), this.getRefreshRate());\n }\n\n private stopRefreshTimer() {\n window.clearInterval(this.intervalId);\n }\n\n private restartRefreshTimer() {\n this.stopRefreshTimer();\n this.startRefreshTimer();\n }\n\n ngOnDestroy() {\n this.stopRefreshTimer();\n }\n\n public redraw() {\n\n }\n\n public refresh() {\n this.restartRefreshTimer();\n }\n\n onConfiguredChanged: EventEmitter<void> = new EventEmitter<void>();\n\n get isConfigured(): boolean {\n return true;\n }\n\n public setValue(name: string, value?: any) {\n this[name] = value;\n this.onConfiguredChanged.emit();\n }\n\n public getValue(name: string): Promise<any> {\n const val = this[name];\n const config = this['__meta__'].config;\n const runtime = config.props[name]?.runtime;\n if (runtime && this.provideValue) {\n const res = this.provideValue({\n name,\n value: val,\n uniqueName: config.uniqueName,\n options: config.options,\n });\n if (this.provideValue instanceof Promise) {\n return res;\n }\n else {\n return Promise.resolve(res);\n }\n }\n return Promise.resolve(val);\n }\n\n}","import { Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild } from '@angular/core';\nimport { AXPropertyConfig, AXBasePopupPageComponent, AXMenuItemClickEvent, AXProperyEditorValueChangeEvent, AXValidationFormComponent } from '@acorex/components';\nimport { AXButtonItem, AXTranslator } from '@acorex/core';\nimport { AXWidgetComponent } from './widget.class';\n\n\n@Component({\n templateUrl: './widget-config.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class AXWidgetConfigComponent extends AXBasePopupPageComponent {\n\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n\n widget: AXWidgetComponent;\n props: AXPropertyConfig[] = [];\n displayProps: AXPropertyConfig[] = [];\n\n\n changes: AXPropertyConfig[] = [];\n\n context: any = {};\n\n\n getFooterButtons(): AXButtonItem[] {\n return [\n {\n name: 'okay',\n submitBehavior: true,\n text: AXTranslator.get('common.confirm'),\n style: 'success'\n },\n {\n name: 'cancel',\n cancelBehavior: true,\n text: AXTranslator.get('common.cancel'),\n style: 'danger blank'\n }\n ];\n }\n\n\n\n\n\n onFooterButtonClick(e: AXMenuItemClickEvent) {\n if (e.name === 'cancel') {\n this.close();\n }\n if (e.name === 'okay') {\n this.form.validate().then(c => {\n if (c.result) {\n this.close(this.changes);\n }\n });\n }\n }\n\n handleValueChange(e: AXProperyEditorValueChangeEvent) {\n const prop = this.changes.find(c => c.property.name === e.property.name);\n if (prop) {\n prop.value = e.value;\n }\n else {\n this.changes.push({ property: e.property, value: e.value });\n }\n this.updateContext();\n }\n\n ngOnInit() {\n this.displayProps = this.props.filter(c => c.property.visible !== false).sort((a, b) => a.property.order - b.property.order);\n this.updateContext();\n }\n\n\n private updateContext() {\n const ctx = {};\n this.props.forEach(p => {\n ctx[p.property.name] = p.value;\n });\n this.changes.forEach(p => {\n ctx[p.property.name] = p.value;\n });\n this.context = ctx;\n }\n\n\n identify(index, item: AXPropertyConfig) {\n return item.property.name;\n }\n\n}","<ax-page>\n <ax-page-content>\n <div class=\"container\">\n <ax-validation-form #form>\n <div class=\"row\" *ngFor=\"let p of displayProps; trackBy: identify\">\n <div class=\"col-12\">\n <ax-label>{{p.property.title | trans}}</ax-label>\n <ng-container ax-property-editor-renderer [property]=\"p\" [context]=\"context\" [host]=\"widget\" [validationForm]=\"form\"\n (onValueChange)=\"handleValueChange($event)\">\n </ng-container>\n </div>\n </div>\n </ax-validation-form>\n </div>\n </ax-page-content>\n</ax-page>","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n\n} from '@angular/core';\nimport { AXWidgetConfig, AXWidgetSaveAsData } from './widget.class';\nimport { AXButtonItem, AXHtmlUtil, AXObjectUtil, AXTranslator } from '@acorex/core';\nimport { AXPropertyConfig, AXMenuItemClickEvent, AXBasePopupPageComponent } from '@acorex/components';\n\n\n\n@Component({\n templateUrl: \"./widget-save.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXWidgetSaveComponent extends AXBasePopupPageComponent {\n config: AXWidgetConfig;\n props: AXPropertyConfig[] = [];\n displayProps: { name: string, title: string, allow: boolean }[];\n\n data: AXWidgetSaveAsData;\n\n getFooterButtons(): AXButtonItem[] {\n return [\n {\n name: 'okay',\n submitBehavior: true,\n text: AXTranslator.get('common.confirm'),\n style: 'ax success'\n },\n {\n name: 'cancel',\n cancelBehavior: true,\n text: AXTranslator.get('common.cancel'),\n style: 'ax light'\n }\n ];\n }\n\n ngOnInit() {\n const titleProp = this.props.find(c => c.property.name === 'title' || c.property.name === 'name');\n const title = titleProp?.value || this.config.title;\n const pp: any = {};\n this.props?.forEach(c => {\n pp[c.property.name] = c.property;\n });\n this.data = {\n component: this.config.component,\n title,\n uniqueName: `${this.config.uniqueName}-${AXHtmlUtil.getUID()}`,\n options: AXObjectUtil.deepJSONClone(this.config.options),\n props: AXObjectUtil.deepJSONClone(pp)\n };\n this.displayProps = this.props\n .filter(c => c.property.visible !== false)\n .sort((a, b) => a.property.order - b.property.order)\n .map(c => ({\n name: c.property.name,\n title: c.property.title,\n allow: true\n }));\n }\n\n\n\n onFooterButtonClick(e: AXMenuItemClickEvent) {\n if (e.name === 'cancel') {\n this.close();\n }\n if (e.name === 'okay') {\n this.props.forEach(p => {\n const pp = this.displayProps.find(c => c.name === p.property.name);\n if (pp == null || !pp.allow) {\n let ppp = this.data.props[p.property.name];\n if (ppp) {\n ppp.visible = false;\n }\n else {\n ppp = { visible: false };\n }\n }\n });\n this.close(this.data);\n }\n }\n}","<ax-page>\n <ax-page-content>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12\">\n <ax-form-group>\n <ax-label>{{'common.title' | trans}}</ax-label>\n <ax-text-box [(value)]=\"data.title\"></ax-text-box>\n </ax-form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <ax-form-group>\n <ax-label>{{'common.description' | trans}}</ax-label>\n <ax-text-area [(value)]=\"data.description\"></ax-text-area>\n </ax-form-group>\n </div>\n </div>\n <!-- <div class=\"row\">\n <div class=\"col-12\">\n <ax-form-group>\n <ax-label>{{'common.uniquename' | trans}}</ax-label>\n <ax-text-box></ax-text-box>\n </ax-form-group>\n </div>\n </div> -->\n <div class=\"row\" style=\"margin-block-end: var(--ax-size-md);margin-block-start: var(--ax-size-md);\">\n <div class=\"col-12\">\n <ax-fieldset caption=\"{{'widget-board.configurable-props' | trans}}\">\n <div class=\"row\" *ngFor=\"let prop of displayProps\">\n <div class=\"col-12\" style=\"margin-block-end: var(--ax-size-sm)\">\n <ax-check-box [(value)]=\"prop.allow\" label=\"{{ prop.title | trans }}\">\n\n </ax-check-box>\n </div>\n </div>\n </ax-fieldset>\n </div>\n </div>\n </div>\n </ax-page-content>\n</ax-page>","import {\n Component,\n ViewEncapsulation, Input,\n ElementRef, HostBinding, ComponentFactoryResolver, ViewChild,\n ViewContainerRef, Output, EventEmitter, ChangeDetectionStrategy,\n ChangeDetectorRef, ComponentRef\n} from '@angular/core';\nimport { AXWidgetConfig, AXWidgetComponent, AXWidgetConfigChanged, AXWidgetConfigSavedEvent } from './widget.class';\nimport { AXObjectUtil, AXRenderService } from '@acorex/core';\nimport { AXPopupService, AXPropertyDecorators, AXPropertyDecorator, AXLoadingService } from '@acorex/components';\nimport { AXWidgetConfigComponent } from './widget-config.component';\nimport { AXMenuItem } from '@acorex/core';\nimport { AXTranslator } from '@acorex/core';\nimport { AXWidgetSaveComponent } from './widget-save.component';\n\n\n\n\n\n@Component({\n selector: 'ax-widget-host',\n templateUrl: \"./widget-host.component.html\",\n host: { class: 'ax widget-host', tabindex: '0' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class AXWidgetHostComponent {\n\n private _widget: AXWidgetComponent;\n public get widget(): AXWidgetComponent {\n return this._widget;\n }\n\n _hasProps: boolean = false;\n\n\n _hasMenu: boolean = false;\n\n @Input()\n provideValue: (e: any) => any;\n\n\n get element(): HTMLDivElement {\n return this.ref.nativeElement;\n }\n\n\n configMenuItem: AXMenuItem[] = [\n {\n icon: 'far fa-ellipsis-h',\n items: []\n }\n ];\n\n\n @Output()\n onRemove: EventEmitter<AXWidgetHostComponent> = new EventEmitter<AXWidgetHostComponent>();\n\n @Output()\n onConfigChanged: EventEmitter<AXWidgetConfigChanged> = new EventEmitter<AXWidgetConfigChanged>();\n\n\n @Output()\n onResized: EventEmitter<AXWidgetConfigChanged> = new EventEmitter<AXWidgetConfigChanged>();\n\n @Output()\n onSave: EventEmitter<AXWidgetConfigSavedEvent> = new EventEmitter<AXWidgetConfigSavedEvent>();\n\n @Input()\n config: AXWidgetConfig;\n\n @ViewChild('vc', { read: ViewContainerRef })\n vc: ViewContainerRef;\n\n\n\n @Input()\n readonly: boolean = false;\n\n private componentRef: ComponentRef<any>;\n //private isLoading: boolean = true;\n\n // get isBusy() {\n // return this._widget?.isBusy || this.isLoading;\n // }\n\n\n private _loadingId: number;\n\n private _isLoading: boolean = false;\n public get isLoading(): boolean {\n return this._isLoading;\n }\n public set isLoading(v: boolean) {\n this._isLoading = v;\n if (this._loadingId && !v) {\n this.loadingService.hide(this._loadingId);\n this._loadingId = null;\n }\n if (v) {\n this._loadingId = this.loadingService.show(this.ref.nativeElement);\n }\n }\n\n\n get isConfigured(): boolean {\n return this._widget?.isConfigured || false;\n }\n\n\n constructor(\n private ref: ElementRef<HTMLDivElement>,\n private componentFactoryResolver: ComponentFactoryResolver,\n private rendererService: AXRenderService,\n private cdr: ChangeDetectorRef,\n private popup: AXPopupService,\n private loadingService: AXLoadingService\n\n ) {\n\n }\n\n\n ngOnInit() {\n this.isLoading = true;\n }\n\n\n async ngAfterViewInit() {\n let component: any;\n if (typeof this.config.component === 'string') {\n const route = await this.rendererService.findLoadedComponentByRoute(this.config.component, 20);\n component = route?.component;\n }\n else if (typeof this.config.component === 'function') {\n component = this.config.component;\n }\n if (component == null) {\n console.error(`Invalid Widget Component!`, this.config);\n this.onRemove.emit(this);\n return;\n }\n\n const widgetFactory = this.componentFactoryResolver.resolveComponentFactory(component);\n this.componentRef = this.vc.createComponent(widgetFactory);\n this._widget = this.componentRef.instance as AXWidgetComponent;\n this._widget.provideValue = this.provideValue;\n if (this._widget.onBusyChanged) {\n this._widget.onBusyChanged.subscribe((d) => {\n if (!this._widget.widgetSize) {\n this._widget.setValue('widgetSize', [this.sizeX, this.sizeY]);\n }\n else {\n this.setSizeFromOptions();\n }\n this.isLoading = d.value;\n this.cdr.detectChanges();\n });\n }\n if (this._widget.onConfiguredChanged) {\n this._widget.onConfiguredChanged.subscribe(() => {\n this.setSizeFromOptions();\n });\n }\n //\n if (this.config.options) {\n Object.assign(this._widget, this.config.options);\n }\n this._hasProps = AXPropertyDecorators.getProperties(this._widget).length > 0;\n\n this.isLoading = false;\n this.config['__meta__'].instance = this;\n this._widget['__meta__'] = {};\n this._widget['__meta__'].config = this.config;\n //\n this.configMenuItem[0].items.push({\n name: 'refresh',\n icon: 'far fa-undo',\n text: AXTranslator.get('common.refresh'),\n onClick: () => {\n this?.widget?.refresh();\n }\n });\n //\n if (this._hasProps) {\n this.configMenuItem[0].items.push({\n name: 'configs',\n icon: 'far fa-cogs',\n text: AXTranslator.get('common.configs'),\n onClick: () => {\n this.openConfigDialog();\n }\n });\n }\n this.configMenuItem[0].items.push({\n name: 'save',\n icon: 'far fa-save',\n text: AXTranslator.get('common.save-as'),\n onClick: () => {\n this.openSaveDialog();\n }\n });\n if (true) {\n this.configMenuItem[0].items.push({\n name: 'remove',\n icon: 'far fa-times',\n style: 'ax danger blank',\n text: AXTranslator.get('common.remove'),\n onClick: () => {\n this.onRemove.emit(this);\n }\n });\n }\n this._hasMenu = this.configMenuItem[0].items.length > 0;\n this.cdr.detectChanges();\n }\n\n @HostBinding('attr.data-size-x')\n @Input()\n sizeX: number = 1;\n\n @HostBinding('attr.data-size-y')\n @Input()\n sizeY: number = 1;\n\n @HostBinding('attr.data-col')\n @Input()\n col: number = 1;\n\n\n @HostBinding('attr.data-row')\n @Input()\n row: number = 1;\n\n\n private setSizeFromOptions() {\n this._widget.getValue('widgetSize').then(c => {\n const oldSizeX = this.sizeX;\n const oldSizeY = this.sizeY;\n if (c && Array.isArray(c) && (oldSizeX !== c[0] || oldSizeY !== c[1])) {\n this.config.sizeX = this.sizeX = c[0];\n this.config.sizeY = this.sizeY = c[1];\n this.onResized.emit({\n component: this._widget,\n config: this.config\n });\n }\n this.cdr.detectChanges();\n });\n }\n\n remove(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n if (!this.readonly)\n this.onRemove.emit(this);\n return false;\n }\n\n handleConfig(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n if (!this.readonly)\n this.openConfigDialog();\n return false;\n }\n\n private openConfigDialog() {\n const ppp = this.getMergedProps();\n this.popup.open(AXWidgetConfigComponent, {\n title: AXTranslator.get('common.configs'),\n size: 'sm',\n data: {\n props: ppp.map(c => ({ property: c.options, value: this._widget[c.options.name] })),\n widget: this.widget\n }\n }).then(c => {\n if (c.data) {\n if (!this.config.options) {\n this.config.options = {};\n }\n c.data.forEach(p => {\n this._widget.setValue(p.property.name, p.value);\n this.config.options[p.property.name] = p.value;\n });\n this.emitConfigChanged();\n this._widget.redraw();\n this.cdr.detectChanges();\n }\n });\n }\n\n private openSaveDialog() {\n const ppp = this.getMergedProps();\n this.popup.open(AXWidgetSaveComponent, {\n title: AXTranslator.get('common.save-as'),\n size: 'sm',\n data: {\n config: this.config,\n props: ppp.map(c => ({ property: c.options, value: this._widget[c.options.name] }))\n }\n }).then(c => {\n if (c.data) {\n this.onSave.emit({\n component: this._widget,\n data: c.data\n });\n }\n });\n }\n\n\n\n handleOptionClick(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.openConfigDialog();\n return false;\n }\n\n ngOnDestroy() {\n this.vc.clear();\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n\n private getMergedProps(): AXPropertyDecorator[] {\n const ppp = AXObjectUtil.deepCopy(AXPropertyDecorators.getProperties(this._widget)) as AXPropertyDecorator[];\n for (const key in this.config.props) {\n if (Object.prototype.hasOwnProperty.call(this.config.props, key)) {\n const newP = this.config.props[key];\n const existPropDec = ppp.find(p => p.property === key);\n if (existPropDec) {\n Object.assign(existPropDec.options, newP);\n }\n }\n }\n return ppp;\n }\n\n private emitConfigChanged() {\n this.onConfigChanged.emit({\n component: this._widget,\n config: this.config\n });\n }\n\n}","<div class='widget-container'>\n <div class=\"widget-config-overlay\" *ngIf=\"!isConfigured\" (click)=\"handleConfig($event)\">\n <div class=\"widget-title\">{{config.title}}</div>\n <div class=\"widget-config-box\">\n <div class=\"config-title\">{{ 'widget-board.configure' | trans}}</div>\n <div class=\"config-icon\" *ngIf=\"!readonly\"><i class=\"fas fa-cogs fa-5x\" aria-hidden=\"true\"></i></div>\n </div>\n </div>\n <div class='widget-edit-overlay' >\n <div class='widget-edit-menu'>\n <button class=\"widget-edit-menu-button\" (click)=\"handleConfig($event)\"\n (mousedown)=\"$event.stopPropagation()\" *ngIf=\"_hasProps\" (mouseup)=\"$event.stopPropagation()\">\n <i class=\"far fa-cogs\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"widget-edit-menu-button\" (click)=\"remove($event)\" (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\">\n <i class=\"far fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n </div>\n <div class=\"widget-options-menu\" *ngIf=\"_hasMenu && !readonly\">\n <ax-menu [items]='configMenuItem' direction=\"horizontal\"></ax-menu>\n </div>\n <!-- <ax-loading-panel [visible]=\"isBusy\">\n </ax-loading-panel> -->\n <div class=\"widget-content\">\n <ng-container #vc></ng-container>\n </div>\n</div>","import {\n Component,\n OnInit,\n Input,\n ViewEncapsulation,\n ElementRef,\n ViewChild,\n NgZone,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Output,\n EventEmitter, ViewChildren, QueryList\n} from '@angular/core';\nimport {\n AXWidgetConfig,\n AXWidgetConfigChanged,\n AXWidgetBoardConfigChanged,\n AXWidgetConfigSavedEvent\n} from './widget.class';\nimport { AXWidgetHostComponent } from './widget-host.component';\nimport { AXHtmlUtil, AXClientRec } from '@acorex/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators'\n\n\n@Component({\n selector: 'ax-widget-board',\n templateUrl: './widget-board.component.html',\n styleUrls: ['./widget-board.component.scss'],\n host: { class: 'ax widget-board' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AXWidgetBoardComponent implements OnInit {\n\n @ViewChild('container')\n private container: ElementRef<HTMLDivElement>;\n\n @ViewChildren(AXWidgetHostComponent)\n private widgetHosts: QueryList<AXWidgetHostComponent>;\n\n widgets: AXWidgetConfig[] = [];\n\n @Input()\n galleryItems: AXWidgetConfig[] = [];\n\n @Input()\n tileSize: number = 80;\n\n @Input()\n gapSize: number = 5;\n\n\n @Input()\n readonly: boolean = false;\n\n private newWidget: AXWidgetConfig = null;\n\n public rtl: boolean;\n\n private _isInEditing: boolean = false;\n public isInEditing(): boolean {\n return this._isInEditing;\n }\n private isDragging: boolean = false;\n private dragItem: HTMLElement;\n\n private saveSubject = new Subject<string>();\n\n @Input()\n provideValue: (e: any) => any;\n\n private readonly DATA_COL = 'data-col';\n private readonly DATA_ROW = 'data-row';\n private readonly DATA_SIZE_X = 'data-size-x';\n private readonly DATA_SIZE_Y = 'data-size-y';\n private readonly DATA_OLD_COL = 'data-old-col';\n private readonly DATA_OLD_ROW = 'data-old-row';\n\n\n @Output()\n onConfigChanged: EventEmitter<AXWidgetBoardConfigChanged> = new EventEmitter<AXWidgetBoardConfigChanged>();\n\n @Output()\n onWidgetSave: EventEmitter<AXWidgetConfigSavedEvent> = new EventEmitter<AXWidgetConfigSavedEvent>();\n\n constructor(\n private ref: ElementRef<HTMLDivElement>,\n private zone: NgZone,\n private cdr: ChangeDetectorRef\n ) { }\n\n\n ngOnInit() {\n if (this.rtl == null) {\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\n }\n this.saveSubject.pipe(debounceTime(750)).subscribe((value: any) => {\n this.emitConfigChanged(value);\n });\n }\n\n ngOnDestroy()\n {\n this.saveSubject?.unsubscribe();\n }\n\n ngAfterViewInit() {\n this.zone.runOutsideAngular((c) => {\n const style = document.createElement('style');\n style.type = 'text/css';\n this.ref.nativeElement.appendChild(style);\n // add css data classes\n for (let i = 1; i <= 50; i++) {\n style.innerHTML += `[${this.DATA_COL}=\"${i}\"] { ${this.rtl ? 'right' : 'left'}: ${(i - 1) * (this.tileSize + this.gapSize)}px; }`;\n style.innerHTML += `[${this.DATA_ROW}=\"${i}\"] { top: ${(i - 1) * (this.tileSize + this.gapSize)}px; }`;\n style.innerHTML += `[${this.DATA_SIZE_X}=\"${i}\"] { width: ${(i * this.tileSize) + ((i - 1) * this.gapSize)}px; }`;\n style.innerHTML += `[${this.DATA_SIZE_Y}=\"${i}\"] { height: ${(i * this.tileSize) + ((i - 1) * this.gapSize)}px; }`;\n }\n });\n }\n\n private calcGridSize() {\n this.zone.runOutsideAngular(() => {\n const width =\n (Math.max(...this.widgets.map((c) => c.col + c.sizeX - 1))) * (this.tileSize + this.gapSize);\n const height =\n (Math.max(...this.widgets.map((c) => c.row + c.sizeY - 1))) * (this.tileSize + this.gapSize);\n this.container.nativeElement.style.width = width + 'px';\n this.container.nativeElement.style.height = height + 'px';\n });\n }\n\n toggleEdit() {\n this._isInEditing ? this.finishEdit() : this.startEdit();\n }\n\n\n\n private dragStart(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.zone.runOutsideAngular(() => {\n if (this._isInEditing && e.which === 1) {\n this.dragItem = e.currentTarget as any;\n this.dragItem.setAttribute('data-x-offset', (this.dragItem.offsetLeft - e.clientX).toString());\n //\n this.dragItem.setAttribute('data-y-offset', (this.dragItem.offsetTop - e.clientY).toString());\n this.dragItem.classList.add('widget-dragging');\n this.dragItem.classList.remove('animate__animated', 'animate__pulse');\n }\n });\n return false;\n }\n\n removePositionData() {\n this.zone.runOutsideAngular(() => {\n if (this.dragItem && this._isInEditing && this.dragItem.getAttribute(this.DATA_OLD_COL) == null) {\n this.dragItem.setAttribute(this.DATA_OLD_COL, this.dragItem.getAttribute(this.DATA_COL));\n this.dragItem.setAttribute(this.DATA_OLD_ROW, this.dragItem.getAttribute(this.DATA_ROW));\n this.dragItem.removeAttribute(this.DATA_COL);\n this.dragItem.removeAttribute(this.DATA_ROW);\n }\n });\n }\n\n resetPositionData() {\n this.zone.runOutsideAngular(() => {\n if (this.dragItem && this._isInEditing) {\n this.setPosition(this.dragItem, this.dragItem.getAttribute(this.DATA_OLD_COL), this.dragItem.getAttribute(this.DATA_OLD_ROW));\n }\n });\n }\n\n private setPosition(element: HTMLElement, col: string, row: string) {\n this.zone.runOutsideAngular(() => {\n element.setAttribute(this.DATA_COL, col);\n element.setAttribute(this.DATA_ROW, row);\n element.removeAttribute(this.DATA_OLD_COL);\n element.removeAttribute(this.DATA_OLD_ROW);\n element.style.removeProperty('top');\n element.style.removeProperty('left');\n const widget = this.widgets.find(c => c['__meta__'].instance.element === element);\n widget.col = Number(col);\n widget.row = Number(row);\n });\n }\n\n private drag(e) {\n e.preventDefault();\n e.stopPropagation();\n this.zone.runOutsideAngular(() => {\n if (this.dragItem && this._isInEditing) {\n this.isDragging = true;\n this.addPlaceholder();\n const xOffset = Number(this.dragItem.getAttribute('data-x-offset'));\n const yOffset = Number(this.dragItem.getAttribute('data-y-offset'));\n this.dragItem.style.left = e.clientX + xOffset + 'px';\n this.dragItem.style.top = e.clientY + yOffset + 'px';\n //\n this.detectBestPlacement();\n this.removePositionData();\n }\n });\n return false;\n }\n\n private dragEnd(e) {\n this.zone.runOutsideAngular(() => {\n if (this.dragItem && this._isInEditing && this.isDragging) {\n this.dragItem.classList.remove('widget-dragging');\n this.dragItem.classList.add('animate__animated', 'animate__pulse');\n //\n const p = this.container.nativeElement.querySelector('.widget-blank-placeholder');\n if (this.newWidget) {\n const w = {\n uniqueName: this.newWidget.uniqueName,\n component: this.newWidget.component,\n title: this.newWidget.title,\n options: this.newWidget.options,\n sizeX: this.newWidget.sizeX,\n sizeY: this.newWidget.sizeY,\n col: Number(p.getAttribute(this.DATA_COL)),\n row: Number(p.getAttribute(this.DATA_ROW))\n };\n\n this.widgets.push(w);\n this.newWidget = null;\n this.container.nativeElement.removeChild(this.dragItem);\n this.zone.run(() => {\n this.cdr.detectChanges();\n this.calcGridSize();\n setTimeout(() => {\n w['__meta__'].instance.element.addEventListener('mousedown', this.dragStart.bind(this), false);\n }, 1000);\n });\n } else {\n if (p) {\n this.setPosition(this.dragItem, p.getAttribute(this.DATA_COL), p.getAttribute(this.DATA_ROW));\n }\n else {\n this.setPosition(this.dragItem, this.dragItem.getAttribute(this.DATA_OLD_COL), this.dragItem.getAttribute(this.DATA_OLD_ROW));\n }\n }\n //\n this.removePlaceholder();\n this.dragItem = null;\n this.calcGridSize();\n this.saveSubject.next('config');\n }\n this.isDragging = false;\n });\n }\n\n private detectFirstEmptySlot(w: AXWidgetConfig) {\n const xTile = Math.floor(this.ref.nativeElement.parentElement.offsetWidth / this.tileSize);\n for (let j = 1; j <= 100; j++) {\n for (let i = 1; i <= xTile - w.sizeX; i++) {\n const rec = new AXClientRec({\n left: i,\n top: j,\n width: w.sizeX,\n height: w.sizeY\n });\n const el = this.widgets.filter(c => c !== w).find((c) =>\n rec.intersect({\n left: c.col,\n top: c.row,\n width: c.sizeX,\n height: c.sizeY\n })\n );\n if (el == null) {\n w.col = i;\n w.row = j;\n return;\n }\n }\n }\n }\n\n private detectBestPlacement() {\n this.zone.runOutsideAngular(() => {\n const p = this.container.nativeElement.querySelector('.widget-blank-placeholder') as HTMLElement;\n let col = Math.ceil(this.dragItem.offsetLeft / this.tileSize);\n if (this.rtl) {\n col = Math.ceil((this.container.nativeElement.clientWidth - (this.dragItem.offsetLeft + this.dragItem.clientWidth)) / this.tileSize);\n }\n\n let row = Math.ceil(this.dragItem.offsetTop / this.tileSize);\n if (col < 1) {\n col = 1;\n }\n if (row < 1) {\n row = 1;\n }\n const widgets = Array.from(this.ref.nativeElement.querySelectorAll('.widget-host')).map((c) => c as HTMLElement);\n p.setAttribute(this.DATA_COL, col.toString());\n p.setAttribute(this.DATA_ROW, row.toString());\n const collision = widgets.filter(c => c !== this.dragItem).some(c => AXHtmlUtil.collision(c, this.dragItem));\n if (collision) {\n this.removePlaceholder();\n }\n });\n }\n\n\n private addPlaceholder() {\n this.zone.runOutsideAngular(() => {\n this.removePlaceholder();\n if (this.dragItem) {\n const p = document.createElement('div');\n p.classList.add('widget-blank-placeholder');\n p.setAttribute(this.DATA_COL, this.dragItem.getAttribute(this.DATA_COL));\n p.setAttribute(this.DATA_ROW, this.dragItem.getAttribute(this.DATA_ROW));\n p.setAttribute(this.DATA_SIZE_X, this.dragItem.getAttribute(this.DATA_SIZE_X));\n p.setAttribute(this.DATA_SIZE_Y, this.dragItem.getAttribute(this.DATA_SIZE_Y));\n this.container.nativeElement.appendChild(p);\n }\n });\n }\n\n private removePlaceholder() {\n const p = this.container.nativeElement.querySelector('.widget-blank-placeholder');\n p?.remove();\n }\n\n public startEdit() {\n this._isInEditing = true;\n this.calcGridSize();\n this.ref.nativeElement.classList.add('grid-background');\n const bg = this.ref.nativeElement as HTMLDivElement;\n bg.style.setProperty('background-position', `${this.rtl ? 'right' : 'left'} top`);\n // tslint:disable-next-line: max-line-length\n const pattern = `url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"${this.tileSize + this.gapSize}\" height=\"${this.tileSize + this.gapSize}\"> <rect style=\"fill: %23dadada\" x=\"${this.rtl ? this.gapSize : 0}\" width=\"${this.tileSize}\" height=\"${this.tileSize}\" y=\"0\"></rect></svg>')`;\n bg.style.setProperty('background-image', pattern);\n //\n const widgets = Array.from(this.ref.nativeElement.querySelectorAll('.widget-host'));\n widgets.forEach((w) => {\n w.addEventListener('mousedown', this.dragStart.bind(this), false);\n });\n this.ref.nativeElement.addEventListener('mousemove', this.drag.bind(this), false);\n this.ref.nativeElement.addEventListener('mouseup', this.dragEnd.bind(this), false);\n }\n\n public finishEdit() {\n this.ref.nativeElement.classList.remove('grid-background');\n const bg = this.ref.nativeElement as HTMLDivElement;\n bg.style.removeProperty('background-image');\n //\n this._isInEditing = false;\n const widgets = Array.from(this.ref.nativeElement.querySelectorAll('.widget-host'));\n widgets.forEach((w) => {\n w.removeEventListener('mousedown', this.dragStart.bind(this), false);\n });\n this.ref.nativeElement.removeEventListener('mousemove', this.drag.bind(this), false);\n this.ref.nativeElement.removeEventListener('mouseup', this.dragEnd.bind(this), false);\n this.saveSubject.next('config');\n }\n\n\n addWidget(widget: AXWidgetConfig) {\n this.zone.runOutsideAngular(() => {\n this.newWidget = {\n uniqueName: widget.uniqueName,\n component: widget.component,\n title: widget.title,\n col: 1,\n row: 1,\n sizeX: widget.sizeX,\n sizeY: widget.sizeY,\n options: widget.options,\n props: widget.props\n };\n this.detectFirstEmptySlot(this.newWidget);\n const w = {\n uniqueName: this.newWidget.uniqueName,\n component: this.newWidget.component,\n title: this.newWidget.title,\n options: this.newWidget.options,\n props: this.newWidget.props,\n sizeX: this.newWidget.sizeX,\n sizeY: this.newWidget.sizeY,\n col: this.newWidget.col,\n row: this.newWidget.row\n };\n this.widgets.push(w);\n this.newWidget = null;\n this.zone.run(() => {\n this.cdr.detectChanges();\n this.calcGridSize();\n this.emitConfigChanged('add');\n setTimeout(() => {\n w['__meta__'].instance.element.addEventListener('mousedown', this.dragStart.bind(this), false);\n }, 1000);\n });\n });\n }\n\n\n handleOnRemove(w: AXWidgetHostComponent) {\n w.element.classList.add('animate__animated', 'animate__zoomOut');\n w.element.addEventListener('animationend', () => {\n this.widgets = this.widgets.filter((c) => (c as any).__meta__.id !== (w.config as any).__meta__.id);\n this.cdr.detectChanges();\n this.calcGridSize();\n this.emitConfigChanged('remove');\n });\n }\n\n handleOnSave(e: AXWidgetConfigSavedEvent) {\n this.onWidgetSave.emit(e);\n }\n\n trackByFn(index, item) {\n if (!item['__meta__']?.id) {\n item['__meta__'] = {};\n item['__meta__'].id = AXHtmlUtil.getUID();\n }\n return item['__meta__']?.id;\n }\n\n\n load(widgets: string | AXWidgetConfig[]): Promise<void> {\n this.clear();\n return new Promise<void>((resolve, reject) => {\n if (widgets) {\n const loadedWidgets: AXWidgetConfig[] = [];\n if (typeof widgets === 'string') {\n try {\n loadedWidgets.push(...JSON.parse(widgets));\n this.emitConfigChanged('load');\n } catch (error) {\n reject('Invalid widget json data!');\n }\n }\n else {\n loadedWidgets.push(...widgets);\n this.emitConfigChanged('load');\n }\n let intervalId: number = -1;\n const loadFunc = () => {\n\n if (this.galleryItems && this.galleryItems.length > 0) {\n loadedWidgets.forEach(w => {\n const gitem = this.galleryItems.find(c => c.uniqueName === w.uniqueName);\n if (gitem) {\n w.component = gitem.component;\n if (gitem.props) {\n w.props = JSON.parse(JSON.stringify(gitem.props));\n }\n }\n });\n this.widgets.push(...loadedWidgets);\n this.emitConfigChanged('load');\n window.clearInterval(intervalId);\n this.cdr.detectChanges();\n resolve();\n }\n };\n intervalId = window.setInterval(loadFunc, 200);\n }\n else {\n resolve();\n }\n });\n }\n\n clear() {\n if (this.widgets.length) {\n this.widgets = [];\n this.cdr.detectChanges();\n this.saveSubject.next('clear');\n }\n }\n\n save(): Promise<string> {\n const obj = this.widgets.map(c => ({\n uniqueName: c.uniqueName,\n component: c.component,\n title: c.title,\n sizeX: c.sizeX,\n sizeY: c.sizeY,\n col: c.col,\n row: c.row,\n options: c.options,\n props: c.props\n }));\n return Promise.resolve(JSON.stringify(obj));\n }\n\n refresh() {\n this.widgetHosts.forEach(host => {\n host.widget.refresh();\n });\n }\n\n handleOnConfigChanged(e: AXWidgetConfigChanged) {\n this.cdr.detectChanges();\n this.saveSubject.next('config');\n }\n\n handleOnResizedChanged(e: AXWidgetConfigChanged) {\n this.detectFirstEmptySlot(e.config);\n this.cdr.detectChanges();\n this.saveSubject.next('config');\n }\n\n private emitConfigChanged(mode: 'clear' | 'add' | 'remove' | 'load' | 'config') {\n this.onConfigChanged.emit({\n component: this,\n mode: mode\n });\n }\n}\n","<div class=\"widgets-container\" [class.rtl]=\"rtl\" #container>\n <ax-widget-host *ngFor=\"let w of widgets;trackBy: trackByFn\" [config]='w' [sizeX]=\"w.sizeX\" [readonly]=\"readonly || w.readonly\"\n [sizeY]=\"w.sizeY\" [col]=\"w.col\" [row]=\"w.row\" (onRemove)=\"handleOnRemove($event)\" (onSave)=\"handleOnSave($event)\"\n (onConfigChanged)=\"handleOnConfigChanged($event)\" (onResized)=\"handleOnResizedChanged($event)\"\n [provideValue]=\"provideValue\">\n </ax-widget-host>\n</div>\n","import { Component, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { AXProperyEditorComponent } from '@acorex/components';\n\n@Component({\n templateUrl: './widget-size.editor.html'\n})\nexport class AXWidgetSizePropertyEditorComponent extends AXProperyEditorComponent<number[]> {\n\n sizeX: number;\n sizeY: number;\n\n minX: number = 1;\n maxX: number = 10;\n\n minY: number = 1;\n maxY: number = 10;\n\n\n constructor(protected cdr: ChangeDetectorRef) {\n super(cdr);\n }\n\n ngOnInit() {\n if (Array.isArray(this.value)) {\n this.sizeX = this.value[0];\n this.sizeY = this.value[1];\n }\n else {\n this.sizeX = 2;\n this.sizeY = 2;\n }\n }\n\n handleMinValueChange(e: any) {\n this.sizeX = e.value;\n\n if (this.sizeY > 0) {\n super.handleValueChange([this.sizeX, this.sizeY]);\n }\n }\n\n handleMaxValueChange(e: any) {\n this.sizeY = e.value;\n if (this.sizeX > 0) {\n super.handleValueChange([this.sizeX, this.sizeY]);\n }\n }\n\n\n\n ngAfterViewInit() {\n this.onRenderCompleted.emit();\n }\n\n}","<div style=\"display: grid;grid-gap: 2%; grid-template-columns: 49% 49%;\">\n <ax-number-box (onValueChanged)=\"handleMinValueChange($event)\" [value]=\"sizeX\" [min]=\"minX\" [max]=\"maxX\">\n </ax-number-box>\n <ax-number-box (onValueChanged)=\"handleMaxValueChange($event)\" [value]=\"sizeY\" [min]=\"minY\" [max]=\"maxY\">\n </ax-number-box>\n</div>","import { NgModule } from '@angular/core';\nimport { AXWidgetBoardComponent } from './widget-board.component';\nimport { CommonModule } from '@angular/common';\nimport { AXWidgetHostComponent } from './widget-host.component';\nimport {\n AXSearchBoxModule,\n AXLoadingModule,\n AXProppertyEditorModule,\n AXPageModule, AXLabelModule,\n AXToolbarModule,\n AXTabStripModule,\n AXMenuModule,\n AXFormGroupModule,\n AXTextAreaModule, AXTextBoxModule, AXFieldsetModule, AXCheckBoxModule, AXValidationModule\n} from '@acorex/components';\nimport { RouterModule } from '@angular/router';\nimport { AXWidgetConfigComponent } from './widget-config.component';\nimport { AXTranslator, AXTranslatorModule } from '@acorex/core';\nimport { AXWidgetSizePropertyEditorComponent } from './editors/widget-size-editor/widget-size.editor';\nimport { AXWidgetSizePropertyEditorModule } from './editors/widget-size-editor/widget-size.module';\nimport { AXWidgetSaveComponent } from './widget-save.component';\n\n@NgModule({\n imports: [\n CommonModule,\n AXSearchBoxModule,\n AXLoadingModule,\n RouterModule,\n AXProppertyEditorModule,\n AXPageModule,\n AXToolbarModule,\n AXTranslatorModule,\n AXLabelModule,\n AXTextAreaModule,\n AXFieldsetModule,\n AXTextBoxModule,\n AXFormGroupModule,\n AXTabStripModule,\n AXCheckBoxModule,\n AXMenuModule,\n AXTranslatorModule,\n AXValidationModule,\n RouterModule.forChild([\n {\n component: AXWidgetSizePropertyEditorComponent,\n path: 'ax/editors/widget-size'\n },\n ])\n ],\n exports: [AXWidgetBoardComponent, AXProppertyEditorModule],\n declarations: [AXWidgetBoardComponent, AXWidgetHostComponent, AXWidgetConfigComponent, AXWidgetSaveComponent],\n providers: []\n})\nexport class AXWidgetBoardModule {\n /**\n *\n */\n constructor() {\n AXTranslator.load('en', {\n 'widget-board': {\n 'configurable-props': 'Configurable Properties',\n configure: 'Configure Widget'\n }\n });\n AXTranslator.load('fa', {\n 'widget-board': {\n 'configurable-props': 'ویژگی های قابل تنظیم',\n configure: 'پیکر بندی ابزارک'\n }\n });\n\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { AXWidgetSizePropertyEditorComponent } from './widget-size.editor';\nimport { AXNumberBoxModule } from '@acorex/components';\n\n\n\n\n@NgModule({\n declarations: [AXWidgetSizePropertyEditorComponent],\n imports: [CommonModule, FormsModule, AXNumberBoxModule],\n exports: [AXWidgetSizePropertyEditorComponent],\n providers: []\n})\nexport class AXWidgetSizePropertyEditorModule {\n \n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i1","i2.AXWidgetHostComponent"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-layout.mjs","sources":["../../../../libs/layout/src/lib/widget-board/widget.class.ts","../../../../libs/layout/src/lib/widget-board/widget-config.component.ts","../../../../libs/layout/src/lib/widget-board/widget-config.component.html","../../../../libs/layout/src/lib/widget-board/widget-save.component.ts","../../../../libs/layout/src/lib/widget-board/widget-save.component.html","../../../../libs/layout/src/lib/widget-board/widget-host.component.ts","../../../../libs/layout/src/lib/widget-board/widget-host.component.html","../../../../libs/layout/src/lib/widget-board/widget-board.component.ts","../../../../libs/layout/src/lib/widget-board/widget-board.component.html","../../../../libs/layout/src/lib/widget-board/editors/widget-size-editor/widget-size.editor.ts","../../../../libs/layout/src/lib/widget-board/editors/widget-size-editor/widget-size.editor.html","../../../../libs/layout/src/lib/widget-board/widget-board.module.ts","../../../../libs/layout/src/lib/widget-board/editors/widget-size-editor/widget-size.module.ts","../../../../libs/layout/src/acorex-layout.ts"],"sourcesContent":["import { EventEmitter, Injectable } from '@angular/core';\nimport { AXValueEvent, AXBaseEvent, propertyEditor, AXDataEvent } from '@acorex/components';\nimport { AXHtmlUtil, AXTranslator } from '@acorex/core';\n\nexport interface AXWidgetConfig {\n uniqueName: string;\n component: any;\n title: string;\n sizeX: number;\n sizeY: number;\n col?: number;\n row?: number;\n options?: any;\n props?: any;\n readonly?: boolean;\n}\n\nexport interface AXWidgetConfigChanged extends AXBaseEvent {\n config: AXWidgetConfig;\n}\n\n\n\nexport interface AXWidgetBoardConfigChanged extends AXBaseEvent {\n mode: 'clear' | 'add' | 'remove' | 'load' | 'config';\n}\n\nexport interface AXWidgetConfigSavedEvent extends AXDataEvent<AXWidgetSaveAsData> {\n\n}\n\n\nexport interface AXWidgetSaveAsData {\n title?: string;\n description?: string;\n icon?: string;\n group?: string;\n //\n uniqueName: string;\n component: any;\n options?: any;\n props?: any;\n}\n\n// @dynamic\n// TODO: Add Angular decorator.\n@Injectable()\nexport abstract class AXWidgetComponent {\n\n readonly uid: string = AXHtmlUtil.getUID();\n provideValue: (e: any) => any;\n\n onBusyChanged: EventEmitter<AXValueEvent<boolean>> = new EventEmitter<AXValueEvent<boolean>>();\n\n private _isBusy: boolean = true;\n public get isBusy(): boolean {\n return this._isBusy;\n }\n public set isBusy(v: boolean) {\n if (v !== this._isBusy) {\n const eventData: AXValueEvent<boolean> = {\n component: this,\n oldValue: this._isBusy,\n value: v\n };\n this._isBusy = v;\n this.onBusyChanged.emit(eventData);\n }\n }\n\n @propertyEditor({\n editorClass: 'ax/editors/widget-size',\n title: 'common.size',\n visible: false,\n order: -99,\n })\n widgetSize: number[];\n\n @propertyEditor({\n editorClass: 'ax/editors/select',\n title: 'common.refresh-rate',\n visible: true,\n order: -98,\n editorOptions: {\n items: () => {\n return [1, 2, 3, 5, 10, 20, 30, 60].map(c => ({\n id: 60000 * c,\n text: AXTranslator.get('dateTime.duration.format_minute').replace('{0}', c.toString())\n }));\n },\n allowNull: false,\n allowSearch: false,\n selectionDataMode: 'value',\n selectionMode: 'single',\n valueField: 'id',\n }\n })\n refreshRate: any = [{\n id: 60000 * 5,\n text: AXTranslator.get('dateTime.duration.format_minute').replace('{0}', '5')\n }];\n\n // ???\n getRefreshRate() {\n return Array.isArray(this.refreshRate) && this.refreshRate.length ? this.refreshRate[0].id : this.refreshRate;\n }\n\n private intervalId: number;\n\n constructor() {\n this.onConfiguredChanged.subscribe(() => {\n if (this.isConfigured === true && this.getRefreshRate()) {\n this.restartRefreshTimer();\n }\n else {\n this.stopRefreshTimer();\n }\n });\n }\n\n\n private startRefreshTimer() {\n this.intervalId = window.setInterval(this.refresh.bind(this), this.getRefreshRate());\n }\n\n private stopRefreshTimer() {\n window.clearInterval(this.intervalId);\n }\n\n private restartRefreshTimer() {\n this.stopRefreshTimer();\n this.startRefreshTimer();\n }\n\n ngOnDestroy() {\n this.stopRefreshTimer();\n }\n\n public redraw() {\n\n }\n\n public refresh() {\n this.restartRefreshTimer();\n }\n\n onConfiguredChanged: EventEmitter<void> = new EventEmitter<void>();\n\n get isConfigured(): boolean {\n return true;\n }\n\n public setValue(name: string, value?: any) {\n this[name] = value;\n this.onConfiguredChanged.emit();\n }\n\n public getValue(name: string): Promise<any> {\n const val = this[name];\n const config = this['__meta__'].config;\n const runtime = config.props[name]?.runtime;\n if (runtime && this.provideValue) {\n const res = this.provideValue({\n name,\n value: val,\n uniqueName: config.uniqueName,\n options: config.options,\n });\n if (this.provideValue instanceof Promise) {\n return res;\n }\n else {\n return Promise.resolve(res);\n }\n }\n return Promise.resolve(val);\n }\n\n}","import { Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild } from '@angular/core';\nimport { AXPropertyConfig, AXBasePopupPageComponent, AXMenuItemClickEvent, AXProperyEditorValueChangeEvent, AXValidationFormComponent } from '@acorex/components';\nimport { AXButtonItem, AXTranslator } from '@acorex/core';\nimport { AXWidgetComponent } from './widget.class';\n\n\n@Component({\n templateUrl: './widget-config.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class AXWidgetConfigComponent extends AXBasePopupPageComponent {\n\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\n\n constructor(private cdr: ChangeDetectorRef) {\n super();\n }\n\n\n widget: AXWidgetComponent;\n props: AXPropertyConfig[] = [];\n displayProps: AXPropertyConfig[] = [];\n\n\n changes: AXPropertyConfig[] = [];\n\n context: any = {};\n\n\n getFooterButtons(): AXButtonItem[] {\n return [\n {\n name: 'okay',\n submitBehavior: true,\n text: AXTranslator.get('common.confirm'),\n style: 'success'\n },\n {\n name: 'cancel',\n cancelBehavior: true,\n text: AXTranslator.get('common.cancel'),\n style: 'danger blank'\n }\n ];\n }\n\n\n\n\n\n onFooterButtonClick(e: AXMenuItemClickEvent) {\n if (e.name === 'cancel') {\n this.close();\n }\n if (e.name === 'okay') {\n this.form.validate().then(c => {\n if (c.result) {\n this.close(this.changes);\n }\n });\n }\n }\n\n handleValueChange(e: AXProperyEditorValueChangeEvent) {\n const prop = this.changes.find(c => c.property.name === e.property.name);\n if (prop) {\n prop.value = e.value;\n }\n else {\n this.changes.push({ property: e.property, value: e.value });\n }\n this.updateContext();\n }\n\n ngOnInit() {\n this.displayProps = this.props.filter(c => c.property.visible !== false).sort((a, b) => a.property.order - b.property.order);\n this.updateContext();\n }\n\n\n private updateContext() {\n const ctx = {};\n this.props.forEach(p => {\n ctx[p.property.name] = p.value;\n });\n this.changes.forEach(p => {\n ctx[p.property.name] = p.value;\n });\n this.context = ctx;\n }\n\n\n identify(index, item: AXPropertyConfig) {\n return item.property.name;\n }\n\n}","<ax-page>\n <ax-page-content>\n <div class=\"container\">\n <ax-validation-form #form>\n <div class=\"row\" *ngFor=\"let p of displayProps; trackBy: identify\">\n <div class=\"col-12\">\n <ax-label>{{p.property.title | trans}}</ax-label>\n <ng-container ax-property-editor-renderer [property]=\"p\" [context]=\"context\" [host]=\"widget\" [validationForm]=\"form\"\n (onValueChange)=\"handleValueChange($event)\">\n </ng-container>\n </div>\n </div>\n </ax-validation-form>\n </div>\n </ax-page-content>\n</ax-page>","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n\n} from '@angular/core';\nimport { AXWidgetConfig, AXWidgetSaveAsData } from './widget.class';\nimport { AXButtonItem, AXHtmlUtil, AXObjectUtil, AXTranslator } from '@acorex/core';\nimport { AXPropertyConfig, AXMenuItemClickEvent, AXBasePopupPageComponent } from '@acorex/components';\n\n\n\n@Component({\n templateUrl: \"./widget-save.component.html\",\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXWidgetSaveComponent extends AXBasePopupPageComponent {\n config: AXWidgetConfig;\n props: AXPropertyConfig[] = [];\n displayProps: { name: string, title: string, allow: boolean }[];\n\n data: AXWidgetSaveAsData;\n\n getFooterButtons(): AXButtonItem[] {\n return [\n {\n name: 'okay',\n submitBehavior: true,\n text: AXTranslator.get('common.confirm'),\n style: 'ax success'\n },\n {\n name: 'cancel',\n cancelBehavior: true,\n text: AXTranslator.get('common.cancel'),\n style: 'ax light'\n }\n ];\n }\n\n ngOnInit() {\n const titleProp = this.props.find(c => c.property.name === 'title' || c.property.name === 'name');\n const title = titleProp?.value || this.config.title;\n const pp: any = {};\n this.props?.forEach(c => {\n pp[c.property.name] = c.property;\n });\n this.data = {\n component: this.config.component,\n title,\n uniqueName: `${this.config.uniqueName}-${AXHtmlUtil.getUID()}`,\n options: AXObjectUtil.deepJSONClone(this.config.options),\n props: AXObjectUtil.deepJSONClone(pp)\n };\n this.displayProps = this.props\n .filter(c => c.property.visible !== false)\n .sort((a, b) => a.property.order - b.property.order)\n .map(c => ({\n name: c.property.name,\n title: c.property.title,\n allow: true\n }));\n }\n\n\n\n onFooterButtonClick(e: AXMenuItemClickEvent) {\n if (e.name === 'cancel') {\n this.close();\n }\n if (e.name === 'okay') {\n this.props.forEach(p => {\n const pp = this.displayProps.find(c => c.name === p.property.name);\n if (pp == null || !pp.allow) {\n let ppp = this.data.props[p.property.name];\n if (ppp) {\n ppp.visible = false;\n }\n else {\n ppp = { visible: false };\n }\n }\n });\n this.close(this.data);\n }\n }\n}","<ax-page>\n <ax-page-content>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12\">\n <ax-form-group>\n <ax-label>{{'common.title' | trans}}</ax-label>\n <ax-text-box [(value)]=\"data.title\"></ax-text-box>\n </ax-form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <ax-form-group>\n <ax-label>{{'common.description' | trans}}</ax-label>\n <ax-text-area [(value)]=\"data.description\"></ax-text-area>\n </ax-form-group>\n </div>\n </div>\n <!-- <div class=\"row\">\n <div class=\"col-12\">\n <ax-form-group>\n <ax-label>{{'common.uniquename' | trans}}</ax-label>\n <ax-text-box></ax-text-box>\n </ax-form-group>\n </div>\n </div> -->\n <div class=\"row\" style=\"margin-block-end: var(--ax-size-md);margin-block-start: var(--ax-size-md);\">\n <div class=\"col-12\">\n <ax-fieldset caption=\"{{'widget-board.configurable-props' | trans}}\">\n <div class=\"row\" *ngFor=\"let prop of displayProps\">\n <div class=\"col-12\" style=\"margin-block-end: var(--ax-size-sm)\">\n <ax-check-box [(value)]=\"prop.allow\" label=\"{{ prop.title | trans }}\">\n\n </ax-check-box>\n </div>\n </div>\n </ax-fieldset>\n </div>\n </div>\n </div>\n </ax-page-content>\n</ax-page>","import {\n Component,\n ViewEncapsulation, Input,\n ElementRef, HostBinding, ComponentFactoryResolver, ViewChild,\n ViewContainerRef, Output, EventEmitter, ChangeDetectionStrategy,\n ChangeDetectorRef, ComponentRef\n} from '@angular/core';\nimport { AXWidgetConfig, AXWidgetComponent, AXWidgetConfigChanged, AXWidgetConfigSavedEvent } from './widget.class';\nimport { AXObjectUtil, AXRenderService } from '@acorex/core';\nimport { AXPopupService, AXPropertyDecorators, AXPropertyDecorator, AXLoadingService } from '@acorex/components';\nimport { AXWidgetConfigComponent } from './widget-config.component';\nimport { AXMenuItem } from '@acorex/core';\nimport { AXTranslator } from '@acorex/core';\nimport { AXWidgetSaveComponent } from './widget-save.component';\n\n\n\n\n\n@Component({\n selector: 'ax-widget-host',\n templateUrl: \"./widget-host.component.html\",\n host: { class: 'ax widget-host', tabindex: '0' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\n\nexport class AXWidgetHostComponent {\n\n private _widget: AXWidgetComponent;\n public get widget(): AXWidgetComponent {\n return this._widget;\n }\n\n _hasProps: boolean = false;\n\n\n _hasMenu: boolean = false;\n\n @Input()\n provideValue: (e: any) => any;\n\n\n get element(): HTMLDivElement {\n return this.ref.nativeElement;\n }\n\n\n configMenuItem: AXMenuItem[] = [\n {\n icon: 'far fa-ellipsis-h',\n items: []\n }\n ];\n\n\n @Output()\n onRemove: EventEmitter<AXWidgetHostComponent> = new EventEmitter<AXWidgetHostComponent>();\n\n @Output()\n onConfigChanged: EventEmitter<AXWidgetConfigChanged> = new EventEmitter<AXWidgetConfigChanged>();\n\n\n @Output()\n onResized: EventEmitter<AXWidgetConfigChanged> = new EventEmitter<AXWidgetConfigChanged>();\n\n @Output()\n onSave: EventEmitter<AXWidgetConfigSavedEvent> = new EventEmitter<AXWidgetConfigSavedEvent>();\n\n @Input()\n config: AXWidgetConfig;\n\n @ViewChild('vc', { read: ViewContainerRef })\n vc: ViewContainerRef;\n\n\n\n @Input()\n readonly: boolean = false;\n\n private componentRef: ComponentRef<any>;\n //private isLoading: boolean = true;\n\n // get isBusy() {\n // return this._widget?.isBusy || this.isLoading;\n // }\n\n\n private _loadingId: number;\n\n private _isLoading: boolean = false;\n public get isLoading(): boolean {\n return this._isLoading;\n }\n public set isLoading(v: boolean) {\n this._isLoading = v;\n if (this._loadingId && !v) {\n this.loadingService.hide(this._loadingId);\n this._loadingId = null;\n }\n if (v) {\n // this._loadingId = this.loadingService.show(this.ref.nativeElement);\n }\n }\n\n\n get isConfigured(): boolean {\n return this._widget?.isConfigured || false;\n }\n\n\n constructor(\n private ref: ElementRef<HTMLDivElement>,\n private componentFactoryResolver: ComponentFactoryResolver,\n private rendererService: AXRenderService,\n private cdr: ChangeDetectorRef,\n private popup: AXPopupService,\n private loadingService: AXLoadingService\n\n ) {\n\n }\n\n\n ngOnInit() {\n // this.isLoading = true;\n }\n\n\n async ngAfterViewInit() {\n let component: any;\n if (typeof this.config.component === 'string') {\n const route = await this.rendererService.findLoadedComponentByRoute(this.config.component, 20);\n component = route?.component;\n }\n else if (typeof this.config.component === 'function') {\n component = this.config.component;\n }\n if (component == null) {\n console.error(`Invalid Widget Component!`, this.config);\n this.onRemove.emit(this);\n return;\n }\n\n const widgetFactory = this.componentFactoryResolver.resolveComponentFactory(component);\n this.componentRef = this.vc.createComponent(widgetFactory);\n this._widget = this.componentRef.instance as AXWidgetComponent;\n this._widget.provideValue = this.provideValue;\n if (this._widget.onBusyChanged) {\n this._widget.onBusyChanged.subscribe((d) => {\n if (!this._widget.widgetSize) {\n this._widget.setValue('widgetSize', [this.sizeX, this.sizeY]);\n }\n else {\n this.setSizeFromOptions();\n }\n // this.isLoading = d.value;\n this.cdr.detectChanges();\n });\n }\n if (this._widget.onConfiguredChanged) {\n this._widget.onConfiguredChanged.subscribe(() => {\n this.setSizeFromOptions();\n });\n }\n //\n if (this.config.options) {\n Object.assign(this._widget, this.config.options);\n }\n this._hasProps = AXPropertyDecorators.getProperties(this._widget).length > 0;\n\n this.isLoading = false;\n this.config['__meta__'].instance = this;\n this._widget['__meta__'] = {};\n this._widget['__meta__'].config = this.config;\n //\n this.configMenuItem[0].items.push({\n name: 'refresh',\n icon: 'far fa-undo',\n text: AXTranslator.get('common.refresh'),\n onClick: () => {\n this?.widget?.refresh();\n }\n });\n //\n if (this._hasProps) {\n this.configMenuItem[0].items.push({\n name: 'configs',\n icon: 'far fa-cogs',\n text: AXTranslator.get('common.configs'),\n onClick: () => {\n this.openConfigDialog();\n }\n });\n }\n this.configMenuItem[0].items.push({\n name: 'save',\n icon: 'far fa-save',\n text: AXTranslator.get('common.save-as'),\n onClick: () => {\n this.openSaveDialog();\n }\n });\n if (true) {\n this.configMenuItem[0].items.push({\n name: 'remove',\n icon: 'far fa-times',\n style: 'ax danger blank',\n text: AXTranslator.get('common.remove'),\n onClick: () => {\n this.onRemove.emit(this);\n }\n });\n }\n this._hasMenu = this.configMenuItem[0].items.length > 0;\n this.cdr.detectChanges();\n }\n\n @HostBinding('attr.data-size-x')\n @Input()\n sizeX: number = 1;\n\n @HostBinding('attr.data-size-y')\n @Input()\n sizeY: number = 1;\n\n @HostBinding('attr.data-col')\n @Input()\n col: number = 1;\n\n\n @HostBinding('attr.data-row')\n @Input()\n row: number = 1;\n\n\n private setSizeFromOptions() {\n this._widget.getValue('widgetSize').then(c => {\n const oldSizeX = this.sizeX;\n const oldSizeY = this.sizeY;\n if (c && Array.isArray(c) && (oldSizeX !== c[0] || oldSizeY !== c[1])) {\n this.config.sizeX = this.sizeX = c[0];\n this.config.sizeY = this.sizeY = c[1];\n this.onResized.emit({\n component: this._widget,\n config: this.config\n });\n }\n this.cdr.detectChanges();\n });\n }\n\n remove(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n if (!this.readonly)\n this.onRemove.emit(this);\n return false;\n }\n\n handleConfig(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n if (!this.readonly)\n this.openConfigDialog();\n return false;\n }\n\n private openConfigDialog() {\n const ppp = this.getMergedProps();\n this.popup.open(AXWidgetConfigComponent, {\n title: AXTranslator.get('common.configs'),\n size: 'sm',\n data: {\n props: ppp.map(c => ({ property: c.options, value: this._widget[c.options.name] })),\n widget: this.widget\n }\n }).then(c => {\n if (c.data) {\n if (!this.config.options) {\n this.config.options = {};\n }\n c.data.forEach(p => {\n this._widget.setValue(p.property.name, p.value);\n this.config.options[p.property.name] = p.value;\n });\n this.emitConfigChanged();\n this._widget.redraw();\n this.cdr.detectChanges();\n }\n });\n }\n\n private openSaveDialog() {\n const ppp = this.getMergedProps();\n this.popup.open(AXWidgetSaveComponent, {\n title: AXTranslator.get('common.save-as'),\n size: 'sm',\n data: {\n config: this.config,\n props: ppp.map(c => ({ property: c.options, value: this._widget[c.options.name] }))\n }\n }).then(c => {\n if (c.data) {\n this.onSave.emit({\n component: this._widget,\n data: c.data\n });\n }\n });\n }\n\n\n\n handleOptionClick(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.openConfigDialog();\n return false;\n }\n\n ngOnDestroy() {\n this.vc.clear();\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n\n private getMergedProps(): AXPropertyDecorator[] {\n const ppp = AXObjectUtil.deepCopy(AXPropertyDecorators.getProperties(this._widget)) as AXPropertyDecorator[];\n for (const key in this.config.props) {\n if (Object.prototype.hasOwnProperty.call(this.config.props, key)) {\n const newP = this.config.props[key];\n const existPropDec = ppp.find(p => p.property === key);\n if (existPropDec) {\n Object.assign(existPropDec.options, newP);\n }\n }\n }\n return ppp;\n }\n\n private emitConfigChanged() {\n this.onConfigChanged.emit({\n component: this._widget,\n config: this.config\n });\n }\n\n}","<div class='widget-container'>\n <div class=\"widget-config-overlay\" *ngIf=\"!isConfigured\" (click)=\"handleConfig($event)\">\n <div class=\"widget-title\">{{config.title}}</div>\n <div class=\"widget-config-box\">\n <div class=\"config-title\">{{ 'widget-board.configure' | trans}}</div>\n <div class=\"config-icon\" *ngIf=\"!readonly\"><i class=\"fas fa-cogs fa-5x\" aria-hidden=\"true\"></i></div>\n </div>\n </div>\n <div class='widget-edit-overlay' >\n <div class='widget-edit-menu'>\n <button class=\"widget-edit-menu-button\" (click)=\"handleConfig($event)\"\n (mousedown)=\"$event.stopPropagation()\" *ngIf=\"_hasProps\" (mouseup)=\"$event.stopPropagation()\">\n <i class=\"far fa-cogs\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"widget-edit-menu-button\" (click)=\"remove($event)\" (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\">\n <i class=\"far fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n\n </div>\n <div class=\"widget-options-menu\" *ngIf=\"_hasMenu && !readonly\">\n <ax-menu [items]='configMenuItem' direction=\"horizontal\"></ax-menu>\n </div>\n <!-- <ax-loading-panel [visible]=\"isBusy\">\n </ax-loading-panel> -->\n <div class=\"widget-content\">\n <ng-container #vc></ng-container>\n </div>\n</div>","import {\n Component,\n OnInit,\n Input,\n ViewEncapsulation,\n ElementRef,\n ViewChild,\n NgZone,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Output,\n EventEmitter, ViewChildren, QueryList\n} from '@angular/core';\nimport {\n AXWidgetConfig,\n AXWidgetConfigChanged,\n AXWidgetBoardConfigChanged,\n AXWidgetConfigSavedEvent\n} from './widget.class';\nimport { AXWidgetHostComponent } from './widget-host.component';\nimport { AXHtmlUtil, AXClientRec } from '@acorex/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators'\n\n\n@Component({\n selector: 'ax-widget-board',\n templateUrl: './widget-board.component.html',\n styleUrls: ['./widget-board.component.scss'],\n host: { class: 'ax widget-board' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AXWidgetBoardComponent implements OnInit {\n\n @ViewChild('container')\n private container: ElementRef<HTMLDivElement>;\n\n @ViewChildren(AXWidgetHostComponent)\n private widgetHosts: QueryList<AXWidgetHostComponent>;\n\n widgets: AXWidgetConfig[] = [];\n\n @Input()\n galleryItems: AXWidgetConfig[] = [];\n\n @Input()\n tileSize: number = 80;\n\n @Input()\n gapSize: number = 5;\n\n\n @Input()\n readonly: boolean = false;\n\n private newWidget: AXWidgetConfig = null;\n\n public rtl: boolean;\n\n private _isInEditing: boolean = false;\n public isInEditing(): boolean {\n return this._isInEditing;\n }\n private isDragging: boolean = false;\n private dragItem: HTMLElement;\n\n private saveSubject = new Subject<string>();\n\n @Input()\n provideValue: (e: any) => any;\n\n private readonly DATA_COL = 'data-col';\n private readonly DATA_ROW = 'data-row';\n private readonly DATA_SIZE_X = 'data-size-x';\n private readonly DATA_SIZE_Y = 'data-size-y';\n private readonly DATA_OLD_COL = 'data-old-col';\n private readonly DATA_OLD_ROW = 'data-old-row';\n\n\n @Output()\n onConfigChanged: EventEmitter<AXWidgetBoardConfigChanged> = new EventEmitter<AXWidgetBoardConfigChanged>();\n\n @Output()\n onWidgetSave: EventEmitter<AXWidgetConfigSavedEvent> = new EventEmitter<AXWidgetConfigSavedEvent>();\n\n constructor(\n private ref: ElementRef<HTMLDivElement>,\n private zone: NgZone,\n private cdr: ChangeDetectorRef\n ) { }\n\n\n ngOnInit() {\n if (this.rtl == null) {\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\n }\n this.saveSubject.pipe(debounceTime(750)).subscribe((value: any) => {\n this.emitConfigChanged(value);\n });\n }\n\n ngOnDestroy()\n {\n this.saveSubject?.unsubscribe();\n }\n\n ngAfterViewInit() {\n this.zone.runOutsideAngular((c) => {\n const style = document.createElement('style');\n style.type = 'text/css';\n this.ref.nativeElement.appendChild(style);\n // add css data classes\n for (let i = 1; i <= 50; i++) {\n style.innerHTML += `[${this.DATA_COL}=\"${i}\"] { ${this.rtl ? 'right' : 'left'}: ${(i - 1) * (this.tileSize + this.gapSize)}px; }`;\n style.innerHTML += `[${this.DATA_ROW}=\"${i}\"] { top: ${(i - 1) * (this.tileSize + this.gapSize)}px; }`;\n style.innerHTML += `[${this.DATA_SIZE_X}=\"${i}\"] { width: ${(i * this.tileSize) + ((i - 1) * this.gapSize)}px; }`;\n style.innerHTML += `[${this.DATA_SIZE_Y}=\"${i}\"] { height: ${(i * this.tileSize) + ((i - 1) * this.gapSize)}px; }`;\n }\n });\n }\n\n private calcGridSize() {\n this.zone.runOutsideAngular(() => {\n const width =\n (Math.max(...this.widgets.map((c) => c.col + c.sizeX - 1))) * (this.tileSize + this.gapSize);\n const height =\n (Math.max(...this.widgets.map((c) => c.row + c.sizeY - 1))) * (this.tileSize + this.gapSize);\n this.container.nativeElement.style.width = width + 'px';\n this.container.nativeElement.style.height = height + 'px';\n });\n }\n\n toggleEdit() {\n this._isInEditing ? this.finishEdit() : this.startEdit();\n }\n\n\n\n private dragStart(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.zone.runOutsideAngular(() => {\n if (this._isInEditing && e.which === 1) {\n this.dragItem = e.currentTarget as any;\n this.dragItem.setAttribute('data-x-offset', (this.dragItem.offsetLeft - e.clientX).toString());\n //\n this.dragItem.setAttribute('data-y-offset', (this.dragItem.offsetTop - e.clientY).toString());\n this.dragItem.classList.add('widget-dragging');\n this.dragItem.classList.remove('animate__animated', 'animate__pulse');\n }\n });\n return false;\n }\n\n removePositionData() {\n this.zone.runOutsideAngular(() => {\n if (this.dragItem && this._isInEditing && this.dragItem.getAttribute(this.DATA_OLD_COL) == null) {\n this.dragItem.setAttribute(this.DATA_OLD_COL, this.dragItem.getAttribute(this.DATA_COL));\n this.dragItem.setAttribute(this.DATA_OLD_ROW, this.dragItem.getAttribute(this.DATA_ROW));\n this.dragItem.removeAttribute(this.DATA_COL);\n this.dragItem.removeAttribute(this.DATA_ROW);\n }\n });\n }\n\n resetPositionData() {\n this.zone.runOutsideAngular(() => {\n if (this.dragItem && this._isInEditing) {\n this.setPosition(this.dragItem, this.dragItem.getAttribute(this.DATA_OLD_COL), this.dragItem.getAttribute(this.DATA_OLD_ROW));\n }\n });\n }\n\n private setPosition(element: HTMLElement, col: string, row: string) {\n this.zone.runOutsideAngular(() => {\n element.setAttribute(this.DATA_COL, col);\n element.setAttribute(this.DATA_ROW, row);\n element.removeAttribute(this.DATA_OLD_COL);\n element.removeAttribute(this.DATA_OLD_ROW);\n element.style.removeProperty('top');\n element.style.removeProperty('left');\n const widget = this.widgets.find(c => c['__meta__'].instance.element === element);\n widget.col = Number(col);\n widget.row = Number(row);\n });\n }\n\n private drag(e) {\n e.preventDefault();\n e.stopPropagation();\n this.zone.runOutsideAngular(() => {\n if (this.dragItem && this._isInEditing) {\n this.isDragging = true;\n this.addPlaceholder();\n const xOffset = Number(this.dragItem.getAttribute('data-x-offset'));\n const yOffset = Number(this.dragItem.getAttribute('data-y-offset'));\n this.dragItem.style.left = e.clientX + xOffset + 'px';\n this.dragItem.style.top = e.clientY + yOffset + 'px';\n //\n this.detectBestPlacement();\n this.removePositionData();\n }\n });\n return false;\n }\n\n private dragEnd(e) {\n this.zone.runOutsideAngular(() => {\n if (this.dragItem && this._isInEditing && this.isDragging) {\n this.dragItem.classList.remove('widget-dragging');\n this.dragItem.classList.add('animate__animated', 'animate__pulse');\n //\n const p = this.container.nativeElement.querySelector('.widget-blank-placeholder');\n if (this.newWidget) {\n const w = {\n uniqueName: this.newWidget.uniqueName,\n component: this.newWidget.component,\n title: this.newWidget.title,\n options: this.newWidget.options,\n sizeX: this.newWidget.sizeX,\n sizeY: this.newWidget.sizeY,\n col: Number(p.getAttribute(this.DATA_COL)),\n row: Number(p.getAttribute(this.DATA_ROW))\n };\n\n this.widgets.push(w);\n this.newWidget = null;\n this.container.nativeElement.removeChild(this.dragItem);\n this.zone.run(() => {\n this.cdr.detectChanges();\n this.calcGridSize();\n setTimeout(() => {\n w['__meta__'].instance.element.addEventListener('mousedown', this.dragStart.bind(this), false);\n }, 1000);\n });\n } else {\n if (p) {\n this.setPosition(this.dragItem, p.getAttribute(this.DATA_COL), p.getAttribute(this.DATA_ROW));\n }\n else {\n this.setPosition(this.dragItem, this.dragItem.getAttribute(this.DATA_OLD_COL), this.dragItem.getAttribute(this.DATA_OLD_ROW));\n }\n }\n //\n this.removePlaceholder();\n this.dragItem = null;\n this.calcGridSize();\n this.saveSubject.next('config');\n }\n this.isDragging = false;\n });\n }\n\n private detectFirstEmptySlot(w: AXWidgetConfig) {\n const xTile = Math.floor(this.ref.nativeElement.parentElement.offsetWidth / this.tileSize);\n for (let j = 1; j <= 100; j++) {\n for (let i = 1; i <= xTile - w.sizeX; i++) {\n const rec = new AXClientRec({\n left: i,\n top: j,\n width: w.sizeX,\n height: w.sizeY\n });\n const el = this.widgets.filter(c => c !== w).find((c) =>\n rec.intersect({\n left: c.col,\n top: c.row,\n width: c.sizeX,\n height: c.sizeY\n })\n );\n if (el == null) {\n w.col = i;\n w.row = j;\n return;\n }\n }\n }\n }\n\n private detectBestPlacement() {\n this.zone.runOutsideAngular(() => {\n const p = this.container.nativeElement.querySelector('.widget-blank-placeholder') as HTMLElement;\n let col = Math.ceil(this.dragItem.offsetLeft / this.tileSize);\n if (this.rtl) {\n col = Math.ceil((this.container.nativeElement.clientWidth - (this.dragItem.offsetLeft + this.dragItem.clientWidth)) / this.tileSize);\n }\n\n let row = Math.ceil(this.dragItem.offsetTop / this.tileSize);\n if (col < 1) {\n col = 1;\n }\n if (row < 1) {\n row = 1;\n }\n const widgets = Array.from(this.ref.nativeElement.querySelectorAll('.widget-host')).map((c) => c as HTMLElement);\n p.setAttribute(this.DATA_COL, col.toString());\n p.setAttribute(this.DATA_ROW, row.toString());\n const collision = widgets.filter(c => c !== this.dragItem).some(c => AXHtmlUtil.collision(c, this.dragItem));\n if (collision) {\n this.removePlaceholder();\n }\n });\n }\n\n\n private addPlaceholder() {\n this.zone.runOutsideAngular(() => {\n this.removePlaceholder();\n if (this.dragItem) {\n const p = document.createElement('div');\n p.classList.add('widget-blank-placeholder');\n p.setAttribute(this.DATA_COL, this.dragItem.getAttribute(this.DATA_COL));\n p.setAttribute(this.DATA_ROW, this.dragItem.getAttribute(this.DATA_ROW));\n p.setAttribute(this.DATA_SIZE_X, this.dragItem.getAttribute(this.DATA_SIZE_X));\n p.setAttribute(this.DATA_SIZE_Y, this.dragItem.getAttribute(this.DATA_SIZE_Y));\n this.container.nativeElement.appendChild(p);\n }\n });\n }\n\n private removePlaceholder() {\n const p = this.container.nativeElement.querySelector('.widget-blank-placeholder');\n p?.remove();\n }\n\n public startEdit() {\n this._isInEditing = true;\n this.calcGridSize();\n this.ref.nativeElement.classList.add('grid-background');\n const bg = this.ref.nativeElement as HTMLDivElement;\n bg.style.setProperty('background-position', `${this.rtl ? 'right' : 'left'} top`);\n // tslint:disable-next-line: max-line-length\n const pattern = `url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"${this.tileSize + this.gapSize}\" height=\"${this.tileSize + this.gapSize}\"> <rect style=\"fill: %23dadada\" x=\"${this.rtl ? this.gapSize : 0}\" width=\"${this.tileSize}\" height=\"${this.tileSize}\" y=\"0\"></rect></svg>')`;\n bg.style.setProperty('background-image', pattern);\n //\n const widgets = Array.from(this.ref.nativeElement.querySelectorAll('.widget-host'));\n widgets.forEach((w) => {\n w.addEventListener('mousedown', this.dragStart.bind(this), false);\n });\n this.ref.nativeElement.addEventListener('mousemove', this.drag.bind(this), false);\n this.ref.nativeElement.addEventListener('mouseup', this.dragEnd.bind(this), false);\n }\n\n public finishEdit() {\n this.ref.nativeElement.classList.remove('grid-background');\n const bg = this.ref.nativeElement as HTMLDivElement;\n bg.style.removeProperty('background-image');\n //\n this._isInEditing = false;\n const widgets = Array.from(this.ref.nativeElement.querySelectorAll('.widget-host'));\n widgets.forEach((w) => {\n w.removeEventListener('mousedown', this.dragStart.bind(this), false);\n });\n this.ref.nativeElement.removeEventListener('mousemove', this.drag.bind(this), false);\n this.ref.nativeElement.removeEventListener('mouseup', this.dragEnd.bind(this), false);\n this.saveSubject.next('config');\n }\n\n\n addWidget(widget: AXWidgetConfig) {\n this.zone.runOutsideAngular(() => {\n this.newWidget = {\n uniqueName: widget.uniqueName,\n component: widget.component,\n title: widget.title,\n col: 1,\n row: 1,\n sizeX: widget.sizeX,\n sizeY: widget.sizeY,\n options: widget.options,\n props: widget.props\n };\n this.detectFirstEmptySlot(this.newWidget);\n const w = {\n uniqueName: this.newWidget.uniqueName,\n component: this.newWidget.component,\n title: this.newWidget.title,\n options: this.newWidget.options,\n props: this.newWidget.props,\n sizeX: this.newWidget.sizeX,\n sizeY: this.newWidget.sizeY,\n col: this.newWidget.col,\n row: this.newWidget.row\n };\n this.widgets.push(w);\n this.newWidget = null;\n this.zone.run(() => {\n this.cdr.detectChanges();\n this.calcGridSize();\n this.emitConfigChanged('add');\n setTimeout(() => {\n w['__meta__'].instance.element.addEventListener('mousedown', this.dragStart.bind(this), false);\n }, 1000);\n });\n });\n }\n\n\n handleOnRemove(w: AXWidgetHostComponent) {\n w.element.classList.add('animate__animated', 'animate__zoomOut');\n w.element.addEventListener('animationend', () => {\n this.widgets = this.widgets.filter((c) => (c as any).__meta__.id !== (w.config as any).__meta__.id);\n this.cdr.detectChanges();\n this.calcGridSize();\n this.emitConfigChanged('remove');\n });\n }\n\n handleOnSave(e: AXWidgetConfigSavedEvent) {\n this.onWidgetSave.emit(e);\n }\n\n trackByFn(index, item) {\n if (!item['__meta__']?.id) {\n item['__meta__'] = {};\n item['__meta__'].id = AXHtmlUtil.getUID();\n }\n return item['__meta__']?.id;\n }\n\n\n load(widgets: string | AXWidgetConfig[]): Promise<void> {\n this.clear();\n return new Promise<void>((resolve, reject) => {\n if (widgets) {\n const loadedWidgets: AXWidgetConfig[] = [];\n if (typeof widgets === 'string') {\n try {\n loadedWidgets.push(...JSON.parse(widgets));\n this.emitConfigChanged('load');\n } catch (error) {\n reject('Invalid widget json data!');\n }\n }\n else {\n loadedWidgets.push(...widgets);\n this.emitConfigChanged('load');\n }\n let intervalId: number = -1;\n const loadFunc = () => {\n\n if (this.galleryItems && this.galleryItems.length > 0) {\n loadedWidgets.forEach(w => {\n const gitem = this.galleryItems.find(c => c.uniqueName === w.uniqueName);\n if (gitem) {\n w.component = gitem.component;\n if (gitem.props) {\n w.props = JSON.parse(JSON.stringify(gitem.props));\n }\n }\n });\n this.widgets.push(...loadedWidgets);\n this.emitConfigChanged('load');\n window.clearInterval(intervalId);\n this.cdr.detectChanges();\n resolve();\n }\n };\n intervalId = window.setInterval(loadFunc, 200);\n }\n else {\n resolve();\n }\n });\n }\n\n clear() {\n if (this.widgets.length) {\n this.widgets = [];\n this.cdr.detectChanges();\n this.saveSubject.next('clear');\n }\n }\n\n save(): Promise<string> {\n const obj = this.widgets.map(c => ({\n uniqueName: c.uniqueName,\n component: c.component,\n title: c.title,\n sizeX: c.sizeX,\n sizeY: c.sizeY,\n col: c.col,\n row: c.row,\n options: c.options,\n props: c.props\n }));\n return Promise.resolve(JSON.stringify(obj));\n }\n\n refresh() {\n this.widgetHosts.forEach(host => {\n host.widget.refresh();\n });\n }\n\n handleOnConfigChanged(e: AXWidgetConfigChanged) {\n this.cdr.detectChanges();\n this.saveSubject.next('config');\n }\n\n handleOnResizedChanged(e: AXWidgetConfigChanged) {\n this.detectFirstEmptySlot(e.config);\n this.cdr.detectChanges();\n this.saveSubject.next('config');\n }\n\n private emitConfigChanged(mode: 'clear' | 'add' | 'remove' | 'load' | 'config') {\n this.onConfigChanged.emit({\n component: this,\n mode: mode\n });\n }\n}\n","<div class=\"widgets-container\" [class.rtl]=\"rtl\" #container>\n <ax-widget-host *ngFor=\"let w of widgets;trackBy: trackByFn\" [config]='w' [sizeX]=\"w.sizeX\" [readonly]=\"readonly || w.readonly\"\n [sizeY]=\"w.sizeY\" [col]=\"w.col\" [row]=\"w.row\" (onRemove)=\"handleOnRemove($event)\" (onSave)=\"handleOnSave($event)\"\n (onConfigChanged)=\"handleOnConfigChanged($event)\" (onResized)=\"handleOnResizedChanged($event)\"\n [provideValue]=\"provideValue\">\n </ax-widget-host>\n</div>\n","import { Component, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { AXProperyEditorComponent } from '@acorex/components';\n\n@Component({\n templateUrl: './widget-size.editor.html'\n})\nexport class AXWidgetSizePropertyEditorComponent extends AXProperyEditorComponent<number[]> {\n\n sizeX: number;\n sizeY: number;\n\n minX: number = 1;\n maxX: number = 10;\n\n minY: number = 1;\n maxY: number = 10;\n\n\n constructor(protected cdr: ChangeDetectorRef) {\n super(cdr);\n }\n\n ngOnInit() {\n if (Array.isArray(this.value)) {\n this.sizeX = this.value[0];\n this.sizeY = this.value[1];\n }\n else {\n this.sizeX = 2;\n this.sizeY = 2;\n }\n }\n\n handleMinValueChange(e: any) {\n this.sizeX = e.value;\n\n if (this.sizeY > 0) {\n super.handleValueChange([this.sizeX, this.sizeY]);\n }\n }\n\n handleMaxValueChange(e: any) {\n this.sizeY = e.value;\n if (this.sizeX > 0) {\n super.handleValueChange([this.sizeX, this.sizeY]);\n }\n }\n\n\n\n ngAfterViewInit() {\n this.onRenderCompleted.emit();\n }\n\n}","<div style=\"display: grid;grid-gap: 2%; grid-template-columns: 49% 49%;\">\n <ax-number-box (onValueChanged)=\"handleMinValueChange($event)\" [value]=\"sizeX\" [min]=\"minX\" [max]=\"maxX\">\n </ax-number-box>\n <ax-number-box (onValueChanged)=\"handleMaxValueChange($event)\" [value]=\"sizeY\" [min]=\"minY\" [max]=\"maxY\">\n </ax-number-box>\n</div>","import { NgModule } from '@angular/core';\nimport { AXWidgetBoardComponent } from './widget-board.component';\nimport { CommonModule } from '@angular/common';\nimport { AXWidgetHostComponent } from './widget-host.component';\nimport {\n AXSearchBoxModule,\n AXLoadingModule,\n AXProppertyEditorModule,\n AXPageModule, AXLabelModule,\n AXToolbarModule,\n AXTabStripModule,\n AXMenuModule,\n AXFormGroupModule,\n AXTextAreaModule, AXTextBoxModule, AXFieldsetModule, AXCheckBoxModule, AXValidationModule\n} from '@acorex/components';\nimport { RouterModule } from '@angular/router';\nimport { AXWidgetConfigComponent } from './widget-config.component';\nimport { AXTranslator, AXTranslatorModule } from '@acorex/core';\nimport { AXWidgetSizePropertyEditorComponent } from './editors/widget-size-editor/widget-size.editor';\nimport { AXWidgetSizePropertyEditorModule } from './editors/widget-size-editor/widget-size.module';\nimport { AXWidgetSaveComponent } from './widget-save.component';\n\n@NgModule({\n imports: [\n CommonModule,\n AXSearchBoxModule,\n AXLoadingModule,\n RouterModule,\n AXProppertyEditorModule,\n AXPageModule,\n AXToolbarModule,\n AXTranslatorModule,\n AXLabelModule,\n AXTextAreaModule,\n AXFieldsetModule,\n AXTextBoxModule,\n AXFormGroupModule,\n AXTabStripModule,\n AXCheckBoxModule,\n AXMenuModule,\n AXTranslatorModule,\n AXValidationModule,\n RouterModule.forChild([\n {\n component: AXWidgetSizePropertyEditorComponent,\n path: 'ax/editors/widget-size'\n },\n ])\n ],\n exports: [AXWidgetBoardComponent, AXProppertyEditorModule],\n declarations: [AXWidgetBoardComponent, AXWidgetHostComponent, AXWidgetConfigComponent, AXWidgetSaveComponent],\n providers: []\n})\nexport class AXWidgetBoardModule {\n /**\n *\n */\n constructor() {\n AXTranslator.load('en', {\n 'widget-board': {\n 'configurable-props': 'Configurable Properties',\n configure: 'Configure Widget'\n }\n });\n AXTranslator.load('fa', {\n 'widget-board': {\n 'configurable-props': 'ویژگی های قابل تنظیم',\n configure: 'پیکر بندی ابزارک'\n }\n });\n\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { AXWidgetSizePropertyEditorComponent } from './widget-size.editor';\nimport { AXNumberBoxModule } from '@acorex/components';\n\n\n\n\n@NgModule({\n declarations: [AXWidgetSizePropertyEditorComponent],\n imports: [CommonModule, FormsModule, AXNumberBoxModule],\n exports: [AXWidgetSizePropertyEditorComponent],\n providers: []\n})\nexport class AXWidgetSizePropertyEditorModule {\n \n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3","i1","i2.AXWidgetHostComponent"],"mappings":"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"}
|