ngx-bimplus-components 0.0.71 → 0.0.72-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/bimplus-floating-bar.component.mjs +59 -10
- package/esm2022/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.mjs +15 -7
- package/esm2022/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.mjs +20 -8
- package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +30 -12
- package/esm2022/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.mjs +27 -46
- package/esm2022/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.mjs +17 -24
- package/esm2022/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.mjs +18 -24
- package/esm2022/lib/components/bimplus-navbar/bimplus-navbar.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.mjs +55 -36
- package/esm2022/lib/directives/draggable.directive.mjs +12 -2
- package/esm2022/lib/services/layout-manager.service.mjs +217 -48
- package/esm2022/lib/services/local-storage.service.mjs +70 -0
- package/esm2022/lib/services/resize-observer.service.mjs +28 -0
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/ngx-bimplus-components.mjs +619 -280
- package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
- package/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.d.ts +20 -4
- package/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.d.ts +6 -1
- package/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.d.ts +6 -2
- package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +10 -5
- package/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.d.ts +12 -11
- package/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.d.ts +6 -6
- package/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.d.ts +6 -6
- package/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.d.ts +19 -11
- package/lib/directives/draggable.directive.d.ts +2 -1
- package/lib/services/layout-manager.service.d.ts +56 -4
- package/lib/services/local-storage.service.d.ts +18 -0
- package/lib/services/resize-observer.service.d.ts +12 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -9,6 +9,7 @@ export class DraggableDirective {
|
|
|
9
9
|
this.wasDragging = false;
|
|
10
10
|
this.isMouseDown = false;
|
|
11
11
|
this.dragging = new EventEmitter();
|
|
12
|
+
this.dragEnd = new EventEmitter();
|
|
12
13
|
this.clicked = new EventEmitter();
|
|
13
14
|
}
|
|
14
15
|
onMouseMove(event) {
|
|
@@ -26,11 +27,17 @@ export class DraggableDirective {
|
|
|
26
27
|
return;
|
|
27
28
|
}
|
|
28
29
|
}
|
|
30
|
+
//console.log(`dragging isDragging ${!!this.isDragging}`);
|
|
29
31
|
fireEvent(this, "dragging", [deltaX, deltaY]);
|
|
30
32
|
this.oldX = event.clientX;
|
|
31
33
|
this.oldY = event.clientY;
|
|
32
34
|
}
|
|
33
35
|
onMouseUp() {
|
|
36
|
+
//console.log(`onMouseUp isDragging${!!this.isDragging}`);
|
|
37
|
+
if (this.isDragging || this.isMouseDown) {
|
|
38
|
+
console.log(`fireEvent dragEnd`);
|
|
39
|
+
fireEvent(this, "dragEnd", ['$event']);
|
|
40
|
+
}
|
|
34
41
|
this.isDragging = false;
|
|
35
42
|
this.isMouseDown = false;
|
|
36
43
|
}
|
|
@@ -39,6 +46,7 @@ export class DraggableDirective {
|
|
|
39
46
|
this.wasDragging = false;
|
|
40
47
|
this.oldX = event.clientX;
|
|
41
48
|
this.oldY = event.clientY;
|
|
49
|
+
//console.log(`onMouseDown isDragging${!!this.isDragging}`);
|
|
42
50
|
}
|
|
43
51
|
onMouseClick(event) {
|
|
44
52
|
if (!this.wasDragging) {
|
|
@@ -46,7 +54,7 @@ export class DraggableDirective {
|
|
|
46
54
|
}
|
|
47
55
|
}
|
|
48
56
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: DraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
49
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.10", type: DraggableDirective, isStandalone: true, selector: "[libDraggable]", outputs: { dragging: "dragging", clicked: "clicked" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)", "mousedown": "onMouseDown($event)", "click": "onMouseClick($event)" } }, ngImport: i0 }); }
|
|
57
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.10", type: DraggableDirective, isStandalone: true, selector: "[libDraggable]", outputs: { dragging: "dragging", dragEnd: "dragEnd", clicked: "clicked" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)", "mousedown": "onMouseDown($event)", "click": "onMouseClick($event)" } }, ngImport: i0 }); }
|
|
50
58
|
}
|
|
51
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: DraggableDirective, decorators: [{
|
|
52
60
|
type: Directive,
|
|
@@ -56,6 +64,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
|
|
|
56
64
|
}]
|
|
57
65
|
}], propDecorators: { dragging: [{
|
|
58
66
|
type: Output
|
|
67
|
+
}], dragEnd: [{
|
|
68
|
+
type: Output
|
|
59
69
|
}], clicked: [{
|
|
60
70
|
type: Output
|
|
61
71
|
}], onMouseMove: [{
|
|
@@ -71,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
|
|
|
71
81
|
type: HostListener,
|
|
72
82
|
args: ['click', ['$event']]
|
|
73
83
|
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWdnYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxrQkFBa0I7SUFKL0I7UUFNRSxTQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1QsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUNULGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHcEIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBRy9DLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBR3pDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO0tBcUQxQztJQWxEQyxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEMsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0MsSUFBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUMsQ0FBQztZQUNuQixJQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUMxQixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osT0FBTztZQUNULENBQUM7UUFDSCxDQUFDO1FBQ0QsMERBQTBEO1FBQzFELFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsTUFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBR0QsU0FBUztRQUNQLDBEQUEwRDtRQUMxRCxJQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNqQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFHRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUMxQiw0REFBNEQ7SUFDOUQsQ0FBQztJQUdELFlBQVksQ0FBQyxLQUFpQjtRQUM1QixJQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQ3BCLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDOytHQWxFVSxrQkFBa0I7bUdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBVUMsUUFBUTtzQkFEUCxNQUFNO2dCQUlQLE9BQU87c0JBRE4sTUFBTTtnQkFJUCxPQUFPO3NCQUROLE1BQU07Z0JBSVAsV0FBVztzQkFEVixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXlCOUMsU0FBUztzQkFEUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVk1QyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVVyQyxZQUFZO3NCQURYLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpcmVFdmVudCB9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2xpYkRyYWdnYWJsZV0nLFxyXG4gIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIERyYWdnYWJsZURpcmVjdGl2ZSB7XHJcblxyXG4gIG9sZFggPSAwO1xyXG4gIG9sZFkgPSAwO1xyXG4gIGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICB3YXNEcmFnZ2luZyA9IGZhbHNlO1xyXG4gIGlzTW91c2VEb3duID0gZmFsc2U7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGRyYWdnaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxbbnVtYmVyLG51bWJlcl0+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGRyYWdFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXHJcbiAgb25Nb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5pc0RyYWdnaW5nICYmICF0aGlzLmlzTW91c2VEb3duKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRlbHRhWCA9IChldmVudC5jbGllbnRYIC0gdGhpcy5vbGRYKTtcclxuICAgIGNvbnN0IGRlbHRhWSA9IChldmVudC5jbGllbnRZIC0gdGhpcy5vbGRZKTtcclxuXHJcbiAgICBpZighdGhpcy5pc0RyYWdnaW5nKXtcclxuICAgICAgaWYoTWF0aC5hYnMoZGVsdGFYKSA+IDIgfHwgTWF0aC5hYnMoZGVsdGFZKSA+IDIpe1xyXG4gICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy53YXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy9jb25zb2xlLmxvZyhgZHJhZ2dpbmcgaXNEcmFnZ2luZyAkeyEhdGhpcy5pc0RyYWdnaW5nfWApO1xyXG4gICAgZmlyZUV2ZW50KHRoaXMsIFwiZHJhZ2dpbmdcIiwgW2RlbHRhWCxkZWx0YVldKTtcclxuXHJcbiAgICB0aGlzLm9sZFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgdGhpcy5vbGRZID0gZXZlbnQuY2xpZW50WTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnLCBbJyRldmVudCddKVxyXG4gIG9uTW91c2VVcCgpIHtcclxuICAgIC8vY29uc29sZS5sb2coYG9uTW91c2VVcCBpc0RyYWdnaW5nJHshIXRoaXMuaXNEcmFnZ2luZ31gKTtcclxuICAgIGlmKHRoaXMuaXNEcmFnZ2luZyB8fCB0aGlzLmlzTW91c2VEb3duKXtcclxuICAgICAgY29uc29sZS5sb2coYGZpcmVFdmVudCBkcmFnRW5kYCk7XHJcbiAgICAgIGZpcmVFdmVudCh0aGlzLCBcImRyYWdFbmRcIiwgWyckZXZlbnQnXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTsgICAgXHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxyXG4gIG9uTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLmlzTW91c2VEb3duID0gdHJ1ZTtcclxuICAgIHRoaXMud2FzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMub2xkWCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICB0aGlzLm9sZFkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgLy9jb25zb2xlLmxvZyhgb25Nb3VzZURvd24gaXNEcmFnZ2luZyR7ISF0aGlzLmlzRHJhZ2dpbmd9YCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Nb3VzZUNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZighdGhpcy53YXNEcmFnZ2luZyl7XHJcbiAgICAgIGZpcmVFdmVudCh0aGlzLCBcImNsaWNrZWRcIiwgZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,50 +1,184 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./resize-observer.service";
|
|
5
|
+
import * as i2 from "./local-storage.service";
|
|
3
6
|
export class LayoutManagerService {
|
|
4
|
-
constructor() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
7
|
+
constructor(resizeObserverService, localStorageService) {
|
|
8
|
+
this.resizeObserverService = resizeObserverService;
|
|
9
|
+
this.localStorageService = localStorageService;
|
|
10
|
+
this.registeredItems$ = new BehaviorSubject([]);
|
|
11
|
+
this.registeredItems = [];
|
|
12
|
+
this.CONFIG = 'layoutManagerConfig';
|
|
13
|
+
}
|
|
14
|
+
get RegisteredItems() {
|
|
15
|
+
return this.registeredItems;
|
|
16
|
+
}
|
|
17
|
+
/**--------------------------------------------------------------------------
|
|
18
|
+
* register object. object must have unique id or elementId
|
|
19
|
+
--------------------------------------------------------------------------*/
|
|
20
|
+
registerObject(obj, id, left = 100, top = 100, selector, rememberPosition) {
|
|
21
|
+
if (this.registeredItems.some(item => item.id === id)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const newItem = {
|
|
25
|
+
element: obj,
|
|
26
|
+
id: id,
|
|
27
|
+
selector: selector,
|
|
28
|
+
rememberPosition: !!rememberPosition,
|
|
29
|
+
left: left,
|
|
30
|
+
top: top,
|
|
31
|
+
isCollapsed: false
|
|
32
|
+
};
|
|
33
|
+
this.registeredItems.push(newItem);
|
|
34
|
+
this.registeredItems$.next(this.registeredItems);
|
|
35
|
+
this._initObject(newItem);
|
|
36
|
+
}
|
|
37
|
+
_initObject(obj) {
|
|
38
|
+
this._adjustObjectByConfig(obj);
|
|
39
|
+
this._adjustObjectByWindowSize(obj);
|
|
40
|
+
}
|
|
41
|
+
/**--------------------------------------------------------------------------
|
|
42
|
+
* get object configuration
|
|
43
|
+
* return {left, top, width, heigth}
|
|
44
|
+
--------------------------------------------------------------------------*/
|
|
45
|
+
_getObjectConfig(obj) {
|
|
46
|
+
if (!obj) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const configValue = this.localStorageService.getItem(this.CONFIG);
|
|
50
|
+
const config = configValue ? JSON.parse(configValue) : {};
|
|
51
|
+
const objId = obj.id;
|
|
52
|
+
let configObj = config[objId];
|
|
53
|
+
if (!configObj) {
|
|
54
|
+
configObj = { id: objId, left: obj.left, top: obj.top };
|
|
55
|
+
}
|
|
56
|
+
return configObj;
|
|
57
|
+
}
|
|
58
|
+
_adjustObjectByConfig(obj) {
|
|
59
|
+
const config = this._getObjectConfig(obj);
|
|
60
|
+
if (!config) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const element = obj.element?.nativeElement;
|
|
64
|
+
element.style.left = (config.left) + 'px';
|
|
65
|
+
element.style.top = (config.top) + 'px';
|
|
66
|
+
this.checkPosition(obj.id, "", undefined, 0, 0, true);
|
|
67
|
+
}
|
|
68
|
+
_adjustObjectByWindowSize(obj) {
|
|
69
|
+
console.log('_adjustObjectByWindowSize', obj);
|
|
70
|
+
}
|
|
71
|
+
/**--------------------------------------------------------------------------
|
|
72
|
+
* returns object registered in the layout manager
|
|
73
|
+
--------------------------------------------------------------------------*/
|
|
74
|
+
getItem(id) {
|
|
75
|
+
let foundItem = null;
|
|
76
|
+
this.registeredItems.forEach(item => {
|
|
77
|
+
if (item.id === id) {
|
|
78
|
+
foundItem = item;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return foundItem;
|
|
82
|
+
}
|
|
83
|
+
/**--------------------------------------------------------------------------
|
|
84
|
+
* set object configuration
|
|
85
|
+
--------------------------------------------------------------------------*/
|
|
86
|
+
_setObjectConfig(obj, left, top) {
|
|
87
|
+
const objId = obj?.id;
|
|
88
|
+
if (!objId) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
let config = this.localStorageService.getObject(this.CONFIG);
|
|
92
|
+
//let config = configValue && JSON.parse(configValue) as LayoutManagerConfig;
|
|
93
|
+
if (!config) {
|
|
94
|
+
config = {};
|
|
95
|
+
}
|
|
96
|
+
if (obj?.isCollapsed) { // do not overtake collapsed size
|
|
97
|
+
if (!config[objId]) {
|
|
98
|
+
config[objId] = obj;
|
|
25
99
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
100
|
+
config[objId].left = left;
|
|
101
|
+
config[objId].top = top;
|
|
102
|
+
this.localStorageService.setObject(this.CONFIG, config);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const newItem = {
|
|
106
|
+
id: objId,
|
|
107
|
+
isCollapsed: false,
|
|
108
|
+
left: left,
|
|
109
|
+
top: top
|
|
110
|
+
//width: width,
|
|
111
|
+
//height: height
|
|
112
|
+
};
|
|
113
|
+
config[objId] = newItem;
|
|
114
|
+
this.localStorageService.setObject(this.CONFIG, config);
|
|
115
|
+
}
|
|
116
|
+
// checks whether element or element with additional selectionof subelement is placed within the give rectangle
|
|
117
|
+
// if not then calculates the offset to be moved to fit in
|
|
118
|
+
checkPosition(id, selector, parentRectangle, deltaX, deltaY, forceCheck = false) {
|
|
119
|
+
if (!id) {
|
|
120
|
+
return { deltaX: 0, deltaY: 0 };
|
|
121
|
+
}
|
|
122
|
+
const e1 = this.getItem(id);
|
|
123
|
+
if (!e1) {
|
|
124
|
+
return { deltaX: 0, deltaY: 0 };
|
|
125
|
+
}
|
|
126
|
+
const element = e1.element?.nativeElement?.shadowRoot || e1.element?.nativeElement;
|
|
127
|
+
const mySelector = selector?.length > 0 ? selector : e1.selector;
|
|
128
|
+
const parentRect = parentRectangle || this.resizeObserverService.getParentAppRect();
|
|
129
|
+
if (parentRect?.width <= 1 || parentRect?.height <= 1) {
|
|
130
|
+
return { deltaX: 0, deltaY: 0 };
|
|
131
|
+
}
|
|
132
|
+
let elementRect = undefined;
|
|
133
|
+
if (!element) {
|
|
134
|
+
console.error('checkPosition: missing element');
|
|
135
|
+
return { deltaX: 0, deltaY: 0 };
|
|
136
|
+
}
|
|
137
|
+
if (mySelector) {
|
|
138
|
+
const selectedObj = element.querySelector(mySelector);
|
|
139
|
+
elementRect = selectedObj?.getBoundingClientRect();
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
elementRect = element.getBoundingClientRect();
|
|
143
|
+
}
|
|
144
|
+
if (!elementRect?.width || !elementRect?.height) {
|
|
145
|
+
console.error('checkPosition:missing element rect');
|
|
146
|
+
return { deltaX: 0, deltaY: 0 };
|
|
147
|
+
}
|
|
148
|
+
let checkBoundaries = true;
|
|
149
|
+
if (this._isInsideRect(elementRect, parentRect) === false && !forceCheck) {
|
|
150
|
+
checkBoundaries = false;
|
|
151
|
+
}
|
|
152
|
+
// copy of real element rectangle to perform calculation over before set to the real element
|
|
153
|
+
const elementDOMRect = DOMRect.fromRect(elementRect);
|
|
154
|
+
//set the element rectangle by deltas
|
|
155
|
+
//this._translateRectangle(elementDOMRect, deltaX, deltaY);
|
|
156
|
+
if (checkBoundaries) {
|
|
157
|
+
if (this._isInsideRect(elementDOMRect, parentRect) === false) {
|
|
158
|
+
const newElementPos = this.getAlignedPosition(elementDOMRect, parentRect);
|
|
159
|
+
deltaX = newElementPos.x - elementRect.x;
|
|
160
|
+
deltaY = newElementPos.y - elementRect.y;
|
|
161
|
+
//this._translateRectangle(elementDOMRect, deltaX, deltaY);
|
|
37
162
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
console.log("not inside!!");
|
|
166
|
+
if (this._isInsideLeftTopRect(parentRect, elementDOMRect) === false) {
|
|
167
|
+
const newElementPos = this._getAlignedLeftTopPosition(elementDOMRect, parentRect);
|
|
168
|
+
deltaX = newElementPos.x - elementRect.x;
|
|
169
|
+
deltaY = newElementPos.y - elementRect.y;
|
|
170
|
+
//this._translateRectangle(elementDOMRect, deltaX, deltaY);
|
|
46
171
|
}
|
|
47
172
|
}
|
|
173
|
+
const nativeElement = e1.element.nativeElement;
|
|
174
|
+
if (!nativeElement) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const computedStyle = window.getComputedStyle(nativeElement);
|
|
178
|
+
const top = parseInt(computedStyle.top, 10);
|
|
179
|
+
const left = parseInt(computedStyle.left, 10);
|
|
180
|
+
nativeElement.style.top = (top + deltaY) + 'px';
|
|
181
|
+
nativeElement.style.left = (left + deltaX) + 'px';
|
|
48
182
|
return { deltaX, deltaY };
|
|
49
183
|
}
|
|
50
184
|
/**--------------------------------------------------------------------------
|
|
@@ -112,15 +246,50 @@ export class LayoutManagerService {
|
|
|
112
246
|
/**--------------------------------------------------------------------------
|
|
113
247
|
* translate rectangle by x, y
|
|
114
248
|
--------------------------------------------------------------------------*/
|
|
115
|
-
_translateRectangle(rect, translateX, translateY) {
|
|
116
|
-
|
|
249
|
+
/*_translateRectangle(rect:DOMRect, translateX:number, translateY:number) {
|
|
250
|
+
if(!rect) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
rect.x += translateX;
|
|
254
|
+
rect.y += translateY;
|
|
255
|
+
return rect;
|
|
256
|
+
}
|
|
257
|
+
*/
|
|
258
|
+
updateCollapsed(value, id = '') {
|
|
259
|
+
const foundItem = this.getItem(id);
|
|
260
|
+
if (!foundItem) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
foundItem.isCollapsed = value;
|
|
264
|
+
this.registeredItems$.next(this.registeredItems);
|
|
265
|
+
setTimeout(() => {
|
|
266
|
+
this.checkPosition(foundItem.id, "", undefined, 0, 0, true);
|
|
267
|
+
});
|
|
268
|
+
let s1 = '';
|
|
269
|
+
this.registeredItems.forEach((item) => {
|
|
270
|
+
s1 = s1 + `${item.id}:<${item.isCollapsed ? 1 : 0}> `;
|
|
271
|
+
});
|
|
272
|
+
console.log(s1);
|
|
273
|
+
}
|
|
274
|
+
handleDragEnd(id) {
|
|
275
|
+
this.finalizeObjectChanges(id);
|
|
276
|
+
}
|
|
277
|
+
/**--------------------------------------------------------------------------
|
|
278
|
+
* finalize object changes (position). object must be registered in the layout manager
|
|
279
|
+
* object: object to finalize
|
|
280
|
+
--------------------------------------------------------------------------*/
|
|
281
|
+
finalizeObjectChanges(id) {
|
|
282
|
+
const item = this.getItem(id);
|
|
283
|
+
if (!item) {
|
|
117
284
|
return;
|
|
118
285
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
286
|
+
const element = item.element?.nativeElement;
|
|
287
|
+
const computedStyle = window.getComputedStyle(element);
|
|
288
|
+
const top = parseInt(computedStyle.top, 10);
|
|
289
|
+
const left = parseInt(computedStyle.left, 10);
|
|
290
|
+
this._setObjectConfig(item, left, top);
|
|
122
291
|
}
|
|
123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LayoutManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
292
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LayoutManagerService, deps: [{ token: i1.ResizeObserverService }, { token: i2.LocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
124
293
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LayoutManagerService, providedIn: 'root' }); }
|
|
125
294
|
}
|
|
126
295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LayoutManagerService, decorators: [{
|
|
@@ -128,5 +297,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
|
|
|
128
297
|
args: [{
|
|
129
298
|
providedIn: 'root'
|
|
130
299
|
}]
|
|
131
|
-
}], ctorParameters: () => [] });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9sYXlvdXQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS3RELE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsZ0JBQWdCLENBQUM7SUFDakIsYUFBYSxDQUFDLFVBQXFCLEVBQUMsUUFBZSxFQUFDLElBQVcsRUFBQyxHQUFVLEVBQUMsTUFBYSxFQUFDLE1BQWEsRUFBQyxhQUFxQixLQUFLO1FBQy9ILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRSw0RUFBNEU7UUFDNUUsb0VBQW9FO1FBQ3BFLHVEQUF1RDtRQUN2RCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RyxNQUFNLFFBQVEsR0FBSSxRQUFRLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdHLElBQUcsTUFBTSxJQUFJLFVBQVUsQ0FBQyxhQUFhLElBQUksU0FBUyxJQUFJLFFBQVEsSUFBSSxRQUFRLEVBQUMsQ0FBQztZQUMxRSxNQUFNLFFBQVEsR0FBVyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN4RCxNQUFNLGFBQWEsR0FBVSxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvRCxNQUFNLFlBQVksR0FBVyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM5RCxNQUFNLFdBQVcsR0FBVyxVQUFVLENBQUMsYUFB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QztZQUNULE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUM7UUFDckIsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQWxJVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZixJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRNYW5hZ2VyU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiAgY2hlY2tQb3NpdGlvbihlbGVtZW50UmVmOkVsZW1lbnRSZWYsc2VsZWN0b3I6c3RyaW5nLGxlZnQ6bnVtYmVyLHRvcDpudW1iZXIsZGVsdGFYOm51bWJlcixkZWx0YVk6bnVtYmVyLGZvcmNlQ2hlY2s6Ym9vbGVhbiA9IGZhbHNlKXtcclxuICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibWFpblZpZXdwb3J0Q29udGFpbmVyXCIpO1xyXG4gICAgLy9jb25zdCBsZWZ0UGFuZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwibGVmdC1zaWRlbmF2LWNvbnRlbnRcIik7XHJcbiAgICAvL2NvbnN0IGxlZnRQYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubGVmdC1zaWRlbmF2LWNvbnRlbnRcIik7XHJcbiAgICAvL2NvbnN0IGxlZnRQYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2lkZW5hdlwiKTtcclxuICAgIGNvbnN0IGxlZnRQYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xpYi1iaW1wbHVzLXNpZGVuYXYnKT8uc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcignLnNpZGVuYXYnKTtcclxuICAgIGNvbnN0IHRvcFBhbmVsID0gIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2xpYi1iaW1wbHVzLW5hdmJhcicpPy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKCcuYmltcGx1cy1uYXZiYXInKTtcclxuICAgIGlmKHBhcmVudCAmJiBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiYgbGVmdFBhbmVsICYmIHRvcFBhbmVsICYmIHNlbGVjdG9yKXtcclxuICAgICAgY29uc3Qgdmlld1JlY3Q6RE9NUmVjdCA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3QgbGVmdFBhbmVsUmVjdDpET01SZWN0ID1sZWZ0UGFuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGNvbnN0IHRvcFBhbmVsUmVjdDpET01SZWN0ID0gdG9wUGFuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRSZWN0OkRPTVJlY3QgPSBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ/LnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOyBcclxuICAgICAgY29uc29sZS5sb2coYGJveDogbGVmdDoke2VsZW1lbnRSZWN0LmxlZnR9LHRvcDoke2VsZW1lbnRSZWN0LnRvcH0scmlnaHQ6JHtlbGVtZW50UmVjdC5yaWdodH0sYm90dG9tOiR7ZWxlbWVudFJlY3QuYm90dG9tfWApO1xyXG4gICAgICAvL2NvbnN0IGVsZW1lbnRSZWN0OkRPTVJlY3QgID0gIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgY29uc3QgcGFyZW50UmVjdDpET01SZWN0ID0gbmV3IERPTVJlY3QoXHJcbiAgICAgICAgIHZpZXdSZWN0LmxlZnQgKyBsZWZ0UGFuZWxSZWN0LnJpZ2h0ICsgdG9wUGFuZWxSZWN0LmxlZnQsXHJcbiAgICAgICAgIHZpZXdSZWN0LnRvcCwgICAgICAgICBcclxuICAgICAgICAgdmlld1JlY3Qud2lkdGggLSBsZWZ0UGFuZWxSZWN0LiB3aWR0aCxcclxuICAgICAgICAgdmlld1JlY3QuaGVpZ2h0KSA7XHJcbiAgICAgIC8vY29uc3QgcGFyZW50UmVjdDpET01SZWN0ID0gbmV3IERPTVJlY3QoICB2aWV3UmVjdC5sZWZ0LHZpZXdSZWN0LnRvcCx2aWV3UmVjdC53aWR0aCx2aWV3UmVjdC5oZWlnaHQpO1xyXG4gICAgICBcclxuICAgICAgLy9jb25zb2xlLmxvZyh2aWV3UmVjdCxlbGVtZW50UmVjdCk7XHJcbiAgICAgIGxldCBjaGVja0JvdW5kYXJpZXMgPSB0cnVlO1xyXG4gICAgICBpZih0aGlzLl9pc0luc2lkZVJlY3QoZWxlbWVudFJlY3QsIHBhcmVudFJlY3QpID09PSBmYWxzZSAmJiAhZm9yY2VDaGVjaykge1xyXG4gICAgICAgIGNoZWNrQm91bmRhcmllcyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIC8vIGNvcHkgb2YgcmVhbCBlbGVtZW50IHJlY3RhbmdsZSB0byBwZXJmb3JtIGNhbGN1bGF0aW9uIG92ZXIgYmVmb3JlIHNldCB0byB0aGUgcmVhbCBlbGVtZW50XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRET01SZWN0ID0gRE9NUmVjdC5mcm9tUmVjdChlbGVtZW50UmVjdCk7XHJcbiAgXHJcbiAgICAgIC8vc2V0IHRoZSBlbGVtZW50IHJlY3RhbmdsZSBieSBkZWx0YXNcclxuICAgICAgdGhpcy5fdHJhbnNsYXRlUmVjdGFuZ2xlKGVsZW1lbnRET01SZWN0LCBkZWx0YVgsIGRlbHRhWSk7XHJcbiAgXHJcbiAgICAgIGlmKGNoZWNrQm91bmRhcmllcykge1xyXG4gICAgICAgIGlmKHRoaXMuX2lzSW5zaWRlUmVjdChlbGVtZW50RE9NUmVjdCwgcGFyZW50UmVjdCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICBjb25zdCAgbmV3RWxlbWVudFBvcyA9IHRoaXMuZ2V0QWxpZ25lZFBvc2l0aW9uKGVsZW1lbnRET01SZWN0LCBwYXJlbnRSZWN0KTtcclxuICAgICAgICAgIGRlbHRhWCA9IG5ld0VsZW1lbnRQb3MueCAtIGVsZW1lbnRSZWN0Lng7XHJcbiAgICAgICAgICBkZWx0YVkgPSBuZXdFbGVtZW50UG9zLnkgLSBlbGVtZW50UmVjdC55O1xyXG4gICAgICAgICAgdGhpcy5fdHJhbnNsYXRlUmVjdGFuZ2xlKGVsZW1lbnRET01SZWN0LCBkZWx0YVgsIGRlbHRhWSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwibm90IGluc2lkZSEhXCIpO1xyXG4gICAgICAgIGlmICh0aGlzLl9pc0luc2lkZUxlZnRUb3BSZWN0KHBhcmVudFJlY3QsIGVsZW1lbnRET01SZWN0KSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRQb3MgPSB0aGlzLl9nZXRBbGlnbmVkTGVmdFRvcFBvc2l0aW9uKGVsZW1lbnRET01SZWN0LCBwYXJlbnRSZWN0KTtcclxuICAgICAgICAgIGRlbHRhWCA9IG5ld0VsZW1lbnRQb3MueCAtIGVsZW1lbnRSZWN0Lng7XHJcbiAgICAgICAgICBkZWx0YVkgPSBuZXdFbGVtZW50UG9zLnkgLSBlbGVtZW50UmVjdC55O1xyXG4gICAgICAgICAgdGhpcy5fdHJhbnNsYXRlUmVjdGFuZ2xlKGVsZW1lbnRET01SZWN0LCBkZWx0YVgsIGRlbHRhWSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge2RlbHRhWCxkZWx0YVl9O1xyXG4gIH1cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZmluZCBpZiByZWN0YW5nbGUgMSBpcyBpbnNpZGUgcmVjdGFuZ2xlIDJcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2lzSW5zaWRlUmVjdChyMTpET01SZWN0LCByMjpET01SZWN0KSB7XHJcbiAgICBpZighcjEgfHwgIXIyKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiAgcjIubGVmdCA8PSByMS5sZWZ0ICAmJiByMi50b3AgPD0gcjEudG9wICYmIHIyLnJpZ2h0ID49IHIxLnJpZ2h0ICYmIHIyLmJvdHRvbSA+PSByMS5ib3R0b207XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZmluZCBpZiByZWN0YW5nbGVzIGRvIG5vdCBvdmVybGFwIHRoZSBsZWZ0IGFuZCB0b3Agc2lkZXNcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2lzSW5zaWRlTGVmdFRvcFJlY3QocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCAgcjFJbnNpZGUgPSByMi5sZWZ0IDw9IHIxLmxlZnQgICYmIHIyLnRvcCA8PSByMS50b3A7XHJcbiAgICBjb25zdCAgcjJJbnNpZGUgPSByMS5sZWZ0IDw9IHIyLmxlZnQgICYmIHIxLnRvcCA8PSByMi50b3A7XHJcbiAgICByZXR1cm4gcjFJbnNpZGUgfHwgcjJJbnNpZGU7XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZ2V0IHBvc2l0aW9uIG9mIHIxIGFsaWduZWQgd2l0aCB0aGUgcjIgc2lkZXNcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgZ2V0QWxpZ25lZFBvc2l0aW9uKHIxOkRPTVJlY3QsIHIyOkRPTVJlY3QpIHtcclxuICAgIGlmKCFyMSB8fCAhcjIpIHtcclxuICAgICAgcmV0dXJuIHt4OjAseTowfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHRvID0geyB4OiByMS54LCB5OiByMS55IH07XHJcbiAgICAvL2FsaWduIGxlZnQgb3IgcmlnaHQgc2lkZXMuIHByZWZlcmFibHkgbGVmdFxyXG4gICAgaWYocjEubGVmdCA8IHIyLmxlZnQpIHtcclxuICAgICAgdG8ueCA9IHIyLng7XHJcbiAgICB9IGVsc2UgaWYocjEucmlnaHQgPiByMi5yaWdodCkge1xyXG4gICAgICB0by54ID0gcjIucmlnaHQgLSByMS53aWR0aDtcclxuICAgIH1cclxuICAgIC8vYWxpZ24gdG9wIG9yIGJvdHRvbS4gcHJlZmVyYWJseSB0b3BcclxuICAgIGlmKHIxLnRvcCA8IHIyLnRvcCkge1xyXG4gICAgICB0by55ID0gcjIueTtcclxuICAgIH0gZWxzZSBpZihyMS5ib3R0b20gPiByMi5ib3R0b20pIHtcclxuICAgICAgdG8ueSA9IHIyLmJvdHRvbSAtIHIxLmhlaWdodDtcclxuICAgIH1cclxuICAgIHJldHVybiB0bztcclxuICB9XHJcbiAgXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGdldCBwb3NpdGlvbiBvZiByMSBhbGlnbmVkIHdpdGggdGhlIHIyIGxlZnQsIHRvcCBzaWRlc1xyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfZ2V0QWxpZ25lZExlZnRUb3BQb3NpdGlvbihyMTpET01SZWN0LCByMjpET01SZWN0KSB7XHJcbiAgICBpZighcjEgfHwgIXIyKSB7XHJcbiAgICAgIHJldHVybiAge3g6MCx5OjB9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0ICB0byA9IHsgeDogcjEueCwgeTogcjEueSB9O1xyXG4gICAgLy9hbGlnbiBsZWZ0XHJcbiAgICBpZihyMS5sZWZ0IDwgcjIubGVmdCkge1xyXG4gICAgICB0by54ID0gcjIueDtcclxuICAgIH1cclxuICAgIC8vYWxpZ24gdG9wXHJcbiAgICBpZihyMS50b3AgPCByMi50b3ApIHtcclxuICAgICAgdG8ueSA9IHIyLnk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG87XHJcbiAgfVxyXG5cclxuICAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHRyYW5zbGF0ZSByZWN0YW5nbGUgYnkgeCwgeVxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfdHJhbnNsYXRlUmVjdGFuZ2xlKHJlY3Q6RE9NUmVjdCwgdHJhbnNsYXRlWDpudW1iZXIsIHRyYW5zbGF0ZVk6bnVtYmVyKSB7XHJcbiAgICBpZighcmVjdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZWN0LnggKz0gdHJhbnNsYXRlWDtcclxuICAgIHJlY3QueSArPSB0cmFuc2xhdGVZO1xyXG4gICAgcmV0dXJuIHJlY3Q7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
300
|
+
}], ctorParameters: () => [{ type: i1.ResizeObserverService }, { type: i2.LocalStorageService }] });
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9sYXlvdXQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQStCdkMsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUFvQixxQkFBMkMsRUFDM0MsbUJBQXdDO1FBRHhDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUY1RCxxQkFBZ0IsR0FBeUMsSUFBSSxlQUFlLENBQXNCLEVBQUUsQ0FBQyxDQUFBO1FBSTdGLG9CQUFlLEdBQXVCLEVBQUUsQ0FBQztRQUtqRCxXQUFNLEdBQVUscUJBQXFCLENBQUM7SUFObEMsQ0FBQztJQUdMLElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUlIOztrRkFFOEU7SUFDNUUsY0FBYyxDQUFDLEdBQWMsRUFBRSxFQUFTLEVBQUMsT0FBYyxHQUFHLEVBQUUsTUFBYSxHQUFHLEVBQUUsUUFBMkIsRUFBRSxnQkFBd0I7UUFFakksSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQztZQUNwRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFzQjtZQUNqQyxPQUFPLEVBQUMsR0FBRztZQUNYLEVBQUUsRUFBQyxFQUFFO1lBQ0wsUUFBUSxFQUFDLFFBQVE7WUFDakIsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFDLGdC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QUFTO1FBQzdCLE1BQU0sSUFBSSxHQUEyQixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUcsQ0FBQyxJQUFJLEVBQUMsQ0FBQztZQUNSLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUM7UUFDNUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBaFRVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSAgIGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbi8vaW1wb3J0IHsgSXRlbXNMaXN0IH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QvbGliL2l0ZW1zLWxpc3QnO1xyXG4vL2ltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExheW91dE1hbmFnZXJJdGVtIHtcclxuICBlbGVtZW50OkVsZW1lbnRSZWY7XHJcbiAgaWQ6IHN0cmluZztcclxuICBzZWxlY3Rvcj86c3RyaW5nO1xyXG4gIGlzQ29sbGFwc2VkOmJvb2xlYW47XHJcbiAgcmVtZW1iZXJQb3NpdGlvbj86Ym9vbGVhblxyXG4gIGxlZnQ/OiBudW1iZXI7XHJcbiAgdG9wPzpudW1iZXI7XHJcbiAgd2lkdGg/Om51bWJlcjtcclxuICBoZWlnaHQ/Om51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBpc0NvbGxhcHNlZDpib29sZWFuOyAgXHJcbiAgbGVmdD86IG51bWJlcjtcclxuICB0b3A/Om51bWJlcjsgIFxyXG59XHJcblxyXG5cclxuaW50ZXJmYWNlIExheW91dE1hbmFnZXJDb25maWcge1xyXG4gIFtrZXk6c3RyaW5nXTogTGF5b3V0TWFuYWdlckNvbmZpZ0l0ZW1cclxufVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRNYW5hZ2VyU2VydmljZSB7XHJcblxyXG4gIHJlZ2lzdGVyZWRJdGVtcyQ6IEJlaGF2aW9yU3ViamVjdDxMYXlvdXRNYW5hZ2VySXRlbVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5b3V0TWFuYWdlckl0ZW1bXT4oW10pXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlU2VydmljZSA6TG9jYWxTdG9yYWdlU2VydmljZSBcclxuICApIHsgfVxyXG4gIHByaXZhdGUgcmVnaXN0ZXJlZEl0ZW1zOkxheW91dE1hbmFnZXJJdGVtW10gPSBbXTtcclxuICBcclxuICBnZXQgUmVnaXN0ZXJlZEl0ZW1zKCk6IExheW91dE1hbmFnZXJJdGVtW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJlZEl0ZW1zO1xyXG4gIH1cclxuICBDT05GSUc6c3RyaW5nID0gJ2xheW91dE1hbmFnZXJDb25maWcnO1xyXG5cclxuICBcclxuLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHJlZ2lzdGVyIG9iamVjdC4gb2JqZWN0IG11c3QgaGF2ZSB1bmlxdWUgaWQgb3IgZWxlbWVudElkXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIHJlZ2lzdGVyT2JqZWN0KG9iajpFbGVtZW50UmVmLCBpZDpzdHJpbmcsbGVmdDpudW1iZXIgPSAxMDAsIHRvcDpudW1iZXIgPSAxMDAsIHNlbGVjdG9yOnN0cmluZyB8IHVuZGVmaW5lZCwgcmVtZW1iZXJQb3NpdGlvbjpib29sZWFuKSB7XHJcbiAgICBcclxuICAgIGlmKHRoaXMucmVnaXN0ZXJlZEl0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtLmlkID09PSBpZCkpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdJdGVtOiBMYXlvdXRNYW5hZ2VySXRlbSA9IHsgXHJcbiAgICAgIGVsZW1lbnQ6b2JqLFxyXG4gICAgICBpZDppZCxcclxuICAgICAgc2VsZWN0b3I6c2VsZWN0b3IsXHJcbiAgICAgIHJlbWVtYmVyUG9zaXRpb246ISFyZW1lbWJlclBvc2l0aW9uLFxyXG4gICAgICBsZWZ0OmxlZnQsXHJcbiAgICAgIHRvcDp0b3AsXHJcbiAgICAgIGlzQ29sbGFwc2VkOiBmYWxzZSAgICBcclxuICAgICB9O1xyXG5cclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLnB1c2gobmV3SXRlbSk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcyQubmV4dCh0aGlzLnJlZ2lzdGVyZWRJdGVtcyk7XHJcbiAgICB0aGlzLl9pbml0T2JqZWN0KG5ld0l0ZW0pO1xyXG4gIH1cclxuICBcclxuICBfaW5pdE9iamVjdChvYmo6TGF5b3V0TWFuYWdlckl0ZW0pe1xyXG4gICAgdGhpcy5fYWRqdXN0T2JqZWN0QnlDb25maWcob2JqKTtcclxuICAgIHRoaXMuX2FkanVzdE9iamVjdEJ5V2luZG93U2l6ZShvYmopO1xyXG4gICAgXHJcbiAgfVxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBnZXQgb2JqZWN0IGNvbmZpZ3VyYXRpb25cclxuICAqIHJldHVybiB7bGVmdCwgdG9wLCB3aWR0aCwgaGVpZ3RofVxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfZ2V0T2JqZWN0Q29uZmlnKG9iajpMYXlvdXRNYW5hZ2VySXRlbSk6TGF5b3V0TWFuYWdlckNvbmZpZ0l0ZW18bnVsbCB7XHJcbiAgICBpZighb2JqKXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuQ09ORklHKTtcclxuICAgIGNvbnN0ICBjb25maWcgPSBjb25maWdWYWx1ZSA/IEpTT04ucGFyc2UoY29uZmlnVmFsdWUpIDoge307XHJcbiAgICBjb25zdCAgb2JqSWQgPSBvYmouaWQgO1xyXG4gICAgbGV0IGNvbmZpZ09iaiA9IGNvbmZpZ1tvYmpJZF07XHJcbiAgICBpZighY29uZmlnT2JqKSB7XHJcbiAgICAgIGNvbmZpZ09iaiA9IHtpZDpvYmpJZCxsZWZ0Om9iai5sZWZ0LHRvcDpvYmoudG9wfTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb25maWdPYmo7XHJcbiAgfVxyXG5cclxuICBfYWRqdXN0T2JqZWN0QnlDb25maWcob2JqOkxheW91dE1hbmFnZXJJdGVtKXtcclxuICAgIGNvbnN0IGNvbmZpZzpMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbXxudWxsID0gdGhpcy5fZ2V0T2JqZWN0Q29uZmlnKG9iaik7XHJcbiAgICBpZighY29uZmlnKXtcclxuICAgICAgcmV0dXJuOyAgICAgIFxyXG4gICAgfWNvbnN0IGVsZW1lbnQgPSBvYmouZWxlbWVudD8ubmF0aXZlRWxlbWVudDsgIFxyXG4gICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gKGNvbmZpZy5sZWZ0KSArICdweCc7XHJcbiAgICBlbGVtZW50LnN0eWxlLnRvcCA9IChjb25maWcudG9wKSArICdweCc7XHJcbiAgICB0aGlzLmNoZWNrUG9zaXRpb24ob2JqLmlkLFwiXCIsdW5kZWZpbmVkLDAsMCx0cnVlKTsgICAgXHJcbiAgfVxyXG5cclxuICBfYWRqdXN0T2JqZWN0QnlXaW5kb3dTaXplKG9iajpMYXlvdXRNYW5hZ2VySXRlbSl7XHJcbiAgICBjb25zb2xlLmxvZygnX2FkanVzdE9iamVjdEJ5V2luZG93U2l6ZScsb2JqKTtcclxuICB9XHJcbiAgXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHJldHVybnMgb2JqZWN0ICByZWdpc3RlcmVkIGluIHRoZSBsYXlvdXQgbWFuYWdlciBcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgZ2V0SXRlbShpZDogc3RyaW5nICk6TGF5b3V0TWFuYWdlckl0ZW18bnVsbCB7ICAgXHJcbiAgICBsZXQgZm91bmRJdGVtOkxheW91dE1hbmFnZXJJdGVtfG51bGwgPSBudWxsO1xyXG4gICAgdGhpcy5yZWdpc3RlcmVkSXRlbXMuZm9yRWFjaChpdGVtID0+e1xyXG4gICAgICBpZihpdGVtLmlkID09PSBpZCl7XHJcbiAgICAgICAgZm91bmRJdGVtID0gaXRlbTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZm91bmRJdGVtO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHNldCBvYmplY3QgY29uZmlndXJhdGlvblxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfc2V0T2JqZWN0Q29uZmlnKG9iajpMYXlvdXRNYW5hZ2VySXRlbSwgbGVmdDpudW1iZXIsdG9wOm51bWJlcil7Ly99LHdpZHRoOm51bWJlcixoZWlnaHQ6bnVtYmVyKSB7XHJcbiAgICBjb25zdCBvYmpJZCA9IG9iaj8uaWQgO1xyXG4gICAgaWYgKCFvYmpJZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQgY29uZmlnID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldE9iamVjdCh0aGlzLkNPTkZJRykgYXMgTGF5b3V0TWFuYWdlckNvbmZpZztcclxuICAgIC8vbGV0IGNvbmZpZyA9IGNvbmZpZ1ZhbHVlICYmIEpTT04ucGFyc2UoY29uZmlnVmFsdWUpIGFzIExheW91dE1hbmFnZXJDb25maWc7XHJcbiAgICBpZiAoIWNvbmZpZykge1xyXG4gICAgICBjb25maWcgPSB7fTtcclxuICAgIH1cclxuICAgIGlmKG9iaj8uaXNDb2xsYXBzZWQpeyAgLy8gZG8gbm90IG92ZXJ0YWtlIGNvbGxhcHNlZCBzaXplXHJcbiAgICAgIGlmICghY29uZmlnW29iaklkXSkgeyAgICAgICAgXHJcbiAgICAgICAgY29uZmlnW29iaklkXSA9IG9iajtcclxuICAgICAgfVxyXG4gICAgICBjb25maWdbb2JqSWRdLmxlZnQgPSBsZWZ0O1xyXG4gICAgICBjb25maWdbb2JqSWRdLnRvcCAgPSB0b3A7XHJcbiAgICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5zZXRPYmplY3QodGhpcy5DT05GSUcsIGNvbmZpZyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXdJdGVtIDpMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbSA9IHtcclxuICAgICAgaWQ6IG9iaklkLFxyXG4gICAgICBpc0NvbGxhcHNlZDogZmFsc2UsXHJcbiAgICAgIGxlZnQ6IGxlZnQsXHJcbiAgICAgIHRvcDogdG9wXHJcbiAgICAgIC8vd2lkdGg6IHdpZHRoLFxyXG4gICAgICAvL2hlaWdodDogaGVpZ2h0XHJcbiAgICB9O1xyXG4gICAgY29uZmlnW29iaklkXSA9IG5ld0l0ZW07XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0T2JqZWN0KHRoaXMuQ09ORklHLGNvbmZpZyk7XHJcbiAgfVxyXG4gIC8vIGNoZWNrcyB3aGV0aGVyIGVsZW1lbnQgb3IgZWxlbWVudCB3aXRoIGFkZGl0aW9uYWwgc2VsZWN0aW9ub2Ygc3ViZWxlbWVudCBpcyBwbGFjZWQgd2l0aGluIHRoZSBnaXZlIHJlY3RhbmdsZVxyXG4gIC8vIGlmIG5vdCB0aGVuIGNhbGN1bGF0ZXMgdGhlIG9mZnNldCB0byBiZSBtb3ZlZCB0byBmaXQgaW5cclxuICBjaGVja1Bvc2l0aW9uKGlkOnN0cmluZyxzZWxlY3RvcjpzdHJpbmcscGFyZW50UmVjdGFuZ2xlOkRPTVJlY3R8dW5kZWZpbmVkICxkZWx0YVg6bnVtYmVyLGRlbHRhWTpudW1iZXIsZm9yY2VDaGVjazpib29sZWFuID0gZmFsc2Upe1xyXG4gICAgaWYoIWlkKXtcclxuICAgICAgcmV0dXJuIHtkZWx0YVg6MCxkZWx0YVk6MH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBlMSA9IHRoaXMuZ2V0SXRlbShpZCk7XHJcbiAgICBpZighZTEpe1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVsZW1lbnQ6RWxlbWVudCA9IGUxLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnNoYWRvd1Jvb3QgfHwgZTEuZWxlbWVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IG15U2VsZWN0b3IgPXNlbGVjdG9yPy5sZW5ndGggPiAwID9zZWxlY3RvcjplMS5zZWxlY3RvcjsgICAgXHJcbiAgICBjb25zdCBwYXJlbnRSZWN0OkRPTVJlY3QgPSAgcGFyZW50UmVjdGFuZ2xlIHx8ICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5nZXRQYXJlbnRBcHBSZWN0KCk7XHJcbiAgICBpZiggcGFyZW50UmVjdD8ud2lkdGg8PTEgfHwgcGFyZW50UmVjdD8uaGVpZ2h0PD0xICkge1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH1cclxuICAgIGxldCAgZWxlbWVudFJlY3Q6RE9NUmVjdHx1bmRlZmluZWQgPXVuZGVmaW5lZDtcclxuICAgIGlmKCFlbGVtZW50KXtcclxuICAgICAgY29uc29sZS5lcnJvcignY2hlY2tQb3NpdGlvbjogbWlzc2luZyBlbGVtZW50Jyk7XHJcbiAgICAgIHJldHVybiB7ZGVsdGFYOjAsZGVsdGFZOjB9O1xyXG4gICAgfVxyXG4gICAgaWYobXlTZWxlY3Rvcil7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT2JqIDogSFRNTEVsZW1lbnR8bnVsbCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihteVNlbGVjdG9yKTtcclxuICAgICAgZWxlbWVudFJlY3QgPSBzZWxlY3RlZE9iaj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbGVtZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICB9XHJcbiAgICBpZighZWxlbWVudFJlY3Q/LndpZHRoIHx8ICFlbGVtZW50UmVjdD8uaGVpZ2h0KXtcclxuICAgICAgY29uc29sZS5lcnJvcignY2hlY2tQb3NpdGlvbjptaXNzaW5nIGVsZW1lbnQgcmVjdCcpO1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH0gXHJcbiAgICBsZXQgY2hlY2tCb3VuZGFyaWVzID0gdHJ1ZTtcclxuICAgIGlmKHRoaXMuX2lzSW5zaWRlUmVjdChlbGVtZW50UmVjdCwgcGFyZW50UmVjdCkgPT09IGZhbHNlICYmICFmb3JjZUNoZWNrKSB7XHJcbiAgICAgIGNoZWNrQm91bmRhcmllcyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gXHJcbiAgICAvLyBjb3B5IG9mIHJlYWwgZWxlbWVudCByZWN0YW5nbGUgdG8gcGVyZm9ybSBjYWxjdWxhdGlvbiBvdmVyIGJlZm9yZSBzZXQgdG8gdGhlIHJlYWwgZWxlbWVudFxyXG4gICAgY29uc3QgZWxlbWVudERPTVJlY3QgPSBET01SZWN0LmZyb21SZWN0KGVsZW1lbnRSZWN0KTtcclxuXHJcbiAgICAvL3NldCB0aGUgZWxlbWVudCByZWN0YW5nbGUgYnkgZGVsdGFzXHJcbiAgICAvL3RoaXMuX3RyYW5zbGF0ZVJlY3RhbmdsZShlbGVtZW50RE9NUmVjdCwgZGVsdGFYLCBkZWx0YVkpO1xyXG5cclxuICAgIGlmKGNoZWNrQm91bmRhcmllcykge1xyXG4gICAgICBpZih0aGlzLl9pc0luc2lkZVJlY3QoZWxlbWVudERPTVJlY3QsIHBhcmVudFJlY3QpID09PSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0ICBuZXdFbGVtZW50UG9zID0gdGhpcy5nZXRBbGlnbmVkUG9zaXRpb24oZWxlbWVudERPTVJlY3QsIHBhcmVudFJlY3QpO1xyXG4gICAgICAgIGRlbHRhWCA9IG5ld0VsZW1lbnRQb3MueCAtIGVsZW1lbnRSZWN0Lng7XHJcbiAgICAgICAgZGVsdGFZID0gbmV3RWxlbWVudFBvcy55IC0gZWxlbWVudFJlY3QueTtcclxuICAgICAgICAvL3RoaXMuX3RyYW5zbGF0ZVJlY3RhbmdsZShlbGVtZW50RE9NUmVjdCwgZGVsdGFYLCBkZWx0YVkpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIm5vdCBpbnNpZGUhIVwiKTtcclxuICAgICAgaWYgKHRoaXMuX2lzSW5zaWRlTGVmdFRvcFJlY3QocGFyZW50UmVjdCwgZWxlbWVudERPTVJlY3QpID09PSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IG5ld0VsZW1lbnRQb3MgPSB0aGlzLl9nZXRBbGlnbmVkTGVmdFRvcFBvc2l0aW9uKGVsZW1lbnRET01SZWN0LCBwYXJlbnRSZWN0KTtcclxuICAgICAgICBkZWx0YVggPSBuZXdFbGVtZW50UG9zLnggLSBlbGVtZW50UmVjdC54O1xyXG4gICAgICAgIGRlbHRhWSA9IG5ld0VsZW1lbnRQb3MueSAtIGVsZW1lbnRSZWN0Lnk7XHJcbiAgICAgICAgLy90aGlzLl90cmFuc2xhdGVSZWN0YW5nbGUoZWxlbWVudERPTVJlY3QsIGRlbHRhWCwgZGVsdGFZKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgbmF0aXZlRWxlbWVudCA9IGUxLmVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgIGlmKCFuYXRpdmVFbGVtZW50KXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgY29uc3QgdG9wID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS50b3AsIDEwKTtcclxuICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludChjb21wdXRlZFN0eWxlLmxlZnQsIDEwKTtcclxuICAgIG5hdGl2ZUVsZW1lbnQuc3R5bGUudG9wID0gKHRvcCArIGRlbHRhWSkgKyAncHgnO1xyXG4gICAgbmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gKGxlZnQgKyBkZWx0YVgpICsgJ3B4JztcclxuICAgIHJldHVybiB7ZGVsdGFYLGRlbHRhWX07XHJcbiAgfVxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBmaW5kIGlmIHJlY3RhbmdsZSAxIGlzIGluc2lkZSByZWN0YW5nbGUgMlxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfaXNJbnNpZGVSZWN0KHIxOkRPTVJlY3QsIHIyOkRPTVJlY3QpIHtcclxuICAgIGlmKCFyMSB8fCAhcjIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICByMi5sZWZ0IDw9IHIxLmxlZnQgICYmIHIyLnRvcCA8PSByMS50b3AgJiYgcjIucmlnaHQgPj0gcjEucmlnaHQgJiYgcjIuYm90dG9tID49IHIxLmJvdHRvbTtcclxuICB9XHJcblxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBmaW5kIGlmIHJlY3RhbmdsZXMgZG8gbm90IG92ZXJsYXAgdGhlIGxlZnQgYW5kIHRvcCBzaWRlc1xyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfaXNJbnNpZGVMZWZ0VG9wUmVjdChyMTpET01SZWN0LCByMjpET01SZWN0KSB7XHJcbiAgICBpZighcjEgfHwgIXIyKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0ICByMUluc2lkZSA9IHIyLmxlZnQgPD0gcjEubGVmdCAgJiYgcjIudG9wIDw9IHIxLnRvcDtcclxuICAgIGNvbnN0ICByMkluc2lkZSA9IHIxLmxlZnQgPD0gcjIubGVmdCAgJiYgcjEudG9wIDw9IHIyLnRvcDtcclxuICAgIHJldHVybiByMUluc2lkZSB8fCByMkluc2lkZTtcclxuICB9XHJcblxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBnZXQgcG9zaXRpb24gb2YgcjEgYWxpZ25lZCB3aXRoIHRoZSByMiBzaWRlc1xyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBnZXRBbGlnbmVkUG9zaXRpb24ocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4ge3g6MCx5OjB9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG8gPSB7IHg6IHIxLngsIHk6IHIxLnkgfTtcclxuICAgIC8vYWxpZ24gbGVmdCBvciByaWdodCBzaWRlcy4gcHJlZmVyYWJseSBsZWZ0XHJcbiAgICBpZihyMS5sZWZ0IDwgcjIubGVmdCkge1xyXG4gICAgICB0by54ID0gcjIueDtcclxuICAgIH0gZWxzZSBpZihyMS5yaWdodCA+IHIyLnJpZ2h0KSB7XHJcbiAgICAgIHRvLnggPSByMi5yaWdodCAtIHIxLndpZHRoO1xyXG4gICAgfVxyXG4gICAgLy9hbGlnbiB0b3Agb3IgYm90dG9tLiBwcmVmZXJhYmx5IHRvcFxyXG4gICAgaWYocjEudG9wIDwgcjIudG9wKSB7XHJcbiAgICAgIHRvLnkgPSByMi55O1xyXG4gICAgfSBlbHNlIGlmKHIxLmJvdHRvbSA+IHIyLmJvdHRvbSkge1xyXG4gICAgICB0by55ID0gcjIuYm90dG9tIC0gcjEuaGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvO1xyXG4gIH1cclxuICBcclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogZ2V0IHBvc2l0aW9uIG9mIHIxIGFsaWduZWQgd2l0aCB0aGUgcjIgbGVmdCwgdG9wIHNpZGVzXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9nZXRBbGlnbmVkTGVmdFRvcFBvc2l0aW9uKHIxOkRPTVJlY3QsIHIyOkRPTVJlY3QpIHtcclxuICAgIGlmKCFyMSB8fCAhcjIpIHtcclxuICAgICAgcmV0dXJuICB7eDowLHk6MH07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgIHRvID0geyB4OiByMS54LCB5OiByMS55IH07XHJcbiAgICAvL2FsaWduIGxlZnRcclxuICAgIGlmKHIxLmxlZnQgPCByMi5sZWZ0KSB7XHJcbiAgICAgIHRvLnggPSByMi54O1xyXG4gICAgfVxyXG4gICAgLy9hbGlnbiB0b3BcclxuICAgIGlmKHIxLnRvcCA8IHIyLnRvcCkge1xyXG4gICAgICB0by55ID0gcjIueTtcclxuICAgIH1cclxuICAgIHJldHVybiB0bztcclxuICB9XHJcblxyXG4gICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogdHJhbnNsYXRlIHJlY3RhbmdsZSBieSB4LCB5XHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIC8qX3RyYW5zbGF0ZVJlY3RhbmdsZShyZWN0OkRPTVJlY3QsIHRyYW5zbGF0ZVg6bnVtYmVyLCB0cmFuc2xhdGVZOm51bWJlcikge1xyXG4gICAgaWYoIXJlY3QpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmVjdC54ICs9IHRyYW5zbGF0ZVg7XHJcbiAgICByZWN0LnkgKz0gdHJhbnNsYXRlWTtcclxuICAgIHJldHVybiByZWN0O1xyXG4gIH1cclxuKi9cclxuICBcclxuICB1cGRhdGVDb2xsYXBzZWQodmFsdWU6Ym9vbGVhbiwgaWQ6c3RyaW5nID0gJycpOnZvaWR7ICAgIFxyXG4gICAgY29uc3QgIGZvdW5kSXRlbSA9IHRoaXMuZ2V0SXRlbShpZCk7XHJcbiAgICBpZighZm91bmRJdGVtKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZm91bmRJdGVtLmlzQ29sbGFwc2VkID0gdmFsdWU7XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcyQubmV4dCh0aGlzLnJlZ2lzdGVyZWRJdGVtcyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpPT57ICAgICAgXHJcbiAgICAgIHRoaXMuY2hlY2tQb3NpdGlvbihmb3VuZEl0ZW0uaWQsXCJcIix1bmRlZmluZWQsMCwwLHRydWUpOyAgICAgIFxyXG4gICAgfSk7XHJcbiAgICBsZXQgczE6c3RyaW5nID0nJztcclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW0pPT57XHJcbiAgICAgIHMxID0gczEgKyBgJHtpdGVtLmlkfTo8JHtpdGVtLmlzQ29sbGFwc2VkPzE6MH0+IGA7XHJcbiAgICB9KTtcclxuICAgIGNvbnNvbGUubG9nKHMxKTsgIFxyXG4gIH0gIFxyXG5cclxuXHJcbiAgaGFuZGxlRHJhZ0VuZChpZDpzdHJpbmcpey8vfSxsZWZ0Om51bWJlcix0b3A6bnVtYmVyKXtcclxuICAgIHRoaXMuZmluYWxpemVPYmplY3RDaGFuZ2VzKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBmaW5hbGl6ZSBvYmplY3QgY2hhbmdlcyAocG9zaXRpb24pLiBvYmplY3QgbXVzdCBiZSByZWdpc3RlcmVkIGluIHRoZSBsYXlvdXQgbWFuYWdlclxyXG4gICogb2JqZWN0OiBvYmplY3QgdG8gZmluYWxpemUgIFxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBmaW5hbGl6ZU9iamVjdENoYW5nZXMoaWQ6c3RyaW5nKTp2b2lkIHtcclxuICAgIGNvbnN0IGl0ZW06TGF5b3V0TWFuYWdlckl0ZW18bnVsbCAgPSB0aGlzLmdldEl0ZW0oaWQpO1xyXG4gICAgaWYoIWl0ZW0pe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbGVtZW50ID0gaXRlbS5lbGVtZW50Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpOyAgXHJcbiAgICBjb25zdCB0b3AgPSBwYXJzZUludChjb21wdXRlZFN0eWxlLnRvcCwgMTApO1xyXG4gICAgY29uc3QgbGVmdCA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubGVmdCwgMTApO1xyXG4gICAgdGhpcy5fc2V0T2JqZWN0Q29uZmlnKGl0ZW0sbGVmdCx0b3ApO1xyXG4gIH1cclxufVxyXG5cclxuIl19
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class LocalStorageService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.storageSubject = new BehaviorSubject(null);
|
|
7
|
+
}
|
|
8
|
+
// Set a string value in localStorage
|
|
9
|
+
setItem(key, value) {
|
|
10
|
+
try {
|
|
11
|
+
localStorage.setItem(key, value);
|
|
12
|
+
this.storageSubject.next({ key, value });
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
console.error('Error saving to localStorage', e);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// Get a string value from localStorage
|
|
19
|
+
getItem(key) {
|
|
20
|
+
try {
|
|
21
|
+
return localStorage.getItem(key);
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
console.error('Error reading from localStorage', e);
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Remove an item from localStorage
|
|
29
|
+
removeItem(key) {
|
|
30
|
+
try {
|
|
31
|
+
localStorage.removeItem(key);
|
|
32
|
+
this.storageSubject.next({ key, value: null });
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
console.error('Error removing from localStorage', e);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Clear all items in localStorage
|
|
39
|
+
clear() {
|
|
40
|
+
try {
|
|
41
|
+
localStorage.clear();
|
|
42
|
+
this.storageSubject.next(null);
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
console.error('Error clearing localStorage', e);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Set an object in localStorage
|
|
49
|
+
setObject(key, value) {
|
|
50
|
+
this.setItem(key, JSON.stringify(value));
|
|
51
|
+
}
|
|
52
|
+
// Get an object from localStorage
|
|
53
|
+
getObject(key) {
|
|
54
|
+
const value = this.getItem(key);
|
|
55
|
+
return value ? JSON.parse(value) : null;
|
|
56
|
+
}
|
|
57
|
+
// Watch for changes in localStorage
|
|
58
|
+
watchStorage() {
|
|
59
|
+
return this.storageSubject.asObservable();
|
|
60
|
+
}
|
|
61
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
62
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LocalStorageService, providedIn: 'root' }); }
|
|
63
|
+
}
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LocalStorageService, decorators: [{
|
|
65
|
+
type: Injectable,
|
|
66
|
+
args: [{
|
|
67
|
+
providedIn: 'root'
|
|
68
|
+
}]
|
|
69
|
+
}], ctorParameters: () => [] });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBS25ELE1BQU0sT0FBTyxtQkFBbUI7SUFJOUI7UUFGUSxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUF5QyxJQUFJLENBQUMsQ0FBQztJQUUzRSxDQUFDO0lBRWpCLHFDQUFxQztJQUNyQyxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDaEMsSUFBSSxDQUFDO1lBQ0gsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsT0FBTyxDQUFDLEdBQVc7UUFDakIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQztZQUNILFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLEtBQUs7UUFDSCxJQUFJLENBQUM7WUFDSCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBYztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxTQUFTLENBQUMsR0FBVztRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7K0dBNURVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgc3RvcmFnZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duIH0gfCBudWxsPihudWxsKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLy8gU2V0IGEgc3RyaW5nIHZhbHVlIGluIGxvY2FsU3RvcmFnZVxyXG4gIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTdWJqZWN0Lm5leHQoeyBrZXksIHZhbHVlIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgdG8gbG9jYWxTdG9yYWdlJywgZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgYSBzdHJpbmcgdmFsdWUgZnJvbSBsb2NhbFN0b3JhZ2VcclxuICBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVhZGluZyBmcm9tIGxvY2FsU3RvcmFnZScsIGUpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlbW92ZSBhbiBpdGVtIGZyb20gbG9jYWxTdG9yYWdlXHJcbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgICAgdGhpcy5zdG9yYWdlU3ViamVjdC5uZXh0KHsga2V5LCB2YWx1ZTogbnVsbCB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVtb3ZpbmcgZnJvbSBsb2NhbFN0b3JhZ2UnLCBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENsZWFyIGFsbCBpdGVtcyBpbiBsb2NhbFN0b3JhZ2VcclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTdWJqZWN0Lm5leHQobnVsbCk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNsZWFyaW5nIGxvY2FsU3RvcmFnZScsIGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU2V0IGFuIG9iamVjdCBpbiBsb2NhbFN0b3JhZ2VcclxuICBzZXRPYmplY3Qoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IGFuIG9iamVjdCBmcm9tIGxvY2FsU3RvcmFnZVxyXG4gIGdldE9iamVjdChrZXk6IHN0cmluZyk6IHVua25vd24ge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldEl0ZW0oa2V5KTtcclxuICAgIHJldHVybiB2YWx1ZSA/IEpTT04ucGFyc2UodmFsdWUpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIFdhdGNoIGZvciBjaGFuZ2VzIGluIGxvY2FsU3RvcmFnZVxyXG4gIHdhdGNoU3RvcmFnZSgpOiBPYnNlcnZhYmxlPHsga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duIH0gfCBudWxsPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class ResizeObserverService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.rectSize$ = new BehaviorSubject(undefined);
|
|
7
|
+
this.internalRectSize = new DOMRect(1, 1, 1, 1);
|
|
8
|
+
// Observable that components can subscribe to
|
|
9
|
+
this.parentAppRect$ = this.rectSize$.asObservable();
|
|
10
|
+
}
|
|
11
|
+
setSize(newValue) {
|
|
12
|
+
this.rectSize$.next(newValue);
|
|
13
|
+
this.internalRectSize = newValue;
|
|
14
|
+
console.log(`SERVICE:rect size:${newValue.width} ${newValue.height}`);
|
|
15
|
+
}
|
|
16
|
+
getParentAppRect() {
|
|
17
|
+
return this.internalRectSize;
|
|
18
|
+
}
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: ResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: ResizeObserverService, providedIn: 'root' }); }
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: ResizeObserverService, decorators: [{
|
|
23
|
+
type: Injectable,
|
|
24
|
+
args: [{
|
|
25
|
+
providedIn: 'root'
|
|
26
|
+
}]
|
|
27
|
+
}], ctorParameters: () => [] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOztBQUtuRCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDO1FBTFEsY0FBUyxHQUF5QyxJQUFJLGVBQWUsQ0FBb0IsU0FBUyxDQUFDLENBQUM7UUFDcEcscUJBQWdCLEdBQVksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsOENBQThDO1FBQ3ZDLG1CQUFjLEdBQW9DLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdkUsQ0FBQztJQUVWLE9BQU8sQ0FBQyxRQUFpQjtRQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLFFBQVEsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDOytHQWpCVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc2l6ZU9ic2VydmVyU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVjdFNpemUkOiBCZWhhdmlvclN1YmplY3Q8RE9NUmVjdCB8dW5kZWZpbmVkID4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERPTVJlY3R8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHByaXZhdGUgaW50ZXJuYWxSZWN0U2l6ZSA6RE9NUmVjdCA9IG5ldyBET01SZWN0KDEsMSwxLDEpO1xyXG4gIC8vIE9ic2VydmFibGUgdGhhdCBjb21wb25lbnRzIGNhbiBzdWJzY3JpYmUgdG9cclxuICBwdWJsaWMgcGFyZW50QXBwUmVjdCQ6IE9ic2VydmFibGU8RE9NUmVjdCB8IHVuZGVmaW5lZD4gPSB0aGlzLnJlY3RTaXplJC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgcHVibGljIHNldFNpemUobmV3VmFsdWU6IERPTVJlY3QpOiB2b2lkIHtcclxuICAgIHRoaXMucmVjdFNpemUkLm5leHQobmV3VmFsdWUpOyAgXHJcbiAgICB0aGlzLmludGVybmFsUmVjdFNpemUgPSBuZXdWYWx1ZTtcclxuICAgIGNvbnNvbGUubG9nKGBTRVJWSUNFOnJlY3Qgc2l6ZToke25ld1ZhbHVlLndpZHRofSAke25ld1ZhbHVlLmhlaWdodH1gKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQYXJlbnRBcHBSZWN0ICgpOkRPTVJlY3R7XHJcbiAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFJlY3RTaXplO1xyXG4gIH0gIFxyXG59XHJcbiJdfQ==
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -41,5 +41,6 @@ export * from './lib/components/bimplus-scrollable-container/bimplus-scrollable-
|
|
|
41
41
|
export * from './lib/components/bimplus-touch-menu/bimplus-touch-menu.component';
|
|
42
42
|
export * from './lib/components/bimplus-project-menu/bimplus-project-menu.component';
|
|
43
43
|
export * from './lib/services/language-strings.service';
|
|
44
|
+
export * from './lib/services/resize-observer.service';
|
|
44
45
|
export * from './lib/types/types';
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsb0ZBQW9GLENBQUM7QUFDbkcsY0FBYyxvRkFBb0YsQ0FBQztBQUNuRyxjQUFjLG9HQUFvRyxDQUFDO0FBQ25ILGNBQWMsb0dBQW9HLENBQUM7QUFDbkgsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLHNFQUFzRSxDQUFDO0FBQ3JGLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxnR0FBZ0csQ0FBQztBQUMvRyxjQUFjLDBHQUEwRyxDQUFDO0FBQ3pILGNBQWMsMEdBQTBHLENBQUM7QUFDekgsY0FBYyx3RUFBd0UsQ0FBQztBQUN2RixjQUFjLDhFQUE4RSxDQUFDO0FBQzdGLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDBGQUEwRixDQUFDO0FBQ3pHLGNBQWMsc0VBQXNFLENBQUM7QUFDckYsY0FBYyw4REFBOEQsQ0FBQztBQUM3RSxjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLHNFQUFzRSxDQUFDO0FBQ3JGLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyw4RUFBOEUsQ0FBQztBQUM3RixjQUFjLDhFQUE4RSxDQUFDO0FBQzdGLGNBQWMsNEVBQTRFLENBQUM7QUFDM0YsY0FBYyw0RUFBNEUsQ0FBQztBQUMzRixjQUFjLHNGQUFzRixDQUFDO0FBQ3JHLGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyxzRUFBc0UsQ0FBQztBQUNyRixjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtYmltcGx1cy1jb21wb25lbnRzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWJpbXBsdXMtY29tcG9uZW50cy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWJpbXBsdXMtY29tcG9uZW50cy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL2JpbXBsdXMtb3BhY2l0eS1wcm9wZXJ0aWVzLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ludGVyZmFjZXMvYmltcGx1cy12aXNpYmlsaXR5LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLWNvbm5lY3Rpb24tZGVzaWduZXIvYmltcGx1cy1jb25uZWN0aW9uLWRlc2lnbmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmltcGx1cy1jb25uZWN0aW9uLWRlc2lnbmVyL2JpbXBsdXMtY29ubmVjdGlvbi1kZXNpZ25lci5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtY29ubmVjdGlvbi1kZXNpZ25lci1yZXN1bHRzL2JpbXBsdXMtY29ubmVjdGlvbi1kZXNpZ25lci1yZXN1bHRzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmltcGx1cy1jb25uZWN0aW9uLWRlc2lnbmVyLXJlc3VsdHMvYmltcGx1cy1jb25uZWN0aW9uLWRlc2lnbmVyLXJlc3VsdHMuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLWNvbnRhY3QvYmltcGx1cy1jb250YWN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmltcGx1cy1mbG9hdGluZy1iYXIvYmltcGx1cy1mbG9hdGluZy1iYXIuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wcm9qZWN0LW1vZGVscy9wcm9qZWN0LW1vZGVscy5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtZmxvYXRpbmctYmFyLWhpZGUtb2JqZWN0cy9iaW1wbHVzLWZsb2F0aW5nLWJhci1oaWRlLW9iamVjdHMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLWZsb2F0aW5nLWJhci1pc29sYXRpb24tb2JqZWN0cy9iaW1wbHVzLWZsb2F0aW5nLWJhci1pc29sYXRpb24tb2JqZWN0cy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtZmxvYXRpbmctYmFyLXByb2plY3QtbmF2aWdhdG9yL2JpbXBsdXMtZmxvYXRpbmctYmFyLXByb2plY3QtbmF2aWdhdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmltcGx1cy1sYW5ndWFnZS1tZW51L2JpbXBsdXMtbGFuZ3VhZ2UtbWVudS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLW1haW4tbWVudS9iaW1wbHVzLW1haW4tbWVudS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtbmF2YmFyL2JpbXBsdXMtbmF2YmFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmltcGx1cy1uYXZiYXIvbG9nby1zdGF0ZS5lbnVtJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLW5vdGlmeS9iaW1wbHVzLW5vdGlmeS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtc2lkZW5hdi9iaW1wbHVzLXNpZGVuYXYuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLXNpZGVuYXYtZHJhd2VyLWNvbnRlbnQvYmltcGx1cy1zaWRlbmF2LWRyYXdlci1jb250ZW50LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmltcGx1cy1zdG9yYWdlLWluZm8vYmltcGx1cy1zdG9yYWdlLWluZm8uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLXRvb2wtaHViL2JpbXBsdXMtdG9vbC1odWIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLXRvb2wtaHViL2JpbXBsdXMtdG9vbC1odWIuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLXVzZXItbWVudS9iaW1wbHVzLXVzZXItbWVudS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtem9vbS9iaW1wbHVzLXpvb20uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLWZsYXQtdHJlZS9iaW1wbHVzLWZsYXQtdHJlZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtZmxhdC10cmVlL2JpbXBsdXMtZmxhdC10cmVlLmludGVyZmFjZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmltcGx1cy1jb250ZXh0LW1lbnUvYmltcGx1cy1jb250ZXh0LW1lbnUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLWNvbnRleHQtbWVudS9iaW1wbHVzLWNvbnRleHQtbWVudS5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvYWRpbmctc3Bpbm5lci9sb2FkaW5nLXNwaW5uZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IvYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtdG9vbHRpcC1tZXNzYWdlL2JpbXBsdXMtdG9vbHRpcC1tZXNzYWdlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmltcGx1cy10b29sdGlwLW1lc3NhZ2UvYmltcGx1cy10b29sdGlwLW1lc3NhZ2UuaW50ZXJmYWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLXNjcm9sbGFibGUtY29udGFpbmVyL2JpbXBsdXMtc2Nyb2xsYWJsZS1jb250YWluZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iaW1wbHVzLXRvdWNoLW1lbnUvYmltcGx1cy10b3VjaC1tZW51LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmltcGx1cy1wcm9qZWN0LW1lbnUvYmltcGx1cy1wcm9qZWN0LW1lbnUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvbGFuZ3VhZ2Utc3RyaW5ncy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90eXBlcy90eXBlcyc7XHJcbiJdfQ==
|