@mintplayer/ng-bootstrap 15.19.0 → 15.19.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/esm2020/splitter/src/element-at/element-at.pipe.mjs +1 -2
- package/esm2020/splitter/src/splitter/splitter.component.mjs +29 -7
- package/fesm2015/mintplayer-ng-bootstrap-splitter.mjs +28 -7
- package/fesm2015/mintplayer-ng-bootstrap-splitter.mjs.map +1 -1
- package/fesm2020/mintplayer-ng-bootstrap-splitter.mjs +28 -7
- package/fesm2020/mintplayer-ng-bootstrap-splitter.mjs.map +1 -1
- package/package.json +1 -1
- package/splitter/src/splitter/splitter.component.d.ts +9 -1
|
@@ -3,7 +3,6 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export class BsElementAtPipe {
|
|
4
4
|
transform(value, index) {
|
|
5
5
|
if (value) {
|
|
6
|
-
console.log('bsElementAt', { value, index });
|
|
7
6
|
return value[index];
|
|
8
7
|
}
|
|
9
8
|
else {
|
|
@@ -19,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
19
18
|
name: 'bsElementAt'
|
|
20
19
|
}]
|
|
21
20
|
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1hdC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcGxpdHRlci9zcmMvZWxlbWVudC1hdC9lbGVtZW50LWF0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxlQUFlO0lBRTFCLFNBQVMsQ0FBQyxLQUErQixFQUFFLEtBQWE7UUFDdEQsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7OzRHQVJVLGVBQWU7MEdBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUgzQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxhQUFhO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnYnNFbGVtZW50QXQnXG59KVxuZXhwb3J0IGNsYXNzIEJzRWxlbWVudEF0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55W10gfCBudWxsIHwgdW5kZWZpbmVkLCBpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWVbaW5kZXhdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxufVxuIl19
|
|
@@ -16,6 +16,7 @@ export class BsSplitterComponent {
|
|
|
16
16
|
this.panels$ = new BehaviorSubject([]);
|
|
17
17
|
this.classes = true;
|
|
18
18
|
this.isResizing$ = new BehaviorSubject(false);
|
|
19
|
+
this.touchedDivider$ = new BehaviorSubject(null);
|
|
19
20
|
this.operation = null;
|
|
20
21
|
this.directionClass$ = this.orientation$.pipe(map((orientation) => {
|
|
21
22
|
switch (orientation) {
|
|
@@ -99,13 +100,21 @@ export class BsSplitterComponent {
|
|
|
99
100
|
return this.splitPanels.map(p => 50);
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
|
-
|
|
103
|
+
startResizeMouse(ev, indexBefore, indexAfter) {
|
|
103
104
|
ev.preventDefault();
|
|
105
|
+
this.startResize(indexBefore, indexAfter, { x: ev.clientX, y: ev.clientY });
|
|
106
|
+
}
|
|
107
|
+
startResizeTouch(ev, indexBefore, indexAfter, divider) {
|
|
108
|
+
ev.preventDefault();
|
|
109
|
+
this.touchedDivider$.next(divider);
|
|
110
|
+
this.startResize(indexBefore, indexAfter, { x: ev.touches[0].clientX, y: ev.touches[0].clientY });
|
|
111
|
+
}
|
|
112
|
+
startResize(indexBefore, indexAfter, pt) {
|
|
104
113
|
const sizes = this.computeSizes();
|
|
105
114
|
this.previewSizes$.next(sizes);
|
|
106
115
|
this.operation = {
|
|
107
116
|
operation: EDragOperation.resizeSplitter,
|
|
108
|
-
startPosition:
|
|
117
|
+
startPosition: pt,
|
|
109
118
|
sizes,
|
|
110
119
|
indexBefore,
|
|
111
120
|
indexAfter,
|
|
@@ -113,6 +122,12 @@ export class BsSplitterComponent {
|
|
|
113
122
|
this.isResizing$.next(true);
|
|
114
123
|
}
|
|
115
124
|
onMouseMove(ev) {
|
|
125
|
+
this.onResizeMove({ x: ev.clientX, y: ev.clientY });
|
|
126
|
+
}
|
|
127
|
+
onTouchMove(ev) {
|
|
128
|
+
this.onResizeMove({ x: ev.touches[0].clientX, y: ev.touches[0].clientY });
|
|
129
|
+
}
|
|
130
|
+
onResizeMove(pt) {
|
|
116
131
|
if (this.operation) {
|
|
117
132
|
switch (this.operation.operation) {
|
|
118
133
|
case EDragOperation.resizeSplitter:
|
|
@@ -123,14 +138,14 @@ export class BsSplitterComponent {
|
|
|
123
138
|
if (this.operation) {
|
|
124
139
|
switch (orientation) {
|
|
125
140
|
case 'horizontal':
|
|
126
|
-
const deltaX =
|
|
141
|
+
const deltaX = pt.x - this.operation.startPosition.x;
|
|
127
142
|
const sx = Array.from(this.operation.sizes);
|
|
128
143
|
sx[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaX;
|
|
129
144
|
sx[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaX;
|
|
130
145
|
this.previewSizes$.next(sx);
|
|
131
146
|
break;
|
|
132
147
|
case 'vertical':
|
|
133
|
-
const deltaY =
|
|
148
|
+
const deltaY = pt.y - this.operation.startPosition.y;
|
|
134
149
|
const sy = Array.from(this.operation.sizes);
|
|
135
150
|
sy[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaY;
|
|
136
151
|
sy[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaY;
|
|
@@ -145,15 +160,22 @@ export class BsSplitterComponent {
|
|
|
145
160
|
}
|
|
146
161
|
}
|
|
147
162
|
onMouseUp(ev) {
|
|
163
|
+
this.onResizeUp();
|
|
164
|
+
}
|
|
165
|
+
onTouchEnd(ev) {
|
|
166
|
+
this.touchedDivider$.next(null);
|
|
167
|
+
this.onResizeUp();
|
|
168
|
+
}
|
|
169
|
+
onResizeUp() {
|
|
148
170
|
this.isResizing$.next(false);
|
|
149
171
|
this.operation = null;
|
|
150
172
|
}
|
|
151
173
|
}
|
|
152
174
|
BsSplitterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BsSplitterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
153
|
-
BsSplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: BsSplitterComponent, selector: "bs-splitter", inputs: { orientation: "orientation" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.w-100": "this.classes", "class.h-100": "this.classes", "class.d-flex": "this.classes" } }, queries: [{ propertyName: "panels", predicate: BsSplitPanelComponent }], viewQueries: [{ propertyName: "splitPanels", predicate: ["splitPanel"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" (mousedown)=\"
|
|
175
|
+
BsSplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: BsSplitterComponent, selector: "bs-splitter", inputs: { orientation: "orientation" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.w-100": "this.classes", "class.h-100": "this.classes", "class.d-flex": "this.classes" } }, queries: [{ propertyName: "panels", predicate: BsSplitPanelComponent }], viewQueries: [{ propertyName: "splitPanels", predicate: ["splitPanel"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>", styles: [".split-panel{flex-grow:1}.divider{flex-shrink:0;transition:background-color .15s ease-in-out;z-index:3}.divider:before{background-position:center center;background-repeat:no-repeat}.divider:hover:before,.divider.hover:before{background-color:#1389fd;border-radius:4px}.divider:before{content:\"\";display:block;background-color:#eee}.split-hor>.divider{width:14px;height:100%;cursor:col-resize;border-left:3px solid transparent;border-right:3px solid transparent}.split-hor>.divider:before{width:8px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)}.split-hor>.split-panel{margin-left:-3px;margin-right:-3px}.split-ver>.divider{width:100%;height:14px;cursor:row-resize;border-top:3px solid transparent;border-bottom:3px solid transparent}.split-ver>.divider:before{height:8px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)}.split-ver>.split-panel{margin-top:-3px;margin-bottom:-3px}.flex-none{flex:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i3.BsLetDirective, selector: "[bsLet]", inputs: ["bsLet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.BsElementAtPipe, name: "bsElementAt" }] });
|
|
154
176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BsSplitterComponent, decorators: [{
|
|
155
177
|
type: Component,
|
|
156
|
-
args: [{ selector: 'bs-splitter', template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" (mousedown)=\"
|
|
178
|
+
args: [{ selector: 'bs-splitter', template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>", styles: [".split-panel{flex-grow:1}.divider{flex-shrink:0;transition:background-color .15s ease-in-out;z-index:3}.divider:before{background-position:center center;background-repeat:no-repeat}.divider:hover:before,.divider.hover:before{background-color:#1389fd;border-radius:4px}.divider:before{content:\"\";display:block;background-color:#eee}.split-hor>.divider{width:14px;height:100%;cursor:col-resize;border-left:3px solid transparent;border-right:3px solid transparent}.split-hor>.divider:before{width:8px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)}.split-hor>.split-panel{margin-left:-3px;margin-right:-3px}.split-ver>.divider{width:100%;height:14px;cursor:row-resize;border-top:3px solid transparent;border-bottom:3px solid transparent}.split-ver>.divider:before{height:8px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)}.split-ver>.split-panel{margin-top:-3px;margin-bottom:-3px}.flex-none{flex:none}\n"] }]
|
|
157
179
|
}], ctorParameters: function () { return []; }, propDecorators: { orientation: [{
|
|
158
180
|
type: Input
|
|
159
181
|
}], panels: [{
|
|
@@ -178,4 +200,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
178
200
|
type: HostListener,
|
|
179
201
|
args: ['document:mouseup', ['$event']]
|
|
180
202
|
}] } });
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcGxpdHRlci9zcmMvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcGxpdHRlci9zcmMvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7OztBQVE3RSxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCO1FBcURBLHFCQUFxQjtRQUNyQixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFZLFlBQVksQ0FBQyxDQUFDO1FBTzVELFlBQVk7UUFFWixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFrQixJQUFJLENBQUMsQ0FBQztRQUUzRCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBUzNELFlBQU8sR0FBRyxJQUFJLENBQUM7UUFNZixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xELGNBQVMsR0FBeUIsSUFBSSxDQUFDO1FBaEZyQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxD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QyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLENBQUM7O2dIQTFKVSxtQkFBbUI7b0dBQW5CLG1CQUFtQiwrVUFvRWIscUJBQXFCLDJIQy9FeEMsczhCQWFNOzJGREZPLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxhQUFhOzBFQWdFSCxXQUFXO3NCQUE5QixLQUFLO2dCQVFzQyxNQUFNO3NCQUFqRCxlQUFlO3VCQUFDLHFCQUFxQjtnQkFHVixXQUFXO3NCQUF0QyxZQUFZO3VCQUFDLFlBQVk7Z0JBSzFCLE9BQU87c0JBSE4sV0FBVzt1QkFBQyxhQUFhOztzQkFDekIsV0FBVzt1QkFBQyxhQUFhOztzQkFDekIsV0FBVzt1QkFBQyxjQUFjO2dCQTRDM0IsV0FBVztzQkFEVixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlDOUMsU0FBUztzQkFEUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSG9zdEJpbmRpbmcsIFZpZXdDaGlsZHJlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERyYWdPcGVyYXRpb24sIEVEcmFnT3BlcmF0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kcmFnLW9wZXJhdGlvbic7XG5pbXBvcnQgeyBCc1NwbGl0UGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9zcGxpdC1wYW5lbC9zcGxpdC1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvZGlyZWN0aW9uLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1zcGxpdHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcGxpdHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NwbGl0dGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJzU3BsaXR0ZXJDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZGlyZWN0aW9uQ2xhc3MkID0gdGhpcy5vcmllbnRhdGlvbiQucGlwZShtYXAoKG9yaWVudGF0aW9uKSA9PiB7XG4gICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2hvcml6b250YWwnOiByZXR1cm4gJ2ZsZXgtcm93JztcbiAgICAgICAgY2FzZSAndmVydGljYWwnOiByZXR1cm4gJ2ZsZXgtY29sdW1uJztcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgdGhpcy5zcGxpdHRlckNsYXNzJCA9IHRoaXMub3JpZW50YXRpb24kLnBpcGUobWFwKChvcmllbnRhdGlvbikgPT4ge1xuICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICBjYXNlICdob3Jpem9udGFsJzogcmV0dXJuICdzcGxpdC1ob3InO1xuICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6IHJldHVybiAnc3BsaXQtdmVyJztcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgdGhpcy53aWR0aFN0eWxlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9yaWVudGF0aW9uJCwgdGhpcy5wcmV2aWV3U2l6ZXMkLCB0aGlzLnBhbmVscyRdKVxuICAgICAgLnBpcGUobWFwKChbb3JpZW50YXRpb24sIHByZXZpZXdTaXplcywgcGFuZWxzXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6XG4gICAgICAgICAgICBpZiAocHJldmlld1NpemVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbLi4uQXJyYXkocGFuZWxzLmxlbmd0aCkua2V5cygpXS5tYXAoKHYsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaSA8IHByZXZpZXdTaXplcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aWV3U2l6ZXNbaV0gKyAncHgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gJzEwMCUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gQXJyYXkocGFuZWxzLmxlbmd0aCkubWFwKCh2LCBpKSA9PiAnMTAwJScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgdGhpcy5oZWlnaHRTdHlsZXMkID0gIGNvbWJpbmVMYXRlc3QoW3RoaXMub3JpZW50YXRpb24kLCB0aGlzLnByZXZpZXdTaXplcyQsIHRoaXMucGFuZWxzJF0pXG4gICAgICAucGlwZShtYXAoKFtvcmllbnRhdGlvbiwgcHJldmlld1NpemVzLCBwYW5lbHNdKSA9PiB7XG4gICAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHtcbiAgICAgICAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICAgIGlmIChwcmV2aWV3U2l6ZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFsuLi5BcnJheShwYW5lbHMubGVuZ3RoKS5rZXlzKCldLm1hcCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpIDwgcHJldmlld1NpemVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpZXdTaXplc1tpXSArICdweCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAnMTAwJSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBBcnJheShwYW5lbHMubGVuZ3RoKS5tYXAoKHYsIGkpID0+ICcxMDAlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBPcmllbnRhdGlvblxuICBvcmllbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERpcmVjdGlvbj4oJ2hvcml6b250YWwnKTtcbiAgcHVibGljIGdldCBvcmllbnRhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBvcmllbnRhdGlvbih2YWx1ZTogRGlyZWN0aW9uKSB7XG4gICAgdGhpcy5vcmllbnRhdGlvbiQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJldmlld1NpemVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyW10gfCBudWxsPihudWxsKTtcblxuICBwYW5lbHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCc1NwbGl0UGFuZWxDb21wb25lbnRbXT4oW10pO1xuICBAQ29udGVudENoaWxkcmVuKEJzU3BsaXRQYW5lbENvbXBvbmVudCkgc2V0IHBhbmVscyh2YWx1ZTogUXVlcnlMaXN0PEJzU3BsaXRQYW5lbENvbXBvbmVudD4pIHtcbiAgICB0aGlzLnBhbmVscyQubmV4dCh2YWx1ZS50b0FycmF5KCkpO1xuICB9XG4gIEBWaWV3Q2hpbGRyZW4oJ3NwbGl0UGFuZWwnKSBzcGxpdFBhbmVscyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj47XG4gIFxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnctMTAwJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oLTEwMCcpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZC1mbGV4JylcbiAgY2xhc3NlcyA9IHRydWU7XG5cbiAgZGlyZWN0aW9uQ2xhc3MkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHNwbGl0dGVyQ2xhc3MkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHdpZHRoU3R5bGVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXSB8IG51bGw+O1xuICBoZWlnaHRTdHlsZXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdIHwgbnVsbD47XG4gIGlzUmVzaXppbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIG9wZXJhdGlvbjogRHJhZ09wZXJhdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbXB1dGVTaXplcygpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IHNpemVzID0gdGhpcy5zcGxpdFBhbmVsc1xuICAgICAgICAubWFwKChzcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHNwLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIHN3aXRjaCAodGhpcy5vcmllbnRhdGlvbikge1xuICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6IHJldHVybiBzdHlsZXMud2lkdGg7XG4gICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6IHJldHVybiBzdHlsZXMuaGVpZ2h0O1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLm1hcCgoc2l6ZSkgPT4gc2l6ZS5zbGljZSgwLCAtMikpXG4gICAgICAgIC5tYXAoKHNpemUpID0+IHBhcnNlRmxvYXQoc2l6ZSkpO1xuICAgICAgcmV0dXJuIHNpemVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zcGxpdFBhbmVscy5tYXAocCA9PiA1MCk7XG4gICAgfVxuICB9XG4gIFxuICBzdGFydFJlc2l6ZShldjogTW91c2VFdmVudCwgaW5kZXhCZWZvcmU6IG51bWJlciwgaW5kZXhBZnRlcjogbnVtYmVyKSB7XG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBzaXplcyA9IHRoaXMuY29tcHV0ZVNpemVzKCk7XG4gICAgdGhpcy5wcmV2aWV3U2l6ZXMkLm5leHQoc2l6ZXMpO1xuICAgIHRoaXMub3BlcmF0aW9uID0ge1xuICAgICAgb3BlcmF0aW9uOiBFRHJhZ09wZXJhdGlvbi5yZXNpemVTcGxpdHRlcixcbiAgICAgIHN0YXJ0UG9zaXRpb246IHsgeDogZXYuY2xpZW50WCwgeTogZXYuY2xpZW50WSB9LFxuICAgICAgc2l6ZXMsXG4gICAgICBpbmRleEJlZm9yZSxcbiAgICAgIGluZGV4QWZ0ZXIsXG4gICAgfTtcblxuICAgIHRoaXMuaXNSZXNpemluZyQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VNb3ZlKGV2OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMub3BlcmF0aW9uLm9wZXJhdGlvbikge1xuICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLnJlc2l6ZVNwbGl0dGVyOiB7XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5vcmllbnRhdGlvbiRdKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtvcmllbnRhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IGV2LmNsaWVudFggLSB0aGlzLm9wZXJhdGlvbi5zdGFydFBvc2l0aW9uLng7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN4ID0gQXJyYXkuZnJvbSh0aGlzLm9wZXJhdGlvbi5zaXplcyk7XG4gICAgICAgICAgICAgICAgICAgIHN4W3RoaXMub3BlcmF0aW9uLmluZGV4QmVmb3JlXSA9IHRoaXMub3BlcmF0aW9uLnNpemVzW3RoaXMub3BlcmF0aW9uLmluZGV4QmVmb3JlXSArIGRlbHRhWDtcbiAgICAgICAgICAgICAgICAgICAgc3hbdGhpcy5vcGVyYXRpb24uaW5kZXhBZnRlcl0gPSB0aGlzLm9wZXJhdGlvbi5zaXplc1t0aGlzLm9wZXJhdGlvbi5pbmRleEFmdGVyXSAtIGRlbHRhWDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3U2l6ZXMkLm5leHQoc3gpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsdGFZID0gZXYuY2xpZW50WSAtIHRoaXMub3BlcmF0aW9uLnN0YXJ0UG9zaXRpb24ueTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3kgPSBBcnJheS5mcm9tKHRoaXMub3BlcmF0aW9uLnNpemVzKTtcbiAgICAgICAgICAgICAgICAgICAgc3lbdGhpcy5vcGVyYXRpb24uaW5kZXhCZWZvcmVdID0gdGhpcy5vcGVyYXRpb24uc2l6ZXNbdGhpcy5vcGVyYXRpb24uaW5kZXhCZWZvcmVdICsgZGVsdGFZO1xuICAgICAgICAgICAgICAgICAgICBzeVt0aGlzLm9wZXJhdGlvbi5pbmRleEFmdGVyXSA9IHRoaXMub3BlcmF0aW9uLnNpemVzW3RoaXMub3BlcmF0aW9uLmluZGV4QWZ0ZXJdIC0gZGVsdGFZO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdTaXplcyQubmV4dChzeSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VVcChldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMuaXNSZXNpemluZyQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5vcGVyYXRpb24gPSBudWxsO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IHctMTAwXCIgW2NsYXNzXT1cIltkaXJlY3Rpb25DbGFzcyQgfCBhc3luYywgc3BsaXR0ZXJDbGFzcyQgfCBhc3luY11cIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFuZWwgb2YgKHBhbmVscyQgfCBhc3luYyk7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqYnNMZXQ9XCIod2lkdGhTdHlsZXMkIHwgYXN5bmMpIGFzIHdpZHRoU3R5bGVzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpic0xldD1cIihoZWlnaHRTdHlsZXMkIHwgYXN5bmMpIGFzIGhlaWdodFN0eWxlc1wiPlxuICAgICAgICAgICAgICAgIDwhLS0gIFtzdHlsZS53aWR0aC4lXT1cIjEwMFwiIFtzdHlsZS5oZWlnaHQuJV09XCIxMDBcIiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BsaXQtcGFuZWwgb3ZlcmZsb3ctaGlkZGVuXCIgW2NsYXNzLmZsZXgtbm9uZV09XCJpc1Jlc2l6aW5nJCB8IGFzeW5jXCIgI3NwbGl0UGFuZWwgW3N0eWxlLndpZHRoXT1cIndpZHRoU3R5bGVzIHwgYnNFbGVtZW50QXQ6aW5kZXhcIiBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFN0eWxlcyB8IGJzRWxlbWVudEF0OmluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInBhbmVsLnBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCIgKG1vdXNlZG93bik9XCJzdGFydFJlc2l6ZSgkZXZlbnQsIGluZGV4LCBpbmRleCArIDEpXCIgKm5nSWY9XCIhbGFzdFwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcGxpdHRlci9zcmMvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zcGxpdHRlci9zcmMvc3BsaXR0ZXIvc3BsaXR0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7OztBQVE3RSxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCO1FBcURBLHFCQUFxQjtRQUNyQixpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFZLFlBQVksQ0FBQyxDQUFDO1FBTzVELFlBQVk7UUFFWixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFrQixJQUFJLENBQUMsQ0FBQztRQUUzRCxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBUzNELFlBQU8sR0FBRyxJQUFJLENBQUM7UUFNZixnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQXdCLElBQUksQ0FBQyxDQUFDO1FBQ25FLGNBQVMsR0FBeUIsSUFBSSxDQUFDO1FBakZy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aEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQzs7Z0hBdExVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLCtVQW9FYixxQkFBcUIsMkhDaEZ4Qyx1cENBYU07MkZERE8sbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWE7MEVBZ0VILFdBQVc7c0JBQTlCLEtBQUs7Z0JBUXNDLE1BQU07c0JBQWpELGVBQWU7dUJBQUMscUJBQXFCO2dCQUdWLFdBQVc7c0JBQXRDLFlBQVk7dUJBQUMsWUFBWTtnQkFLMUIsT0FBTztzQkFITixXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixXQUFXO3VCQUFDLGFBQWE7O3NCQUN6QixXQUFXO3VCQUFDLGNBQWM7Z0JBdUQzQixXQUFXO3NCQURWLFlBQVk7dUJBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBeUM5QyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBIb3N0QmluZGluZywgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRHJhZ09wZXJhdGlvbiwgRURyYWdPcGVyYXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RyYWctb3BlcmF0aW9uJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBCc1NwbGl0UGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi9zcGxpdC1wYW5lbC9zcGxpdC1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvZGlyZWN0aW9uLnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdicy1zcGxpdHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zcGxpdHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NwbGl0dGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEJzU3BsaXR0ZXJDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZGlyZWN0aW9uQ2xhc3MkID0gdGhpcy5vcmllbnRhdGlvbiQucGlwZShtYXAoKG9yaWVudGF0aW9uKSA9PiB7XG4gICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ2hvcml6b250YWwnOiByZXR1cm4gJ2ZsZXgtcm93JztcbiAgICAgICAgY2FzZSAndmVydGljYWwnOiByZXR1cm4gJ2ZsZXgtY29sdW1uJztcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgdGhpcy5zcGxpdHRlckNsYXNzJCA9IHRoaXMub3JpZW50YXRpb24kLnBpcGUobWFwKChvcmllbnRhdGlvbikgPT4ge1xuICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICBjYXNlICdob3Jpem9udGFsJzogcmV0dXJuICdzcGxpdC1ob3InO1xuICAgICAgICBjYXNlICd2ZXJ0aWNhbCc6IHJldHVybiAnc3BsaXQtdmVyJztcbiAgICAgIH1cbiAgICB9KSk7XG4gICAgdGhpcy53aWR0aFN0eWxlcyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLm9yaWVudGF0aW9uJCwgdGhpcy5wcmV2aWV3U2l6ZXMkLCB0aGlzLnBhbmVscyRdKVxuICAgICAgLnBpcGUobWFwKChbb3JpZW50YXRpb24sIHByZXZpZXdTaXplcywgcGFuZWxzXSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6XG4gICAgICAgICAgICBpZiAocHJldmlld1NpemVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBbLi4uQXJyYXkocGFuZWxzLmxlbmd0aCkua2V5cygpXS5tYXAoKHYsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaSA8IHByZXZpZXdTaXplcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aWV3U2l6ZXNbaV0gKyAncHgnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gJzEwMCUnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gQXJyYXkocGFuZWxzLmxlbmd0aCkubWFwKCh2LCBpKSA9PiAnMTAwJScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgdGhpcy5oZWlnaHRTdHlsZXMkID0gIGNvbWJpbmVMYXRlc3QoW3RoaXMub3JpZW50YXRpb24kLCB0aGlzLnByZXZpZXdTaXplcyQsIHRoaXMucGFuZWxzJF0pXG4gICAgICAucGlwZShtYXAoKFtvcmllbnRhdGlvbiwgcHJldmlld1NpemVzLCBwYW5lbHNdKSA9PiB7XG4gICAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHtcbiAgICAgICAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICAgIGlmIChwcmV2aWV3U2l6ZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFsuLi5BcnJheShwYW5lbHMubGVuZ3RoKS5rZXlzKCldLm1hcCgodiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpIDwgcHJldmlld1NpemVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpZXdTaXplc1tpXSArICdweCc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAnMTAwJSc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBBcnJheShwYW5lbHMubGVuZ3RoKS5tYXAoKHYsIGkpID0+ICcxMDAlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBPcmllbnRhdGlvblxuICBvcmllbnRhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERpcmVjdGlvbj4oJ2hvcml6b250YWwnKTtcbiAgcHVibGljIGdldCBvcmllbnRhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiQudmFsdWU7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBvcmllbnRhdGlvbih2YWx1ZTogRGlyZWN0aW9uKSB7XG4gICAgdGhpcy5vcmllbnRhdGlvbiQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJldmlld1NpemVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyW10gfCBudWxsPihudWxsKTtcblxuICBwYW5lbHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCc1NwbGl0UGFuZWxDb21wb25lbnRbXT4oW10pO1xuICBAQ29udGVudENoaWxkcmVuKEJzU3BsaXRQYW5lbENvbXBvbmVudCkgc2V0IHBhbmVscyh2YWx1ZTogUXVlcnlMaXN0PEJzU3BsaXRQYW5lbENvbXBvbmVudD4pIHtcbiAgICB0aGlzLnBhbmVscyQubmV4dCh2YWx1ZS50b0FycmF5KCkpO1xuICB9XG4gIEBWaWV3Q2hpbGRyZW4oJ3NwbGl0UGFuZWwnKSBzcGxpdFBhbmVscyE6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj47XG4gIFxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnctMTAwJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oLTEwMCcpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZC1mbGV4JylcbiAgY2xhc3NlcyA9IHRydWU7XG5cbiAgZGlyZWN0aW9uQ2xhc3MkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHNwbGl0dGVyQ2xhc3MkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHdpZHRoU3R5bGVzJDogT2JzZXJ2YWJsZTxzdHJpbmdbXSB8IG51bGw+O1xuICBoZWlnaHRTdHlsZXMkOiBPYnNlcnZhYmxlPHN0cmluZ1tdIHwgbnVsbD47XG4gIGlzUmVzaXppbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHRvdWNoZWREaXZpZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgb3BlcmF0aW9uOiBEcmFnT3BlcmF0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgY29tcHV0ZVNpemVzKCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3Qgc2l6ZXMgPSB0aGlzLnNwbGl0UGFuZWxzXG4gICAgICAgIC5tYXAoKHNwKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoc3AubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgc3dpdGNoICh0aGlzLm9yaWVudGF0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdob3Jpem9udGFsJzogcmV0dXJuIHN0eWxlcy53aWR0aDtcbiAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzogcmV0dXJuIHN0eWxlcy5oZWlnaHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAubWFwKChzaXplKSA9PiBzaXplLnNsaWNlKDAsIC0yKSlcbiAgICAgICAgLm1hcCgoc2l6ZSkgPT4gcGFyc2VGbG9hdChzaXplKSk7XG4gICAgICByZXR1cm4gc2l6ZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNwbGl0UGFuZWxzLm1hcChwID0+IDUwKTtcbiAgICB9XG4gIH1cbiAgXG4gIHN0YXJ0UmVzaXplTW91c2UoZXY6IE1vdXNlRXZlbnQsIGluZGV4QmVmb3JlOiBudW1iZXIsIGluZGV4QWZ0ZXI6IG51bWJlcikge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5zdGFydFJlc2l6ZShpbmRleEJlZm9yZSwgaW5kZXhBZnRlciwgeyB4OiBldi5jbGllbnRYLCB5OiBldi5jbGllbnRZIH0pO1xuICB9XG5cbiAgc3RhcnRSZXNpemVUb3VjaChldjogVG91Y2hFdmVudCwgaW5kZXhCZWZvcmU6IG51bWJlciwgaW5kZXhBZnRlcjogbnVtYmVyLCBkaXZpZGVyOiBIVE1MRGl2RWxlbWVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy50b3VjaGVkRGl2aWRlciQubmV4dChkaXZpZGVyKTtcbiAgICB0aGlzLnN0YXJ0UmVzaXplKGluZGV4QmVmb3JlLCBpbmRleEFmdGVyLCB7IHg6IGV2LnRvdWNoZXNbMF0uY2xpZW50WCwgeTogZXYudG91Y2hlc1swXS5jbGllbnRZIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFJlc2l6ZShpbmRleEJlZm9yZTogbnVtYmVyLCBpbmRleEFmdGVyOiBudW1iZXIsIHB0OiBQb2ludCkge1xuICAgIGNvbnN0IHNpemVzID0gdGhpcy5jb21wdXRlU2l6ZXMoKTtcbiAgICB0aGlzLnByZXZpZXdTaXplcyQubmV4dChzaXplcyk7XG4gICAgdGhpcy5vcGVyYXRpb24gPSB7XG4gICAgICBvcGVyYXRpb246IEVEcmFnT3BlcmF0aW9uLnJlc2l6ZVNwbGl0dGVyLFxuICAgICAgc3RhcnRQb3NpdGlvbjogcHQsXG4gICAgICBzaXplcyxcbiAgICAgIGluZGV4QmVmb3JlLFxuICAgICAgaW5kZXhBZnRlcixcbiAgICB9O1xuXG4gICAgdGhpcy5pc1Jlc2l6aW5nJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZU1vdmUoZXY6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLm9uUmVzaXplTW92ZSh7IHg6IGV2LmNsaWVudFgsIHk6IGV2LmNsaWVudFkgfSk7XG4gIH1cblxuICBvblRvdWNoTW92ZShldjogVG91Y2hFdmVudCkge1xuICAgIHRoaXMub25SZXNpemVNb3ZlKHsgeDogZXYudG91Y2hlc1swXS5jbGllbnRYLCB5OiBldi50b3VjaGVzWzBdLmNsaWVudFkgfSk7XG4gIH1cblxuICBvblJlc2l6ZU1vdmUocHQ6IFBvaW50KSB7XG4gICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMub3BlcmF0aW9uLm9wZXJhdGlvbikge1xuICAgICAgICBjYXNlIEVEcmFnT3BlcmF0aW9uLnJlc2l6ZVNwbGl0dGVyOiB7XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5vcmllbnRhdGlvbiRdKVxuICAgICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtvcmllbnRhdGlvbl0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMub3BlcmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikge1xuICAgICAgICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbCc6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IHB0LnggLSB0aGlzLm9wZXJhdGlvbi5zdGFydFBvc2l0aW9uLng7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN4ID0gQXJyYXkuZnJvbSh0aGlzLm9wZXJhdGlvbi5zaXplcyk7XG4gICAgICAgICAgICAgICAgICAgIHN4W3RoaXMub3BlcmF0aW9uLmluZGV4QmVmb3JlXSA9IHRoaXMub3BlcmF0aW9uLnNpemVzW3RoaXMub3BlcmF0aW9uLmluZGV4QmVmb3JlXSArIGRlbHRhWDtcbiAgICAgICAgICAgICAgICAgICAgc3hbdGhpcy5vcGVyYXRpb24uaW5kZXhBZnRlcl0gPSB0aGlzLm9wZXJhdGlvbi5zaXplc1t0aGlzLm9wZXJhdGlvbi5pbmRleEFmdGVyXSAtIGRlbHRhWDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3U2l6ZXMkLm5leHQoc3gpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsJzpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVsdGFZID0gcHQueSAtIHRoaXMub3BlcmF0aW9uLnN0YXJ0UG9zaXRpb24ueTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3kgPSBBcnJheS5mcm9tKHRoaXMub3BlcmF0aW9uLnNpemVzKTtcbiAgICAgICAgICAgICAgICAgICAgc3lbdGhpcy5vcGVyYXRpb24uaW5kZXhCZWZvcmVdID0gdGhpcy5vcGVyYXRpb24uc2l6ZXNbdGhpcy5vcGVyYXRpb24uaW5kZXhCZWZvcmVdICsgZGVsdGFZO1xuICAgICAgICAgICAgICAgICAgICBzeVt0aGlzLm9wZXJhdGlvbi5pbmRleEFmdGVyXSA9IHRoaXMub3BlcmF0aW9uLnNpemVzW3RoaXMub3BlcmF0aW9uLmluZGV4QWZ0ZXJdIC0gZGVsdGFZO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdTaXplcyQubmV4dChzeSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXG4gIG9uTW91c2VVcChldjogTW91c2VFdmVudCkge1xuICAgIHRoaXMub25SZXNpemVVcCgpO1xuICB9XG5cbiAgb25Ub3VjaEVuZChldjogVG91Y2hFdmVudCkge1xuICAgIHRoaXMudG91Y2hlZERpdmlkZXIkLm5leHQobnVsbCk7XG4gICAgdGhpcy5vblJlc2l6ZVVwKCk7XG4gIH1cblxuICBvblJlc2l6ZVVwKCkge1xuICAgIHRoaXMuaXNSZXNpemluZyQubmV4dChmYWxzZSk7XG4gICAgdGhpcy5vcGVyYXRpb24gPSBudWxsO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1mbGV4IHctMTAwXCIgW2NsYXNzXT1cIltkaXJlY3Rpb25DbGFzcyQgfCBhc3luYywgc3BsaXR0ZXJDbGFzcyQgfCBhc3luY11cIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFuZWwgb2YgKHBhbmVscyQgfCBhc3luYyk7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqYnNMZXQ9XCIod2lkdGhTdHlsZXMkIHwgYXN5bmMpIGFzIHdpZHRoU3R5bGVzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpic0xldD1cIihoZWlnaHRTdHlsZXMkIHwgYXN5bmMpIGFzIGhlaWdodFN0eWxlc1wiPlxuICAgICAgICAgICAgICAgIDwhLS0gIFtzdHlsZS53aWR0aC4lXT1cIjEwMFwiIFtzdHlsZS5oZWlnaHQuJV09XCIxMDBcIiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BsaXQtcGFuZWwgb3ZlcmZsb3ctaGlkZGVuXCIgW2NsYXNzLmZsZXgtbm9uZV09XCJpc1Jlc2l6aW5nJCB8IGFzeW5jXCIgI3NwbGl0UGFuZWwgW3N0eWxlLndpZHRoXT1cIndpZHRoU3R5bGVzIHwgYnNFbGVtZW50QXQ6aW5kZXhcIiBbc3R5bGUuaGVpZ2h0XT1cImhlaWdodFN0eWxlcyB8IGJzRWxlbWVudEF0OmluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY2RrUG9ydGFsT3V0bGV0XT1cInBhbmVsLnBvcnRhbFwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCIgW2NsYXNzLmhvdmVyXT1cIih0b3VjaGVkRGl2aWRlciQgfCBhc3luYykgPT09IGRpdmlkZXJcIiAjZGl2aWRlciAobW91c2Vkb3duKT1cInN0YXJ0UmVzaXplTW91c2UoJGV2ZW50LCBpbmRleCwgaW5kZXggKyAxKVwiICh0b3VjaHN0YXJ0KT1cInN0YXJ0UmVzaXplVG91Y2goJGV2ZW50LCBpbmRleCwgaW5kZXggKyAxLCBkaXZpZGVyKVwiICh0b3VjaG1vdmUpPVwib25Ub3VjaE1vdmUoJGV2ZW50KVwiICh0b3VjaGVuZCk9XCJvblRvdWNoRW5kKCRldmVudClcIiAqbmdJZj1cIiFsYXN0XCI+PC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj4iXX0=
|
|
@@ -32,7 +32,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
32
32
|
class BsElementAtPipe {
|
|
33
33
|
transform(value, index) {
|
|
34
34
|
if (value) {
|
|
35
|
-
console.log('bsElementAt', { value, index });
|
|
36
35
|
return value[index];
|
|
37
36
|
}
|
|
38
37
|
else {
|
|
@@ -58,6 +57,7 @@ class BsSplitterComponent {
|
|
|
58
57
|
this.panels$ = new BehaviorSubject([]);
|
|
59
58
|
this.classes = true;
|
|
60
59
|
this.isResizing$ = new BehaviorSubject(false);
|
|
60
|
+
this.touchedDivider$ = new BehaviorSubject(null);
|
|
61
61
|
this.operation = null;
|
|
62
62
|
this.directionClass$ = this.orientation$.pipe(map((orientation) => {
|
|
63
63
|
switch (orientation) {
|
|
@@ -141,13 +141,21 @@ class BsSplitterComponent {
|
|
|
141
141
|
return this.splitPanels.map(p => 50);
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
|
-
|
|
144
|
+
startResizeMouse(ev, indexBefore, indexAfter) {
|
|
145
145
|
ev.preventDefault();
|
|
146
|
+
this.startResize(indexBefore, indexAfter, { x: ev.clientX, y: ev.clientY });
|
|
147
|
+
}
|
|
148
|
+
startResizeTouch(ev, indexBefore, indexAfter, divider) {
|
|
149
|
+
ev.preventDefault();
|
|
150
|
+
this.touchedDivider$.next(divider);
|
|
151
|
+
this.startResize(indexBefore, indexAfter, { x: ev.touches[0].clientX, y: ev.touches[0].clientY });
|
|
152
|
+
}
|
|
153
|
+
startResize(indexBefore, indexAfter, pt) {
|
|
146
154
|
const sizes = this.computeSizes();
|
|
147
155
|
this.previewSizes$.next(sizes);
|
|
148
156
|
this.operation = {
|
|
149
157
|
operation: EDragOperation.resizeSplitter,
|
|
150
|
-
startPosition:
|
|
158
|
+
startPosition: pt,
|
|
151
159
|
sizes,
|
|
152
160
|
indexBefore,
|
|
153
161
|
indexAfter,
|
|
@@ -155,6 +163,12 @@ class BsSplitterComponent {
|
|
|
155
163
|
this.isResizing$.next(true);
|
|
156
164
|
}
|
|
157
165
|
onMouseMove(ev) {
|
|
166
|
+
this.onResizeMove({ x: ev.clientX, y: ev.clientY });
|
|
167
|
+
}
|
|
168
|
+
onTouchMove(ev) {
|
|
169
|
+
this.onResizeMove({ x: ev.touches[0].clientX, y: ev.touches[0].clientY });
|
|
170
|
+
}
|
|
171
|
+
onResizeMove(pt) {
|
|
158
172
|
if (this.operation) {
|
|
159
173
|
switch (this.operation.operation) {
|
|
160
174
|
case EDragOperation.resizeSplitter:
|
|
@@ -165,14 +179,14 @@ class BsSplitterComponent {
|
|
|
165
179
|
if (this.operation) {
|
|
166
180
|
switch (orientation) {
|
|
167
181
|
case 'horizontal':
|
|
168
|
-
const deltaX =
|
|
182
|
+
const deltaX = pt.x - this.operation.startPosition.x;
|
|
169
183
|
const sx = Array.from(this.operation.sizes);
|
|
170
184
|
sx[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaX;
|
|
171
185
|
sx[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaX;
|
|
172
186
|
this.previewSizes$.next(sx);
|
|
173
187
|
break;
|
|
174
188
|
case 'vertical':
|
|
175
|
-
const deltaY =
|
|
189
|
+
const deltaY = pt.y - this.operation.startPosition.y;
|
|
176
190
|
const sy = Array.from(this.operation.sizes);
|
|
177
191
|
sy[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaY;
|
|
178
192
|
sy[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaY;
|
|
@@ -187,15 +201,22 @@ class BsSplitterComponent {
|
|
|
187
201
|
}
|
|
188
202
|
}
|
|
189
203
|
onMouseUp(ev) {
|
|
204
|
+
this.onResizeUp();
|
|
205
|
+
}
|
|
206
|
+
onTouchEnd(ev) {
|
|
207
|
+
this.touchedDivider$.next(null);
|
|
208
|
+
this.onResizeUp();
|
|
209
|
+
}
|
|
210
|
+
onResizeUp() {
|
|
190
211
|
this.isResizing$.next(false);
|
|
191
212
|
this.operation = null;
|
|
192
213
|
}
|
|
193
214
|
}
|
|
194
215
|
BsSplitterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BsSplitterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
195
|
-
BsSplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: BsSplitterComponent, selector: "bs-splitter", inputs: { orientation: "orientation" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.w-100": "this.classes", "class.h-100": "this.classes", "class.d-flex": "this.classes" } }, queries: [{ propertyName: "panels", predicate: BsSplitPanelComponent }], viewQueries: [{ propertyName: "splitPanels", predicate: ["splitPanel"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" (mousedown)=\"
|
|
216
|
+
BsSplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: BsSplitterComponent, selector: "bs-splitter", inputs: { orientation: "orientation" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.w-100": "this.classes", "class.h-100": "this.classes", "class.d-flex": "this.classes" } }, queries: [{ propertyName: "panels", predicate: BsSplitPanelComponent }], viewQueries: [{ propertyName: "splitPanels", predicate: ["splitPanel"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>", styles: [".split-panel{flex-grow:1}.divider{flex-shrink:0;transition:background-color .15s ease-in-out;z-index:3}.divider:before{background-position:center center;background-repeat:no-repeat}.divider:hover:before,.divider.hover:before{background-color:#1389fd;border-radius:4px}.divider:before{content:\"\";display:block;background-color:#eee}.split-hor>.divider{width:14px;height:100%;cursor:col-resize;border-left:3px solid transparent;border-right:3px solid transparent}.split-hor>.divider:before{width:8px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)}.split-hor>.split-panel{margin-left:-3px;margin-right:-3px}.split-ver>.divider{width:100%;height:14px;cursor:row-resize;border-top:3px solid transparent;border-bottom:3px solid transparent}.split-ver>.divider:before{height:8px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)}.split-ver>.split-panel{margin-top:-3px;margin-bottom:-3px}.flex-none{flex:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i3.BsLetDirective, selector: "[bsLet]", inputs: ["bsLet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: BsElementAtPipe, name: "bsElementAt" }] });
|
|
196
217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BsSplitterComponent, decorators: [{
|
|
197
218
|
type: Component,
|
|
198
|
-
args: [{ selector: 'bs-splitter', template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" (mousedown)=\"
|
|
219
|
+
args: [{ selector: 'bs-splitter', template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>", styles: [".split-panel{flex-grow:1}.divider{flex-shrink:0;transition:background-color .15s ease-in-out;z-index:3}.divider:before{background-position:center center;background-repeat:no-repeat}.divider:hover:before,.divider.hover:before{background-color:#1389fd;border-radius:4px}.divider:before{content:\"\";display:block;background-color:#eee}.split-hor>.divider{width:14px;height:100%;cursor:col-resize;border-left:3px solid transparent;border-right:3px solid transparent}.split-hor>.divider:before{width:8px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)}.split-hor>.split-panel{margin-left:-3px;margin-right:-3px}.split-ver>.divider{width:100%;height:14px;cursor:row-resize;border-top:3px solid transparent;border-bottom:3px solid transparent}.split-ver>.divider:before{height:8px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)}.split-ver>.split-panel{margin-top:-3px;margin-bottom:-3px}.flex-none{flex:none}\n"] }]
|
|
199
220
|
}], ctorParameters: function () { return []; }, propDecorators: { orientation: [{
|
|
200
221
|
type: Input
|
|
201
222
|
}], panels: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mintplayer-ng-bootstrap-splitter.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/splitter/src/interfaces/drag-operation.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/split-panel/split-panel.component.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/split-panel/split-panel.component.html","../../../../libs/mintplayer-ng-bootstrap/splitter/src/element-at/element-at.pipe.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter/splitter.component.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter/splitter.component.html","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter.module.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/mintplayer-ng-bootstrap-splitter.ts"],"sourcesContent":["import { Point } from \"./point\";\n\nexport interface DragOperation {\n operation: EDragOperation;\n startPosition: Point;\n sizes: number[];\n indexBefore: number;\n indexAfter: number;\n}\n\nexport enum EDragOperation {\n none,\n resizeSplitter,\n}","import { DomPortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, ViewChild, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'bs-split-panel',\n templateUrl: './split-panel.component.html',\n styleUrls: ['./split-panel.component.scss'],\n})\nexport class BsSplitPanelComponent implements AfterViewInit {\n constructor(private element: ElementRef) {}\n\n portal?: DomPortal;\n\n ngAfterViewInit() {\n setTimeout(() => this.portal = new DomPortal(this.element.nativeElement), 10);\n }\n}\n","<div class=\"w-100 h-100\">\n <ng-content></ng-content>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'bsElementAt'\n})\nexport class BsElementAtPipe implements PipeTransform {\n\n transform(value: any[] | null | undefined, index: number) {\n if (value) {\n console.log('bsElementAt', {value, index});\n return value[index];\n } else {\n return null;\n }\n }\n\n}\n","import { Component, Input, ContentChildren, QueryList, ElementRef, HostListener, HostBinding, ViewChildren } from '@angular/core';\nimport { BehaviorSubject, map, combineLatest, Observable, take } from 'rxjs';\nimport { DragOperation, EDragOperation } from '../interfaces/drag-operation';\nimport { BsSplitPanelComponent } from '../split-panel/split-panel.component';\nimport { Direction } from '../types/direction.type';\n\n@Component({\n selector: 'bs-splitter',\n templateUrl: './splitter.component.html',\n styleUrls: ['./splitter.component.scss'],\n})\nexport class BsSplitterComponent {\n\n constructor() {\n this.directionClass$ = this.orientation$.pipe(map((orientation) => {\n switch (orientation) {\n case 'horizontal': return 'flex-row';\n case 'vertical': return 'flex-column';\n }\n }));\n this.splitterClass$ = this.orientation$.pipe(map((orientation) => {\n switch (orientation) {\n case 'horizontal': return 'split-hor';\n case 'vertical': return 'split-ver';\n }\n }));\n this.widthStyles$ = combineLatest([this.orientation$, this.previewSizes$, this.panels$])\n .pipe(map(([orientation, previewSizes, panels]) => {\n switch (orientation) {\n case 'horizontal':\n if (previewSizes) {\n return [...Array(panels.length).keys()].map((v, i) => {\n if (i < previewSizes.length) {\n return previewSizes[i] + 'px';\n } else {\n return '100%';\n }\n });\n } else {\n return Array(panels.length).map((v, i) => '100%');\n }\n case 'vertical':\n return null;\n }\n }));\n this.heightStyles$ = combineLatest([this.orientation$, this.previewSizes$, this.panels$])\n .pipe(map(([orientation, previewSizes, panels]) => {\n switch (orientation) {\n case 'horizontal':\n return null;\n case 'vertical':\n if (previewSizes) {\n return [...Array(panels.length).keys()].map((v, i) => {\n if (i < previewSizes.length) {\n return previewSizes[i] + 'px';\n } else {\n return '100%';\n }\n });\n } else {\n return Array(panels.length).map((v, i) => '100%');\n }\n }\n }));\n }\n\n //#region Orientation\n orientation$ = new BehaviorSubject<Direction>('horizontal');\n public get orientation() {\n return this.orientation$.value;\n }\n @Input() public set orientation(value: Direction) {\n this.orientation$.next(value);\n }\n //#endregion\n\n previewSizes$ = new BehaviorSubject<number[] | null>(null);\n\n panels$ = new BehaviorSubject<BsSplitPanelComponent[]>([]);\n @ContentChildren(BsSplitPanelComponent) set panels(value: QueryList<BsSplitPanelComponent>) {\n this.panels$.next(value.toArray());\n }\n @ViewChildren('splitPanel') splitPanels!: QueryList<ElementRef<HTMLDivElement>>;\n \n @HostBinding('class.w-100')\n @HostBinding('class.h-100')\n @HostBinding('class.d-flex')\n classes = true;\n\n directionClass$: Observable<string>;\n splitterClass$: Observable<string>;\n widthStyles$: Observable<string[] | null>;\n heightStyles$: Observable<string[] | null>;\n isResizing$ = new BehaviorSubject<boolean>(false);\n operation: DragOperation | null = null;\n\n computeSizes() {\n if (typeof window !== 'undefined') {\n const sizes = this.splitPanels\n .map((sp) => {\n const styles = window.getComputedStyle(sp.nativeElement);\n switch (this.orientation) {\n case 'horizontal': return styles.width;\n case 'vertical': return styles.height;\n }\n })\n .map((size) => size.slice(0, -2))\n .map((size) => parseFloat(size));\n return sizes;\n } else {\n return this.splitPanels.map(p => 50);\n }\n }\n \n startResize(ev: MouseEvent, indexBefore: number, indexAfter: number) {\n ev.preventDefault();\n const sizes = this.computeSizes();\n this.previewSizes$.next(sizes);\n this.operation = {\n operation: EDragOperation.resizeSplitter,\n startPosition: { x: ev.clientX, y: ev.clientY },\n sizes,\n indexBefore,\n indexAfter,\n };\n\n this.isResizing$.next(true);\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMouseMove(ev: MouseEvent) {\n if (this.operation) {\n switch (this.operation.operation) {\n case EDragOperation.resizeSplitter: {\n combineLatest([this.orientation$])\n .pipe(take(1))\n .subscribe(([orientation]) => {\n if (this.operation) {\n switch (orientation) {\n case 'horizontal':\n const deltaX = ev.clientX - this.operation.startPosition.x;\n const sx = Array.from(this.operation.sizes);\n sx[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaX;\n sx[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaX;\n this.previewSizes$.next(sx);\n break;\n case 'vertical':\n const deltaY = ev.clientY - this.operation.startPosition.y;\n const sy = Array.from(this.operation.sizes);\n sy[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaY;\n sy[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaY;\n this.previewSizes$.next(sy);\n break;\n }\n }\n })\n } break;\n }\n }\n }\n\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(ev: MouseEvent) {\n this.isResizing$.next(false);\n this.operation = null;\n }\n}\n","<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" (mousedown)=\"startResize($event, index, index + 1)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { BsLetModule } from '@mintplayer/ng-bootstrap/let';\nimport { BsSplitterComponent } from './splitter/splitter.component';\nimport { BsSplitPanelComponent } from './split-panel/split-panel.component';\nimport { BsElementAtPipe } from './element-at/element-at.pipe';\n\n@NgModule({\n declarations: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe],\n imports: [CommonModule, PortalModule, BsLetModule],\n exports: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe],\n})\nexport class BsSplitterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.BsElementAtPipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mintplayer-ng-bootstrap-splitter.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/splitter/src/interfaces/drag-operation.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/split-panel/split-panel.component.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/split-panel/split-panel.component.html","../../../../libs/mintplayer-ng-bootstrap/splitter/src/element-at/element-at.pipe.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter/splitter.component.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter/splitter.component.html","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter.module.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/mintplayer-ng-bootstrap-splitter.ts"],"sourcesContent":["import { Point } from \"./point\";\n\nexport interface DragOperation {\n operation: EDragOperation;\n startPosition: Point;\n sizes: number[];\n indexBefore: number;\n indexAfter: number;\n}\n\nexport enum EDragOperation {\n none,\n resizeSplitter,\n}","import { DomPortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, ViewChild, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'bs-split-panel',\n templateUrl: './split-panel.component.html',\n styleUrls: ['./split-panel.component.scss'],\n})\nexport class BsSplitPanelComponent implements AfterViewInit {\n constructor(private element: ElementRef) {}\n\n portal?: DomPortal;\n\n ngAfterViewInit() {\n setTimeout(() => this.portal = new DomPortal(this.element.nativeElement), 10);\n }\n}\n","<div class=\"w-100 h-100\">\n <ng-content></ng-content>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'bsElementAt'\n})\nexport class BsElementAtPipe implements PipeTransform {\n\n transform(value: any[] | null | undefined, index: number) {\n if (value) {\n return value[index];\n } else {\n return null;\n }\n }\n\n}\n","import { Component, Input, ContentChildren, QueryList, ElementRef, HostListener, HostBinding, ViewChildren } from '@angular/core';\nimport { BehaviorSubject, map, combineLatest, Observable, take } from 'rxjs';\nimport { DragOperation, EDragOperation } from '../interfaces/drag-operation';\nimport { Point } from '../interfaces/point';\nimport { BsSplitPanelComponent } from '../split-panel/split-panel.component';\nimport { Direction } from '../types/direction.type';\n\n@Component({\n selector: 'bs-splitter',\n templateUrl: './splitter.component.html',\n styleUrls: ['./splitter.component.scss'],\n})\nexport class BsSplitterComponent {\n\n constructor() {\n this.directionClass$ = this.orientation$.pipe(map((orientation) => {\n switch (orientation) {\n case 'horizontal': return 'flex-row';\n case 'vertical': return 'flex-column';\n }\n }));\n this.splitterClass$ = this.orientation$.pipe(map((orientation) => {\n switch (orientation) {\n case 'horizontal': return 'split-hor';\n case 'vertical': return 'split-ver';\n }\n }));\n this.widthStyles$ = combineLatest([this.orientation$, this.previewSizes$, this.panels$])\n .pipe(map(([orientation, previewSizes, panels]) => {\n switch (orientation) {\n case 'horizontal':\n if (previewSizes) {\n return [...Array(panels.length).keys()].map((v, i) => {\n if (i < previewSizes.length) {\n return previewSizes[i] + 'px';\n } else {\n return '100%';\n }\n });\n } else {\n return Array(panels.length).map((v, i) => '100%');\n }\n case 'vertical':\n return null;\n }\n }));\n this.heightStyles$ = combineLatest([this.orientation$, this.previewSizes$, this.panels$])\n .pipe(map(([orientation, previewSizes, panels]) => {\n switch (orientation) {\n case 'horizontal':\n return null;\n case 'vertical':\n if (previewSizes) {\n return [...Array(panels.length).keys()].map((v, i) => {\n if (i < previewSizes.length) {\n return previewSizes[i] + 'px';\n } else {\n return '100%';\n }\n });\n } else {\n return Array(panels.length).map((v, i) => '100%');\n }\n }\n }));\n }\n\n //#region Orientation\n orientation$ = new BehaviorSubject<Direction>('horizontal');\n public get orientation() {\n return this.orientation$.value;\n }\n @Input() public set orientation(value: Direction) {\n this.orientation$.next(value);\n }\n //#endregion\n\n previewSizes$ = new BehaviorSubject<number[] | null>(null);\n\n panels$ = new BehaviorSubject<BsSplitPanelComponent[]>([]);\n @ContentChildren(BsSplitPanelComponent) set panels(value: QueryList<BsSplitPanelComponent>) {\n this.panels$.next(value.toArray());\n }\n @ViewChildren('splitPanel') splitPanels!: QueryList<ElementRef<HTMLDivElement>>;\n \n @HostBinding('class.w-100')\n @HostBinding('class.h-100')\n @HostBinding('class.d-flex')\n classes = true;\n\n directionClass$: Observable<string>;\n splitterClass$: Observable<string>;\n widthStyles$: Observable<string[] | null>;\n heightStyles$: Observable<string[] | null>;\n isResizing$ = new BehaviorSubject<boolean>(false);\n touchedDivider$ = new BehaviorSubject<HTMLDivElement | null>(null);\n operation: DragOperation | null = null;\n\n computeSizes() {\n if (typeof window !== 'undefined') {\n const sizes = this.splitPanels\n .map((sp) => {\n const styles = window.getComputedStyle(sp.nativeElement);\n switch (this.orientation) {\n case 'horizontal': return styles.width;\n case 'vertical': return styles.height;\n }\n })\n .map((size) => size.slice(0, -2))\n .map((size) => parseFloat(size));\n return sizes;\n } else {\n return this.splitPanels.map(p => 50);\n }\n }\n \n startResizeMouse(ev: MouseEvent, indexBefore: number, indexAfter: number) {\n ev.preventDefault();\n this.startResize(indexBefore, indexAfter, { x: ev.clientX, y: ev.clientY });\n }\n\n startResizeTouch(ev: TouchEvent, indexBefore: number, indexAfter: number, divider: HTMLDivElement) {\n ev.preventDefault();\n this.touchedDivider$.next(divider);\n this.startResize(indexBefore, indexAfter, { x: ev.touches[0].clientX, y: ev.touches[0].clientY });\n }\n\n private startResize(indexBefore: number, indexAfter: number, pt: Point) {\n const sizes = this.computeSizes();\n this.previewSizes$.next(sizes);\n this.operation = {\n operation: EDragOperation.resizeSplitter,\n startPosition: pt,\n sizes,\n indexBefore,\n indexAfter,\n };\n\n this.isResizing$.next(true);\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMouseMove(ev: MouseEvent) {\n this.onResizeMove({ x: ev.clientX, y: ev.clientY });\n }\n\n onTouchMove(ev: TouchEvent) {\n this.onResizeMove({ x: ev.touches[0].clientX, y: ev.touches[0].clientY });\n }\n\n onResizeMove(pt: Point) {\n if (this.operation) {\n switch (this.operation.operation) {\n case EDragOperation.resizeSplitter: {\n combineLatest([this.orientation$])\n .pipe(take(1))\n .subscribe(([orientation]) => {\n if (this.operation) {\n switch (orientation) {\n case 'horizontal':\n const deltaX = pt.x - this.operation.startPosition.x;\n const sx = Array.from(this.operation.sizes);\n sx[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaX;\n sx[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaX;\n this.previewSizes$.next(sx);\n break;\n case 'vertical':\n const deltaY = pt.y - this.operation.startPosition.y;\n const sy = Array.from(this.operation.sizes);\n sy[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaY;\n sy[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaY;\n this.previewSizes$.next(sy);\n break;\n }\n }\n })\n } break;\n }\n }\n }\n\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(ev: MouseEvent) {\n this.onResizeUp();\n }\n\n onTouchEnd(ev: TouchEvent) {\n this.touchedDivider$.next(null);\n this.onResizeUp();\n }\n\n onResizeUp() {\n this.isResizing$.next(false);\n this.operation = null;\n }\n}\n","<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { BsLetModule } from '@mintplayer/ng-bootstrap/let';\nimport { BsSplitterComponent } from './splitter/splitter.component';\nimport { BsSplitPanelComponent } from './split-panel/split-panel.component';\nimport { BsElementAtPipe } from './element-at/element-at.pipe';\n\n@NgModule({\n declarations: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe],\n imports: [CommonModule, PortalModule, BsLetModule],\n exports: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe],\n})\nexport class BsSplitterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.BsElementAtPipe"],"mappings":"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"}
|
|
@@ -32,7 +32,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
32
32
|
class BsElementAtPipe {
|
|
33
33
|
transform(value, index) {
|
|
34
34
|
if (value) {
|
|
35
|
-
console.log('bsElementAt', { value, index });
|
|
36
35
|
return value[index];
|
|
37
36
|
}
|
|
38
37
|
else {
|
|
@@ -58,6 +57,7 @@ class BsSplitterComponent {
|
|
|
58
57
|
this.panels$ = new BehaviorSubject([]);
|
|
59
58
|
this.classes = true;
|
|
60
59
|
this.isResizing$ = new BehaviorSubject(false);
|
|
60
|
+
this.touchedDivider$ = new BehaviorSubject(null);
|
|
61
61
|
this.operation = null;
|
|
62
62
|
this.directionClass$ = this.orientation$.pipe(map((orientation) => {
|
|
63
63
|
switch (orientation) {
|
|
@@ -141,13 +141,21 @@ class BsSplitterComponent {
|
|
|
141
141
|
return this.splitPanels.map(p => 50);
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
|
-
|
|
144
|
+
startResizeMouse(ev, indexBefore, indexAfter) {
|
|
145
145
|
ev.preventDefault();
|
|
146
|
+
this.startResize(indexBefore, indexAfter, { x: ev.clientX, y: ev.clientY });
|
|
147
|
+
}
|
|
148
|
+
startResizeTouch(ev, indexBefore, indexAfter, divider) {
|
|
149
|
+
ev.preventDefault();
|
|
150
|
+
this.touchedDivider$.next(divider);
|
|
151
|
+
this.startResize(indexBefore, indexAfter, { x: ev.touches[0].clientX, y: ev.touches[0].clientY });
|
|
152
|
+
}
|
|
153
|
+
startResize(indexBefore, indexAfter, pt) {
|
|
146
154
|
const sizes = this.computeSizes();
|
|
147
155
|
this.previewSizes$.next(sizes);
|
|
148
156
|
this.operation = {
|
|
149
157
|
operation: EDragOperation.resizeSplitter,
|
|
150
|
-
startPosition:
|
|
158
|
+
startPosition: pt,
|
|
151
159
|
sizes,
|
|
152
160
|
indexBefore,
|
|
153
161
|
indexAfter,
|
|
@@ -155,6 +163,12 @@ class BsSplitterComponent {
|
|
|
155
163
|
this.isResizing$.next(true);
|
|
156
164
|
}
|
|
157
165
|
onMouseMove(ev) {
|
|
166
|
+
this.onResizeMove({ x: ev.clientX, y: ev.clientY });
|
|
167
|
+
}
|
|
168
|
+
onTouchMove(ev) {
|
|
169
|
+
this.onResizeMove({ x: ev.touches[0].clientX, y: ev.touches[0].clientY });
|
|
170
|
+
}
|
|
171
|
+
onResizeMove(pt) {
|
|
158
172
|
if (this.operation) {
|
|
159
173
|
switch (this.operation.operation) {
|
|
160
174
|
case EDragOperation.resizeSplitter:
|
|
@@ -165,14 +179,14 @@ class BsSplitterComponent {
|
|
|
165
179
|
if (this.operation) {
|
|
166
180
|
switch (orientation) {
|
|
167
181
|
case 'horizontal':
|
|
168
|
-
const deltaX =
|
|
182
|
+
const deltaX = pt.x - this.operation.startPosition.x;
|
|
169
183
|
const sx = Array.from(this.operation.sizes);
|
|
170
184
|
sx[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaX;
|
|
171
185
|
sx[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaX;
|
|
172
186
|
this.previewSizes$.next(sx);
|
|
173
187
|
break;
|
|
174
188
|
case 'vertical':
|
|
175
|
-
const deltaY =
|
|
189
|
+
const deltaY = pt.y - this.operation.startPosition.y;
|
|
176
190
|
const sy = Array.from(this.operation.sizes);
|
|
177
191
|
sy[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaY;
|
|
178
192
|
sy[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaY;
|
|
@@ -187,15 +201,22 @@ class BsSplitterComponent {
|
|
|
187
201
|
}
|
|
188
202
|
}
|
|
189
203
|
onMouseUp(ev) {
|
|
204
|
+
this.onResizeUp();
|
|
205
|
+
}
|
|
206
|
+
onTouchEnd(ev) {
|
|
207
|
+
this.touchedDivider$.next(null);
|
|
208
|
+
this.onResizeUp();
|
|
209
|
+
}
|
|
210
|
+
onResizeUp() {
|
|
190
211
|
this.isResizing$.next(false);
|
|
191
212
|
this.operation = null;
|
|
192
213
|
}
|
|
193
214
|
}
|
|
194
215
|
BsSplitterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BsSplitterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
195
|
-
BsSplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: BsSplitterComponent, selector: "bs-splitter", inputs: { orientation: "orientation" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.w-100": "this.classes", "class.h-100": "this.classes", "class.d-flex": "this.classes" } }, queries: [{ propertyName: "panels", predicate: BsSplitPanelComponent }], viewQueries: [{ propertyName: "splitPanels", predicate: ["splitPanel"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" (mousedown)=\"
|
|
216
|
+
BsSplitterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: BsSplitterComponent, selector: "bs-splitter", inputs: { orientation: "orientation" }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)" }, properties: { "class.w-100": "this.classes", "class.h-100": "this.classes", "class.d-flex": "this.classes" } }, queries: [{ propertyName: "panels", predicate: BsSplitPanelComponent }], viewQueries: [{ propertyName: "splitPanels", predicate: ["splitPanel"], descendants: true }], ngImport: i0, template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>", styles: [".split-panel{flex-grow:1}.divider{flex-shrink:0;transition:background-color .15s ease-in-out;z-index:3}.divider:before{background-position:center center;background-repeat:no-repeat}.divider:hover:before,.divider.hover:before{background-color:#1389fd;border-radius:4px}.divider:before{content:\"\";display:block;background-color:#eee}.split-hor>.divider{width:14px;height:100%;cursor:col-resize;border-left:3px solid transparent;border-right:3px solid transparent}.split-hor>.divider:before{width:8px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)}.split-hor>.split-panel{margin-left:-3px;margin-right:-3px}.split-ver>.divider{width:100%;height:14px;cursor:row-resize;border-top:3px solid transparent;border-bottom:3px solid transparent}.split-ver>.divider:before{height:8px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)}.split-ver>.split-panel{margin-top:-3px;margin-bottom:-3px}.flex-none{flex:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: i3.BsLetDirective, selector: "[bsLet]", inputs: ["bsLet"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: BsElementAtPipe, name: "bsElementAt" }] });
|
|
196
217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: BsSplitterComponent, decorators: [{
|
|
197
218
|
type: Component,
|
|
198
|
-
args: [{ selector: 'bs-splitter', template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" (mousedown)=\"
|
|
219
|
+
args: [{ selector: 'bs-splitter', template: "<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>", styles: [".split-panel{flex-grow:1}.divider{flex-shrink:0;transition:background-color .15s ease-in-out;z-index:3}.divider:before{background-position:center center;background-repeat:no-repeat}.divider:hover:before,.divider.hover:before{background-color:#1389fd;border-radius:4px}.divider:before{content:\"\";display:block;background-color:#eee}.split-hor>.divider{width:14px;height:100%;cursor:col-resize;border-left:3px solid transparent;border-right:3px solid transparent}.split-hor>.divider:before{width:8px;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==)}.split-hor>.split-panel{margin-left:-3px;margin-right:-3px}.split-ver>.divider{width:100%;height:14px;cursor:row-resize;border-top:3px solid transparent;border-bottom:3px solid transparent}.split-ver>.divider:before{height:8px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFCAMAAABl/6zIAAAABlBMVEUAAADMzMzIT8AyAAAAAXRSTlMAQObYZgAAABRJREFUeAFjYGRkwIMJSeMHlBkOABP7AEGzSuPKAAAAAElFTkSuQmCC)}.split-ver>.split-panel{margin-top:-3px;margin-bottom:-3px}.flex-none{flex:none}\n"] }]
|
|
199
220
|
}], ctorParameters: function () { return []; }, propDecorators: { orientation: [{
|
|
200
221
|
type: Input
|
|
201
222
|
}], panels: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mintplayer-ng-bootstrap-splitter.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/splitter/src/interfaces/drag-operation.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/split-panel/split-panel.component.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/split-panel/split-panel.component.html","../../../../libs/mintplayer-ng-bootstrap/splitter/src/element-at/element-at.pipe.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter/splitter.component.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter/splitter.component.html","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter.module.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/mintplayer-ng-bootstrap-splitter.ts"],"sourcesContent":["import { Point } from \"./point\";\n\nexport interface DragOperation {\n operation: EDragOperation;\n startPosition: Point;\n sizes: number[];\n indexBefore: number;\n indexAfter: number;\n}\n\nexport enum EDragOperation {\n none,\n resizeSplitter,\n}","import { DomPortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, ViewChild, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'bs-split-panel',\n templateUrl: './split-panel.component.html',\n styleUrls: ['./split-panel.component.scss'],\n})\nexport class BsSplitPanelComponent implements AfterViewInit {\n constructor(private element: ElementRef) {}\n\n portal?: DomPortal;\n\n ngAfterViewInit() {\n setTimeout(() => this.portal = new DomPortal(this.element.nativeElement), 10);\n }\n}\n","<div class=\"w-100 h-100\">\n <ng-content></ng-content>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'bsElementAt'\n})\nexport class BsElementAtPipe implements PipeTransform {\n\n transform(value: any[] | null | undefined, index: number) {\n if (value) {\n console.log('bsElementAt', {value, index});\n return value[index];\n } else {\n return null;\n }\n }\n\n}\n","import { Component, Input, ContentChildren, QueryList, ElementRef, HostListener, HostBinding, ViewChildren } from '@angular/core';\nimport { BehaviorSubject, map, combineLatest, Observable, take } from 'rxjs';\nimport { DragOperation, EDragOperation } from '../interfaces/drag-operation';\nimport { BsSplitPanelComponent } from '../split-panel/split-panel.component';\nimport { Direction } from '../types/direction.type';\n\n@Component({\n selector: 'bs-splitter',\n templateUrl: './splitter.component.html',\n styleUrls: ['./splitter.component.scss'],\n})\nexport class BsSplitterComponent {\n\n constructor() {\n this.directionClass$ = this.orientation$.pipe(map((orientation) => {\n switch (orientation) {\n case 'horizontal': return 'flex-row';\n case 'vertical': return 'flex-column';\n }\n }));\n this.splitterClass$ = this.orientation$.pipe(map((orientation) => {\n switch (orientation) {\n case 'horizontal': return 'split-hor';\n case 'vertical': return 'split-ver';\n }\n }));\n this.widthStyles$ = combineLatest([this.orientation$, this.previewSizes$, this.panels$])\n .pipe(map(([orientation, previewSizes, panels]) => {\n switch (orientation) {\n case 'horizontal':\n if (previewSizes) {\n return [...Array(panels.length).keys()].map((v, i) => {\n if (i < previewSizes.length) {\n return previewSizes[i] + 'px';\n } else {\n return '100%';\n }\n });\n } else {\n return Array(panels.length).map((v, i) => '100%');\n }\n case 'vertical':\n return null;\n }\n }));\n this.heightStyles$ = combineLatest([this.orientation$, this.previewSizes$, this.panels$])\n .pipe(map(([orientation, previewSizes, panels]) => {\n switch (orientation) {\n case 'horizontal':\n return null;\n case 'vertical':\n if (previewSizes) {\n return [...Array(panels.length).keys()].map((v, i) => {\n if (i < previewSizes.length) {\n return previewSizes[i] + 'px';\n } else {\n return '100%';\n }\n });\n } else {\n return Array(panels.length).map((v, i) => '100%');\n }\n }\n }));\n }\n\n //#region Orientation\n orientation$ = new BehaviorSubject<Direction>('horizontal');\n public get orientation() {\n return this.orientation$.value;\n }\n @Input() public set orientation(value: Direction) {\n this.orientation$.next(value);\n }\n //#endregion\n\n previewSizes$ = new BehaviorSubject<number[] | null>(null);\n\n panels$ = new BehaviorSubject<BsSplitPanelComponent[]>([]);\n @ContentChildren(BsSplitPanelComponent) set panels(value: QueryList<BsSplitPanelComponent>) {\n this.panels$.next(value.toArray());\n }\n @ViewChildren('splitPanel') splitPanels!: QueryList<ElementRef<HTMLDivElement>>;\n \n @HostBinding('class.w-100')\n @HostBinding('class.h-100')\n @HostBinding('class.d-flex')\n classes = true;\n\n directionClass$: Observable<string>;\n splitterClass$: Observable<string>;\n widthStyles$: Observable<string[] | null>;\n heightStyles$: Observable<string[] | null>;\n isResizing$ = new BehaviorSubject<boolean>(false);\n operation: DragOperation | null = null;\n\n computeSizes() {\n if (typeof window !== 'undefined') {\n const sizes = this.splitPanels\n .map((sp) => {\n const styles = window.getComputedStyle(sp.nativeElement);\n switch (this.orientation) {\n case 'horizontal': return styles.width;\n case 'vertical': return styles.height;\n }\n })\n .map((size) => size.slice(0, -2))\n .map((size) => parseFloat(size));\n return sizes;\n } else {\n return this.splitPanels.map(p => 50);\n }\n }\n \n startResize(ev: MouseEvent, indexBefore: number, indexAfter: number) {\n ev.preventDefault();\n const sizes = this.computeSizes();\n this.previewSizes$.next(sizes);\n this.operation = {\n operation: EDragOperation.resizeSplitter,\n startPosition: { x: ev.clientX, y: ev.clientY },\n sizes,\n indexBefore,\n indexAfter,\n };\n\n this.isResizing$.next(true);\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMouseMove(ev: MouseEvent) {\n if (this.operation) {\n switch (this.operation.operation) {\n case EDragOperation.resizeSplitter: {\n combineLatest([this.orientation$])\n .pipe(take(1))\n .subscribe(([orientation]) => {\n if (this.operation) {\n switch (orientation) {\n case 'horizontal':\n const deltaX = ev.clientX - this.operation.startPosition.x;\n const sx = Array.from(this.operation.sizes);\n sx[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaX;\n sx[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaX;\n this.previewSizes$.next(sx);\n break;\n case 'vertical':\n const deltaY = ev.clientY - this.operation.startPosition.y;\n const sy = Array.from(this.operation.sizes);\n sy[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaY;\n sy[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaY;\n this.previewSizes$.next(sy);\n break;\n }\n }\n })\n } break;\n }\n }\n }\n\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(ev: MouseEvent) {\n this.isResizing$.next(false);\n this.operation = null;\n }\n}\n","<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" (mousedown)=\"startResize($event, index, index + 1)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { BsLetModule } from '@mintplayer/ng-bootstrap/let';\nimport { BsSplitterComponent } from './splitter/splitter.component';\nimport { BsSplitPanelComponent } from './split-panel/split-panel.component';\nimport { BsElementAtPipe } from './element-at/element-at.pipe';\n\n@NgModule({\n declarations: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe],\n imports: [CommonModule, PortalModule, BsLetModule],\n exports: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe],\n})\nexport class BsSplitterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.BsElementAtPipe"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mintplayer-ng-bootstrap-splitter.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/splitter/src/interfaces/drag-operation.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/split-panel/split-panel.component.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/split-panel/split-panel.component.html","../../../../libs/mintplayer-ng-bootstrap/splitter/src/element-at/element-at.pipe.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter/splitter.component.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter/splitter.component.html","../../../../libs/mintplayer-ng-bootstrap/splitter/src/splitter.module.ts","../../../../libs/mintplayer-ng-bootstrap/splitter/mintplayer-ng-bootstrap-splitter.ts"],"sourcesContent":["import { Point } from \"./point\";\n\nexport interface DragOperation {\n operation: EDragOperation;\n startPosition: Point;\n sizes: number[];\n indexBefore: number;\n indexAfter: number;\n}\n\nexport enum EDragOperation {\n none,\n resizeSplitter,\n}","import { DomPortal } from '@angular/cdk/portal';\nimport { Component, ElementRef, ViewChild, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'bs-split-panel',\n templateUrl: './split-panel.component.html',\n styleUrls: ['./split-panel.component.scss'],\n})\nexport class BsSplitPanelComponent implements AfterViewInit {\n constructor(private element: ElementRef) {}\n\n portal?: DomPortal;\n\n ngAfterViewInit() {\n setTimeout(() => this.portal = new DomPortal(this.element.nativeElement), 10);\n }\n}\n","<div class=\"w-100 h-100\">\n <ng-content></ng-content>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'bsElementAt'\n})\nexport class BsElementAtPipe implements PipeTransform {\n\n transform(value: any[] | null | undefined, index: number) {\n if (value) {\n return value[index];\n } else {\n return null;\n }\n }\n\n}\n","import { Component, Input, ContentChildren, QueryList, ElementRef, HostListener, HostBinding, ViewChildren } from '@angular/core';\nimport { BehaviorSubject, map, combineLatest, Observable, take } from 'rxjs';\nimport { DragOperation, EDragOperation } from '../interfaces/drag-operation';\nimport { Point } from '../interfaces/point';\nimport { BsSplitPanelComponent } from '../split-panel/split-panel.component';\nimport { Direction } from '../types/direction.type';\n\n@Component({\n selector: 'bs-splitter',\n templateUrl: './splitter.component.html',\n styleUrls: ['./splitter.component.scss'],\n})\nexport class BsSplitterComponent {\n\n constructor() {\n this.directionClass$ = this.orientation$.pipe(map((orientation) => {\n switch (orientation) {\n case 'horizontal': return 'flex-row';\n case 'vertical': return 'flex-column';\n }\n }));\n this.splitterClass$ = this.orientation$.pipe(map((orientation) => {\n switch (orientation) {\n case 'horizontal': return 'split-hor';\n case 'vertical': return 'split-ver';\n }\n }));\n this.widthStyles$ = combineLatest([this.orientation$, this.previewSizes$, this.panels$])\n .pipe(map(([orientation, previewSizes, panels]) => {\n switch (orientation) {\n case 'horizontal':\n if (previewSizes) {\n return [...Array(panels.length).keys()].map((v, i) => {\n if (i < previewSizes.length) {\n return previewSizes[i] + 'px';\n } else {\n return '100%';\n }\n });\n } else {\n return Array(panels.length).map((v, i) => '100%');\n }\n case 'vertical':\n return null;\n }\n }));\n this.heightStyles$ = combineLatest([this.orientation$, this.previewSizes$, this.panels$])\n .pipe(map(([orientation, previewSizes, panels]) => {\n switch (orientation) {\n case 'horizontal':\n return null;\n case 'vertical':\n if (previewSizes) {\n return [...Array(panels.length).keys()].map((v, i) => {\n if (i < previewSizes.length) {\n return previewSizes[i] + 'px';\n } else {\n return '100%';\n }\n });\n } else {\n return Array(panels.length).map((v, i) => '100%');\n }\n }\n }));\n }\n\n //#region Orientation\n orientation$ = new BehaviorSubject<Direction>('horizontal');\n public get orientation() {\n return this.orientation$.value;\n }\n @Input() public set orientation(value: Direction) {\n this.orientation$.next(value);\n }\n //#endregion\n\n previewSizes$ = new BehaviorSubject<number[] | null>(null);\n\n panels$ = new BehaviorSubject<BsSplitPanelComponent[]>([]);\n @ContentChildren(BsSplitPanelComponent) set panels(value: QueryList<BsSplitPanelComponent>) {\n this.panels$.next(value.toArray());\n }\n @ViewChildren('splitPanel') splitPanels!: QueryList<ElementRef<HTMLDivElement>>;\n \n @HostBinding('class.w-100')\n @HostBinding('class.h-100')\n @HostBinding('class.d-flex')\n classes = true;\n\n directionClass$: Observable<string>;\n splitterClass$: Observable<string>;\n widthStyles$: Observable<string[] | null>;\n heightStyles$: Observable<string[] | null>;\n isResizing$ = new BehaviorSubject<boolean>(false);\n touchedDivider$ = new BehaviorSubject<HTMLDivElement | null>(null);\n operation: DragOperation | null = null;\n\n computeSizes() {\n if (typeof window !== 'undefined') {\n const sizes = this.splitPanels\n .map((sp) => {\n const styles = window.getComputedStyle(sp.nativeElement);\n switch (this.orientation) {\n case 'horizontal': return styles.width;\n case 'vertical': return styles.height;\n }\n })\n .map((size) => size.slice(0, -2))\n .map((size) => parseFloat(size));\n return sizes;\n } else {\n return this.splitPanels.map(p => 50);\n }\n }\n \n startResizeMouse(ev: MouseEvent, indexBefore: number, indexAfter: number) {\n ev.preventDefault();\n this.startResize(indexBefore, indexAfter, { x: ev.clientX, y: ev.clientY });\n }\n\n startResizeTouch(ev: TouchEvent, indexBefore: number, indexAfter: number, divider: HTMLDivElement) {\n ev.preventDefault();\n this.touchedDivider$.next(divider);\n this.startResize(indexBefore, indexAfter, { x: ev.touches[0].clientX, y: ev.touches[0].clientY });\n }\n\n private startResize(indexBefore: number, indexAfter: number, pt: Point) {\n const sizes = this.computeSizes();\n this.previewSizes$.next(sizes);\n this.operation = {\n operation: EDragOperation.resizeSplitter,\n startPosition: pt,\n sizes,\n indexBefore,\n indexAfter,\n };\n\n this.isResizing$.next(true);\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMouseMove(ev: MouseEvent) {\n this.onResizeMove({ x: ev.clientX, y: ev.clientY });\n }\n\n onTouchMove(ev: TouchEvent) {\n this.onResizeMove({ x: ev.touches[0].clientX, y: ev.touches[0].clientY });\n }\n\n onResizeMove(pt: Point) {\n if (this.operation) {\n switch (this.operation.operation) {\n case EDragOperation.resizeSplitter: {\n combineLatest([this.orientation$])\n .pipe(take(1))\n .subscribe(([orientation]) => {\n if (this.operation) {\n switch (orientation) {\n case 'horizontal':\n const deltaX = pt.x - this.operation.startPosition.x;\n const sx = Array.from(this.operation.sizes);\n sx[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaX;\n sx[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaX;\n this.previewSizes$.next(sx);\n break;\n case 'vertical':\n const deltaY = pt.y - this.operation.startPosition.y;\n const sy = Array.from(this.operation.sizes);\n sy[this.operation.indexBefore] = this.operation.sizes[this.operation.indexBefore] + deltaY;\n sy[this.operation.indexAfter] = this.operation.sizes[this.operation.indexAfter] - deltaY;\n this.previewSizes$.next(sy);\n break;\n }\n }\n })\n } break;\n }\n }\n }\n\n @HostListener('document:mouseup', ['$event'])\n onMouseUp(ev: MouseEvent) {\n this.onResizeUp();\n }\n\n onTouchEnd(ev: TouchEvent) {\n this.touchedDivider$.next(null);\n this.onResizeUp();\n }\n\n onResizeUp() {\n this.isResizing$.next(false);\n this.operation = null;\n }\n}\n","<div class=\"d-flex w-100\" [class]=\"[directionClass$ | async, splitterClass$ | async]\">\n <ng-content></ng-content>\n <ng-container *ngFor=\"let panel of (panels$ | async); let index = index; let last = last\">\n <ng-container *bsLet=\"(widthStyles$ | async) as widthStyles\">\n <ng-container *bsLet=\"(heightStyles$ | async) as heightStyles\">\n <!-- [style.width.%]=\"100\" [style.height.%]=\"100\" -->\n <div class=\"split-panel overflow-hidden\" [class.flex-none]=\"isResizing$ | async\" #splitPanel [style.width]=\"widthStyles | bsElementAt:index\" [style.height]=\"heightStyles | bsElementAt:index\">\n <ng-template [cdkPortalOutlet]=\"panel.portal\"></ng-template>\n </div>\n </ng-container>\n </ng-container>\n <div class=\"divider\" [class.hover]=\"(touchedDivider$ | async) === divider\" #divider (mousedown)=\"startResizeMouse($event, index, index + 1)\" (touchstart)=\"startResizeTouch($event, index, index + 1, divider)\" (touchmove)=\"onTouchMove($event)\" (touchend)=\"onTouchEnd($event)\" *ngIf=\"!last\"></div>\n </ng-container>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { BsLetModule } from '@mintplayer/ng-bootstrap/let';\nimport { BsSplitterComponent } from './splitter/splitter.component';\nimport { BsSplitPanelComponent } from './split-panel/split-panel.component';\nimport { BsElementAtPipe } from './element-at/element-at.pipe';\n\n@NgModule({\n declarations: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe],\n imports: [CommonModule, PortalModule, BsLetModule],\n exports: [BsSplitterComponent, BsSplitPanelComponent, BsElementAtPipe],\n})\nexport class BsSplitterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.BsElementAtPipe"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { QueryList, ElementRef } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
3
|
import { DragOperation } from '../interfaces/drag-operation';
|
|
4
|
+
import { Point } from '../interfaces/point';
|
|
4
5
|
import { BsSplitPanelComponent } from '../split-panel/split-panel.component';
|
|
5
6
|
import { Direction } from '../types/direction.type';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
@@ -19,11 +20,18 @@ export declare class BsSplitterComponent {
|
|
|
19
20
|
widthStyles$: Observable<string[] | null>;
|
|
20
21
|
heightStyles$: Observable<string[] | null>;
|
|
21
22
|
isResizing$: BehaviorSubject<boolean>;
|
|
23
|
+
touchedDivider$: BehaviorSubject<HTMLDivElement | null>;
|
|
22
24
|
operation: DragOperation | null;
|
|
23
25
|
computeSizes(): number[];
|
|
24
|
-
|
|
26
|
+
startResizeMouse(ev: MouseEvent, indexBefore: number, indexAfter: number): void;
|
|
27
|
+
startResizeTouch(ev: TouchEvent, indexBefore: number, indexAfter: number, divider: HTMLDivElement): void;
|
|
28
|
+
private startResize;
|
|
25
29
|
onMouseMove(ev: MouseEvent): void;
|
|
30
|
+
onTouchMove(ev: TouchEvent): void;
|
|
31
|
+
onResizeMove(pt: Point): void;
|
|
26
32
|
onMouseUp(ev: MouseEvent): void;
|
|
33
|
+
onTouchEnd(ev: TouchEvent): void;
|
|
34
|
+
onResizeUp(): void;
|
|
27
35
|
static ɵfac: i0.ɵɵFactoryDeclaration<BsSplitterComponent, never>;
|
|
28
36
|
static ɵcmp: i0.ɵɵComponentDeclaration<BsSplitterComponent, "bs-splitter", never, { "orientation": "orientation"; }, {}, ["panels"], ["*"], false, never>;
|
|
29
37
|
}
|