@one-paragon/angular-utilities 1.3.0 → 1.3.1

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 (133) hide show
  1. package/fesm2022/one-paragon-angular-utilities.mjs +251 -252
  2. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
  3. package/http-request-state/HttpRequestStateStore.d.ts +1 -1
  4. package/http-request-state/directives/HttpStateDirectiveBase.d.ts +1 -1
  5. package/package.json +1 -3
  6. package/rxjs/subscriber.directive.d.ts +1 -1
  7. package/table-builder/classes/table-store.d.ts +3 -3
  8. package/table-builder/components/link-column.component.d.ts +3 -3
  9. package/table-builder/components/table-container/table-container-imports.d.ts +1 -1
  10. package/table-builder/components/table-container/table-container.helpers/filter-state.helpers.d.ts +1 -1
  11. package/table-builder/directives/tb-filter.directive.d.ts +3 -3
  12. package/table-builder/ngrx/tableBuilderStateStore.d.ts +4 -4
  13. package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +0 -24
  14. package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +0 -20
  15. package/esm2022/action-state/index.mjs +0 -8
  16. package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +0 -23
  17. package/esm2022/action-state/ngrx.mjs +0 -47
  18. package/esm2022/http-request-state/HttpRequestStateFactory.mjs +0 -51
  19. package/esm2022/http-request-state/HttpRequestStateStore.mjs +0 -135
  20. package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +0 -30
  21. package/esm2022/http-request-state/directives/http-error-state-directive.mjs +0 -23
  22. package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +0 -23
  23. package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +0 -23
  24. package/esm2022/http-request-state/directives/http-success-state-directive.mjs +0 -29
  25. package/esm2022/http-request-state/directives/index.mjs +0 -6
  26. package/esm2022/http-request-state/directives/request-state-directive.mjs +0 -61
  27. package/esm2022/http-request-state/helpers.mjs +0 -22
  28. package/esm2022/http-request-state/http-request-state.mjs +0 -39
  29. package/esm2022/http-request-state/http-state-module.mjs +0 -40
  30. package/esm2022/http-request-state/index.mjs +0 -7
  31. package/esm2022/http-request-state/rxjs/getRequestorBody.mjs +0 -4
  32. package/esm2022/http-request-state/rxjs/getRequestorState.mjs +0 -3
  33. package/esm2022/http-request-state/rxjs/index.mjs +0 -5
  34. package/esm2022/http-request-state/rxjs/tapError.mjs +0 -12
  35. package/esm2022/http-request-state/rxjs/tapSuccess.mjs +0 -12
  36. package/esm2022/http-request-state/types.mjs +0 -16
  37. package/esm2022/ngrx/actionable-selector.mjs +0 -107
  38. package/esm2022/ngrx/index.mjs +0 -2
  39. package/esm2022/one-paragon-angular-utilities.mjs +0 -5
  40. package/esm2022/public-api.mjs +0 -20
  41. package/esm2022/rxjs/defaultShareReplay.mjs +0 -7
  42. package/esm2022/rxjs/index.mjs +0 -6
  43. package/esm2022/rxjs/mapError.mjs +0 -8
  44. package/esm2022/rxjs/rxjs-operators.mjs +0 -92
  45. package/esm2022/rxjs/subjectifier.mjs +0 -15
  46. package/esm2022/rxjs/subscriber.directive.mjs +0 -50
  47. package/esm2022/table-builder/classes/DefaultSettings.mjs +0 -6
  48. package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +0 -23
  49. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +0 -18
  50. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +0 -48
  51. package/esm2022/table-builder/classes/TableState.mjs +0 -48
  52. package/esm2022/table-builder/classes/data-store.mjs +0 -15
  53. package/esm2022/table-builder/classes/display-col.mjs +0 -2
  54. package/esm2022/table-builder/classes/filter-info.mjs +0 -61
  55. package/esm2022/table-builder/classes/table-builder-general-settings.mjs +0 -116
  56. package/esm2022/table-builder/classes/table-builder.mjs +0 -77
  57. package/esm2022/table-builder/classes/table-store.mjs +0 -388
  58. package/esm2022/table-builder/components/array-column.component.mjs +0 -53
  59. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +0 -145
  60. package/esm2022/table-builder/components/column-builder/column-helpers.mjs +0 -45
  61. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +0 -29
  62. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +0 -24
  63. package/esm2022/table-builder/components/filter/filter.component.mjs +0 -64
  64. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +0 -102
  65. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +0 -47
  66. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +0 -306
  67. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +0 -104
  68. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +0 -21
  69. package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +0 -103
  70. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +0 -65
  71. package/esm2022/table-builder/components/index.mjs +0 -10
  72. package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +0 -47
  73. package/esm2022/table-builder/components/link-column.component.mjs +0 -74
  74. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +0 -29
  75. package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +0 -64
  76. package/esm2022/table-builder/components/scroll-strategy.mjs +0 -60
  77. package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +0 -46
  78. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +0 -82
  79. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +0 -26
  80. package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +0 -135
  81. package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +0 -83
  82. package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +0 -71
  83. package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +0 -36
  84. package/esm2022/table-builder/components/table-container/table-container.mjs +0 -334
  85. package/esm2022/table-builder/components/table-container/tableProps.mjs +0 -8
  86. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +0 -155
  87. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +0 -44
  88. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +0 -35
  89. package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +0 -25
  90. package/esm2022/table-builder/directives/custom-cell-directive.mjs +0 -73
  91. package/esm2022/table-builder/directives/index.mjs +0 -6
  92. package/esm2022/table-builder/directives/multi-sort.directive.mjs +0 -50
  93. package/esm2022/table-builder/directives/resize-column.directive.mjs +0 -87
  94. package/esm2022/table-builder/directives/table-wrapper.directive.mjs +0 -18
  95. package/esm2022/table-builder/directives/tb-filter.directive.mjs +0 -396
  96. package/esm2022/table-builder/enums/filterTypes.mjs +0 -29
  97. package/esm2022/table-builder/functions/boolean-filter-function.mjs +0 -10
  98. package/esm2022/table-builder/functions/date-filter-function.mjs +0 -58
  99. package/esm2022/table-builder/functions/download-data.mjs +0 -12
  100. package/esm2022/table-builder/functions/null-filter-function.mjs +0 -8
  101. package/esm2022/table-builder/functions/number-filter-function.mjs +0 -32
  102. package/esm2022/table-builder/functions/sort-data-function.mjs +0 -17
  103. package/esm2022/table-builder/functions/string-filter-function.mjs +0 -41
  104. package/esm2022/table-builder/interfaces/ColumnInfo.mjs +0 -2
  105. package/esm2022/table-builder/interfaces/dictionary.mjs +0 -2
  106. package/esm2022/table-builder/interfaces/report-def.mjs +0 -50
  107. package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +0 -154
  108. package/esm2022/table-builder/pipes/column-total.pipe.mjs +0 -22
  109. package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +0 -18
  110. package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +0 -43
  111. package/esm2022/table-builder/pipes/key-display.mjs +0 -18
  112. package/esm2022/table-builder/services/export-to-csv.service.mjs +0 -75
  113. package/esm2022/table-builder/services/link-creator.service.mjs +0 -50
  114. package/esm2022/table-builder/services/table-template-service.mjs +0 -60
  115. package/esm2022/table-builder/services/transform-creator.mjs +0 -100
  116. package/esm2022/table-builder/table-builder.module.mjs +0 -124
  117. package/esm2022/utilities/array-helpers.mjs +0 -14
  118. package/esm2022/utilities/directives/auto-focus.directive.mjs +0 -25
  119. package/esm2022/utilities/directives/clickEmitterDirective.mjs +0 -22
  120. package/esm2022/utilities/directives/clickSubject.mjs +0 -29
  121. package/esm2022/utilities/directives/conditional-classes.directive.mjs +0 -36
  122. package/esm2022/utilities/directives/dialog-service.mjs +0 -21
  123. package/esm2022/utilities/directives/dialog.mjs +0 -145
  124. package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +0 -59
  125. package/esm2022/utilities/directives/prevent-enter.directive.mjs +0 -20
  126. package/esm2022/utilities/directives/stop-propagation.directive.mjs +0 -26
  127. package/esm2022/utilities/directives/styler.mjs +0 -41
  128. package/esm2022/utilities/directives/trim-whitespace.directive.mjs +0 -28
  129. package/esm2022/utilities/index.mjs +0 -16
  130. package/esm2022/utilities/module.mjs +0 -90
  131. package/esm2022/utilities/pipes/function.pipe.mjs +0 -22
  132. package/esm2022/utilities/pipes/phone.pipe.mjs +0 -20
  133. package/esm2022/utilities/pipes/space-case.pipes.mjs +0 -28
@@ -1,135 +0,0 @@
1
- import { combineLatest, map, scan, timestamp } from "rxjs";
2
- import { filterData, sortData, tbNoShowSymbol } from "../../../functions/sort-data-function";
3
- import { defaultShareReplay } from "../../../../rxjs/defaultShareReplay";
4
- import { FieldType } from "../../../interfaces/report-def";
5
- import { get, set } from "lodash";
6
- export const sortAndFilterData = (data, sortState, filterState) => combineLatest([
7
- data.pipe(timestamp()),
8
- sortState.pipe(timestamp()),
9
- filterState.pipe(timestamp())
10
- ]).pipe(scan(({ mappedData: resultData }, [data, sort, f], index) => {
11
- if (index === 0 || (data.timestamp > sort.timestamp && data.timestamp > f.timestamp)) {
12
- return ({ mappedData: filterData(sortData(data.value, sort.value.sortsToRun), f.value.allFilters) });
13
- }
14
- if (sort.timestamp > f.timestamp) {
15
- return ({ mappedData: sortData(resultData, sort.value.sortsToRun) });
16
- }
17
- return ({ mappedData: filterData(resultData, f.value.onlyAddedFilters || f.value.allFilters, !f.value.onlyAddedFilters) });
18
- }, { mappedData: [] })).pipe(map(({ mappedData: resultData }) => resultData.filter(item => !item[tbNoShowSymbol])), defaultShareReplay());
19
- export const createDataCleaners = (metadatas, mutate = false) => {
20
- const transforms = createCleaners(metadatas);
21
- return (data) => {
22
- if (!mutate) {
23
- data = { ...data };
24
- }
25
- for (const transform of transforms) {
26
- transform(data);
27
- }
28
- return data;
29
- };
30
- };
31
- const createCleaners = (metadatas) => {
32
- return metadatas.reduce((transforms, metaData) => {
33
- switch (metaData.fieldType) {
34
- case FieldType.Currency:
35
- case FieldType.Number: {
36
- const nested = metaData.key.includes('.');
37
- if (nested) {
38
- transforms.push((t) => {
39
- const val = get(t, metaData.key);
40
- const num = Number(val);
41
- set(t, metaData.key, isNaN(num) || val == null ? null : num);
42
- t[metaData.key] = (isNaN(num) || val == null ? null : num);
43
- });
44
- }
45
- else {
46
- transforms.push((t) => {
47
- const val = t[metaData.key];
48
- const num = Number(val);
49
- t[metaData.key] = (isNaN(num) || val == null ? null : num);
50
- });
51
- }
52
- break;
53
- }
54
- case FieldType.Date: {
55
- const nested = metaData.key.includes('.');
56
- if (nested) {
57
- transforms.push((t) => {
58
- const val = get(t, metaData.key);
59
- const date = Date.parse(val);
60
- if (isNaN(date)) {
61
- set(t, metaData.key, null);
62
- return;
63
- }
64
- const d = new Date(date);
65
- d.setHours(0, 0, 0, 0);
66
- set(t, metaData.key, d);
67
- });
68
- }
69
- else {
70
- transforms.push((t) => {
71
- const val = t[metaData.key];
72
- const date = Date.parse(val);
73
- if (isNaN(date)) {
74
- t[metaData.key] = null;
75
- return;
76
- }
77
- const d = new Date(date);
78
- d.setHours(0, 0, 0, 0);
79
- t[metaData.key] = d;
80
- });
81
- }
82
- break;
83
- }
84
- case FieldType.DateTime: {
85
- const nested = metaData.key.includes('.');
86
- if (nested) {
87
- transforms.push((t) => {
88
- const val = get(t, metaData.key);
89
- const dateTime = Date.parse(val);
90
- if (isNaN(dateTime)) {
91
- set(t, metaData.key, null);
92
- return;
93
- }
94
- const dt = new Date(dateTime);
95
- if (metaData.additional?.dateTimeOptions?.includeMilliseconds) {
96
- set(t, metaData.key, dt);
97
- return;
98
- }
99
- if (metaData.additional?.dateTimeOptions?.includeSeconds) {
100
- dt.setMilliseconds(0);
101
- set(t, metaData.key, dt);
102
- return;
103
- }
104
- dt.setSeconds(0, 0);
105
- set(t, metaData.key, dt);
106
- });
107
- }
108
- else {
109
- transforms.push((t) => {
110
- const val = t[metaData.key];
111
- const dateTime = Date.parse(val);
112
- if (isNaN(dateTime)) {
113
- t[metaData.key] = null;
114
- return;
115
- }
116
- const dt = new Date(dateTime);
117
- if (metaData.additional?.dateTimeOptions?.includeMilliseconds) {
118
- t[metaData.key] = dt;
119
- return;
120
- }
121
- if (metaData.additional?.dateTimeOptions?.includeSeconds) {
122
- dt.setMilliseconds(0);
123
- t[metaData.key] = dt;
124
- return;
125
- }
126
- dt.setSeconds(0, 0);
127
- t[metaData.key] = dt;
128
- });
129
- }
130
- }
131
- }
132
- return transforms;
133
- }, []);
134
- };
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zdGF0ZS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmhlbHBlcnMvZGF0YS1zdGF0ZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxhQUFhLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUksSUFBcUIsRUFBRSxTQUFnQyxFQUFFLFdBQWdELEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUMvSixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RCLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDM0IsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztDQUM5QixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUMsRUFBRTtJQUU3RCxJQUFHLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxH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QUFXLENBQUM7d0JBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ2pDLElBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUM7NEJBQ2xCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUksSUFBVyxDQUFDOzRCQUMvQixPQUFPO3dCQUNULENBQUM7d0JBQ0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0JBQzlCLElBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUMsQ0FBQzs0QkFDNUQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBSSxFQUFTLENBQUM7NEJBQzdCLE9BQU87d0JBQ1QsQ0FBQzt3QkFDRCxJQUFHLFFBQVEsQ0FBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBQyxDQUFDOzRCQUN2RCxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUN0QixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFJLEVBQVMsQ0FBQzs0QkFDN0IsT0FBTzt3QkFDVCxDQUFDO3dCQUNELEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFJLEVBQVMsQ0FBQztvQkFDL0IsQ0FBQyxDQUFDLENBQUE7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxFQUFFLEVBQXVCLENBQUMsQ0FBQTtBQUM3QixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBtYXAsIHNjYW4sIHRpbWVzdGFtcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFNvcnRTdGF0ZSB9IGZyb20gXCIuL3NvcnQtc3RhdGUuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBGaWx0ZXJQcmVkaWNhdGVTdGF0ZSB9IGZyb20gXCIuL2ZpbHRlci1zdGF0ZS5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IGZpbHRlckRhdGEsIHNvcnREYXRhLCB0Yk5vU2hvd1N5bWJvbCB9IGZyb20gXCIuLi8uLi8uLi9mdW5jdGlvbnMvc29ydC1kYXRhLWZ1bmN0aW9uXCI7XHJcbmltcG9ydCB7IGRlZmF1bHRTaGFyZVJlcGxheSB9IGZyb20gXCIuLi8uLi8uLi8uLi9yeGpzL2RlZmF1bHRTaGFyZVJlcGxheVwiO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUsIE1ldGFEYXRhIH0gZnJvbSBcIi4uLy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZlwiO1xyXG5pbXBvcnQgeyBnZXQsIHNldCB9IGZyb20gXCJsb2Rhc2hcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBzb3J0QW5kRmlsdGVyRGF0YSA9IDxUPihkYXRhOiBPYnNlcnZhYmxlPFRbXT4sIHNvcnRTdGF0ZTogT2JzZXJ2YWJsZTxTb3J0U3RhdGU+LCBmaWx0ZXJTdGF0ZTogT2JzZXJ2YWJsZTxGaWx0ZXJQcmVkaWNhdGVTdGF0ZTxUPj4pID0+IGNvbWJpbmVMYXRlc3QoW1xyXG4gIGRhdGEucGlwZSh0aW1lc3RhbXAoKSksXHJcbiAgc29ydFN0YXRlLnBpcGUodGltZXN0YW1wKCkpLFxyXG4gIGZpbHRlclN0YXRlLnBpcGUodGltZXN0YW1wKCkpXHJcbl0pLnBpcGUoc2NhbigoeyBtYXBwZWREYXRhOiByZXN1bHREYXRhIH0sIFtkYXRhLCBzb3J0LCBmXSwgaW5kZXgpPT4ge1xyXG5cclxuICAgICAgaWYoaW5kZXggPT09IDAgfHwgKGRhdGEudGltZXN0YW1wID4gc29ydC50aW1lc3RhbXAgJiYgZGF0YS50aW1lc3RhbXAgPiBmLnRpbWVzdGFtcCkpe1xyXG4gICAgICAgIHJldHVybiAoeyBtYXBwZWREYXRhOiBmaWx0ZXJEYXRhKHNvcnREYXRhKGRhdGEudmFsdWUgLCBzb3J0LnZhbHVlLnNvcnRzVG9SdW4gKSwgZi52YWx1ZS5hbGxGaWx0ZXJzKX0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihzb3J0LnRpbWVzdGFtcCA+IGYudGltZXN0YW1wKXtcclxuICAgICAgICByZXR1cm4gKHsgbWFwcGVkRGF0YTogc29ydERhdGEocmVzdWx0RGF0YSwgc29ydC52YWx1ZS5zb3J0c1RvUnVuKX0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoeyBtYXBwZWREYXRhOiBmaWx0ZXJEYXRhKHJlc3VsdERhdGEsIGYudmFsdWUub25seUFkZGVkRmlsdGVycyB8fCBmLnZhbHVlLmFsbEZpbHRlcnMsICFmLnZhbHVlLm9ubHlBZGRlZEZpbHRlcnMpfSk7XHJcbiAgICB9LCB7IG1hcHBlZERhdGE6IFtdfSBhcyB7IG1hcHBlZERhdGE6IFRbXX0pXHJcbiAgKS5waXBlKFxyXG4gICAgbWFwKCh7IG1hcHBlZERhdGE6IHJlc3VsdERhdGEgfSkgPT4gcmVzdWx0RGF0YS5maWx0ZXIoaXRlbSA9PiAhaXRlbVt0Yk5vU2hvd1N5bWJvbF0pKSxcclxuICAgIGRlZmF1bHRTaGFyZVJlcGxheSgpXHJcbiAgKTtcclxuXHJcbmV4cG9ydCBjb25zdCBjcmVhdGVEYXRhQ2xlYW5lcnMgPSA8VD4obWV0YWRhdGFzOiBNZXRhRGF0YTxUPltdLCBtdXRhdGUgPSBmYWxzZSkgPT4ge1xyXG4gIGNvbnN0IHRyYW5zZm9ybXMgPSBjcmVhdGVDbGVhbmVycyhtZXRhZGF0YXMpO1xyXG4gIHJldHVybiAoZGF0YTogVCkgPT4ge1xyXG4gICAgaWYoIW11dGF0ZSl7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEgfVxyXG4gICAgfVxyXG4gICAgZm9yKGNvbnN0IHRyYW5zZm9ybSBvZiB0cmFuc2Zvcm1zKXtcclxuICAgICAgdHJhbnNmb3JtKGRhdGEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBjcmVhdGVDbGVhbmVycyA9IDxUPihtZXRhZGF0YXM6IE1ldGFEYXRhPFQ+IFtdKSA9PiB7XHJcbiAgcmV0dXJuIG1ldGFkYXRhcy5yZWR1Y2UoKHRyYW5zZm9ybXMsbWV0YURhdGEpID0+IHtcclxuICAgIHN3aXRjaCAoIG1ldGFEYXRhLmZpZWxkVHlwZSApIHtcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuQ3VycmVuY3k6XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLk51bWJlcjp7XHJcbiAgICAgICAgY29uc3QgbmVzdGVkID0gbWV0YURhdGEua2V5LmluY2x1ZGVzKCcuJyk7XHJcbiAgICAgICAgaWYobmVzdGVkKXtcclxuICAgICAgICAgIHRyYW5zZm9ybXMucHVzaCggKHQ6VCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSBnZXQodCwgbWV0YURhdGEua2V5KTtcclxuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKCB2YWwgKTtcclxuICAgICAgICAgICAgc2V0KHQgYXMge30sIG1ldGFEYXRhLmtleSwgaXNOYU4obnVtKSB8fCB2YWwgPT0gbnVsbCA/IG51bGwgOiBudW0pXHJcbiAgICAgICAgICAgIHRbbWV0YURhdGEua2V5XSA9ICAoaXNOYU4obnVtKSB8fCB2YWwgPT0gbnVsbCA/IG51bGwgOiBudW0pIGFzIGFueX0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0cmFuc2Zvcm1zLnB1c2goICh0OlQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gdFttZXRhRGF0YS5rZXldO1xyXG4gICAgICAgICAgICBjb25zdCBudW0gPSBOdW1iZXIoIHZhbCApO1xyXG4gICAgICAgICAgICB0W21ldGFEYXRhLmtleV0gPSAgKGlzTmFOKG51bSkgfHwgdmFsID09IG51bGwgPyBudWxsIDogbnVtKSBhcyBhbnl9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZTp7XHJcbiAgICAgICAgY29uc3QgbmVzdGVkID0gbWV0YURhdGEua2V5LmluY2x1ZGVzKCcuJyk7XHJcbiAgICAgICAgaWYobmVzdGVkKXtcclxuICAgICAgICAgIHRyYW5zZm9ybXMucHVzaCggKHQ6VCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSBnZXQodCwgbWV0YURhdGEua2V5KSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBEYXRlLnBhcnNlKHZhbCk7XHJcbiAgICAgICAgICAgIGlmKGlzTmFOKGRhdGUpKXtcclxuICAgICAgICAgICAgICBzZXQodCBhcyB7fSwgbWV0YURhdGEua2V5LCAgbnVsbCBhcyBhbnkpO1xyXG4gICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgICAgICAgICAgZC5zZXRIb3VycygwLDAsMCwwKTtcclxuICAgICAgICAgICAgc2V0KHQgYXMge30sIG1ldGFEYXRhLmtleSwgIGQgYXMgYW55KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRyYW5zZm9ybXMucHVzaCggKHQ6VCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB2YWwgPSB0W21ldGFEYXRhLmtleV0gYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICBjb25zdCBkYXRlID0gRGF0ZS5wYXJzZSh2YWwpO1xyXG4gICAgICAgICAgICBpZihpc05hTihkYXRlKSl7XHJcbiAgICAgICAgICAgICAgdFttZXRhRGF0YS5rZXldID0gIG51bGwgYXMgYW55O1xyXG4gICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgICAgICAgICAgZC5zZXRIb3VycygwLDAsMCwwKTtcclxuICAgICAgICAgICAgdFttZXRhRGF0YS5rZXldID0gIGQgYXMgYW55O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6e1xyXG4gICAgICAgIGNvbnN0IG5lc3RlZCA9IG1ldGFEYXRhLmtleS5pbmNsdWRlcygnLicpO1xyXG4gICAgICAgIGlmKG5lc3RlZCl7XHJcbiAgICAgICAgICB0cmFuc2Zvcm1zLnB1c2goICh0OlQpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdmFsID0gZ2V0KHQsIG1ldGFEYXRhLmtleSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGVUaW1lID0gRGF0ZS5wYXJzZSh2YWwgYXMgc3RyaW5nKTtcclxuICAgICAgICAgICAgaWYoaXNOYU4oZGF0ZVRpbWUpKXtcclxuICAgICAgICAgICAgICBzZXQodCBhcyB7fSwgbWV0YURhdGEua2V5LCAgbnVsbCBhcyBhbnkpO1xyXG4gICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGR0ID0gbmV3IERhdGUoZGF0ZVRpbWUpO1xyXG4gICAgICAgICAgICBpZihtZXRhRGF0YS5hZGRpdGlvbmFsPy5kYXRlVGltZU9wdGlvbnM/LmluY2x1ZGVNaWxsaXNlY29uZHMpe1xyXG4gICAgICAgICAgICAgIHNldCh0IGFzIHt9LCBtZXRhRGF0YS5rZXksICBkdCBhcyBhbnkpO1xyXG4gICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKG1ldGFEYXRhLmFkZGl0aW9uYWw/LmRhdGVUaW1lT3B0aW9ucz8uaW5jbHVkZVNlY29uZHMpe1xyXG4gICAgICAgICAgICAgIGR0LnNldE1pbGxpc2Vjb25kcygwKTtcclxuICAgICAgICAgICAgICBzZXQodCBhcyB7fSwgbWV0YURhdGEua2V5LCAgZHQgYXMgYW55KTtcclxuICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBkdC5zZXRTZWNvbmRzKDAsIDApO1xyXG4gICAgICAgICAgICBzZXQodCBhcyB7fSwgbWV0YURhdGEua2V5LCAgZHQgYXMgYW55KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRyYW5zZm9ybXMucHVzaCgodDpUKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHRbbWV0YURhdGEua2V5XSBhcyBzdHJpbmc7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGVUaW1lID0gRGF0ZS5wYXJzZSh2YWwpO1xyXG4gICAgICAgICAgICBpZihpc05hTihkYXRlVGltZSkpe1xyXG4gICAgICAgICAgICAgIHRbbWV0YURhdGEua2V5XSA9ICBudWxsIGFzIGFueTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZHQgPSBuZXcgRGF0ZShkYXRlVGltZSk7XHJcbiAgICAgICAgICAgIGlmKG1ldGFEYXRhLmFkZGl0aW9uYWw/LmRhdGVUaW1lT3B0aW9ucz8uaW5jbHVkZU1pbGxpc2Vjb25kcyl7XHJcbiAgICAgICAgICAgICAgdFttZXRhRGF0YS5rZXldID0gIGR0IGFzIGFueTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYobWV0YURhdGEuYWRkaXRpb25hbD8uZGF0ZVRpbWVPcHRpb25zPy5pbmNsdWRlU2Vjb25kcyl7XHJcbiAgICAgICAgICAgICAgZHQuc2V0TWlsbGlzZWNvbmRzKDApO1xyXG4gICAgICAgICAgICAgIHRbbWV0YURhdGEua2V5XSA9ICBkdCBhcyBhbnk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGR0LnNldFNlY29uZHMoMCwgMCk7XHJcbiAgICAgICAgICAgIHRbbWV0YURhdGEua2V5XSA9ICBkdCBhcyBhbnk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRyYW5zZm9ybXM7XHJcbiAgfSwgW10gYXMgKCh0OlQpID0+IHZvaWQpW10pXHJcbn0iXX0=
@@ -1,83 +0,0 @@
1
- import { createFilterFunc } from "../../../classes/filter-info";
2
- import { difference, intersection } from "lodash";
3
- //The idea of this is that if filters were only added, and none were removed or changed, then we only need to tag more rows to not be shown. We don't need to remove any 'dont show' tags.
4
- // So if filters were only added this method will return the added filters, if filters were removed or changed this method will return undefined.
5
- export const updateFilterInfoState = (previousState, filterInfos) => {
6
- filterInfos = filterNonActiveFilters(filterInfos);
7
- const currentState = {
8
- allFilters: filterInfos,
9
- onlyAddedFilters: filterInfoOnlyAdded(previousState.allFilters, filterInfos)
10
- };
11
- return currentState;
12
- };
13
- export const mapFilterInfoStateToPredicateState = (s) => {
14
- const mappedAddOnly = s.onlyAddedFilters ? Object.entries(s.onlyAddedFilters).reduce((obj, [key, value]) => {
15
- obj[key] = createFilterFunc(value);
16
- return obj;
17
- }, {}) : {};
18
- const mappedAll = Object.entries(s.allFilters).map(([key, value]) => mappedAddOnly[key] || createFilterFunc(value));
19
- return ({
20
- allFilters: mappedAll,
21
- onlyAddedFilters: s.onlyAddedFilters ? Object.values(mappedAddOnly) : undefined
22
- });
23
- };
24
- export const updateFilterPredicateState = (previousState, filters) => {
25
- const currentState = {
26
- allFilters: filters,
27
- onlyAddedFilters: predicatesOnlyAdded(previousState.allFilters, filters)
28
- };
29
- return currentState;
30
- };
31
- export const updateFilterState = (filterInfos, predicates) => {
32
- const infos = mapFilterInfoStateToPredicateState(filterInfos.value);
33
- const filtersState = {
34
- allFilters: [...infos.allFilters, ...predicates.value.allFilters]
35
- };
36
- if (filterInfos.timestamp > predicates.timestamp && !!filterInfos.value.onlyAddedFilters) {
37
- filtersState.onlyAddedFilters = infos.onlyAddedFilters;
38
- }
39
- else {
40
- filtersState.onlyAddedFilters = predicates.value.onlyAddedFilters;
41
- }
42
- return filtersState;
43
- };
44
- const filterNonActiveFilters = (filtersDict) => Object.entries(filtersDict).reduce((obj, [key, value]) => {
45
- if (value.active !== false) {
46
- obj[key] = value;
47
- }
48
- ;
49
- return obj;
50
- }, {});
51
- function filterInfoOnlyAdded(previousFilterInfos, currentFilterInfos) {
52
- const previousKeys = Object.keys(previousFilterInfos);
53
- const currentKeys = Object.keys(currentFilterInfos);
54
- const keysInBoth = intersection(previousKeys, currentKeys);
55
- const someRemoved = previousKeys.length > keysInBoth.length;
56
- if (someRemoved || !previousKeys.length) {
57
- return undefined;
58
- }
59
- if (filtersInfosUpdated(previousFilterInfos, currentFilterInfos)) {
60
- return undefined;
61
- }
62
- const addedFilters = difference(currentKeys, keysInBoth).reduce((dict, key) => {
63
- dict[key] = currentFilterInfos[key];
64
- return dict;
65
- }, {});
66
- return addedFilters;
67
- }
68
- function predicatesOnlyAdded(previousPredicates, currentPredicates) {
69
- if (!previousPredicates.length) {
70
- return undefined;
71
- }
72
- const predicateFiltersRemoved = difference(previousPredicates, currentPredicates).length;
73
- if (predicateFiltersRemoved) {
74
- return undefined;
75
- }
76
- return difference(currentPredicates, previousPredicates);
77
- }
78
- function filtersInfosUpdated(previousFilterInfos, currentFilterInfos) {
79
- return !Object.entries(previousFilterInfos).every(([key, val]) => {
80
- return currentFilterInfos[key].filterType === val.filterType && currentFilterInfos[key].filterValue === val.filterValue;
81
- });
82
- }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXN0YXRlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL3RhYmxlLWNvbnRhaW5lci90YWJsZS1jb250YWluZXIuaGVscGVycy9maWx0ZXItc3RhdGUuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQTRCLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUYsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFbEQsMExBQTBMO0FBQzFMLGlKQUFpSjtBQUVqSixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFJLGFBQWlDLEVBQUUsV0FBMkIsRUFBRSxFQUFFO0lBQ3pHLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxNQUFNLFlBQVksR0FBdUI7UUFDdkMsVUFBVSxFQUFFLFdBQVc7UUFDdkIsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUM7S0FDN0UsQ0FBQTtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLENBQUksQ0FBcUIsRUFBMkIsRUFBRTtJQUN0RyxNQUFNLGFBQWEsR0FBcUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQzNJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxP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ekgsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGltZXN0YW1wIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ3VzdG9tRmlsdGVyLCBGaWx0ZXJJbmZvLCBjcmVhdGVGaWx0ZXJGdW5jIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvZmlsdGVyLWluZm9cIjtcclxuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gXCIuLi8uLi8uLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnlcIjtcclxuaW1wb3J0IHsgUHJlZGljYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgZGlmZmVyZW5jZSwgaW50ZXJzZWN0aW9uIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5cclxuLy9UaGUgaWRlYSBvZiB0aGlzIGlzIHRoYXQgaWYgZmlsdGVycyB3ZXJlIG9ubHkgYWRkZWQsIGFuZCBub25lIHdlcmUgcmVtb3ZlZCBvciBjaGFuZ2VkLCB0aGVuIHdlIG9ubHkgbmVlZCB0byB0YWcgbW9yZSByb3dzIHRvIG5vdCBiZSBzaG93bi4gV2UgZG9uJ3QgbmVlZCB0byByZW1vdmUgYW55ICdkb250IHNob3cnIHRhZ3MuXHJcbi8vIFNvIGlmIGZpbHRlcnMgd2VyZSBvbmx5IGFkZGVkIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBhZGRlZCBmaWx0ZXJzLCBpZiBmaWx0ZXJzIHdlcmUgcmVtb3ZlZCBvciBjaGFuZ2VkIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cclxuXHJcbmV4cG9ydCBjb25zdCB1cGRhdGVGaWx0ZXJJbmZvU3RhdGUgPSA8VD4ocHJldmlvdXNTdGF0ZTogRmlsdGVySW5mb1N0YXRlPFQ+LCBmaWx0ZXJJbmZvczogRmlsdGVySW5mb0RpY3QpID0+IHtcclxuICBmaWx0ZXJJbmZvcyA9IGZpbHRlck5vbkFjdGl2ZUZpbHRlcnMoZmlsdGVySW5mb3MpO1xyXG4gIGNvbnN0IGN1cnJlbnRTdGF0ZTogRmlsdGVySW5mb1N0YXRlPFQ+ID0ge1xyXG4gICAgYWxsRmlsdGVyczogZmlsdGVySW5mb3MsXHJcbiAgICBvbmx5QWRkZWRGaWx0ZXJzOiBmaWx0ZXJJbmZvT25seUFkZGVkKHByZXZpb3VzU3RhdGUuYWxsRmlsdGVycywgZmlsdGVySW5mb3MpXHJcbiAgfVxyXG4gIHJldHVybiBjdXJyZW50U3RhdGU7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBtYXBGaWx0ZXJJbmZvU3RhdGVUb1ByZWRpY2F0ZVN0YXRlID0gPFQ+KHM6IEZpbHRlckluZm9TdGF0ZTxUPik6IEZpbHRlclByZWRpY2F0ZVN0YXRlPFQ+ID0+IHtcclxuICBjb25zdCBtYXBwZWRBZGRPbmx5OiB7W2tleSBpbiBrZXlvZiBUXTogUHJlZGljYXRlPFQ+fSA9IHMub25seUFkZGVkRmlsdGVycyA/IE9iamVjdC5lbnRyaWVzKHMub25seUFkZGVkRmlsdGVycykucmVkdWNlKChvYmosIFtrZXksIHZhbHVlXSkgPT4ge1xyXG4gICAgb2JqW2tleV0gPSBjcmVhdGVGaWx0ZXJGdW5jKHZhbHVlKTtcclxuICAgIHJldHVybiBvYmo7XHJcbiAgfSwge30gYXMge1trZXkgaW4ga2V5b2YgVF06IFByZWRpY2F0ZTxUPn0pIDoge30gYXMge1trZXkgaW4ga2V5b2YgVF06IFByZWRpY2F0ZTxUPn07XHJcbiAgY29uc3QgbWFwcGVkQWxsID0gT2JqZWN0LmVudHJpZXMocy5hbGxGaWx0ZXJzKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gbWFwcGVkQWRkT25seVtrZXldIHx8IGNyZWF0ZUZpbHRlckZ1bmModmFsdWUpKTtcclxuICByZXR1cm4gKHtcclxuICAgIGFsbEZpbHRlcnM6IG1hcHBlZEFsbCxcclxuICAgIG9ubHlBZGRlZEZpbHRlcnM6IHMub25seUFkZGVkRmlsdGVycyA/IE9iamVjdC52YWx1ZXMobWFwcGVkQWRkT25seSkgOiB1bmRlZmluZWRcclxuICB9KVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdXBkYXRlRmlsdGVyUHJlZGljYXRlU3RhdGUgPSA8VD4ocHJldmlvdXNTdGF0ZTogRmlsdGVyUHJlZGljYXRlU3RhdGU8VD4sIGZpbHRlcnM6IFByZWRpY2F0ZTxhbnk+W10pID0+IHtcclxuICBjb25zdCBjdXJyZW50U3RhdGU6IEZpbHRlclByZWRpY2F0ZVN0YXRlPFQ+ID0ge1xyXG4gICAgYWxsRmlsdGVyczogZmlsdGVycyxcclxuICAgIG9ubHlBZGRlZEZpbHRlcnM6IHByZWRpY2F0ZXNPbmx5QWRkZWQocHJldmlvdXNTdGF0ZS5hbGxGaWx0ZXJzLCBmaWx0ZXJzKVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudFN0YXRlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgdXBkYXRlRmlsdGVyU3RhdGUgPSA8VD4oZmlsdGVySW5mb3M6IFRpbWVzdGFtcDxGaWx0ZXJJbmZvU3RhdGU8VD4+LCBwcmVkaWNhdGVzOiBUaW1lc3RhbXA8RmlsdGVyUHJlZGljYXRlU3RhdGU8VD4+KTogRmlsdGVyUHJlZGljYXRlU3RhdGU8VD4gPT4ge1xyXG4gIGNvbnN0IGluZm9zID0gbWFwRmlsdGVySW5mb1N0YXRlVG9QcmVkaWNhdGVTdGF0ZShmaWx0ZXJJbmZvcy52YWx1ZSk7XHJcbiAgY29uc3QgZmlsdGVyc1N0YXRlOiBGaWx0ZXJQcmVkaWNhdGVTdGF0ZTxUPiA9IHtcclxuICAgIGFsbEZpbHRlcnM6IFsuLi5pbmZvcy5hbGxGaWx0ZXJzLCAuLi5wcmVkaWNhdGVzLnZhbHVlLmFsbEZpbHRlcnNdXHJcbiAgfVxyXG4gIGlmKGZpbHRlckluZm9zLnRpbWVzdGFtcCA+IHByZWRpY2F0ZXMudGltZXN0YW1wICYmICEhZmlsdGVySW5mb3MudmFsdWUub25seUFkZGVkRmlsdGVycyl7XHJcbiAgICBmaWx0ZXJzU3RhdGUub25seUFkZGVkRmlsdGVycyA9IGluZm9zLm9ubHlBZGRlZEZpbHRlcnM7XHJcbiAgfSBlbHNlIHtcclxuICAgIGZpbHRlcnNTdGF0ZS5vbmx5QWRkZWRGaWx0ZXJzID0gcHJlZGljYXRlcy52YWx1ZS5vbmx5QWRkZWRGaWx0ZXJzXHJcbiAgfVxyXG4gIHJldHVybiBmaWx0ZXJzU3RhdGVcclxufVxyXG5cclxuXHJcbmNvbnN0IGZpbHRlck5vbkFjdGl2ZUZpbHRlcnMgPSA8VD4oZmlsdGVyc0RpY3QgOiBGaWx0ZXJJbmZvRGljdCkgPT4gT2JqZWN0LmVudHJpZXMoZmlsdGVyc0RpY3QpLnJlZHVjZSgob2JqICxba2V5LCB2YWx1ZV0pID0+IHsgXHJcbiAgaWYodmFsdWUuYWN0aXZlICE9PSBmYWxzZSl7XHJcbiAgICBvYmpba2V5XSA9IHZhbHVlXHJcbiAgfTtcclxuICByZXR1cm4gb2JqO1xyXG59LCB7fSBhcyBEaWN0aW9uYXJ5PEZpbHRlckluZm8gfCBDdXN0b21GaWx0ZXI+KTtcclxuXHJcblxyXG5mdW5jdGlvbiBmaWx0ZXJJbmZvT25seUFkZGVkKHByZXZpb3VzRmlsdGVySW5mb3M6IEZpbHRlckluZm9EaWN0LCBjdXJyZW50RmlsdGVySW5mb3M6IEZpbHRlckluZm9EaWN0KTogRmlsdGVySW5mb0RpY3QgfCB1bmRlZmluZWR7XHJcbiAgY29uc3QgcHJldmlvdXNLZXlzID0gT2JqZWN0LmtleXMocHJldmlvdXNGaWx0ZXJJbmZvcyk7XHJcbiAgY29uc3QgY3VycmVudEtleXMgPSBPYmplY3Qua2V5cyhjdXJyZW50RmlsdGVySW5mb3MpO1xyXG4gIGNvbnN0IGtleXNJbkJvdGggPSBpbnRlcnNlY3Rpb24ocHJldmlvdXNLZXlzLCBjdXJyZW50S2V5cyk7XHJcbiAgY29uc3Qgc29tZVJlbW92ZWQgPSBwcmV2aW91c0tleXMubGVuZ3RoID4ga2V5c0luQm90aC5sZW5ndGg7XHJcbiAgaWYoc29tZVJlbW92ZWQgfHwgIXByZXZpb3VzS2V5cy5sZW5ndGgpe1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgaWYoZmlsdGVyc0luZm9zVXBkYXRlZChwcmV2aW91c0ZpbHRlckluZm9zLCBjdXJyZW50RmlsdGVySW5mb3MpKXtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIGNvbnN0IGFkZGVkRmlsdGVycyA9IGRpZmZlcmVuY2UoY3VycmVudEtleXMsIGtleXNJbkJvdGgpLnJlZHVjZSgoZGljdCwga2V5KSA9PiB7XHJcbiAgICBkaWN0W2tleV0gPSBjdXJyZW50RmlsdGVySW5mb3Nba2V5XTtcclxuICAgIHJldHVybiBkaWN0O1xyXG4gIH0sIHt9IGFzIEZpbHRlckluZm9EaWN0KTtcclxuICByZXR1cm4gYWRkZWRGaWx0ZXJzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcmVkaWNhdGVzT25seUFkZGVkKHByZXZpb3VzUHJlZGljYXRlczogUHJlZGljYXRlPGFueT5bXSwgY3VycmVudFByZWRpY2F0ZXM6IFByZWRpY2F0ZTxhbnk+W10pe1xyXG4gIGlmKCFwcmV2aW91c1ByZWRpY2F0ZXMubGVuZ3RoKXtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIGNvbnN0IHByZWRpY2F0ZUZpbHRlcnNSZW1vdmVkID0gZGlmZmVyZW5jZShwcmV2aW91c1ByZWRpY2F0ZXMsIGN1cnJlbnRQcmVkaWNhdGVzKS5sZW5ndGg7XHJcbiAgaWYocHJlZGljYXRlRmlsdGVyc1JlbW92ZWQpe1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcbiAgcmV0dXJuIGRpZmZlcmVuY2UoY3VycmVudFByZWRpY2F0ZXMsIHByZXZpb3VzUHJlZGljYXRlcyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbHRlcnNJbmZvc1VwZGF0ZWQocHJldmlvdXNGaWx0ZXJJbmZvczogRmlsdGVySW5mb0RpY3Q8YW55PiwgY3VycmVudEZpbHRlckluZm9zOiBGaWx0ZXJJbmZvRGljdDxhbnk+KXtcclxuICByZXR1cm4gIU9iamVjdC5lbnRyaWVzKHByZXZpb3VzRmlsdGVySW5mb3MpLmV2ZXJ5KChba2V5LCB2YWxdKSA9PiB7XHJcbiAgICByZXR1cm4gY3VycmVudEZpbHRlckluZm9zW2tleV0uZmlsdGVyVHlwZSA9PT0gdmFsLmZpbHRlclR5cGUgJiYgY3VycmVudEZpbHRlckluZm9zW2tleV0uZmlsdGVyVmFsdWUgPT09IHZhbC5maWx0ZXJWYWx1ZVxyXG4gIH0pXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVySW5mb1N0YXRlPFQ+IHtcclxuICBhbGxGaWx0ZXJzOiBGaWx0ZXJJbmZvRGljdDxUPiwgXHJcbiAgb25seUFkZGVkRmlsdGVycz86IEZpbHRlckluZm9EaWN0PFQ+IHwgdW5kZWZpbmVkLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclByZWRpY2F0ZVN0YXRlPFQ+IHtcclxuICBhbGxGaWx0ZXJzOiBQcmVkaWNhdGU8VD5bXSwgXHJcbiAgb25seUFkZGVkRmlsdGVycz86IFByZWRpY2F0ZTxUPltdIHwgdW5kZWZpbmVkLFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBGaWx0ZXJJbmZvRGljdDxUID0gYW55PiA9IERpY3Rpb25hcnk8RmlsdGVySW5mbzxhbnksIFQ+IHwgQ3VzdG9tRmlsdGVyPGFueT4+OyJdfQ==
@@ -1,71 +0,0 @@
1
- import { groupBy } from "lodash";
2
- import { initIndexSymbol } from "./sort-state.helpers";
3
- function getGroupedData(data, groupByKeys) {
4
- return tbGroupBy(data, groupByKeys);
5
- }
6
- const tbGroupBy = (data, groupByKeys, parentGroupName) => {
7
- const currentKey = groupByKeys[0];
8
- const res = groupBy(data, currentKey);
9
- const remainingGroupByKeys = groupByKeys.slice(1);
10
- const finalGroups = !remainingGroupByKeys.length;
11
- if (remainingGroupByKeys.length) {
12
- Object.keys(res).forEach(key => res[key] = tbGroupBy(res[key], remainingGroupByKeys, key));
13
- }
14
- return Object.keys(res).map((groupName, i) => {
15
- const uniqName = parentGroupName ? `${parentGroupName}-${groupName}` : `${groupName}`;
16
- const groupHeaders = res[groupName]?.filter(row => row.isGroupHeader) ?? [];
17
- return {
18
- isGroupHeader: true,
19
- groupHeaderDisplay: groupName,
20
- hasTheData: finalGroups,
21
- children: finalGroups ? res[groupName] : res[groupName].map(d => { d.padding += 20; return d; }),
22
- groupName: `tb_group_${uniqName}`,
23
- padding: 1,
24
- key: currentKey,
25
- length: groupHeaders.reduce((acc, curr) => curr.length + acc, 0) + ((res[groupName] ?? []).length - groupHeaders.length),
26
- [initIndexSymbol]: uniqName,
27
- };
28
- });
29
- };
30
- export function updateGroupByState({ groupedData }, [data, groups, expandedGroups], index) {
31
- if (index === 0
32
- || dataUpdated(data, groups, expandedGroups)
33
- || groupsUpdated(groups, expandedGroups)) {
34
- groupedData = groups.value.length ? getGroupedData(data.value, groups.value) : data.value;
35
- }
36
- const newDisplayData = expandedGroups.value.length === 0
37
- ? groupedData
38
- : groupedData.map(group => mapGroupHeader(group, expandedGroups.value)).flat();
39
- return ({ displayData: newDisplayData, groupedData });
40
- }
41
- function mapGroupHeader(obj, data) {
42
- const showChildren = data.find(a => a.expandedHeaders.includes(obj.groupName));
43
- const children = !showChildren ? [] :
44
- obj.hasTheData ? obj.children
45
- : obj.children.map(a => mapGroupHeader(a, data));
46
- return [obj, ...children].flat();
47
- }
48
- function dataUpdated(data, groups, expandedGroups) {
49
- return data.timestamp > groups.timestamp && data.timestamp > expandedGroups.timestamp;
50
- }
51
- function groupsUpdated(groups, expandedGroups) {
52
- return groups.timestamp > expandedGroups.timestamp;
53
- }
54
- ;
55
- export const initialGroupByState = { displayData: [], groupedData: [] };
56
- export const getAllGroupHeaderNames = (data) => {
57
- const groups = getGroupHeaders(data, (d) => d.isGroupHeader);
58
- return groupBy(groups, 'key');
59
- };
60
- export const getAllGroupHeaderNamesByKeys = (data, keys) => {
61
- const groups = getGroupHeaders(data, (d) => d.isGroupHeader && keys.includes(d.key));
62
- return groupBy(groups, 'key');
63
- };
64
- const getGroupHeaders = (data, filterFunc, arr = []) => {
65
- const headers = data.filter(filterFunc);
66
- arr.push(...headers);
67
- headers.forEach(h => { if (!!h.children.length)
68
- getGroupHeaders(h.children, filterFunc, arr); });
69
- return arr;
70
- };
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBCeS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmhlbHBlcnMvZ3JvdXBCeS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZELFNBQVMsY0FBYyxDQUFDLElBQVcsRUFBRSxXQUFxQjtJQUN4RCxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBVyxFQUFFLFdBQXFCLEVBQUUsZUFBcUIsRUFBUyxFQUFFO0lBQ3JGLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxNQUFNLFdBQVcsR0FBRyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztJQUNqRCxJQUFJLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUM1RixDQUFDO0lBQ0QsT0FBTyxN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QUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLE9BQU8sT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtBQUMvQixDQUFDLENBQUE7QUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFDLElBQVcsRUFBRSxVQUE4QixFQUFFLE1BQVksRUFBRSxFQUFXLEVBQUU7SUFDL0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDckIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFFLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQSxDQUFBLENBQUMsQ0FBQyxDQUFDO0lBQzdGLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ3JvdXBCeSB9IGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgVGltZXN0YW1wIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgR3JvdXAsIEdyb3VwZWREYXRhIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvVGFibGVTdGF0ZVwiO1xyXG5pbXBvcnQgeyBpbml0SW5kZXhTeW1ib2wgfSBmcm9tIFwiLi9zb3J0LXN0YXRlLmhlbHBlcnNcIjtcclxuXHJcbmZ1bmN0aW9uIGdldEdyb3VwZWREYXRhKGRhdGE6IGFueVtdLCBncm91cEJ5S2V5czogc3RyaW5nW10pOiBhbnlbXSB7XHJcbiAgcmV0dXJuIHRiR3JvdXBCeShkYXRhLCBncm91cEJ5S2V5cyk7XHJcbn1cclxuXHJcbmNvbnN0IHRiR3JvdXBCeSA9IChkYXRhOiBhbnlbXSwgZ3JvdXBCeUtleXM6IHN0cmluZ1tdLCBwYXJlbnRHcm91cE5hbWU/OiBhbnkpOiBhbnlbXSA9PiB7XHJcbiAgY29uc3QgY3VycmVudEtleSA9IGdyb3VwQnlLZXlzWzBdO1xyXG4gIGNvbnN0IHJlcyA9IGdyb3VwQnkoZGF0YSwgY3VycmVudEtleSk7XHJcbiAgY29uc3QgcmVtYWluaW5nR3JvdXBCeUtleXMgPSBncm91cEJ5S2V5cy5zbGljZSgxKTtcclxuICBjb25zdCBmaW5hbEdyb3VwcyA9ICFyZW1haW5pbmdHcm91cEJ5S2V5cy5sZW5ndGg7XHJcbiAgaWYgKHJlbWFpbmluZ0dyb3VwQnlLZXlzLmxlbmd0aCkge1xyXG4gICAgT2JqZWN0LmtleXMocmVzKS5mb3JFYWNoKGtleSA9PiByZXNba2V5XSA9IHRiR3JvdXBCeShyZXNba2V5XSwgcmVtYWluaW5nR3JvdXBCeUtleXMsIGtleSkpXHJcbiAgfVxyXG4gIHJldHVybiBPYmplY3Qua2V5cyhyZXMpLm1hcCgoZ3JvdXBOYW1lLCBpKSA9PiB7XHJcbiAgICBjb25zdCB1bmlxTmFtZSA9IHBhcmVudEdyb3VwTmFtZSA/IGAke3BhcmVudEdyb3VwTmFtZX0tJHtncm91cE5hbWV9YCA6IGAke2dyb3VwTmFtZX1gO1xyXG4gICAgY29uc3QgZ3JvdXBIZWFkZXJzID0gcmVzW2dyb3VwTmFtZV0/LmZpbHRlcihyb3cgPT4gcm93LmlzR3JvdXBIZWFkZXIpID8/IFtdO1xyXG4gICAgcmV0dXJuICh7XHJcbiAgICAgICAgaXNHcm91cEhlYWRlcjogdHJ1ZSxcclxuICAgICAgICBncm91cEhlYWRlckRpc3BsYXk6IGdyb3VwTmFtZSxcclxuICAgICAgICBoYXNUaGVEYXRhOiBmaW5hbEdyb3VwcyxcclxuICAgICAgICBjaGlsZHJlbjogZmluYWxHcm91cHMgPyByZXNbZ3JvdXBOYW1lXSA6IHJlc1tncm91cE5hbWVdLm1hcChkID0+IHtkLnBhZGRpbmcgKz0gMjA7IHJldHVybiBkfSksXHJcbiAgICAgICAgZ3JvdXBOYW1lOiBgdGJfZ3JvdXBfJHt1bmlxTmFtZX1gLFxyXG4gICAgICAgIHBhZGRpbmc6IDEsXHJcbiAgICAgICAga2V5OiBjdXJyZW50S2V5LFxyXG4gICAgICAgIGxlbmd0aCA6IGdyb3VwSGVhZGVycy5yZWR1Y2UoKGFjYywgY3VycikgPT4gY3Vyci5sZW5ndGggKyBhY2MsMCkgKyAoKHJlc1tncm91cE5hbWVdID8/IFtdKS5sZW5ndGggLSBncm91cEhlYWRlcnMubGVuZ3RoKSxcclxuICAgICAgICBbaW5pdEluZGV4U3ltYm9sXTogdW5pcU5hbWUsXHJcbiAgICAgIH0gYXMgR3JvdXBcclxuICAgICk7XHJcbiAgfSlcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUdyb3VwQnlTdGF0ZSh7IGdyb3VwZWREYXRhIH06R3JvdXBCeVN0YXRlLCBbZGF0YSwgZ3JvdXBzLCBleHBhbmRlZEdyb3Vwc10gOiBbVGltZXN0YW1wPGFueVtdPiwgVGltZXN0YW1wPHN0cmluZ1tdPiwgVGltZXN0YW1wPEdyb3VwZWREYXRhW10+XSwgaW5kZXg6IG51bWJlcil7XHJcbiAgaWYoXHJcbiAgICBpbmRleCA9PT0gMFxyXG4gICAgfHwgZGF0YVVwZGF0ZWQoZGF0YSwgZ3JvdXBzLCBleHBhbmRlZEdyb3VwcylcclxuICAgIHx8IGdyb3Vwc1VwZGF0ZWQoZ3JvdXBzLCBleHBhbmRlZEdyb3VwcylcclxuICApe1xyXG4gICAgZ3JvdXBlZERhdGEgPSBncm91cHMudmFsdWUubGVuZ3RoID8gZ2V0R3JvdXBlZERhdGEoZGF0YS52YWx1ZSwgZ3JvdXBzLnZhbHVlKSA6IGRhdGEudmFsdWU7XHJcbiAgfVxyXG4gIGNvbnN0IG5ld0Rpc3BsYXlEYXRhID0gZXhwYW5kZWRHcm91cHMudmFsdWUubGVuZ3RoID09PSAwXHJcbiAgICA/IGdyb3VwZWREYXRhXHJcbiAgICA6IGdyb3VwZWREYXRhLm1hcChncm91cCA9PiBtYXBHcm91cEhlYWRlcihncm91cCwgZXhwYW5kZWRHcm91cHMudmFsdWUpKS5mbGF0KCk7XHJcbiAgcmV0dXJuICh7ZGlzcGxheURhdGE6IG5ld0Rpc3BsYXlEYXRhLCBncm91cGVkRGF0YX0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYXBHcm91cEhlYWRlcihvYmo6IGFueSwgZGF0YTogR3JvdXBlZERhdGFbXSl7XHJcbiAgY29uc3Qgc2hvd0NoaWxkcmVuID0gZGF0YS5maW5kKGEgPT4gYS5leHBhbmRlZEhlYWRlcnMuaW5jbHVkZXMob2JqLmdyb3VwTmFtZSkpO1xyXG4gIGNvbnN0IGNoaWxkcmVuID0gIXNob3dDaGlsZHJlbiA/IFtdIDogXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iai5oYXNUaGVEYXRhID8gIG9iai5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogb2JqLmNoaWxkcmVuLm1hcChhID0+IG1hcEdyb3VwSGVhZGVyKGEsIGRhdGEpKVxyXG5cclxuICByZXR1cm4gW29iaiwgLi4uY2hpbGRyZW5dLmZsYXQoKVxyXG59XHJcblxyXG5mdW5jdGlvbiBkYXRhVXBkYXRlZChkYXRhOiBUaW1lc3RhbXA8YW55W10+LCBncm91cHM6IFRpbWVzdGFtcDxzdHJpbmdbXT4sIGV4cGFuZGVkR3JvdXBzOiBUaW1lc3RhbXA8R3JvdXBlZERhdGFbXT4pe1xyXG4gIHJldHVybiBkYXRhLnRpbWVzdGFtcCA+IGdyb3Vwcy50aW1lc3RhbXAgJiYgZGF0YS50aW1lc3RhbXAgPiBleHBhbmRlZEdyb3Vwcy50aW1lc3RhbXA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdyb3Vwc1VwZGF0ZWQoZ3JvdXBzOiBUaW1lc3RhbXA8c3RyaW5nW10+LCBleHBhbmRlZEdyb3VwczogVGltZXN0YW1wPEdyb3VwZWREYXRhW10+KXtcclxuICByZXR1cm4gZ3JvdXBzLnRpbWVzdGFtcCA+IGV4cGFuZGVkR3JvdXBzLnRpbWVzdGFtcDtcclxufVxyXG5cclxuaW50ZXJmYWNlIEdyb3VwQnlTdGF0ZSB7IGRpc3BsYXlEYXRhOiBhbnlbXSwgZ3JvdXBlZERhdGE6IGFueVtdfTtcclxuXHJcbmV4cG9ydCBjb25zdCBpbml0aWFsR3JvdXBCeVN0YXRlID0geyBkaXNwbGF5RGF0YTogW10sIGdyb3VwZWREYXRhOiBbXX1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRBbGxHcm91cEhlYWRlck5hbWVzID0gKGRhdGE6IGFueVtdKSA9PiB7XHJcbiAgY29uc3QgZ3JvdXBzID0gZ2V0R3JvdXBIZWFkZXJzKGRhdGEsIChkOmFueSkgPT4gZC5pc0dyb3VwSGVhZGVyKTtcclxuICByZXR1cm4gZ3JvdXBCeShncm91cHMsICdrZXknKVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0QWxsR3JvdXBIZWFkZXJOYW1lc0J5S2V5cyA9IChkYXRhOiBhbnlbXSwga2V5czogc3RyaW5nW10pID0+IHtcclxuICBjb25zdCBncm91cHMgPSBnZXRHcm91cEhlYWRlcnMoZGF0YSwgKGQ6YW55KSA9PiBkLmlzR3JvdXBIZWFkZXIgJiYga2V5cy5pbmNsdWRlcyhkLmtleSkpO1xyXG4gIHJldHVybiBncm91cEJ5KGdyb3VwcywgJ2tleScpXHJcbn1cclxuXHJcbmNvbnN0IGdldEdyb3VwSGVhZGVycyA9IChkYXRhOiBhbnlbXSwgZmlsdGVyRnVuYzogKGQ6YW55KSA9PiBib29sZWFuLCBhcnI6YW55W10gPSBbXSk6IEdyb3VwW10gPT4ge1xyXG4gIGNvbnN0IGhlYWRlcnMgPSBkYXRhLmZpbHRlcihmaWx0ZXJGdW5jKTtcclxuICBhcnIucHVzaCguLi5oZWFkZXJzKTtcclxuICBoZWFkZXJzLmZvckVhY2goaCA9PiB7aWYoISFoLmNoaWxkcmVuLmxlbmd0aCkgZ2V0R3JvdXBIZWFkZXJzKGguY2hpbGRyZW4sIGZpbHRlckZ1bmMsIGFycil9KTtcclxuICByZXR1cm4gYXJyO1xyXG59Il19
@@ -1,36 +0,0 @@
1
- import { difference } from "lodash";
2
- // If we are only sorting due to a change in the Sorts[] we can 'optimize'. If the sort array was first by column a asc then by column b desc then by column c asc,
3
- // and now it is first by column d asc then by column a desc then by column b desc then by column c asc, we dont need to rerun the tail, i.e. for culumn b and c.
4
- // So we need to calculate the matching tail of the sort array. Then sortsToRun will be the non-matching head.
5
- // But if any sorts were removed the only way to 'unsort' is to start by the original data and run all the existing sorts again, so 'sorts to run' will be all
6
- // the sorts.
7
- // We always pass allSorts to the container because if the table data changes all the sorts will need to be run.
8
- export function updateSortState(previousSorts, currentSorts) {
9
- currentSorts = addInitSort(currentSorts);
10
- if (sortsRemoved(previousSorts.allSorts, currentSorts)) {
11
- return ({ sortsToRun: currentSorts, allSorts: currentSorts });
12
- }
13
- const sameTailLength = getSameTailLength(previousSorts.allSorts, currentSorts);
14
- const sortsToRun = currentSorts.slice(0, currentSorts.length - sameTailLength);
15
- return ({ sortsToRun, allSorts: currentSorts });
16
- }
17
- function addInitSort(sorts) {
18
- return [...sorts, { active: initIndexSymbol, direction: 'asc' }];
19
- }
20
- function sortsRemoved(previousSorts, currentSorts) {
21
- const previousSortedColumns = previousSorts.map(s => s.active);
22
- const currentSortedColumns = currentSorts.map(s => s.active);
23
- const sortsRemoved = !!difference(previousSortedColumns, currentSortedColumns).length;
24
- return sortsRemoved;
25
- }
26
- function getSameTailLength(previousSorts, currentSorts) {
27
- previousSorts = [...previousSorts].reverse();
28
- currentSorts = [...currentSorts].reverse();
29
- let indexOfChange = currentSorts.findIndex((s, i) => s.active !== previousSorts[i]?.active || s.direction !== previousSorts[i]?.direction);
30
- if (indexOfChange === -1)
31
- return indexOfChange = currentSorts.length;
32
- return indexOfChange;
33
- }
34
- export const initIndexSymbol = Symbol('tb_init_index');
35
- export const initialSortState = { sortsToRun: [], allSorts: [] };
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1zdGF0ZS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdGFibGUtY29udGFpbmVyLmhlbHBlcnMvc29ydC1zdGF0ZS5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEMsbUtBQW1LO0FBQ25LLGlLQUFpSztBQUNqSyw4R0FBOEc7QUFDOUcsOEpBQThKO0FBQzlKLGFBQWE7QUFDYixnSEFBZ0g7QUFDaEgsTUFBTSxVQUFVLGVBQWUsQ0FBQyxhQUF3QixFQUFFLFlBQW9CO0lBQzVFLFlBQVksR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekMsSUFBRyxZQUFZLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsRUFBQyxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxFQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDL0UsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQztJQUMvRSxPQUFPLENBQUMsRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUlELFNBQVMsV0FBVyxDQUFDLEtBQWE7SUFDaEMsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFFLGVBQW9DLEVBQUUsU0FBUyxFQUFFLEtBQXNCLEVBQUMsQ0FBQyxDQUFDO0FBQ3ZHLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxhQUFxQixFQUFFLFlBQW9CO0lBQy9ELE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRCxNQUFNLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0RixPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBR0QsU0FBUyxpQkFBaUIsQ0FBQyxhQUFxQixFQUFFLFlBQW9CO0lBQ3BFLGFBQWEsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0MsWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQyxJQUFJLGFBQWEsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNJLElBQUcsYUFBYSxLQUFLLENBQUMsQ0FBQztRQUFFLE9BQU8sYUFBYSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDcEUsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWMsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvcnQgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydFwiO1xyXG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZlwiO1xyXG5pbXBvcnQgeyBkaWZmZXJlbmNlIH0gZnJvbSBcImxvZGFzaFwiO1xyXG5cclxuLy8gSWYgd2UgYXJlIG9ubHkgc29ydGluZyBkdWUgdG8gYSBjaGFuZ2UgaW4gdGhlIFNvcnRzW10gd2UgY2FuICdvcHRpbWl6ZScuIElmIHRoZSBzb3J0IGFycmF5IHdhcyBmaXJzdCBieSBjb2x1bW4gYSBhc2MgdGhlbiBieSBjb2x1bW4gYiBkZXNjIHRoZW4gYnkgY29sdW1uIGMgYXNjLFxyXG4vLyBhbmQgbm93IGl0IGlzIGZpcnN0IGJ5IGNvbHVtbiBkIGFzYyB0aGVuIGJ5IGNvbHVtbiBhIGRlc2MgdGhlbiBieSBjb2x1bW4gYiBkZXNjIHRoZW4gYnkgY29sdW1uIGMgYXNjLCB3ZSBkb250IG5lZWQgdG8gcmVydW4gdGhlIHRhaWwsIGkuZS4gZm9yIGN1bHVtbiBiIGFuZCBjLlxyXG4vLyBTbyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbWF0Y2hpbmcgdGFpbCBvZiB0aGUgc29ydCBhcnJheS4gVGhlbiBzb3J0c1RvUnVuIHdpbGwgYmUgdGhlIG5vbi1tYXRjaGluZyBoZWFkLlxyXG4vLyBCdXQgaWYgYW55IHNvcnRzIHdlcmUgcmVtb3ZlZCB0aGUgb25seSB3YXkgdG8gJ3Vuc29ydCcgaXMgdG8gc3RhcnQgYnkgdGhlIG9yaWdpbmFsIGRhdGEgYW5kIHJ1biBhbGwgdGhlIGV4aXN0aW5nIHNvcnRzIGFnYWluLCBzbyAnc29ydHMgdG8gcnVuJyB3aWxsIGJlIGFsbFxyXG4vLyB0aGUgc29ydHMuXHJcbi8vIFdlIGFsd2F5cyBwYXNzIGFsbFNvcnRzIHRvIHRoZSBjb250YWluZXIgYmVjYXVzZSBpZiB0aGUgdGFibGUgZGF0YSBjaGFuZ2VzIGFsbCB0aGUgc29ydHMgd2lsbCBuZWVkIHRvIGJlIHJ1bi5cclxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVNvcnRTdGF0ZShwcmV2aW91c1NvcnRzOiBTb3J0U3RhdGUsIGN1cnJlbnRTb3J0czogU29ydFtdKTogU29ydFN0YXRle1xyXG4gIGN1cnJlbnRTb3J0cyA9IGFkZEluaXRTb3J0KGN1cnJlbnRTb3J0cyk7XHJcbiAgaWYoc29ydHNSZW1vdmVkKHByZXZpb3VzU29ydHMuYWxsU29ydHMsIGN1cnJlbnRTb3J0cykpe1xyXG4gICAgcmV0dXJuICh7c29ydHNUb1J1bjogY3VycmVudFNvcnRzLCBhbGxTb3J0czogY3VycmVudFNvcnRzfSk7XHJcbiAgfVxyXG4gIGNvbnN0IHNhbWVUYWlsTGVuZ3RoID0gZ2V0U2FtZVRhaWxMZW5ndGgocHJldmlvdXNTb3J0cy5hbGxTb3J0cywgY3VycmVudFNvcnRzKTtcclxuICBjb25zdCBzb3J0c1RvUnVuID0gY3VycmVudFNvcnRzLnNsaWNlKDAsIGN1cnJlbnRTb3J0cy5sZW5ndGggLSBzYW1lVGFpbExlbmd0aCk7XHJcbiAgcmV0dXJuICh7c29ydHNUb1J1biwgYWxsU29ydHM6IGN1cnJlbnRTb3J0c30pO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTdGF0ZSB7IHNvcnRzVG9SdW46IFNvcnRbXSwgYWxsU29ydHM6IFNvcnRbXX1cclxuXHJcbmZ1bmN0aW9uIGFkZEluaXRTb3J0KHNvcnRzOiBTb3J0W10pe1xyXG4gIHJldHVybiBbLi4uc29ydHMsIHthY3RpdmU6IGluaXRJbmRleFN5bWJvbCBhcyB1bmtub3duIGFzIHN0cmluZywgZGlyZWN0aW9uOiAnYXNjJyBhcyBTb3J0RGlyZWN0aW9ufV07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNvcnRzUmVtb3ZlZChwcmV2aW91c1NvcnRzOiBTb3J0W10sIGN1cnJlbnRTb3J0czogU29ydFtdKTogYm9vbGVhbntcclxuICBjb25zdCBwcmV2aW91c1NvcnRlZENvbHVtbnMgPSBwcmV2aW91c1NvcnRzLm1hcChzID0+IHMuYWN0aXZlKTtcclxuICBjb25zdCBjdXJyZW50U29ydGVkQ29sdW1ucyA9IGN1cnJlbnRTb3J0cy5tYXAocyA9PiBzLmFjdGl2ZSk7XHJcbiAgY29uc3Qgc29ydHNSZW1vdmVkID0gISFkaWZmZXJlbmNlKHByZXZpb3VzU29ydGVkQ29sdW1ucywgY3VycmVudFNvcnRlZENvbHVtbnMpLmxlbmd0aDtcclxuICByZXR1cm4gc29ydHNSZW1vdmVkO1xyXG59XHJcblxyXG5cclxuZnVuY3Rpb24gZ2V0U2FtZVRhaWxMZW5ndGgocHJldmlvdXNTb3J0czogU29ydFtdLCBjdXJyZW50U29ydHM6IFNvcnRbXSl7XHJcbiAgcHJldmlvdXNTb3J0cyA9IFsuLi5wcmV2aW91c1NvcnRzXS5yZXZlcnNlKCk7XHJcbiAgY3VycmVudFNvcnRzID0gWy4uLmN1cnJlbnRTb3J0c10ucmV2ZXJzZSgpO1xyXG4gIGxldCBpbmRleE9mQ2hhbmdlID0gY3VycmVudFNvcnRzLmZpbmRJbmRleCgocywgaSkgPT4gcy5hY3RpdmUgIT09IHByZXZpb3VzU29ydHNbaV0/LmFjdGl2ZSB8fCBzLmRpcmVjdGlvbiAhPT0gcHJldmlvdXNTb3J0c1tpXT8uZGlyZWN0aW9uKTtcclxuICBpZihpbmRleE9mQ2hhbmdlID09PSAtMSkgcmV0dXJuIGluZGV4T2ZDaGFuZ2UgPSBjdXJyZW50U29ydHMubGVuZ3RoO1xyXG4gIHJldHVybiBpbmRleE9mQ2hhbmdlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaW5pdEluZGV4U3ltYm9sID0gU3ltYm9sKCd0Yl9pbml0X2luZGV4Jyk7XHJcblxyXG5leHBvcnQgY29uc3QgaW5pdGlhbFNvcnRTdGF0ZTogU29ydFN0YXRlID0geyBzb3J0c1RvUnVuOiBbXSwgYWxsU29ydHM6IFtdfTsiXX0=