@firestitch/list 12.12.3 → 12.12.5

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 -90
  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 +174 -174
  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 +66 -61
  10. package/app/classes/selection-controller.d.ts +146 -141
  11. package/app/classes/sorting-controller.d.ts +64 -64
  12. package/app/components/body/body.component.d.ts +32 -32
  13. package/app/components/body/row/actions/actions.component.d.ts +34 -35
  14. package/app/components/body/row/cell/cell.component.d.ts +23 -23
  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 +14 -12
  17. package/app/components/body/row/row.component.d.ts +74 -72
  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 +11 -11
  21. package/app/components/footer/footer.component.d.ts +11 -11
  22. package/app/components/head/head-cell/head-cell.component.d.ts +14 -14
  23. package/app/components/head/head.component.d.ts +43 -43
  24. package/app/components/list/list.component.d.ts +121 -113
  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 +89 -80
  35. package/app/directives/draggable-row/draggable-row.directive.d.ts +23 -21
  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 -0
  43. package/app/directives/heading-container/heading-container.directive.d.ts +5 -0
  44. package/app/directives/index.d.ts +3 -0
  45. package/app/directives/subheading/subheading.directive.d.ts +5 -0
  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 +59 -57
  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 +253 -250
  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 -15
  67. package/app/models/row/simple-row.d.ts +5 -5
  68. package/app/models/row-action.model.d.ts +29 -31
  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 -0
  72. package/app/pipes/index.d.ts +1 -0
  73. package/app/services/group-expand-notifier.service.d.ts +11 -11
  74. package/bundles/firestitch-list.umd.js +6792 -6537
  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 -334
  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 +714 -715
  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 +184 -170
  85. package/esm2015/app/classes/selection-controller.js +459 -445
  86. package/esm2015/app/classes/sorting-controller.js +180 -180
  87. package/esm2015/app/components/body/body.component.js +75 -76
  88. package/esm2015/app/components/body/row/actions/actions.component.js +96 -101
  89. package/esm2015/app/components/body/row/cell/cell.component.js +107 -92
  90. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +40 -41
  91. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +36 -32
  92. package/esm2015/app/components/body/row/row.component.js +272 -263
  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 +26 -27
  96. package/esm2015/app/components/footer/footer.component.js +26 -26
  97. package/esm2015/app/components/head/head-cell/head-cell.component.js +33 -33
  98. package/esm2015/app/components/head/head.component.js +90 -91
  99. package/esm2015/app/components/list/list.component.js +389 -364
  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 -79
  102. package/esm2015/app/components/pagination/pagination.component.js +44 -45
  103. package/esm2015/app/components/saved-filters/saved-filters.component.js +33 -33
  104. package/esm2015/app/components/status/status.component.js +72 -74
  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 +321 -256
  110. package/esm2015/app/directives/draggable-row/draggable-row.directive.js +81 -73
  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 -0
  118. package/esm2015/app/directives/heading-container/heading-container.directive.js +13 -0
  119. package/esm2015/app/directives/index.js +4 -0
  120. package/esm2015/app/directives/subheading/subheading.directive.js +13 -0
  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 +241 -232
  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 +2 -2
  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 +21 -21
  141. package/esm2015/app/models/row/group-row.js +45 -41
  142. package/esm2015/app/models/row/simple-row.js +10 -10
  143. package/esm2015/app/models/row-action.model.js +95 -109
  144. package/esm2015/app/models/row.js +81 -81
  145. package/esm2015/app/models/styleConfig.model.js +75 -75
  146. package/esm2015/app/pipes/action-label.js +17 -0
  147. package/esm2015/app/pipes/index.js +2 -0
  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 +46 -45
  151. package/fesm2015/firestitch-list.js +5591 -5386
  152. package/fesm2015/firestitch-list.js.map +1 -1
  153. package/firestitch-list.d.ts +5 -5
  154. package/package.json +2 -2
  155. package/public_api.d.ts +39 -38
@@ -1,91 +1,90 @@
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 { ReorderController, 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 "../../classes/reorder-controller";
9
- import * as i2 from "@angular/material/checkbox";
10
- import * as i3 from "./head-cell/head-cell.component";
11
- import * as i4 from "@angular/common";
12
- import * as i5 from "@angular/flex-layout/extended";
13
- export class FsHeadComponent {
14
- constructor(reorderController, cdRef) {
15
- this.reorderController = reorderController;
16
- this.cdRef = cdRef;
17
- this.selectedAll = false;
18
- this.ReorderPosition = ReorderPosition;
19
- this.ReorderStrategy = ReorderStrategy;
20
- this._destroy$ = new Subject();
21
- }
22
- ngOnInit() {
23
- this.initSorting();
24
- this.initSelection();
25
- }
26
- ngOnDestroy() {
27
- this._destroy$.next();
28
- this._destroy$.complete();
29
- }
30
- /**
31
- * Select All Visible Rows
32
- * @param event
33
- */
34
- selectAll(event) {
35
- this.selection.selectAllVisibleRows(event.checked);
36
- }
37
- /**
38
- * Track By for improve change detection
39
- * @param index
40
- */
41
- trackByFn(index) {
42
- return index;
43
- }
44
- /**
45
- * Subscribe to sorting change
46
- */
47
- initSorting() {
48
- this.sorting.sortingChanged$
49
- .pipe(takeUntil(this._destroy$))
50
- .subscribe(() => {
51
- this.cdRef.detectChanges();
52
- });
53
- }
54
- /**
55
- * Subscribe to selection change
56
- */
57
- initSelection() {
58
- if (this.selection) {
59
- this.selection.selectionChange$
60
- .pipe(filter(({ type }) => (type === SelectionChangeType.AllVisibleSelectionChange
61
- || type === SelectionChangeType.SelectedAll
62
- || type === SelectionChangeType.RowSelectionChange)), takeUntil(this._destroy$))
63
- .subscribe(({ type, payload: status }) => {
64
- this.selectedAll = status;
65
- this.cdRef.markForCheck();
66
- });
67
- }
68
- }
69
- }
70
- FsHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, deps: [{ token: i1.ReorderController }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
71
- 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" }, 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=\"reorderController.leftReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Selection -->\n <th *ngIf=\"selection\" 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=\"reorderController.rightReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n", components: [{ type: i2.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: i3.FsHeadCellComponent, selector: "[fs-head-cell]" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, decorators: [{
73
- type: Component,
74
- args: [{
75
- selector: '[fs-list-head]',
76
- templateUrl: 'head.component.html',
77
- changeDetection: ChangeDetectionStrategy.OnPush
78
- }]
79
- }], ctorParameters: function () { return [{ type: i1.ReorderController }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { sorting: [{
80
- type: Input
81
- }], columns: [{
82
- type: Input
83
- }], hasRowActions: [{
84
- type: Input
85
- }], selection: [{
86
- type: Input
87
- }], rowsContainer: [{
88
- type: ViewChild,
89
- args: ['rowsContainer', { read: ViewContainerRef, static: true }]
90
- }] } });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaGVhZC9oZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9oZWFkL2hlYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixlQUFlLEVBQ2hCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7QUFROUYsTUFBTSxPQUFPLGVBQWU7SUFjMUIsWUFDUyxpQkFBb0MsRUFDbkMsS0FBd0I7UUFEekIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQVIzQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNYLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ2xDLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBRTFDLGNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBSy9CLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxLQUF3QjtRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLEtBQUs7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZTthQUN6QixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNLLGFBQWE7UUFDbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCO2lCQUM1QixJQUFJLENBQ0gsTUFBTSxDQUNKLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FDVixJQUFJLEtBQUssbUJBQW1CLENBQUMseUJBQXlCO21CQUNuRCxJQUFJLEtBQUssbUJBQW1CLENBQUMsV0FBVzttQkFDeEMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLGtCQUFrQixDQUNuRCxDQUNGLEVBQ0QsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7aUJBQ0EsU0FBUyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBQyxFQUFFLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO2dCQUUxQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDOzs2R0FoRlUsZUFBZTtpR0FBZixlQUFlLDZQQU1VLGdCQUFnQiwyQ0NuQ3RELHMvQkF3QkE7NEZES2EsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUscUJBQXFCO29CQUNsQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7d0lBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWdFLGFBQWE7c0JBQWxGLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLCBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcbmltcG9ydCB7IFNvcnRpbmdDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9zb3J0aW5nLWNvbnRyb2xsZXInO1xuaW1wb3J0IHtcbiAgUmVvcmRlckNvbnRyb2xsZXIsXG4gIFJlb3JkZXJQb3NpdGlvbixcbiAgUmVvcmRlclN0cmF0ZWd5XG59IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcbmltcG9ydCB7IFNlbGVjdGlvbkNvbnRyb2xsZXIsIFNlbGVjdGlvbkNoYW5nZVR5cGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NlbGVjdGlvbi1jb250cm9sbGVyJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdbZnMtbGlzdC1oZWFkXScsXG4gIHRlbXBsYXRlVXJsOiAnaGVhZC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEZzSGVhZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgc29ydGluZzogU29ydGluZ0NvbnRyb2xsZXI7XG4gIEBJbnB1dCgpIGNvbHVtbnM6IENvbHVtbltdO1xuICBASW5wdXQoKSBoYXNSb3dBY3Rpb25zOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3Rpb246IFNlbGVjdGlvbkNvbnRyb2xsZXI7XG5cbiAgQFZpZXdDaGlsZCgncm93c0NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHJvd3NDb250YWluZXI7XG5cbiAgcHVibGljIHNlbGVjdGVkQWxsID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBSZW9yZGVyUG9zaXRpb24gPSBSZW9yZGVyUG9zaXRpb247XG4gIHB1YmxpYyByZWFkb25seSBSZW9yZGVyU3RyYXRlZ3kgPSBSZW9yZGVyU3RyYXRlZ3k7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZW9yZGVyQ29udHJvbGxlcjogUmVvcmRlckNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0U29ydGluZygpO1xuICAgIHRoaXMuaW5pdFNlbGVjdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdCBBbGwgVmlzaWJsZSBSb3dzXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgcHVibGljIHNlbGVjdEFsbChldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3RBbGxWaXNpYmxlUm93cyhldmVudC5jaGVja2VkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFjayBCeSBmb3IgaW1wcm92ZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKi9cbiAgcHVibGljIHRyYWNrQnlGbihpbmRleCkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gc29ydGluZyBjaGFuZ2VcbiAgICovXG4gIHByaXZhdGUgaW5pdFNvcnRpbmcoKSB7XG4gICAgdGhpcy5zb3J0aW5nLnNvcnRpbmdDaGFuZ2VkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmUgdG8gc2VsZWN0aW9uIGNoYW5nZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0U2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbikge1xuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uQ2hhbmdlJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgICAoe3R5cGV9KSA9PiAoXG4gICAgICAgICAgICAgIHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuQWxsVmlzaWJsZVNlbGVjdGlvbkNoYW5nZVxuICAgICAgICAgICAgICB8fCB0eXBlID09PSBTZWxlY3Rpb25DaGFuZ2VUeXBlLlNlbGVjdGVkQWxsXG4gICAgICAgICAgICAgIHx8IHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuUm93U2VsZWN0aW9uQ2hhbmdlXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHt0eXBlLCBwYXlsb2FkOiBzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9IHN0YXR1cztcblxuICAgICAgICAgIHRoaXMuY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPHRyIGNsYXNzPVwiZnMtbGlzdC1yb3dcIj5cbiAgPCEtLSBEcmFnIC0tPlxuICA8dGggKm5nSWY9XCJyZW9yZGVyQ29udHJvbGxlci5sZWZ0UmVvcmRlckFjdGl2YXRlZCQgfCBhc3luY1wiIGNsYXNzPVwiZnMtbGlzdC1jb2wgZHJhZy1jb2xcIj48L3RoPlxuXG4gIDwhLS0gU2VsZWN0aW9uIC0tPlxuICA8dGggKm5nSWY9XCJzZWxlY3Rpb25cIiBjbGFzcz1cImZzLWxpc3QtY29sIGZzLWxpc3QtY29sLXNlbGVjdGlvblwiPlxuICAgIDxtYXQtY2hlY2tib3ggKGNoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50KVwiIFtjaGVja2VkXT1cInNlbGVjdGVkQWxsXCI+PC9tYXQtY2hlY2tib3g+XG4gIDwvdGg+XG5cbiAgPCEtLSBDb250ZW50IC0tPlxuICA8dGggZnMtaGVhZC1jZWxsICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNvcnRpbmcuc29ydEJ5KGNvbHVtbilcIlxuICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgW2NsYXNzLnNvcnRpbmddPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5oZWFkZXJDb25maWdzLmNsYXNzZXNBcnJheVwiXG4gICAgICBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbi5oZWFkZXJDb25maWdzLmNvbHNwYW5cIlxuICAgICAgW2F0dHIud2lkdGhdPVwiY29sdW1uLndpZHRoXCI+PC90aD5cblxuICA8IS0tIERyYWcgLS0+XG4gIDx0aCAqbmdJZj1cInJlb3JkZXJDb250cm9sbGVyLnJpZ2h0UmVvcmRlckFjdGl2YXRlZCQgfCBhc3luY1wiIGNsYXNzPVwiZnMtbGlzdC1jb2wgZHJhZy1jb2xcIj48L3RoPlxuXG4gIDwhLS0gUm93IEFjdGlvbnMgLS0+XG4gIDx0aCAqbmdJZj1cImhhc1Jvd0FjdGlvbnMgJiYgIShyZW9yZGVyQ29udHJvbGxlci5tYW51YWxSZW9yZGVyQWN0aXZhdGVkJCB8IGFzeW5jKVwiIGNsYXNzPVwiZnMtbGlzdC1jb2wgcm93LWFjdGlvbnNcIj48L3RoPlxuPC90cj5cbiJdfQ==
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 { ReorderController, 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 "../../classes/reorder-controller";
9
+ import * as i2 from "@angular/material/checkbox";
10
+ import * as i3 from "./head-cell/head-cell.component";
11
+ import * as i4 from "@angular/common";
12
+ export class FsHeadComponent {
13
+ constructor(reorderController, cdRef) {
14
+ this.reorderController = reorderController;
15
+ this.cdRef = cdRef;
16
+ this.selectedAll = false;
17
+ this.ReorderPosition = ReorderPosition;
18
+ this.ReorderStrategy = ReorderStrategy;
19
+ this._destroy$ = new Subject();
20
+ }
21
+ ngOnInit() {
22
+ this.initSorting();
23
+ this.initSelection();
24
+ }
25
+ ngOnDestroy() {
26
+ this._destroy$.next();
27
+ this._destroy$.complete();
28
+ }
29
+ /**
30
+ * Select All Visible Rows
31
+ * @param event
32
+ */
33
+ selectAll(event) {
34
+ this.selection.selectAllVisibleRows(event.checked);
35
+ }
36
+ /**
37
+ * Track By for improve change detection
38
+ * @param index
39
+ */
40
+ trackByFn(index) {
41
+ return index;
42
+ }
43
+ /**
44
+ * Subscribe to sorting change
45
+ */
46
+ initSorting() {
47
+ this.sorting.sortingChanged$
48
+ .pipe(takeUntil(this._destroy$))
49
+ .subscribe(() => {
50
+ this.cdRef.detectChanges();
51
+ });
52
+ }
53
+ /**
54
+ * Subscribe to selection change
55
+ */
56
+ initSelection() {
57
+ if (this.selection) {
58
+ this.selection.selectionChange$
59
+ .pipe(filter(({ type }) => (type === SelectionChangeType.AllVisibleSelectionChange
60
+ || type === SelectionChangeType.SelectedAll
61
+ || type === SelectionChangeType.RowSelectionChange)), takeUntil(this._destroy$))
62
+ .subscribe(({ type, payload: status }) => {
63
+ this.selectedAll = status;
64
+ this.cdRef.markForCheck();
65
+ });
66
+ }
67
+ }
68
+ }
69
+ FsHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, deps: [{ token: i1.ReorderController }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
70
+ 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" }, 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=\"reorderController.leftReorderActivated$ | async\" class=\"fs-list-col drag-col\"></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=\"reorderController.rightReorderActivated$ | async\" class=\"fs-list-col drag-col\"></th>\n\n <!-- Row Actions -->\n <th *ngIf=\"hasRowActions && !(reorderController.manualReorderActivated$ | async)\" class=\"fs-list-col row-actions\"></th>\n</tr>\n", components: [{ type: i2.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: i3.FsHeadCellComponent, selector: "[fs-head-cell]" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FsHeadComponent, decorators: [{
72
+ type: Component,
73
+ args: [{
74
+ selector: '[fs-list-head]',
75
+ templateUrl: 'head.component.html',
76
+ changeDetection: ChangeDetectionStrategy.OnPush
77
+ }]
78
+ }], ctorParameters: function () { return [{ type: i1.ReorderController }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { sorting: [{
79
+ type: Input
80
+ }], columns: [{
81
+ type: Input
82
+ }], hasRowActions: [{
83
+ type: Input
84
+ }], selection: [{
85
+ type: Input
86
+ }], rowsContainer: [{
87
+ type: ViewChild,
88
+ args: ['rowsContainer', { read: ViewContainerRef, static: true }]
89
+ }] } });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvaGVhZC9oZWFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9oZWFkL2hlYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixlQUFlLEVBQ2hCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7OztBQVE5RixNQUFNLE9BQU8sZUFBZTtJQWMxQixZQUNTLGlCQUFvQyxFQUNuQyxLQUF3QjtRQUR6QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBUjNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ1gsb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFDbEMsb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFFMUMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFLL0IsQ0FBQztJQUVHLFFBQVE7UUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLEtBQXdCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsS0FBSztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVc7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlO2FBQ3pCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0I7aUJBQzVCLElBQUksQ0FDSCxNQUFNLENBQ0osQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxDQUNWLElBQUksS0FBSyxtQkFBbUIsQ0FBQyx5QkFBeUI7bUJBQ25ELElBQUksS0FBSyxtQkFBbUIsQ0FBQyxXQUFXO21CQUN4QyxJQUFJLEtBQUssbUJBQW1CLENBQUMsa0JBQWtCLENBQ25ELENBQ0YsRUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUMxQjtpQkFDQSxTQUFTLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7Z0JBRTFCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNILENBQUM7OzZHQWhGVSxlQUFlO2lHQUFmLGVBQWUsNlBBTVUsZ0JBQWdCLDJDQ25DdEQsd2hDQXdCQTs0RkRLYSxlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFdBQVcsRUFBRSxxQkFBcUI7b0JBQ2xDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDt3SUFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFZ0UsYUFBYTtzQkFBbEYsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveENoYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuXHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgU29ydGluZ0NvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3NvcnRpbmctY29udHJvbGxlcic7XHJcbmltcG9ydCB7XHJcbiAgUmVvcmRlckNvbnRyb2xsZXIsXHJcbiAgUmVvcmRlclBvc2l0aW9uLFxyXG4gIFJlb3JkZXJTdHJhdGVneVxyXG59IGZyb20gJy4uLy4uL2NsYXNzZXMvcmVvcmRlci1jb250cm9sbGVyJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbGxlciwgU2VsZWN0aW9uQ2hhbmdlVHlwZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvc2VsZWN0aW9uLWNvbnRyb2xsZXInO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnW2ZzLWxpc3QtaGVhZF0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnaGVhZC5jb21wb25lbnQuaHRtbCcsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZzSGVhZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBzb3J0aW5nOiBTb3J0aW5nQ29udHJvbGxlcjtcclxuICBASW5wdXQoKSBjb2x1bW5zOiBDb2x1bW5bXTtcclxuICBASW5wdXQoKSBoYXNSb3dBY3Rpb25zOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvbjogU2VsZWN0aW9uQ29udHJvbGxlcjtcclxuXHJcbiAgQFZpZXdDaGlsZCgncm93c0NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHJvd3NDb250YWluZXI7XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RlZEFsbCA9IGZhbHNlO1xyXG4gIHB1YmxpYyByZWFkb25seSBSZW9yZGVyUG9zaXRpb24gPSBSZW9yZGVyUG9zaXRpb247XHJcbiAgcHVibGljIHJlYWRvbmx5IFJlb3JkZXJTdHJhdGVneSA9IFJlb3JkZXJTdHJhdGVneTtcclxuXHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW9yZGVyQ29udHJvbGxlcjogUmVvcmRlckNvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdFNvcnRpbmcoKTtcclxuICAgIHRoaXMuaW5pdFNlbGVjdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCBBbGwgVmlzaWJsZSBSb3dzXHJcbiAgICogQHBhcmFtIGV2ZW50XHJcbiAgICovXHJcbiAgcHVibGljIHNlbGVjdEFsbChldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcclxuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdEFsbFZpc2libGVSb3dzKGV2ZW50LmNoZWNrZWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhY2sgQnkgZm9yIGltcHJvdmUgY2hhbmdlIGRldGVjdGlvblxyXG4gICAqIEBwYXJhbSBpbmRleFxyXG4gICAqL1xyXG4gIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXgpIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZSB0byBzb3J0aW5nIGNoYW5nZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdFNvcnRpbmcoKSB7XHJcbiAgICB0aGlzLnNvcnRpbmcuc29ydGluZ0NoYW5nZWQkXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3Vic2NyaWJlIHRvIHNlbGVjdGlvbiBjaGFuZ2VcclxuICAgKi9cclxuICBwcml2YXRlIGluaXRTZWxlY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5zZWxlY3Rpb24uc2VsZWN0aW9uQ2hhbmdlJFxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmlsdGVyKFxyXG4gICAgICAgICAgICAoe3R5cGV9KSA9PiAoXHJcbiAgICAgICAgICAgICAgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5BbGxWaXNpYmxlU2VsZWN0aW9uQ2hhbmdlXHJcbiAgICAgICAgICAgICAgfHwgdHlwZSA9PT0gU2VsZWN0aW9uQ2hhbmdlVHlwZS5TZWxlY3RlZEFsbFxyXG4gICAgICAgICAgICAgIHx8IHR5cGUgPT09IFNlbGVjdGlvbkNoYW5nZVR5cGUuUm93U2VsZWN0aW9uQ2hhbmdlXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCh7dHlwZSwgcGF5bG9hZDogc3RhdHVzfSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFsbCA9IHN0YXR1cztcclxuXHJcbiAgICAgICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8dHIgY2xhc3M9XCJmcy1saXN0LXJvd1wiPlxuICA8IS0tIERyYWcgLS0+XG4gIDx0aCAqbmdJZj1cInJlb3JkZXJDb250cm9sbGVyLmxlZnRSZW9yZGVyQWN0aXZhdGVkJCB8IGFzeW5jXCIgY2xhc3M9XCJmcy1saXN0LWNvbCBkcmFnLWNvbFwiPjwvdGg+XG5cbiAgPCEtLSBTZWxlY3Rpb24gLS0+XG4gIDx0aCAqbmdJZj1cInNlbGVjdGlvbiAmJiAhKHNlbGVjdGlvbi5kaXNhYmxlZCQgfCBhc3luYylcIiBjbGFzcz1cImZzLWxpc3QtY29sIGZzLWxpc3QtY29sLXNlbGVjdGlvblwiPlxuICAgIDxtYXQtY2hlY2tib3ggKGNoYW5nZSk9XCJzZWxlY3RBbGwoJGV2ZW50KVwiIFtjaGVja2VkXT1cInNlbGVjdGVkQWxsXCI+PC9tYXQtY2hlY2tib3g+XG4gIDwvdGg+XG5cbiAgPCEtLSBDb250ZW50IC0tPlxuICA8dGggZnMtaGVhZC1jZWxsICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHNvcnRpbmcuc29ydEJ5KGNvbHVtbilcIlxuICAgICAgW2NvbHVtbl09XCJjb2x1bW5cIlxuICAgICAgW2NsYXNzLnNvcnRpbmddPVwiY29sdW1uLnNvcnRhYmxlXCJcbiAgICAgIFtuZ0NsYXNzXT1cImNvbHVtbi5oZWFkZXJDb25maWdzLmNsYXNzZXNBcnJheVwiXG4gICAgICBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbi5oZWFkZXJDb25maWdzLmNvbHNwYW5cIlxuICAgICAgW2F0dHIud2lkdGhdPVwiY29sdW1uLndpZHRoXCI+PC90aD5cblxuICA8IS0tIERyYWcgLS0+XG4gIDx0aCAqbmdJZj1cInJlb3JkZXJDb250cm9sbGVyLnJpZ2h0UmVvcmRlckFjdGl2YXRlZCQgfCBhc3luY1wiIGNsYXNzPVwiZnMtbGlzdC1jb2wgZHJhZy1jb2xcIj48L3RoPlxuXG4gIDwhLS0gUm93IEFjdGlvbnMgLS0+XG4gIDx0aCAqbmdJZj1cImhhc1Jvd0FjdGlvbnMgJiYgIShyZW9yZGVyQ29udHJvbGxlci5tYW51YWxSZW9yZGVyQWN0aXZhdGVkJCB8IGFzeW5jKVwiIGNsYXNzPVwiZnMtbGlzdC1jb2wgcm93LWFjdGlvbnNcIj48L3RoPlxuPC90cj5cbiJdfQ==