@firestitch/list 12.20.0 → 13.0.0
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/list-controller.d.ts +33 -28
- package/app/interfaces/listconfig.interface.d.ts +2 -1
- package/esm2020/app/classes/data-controller.mjs +367 -0
- package/esm2020/app/classes/external-params-controller.mjs +147 -0
- package/esm2020/app/classes/list-controller.mjs +752 -0
- package/{esm2015/app/classes/pagination-controller.js → esm2020/app/classes/pagination-controller.mjs} +2 -3
- package/{esm2015/app/classes/persistance-controller.js → esm2020/app/classes/persistance-controller.mjs} +4 -4
- package/esm2020/app/classes/reorder-controller.mjs +182 -0
- package/esm2020/app/classes/selection-controller.mjs +468 -0
- package/esm2020/app/components/body/body.component.mjs +64 -0
- package/esm2020/app/components/body/row/actions/actions.component.mjs +94 -0
- package/esm2020/app/components/body/row/cell/cell.component.mjs +107 -0
- package/esm2020/app/components/body/row/inline-action/inline-action.component.mjs +33 -0
- package/esm2020/app/components/body/row/menu-action/menu-action.component.mjs +46 -0
- package/esm2020/app/components/body/row/row.component.mjs +308 -0
- package/esm2020/app/components/customize-cols/customize-cols.component.mjs +68 -0
- package/esm2020/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +16 -0
- package/esm2020/app/components/footer/footer-row/footer-row.component.mjs +28 -0
- package/esm2020/app/components/footer/footer.component.mjs +31 -0
- package/esm2020/app/components/head/head-cell/head-cell.component.mjs +29 -0
- package/esm2020/app/components/head/head.component.mjs +103 -0
- package/esm2020/app/components/list/list.component.mjs +382 -0
- package/esm2020/app/components/loader/loader.component.mjs +40 -0
- package/esm2020/app/components/manage-saved-filters/manage-saved-filters.component.mjs +76 -0
- package/esm2020/app/components/pagination/pagination.component.mjs +37 -0
- package/esm2020/app/components/saved-filters/saved-filters.component.mjs +29 -0
- package/esm2020/app/components/status/status.component.mjs +66 -0
- package/{esm2015/app/directives/cell/cell.directive.js → esm2020/app/directives/cell/cell.directive.mjs} +4 -4
- package/{esm2015/app/directives/column/column.directive.js → esm2020/app/directives/column/column.directive.mjs} +4 -4
- package/{esm2015/app/directives/content/content.directive.js → esm2020/app/directives/content/content.directive.mjs} +4 -4
- package/{esm2015/app/directives/content-init/content-init.directive.js → esm2020/app/directives/content-init/content-init.directive.mjs} +4 -4
- package/esm2020/app/directives/draggable-list/draggable-list.directive.mjs +328 -0
- package/esm2020/app/directives/draggable-row/draggable-row.directive.mjs +78 -0
- package/{esm2015/app/directives/empty-state/empty-state.directive.js → esm2020/app/directives/empty-state/empty-state.directive.mjs} +4 -4
- package/{esm2015/app/directives/footer/footer.directive.js → esm2020/app/directives/footer/footer.directive.mjs} +4 -4
- package/{esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js → esm2020/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs} +4 -4
- package/{esm2015/app/directives/group-footer/group-footer.directive.js → esm2020/app/directives/group-footer/group-footer.directive.mjs} +4 -4
- package/{esm2015/app/directives/group-header/group-header.directive.js → esm2020/app/directives/group-header/group-header.directive.mjs} +4 -4
- package/{esm2015/app/directives/header/header.directive.js → esm2020/app/directives/header/header.directive.mjs} +4 -4
- package/{esm2015/app/directives/heading/heading.directive.js → esm2020/app/directives/heading/heading.directive.mjs} +4 -4
- package/{esm2015/app/directives/heading-container/heading-container.directive.js → esm2020/app/directives/heading-container/heading-container.directive.mjs} +4 -4
- package/{esm2015/app/directives/subheading/subheading.directive.js → esm2020/app/directives/subheading/subheading.directive.mjs} +4 -4
- package/{esm2015/app/fs-list.module.js → esm2020/app/fs-list.module.mjs} +5 -5
- package/esm2020/app/interfaces/listconfig.interface.mjs +2 -0
- package/{esm2015/app/interfaces/pagination.interface.js → esm2020/app/interfaces/pagination.interface.mjs} +1 -1
- package/esm2020/app/models/row-action.model.mjs +90 -0
- package/{esm2015/app/pipes/action-label.js → esm2020/app/pipes/action-label.mjs} +4 -4
- package/{esm2015/app/services/group-expand-notifier.service.js → esm2020/app/services/group-expand-notifier.service.mjs} +4 -4
- package/fesm2015/{firestitch-list.js → firestitch-list.mjs} +2434 -2501
- package/fesm2015/firestitch-list.mjs.map +1 -0
- package/fesm2020/firestitch-list.mjs +5816 -0
- package/fesm2020/firestitch-list.mjs.map +1 -0
- package/package.json +20 -7
- package/bundles/firestitch-list.umd.js +0 -7147
- package/bundles/firestitch-list.umd.js.map +0 -1
- package/esm2015/app/classes/data-controller.js +0 -365
- package/esm2015/app/classes/external-params-controller.js +0 -147
- package/esm2015/app/classes/list-controller.js +0 -743
- package/esm2015/app/classes/reorder-controller.js +0 -183
- package/esm2015/app/classes/selection-controller.js +0 -468
- package/esm2015/app/components/body/body.component.js +0 -69
- package/esm2015/app/components/body/row/actions/actions.component.js +0 -99
- package/esm2015/app/components/body/row/cell/cell.component.js +0 -113
- package/esm2015/app/components/body/row/inline-action/inline-action.component.js +0 -37
- package/esm2015/app/components/body/row/menu-action/menu-action.component.js +0 -50
- package/esm2015/app/components/body/row/row.component.js +0 -315
- package/esm2015/app/components/customize-cols/customize-cols.component.js +0 -72
- package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +0 -20
- package/esm2015/app/components/footer/footer-row/footer-row.component.js +0 -33
- package/esm2015/app/components/footer/footer.component.js +0 -36
- package/esm2015/app/components/head/head-cell/head-cell.component.js +0 -34
- package/esm2015/app/components/head/head.component.js +0 -108
- package/esm2015/app/components/list/list.component.js +0 -388
- package/esm2015/app/components/loader/loader.component.js +0 -45
- package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +0 -79
- package/esm2015/app/components/pagination/pagination.component.js +0 -42
- package/esm2015/app/components/saved-filters/saved-filters.component.js +0 -32
- package/esm2015/app/components/status/status.component.js +0 -72
- package/esm2015/app/directives/draggable-list/draggable-list.directive.js +0 -330
- package/esm2015/app/directives/draggable-row/draggable-row.directive.js +0 -79
- package/esm2015/app/interfaces/listconfig.interface.js +0 -2
- package/esm2015/app/models/row-action.model.js +0 -90
- package/fesm2015/firestitch-list.js.map +0 -1
- /package/{esm2015/app/classes/actions-controller.js → esm2020/app/classes/actions-controller.mjs} +0 -0
- /package/{esm2015/app/classes/columns-controller.js → esm2020/app/classes/columns-controller.mjs} +0 -0
- /package/{esm2015/app/classes/index.js → esm2020/app/classes/index.mjs} +0 -0
- /package/{esm2015/app/classes/sorting-controller.js → esm2020/app/classes/sorting-controller.mjs} +0 -0
- /package/{esm2015/app/directives/index.js → esm2020/app/directives/index.mjs} +0 -0
- /package/{esm2015/app/enums/button-type.enum.js → esm2020/app/enums/button-type.enum.mjs} +0 -0
- /package/{esm2015/app/enums/page-change-type.enum.js → esm2020/app/enums/page-change-type.enum.mjs} +0 -0
- /package/{esm2015/app/enums/pagination-strategy.enum.js → esm2020/app/enums/pagination-strategy.enum.mjs} +0 -0
- /package/{esm2015/app/enums/row-type.enum.js → esm2020/app/enums/row-type.enum.mjs} +0 -0
- /package/{esm2015/app/enums/state.enum.js → esm2020/app/enums/state.enum.mjs} +0 -0
- /package/{esm2015/app/fs-list.providers.js → esm2020/app/fs-list.providers.mjs} +0 -0
- /package/{esm2015/app/interfaces/cellconfig.interface.js → esm2020/app/interfaces/cellconfig.interface.mjs} +0 -0
- /package/{esm2015/app/interfaces/column-config.interface.js → esm2020/app/interfaces/column-config.interface.mjs} +0 -0
- /package/{esm2015/app/interfaces/draggable-list.interface.js → esm2020/app/interfaces/draggable-list.interface.mjs} +0 -0
- /package/{esm2015/app/interfaces/external-params.interface.js → esm2020/app/interfaces/external-params.interface.mjs} +0 -0
- /package/{esm2015/app/interfaces/index.js → esm2020/app/interfaces/index.mjs} +0 -0
- /package/{esm2015/app/interfaces/sorting-change-event.interface.js → esm2020/app/interfaces/sorting-change-event.interface.mjs} +0 -0
- /package/{esm2015/app/models/column-async-attribute.js → esm2020/app/models/column-async-attribute.mjs} +0 -0
- /package/{esm2015/app/models/column-attributes.js → esm2020/app/models/column-attributes.mjs} +0 -0
- /package/{esm2015/app/models/column.model.js → esm2020/app/models/column.model.mjs} +0 -0
- /package/{esm2015/app/models/row/base-row.js → esm2020/app/models/row/base-row.mjs} +0 -0
- /package/{esm2015/app/models/row/child-row.js → esm2020/app/models/row/child-row.mjs} +0 -0
- /package/{esm2015/app/models/row/group-footer-row.js → esm2020/app/models/row/group-footer-row.mjs} +0 -0
- /package/{esm2015/app/models/row/group-row.js → esm2020/app/models/row/group-row.mjs} +0 -0
- /package/{esm2015/app/models/row/simple-row.js → esm2020/app/models/row/simple-row.mjs} +0 -0
- /package/{esm2015/app/models/row.js → esm2020/app/models/row.mjs} +0 -0
- /package/{esm2015/app/models/styleConfig.model.js → esm2020/app/models/styleConfig.model.mjs} +0 -0
- /package/{esm2015/app/pipes/index.js → esm2020/app/pipes/index.mjs} +0 -0
- /package/{esm2015/firestitch-list.js → esm2020/firestitch-list.mjs} +0 -0
- /package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { filter, takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { ReorderPosition, ReorderStrategy, } from '../../classes/reorder-controller';
|
|
5
|
-
import { SelectionChangeType, SelectionController } from '../../classes/selection-controller';
|
|
6
|
-
import { SortingController } from '../../classes/sorting-controller';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/material/checkbox";
|
|
9
|
-
import * as i2 from "./head-cell/head-cell.component";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
export class FsHeadComponent {
|
|
12
|
-
constructor(_cdRef) {
|
|
13
|
-
this._cdRef = _cdRef;
|
|
14
|
-
this.selectedAll = false;
|
|
15
|
-
this.ReorderStrategyEnum = ReorderStrategy;
|
|
16
|
-
this._destroy$ = new Subject();
|
|
17
|
-
}
|
|
18
|
-
get leftDragDropEnabled() {
|
|
19
|
-
return this.reorderEnabled
|
|
20
|
-
&& this.reorderPosition === ReorderPosition.Left
|
|
21
|
-
&& this.activeFiltersCount === 0;
|
|
22
|
-
}
|
|
23
|
-
get rightDragDropEnabled() {
|
|
24
|
-
return this.reorderEnabled
|
|
25
|
-
&& this.reorderPosition === ReorderPosition.Right
|
|
26
|
-
&& this.activeFiltersCount === 0;
|
|
27
|
-
}
|
|
28
|
-
ngOnInit() {
|
|
29
|
-
this._initSorting();
|
|
30
|
-
this._initSelection();
|
|
31
|
-
}
|
|
32
|
-
ngOnDestroy() {
|
|
33
|
-
this._destroy$.next();
|
|
34
|
-
this._destroy$.complete();
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Select All Visible Rows
|
|
38
|
-
*
|
|
39
|
-
* @param event
|
|
40
|
-
*/
|
|
41
|
-
selectAll(event) {
|
|
42
|
-
this.selection.selectAllVisibleRows(event.checked);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Track By for improve change detection
|
|
46
|
-
*
|
|
47
|
-
* @param index
|
|
48
|
-
*/
|
|
49
|
-
trackByFn(index) {
|
|
50
|
-
return index;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Subscribe to sorting change
|
|
54
|
-
*/
|
|
55
|
-
_initSorting() {
|
|
56
|
-
this.sorting.sortingChanged$
|
|
57
|
-
.pipe(takeUntil(this._destroy$))
|
|
58
|
-
.subscribe(() => {
|
|
59
|
-
this._cdRef.detectChanges();
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Subscribe to selection change
|
|
64
|
-
*/
|
|
65
|
-
_initSelection() {
|
|
66
|
-
if (this.selection) {
|
|
67
|
-
this.selection.selectionChange$
|
|
68
|
-
.pipe(filter(({ type }) => (type === SelectionChangeType.AllVisibleSelectionChange
|
|
69
|
-
|| type === SelectionChangeType.SelectedAll
|
|
70
|
-
|| type === SelectionChangeType.RowSelectionChange)), takeUntil(this._destroy$))
|
|
71
|
-
.subscribe(({ type, payload: status }) => {
|
|
72
|
-
this.selectedAll = status;
|
|
73
|
-
this._cdRef.markForCheck();
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
FsHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsHeadComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
79
|
-
FsHeadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FsHeadComponent, selector: "[fs-list-head]", inputs: { sorting: "sorting", columns: "columns", hasRowActions: "hasRowActions", selection: "selection", activeFiltersCount: "activeFiltersCount", reorderEnabled: "reorderEnabled", reorderPosition: "reorderPosition", reorderStrategy: "reorderStrategy" }, viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<tr class=\"fs-list-row\">\n <!-- Drag -->\n <th *ngIf=\"leftDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Selection -->\n <th *ngIf=\"selection && !(selection.disabled$ | async)\" class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox (change)=\"selectAll($event)\" [checked]=\"selectedAll\"></mat-checkbox>\n </th>\n\n <!-- Content -->\n <th \n fs-head-cell *ngFor=\"let column of columns; trackBy: trackByFn\"\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n\n <!-- Drag -->\n <th *ngIf=\"rightDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n </th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n", styles: ["th.fs-list-col-selection{width:1%;text-align:left}th.sorting{cursor:pointer}th.sorting:hover{background-color:#f6f6f6}th.sorting{background-image:none}th.left{text-align:left}th.center{text-align:center}th.right{text-align:right}\n"], components: [{ type: i1.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i2.FsHeadCellComponent, selector: "[fs-head-cell]" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsHeadComponent, decorators: [{
|
|
81
|
-
type: Component,
|
|
82
|
-
args: [{
|
|
83
|
-
selector: '[fs-list-head]',
|
|
84
|
-
templateUrl: './head.component.html',
|
|
85
|
-
styleUrls: ['./head.component.scss'],
|
|
86
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
87
|
-
}]
|
|
88
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { sorting: [{
|
|
89
|
-
type: Input
|
|
90
|
-
}], columns: [{
|
|
91
|
-
type: Input
|
|
92
|
-
}], hasRowActions: [{
|
|
93
|
-
type: Input
|
|
94
|
-
}], selection: [{
|
|
95
|
-
type: Input
|
|
96
|
-
}], activeFiltersCount: [{
|
|
97
|
-
type: Input
|
|
98
|
-
}], reorderEnabled: [{
|
|
99
|
-
type: Input
|
|
100
|
-
}], reorderPosition: [{
|
|
101
|
-
type: Input
|
|
102
|
-
}], reorderStrategy: [{
|
|
103
|
-
type: Input
|
|
104
|
-
}], rowsContainer: [{
|
|
105
|
-
type: ViewChild,
|
|
106
|
-
args: ['rowsContainer', { read: ViewContainerRef, static: true }]
|
|
107
|
-
}] } });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaGVhZC9oZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9oZWFkL2hlYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFHTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsR0FDaEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFVckUsTUFBTSxPQUFPLGVBQWU7SUFtQjFCLFlBQW9CLE1BQXlCO1FBQXpCLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBTHRDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ1gsd0JBQW1CLEdBQUcsZUFBZSxDQUFDO1FBRTlDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWUsQ0FBQztJQUVsRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxjQUFjO2VBQ3JCLElBQUksQ0FBQyxlQUFlLEtBQUssZUFBZSxDQUFDLElBQUk7ZUFDN0MsSUFBSSxDQUFDLGtCQUFrQixLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsY0FBYztlQUNyQixJQUFJLENBQUMsZUFBZSxLQUFLLGVBQWUsQ0FBQyxLQUFLO2VBQzlDLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxLQUF3QjtRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxLQUFLO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWTtRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWU7YUFDekIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQjtpQkFDNUIsSUFBSSxDQUNILE1BQU0sQ0FDSixDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQ1osSUFBSSxLQUFLLG1CQUFtQixDQUFDLHlCQUF5QjttQkFDbkQsSUFBSSxLQUFLLG1CQUFtQixDQUFDLFdBQVc7bUJBQ3hDLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FDbkQsQ0FDRixFQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQzFCO2lCQUNBLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO2dCQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQztnQkFFMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQzs7NkdBaEdVLGVBQWU7aUdBQWYsZUFBZSxpWkFXVSxnQkFBZ0IsMkNDMUN0RCxtZ0NBOEJBOzRGRENhLGVBQWU7a0JBTjNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsV0FBVyxFQUFFLHVCQUF1QjtvQkFDcEMsU0FBUyxFQUFFLENBQUMsdUJBQXVCLENBQUM7b0JBQ3BDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDt3R0FHaUIsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxrQkFBa0I7c0JBQWpDLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBR0MsYUFBYTtzQkFEbkIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgUmVvcmRlclBvc2l0aW9uLFxuICBSZW9yZGVyU3RyYXRlZ3ksXG59IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNoYW5nZVR5cGUsIFNlbGVjdGlvbkNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcbmltcG9ydCB7IFNvcnRpbmdDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9zb3J0aW5nLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbHVtbi5tb2RlbCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW2ZzLWxpc3QtaGVhZF0nLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2hlYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzSGVhZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBwdWJsaWMgc29ydGluZzogU29ydGluZ0NvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb2x1bW5zOiBDb2x1bW5bXTtcbiAgQElucHV0KCkgcHVibGljIGhhc1Jvd0FjdGlvbnM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBhY3RpdmVGaWx0ZXJzQ291bnQ6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIHJlb3JkZXJFbmFibGVkOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgcmVvcmRlclBvc2l0aW9uOiBSZW9yZGVyUG9zaXRpb24gfCBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgcmVvcmRlclN0cmF0ZWd5OiBSZW9yZGVyU3RyYXRlZ3kgfCBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ3Jvd3NDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgcm93c0NvbnRhaW5lcjtcblxuICBwdWJsaWMgc2VsZWN0ZWRBbGwgPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneUVudW0gPSBSZW9yZGVyU3RyYXRlZ3k7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgcHVibGljIGdldCBsZWZ0RHJhZ0Ryb3BFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlb3JkZXJFbmFibGVkXG4gICAgICAmJiB0aGlzLnJlb3JkZXJQb3NpdGlvbiA9PT0gUmVvcmRlclBvc2l0aW9uLkxlZnRcbiAgICAgICYmIHRoaXMuYWN0aXZlRmlsdGVyc0NvdW50ID09PSAwO1xuICB9XG5cbiAgcHVibGljIGdldCByaWdodERyYWdEcm9wRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZW9yZGVyRW5hYmxlZFxuICAgICAgJiYgdGhpcy5yZW9yZGVyUG9zaXRpb24gPT09IFJlb3JkZXJQb3NpdGlvbi5SaWdodFxuICAgICAgJiYgdGhpcy5hY3RpdmVGaWx0ZXJzQ291bnQgPT09IDA7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5faW5pdFNvcnRpbmcoKTtcbiAgICB0aGlzLl9pbml0U2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IEFsbCBWaXNpYmxlIFJvd3NcbiAgICpcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc2VsZWN0QWxsKGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdEFsbFZpc2libGVSb3dzKGV2ZW50LmNoZWNrZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrIEJ5IGZvciBpbXByb3ZlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzb3J0aW5nIGNoYW5nZVxuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdFNvcnRpbmcoKSB7XG4gICAgdGhpcy5zb3J0aW5nLnNvcnRpbmdDaGFuZ2VkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic2NyaWJlIHRvIHNlbGVjdGlvbiBjaGFuZ2VcbiAgICovXG4gIHByaXZhdGUgX2luaXRTZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25DaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICh7IHR5cGUgfSkgPT4gKFxuICAgICAgICAgICAgICB0eXBlID09PSBTZWxlY3Rpb25DaGFuZ2VUeXBlLkFsbFZpc2libGVTZWxlY3Rpb25DaGFuZ2VcbiAgICAgICAgICAgICAgfHwgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbFxuICAgICAgICAgICAgICB8fCB0eXBlID09PSBTZWxlY3Rpb25DaGFuZ2VUeXBlLlJvd1NlbGVjdGlvbkNoYW5nZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoeyB0eXBlLCBwYXlsb2FkOiBzdGF0dXMgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBbGwgPSBzdGF0dXM7XG5cbiAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8dHIgY2xhc3M9XCJmcy1saXN0LXJvd1wiPlxuICA8IS0tIERyYWcgLS0+XG4gIDx0aCAqbmdJZj1cImxlZnREcmFnRHJvcEVuYWJsZWRcIlxuICAgICAgY2xhc3M9XCJmcy1saXN0LWNvbCBkcmFnLWNvbFwiPlxuICA8L3RoPlxuXG4gIDwhLS0gU2VsZWN0aW9uIC0tPlxuICA8dGggKm5nSWY9XCJzZWxlY3Rpb24gJiYgIShzZWxlY3Rpb24uZGlzYWJsZWQkIHwgYXN5bmMpXCIgY2xhc3M9XCJmcy1saXN0LWNvbCBmcy1saXN0LWNvbC1zZWxlY3Rpb25cIj5cbiAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwic2VsZWN0QWxsKCRldmVudClcIiBbY2hlY2tlZF09XCJzZWxlY3RlZEFsbFwiPjwvbWF0LWNoZWNrYm94PlxuICA8L3RoPlxuXG4gIDwhLS0gQ29udGVudCAtLT5cbiAgPHRoIFxuICAgIGZzLWhlYWQtY2VsbCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgc29ydGluZy5zb3J0QnkoY29sdW1uKVwiXG4gICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgIFtjbGFzcy5zb3J0aW5nXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgW25nQ2xhc3NdPVwiY29sdW1uLmhlYWRlckNvbmZpZ3MuY2xhc3Nlc0FycmF5XCJcbiAgICBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbi5oZWFkZXJDb25maWdzLmNvbHNwYW5cIlxuICAgIFthdHRyLndpZHRoXT1cImNvbHVtbi53aWR0aFwiPlxuICA8L3RoPlxuXG4gIDwhLS0gRHJhZyAtLT5cbiAgPHRoICpuZ0lmPVwicmlnaHREcmFnRHJvcEVuYWJsZWRcIlxuICAgICAgY2xhc3M9XCJmcy1saXN0LWNvbCBkcmFnLWNvbFwiPlxuICA8L3RoPlxuXG4gIDwhLS0gUm93IEFjdGlvbnMgLS0+XG4gIDx0aCAqbmdJZj1cImhhc1Jvd0FjdGlvbnMgJiYgIShyZW9yZGVyRW5hYmxlZCAmJiByZW9yZGVyU3RyYXRlZ3kgPT09IFJlb3JkZXJTdHJhdGVneUVudW0uTWFudWFsKVwiIGNsYXNzPVwiZnMtbGlzdC1jb2wgcm93LWFjdGlvbnNcIj48L3RoPlxuPC90cj5cbiJdfQ==
|
|
@@ -1,388 +0,0 @@
|
|
|
1
|
-
import { Location } from '@angular/common';
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, Inject, Input, Optional, Output, QueryList, TemplateRef, ViewChild, } from '@angular/core';
|
|
3
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
|
-
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
5
|
-
import { getNormalizedPath } from '@firestitch/common';
|
|
6
|
-
import { DrawerRef } from '@firestitch/drawer';
|
|
7
|
-
import { FilterComponent } from '@firestitch/filter';
|
|
8
|
-
import { FsScrollService } from '@firestitch/scroll';
|
|
9
|
-
import { SelectionDialog } from '@firestitch/selection';
|
|
10
|
-
import { Subject } from 'rxjs';
|
|
11
|
-
import { filter, skip, take, takeUntil } from 'rxjs/operators';
|
|
12
|
-
import { cloneDeep, mergeWith } from 'lodash-es';
|
|
13
|
-
import { List } from '../../classes/list-controller';
|
|
14
|
-
import { PersistanceController } from '../../classes/persistance-controller';
|
|
15
|
-
import { ReorderController } from '../../classes/reorder-controller';
|
|
16
|
-
import { FsListHeadingContainerDirective, FsListHeadingDirective, FsListSubheadingDirective } from '../../directives';
|
|
17
|
-
import { FsListColumnDirective } from '../../directives/column/column.directive';
|
|
18
|
-
import { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';
|
|
19
|
-
import { FS_LIST_DEFAULT_CONFIG } from '../../fs-list.providers';
|
|
20
|
-
import { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';
|
|
21
|
-
import { CustomizeColsDialogComponent } from '../customize-cols/customize-cols.component';
|
|
22
|
-
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "../../classes/reorder-controller";
|
|
24
|
-
import * as i2 from "@firestitch/scroll";
|
|
25
|
-
import * as i3 from "@angular/material/dialog";
|
|
26
|
-
import * as i4 from "@firestitch/drawer";
|
|
27
|
-
import * as i5 from "@firestitch/selection";
|
|
28
|
-
import * as i6 from "../../services/group-expand-notifier.service";
|
|
29
|
-
import * as i7 from "@angular/router";
|
|
30
|
-
import * as i8 from "../../classes/persistance-controller";
|
|
31
|
-
import * as i9 from "@angular/common";
|
|
32
|
-
import * as i10 from "@firestitch/filter";
|
|
33
|
-
import * as i11 from "../status/status.component";
|
|
34
|
-
import * as i12 from "../head/head.component";
|
|
35
|
-
import * as i13 from "../body/body.component";
|
|
36
|
-
import * as i14 from "../footer/footer.component";
|
|
37
|
-
import * as i15 from "../loader/loader.component";
|
|
38
|
-
import * as i16 from "../pagination/pagination.component";
|
|
39
|
-
import * as i17 from "../../directives/content-init/content-init.directive";
|
|
40
|
-
import * as i18 from "../../directives/draggable-list/draggable-list.directive";
|
|
41
|
-
import * as i19 from "../../directives/footer/footer.directive";
|
|
42
|
-
export class FsListComponent {
|
|
43
|
-
constructor(reorderController, _defaultOptions, _scroll, _dialogRef, _drawerRef, _el, _selectionDialog, _dialog, _cdRef, _groupExpandNotifier, _router, _route, _persistance, _location) {
|
|
44
|
-
this.reorderController = reorderController;
|
|
45
|
-
this._defaultOptions = _defaultOptions;
|
|
46
|
-
this._scroll = _scroll;
|
|
47
|
-
this._dialogRef = _dialogRef;
|
|
48
|
-
this._drawerRef = _drawerRef;
|
|
49
|
-
this._el = _el;
|
|
50
|
-
this._selectionDialog = _selectionDialog;
|
|
51
|
-
this._dialog = _dialog;
|
|
52
|
-
this._cdRef = _cdRef;
|
|
53
|
-
this._groupExpandNotifier = _groupExpandNotifier;
|
|
54
|
-
this._router = _router;
|
|
55
|
-
this._route = _route;
|
|
56
|
-
this._persistance = _persistance;
|
|
57
|
-
this._location = _location;
|
|
58
|
-
this.classFsList = true;
|
|
59
|
-
this.loaderLines = 3;
|
|
60
|
-
this.filtersReady = new EventEmitter();
|
|
61
|
-
this.keywordVisible = true;
|
|
62
|
-
// Event will fired if action remove: true will clicked
|
|
63
|
-
this.rowRemoved = new EventEmitter();
|
|
64
|
-
this.firstLoad = true;
|
|
65
|
-
this._filterParamsReady = false;
|
|
66
|
-
this._inDialog = !!this._dialogRef || !!this._drawerRef;
|
|
67
|
-
this._destroy = new Subject();
|
|
68
|
-
}
|
|
69
|
-
set config(config) {
|
|
70
|
-
this._initWithConfig(config);
|
|
71
|
-
}
|
|
72
|
-
set filterReference(component) {
|
|
73
|
-
this._filterRef = component;
|
|
74
|
-
this.list.actions.setFilterRef(component);
|
|
75
|
-
this._emitFiltersReadyEvent();
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Set columns to config
|
|
79
|
-
* Create Column Model instances
|
|
80
|
-
*/
|
|
81
|
-
set columnTemplates(listColumnDirectives) {
|
|
82
|
-
this._listColumnDirectives = listColumnDirectives;
|
|
83
|
-
if (this.list) {
|
|
84
|
-
this.list.tranformTemplatesToColumns(listColumnDirectives);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
set _emptyStateTemplate(template) {
|
|
88
|
-
if (this.list) {
|
|
89
|
-
this.list.emptyStateTemplate = template;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Return reference for filter
|
|
94
|
-
*/
|
|
95
|
-
get filterRef() {
|
|
96
|
-
return this._filterRef;
|
|
97
|
-
}
|
|
98
|
-
set groupEnabled(value) {
|
|
99
|
-
this.list.groupEnabled(value);
|
|
100
|
-
}
|
|
101
|
-
get groupEnabled() {
|
|
102
|
-
return this.list.dataController.groupEnabled;
|
|
103
|
-
}
|
|
104
|
-
get hasFilterKeyword() {
|
|
105
|
-
return this.list.filterInput && this.keywordVisible;
|
|
106
|
-
}
|
|
107
|
-
get hasStatus() {
|
|
108
|
-
return this.list.status &&
|
|
109
|
-
(this.list.sorting.isDefined || this.list.paging.enabled) &&
|
|
110
|
-
(!this.reorderController.enabled ||
|
|
111
|
-
(this.reorderController.enabled && this.reorderController.status)) &&
|
|
112
|
-
((this.list.scrollable && this.list.scrollable.status) || !this.list.scrollable);
|
|
113
|
-
}
|
|
114
|
-
get paginatorVisible() {
|
|
115
|
-
return this.list.paging.enabled
|
|
116
|
-
&& !this.firstLoad
|
|
117
|
-
&& !this.list.scrollable
|
|
118
|
-
&& !this.list.emptyStateEnabled
|
|
119
|
-
&& this.list.dataController.visibleRowsCount > 0
|
|
120
|
-
&& this.list.paging.pages > 1;
|
|
121
|
-
}
|
|
122
|
-
get filtersQuery() {
|
|
123
|
-
return this.list.filtersQuery;
|
|
124
|
-
}
|
|
125
|
-
ngAfterContentInit() {
|
|
126
|
-
if (this.list.afterInit) {
|
|
127
|
-
this.list.afterInit(this);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
ngOnInit() {
|
|
131
|
-
this._subscribeToRemoveRow();
|
|
132
|
-
this._subscribeToGroupExpandStatusChange();
|
|
133
|
-
}
|
|
134
|
-
ngOnDestroy() {
|
|
135
|
-
if (this.list) {
|
|
136
|
-
this.list.destroy();
|
|
137
|
-
}
|
|
138
|
-
this._destroy.next();
|
|
139
|
-
this._destroy.complete();
|
|
140
|
-
}
|
|
141
|
-
nextPage() {
|
|
142
|
-
this.list.paging.goNext();
|
|
143
|
-
}
|
|
144
|
-
prevPage() {
|
|
145
|
-
this.list.paging.goPrev();
|
|
146
|
-
}
|
|
147
|
-
firstPage() {
|
|
148
|
-
this.list.paging.goFirst();
|
|
149
|
-
}
|
|
150
|
-
lastPage() {
|
|
151
|
-
this.list.paging.goLast();
|
|
152
|
-
}
|
|
153
|
-
reload() {
|
|
154
|
-
this.list.reload();
|
|
155
|
-
}
|
|
156
|
-
getData(trackBy) {
|
|
157
|
-
return this.list.getData(trackBy);
|
|
158
|
-
}
|
|
159
|
-
hasData(trackBy) {
|
|
160
|
-
return this.list.hasData(trackBy);
|
|
161
|
-
}
|
|
162
|
-
updateData(rows, trackBy) {
|
|
163
|
-
return this.list.dataController.updateData(rows, trackBy);
|
|
164
|
-
}
|
|
165
|
-
replaceRow(row, trackBy) {
|
|
166
|
-
return this.list.dataController.replaceData(row, trackBy);
|
|
167
|
-
}
|
|
168
|
-
updateSelectionConfig(config) {
|
|
169
|
-
this.list.selection.updateConfig(config);
|
|
170
|
-
}
|
|
171
|
-
resetSelectionActions() {
|
|
172
|
-
this.list.selection.resetActions();
|
|
173
|
-
}
|
|
174
|
-
enableSelection() {
|
|
175
|
-
this.list.selection.enableSelection();
|
|
176
|
-
}
|
|
177
|
-
disableSelection() {
|
|
178
|
-
this.list.selection.disableSelection();
|
|
179
|
-
}
|
|
180
|
-
removeData(data) {
|
|
181
|
-
return this.list.dataController.removeData(data);
|
|
182
|
-
}
|
|
183
|
-
setHeading(heading) {
|
|
184
|
-
this.list.heading = heading;
|
|
185
|
-
}
|
|
186
|
-
setSubheading(subheading) {
|
|
187
|
-
this.list.subheading = subheading;
|
|
188
|
-
}
|
|
189
|
-
reorderStart() {
|
|
190
|
-
this.reorderController.enableReorder();
|
|
191
|
-
}
|
|
192
|
-
reorderFinish() {
|
|
193
|
-
this.reorderController.disableReorder();
|
|
194
|
-
}
|
|
195
|
-
setActions(actions) {
|
|
196
|
-
if (actions) {
|
|
197
|
-
this.list.actions.clearActions();
|
|
198
|
-
this.list.actions.setActions(actions);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
filterReady() {
|
|
202
|
-
this.list.filtersReady$.next();
|
|
203
|
-
this._filterParamsReady = true;
|
|
204
|
-
this._emitFiltersReadyEvent();
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Update visibility for specific column
|
|
208
|
-
*/
|
|
209
|
-
columnVisibility(name, show) {
|
|
210
|
-
this.columnsVisibility([{ name, show }]);
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Update visibility for list of specific columns
|
|
214
|
-
*/
|
|
215
|
-
columnsVisibility(columns) {
|
|
216
|
-
this.list.columns.updateVisibilityForCols(columns);
|
|
217
|
-
}
|
|
218
|
-
_emitFiltersReadyEvent() {
|
|
219
|
-
if (!!this.filterRef && this._filterParamsReady) {
|
|
220
|
-
this.filtersReady.emit();
|
|
221
|
-
this.keywordVisible = this.filterRef.hasKeyword;
|
|
222
|
-
this._cdRef.markForCheck();
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Initialize config for list
|
|
227
|
-
*
|
|
228
|
-
* @param config
|
|
229
|
-
*/
|
|
230
|
-
_initWithConfig(config) {
|
|
231
|
-
if (this.list) {
|
|
232
|
-
this.list.destroy();
|
|
233
|
-
}
|
|
234
|
-
const defaultOpts = this._defaultOptions
|
|
235
|
-
? cloneDeep(this._defaultOptions)
|
|
236
|
-
: {};
|
|
237
|
-
const listConfig = mergeWith(defaultOpts, config, this._configMergeCustomizer);
|
|
238
|
-
if (listConfig.persist !== false) {
|
|
239
|
-
this._restorePersistance(listConfig.persist);
|
|
240
|
-
}
|
|
241
|
-
this._updateCustomizeAction(listConfig.actions);
|
|
242
|
-
this.list = new List(this._el, listConfig, this._scroll, this._selectionDialog, this._router, this._route, this._persistance, this._inDialog);
|
|
243
|
-
this.noRowsHighlight = !this.list.rowHighlight;
|
|
244
|
-
this._waitFirstLoad();
|
|
245
|
-
this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions, this.list.selection);
|
|
246
|
-
if (this._listColumnDirectives) {
|
|
247
|
-
this.list.tranformTemplatesToColumns(this._listColumnDirectives);
|
|
248
|
-
}
|
|
249
|
-
this._listenSortingChange();
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Find action with customize flag and re-declare click function for CustomizeColsDialog
|
|
253
|
-
*
|
|
254
|
-
* @param actions
|
|
255
|
-
*/
|
|
256
|
-
_updateCustomizeAction(actions) {
|
|
257
|
-
const customizeAction = actions === null || actions === void 0 ? void 0 : actions.find((action) => action.customize);
|
|
258
|
-
if (customizeAction) {
|
|
259
|
-
const actionClickFn = customizeAction.click;
|
|
260
|
-
customizeAction.click = () => {
|
|
261
|
-
if (actionClickFn) {
|
|
262
|
-
actionClickFn(null);
|
|
263
|
-
}
|
|
264
|
-
this._dialog.open(CustomizeColsDialogComponent, {
|
|
265
|
-
data: {
|
|
266
|
-
columns: this.list.columns.columnsForDialog,
|
|
267
|
-
changeFn: this.list.columns.changeFn,
|
|
268
|
-
},
|
|
269
|
-
})
|
|
270
|
-
.afterClosed()
|
|
271
|
-
.pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
|
|
272
|
-
.subscribe((data) => {
|
|
273
|
-
if (data) {
|
|
274
|
-
this.list.columns.updateVisibilityForCols(data);
|
|
275
|
-
this._cdRef.markForCheck();
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* Update sorting in filter
|
|
283
|
-
*/
|
|
284
|
-
_listenSortingChange() {
|
|
285
|
-
this.list.sorting
|
|
286
|
-
.sortingChanged$
|
|
287
|
-
.pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
|
|
288
|
-
.subscribe((sort) => {
|
|
289
|
-
this._filterRef.updateSort(sort);
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
_subscribeToRemoveRow() {
|
|
293
|
-
this.rowRemoved
|
|
294
|
-
.pipe(takeUntil(this._destroy))
|
|
295
|
-
.subscribe((row) => {
|
|
296
|
-
this.list.dataController.removeData(row);
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
_subscribeToGroupExpandStatusChange() {
|
|
300
|
-
if (this.list.dataController.hasGroups) {
|
|
301
|
-
this._groupExpandNotifier.expandStatusChange$
|
|
302
|
-
.pipe(takeUntil(this._destroy))
|
|
303
|
-
.subscribe((row) => {
|
|
304
|
-
this.list.dataController.toggleRowGroup(row);
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
_waitFirstLoad() {
|
|
309
|
-
this.list.loading$
|
|
310
|
-
.pipe(skip(1), filter((value) => !value), take(1), takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
|
|
311
|
-
.subscribe(() => {
|
|
312
|
-
this.firstLoad = false;
|
|
313
|
-
this._cdRef.markForCheck();
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
_configMergeCustomizer(objValue, srcValue) {
|
|
317
|
-
if (Array.isArray(objValue)) {
|
|
318
|
-
return objValue;
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
_restorePersistance(persistConfig) {
|
|
322
|
-
const namespace = getNormalizedPath(this._location);
|
|
323
|
-
this._persistance.setConfig(persistConfig, namespace, this._inDialog);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
FsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsListComponent, deps: [{ token: i1.ReorderController }, { token: FS_LIST_DEFAULT_CONFIG, optional: true }, { token: i2.FsScrollService, optional: true }, { token: i3.MatDialogRef, optional: true }, { token: i4.DrawerRef, optional: true }, { token: i0.ElementRef }, { token: i5.SelectionDialog }, { token: i3.MatDialog }, { token: i0.ChangeDetectorRef }, { token: i6.GroupExpandNotifierService }, { token: i7.Router }, { token: i7.ActivatedRoute }, { token: i8.PersistanceController }, { token: i9.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
327
|
-
FsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FsListComponent, selector: "fs-list", inputs: { config: "config", loaderLines: "loaderLines" }, outputs: { filtersReady: "filtersReady" }, host: { properties: { "class.fs-list": "this.classFsList", "class.fs-list-no-highlight": "this.noRowsHighlight" } }, providers: [
|
|
328
|
-
GroupExpandNotifierService,
|
|
329
|
-
PersistanceController,
|
|
330
|
-
ReorderController,
|
|
331
|
-
], queries: [{ propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "headingContainerTemplate", first: true, predicate: FsListHeadingContainerDirective, descendants: true, read: TemplateRef }, { propertyName: "subheadingTemplate", first: true, predicate: FsListSubheadingDirective, descendants: true, read: TemplateRef }, { propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filter-keyword': hasFilterKeyword,\n 'has-filters': list.filterConfig?.items.length,\n 'has-heading': list.heading || headingTemplate,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n <ng-container\n *ngIf=\"hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <fs-filter\n class=\"fs-list-filter\"\n *ngIf=\"list.filterConfig\"\n [filter]=\"list.filterConfig\"\n [showSortBy]=\"!list.status\"\n [showFilterInput]=\"list.filterInput\"\n (ready)=\"filterReady()\">\n <ng-template fsFilterStatusBar>\n <ng-container\n *ngIf=\"!hasFilterKeyword\"\n [ngTemplateOutlet]=\"heading\">\n </ng-container>\n <ng-container *ngIf=\"hasStatus\">\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [sorting]=\"list.sorting\"\n [paging]=\"list.paging\"\n [firstLoad]=\"firstLoad\"\n [scrollable]=\"list.scrollable || list.paging.loadMoreEnabled\">\n </fs-list-status>\n </ng-container>\n </ng-template>\n </fs-filter>\n </div>\n </div>\n\n <ng-content select=\"[fs-list-content]\"></ng-content>\n\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table \n class=\"fs-list-table\" \n role=\"grid\" \n [fsListContentInit]=\"list.afterContentInit\" \n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-line': list.style ?? 'line' === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n\n <fs-list-pagination\n *ngIf=\"paginatorVisible\"\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<ng-template #heading>\n <div class=\"heading-container\" *ngIf=\"headingContainerTemplate || list.heading || list.subheading || headingTemplate\">\n <ng-container *ngIf=\"headingContainerTemplate; else headingContainer\">\n <ng-container\n [ngTemplateOutlet]=\"headingContainerTemplate\"\n [ngTemplateOutletContext]=\"{ template: headingContainer }\">\n </ng-container>\n </ng-container>\n <ng-template #headingContainer>\n <h2 class=\"heading\" *ngIf=\"list.heading || headingTemplate\">\n {{list.heading}}\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n </h2>\n <div class=\"small subheading\" *ngIf=\"list.subheading || subheadingTemplate\">\n {{list.subheading}}\n <ng-container [ngTemplateOutlet]=\"subheadingTemplate\"></ng-container>\n </div>\n </ng-template>\n </div>\n</ng-template>\n", styles: [":host{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container:not(.has-filters):not(.has-actions):not(.has-heading) .fs-list-header-container{display:none}.fs-list-container:not(.has-filter-keyword) .fs-list-header{display:flex;margin-bottom:4px}.fs-list-container:not(.has-filter-keyword) .fs-list-header .heading-container{flex:1}.fs-list-container:not(.has-filter-keyword) .fs-list-header fs-filter{display:flex}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow:auto}::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:normal;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table tfoot td{padding:8px}::ng-deep .fs-list-table.style-line tbody .fs-list-col,::ng-deep .fs-list-table:not(.style-card) tbody .fs-list-col{box-sizing:border-box;border-top:1px solid #ddd}::ng-deep .fs-list-table.style-line tbody .fs-list-row:first-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card) tbody .fs-list-row:first-child .fs-list-col{border-top:2px solid #ddd}::ng-deep .fs-list-table.style-line tbody .fs-list-row:last-child .fs-list-col,::ng-deep .fs-list-table:not(.style-card) tbody .fs-list-row:last-child .fs-list-col{border-bottom:2px solid #ddd}::ng-deep .fs-list-table.style-line .fs-list-row:hover .fs-list-col,::ng-deep .fs-list-table:not(.style-card) .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card) .fs-list-container.has-dragging thead th{border-bottom:2px solid #ddd}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .fs-list-table.style-line.style-card,::ng-deep .fs-list-table:not(.style-card).style-card{border-spacing:0 8px;border-collapse:separate}::ng-deep .fs-list-table.style-line.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group),::ng-deep .fs-list-table:not(.style-card).style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){background-color:#fafafa;border-radius:10px}::ng-deep .fs-list-table.style-line.style-card tbody tr td,::ng-deep .fs-list-table:not(.style-card).style-card tbody tr td{border:none!important;padding:8px 16px}::ng-deep .fs-list-table.style-line.style-card tbody tr td:first-child,::ng-deep .fs-list-table:not(.style-card).style-card tbody tr td:first-child{border-top-left-radius:10px;border-bottom-left-radius:10px}::ng-deep .fs-list-table.style-line.style-card tbody tr td:last-child,::ng-deep .fs-list-table:not(.style-card).style-card tbody tr td:last-child{border-top-right-radius:10px;border-bottom-right-radius:10px}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:grey;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-no-highlight) ::ng-deep .fs-list-row:hover .fs-list-col{background-color:initial}\n"], components: [{ type: i10.FilterComponent, selector: "fs-filter", inputs: ["config", "filter", "showSortBy", "showFilterInput"], outputs: ["closed", "opened", "ready"] }, { type: i11.FsStatusComponent, selector: "fs-list-status", inputs: ["paging", "sorting", "rows", "scrollable", "firstLoad"] }, { type: i12.FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { type: i13.FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { type: i14.FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { type: i15.FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { type: i16.FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }], directives: [{ type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i10.FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { type: i17.FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { type: i18.FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { type: i19.FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }], pipes: { "async": i9.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
332
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FsListComponent, decorators: [{
|
|
333
|
-
type: Component,
|
|
334
|
-
args: [{
|
|
335
|
-
selector: 'fs-list',
|
|
336
|
-
templateUrl: './list.component.html',
|
|
337
|
-
styleUrls: ['./list.component.scss'],
|
|
338
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
339
|
-
providers: [
|
|
340
|
-
GroupExpandNotifierService,
|
|
341
|
-
PersistanceController,
|
|
342
|
-
ReorderController,
|
|
343
|
-
],
|
|
344
|
-
}]
|
|
345
|
-
}], ctorParameters: function () { return [{ type: i1.ReorderController }, { type: undefined, decorators: [{
|
|
346
|
-
type: Optional
|
|
347
|
-
}, {
|
|
348
|
-
type: Inject,
|
|
349
|
-
args: [FS_LIST_DEFAULT_CONFIG]
|
|
350
|
-
}] }, { type: i2.FsScrollService, decorators: [{
|
|
351
|
-
type: Optional
|
|
352
|
-
}] }, { type: i3.MatDialogRef, decorators: [{
|
|
353
|
-
type: Optional
|
|
354
|
-
}] }, { type: i4.DrawerRef, decorators: [{
|
|
355
|
-
type: Optional
|
|
356
|
-
}] }, { type: i0.ElementRef }, { type: i5.SelectionDialog }, { type: i3.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i6.GroupExpandNotifierService }, { type: i7.Router }, { type: i7.ActivatedRoute }, { type: i8.PersistanceController }, { type: i9.Location }]; }, propDecorators: { classFsList: [{
|
|
357
|
-
type: HostBinding,
|
|
358
|
-
args: ['class.fs-list']
|
|
359
|
-
}], noRowsHighlight: [{
|
|
360
|
-
type: HostBinding,
|
|
361
|
-
args: ['class.fs-list-no-highlight']
|
|
362
|
-
}], config: [{
|
|
363
|
-
type: Input,
|
|
364
|
-
args: ['config']
|
|
365
|
-
}], loaderLines: [{
|
|
366
|
-
type: Input
|
|
367
|
-
}], filtersReady: [{
|
|
368
|
-
type: Output
|
|
369
|
-
}], headingTemplate: [{
|
|
370
|
-
type: ContentChild,
|
|
371
|
-
args: [FsListHeadingDirective, { read: TemplateRef }]
|
|
372
|
-
}], headingContainerTemplate: [{
|
|
373
|
-
type: ContentChild,
|
|
374
|
-
args: [FsListHeadingContainerDirective, { read: TemplateRef }]
|
|
375
|
-
}], subheadingTemplate: [{
|
|
376
|
-
type: ContentChild,
|
|
377
|
-
args: [FsListSubheadingDirective, { read: TemplateRef }]
|
|
378
|
-
}], filterReference: [{
|
|
379
|
-
type: ViewChild,
|
|
380
|
-
args: [FilterComponent]
|
|
381
|
-
}], columnTemplates: [{
|
|
382
|
-
type: ContentChildren,
|
|
383
|
-
args: [FsListColumnDirective]
|
|
384
|
-
}], _emptyStateTemplate: [{
|
|
385
|
-
type: ContentChild,
|
|
386
|
-
args: [FsListEmptyStateDirective, { read: TemplateRef }]
|
|
387
|
-
}] } });
|
|
388
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFFTCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFDMUMsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUduRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFNBQVMsRUFB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LHFCQUFxQjtnQkFTMUIsbUJBQW1CO3NCQUQ5QixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5cbmltcG9ydCB7IGdldE5vcm1hbGl6ZWRQYXRoIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY29tbW9uJztcbmltcG9ydCB7IERyYXdlclJlZiB9IGZyb20gJ0BmaXJlc3RpdGNoL2RyYXdlcic7XG5pbXBvcnQgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICdAZmlyZXN0aXRjaC9maWx0ZXInO1xuaW1wb3J0IHsgRnNTY3JvbGxTZXJ2aWNlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2Nyb2xsJztcbmltcG9ydCB7IFNlbGVjdGlvbkRpYWxvZyB9IGZyb20gJ0BmaXJlc3RpdGNoL3NlbGVjdGlvbic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc2tpcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBjbG9uZURlZXAsIG1lcmdlV2l0aCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7IExpc3QgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2xpc3QtY29udHJvbGxlcic7XG5pbXBvcnQgeyBQZXJzaXN0YW5jZUNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3BlcnNpc3RhbmNlLWNvbnRyb2xsZXInO1xuaW1wb3J0IHsgUmVvcmRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3Jlb3JkZXItY29udHJvbGxlcic7XG5pbXBvcnQgeyBGc0xpc3RIZWFkaW5nQ29udGFpbmVyRGlyZWN0aXZlLCBGc0xpc3RIZWFkaW5nRGlyZWN0aXZlLCBGc0xpc3RTdWJoZWFkaW5nRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBGc0xpc3RDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbHVtbi9jb2x1bW4uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZzTGlzdEVtcHR5U3RhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBGU19MSVNUX0RFRkFVTFRfQ09ORklHIH0gZnJvbSAnLi4vLi4vZnMtbGlzdC5wcm92aWRlcnMnO1xuaW1wb3J0IHtcbiAgRnNMaXN0QWJzdHJhY3RSb3csXG4gIEZzTGlzdEFjdGlvbixcbiAgRnNMaXN0Q29uZmlnLCBGc0xpc3RQZXJzaXRhbmNlLCBGc0xpc3RTZWxlY3Rpb25Db25maWcsXG4gIEZzTGlzdFRyYWNrQnlGbixcbiAgRnNMaXN0VHJhY2tCeVRhcmdldFJvd0ZuLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEdyb3VwRXhwYW5kTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JvdXAtZXhwYW5kLW5vdGlmaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9taXplQ29sc0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbWl6ZS1jb2xzL2N1c3RvbWl6ZS1jb2xzLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZnMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UsXG4gICAgUGVyc2lzdGFuY2VDb250cm9sbGVyLFxuICAgIFJlb3JkZXJDb250cm9sbGVyLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mcy1saXN0JykgcHVibGljIGNsYXNzRnNMaXN0ID0gdHJ1ZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZzLWxpc3Qtbm8taGlnaGxpZ2h0JylcbiAgcHVibGljIG5vUm93c0hpZ2hsaWdodDogYm9vbGVhbjtcblxuICBASW5wdXQoJ2NvbmZpZycpXG4gIHB1YmxpYyBzZXQgY29uZmlnKGNvbmZpZzogRnNMaXN0Q29uZmlnKSB7XG4gICAgdGhpcy5faW5pdFdpdGhDb25maWcoY29uZmlnKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsb2FkZXJMaW5lcyA9IDM7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmaWx0ZXJzUmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChGc0xpc3RIZWFkaW5nRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHB1YmxpYyBoZWFkaW5nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChGc0xpc3RIZWFkaW5nQ29udGFpbmVyRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHB1YmxpYyBoZWFkaW5nQ29udGFpbmVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChGc0xpc3RTdWJoZWFkaW5nRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHB1YmxpYyBzdWJoZWFkaW5nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHVibGljIGxpc3Q6IExpc3Q7XG4gIHB1YmxpYyBrZXl3b3JkVmlzaWJsZSA9IHRydWU7XG5cbiAgLy8gRXZlbnQgd2lsbCBmaXJlZCBpZiBhY3Rpb24gcmVtb3ZlOiB0cnVlIHdpbGwgY2xpY2tlZFxuICBwdWJsaWMgcm93UmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHVibGljIGZpcnN0TG9hZCA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfbGlzdENvbHVtbkRpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxGc0xpc3RDb2x1bW5EaXJlY3RpdmU+O1xuICBwcml2YXRlIF9maWx0ZXJSZWY6IEZpbHRlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBfZmlsdGVyUGFyYW1zUmVhZHkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaW5EaWFsb2cgPSAhIXRoaXMuX2RpYWxvZ1JlZiB8fCAhIXRoaXMuX2RyYXdlclJlZjtcblxuICBwcml2YXRlIF9kZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcblxuICBAVmlld0NoaWxkKEZpbHRlckNvbXBvbmVudClcbiAgcHVibGljIHNldCBmaWx0ZXJSZWZlcmVuY2UoY29tcG9uZW50KSB7XG4gICAgdGhpcy5fZmlsdGVyUmVmID0gY29tcG9uZW50O1xuICAgIHRoaXMubGlzdC5hY3Rpb25zLnNldEZpbHRlclJlZihjb21wb25lbnQpO1xuXG4gICAgdGhpcy5fZW1pdEZpbHRlcnNSZWFkeUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNvbHVtbnMgdG8gY29uZmlnXG4gICAqIENyZWF0ZSBDb2x1bW4gTW9kZWwgaW5zdGFuY2VzXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKEZzTGlzdENvbHVtbkRpcmVjdGl2ZSlcbiAgcHVibGljIHNldCBjb2x1bW5UZW1wbGF0ZXMobGlzdENvbHVtbkRpcmVjdGl2ZXM6IFF1ZXJ5TGlzdDxGc0xpc3RDb2x1bW5EaXJlY3RpdmU+KSB7XG4gICAgdGhpcy5fbGlzdENvbHVtbkRpcmVjdGl2ZXMgPSBsaXN0Q29sdW1uRGlyZWN0aXZlcztcbiAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICB0aGlzLmxpc3QudHJhbmZvcm1UZW1wbGF0ZXNUb0NvbHVtbnMobGlzdENvbHVtbkRpcmVjdGl2ZXMpO1xuICAgIH1cbiAgfVxuXG4gIEBDb250ZW50Q2hpbGQoRnNMaXN0RW1wdHlTdGF0ZURpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHNldCBfZW1wdHlTdGF0ZVRlbXBsYXRlKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmVtcHR5U3RhdGVUZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZW9yZGVyQ29udHJvbGxlcjogUmVvcmRlckNvbnRyb2xsZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChGU19MSVNUX0RFRkFVTFRfQ09ORklHKSBwcml2YXRlIF9kZWZhdWx0T3B0aW9uczogRnNMaXN0Q29uZmlnLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX3Njcm9sbDogRnNTY3JvbGxTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2RpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZHJhd2VyUmVmOiBEcmF3ZXJSZWY8YW55PixcbiAgICBwcml2YXRlIF9lbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9zZWxlY3Rpb25EaWFsb2c6IFNlbGVjdGlvbkRpYWxvZyxcbiAgICBwcml2YXRlIF9kaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfZ3JvdXBFeHBhbmROb3RpZmllcjogR3JvdXBFeHBhbmROb3RpZmllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgX3BlcnNpc3RhbmNlOiBQZXJzaXN0YW5jZUNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfbG9jYXRpb246IExvY2F0aW9uLFxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gcmVmZXJlbmNlIGZvciBmaWx0ZXJcbiAgICovXG4gIHB1YmxpYyBnZXQgZmlsdGVyUmVmKCk6IEZpbHRlckNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclJlZjtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZ3JvdXBFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5saXN0Lmdyb3VwRW5hYmxlZCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdyb3VwRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmRhdGFDb250cm9sbGVyLmdyb3VwRW5hYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzRmlsdGVyS2V5d29yZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LmZpbHRlcklucHV0ICYmIHRoaXMua2V5d29yZFZpc2libGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1N0YXR1cygpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0LnN0YXR1cyAmJlxuICAgICAgKHRoaXMubGlzdC5zb3J0aW5nLmlzRGVmaW5lZCB8fCB0aGlzLmxpc3QucGFnaW5nLmVuYWJsZWQpICYmXG4gICAgICAoXG4gICAgICAgICF0aGlzLnJlb3JkZXJDb250cm9sbGVyLmVuYWJsZWQgfHxcbiAgICAgICAgKHRoaXMucmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCAmJiB0aGlzLnJlb3JkZXJDb250cm9sbGVyLnN0YXR1cylcbiAgICAgICkgJiZcbiAgICAgICgodGhpcy5saXN0LnNjcm9sbGFibGUgJiYgdGhpcy5saXN0LnNjcm9sbGFibGUuc3RhdHVzKSB8fCAhdGhpcy5saXN0LnNjcm9sbGFibGUpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYWdpbmF0b3JWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QucGFnaW5nLmVuYWJsZWRcbiAgICAgICYmICF0aGlzLmZpcnN0TG9hZFxuICAgICAgJiYgIXRoaXMubGlzdC5zY3JvbGxhYmxlXG4gICAgICAmJiAhdGhpcy5saXN0LmVtcHR5U3RhdGVFbmFibGVkXG4gICAgICAmJiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3NDb3VudCA+IDBcbiAgICAgICYmIHRoaXMubGlzdC5wYWdpbmcucGFnZXMgPiAxO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXJzUXVlcnkoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZmlsdGVyc1F1ZXJ5O1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5saXN0LmFmdGVySW5pdCkge1xuICAgICAgdGhpcy5saXN0LmFmdGVySW5pdCh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fc3Vic2NyaWJlVG9SZW1vdmVSb3coKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb0dyb3VwRXhwYW5kU3RhdHVzQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgdGhpcy5saXN0LmRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICB0aGlzLl9kZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgbmV4dFBhZ2UoKSB7XG4gICAgdGhpcy5saXN0LnBhZ2luZy5nb05leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvUHJldigpO1xuICB9XG5cbiAgcHVibGljIGZpcnN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvRmlyc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBsYXN0UGFnZSgpIHtcbiAgICB0aGlzLmxpc3QucGFnaW5nLmdvTGFzdCgpO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZCgpIHtcbiAgICB0aGlzLmxpc3QucmVsb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RGF0YSh0cmFja0J5PzogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5nZXREYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIGhhc0RhdGEodHJhY2tCeTogRnNMaXN0VHJhY2tCeUZuKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5oYXNEYXRhKHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZURhdGEoXG4gICAgcm93czogRnNMaXN0QWJzdHJhY3RSb3cgfCBGc0xpc3RBYnN0cmFjdFJvd1tdLFxuICAgIHRyYWNrQnk/OiBGc0xpc3RUcmFja0J5VGFyZ2V0Um93Rm4sXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIudXBkYXRlRGF0YShyb3dzLCB0cmFja0J5KTtcbiAgfVxuXG4gIHB1YmxpYyByZXBsYWNlUm93KFxuICAgIHJvdzogRnNMaXN0QWJzdHJhY3RSb3csXG4gICAgdHJhY2tCeT86IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbixcbiAgKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci5yZXBsYWNlRGF0YShyb3csIHRyYWNrQnkpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNlbGVjdGlvbkNvbmZpZyhjb25maWc6IEZzTGlzdFNlbGVjdGlvbkNvbmZpZykge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24udXBkYXRlQ29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXRTZWxlY3Rpb25BY3Rpb25zKCkge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24ucmVzZXRBY3Rpb25zKCk7XG4gIH1cblxuICBwdWJsaWMgZW5hYmxlU2VsZWN0aW9uKCkge1xuICAgIHRoaXMubGlzdC5zZWxlY3Rpb24uZW5hYmxlU2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZVNlbGVjdGlvbigpIHtcbiAgICB0aGlzLmxpc3Quc2VsZWN0aW9uLmRpc2FibGVTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVEYXRhKGRhdGE6IEZzTGlzdEFic3RyYWN0Um93IHwgRnNMaXN0QWJzdHJhY3RSb3dbXSB8IEZzTGlzdFRyYWNrQnlUYXJnZXRSb3dGbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIucmVtb3ZlRGF0YShkYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRIZWFkaW5nKGhlYWRpbmc6IHN0cmluZykge1xuICAgIHRoaXMubGlzdC5oZWFkaW5nID0gaGVhZGluZztcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdWJoZWFkaW5nKHN1YmhlYWRpbmc6IHN0cmluZykge1xuICAgIHRoaXMubGlzdC5zdWJoZWFkaW5nID0gc3ViaGVhZGluZztcbiAgfVxuXG4gIHB1YmxpYyByZW9yZGVyU3RhcnQoKSB7XG4gICAgdGhpcy5yZW9yZGVyQ29udHJvbGxlci5lbmFibGVSZW9yZGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcmVvcmRlckZpbmlzaCgpIHtcbiAgICB0aGlzLnJlb3JkZXJDb250cm9sbGVyLmRpc2FibGVSZW9yZGVyKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aW9ucyhhY3Rpb25zOiBGc0xpc3RBY3Rpb25bXSkge1xuICAgIGlmIChhY3Rpb25zKSB7XG4gICAgICB0aGlzLmxpc3QuYWN0aW9ucy5jbGVhckFjdGlvbnMoKTtcbiAgICAgIHRoaXMubGlzdC5hY3Rpb25zLnNldEFjdGlvbnMoYWN0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbHRlclJlYWR5KCkge1xuICAgIHRoaXMubGlzdC5maWx0ZXJzUmVhZHkkLm5leHQoKTtcbiAgICB0aGlzLl9maWx0ZXJQYXJhbXNSZWFkeSA9IHRydWU7XG4gICAgdGhpcy5fZW1pdEZpbHRlcnNSZWFkeUV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHZpc2liaWxpdHkgZm9yIHNwZWNpZmljIGNvbHVtblxuICAgKi9cbiAgcHVibGljIGNvbHVtblZpc2liaWxpdHkobmFtZTogc3RyaW5nLCBzaG93OiBib29sZWFuKSB7XG4gICAgdGhpcy5jb2x1bW5zVmlzaWJpbGl0eShbeyBuYW1lLCBzaG93IH1dKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdmlzaWJpbGl0eSBmb3IgbGlzdCBvZiBzcGVjaWZpYyBjb2x1bW5zXG4gICAqL1xuICBwdWJsaWMgY29sdW1uc1Zpc2liaWxpdHkoY29sdW1uczogeyBuYW1lOiBzdHJpbmc7IHNob3c6IGJvb2xlYW4gfVtdKSB7XG4gICAgdGhpcy5saXN0LmNvbHVtbnMudXBkYXRlVmlzaWJpbGl0eUZvckNvbHMoY29sdW1ucyk7XG4gIH1cblxuICBwcml2YXRlIF9lbWl0RmlsdGVyc1JlYWR5RXZlbnQoKTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5maWx0ZXJSZWYgJiYgdGhpcy5fZmlsdGVyUGFyYW1zUmVhZHkpIHtcbiAgICAgIHRoaXMuZmlsdGVyc1JlYWR5LmVtaXQoKTtcblxuICAgICAgdGhpcy5rZXl3b3JkVmlzaWJsZSA9IHRoaXMuZmlsdGVyUmVmLmhhc0tleXdvcmQ7XG4gICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBjb25maWcgZm9yIGxpc3RcbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZ1xuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdFdpdGhDb25maWcoY29uZmlnOiBGc0xpc3RDb25maWcpIHtcbiAgICBpZiAodGhpcy5saXN0KSB7XG4gICAgICB0aGlzLmxpc3QuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRPcHRzID0gdGhpcy5fZGVmYXVsdE9wdGlvbnNcbiAgICAgID8gY2xvbmVEZWVwKHRoaXMuX2RlZmF1bHRPcHRpb25zKVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBsaXN0Q29uZmlnID0gbWVyZ2VXaXRoKGRlZmF1bHRPcHRzLCBjb25maWcsIHRoaXMuX2NvbmZpZ01lcmdlQ3VzdG9taXplcik7XG5cbiAgICBpZiAobGlzdENvbmZpZy5wZXJzaXN0ICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5fcmVzdG9yZVBlcnNpc3RhbmNlKGxpc3RDb25maWcucGVyc2lzdCk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlQ3VzdG9taXplQWN0aW9uKGxpc3RDb25maWcuYWN0aW9ucyk7XG5cbiAgICB0aGlzLmxpc3QgPSBuZXcgTGlzdChcbiAgICAgIHRoaXMuX2VsLFxuICAgICAgbGlzdENvbmZpZyxcbiAgICAgIHRoaXMuX3Njcm9sbCxcbiAgICAgIHRoaXMuX3NlbGVjdGlvbkRpYWxvZyxcbiAgICAgIHRoaXMuX3JvdXRlcixcbiAgICAgIHRoaXMuX3JvdXRlLFxuICAgICAgdGhpcy5fcGVyc2lzdGFuY2UsXG4gICAgICB0aGlzLl9pbkRpYWxvZyxcbiAgICApO1xuXG4gICAgdGhpcy5ub1Jvd3NIaWdobGlnaHQgPSAhdGhpcy5saXN0LnJvd0hpZ2hsaWdodDtcblxuICAgIHRoaXMuX3dhaXRGaXJzdExvYWQoKTtcblxuICAgIHRoaXMucmVvcmRlckNvbnRyb2xsZXIuaW5pdFdpdGhDb25maWcoXG4gICAgICBjb25maWcucmVvcmRlcixcbiAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlcixcbiAgICAgIHRoaXMubGlzdC5hY3Rpb25zLFxuICAgICAgdGhpcy5saXN0LnNlbGVjdGlvbixcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuX2xpc3RDb2x1bW5EaXJlY3RpdmVzKSB7XG4gICAgICB0aGlzLmxpc3QudHJhbmZvcm1UZW1wbGF0ZXNUb0NvbHVtbnModGhpcy5fbGlzdENvbHVtbkRpcmVjdGl2ZXMpO1xuICAgIH1cbiAgICB0aGlzLl9saXN0ZW5Tb3J0aW5nQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCBhY3Rpb24gd2l0aCBjdXN0b21pemUgZmxhZyBhbmQgcmUtZGVjbGFyZSBjbGljayBmdW5jdGlvbiBmb3IgQ3VzdG9taXplQ29sc0RpYWxvZ1xuICAgKlxuICAgKiBAcGFyYW0gYWN0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlQ3VzdG9taXplQWN0aW9uKGFjdGlvbnM6IEZzTGlzdEFjdGlvbltdKSB7XG4gICAgY29uc3QgY3VzdG9taXplQWN0aW9uID0gYWN0aW9ucz8uZmluZCgoYWN0aW9uKSA9PiBhY3Rpb24uY3VzdG9taXplKTtcblxuICAgIGlmIChjdXN0b21pemVBY3Rpb24pIHtcbiAgICAgIGNvbnN0IGFjdGlvbkNsaWNrRm4gPSBjdXN0b21pemVBY3Rpb24uY2xpY2s7XG5cbiAgICAgIGN1c3RvbWl6ZUFjdGlvbi5jbGljayA9ICgpID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbkNsaWNrRm4pIHtcbiAgICAgICAgICBhY3Rpb25DbGlja0ZuKG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGlhbG9nLm9wZW4oQ3VzdG9taXplQ29sc0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMubGlzdC5jb2x1bW5zLmNvbHVtbnNGb3JEaWFsb2csXG4gICAgICAgICAgICBjaGFuZ2VGbjogdGhpcy5saXN0LmNvbHVtbnMuY2hhbmdlRm4sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMubGlzdC5vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgdGhpcy5saXN0LmNvbHVtbnMudXBkYXRlVmlzaWJpbGl0eUZvckNvbHMoZGF0YSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgc29ydGluZyBpbiBmaWx0ZXJcbiAgICovXG4gIHByaXZhdGUgX2xpc3RlblNvcnRpbmdDaGFuZ2UoKSB7XG4gICAgdGhpcy5saXN0LnNvcnRpbmdcbiAgICAgIC5zb3J0aW5nQ2hhbmdlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5saXN0Lm9uRGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzb3J0KSA9PiB7XG4gICAgICAgIHRoaXMuX2ZpbHRlclJlZi51cGRhdGVTb3J0KHNvcnQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb1JlbW92ZVJvdygpIHtcbiAgICB0aGlzLnJvd1JlbW92ZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKHJvdykgPT4ge1xuICAgICAgICB0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIucmVtb3ZlRGF0YShyb3cpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmVUb0dyb3VwRXhwYW5kU3RhdHVzQ2hhbmdlKCkge1xuICAgIGlmICh0aGlzLmxpc3QuZGF0YUNvbnRyb2xsZXIuaGFzR3JvdXBzKSB7XG4gICAgICB0aGlzLl9ncm91cEV4cGFuZE5vdGlmaWVyLmV4cGFuZFN0YXR1c0NoYW5nZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJvdykgPT4ge1xuICAgICAgICAgIHRoaXMubGlzdC5kYXRhQ29udHJvbGxlci50b2dnbGVSb3dHcm91cChyb3cpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF93YWl0Rmlyc3RMb2FkKCkge1xuICAgIHRoaXMubGlzdC5sb2FkaW5nJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIGZpbHRlcigodmFsdWUpID0+ICF2YWx1ZSksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmxpc3Qub25EZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmZpcnN0TG9hZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29uZmlnTWVyZ2VDdXN0b21pemVyKG9ialZhbHVlOiBhbnksIHNyY1ZhbHVlOiBhbnkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgIHJldHVybiBvYmpWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZXN0b3JlUGVyc2lzdGFuY2UocGVyc2lzdENvbmZpZzogRnNMaXN0UGVyc2l0YW5jZSkge1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IGdldE5vcm1hbGl6ZWRQYXRoKHRoaXMuX2xvY2F0aW9uKTtcbiAgICB0aGlzLl9wZXJzaXN0YW5jZS5zZXRDb25maWcocGVyc2lzdENvbmZpZywgbmFtZXNwYWNlLCB0aGlzLl9pbkRpYWxvZyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmcy1saXN0LWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2hhcy1maWx0ZXIta2V5d29yZCc6IGhhc0ZpbHRlcktleXdvcmQsXG4gICAgICAnaGFzLWZpbHRlcnMnOiBsaXN0LmZpbHRlckNvbmZpZz8uaXRlbXMubGVuZ3RoLFxuICAgICAgJ2hhcy1oZWFkaW5nJzogbGlzdC5oZWFkaW5nIHx8IGhlYWRpbmdUZW1wbGF0ZSxcbiAgICAgICdoYXMtc3RhdHVzJzogaGFzU3RhdHVzLFxuICAgICAgJ2hhcy1jaGlwcyc6IGxpc3QuY2hpcHMsXG4gICAgICAnaGFzLWFjdGlvbnMnOiBsaXN0LmFjdGlvbnMuaGFzQWN0aW9ucyxcbiAgICAgICdmaXJzdC1sb2FkJzogZmlyc3RMb2FkLFxuICAgICAgJ2xvYWRpbmcnOiBsaXN0LmxvYWRpbmckIHwgYXN5bmNcbiAgICB9XCI+XG4gIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0Q29udGFpbmVyQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsaXN0Q29udGFpbmVyQ29udGVudD5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3QuZGF0YUNvbnRyb2xsZXIudmlzaWJsZVJvd3MkIHwgYXN5bmMgYXMgbGlzdERhdGFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtbGlzdC1oZWFkZXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWhlYWRlclwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnbm8td3JhcCc6IHJlb3JkZXJDb250cm9sbGVyLm1hbnVhbFJlb3JkZXJBY3RpdmF0ZWQgfHwgIWxpc3QuZmlsdGVyQ29uZmlnPy5pdGVtcy5sZW5ndGggfVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cImhhc0ZpbHRlcktleXdvcmRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1wiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGZzLWZpbHRlclxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWZpbHRlclwiXG4gICAgICAgICAgICAqbmdJZj1cImxpc3QuZmlsdGVyQ29uZmlnXCJcbiAgICAgICAgICAgIFtmaWx0ZXJdPVwibGlzdC5maWx0ZXJDb25maWdcIlxuICAgICAgICAgICAgW3Nob3dTb3J0QnldPVwiIWxpc3Quc3RhdHVzXCJcbiAgICAgICAgICAgIFtzaG93RmlsdGVySW5wdXRdPVwibGlzdC5maWx0ZXJJbnB1dFwiXG4gICAgICAgICAgICAocmVhZHkpPVwiZmlsdGVyUmVhZHkoKVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmc0ZpbHRlclN0YXR1c0Jhcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFoYXNGaWx0ZXJLZXl3b3JkXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nXCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTdGF0dXNcIj5cbiAgICAgICAgICAgICAgPGZzLWxpc3Qtc3RhdHVzXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LXN0YXR1c1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaGlkZGVuLW1vYmlsZSc6ICFsaXN0LnN0YXR1cyB9XCJcbiAgICAgICAgICAgICAgICBbcm93c109XCJsaXN0RGF0YVwiXG4gICAgICAgICAgICAgICAgW3NvcnRpbmddPVwibGlzdC5zb3J0aW5nXCJcbiAgICAgICAgICAgICAgICBbcGFnaW5nXT1cImxpc3QucGFnaW5nXCJcbiAgICAgICAgICAgICAgICBbZmlyc3RMb2FkXT1cImZpcnN0TG9hZFwiXG4gICAgICAgICAgICAgICAgW3Njcm9sbGFibGVdPVwibGlzdC5zY3JvbGxhYmxlIHx8IGxpc3QucGFnaW5nLmxvYWRNb3JlRW5hYmxlZFwiPlxuICAgICAgICAgICAgICA8L2ZzLWxpc3Qtc3RhdHVzPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mcy1maWx0ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmcy1saXN0LWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxuXG4gICAgPCEtLSBUYWJsZSBpbXBsZW1lbnRhdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtbGlzdC10YWJsZS1jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmlyc3RMb2FkICYmIGxpc3REYXRhLmxlbmd0aCA+IDAgJiYgIWxpc3QuZW1wdHlTdGF0ZUVuYWJsZWRcIj5cbiAgICAgICAgPHRhYmxlIFxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LXRhYmxlXCIgXG4gICAgICAgICAgICByb2xlPVwiZ3JpZFwiIFxuICAgICAgICAgICAgW2ZzTGlzdENvbnRlbnRJbml0XT1cImxpc3QuYWZ0ZXJDb250ZW50SW5pdFwiIFxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc3R5bGUtY2FyZCc6IGxpc3Quc3R5bGUgPT09ICdjYXJkJyxcbiAgICAgICAgICAgICAgJ3N0eWxlLWxpbmUnOiBsaXN0LnN0eWxlID8/ICdsaW5lJyA9PT0gJ2xpbmUnXG4gICAgICAgICAgICB9XCI+XG4gICAgICAgICAgPHRoZWFkXG4gICAgICAgICAgICBmcy1saXN0LWhlYWRcbiAgICAgICAgICAgIGNsYXNzPVwiZnMtbGlzdC1oZWFkXCJcbiAgICAgICAgICAgIHJvbGU9XCJyb3dncm91cFwiXG4gICAgICAgICAgICAqbmdJZj1cImxpc3QuY29sdW1ucy5oYXNIZWFkZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwibGlzdC5jb2x1bW5zLnRoZWFkQ2xhc3NcIlxuICAgICAgICAgICAgW2NvbHVtbnNdPVwibGlzdC5jb2x1bW5zLnZpc2libGVDb2x1bW5zJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtzb3J0aW5nXT1cImxpc3Quc29ydGluZ1wiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cImxpc3Quc2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiXG4gICAgICAgICAgICBbYWN0aXZlRmlsdGVyc0NvdW50XT1cImxpc3QuYWN0aXZlRmlsdGVyc0NvdW50JCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyRW5hYmxlZF09XCJyZW9yZGVyQ29udHJvbGxlci5lbmFibGVkJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyUG9zaXRpb25dPVwicmVvcmRlckNvbnRyb2xsZXIucG9zaXRpb24kIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJTdHJhdGVneV09XCJyZW9yZGVyQ29udHJvbGxlci5zdHJhdGVneSQgfCBhc3luY1wiPlxuICAgICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgICA8dGJvZHlcbiAgICAgICAgICAgIGZzLWxpc3QtYm9keVxuICAgICAgICAgICAgZnNMaXN0RHJhZ2dhYmxlTGlzdFxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LWJvZHlcIlxuICAgICAgICAgICAgcm9sZT1cInJvd2dyb3VwXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhIShyZW9yZGVyQ29udHJvbGxlci5yZW9yZGVyRGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgIFtyb3dzXT1cImxpc3REYXRhXCJcbiAgICAgICAgICAgIFtyb3dBY3Rpb25zUmF3XT1cImxpc3Qucm93QWN0aW9uc1Jhd1wiXG4gICAgICAgICAgICBbZ3JvdXBBY3Rpb25zUmF3XT1cImxpc3QuZ3JvdXBBY3Rpb25zUmF3XCJcbiAgICAgICAgICAgIFtoYXNSb3dBY3Rpb25zXT1cImxpc3QuaGFzUm93QWN0aW9uc1wiXG4gICAgICAgICAgICBbcm93RXZlbnRzXT1cImxpc3Qucm93RXZlbnRzXCJcbiAgICAgICAgICAgIFtyb3dDbGFzc109XCJsaXN0LnJvd0NsYXNzXCJcbiAgICAgICAgICAgIFtjb2x1bW5zXT1cImxpc3QuY29sdW1ucy52aXNpYmxlQ29sdW1ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVzdG9yZU1vZGVdPVwibGlzdC5yZXN0b3JlTW9kZVwiXG4gICAgICAgICAgICBbc2VsZWN0aW9uXT1cImxpc3Quc2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtyb3dSZW1vdmVkXT1cInJvd1JlbW92ZWRcIlxuICAgICAgICAgICAgW2FjdGl2ZUZpbHRlcnNDb3VudF09XCJsaXN0LmFjdGl2ZUZpbHRlcnNDb3VudCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlckVuYWJsZWRdPVwicmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlclBvc2l0aW9uXT1cInJlb3JkZXJDb250cm9sbGVyLnBvc2l0aW9uJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyU3RyYXRlZ3ldPVwicmVvcmRlckNvbnRyb2xsZXIuc3RyYXRlZ3kkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3Jlb3JkZXJNdWx0aXBsZV09XCJyZW9yZGVyQ29udHJvbGxlci5tdWx0aXBsZVwiPlxuICAgICAgICAgIDwvdGJvZHk+XG5cbiAgICAgICAgICA8dGZvb3RcbiAgICAgICAgICAgIGZzLWxpc3QtZm9vdGVyXG4gICAgICAgICAgICBjbGFzcz1cImZzLWxpc3QtZm9vdGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwibGlzdC5jb2x1bW5zLmhhc0Zvb3RlclwiXG4gICAgICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMudmlzaWJsZUNvbHVtbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgW3NlbGVjdGlvbl09XCJsaXN0LnNlbGVjdGlvblwiXG4gICAgICAgICAgICBbaGFzUm93QWN0aW9uc109XCJsaXN0Lmhhc1Jvd0FjdGlvbnNcIlxuICAgICAgICAgICAgW2FjdGl2ZUZpbHRlcnNDb3VudF09XCJsaXN0LmFjdGl2ZUZpbHRlcnNDb3VudCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlckVuYWJsZWRdPVwicmVvcmRlckNvbnRyb2xsZXIuZW5hYmxlZCQgfCBhc3luY1wiXG4gICAgICAgICAgICBbcmVvcmRlclBvc2l0aW9uXT1cInJlb3JkZXJDb250cm9sbGVyLnBvc2l0aW9uJCB8IGFzeW5jXCJcbiAgICAgICAgICAgIFtyZW9yZGVyU3RyYXRlZ3ldPVwicmVvcmRlckNvbnRyb2xsZXIuc3RyYXRlZ3kkIHwgYXN5bmNcIj5cbiAgICAgICAgICA8L3Rmb290PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZnMtbGlzdC1sb2FkZXJcbiAgICAgICAgKm5nSWY9XCJmaXJzdExvYWRcIlxuICAgICAgICBbY29sdW1uc109XCJsaXN0LmNvbHVtbnMuY29sdW1uc1wiXG4gICAgICAgIFtsb2FkZXJMaW5lc109XCJsb2FkZXJMaW5lc1wiPlxuICAgICAgPC9mcy1saXN0LWxvYWRlcj5cbiAgICA8L2Rpdj5cblxuICAgIDxmcy1saXN0LXBhZ2luYXRpb25cbiAgICAgICpuZ0lmPVwicGFnaW5hdG9yVmlzaWJsZVwiXG4gICAgICBjbGFzcz1cImZzLWxpc3QtcGFnaW5hdGlvblwiXG4gICAgICBbcm93c109XCJsaXN0RGF0YVwiXG4gICAgICBbcGFnaW5hdGlvbl09XCJsaXN0LnBhZ2luZ1wiPlxuICAgIDwvZnMtbGlzdC1wYWdpbmF0aW9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmaXJzdExvYWRcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cImxpc3REYXRhLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgY2xhc3M9XCJmcy1saXN0LW5vLXJlc3VsdHMtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwibGlzdC5ub1Jlc3VsdHM/Lm1lc3NhZ2UgJiYgIWxpc3QuZW1wdHlTdGF0ZUVuYWJsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmcy1saXN0LW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICB7eyBsaXN0Lm5vUmVzdWx0cz8ubWVzc2FnZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxpc3QuZW1wdHlTdGF0ZUVuYWJsZWRcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdC5lbXB0eVN0YXRlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaGVhZGluZz5cbiAgPGRpdiBjbGFzcz1cImhlYWRpbmctY29udGFpbmVyXCIgKm5nSWY9XCJoZWFkaW5nQ29udGFpbmVyVGVtcGxhdGUgfHwgbGlzdC5oZWFkaW5nIHx8IGxpc3Quc3ViaGVhZGluZyB8fCBoZWFkaW5nVGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGluZ0NvbnRhaW5lclRlbXBsYXRlOyBlbHNlIGhlYWRpbmdDb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ0NvbnRhaW5lclRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgdGVtcGxhdGU6IGhlYWRpbmdDb250YWluZXIgfVwiPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNoZWFkaW5nQ29udGFpbmVyPlxuICAgICAgPGgyIGNsYXNzPVwiaGVhZGluZ1wiICpuZ0lmPVwibGlzdC5oZWFkaW5nIHx8IGhlYWRpbmdUZW1wbGF0ZVwiPlxuICAgICAgICB7e2xpc3QuaGVhZGluZ319XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2gyPlxuICAgICAgPGRpdiBjbGFzcz1cInNtYWxsIHN1YmhlYWRpbmdcIiAqbmdJZj1cImxpc3Quc3ViaGVhZGluZyB8fCBzdWJoZWFkaW5nVGVtcGxhdGVcIj5cbiAgICAgICAge3tsaXN0LnN1YmhlYWRpbmd9fVxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN1YmhlYWRpbmdUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|