@firestitch/list 12.12.3 → 12.12.4
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/app/classes/data-controller.d.ts +2 -1
- package/app/classes/reorder-controller.d.ts +7 -2
- package/app/classes/selection-controller.d.ts +5 -0
- package/app/components/body/body.component.d.ts +2 -2
- package/app/components/body/row/actions/actions.component.d.ts +0 -1
- package/app/components/body/row/menu-action/menu-action.component.d.ts +3 -1
- package/app/components/body/row/row.component.d.ts +2 -0
- package/app/components/list/list.component.d.ts +14 -7
- package/app/directives/draggable-list/draggable-list.directive.d.ts +12 -3
- package/app/directives/draggable-row/draggable-row.directive.d.ts +2 -0
- package/app/directives/heading/heading.directive.d.ts +5 -0
- package/app/directives/index.d.ts +2 -0
- package/app/directives/subheading/subheading.directive.d.ts +5 -0
- package/app/fs-list.module.d.ts +21 -19
- package/app/interfaces/listconfig.interface.d.ts +7 -4
- package/app/models/row/group-footer-row.d.ts +1 -1
- package/app/models/row/group-row.d.ts +1 -0
- package/app/models/row-action.model.d.ts +0 -2
- package/app/models/row.d.ts +1 -1
- package/app/pipes/action-label.d.ts +8 -0
- package/app/pipes/index.d.ts +1 -0
- package/bundles/firestitch-list.umd.js +435 -198
- package/bundles/firestitch-list.umd.js.map +1 -1
- package/esm2015/app/classes/data-controller.js +36 -18
- package/esm2015/app/classes/list-controller.js +2 -3
- package/esm2015/app/classes/reorder-controller.js +21 -7
- package/esm2015/app/classes/selection-controller.js +16 -2
- package/esm2015/app/components/body/body.component.js +4 -5
- package/esm2015/app/components/body/row/actions/actions.component.js +3 -8
- package/esm2015/app/components/body/row/cell/cell.component.js +22 -7
- package/esm2015/app/components/body/row/inline-action/inline-action.component.js +3 -4
- package/esm2015/app/components/body/row/menu-action/menu-action.component.js +7 -3
- package/esm2015/app/components/body/row/row.component.js +16 -7
- package/esm2015/app/components/footer/footer-row/footer-row.component.js +2 -3
- package/esm2015/app/components/head/head.component.js +2 -3
- package/esm2015/app/components/list/list.component.js +48 -26
- package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +2 -3
- package/esm2015/app/components/pagination/pagination.component.js +4 -5
- package/esm2015/app/components/status/status.component.js +3 -5
- package/esm2015/app/directives/draggable-list/draggable-list.directive.js +97 -32
- package/esm2015/app/directives/draggable-row/draggable-row.directive.js +9 -1
- package/esm2015/app/directives/heading/heading.directive.js +13 -0
- package/esm2015/app/directives/index.js +3 -0
- package/esm2015/app/directives/subheading/subheading.directive.js +13 -0
- package/esm2015/app/fs-list.module.js +18 -9
- package/esm2015/app/interfaces/listconfig.interface.js +1 -1
- package/esm2015/app/models/row/child-row.js +1 -1
- package/esm2015/app/models/row/group-footer-row.js +2 -2
- package/esm2015/app/models/row/group-row.js +5 -1
- package/esm2015/app/models/row-action.model.js +8 -22
- package/esm2015/app/models/row.js +2 -2
- package/esm2015/app/pipes/action-label.js +17 -0
- package/esm2015/app/pipes/index.js +2 -0
- package/esm2015/public_api.js +3 -2
- package/fesm2015/firestitch-list.js +347 -156
- package/fesm2015/firestitch-list.js.map +1 -1
- package/package.json +2 -2
- package/public_api.d.ts +2 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component } from '@angular/core';
|
|
2
2
|
import { ExternalParamsController } from '@firestitch/filter';
|
|
3
|
-
import { ReorderPosition
|
|
3
|
+
import { ReorderPosition } from '../../classes/reorder-controller';
|
|
4
4
|
import { map, tap } from 'rxjs/operators';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@firestitch/filter";
|
|
@@ -27,7 +27,6 @@ export class FsListManageSavedFiltersComponent {
|
|
|
27
27
|
paging: false,
|
|
28
28
|
reorder: {
|
|
29
29
|
position: ReorderPosition.Left,
|
|
30
|
-
strategy: ReorderStrategy.Always,
|
|
31
30
|
moveDrop: () => {
|
|
32
31
|
return this._reorderReady;
|
|
33
32
|
},
|
|
@@ -76,4 +75,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
76
75
|
templateUrl: 'manage-saved-filters.component.html',
|
|
77
76
|
}]
|
|
78
77
|
}], ctorParameters: function () { return [{ type: i1.ExternalParamsController }]; } });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXNhdmVkLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL21hbmFnZS1zYXZlZC1maWx0ZXJzL21hbmFnZS1zYXZlZC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9tYW5hZ2Utc2F2ZWQtZmlsdGVycy9tYW5hZ2Utc2F2ZWQtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFDTCx3QkFBd0IsRUFHekIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZUFBZSxFQUFtQixNQUFNLGtDQUFrQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBTTFDLE1BQU0sT0FBTyxpQ0FBaUM7SUFNNUMsWUFDVSxlQUF5QztRQUF6QyxvQkFBZSxHQUFmLGVBQWUsQ0FBMEI7UUFIM0Msa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFLM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFZLHNCQUFzQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUM7SUFDckQsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osTUFBTSxFQUFFLEtBQUs7WUFDYixXQUFXLEVBQUUsS0FBSztZQUNsQixVQUFVLEVBQUUsS0FBSztZQUNqQixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxLQUFLO1lBQ2IsT0FBTyxFQUFFO2dCQUNQLFFBQVEsRUFBRSxlQUFlLENBQUMsSUFBSTtnQkFDOUIsUUFBUSxFQUFFLEdBQUcsRUFBRTtvQkFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQzVCLENBQUM7Z0JBQ0QsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO29CQUUzQixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO3lCQUMxQyxJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDUCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztvQkFDNUIsQ0FBQyxDQUFDLENBQ0g7eUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixDQUFDO2FBQ0Y7WUFDRCxVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsS0FBSyxFQUFFLE9BQU87b0JBQ2QsS0FBSyxFQUFFLENBQUMsTUFBMEIsRUFBRSxFQUFFO3dCQUNwQyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNwRCxDQUFDO2lCQUNGO2dCQUNEO29CQUNFLEtBQUssRUFBRSxRQUFRO29CQUNmLE1BQU0sRUFBRTt3QkFDTixLQUFLLEVBQUUsU0FBUzt3QkFDaEIsUUFBUSxFQUFFLDhDQUE4QztxQkFDekQ7b0JBQ0QsS0FBSyxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUU7d0JBQ3JCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDekQsQ0FBQztpQkFDRjthQUNGO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFO3FCQUN0QyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2YsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNOLENBQUM7U0FFRixDQUFBO0lBQ0gsQ0FBQzs7K0hBckVVLGlDQUFpQzttSEFBakMsaUNBQWlDLG9EQ2Q5QyxrZUFvQkE7NEZETmEsaUNBQWlDO2tCQUg3QyxTQUFTO21CQUFDO29CQUNULFdBQVcsRUFBRSxxQ0FBcUM7aUJBQ25EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFeHRlcm5hbFBhcmFtc0NvbnRyb2xsZXIsXG4gIElGaWx0ZXJTYXZlZEZpbHRlcixcbiAgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlclxufSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xuaW1wb3J0IHsgUmVvcmRlclBvc2l0aW9uLCBSZW9yZGVyU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XG5pbXBvcnQgeyBGc0xpc3RDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2xpc3Rjb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJ21hbmFnZS1zYXZlZC1maWx0ZXJzLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRnNMaXN0TWFuYWdlU2F2ZWRGaWx0ZXJzQ29tcG9uZW50IHtcblxuICBwdWJsaWMgY29uZmlnOiBGc0xpc3RDb25maWc7XG5cbiAgcHJpdmF0ZSBfcmVvcmRlclJlYWR5ID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9leHRlcm5hbFBhcmFtczogRXh0ZXJuYWxQYXJhbXNDb250cm9sbGVyLFxuICApIHtcbiAgICB0aGlzLl9pbml0TGlzdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgc2F2ZWRGaWx0ZXJzQ29udHJvbGxlcigpOiBTYXZlZEZpbHRlcnNDb250cm9sbGVyIHtcbiAgICByZXR1cm4gdGhpcy5fZXh0ZXJuYWxQYXJhbXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlcjtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRMaXN0KCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgc3RhdHVzOiBmYWxzZSxcbiAgICAgIGZpbHRlcklucHV0OiBmYWxzZSxcbiAgICAgIHF1ZXJ5UGFyYW06IGZhbHNlLFxuICAgICAgcGVyc2lzdDogZmFsc2UsXG4gICAgICBwYWdpbmc6IGZhbHNlLFxuICAgICAgcmVvcmRlcjoge1xuICAgICAgICBwb3NpdGlvbjogUmVvcmRlclBvc2l0aW9uLkxlZnQsXG4gICAgICAgIG1vdmVEcm9wOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlb3JkZXJSZWFkeTtcbiAgICAgICAgfSxcbiAgICAgICAgZG9uZTogKHJlb3JkZXJEYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcmVvcmRlclJlYWR5ID0gZmFsc2U7XG5cbiAgICAgICAgICBjb25zdCBmaWx0ZXJEYXRhID0gcmVvcmRlckRhdGEubWFwKChkYXRhKSA9PiBkYXRhLmRhdGEpO1xuICAgICAgICAgIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5vcmRlcihmaWx0ZXJEYXRhKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVvcmRlclJlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJvd0FjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnQXBwbHknLFxuICAgICAgICAgIGNsaWNrOiAoZmlsdGVyOiBJRmlsdGVyU2F2ZWRGaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2V4dGVybmFsUGFyYW1zLnNldEFjdGl2ZVNhdmVkRmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnRGVsZXRlJyxcbiAgICAgICAgICByZW1vdmU6IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQ29uZmlybScsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBmaWx0ZXI/JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsaWNrOiAoc2F2ZWRGaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuZGVsZXRlKHNhdmVkRmlsdGVyKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGZldGNoOiAocXVlcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5sb2FkKClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgZGF0YTogcmVzcG9uc2UgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cbn1cbiIsIjxoMSBtYXQtZGlhbG9nLXRpdGxlPlxuICBNYW5hZ2UgU2F2ZWQgRmlsdGVyc1xuPC9oMT5cbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxuICA8ZnMtbGlzdCBbY29uZmlnXT1cImNvbmZpZ1wiPlxuICAgIDxmcy1saXN0LWNvbHVtbiBuYW1lPVwibmFtZVwiIHRpdGxlPVwiTmFtZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIGZzLWxpc3QtY2VsbCBsZXQtcm93PVwicm93XCI+XG4gICAgICAgIHt7IHJvdy5uYW1lIH19XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZnMtbGlzdC1jb2x1bW4+XG4gIDwvZnMtbGlzdD5cbjwvZGl2PlxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDxidXR0b24gbWF0LWJ1dHRvblxuICAgICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cIm51bGxcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgIERvbmVcbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -5,9 +5,8 @@ import { PaginationController } from '../../classes/pagination-controller';
|
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "@angular/material/button";
|
|
7
7
|
import * as i2 from "@angular/common";
|
|
8
|
-
import * as i3 from "@angular/
|
|
9
|
-
import * as i4 from "@
|
|
10
|
-
import * as i5 from "@firestitch/common";
|
|
8
|
+
import * as i3 from "@angular/material/core";
|
|
9
|
+
import * as i4 from "@firestitch/common";
|
|
11
10
|
export class FsPaginationComponent {
|
|
12
11
|
constructor(cdRef) {
|
|
13
12
|
this.cdRef = cdRef;
|
|
@@ -26,7 +25,7 @@ export class FsPaginationComponent {
|
|
|
26
25
|
}
|
|
27
26
|
}
|
|
28
27
|
FsPaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPaginationComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
FsPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsPaginationComponent, selector: "fs-list-pagination", inputs: { pagination: "pagination", rows: "rows" }, ngImport: i0, template: "<ng-container *ngIf=\"!pagination.loadMoreEnabled; else loadMoreButton\">\n <
|
|
28
|
+
FsPaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsPaginationComponent, selector: "fs-list-pagination", inputs: { pagination: "pagination", rows: "rows" }, ngImport: i0, template: "<ng-container *ngIf=\"!pagination.loadMoreEnabled; else loadMoreButton\">\n <ng-container *ngIf=\"pagination?.pages\">\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"first\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goFirst()\">\n <i class=\"material-icons\">first_page</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"previous\" [class.disabled]=\"!pagination.hasPrevPage\" (click)=\"pagination.goPrev()\">\n <i class=\"material-icons\">keyboard_arrow_left</i>\n </a>\n\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"next\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goNext()\">\n <i class=\"material-icons\">keyboard_arrow_right</i>\n </a>\n\n <a matRipple [matRippleRadius]=\"15\" [matRippleCentered]=\"true\" class=\"last\" [class.disabled]=\"!pagination.hasNextPage\" (click)=\"pagination.goLast()\">\n <i class=\"material-icons\">last_page</i>\n </a>\n </ng-container>\n</ng-container>\n\n<ng-template #loadMoreButton>\n <div class=\"fs-list-load-more\" *ngIf=\"pagination.hasNextPage\">\n <button mat-button (click)=\"pagination.goNext()\">{{ pagination.loadMoreText }}</button>\n </div>\n</ng-template>\n", styles: [":host{display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none;width:100%}a{text-align:center;color:#000000de;text-decoration:none;font-size:15px;cursor:pointer;display:flex}a:not(.page){padding:10px}a.disabled{pointer-events:none;cursor:default;color:#d8d8d8}.number{font-size:90%}.fs-list-load-more button{width:100%;margin-top:10px}\n"], components: [{ type: i1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleRadius", "matRippleDisabled", "matRippleTrigger", "matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleAnimation"], exportAs: ["matRipple"] }], pipes: { "fsFormatNumber": i4.FsFormatNumberPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
30
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsPaginationComponent, decorators: [{
|
|
31
30
|
type: Component,
|
|
32
31
|
args: [{
|
|
@@ -42,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
42
41
|
}], rows: [{
|
|
43
42
|
type: Input
|
|
44
43
|
}] } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7OztBQVUzRSxNQUFNLE9BQU8scUJBQXFCO0lBT2hDLFlBQ1UsS0FBd0I7UUFBeEIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFIMUIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFJL0IsQ0FBQztJQUVHLFFBQVE7UUFDYixLQUFLLENBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUN2QjthQUNFLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7O21IQTNCVSxxQkFBcUI7dUdBQXJCLHFCQUFxQiw4R0N0QmxDLG82Q0E2QkE7NEZEUGEscUJBQXFCO2tCQVJqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSwyQkFBMkI7b0JBQ3hDLFNBQVMsRUFBRTt3QkFDVCw2QkFBNkI7cUJBQzlCO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDt3R0FHVSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBtZXJnZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcGFnaW5hdGlvbi1jb250cm9sbGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtbGlzdC1wYWdpbmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICdwYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcydcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRnNQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHBhZ2luYXRpb246IFBhZ2luYXRpb25Db250cm9sbGVyO1xuICBASW5wdXQoKSByb3dzO1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBtZXJnZShcbiAgICAgIHRoaXMucGFnaW5hdGlvbi5wYWdlQ2hhbmdlZCQsXG4gICAgICB0aGlzLnBhZ2luYXRpb24ucGFnZXMkLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIXBhZ2luYXRpb24ubG9hZE1vcmVFbmFibGVkOyBlbHNlIGxvYWRNb3JlQnV0dG9uXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdpbmF0aW9uPy5wYWdlc1wiPlxuICAgIDxhIG1hdFJpcHBsZSBbbWF0UmlwcGxlUmFkaXVzXT1cIjE1XCIgW21hdFJpcHBsZUNlbnRlcmVkXT1cInRydWVcIiBjbGFzcz1cImZpcnN0XCIgW2NsYXNzLmRpc2FibGVkXT1cIiFwYWdpbmF0aW9uLmhhc1ByZXZQYWdlXCIgKGNsaWNrKT1cInBhZ2luYXRpb24uZ29GaXJzdCgpXCI+XG4gICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+Zmlyc3RfcGFnZTwvaT5cbiAgICA8L2E+XG5cbiAgICA8YSBtYXRSaXBwbGUgW21hdFJpcHBsZVJhZGl1c109XCIxNVwiIFttYXRSaXBwbGVDZW50ZXJlZF09XCJ0cnVlXCIgY2xhc3M9XCJwcmV2aW91c1wiIFtjbGFzcy5kaXNhYmxlZF09XCIhcGFnaW5hdGlvbi5oYXNQcmV2UGFnZVwiIChjbGljayk9XCJwYWdpbmF0aW9uLmdvUHJldigpXCI+XG4gICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+a2V5Ym9hcmRfYXJyb3dfbGVmdDwvaT5cbiAgICA8L2E+XG5cbiAgICA8ZGl2IGNsYXNzPVwibnVtYmVyXCI+XG4gICAgICB7eyBwYWdpbmF0aW9uLnBhZ2UgfCBmc0Zvcm1hdE51bWJlciB9fSBvZiB7eyBwYWdpbmF0aW9uLnBhZ2VzIHwgZnNGb3JtYXROdW1iZXIgfX1cbiAgICA8L2Rpdj5cblxuICAgIDxhIG1hdFJpcHBsZSBbbWF0UmlwcGxlUmFkaXVzXT1cIjE1XCIgW21hdFJpcHBsZUNlbnRlcmVkXT1cInRydWVcIiBjbGFzcz1cIm5leHRcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIXBhZ2luYXRpb24uaGFzTmV4dFBhZ2VcIiAoY2xpY2spPVwicGFnaW5hdGlvbi5nb05leHQoKVwiPlxuICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmtleWJvYXJkX2Fycm93X3JpZ2h0PC9pPlxuICAgIDwvYT5cblxuICAgIDxhIG1hdFJpcHBsZSBbbWF0UmlwcGxlUmFkaXVzXT1cIjE1XCIgW21hdFJpcHBsZUNlbnRlcmVkXT1cInRydWVcIiBjbGFzcz1cImxhc3RcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIXBhZ2luYXRpb24uaGFzTmV4dFBhZ2VcIiAoY2xpY2spPVwicGFnaW5hdGlvbi5nb0xhc3QoKVwiPlxuICAgICAgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmxhc3RfcGFnZTwvaT5cbiAgICA8L2E+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZE1vcmVCdXR0b24+XG4gIDxkaXYgY2xhc3M9XCJmcy1saXN0LWxvYWQtbW9yZVwiICpuZ0lmPVwicGFnaW5hdGlvbi5oYXNOZXh0UGFnZVwiPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwicGFnaW5hdGlvbi5nb05leHQoKVwiPnt7IHBhZ2luYXRpb24ubG9hZE1vcmVUZXh0IH19PC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -42,15 +42,13 @@ export class FsStatusComponent {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
FsStatusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStatusComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
-
FsStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsStatusComponent, selector: "fs-list-status", inputs: { paging: "paging", sorting: "sorting", rows: "rows", scrollable: "scrollable", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\n <ng-container *ngIf=\"paging.enabled && !scrollable\">\n
|
|
45
|
+
FsStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: FsStatusComponent, selector: "fs-list-status", inputs: { paging: "paging", sorting: "sorting", rows: "rows", scrollable: "scrollable", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\n <small>\n <ng-container *ngIf=\"paging.enabled && !scrollable\">\n <ng-container *ngIf=\"paging.records > 0; else emptyResults\">\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">{{ paging.statusLabel }}</a> of {{ paging.records | number:'1.0':'en-US' }} results\n </ng-container>\n <ng-template #emptyResults>\n Showing <a [fsMenuTriggerFor]=\"limitsMenu\">0</a> results\n </ng-template>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\n --></ng-container><!--\n\n --><ng-container *ngIf=\"(!paging.enabled || scrollable) && paging.displayed > 0\">\n <ng-container *ngIf=\"!scrollable; else scrollable\">\n Showing\n <span *ngIf=\"paging.displayed == 1\">{{ paging.displayed }} result </span>\n <span *ngIf=\"paging.displayed > 1\">{{ paging.displayed | number:'1.0':'en-US' }} results </span>\n </ng-container>\n\n <ng-template #scrollable>\n <span *ngIf=\"paging.records == 1\">{{ paging.records }} result </span>\n <span *ngIf=\"paging.records > 1\">{{ paging.records | number:'1.0':'en-US' }} results </span>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container><!--\n --></ng-container><!--\n\n --><fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n\n <fs-menu [hidden]=\"!paging.enabled || scrollable\" #limitsMenu>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\"\n >\n <ng-template fs-menu-item (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n\n <fs-menu [hidden]=\"!sorting.sortingColumn || paging.displayed === 0\" #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\"\n >\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\"\n >\n <ng-template fs-menu-item (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">{{ sorting.sortingColumn.title }}</a>,\n </ng-container>\n <ng-template #sortByTemplate>\n <a class=\"order-toggle\" [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>,\n </ng-template>\n <a class=\"order-toggle\" (click)=\"toggleDirection()\">{{ sorting.sortingColumn.fullNameDirection }}</a><!--\n --></ng-container><!--\n --></ng-template>\n </small> \n</div>\n", styles: [":host{display:inline-block}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}\n"], components: [{ type: i1.FsListSavedFiltersComponent, selector: "fs-list-saved-filters" }, { type: i2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass"], outputs: ["opened", "closed"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }], pipes: { "number": i3.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
|
|
46
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsStatusComponent, decorators: [{
|
|
47
47
|
type: Component,
|
|
48
48
|
args: [{
|
|
49
49
|
selector: 'fs-list-status',
|
|
50
50
|
templateUrl: 'status.component.html',
|
|
51
|
-
styleUrls: [
|
|
52
|
-
'./status.component.scss',
|
|
53
|
-
],
|
|
51
|
+
styleUrls: ['./status.component.scss'],
|
|
54
52
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
55
53
|
preserveWhitespaces: true
|
|
56
54
|
}]
|
|
@@ -71,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
71
69
|
type: HostBinding,
|
|
72
70
|
args: ['class.fs-skeleton-placeholder']
|
|
73
71
|
}] } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7OztBQVU3RCxNQUFNLE9BQU8saUJBQWlCO0lBYzVCLFlBQW9CLE1BQXlCO1FBQXpCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBRnJDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBR3hDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlO2FBQ3pCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTtZQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNuRDthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBRU0saUJBQWlCLENBQUMsTUFBTTtRQUM3QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxLQUFLLE1BQU0sRUFBRTtZQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFTSxRQUFRLENBQUMsS0FBSztRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOzsrR0FoRFUsaUJBQWlCO21HQUFqQixpQkFBaUIsMlJDekI5QixxMEdBcUZBOzRGRDVEYSxpQkFBaUI7a0JBUDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLHVCQUF1QjtvQkFDcEMsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7b0JBQ3RDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxtQkFBbUIsRUFBRSxJQUFJO2lCQUMxQjt3R0FHaUIsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFLQyxTQUFTO3NCQUhmLEtBQUs7O3NCQUNMLFdBQVc7dUJBQUMsa0JBQWtCOztzQkFDOUIsV0FBVzt1QkFBQywrQkFBK0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTb3J0aW5nQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvc29ydGluZy1jb250cm9sbGVyJztcbmltcG9ydCB7IFBhZ2luYXRpb25Db250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9wYWdpbmF0aW9uLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgU29ydGluZ0RpcmVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWxpc3Qtc3RhdHVzJyxcbiAgdGVtcGxhdGVVcmw6ICdzdGF0dXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdGF0dXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRnNTdGF0dXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIFxuICBASW5wdXQoKSBwdWJsaWMgcGFnaW5nOiBQYWdpbmF0aW9uQ29udHJvbGxlcjtcbiAgQElucHV0KCkgcHVibGljIHNvcnRpbmc6IFNvcnRpbmdDb250cm9sbGVyO1xuICBASW5wdXQoKSBwdWJsaWMgcm93cztcbiAgQElucHV0KCkgcHVibGljIHNjcm9sbGFibGU7XG5cbiAgQElucHV0KClcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5maXJzdC1sb2FkJylcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mcy1za2VsZXRvbi1wbGFjZWhvbGRlcicpXG4gIHB1YmxpYyBmaXJzdExvYWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc29ydGluZy5zb3J0aW5nQ2hhbmdlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlRGlyZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNvcnRpbmcuc29ydGluZ0NvbHVtbi5kaXJlY3Rpb24gPT09ICdhc2MnKSB7XG4gICAgICB0aGlzLnNvcnRpbmcuc29ydERpcmVjdGlvbihTb3J0aW5nRGlyZWN0aW9uLmRlc2MpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNvcnRpbmcuc29ydERpcmVjdGlvbihTb3J0aW5nRGlyZWN0aW9uLmFzYyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFNvcnRhYmxlQ29sdW1uKGNvbHVtbikge1xuICAgIGlmICh0aGlzLnNvcnRpbmcuc29ydGluZ0NvbHVtbiAhPT0gY29sdW1uKSB7XG4gICAgICB0aGlzLnNvcnRpbmcuc29ydEJ5KGNvbHVtbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldExpbWl0KGxpbWl0KSB7XG4gICAgdGhpcy5wYWdpbmcuc2V0TGltaXQobGltaXQpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic3RhdHVzXCI+XG4gIDxzbWFsbD5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnaW5nLmVuYWJsZWQgJiYgIXNjcm9sbGFibGVcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdpbmcucmVjb3JkcyA+IDA7IGVsc2UgZW1wdHlSZXN1bHRzXCI+XG4gICAgICAgIFNob3dpbmcgPGEgW2ZzTWVudVRyaWdnZXJGb3JdPVwibGltaXRzTWVudVwiPnt7IHBhZ2luZy5zdGF0dXNMYWJlbCB9fTwvYT4gb2Yge3sgcGFnaW5nLnJlY29yZHMgfCBudW1iZXI6JzEuMCc6J2VuLVVTJyB9fSByZXN1bHRzXG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZW1wdHlSZXN1bHRzPlxuICAgICAgICBTaG93aW5nIDxhIFtmc01lbnVUcmlnZ2VyRm9yXT1cImxpbWl0c01lbnVcIj4wPC9hPiByZXN1bHRzXG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvcnRlZEJ5XCI+PC9uZy1jb250YWluZXI+PCEtLVxuICAtLT48L25nLWNvbnRhaW5lcj48IS0tXG5cbiAgLS0+PG5nLWNvbnRhaW5lciAqbmdJZj1cIighcGFnaW5nLmVuYWJsZWQgfHwgc2Nyb2xsYWJsZSkgJiYgcGFnaW5nLmRpc3BsYXllZCA+IDBcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNjcm9sbGFibGU7IGVsc2Ugc2Nyb2xsYWJsZVwiPlxuICAgICAgU2hvd2luZ1xuICAgICAgPHNwYW4gKm5nSWY9XCJwYWdpbmcuZGlzcGxheWVkID09IDFcIj57eyBwYWdpbmcuZGlzcGxheWVkIH19IHJlc3VsdCA8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cInBhZ2luZy5kaXNwbGF5ZWQgPiAxXCI+e3sgcGFnaW5nLmRpc3BsYXllZCB8IG51bWJlcjonMS4wJzonZW4tVVMnIH19IHJlc3VsdHMgPC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNzY3JvbGxhYmxlPlxuICAgICAgPHNwYW4gKm5nSWY9XCJwYWdpbmcucmVjb3JkcyA9PSAxXCI+e3sgcGFnaW5nLnJlY29yZHMgfX0gcmVzdWx0IDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGFnaW5nLnJlY29yZHMgPiAxXCI+e3sgcGFnaW5nLnJlY29yZHMgfCBudW1iZXI6JzEuMCc6J2VuLVVTJyB9fSByZXN1bHRzIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3J0ZWRCeVwiPjwvbmctY29udGFpbmVyPjwhLS1cbiAgLS0+PC9uZy1jb250YWluZXI+PCEtLVxuXG4gIC0tPjxmcy1saXN0LXNhdmVkLWZpbHRlcnMgY2xhc3M9XCJzYXZlZC1maWx0ZXJzXCI+PC9mcy1saXN0LXNhdmVkLWZpbHRlcnM+XG5cbiAgICA8ZnMtbWVudSBbaGlkZGVuXT1cIiFwYWdpbmcuZW5hYmxlZCB8fCBzY3JvbGxhYmxlXCIgI2xpbWl0c01lbnU+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgbmdGb3JcbiAgICAgICAgbGV0LWxpbWl0XG4gICAgICAgIFtuZ0Zvck9mXT1cInBhZ2luZy5saW1pdHNcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgZnMtbWVudS1pdGVtIChjbGljayk9XCJzZXRMaW1pdChsaW1pdClcIj5cbiAgICAgICAgICB7eyBsaW1pdCB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2ZzLW1lbnU+XG5cbiAgICA8ZnMtbWVudSBbaGlkZGVuXT1cIiFzb3J0aW5nLnNvcnRpbmdDb2x1bW4gfHwgcGFnaW5nLmRpc3BsYXllZCA9PT0gMFwiICNvcmRlckNvbHVtbnNNZW51PlxuICAgICAgPCEtLSBSZWFsIHNvcnRpbmcgY29sdW1ucyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBuZ0ZvclxuICAgICAgICBsZXQtY29sdW1uXG4gICAgICAgIFtuZ0Zvck9mXT1cInNvcnRpbmcuc29ydGluZ0NvbHVtbnNcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgZnMtbWVudS1pdGVtIChjbGljayk9XCJzZXRTb3J0YWJsZUNvbHVtbihjb2x1bW4pXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbi50aXRsZTsgZWxzZSBzb3J0QnlUZW1wbGF0ZVwiPlxuICAgICAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzb3J0QnlUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2x1bW4uaGVhZGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8IS0tIEZha2Ugc29ydGluZyBjb2x1bW5zIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIG5nRm9yXG4gICAgICAgIGxldC1jb2x1bW5cbiAgICAgICAgW25nRm9yT2ZdPVwic29ydGluZy5mYWtlU29ydGluZ0NvbHVtbnNcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGUgZnMtbWVudS1pdGVtIChjbGljayk9XCJzZXRTb3J0YWJsZUNvbHVtbihjb2x1bW4pXCI+XG4gICAgICAgICAge3sgY29sdW1uLnRpdGxlIH19XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZnMtbWVudT5cblxuICAgIDxuZy10ZW1wbGF0ZSAjc29ydGVkQnk+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic29ydGluZy5zb3J0aW5nQ29sdW1uXCI+XG4gICAgICAgIHNvcnRlZCBieVxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic29ydGluZy5zb3J0aW5nQ29sdW1uLnRpdGxlOyBlbHNlIHNvcnRCeVRlbXBsYXRlXCI+XG4gICAgICAgICAgPGEgY2xhc3M9XCJvcmRlci10b2dnbGVcIiBbZnNNZW51VHJpZ2dlckZvcl09XCJvcmRlckNvbHVtbnNNZW51XCI+e3sgc29ydGluZy5zb3J0aW5nQ29sdW1uLnRpdGxlIH19PC9hPixcbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc29ydEJ5VGVtcGxhdGU+XG4gICAgICAgICAgPGEgY2xhc3M9XCJvcmRlci10b2dnbGVcIiBbZnNNZW51VHJpZ2dlckZvcl09XCJvcmRlckNvbHVtbnNNZW51XCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic29ydGluZy5zb3J0aW5nQ29sdW1uLmhlYWRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2E+LFxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8YSBjbGFzcz1cIm9yZGVyLXRvZ2dsZVwiIChjbGljayk9XCJ0b2dnbGVEaXJlY3Rpb24oKVwiPnt7IHNvcnRpbmcuc29ydGluZ0NvbHVtbi5mdWxsTmFtZURpcmVjdGlvbiB9fTwvYT48IS0tXG4gICAgLS0+PC9uZy1jb250YWluZXI+PCEtLVxuICAtLT48L25nLXRlbXBsYXRlPlxuICA8L3NtYWxsPiAgXG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { ChangeDetectorRef, Directive, ElementRef, Input, NgZone } from '@angular/core';
|
|
1
|
+
import { ChangeDetectorRef, Directive, ElementRef, Input, NgZone, Renderer2 } from '@angular/core';
|
|
2
2
|
import { Observable, Subject } from 'rxjs';
|
|
3
3
|
import { takeUntil } from 'rxjs/operators';
|
|
4
4
|
import { ReorderController, ReorderStrategy } from '../../classes/reorder-controller';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "../../classes/reorder-controller";
|
|
7
7
|
export class FsListDraggableListDirective {
|
|
8
|
-
constructor(_cdRef, _zone, _containerElement, _reorderController) {
|
|
8
|
+
constructor(_cdRef, _zone, _containerElement, _reorderController, _renderer) {
|
|
9
9
|
this._cdRef = _cdRef;
|
|
10
10
|
this._zone = _zone;
|
|
11
11
|
this._containerElement = _containerElement;
|
|
12
12
|
this._reorderController = _reorderController;
|
|
13
|
+
this._renderer = _renderer;
|
|
13
14
|
// Handlers
|
|
14
15
|
this._dragToHandler = this.dragTo.bind(this);
|
|
15
16
|
this._dragEndHandler = this.dragEnd.bind(this);
|
|
@@ -17,6 +18,8 @@ export class FsListDraggableListDirective {
|
|
|
17
18
|
this._dragInProgress = false;
|
|
18
19
|
this._dragStart$ = new Subject();
|
|
19
20
|
this._dragEnd$ = new Subject();
|
|
21
|
+
this._draggableChildrenDirectives = [];
|
|
22
|
+
this._selectedRowsDirectives = [];
|
|
20
23
|
this._destroy$ = new Subject();
|
|
21
24
|
}
|
|
22
25
|
get dragStart$() {
|
|
@@ -28,6 +31,18 @@ export class FsListDraggableListDirective {
|
|
|
28
31
|
get draggableItem() {
|
|
29
32
|
return this._rows[this._draggableElementIndex];
|
|
30
33
|
}
|
|
34
|
+
get _isMultipleDrag() {
|
|
35
|
+
return this._reorderController.multiple && this._selectedRowsDirectives.length > 1;
|
|
36
|
+
}
|
|
37
|
+
addDraggableDirective(dir) {
|
|
38
|
+
this._draggableChildrenDirectives.push(dir);
|
|
39
|
+
}
|
|
40
|
+
removeDraggableDirective(dir) {
|
|
41
|
+
const idx = this._draggableChildrenDirectives.indexOf(dir);
|
|
42
|
+
if (idx !== -1) {
|
|
43
|
+
this._draggableChildrenDirectives.splice(idx, 1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
31
46
|
/**
|
|
32
47
|
* Prepare draggable elements and add events
|
|
33
48
|
* @param draggableElement
|
|
@@ -43,6 +58,7 @@ export class FsListDraggableListDirective {
|
|
|
43
58
|
this._dragInProgress = true;
|
|
44
59
|
window.document.body.classList.add('reorder-in-progress');
|
|
45
60
|
this._draggableElement = draggableElement;
|
|
61
|
+
this._detectSelectedRows();
|
|
46
62
|
this.prepareElements();
|
|
47
63
|
this.initDraggableElement();
|
|
48
64
|
this._draggableElement.classList.add('draggable-elem');
|
|
@@ -64,6 +80,10 @@ export class FsListDraggableListDirective {
|
|
|
64
80
|
this.touchFix(event);
|
|
65
81
|
const elemIndex = this.lookupElementUnder(event);
|
|
66
82
|
const targetRow = this._rows[elemIndex];
|
|
83
|
+
if (this._multipleDraggableElementPreview) {
|
|
84
|
+
this._multipleDraggableElementPreview.style.left = event.clientX + 'px';
|
|
85
|
+
this._multipleDraggableElementPreview.style.top = event.clientY + 'px';
|
|
86
|
+
}
|
|
67
87
|
// Can not drag before first group and after last group
|
|
68
88
|
const swapWithBoundaryGroupElement = (elemIndex === 0 || elemIndex === this._rows.length - 1)
|
|
69
89
|
&& targetRow.isGroup
|
|
@@ -72,22 +92,29 @@ export class FsListDraggableListDirective {
|
|
|
72
92
|
if (elemIndex !== null) {
|
|
73
93
|
if (targetRow.readyToSwap) {
|
|
74
94
|
this.swapWithIndex(elemIndex);
|
|
75
|
-
this._draggableElementPreview
|
|
95
|
+
if (this._draggableElementPreview) {
|
|
96
|
+
this._draggableElementPreview.classList.remove('fs-list-no-drop');
|
|
97
|
+
}
|
|
76
98
|
}
|
|
77
99
|
else {
|
|
78
|
-
this._draggableElementPreview
|
|
100
|
+
if (this._draggableElementPreview) {
|
|
101
|
+
this._draggableElementPreview.classList.add('fs-list-no-drop');
|
|
102
|
+
}
|
|
79
103
|
}
|
|
80
104
|
}
|
|
105
|
+
// FIXME
|
|
106
|
+
if (this._draggableElementPreview) {
|
|
107
|
+
const topOffset = (event.y || event.clientY) - (this._draggableElementHeight / 2);
|
|
108
|
+
this._draggableElementPreview.style.top = topOffset + 'px';
|
|
109
|
+
}
|
|
81
110
|
}
|
|
82
|
-
const topOffset = (event.y || event.clientY) - (this._draggableElementHeight / 2);
|
|
83
|
-
this._draggableElementPreview.style.top = topOffset + 'px';
|
|
84
111
|
}
|
|
85
112
|
/**
|
|
86
113
|
* Remove events and classes after drag finish
|
|
87
114
|
*/
|
|
88
115
|
dragEnd() {
|
|
89
116
|
this._dragInProgress = false;
|
|
90
|
-
|
|
117
|
+
this._reorderController.dataController.finishReorder();
|
|
91
118
|
if (this._reorderController.movedCallback) {
|
|
92
119
|
this._reorderController.movedCallback(this._reorderController.dataController.reorderData);
|
|
93
120
|
}
|
|
@@ -101,13 +128,21 @@ export class FsListDraggableListDirective {
|
|
|
101
128
|
}
|
|
102
129
|
// this._reorderController.dataController.updateOrderByRows(this._rows);
|
|
103
130
|
///
|
|
131
|
+
this._containerElement.nativeElement.classList.remove('drag-hidden');
|
|
104
132
|
this._draggableElement.classList.remove('draggable-elem');
|
|
105
133
|
window.document.body.classList.remove('reorder-in-progress');
|
|
106
|
-
this._draggableElementPreview.remove();
|
|
107
134
|
this._draggableElement = null;
|
|
108
|
-
this._draggableElementPreview
|
|
135
|
+
if (this._draggableElementPreview) {
|
|
136
|
+
this._draggableElementPreview.remove();
|
|
137
|
+
this._draggableElementPreview = null;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
this._renderer.removeChild(document.body, this._multipleDraggableElementPreview);
|
|
141
|
+
this._multipleDraggableElementPreview = null;
|
|
142
|
+
}
|
|
109
143
|
this._draggableElementHeight = null;
|
|
110
144
|
this._draggableElementIndex = null;
|
|
145
|
+
this._selectedRowsDirectives = [];
|
|
111
146
|
window.removeEventListener('touchmove', this._windowTouchMoveHandler);
|
|
112
147
|
window.document.removeEventListener('mousemove', this._dragToHandler);
|
|
113
148
|
window.document.removeEventListener('touchmove', this._dragToHandler);
|
|
@@ -127,7 +162,7 @@ export class FsListDraggableListDirective {
|
|
|
127
162
|
* Store child rows
|
|
128
163
|
*/
|
|
129
164
|
lookupChildElements() {
|
|
130
|
-
this._childRowElements = Array.from(this._containerElement.nativeElement.querySelectorAll('tr'))
|
|
165
|
+
this._childRowElements = Array.from(this._containerElement.nativeElement.querySelectorAll('tr:not(.drag-hidden)'))
|
|
131
166
|
.reduce((acc, rowElement, index) => {
|
|
132
167
|
const element = { target: rowElement };
|
|
133
168
|
if (rowElement === this._draggableElement) {
|
|
@@ -154,19 +189,35 @@ export class FsListDraggableListDirective {
|
|
|
154
189
|
* Init draggable element
|
|
155
190
|
*/
|
|
156
191
|
initDraggableElement() {
|
|
192
|
+
var _a;
|
|
157
193
|
const el = this._draggableElement.cloneNode(true);
|
|
158
194
|
const data = this._draggableElement.getBoundingClientRect();
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
195
|
+
if (!(this._isMultipleDrag)) {
|
|
196
|
+
el.style.width = data.width + 'px';
|
|
197
|
+
el.style.left = data.left + 'px';
|
|
198
|
+
el.style.top = data.top + 'px';
|
|
199
|
+
el.classList.add('draggable');
|
|
200
|
+
this._containerElement.nativeElement.insertAdjacentElement('afterbegin', el);
|
|
201
|
+
this._draggableElementPreview = el;
|
|
202
|
+
this._draggableElementHeight = data.height;
|
|
203
|
+
this.updateDraggableDims();
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
// Create preview DIV
|
|
207
|
+
this._containerElement.nativeElement.classList.add('drag-hidden');
|
|
208
|
+
const selectedCount = (_a = this._selectedRowsDirectives) === null || _a === void 0 ? void 0 : _a.length;
|
|
209
|
+
const previewBlock = this._renderer.createElement('div');
|
|
210
|
+
previewBlock.style.left = data.left + 'px';
|
|
211
|
+
previewBlock.style.top = data.top + 'px';
|
|
212
|
+
const text = this._renderer.createText(`${selectedCount} selected items`);
|
|
213
|
+
this._renderer.appendChild(previewBlock, text);
|
|
214
|
+
this._renderer.addClass(previewBlock, 'preview-block');
|
|
215
|
+
this._renderer.appendChild(document.body, previewBlock);
|
|
216
|
+
this._multipleDraggableElementPreview = previewBlock;
|
|
217
|
+
}
|
|
167
218
|
}
|
|
168
219
|
/**
|
|
169
|
-
* Looking by stored row
|
|
220
|
+
* Looking by stored row elements for overlapped row
|
|
170
221
|
* @param event
|
|
171
222
|
*/
|
|
172
223
|
lookupElementUnder(event) {
|
|
@@ -190,19 +241,24 @@ export class FsListDraggableListDirective {
|
|
|
190
241
|
*/
|
|
191
242
|
swapWithIndex(index) {
|
|
192
243
|
const activeIndex = this._draggableElementIndex;
|
|
244
|
+
const selectedRows = this._selectedRowsDirectives
|
|
245
|
+
.map((d) => d.row)
|
|
246
|
+
.filter((d) => d.readyToSwap);
|
|
193
247
|
// Swap rows in global rows stack
|
|
194
248
|
this._reorderController
|
|
195
249
|
.dataController
|
|
196
|
-
.swapRows(this._rows[activeIndex], this._rows[index]);
|
|
250
|
+
.swapRows(this._rows[activeIndex], this._rows[index], selectedRows, this._isMultipleDrag);
|
|
197
251
|
// Swap visible rows
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
252
|
+
if (!this._isMultipleDrag) {
|
|
253
|
+
const activeRow = this._rows[activeIndex];
|
|
254
|
+
this._rows[activeIndex] = this._rows[index];
|
|
255
|
+
this._rows[index] = activeRow;
|
|
256
|
+
const activeElement = this._childRowElements[activeIndex].target;
|
|
257
|
+
this._childRowElements[activeIndex].active = false;
|
|
258
|
+
this._childRowElements[activeIndex].target = this._childRowElements[index].target;
|
|
259
|
+
this._childRowElements[index].target = activeElement;
|
|
260
|
+
this._childRowElements[index].active = true;
|
|
261
|
+
}
|
|
206
262
|
this._draggableElementIndex = index;
|
|
207
263
|
this._cdRef.detectChanges();
|
|
208
264
|
}
|
|
@@ -222,11 +278,20 @@ export class FsListDraggableListDirective {
|
|
|
222
278
|
doneResult
|
|
223
279
|
.pipe(takeUntil(this._destroy$))
|
|
224
280
|
.subscribe(() => {
|
|
225
|
-
console.log('enable');
|
|
226
281
|
this._reorderController.enableReorderAction();
|
|
227
282
|
});
|
|
228
283
|
}
|
|
229
284
|
}
|
|
285
|
+
_detectSelectedRows() {
|
|
286
|
+
this._draggableChildrenDirectives
|
|
287
|
+
.forEach((dir) => {
|
|
288
|
+
var _a;
|
|
289
|
+
const isRowSelected = (_a = this._reorderController.selectionController) === null || _a === void 0 ? void 0 : _a.isRowSelected(dir.row.data);
|
|
290
|
+
if (isRowSelected && !dir.row.isGroup) {
|
|
291
|
+
this._selectedRowsDirectives.push(dir);
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
}
|
|
230
295
|
/**
|
|
231
296
|
* Fix background when mobile
|
|
232
297
|
* @param e
|
|
@@ -242,15 +307,15 @@ export class FsListDraggableListDirective {
|
|
|
242
307
|
}
|
|
243
308
|
}
|
|
244
309
|
}
|
|
245
|
-
FsListDraggableListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListDraggableListDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.ReorderController }], target: i0.ɵɵFactoryTarget.Directive });
|
|
310
|
+
FsListDraggableListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListDraggableListDirective, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.ReorderController }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
246
311
|
FsListDraggableListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.16", type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: { _rows: ["rows", "_rows"] }, ngImport: i0 });
|
|
247
312
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsListDraggableListDirective, decorators: [{
|
|
248
313
|
type: Directive,
|
|
249
314
|
args: [{
|
|
250
315
|
selector: '[fsListDraggableList]',
|
|
251
316
|
}]
|
|
252
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.ReorderController }]; }, propDecorators: { _rows: [{
|
|
317
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.ReorderController }, { type: i0.Renderer2 }]; }, propDecorators: { _rows: [{
|
|
253
318
|
type: Input,
|
|
254
319
|
args: ['rows']
|
|
255
320
|
}] } });
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL2RyYWdnYWJsZS1saXN0L2RyYWdnYWJsZS1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhGLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7OztBQVF0RixNQUFNLE9BQU8sNEJBQTRCO0lBd0J2QyxZQUNVLE1BQXlCLEVBQ3pCLEtBQWEsRUFDYixpQkFBNkIsRUFDN0Isa0JBQXFDO1FBSHJDLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVk7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQXBCL0MsV0FBVztRQUNILG1CQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsb0JBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyw0QkFBdUIsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFbkMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFHeEIsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2xDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBS2hDLGNBQVMsR0FBRyxJ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QW1CO1FBQzdDLElBQUksVUFBVSxZQUFZLFVBQVUsRUFBRTtZQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUUvQyxVQUFVO2lCQUNQLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUMvQixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2hELENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssUUFBUSxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDMUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUNyRCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUM3QixDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQy9CLENBQUMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQzthQUNoQztZQUVELENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7OzBIQTNUVSw0QkFBNEI7OEdBQTVCLDRCQUE0Qjs0RkFBNUIsNEJBQTRCO2tCQUh4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7aUJBQ2xDO3NMQXFCUyxLQUFLO3NCQURaLEtBQUs7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSZW9yZGVyQ29udHJvbGxlciwgUmVvcmRlclN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9yZW9yZGVyLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Jvdyc7XG5pbXBvcnQgeyBGc0xpc3REcmFnQ2hpbGRSb3dFbGVtZW50IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9kcmFnZ2FibGUtbGlzdC5pbnRlcmZhY2UnO1xuXG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tmc0xpc3REcmFnZ2FibGVMaXN0XScsXG59KVxuZXhwb3J0IGNsYXNzIEZzTGlzdERyYWdnYWJsZUxpc3REaXJlY3RpdmUge1xuXG4gIC8vIERyYWdnYWJsZSBFbGVtZW50XG4gIHByaXZhdGUgX2RyYWdnYWJsZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIF9kcmFnZ2FibGVFbGVtZW50UHJldmlldzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2RyYWdnYWJsZUVsZW1lbnRIZWlnaHQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZHJhZ2dhYmxlRWxlbWVudEluZGV4OiBudW1iZXI7XG5cbiAgLy8gSGFuZGxlcnNcbiAgcHJpdmF0ZSBfZHJhZ1RvSGFuZGxlciA9IHRoaXMuZHJhZ1RvLmJpbmQodGhpcyk7XG4gIHByaXZhdGUgX2RyYWdFbmRIYW5kbGVyID0gdGhpcy5kcmFnRW5kLmJpbmQodGhpcyk7XG4gIHByaXZhdGUgX3dpbmRvd1RvdWNoTW92ZUhhbmRsZXIgPSAoKSA9PiB7fTtcblxuICBwcml2YXRlIF9kcmFnSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2NoaWxkUm93RWxlbWVudHM6IEZzTGlzdERyYWdDaGlsZFJvd0VsZW1lbnRbXTtcbiAgcHJpdmF0ZSBfZHJhZ1N0YXJ0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2RyYWdFbmQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBASW5wdXQoJ3Jvd3MnKVxuICBwcml2YXRlIF9yb3dzOiBSb3dbXTtcblxuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIF9jb250YWluZXJFbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX3Jlb3JkZXJDb250cm9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgZHJhZ1N0YXJ0JCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZHJhZ1N0YXJ0JC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBkcmFnRW5kJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZHJhZ0VuZCQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZHJhZ2dhYmxlSXRlbSgpOiBSb3cge1xuICAgIHJldHVybiB0aGlzLl9yb3dzW3RoaXMuX2RyYWdnYWJsZUVsZW1lbnRJbmRleF07XG4gIH1cblxuICAvKipcbiAgICogUHJlcGFyZSBkcmFnZ2FibGUgZWxlbWVudHMgYW5kIGFkZCBldmVudHNcbiAgICogQHBhcmFtIGRyYWdnYWJsZUVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBkcmFnU3RhcnQoZHJhZ2dhYmxlRWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fZHJhZ0luUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLl9yZW9yZGVyQ29udHJvbGxlci5zdGFydENhbGxiYWNrXG4gICAgICAmJiB0aGlzLl9yZW9yZGVyQ29udHJvbGxlci5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5LkFsd2F5c1xuICAgICkge1xuICAgICAgdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuc3RhcnRDYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHRoaXMuX2RyYWdJblByb2dyZXNzID0gdHJ1ZTtcblxuICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3Jlb3JkZXItaW4tcHJvZ3Jlc3MnKTtcblxuICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnQgPSBkcmFnZ2FibGVFbGVtZW50O1xuXG4gICAgdGhpcy5wcmVwYXJlRWxlbWVudHMoKTtcblxuICAgIHRoaXMuaW5pdERyYWdnYWJsZUVsZW1lbnQoKTtcblxuICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZHJhZ2dhYmxlLWVsZW0nKTtcblxuICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0b3VjaG1vdmUnLCB0aGlzLl93aW5kb3dUb3VjaE1vdmVIYW5kbGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5fZHJhZ1RvSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgd2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuX2RyYWdUb0hhbmRsZXIsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2RyYWdFbmRIYW5kbGVyKTtcbiAgICAgIHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuX2RyYWdFbmRIYW5kbGVyKTtcbiAgICAgIHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIHRoaXMuX2RyYWdFbmRIYW5kbGVyKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2RyYWdTdGFydCQubmV4dCgpO1xuXG4gIH1cblxuXG4gIC8qKlxuICAgKiBNb3ZlIGRyYWdnYWJsZSBlbGVtZW50cyBhbmQgc3dhcCBpdGVtc1xuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHB1YmxpYyBkcmFnVG8oZXZlbnQpIHtcbiAgICB0aGlzLnRvdWNoRml4KGV2ZW50KTtcbiAgICBjb25zdCBlbGVtSW5kZXggPSB0aGlzLmxvb2t1cEVsZW1lbnRVbmRlcihldmVudCk7XG4gICAgY29uc3QgdGFyZ2V0Um93ID0gdGhpcy5fcm93c1tlbGVtSW5kZXhdO1xuXG4gICAgLy8gQ2FuIG5vdCBkcmFnIGJlZm9yZSBmaXJzdCBncm91cCBhbmQgYWZ0ZXIgbGFzdCBncm91cFxuICAgIGNvbnN0IHN3YXBXaXRoQm91bmRhcnlHcm91cEVsZW1lbnQgPVxuICAgICAgKGVsZW1JbmRleCA9PT0gMCB8fCBlbGVtSW5kZXggPT09IHRoaXMuX3Jvd3MubGVuZ3RoIC0gMSlcbiAgICAgICYmIHRhcmdldFJvdy5pc0dyb3VwXG4gICAgICAmJiB0aGlzLmRyYWdnYWJsZUl0ZW0uaXNDaGlsZDtcblxuICAgIGlmICghc3dhcFdpdGhCb3VuZGFyeUdyb3VwRWxlbWVudCkge1xuICAgICAgaWYgKGVsZW1JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICBpZiAodGFyZ2V0Um93LnJlYWR5VG9Td2FwKSB7XG4gICAgICAgICAgdGhpcy5zd2FwV2l0aEluZGV4KGVsZW1JbmRleClcbiAgICAgICAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5jbGFzc0xpc3QucmVtb3ZlKCdmcy1saXN0LW5vLWRyb3AnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5jbGFzc0xpc3QuYWRkKCdmcy1saXN0LW5vLWRyb3AnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHRvcE9mZnNldCA9IChldmVudC55IHx8IGV2ZW50LmNsaWVudFkpIC0gKHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRIZWlnaHQgLyAyKTtcbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5zdHlsZS50b3AgPSAgdG9wT2Zmc2V0ICsgJ3B4JztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgZXZlbnRzIGFuZCBjbGFzc2VzIGFmdGVyIGRyYWcgZmluaXNoXG4gICAqL1xuICBwdWJsaWMgZHJhZ0VuZCgpIHtcbiAgICB0aGlzLl9kcmFnSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgLy8vXG4gICAgaWYgKHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLm1vdmVkQ2FsbGJhY2spIHtcbiAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLm1vdmVkQ2FsbGJhY2soXG4gICAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRhdGFDb250cm9sbGVyLnJlb3JkZXJEYXRhXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9yZW9yZGVyQ29udHJvbGxlci5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5LkFsd2F5cykge1xuICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuZG9uZUNhbGxiYWNrKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuZG9uZUNhbGxiYWNrKFxuICAgICAgICAgICAgdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuZGF0YUNvbnRyb2xsZXIucmVvcmRlckRhdGFcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5fd2FpdFVudGlsSXNOb3REb25lKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRhdGFDb250cm9sbGVyLnVwZGF0ZU9yZGVyQnlSb3dzKHRoaXMuX3Jvd3MpO1xuICAgIC8vL1xuXG4gICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnZ2FibGUtZWxlbScpO1xuICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ3Jlb3JkZXItaW4tcHJvZ3Jlc3MnKTtcbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5yZW1vdmUoKTtcblxuICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnQgPSBudWxsO1xuICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3ID0gbnVsbDtcbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50SGVpZ2h0ID0gbnVsbDtcbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50SW5kZXggPSBudWxsO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoICd0b3VjaG1vdmUnLCB0aGlzLl93aW5kb3dUb3VjaE1vdmVIYW5kbGVyKTtcbiAgICB3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5fZHJhZ1RvSGFuZGxlcik7XG4gICAgd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuX2RyYWdUb0hhbmRsZXIpO1xuICAgIHdpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5fZHJhZ0VuZEhhbmRsZXIpO1xuICAgIHdpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMuX2RyYWdFbmRIYW5kbGVyKTtcbiAgICB3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hjYW5jZWwnLCB0aGlzLl9kcmFnRW5kSGFuZGxlcik7XG5cbiAgICB0aGlzLl9kcmFnRW5kJC5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogbG9va2luZyByb3cgZWxlbWVudHMgYW5kIHNhdmUgdGhlaXIgZGltc1xuICAgKi9cbiAgcHJpdmF0ZSBwcmVwYXJlRWxlbWVudHMoKSB7XG4gICAgdGhpcy5sb29rdXBDaGlsZEVsZW1lbnRzKCk7XG4gICAgdGhpcy5jYWxjRWxlbWVudHNEaW1lbnNpb25zKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcmUgY2hpbGQgcm93c1xuICAgKi9cbiAgcHJpdmF0ZSBsb29rdXBDaGlsZEVsZW1lbnRzKCkge1xuICAgIHRoaXMuX2NoaWxkUm93RWxlbWVudHMgPSBBcnJheS5mcm9tKHRoaXMuX2NvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCd0cicpKVxuICAgICAgLnJlZHVjZSgoYWNjOiBhbnlbXSwgcm93RWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudDogYW55ID0geyB0YXJnZXQ6IHJvd0VsZW1lbnQgfTtcblxuICAgICAgICBpZiAocm93RWxlbWVudCA9PT0gdGhpcy5fZHJhZ2dhYmxlRWxlbWVudCkge1xuICAgICAgICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRJbmRleCA9IGluZGV4O1xuICAgICAgICAgIGVsZW1lbnQuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFjYy5wdXNoKGVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSkgYXMgRnNMaXN0RHJhZ0NoaWxkUm93RWxlbWVudFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGMgY2hpbGQgcm93cyBzaXplcy9vZmZzZXRzXG4gICAqL1xuICBwcml2YXRlIGNhbGNFbGVtZW50c0RpbWVuc2lvbnMoKSB7XG4gICAgdGhpcy5fY2hpbGRSb3dFbGVtZW50cy5mb3JFYWNoKChlbDogYW55LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgZGltcyA9IGVsLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGVsLnRvcCA9IGRpbXMudG9wO1xuICAgICAgZWwuaGVpZ2h0ID0gZGltcy5oZWlnaHQ7XG4gICAgICBlbC5jZW50ZXIgPSBkaW1zLnRvcCArIChkaW1zLmhlaWdodCAvIDIpO1xuICAgICAgZWwuaW5kZXggPSBpbmRleDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0IGRyYWdnYWJsZSBlbGVtZW50XG4gICAqL1xuICBwcml2YXRlIGluaXREcmFnZ2FibGVFbGVtZW50KCkge1xuICAgIGNvbnN0IGVsID0gdGhpcy5fZHJhZ2dhYmxlRWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuX2RyYWdnYWJsZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBlbC5zdHlsZS53aWR0aCA9IGRhdGEud2lkdGggKyAncHgnO1xuICAgIGVsLnN0eWxlLmxlZnQgPSBkYXRhLmxlZnQgKyAncHgnO1xuICAgIGVsLnN0eWxlLnRvcCA9IGRhdGEudG9wICsgJ3B4JztcblxuICAgIGVsLmNsYXNzTGlzdC5hZGQoJ2RyYWdnYWJsZScpO1xuXG4gICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50Lmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJiZWdpbicsIGVsKTtcblxuICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3ID0gZWw7XG4gICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEhlaWdodCA9IGRhdGEuaGVpZ2h0O1xuXG4gICAgdGhpcy51cGRhdGVEcmFnZ2FibGVEaW1zKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9va2luZyBieSBzdG9yZWQgcm93IGVsZW1lbnMgZm9yIG92ZXJsYXBwZWQgcm93XG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBsb29rdXBFbGVtZW50VW5kZXIoZXZlbnQpIHtcbiAgICBjb25zdCB0b3AgPSBldmVudC55IHx8IGV2ZW50LmNsaWVudFk7XG4gICAgY29uc3QgYm90dG9tID0gZXZlbnQueSB8fCBldmVudC5jbGllbnRZO1xuICAgIGxldCBlbGVtSW5kZXggPSBudWxsO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9jaGlsZFJvd0VsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBlbCA9IHRoaXMuX2NoaWxkUm93RWxlbWVudHNbaV07XG5cbiAgICAgIGlmICghZWwuYWN0aXZlKSB7XG4gICAgICAgIGlmICh0b3AgPCBlbC5jZW50ZXIgKyAoZWwuaGVpZ2h0IC8gMikgJiYgZWwuaW5kZXggPCB0aGlzLl9kcmFnZ2FibGVFbGVtZW50SW5kZXhcbiAgICAgICAgICB8fCBib3R0b20gPiBlbC5jZW50ZXIgLSAoZWwuaGVpZ2h0IC8gMikgICYmIGVsLmluZGV4ID4gdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4KSB7XG4gICAgICAgICAgZWxlbUluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbGVtSW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogU3dhcCByb3dzXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBzd2FwV2l0aEluZGV4KGluZGV4KSB7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLl9kcmFnZ2FibGVFbGVtZW50SW5kZXg7XG5cbiAgICAvLyBTd2FwIHJvd3MgaW4gZ2xvYmFsIHJvd3Mgc3RhY2tcbiAgICB0aGlzLl9yZW9yZGVyQ29udHJvbGxlclxuICAgICAgLmRhdGFDb250cm9sbGVyXG4gICAgICAuc3dhcFJvd3ModGhpcy5fcm93c1thY3RpdmVJbmRleF0gLCB0aGlzLl9yb3dzW2luZGV4XSk7XG5cbiAgICAvLyBTd2FwIHZpc2libGUgcm93c1xuICAgIGNvbnN0IGFjdGl2ZVJvdyA9IHRoaXMuX3Jvd3NbYWN0aXZlSW5kZXhdO1xuICAgIHRoaXMuX3Jvd3NbYWN0aXZlSW5kZXhdID0gdGhpcy5fcm93c1tpbmRleF07XG4gICAgdGhpcy5fcm93c1tpbmRleF0gPSBhY3RpdmVSb3c7XG5cbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5fY2hpbGRSb3dFbGVtZW50c1thY3RpdmVJbmRleF0udGFyZ2V0O1xuICAgIHRoaXMuX2NoaWxkUm93RWxlbWVudHNbYWN0aXZlSW5kZXhdLmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5fY2hpbGRSb3dFbGVtZW50c1thY3RpdmVJbmRleF0udGFyZ2V0ID0gdGhpcy5fY2hpbGRSb3dFbGVtZW50c1tpbmRleF0udGFyZ2V0O1xuICAgIHRoaXMuX2NoaWxkUm93RWxlbWVudHNbaW5kZXhdLnRhcmdldCA9IGFjdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5fY2hpbGRSb3dFbGVtZW50c1tpbmRleF0uYWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50SW5kZXggPSBpbmRleDtcblxuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY2VsbCB3aWR0aCBmb3IgZHJhZ2dhYmxlIGVsZW1cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlRHJhZ2dhYmxlRGltcygpIHtcbiAgICBjb25zdCBkcmFnZ2FibGVDZWxsczogYW55ID0gQXJyYXkuZnJvbSh0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpKTtcblxuICAgIEFycmF5LmZyb20oXG4gICAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpXG4gICAgKS5mb3JFYWNoKChlbGVtOiBhbnksIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBkaW1zID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGRyYWdnYWJsZUNlbGxzW2luZGV4XS5zdHlsZS53aWR0aCA9IGRpbXMud2lkdGggKyAncHgnO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2FpdFVudGlsSXNOb3REb25lKGRvbmVSZXN1bHQ6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAoZG9uZVJlc3VsdCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRpc2FibGVSZW9yZGVyQWN0aW9uKCk7XG5cbiAgICAgIGRvbmVSZXN1bHRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2VuYWJsZScpO1xuICAgICAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmVuYWJsZVJlb3JkZXJBY3Rpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpeCBiYWNrZ3JvdW5kIHdoZW4gbW9iaWxlXG4gICAqIEBwYXJhbSBlXG4gICAqL1xuICBwcml2YXRlIHRvdWNoRml4KGUpIHtcbiAgICBpZiAoISgnY2xpZW50WCcgaW4gZSkgJiYgISgnY2xpZW50WScgaW4gZSkpIHtcbiAgICAgIGNvbnN0IHRvdWNoZXMgPSBlLnRvdWNoZXMgfHwgZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7XG4gICAgICBpZiAodG91Y2hlcyAmJiB0b3VjaGVzLmxlbmd0aCkge1xuICAgICAgICBlLmNsaWVudFggPSB0b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgICAgIGUuY2xpZW50WSA9IHRvdWNoZXNbMF0uY2xpZW50WTtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9kaXJlY3RpdmVzL2RyYWdnYWJsZS1saXN0L2RyYWdnYWJsZS1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFXdEYsTUFBTSxPQUFPLDRCQUE0QjtJQXlCdkMsWUFDVSxNQUF5QixFQUN6QixLQUFhLEVBQ2IsaUJBQTZCLEVBQzdCLGtCQUFxQyxFQUNyQyxTQUFvQjtRQUpwQixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFZO1FBQzdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQXRCOUIsV0FBVztRQUNILG1CQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsb0JBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyw0QkFBdUIsR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFbkMsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFHeEIsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ2xD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QUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7O09BR0c7SUFDSyxRQUFRLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUMxQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQ3JELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQzdCLENBQUMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDL0IsQ0FBQyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2FBQ2hDO1lBRUQsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQzs7MEhBeFlVLDRCQUE0Qjs4R0FBNUIsNEJBQTRCOzRGQUE1Qiw0QkFBNEI7a0JBSHhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtpQkFDbEM7OE1BcUJTLEtBQUs7c0JBRFosS0FBSzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5wdXQsIE5nWm9uZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUmVvcmRlckNvbnRyb2xsZXIsIFJlb3JkZXJTdHJhdGVneSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uLy4uL21vZGVscy9yb3cnO1xuaW1wb3J0IHsgRnNMaXN0RHJhZ0NoaWxkUm93RWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZHJhZ2dhYmxlLWxpc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZzTGlzdFJlb3JkZXJEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBGc0xpc3REcmFnZ2FibGVSb3dEaXJlY3RpdmUgfSBmcm9tICcuLi9kcmFnZ2FibGUtcm93L2RyYWdnYWJsZS1yb3cuZGlyZWN0aXZlJztcblxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZnNMaXN0RHJhZ2dhYmxlTGlzdF0nLFxufSlcbmV4cG9ydCBjbGFzcyBGc0xpc3REcmFnZ2FibGVMaXN0RGlyZWN0aXZlIHtcbiAgLy8gRHJhZ2dhYmxlIEVsZW1lbnRcbiAgcHJpdmF0ZSBfZHJhZ2dhYmxlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBfbXVsdGlwbGVEcmFnZ2FibGVFbGVtZW50UHJldmlldzogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgX2RyYWdnYWJsZUVsZW1lbnRIZWlnaHQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZHJhZ2dhYmxlRWxlbWVudEluZGV4OiBudW1iZXI7XG5cbiAgLy8gSGFuZGxlcnNcbiAgcHJpdmF0ZSBfZHJhZ1RvSGFuZGxlciA9IHRoaXMuZHJhZ1RvLmJpbmQodGhpcyk7XG4gIHByaXZhdGUgX2RyYWdFbmRIYW5kbGVyID0gdGhpcy5kcmFnRW5kLmJpbmQodGhpcyk7XG4gIHByaXZhdGUgX3dpbmRvd1RvdWNoTW92ZUhhbmRsZXIgPSAoKSA9PiB7fTtcblxuICBwcml2YXRlIF9kcmFnSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2NoaWxkUm93RWxlbWVudHM6IEZzTGlzdERyYWdDaGlsZFJvd0VsZW1lbnRbXTtcbiAgcHJpdmF0ZSBfZHJhZ1N0YXJ0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgX2RyYWdFbmQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBASW5wdXQoJ3Jvd3MnKVxuICBwcml2YXRlIF9yb3dzOiBSb3dbXTtcbiAgcHJpdmF0ZSBfZHJhZ2dhYmxlQ2hpbGRyZW5EaXJlY3RpdmVzOiBGc0xpc3REcmFnZ2FibGVSb3dEaXJlY3RpdmVbXSA9IFtdO1xuICBwcml2YXRlIF9zZWxlY3RlZFJvd3NEaXJlY3RpdmVzOiBGc0xpc3REcmFnZ2FibGVSb3dEaXJlY3RpdmVbXSA9IFtdO1xuICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIF9jb250YWluZXJFbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX3Jlb3JkZXJDb250cm9sbGVyOiBSZW9yZGVyQ29udHJvbGxlcixcbiAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICApIHt9XG5cbiAgcHVibGljIGdldCBkcmFnU3RhcnQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9kcmFnU3RhcnQkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRyYWdFbmQkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9kcmFnRW5kJC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBkcmFnZ2FibGVJdGVtKCk6IFJvdyB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3NbdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4XTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9pc011bHRpcGxlRHJhZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIubXVsdGlwbGUgJiYgdGhpcy5fc2VsZWN0ZWRSb3dzRGlyZWN0aXZlcy5sZW5ndGggPiAxO1xuICB9XG5cbiAgcHVibGljIGFkZERyYWdnYWJsZURpcmVjdGl2ZShkaXI6IEZzTGlzdERyYWdnYWJsZVJvd0RpcmVjdGl2ZSk6IHZvaWQge1xuICAgIHRoaXMuX2RyYWdnYWJsZUNoaWxkcmVuRGlyZWN0aXZlcy5wdXNoKGRpcik7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRHJhZ2dhYmxlRGlyZWN0aXZlKGRpcjogRnNMaXN0RHJhZ2dhYmxlUm93RGlyZWN0aXZlKTogdm9pZCB7XG4gICAgY29uc3QgaWR4ID0gdGhpcy5fZHJhZ2dhYmxlQ2hpbGRyZW5EaXJlY3RpdmVzLmluZGV4T2YoZGlyKTtcblxuICAgIGlmIChpZHggIT09IC0xKSB7XG4gICAgICB0aGlzLl9kcmFnZ2FibGVDaGlsZHJlbkRpcmVjdGl2ZXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByZXBhcmUgZHJhZ2dhYmxlIGVsZW1lbnRzIGFuZCBhZGQgZXZlbnRzXG4gICAqIEBwYXJhbSBkcmFnZ2FibGVFbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZHJhZ1N0YXJ0KGRyYWdnYWJsZUVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgaWYgKHRoaXMuX2RyYWdJblByb2dyZXNzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuc3RhcnRDYWxsYmFja1xuICAgICAgJiYgdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuc3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneS5BbHdheXNcbiAgICApIHtcbiAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLnN0YXJ0Q2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kcmFnSW5Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICB3aW5kb3cuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdyZW9yZGVyLWluLXByb2dyZXNzJyk7XG5cbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50ID0gZHJhZ2dhYmxlRWxlbWVudDtcblxuICAgIHRoaXMuX2RldGVjdFNlbGVjdGVkUm93cygpO1xuICAgIHRoaXMucHJlcGFyZUVsZW1lbnRzKCk7XG5cbiAgICB0aGlzLmluaXREcmFnZ2FibGVFbGVtZW50KCk7XG5cbiAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2RyYWdnYWJsZS1lbGVtJyk7XG5cbiAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCAndG91Y2htb3ZlJywgdGhpcy5fd2luZG93VG91Y2hNb3ZlSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgICAgd2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuX2RyYWdUb0hhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLl9kcmFnVG9IYW5kbGVyLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgd2luZG93LmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9kcmFnRW5kSGFuZGxlcik7XG4gICAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLl9kcmFnRW5kSGFuZGxlcik7XG4gICAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hjYW5jZWwnLCB0aGlzLl9kcmFnRW5kSGFuZGxlcik7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kcmFnU3RhcnQkLm5leHQoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIE1vdmUgZHJhZ2dhYmxlIGVsZW1lbnRzIGFuZCBzd2FwIGl0ZW1zXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHVibGljIGRyYWdUbyhldmVudCkge1xuICAgIHRoaXMudG91Y2hGaXgoZXZlbnQpO1xuICAgIGNvbnN0IGVsZW1JbmRleCA9IHRoaXMubG9va3VwRWxlbWVudFVuZGVyKGV2ZW50KTtcbiAgICBjb25zdCB0YXJnZXRSb3cgPSB0aGlzLl9yb3dzW2VsZW1JbmRleF07XG5cbiAgICBpZiAodGhpcy5fbXVsdGlwbGVEcmFnZ2FibGVFbGVtZW50UHJldmlldykge1xuICAgICAgdGhpcy5fbXVsdGlwbGVEcmFnZ2FibGVFbGVtZW50UHJldmlldy5zdHlsZS5sZWZ0ID0gZXZlbnQuY2xpZW50WCArICdweCc7XG4gICAgICB0aGlzLl9tdWx0aXBsZURyYWdnYWJsZUVsZW1lbnRQcmV2aWV3LnN0eWxlLnRvcCA9IGV2ZW50LmNsaWVudFkgKyAncHgnO1xuICAgIH1cblxuICAgIC8vIENhbiBub3QgZHJhZyBiZWZvcmUgZmlyc3QgZ3JvdXAgYW5kIGFmdGVyIGxhc3QgZ3JvdXBcbiAgICBjb25zdCBzd2FwV2l0aEJvdW5kYXJ5R3JvdXBFbGVtZW50ID1cbiAgICAgIChlbGVtSW5kZXggPT09IDAgfHwgZWxlbUluZGV4ID09PSB0aGlzLl9yb3dzLmxlbmd0aCAtIDEpXG4gICAgICAmJiB0YXJnZXRSb3cuaXNHcm91cFxuICAgICAgJiYgdGhpcy5kcmFnZ2FibGVJdGVtLmlzQ2hpbGQ7XG5cblxuICAgIGlmICghc3dhcFdpdGhCb3VuZGFyeUdyb3VwRWxlbWVudCkge1xuICAgICAgaWYgKGVsZW1JbmRleCAhPT0gbnVsbCkge1xuICAgICAgICBpZiAodGFyZ2V0Um93LnJlYWR5VG9Td2FwKSB7XG4gICAgICAgICAgdGhpcy5zd2FwV2l0aEluZGV4KGVsZW1JbmRleCk7XG4gICAgICAgICAgaWYgKHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5jbGFzc0xpc3QucmVtb3ZlKCdmcy1saXN0LW5vLWRyb3AnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5jbGFzc0xpc3QuYWRkKCdmcy1saXN0LW5vLWRyb3AnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gRklYTUVcbiAgICAgIGlmICh0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldykge1xuICAgICAgICBjb25zdCB0b3BPZmZzZXQgPSAoZXZlbnQueSB8fCBldmVudC5jbGllbnRZKSAtICh0aGlzLl9kcmFnZ2FibGVFbGVtZW50SGVpZ2h0IC8gMik7XG4gICAgICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3LnN0eWxlLnRvcCA9ICB0b3BPZmZzZXQgKyAncHgnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgZXZlbnRzIGFuZCBjbGFzc2VzIGFmdGVyIGRyYWcgZmluaXNoXG4gICAqL1xuICBwdWJsaWMgZHJhZ0VuZCgpIHtcbiAgICB0aGlzLl9kcmFnSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRhdGFDb250cm9sbGVyLmZpbmlzaFJlb3JkZXIoKTtcblxuICAgIGlmICh0aGlzLl9yZW9yZGVyQ29udHJvbGxlci5tb3ZlZENhbGxiYWNrKSB7XG5cbiAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLm1vdmVkQ2FsbGJhY2soXG4gICAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRhdGFDb250cm9sbGVyLnJlb3JkZXJEYXRhXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9yZW9yZGVyQ29udHJvbGxlci5zdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5LkFsd2F5cykge1xuICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuZG9uZUNhbGxiYWNrKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuZG9uZUNhbGxiYWNrKFxuICAgICAgICAgICAgdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuZGF0YUNvbnRyb2xsZXIucmVvcmRlckRhdGFcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5fd2FpdFVudGlsSXNOb3REb25lKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRhdGFDb250cm9sbGVyLnVwZGF0ZU9yZGVyQnlSb3dzKHRoaXMuX3Jvd3MpO1xuICAgIC8vL1xuICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdkcmFnLWhpZGRlbicpO1xuICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ2dhYmxlLWVsZW0nKTtcbiAgICB3aW5kb3cuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdyZW9yZGVyLWluLXByb2dyZXNzJyk7XG4gICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudCA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5fZHJhZ2dhYmxlRWxlbWVudFByZXZpZXcpIHtcbiAgICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3LnJlbW92ZSgpO1xuXG4gICAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHksIHRoaXMuX211bHRpcGxlRHJhZ2dhYmxlRWxlbWVudFByZXZpZXcpO1xuICAgICAgdGhpcy5fbXVsdGlwbGVEcmFnZ2FibGVFbGVtZW50UHJldmlldyA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEhlaWdodCA9IG51bGw7XG4gICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4ID0gbnVsbDtcbiAgICB0aGlzLl9zZWxlY3RlZFJvd3NEaXJlY3RpdmVzID0gW107XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciggJ3RvdWNobW92ZScsIHRoaXMuX3dpbmRvd1RvdWNoTW92ZUhhbmRsZXIpO1xuICAgIHdpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLl9kcmFnVG9IYW5kbGVyKTtcbiAgICB3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5fZHJhZ1RvSGFuZGxlcik7XG4gICAgd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9kcmFnRW5kSGFuZGxlcik7XG4gICAgd2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5fZHJhZ0VuZEhhbmRsZXIpO1xuICAgIHdpbmRvdy5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIHRoaXMuX2RyYWdFbmRIYW5kbGVyKTtcblxuICAgIHRoaXMuX2RyYWdFbmQkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBsb29raW5nIHJvdyBlbGVtZW50cyBhbmQgc2F2ZSB0aGVpciBkaW1zXG4gICAqL1xuICBwcml2YXRlIHByZXBhcmVFbGVtZW50cygpIHtcbiAgICB0aGlzLmxvb2t1cENoaWxkRWxlbWVudHMoKTtcbiAgICB0aGlzLmNhbGNFbGVtZW50c0RpbWVuc2lvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSBjaGlsZCByb3dzXG4gICAqL1xuICBwcml2YXRlIGxvb2t1cENoaWxkRWxlbWVudHMoKSB7XG4gICAgdGhpcy5fY2hpbGRSb3dFbGVtZW50cyA9IEFycmF5LmZyb20odGhpcy5fY29udGFpbmVyRWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyOm5vdCguZHJhZy1oaWRkZW4pJykpXG4gICAgICAucmVkdWNlKChhY2M6IGFueVtdLCByb3dFbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSB7IHRhcmdldDogcm93RWxlbWVudCB9O1xuXG4gICAgICAgIGlmIChyb3dFbGVtZW50ID09PSB0aGlzLl9kcmFnZ2FibGVFbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgZWxlbWVudC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYWNjLnB1c2goZWxlbWVudCk7XG5cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdKSBhcyBGc0xpc3REcmFnQ2hpbGRSb3dFbGVtZW50W107XG4gIH1cblxuICAvKipcbiAgICogQ2FsYyBjaGlsZCByb3dzIHNpemVzL29mZnNldHNcbiAgICovXG4gIHByaXZhdGUgY2FsY0VsZW1lbnRzRGltZW5zaW9ucygpIHtcbiAgICB0aGlzLl9jaGlsZFJvd0VsZW1lbnRzLmZvckVhY2goKGVsOiBhbnksIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBkaW1zID0gZWwudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgZWwudG9wID0gZGltcy50b3A7XG4gICAgICBlbC5oZWlnaHQgPSBkaW1zLmhlaWdodDtcbiAgICAgIGVsLmNlbnRlciA9IGRpbXMudG9wICsgKGRpbXMuaGVpZ2h0IC8gMik7XG4gICAgICBlbC5pbmRleCA9IGluZGV4O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgZHJhZ2dhYmxlIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgaW5pdERyYWdnYWJsZUVsZW1lbnQoKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzLl9kcmFnZ2FibGVFbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5fZHJhZ2dhYmxlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGlmICghKHRoaXMuX2lzTXVsdGlwbGVEcmFnKSkge1xuICAgICAgZWwuc3R5bGUud2lkdGggPSBkYXRhLndpZHRoICsgJ3B4JztcbiAgICAgIGVsLnN0eWxlLmxlZnQgPSBkYXRhLmxlZnQgKyAncHgnO1xuICAgICAgZWwuc3R5bGUudG9wID0gZGF0YS50b3AgKyAncHgnO1xuICAgICAgZWwuY2xhc3NMaXN0LmFkZCgnZHJhZ2dhYmxlJyk7XG5cbiAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudC5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyYmVnaW4nLCBlbCk7XG5cbiAgICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRQcmV2aWV3ID0gZWw7XG4gICAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50SGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XG5cbiAgICAgIHRoaXMudXBkYXRlRHJhZ2dhYmxlRGltcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDcmVhdGUgcHJldmlldyBESVZcbiAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdkcmFnLWhpZGRlbicpO1xuXG4gICAgICBjb25zdCBzZWxlY3RlZENvdW50ID0gdGhpcy5fc2VsZWN0ZWRSb3dzRGlyZWN0aXZlcz8ubGVuZ3RoO1xuICAgICAgY29uc3QgcHJldmlld0Jsb2NrID0gdGhpcy5fcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBwcmV2aWV3QmxvY2suc3R5bGUubGVmdCA9IGRhdGEubGVmdCArICdweCc7XG4gICAgICBwcmV2aWV3QmxvY2suc3R5bGUudG9wID0gZGF0YS50b3AgKyAncHgnO1xuXG4gICAgICBjb25zdCB0ZXh0ID0gdGhpcy5fcmVuZGVyZXIuY3JlYXRlVGV4dChgJHtzZWxlY3RlZENvdW50fSBzZWxlY3RlZCBpdGVtc2ApO1xuXG4gICAgICB0aGlzLl9yZW5kZXJlci5hcHBlbmRDaGlsZChwcmV2aWV3QmxvY2ssIHRleHQpO1xuICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3MocHJldmlld0Jsb2NrLCAncHJldmlldy1ibG9jaycpO1xuICAgICAgdGhpcy5fcmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgcHJldmlld0Jsb2NrKTtcbiAgICAgIHRoaXMuX211bHRpcGxlRHJhZ2dhYmxlRWxlbWVudFByZXZpZXcgPSBwcmV2aWV3QmxvY2s7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogTG9va2luZyBieSBzdG9yZWQgcm93IGVsZW1lbnRzIGZvciBvdmVybGFwcGVkIHJvd1xuICAgKiBAcGFyYW0gZXZlbnRcbiAgICovXG4gIHByaXZhdGUgbG9va3VwRWxlbWVudFVuZGVyKGV2ZW50KSB7XG4gICAgY29uc3QgdG9wID0gZXZlbnQueSB8fCBldmVudC5jbGllbnRZO1xuICAgIGNvbnN0IGJvdHRvbSA9IGV2ZW50LnkgfHwgZXZlbnQuY2xpZW50WTtcbiAgICBsZXQgZWxlbUluZGV4ID0gbnVsbDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fY2hpbGRSb3dFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZWwgPSB0aGlzLl9jaGlsZFJvd0VsZW1lbnRzW2ldO1xuXG4gICAgICBpZiAoIWVsLmFjdGl2ZSkge1xuICAgICAgICBpZiAodG9wIDwgZWwuY2VudGVyICsgKGVsLmhlaWdodCAvIDIpICYmIGVsLmluZGV4IDwgdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4XG4gICAgICAgICAgfHwgYm90dG9tID4gZWwuY2VudGVyIC0gKGVsLmhlaWdodCAvIDIpICAmJiBlbC5pbmRleCA+IHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRJbmRleCkge1xuICAgICAgICAgIGVsZW1JbmRleCA9IGk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbUluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFN3YXAgcm93c1xuICAgKiBAcGFyYW0gaW5kZXhcbiAgICovXG4gIHByaXZhdGUgc3dhcFdpdGhJbmRleChpbmRleCkge1xuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5fZHJhZ2dhYmxlRWxlbWVudEluZGV4O1xuICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuX3NlbGVjdGVkUm93c0RpcmVjdGl2ZXNcbiAgICAgIC5tYXAoKGQpID0+IGQucm93KVxuICAgICAgLmZpbHRlcigoZCkgPT4gZC5yZWFkeVRvU3dhcCk7XG5cbiAgICAvLyBTd2FwIHJvd3MgaW4gZ2xvYmFsIHJvd3Mgc3RhY2tcbiAgICB0aGlzLl9yZW9yZGVyQ29udHJvbGxlclxuICAgICAgLmRhdGFDb250cm9sbGVyXG4gICAgICAuc3dhcFJvd3MoXG4gICAgICAgIHRoaXMuX3Jvd3NbYWN0aXZlSW5kZXhdLFxuICAgICAgICB0aGlzLl9yb3dzW2luZGV4XSxcbiAgICAgICAgc2VsZWN0ZWRSb3dzLFxuICAgICAgICB0aGlzLl9pc011bHRpcGxlRHJhZyxcbiAgICAgICk7XG5cbiAgICAvLyBTd2FwIHZpc2libGUgcm93c1xuICAgIGlmICghdGhpcy5faXNNdWx0aXBsZURyYWcpIHtcbiAgICAgIGNvbnN0IGFjdGl2ZVJvdyA9IHRoaXMuX3Jvd3NbYWN0aXZlSW5kZXhdO1xuICAgICAgdGhpcy5fcm93c1thY3RpdmVJbmRleF0gPSB0aGlzLl9yb3dzW2luZGV4XTtcbiAgICAgIHRoaXMuX3Jvd3NbaW5kZXhdID0gYWN0aXZlUm93O1xuXG4gICAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5fY2hpbGRSb3dFbGVtZW50c1thY3RpdmVJbmRleF0udGFyZ2V0O1xuICAgICAgdGhpcy5fY2hpbGRSb3dFbGVtZW50c1thY3RpdmVJbmRleF0uYWN0aXZlID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuX2NoaWxkUm93RWxlbWVudHNbYWN0aXZlSW5kZXhdLnRhcmdldCA9IHRoaXMuX2NoaWxkUm93RWxlbWVudHNbaW5kZXhdLnRhcmdldDtcbiAgICAgIHRoaXMuX2NoaWxkUm93RWxlbWVudHNbaW5kZXhdLnRhcmdldCA9IGFjdGl2ZUVsZW1lbnQ7XG4gICAgICB0aGlzLl9jaGlsZFJvd0VsZW1lbnRzW2luZGV4XS5hY3RpdmUgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuX2RyYWdnYWJsZUVsZW1lbnRJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgY2VsbCB3aWR0aCBmb3IgZHJhZ2dhYmxlIGVsZW1cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlRHJhZ2dhYmxlRGltcygpIHtcbiAgICBjb25zdCBkcmFnZ2FibGVDZWxsczogYW55ID0gQXJyYXkuZnJvbSh0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpKTtcblxuICAgIEFycmF5LmZyb20oXG4gICAgICB0aGlzLl9kcmFnZ2FibGVFbGVtZW50UHJldmlldy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpXG4gICAgKS5mb3JFYWNoKChlbGVtOiBhbnksIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBkaW1zID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGRyYWdnYWJsZUNlbGxzW2luZGV4XS5zdHlsZS53aWR0aCA9IGRpbXMud2lkdGggKyAncHgnO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2FpdFVudGlsSXNOb3REb25lKGRvbmVSZXN1bHQ6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAoZG9uZVJlc3VsdCBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgIHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLmRpc2FibGVSZW9yZGVyQWN0aW9uKCk7XG5cbiAgICAgIGRvbmVSZXN1bHRcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlUmVvcmRlckFjdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9kZXRlY3RTZWxlY3RlZFJvd3MoKTogdm9pZCB7XG4gICAgdGhpcy5fZHJhZ2dhYmxlQ2hpbGRyZW5EaXJlY3RpdmVzXG4gICAgICAuZm9yRWFjaCgoZGlyOiBGc0xpc3REcmFnZ2FibGVSb3dEaXJlY3RpdmUpID0+IHtcbiAgICAgICAgY29uc3QgaXNSb3dTZWxlY3RlZCA9IHRoaXMuX3Jlb3JkZXJDb250cm9sbGVyLnNlbGVjdGlvbkNvbnRyb2xsZXI/LmlzUm93U2VsZWN0ZWQoZGlyLnJvdy5kYXRhKTtcblxuICAgICAgICBpZiAoaXNSb3dTZWxlY3RlZCAmJiAhZGlyLnJvdy5pc0dyb3VwKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzRGlyZWN0aXZlcy5wdXNoKGRpcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpeCBiYWNrZ3JvdW5kIHdoZW4gbW9iaWxlXG4gICAqIEBwYXJhbSBlXG4gICAqL1xuICBwcml2YXRlIHRvdWNoRml4KGUpIHtcbiAgICBpZiAoISgnY2xpZW50WCcgaW4gZSkgJiYgISgnY2xpZW50WScgaW4gZSkpIHtcbiAgICAgIGNvbnN0IHRvdWNoZXMgPSBlLnRvdWNoZXMgfHwgZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXM7XG4gICAgICBpZiAodG91Y2hlcyAmJiB0b3VjaGVzLmxlbmd0aCkge1xuICAgICAgICBlLmNsaWVudFggPSB0b3VjaGVzWzBdLmNsaWVudFg7XG4gICAgICAgIGUuY2xpZW50WSA9IHRvdWNoZXNbMF0uY2xpZW50WTtcbiAgICAgIH1cblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxufVxuIl19
|