@angular-generic-table/core 5.0.0-rc.2 → 5.0.0-rc.20

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 (76) hide show
  1. package/esm2020/angular-generic-table-core.mjs +5 -0
  2. package/esm2020/lib/core.component.mjs +560 -0
  3. package/esm2020/lib/core.module.mjs +47 -0
  4. package/esm2020/lib/core.service.mjs +14 -0
  5. package/esm2020/lib/gt-delta/gt-delta.component.mjs +126 -0
  6. package/esm2020/lib/models/gt-pagination.mjs +2 -0
  7. package/esm2020/lib/models/table-column.interface.mjs +2 -0
  8. package/esm2020/lib/models/table-config.interface.mjs +2 -0
  9. package/esm2020/lib/models/table-events.interface.mjs +2 -0
  10. package/esm2020/lib/models/table-info.interface.mjs +2 -0
  11. package/esm2020/lib/models/table-meta.interface.mjs +2 -0
  12. package/esm2020/lib/models/table-row.interface.mjs +2 -0
  13. package/esm2020/lib/models/table-sort.interface.mjs +2 -0
  14. package/esm2020/lib/pagination/pagination.component.mjs +157 -0
  15. package/esm2020/lib/pagination/pagination.module.mjs +17 -0
  16. package/esm2020/lib/pipes/capital-case.pipe.mjs +18 -0
  17. package/esm2020/lib/pipes/dash-case.pipe.mjs +18 -0
  18. package/esm2020/lib/pipes/dynamic.pipe.mjs +26 -0
  19. package/esm2020/lib/pipes/highlight.pipe.mjs +49 -0
  20. package/esm2020/lib/pipes/row-selection.pipe.mjs +17 -0
  21. package/esm2020/lib/pipes/sort-class.pipe.mjs +40 -0
  22. package/esm2020/lib/utilities/utilities.mjs +186 -0
  23. package/esm2020/public-api.mjs +24 -0
  24. package/fesm2015/angular-generic-table-core.mjs +1253 -0
  25. package/fesm2015/angular-generic-table-core.mjs.map +1 -0
  26. package/fesm2020/angular-generic-table-core.mjs +1240 -0
  27. package/fesm2020/angular-generic-table-core.mjs.map +1 -0
  28. package/index.d.ts +5 -0
  29. package/lib/core.component.d.ts +123 -18
  30. package/lib/core.module.d.ts +13 -0
  31. package/lib/core.service.d.ts +3 -0
  32. package/lib/gt-delta/gt-delta.component.d.ts +32 -0
  33. package/lib/models/gt-pagination.d.ts +18 -0
  34. package/lib/models/table-column.interface.d.ts +15 -3
  35. package/lib/models/table-config.interface.d.ts +44 -6
  36. package/lib/models/table-events.interface.d.ts +27 -0
  37. package/lib/models/table-info.interface.d.ts +3 -1
  38. package/lib/models/table-meta.interface.d.ts +8 -0
  39. package/lib/models/table-row.interface.d.ts +1 -1
  40. package/lib/models/table-sort.interface.d.ts +6 -4
  41. package/lib/pagination/pagination.component.d.ts +62 -0
  42. package/lib/pagination/pagination.module.d.ts +8 -0
  43. package/lib/pipes/capital-case.pipe.d.ts +7 -0
  44. package/lib/pipes/dash-case.pipe.d.ts +3 -0
  45. package/lib/pipes/dynamic.pipe.d.ts +9 -0
  46. package/lib/pipes/highlight.pipe.d.ts +3 -0
  47. package/lib/pipes/row-selection.pipe.d.ts +8 -0
  48. package/lib/pipes/sort-class.pipe.d.ts +5 -5
  49. package/lib/utilities/utilities.d.ts +32 -0
  50. package/package.json +22 -10
  51. package/public-api.d.ts +12 -0
  52. package/scss/index.scss +319 -0
  53. package/angular-generic-table-core.d.ts +0 -7
  54. package/angular-generic-table-core.metadata.json +0 -1
  55. package/bundles/angular-generic-table-core.umd.js +0 -594
  56. package/bundles/angular-generic-table-core.umd.js.map +0 -1
  57. package/bundles/angular-generic-table-core.umd.min.js +0 -2
  58. package/bundles/angular-generic-table-core.umd.min.js.map +0 -1
  59. package/esm2015/angular-generic-table-core.js +0 -8
  60. package/esm2015/lib/core.component.js +0 -107
  61. package/esm2015/lib/core.module.js +0 -16
  62. package/esm2015/lib/core.service.js +0 -13
  63. package/esm2015/lib/enums/order.enum.js +0 -6
  64. package/esm2015/lib/models/table-column.interface.js +0 -2
  65. package/esm2015/lib/models/table-config.interface.js +0 -2
  66. package/esm2015/lib/models/table-info.interface.js +0 -2
  67. package/esm2015/lib/models/table-row.interface.js +0 -2
  68. package/esm2015/lib/models/table-sort.interface.js +0 -2
  69. package/esm2015/lib/pipes/dash-case.pipe.js +0 -13
  70. package/esm2015/lib/pipes/highlight.pipe.js +0 -44
  71. package/esm2015/lib/pipes/sort-class.pipe.js +0 -12
  72. package/esm2015/lib/utilities/utilities.js +0 -25
  73. package/esm2015/public-api.js +0 -12
  74. package/fesm2015/angular-generic-table-core.js +0 -234
  75. package/fesm2015/angular-generic-table-core.js.map +0 -1
  76. package/lib/enums/order.enum.d.ts +0 -4
@@ -0,0 +1,40 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SortClassPipe {
4
+ transform(sortOrder, key, context = 'class') {
5
+ const sortIndex = sortOrder
6
+ ? sortOrder.findIndex((s) => s.key === key)
7
+ : -1;
8
+ if (context === 'aria') {
9
+ if (sortIndex === -1 || !sortOrder) {
10
+ return null;
11
+ }
12
+ else {
13
+ return `${sortOrder[sortIndex].order}ending`;
14
+ }
15
+ }
16
+ else if (context === 'class') {
17
+ if (sortIndex === -1 || !sortOrder) {
18
+ return '';
19
+ }
20
+ else {
21
+ return `gt-sort-${sortOrder[sortIndex].order}`;
22
+ }
23
+ }
24
+ else {
25
+ return (sortOrder && sortOrder?.length === 1) || sortIndex < 0
26
+ ? null
27
+ : sortIndex + 1 + '';
28
+ }
29
+ }
30
+ }
31
+ SortClassPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SortClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
32
+ SortClassPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.1", ngImport: i0, type: SortClassPipe, isStandalone: true, name: "sortClass" });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: SortClassPipe, decorators: [{
34
+ type: Pipe,
35
+ args: [{
36
+ name: 'sortClass',
37
+ standalone: true,
38
+ }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1jbGFzcy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3BpcGVzL3NvcnQtY2xhc3MucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFPcEQsTUFBTSxPQUFPLGFBQWE7SUFDeEIsU0FBUyxDQUNQLFNBQTZCLEVBQzdCLEdBQVcsRUFDWCxVQUFzQyxPQUFPO1FBRTdDLE1BQU0sU0FBUyxHQUFHLFNBQVM7WUFDekIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNQLElBQUksT0FBTyxLQUFLLE1BQU0sRUFBRTtZQUN0QixJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDbEMsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDO2FBQzlDO1NBQ0Y7YUFBTSxJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUU7WUFDOUIsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xDLE9BQU8sRUFBRSxDQUFDO2FBQ1g7aUJBQU07Z0JBQ0wsT0FBTyxXQUFXLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNoRDtTQUNGO2FBQU07WUFDTCxPQUFPLENBQUMsU0FBUyxJQUFJLFNBQVMsRUFBRSxNQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksU0FBUyxHQUFHLENBQUM7Z0JBQzVELENBQUMsQ0FBQyxJQUFJO2dCQUNOLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7OzBHQTFCVSxhQUFhO3dHQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFKekIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsV0FBVztvQkFDakIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3RTb3J0T3JkZXIgfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtc29ydC5pbnRlcmZhY2UnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdzb3J0Q2xhc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTb3J0Q2xhc3NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShcbiAgICBzb3J0T3JkZXI6IEd0U29ydE9yZGVyIHwgbnVsbCxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBjb250ZXh0OiAnY2xhc3MnIHwgJ2FyaWEnIHwgJ29yZGVyJyA9ICdjbGFzcydcbiAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3Qgc29ydEluZGV4ID0gc29ydE9yZGVyXG4gICAgICA/IHNvcnRPcmRlci5maW5kSW5kZXgoKHMpID0+IHMua2V5ID09PSBrZXkpXG4gICAgICA6IC0xO1xuICAgIGlmIChjb250ZXh0ID09PSAnYXJpYScpIHtcbiAgICAgIGlmIChzb3J0SW5kZXggPT09IC0xIHx8ICFzb3J0T3JkZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYCR7c29ydE9yZGVyW3NvcnRJbmRleF0ub3JkZXJ9ZW5kaW5nYDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNvbnRleHQgPT09ICdjbGFzcycpIHtcbiAgICAgIGlmIChzb3J0SW5kZXggPT09IC0xIHx8ICFzb3J0T3JkZXIpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGBndC1zb3J0LSR7c29ydE9yZGVyW3NvcnRJbmRleF0ub3JkZXJ9YDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChzb3J0T3JkZXIgJiYgc29ydE9yZGVyPy5sZW5ndGggPT09IDEpIHx8IHNvcnRJbmRleCA8IDBcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDogc29ydEluZGV4ICsgMSArICcnO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,186 @@
1
+ export let dashed;
2
+ dashed = (s) => s.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());
3
+ export let capitalize;
4
+ capitalize = (s) => (s.charAt(0).toUpperCase() + s.slice(1))
5
+ .replace(/_/g, ' ')
6
+ .replace(/([A-Z][a-z]+)/g, ' $1')
7
+ .replace(/([A-Z]{2,})/g, ' $1')
8
+ .replace(/\s{2,}/g, ' ')
9
+ .trim();
10
+ export let chunk;
11
+ chunk = (array, chunkSize) => {
12
+ if (chunkSize < 0) {
13
+ throw new Error('Invalid chunk size');
14
+ }
15
+ if (chunkSize === 0 && !chunkSize) {
16
+ return [array];
17
+ }
18
+ const CHUNK = [];
19
+ for (let i = 0, len = array.length; i < len; i += chunkSize) {
20
+ CHUNK.push(array.slice(i, i + chunkSize));
21
+ }
22
+ return CHUNK;
23
+ };
24
+ export let search;
25
+ search = (text, caseSensitive, data, config) => {
26
+ if (config.columns) {
27
+ const searchColumns = Object.keys(config.columns).filter(
28
+ // @ts-ignore
29
+ (key) => config.columns &&
30
+ !config.columns[key]?.hidden &&
31
+ config.columns[key]?.search !== false);
32
+ const FILTERED = [];
33
+ for (let i = 0; i < data.length; i++) {
34
+ const row = data[i];
35
+ const match = Object.entries(row)
36
+ .filter(([key, value]) => searchColumns.indexOf(key) !== -1)
37
+ .reduce((acc, [key, value], index) => {
38
+ const search = config?.columns[key]?.search;
39
+ // if search is a function...
40
+ if (typeof search === 'function') {
41
+ // ...use search function to return value to search
42
+ value = search(row, key, value);
43
+ }
44
+ return (acc +
45
+ (index === 0 ? '' : ' ? ') +
46
+ (caseSensitive ? value + '' : (value + '').toLowerCase()));
47
+ }, '')
48
+ .indexOf(caseSensitive ? text : text.toLowerCase()) !== -1;
49
+ if (match) {
50
+ FILTERED[FILTERED.length] = row;
51
+ }
52
+ }
53
+ return FILTERED;
54
+ }
55
+ else {
56
+ return data;
57
+ }
58
+ };
59
+ export let calculate = (data, config) => {
60
+ const CALCULATIONS = {};
61
+ const COLUMN_CALCULATIONS = {};
62
+ let CALCULATED = Object.entries(config.footer?.columns || {})
63
+ .filter(([columnName, calculations]) => Object.values(calculations || {}).filter((value) => value !== false)
64
+ .length >= 0)
65
+ .reduce((acc, [columnName, calculations], index) => {
66
+ acc[columnName] = Object.entries(calculations || {})
67
+ .filter(([calculation, value]) => value !== false)
68
+ .reduce((acc, [calculation, value]) => {
69
+ if (COLUMN_CALCULATIONS[columnName]) {
70
+ COLUMN_CALCULATIONS[columnName].push(calculation);
71
+ }
72
+ else if (value === true) {
73
+ COLUMN_CALCULATIONS[columnName] = [calculation];
74
+ }
75
+ CALCULATIONS[calculation] = true;
76
+ if (typeof value === 'function') {
77
+ value = value(data, columnName);
78
+ }
79
+ acc[calculation] = value === true ? 0 : value;
80
+ return acc;
81
+ }, {});
82
+ return acc;
83
+ }, {});
84
+ if (Object.keys(CALCULATED).length > 0) {
85
+ for (let i = 0; i < data.length; i++) {
86
+ Object.entries(COLUMN_CALCULATIONS).forEach(([column, calculations]) => {
87
+ if (calculations.indexOf('sum') > -1) {
88
+ CALCULATED[column].sum += data[i][column];
89
+ }
90
+ if (calculations.indexOf('avg') > -1 &&
91
+ calculations.indexOf('sum') === -1) {
92
+ if (CALCULATED[column].sum === undefined) {
93
+ CALCULATED[column].sum = 0;
94
+ }
95
+ CALCULATED[column].sum += data[i][column];
96
+ }
97
+ if (calculations.indexOf('max') > -1 &&
98
+ (!CALCULATED[column].max || +data[i][column] > CALCULATED[column].max)) {
99
+ CALCULATED[column].max = +data[i][column];
100
+ }
101
+ if (calculations.indexOf('min') > -1 &&
102
+ (!CALCULATED[column].min || +data[i][column] < CALCULATED[column].min)) {
103
+ CALCULATED[column].min = +data[i][column];
104
+ }
105
+ });
106
+ }
107
+ Object.entries(COLUMN_CALCULATIONS).forEach(([column, calculations]) => {
108
+ if (calculations.indexOf('avg') !== -1) {
109
+ CALCULATED[column].avg = CALCULATED[column]?.sum / data.length;
110
+ // if sum is not part of calculations config...
111
+ if (calculations.indexOf('sum') === -1 && CALCULATED[column].sum) {
112
+ // ...remove it
113
+ delete CALCULATED[column].sum;
114
+ }
115
+ }
116
+ if (calculations.indexOf('count') !== -1) {
117
+ CALCULATED[column].count = data.length;
118
+ }
119
+ });
120
+ }
121
+ return {
122
+ calculated: CALCULATED,
123
+ calculations: Object.keys(CALCULATIONS).sort((a, b) => (config.footer?.rowOrder?.indexOf(a) || 0) -
124
+ (config.footer?.rowOrder?.indexOf(b) || 0)),
125
+ calculatedColumnsCount: Object.keys(CALCULATED).length || 0,
126
+ };
127
+ };
128
+ /** sortOnMultipleKeys
129
+ * @description Sort data on multiple keys
130
+ * @param {GtSortOrder} keys - array with sort config objects to sort on, data will be sorted according to array order
131
+ * @returns sort function
132
+ */
133
+ export const sortOnMultipleKeys = (keys) => {
134
+ const order = keys.map((key) => (key.order === 'desc' ? -1 : 1));
135
+ return (a, b) => {
136
+ for (let i = 0; i < keys.length; i++) {
137
+ const o = keys[i].key;
138
+ if (a[o] === b[o])
139
+ return 0;
140
+ if (a[o] === null)
141
+ return 1;
142
+ if (b[o] === null)
143
+ return -1;
144
+ if (a[o] > b[o])
145
+ return order[i];
146
+ if (a[o] < b[o])
147
+ return -order[i];
148
+ }
149
+ return 0;
150
+ };
151
+ };
152
+ /** parseSortOrderParams
153
+ * @description Convert sort order query param to array with sort config objects
154
+ * @param sortParams - Query param string where each sort config object is separated by comma and order is indicated by + (ascending) or - (descending), e.g. _'name,-age'_
155
+ * @returns GtSortOrder - Array with sort config objects
156
+ */
157
+ export const parseSortOrderParams = (sortParams) => {
158
+ const sortParamsArray = sortParams.split(',');
159
+ return sortParamsArray.map((sortParam) => {
160
+ const [key, order] = sortParam.split(':');
161
+ return {
162
+ key: key.replace(/^[+-]/, ''),
163
+ order: order === 'desc' ? 'desc' : 'asc',
164
+ };
165
+ });
166
+ };
167
+ /** sortOrderConfigToParam
168
+ * @description Convert sort config object to string that can be used as query param when sorting is implemented server side
169
+ * @param sortConfig - Sort config object
170
+ * @returns string - Query param string where order is indicated by + (ascending) or - (descending), e.g. _'-name'_
171
+ */
172
+ export const sortOrderConfigToParam = (sortConfig) => {
173
+ const order = sortConfig.order === 'desc' ? '-' : '+';
174
+ return `${order}${sortConfig.key}`;
175
+ };
176
+ /** sortOrderToParams
177
+ * @description Convert sort order array to string that can be used as query param when sorting is implemented server side
178
+ * @param sortOrder - Array with sort config objects
179
+ * @returns string - Query param string where each sort config object is separated by comma and order is indicated by + (ascending) or - (descending), e.g. _'name,-age'_
180
+ */
181
+ export const sortOrderToParams = (sortOrder) => {
182
+ return sortOrder
183
+ .map((sortConfig) => sortOrderConfigToParam(sortConfig))
184
+ .join(',');
185
+ };
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL3V0aWxpdGllcy91dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLElBQUksTUFBNkIsQ0FBQztBQUN6QyxNQUFNLEdBQUcsQ0FBQyxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFFMUUsTUFBTSxDQUFDLElBQUksVUFBaUMsQ0FBQztBQUM3QyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNqQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNyQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztLQUNsQixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDO0tBQ2hDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDO0tBQzlCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO0tBQ3ZCLElBQUksRUFBRSxDQUFDO0FBRVosTUFBTSxDQUFDLElBQUksS0FHZ0IsQ0FBQztBQUM1QixLQUFLLEdBQUcsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUU7SUFDM0IsSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFO1FBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQUN2QztJQUNELElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDaEI7SUFDRCxNQUFNLEtBQUss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LEdBQUcsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDN0IsS0FBSyxFQUFFLEtBQUssS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSztTQUN6QyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsQ0FDcEMsVUFBc0MsRUFDOUIsRUFBRTtJQUNWLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUN0RCxPQUFPLEdBQUcsS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNyQyxDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxTQUFzQixFQUFVLEVBQUU7SUFDbEUsT0FBTyxTQUFTO1NBQ2IsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN2RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4uL21vZGVscy90YWJsZS1yb3cuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzL3RhYmxlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR3RTb3J0Q29uZmlnLCBHdFNvcnRPcmRlciB9IGZyb20gJy4uL21vZGVscy90YWJsZS1zb3J0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBHdFNvcnRFdmVudCB9IGZyb20gJy4uL21vZGVscy90YWJsZS1ldmVudHMuaW50ZXJmYWNlJztcbmV4cG9ydCBsZXQgZGFzaGVkOiAoczogc3RyaW5nKSA9PiBzdHJpbmc7XG5kYXNoZWQgPSAoczogc3RyaW5nKSA9PiBzLnJlcGxhY2UoL1tBLVpdL2csIChtKSA9PiAnLScgKyBtLnRvTG93ZXJDYXNlKCkpO1xuXG5leHBvcnQgbGV0IGNhcGl0YWxpemU6IChzOiBzdHJpbmcpID0+IHN0cmluZztcbmNhcGl0YWxpemUgPSAocykgPT5cbiAgKHMuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzLnNsaWNlKDEpKVxuICAgIC5yZXBsYWNlKC9fL2csICcgJylcbiAgICAucmVwbGFjZSgvKFtBLVpdW2Etel0rKS9nLCAnICQxJylcbiAgICAucmVwbGFjZSgvKFtBLVpdezIsfSkvZywgJyAkMScpXG4gICAgLnJlcGxhY2UoL1xcc3syLH0vZywgJyAnKVxuICAgIC50cmltKCk7XG5cbmV4cG9ydCBsZXQgY2h1bms6IChcbiAgYXJyYXk6IEFycmF5PGFueT4sXG4gIGNodW5rU2l6ZTogbnVtYmVyXG4pID0+IEFycmF5PEFycmF5PFRhYmxlUm93Pj47XG5jaHVuayA9IChhcnJheSwgY2h1bmtTaXplKSA9PiB7XG4gIGlmIChjaHVua1NpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNodW5rIHNpemUnKTtcbiAgfVxuICBpZiAoY2h1bmtTaXplID09PSAwICYmICFjaHVua1NpemUpIHtcbiAgICByZXR1cm4gW2FycmF5XTtcbiAgfVxuICBjb25zdCBDSFVOSyA9IFtdO1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpICs9IGNodW5rU2l6ZSkge1xuICAgIENIVU5LLnB1c2goYXJyYXkuc2xpY2UoaSwgaSArIGNodW5rU2l6ZSkpO1xuICB9XG4gIHJldHVybiBDSFVOSztcbn07XG5cbmV4cG9ydCBsZXQgc2VhcmNoOiAoXG4gIHRleHQ6IHN0cmluZyxcbiAgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbixcbiAgZGF0YTogQXJyYXk8VGFibGVSb3c+LFxuICBjb25maWc6IFRhYmxlQ29uZmlnXG4pID0+IFRhYmxlUm93W107XG5zZWFyY2ggPSAoXG4gIHRleHQ6IHN0cmluZyxcbiAgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbixcbiAgZGF0YTogQXJyYXk8VGFibGVSb3c+LFxuICBjb25maWc6IFRhYmxlQ29uZmlnXG4pID0+IHtcbiAgaWYgKGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgY29uc3Qgc2VhcmNoQ29sdW1ucyA9IE9iamVjdC5rZXlzKGNvbmZpZy5jb2x1bW5zKS5maWx0ZXIoXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAoa2V5KSA9PlxuICAgICAgICBjb25maWcuY29sdW1ucyAmJlxuICAgICAgICAhY29uZmlnLmNvbHVtbnNba2V5XT8uaGlkZGVuICYmXG4gICAgICAgIGNvbmZpZy5jb2x1bW5zW2tleV0/LnNlYXJjaCAhPT0gZmFsc2VcbiAgICApO1xuXG4gICAgY29uc3QgRklMVEVSRUQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHJvdyA9IGRhdGFbaV07XG4gICAgICBjb25zdCBtYXRjaCA9XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHJvdylcbiAgICAgICAgICAuZmlsdGVyKChba2V5LCB2YWx1ZV0pID0+IHNlYXJjaENvbHVtbnMuaW5kZXhPZihrZXkpICE9PSAtMSlcbiAgICAgICAgICAucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSwgaW5kZXgpOiBzdHJpbmcgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VhcmNoID0gY29uZmlnPy5jb2x1bW5zIVtrZXldPy5zZWFyY2g7XG4gICAgICAgICAgICAvLyBpZiBzZWFyY2ggaXMgYSBmdW5jdGlvbi4uLlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzZWFyY2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgLy8gLi4udXNlIHNlYXJjaCBmdW5jdGlvbiB0byByZXR1cm4gdmFsdWUgdG8gc2VhcmNoXG4gICAgICAgICAgICAgIHZhbHVlID0gc2VhcmNoKHJvdywga2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBhY2MgK1xuICAgICAgICAgICAgICAoaW5kZXggPT09IDAgPyAnJyA6ICcgPyAnKSArXG4gICAgICAgICAgICAgIChjYXNlU2Vuc2l0aXZlID8gdmFsdWUgKyAnJyA6ICh2YWx1ZSArICcnKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LCAnJylcbiAgICAgICAgICAuaW5kZXhPZihjYXNlU2Vuc2l0aXZlID8gdGV4dCA6IHRleHQudG9Mb3dlckNhc2UoKSkgIT09IC0xO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIEZJTFRFUkVEW0ZJTFRFUkVELmxlbmd0aF0gPSByb3c7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBGSUxURVJFRDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxufTtcblxuZXhwb3J0IGxldCBjYWxjdWxhdGUgPSAoZGF0YTogQXJyYXk8VGFibGVSb3c+LCBjb25maWc6IFRhYmxlQ29uZmlnKSA9PiB7XG4gIGNvbnN0IENBTENVTEFUSU9OUzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgY29uc3QgQ09MVU1OX0NBTENVTEFUSU9OUzogeyBba2V5OiBzdHJpbmddOiBBcnJheTxzdHJpbmc+IH0gPSB7fTtcbiAgbGV0IENBTENVTEFURUQgPSBPYmplY3QuZW50cmllcyhjb25maWcuZm9vdGVyPy5jb2x1bW5zIHx8IHt9KVxuICAgIC5maWx0ZXIoXG4gICAgICAoW2NvbHVtbk5hbWUsIGNhbGN1bGF0aW9uc10pID0+XG4gICAgICAgIE9iamVjdC52YWx1ZXMoY2FsY3VsYXRpb25zIHx8IHt9KS5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSAhPT0gZmFsc2UpXG4gICAgICAgICAgLmxlbmd0aCA+PSAwXG4gICAgKVxuICAgIC5yZWR1Y2UoKGFjYzogYW55LCBbY29sdW1uTmFtZSwgY2FsY3VsYXRpb25zXSwgaW5kZXgpID0+IHtcbiAgICAgIGFjY1tjb2x1bW5OYW1lXSA9IE9iamVjdC5lbnRyaWVzKGNhbGN1bGF0aW9ucyB8fCB7fSlcbiAgICAgICAgLmZpbHRlcigoW2NhbGN1bGF0aW9uLCB2YWx1ZV0pID0+IHZhbHVlICE9PSBmYWxzZSlcbiAgICAgICAgLnJlZHVjZSgoYWNjOiBhbnksIFtjYWxjdWxhdGlvbiwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKENPTFVNTl9DQUxDVUxBVElPTlNbY29sdW1uTmFtZV0pIHtcbiAgICAgICAgICAgIENPTFVNTl9DQUxDVUxBVElPTlNbY29sdW1uTmFtZV0ucHVzaChjYWxjdWxhdGlvbik7XG4gICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgQ09MVU1OX0NBTENVTEFUSU9OU1tjb2x1bW5OYW1lXSA9IFtjYWxjdWxhdGlvbl07XG4gICAgICAgICAgfVxuICAgICAgICAgIENBTENVTEFUSU9OU1tjYWxjdWxhdGlvbl0gPSB0cnVlO1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUoZGF0YSwgY29sdW1uTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGFjY1tjYWxjdWxhdGlvbl0gPSB2YWx1ZSA9PT0gdHJ1ZSA/IDAgOiB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgaWYgKE9iamVjdC5rZXlzKENBTENVTEFURUQpLmxlbmd0aCA+IDApIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIE9iamVjdC5lbnRyaWVzKENPTFVNTl9DQUxDVUxBVElPTlMpLmZvckVhY2goKFtjb2x1bW4sIGNhbGN1bGF0aW9uc10pID0+IHtcbiAgICAgICAgaWYgKGNhbGN1bGF0aW9ucy5pbmRleE9mKCdzdW0nKSA+IC0xKSB7XG4gICAgICAgICAgQ0FMQ1VMQVRFRFtjb2x1bW5dLnN1bSArPSBkYXRhW2ldW2NvbHVtbl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNhbGN1bGF0aW9ucy5pbmRleE9mKCdhdmcnKSA+IC0xICYmXG4gICAgICAgICAgY2FsY3VsYXRpb25zLmluZGV4T2YoJ3N1bScpID09PSAtMVxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoQ0FMQ1VMQVRFRFtjb2x1bW5dLnN1bSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBDQUxDVUxBVEVEW2NvbHVtbl0uc3VtID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgQ0FMQ1VMQVRFRFtjb2x1bW5dLnN1bSArPSBkYXRhW2ldW2NvbHVtbl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGNhbGN1bGF0aW9ucy5pbmRleE9mKCdtYXgnKSA+IC0xICYmXG4gICAgICAgICAgKCFDQUxDVUxBVEVEW2NvbHVtbl0ubWF4IHx8ICtkYXRhW2ldW2NvbHVtbl0gPiBDQUxDVUxBVEVEW2NvbHVtbl0ubWF4KVxuICAgICAgICApIHtcbiAgICAgICAgICBDQUxDVUxBVEVEW2NvbHVtbl0ubWF4ID0gK2RhdGFbaV1bY29sdW1uXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2FsY3VsYXRpb25zLmluZGV4T2YoJ21pbicpID4gLTEgJiZcbiAgICAgICAgICAoIUNBTENVTEFURURbY29sdW1uXS5taW4gfHwgK2RhdGFbaV1bY29sdW1uXSA8IENBTENVTEFURURbY29sdW1uXS5taW4pXG4gICAgICAgICkge1xuICAgICAgICAgIENBTENVTEFURURbY29sdW1uXS5taW4gPSArZGF0YVtpXVtjb2x1bW5dO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgT2JqZWN0LmVudHJpZXMoQ09MVU1OX0NBTENVTEFUSU9OUykuZm9yRWFjaCgoW2NvbHVtbiwgY2FsY3VsYXRpb25zXSkgPT4ge1xuICAgICAgaWYgKGNhbGN1bGF0aW9ucy5pbmRleE9mKCdhdmcnKSAhPT0gLTEpIHtcbiAgICAgICAgQ0FMQ1VMQVRFRFtjb2x1bW5dLmF2ZyA9IENBTENVTEFURURbY29sdW1uXT8uc3VtIC8gZGF0YS5sZW5ndGg7XG4gICAgICAgIC8vIGlmIHN1bSBpcyBub3QgcGFydCBvZiBjYWxjdWxhdGlvbnMgY29uZmlnLi4uXG4gICAgICAgIGlmIChjYWxjdWxhdGlvbnMuaW5kZXhPZignc3VtJykgPT09IC0xICYmIENBTENVTEFURURbY29sdW1uXS5zdW0pIHtcbiAgICAgICAgICAvLyAuLi5yZW1vdmUgaXRcbiAgICAgICAgICBkZWxldGUgQ0FMQ1VMQVRFRFtjb2x1bW5dLnN1bTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhbGN1bGF0aW9ucy5pbmRleE9mKCdjb3VudCcpICE9PSAtMSkge1xuICAgICAgICBDQUxDVUxBVEVEW2NvbHVtbl0uY291bnQgPSBkYXRhLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGNhbGN1bGF0ZWQ6IENBTENVTEFURUQsXG4gICAgY2FsY3VsYXRpb25zOiBPYmplY3Qua2V5cyhDQUxDVUxBVElPTlMpLnNvcnQoXG4gICAgICAoYSwgYikgPT5cbiAgICAgICAgKGNvbmZpZy5mb290ZXI/LnJvd09yZGVyPy5pbmRleE9mKGEpIHx8IDApIC1cbiAgICAgICAgKGNvbmZpZy5mb290ZXI/LnJvd09yZGVyPy5pbmRleE9mKGIpIHx8IDApXG4gICAgKSxcbiAgICBjYWxjdWxhdGVkQ29sdW1uc0NvdW50OiBPYmplY3Qua2V5cyhDQUxDVUxBVEVEKS5sZW5ndGggfHwgMCxcbiAgfTtcbn07XG5cbi8qKiBzb3J0T25NdWx0aXBsZUtleXNcbiAqIEBkZXNjcmlwdGlvbiBTb3J0IGRhdGEgb24gbXVsdGlwbGUga2V5c1xuICogQHBhcmFtIHtHdFNvcnRPcmRlcn0ga2V5cyAtIGFycmF5IHdpdGggc29ydCBjb25maWcgb2JqZWN0cyB0byBzb3J0IG9uLCBkYXRhIHdpbGwgYmUgc29ydGVkIGFjY29yZGluZyB0byBhcnJheSBvcmRlclxuICogQHJldHVybnMgc29ydCBmdW5jdGlvblxuICovXG5leHBvcnQgY29uc3Qgc29ydE9uTXVsdGlwbGVLZXlzID0gKFxuICBrZXlzOiBHdFNvcnRPcmRlclxuKTogKChhOiBUYWJsZVJvdywgYjogVGFibGVSb3cpID0+IG51bWJlcikgPT4ge1xuICBjb25zdCBvcmRlciA9IGtleXMubWFwKChrZXkpID0+IChrZXkub3JkZXIgPT09ICdkZXNjJyA/IC0xIDogMSkpO1xuICByZXR1cm4gKGEsIGIpID0+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IG8gPSBrZXlzW2ldLmtleTtcbiAgICAgIGlmIChhW29dID09PSBiW29dKSByZXR1cm4gMDtcbiAgICAgIGlmIChhW29dID09PSBudWxsKSByZXR1cm4gMTtcbiAgICAgIGlmIChiW29dID09PSBudWxsKSByZXR1cm4gLTE7XG4gICAgICBpZiAoYVtvXSA+IGJbb10pIHJldHVybiBvcmRlcltpXTtcbiAgICAgIGlmIChhW29dIDwgYltvXSkgcmV0dXJuIC1vcmRlcltpXTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH07XG59O1xuXG4vKiogcGFyc2VTb3J0T3JkZXJQYXJhbXNcbiAqIEBkZXNjcmlwdGlvbiBDb252ZXJ0IHNvcnQgb3JkZXIgcXVlcnkgcGFyYW0gdG8gYXJyYXkgd2l0aCBzb3J0IGNvbmZpZyBvYmplY3RzXG4gKiBAcGFyYW0gc29ydFBhcmFtcyAtIFF1ZXJ5IHBhcmFtIHN0cmluZyB3aGVyZSBlYWNoIHNvcnQgY29uZmlnIG9iamVjdCBpcyBzZXBhcmF0ZWQgYnkgY29tbWEgYW5kIG9yZGVyIGlzIGluZGljYXRlZCBieSArIChhc2NlbmRpbmcpIG9yIC0gKGRlc2NlbmRpbmcpLCBlLmcuIF8nbmFtZSwtYWdlJ19cbiAqIEByZXR1cm5zIEd0U29ydE9yZGVyIC0gQXJyYXkgd2l0aCBzb3J0IGNvbmZpZyBvYmplY3RzXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZVNvcnRPcmRlclBhcmFtcyA9IChzb3J0UGFyYW1zOiBzdHJpbmcpOiBHdFNvcnRPcmRlciA9PiB7XG4gIGNvbnN0IHNvcnRQYXJhbXNBcnJheSA9IHNvcnRQYXJhbXMuc3BsaXQoJywnKTtcbiAgcmV0dXJuIHNvcnRQYXJhbXNBcnJheS5tYXAoKHNvcnRQYXJhbSkgPT4ge1xuICAgIGNvbnN0IFtrZXksIG9yZGVyXSA9IHNvcnRQYXJhbS5zcGxpdCgnOicpO1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGtleS5yZXBsYWNlKC9eWystXS8sICcnKSxcbiAgICAgIG9yZGVyOiBvcmRlciA9PT0gJ2Rlc2MnID8gJ2Rlc2MnIDogJ2FzYycsXG4gICAgfTtcbiAgfSk7XG59O1xuXG4vKiogc29ydE9yZGVyQ29uZmlnVG9QYXJhbVxuICogQGRlc2NyaXB0aW9uIENvbnZlcnQgc29ydCBjb25maWcgb2JqZWN0IHRvIHN0cmluZyB0aGF0IGNhbiBiZSB1c2VkIGFzIHF1ZXJ5IHBhcmFtIHdoZW4gc29ydGluZyBpcyBpbXBsZW1lbnRlZCBzZXJ2ZXIgc2lkZVxuICogQHBhcmFtIHNvcnRDb25maWcgLSBTb3J0IGNvbmZpZyBvYmplY3RcbiAqIEByZXR1cm5zIHN0cmluZyAtIFF1ZXJ5IHBhcmFtIHN0cmluZyB3aGVyZSBvcmRlciBpcyBpbmRpY2F0ZWQgYnkgKyAoYXNjZW5kaW5nKSBvciAtIChkZXNjZW5kaW5nKSwgZS5nLiBfJy1uYW1lJ19cbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRPcmRlckNvbmZpZ1RvUGFyYW0gPSAoXG4gIHNvcnRDb25maWc6IEd0U29ydEV2ZW50IHwgR3RTb3J0Q29uZmlnXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBvcmRlciA9IHNvcnRDb25maWcub3JkZXIgPT09ICdkZXNjJyA/ICctJyA6ICcrJztcbiAgcmV0dXJuIGAke29yZGVyfSR7c29ydENvbmZpZy5rZXl9YDtcbn07XG5cbi8qKiBzb3J0T3JkZXJUb1BhcmFtc1xuICogQGRlc2NyaXB0aW9uIENvbnZlcnQgc29ydCBvcmRlciBhcnJheSB0byBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCBhcyBxdWVyeSBwYXJhbSB3aGVuIHNvcnRpbmcgaXMgaW1wbGVtZW50ZWQgc2VydmVyIHNpZGVcbiAqIEBwYXJhbSBzb3J0T3JkZXIgLSBBcnJheSB3aXRoIHNvcnQgY29uZmlnIG9iamVjdHNcbiAqIEByZXR1cm5zIHN0cmluZyAtIFF1ZXJ5IHBhcmFtIHN0cmluZyB3aGVyZSBlYWNoIHNvcnQgY29uZmlnIG9iamVjdCBpcyBzZXBhcmF0ZWQgYnkgY29tbWEgYW5kIG9yZGVyIGlzIGluZGljYXRlZCBieSArIChhc2NlbmRpbmcpIG9yIC0gKGRlc2NlbmRpbmcpLCBlLmcuIF8nbmFtZSwtYWdlJ19cbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRPcmRlclRvUGFyYW1zID0gKHNvcnRPcmRlcjogR3RTb3J0T3JkZXIpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gc29ydE9yZGVyXG4gICAgLm1hcCgoc29ydENvbmZpZykgPT4gc29ydE9yZGVyQ29uZmlnVG9QYXJhbShzb3J0Q29uZmlnKSlcbiAgICAuam9pbignLCcpO1xufTtcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Public API Surface of core
3
+ */
4
+ export * from './lib/core.service';
5
+ export * from './lib/core.component';
6
+ export * from './lib/core.module';
7
+ export * from './lib/gt-delta/gt-delta.component';
8
+ export * from './lib/pagination/pagination.component';
9
+ export * from './lib/pagination/pagination.module';
10
+ export * from './lib/models/table-config.interface';
11
+ export * from './lib/models/table-column.interface';
12
+ export * from './lib/models/table-info.interface';
13
+ export * from './lib/models/table-row.interface';
14
+ export * from './lib/models/table-sort.interface';
15
+ export * from './lib/models/table-meta.interface';
16
+ export * from './lib/models/table-events.interface';
17
+ export * from './lib/models/gt-pagination';
18
+ export * from './lib/utilities/utilities';
19
+ export * from './lib/pipes/capital-case.pipe';
20
+ export * from './lib/pipes/dash-case.pipe';
21
+ export * from './lib/pipes/dynamic.pipe';
22
+ export * from './lib/pipes/highlight.pipe';
23
+ export * from './lib/pipes/sort-class.pipe';
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGNvcmVcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb3JlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29yZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ3QtZGVsdGEvZ3QtZGVsdGEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvdGFibGUtY29uZmlnLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvdGFibGUtaW5mby5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3RhYmxlLXJvdy5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL3RhYmxlLXNvcnQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy90YWJsZS1tZXRhLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvdGFibGUtZXZlbnRzLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbHMvZ3QtcGFnaW5hdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlsaXRpZXMvdXRpbGl0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2NhcGl0YWwtY2FzZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2Rhc2gtY2FzZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzL2R5bmFtaWMucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9oaWdobGlnaHQucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9zb3J0LWNsYXNzLnBpcGUnO1xuIl19