@beshkari/mb-ui 0.5.0-alpha.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.
- package/LICENSE +21 -0
- package/README.md +98 -0
- package/esm2022/beshkari-mb-ui.mjs +5 -0
- package/esm2022/lib/accordion/mb-accordion.component.mjs +37 -0
- package/esm2022/lib/alert/mb-alert.component.mjs +28 -0
- package/esm2022/lib/avatar/mb-avatar.component.mjs +32 -0
- package/esm2022/lib/badge/mb-badge.component.mjs +28 -0
- package/esm2022/lib/breadcrumb/mb-breadcrumb.component.mjs +23 -0
- package/esm2022/lib/button/mb-button.component.mjs +48 -0
- package/esm2022/lib/card/mb-card.component.mjs +28 -0
- package/esm2022/lib/checkbox/mb-checkbox.component.mjs +75 -0
- package/esm2022/lib/chip/mb-chip.component.mjs +33 -0
- package/esm2022/lib/combobox/mb-combobox.component.mjs +235 -0
- package/esm2022/lib/confirm/mb-confirm-dialog.component.mjs +44 -0
- package/esm2022/lib/confirm/mb-confirm.service.mjs +39 -0
- package/esm2022/lib/confirm/mb-confirm.types.mjs +2 -0
- package/esm2022/lib/datepicker/mb-datepicker.component.mjs +382 -0
- package/esm2022/lib/dialog/mb-dialog-container.component.mjs +37 -0
- package/esm2022/lib/dialog/mb-dialog-ref.mjs +17 -0
- package/esm2022/lib/dialog/mb-dialog.component.mjs +87 -0
- package/esm2022/lib/dialog/mb-dialog.service.mjs +61 -0
- package/esm2022/lib/dialog/mb-dialog.tokens.mjs +3 -0
- package/esm2022/lib/divider/mb-divider.component.mjs +18 -0
- package/esm2022/lib/drawer/mb-drawer.component.mjs +34 -0
- package/esm2022/lib/dropdown/mb-dropdown.component.mjs +24 -0
- package/esm2022/lib/empty/mb-empty.component.mjs +27 -0
- package/esm2022/lib/form-field/mb-form-field.component.mjs +24 -0
- package/esm2022/lib/grid/mb-grid-data.mjs +266 -0
- package/esm2022/lib/grid/mb-grid-export.mjs +36 -0
- package/esm2022/lib/grid/mb-grid-messages.mjs +10 -0
- package/esm2022/lib/grid/mb-grid-state-adapter.mjs +97 -0
- package/esm2022/lib/grid/mb-grid-state.service.mjs +47 -0
- package/esm2022/lib/grid/mb-grid-template.directive.mjs +109 -0
- package/esm2022/lib/grid/mb-grid.component.mjs +998 -0
- package/esm2022/lib/grid/mb-grid.types.mjs +2 -0
- package/esm2022/lib/i18n/mb-ui-locale.mjs +18 -0
- package/esm2022/lib/i18n/mb-ui-messages-en.mjs +103 -0
- package/esm2022/lib/i18n/mb-ui-messages-fa.mjs +103 -0
- package/esm2022/lib/i18n/mb-ui-messages.mjs +34 -0
- package/esm2022/lib/i18n/mb-ui-messages.types.mjs +2 -0
- package/esm2022/lib/i18n/provide-mb-ui.mjs +20 -0
- package/esm2022/lib/input/mb-input.component.mjs +86 -0
- package/esm2022/lib/pagination/mb-pagination.component.mjs +47 -0
- package/esm2022/lib/progress/mb-progress.component.mjs +29 -0
- package/esm2022/lib/radio/mb-radio-group.component.mjs +63 -0
- package/esm2022/lib/select/mb-select.component.mjs +73 -0
- package/esm2022/lib/skeleton/mb-skeleton.component.mjs +24 -0
- package/esm2022/lib/spinner/mb-spinner.component.mjs +21 -0
- package/esm2022/lib/switch/mb-switch.component.mjs +59 -0
- package/esm2022/lib/tabs/mb-tabs.component.mjs +31 -0
- package/esm2022/lib/textarea/mb-textarea.component.mjs +83 -0
- package/esm2022/lib/toast/mb-toast-container.component.mjs +21 -0
- package/esm2022/lib/toast/mb-toast.service.mjs +47 -0
- package/esm2022/lib/toast/mb-toast.types.mjs +2 -0
- package/esm2022/lib/tokens/mb-ui-config.token.mjs +11 -0
- package/esm2022/lib/tooltip/mb-tooltip.directive.mjs +48 -0
- package/esm2022/lib/utils/coerce.mjs +10 -0
- package/esm2022/lib/utils/mb-jalali-date.mjs +120 -0
- package/esm2022/public-api.mjs +56 -0
- package/fesm2022/beshkari-mb-ui.mjs +3828 -0
- package/fesm2022/beshkari-mb-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/accordion/mb-accordion.component.d.ts +19 -0
- package/lib/alert/mb-alert.component.d.ts +12 -0
- package/lib/avatar/mb-avatar.component.d.ts +12 -0
- package/lib/badge/mb-badge.component.d.ts +12 -0
- package/lib/breadcrumb/mb-breadcrumb.component.d.ts +15 -0
- package/lib/button/mb-button.component.d.ts +19 -0
- package/lib/card/mb-card.component.d.ts +10 -0
- package/lib/checkbox/mb-checkbox.component.d.ts +25 -0
- package/lib/chip/mb-chip.component.d.ts +12 -0
- package/lib/combobox/mb-combobox.component.d.ts +65 -0
- package/lib/confirm/mb-confirm-dialog.component.d.ts +17 -0
- package/lib/confirm/mb-confirm.service.d.ts +12 -0
- package/lib/confirm/mb-confirm.types.d.ts +10 -0
- package/lib/datepicker/mb-datepicker.component.d.ts +87 -0
- package/lib/dialog/mb-dialog-container.component.d.ts +14 -0
- package/lib/dialog/mb-dialog-ref.d.ts +9 -0
- package/lib/dialog/mb-dialog.component.d.ts +27 -0
- package/lib/dialog/mb-dialog.service.d.ts +14 -0
- package/lib/dialog/mb-dialog.tokens.d.ts +13 -0
- package/lib/divider/mb-divider.component.d.ts +7 -0
- package/lib/drawer/mb-drawer.component.d.ts +14 -0
- package/lib/dropdown/mb-dropdown.component.d.ts +10 -0
- package/lib/empty/mb-empty.component.d.ts +10 -0
- package/lib/form-field/mb-form-field.component.d.ts +9 -0
- package/lib/grid/mb-grid-data.d.ts +20 -0
- package/lib/grid/mb-grid-export.d.ts +9 -0
- package/lib/grid/mb-grid-messages.d.ts +6 -0
- package/lib/grid/mb-grid-state-adapter.d.ts +24 -0
- package/lib/grid/mb-grid-state.service.d.ts +10 -0
- package/lib/grid/mb-grid-template.directive.d.ts +43 -0
- package/lib/grid/mb-grid.component.d.ts +233 -0
- package/lib/grid/mb-grid.types.d.ts +255 -0
- package/lib/i18n/mb-ui-locale.d.ts +2 -0
- package/lib/i18n/mb-ui-messages-en.d.ts +3 -0
- package/lib/i18n/mb-ui-messages-fa.d.ts +3 -0
- package/lib/i18n/mb-ui-messages.d.ts +5 -0
- package/lib/i18n/mb-ui-messages.types.d.ts +90 -0
- package/lib/i18n/provide-mb-ui.d.ts +7 -0
- package/lib/input/mb-input.component.d.ts +30 -0
- package/lib/pagination/mb-pagination.component.d.ts +16 -0
- package/lib/progress/mb-progress.component.d.ts +11 -0
- package/lib/radio/mb-radio-group.component.d.ts +30 -0
- package/lib/select/mb-select.component.d.ts +31 -0
- package/lib/skeleton/mb-skeleton.component.d.ts +9 -0
- package/lib/spinner/mb-spinner.component.d.ts +9 -0
- package/lib/switch/mb-switch.component.d.ts +22 -0
- package/lib/tabs/mb-tabs.component.d.ts +19 -0
- package/lib/textarea/mb-textarea.component.d.ts +29 -0
- package/lib/toast/mb-toast-container.component.d.ts +10 -0
- package/lib/toast/mb-toast.service.d.ts +15 -0
- package/lib/toast/mb-toast.types.d.ts +8 -0
- package/lib/tokens/mb-ui-config.token.d.ts +12 -0
- package/lib/tooltip/mb-tooltip.directive.d.ts +13 -0
- package/lib/utils/coerce.d.ts +3 -0
- package/lib/utils/mb-jalali-date.d.ts +18 -0
- package/package.json +50 -0
- package/public-api.d.ts +55 -0
- package/theme/_components.scss +19 -0
- package/theme/_dark.scss +1 -0
- package/theme/_density.scss +1 -0
- package/theme/_tokens.scss +57 -0
- package/theme/mb-ui.scss +28 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
export function mbGridDefaultState(take = 10) {
|
|
2
|
+
return { skip: 0, take, sort: [], group: [] };
|
|
3
|
+
}
|
|
4
|
+
export function mbGridGetValue(row, field) {
|
|
5
|
+
if (!row || !field)
|
|
6
|
+
return undefined;
|
|
7
|
+
const path = String(field).split('.');
|
|
8
|
+
let cursor = row;
|
|
9
|
+
for (const segment of path) {
|
|
10
|
+
if (cursor == null)
|
|
11
|
+
return undefined;
|
|
12
|
+
cursor = cursor[segment];
|
|
13
|
+
}
|
|
14
|
+
return cursor;
|
|
15
|
+
}
|
|
16
|
+
export function mbGridNormalize(value, ignoreCase = true) {
|
|
17
|
+
const text = value === null || value === undefined ? '' : String(value);
|
|
18
|
+
return ignoreCase ? text.trim().toLocaleLowerCase() : text.trim();
|
|
19
|
+
}
|
|
20
|
+
export function mbGridApplyFilter(rows, filter, columns = []) {
|
|
21
|
+
if (!filter || !filter.filters?.length)
|
|
22
|
+
return rows;
|
|
23
|
+
return rows.filter((row) => mbGridEvaluateComposite(row, filter, columns));
|
|
24
|
+
}
|
|
25
|
+
export function mbGridApplySort(rows, sort = [], columns = []) {
|
|
26
|
+
if (!sort.length)
|
|
27
|
+
return rows;
|
|
28
|
+
return [...rows].sort((a, b) => {
|
|
29
|
+
for (const descriptor of sort) {
|
|
30
|
+
const column = columns.find((item) => String(item.field) === String(descriptor.field));
|
|
31
|
+
const result = column?.compare
|
|
32
|
+
? column.compare(a, b, descriptor.dir)
|
|
33
|
+
: mbGridCompareValues(column?.valueGetter ? column.valueGetter(a, -1) : mbGridGetValue(a, descriptor.field), column?.valueGetter ? column.valueGetter(b, -1) : mbGridGetValue(b, descriptor.field), descriptor.dir);
|
|
34
|
+
if (result !== 0)
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
return 0;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export function mbGridProcess(rows, state, columns = [], expandedGroupKeys = new Set()) {
|
|
41
|
+
const filtered = mbGridApplyFilter(rows, state.filter, columns);
|
|
42
|
+
const sorted = mbGridApplySort(filtered, state.sort, columns);
|
|
43
|
+
const total = sorted.length;
|
|
44
|
+
const aggregates = mbGridAggregateRows(sorted, columns);
|
|
45
|
+
if (state.group?.length) {
|
|
46
|
+
const grouped = mbGridBuildGroupRows(sorted, state.group, columns, expandedGroupKeys);
|
|
47
|
+
return { data: grouped, total, aggregates };
|
|
48
|
+
}
|
|
49
|
+
const paged = sorted.slice(state.skip, state.skip + state.take);
|
|
50
|
+
return {
|
|
51
|
+
data: paged.map((dataItem, rowIndex) => ({ kind: 'data', dataItem, rowIndex: state.skip + rowIndex })),
|
|
52
|
+
total,
|
|
53
|
+
aggregates,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function mbGridFormatValue(row, column, rowIndex, localeOrOptions = 'en-US') {
|
|
57
|
+
const options = typeof localeOrOptions === 'string'
|
|
58
|
+
? { locale: localeOrOptions }
|
|
59
|
+
: localeOrOptions;
|
|
60
|
+
const locale = options.locale ?? 'en-US';
|
|
61
|
+
const value = column.valueGetter ? column.valueGetter(row, rowIndex) : mbGridGetValue(row, column.field);
|
|
62
|
+
if (column.formatter)
|
|
63
|
+
return column.formatter(value, row, rowIndex);
|
|
64
|
+
if (value === null || value === undefined || value === '')
|
|
65
|
+
return '—';
|
|
66
|
+
if (column.type === 'boolean')
|
|
67
|
+
return value ? (options.yes ?? 'Yes') : (options.no ?? 'No');
|
|
68
|
+
if (column.type === 'enum' && column.enumMap)
|
|
69
|
+
return column.enumMap[value] ?? String(value);
|
|
70
|
+
if (column.type === 'number' && typeof value === 'number')
|
|
71
|
+
return new Intl.NumberFormat(locale).format(value);
|
|
72
|
+
if (column.type === 'date') {
|
|
73
|
+
const date = value instanceof Date ? value : new Date(String(value));
|
|
74
|
+
return Number.isNaN(date.getTime()) ? String(value) : new Intl.DateTimeFormat(locale).format(date);
|
|
75
|
+
}
|
|
76
|
+
return String(value);
|
|
77
|
+
}
|
|
78
|
+
export function mbGridBuildFilter(filtersByField) {
|
|
79
|
+
const filters = Object.entries(filtersByField)
|
|
80
|
+
.filter(([, item]) => item.operator === 'isNull' || item.operator === 'isNotNull' || item.operator === 'isEmpty' || item.operator === 'isNotEmpty' || item.value !== null && item.value !== undefined && String(item.value).trim() !== '')
|
|
81
|
+
.map(([field, item]) => ({ field, operator: item.operator, value: item.value, ignoreCase: true }));
|
|
82
|
+
return filters.length ? { logic: 'and', filters } : undefined;
|
|
83
|
+
}
|
|
84
|
+
export function mbGridToODataQuery(state) {
|
|
85
|
+
const params = [`$skip=${state.skip}`, `$top=${state.take}`];
|
|
86
|
+
if (state.sort?.length) {
|
|
87
|
+
params.push(`$orderby=${state.sort.map((s) => `${String(s.field)} ${s.dir}`).join(',')}`);
|
|
88
|
+
}
|
|
89
|
+
const filter = mbGridFilterToOData(state.filter);
|
|
90
|
+
if (filter)
|
|
91
|
+
params.push(`$filter=${encodeURIComponent(filter)}`);
|
|
92
|
+
return params.join('&');
|
|
93
|
+
}
|
|
94
|
+
export function mbGridToLaravelQuery(state) {
|
|
95
|
+
return {
|
|
96
|
+
page: Math.floor(state.skip / state.take) + 1,
|
|
97
|
+
per_page: state.take,
|
|
98
|
+
sort: state.sort.map((s) => `${s.dir === 'desc' ? '-' : ''}${String(s.field)}`).join(','),
|
|
99
|
+
filter: state.filter,
|
|
100
|
+
group: state.group.map((g) => String(g.field)),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export function mbGridExportCsv(rows, columns, fileName = 'grid-export.csv', localeOrOptions = 'en-US') {
|
|
104
|
+
const visibleColumns = columns.filter((column) => !column.hidden && column.exportable !== false);
|
|
105
|
+
const escape = (value) => `"${String(value ?? '').replace(/"/g, '""')}"`;
|
|
106
|
+
const header = visibleColumns.map((column) => escape(column.title)).join(',');
|
|
107
|
+
const body = rows
|
|
108
|
+
.map((row, rowIndex) => visibleColumns.map((column) => escape(mbGridFormatValue(row, column, rowIndex, localeOrOptions))).join(','))
|
|
109
|
+
.join('\n');
|
|
110
|
+
const blob = new Blob(['\ufeff', header, '\n', body], { type: 'text/csv;charset=utf-8;' });
|
|
111
|
+
const url = URL.createObjectURL(blob);
|
|
112
|
+
const anchor = document.createElement('a');
|
|
113
|
+
anchor.href = url;
|
|
114
|
+
anchor.download = fileName;
|
|
115
|
+
anchor.click();
|
|
116
|
+
URL.revokeObjectURL(url);
|
|
117
|
+
}
|
|
118
|
+
function mbGridEvaluateComposite(row, filter, columns) {
|
|
119
|
+
const results = filter.filters.map((item) => {
|
|
120
|
+
if ('logic' in item)
|
|
121
|
+
return mbGridEvaluateComposite(row, item, columns);
|
|
122
|
+
const column = columns.find((candidate) => String(candidate.field) === String(item.field));
|
|
123
|
+
if (column?.filterPredicate)
|
|
124
|
+
return column.filterPredicate(row, item);
|
|
125
|
+
const value = column?.valueGetter ? column.valueGetter(row, -1) : mbGridGetValue(row, item.field);
|
|
126
|
+
return mbGridEvaluateFilter(value, item.operator, item.value, item.ignoreCase !== false);
|
|
127
|
+
});
|
|
128
|
+
return filter.logic === 'or' ? results.some(Boolean) : results.every(Boolean);
|
|
129
|
+
}
|
|
130
|
+
function mbGridEvaluateFilter(value, operator, expected, ignoreCase = true) {
|
|
131
|
+
const actualText = mbGridNormalize(value, ignoreCase);
|
|
132
|
+
const expectedText = mbGridNormalize(expected, ignoreCase);
|
|
133
|
+
const actualNumber = typeof value === 'number' ? value : Number(value);
|
|
134
|
+
const expectedNumber = Number(expected);
|
|
135
|
+
switch (operator) {
|
|
136
|
+
case 'contains': return actualText.includes(expectedText);
|
|
137
|
+
case 'doesNotContain': return !actualText.includes(expectedText);
|
|
138
|
+
case 'startsWith': return actualText.startsWith(expectedText);
|
|
139
|
+
case 'endsWith': return actualText.endsWith(expectedText);
|
|
140
|
+
case 'eq': return actualText === expectedText;
|
|
141
|
+
case 'neq': return actualText !== expectedText;
|
|
142
|
+
case 'gt': return !Number.isNaN(actualNumber) && actualNumber > expectedNumber;
|
|
143
|
+
case 'gte': return !Number.isNaN(actualNumber) && actualNumber >= expectedNumber;
|
|
144
|
+
case 'lt': return !Number.isNaN(actualNumber) && actualNumber < expectedNumber;
|
|
145
|
+
case 'lte': return !Number.isNaN(actualNumber) && actualNumber <= expectedNumber;
|
|
146
|
+
case 'between': {
|
|
147
|
+
const range = Array.isArray(expected) ? expected : String(expected ?? '').split(',');
|
|
148
|
+
const min = Number(range[0]);
|
|
149
|
+
const max = Number(range[1]);
|
|
150
|
+
return !Number.isNaN(actualNumber) && !Number.isNaN(min) && !Number.isNaN(max) && actualNumber >= min && actualNumber <= max;
|
|
151
|
+
}
|
|
152
|
+
case 'isNull': return value === null || value === undefined;
|
|
153
|
+
case 'isNotNull': return value !== null && value !== undefined;
|
|
154
|
+
case 'isEmpty': return actualText.length === 0;
|
|
155
|
+
case 'isNotEmpty': return actualText.length > 0;
|
|
156
|
+
default: return true;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function mbGridCompareValues(first, second, direction) {
|
|
160
|
+
const modifier = direction === 'asc' ? 1 : -1;
|
|
161
|
+
if (first == null && second == null)
|
|
162
|
+
return 0;
|
|
163
|
+
if (first == null)
|
|
164
|
+
return -1 * modifier;
|
|
165
|
+
if (second == null)
|
|
166
|
+
return 1 * modifier;
|
|
167
|
+
if (first instanceof Date || second instanceof Date) {
|
|
168
|
+
return ((new Date(first).getTime() || 0) - (new Date(second).getTime() || 0)) * modifier;
|
|
169
|
+
}
|
|
170
|
+
if (typeof first === 'number' || typeof second === 'number') {
|
|
171
|
+
return (Number(first) - Number(second)) * modifier;
|
|
172
|
+
}
|
|
173
|
+
return mbGridNormalize(first).localeCompare(mbGridNormalize(second), undefined, { numeric: true }) * modifier;
|
|
174
|
+
}
|
|
175
|
+
function mbGridBuildGroupRows(rows, groups, columns, expandedGroupKeys, level = 0, parentKey = '') {
|
|
176
|
+
if (!groups.length) {
|
|
177
|
+
return rows.map((dataItem, rowIndex) => ({ kind: 'data', dataItem, rowIndex }));
|
|
178
|
+
}
|
|
179
|
+
const [descriptor, ...rest] = groups;
|
|
180
|
+
const buckets = new Map();
|
|
181
|
+
for (const row of rows) {
|
|
182
|
+
const raw = mbGridGetValue(row, descriptor.field);
|
|
183
|
+
const key = String(raw ?? '');
|
|
184
|
+
buckets.set(key, [...(buckets.get(key) ?? []), row]);
|
|
185
|
+
}
|
|
186
|
+
const sortedKeys = [...buckets.keys()].sort((a, b) => descriptor.dir === 'desc' ? b.localeCompare(a, undefined, { numeric: true }) : a.localeCompare(b, undefined, { numeric: true }));
|
|
187
|
+
const result = [];
|
|
188
|
+
for (const key of sortedKeys) {
|
|
189
|
+
const groupRows = buckets.get(key) ?? [];
|
|
190
|
+
const groupKey = `${parentKey}${String(descriptor.field)}:${key}|`;
|
|
191
|
+
const expanded = expandedGroupKeys.has(groupKey) || expandedGroupKeys.size === 0;
|
|
192
|
+
const groupRow = {
|
|
193
|
+
kind: 'group',
|
|
194
|
+
field: descriptor.field,
|
|
195
|
+
value: key || '—',
|
|
196
|
+
level,
|
|
197
|
+
count: groupRows.length,
|
|
198
|
+
expanded,
|
|
199
|
+
key: groupKey,
|
|
200
|
+
aggregates: mbGridAggregateRows(groupRows, columns),
|
|
201
|
+
};
|
|
202
|
+
result.push(groupRow);
|
|
203
|
+
if (expanded) {
|
|
204
|
+
result.push(...mbGridBuildGroupRows(groupRows, rest, columns, expandedGroupKeys, level + 1, groupKey));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return result;
|
|
208
|
+
}
|
|
209
|
+
function mbGridAggregateRows(rows, columns) {
|
|
210
|
+
const result = {};
|
|
211
|
+
for (const column of columns) {
|
|
212
|
+
const aggregates = Array.isArray(column.aggregate) ? column.aggregate : column.aggregate ? [column.aggregate] : [];
|
|
213
|
+
if (!aggregates.length)
|
|
214
|
+
continue;
|
|
215
|
+
const values = rows.map((row, index) => column.valueGetter ? column.valueGetter(row, index) : mbGridGetValue(row, column.field)).filter((value) => value !== null && value !== undefined && value !== '');
|
|
216
|
+
const numbers = values.map(Number).filter((value) => !Number.isNaN(value));
|
|
217
|
+
const field = String(column.field);
|
|
218
|
+
result[field] = {};
|
|
219
|
+
for (const aggregate of aggregates) {
|
|
220
|
+
result[field][aggregate] = mbGridAggregateValue(aggregate, numbers, values.length);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return result;
|
|
224
|
+
}
|
|
225
|
+
function mbGridAggregateValue(aggregate, numbers, count) {
|
|
226
|
+
switch (aggregate) {
|
|
227
|
+
case 'count': return count;
|
|
228
|
+
case 'sum': return numbers.reduce((sum, value) => sum + value, 0);
|
|
229
|
+
case 'avg': return numbers.length ? numbers.reduce((sum, value) => sum + value, 0) / numbers.length : 0;
|
|
230
|
+
case 'min': return numbers.length ? Math.min(...numbers) : 0;
|
|
231
|
+
case 'max': return numbers.length ? Math.max(...numbers) : 0;
|
|
232
|
+
default: return 0;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
function mbGridFilterToOData(filter) {
|
|
236
|
+
if (!filter || !filter.filters.length)
|
|
237
|
+
return '';
|
|
238
|
+
const parts = filter.filters
|
|
239
|
+
.map((item) => {
|
|
240
|
+
if ('logic' in item)
|
|
241
|
+
return `(${mbGridFilterToOData(item)})`;
|
|
242
|
+
const field = String(item.field);
|
|
243
|
+
const value = typeof item.value === 'number' ? item.value : `'${String(item.value ?? '').replace(/'/g, "''")}'`;
|
|
244
|
+
switch (item.operator) {
|
|
245
|
+
case 'contains': return `contains(${field},${value})`;
|
|
246
|
+
case 'doesNotContain': return `not contains(${field},${value})`;
|
|
247
|
+
case 'startsWith': return `startswith(${field},${value})`;
|
|
248
|
+
case 'endsWith': return `endswith(${field},${value})`;
|
|
249
|
+
case 'eq': return `${field} eq ${value}`;
|
|
250
|
+
case 'neq': return `${field} ne ${value}`;
|
|
251
|
+
case 'gt': return `${field} gt ${value}`;
|
|
252
|
+
case 'gte': return `${field} ge ${value}`;
|
|
253
|
+
case 'lt': return `${field} lt ${value}`;
|
|
254
|
+
case 'lte': return `${field} le ${value}`;
|
|
255
|
+
case 'between': return `${field} ge ${Array.isArray(item.value) ? item.value[0] : item.value} and ${field} le ${item.valueTo ?? (Array.isArray(item.value) ? item.value[1] : item.value)}`;
|
|
256
|
+
case 'isNull': return `${field} eq null`;
|
|
257
|
+
case 'isNotNull': return `${field} ne null`;
|
|
258
|
+
case 'isEmpty': return `${field} eq ''`;
|
|
259
|
+
case 'isNotEmpty': return `${field} ne ''`;
|
|
260
|
+
default: return '';
|
|
261
|
+
}
|
|
262
|
+
})
|
|
263
|
+
.filter(Boolean);
|
|
264
|
+
return parts.join(` ${filter.logic} `);
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItZ3JpZC1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9ncmlkL21iLWdyaWQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxNQUFNLFVBQVUsa0JBQWtCLENBQWMsSUFBSSxHQUFHLEVBQUU7SUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFjLEdBQU0sRUFBRSxLQUF1QjtJQUN6RSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3JDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsSUFBSSxNQUFNLEdBQVEsR0FBRyxDQUFDO0lBQ3RCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxNQUFNLElBQUksSUFBSTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEtBQWMsRUFBRSxVQUFVLEdBQUcsSUFBSTtJQUMvRCxNQUFNLElBQUksR0FBRyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFB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QyxDQUFDO0FBQ3pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBNYkdyaWRBZ2dyZWdhdGUsXG4gIE1iR3JpZENvbHVtbixcbiAgTWJHcmlkQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcixcbiAgTWJHcmlkRmlsdGVyRGVzY3JpcHRvcixcbiAgTWJHcmlkRmlsdGVyT3BlcmF0b3IsXG4gIE1iR3JpZEdyb3VwRGVzY3JpcHRvcixcbiAgTWJHcmlkR3JvdXBSb3csXG4gIE1iR3JpZFByb2Nlc3NlZFJlc3VsdCxcbiAgTWJHcmlkUmVuZGVyUm93LFxuICBNYkdyaWRTb3J0RGVzY3JpcHRvcixcbiAgTWJHcmlkU29ydERpcmVjdGlvbixcbiAgTWJHcmlkU3RhdGUsXG59IGZyb20gJy4vbWItZ3JpZC50eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYkdyaWREZWZhdWx0U3RhdGU8VCA9IHVua25vd24+KHRha2UgPSAxMCk6IE1iR3JpZFN0YXRlPFQ+IHtcbiAgcmV0dXJuIHsgc2tpcDogMCwgdGFrZSwgc29ydDogW10sIGdyb3VwOiBbXSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWJHcmlkR2V0VmFsdWU8VCA9IHVua25vd24+KHJvdzogVCwgZmllbGQ6IGtleW9mIFQgfCBzdHJpbmcpOiB1bmtub3duIHtcbiAgaWYgKCFyb3cgfHwgIWZpZWxkKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBwYXRoID0gU3RyaW5nKGZpZWxkKS5zcGxpdCgnLicpO1xuICBsZXQgY3Vyc29yOiBhbnkgPSByb3c7XG4gIGZvciAoY29uc3Qgc2VnbWVudCBvZiBwYXRoKSB7XG4gICAgaWYgKGN1cnNvciA9PSBudWxsKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGN1cnNvciA9IGN1cnNvcltzZWdtZW50XTtcbiAgfVxuICByZXR1cm4gY3Vyc29yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWJHcmlkTm9ybWFsaXplKHZhbHVlOiB1bmtub3duLCBpZ25vcmVDYXNlID0gdHJ1ZSk6IHN0cmluZyB7XG4gIGNvbnN0IHRleHQgPSB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gJycgOiBTdHJpbmcodmFsdWUpO1xuICByZXR1cm4gaWdub3JlQ2FzZSA/IHRleHQudHJpbSgpLnRvTG9jYWxlTG93ZXJDYXNlKCkgOiB0ZXh0LnRyaW0oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1iR3JpZEFwcGx5RmlsdGVyPFQ+KHJvd3M6IFRbXSwgZmlsdGVyPzogTWJHcmlkQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcjxUPiwgY29sdW1uczogTWJHcmlkQ29sdW1uPFQ+W10gPSBbXSk6IFRbXSB7XG4gIGlmICghZmlsdGVyIHx8ICFmaWx0ZXIuZmlsdGVycz8ubGVuZ3RoKSByZXR1cm4gcm93cztcbiAgcmV0dXJuIHJvd3MuZmlsdGVyKChyb3cpID0+IG1iR3JpZEV2YWx1YXRlQ29tcG9zaXRlKHJvdywgZmlsdGVyLCBjb2x1bW5zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYkdyaWRBcHBseVNvcnQ8VD4ocm93czogVFtdLCBzb3J0OiBNYkdyaWRTb3J0RGVzY3JpcHRvcjxUPltdID0gW10sIGNvbHVtbnM6IE1iR3JpZENvbHVtbjxUPltdID0gW10pOiBUW10ge1xuICBpZiAoIXNvcnQubGVuZ3RoKSByZXR1cm4gcm93cztcbiAgcmV0dXJuIFsuLi5yb3dzXS5zb3J0KChhLCBiKSA9PiB7XG4gICAgZm9yIChjb25zdCBkZXNjcmlwdG9yIG9mIHNvcnQpIHtcbiAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZCgoaXRlbSkgPT4gU3RyaW5nKGl0ZW0uZmllbGQpID09PSBTdHJpbmcoZGVzY3JpcHRvci5maWVsZCkpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gY29sdW1uPy5jb21wYXJlXG4gICAgICAgID8gY29sdW1uLmNvbXBhcmUoYSwgYiwgZGVzY3JpcHRvci5kaXIpXG4gICAgICAgIDogbWJHcmlkQ29tcGFyZVZhbHVlcyhcbiAgICAgICAgICAgIGNvbHVtbj8udmFsdWVHZXR0ZXIgPyBjb2x1bW4udmFsdWVHZXR0ZXIoYSwgLTEpIDogbWJHcmlkR2V0VmFsdWUoYSwgZGVzY3JpcHRvci5maWVsZCksXG4gICAgICAgICAgICBjb2x1bW4/LnZhbHVlR2V0dGVyID8gY29sdW1uLnZhbHVlR2V0dGVyKGIsIC0xKSA6IG1iR3JpZEdldFZhbHVlKGIsIGRlc2NyaXB0b3IuZmllbGQpLFxuICAgICAgICAgICAgZGVzY3JpcHRvci5kaXIsXG4gICAgICAgICAgKTtcbiAgICAgIGlmIChyZXN1bHQgIT09IDApIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiAwO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1iR3JpZFByb2Nlc3M8VD4ocm93czogVFtdLCBzdGF0ZTogTWJHcmlkU3RhdGU8VD4sIGNvbHVtbnM6IE1iR3JpZENvbHVtbjxUPltdID0gW10sIGV4cGFuZGVkR3JvdXBLZXlzID0gbmV3IFNldDxzdHJpbmc+KCkpOiBNYkdyaWRQcm9jZXNzZWRSZXN1bHQ8VD4ge1xuICBjb25zdCBmaWx0ZXJlZCA9IG1iR3JpZEFwcGx5RmlsdGVyKHJvd3MsIHN0YXRlLmZpbHRlciwgY29sdW1ucyk7XG4gIGNvbnN0IHNvcnRlZCA9IG1iR3JpZEFwcGx5U29ydChmaWx0ZXJlZCwgc3RhdGUuc29ydCwgY29sdW1ucyk7XG4gIGNvbnN0IHRvdGFsID0gc29ydGVkLmxlbmd0aDtcbiAgY29uc3QgYWdncmVnYXRlcyA9IG1iR3JpZEFnZ3JlZ2F0ZVJvd3Moc29ydGVkLCBjb2x1bW5zKTtcblxuICBpZiAoc3RhdGUuZ3JvdXA/Lmxlbmd0aCkge1xuICAgIGNvbnN0IGdyb3VwZWQgPSBtYkdyaWRCdWlsZEdyb3VwUm93cyhzb3J0ZWQsIHN0YXRlLmdyb3VwLCBjb2x1bW5zLCBleHBhbmRlZEdyb3VwS2V5cyk7XG4gICAgcmV0dXJuIHsgZGF0YTogZ3JvdXBlZCwgdG90YWwsIGFnZ3JlZ2F0ZXMgfTtcbiAgfVxuXG4gIGNvbnN0IHBhZ2VkID0gc29ydGVkLnNsaWNlKHN0YXRlLnNraXAsIHN0YXRlLnNraXAgKyBzdGF0ZS50YWtlKTtcbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBwYWdlZC5tYXAoKGRhdGFJdGVtLCByb3dJbmRleCkgPT4gKHsga2luZDogJ2RhdGEnLCBkYXRhSXRlbSwgcm93SW5kZXg6IHN0YXRlLnNraXAgKyByb3dJbmRleCB9KSksXG4gICAgdG90YWwsXG4gICAgYWdncmVnYXRlcyxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYkdyaWRGb3JtYXRPcHRpb25zIHtcbiAgbG9jYWxlPzogc3RyaW5nO1xuICB5ZXM/OiBzdHJpbmc7XG4gIG5vPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWJHcmlkRm9ybWF0VmFsdWU8VD4oXG4gIHJvdzogVCxcbiAgY29sdW1uOiBNYkdyaWRDb2x1bW48VD4sXG4gIHJvd0luZGV4OiBudW1iZXIsXG4gIGxvY2FsZU9yT3B0aW9uczogc3RyaW5nIHwgTWJHcmlkRm9ybWF0T3B0aW9ucyA9ICdlbi1VUycsXG4pOiBzdHJpbmcge1xuICBjb25zdCBvcHRpb25zOiBNYkdyaWRGb3JtYXRPcHRpb25zID0gdHlwZW9mIGxvY2FsZU9yT3B0aW9ucyA9PT0gJ3N0cmluZydcbiAgICA/IHsgbG9jYWxlOiBsb2NhbGVPck9wdGlvbnMgfVxuICAgIDogbG9jYWxlT3JPcHRpb25zO1xuICBjb25zdCBsb2NhbGUgPSBvcHRpb25zLmxvY2FsZSA/PyAnZW4tVVMnO1xuICBjb25zdCB2YWx1ZSA9IGNvbHVtbi52YWx1ZUdldHRlciA/IGNvbHVtbi52YWx1ZUdldHRlcihyb3csIHJvd0luZGV4KSA6IG1iR3JpZEdldFZhbHVlKHJvdywgY29sdW1uLmZpZWxkKTtcbiAgaWYgKGNvbHVtbi5mb3JtYXR0ZXIpIHJldHVybiBjb2x1bW4uZm9ybWF0dGVyKHZhbHVlLCByb3csIHJvd0luZGV4KTtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSByZXR1cm4gJ+KAlCc7XG4gIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Jvb2xlYW4nKSByZXR1cm4gdmFsdWUgPyAob3B0aW9ucy55ZXMgPz8gJ1llcycpIDogKG9wdGlvbnMubm8gPz8gJ05vJyk7XG4gIGlmIChjb2x1bW4udHlwZSA9PT0gJ2VudW0nICYmIGNvbHVtbi5lbnVtTWFwKSByZXR1cm4gY29sdW1uLmVudW1NYXBbdmFsdWUgYXMgc3RyaW5nIHwgbnVtYmVyXSA/PyBTdHJpbmcodmFsdWUpO1xuICBpZiAoY29sdW1uLnR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlKS5mb3JtYXQodmFsdWUpO1xuICBpZiAoY29sdW1uLnR5cGUgPT09ICdkYXRlJykge1xuICAgIGNvbnN0IGRhdGUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKFN0cmluZyh2YWx1ZSkpO1xuICAgIHJldHVybiBOdW1iZXIuaXNOYU4oZGF0ZS5nZXRUaW1lKCkpID8gU3RyaW5nKHZhbHVlKSA6IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSkuZm9ybWF0KGRhdGUpO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWJHcmlkQnVpbGRGaWx0ZXI8VD4oZmlsdGVyc0J5RmllbGQ6IFJlY29yZDxzdHJpbmcsIHsgb3BlcmF0b3I6IE1iR3JpZEZpbHRlck9wZXJhdG9yOyB2YWx1ZTogdW5rbm93biB9Pik6IE1iR3JpZENvbXBvc2l0ZUZpbHRlckRlc2NyaXB0b3I8VD4gfCB1bmRlZmluZWQge1xuICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmVudHJpZXMoZmlsdGVyc0J5RmllbGQpXG4gICAgLmZpbHRlcigoWywgaXRlbV0pID0+IGl0ZW0ub3BlcmF0b3IgPT09ICdpc051bGwnIHx8IGl0ZW0ub3BlcmF0b3IgPT09ICdpc05vdE51bGwnIHx8IGl0ZW0ub3BlcmF0b3IgPT09ICdpc0VtcHR5JyB8fCBpdGVtLm9wZXJhdG9yID09PSAnaXNOb3RFbXB0eScgfHwgaXRlbS52YWx1ZSAhPT0gbnVsbCAmJiBpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgU3RyaW5nKGl0ZW0udmFsdWUpLnRyaW0oKSAhPT0gJycpXG4gICAgLm1hcCgoW2ZpZWxkLCBpdGVtXSkgPT4gKHsgZmllbGQsIG9wZXJhdG9yOiBpdGVtLm9wZXJhdG9yLCB2YWx1ZTogaXRlbS52YWx1ZSwgaWdub3JlQ2FzZTogdHJ1ZSB9IGFzIE1iR3JpZEZpbHRlckRlc2NyaXB0b3I8VD4pKTtcbiAgcmV0dXJuIGZpbHRlcnMubGVuZ3RoID8geyBsb2dpYzogJ2FuZCcsIGZpbHRlcnMgfSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1iR3JpZFRvT0RhdGFRdWVyeTxUPihzdGF0ZTogTWJHcmlkU3RhdGU8VD4pOiBzdHJpbmcge1xuICBjb25zdCBwYXJhbXM6IHN0cmluZ1tdID0gW2Akc2tpcD0ke3N0YXRlLnNraXB9YCwgYCR0b3A9JHtzdGF0ZS50YWtlfWBdO1xuICBpZiAoc3RhdGUuc29ydD8ubGVuZ3RoKSB7XG4gICAgcGFyYW1zLnB1c2goYCRvcmRlcmJ5PSR7c3RhdGUuc29ydC5tYXAoKHMpID0+IGAke1N0cmluZyhzLmZpZWxkKX0gJHtzLmRpcn1gKS5qb2luKCcsJyl9YCk7XG4gIH1cbiAgY29uc3QgZmlsdGVyID0gbWJHcmlkRmlsdGVyVG9PRGF0YShzdGF0ZS5maWx0ZXIpO1xuICBpZiAoZmlsdGVyKSBwYXJhbXMucHVzaChgJGZpbHRlcj0ke2VuY29kZVVSSUNvbXBvbmVudChmaWx0ZXIpfWApO1xuICByZXR1cm4gcGFyYW1zLmpvaW4oJyYnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1iR3JpZFRvTGFyYXZlbFF1ZXJ5PFQ+KHN0YXRlOiBNYkdyaWRTdGF0ZTxUPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHtcbiAgICBwYWdlOiBNYXRoLmZsb29yKHN0YXRlLnNraXAgLyBzdGF0ZS50YWtlKSArIDEsXG4gICAgcGVyX3BhZ2U6IHN0YXRlLnRha2UsXG4gICAgc29ydDogc3RhdGUuc29ydC5tYXAoKHMpID0+IGAke3MuZGlyID09PSAnZGVzYycgPyAnLScgOiAnJ30ke1N0cmluZyhzLmZpZWxkKX1gKS5qb2luKCcsJyksXG4gICAgZmlsdGVyOiBzdGF0ZS5maWx0ZXIsXG4gICAgZ3JvdXA6IHN0YXRlLmdyb3VwLm1hcCgoZykgPT4gU3RyaW5nKGcuZmllbGQpKSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1iR3JpZEV4cG9ydENzdjxUPihcbiAgcm93czogVFtdLFxuICBjb2x1bW5zOiBNYkdyaWRDb2x1bW48VD5bXSxcbiAgZmlsZU5hbWUgPSAnZ3JpZC1leHBvcnQuY3N2JyxcbiAgbG9jYWxlT3JPcHRpb25zOiBzdHJpbmcgfCBNYkdyaWRGb3JtYXRPcHRpb25zID0gJ2VuLVVTJyxcbik6IHZvaWQge1xuICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKChjb2x1bW4pID0+ICFjb2x1bW4uaGlkZGVuICYmIGNvbHVtbi5leHBvcnRhYmxlICE9PSBmYWxzZSk7XG4gIGNvbnN0IGVzY2FwZSA9ICh2YWx1ZTogdW5rbm93bikgPT4gYFwiJHtTdHJpbmcodmFsdWUgPz8gJycpLnJlcGxhY2UoL1wiL2csICdcIlwiJyl9XCJgO1xuICBjb25zdCBoZWFkZXIgPSB2aXNpYmxlQ29sdW1ucy5tYXAoKGNvbHVtbikgPT4gZXNjYXBlKGNvbHVtbi50aXRsZSkpLmpvaW4oJywnKTtcbiAgY29uc3QgYm9keSA9IHJvd3NcbiAgICAubWFwKChyb3csIHJvd0luZGV4KSA9PiB2aXNpYmxlQ29sdW1ucy5tYXAoKGNvbHVtbikgPT4gZXNjYXBlKG1iR3JpZEZvcm1hdFZhbHVlKHJvdywgY29sdW1uLCByb3dJbmRleCwgbG9jYWxlT3JPcHRpb25zKSkpLmpvaW4oJywnKSlcbiAgICAuam9pbignXFxuJyk7XG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbJ1xcdWZlZmYnLCBoZWFkZXIsICdcXG4nLCBib2R5XSwgeyB0eXBlOiAndGV4dC9jc3Y7Y2hhcnNldD11dGYtODsnIH0pO1xuICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICBjb25zdCBhbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gIGFuY2hvci5ocmVmID0gdXJsO1xuICBhbmNob3IuZG93bmxvYWQgPSBmaWxlTmFtZTtcbiAgYW5jaG9yLmNsaWNrKCk7XG4gIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbn1cblxuZnVuY3Rpb24gbWJHcmlkRXZhbHVhdGVDb21wb3NpdGU8VD4ocm93OiBULCBmaWx0ZXI6IE1iR3JpZENvbXBvc2l0ZUZpbHRlckRlc2NyaXB0b3I8VD4sIGNvbHVtbnM6IE1iR3JpZENvbHVtbjxUPltdKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJlc3VsdHMgPSBmaWx0ZXIuZmlsdGVycy5tYXAoKGl0ZW0pID0+IHtcbiAgICBpZiAoJ2xvZ2ljJyBpbiBpdGVtKSByZXR1cm4gbWJHcmlkRXZhbHVhdGVDb21wb3NpdGUocm93LCBpdGVtLCBjb2x1bW5zKTtcbiAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoKGNhbmRpZGF0ZSkgPT4gU3RyaW5nKGNhbmRpZGF0ZS5maWVsZCkgPT09IFN0cmluZyhpdGVtLmZpZWxkKSk7XG4gICAgaWYgKGNvbHVtbj8uZmlsdGVyUHJlZGljYXRlKSByZXR1cm4gY29sdW1uLmZpbHRlclByZWRpY2F0ZShyb3csIGl0ZW0pO1xuICAgIGNvbnN0IHZhbHVlID0gY29sdW1uPy52YWx1ZUdldHRlciA/IGNvbHVtbi52YWx1ZUdldHRlcihyb3csIC0xKSA6IG1iR3JpZEdldFZhbHVlKHJvdywgaXRlbS5maWVsZCk7XG4gICAgcmV0dXJuIG1iR3JpZEV2YWx1YXRlRmlsdGVyKHZhbHVlLCBpdGVtLm9wZXJhdG9yLCBpdGVtLnZhbHVlLCBpdGVtLmlnbm9yZUNhc2UgIT09IGZhbHNlKTtcbiAgfSk7XG4gIHJldHVybiBmaWx0ZXIubG9naWMgPT09ICdvcicgPyByZXN1bHRzLnNvbWUoQm9vbGVhbikgOiByZXN1bHRzLmV2ZXJ5KEJvb2xlYW4pO1xufVxuXG5mdW5jdGlvbiBtYkdyaWRFdmFsdWF0ZUZpbHRlcih2YWx1ZTogdW5rbm93biwgb3BlcmF0b3I6IE1iR3JpZEZpbHRlck9wZXJhdG9yLCBleHBlY3RlZDogdW5rbm93biwgaWdub3JlQ2FzZSA9IHRydWUpOiBib29sZWFuIHtcbiAgY29uc3QgYWN0dWFsVGV4dCA9IG1iR3JpZE5vcm1hbGl6ZSh2YWx1ZSwgaWdub3JlQ2FzZSk7XG4gIGNvbnN0IGV4cGVjdGVkVGV4dCA9IG1iR3JpZE5vcm1hbGl6ZShleHBlY3RlZCwgaWdub3JlQ2FzZSk7XG4gIGNvbnN0IGFjdHVhbE51bWJlciA9IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IE51bWJlcih2YWx1ZSk7XG4gIGNvbnN0IGV4cGVjdGVkTnVtYmVyID0gTnVtYmVyKGV4cGVjdGVkKTtcblxuICBzd2l0Y2ggKG9wZXJhdG9yKSB7XG4gICAgY2FzZSAnY29udGFpbnMnOiByZXR1cm4gYWN0dWFsVGV4dC5pbmNsdWRlcyhleHBlY3RlZFRleHQpO1xuICAgIGNhc2UgJ2RvZXNOb3RDb250YWluJzogcmV0dXJuICFhY3R1YWxUZXh0LmluY2x1ZGVzKGV4cGVjdGVkVGV4dCk7XG4gICAgY2FzZSAnc3RhcnRzV2l0aCc6IHJldHVybiBhY3R1YWxUZXh0LnN0YXJ0c1dpdGgoZXhwZWN0ZWRUZXh0KTtcbiAgICBjYXNlICdlbmRzV2l0aCc6IHJldHVybiBhY3R1YWxUZXh0LmVuZHNXaXRoKGV4cGVjdGVkVGV4dCk7XG4gICAgY2FzZSAnZXEnOiByZXR1cm4gYWN0dWFsVGV4dCA9PT0gZXhwZWN0ZWRUZXh0O1xuICAgIGNhc2UgJ25lcSc6IHJldHVybiBhY3R1YWxUZXh0ICE9PSBleHBlY3RlZFRleHQ7XG4gICAgY2FzZSAnZ3QnOiByZXR1cm4gIU51bWJlci5pc05hTihhY3R1YWxOdW1iZXIpICYmIGFjdHVhbE51bWJlciA+IGV4cGVjdGVkTnVtYmVyO1xuICAgIGNhc2UgJ2d0ZSc6IHJldHVybiAhTnVtYmVyLmlzTmFOKGFjdHVhbE51bWJlcikgJiYgYWN0dWFsTnVtYmVyID49IGV4cGVjdGVkTnVtYmVyO1xuICAgIGNhc2UgJ2x0JzogcmV0dXJuICFOdW1iZXIuaXNOYU4oYWN0dWFsTnVtYmVyKSAmJiBhY3R1YWxOdW1iZXIgPCBleHBlY3RlZE51bWJlcjtcbiAgICBjYXNlICdsdGUnOiByZXR1cm4gIU51bWJlci5pc05hTihhY3R1YWxOdW1iZXIpICYmIGFjdHVhbE51bWJlciA8PSBleHBlY3RlZE51bWJlcjtcbiAgICBjYXNlICdiZXR3ZWVuJzoge1xuICAgICAgY29uc3QgcmFuZ2UgPSBBcnJheS5pc0FycmF5KGV4cGVjdGVkKSA/IGV4cGVjdGVkIDogU3RyaW5nKGV4cGVjdGVkID8/ICcnKS5zcGxpdCgnLCcpO1xuICAgICAgY29uc3QgbWluID0gTnVtYmVyKHJhbmdlWzBdKTtcbiAgICAgIGNvbnN0IG1heCA9IE51bWJlcihyYW5nZVsxXSk7XG4gICAgICByZXR1cm4gIU51bWJlci5pc05hTihhY3R1YWxOdW1iZXIpICYmICFOdW1iZXIuaXNOYU4obWluKSAmJiAhTnVtYmVyLmlzTmFOKG1heCkgJiYgYWN0dWFsTnVtYmVyID49IG1pbiAmJiBhY3R1YWxOdW1iZXIgPD0gbWF4O1xuICAgIH1cbiAgICBjYXNlICdpc051bGwnOiByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgICBjYXNlICdpc05vdE51bGwnOiByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICBjYXNlICdpc0VtcHR5JzogcmV0dXJuIGFjdHVhbFRleHQubGVuZ3RoID09PSAwO1xuICAgIGNhc2UgJ2lzTm90RW1wdHknOiByZXR1cm4gYWN0dWFsVGV4dC5sZW5ndGggPiAwO1xuICAgIGRlZmF1bHQ6IHJldHVybiB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1iR3JpZENvbXBhcmVWYWx1ZXMoZmlyc3Q6IHVua25vd24sIHNlY29uZDogdW5rbm93biwgZGlyZWN0aW9uOiBNYkdyaWRTb3J0RGlyZWN0aW9uKTogbnVtYmVyIHtcbiAgY29uc3QgbW9kaWZpZXIgPSBkaXJlY3Rpb24gPT09ICdhc2MnID8gMSA6IC0xO1xuICBpZiAoZmlyc3QgPT0gbnVsbCAmJiBzZWNvbmQgPT0gbnVsbCkgcmV0dXJuIDA7XG4gIGlmIChmaXJzdCA9PSBudWxsKSByZXR1cm4gLTEgKiBtb2RpZmllcjtcbiAgaWYgKHNlY29uZCA9PSBudWxsKSByZXR1cm4gMSAqIG1vZGlmaWVyO1xuICBpZiAoZmlyc3QgaW5zdGFuY2VvZiBEYXRlIHx8IHNlY29uZCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gKChuZXcgRGF0ZShmaXJzdCBhcyBhbnkpLmdldFRpbWUoKSB8fCAwKSAtIChuZXcgRGF0ZShzZWNvbmQgYXMgYW55KS5nZXRUaW1lKCkgfHwgMCkpICogbW9kaWZpZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiBmaXJzdCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHNlY29uZCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gKE51bWJlcihmaXJzdCkgLSBOdW1iZXIoc2Vjb25kKSkgKiBtb2RpZmllcjtcbiAgfVxuICByZXR1cm4gbWJHcmlkTm9ybWFsaXplKGZpcnN0KS5sb2NhbGVDb21wYXJlKG1iR3JpZE5vcm1hbGl6ZShzZWNvbmQpLCB1bmRlZmluZWQsIHsgbnVtZXJpYzogdHJ1ZSB9KSAqIG1vZGlmaWVyO1xufVxuXG5mdW5jdGlvbiBtYkdyaWRCdWlsZEdyb3VwUm93czxUPihyb3dzOiBUW10sIGdyb3VwczogTWJHcmlkR3JvdXBEZXNjcmlwdG9yPFQ+W10sIGNvbHVtbnM6IE1iR3JpZENvbHVtbjxUPltdLCBleHBhbmRlZEdyb3VwS2V5czogU2V0PHN0cmluZz4sIGxldmVsID0gMCwgcGFyZW50S2V5ID0gJycpOiBNYkdyaWRSZW5kZXJSb3c8VD5bXSB7XG4gIGlmICghZ3JvdXBzLmxlbmd0aCkge1xuICAgIHJldHVybiByb3dzLm1hcCgoZGF0YUl0ZW0sIHJvd0luZGV4KSA9PiAoeyBraW5kOiAnZGF0YScsIGRhdGFJdGVtLCByb3dJbmRleCB9KSk7XG4gIH1cblxuICBjb25zdCBbZGVzY3JpcHRvciwgLi4ucmVzdF0gPSBncm91cHM7XG4gIGNvbnN0IGJ1Y2tldHMgPSBuZXcgTWFwPHN0cmluZywgVFtdPigpO1xuICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgY29uc3QgcmF3ID0gbWJHcmlkR2V0VmFsdWUocm93LCBkZXNjcmlwdG9yLmZpZWxkKTtcbiAgICBjb25zdCBrZXkgPSBTdHJpbmcocmF3ID8/ICcnKTtcbiAgICBidWNrZXRzLnNldChrZXksIFsuLi4oYnVja2V0cy5nZXQoa2V5KSA/PyBbXSksIHJvd10pO1xuICB9XG5cbiAgY29uc3Qgc29ydGVkS2V5cyA9IFsuLi5idWNrZXRzLmtleXMoKV0uc29ydCgoYSwgYikgPT4gZGVzY3JpcHRvci5kaXIgPT09ICdkZXNjJyA/IGIubG9jYWxlQ29tcGFyZShhLCB1bmRlZmluZWQsIHsgbnVtZXJpYzogdHJ1ZSB9KSA6IGEubG9jYWxlQ29tcGFyZShiLCB1bmRlZmluZWQsIHsgbnVtZXJpYzogdHJ1ZSB9KSk7XG4gIGNvbnN0IHJlc3VsdDogTWJHcmlkUmVuZGVyUm93PFQ+W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBzb3J0ZWRLZXlzKSB7XG4gICAgY29uc3QgZ3JvdXBSb3dzID0gYnVja2V0cy5nZXQoa2V5KSA/PyBbXTtcbiAgICBjb25zdCBncm91cEtleSA9IGAke3BhcmVudEtleX0ke1N0cmluZyhkZXNjcmlwdG9yLmZpZWxkKX06JHtrZXl9fGA7XG4gICAgY29uc3QgZXhwYW5kZWQgPSBleHBhbmRlZEdyb3VwS2V5cy5oYXMoZ3JvdXBLZXkpIHx8IGV4cGFuZGVkR3JvdXBLZXlzLnNpemUgPT09IDA7XG4gICAgY29uc3QgZ3JvdXBSb3c6IE1iR3JpZEdyb3VwUm93PFQ+ID0ge1xuICAgICAga2luZDogJ2dyb3VwJyxcbiAgICAgIGZpZWxkOiBkZXNjcmlwdG9yLmZpZWxkLFxuICAgICAgdmFsdWU6IGtleSB8fCAn4oCUJyxcbiAgICAgIGxldmVsLFxuICAgICAgY291bnQ6IGdyb3VwUm93cy5sZW5ndGgsXG4gICAgICBleHBhbmRlZCxcbiAgICAgIGtleTogZ3JvdXBLZXksXG4gICAgICBhZ2dyZWdhdGVzOiBtYkdyaWRBZ2dyZWdhdGVSb3dzKGdyb3VwUm93cywgY29sdW1ucyksXG4gICAgfTtcbiAgICByZXN1bHQucHVzaChncm91cFJvdyk7XG4gICAgaWYgKGV4cGFuZGVkKSB7XG4gICAgICByZXN1bHQucHVzaCguLi5tYkdyaWRCdWlsZEdyb3VwUm93cyhncm91cFJvd3MsIHJlc3QsIGNvbHVtbnMsIGV4cGFuZGVkR3JvdXBLZXlzLCBsZXZlbCArIDEsIGdyb3VwS2V5KSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbWJHcmlkQWdncmVnYXRlUm93czxUPihyb3dzOiBUW10sIGNvbHVtbnM6IE1iR3JpZENvbHVtbjxUPltdKTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgbnVtYmVyPj4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIG51bWJlcj4+ID0ge307XG4gIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcbiAgICBjb25zdCBhZ2dyZWdhdGVzID0gQXJyYXkuaXNBcnJheShjb2x1bW4uYWdncmVnYXRlKSA/IGNvbHVtbi5hZ2dyZWdhdGUgOiBjb2x1bW4uYWdncmVnYXRlID8gW2NvbHVtbi5hZ2dyZWdhdGVdIDogW107XG4gICAgaWYgKCFhZ2dyZWdhdGVzLmxlbmd0aCkgY29udGludWU7XG4gICAgY29uc3QgdmFsdWVzID0gcm93cy5tYXAoKHJvdywgaW5kZXgpID0+IGNvbHVtbi52YWx1ZUdldHRlciA/IGNvbHVtbi52YWx1ZUdldHRlcihyb3csIGluZGV4KSA6IG1iR3JpZEdldFZhbHVlKHJvdywgY29sdW1uLmZpZWxkKSkuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gJycpO1xuICAgIGNvbnN0IG51bWJlcnMgPSB2YWx1ZXMubWFwKE51bWJlcikuZmlsdGVyKCh2YWx1ZSkgPT4gIU51bWJlci5pc05hTih2YWx1ZSkpO1xuICAgIGNvbnN0IGZpZWxkID0gU3RyaW5nKGNvbHVtbi5maWVsZCk7XG4gICAgcmVzdWx0W2ZpZWxkXSA9IHt9O1xuICAgIGZvciAoY29uc3QgYWdncmVnYXRlIG9mIGFnZ3JlZ2F0ZXMpIHtcbiAgICAgIHJlc3VsdFtmaWVsZF1bYWdncmVnYXRlXSA9IG1iR3JpZEFnZ3JlZ2F0ZVZhbHVlKGFnZ3JlZ2F0ZSwgbnVtYmVycywgdmFsdWVzLmxlbmd0aCk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1iR3JpZEFnZ3JlZ2F0ZVZhbHVlKGFnZ3JlZ2F0ZTogTWJHcmlkQWdncmVnYXRlLCBudW1iZXJzOiBudW1iZXJbXSwgY291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gIHN3aXRjaCAoYWdncmVnYXRlKSB7XG4gICAgY2FzZSAnY291bnQnOiByZXR1cm4gY291bnQ7XG4gICAgY2FzZSAnc3VtJzogcmV0dXJuIG51bWJlcnMucmVkdWNlKChzdW0sIHZhbHVlKSA9PiBzdW0gKyB2YWx1ZSwgMCk7XG4gICAgY2FzZSAnYXZnJzogcmV0dXJuIG51bWJlcnMubGVuZ3RoID8gbnVtYmVycy5yZWR1Y2UoKHN1bSwgdmFsdWUpID0+IHN1bSArIHZhbHVlLCAwKSAvIG51bWJlcnMubGVuZ3RoIDogMDtcbiAgICBjYXNlICdtaW4nOiByZXR1cm4gbnVtYmVycy5sZW5ndGggPyBNYXRoLm1pbiguLi5udW1iZXJzKSA6IDA7XG4gICAgY2FzZSAnbWF4JzogcmV0dXJuIG51bWJlcnMubGVuZ3RoID8gTWF0aC5tYXgoLi4ubnVtYmVycykgOiAwO1xuICAgIGRlZmF1bHQ6IHJldHVybiAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1iR3JpZEZpbHRlclRvT0RhdGE8VD4oZmlsdGVyPzogTWJHcmlkQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcjxUPik6IHN0cmluZyB7XG4gIGlmICghZmlsdGVyIHx8ICFmaWx0ZXIuZmlsdGVycy5sZW5ndGgpIHJldHVybiAnJztcbiAgY29uc3QgcGFydHMgPSBmaWx0ZXIuZmlsdGVyc1xuICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGlmICgnbG9naWMnIGluIGl0ZW0pIHJldHVybiBgKCR7bWJHcmlkRmlsdGVyVG9PRGF0YShpdGVtKX0pYDtcbiAgICAgIGNvbnN0IGZpZWxkID0gU3RyaW5nKGl0ZW0uZmllbGQpO1xuICAgICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgaXRlbS52YWx1ZSA9PT0gJ251bWJlcicgPyBpdGVtLnZhbHVlIDogYCcke1N0cmluZyhpdGVtLnZhbHVlID8/ICcnKS5yZXBsYWNlKC8nL2csIFwiJydcIil9J2A7XG4gICAgICBzd2l0Y2ggKGl0ZW0ub3BlcmF0b3IpIHtcbiAgICAgICAgY2FzZSAnY29udGFpbnMnOiByZXR1cm4gYGNvbnRhaW5zKCR7ZmllbGR9LCR7dmFsdWV9KWA7XG4gICAgICAgIGNhc2UgJ2RvZXNOb3RDb250YWluJzogcmV0dXJuIGBub3QgY29udGFpbnMoJHtmaWVsZH0sJHt2YWx1ZX0pYDtcbiAgICAgICAgY2FzZSAnc3RhcnRzV2l0aCc6IHJldHVybiBgc3RhcnRzd2l0aCgke2ZpZWxkfSwke3ZhbHVlfSlgO1xuICAgICAgICBjYXNlICdlbmRzV2l0aCc6IHJldHVybiBgZW5kc3dpdGgoJHtmaWVsZH0sJHt2YWx1ZX0pYDtcbiAgICAgICAgY2FzZSAnZXEnOiByZXR1cm4gYCR7ZmllbGR9IGVxICR7dmFsdWV9YDtcbiAgICAgICAgY2FzZSAnbmVxJzogcmV0dXJuIGAke2ZpZWxkfSBuZSAke3ZhbHVlfWA7XG4gICAgICAgIGNhc2UgJ2d0JzogcmV0dXJuIGAke2ZpZWxkfSBndCAke3ZhbHVlfWA7XG4gICAgICAgIGNhc2UgJ2d0ZSc6IHJldHVybiBgJHtmaWVsZH0gZ2UgJHt2YWx1ZX1gO1xuICAgICAgICBjYXNlICdsdCc6IHJldHVybiBgJHtmaWVsZH0gbHQgJHt2YWx1ZX1gO1xuICAgICAgICBjYXNlICdsdGUnOiByZXR1cm4gYCR7ZmllbGR9IGxlICR7dmFsdWV9YDtcbiAgICAgICAgY2FzZSAnYmV0d2Vlbic6IHJldHVybiBgJHtmaWVsZH0gZ2UgJHtBcnJheS5pc0FycmF5KGl0ZW0udmFsdWUpID8gaXRlbS52YWx1ZVswXSA6IGl0ZW0udmFsdWV9IGFuZCAke2ZpZWxkfSBsZSAke2l0ZW0udmFsdWVUbyA/PyAoQXJyYXkuaXNBcnJheShpdGVtLnZhbHVlKSA/IGl0ZW0udmFsdWVbMV0gOiBpdGVtLnZhbHVlKX1gO1xuICAgICAgICBjYXNlICdpc051bGwnOiByZXR1cm4gYCR7ZmllbGR9IGVxIG51bGxgO1xuICAgICAgICBjYXNlICdpc05vdE51bGwnOiByZXR1cm4gYCR7ZmllbGR9IG5lIG51bGxgO1xuICAgICAgICBjYXNlICdpc0VtcHR5JzogcmV0dXJuIGAke2ZpZWxkfSBlcSAnJ2A7XG4gICAgICAgIGNhc2UgJ2lzTm90RW1wdHknOiByZXR1cm4gYCR7ZmllbGR9IG5lICcnYDtcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIHBhcnRzLmpvaW4oYCAke2ZpbHRlci5sb2dpY30gYCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { mbGridFormatValue, mbGridGetValue } from './mb-grid-data';
|
|
2
|
+
export function mbGridDownloadBlob(blob, fileName) {
|
|
3
|
+
const url = URL.createObjectURL(blob);
|
|
4
|
+
const anchor = document.createElement('a');
|
|
5
|
+
anchor.href = url;
|
|
6
|
+
anchor.download = fileName;
|
|
7
|
+
anchor.click();
|
|
8
|
+
URL.revokeObjectURL(url);
|
|
9
|
+
}
|
|
10
|
+
export function mbGridExportJson(rows, columns, fileName = 'grid-export.json') {
|
|
11
|
+
const visible = columns.filter((column) => !column.hidden && column.exportable !== false);
|
|
12
|
+
const data = rows.map((row, rowIndex) => {
|
|
13
|
+
const item = {};
|
|
14
|
+
for (const column of visible)
|
|
15
|
+
item[String(column.field)] = column.valueGetter ? column.valueGetter(row, rowIndex) : mbGridGetValue(row, column.field);
|
|
16
|
+
return item;
|
|
17
|
+
});
|
|
18
|
+
mbGridDownloadBlob(new Blob([JSON.stringify(data, null, 2)], { type: 'application/json;charset=utf-8' }), fileName);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Excel-compatible HTML export. It opens directly in Excel/LibreOffice and keeps Unicode/RTL safely.
|
|
22
|
+
* For true XLSX, wrap this API with SheetJS/xlsx in the host application to avoid forcing a heavy dependency into mb-ui core.
|
|
23
|
+
*/
|
|
24
|
+
export function mbGridExportExcelHtml(rows, columns, fileName = 'grid-export.xls', localeOrOptions = 'en-US', dir = 'ltr') {
|
|
25
|
+
const visible = columns.filter((column) => !column.hidden && column.exportable !== false);
|
|
26
|
+
const escape = (value) => String(value ?? '')
|
|
27
|
+
.replace(/&/g, '&')
|
|
28
|
+
.replace(/</g, '<')
|
|
29
|
+
.replace(/>/g, '>')
|
|
30
|
+
.replace(/"/g, '"');
|
|
31
|
+
const header = `<tr>${visible.map((column) => `<th>${escape(column.title)}</th>`).join('')}</tr>`;
|
|
32
|
+
const body = rows.map((row, rowIndex) => `<tr>${visible.map((column) => `<td>${escape(mbGridFormatValue(row, column, rowIndex, localeOrOptions))}</td>`).join('')}</tr>`).join('');
|
|
33
|
+
const html = `<!doctype html><html><head><meta charset="utf-8"></head><body><table dir="${dir}">${header}${body}</table></body></html>`;
|
|
34
|
+
mbGridDownloadBlob(new Blob(['\ufeff', html], { type: 'application/vnd.ms-excel;charset=utf-8' }), fileName);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItZ3JpZC1leHBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2dyaWQvbWItZ3JpZC1leHBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RixNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBVSxFQUFFLFFBQWdCO0lBQzdELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNsQixNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUksSUFBUyxFQUFFLE9BQTBCLEVBQUUsUUFBUSxHQUFHLGtCQUFrQjtJQUN0RyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsQ0FBQztJQUMxRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ3RDLE1BQU0sSUFBSSxHQUE0QixFQUFFLENBQUM7UUFDekMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEosT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUMsQ0FBQztJQUNILGtCQUFrQixDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0NBQWdDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3RILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLElBQVMsRUFDVCxPQUEwQixFQUMxQixRQUFRLEdBQUcsaUJBQWlCLEVBQzVCLGtCQUFnRCxPQUFPLEVBQ3ZELE1BQXFCLEtBQUs7SUFFMUIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDMUYsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1NBQ25ELE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDO0lBQ2xHLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25MLE1BQU0sSUFBSSxHQUFHLDZFQUE2RSxHQUFHLEtBQUssTUFBTSxHQUFHLElBQUksd0JBQXdCLENBQUM7SUFDeEksa0JBQWtCLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0NBQXdDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQy9HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYkdyaWRDb2x1bW4gfSBmcm9tICcuL21iLWdyaWQudHlwZXMnO1xuaW1wb3J0IHsgTWJHcmlkRm9ybWF0T3B0aW9ucywgbWJHcmlkRm9ybWF0VmFsdWUsIG1iR3JpZEdldFZhbHVlIH0gZnJvbSAnLi9tYi1ncmlkLWRhdGEnO1xuXG5leHBvcnQgZnVuY3Rpb24gbWJHcmlkRG93bmxvYWRCbG9iKGJsb2I6IEJsb2IsIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgY29uc3QgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICBhbmNob3IuaHJlZiA9IHVybDtcbiAgYW5jaG9yLmRvd25sb2FkID0gZmlsZU5hbWU7XG4gIGFuY2hvci5jbGljaygpO1xuICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYkdyaWRFeHBvcnRKc29uPFQ+KHJvd3M6IFRbXSwgY29sdW1uczogTWJHcmlkQ29sdW1uPFQ+W10sIGZpbGVOYW1lID0gJ2dyaWQtZXhwb3J0Lmpzb24nKTogdm9pZCB7XG4gIGNvbnN0IHZpc2libGUgPSBjb2x1bW5zLmZpbHRlcigoY29sdW1uKSA9PiAhY29sdW1uLmhpZGRlbiAmJiBjb2x1bW4uZXhwb3J0YWJsZSAhPT0gZmFsc2UpO1xuICBjb25zdCBkYXRhID0gcm93cy5tYXAoKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICBjb25zdCBpdGVtOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgIGZvciAoY29uc3QgY29sdW1uIG9mIHZpc2libGUpIGl0ZW1bU3RyaW5nKGNvbHVtbi5maWVsZCldID0gY29sdW1uLnZhbHVlR2V0dGVyID8gY29sdW1uLnZhbHVlR2V0dGVyKHJvdywgcm93SW5kZXgpIDogbWJHcmlkR2V0VmFsdWUocm93LCBjb2x1bW4uZmllbGQpO1xuICAgIHJldHVybiBpdGVtO1xuICB9KTtcbiAgbWJHcmlkRG93bmxvYWRCbG9iKG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCcgfSksIGZpbGVOYW1lKTtcbn1cblxuLyoqXG4gKiBFeGNlbC1jb21wYXRpYmxlIEhUTUwgZXhwb3J0LiBJdCBvcGVucyBkaXJlY3RseSBpbiBFeGNlbC9MaWJyZU9mZmljZSBhbmQga2VlcHMgVW5pY29kZS9SVEwgc2FmZWx5LlxuICogRm9yIHRydWUgWExTWCwgd3JhcCB0aGlzIEFQSSB3aXRoIFNoZWV0SlMveGxzeCBpbiB0aGUgaG9zdCBhcHBsaWNhdGlvbiB0byBhdm9pZCBmb3JjaW5nIGEgaGVhdnkgZGVwZW5kZW5jeSBpbnRvIG1iLXVpIGNvcmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYkdyaWRFeHBvcnRFeGNlbEh0bWw8VD4oXG4gIHJvd3M6IFRbXSxcbiAgY29sdW1uczogTWJHcmlkQ29sdW1uPFQ+W10sXG4gIGZpbGVOYW1lID0gJ2dyaWQtZXhwb3J0LnhscycsXG4gIGxvY2FsZU9yT3B0aW9uczogc3RyaW5nIHwgTWJHcmlkRm9ybWF0T3B0aW9ucyA9ICdlbi1VUycsXG4gIGRpcjogJ3J0bCcgfCAnbHRyJyA9ICdsdHInLFxuKTogdm9pZCB7XG4gIGNvbnN0IHZpc2libGUgPSBjb2x1bW5zLmZpbHRlcigoY29sdW1uKSA9PiAhY29sdW1uLmhpZGRlbiAmJiBjb2x1bW4uZXhwb3J0YWJsZSAhPT0gZmFsc2UpO1xuICBjb25zdCBlc2NhcGUgPSAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSA/PyAnJylcbiAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcbiAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXG4gICAgLnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKTtcbiAgY29uc3QgaGVhZGVyID0gYDx0cj4ke3Zpc2libGUubWFwKChjb2x1bW4pID0+IGA8dGg+JHtlc2NhcGUoY29sdW1uLnRpdGxlKX08L3RoPmApLmpvaW4oJycpfTwvdHI+YDtcbiAgY29uc3QgYm9keSA9IHJvd3MubWFwKChyb3csIHJvd0luZGV4KSA9PiBgPHRyPiR7dmlzaWJsZS5tYXAoKGNvbHVtbikgPT4gYDx0ZD4ke2VzY2FwZShtYkdyaWRGb3JtYXRWYWx1ZShyb3csIGNvbHVtbiwgcm93SW5kZXgsIGxvY2FsZU9yT3B0aW9ucykpfTwvdGQ+YCkuam9pbignJyl9PC90cj5gKS5qb2luKCcnKTtcbiAgY29uc3QgaHRtbCA9IGA8IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PVwidXRmLThcIj48L2hlYWQ+PGJvZHk+PHRhYmxlIGRpcj1cIiR7ZGlyfVwiPiR7aGVhZGVyfSR7Ym9keX08L3RhYmxlPjwvYm9keT48L2h0bWw+YDtcbiAgbWJHcmlkRG93bmxvYWRCbG9iKG5ldyBCbG9iKFsnXFx1ZmVmZicsIGh0bWxdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWw7Y2hhcnNldD11dGYtOCcgfSksIGZpbGVOYW1lKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { inject, InjectionToken } from '@angular/core';
|
|
2
|
+
import { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';
|
|
3
|
+
import { MB_GRID_MESSAGES_FA } from '../i18n/mb-ui-messages-fa';
|
|
4
|
+
/** @deprecated Use `MB_UI_MESSAGES` or locale bundles from `i18n/`. */
|
|
5
|
+
export const MB_GRID_DEFAULT_MESSAGES_FA = MB_GRID_MESSAGES_FA;
|
|
6
|
+
export const MB_GRID_MESSAGES = new InjectionToken('MB_GRID_MESSAGES', {
|
|
7
|
+
providedIn: 'root',
|
|
8
|
+
factory: () => inject(MB_UI_MESSAGES).grid,
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItZ3JpZC1tZXNzYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZ3JpZC9tYi1ncmlkLW1lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUtoRSx1RUFBdUU7QUFDdkUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsbUJBQW1CLENBQUM7QUFFL0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWlCLGtCQUFrQixFQUFFO0lBQ3JGLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSTtDQUMzQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1CX1VJX01FU1NBR0VTIH0gZnJvbSAnLi4vaTE4bi9tYi11aS1tZXNzYWdlcyc7XHJcbmltcG9ydCB7IE1CX0dSSURfTUVTU0FHRVNfRkEgfSBmcm9tICcuLi9pMThuL21iLXVpLW1lc3NhZ2VzLWZhJztcclxuaW1wb3J0IHsgTWJHcmlkTWVzc2FnZXMgfSBmcm9tICcuLi9pMThuL21iLXVpLW1lc3NhZ2VzLnR5cGVzJztcclxuXHJcbmV4cG9ydCB0eXBlIHsgTWJHcmlkTWVzc2FnZXMgfTtcclxuXHJcbi8qKiBAZGVwcmVjYXRlZCBVc2UgYE1CX1VJX01FU1NBR0VTYCBvciBsb2NhbGUgYnVuZGxlcyBmcm9tIGBpMThuL2AuICovXHJcbmV4cG9ydCBjb25zdCBNQl9HUklEX0RFRkFVTFRfTUVTU0FHRVNfRkEgPSBNQl9HUklEX01FU1NBR0VTX0ZBO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1CX0dSSURfTUVTU0FHRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWJHcmlkTWVzc2FnZXM+KCdNQl9HUklEX01FU1NBR0VTJywge1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxuICBmYWN0b3J5OiAoKSA9PiBpbmplY3QoTUJfVUlfTUVTU0FHRVMpLmdyaWQsXHJcbn0pO1xyXG4iXX0=
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { mbGridDefaultState } from './mb-grid-data';
|
|
2
|
+
export function mbGridStateFromLegacy(state, defaultTake = 10) {
|
|
3
|
+
if (!state)
|
|
4
|
+
return mbGridDefaultState(defaultTake);
|
|
5
|
+
return {
|
|
6
|
+
skip: state.skip ?? 0,
|
|
7
|
+
take: state.take ?? defaultTake,
|
|
8
|
+
sort: (state.sort ?? []).filter((item) => item.dir).map((item) => ({
|
|
9
|
+
field: item.field,
|
|
10
|
+
dir: item.dir,
|
|
11
|
+
})),
|
|
12
|
+
filter: state.filter,
|
|
13
|
+
group: (state.group ?? []).map((item) => ({
|
|
14
|
+
field: item.field,
|
|
15
|
+
dir: item.dir,
|
|
16
|
+
})),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function mbGridStateToLegacy(state) {
|
|
20
|
+
return {
|
|
21
|
+
skip: state.skip,
|
|
22
|
+
take: state.take,
|
|
23
|
+
sort: state.sort,
|
|
24
|
+
filter: state.filter,
|
|
25
|
+
group: state.group,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function normalizeSortField(field) {
|
|
29
|
+
const parts = field.split('.');
|
|
30
|
+
if (parts.length > 1) {
|
|
31
|
+
return `${parts[parts.length - 2]}.${parts[parts.length - 1]}`;
|
|
32
|
+
}
|
|
33
|
+
return field;
|
|
34
|
+
}
|
|
35
|
+
function appendFilterQuery(query, filter, startIndex = 1) {
|
|
36
|
+
if (!filter?.filters?.length)
|
|
37
|
+
return startIndex;
|
|
38
|
+
let count = startIndex;
|
|
39
|
+
for (const item of filter.filters) {
|
|
40
|
+
if ('logic' in item && item.filters) {
|
|
41
|
+
let addLogic = false;
|
|
42
|
+
for (const innerItem of item.filters) {
|
|
43
|
+
const descriptor = innerItem;
|
|
44
|
+
let chunk = `filter[filters][${count}][field]=${encodeURIComponent(String(descriptor.field))}` +
|
|
45
|
+
`&filter[filters][${count}][value]=${encodeURIComponent(String(descriptor.value ?? ''))}` +
|
|
46
|
+
`&filter[filters][${count}][operator]=${encodeURIComponent(String(descriptor.operator))}`;
|
|
47
|
+
if (item.logic && item.filters.length > 1 && !addLogic) {
|
|
48
|
+
chunk += `&filter[filters][${count}][logic]=${encodeURIComponent(item.logic)}`;
|
|
49
|
+
addLogic = true;
|
|
50
|
+
}
|
|
51
|
+
query.push(chunk);
|
|
52
|
+
count += 1;
|
|
53
|
+
}
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const descriptor = item;
|
|
57
|
+
query.push(`filter[filters][${count}][field]=${encodeURIComponent(String(descriptor.field))}` +
|
|
58
|
+
`&filter[filters][${count}][value]=${encodeURIComponent(String(descriptor.value ?? ''))}` +
|
|
59
|
+
`&filter[filters][${count}][operator]=${encodeURIComponent(String(descriptor.operator))}`);
|
|
60
|
+
count += 1;
|
|
61
|
+
}
|
|
62
|
+
return count;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Builds a nested query string for APIs that expect indexed sort, filter, and group parameters.
|
|
66
|
+
*/
|
|
67
|
+
export function mbGridStateToNestedQuery(state) {
|
|
68
|
+
const parts = [];
|
|
69
|
+
if (state.skip) {
|
|
70
|
+
parts.push(`skip=${state.skip}`);
|
|
71
|
+
}
|
|
72
|
+
if (state.take) {
|
|
73
|
+
parts.push(`take=${state.take}`);
|
|
74
|
+
}
|
|
75
|
+
if (state.sort?.length) {
|
|
76
|
+
let count = 1;
|
|
77
|
+
for (const item of state.sort) {
|
|
78
|
+
const field = normalizeSortField(String(item.field));
|
|
79
|
+
parts.push(`sort[${count}][field]=${encodeURIComponent(field)}`);
|
|
80
|
+
parts.push(`sort[${count}][dir]=${encodeURIComponent(item.dir)}`);
|
|
81
|
+
count += 1;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
appendFilterQuery(parts, state.filter);
|
|
85
|
+
if (state.group?.length) {
|
|
86
|
+
let count = 1;
|
|
87
|
+
for (const item of state.group) {
|
|
88
|
+
parts.push(`group[${count}][field]=${encodeURIComponent(String(item.field))}`);
|
|
89
|
+
if (item.dir) {
|
|
90
|
+
parts.push(`group[${count}][dir]=${encodeURIComponent(item.dir)}`);
|
|
91
|
+
}
|
|
92
|
+
count += 1;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return parts.join('&');
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItZ3JpZC1zdGF0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9ncmlkL21iLWdyaWQtc3RhdGUtYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWFwRCxNQUFNLFVBQVUscUJBQXFCLENBQUksS0FBbUMsRUFBRSxXQUFXLEdBQUcsRUFBRTtJQUM1RixJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sa0JBQWtCLENBQUksV0FBVyxDQUFDLENBQUM7SUFDdEQsT0FBTztRQUNMLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUM7UUFDckIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksV0FBVztRQUMvQixJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFxQjtTQUNoQyxDQUFDLENBQUM7UUFDSCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07UUFDcEIsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNkLENBQUMsQ0FBK0I7S0FDbEMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUksS0FBcUI7SUFDMUQs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QyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0UsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7WUFDRCxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgTWJHcmlkQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcixcclxuICBNYkdyaWRGaWx0ZXJEZXNjcmlwdG9yLFxyXG4gIE1iR3JpZEdyb3VwRGVzY3JpcHRvcixcclxuICBNYkdyaWRTb3J0RGVzY3JpcHRvcixcclxuICBNYkdyaWRTdGF0ZSxcclxufSBmcm9tICcuL21iLWdyaWQudHlwZXMnO1xyXG5pbXBvcnQgeyBtYkdyaWREZWZhdWx0U3RhdGUgfSBmcm9tICcuL21iLWdyaWQtZGF0YSc7XHJcblxyXG4vKipcclxuICogU3RydWN0dXJhbCBjb21wYXRpYmlsaXR5IHdpdGggY29tbW9uIGdyaWQgc3RhdGUgb2JqZWN0cy5cbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIE1iTGVnYWN5R3JpZFN0YXRlPFQgPSB1bmtub3duPiB7XHJcbiAgc2tpcD86IG51bWJlcjtcclxuICB0YWtlPzogbnVtYmVyO1xyXG4gIHNvcnQ/OiBBcnJheTx7IGZpZWxkOiBrZXlvZiBUIHwgc3RyaW5nOyBkaXI/OiAnYXNjJyB8ICdkZXNjJyB9PjtcclxuICBmaWx0ZXI/OiBNYkdyaWRDb21wb3NpdGVGaWx0ZXJEZXNjcmlwdG9yPFQ+O1xyXG4gIGdyb3VwPzogQXJyYXk8eyBmaWVsZDoga2V5b2YgVCB8IHN0cmluZzsgZGlyPzogJ2FzYycgfCAnZGVzYyc7IGFnZ3JlZ2F0ZXM/OiB1bmtub3duW10gfT47XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYkdyaWRTdGF0ZUZyb21MZWdhY3k8VD4oc3RhdGU/OiBNYkxlZ2FjeUdyaWRTdGF0ZTxUPiB8IG51bGwsIGRlZmF1bHRUYWtlID0gMTApOiBNYkdyaWRTdGF0ZTxUPiB7XHJcbiAgaWYgKCFzdGF0ZSkgcmV0dXJuIG1iR3JpZERlZmF1bHRTdGF0ZTxUPihkZWZhdWx0VGFrZSk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHNraXA6IHN0YXRlLnNraXAgPz8gMCxcclxuICAgIHRha2U6IHN0YXRlLnRha2UgPz8gZGVmYXVsdFRha2UsXHJcbiAgICBzb3J0OiAoc3RhdGUuc29ydCA/PyBbXSkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmRpcikubWFwKChpdGVtKSA9PiAoe1xyXG4gICAgICBmaWVsZDogaXRlbS5maWVsZCxcclxuICAgICAgZGlyOiBpdGVtLmRpciBhcyAnYXNjJyB8ICdkZXNjJyxcclxuICAgIH0pKSxcclxuICAgIGZpbHRlcjogc3RhdGUuZmlsdGVyLFxyXG4gICAgZ3JvdXA6IChzdGF0ZS5ncm91cCA/PyBbXSkubWFwKChpdGVtKSA9PiAoe1xyXG4gICAgICBmaWVsZDogaXRlbS5maWVsZCxcclxuICAgICAgZGlyOiBpdGVtLmRpcixcclxuICAgIH0pKSBhcyBNYkdyaWRHcm91cERlc2NyaXB0b3I8VD5bXSxcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWJHcmlkU3RhdGVUb0xlZ2FjeTxUPihzdGF0ZTogTWJHcmlkU3RhdGU8VD4pOiBNYkxlZ2FjeUdyaWRTdGF0ZTxUPiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHNraXA6IHN0YXRlLnNraXAsXHJcbiAgICB0YWtlOiBzdGF0ZS50YWtlLFxyXG4gICAgc29ydDogc3RhdGUuc29ydCBhcyBNYkdyaWRTb3J0RGVzY3JpcHRvcjxUPltdLFxyXG4gICAgZmlsdGVyOiBzdGF0ZS5maWx0ZXIsXHJcbiAgICBncm91cDogc3RhdGUuZ3JvdXAsXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gbm9ybWFsaXplU29ydEZpZWxkKGZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIGNvbnN0IHBhcnRzID0gZmllbGQuc3BsaXQoJy4nKTtcclxuICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xyXG4gICAgcmV0dXJuIGAke3BhcnRzW3BhcnRzLmxlbmd0aCAtIDJdfS4ke3BhcnRzW3BhcnRzLmxlbmd0aCAtIDFdfWA7XHJcbiAgfVxyXG4gIHJldHVybiBmaWVsZDtcclxufVxyXG5cclxuZnVuY3Rpb24gYXBwZW5kRmlsdGVyUXVlcnkoXHJcbiAgcXVlcnk6IHN0cmluZ1tdLFxyXG4gIGZpbHRlcjogTWJHcmlkQ29tcG9zaXRlRmlsdGVyRGVzY3JpcHRvcjx1bmtub3duPiB8IHVuZGVmaW5lZCxcclxuICBzdGFydEluZGV4ID0gMSxcclxuKTogbnVtYmVyIHtcclxuICBpZiAoIWZpbHRlcj8uZmlsdGVycz8ubGVuZ3RoKSByZXR1cm4gc3RhcnRJbmRleDtcclxuXHJcbiAgbGV0IGNvdW50ID0gc3RhcnRJbmRleDtcclxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgZmlsdGVyLmZpbHRlcnMpIHtcclxuICAgIGlmICgnbG9naWMnIGluIGl0ZW0gJiYgaXRlbS5maWx0ZXJzKSB7XHJcbiAgICAgIGxldCBhZGRMb2dpYyA9IGZhbHNlO1xyXG4gICAgICBmb3IgKGNvbnN0IGlubmVySXRlbSBvZiBpdGVtLmZpbHRlcnMpIHtcclxuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gaW5uZXJJdGVtIGFzIE1iR3JpZEZpbHRlckRlc2NyaXB0b3I7XHJcbiAgICAgICAgbGV0IGNodW5rID1cclxuICAgICAgICAgIGBmaWx0ZXJbZmlsdGVyc11bJHtjb3VudH1dW2ZpZWxkXT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZGVzY3JpcHRvci5maWVsZCkpfWAgK1xyXG4gICAgICAgICAgYCZmaWx0ZXJbZmlsdGVyc11bJHtjb3VudH1dW3ZhbHVlXT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZGVzY3JpcHRvci52YWx1ZSA/PyAnJykpfWAgK1xyXG4gICAgICAgICAgYCZmaWx0ZXJbZmlsdGVyc11bJHtjb3VudH1dW29wZXJhdG9yXT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZGVzY3JpcHRvci5vcGVyYXRvcikpfWA7XHJcbiAgICAgICAgaWYgKGl0ZW0ubG9naWMgJiYgaXRlbS5maWx0ZXJzLmxlbmd0aCA+IDEgJiYgIWFkZExvZ2ljKSB7XHJcbiAgICAgICAgICBjaHVuayArPSBgJmZpbHRlcltmaWx0ZXJzXVske2NvdW50fV1bbG9naWNdPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGl0ZW0ubG9naWMpfWA7XHJcbiAgICAgICAgICBhZGRMb2dpYyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHF1ZXJ5LnB1c2goY2h1bmspO1xyXG4gICAgICAgIGNvdW50ICs9IDE7XHJcbiAgICAgIH1cclxuICAgICAgY29udGludWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGVzY3JpcHRvciA9IGl0ZW0gYXMgTWJHcmlkRmlsdGVyRGVzY3JpcHRvcjtcclxuICAgIHF1ZXJ5LnB1c2goXHJcbiAgICAgIGBmaWx0ZXJbZmlsdGVyc11bJHtjb3VudH1dW2ZpZWxkXT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoZGVzY3JpcHRvci5maWVsZCkpfWAgK1xyXG4gICAgICAgIGAmZmlsdGVyW2ZpbHRlcnNdWyR7Y291bnR9XVt2YWx1ZV09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGRlc2NyaXB0b3IudmFsdWUgPz8gJycpKX1gICtcclxuICAgICAgICBgJmZpbHRlcltmaWx0ZXJzXVske2NvdW50fV1bb3BlcmF0b3JdPSR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhkZXNjcmlwdG9yLm9wZXJhdG9yKSl9YCxcclxuICAgICk7XHJcbiAgICBjb3VudCArPSAxO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGNvdW50O1xyXG59XHJcblxyXG4vKipcclxuICogQnVpbGRzIGEgbmVzdGVkIHF1ZXJ5IHN0cmluZyBmb3IgQVBJcyB0aGF0IGV4cGVjdCBpbmRleGVkIHNvcnQsIGZpbHRlciwgYW5kIGdyb3VwIHBhcmFtZXRlcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYkdyaWRTdGF0ZVRvTmVzdGVkUXVlcnk8VD4oc3RhdGU6IE1iR3JpZFN0YXRlPFQ+KTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGlmIChzdGF0ZS5za2lwKSB7XHJcbiAgICBwYXJ0cy5wdXNoKGBza2lwPSR7c3RhdGUuc2tpcH1gKTtcclxuICB9XHJcbiAgaWYgKHN0YXRlLnRha2UpIHtcclxuICAgIHBhcnRzLnB1c2goYHRha2U9JHtzdGF0ZS50YWtlfWApO1xyXG4gIH1cclxuXHJcbiAgaWYgKHN0YXRlLnNvcnQ/Lmxlbmd0aCkge1xyXG4gICAgbGV0IGNvdW50ID0gMTtcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBzdGF0ZS5zb3J0KSB7XHJcbiAgICAgIGNvbnN0IGZpZWxkID0gbm9ybWFsaXplU29ydEZpZWxkKFN0cmluZyhpdGVtLmZpZWxkKSk7XHJcbiAgICAgIHBhcnRzLnB1c2goYHNvcnRbJHtjb3VudH1dW2ZpZWxkXT0ke2VuY29kZVVSSUNvbXBvbmVudChmaWVsZCl9YCk7XHJcbiAgICAgIHBhcnRzLnB1c2goYHNvcnRbJHtjb3VudH1dW2Rpcl09JHtlbmNvZGVVUklDb21wb25lbnQoaXRlbS5kaXIpfWApO1xyXG4gICAgICBjb3VudCArPSAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwZW5kRmlsdGVyUXVlcnkocGFydHMsIHN0YXRlLmZpbHRlciBhcyBNYkdyaWRDb21wb3NpdGVGaWx0ZXJEZXNjcmlwdG9yPHVua25vd24+IHwgdW5kZWZpbmVkKTtcclxuXHJcbiAgaWYgKHN0YXRlLmdyb3VwPy5sZW5ndGgpIHtcclxuICAgIGxldCBjb3VudCA9IDE7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3RhdGUuZ3JvdXApIHtcclxuICAgICAgcGFydHMucHVzaChgZ3JvdXBbJHtjb3VudH1dW2ZpZWxkXT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoaXRlbS5maWVsZCkpfWApO1xyXG4gICAgICBpZiAoaXRlbS5kaXIpIHtcclxuICAgICAgICBwYXJ0cy5wdXNoKGBncm91cFske2NvdW50fV1bZGlyXT0ke2VuY29kZVVSSUNvbXBvbmVudChpdGVtLmRpcil9YCk7XHJcbiAgICAgIH1cclxuICAgICAgY291bnQgKz0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBwYXJ0cy5qb2luKCcmJyk7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class MbGridStateService {
|
|
4
|
+
save(key, state, columns, selectedKeys = []) {
|
|
5
|
+
if (!key || typeof localStorage === 'undefined')
|
|
6
|
+
return;
|
|
7
|
+
const payload = {
|
|
8
|
+
state,
|
|
9
|
+
selectedKeys,
|
|
10
|
+
columns: columns.map((column) => ({
|
|
11
|
+
field: column.field,
|
|
12
|
+
width: column.width,
|
|
13
|
+
hidden: column.hidden,
|
|
14
|
+
locked: column.locked,
|
|
15
|
+
sticky: column.sticky,
|
|
16
|
+
})),
|
|
17
|
+
updatedAt: new Date().toISOString(),
|
|
18
|
+
};
|
|
19
|
+
localStorage.setItem(this.storageKey(key), JSON.stringify(payload));
|
|
20
|
+
}
|
|
21
|
+
load(key) {
|
|
22
|
+
if (!key || typeof localStorage === 'undefined')
|
|
23
|
+
return null;
|
|
24
|
+
const raw = localStorage.getItem(this.storageKey(key));
|
|
25
|
+
if (!raw)
|
|
26
|
+
return null;
|
|
27
|
+
try {
|
|
28
|
+
return JSON.parse(raw);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
clear(key) {
|
|
35
|
+
if (!key || typeof localStorage === 'undefined')
|
|
36
|
+
return;
|
|
37
|
+
localStorage.removeItem(this.storageKey(key));
|
|
38
|
+
}
|
|
39
|
+
storageKey(key) { return `mb-ui:grid:${key}`; }
|
|
40
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbGridStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbGridStateService, providedIn: 'root' });
|
|
42
|
+
}
|
|
43
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbGridStateService, decorators: [{
|
|
44
|
+
type: Injectable,
|
|
45
|
+
args: [{ providedIn: 'root' }]
|
|
46
|
+
}] });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItZ3JpZC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9ncmlkL21iLWdyaWQtc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLElBQUksQ0FBSSxHQUFXLEVBQUUsS0FBcUIsRUFBRSxPQUEwQixFQUFFLGVBQXVDLEVBQUU7UUFDL0csSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLFlBQVksS0FBSyxXQUFXO1lBQUUsT0FBTztRQUN4RCxNQUFNLE9BQU8sR0FBNEI7WUFDdkMsS0FBSztZQUNMLFlBQVk7WUFDWixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDaEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUNuQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQ25CLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtnQkFDckIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO2dCQUNyQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07YUFDdEIsQ0FBQyxDQUFDO1lBQ0gsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1NBQ3BDLENBQUM7UUFDRixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLENBQUksR0FBVztRQUNqQixJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sWUFBWSxLQUFLLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM3RCxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQztZQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQTRCLENBQUM7UUFBQyxDQUFDO1FBQzFELE1BQU0sQ0FBQztZQUFDLE9BQU8sSUFBSSxDQUFDO1FBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVc7UUFDZixJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sWUFBWSxLQUFLLFdBQVc7WUFBRSxPQUFPO1FBQ3hELFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTyxVQUFVLENBQUMsR0FBVyxJQUFZLE9BQU8sY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0dBL0I1RCxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQURMLE1BQU07OzRGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWJHcmlkQ29sdW1uLCBNYkdyaWRQZXJzaXN0ZWRTdGF0ZSwgTWJHcmlkU3RhdGUgfSBmcm9tICcuL21iLWdyaWQudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1iR3JpZFN0YXRlU2VydmljZSB7XG4gIHNhdmU8VD4oa2V5OiBzdHJpbmcsIHN0YXRlOiBNYkdyaWRTdGF0ZTxUPiwgY29sdW1uczogTWJHcmlkQ29sdW1uPFQ+W10sIHNlbGVjdGVkS2V5czogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiA9IFtdKTogdm9pZCB7XG4gICAgaWYgKCFrZXkgfHwgdHlwZW9mIGxvY2FsU3RvcmFnZSA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbiAgICBjb25zdCBwYXlsb2FkOiBNYkdyaWRQZXJzaXN0ZWRTdGF0ZTxUPiA9IHtcbiAgICAgIHN0YXRlLFxuICAgICAgc2VsZWN0ZWRLZXlzLFxuICAgICAgY29sdW1uczogY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gKHtcbiAgICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcbiAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcbiAgICAgICAgaGlkZGVuOiBjb2x1bW4uaGlkZGVuLFxuICAgICAgICBsb2NrZWQ6IGNvbHVtbi5sb2NrZWQsXG4gICAgICAgIHN0aWNreTogY29sdW1uLnN0aWNreSxcbiAgICAgIH0pKSxcbiAgICAgIHVwZGF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5zdG9yYWdlS2V5KGtleSksIEpTT04uc3RyaW5naWZ5KHBheWxvYWQpKTtcbiAgfVxuXG4gIGxvYWQ8VD4oa2V5OiBzdHJpbmcpOiBNYkdyaWRQZXJzaXN0ZWRTdGF0ZTxUPiB8IG51bGwge1xuICAgIGlmICgha2V5IHx8IHR5cGVvZiBsb2NhbFN0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0b3JhZ2VLZXkoa2V5KSk7XG4gICAgaWYgKCFyYXcpIHJldHVybiBudWxsO1xuICAgIHRyeSB7IHJldHVybiBKU09OLnBhcnNlKHJhdykgYXMgTWJHcmlkUGVyc2lzdGVkU3RhdGU8VD47IH1cbiAgICBjYXRjaCB7IHJldHVybiBudWxsOyB9XG4gIH1cblxuICBjbGVhcihrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICgha2V5IHx8IHR5cGVvZiBsb2NhbFN0b3JhZ2UgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5zdG9yYWdlS2V5KGtleSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9yYWdlS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHsgcmV0dXJuIGBtYi11aTpncmlkOiR7a2V5fWA7IH1cbn1cbiJdfQ==
|