ngx-bimplus-components 0.0.84-draggable-1 → 0.0.84-draggable-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.mjs +2 -2
- package/esm2022/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.mjs +2 -2
- package/esm2022/lib/services/layout-manager.service.mjs +32 -15
- package/fesm2022/ngx-bimplus-components.mjs +33 -16
- package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
- package/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.d.ts +3 -3
- package/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.d.ts +3 -3
- package/lib/services/layout-manager.service.d.ts +2 -1
- package/package.json +1 -1
|
@@ -30,7 +30,7 @@ export class BimplusFloatingBarHideObjectsComponent extends BimplusLocalizedWidg
|
|
|
30
30
|
this.focusSelectorId = 'hide-menu-id';
|
|
31
31
|
this.layoutManagerService = layoutManagerService;
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
ngAfterViewInit() {
|
|
34
34
|
// Subscribe to the observable
|
|
35
35
|
this.layoutManagerService.registerObject(this.element, this.componentId, '.floating-panel.visible', true, DEFAULT_POSITION_LEFT, DEFAULT_POSITION_TOP);
|
|
36
36
|
}
|
|
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
|
|
|
56
56
|
}], items: [{
|
|
57
57
|
type: Input
|
|
58
58
|
}] } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1mbG9hdGluZy1iYXItaGlkZS1vYmplY3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhpZGUtb2JqZWN0cy9iaW1wbHVzLWZsb2F0aW5nLWJhci1oaWRlLW9iamVjdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbG9hdGluZy1iYXItaGlkZS1vYmplY3RzL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhpZGUtb2JqZWN0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGtFQUFrRSxDQUFBO0FBQ2xILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQzVILE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHNGQUFzRixDQUFDO0FBQ2hKLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGdGQUFnRixDQUFDOzs7OztBQUt2SSxNQUFNLHFCQUFxQixHQUFFLEdBQUcsQ0FBQztBQUNqQyxNQUFNLG9CQUFvQixHQUFFLEdBQUcsQ0FBQztBQWlCaEMsTUFBTSxPQUFPLHNDQUF1QyxTQUFRLCtCQUErQjtJQWlCekYsWUFBWSxnQkFBa0MsRUFDNUMsb0JBQTBDLEVBQ2xDLE9BQW1CLEVBQ25CLEdBQXNCLEVBQ3RCLHFCQUEyQztRQUVyRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUpkLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQW5CM0Msa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDdkIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUNuQyw2Q0FBNkM7UUFDcEMsVUFBSyxHQUEyQixFQUFFLENBQUM7UUFFcEMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFJeEMsZ0JBQVcsR0FBRyxpQkFBaUIsQ0FBQTtRQUMvQixTQUFJLEdBQUcsbUJBQW1CLENBQUM7UUFDM0IsVUFBSyxHQUFXLEVBQUUsQ0FBQyxDQUFDLCtCQUErQjtRQUNuRCxvQkFBZSxHQUFXLGNBQWMsQ0FBQztRQVN6QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDakQsQ0FBQztJQUdELGVBQWU7UUFDYiw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUMseUJBQXlCLEVBQUMsSUFBSSxFQUFDLHFCQUFxQixFQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDcEosQ0FBQzsrR0EvQlUsc0NBQXNDO21HQUF0QyxzQ0FBc0MsdU1BTHRDLENBQUMsZ0JBQWdCLENBQUMsaURDekIvQixnc0NBcUNBLHl5a0JEbkJJLFlBQVksK0JBQ1osMkJBQTJCLDJLQUMzQixrQ0FBa0Msa0hBQ2xDLHdDQUF3Qyw4SkFDeEMscUNBQXFDLHNJQUNyQyxlQUFlOzs0RkFPTixzQ0FBc0M7a0JBaEJsRCxTQUFTOytCQUNFLHVDQUF1QyxjQUNyQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWiwyQkFBMkI7d0JBQzNCLGtDQUFrQzt3QkFDbEMsd0NBQXdDO3dCQUN4QyxxQ0FBcUM7d0JBQ3JDLGVBQWU7cUJBQ2hCLGFBQ1UsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFHZCxpQkFBaUIsQ0FBQyxTQUFTO3FOQUloQyxhQUFhO3NCQUF0QixNQUFNO2dCQUNFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbixFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3RvclJlZiwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlLCBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCB9IGZyb20gXCIuLy4uL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgQmltcGx1c0Zsb2F0aW5nQmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1mbG9hdGluZy1iYXIvYmltcGx1cy1mbG9hdGluZy1iYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c0Zsb2F0aW5nQmFyRHJhZ2dlckNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyLWRyYWdnZXIvYmltcGx1cy1mbG9hdGluZy1iYXItZHJhZ2dlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzRmxvYXRpbmdCYXJIZWFkZXJDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1mbG9hdGluZy1iYXItaGVhZGVyLWNvbnRlbnQvYmltcGx1cy1mbG9hdGluZy1iYXItaGVhZGVyLWNvbnRlbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c0Zsb2F0aW5nQmFySGVhZGVyTG9nb0NvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1sb2dvL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1sb2dvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZsb2F0aW5nQmFySXRlbSB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyL2JpbXBsdXMtZmxvYXRpbmctYmFyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IExheW91dE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcclxuXHJcbmNvbnN0IERFRkFVTFRfUE9TSVRJT05fTEVGVCA9MzU1O1xyXG5jb25zdCBERUZBVUxUX1BPU0lUSU9OX1RPUCA9MzU1O1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oaWRlLW9iamVjdHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgQmltcGx1c0Zsb2F0aW5nQmFyQ29tcG9uZW50LFxyXG4gICAgQmltcGx1c0Zsb2F0aW5nQmFyRHJhZ2dlckNvbXBvbmVudCxcclxuICAgIEJpbXBsdXNGbG9hdGluZ0JhckhlYWRlckNvbnRlbnRDb21wb25lbnQsXHJcbiAgICBCaW1wbHVzRmxvYXRpbmdCYXJIZWFkZXJMb2dvQ29tcG9uZW50LFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbVHJhbnNsYXRlU2VydmljZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhpZGUtb2JqZWN0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhpZGUtb2JqZWN0cy5jb21wb25lbnQubGVzcycsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uU2hhZG93RG9tXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCaW1wbHVzRmxvYXRpbmdCYXJIaWRlT2JqZWN0c0NvbXBvbmVudCBleHRlbmRzIEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBcclxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBJbnB1dCgpIG5vQm9keTogYm9vbGVhbiA9IHRydWU7ICBcclxuICBASW5wdXQoKSBpc0ZvY3VzZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8vIEl0ZW1zIGZvciB0aGUgaGVhZGVyIGNvbnRlbnQgc3ViIGNvbXBvbmVudFxyXG4gIEBJbnB1dCgpIGl0ZW1zOiBBcnJheTxGbG9hdGluZ0Jhckl0ZW0+ID0gW107XHJcblxyXG4gIHByaXZhdGUgaGFzVmlld0NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgbGF5b3V0TWFuYWdlclNlcnZpY2U6IExheW91dE1hbmFnZXJTZXJ2aWNlO1xyXG5cclxuXHJcbiAgY29tcG9uZW50SWQgPSAnaGlkZS1tZW51LWZwLWlkJ1xyXG4gIGljb24gPSAndWktaWNvbi1oaWRlLW1lbnUnO1xyXG4gIHRpdGxlOiBzdHJpbmcgPSBcIlwiOyAvLyBubyB0b29sdGlwIGluZm8gb24gTG9nbyBpY29uXHJcbiAgZm9jdXNTZWxlY3RvcklkOiBzdHJpbmcgPSAnaGlkZS1tZW51LWlkJztcclxuXHJcbiAgY29uc3RydWN0b3IodHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIGxheW91dE1hbmFnZXJTZXJ2aWNlOiBMYXlvdXRNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOlJlc2l6ZU9ic2VydmVyU2VydmljZVxyXG4gICAgICl7ICAgIFxyXG4gIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UpO1xyXG4gIHRoaXMubGF5b3V0TWFuYWdlclNlcnZpY2UgPSBsYXlvdXRNYW5hZ2VyU2VydmljZTtcclxuICB9XHJcbiAgXHJcbiAgXHJcbiAgbmdBZnRlclZpZXdJbml0KCl7XHJcbiAgICAvLyBTdWJzY3JpYmUgdG8gdGhlIG9ic2VydmFibGVcclxuICAgIHRoaXMubGF5b3V0TWFuYWdlclNlcnZpY2UucmVnaXN0ZXJPYmplY3QodGhpcy5lbGVtZW50LHRoaXMuY29tcG9uZW50SWQsJy5mbG9hdGluZy1wYW5lbC52aXNpYmxlJyx0cnVlLERFRkFVTFRfUE9TSVRJT05fTEVGVCxERUZBVUxUX1BPU0lUSU9OX1RPUCk7ICAgIFxyXG4gIH0gICAgXHJcbn1cclxuIiwiPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhclxyXG4gIGlkPVwiaGlkZS1tZW51LWZwLWlkXCJcclxuICBbaWRdID0gXCJjb21wb25lbnRJZFwiXHJcbiAgY2xhc3M9XCJoaWRlLW1lbnVcIlxyXG4gIFtub0JvZHldPVwibm9Cb2R5XCJcclxuICBbaXNGb2N1c2VkXT1cImlzRm9jdXNlZFwiXHJcbiAgW3Jlc2l6ZUVuYWJsZWRdPVwiZmFsc2VcIlxyXG4gIFtmb2N1c1NlbGVjdG9yXT1cImZvY3VzU2VsZWN0b3JJZFwiXHJcbiAgW2lzVmlzaWJsZV09XCJ0cnVlXCJcclxuICBbc2VsZWN0ZWRMYW5ndWFnZV09XCJzZWxlY3RlZExhbmd1YWdlXCJcclxuICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCIgIFxyXG4+XHJcbiAgPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItbG9nb1xyXG4gICAgY2xhc3M9XCJmbG9hdGluZy1iYXItaGVhZGVyLWxvZ29cIlxyXG4gICAgW3BhcmVudElkXSA9IFwiY29tcG9uZW50SWRcIlxyXG4gICAgW2ljb25dPVwiaWNvblwiXHJcbiAgICBbc2VsZWN0ZWRMYW5ndWFnZV09XCJzZWxlY3RlZExhbmd1YWdlXCJcclxuICAgIFtsb2NhbGl6ZWRTdHJpbmdzXT1cImxvY2FsaXplZFN0cmluZ3NcIlxyXG4gID5cclxuICA8L2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItbG9nbz5cclxuXHJcbiAgPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItY29udGVudFxyXG4gICAgW3NlbGVjdGVkTGFuZ3VhZ2VdPVwic2VsZWN0ZWRMYW5ndWFnZVwiXHJcbiAgICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCJcclxuICAgIFtwYXJlbnRJZF0gPSBcImNvbXBvbmVudElkXCJcclxuICAgIGNsYXNzPVwiZmxvYXRpbmctYmFyLWhlYWRlci1jb250ZW50XCJcclxuICAgIFtpdGVtc109XCJpdGVtc1wiICAgIFxyXG4gICAgKGFjdGlvbkNsaWNrZWQpPVwiYWN0aW9uQ2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gID5cclxuICA8L2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItY29udGVudD5cclxuXHJcbiAgPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1kcmFnZ2VyXHJcbiAgICBjbGFzcz1cImZsb2F0aW5nLWJhci1kcmFnZ2VyXCIgICAgXHJcbiAgICBbcGFyZW50SWRdID0gXCJjb21wb25lbnRJZFwiXHJcbiAgPlxyXG4gIDwvbGliLWJpbXBsdXMtZmxvYXRpbmctYmFyLWRyYWdnZXI+XHJcbjwvbGliLWJpbXBsdXMtZmxvYXRpbmctYmFyPlxyXG4iXX0=
|
|
@@ -28,7 +28,7 @@ export class BimplusFloatingBarIsolationObjectsComponent extends BimplusLocalize
|
|
|
28
28
|
this.focusSelectorId = 'isolation-menu-id';
|
|
29
29
|
this.componentId = 'isolation-menu-fp-id';
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
ngAfterViewInit() {
|
|
32
32
|
this.layoutManagerService.registerObject(this.element, this.componentId, '.floating-panel.visible', true, DEFAULT_POSITION_LEFT, DEFAULT_POSITION_TOP);
|
|
33
33
|
}
|
|
34
34
|
ngAfterViewChecked() {
|
|
@@ -62,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
|
|
|
62
62
|
}], items: [{
|
|
63
63
|
type: Input
|
|
64
64
|
}] } });
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy1mbG9hdGluZy1iYXItaXNvbGF0aW9uLW9iamVjdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbG9hdGluZy1iYXItaXNvbGF0aW9uLW9iamVjdHMvYmltcGx1cy1mbG9hdGluZy1iYXItaXNvbGF0aW9uLW9iamVjdHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbG9hdGluZy1iYXItaXNvbGF0aW9uLW9iamVjdHMvYmltcGx1cy1mbG9hdGluZy1iYXItaXNvbGF0aW9uLW9iamVjdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBa0UsTUFBTSxlQUFlLENBQUM7QUFDMUosT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQTtBQUNsSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUNyRyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUM1SCxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxzRkFBc0YsQ0FBQztBQUNoSixPQUFPLEVBQUUscUNBQXFDLEVBQUUsTUFBTSxnRkFBZ0YsQ0FBQzs7OztBQUl2SSxNQUFNLHFCQUFxQixHQUFFLEdBQUcsQ0FBQztBQUNqQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQW1CakMsTUFBTSxPQUFPLDJDQUE0QyxTQUFRLCtCQUErQjtJQUM5RixZQUFZLGdCQUFrQyxFQUMxQixvQkFBMEMsRUFDMUMsT0FBbUIsRUFDbkIsR0FBc0I7UUFDeEMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFITix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDbkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFJbEMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFHOUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTVDLFdBQU0sR0FBWSxJQUFJLENBQUM7UUFDdkIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUVuQyw2Q0FBNkM7UUFDcEMsVUFBSyxHQUEyQixFQUFFLENBQUM7UUFFNUMsU0FBSSxHQUFHLHdCQUF3QixDQUFDO1FBQ2hDLFVBQUssR0FBVyxFQUFFLENBQUMsQ0FBQywrQkFBK0I7UUFDbkQsb0JBQWUsR0FBVyxtQkFBbUIsQ0FBQztRQUM5QyxnQkFBVyxHQUFHLHNCQUFzQixDQUFDO0lBZnJDLENBQUM7SUFpQkQsZUFBZTtRQUNiLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsV0FBVyxFQUFDLHlCQUF5QixFQUFDLElBQUksRUFBQyxxQkFBcUIsRUFBQyxvQkFBb0IsQ0FBRSxDQUFDO0lBQ3JKLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxDQUFDLDZDQUE2QztZQUN6RSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsK0JBQStCO1lBQ3pELFVBQVUsQ0FBQyxHQUFFLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFDLHlCQUF5QixFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pHLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7K0dBcENVLDJDQUEyQzttR0FBM0MsMkNBQTJDLDRNQU4zQyxDQUFDLGdCQUFnQixDQUFDLGlEQzFCL0Isc3NDQXFDQSx5eWtCRGxCSSxZQUFZLCtCQUNaLDJCQUEyQiwyS0FDM0Isa0NBQWtDLGtIQUNsQyx3Q0FBd0MsOEpBQ3hDLHFDQUFxQyxzSUFDckMsZUFBZTs7NEZBUU4sMkNBQTJDO2tCQWpCdkQsU0FBUzsrQkFDRSw0Q0FBNEMsY0FDMUMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osMkJBQTJCO3dCQUMzQixrQ0FBa0M7d0JBQ2xDLHdDQUF3Qzt3QkFDeEMscUNBQXFDO3dCQUNyQyxlQUFlO3FCQUNoQixhQUNVLENBQUMsZ0JBQWdCLENBQUMsaUJBR2QsaUJBQWlCLENBQUMsU0FBUztpTEFjaEMsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gLEVsZW1lbnRSZWYsIEFmdGVyVmlld0NoZWNrZWQsIENoYW5nZURldGVjdG9yUmVmLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCB9IGZyb20gXCIuLy4uL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgQmltcGx1c0Zsb2F0aW5nQmFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1mbG9hdGluZy1iYXIvYmltcGx1cy1mbG9hdGluZy1iYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c0Zsb2F0aW5nQmFyRHJhZ2dlckNvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyLWRyYWdnZXIvYmltcGx1cy1mbG9hdGluZy1iYXItZHJhZ2dlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBCaW1wbHVzRmxvYXRpbmdCYXJIZWFkZXJDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vYmltcGx1cy1mbG9hdGluZy1iYXItaGVhZGVyLWNvbnRlbnQvYmltcGx1cy1mbG9hdGluZy1iYXItaGVhZGVyLWNvbnRlbnQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c0Zsb2F0aW5nQmFySGVhZGVyTG9nb0NvbXBvbmVudCB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1sb2dvL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhlYWRlci1sb2dvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZsb2F0aW5nQmFySXRlbSB9IGZyb20gJy4uL2JpbXBsdXMtZmxvYXRpbmctYmFyL2JpbXBsdXMtZmxvYXRpbmctYmFyLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IExheW91dE1hbmFnZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQtbWFuYWdlci5zZXJ2aWNlJztcclxuXHJcbmNvbnN0IERFRkFVTFRfUE9TSVRJT05fTEVGVCA9MzU1O1xyXG5jb25zdCBERUZBVUxUX1BPU0lUSU9OX1RPUCA9IDMyMDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJpbXBsdXMtZmxvYXRpbmctYmFyLWlzb2xhdGlvbi1vYmplY3RzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIEJpbXBsdXNGbG9hdGluZ0JhckNvbXBvbmVudCxcclxuICAgIEJpbXBsdXNGbG9hdGluZ0JhckRyYWdnZXJDb21wb25lbnQsXHJcbiAgICBCaW1wbHVzRmxvYXRpbmdCYXJIZWFkZXJDb250ZW50Q29tcG9uZW50LFxyXG4gICAgQmltcGx1c0Zsb2F0aW5nQmFySGVhZGVyTG9nb0NvbXBvbmVudCxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1RyYW5zbGF0ZVNlcnZpY2VdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iaW1wbHVzLWZsb2F0aW5nLWJhci1pc29sYXRpb24tb2JqZWN0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtZmxvYXRpbmctYmFyLWlzb2xhdGlvbi1vYmplY3RzLmNvbXBvbmVudC5sZXNzJyxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5TaGFkb3dEb21cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBCaW1wbHVzRmxvYXRpbmdCYXJJc29sYXRpb25PYmplY3RzQ29tcG9uZW50IGV4dGVuZHMgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWR7XHJcbiAgY29uc3RydWN0b3IodHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsYXlvdXRNYW5hZ2VyU2VydmljZTogTGF5b3V0TWFuYWdlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZil7ICAgIFxyXG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSk7ICAgIFxyXG4gICAgXHJcbiAgfVxyXG4gIHByaXZhdGUgaGFzVmlld0NoZWNrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgXHJcbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgQElucHV0KCkgbm9Cb2R5OiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBpc0ZvY3VzZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyBJdGVtcyBmb3IgdGhlIGhlYWRlciBjb250ZW50IHN1YiBjb21wb25lbnRcclxuICBASW5wdXQoKSBpdGVtczogQXJyYXk8RmxvYXRpbmdCYXJJdGVtPiA9IFtdO1xyXG5cclxuICBpY29uID0gJ3VpLWljb24taXNvbGF0aW9uLW1lbnUnO1xyXG4gIHRpdGxlOiBzdHJpbmcgPSBcIlwiOyAvLyBubyB0b29sdGlwIGluZm8gb24gTG9nbyBpY29uXHJcbiAgZm9jdXNTZWxlY3RvcklkOiBzdHJpbmcgPSAnaXNvbGF0aW9uLW1lbnUtaWQnO1xyXG4gIGNvbXBvbmVudElkID0gJ2lzb2xhdGlvbi1tZW51LWZwLWlkJztcclxuICBcclxuICBuZ0FmdGVyVmlld0luaXQoKXtcclxuICAgIHRoaXMubGF5b3V0TWFuYWdlclNlcnZpY2UucmVnaXN0ZXJPYmplY3QodGhpcy5lbGVtZW50LHRoaXMuY29tcG9uZW50SWQsJy5mbG9hdGluZy1wYW5lbC52aXNpYmxlJyx0cnVlLERFRkFVTFRfUE9TSVRJT05fTEVGVCxERUZBVUxUX1BPU0lUSU9OX1RPUCwpOyAgICBcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIGlmICghdGhpcy5oYXNWaWV3Q2hlY2tlZCkge1xyXG4gICAgICB0aGlzLmhhc1ZpZXdDaGVja2VkID0gdHJ1ZTsgLy8gU2V0IHRoZSBmbGFnIHRvIHByZXZlbnQgcmVwZWF0ZWQgZXhlY3V0aW9uXHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uICAgIFxyXG4gICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5jaGVja1Bvc2l0aW9uKHRoaXMuY29tcG9uZW50SWQsJy5mbG9hdGluZy1wYW5lbC52aXNpYmxlJyx1bmRlZmluZWQsMCwwLHRydWUpOyAgICAgICAgXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8bGliLWJpbXBsdXMtZmxvYXRpbmctYmFyXHJcbiAgaWQ9XCJpc29sYXRpb24tbWVudS1mcC1pZFwiXHJcbiAgW2lkXSA9IFwiY29tcG9uZW50SWRcIlxyXG4gIGNsYXNzPVwiaXNvbGF0aW9uLW1lbnVcIlxyXG4gIFtub0JvZHldPVwibm9Cb2R5XCJcclxuICBbaXNGb2N1c2VkXT1cImlzRm9jdXNlZFwiXHJcbiAgW3Jlc2l6ZUVuYWJsZWRdPVwiZmFsc2VcIlxyXG4gIFtmb2N1c1NlbGVjdG9yXT1cImZvY3VzU2VsZWN0b3JJZFwiXHJcbiAgW2lzVmlzaWJsZV09XCJ0cnVlXCJcclxuICBbc2VsZWN0ZWRMYW5ndWFnZV09XCJzZWxlY3RlZExhbmd1YWdlXCJcclxuICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCJcclxuPlxyXG4gIDxsaWItYmltcGx1cy1mbG9hdGluZy1iYXItaGVhZGVyLWxvZ29cclxuICAgIGNsYXNzPVwiZmxvYXRpbmctYmFyLWhlYWRlci1sb2dvXCJcclxuICAgIFtwYXJlbnRJZF0gPSBcImNvbXBvbmVudElkXCJcclxuICAgIFtpY29uXT1cImljb25cIlxyXG4gICAgW3NlbGVjdGVkTGFuZ3VhZ2VdPVwic2VsZWN0ZWRMYW5ndWFnZVwiXHJcbiAgICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCJcclxuICAgID5cclxuICA8L2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItbG9nbz5cclxuXHJcbiAgPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItY29udGVudFxyXG4gICAgW3NlbGVjdGVkTGFuZ3VhZ2VdPVwic2VsZWN0ZWRMYW5ndWFnZVwiXHJcbiAgICBbbG9jYWxpemVkU3RyaW5nc109XCJsb2NhbGl6ZWRTdHJpbmdzXCJcclxuICAgIFtwYXJlbnRJZF0gPSBcImNvbXBvbmVudElkXCIgICAgXHJcbiAgICBjbGFzcz1cImZsb2F0aW5nLWJhci1oZWFkZXItY29udGVudFwiXHJcbiAgICBbaXRlbXNdPVwiaXRlbXNcIlxyXG4gICAgKGFjdGlvbkNsaWNrZWQpPVwiYWN0aW9uQ2xpY2tlZC5lbWl0KCRldmVudClcIlxyXG4gID5cclxuICA8L2xpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1oZWFkZXItY29udGVudD5cclxuXHJcbiAgPGxpYi1iaW1wbHVzLWZsb2F0aW5nLWJhci1kcmFnZ2VyXHJcbiAgICBjbGFzcz1cImZsb2F0aW5nLWJhci1kcmFnZ2VyXCJcclxuICAgIFtwYXJlbnRJZF0gPSBcImNvbXBvbmVudElkXCJcclxuICA+XHJcbiAgPC9saWItYmltcGx1cy1mbG9hdGluZy1iYXItZHJhZ2dlcj5cclxuPC9saWItYmltcGx1cy1mbG9hdGluZy1iYXI+XHJcbiJdfQ==
|
|
@@ -71,17 +71,18 @@ export class LayoutManagerService {
|
|
|
71
71
|
if (!config) {
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
|
-
const
|
|
75
|
-
|
|
74
|
+
const parentElement = this._getDomParentElement(obj);
|
|
75
|
+
const internalElement = this._getDomInternalElement(obj, '');
|
|
76
|
+
if (!parentElement || !internalElement) {
|
|
76
77
|
return;
|
|
77
78
|
}
|
|
78
|
-
|
|
79
|
-
|
|
79
|
+
parentElement.style.left = (config.left) + 'px';
|
|
80
|
+
parentElement.style.top = (config.top) + 'px';
|
|
80
81
|
if (config.width && config.width > 0) {
|
|
81
|
-
|
|
82
|
+
internalElement.style.width = config.width + 'px';
|
|
82
83
|
}
|
|
83
84
|
if (config.height && config.height > 0) {
|
|
84
|
-
|
|
85
|
+
internalElement.style.height = config.height + 'px';
|
|
85
86
|
}
|
|
86
87
|
this.checkPosition(obj.id, "", undefined, 0, 0, true);
|
|
87
88
|
}
|
|
@@ -135,18 +136,31 @@ export class LayoutManagerService {
|
|
|
135
136
|
config[objId] = newItem;
|
|
136
137
|
this.localStorageService.setObject(this.CONFIG, config);
|
|
137
138
|
}
|
|
138
|
-
|
|
139
|
+
_getDomParentElement(item) {
|
|
140
|
+
const element = item.element?.nativeElement; //?.shadowRoot || item.element?.nativeElement;
|
|
141
|
+
if (!element) {
|
|
142
|
+
console.error('_getDomParentElement: missing element');
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
return element;
|
|
146
|
+
}
|
|
147
|
+
_getDomInternalElement(item, selector) {
|
|
139
148
|
const element = item.element?.nativeElement?.shadowRoot || item.element?.nativeElement;
|
|
140
149
|
if (!element) {
|
|
141
|
-
console.error('
|
|
150
|
+
console.error('_getDomInternalElement: missing element');
|
|
142
151
|
return null;
|
|
143
152
|
}
|
|
144
153
|
const mySelector = selector && selector?.length > 0 ? selector : item.selector;
|
|
145
|
-
|
|
154
|
+
const retval = mySelector ? element.querySelector(mySelector) : element;
|
|
155
|
+
if (!retval) {
|
|
156
|
+
console.error(`_getDomInternalElement: selection of element ${element} failed with selector ${mySelector}`);
|
|
157
|
+
}
|
|
158
|
+
return retval;
|
|
146
159
|
}
|
|
147
160
|
_getElementRect(item, selector, parentRectangle) {
|
|
148
|
-
const selectedObj = this.
|
|
161
|
+
const selectedObj = this._getDomInternalElement(item, selector);
|
|
149
162
|
if (!selectedObj) {
|
|
163
|
+
console.error('_getElementRect: missing selected object');
|
|
150
164
|
return null;
|
|
151
165
|
}
|
|
152
166
|
const parentRect = parentRectangle || this.resizeObserverService.getParentAppRect();
|
|
@@ -155,6 +169,9 @@ export class LayoutManagerService {
|
|
|
155
169
|
return null;
|
|
156
170
|
}
|
|
157
171
|
const elementRect = selectedObj.getBoundingClientRect();
|
|
172
|
+
if (!elementRect) {
|
|
173
|
+
console.error('_getElementRect: missing bounding rect');
|
|
174
|
+
}
|
|
158
175
|
return elementRect;
|
|
159
176
|
}
|
|
160
177
|
// checks whether element or element with additional selection of subelement is placed within the give rectangle
|
|
@@ -170,11 +187,11 @@ export class LayoutManagerService {
|
|
|
170
187
|
const parentRect = parentRectangle || this.resizeObserverService.getParentAppRect();
|
|
171
188
|
const elementRect = this._getElementRect(e1, selector, parentRect);
|
|
172
189
|
if (!elementRect) {
|
|
173
|
-
console.error('checkPosition: missing
|
|
190
|
+
console.error('checkPosition: missing elementRect');
|
|
174
191
|
return { deltaX: 0, deltaY: 0 };
|
|
175
192
|
}
|
|
176
193
|
if (!elementRect?.width || !elementRect?.height) {
|
|
177
|
-
console.error('checkPosition:
|
|
194
|
+
console.error('checkPosition:element rect empty ');
|
|
178
195
|
return { deltaX: 0, deltaY: 0 };
|
|
179
196
|
}
|
|
180
197
|
let checkBoundaries = true;
|
|
@@ -201,7 +218,7 @@ export class LayoutManagerService {
|
|
|
201
218
|
this._translateRectangle(elementDOMRect, deltaX, deltaY);
|
|
202
219
|
}
|
|
203
220
|
}
|
|
204
|
-
const selectedElement = this.
|
|
221
|
+
const selectedElement = this._getDomParentElement(e1);
|
|
205
222
|
if (!selectedElement) {
|
|
206
223
|
return;
|
|
207
224
|
}
|
|
@@ -312,7 +329,7 @@ export class LayoutManagerService {
|
|
|
312
329
|
if (!item) {
|
|
313
330
|
return;
|
|
314
331
|
}
|
|
315
|
-
const element = this.
|
|
332
|
+
const element = this._getDomParentElement(item);
|
|
316
333
|
if (!element) {
|
|
317
334
|
return;
|
|
318
335
|
}
|
|
@@ -331,4 +348,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
|
|
|
331
348
|
providedIn: 'root'
|
|
332
349
|
}]
|
|
333
350
|
}], ctorParameters: () => [{ type: i1.ResizeObserverService }, { type: i2.LocalStorageService }] });
|
|
334
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9sYXlvdXQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQWlDdkMsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUFvQixxQkFBMkMsRUFDM0MsbUJBQXdDO1FBRHhDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUY1RCxxQkFBZ0IsR0FBeUMsSUFBSSxlQUFlLENBQXNCLEVBQUUsQ0FBQyxDQUFBO1FBSTdGLG9CQUFlLEdBQXVCLEVBQUUsQ0FBQztRQUtqRCxXQUFNLEdBQVUscUJBQXFCLENBQUM7SUFObEMsQ0FBQztJQUdMLElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUlIOztrRkFFOEU7SUFDNUUsY0FBYyxDQUFDLEdBQWMsRUFBRSxFQUFTLEVBQUUsUUFBMkIsRUFBRSxnQkFBd0IsRUFBQyxPQUFjLEdBQUcsRUFBRSxNQUFhLEdBQUcsRUFBQyxRQUFlLENBQUMsRUFBRSxTQUFnQixDQUFDO1FBQ3JLLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBRyxNQUFNLEVBQUMsQ0FBQztnQkFDVCxVQUFVLEdBQUcsS0FB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QUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU5QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsR0FBRyxFQUNiLFdBQVcsSUFBSSxXQUFXLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQSxDQUFDLENBQUEsQ0FBQyxFQUMxRCxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7K0dBMVZVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSAgIGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbi8vaW1wb3J0IHsgSXRlbXNMaXN0IH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QvbGliL2l0ZW1zLWxpc3QnO1xyXG4vL2ltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExheW91dE1hbmFnZXJJdGVtIHtcclxuICBlbGVtZW50OkVsZW1lbnRSZWY7XHJcbiAgaWQ6IHN0cmluZztcclxuICBzZWxlY3Rvcj86c3RyaW5nO1xyXG4gIGlzQ29sbGFwc2VkOmJvb2xlYW47XHJcbiAgcmVtZW1iZXJQb3NpdGlvbj86Ym9vbGVhblxyXG4gIGxlZnQ/OiBudW1iZXI7XHJcbiAgdG9wPzpudW1iZXI7XHJcbiAgd2lkdGg/Om51bWJlcjtcclxuICBoZWlnaHQ/Om51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBpc0NvbGxhcHNlZDpib29sZWFuOyAgXHJcbiAgbGVmdD86IG51bWJlcjtcclxuICB0b3A/Om51bWJlcjsgIFxyXG4gIHdpZHRoPzpudW1iZXI7XHJcbiAgaGVpZ2h0PzpudW1iZXI7XHJcbn1cclxuXHJcblxyXG5pbnRlcmZhY2UgTGF5b3V0TWFuYWdlckNvbmZpZyB7XHJcbiAgW2tleTpzdHJpbmddOiBMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbVxyXG59XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIExheW91dE1hbmFnZXJTZXJ2aWNlIHtcclxuXHJcbiAgcmVnaXN0ZXJlZEl0ZW1zJDogQmVoYXZpb3JTdWJqZWN0PExheW91dE1hbmFnZXJJdGVtW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxMYXlvdXRNYW5hZ2VySXRlbVtdPihbXSlcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc2l6ZU9ic2VydmVyU2VydmljZTpSZXNpemVPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsb2NhbFN0b3JhZ2VTZXJ2aWNlIDpMb2NhbFN0b3JhZ2VTZXJ2aWNlIFxyXG4gICkgeyB9XHJcbiAgcHJpdmF0ZSByZWdpc3RlcmVkSXRlbXM6TGF5b3V0TWFuYWdlckl0ZW1bXSA9IFtdO1xyXG4gIFxyXG4gIGdldCBSZWdpc3RlcmVkSXRlbXMoKTogTGF5b3V0TWFuYWdlckl0ZW1bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RlcmVkSXRlbXM7XHJcbiAgfVxyXG4gIENPTkZJRzpzdHJpbmcgPSAnbGF5b3V0TWFuYWdlckNvbmZpZyc7XHJcblxyXG4gIFxyXG4vKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogcmVnaXN0ZXIgb2JqZWN0LiBvYmplY3QgbXVzdCBoYXZlIHVuaXF1ZSBpZCBvciBlbGVtZW50SWRcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgcmVnaXN0ZXJPYmplY3Qob2JqOkVsZW1lbnRSZWYsIGlkOnN0cmluZywgc2VsZWN0b3I6c3RyaW5nIHwgdW5kZWZpbmVkLCByZW1lbWJlclBvc2l0aW9uOmJvb2xlYW4sbGVmdDpudW1iZXIgPSAxMDAsIHRvcDpudW1iZXIgPSAxMDAsd2lkdGg6bnVtYmVyID0gMCwgaGVpZ2h0Om51bWJlciA9IDApIHtcclxuICAgIGxldCBmb3VuZEluZGV4ID0gLTE7XHJcbiAgICBpZih0aGlzLnJlZ2lzdGVyZWRJdGVtcy5zb21lKChpdGVtLGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmV0dmFsID0gaXRlbS5pZCA9PT0gaWQ7XHJcbiAgICAgICAgaWYocmV0dmFsKXtcclxuICAgICAgICAgIGZvdW5kSW5kZXggPSBpbmRleDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldHZhbDtcclxuICAgICAgfSkpe1xyXG4gICAgICBpZihmb3VuZEluZGV4ID49IDApe1xyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLnNwbGljZShmb3VuZEluZGV4LDEpO1xyXG4gICAgICB9ICAgICAgXHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdJdGVtOiBMYXlvdXRNYW5hZ2VySXRlbSA9IHsgXHJcbiAgICAgIGVsZW1lbnQ6b2JqLFxyXG4gICAgICBpZDppZCxcclxuICAgICAgc2VsZWN0b3I6c2VsZWN0b3IsXHJcbiAgICAgIHJlbWVtYmVyUG9zaXRpb246ISFyZW1lbWJlclBvc2l0aW9uLFxyXG4gICAgICBsZWZ0OmxlZnQsXHJcbiAgICAgIHRvcDp0b3AsXHJcbiAgICAgIHdpZHRoOndpZHRoLFxyXG4gICAgICBoZWlnaHQ6aGVpZ2h0LFxyXG4gICAgICBpc0NvbGxhcHNlZDogZmFsc2UgICAgXHJcbiAgICAgfTtcclxuXHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcy5wdXNoKG5ld0l0ZW0pO1xyXG4gICAgdGhpcy5yZWdpc3RlcmVkSXRlbXMkLm5leHQodGhpcy5yZWdpc3RlcmVkSXRlbXMpO1xyXG4gICAgdGhpcy5faW5pdE9iamVjdChuZXdJdGVtKTtcclxuICB9XHJcbiAgXHJcbiAgX2luaXRPYmplY3Qob2JqOkxheW91dE1hbmFnZXJJdGVtKXtcclxuICAgIHRoaXMuX2FkanVzdE9iamVjdEJ5Q29uZmlnKG9iaik7XHJcbiAgICB0aGlzLl9hZGp1c3RPYmplY3RCeVdpbmRvd1NpemUob2JqKTtcclxuICAgIFxyXG4gIH1cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZ2V0IG9iamVjdCBjb25maWd1cmF0aW9uXHJcbiAgKiByZXR1cm4ge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWd0aH1cclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2dldE9iamVjdENvbmZpZyhvYmo6TGF5b3V0TWFuYWdlckl0ZW0pOkxheW91dE1hbmFnZXJDb25maWdJdGVtfG51bGwge1xyXG4gICAgaWYoIW9iail7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSh0aGlzLkNPTkZJRyk7XHJcbiAgICBjb25zdCAgY29uZmlnID0gY29uZmlnVmFsdWUgPyBKU09OLnBhcnNlKGNvbmZpZ1ZhbHVlKSA6IHt9O1xyXG4gICAgY29uc3QgIG9iaklkID0gb2JqLmlkIDtcclxuICAgIGxldCBjb25maWdPYmogPSBjb25maWdbb2JqSWRdO1xyXG4gICAgaWYoIWNvbmZpZ09iaikge1xyXG4gICAgICBjb25maWdPYmogPSB7aWQ6b2JqSWQsbGVmdDpvYmoubGVmdCx0b3A6b2JqLnRvcCx3aWR0aDpvYmoud2lkdGgsaGVpZ2h0Om9iai5oZWlnaHR9OyAgICAgICAgXHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29uZmlnT2JqO1xyXG4gIH1cclxuXHJcbiAgX2FkanVzdE9iamVjdEJ5Q29uZmlnKG9iajpMYXlvdXRNYW5hZ2VySXRlbSl7XHJcbiAgICBjb25zdCBjb25maWc6TGF5b3V0TWFuYWdlckNvbmZpZ0l0ZW18bnVsbCA9IHRoaXMuX2dldE9iamVjdENvbmZpZyhvYmopO1xyXG4gICAgaWYoIWNvbmZpZyl7XHJcbiAgICAgIHJldHVybjsgICAgICBcclxuICAgIH1cclxuICAgIGNvbnN0ICBlbGVtZW50ID0gdGhpcy5fZ2V0RG9tRWxlbWVudChvYmosJycpO1xyXG4gICAgaWYoIWVsZW1lbnQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSAoY29uZmlnLmxlZnQpICsgJ3B4JztcclxuICAgIGVsZW1lbnQuc3R5bGUudG9wID0gKGNvbmZpZy50b3ApICsgJ3B4JztcclxuICAgIGlmKGNvbmZpZy53aWR0aCAmJiBjb25maWcud2lkdGggPiAwKXtcclxuICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9IGNvbmZpZy53aWR0aCArICdweCc7XHJcbiAgICB9XHJcbiAgICBpZihjb25maWcuaGVpZ2h0ICYmIGNvbmZpZy5oZWlnaHQgPiAwKXtcclxuICAgICAgZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBjb25maWcuaGVpZ2h0ICsgJ3B4JztcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5jaGVja1Bvc2l0aW9uKG9iai5pZCxcIlwiLHVuZGVmaW5lZCwwLDAsdHJ1ZSk7ICAgIFxyXG4gIH1cclxuXHJcbiAgX2FkanVzdE9iamVjdEJ5V2luZG93U2l6ZShvYmo6TGF5b3V0TWFuYWdlckl0ZW0pe1xyXG4gICAgdGhpcy5jaGVja1Bvc2l0aW9uKG9iai5pZCxcIlwiLHVuZGVmaW5lZCwwLDAsdHJ1ZSk7ICBcclxuICB9XHJcbiAgXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHJldHVybnMgb2JqZWN0ICByZWdpc3RlcmVkIGluIHRoZSBsYXlvdXQgbWFuYWdlciBcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgZ2V0SXRlbShpZDogc3RyaW5nICk6TGF5b3V0TWFuYWdlckl0ZW18bnVsbCB7ICAgXHJcbiAgICBsZXQgZm91bmRJdGVtOkxheW91dE1hbmFnZXJJdGVtfG51bGwgPSBudWxsO1xyXG4gICAgdGhpcy5yZWdpc3RlcmVkSXRlbXMuZm9yRWFjaChpdGVtID0+e1xyXG4gICAgICBpZihpdGVtLmlkID09PSBpZCl7XHJcbiAgICAgICAgZm91bmRJdGVtID0gaXRlbTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZm91bmRJdGVtO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHNldCBvYmplY3QgY29uZmlndXJhdGlvblxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfc2V0T2JqZWN0Q29uZmlnKG9iajpMYXlvdXRNYW5hZ2VySXRlbSwgbGVmdDpudW1iZXIsdG9wOm51bWJlcix3aWR0aDpudW1iZXIsaGVpZ2h0Om51bWJlcikge1xyXG4gICAgY29uc3Qgb2JqSWQgPSBvYmo/LmlkIDtcclxuICAgIGlmICghb2JqSWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IGNvbmZpZyA9IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5nZXRPYmplY3QodGhpcy5DT05GSUcpIGFzIExheW91dE1hbmFnZXJDb25maWc7XHJcbiAgICAvL2xldCBjb25maWcgPSBjb25maWdWYWx1ZSAmJiBKU09OLnBhcnNlKGNvbmZpZ1ZhbHVlKSBhcyBMYXlvdXRNYW5hZ2VyQ29uZmlnO1xyXG4gICAgaWYgKCFjb25maWcpIHtcclxuICAgICAgY29uZmlnID0ge307XHJcbiAgICB9XHJcbiAgICBpZihvYmo/LmlzQ29sbGFwc2VkKXsgIC8vIGRvIG5vdCBvdmVydGFrZSBjb2xsYXBzZWQgc2l6ZVxyXG4gICAgICBpZiAoIWNvbmZpZ1tvYmpJZF0pIHsgICAgICAgIFxyXG4gICAgICAgIGNvbmZpZ1tvYmpJZF0gPSBvYmo7XHJcbiAgICAgIH1cclxuICAgICAgY29uZmlnW29iaklkXS5sZWZ0ID0gbGVmdDtcclxuICAgICAgY29uZmlnW29iaklkXS50b3AgID0gdG9wO1xyXG4gICAgICAvL2NvbmZpZ1tvYmpJZF0ud2lkdGggPSB3aWR0aDtcclxuICAgICAgLy9jb25maWdbb2JqSWRdLmhlaWdodCA9IGhlaWdodCA7XHJcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5zZXRPYmplY3QodGhpcy5DT05GSUcsIGNvbmZpZyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXdJdGVtIDpMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbSA9IHtcclxuICAgICAgaWQ6IG9iaklkLFxyXG4gICAgICBpc0NvbGxhcHNlZDogZmFsc2UsXHJcbiAgICAgIGxlZnQ6IGxlZnQsXHJcbiAgICAgIHRvcDogdG9wLFxyXG4gICAgICB3aWR0aDogd2lkdGgsXHJcbiAgICAgIGhlaWdodDogaGVpZ2h0XHJcbiAgICB9O1xyXG4gICAgY29uZmlnW29iaklkXSA9IG5ld0l0ZW07XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0T2JqZWN0KHRoaXMuQ09ORklHLGNvbmZpZyk7XHJcbiAgfVxyXG4gIF9nZXREb21FbGVtZW50KGl0ZW06TGF5b3V0TWFuYWdlckl0ZW0sc2VsZWN0b3I6c3RyaW5nIHwgdW5kZWZpbmVkICk6SFRNTEVsZW1lbnR8bnVsbCB7XHJcbiAgICBjb25zdCBlbGVtZW50OkhUTUxFbGVtZW50ID0gaXRlbS5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zaGFkb3dSb290IHx8IGl0ZW0uZWxlbWVudD8ubmF0aXZlRWxlbWVudDsgICAgXHJcbiAgICBpZighZWxlbWVudCl7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ19nZXREb21FbGVtZW50OiBtaXNzaW5nIGVsZW1lbnQnKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBteVNlbGVjdG9yID1zZWxlY3RvciAmJiBzZWxlY3Rvcj8ubGVuZ3RoID4gMCA/c2VsZWN0b3I6aXRlbS5zZWxlY3RvcjsgICBcclxuICAgIHJldHVybiBteVNlbGVjdG9yP2VsZW1lbnQucXVlcnlTZWxlY3RvcihteVNlbGVjdG9yKTplbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgX2dldEVsZW1lbnRSZWN0KGl0ZW06TGF5b3V0TWFuYWdlckl0ZW0sc2VsZWN0b3I6c3RyaW5nIHwgdW5kZWZpbmVkICxwYXJlbnRSZWN0YW5nbGU6RE9NUmVjdCB8dW5kZWZpbmVkICk6RE9NUmVjdCB8IG51bGx7XHJcbiAgICBjb25zdCBzZWxlY3RlZE9iaiA6IEhUTUxFbGVtZW50fG51bGwgPSB0aGlzLl9nZXREb21FbGVtZW50KGl0ZW0sc2VsZWN0b3IpO1xyXG4gICAgaWYoIXNlbGVjdGVkT2JqKXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFyZW50UmVjdDpET01SZWN0ID0gIHBhcmVudFJlY3RhbmdsZSB8fCAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UuZ2V0UGFyZW50QXBwUmVjdCgpO1xyXG4gICAgaWYoICFwYXJlbnRSZWN0IHx8ICBwYXJlbnRSZWN0Py53aWR0aDw9MSB8fCBwYXJlbnRSZWN0Py5oZWlnaHQ8PTEgKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ19nZXRFbGVtZW50UmVjdDogbWlzc2luZyBwYXJlbnQgcmVjdCcpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0ICBlbGVtZW50UmVjdDpET01SZWN0fG51bGwgPSBzZWxlY3RlZE9iai5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIHJldHVybiBlbGVtZW50UmVjdDtcclxuICB9XHJcblxyXG4gIC8vIGNoZWNrcyB3aGV0aGVyIGVsZW1lbnQgb3IgZWxlbWVudCB3aXRoIGFkZGl0aW9uYWwgc2VsZWN0aW9uIG9mIHN1YmVsZW1lbnQgaXMgcGxhY2VkIHdpdGhpbiB0aGUgZ2l2ZSByZWN0YW5nbGVcclxuICAvLyBpZiBub3QgdGhlbiBjYWxjdWxhdGVzIHRoZSBvZmZzZXQgdG8gYmUgbW92ZWQgdG8gZml0IGluXHJcbiAgY2hlY2tQb3NpdGlvbihpZDpzdHJpbmcsc2VsZWN0b3I6c3RyaW5nLHBhcmVudFJlY3RhbmdsZTpET01SZWN0fHVuZGVmaW5lZCAsZGVsdGFYOm51bWJlcixkZWx0YVk6bnVtYmVyLGZvcmNlQ2hlY2s6Ym9vbGVhbiA9IGZhbHNlKXtcclxuICAgIGlmKCFpZCl7XHJcbiAgICAgIHJldHVybiB7ZGVsdGFYOjAsZGVsdGFZOjB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgZTEgPSB0aGlzLmdldEl0ZW0oaWQpO1xyXG4gICAgaWYoIWUxKXtcclxuICAgICAgcmV0dXJuIHtkZWx0YVg6MCxkZWx0YVk6MH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXJlbnRSZWN0OkRPTVJlY3QgPSAgcGFyZW50UmVjdGFuZ2xlIHx8ICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5nZXRQYXJlbnRBcHBSZWN0KCk7XHJcbiAgICBjb25zdCBlbGVtZW50UmVjdDpET01SZWN0IHwgbnVsbCA9IHRoaXMuX2dldEVsZW1lbnRSZWN0KGUxLHNlbGVjdG9yLHBhcmVudFJlY3QpO1xyXG4gICAgaWYoIWVsZW1lbnRSZWN0KXtcclxuICAgICAgY29uc29sZS5lcnJvcignY2hlY2tQb3NpdGlvbjogbWlzc2luZyBlbGVtZW50Jyk7XHJcbiAgICAgIHJldHVybiB7ZGVsdGFYOjAsZGVsdGFZOjB9O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBpZighZWxlbWVudFJlY3Q/LndpZHRoIHx8ICFlbGVtZW50UmVjdD8uaGVpZ2h0KXtcclxuICAgICAgY29uc29sZS5lcnJvcignY2hlY2tQb3NpdGlvbjptaXNzaW5nIGVsZW1lbnQgcmVjdCcpO1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH0gXHJcbiAgICBsZXQgY2hlY2tCb3VuZGFyaWVzID0gdHJ1ZTtcclxuICAgIGlmKHRoaXMuX2lzSW5zaWRlUmVjdChlbGVtZW50UmVjdCwgcGFyZW50UmVjdCkgPT09IGZhbHNlICYmICFmb3JjZUNoZWNrKSB7XHJcbiAgICAgIGNoZWNrQm91bmRhcmllcyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gXHJcbiAgICAvLyBjb3B5IG9mIHJlYWwgZWxlbWVudCByZWN0YW5nbGUgdG8gcGVyZm9ybSBjYWxjdWxhdGlvbiBvdmVyIGJlZm9yZSBzZXQgdG8gdGhlIHJlYWwgZWxlbWVudFxyXG4gICAgY29uc3QgZWxlbWVudERPTVJlY3QgPSBET01SZWN0LmZyb21SZWN0KGVsZW1lbnRSZWN0KTtcclxuXHJcbiAgICAvL3NldCB0aGUgZWxlbWVudCByZWN0YW5nbGUgYnkgZGVsdGFzXHJcbiAgICB0aGlzLl90cmFuc2xhdGVSZWN0YW5nbGUoZWxlbWVudERPTVJlY3QsIGRlbHRhWCwgZGVsdGFZKTtcclxuXHJcbiAgICBpZihjaGVja0JvdW5kYXJpZXMpIHtcclxuICAgICAgaWYodGhpcy5faXNJbnNpZGVSZWN0KGVsZW1lbnRET01SZWN0LCBwYXJlbnRSZWN0KSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCAgbmV3RWxlbWVudFBvcyA9IHRoaXMuZ2V0QWxpZ25lZFBvc2l0aW9uKGVsZW1lbnRET01SZWN0LCBwYXJlbnRSZWN0KTtcclxuICAgICAgICBkZWx0YVggPSBuZXdFbGVtZW50UG9zLnggLSBlbGVtZW50UmVjdC54O1xyXG4gICAgICAgIGRlbHRhWSA9IG5ld0VsZW1lbnRQb3MueSAtIGVsZW1lbnRSZWN0Lnk7XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlUmVjdGFuZ2xlKGVsZW1lbnRET01SZWN0LCBkZWx0YVgsIGRlbHRhWSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9pc0luc2lkZUxlZnRUb3BSZWN0KHBhcmVudFJlY3QsIGVsZW1lbnRET01SZWN0KSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBuZXdFbGVtZW50UG9zID0gdGhpcy5fZ2V0QWxpZ25lZExlZnRUb3BQb3NpdGlvbihlbGVtZW50RE9NUmVjdCwgcGFyZW50UmVjdCk7XHJcbiAgICAgICAgZGVsdGFYID0gbmV3RWxlbWVudFBvcy54IC0gZWxlbWVudFJlY3QueDtcclxuICAgICAgICBkZWx0YVkgPSBuZXdFbGVtZW50UG9zLnkgLSBlbGVtZW50UmVjdC55O1xyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVJlY3RhbmdsZShlbGVtZW50RE9NUmVjdCwgZGVsdGFYLCBkZWx0YVkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLl9nZXREb21FbGVtZW50KGUxLCcnKTsvL2UxLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIGlmKCFzZWxlY3RlZEVsZW1lbnQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoc2VsZWN0ZWRFbGVtZW50KTtcclxuICAgIGNvbnN0IHRvcCA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUudG9wLCAxMCk7XHJcbiAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5sZWZ0LCAxMCk7XHJcbiAgICBzZWxlY3RlZEVsZW1lbnQuc3R5bGUudG9wID0gKHRvcCArIGRlbHRhWSkgKyAncHgnO1xyXG4gICAgc2VsZWN0ZWRFbGVtZW50LnN0eWxlLmxlZnQgPSAobGVmdCArIGRlbHRhWCkgKyAncHgnO1xyXG4gICAgcmV0dXJuIHtkZWx0YVgsZGVsdGFZfTtcclxuICB9XHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGZpbmQgaWYgcmVjdGFuZ2xlIDEgaXMgaW5zaWRlIHJlY3RhbmdsZSAyXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9pc0luc2lkZVJlY3QocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIHIyLmxlZnQgPD0gcjEubGVmdCAgJiYgcjIudG9wIDw9IHIxLnRvcCAmJiByMi5yaWdodCA+PSByMS5yaWdodCAmJiByMi5ib3R0b20gPj0gcjEuYm90dG9tO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGZpbmQgaWYgcmVjdGFuZ2xlcyBkbyBub3Qgb3ZlcmxhcCB0aGUgbGVmdCBhbmQgdG9wIHNpZGVzXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9pc0luc2lkZUxlZnRUb3BSZWN0KHIxOkRPTVJlY3QsIHIyOkRPTVJlY3QpIHtcclxuICAgIGlmKCFyMSB8fCAhcjIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgIHIxSW5zaWRlID0gcjIubGVmdCA8PSByMS5sZWZ0ICAmJiByMi50b3AgPD0gcjEudG9wO1xyXG4gICAgY29uc3QgIHIySW5zaWRlID0gcjEubGVmdCA8PSByMi5sZWZ0ICAmJiByMS50b3AgPD0gcjIudG9wO1xyXG4gICAgcmV0dXJuIHIxSW5zaWRlIHx8IHIySW5zaWRlO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGdldCBwb3NpdGlvbiBvZiByMSBhbGlnbmVkIHdpdGggdGhlIHIyIHNpZGVzXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIGdldEFsaWduZWRQb3NpdGlvbihyMTpET01SZWN0LCByMjpET01SZWN0KSB7XHJcbiAgICBpZighcjEgfHwgIXIyKSB7XHJcbiAgICAgIHJldHVybiB7eDowLHk6MH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB0byA9IHsgeDogcjEueCwgeTogcjEueSB9O1xyXG4gICAgLy9hbGlnbiBsZWZ0IG9yIHJpZ2h0IHNpZGVzLiBwcmVmZXJhYmx5IGxlZnRcclxuICAgIGlmKHIxLmxlZnQgPCByMi5sZWZ0KSB7XHJcbiAgICAgIHRvLnggPSByMi54O1xyXG4gICAgfSBlbHNlIGlmKHIxLnJpZ2h0ID4gcjIucmlnaHQpIHtcclxuICAgICAgdG8ueCA9IHIyLnJpZ2h0IC0gcjEud2lkdGg7XHJcbiAgICB9XHJcbiAgICAvL2FsaWduIHRvcCBvciBib3R0b20uIHByZWZlcmFibHkgdG9wXHJcbiAgICBpZihyMS50b3AgPCByMi50b3ApIHtcclxuICAgICAgdG8ueSA9IHIyLnk7XHJcbiAgICB9IGVsc2UgaWYocjEuYm90dG9tID4gcjIuYm90dG9tKSB7XHJcbiAgICAgIHRvLnkgPSByMi5ib3R0b20gLSByMS5oZWlnaHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG87XHJcbiAgfVxyXG4gIFxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBnZXQgcG9zaXRpb24gb2YgcjEgYWxpZ25lZCB3aXRoIHRoZSByMiBsZWZ0LCB0b3Agc2lkZXNcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2dldEFsaWduZWRMZWZ0VG9wUG9zaXRpb24ocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4gIHt4OjAseTowfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCAgdG8gPSB7IHg6IHIxLngsIHk6IHIxLnkgfTtcclxuICAgIC8vYWxpZ24gbGVmdFxyXG4gICAgaWYocjEubGVmdCA8IHIyLmxlZnQpIHtcclxuICAgICAgdG8ueCA9IHIyLng7XHJcbiAgICB9XHJcbiAgICAvL2FsaWduIHRvcFxyXG4gICAgaWYocjEudG9wIDwgcjIudG9wKSB7XHJcbiAgICAgIHRvLnkgPSByMi55O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvO1xyXG4gIH1cclxuXHJcbiAgIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiB0cmFuc2xhdGUgcmVjdGFuZ2xlIGJ5IHgsIHlcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX3RyYW5zbGF0ZVJlY3RhbmdsZShyZWN0OkRPTVJlY3QsIHRyYW5zbGF0ZVg6bnVtYmVyLCB0cmFuc2xhdGVZOm51bWJlcikge1xyXG4gICAgaWYoIXJlY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmVjdC54ICs9IHRyYW5zbGF0ZVg7XHJcbiAgICByZWN0LnkgKz0gdHJhbnNsYXRlWTtcclxuICAgIHJldHVybiByZWN0O1xyXG4gIH1cclxuICBcclxuICB1cGRhdGVDb2xsYXBzZWQodmFsdWU6Ym9vbGVhbiwgaWQ6c3RyaW5nID0gJycpOnZvaWR7ICAgIFxyXG4gICAgY29uc3QgIGZvdW5kSXRlbSA9IHRoaXMuZ2V0SXRlbShpZCk7XHJcbiAgICBpZighZm91bmRJdGVtKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZm91bmRJdGVtLmlzQ29sbGFwc2VkID0gdmFsdWU7XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcyQubmV4dCh0aGlzLnJlZ2lzdGVyZWRJdGVtcyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpPT57ICAgICAgXHJcbiAgICAgIHRoaXMuY2hlY2tQb3NpdGlvbihmb3VuZEl0ZW0uaWQsXCJcIix1bmRlZmluZWQsMCwwLHRydWUpOyAgICAgIFxyXG4gICAgfSk7XHJcbiAgICBsZXQgczE6c3RyaW5nID0nJztcclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW0pPT57XHJcbiAgICAgIHMxID0gczEgKyBgJHtpdGVtLmlkfTo8JHtpdGVtLmlzQ29sbGFwc2VkPzE6MH0+IGA7XHJcbiAgICB9KTtcclxuICB9ICBcclxuXHJcblxyXG4gIGhhbmRsZURyYWdFbmQoaWQ6c3RyaW5nKXsvL30sbGVmdDpudW1iZXIsdG9wOm51bWJlcil7XHJcbiAgICB0aGlzLmZpbmFsaXplT2JqZWN0Q2hhbmdlcyhpZCk7XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZmluYWxpemUgb2JqZWN0IGNoYW5nZXMgKHBvc2l0aW9uKS4gb2JqZWN0IG11c3QgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgbGF5b3V0IG1hbmFnZXJcclxuICAqIG9iamVjdDogb2JqZWN0IHRvIGZpbmFsaXplICBcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgZmluYWxpemVPYmplY3RDaGFuZ2VzKGlkOnN0cmluZyk6dm9pZCB7XHJcbiAgICBjb25zdCBpdGVtOkxheW91dE1hbmFnZXJJdGVtfG51bGwgID0gdGhpcy5nZXRJdGVtKGlkKTtcclxuICAgIGlmKCFpdGVtKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2dldERvbUVsZW1lbnQoaXRlbSwnJyk7XHJcbiAgICBpZighZWxlbWVudCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTsgIFxyXG4gICAgY29uc3QgdG9wID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS50b3AsIDEwKTtcclxuICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludChjb21wdXRlZFN0eWxlLmxlZnQsIDEwKTtcclxuICAgIFxyXG4gICAgY29uc3QgZWxlbWVudFJlY3QgPSB0aGlzLl9nZXRFbGVtZW50UmVjdChpdGVtLHVuZGVmaW5lZCx1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5fc2V0T2JqZWN0Q29uZmlnKGl0ZW0sbGVmdCx0b3AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFJlY3QgJiYgZWxlbWVudFJlY3Qud2lkdGggPiAwID8gZWxlbWVudFJlY3Qud2lkdGg6MCAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFJlY3QgJiYgZWxlbWVudFJlY3QuaGVpZ2h0ID4gMCA/IGVsZW1lbnRSZWN0LmhlaWdodDowKTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
351
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9sYXlvdXQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQWlDdkMsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUFvQixxQkFBMkMsRUFDM0MsbUJBQXdDO1FBRHhDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUY1RCxxQkFBZ0IsR0FBeUMsSUFBSSxlQUFlLENBQXNCLEVBQUUsQ0FBQyxDQUFBO1FBSTdGLG9CQUFlLEdBQXVCLEVBQUUsQ0FBQztRQUtqRCxXQUFNLEdBQVUscUJBQXFCLENBQUM7SUFObEMsQ0FBQztJQUdMLElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUlIOztrRkFFOEU7SUFDNUUsY0FBYyxDQUFDLEdBQWMsRUFBRSxFQUFTLEVBQUUsUUFBMkIsRUFBRSxnQkFBd0IsRUFBQyxPQUFjLEdBQUcsRUFBRSxNQUFhLEdBQUcsRUFBQyxRQUFlLENBQUMsRUFBRSxTQUFnQixDQUFDO1FBQ3JLLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUMsS0FBSyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBRyxNQUFNLEVBQUMsQ0FBQztnQkFDVCxVQUFVLEdBQUcsS0FB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QUMsS0FBSyxDQUFBLENBQUMsQ0FBQSxDQUFDLEVBQzFELFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQzsrR0E3V1Usb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9ICAgZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuLy9pbXBvcnQgeyBJdGVtc0xpc3QgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdC9saWIvaXRlbXMtbGlzdCc7XHJcbi8vaW1wb3J0IHsgTm90Rm91bmRFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGF5b3V0TWFuYWdlckl0ZW0ge1xyXG4gIGVsZW1lbnQ6RWxlbWVudFJlZjtcclxuICBpZDogc3RyaW5nO1xyXG4gIHNlbGVjdG9yPzpzdHJpbmc7XHJcbiAgaXNDb2xsYXBzZWQ6Ym9vbGVhbjtcclxuICByZW1lbWJlclBvc2l0aW9uPzpib29sZWFuXHJcbiAgbGVmdD86IG51bWJlcjtcclxuICB0b3A/Om51bWJlcjtcclxuICB3aWR0aD86bnVtYmVyO1xyXG4gIGhlaWdodD86bnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExheW91dE1hbmFnZXJDb25maWdJdGVtIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIGlzQ29sbGFwc2VkOmJvb2xlYW47ICBcclxuICBsZWZ0PzogbnVtYmVyO1xyXG4gIHRvcD86bnVtYmVyOyAgXHJcbiAgd2lkdGg/Om51bWJlcjtcclxuICBoZWlnaHQ/Om51bWJlcjtcclxufVxyXG5cclxuXHJcbmludGVyZmFjZSBMYXlvdXRNYW5hZ2VyQ29uZmlnIHtcclxuICBba2V5OnN0cmluZ106IExheW91dE1hbmFnZXJDb25maWdJdGVtXHJcbn1cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTGF5b3V0TWFuYWdlclNlcnZpY2Uge1xyXG5cclxuICByZWdpc3RlcmVkSXRlbXMkOiBCZWhhdmlvclN1YmplY3Q8TGF5b3V0TWFuYWdlckl0ZW1bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExheW91dE1hbmFnZXJJdGVtW10+KFtdKVxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOlJlc2l6ZU9ic2VydmVyU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGxvY2FsU3RvcmFnZVNlcnZpY2UgOkxvY2FsU3RvcmFnZVNlcnZpY2UgXHJcbiAgKSB7IH1cclxuICBwcml2YXRlIHJlZ2lzdGVyZWRJdGVtczpMYXlvdXRNYW5hZ2VySXRlbVtdID0gW107XHJcbiAgXHJcbiAgZ2V0IFJlZ2lzdGVyZWRJdGVtcygpOiBMYXlvdXRNYW5hZ2VySXRlbVtdIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdGVyZWRJdGVtcztcclxuICB9XHJcbiAgQ09ORklHOnN0cmluZyA9ICdsYXlvdXRNYW5hZ2VyQ29uZmlnJztcclxuXHJcbiAgXHJcbi8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiByZWdpc3RlciBvYmplY3QuIG9iamVjdCBtdXN0IGhhdmUgdW5pcXVlIGlkIG9yIGVsZW1lbnRJZFxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICByZWdpc3Rlck9iamVjdChvYmo6RWxlbWVudFJlZiwgaWQ6c3RyaW5nLCBzZWxlY3RvcjpzdHJpbmcgfCB1bmRlZmluZWQsIHJlbWVtYmVyUG9zaXRpb246Ym9vbGVhbixsZWZ0Om51bWJlciA9IDEwMCwgdG9wOm51bWJlciA9IDEwMCx3aWR0aDpudW1iZXIgPSAwLCBoZWlnaHQ6bnVtYmVyID0gMCkge1xyXG4gICAgbGV0IGZvdW5kSW5kZXggPSAtMTtcclxuICAgIGlmKHRoaXMucmVnaXN0ZXJlZEl0ZW1zLnNvbWUoKGl0ZW0saW5kZXgpID0+IHtcclxuICAgICAgICBjb25zdCByZXR2YWwgPSBpdGVtLmlkID09PSBpZDtcclxuICAgICAgICBpZihyZXR2YWwpe1xyXG4gICAgICAgICAgZm91bmRJbmRleCA9IGluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0dmFsO1xyXG4gICAgICB9KSl7XHJcbiAgICAgIGlmKGZvdW5kSW5kZXggPj0gMCl7XHJcbiAgICAgICAgdGhpcy5yZWdpc3RlcmVkSXRlbXMuc3BsaWNlKGZvdW5kSW5kZXgsMSk7XHJcbiAgICAgIH0gICAgICBcclxuICAgIH1cclxuICAgIGNvbnN0IG5ld0l0ZW06IExheW91dE1hbmFnZXJJdGVtID0geyBcclxuICAgICAgZWxlbWVudDpvYmosXHJcbiAgICAgIGlkOmlkLFxyXG4gICAgICBzZWxlY3RvcjpzZWxlY3RvcixcclxuICAgICAgcmVtZW1iZXJQb3NpdGlvbjohIXJlbWVtYmVyUG9zaXRpb24sXHJcbiAgICAgIGxlZnQ6bGVmdCxcclxuICAgICAgdG9wOnRvcCxcclxuICAgICAgd2lkdGg6d2lkdGgsXHJcbiAgICAgIGhlaWdodDpoZWlnaHQsXHJcbiAgICAgIGlzQ29sbGFwc2VkOiBmYWxzZSAgICBcclxuICAgICB9O1xyXG5cclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLnB1c2gobmV3SXRlbSk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcyQubmV4dCh0aGlzLnJlZ2lzdGVyZWRJdGVtcyk7XHJcbiAgICB0aGlzLl9pbml0T2JqZWN0KG5ld0l0ZW0pO1xyXG4gIH1cclxuICBcclxuICBfaW5pdE9iamVjdChvYmo6TGF5b3V0TWFuYWdlckl0ZW0pe1xyXG4gICAgdGhpcy5fYWRqdXN0T2JqZWN0QnlDb25maWcob2JqKTtcclxuICAgIHRoaXMuX2FkanVzdE9iamVjdEJ5V2luZG93U2l6ZShvYmopO1xyXG4gICAgXHJcbiAgfVxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBnZXQgb2JqZWN0IGNvbmZpZ3VyYXRpb25cclxuICAqIHJldHVybiB7bGVmdCwgdG9wLCB3aWR0aCwgaGVpZ3RofVxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfZ2V0T2JqZWN0Q29uZmlnKG9iajpMYXlvdXRNYW5hZ2VySXRlbSk6TGF5b3V0TWFuYWdlckNvbmZpZ0l0ZW18bnVsbCB7XHJcbiAgICBpZighb2JqKXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuQ09ORklHKTtcclxuICAgIGNvbnN0ICBjb25maWcgPSBjb25maWdWYWx1ZSA/IEpTT04ucGFyc2UoY29uZmlnVmFsdWUpIDoge307XHJcbiAgICBjb25zdCAgb2JqSWQgPSBvYmouaWQgO1xyXG4gICAgbGV0IGNvbmZpZ09iaiA9IGNvbmZpZ1tvYmpJZF07XHJcbiAgICBpZighY29uZmlnT2JqKSB7XHJcbiAgICAgIGNvbmZpZ09iaiA9IHtpZDpvYmpJZCxsZWZ0Om9iai5sZWZ0LHRvcDpvYmoudG9wLHdpZHRoOm9iai53aWR0aCxoZWlnaHQ6b2JqLmhlaWdodH07ICAgICAgICBcclxuICAgIH1cclxuICAgIHJldHVybiBjb25maWdPYmo7XHJcbiAgfVxyXG5cclxuICBfYWRqdXN0T2JqZWN0QnlDb25maWcob2JqOkxheW91dE1hbmFnZXJJdGVtKXtcclxuICAgIGNvbnN0IGNvbmZpZzpMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbXxudWxsID0gdGhpcy5fZ2V0T2JqZWN0Q29uZmlnKG9iaik7XHJcbiAgICBpZighY29uZmlnKXtcclxuICAgICAgcmV0dXJuOyAgICAgIFxyXG4gICAgfVxyXG4gICAgY29uc3QgIHBhcmVudEVsZW1lbnQgPSB0aGlzLl9nZXREb21QYXJlbnRFbGVtZW50KG9iaik7XHJcbiAgICBjb25zdCAgaW50ZXJuYWxFbGVtZW50ID0gdGhpcy5fZ2V0RG9tSW50ZXJuYWxFbGVtZW50KG9iaiwnJyk7XHJcbiAgICBpZighcGFyZW50RWxlbWVudCB8fCAhaW50ZXJuYWxFbGVtZW50KXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcGFyZW50RWxlbWVudC5zdHlsZS5sZWZ0ID0gKGNvbmZpZy5sZWZ0KSArICdweCc7XHJcbiAgICBwYXJlbnRFbGVtZW50LnN0eWxlLnRvcCA9IChjb25maWcudG9wKSArICdweCc7XHJcbiAgICBpZihjb25maWcud2lkdGggJiYgY29uZmlnLndpZHRoID4gMCl7XHJcbiAgICAgIGludGVybmFsRWxlbWVudC5zdHlsZS53aWR0aCA9IGNvbmZpZy53aWR0aCArICdweCc7XHJcbiAgICB9XHJcbiAgICBpZihjb25maWcuaGVpZ2h0ICYmIGNvbmZpZy5oZWlnaHQgPiAwKXtcclxuICAgICAgaW50ZXJuYWxFbGVtZW50LnN0eWxlLmhlaWdodCA9IGNvbmZpZy5oZWlnaHQgKyAncHgnO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmNoZWNrUG9zaXRpb24ob2JqLmlkLFwiXCIsdW5kZWZpbmVkLDAsMCx0cnVlKTsgICAgXHJcbiAgfVxyXG5cclxuICBfYWRqdXN0T2JqZWN0QnlXaW5kb3dTaXplKG9iajpMYXlvdXRNYW5hZ2VySXRlbSl7XHJcbiAgICB0aGlzLmNoZWNrUG9zaXRpb24ob2JqLmlkLFwiXCIsdW5kZWZpbmVkLDAsMCx0cnVlKTsgIFxyXG4gIH1cclxuICBcclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogcmV0dXJucyBvYmplY3QgIHJlZ2lzdGVyZWQgaW4gdGhlIGxheW91dCBtYW5hZ2VyIFxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBnZXRJdGVtKGlkOiBzdHJpbmcgKTpMYXlvdXRNYW5hZ2VySXRlbXxudWxsIHsgICBcclxuICAgIGxldCBmb3VuZEl0ZW06TGF5b3V0TWFuYWdlckl0ZW18bnVsbCA9IG51bGw7XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcy5mb3JFYWNoKGl0ZW0gPT57XHJcbiAgICAgIGlmKGl0ZW0uaWQgPT09IGlkKXtcclxuICAgICAgICBmb3VuZEl0ZW0gPSBpdGVtO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3VuZEl0ZW07XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogc2V0IG9iamVjdCBjb25maWd1cmF0aW9uXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9zZXRPYmplY3RDb25maWcob2JqOkxheW91dE1hbmFnZXJJdGVtLCBsZWZ0Om51bWJlcix0b3A6bnVtYmVyLHdpZHRoOm51bWJlcixoZWlnaHQ6bnVtYmVyKSB7XHJcbiAgICBjb25zdCBvYmpJZCA9IG9iaj8uaWQgO1xyXG4gICAgaWYgKCFvYmpJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgY29uZmlnID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldE9iamVjdCh0aGlzLkNPTkZJRykgYXMgTGF5b3V0TWFuYWdlckNvbmZpZztcclxuICAgIC8vbGV0IGNvbmZpZyA9IGNvbmZpZ1ZhbHVlICYmIEpTT04ucGFyc2UoY29uZmlnVmFsdWUpIGFzIExheW91dE1hbmFnZXJDb25maWc7XHJcbiAgICBpZiAoIWNvbmZpZykge1xyXG4gICAgICBjb25maWcgPSB7fTtcclxuICAgIH1cclxuICAgIGlmKG9iaj8uaXNDb2xsYXBzZWQpeyAgLy8gZG8gbm90IG92ZXJ0YWtlIGNvbGxhcHNlZCBzaXplXHJcbiAgICAgIGlmICghY29uZmlnW29iaklkXSkgeyAgICAgICAgXHJcbiAgICAgICAgY29uZmlnW29iaklkXSA9IG9iajtcclxuICAgICAgfVxyXG4gICAgICBjb25maWdbb2JqSWRdLmxlZnQgPSBsZWZ0O1xyXG4gICAgICBjb25maWdbb2JqSWRdLnRvcCAgPSB0b3A7XHJcbiAgICAgIC8vY29uZmlnW29iaklkXS53aWR0aCA9IHdpZHRoO1xyXG4gICAgICAvL2NvbmZpZ1tvYmpJZF0uaGVpZ2h0ID0gaGVpZ2h0IDtcclxuICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldE9iamVjdCh0aGlzLkNPTkZJRywgY29uZmlnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0l0ZW0gOkxheW91dE1hbmFnZXJDb25maWdJdGVtID0ge1xyXG4gICAgICBpZDogb2JqSWQsXHJcbiAgICAgIGlzQ29sbGFwc2VkOiBmYWxzZSxcclxuICAgICAgbGVmdDogbGVmdCxcclxuICAgICAgdG9wOiB0b3AsXHJcbiAgICAgIHdpZHRoOiB3aWR0aCxcclxuICAgICAgaGVpZ2h0OiBoZWlnaHRcclxuICAgIH07XHJcbiAgICBjb25maWdbb2JqSWRdID0gbmV3SXRlbTtcclxuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5zZXRPYmplY3QodGhpcy5DT05GSUcsY29uZmlnKTtcclxuICB9XHJcbiAgX2dldERvbVBhcmVudEVsZW1lbnQoaXRlbTpMYXlvdXRNYW5hZ2VySXRlbSApOkhUTUxFbGVtZW50fG51bGwge1xyXG4gICAgY29uc3QgZWxlbWVudDpIVE1MRWxlbWVudCA9IGl0ZW0uZWxlbWVudD8ubmF0aXZlRWxlbWVudDsvLz8uc2hhZG93Um9vdCB8fCBpdGVtLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7ICAgIFxyXG4gICAgaWYoIWVsZW1lbnQpe1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdfZ2V0RG9tUGFyZW50RWxlbWVudDogbWlzc2luZyBlbGVtZW50Jyk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVsZW1lbnQ7ICAgIFxyXG4gIH1cclxuXHJcbiAgX2dldERvbUludGVybmFsRWxlbWVudChpdGVtOkxheW91dE1hbmFnZXJJdGVtLHNlbGVjdG9yOnN0cmluZyB8IHVuZGVmaW5lZCApOkhUTUxFbGVtZW50fG51bGwge1xyXG4gICAgY29uc3QgZWxlbWVudDpIVE1MRWxlbWVudCA9IGl0ZW0uZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc2hhZG93Um9vdCB8fCBpdGVtLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ7ICAgIFxyXG4gICAgaWYoIWVsZW1lbnQpe1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdfZ2V0RG9tSW50ZXJuYWxFbGVtZW50OiBtaXNzaW5nIGVsZW1lbnQnKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBteVNlbGVjdG9yID1zZWxlY3RvciAmJiBzZWxlY3Rvcj8ubGVuZ3RoID4gMCA/c2VsZWN0b3I6aXRlbS5zZWxlY3RvcjsgICBcclxuICAgIGNvbnN0IHJldHZhbDogSFRNTEVsZW1lbnR8bnVsbD0gbXlTZWxlY3Rvcj9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IobXlTZWxlY3Rvcik6ZWxlbWVudDtcclxuICAgIGlmKCFyZXR2YWwpe1xyXG4gICAgICBjb25zb2xlLmVycm9yKGBfZ2V0RG9tSW50ZXJuYWxFbGVtZW50OiBzZWxlY3Rpb24gb2YgZWxlbWVudCAke2VsZW1lbnR9ICBmYWlsZWQgd2l0aCBzZWxlY3RvciAke215U2VsZWN0b3J9YCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0dmFsO1xyXG4gIH1cclxuXHJcblxyXG4gIF9nZXRFbGVtZW50UmVjdChpdGVtOkxheW91dE1hbmFnZXJJdGVtLHNlbGVjdG9yOnN0cmluZyB8IHVuZGVmaW5lZCAscGFyZW50UmVjdGFuZ2xlOkRPTVJlY3QgfHVuZGVmaW5lZCApOkRPTVJlY3QgfCBudWxse1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRPYmogOiBIVE1MRWxlbWVudHxudWxsID0gdGhpcy5fZ2V0RG9tSW50ZXJuYWxFbGVtZW50KGl0ZW0sc2VsZWN0b3IpO1xyXG4gICAgaWYoIXNlbGVjdGVkT2JqKXtcclxuICAgICAgY29uc29sZS5lcnJvcignX2dldEVsZW1lbnRSZWN0OiBtaXNzaW5nIHNlbGVjdGVkIG9iamVjdCcpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXJlbnRSZWN0OkRPTVJlY3QgPSAgcGFyZW50UmVjdGFuZ2xlIHx8ICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5nZXRQYXJlbnRBcHBSZWN0KCk7XHJcbiAgICBpZiggIXBhcmVudFJlY3QgfHwgIHBhcmVudFJlY3Q/LndpZHRoPD0xIHx8IHBhcmVudFJlY3Q/LmhlaWdodDw9MSApIHtcclxuICAgICAgY29uc29sZS5lcnJvcignX2dldEVsZW1lbnRSZWN0OiBtaXNzaW5nIHBhcmVudCByZWN0Jyk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgIGVsZW1lbnRSZWN0OkRPTVJlY3R8bnVsbCA9IHNlbGVjdGVkT2JqLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgaWYoIWVsZW1lbnRSZWN0KXtcclxuICAgICAgY29uc29sZS5lcnJvcignX2dldEVsZW1lbnRSZWN0OiBtaXNzaW5nIGJvdW5kaW5nIHJlY3QnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlbGVtZW50UmVjdDtcclxuICB9XHJcblxyXG4gIC8vIGNoZWNrcyB3aGV0aGVyIGVsZW1lbnQgb3IgZWxlbWVudCB3aXRoIGFkZGl0aW9uYWwgc2VsZWN0aW9uIG9mIHN1YmVsZW1lbnQgaXMgcGxhY2VkIHdpdGhpbiB0aGUgZ2l2ZSByZWN0YW5nbGVcclxuICAvLyBpZiBub3QgdGhlbiBjYWxjdWxhdGVzIHRoZSBvZmZzZXQgdG8gYmUgbW92ZWQgdG8gZml0IGluXHJcbiAgY2hlY2tQb3NpdGlvbihpZDpzdHJpbmcsc2VsZWN0b3I6c3RyaW5nLHBhcmVudFJlY3RhbmdsZTpET01SZWN0fHVuZGVmaW5lZCAsZGVsdGFYOm51bWJlcixkZWx0YVk6bnVtYmVyLGZvcmNlQ2hlY2s6Ym9vbGVhbiA9IGZhbHNlKXtcclxuICAgIGlmKCFpZCl7XHJcbiAgICAgIHJldHVybiB7ZGVsdGFYOjAsZGVsdGFZOjB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgZTEgPSB0aGlzLmdldEl0ZW0oaWQpO1xyXG4gICAgaWYoIWUxKXtcclxuICAgICAgcmV0dXJuIHtkZWx0YVg6MCxkZWx0YVk6MH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBwYXJlbnRSZWN0OkRPTVJlY3QgPSAgcGFyZW50UmVjdGFuZ2xlIHx8ICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5nZXRQYXJlbnRBcHBSZWN0KCk7XHJcbiAgICBjb25zdCBlbGVtZW50UmVjdDpET01SZWN0IHwgbnVsbCA9IHRoaXMuX2dldEVsZW1lbnRSZWN0KGUxLHNlbGVjdG9yLHBhcmVudFJlY3QpO1xyXG4gICAgaWYoIWVsZW1lbnRSZWN0KXtcclxuICAgICAgY29uc29sZS5lcnJvcignY2hlY2tQb3NpdGlvbjogbWlzc2luZyBlbGVtZW50UmVjdCcpO1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYoIWVsZW1lbnRSZWN0Py53aWR0aCB8fCAhZWxlbWVudFJlY3Q/LmhlaWdodCl7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ2NoZWNrUG9zaXRpb246ZWxlbWVudCByZWN0IGVtcHR5ICcpO1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH0gXHJcbiAgICBsZXQgY2hlY2tCb3VuZGFyaWVzID0gdHJ1ZTtcclxuICAgIGlmKHRoaXMuX2lzSW5zaWRlUmVjdChlbGVtZW50UmVjdCwgcGFyZW50UmVjdCkgPT09IGZhbHNlICYmICFmb3JjZUNoZWNrKSB7XHJcbiAgICAgIGNoZWNrQm91bmRhcmllcyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gXHJcbiAgICAvLyBjb3B5IG9mIHJlYWwgZWxlbWVudCByZWN0YW5nbGUgdG8gcGVyZm9ybSBjYWxjdWxhdGlvbiBvdmVyIGJlZm9yZSBzZXQgdG8gdGhlIHJlYWwgZWxlbWVudFxyXG4gICAgY29uc3QgZWxlbWVudERPTVJlY3QgPSBET01SZWN0LmZyb21SZWN0KGVsZW1lbnRSZWN0KTtcclxuXHJcbiAgICAvL3NldCB0aGUgZWxlbWVudCByZWN0YW5nbGUgYnkgZGVsdGFzXHJcbiAgICB0aGlzLl90cmFuc2xhdGVSZWN0YW5nbGUoZWxlbWVudERPTVJlY3QsIGRlbHRhWCwgZGVsdGFZKTtcclxuXHJcbiAgICBpZihjaGVja0JvdW5kYXJpZXMpIHtcclxuICAgICAgaWYodGhpcy5faXNJbnNpZGVSZWN0KGVsZW1lbnRET01SZWN0LCBwYXJlbnRSZWN0KSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCAgbmV3RWxlbWVudFBvcyA9IHRoaXMuZ2V0QWxpZ25lZFBvc2l0aW9uKGVsZW1lbnRET01SZWN0LCBwYXJlbnRSZWN0KTtcclxuICAgICAgICBkZWx0YVggPSBuZXdFbGVtZW50UG9zLnggLSBlbGVtZW50UmVjdC54O1xyXG4gICAgICAgIGRlbHRhWSA9IG5ld0VsZW1lbnRQb3MueSAtIGVsZW1lbnRSZWN0Lnk7XHJcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlUmVjdGFuZ2xlKGVsZW1lbnRET01SZWN0LCBkZWx0YVgsIGRlbHRhWSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9pc0luc2lkZUxlZnRUb3BSZWN0KHBhcmVudFJlY3QsIGVsZW1lbnRET01SZWN0KSA9PT0gZmFsc2UpIHtcclxuICAgICAgICBjb25zdCBuZXdFbGVtZW50UG9zID0gdGhpcy5fZ2V0QWxpZ25lZExlZnRUb3BQb3NpdGlvbihlbGVtZW50RE9NUmVjdCwgcGFyZW50UmVjdCk7XHJcbiAgICAgICAgZGVsdGFYID0gbmV3RWxlbWVudFBvcy54IC0gZWxlbWVudFJlY3QueDtcclxuICAgICAgICBkZWx0YVkgPSBuZXdFbGVtZW50UG9zLnkgLSBlbGVtZW50UmVjdC55O1xyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVJlY3RhbmdsZShlbGVtZW50RE9NUmVjdCwgZGVsdGFYLCBkZWx0YVkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZWxlY3RlZEVsZW1lbnQgPSB0aGlzLl9nZXREb21QYXJlbnRFbGVtZW50KGUxKTtcclxuICAgIGlmKCFzZWxlY3RlZEVsZW1lbnQpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoc2VsZWN0ZWRFbGVtZW50KTtcclxuICAgIGNvbnN0IHRvcCA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUudG9wLCAxMCk7XHJcbiAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5sZWZ0LCAxMCk7XHJcbiAgICBzZWxlY3RlZEVsZW1lbnQuc3R5bGUudG9wID0gKHRvcCArIGRlbHRhWSkgKyAncHgnO1xyXG4gICAgc2VsZWN0ZWRFbGVtZW50LnN0eWxlLmxlZnQgPSAobGVmdCArIGRlbHRhWCkgKyAncHgnO1xyXG4gICAgcmV0dXJuIHtkZWx0YVgsZGVsdGFZfTtcclxuICB9XHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGZpbmQgaWYgcmVjdGFuZ2xlIDEgaXMgaW5zaWRlIHJlY3RhbmdsZSAyXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9pc0luc2lkZVJlY3QocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIHIyLmxlZnQgPD0gcjEubGVmdCAgJiYgcjIudG9wIDw9IHIxLnRvcCAmJiByMi5yaWdodCA+PSByMS5yaWdodCAmJiByMi5ib3R0b20gPj0gcjEuYm90dG9tO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGZpbmQgaWYgcmVjdGFuZ2xlcyBkbyBub3Qgb3ZlcmxhcCB0aGUgbGVmdCBhbmQgdG9wIHNpZGVzXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9pc0luc2lkZUxlZnRUb3BSZWN0KHIxOkRPTVJlY3QsIHIyOkRPTVJlY3QpIHtcclxuICAgIGlmKCFyMSB8fCAhcjIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgIHIxSW5zaWRlID0gcjIubGVmdCA8PSByMS5sZWZ0ICAmJiByMi50b3AgPD0gcjEudG9wO1xyXG4gICAgY29uc3QgIHIySW5zaWRlID0gcjEubGVmdCA8PSByMi5sZWZ0ICAmJiByMS50b3AgPD0gcjIudG9wO1xyXG4gICAgcmV0dXJuIHIxSW5zaWRlIHx8IHIySW5zaWRlO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGdldCBwb3NpdGlvbiBvZiByMSBhbGlnbmVkIHdpdGggdGhlIHIyIHNpZGVzXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIGdldEFsaWduZWRQb3NpdGlvbihyMTpET01SZWN0LCByMjpET01SZWN0KSB7XHJcbiAgICBpZighcjEgfHwgIXIyKSB7XHJcbiAgICAgIHJldHVybiB7eDowLHk6MH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB0byA9IHsgeDogcjEueCwgeTogcjEueSB9O1xyXG4gICAgLy9hbGlnbiBsZWZ0IG9yIHJpZ2h0IHNpZGVzLiBwcmVmZXJhYmx5IGxlZnRcclxuICAgIGlmKHIxLmxlZnQgPCByMi5sZWZ0KSB7XHJcbiAgICAgIHRvLnggPSByMi54O1xyXG4gICAgfSBlbHNlIGlmKHIxLnJpZ2h0ID4gcjIucmlnaHQpIHtcclxuICAgICAgdG8ueCA9IHIyLnJpZ2h0IC0gcjEud2lkdGg7XHJcbiAgICB9XHJcbiAgICAvL2FsaWduIHRvcCBvciBib3R0b20uIHByZWZlcmFibHkgdG9wXHJcbiAgICBpZihyMS50b3AgPCByMi50b3ApIHtcclxuICAgICAgdG8ueSA9IHIyLnk7XHJcbiAgICB9IGVsc2UgaWYocjEuYm90dG9tID4gcjIuYm90dG9tKSB7XHJcbiAgICAgIHRvLnkgPSByMi5ib3R0b20gLSByMS5oZWlnaHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG87XHJcbiAgfVxyXG4gIFxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBnZXQgcG9zaXRpb24gb2YgcjEgYWxpZ25lZCB3aXRoIHRoZSByMiBsZWZ0LCB0b3Agc2lkZXNcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2dldEFsaWduZWRMZWZ0VG9wUG9zaXRpb24ocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4gIHt4OjAseTowfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCAgdG8gPSB7IHg6IHIxLngsIHk6IHIxLnkgfTtcclxuICAgIC8vYWxpZ24gbGVmdFxyXG4gICAgaWYocjEubGVmdCA8IHIyLmxlZnQpIHtcclxuICAgICAgdG8ueCA9IHIyLng7XHJcbiAgICB9XHJcbiAgICAvL2FsaWduIHRvcFxyXG4gICAgaWYocjEudG9wIDwgcjIudG9wKSB7XHJcbiAgICAgIHRvLnkgPSByMi55O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvO1xyXG4gIH1cclxuXHJcbiAgIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiB0cmFuc2xhdGUgcmVjdGFuZ2xlIGJ5IHgsIHlcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX3RyYW5zbGF0ZVJlY3RhbmdsZShyZWN0OkRPTVJlY3QsIHRyYW5zbGF0ZVg6bnVtYmVyLCB0cmFuc2xhdGVZOm51bWJlcikge1xyXG4gICAgaWYoIXJlY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmVjdC54ICs9IHRyYW5zbGF0ZVg7XHJcbiAgICByZWN0LnkgKz0gdHJhbnNsYXRlWTtcclxuICAgIHJldHVybiByZWN0O1xyXG4gIH1cclxuICBcclxuICB1cGRhdGVDb2xsYXBzZWQodmFsdWU6Ym9vbGVhbiwgaWQ6c3RyaW5nID0gJycpOnZvaWR7ICAgIFxyXG4gICAgY29uc3QgIGZvdW5kSXRlbSA9IHRoaXMuZ2V0SXRlbShpZCk7XHJcbiAgICBpZighZm91bmRJdGVtKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZm91bmRJdGVtLmlzQ29sbGFwc2VkID0gdmFsdWU7XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcyQubmV4dCh0aGlzLnJlZ2lzdGVyZWRJdGVtcyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpPT57ICAgICAgXHJcbiAgICAgIHRoaXMuY2hlY2tQb3NpdGlvbihmb3VuZEl0ZW0uaWQsXCJcIix1bmRlZmluZWQsMCwwLHRydWUpOyAgICAgIFxyXG4gICAgfSk7XHJcbiAgICBsZXQgczE6c3RyaW5nID0nJztcclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW0pPT57XHJcbiAgICAgIHMxID0gczEgKyBgJHtpdGVtLmlkfTo8JHtpdGVtLmlzQ29sbGFwc2VkPzE6MH0+IGA7XHJcbiAgICB9KTtcclxuICB9ICBcclxuXHJcblxyXG4gIGhhbmRsZURyYWdFbmQoaWQ6c3RyaW5nKXsvL30sbGVmdDpudW1iZXIsdG9wOm51bWJlcil7XHJcbiAgICB0aGlzLmZpbmFsaXplT2JqZWN0Q2hhbmdlcyhpZCk7XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZmluYWxpemUgb2JqZWN0IGNoYW5nZXMgKHBvc2l0aW9uKS4gb2JqZWN0IG11c3QgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgbGF5b3V0IG1hbmFnZXJcclxuICAqIG9iamVjdDogb2JqZWN0IHRvIGZpbmFsaXplICBcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgZmluYWxpemVPYmplY3RDaGFuZ2VzKGlkOnN0cmluZyk6dm9pZCB7XHJcbiAgICBjb25zdCBpdGVtOkxheW91dE1hbmFnZXJJdGVtfG51bGwgID0gdGhpcy5nZXRJdGVtKGlkKTtcclxuICAgIGlmKCFpdGVtKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2dldERvbVBhcmVudEVsZW1lbnQoaXRlbSk7XHJcbiAgICBpZighZWxlbWVudCl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTsgIFxyXG4gICAgY29uc3QgdG9wID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS50b3AsIDEwKTtcclxuICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludChjb21wdXRlZFN0eWxlLmxlZnQsIDEwKTtcclxuICAgIFxyXG4gICAgY29uc3QgZWxlbWVudFJlY3QgPSB0aGlzLl9nZXRFbGVtZW50UmVjdChpdGVtLHVuZGVmaW5lZCx1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5fc2V0T2JqZWN0Q29uZmlnKGl0ZW0sbGVmdCx0b3AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFJlY3QgJiYgZWxlbWVudFJlY3Qud2lkdGggPiAwID8gZWxlbWVudFJlY3Qud2lkdGg6MCAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFJlY3QgJiYgZWxlbWVudFJlY3QuaGVpZ2h0ID4gMCA/IGVsZW1lbnRSZWN0LmhlaWdodDowKTtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -814,17 +814,18 @@ class LayoutManagerService {
|
|
|
814
814
|
if (!config) {
|
|
815
815
|
return;
|
|
816
816
|
}
|
|
817
|
-
const
|
|
818
|
-
|
|
817
|
+
const parentElement = this._getDomParentElement(obj);
|
|
818
|
+
const internalElement = this._getDomInternalElement(obj, '');
|
|
819
|
+
if (!parentElement || !internalElement) {
|
|
819
820
|
return;
|
|
820
821
|
}
|
|
821
|
-
|
|
822
|
-
|
|
822
|
+
parentElement.style.left = (config.left) + 'px';
|
|
823
|
+
parentElement.style.top = (config.top) + 'px';
|
|
823
824
|
if (config.width && config.width > 0) {
|
|
824
|
-
|
|
825
|
+
internalElement.style.width = config.width + 'px';
|
|
825
826
|
}
|
|
826
827
|
if (config.height && config.height > 0) {
|
|
827
|
-
|
|
828
|
+
internalElement.style.height = config.height + 'px';
|
|
828
829
|
}
|
|
829
830
|
this.checkPosition(obj.id, "", undefined, 0, 0, true);
|
|
830
831
|
}
|
|
@@ -878,18 +879,31 @@ class LayoutManagerService {
|
|
|
878
879
|
config[objId] = newItem;
|
|
879
880
|
this.localStorageService.setObject(this.CONFIG, config);
|
|
880
881
|
}
|
|
881
|
-
|
|
882
|
+
_getDomParentElement(item) {
|
|
883
|
+
const element = item.element?.nativeElement; //?.shadowRoot || item.element?.nativeElement;
|
|
884
|
+
if (!element) {
|
|
885
|
+
console.error('_getDomParentElement: missing element');
|
|
886
|
+
return null;
|
|
887
|
+
}
|
|
888
|
+
return element;
|
|
889
|
+
}
|
|
890
|
+
_getDomInternalElement(item, selector) {
|
|
882
891
|
const element = item.element?.nativeElement?.shadowRoot || item.element?.nativeElement;
|
|
883
892
|
if (!element) {
|
|
884
|
-
console.error('
|
|
893
|
+
console.error('_getDomInternalElement: missing element');
|
|
885
894
|
return null;
|
|
886
895
|
}
|
|
887
896
|
const mySelector = selector && selector?.length > 0 ? selector : item.selector;
|
|
888
|
-
|
|
897
|
+
const retval = mySelector ? element.querySelector(mySelector) : element;
|
|
898
|
+
if (!retval) {
|
|
899
|
+
console.error(`_getDomInternalElement: selection of element ${element} failed with selector ${mySelector}`);
|
|
900
|
+
}
|
|
901
|
+
return retval;
|
|
889
902
|
}
|
|
890
903
|
_getElementRect(item, selector, parentRectangle) {
|
|
891
|
-
const selectedObj = this.
|
|
904
|
+
const selectedObj = this._getDomInternalElement(item, selector);
|
|
892
905
|
if (!selectedObj) {
|
|
906
|
+
console.error('_getElementRect: missing selected object');
|
|
893
907
|
return null;
|
|
894
908
|
}
|
|
895
909
|
const parentRect = parentRectangle || this.resizeObserverService.getParentAppRect();
|
|
@@ -898,6 +912,9 @@ class LayoutManagerService {
|
|
|
898
912
|
return null;
|
|
899
913
|
}
|
|
900
914
|
const elementRect = selectedObj.getBoundingClientRect();
|
|
915
|
+
if (!elementRect) {
|
|
916
|
+
console.error('_getElementRect: missing bounding rect');
|
|
917
|
+
}
|
|
901
918
|
return elementRect;
|
|
902
919
|
}
|
|
903
920
|
// checks whether element or element with additional selection of subelement is placed within the give rectangle
|
|
@@ -913,11 +930,11 @@ class LayoutManagerService {
|
|
|
913
930
|
const parentRect = parentRectangle || this.resizeObserverService.getParentAppRect();
|
|
914
931
|
const elementRect = this._getElementRect(e1, selector, parentRect);
|
|
915
932
|
if (!elementRect) {
|
|
916
|
-
console.error('checkPosition: missing
|
|
933
|
+
console.error('checkPosition: missing elementRect');
|
|
917
934
|
return { deltaX: 0, deltaY: 0 };
|
|
918
935
|
}
|
|
919
936
|
if (!elementRect?.width || !elementRect?.height) {
|
|
920
|
-
console.error('checkPosition:
|
|
937
|
+
console.error('checkPosition:element rect empty ');
|
|
921
938
|
return { deltaX: 0, deltaY: 0 };
|
|
922
939
|
}
|
|
923
940
|
let checkBoundaries = true;
|
|
@@ -944,7 +961,7 @@ class LayoutManagerService {
|
|
|
944
961
|
this._translateRectangle(elementDOMRect, deltaX, deltaY);
|
|
945
962
|
}
|
|
946
963
|
}
|
|
947
|
-
const selectedElement = this.
|
|
964
|
+
const selectedElement = this._getDomParentElement(e1);
|
|
948
965
|
if (!selectedElement) {
|
|
949
966
|
return;
|
|
950
967
|
}
|
|
@@ -1055,7 +1072,7 @@ class LayoutManagerService {
|
|
|
1055
1072
|
if (!item) {
|
|
1056
1073
|
return;
|
|
1057
1074
|
}
|
|
1058
|
-
const element = this.
|
|
1075
|
+
const element = this._getDomParentElement(item);
|
|
1059
1076
|
if (!element) {
|
|
1060
1077
|
return;
|
|
1061
1078
|
}
|
|
@@ -1603,7 +1620,7 @@ class BimplusFloatingBarHideObjectsComponent extends BimplusLocalizedWidgetCompo
|
|
|
1603
1620
|
this.focusSelectorId = 'hide-menu-id';
|
|
1604
1621
|
this.layoutManagerService = layoutManagerService;
|
|
1605
1622
|
}
|
|
1606
|
-
|
|
1623
|
+
ngAfterViewInit() {
|
|
1607
1624
|
// Subscribe to the observable
|
|
1608
1625
|
this.layoutManagerService.registerObject(this.element, this.componentId, '.floating-panel.visible', true, DEFAULT_POSITION_LEFT$3, DEFAULT_POSITION_TOP$3);
|
|
1609
1626
|
}
|
|
@@ -1649,7 +1666,7 @@ class BimplusFloatingBarIsolationObjectsComponent extends BimplusLocalizedWidget
|
|
|
1649
1666
|
this.focusSelectorId = 'isolation-menu-id';
|
|
1650
1667
|
this.componentId = 'isolation-menu-fp-id';
|
|
1651
1668
|
}
|
|
1652
|
-
|
|
1669
|
+
ngAfterViewInit() {
|
|
1653
1670
|
this.layoutManagerService.registerObject(this.element, this.componentId, '.floating-panel.visible', true, DEFAULT_POSITION_LEFT$2, DEFAULT_POSITION_TOP$2);
|
|
1654
1671
|
}
|
|
1655
1672
|
ngAfterViewChecked() {
|