@firestitch/list 12.15.2 → 12.17.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.
Files changed (155) hide show
  1. package/app/classes/actions-controller.d.ts +20 -20
  2. package/app/classes/columns-controller.d.ts +71 -71
  3. package/app/classes/data-controller.d.ts +91 -91
  4. package/app/classes/external-params-controller.d.ts +31 -31
  5. package/app/classes/index.d.ts +2 -2
  6. package/app/classes/list-controller.d.ts +179 -179
  7. package/app/classes/pagination-controller.d.ts +189 -189
  8. package/app/classes/persistance-controller.d.ts +10 -10
  9. package/app/classes/reorder-controller.d.ts +68 -68
  10. package/app/classes/selection-controller.d.ts +155 -146
  11. package/app/classes/sorting-controller.d.ts +64 -64
  12. package/app/components/body/body.component.d.ts +28 -29
  13. package/app/components/body/row/actions/actions.component.d.ts +36 -34
  14. package/app/components/body/row/cell/cell.component.d.ts +22 -22
  15. package/app/components/body/row/inline-action/inline-action.component.d.ts +16 -16
  16. package/app/components/body/row/menu-action/menu-action.component.d.ts +20 -20
  17. package/app/components/body/row/row.component.d.ts +82 -80
  18. package/app/components/customize-cols/customize-cols.component.d.ts +17 -17
  19. package/app/components/footer/footer-row/footer-cell/footer-cell.component.d.ts +7 -7
  20. package/app/components/footer/footer-row/footer-row.component.d.ts +14 -14
  21. package/app/components/footer/footer.component.d.ts +15 -16
  22. package/app/components/head/head-cell/head-cell.component.d.ts +14 -14
  23. package/app/components/head/head.component.d.ts +49 -47
  24. package/app/components/list/list.component.d.ts +122 -122
  25. package/app/components/loader/loader.component.d.ts +14 -14
  26. package/app/components/manage-saved-filters/manage-saved-filters.component.d.ts +13 -13
  27. package/app/components/pagination/pagination.component.d.ts +14 -14
  28. package/app/components/saved-filters/saved-filters.component.d.ts +15 -15
  29. package/app/components/status/status.component.d.ts +21 -21
  30. package/app/directives/cell/cell.directive.d.ts +8 -8
  31. package/app/directives/column/column.directive.d.ts +33 -33
  32. package/app/directives/content/content.directive.d.ts +5 -5
  33. package/app/directives/content-init/content-init.directive.d.ts +9 -9
  34. package/app/directives/draggable-list/draggable-list.directive.d.ts +95 -90
  35. package/app/directives/draggable-row/draggable-row.directive.d.ts +23 -23
  36. package/app/directives/empty-state/empty-state.directive.d.ts +5 -5
  37. package/app/directives/footer/footer.directive.d.ts +8 -8
  38. package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +10 -10
  39. package/app/directives/group-footer/group-footer.directive.d.ts +6 -6
  40. package/app/directives/group-header/group-header.directive.d.ts +6 -6
  41. package/app/directives/header/header.directive.d.ts +8 -8
  42. package/app/directives/heading/heading.directive.d.ts +5 -5
  43. package/app/directives/heading-container/heading-container.directive.d.ts +5 -5
  44. package/app/directives/index.d.ts +3 -3
  45. package/app/directives/subheading/subheading.directive.d.ts +5 -5
  46. package/app/enums/button-type.enum.d.ts +7 -7
  47. package/app/enums/page-change-type.enum.d.ts +4 -4
  48. package/app/enums/pagination-strategy.enum.d.ts +5 -5
  49. package/app/enums/row-type.enum.d.ts +6 -6
  50. package/app/enums/state.enum.d.ts +9 -9
  51. package/app/fs-list.module.d.ts +60 -60
  52. package/app/fs-list.providers.d.ts +3 -3
  53. package/app/interfaces/cellconfig.interface.d.ts +5 -5
  54. package/app/interfaces/column-config.interface.d.ts +2 -2
  55. package/app/interfaces/draggable-list.interface.d.ts +7 -7
  56. package/app/interfaces/external-params.interface.d.ts +13 -13
  57. package/app/interfaces/index.d.ts +3 -3
  58. package/app/interfaces/listconfig.interface.d.ts +267 -267
  59. package/app/interfaces/pagination.interface.d.ts +13 -13
  60. package/app/models/column-async-attribute.d.ts +5 -5
  61. package/app/models/column-attributes.d.ts +39 -39
  62. package/app/models/column.model.d.ts +59 -59
  63. package/app/models/row/base-row.d.ts +13 -13
  64. package/app/models/row/child-row.d.ts +12 -12
  65. package/app/models/row/group-footer-row.d.ts +10 -10
  66. package/app/models/row/group-row.d.ts +16 -16
  67. package/app/models/row/simple-row.d.ts +5 -5
  68. package/app/models/row-action.model.d.ts +29 -29
  69. package/app/models/row.d.ts +30 -30
  70. package/app/models/styleConfig.model.d.ts +31 -31
  71. package/app/pipes/action-label.d.ts +8 -8
  72. package/app/pipes/index.d.ts +1 -1
  73. package/app/services/group-expand-notifier.service.d.ts +11 -11
  74. package/bundles/firestitch-list.umd.js +6909 -6878
  75. package/bundles/firestitch-list.umd.js.map +1 -1
  76. package/esm2015/app/classes/actions-controller.js +55 -55
  77. package/esm2015/app/classes/columns-controller.js +205 -205
  78. package/esm2015/app/classes/data-controller.js +352 -352
  79. package/esm2015/app/classes/external-params-controller.js +153 -153
  80. package/esm2015/app/classes/index.js +3 -3
  81. package/esm2015/app/classes/list-controller.js +738 -738
  82. package/esm2015/app/classes/pagination-controller.js +460 -460
  83. package/esm2015/app/classes/persistance-controller.js +19 -19
  84. package/esm2015/app/classes/reorder-controller.js +182 -182
  85. package/esm2015/app/classes/selection-controller.js +468 -459
  86. package/esm2015/app/classes/sorting-controller.js +180 -180
  87. package/esm2015/app/components/body/body.component.js +69 -68
  88. package/esm2015/app/components/body/row/actions/actions.component.js +99 -96
  89. package/esm2015/app/components/body/row/cell/cell.component.js +106 -106
  90. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +39 -39
  91. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +49 -49
  92. package/esm2015/app/components/body/row/row.component.js +305 -297
  93. package/esm2015/app/components/customize-cols/customize-cols.component.js +72 -72
  94. package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +20 -20
  95. package/esm2015/app/components/footer/footer-row/footer-row.component.js +31 -31
  96. package/esm2015/app/components/footer/footer.component.js +36 -35
  97. package/esm2015/app/components/head/head-cell/head-cell.component.js +34 -33
  98. package/esm2015/app/components/head/head.component.js +108 -105
  99. package/esm2015/app/components/list/list.component.js +385 -385
  100. package/esm2015/app/components/loader/loader.component.js +47 -47
  101. package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +78 -78
  102. package/esm2015/app/components/pagination/pagination.component.js +44 -44
  103. package/esm2015/app/components/saved-filters/saved-filters.component.js +33 -33
  104. package/esm2015/app/components/status/status.component.js +72 -72
  105. package/esm2015/app/directives/cell/cell.directive.js +18 -18
  106. package/esm2015/app/directives/column/column.directive.js +111 -111
  107. package/esm2015/app/directives/content/content.directive.js +12 -12
  108. package/esm2015/app/directives/content-init/content-init.directive.js +21 -21
  109. package/esm2015/app/directives/draggable-list/draggable-list.directive.js +329 -324
  110. package/esm2015/app/directives/draggable-row/draggable-row.directive.js +78 -78
  111. package/esm2015/app/directives/empty-state/empty-state.directive.js +13 -13
  112. package/esm2015/app/directives/footer/footer.directive.js +18 -18
  113. package/esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js +26 -26
  114. package/esm2015/app/directives/group-footer/group-footer.directive.js +13 -13
  115. package/esm2015/app/directives/group-header/group-header.directive.js +13 -13
  116. package/esm2015/app/directives/header/header.directive.js +18 -18
  117. package/esm2015/app/directives/heading/heading.directive.js +13 -13
  118. package/esm2015/app/directives/heading-container/heading-container.directive.js +13 -13
  119. package/esm2015/app/directives/index.js +4 -4
  120. package/esm2015/app/directives/subheading/subheading.directive.js +13 -13
  121. package/esm2015/app/enums/button-type.enum.js +9 -9
  122. package/esm2015/app/enums/page-change-type.enum.js +6 -6
  123. package/esm2015/app/enums/pagination-strategy.enum.js +7 -7
  124. package/esm2015/app/enums/row-type.enum.js +7 -7
  125. package/esm2015/app/enums/state.enum.js +11 -11
  126. package/esm2015/app/fs-list.module.js +244 -244
  127. package/esm2015/app/fs-list.providers.js +4 -4
  128. package/esm2015/app/interfaces/cellconfig.interface.js +2 -2
  129. package/esm2015/app/interfaces/column-config.interface.js +1 -1
  130. package/esm2015/app/interfaces/draggable-list.interface.js +2 -2
  131. package/esm2015/app/interfaces/external-params.interface.js +2 -2
  132. package/esm2015/app/interfaces/index.js +4 -4
  133. package/esm2015/app/interfaces/listconfig.interface.js +1 -1
  134. package/esm2015/app/interfaces/pagination.interface.js +2 -2
  135. package/esm2015/app/models/column-async-attribute.js +13 -13
  136. package/esm2015/app/models/column-attributes.js +130 -130
  137. package/esm2015/app/models/column.model.js +166 -166
  138. package/esm2015/app/models/row/base-row.js +23 -23
  139. package/esm2015/app/models/row/child-row.js +28 -28
  140. package/esm2015/app/models/row/group-footer-row.js +20 -20
  141. package/esm2015/app/models/row/group-row.js +44 -44
  142. package/esm2015/app/models/row/simple-row.js +10 -10
  143. package/esm2015/app/models/row-action.model.js +94 -94
  144. package/esm2015/app/models/row.js +80 -80
  145. package/esm2015/app/models/styleConfig.model.js +75 -75
  146. package/esm2015/app/pipes/action-label.js +16 -16
  147. package/esm2015/app/pipes/index.js +1 -1
  148. package/esm2015/app/services/group-expand-notifier.service.js +26 -26
  149. package/esm2015/firestitch-list.js +4 -4
  150. package/esm2015/public_api.js +45 -45
  151. package/fesm2015/firestitch-list.js +5690 -5659
  152. package/fesm2015/firestitch-list.js.map +1 -1
  153. package/firestitch-list.d.ts +5 -5
  154. package/package.json +1 -1
  155. package/public_api.d.ts +39 -39
@@ -1,105 +1,108 @@
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 { SortingController } from '../../classes/sorting-controller';
5
- import { ReorderPosition, ReorderStrategy, } from '../../classes/reorder-controller';
6
- import { SelectionController, SelectionChangeType } from '../../classes/selection-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
- * @param event
39
- */
40
- selectAll(event) {
41
- this.selection.selectAllVisibleRows(event.checked);
42
- }
43
- /**
44
- * Track By for improve change detection
45
- * @param index
46
- */
47
- trackByFn(index) {
48
- return index;
49
- }
50
- /**
51
- * Subscribe to sorting change
52
- */
53
- initSorting() {
54
- this.sorting.sortingChanged$
55
- .pipe(takeUntil(this._destroy$))
56
- .subscribe(() => {
57
- this.cdRef.detectChanges();
58
- });
59
- }
60
- /**
61
- * Subscribe to selection change
62
- */
63
- initSelection() {
64
- if (this.selection) {
65
- this.selection.selectionChange$
66
- .pipe(filter(({ type }) => (type === SelectionChangeType.AllVisibleSelectionChange
67
- || type === SelectionChangeType.SelectedAll
68
- || type === SelectionChangeType.RowSelectionChange)), takeUntil(this._destroy$))
69
- .subscribe(({ type, payload: status }) => {
70
- this.selectedAll = status;
71
- this.cdRef.markForCheck();
72
- });
73
- }
74
- }
75
- }
76
- FsHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
77
- FsHeadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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 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\"></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", 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 });
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, decorators: [{
79
- type: Component,
80
- args: [{
81
- selector: '[fs-list-head]',
82
- templateUrl: 'head.component.html',
83
- changeDetection: ChangeDetectionStrategy.OnPush
84
- }]
85
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { sorting: [{
86
- type: Input
87
- }], columns: [{
88
- type: Input
89
- }], hasRowActions: [{
90
- type: Input
91
- }], selection: [{
92
- type: Input
93
- }], activeFiltersCount: [{
94
- type: Input
95
- }], reorderEnabled: [{
96
- type: Input
97
- }], reorderPosition: [{
98
- type: Input
99
- }], reorderStrategy: [{
100
- type: Input
101
- }], rowsContainer: [{
102
- type: ViewChild,
103
- args: ['rowsContainer', { read: ViewContainerRef, static: true }]
104
- }] } });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaGVhZC9oZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9oZWFkL2hlYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsR0FDaEIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFROUYsTUFBTSxPQUFPLGVBQWU7SUFpQjFCLFlBQW9CLEtBQXdCO1FBQXhCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBTHJDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ1gsd0JBQW1CLEdBQUcsZUFBZSxDQUFDO1FBRTlDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWMsQ0FBQztJQUVqRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxjQUFjO2VBQ3JCLElBQUksQ0FBQyxlQUFlLEtBQUssZUFBZSxDQUFDLElBQUk7ZUFDN0MsSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsY0FBYztlQUNyQixJQUFJLENBQUMsZUFBZSxLQUFLLGVBQWUsQ0FBQyxLQUFLO2VBQzlDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLEtBQXdCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsS0FBSztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVc7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlO2FBQ3pCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0I7aUJBQzVCLElBQUksQ0FDSCxNQUFNLENBQ0osQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUNWLElBQUksS0FBSyxtQkFBbUIsQ0FBQyx5QkFBeUI7bUJBQ25ELElBQUksS0FBSyxtQkFBbUIsQ0FBQyxXQUFXO21CQUN4QyxJQUFJLEtBQUssbUJBQW1CLENBQUMsa0JBQWtCLENBQ25ELENBQ0YsRUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7Z0JBRTFCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7OzZHQTVGVSxlQUFlO2lHQUFmLGVBQWUsaVpBVVUsZ0JBQWdCLDJDQ3RDdEQscWdDQTRCQTs0RkRBYSxlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFdBQVcsRUFBRSxxQkFBcUI7b0JBQ2xDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDt3R0FFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRWdFLGFBQWE7c0JBQWxGLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLCBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcbmltcG9ydCB7IFNvcnRpbmdDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9zb3J0aW5nLWNvbnRyb2xsZXInO1xuaW1wb3J0IHtcbiAgUmVvcmRlclBvc2l0aW9uLFxuICBSZW9yZGVyU3RyYXRlZ3ksXG59IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIsIFNlbGVjdGlvbkNoYW5nZVR5cGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbZnMtbGlzdC1oZWFkXScsXG4gIHRlbXBsYXRlVXJsOiAnaGVhZC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZzSGVhZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgc29ydGluZzogU29ydGluZ0NvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIGNvbHVtbnM6IENvbHVtbltdO1xuICBASW5wdXQoKSBoYXNSb3dBY3Rpb25zOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIGFjdGl2ZUZpbHRlcnNDb3VudDogbnVtYmVyO1xuICBASW5wdXQoKSByZW9yZGVyRW5hYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KCkgcmVvcmRlclBvc2l0aW9uOiBSZW9yZGVyUG9zaXRpb24gfCBudWxsO1xuICBASW5wdXQoKSByZW9yZGVyU3RyYXRlZ3k6IFJlb3JkZXJTdHJhdGVneSB8IG51bGw7XG5cbiAgQFZpZXdDaGlsZCgncm93c0NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHJvd3NDb250YWluZXI7XG5cbiAgcHVibGljIHNlbGVjdGVkQWxsID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBSZW9yZGVyU3RyYXRlZ3lFbnVtID0gUmVvcmRlclN0cmF0ZWd5O1xuXG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwpIHt9XG5cbiAgcHVibGljIGdldCBsZWZ0RHJhZ0Ryb3BFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlb3JkZXJFbmFibGVkXG4gICAgICAmJiB0aGlzLnJlb3JkZXJQb3NpdGlvbiA9PT0gUmVvcmRlclBvc2l0aW9uLkxlZnRcbiAgICAgICYmIHRoaXMuYWN0aXZlRmlsdGVyc0NvdW50ID09IDBcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmlnaHREcmFnRHJvcEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVvcmRlckVuYWJsZWRcbiAgICAgICYmIHRoaXMucmVvcmRlclBvc2l0aW9uID09PSBSZW9yZGVyUG9zaXRpb24uUmlnaHRcbiAgICAgICYmIHRoaXMuYWN0aXZlRmlsdGVyc0NvdW50ID09IDBcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRTb3J0aW5nKCk7XG4gICAgdGhpcy5pbml0U2VsZWN0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0IEFsbCBWaXNpYmxlIFJvd3NcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc2VsZWN0QWxsKGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdEFsbFZpc2libGVSb3dzKGV2ZW50LmNoZWNrZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYWNrIEJ5IGZvciBpbXByb3ZlIGNoYW5nZSBkZXRlY3Rpb25cbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzb3J0aW5nIGNoYW5nZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0U29ydGluZygpIHtcbiAgICB0aGlzLnNvcnRpbmcuc29ydGluZ0NoYW5nZWQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBzZWxlY3Rpb24gY2hhbmdlXG4gICAqL1xuICBwcml2YXRlIGluaXRTZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3Rpb25DaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcihcbiAgICAgICAgICAgICh7dHlwZX0pID0+IChcbiAgICAgICAgICAgICAgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5BbGxWaXNpYmxlU2VsZWN0aW9uQ2hhbmdlXG4gICAgICAgICAgICAgIHx8IHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuU2VsZWN0ZWRBbGxcbiAgICAgICAgICAgICAgfHwgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5Sb3dTZWxlY3Rpb25DaGFuZ2VcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoe3R5cGUsIHBheWxvYWQ6IHN0YXR1c30pID0+IHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQWxsID0gc3RhdHVzO1xuXG4gICAgICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8dHIgY2xhc3M9XCJmcy1saXN0LXJvd1wiPlxuICA8IS0tIERyYWcgLS0+XG4gIDx0aCAqbmdJZj1cImxlZnREcmFnRHJvcEVuYWJsZWRcIlxuICAgICAgY2xhc3M9XCJmcy1saXN0LWNvbCBkcmFnLWNvbFwiPlxuICA8L3RoPlxuXG4gIDwhLS0gU2VsZWN0aW9uIC0tPlxuICA8dGggKm5nSWY9XCJzZWxlY3Rpb24gJiYgIShzZWxlY3Rpb24uZGlzYWJsZWQkIHwgYXN5bmMpXCIgY2xhc3M9XCJmcy1saXN0LWNvbCBmcy1saXN0LWNvbC1zZWxlY3Rpb25cIj5cbiAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwic2VsZWN0QWxsKCRldmVudClcIiBbY2hlY2tlZF09XCJzZWxlY3RlZEFsbFwiPjwvbWF0LWNoZWNrYm94PlxuICA8L3RoPlxuXG4gIDwhLS0gQ29udGVudCAtLT5cbiAgPHRoIGZzLWhlYWQtY2VsbCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBzb3J0aW5nLnNvcnRCeShjb2x1bW4pXCJcbiAgICAgIFtjb2x1bW5dPVwiY29sdW1uXCJcbiAgICAgIFtjbGFzcy5zb3J0aW5nXT1cImNvbHVtbi5zb3J0YWJsZVwiXG4gICAgICBbbmdDbGFzc109XCJjb2x1bW4uaGVhZGVyQ29uZmlncy5jbGFzc2VzQXJyYXlcIlxuICAgICAgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW4uaGVhZGVyQ29uZmlncy5jb2xzcGFuXCJcbiAgICAgIFthdHRyLndpZHRoXT1cImNvbHVtbi53aWR0aFwiPjwvdGg+XG5cbiAgPCEtLSBEcmFnIC0tPlxuICA8dGggKm5nSWY9XCJyaWdodERyYWdEcm9wRW5hYmxlZFwiXG4gICAgICBjbGFzcz1cImZzLWxpc3QtY29sIGRyYWctY29sXCI+XG4gIDwvdGg+XG5cbiAgPCEtLSBSb3cgQWN0aW9ucyAtLT5cbiAgPHRoICpuZ0lmPVwiaGFzUm93QWN0aW9ucyAmJiAhKHJlb3JkZXJFbmFibGVkICYmIHJlb3JkZXJTdHJhdGVneSA9PT0gUmVvcmRlclN0cmF0ZWd5RW51bS5NYW51YWwpXCIgY2xhc3M9XCJmcy1saXN0LWNvbCByb3ctYWN0aW9uc1wiPjwvdGg+XG48L3RyPlxuIl19
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.16", ngImport: i0, type: FsHeadComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
79
+ FsHeadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", 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}\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.16", 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==