@sd-angular/core 1.3.146 → 1.3.148
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/bundles/sd-angular-core-grid-material.umd.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-table.umd.js +4077 -0
- package/bundles/sd-angular-core-table.umd.js.map +1 -0
- package/bundles/sd-angular-core-table.umd.min.js +2 -0
- package/bundles/sd-angular-core-table.umd.min.js.map +1 -0
- package/bundles/sd-angular-core.umd.js +6 -4
- package/bundles/sd-angular-core.umd.js.map +1 -1
- package/bundles/sd-angular-core.umd.min.js +1 -1
- package/bundles/sd-angular-core.umd.min.js.map +1 -1
- package/esm2015/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.js +2 -2
- package/esm2015/lib/core.module.js +4 -1
- package/esm2015/public-api.js +2 -1
- package/esm2015/table/index.js +2 -0
- package/esm2015/table/sd-angular-core-table.js +40 -0
- package/esm2015/table/src/lib/components/column-inline-filter/column-inline-filter.component.js +96 -0
- package/esm2015/table/src/lib/components/desktop-cell/desktop-cell.component.js +25 -0
- package/esm2015/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.js +21 -0
- package/esm2015/table/src/lib/components/desktop-command/desktop-command.component.js +20 -0
- package/esm2015/table/src/lib/components/grid-filter/grid-filter.component.js +99 -0
- package/esm2015/table/src/lib/components/popup-filter/popup-filter.component.js +79 -0
- package/esm2015/table/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.js +96 -0
- package/esm2015/table/src/lib/components/quick-action/quick-action.component.js +24 -0
- package/esm2015/table/src/lib/directives/sd-material-cell-def.directive.js +18 -0
- package/esm2015/table/src/lib/directives/sd-material-empty-data-def.directive.js +15 -0
- package/esm2015/table/src/lib/directives/sd-material-filter-def.directive.js +22 -0
- package/esm2015/table/src/lib/directives/sd-material-footer-def.directive.js +18 -0
- package/esm2015/table/src/lib/directives/sd-material-sub-information-def.directive.js +15 -0
- package/esm2015/table/src/lib/models/grid-cell.model.js +2 -0
- package/esm2015/table/src/lib/models/index.js +4 -0
- package/esm2015/table/src/lib/models/table-column.model.js +63 -0
- package/esm2015/table/src/lib/models/table-command.model.js +2 -0
- package/esm2015/table/src/lib/models/table-configuration.model.js +9 -0
- package/esm2015/table/src/lib/models/table-item.model.js +15 -0
- package/esm2015/table/src/lib/models/table-option-config.model.js +2 -0
- package/esm2015/table/src/lib/models/table-option-expand.model.js +2 -0
- package/esm2015/table/src/lib/models/table-option-export.model.js +2 -0
- package/esm2015/table/src/lib/models/table-option-group.model.js +2 -0
- package/esm2015/table/src/lib/models/table-option-paginate.model.js +2 -0
- package/esm2015/table/src/lib/models/table-option-reload.model.js +2 -0
- package/esm2015/table/src/lib/models/table-option-selector.model.js +2 -0
- package/esm2015/table/src/lib/models/table-option-sort.model.js +2 -0
- package/esm2015/table/src/lib/models/table-option-style.model.js +2 -0
- package/esm2015/table/src/lib/models/table-option.model.js +2 -0
- package/esm2015/table/src/lib/pipes/cell-view.pipe.js +180 -0
- package/esm2015/table/src/lib/pipes/column-badge.pipe.js +43 -0
- package/esm2015/table/src/lib/pipes/column-children-filter.pipe.js +31 -0
- package/esm2015/table/src/lib/pipes/column-html-template.pipe.js +23 -0
- package/esm2015/table/src/lib/pipes/column-tooltip.pipe.js +17 -0
- package/esm2015/table/src/lib/pipes/column-transform.pipe.js +35 -0
- package/esm2015/table/src/lib/pipes/column-values.pipe.js +63 -0
- package/esm2015/table/src/lib/pipes/command-disable.pipe.js +18 -0
- package/esm2015/table/src/lib/pipes/command-filter.pipe.js +79 -0
- package/esm2015/table/src/lib/pipes/command-icon.pipe.js +18 -0
- package/esm2015/table/src/lib/pipes/command-title.pipe.js +18 -0
- package/esm2015/table/src/lib/pipes/filter-column.pipe.js +30 -0
- package/esm2015/table/src/lib/pipes/filter-external.pipe.js +19 -0
- package/esm2015/table/src/lib/pipes/grid-configuration-result.pipe.js +21 -0
- package/esm2015/table/src/lib/pipes/sd-group.pipe.js +45 -0
- package/esm2015/table/src/lib/pipes/selection-action-filter.pipe.js +72 -0
- package/esm2015/table/src/lib/pipes/selection-disable.pipe.js +55 -0
- package/esm2015/table/src/lib/pipes/selection-visible-select-all.pipe.js +34 -0
- package/esm2015/table/src/lib/pipes/selection-visible.pipe.js +82 -0
- package/esm2015/table/src/lib/services/table-configuration.service.js +292 -0
- package/esm2015/table/src/lib/services/table-filter/table-filter.model.js +3 -0
- package/esm2015/table/src/lib/services/table-filter/table-filter.service.js +229 -0
- package/esm2015/table/src/lib/table.component.js +832 -0
- package/esm2015/table/src/lib/table.module.js +175 -0
- package/esm2015/table/src/public-api.js +5 -0
- package/fesm2015/sd-angular-core-grid-material.js +1 -1
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-table.js +2927 -0
- package/fesm2015/sd-angular-core-table.js.map +1 -0
- package/fesm2015/sd-angular-core.js +3 -0
- package/fesm2015/sd-angular-core.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/{sd-angular-core-1.3.146.tgz → sd-angular-core-1.3.148.tgz} +0 -0
- package/sd-angular-core.metadata.json +1 -1
- package/table/index.d.ts +1 -0
- package/table/package.json +12 -0
- package/table/sd-angular-core-table.d.ts +39 -0
- package/table/sd-angular-core-table.metadata.json +1 -0
- package/table/src/lib/components/column-inline-filter/column-inline-filter.component.d.ts +29 -0
- package/table/src/lib/components/desktop-cell/desktop-cell.component.d.ts +17 -0
- package/table/src/lib/components/desktop-cell-view/desktop-cell-view.component.d.ts +11 -0
- package/table/src/lib/components/desktop-command/desktop-command.component.d.ts +7 -0
- package/table/src/lib/components/grid-filter/grid-filter.component.d.ts +35 -0
- package/table/src/lib/components/popup-filter/popup-filter.component.d.ts +27 -0
- package/table/src/lib/components/popup-grid-configuration/popup-grid-configuration.component.d.ts +39 -0
- package/table/src/lib/components/quick-action/quick-action.component.d.ts +9 -0
- package/table/src/lib/directives/sd-material-cell-def.directive.d.ts +6 -0
- package/table/src/lib/directives/sd-material-empty-data-def.directive.d.ts +5 -0
- package/table/src/lib/directives/sd-material-filter-def.directive.d.ts +8 -0
- package/table/src/lib/directives/sd-material-footer-def.directive.d.ts +6 -0
- package/table/src/lib/directives/sd-material-sub-information-def.directive.d.ts +5 -0
- package/table/src/lib/models/grid-cell.model.d.ts +16 -0
- package/table/src/lib/models/index.d.ts +3 -0
- package/table/src/lib/models/table-column.model.d.ts +125 -0
- package/table/src/lib/models/table-command.model.d.ts +19 -0
- package/table/src/lib/models/table-configuration.model.d.ts +20 -0
- package/table/src/lib/models/table-item.model.d.ts +25 -0
- package/table/src/lib/models/table-option-config.model.d.ts +62 -0
- package/table/src/lib/models/table-option-expand.model.d.ts +6 -0
- package/table/src/lib/models/table-option-export.model.d.ts +31 -0
- package/table/src/lib/models/table-option-group.model.d.ts +4 -0
- package/table/src/lib/models/table-option-paginate.model.d.ts +6 -0
- package/table/src/lib/models/table-option-reload.model.d.ts +5 -0
- package/table/src/lib/models/table-option-selector.model.d.ts +32 -0
- package/table/src/lib/models/table-option-sort.model.d.ts +3 -0
- package/table/src/lib/models/table-option-style.model.d.ts +6 -0
- package/table/src/lib/models/table-option.model.d.ts +44 -0
- package/table/src/lib/pipes/cell-view.pipe.d.ts +15 -0
- package/table/src/lib/pipes/column-badge.pipe.d.ts +11 -0
- package/table/src/lib/pipes/column-children-filter.pipe.d.ts +8 -0
- package/table/src/lib/pipes/column-html-template.pipe.d.ts +8 -0
- package/table/src/lib/pipes/column-tooltip.pipe.d.ts +6 -0
- package/table/src/lib/pipes/column-transform.pipe.d.ts +8 -0
- package/table/src/lib/pipes/column-values.pipe.d.ts +6 -0
- package/table/src/lib/pipes/command-disable.pipe.d.ts +5 -0
- package/table/src/lib/pipes/command-filter.pipe.d.ts +6 -0
- package/table/src/lib/pipes/command-icon.pipe.d.ts +5 -0
- package/table/src/lib/pipes/command-title.pipe.d.ts +5 -0
- package/table/src/lib/pipes/filter-column.pipe.d.ts +5 -0
- package/table/src/lib/pipes/filter-external.pipe.d.ts +5 -0
- package/table/src/lib/pipes/grid-configuration-result.pipe.d.ts +10 -0
- package/table/src/lib/pipes/sd-group.pipe.d.ts +6 -0
- package/table/src/lib/pipes/selection-action-filter.pipe.d.ts +7 -0
- package/table/src/lib/pipes/selection-disable.pipe.d.ts +6 -0
- package/table/src/lib/pipes/selection-visible-select-all.pipe.d.ts +6 -0
- package/table/src/lib/pipes/selection-visible.pipe.d.ts +6 -0
- package/table/src/lib/services/table-configuration.service.d.ts +13 -0
- package/table/src/lib/services/table-filter/table-filter.model.d.ts +117 -0
- package/table/src/lib/services/table-filter/table-filter.service.d.ts +15 -0
- package/table/src/lib/table.component.d.ts +87 -0
- package/table/src/lib/table.module.d.ts +11 -0
- package/table/src/public-api.d.ts +5 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
var _filterConfiguration, _filterValue, _cache, _defaultConfiguration, _defaultValue, _initConfiguration, _initValue;
|
|
2
|
+
import { __classPrivateFieldGet } from "tslib";
|
|
3
|
+
import { Injectable } from '@angular/core';
|
|
4
|
+
import hash from 'object-hash';
|
|
5
|
+
import { SdSettingService } from '@sd-angular/core/setting';
|
|
6
|
+
import { map, startWith } from 'rxjs/operators';
|
|
7
|
+
export class SdTableFilterService {
|
|
8
|
+
constructor(settingService) {
|
|
9
|
+
this.settingService = settingService;
|
|
10
|
+
_filterConfiguration.set(this, 'GRID-FILTER-CONFIGURATION');
|
|
11
|
+
_filterValue.set(this, 'GRID-FILTER-VALUE');
|
|
12
|
+
_cache.set(this, {});
|
|
13
|
+
this.register = (filter, args) => {
|
|
14
|
+
let cacheSession = false;
|
|
15
|
+
const { id, columns, externalFilters } = args;
|
|
16
|
+
const tempKey = hash({
|
|
17
|
+
id,
|
|
18
|
+
columns: (columns === null || columns === void 0 ? void 0 : columns.map(e => e.field).filter(field => !!field)) || [],
|
|
19
|
+
externalFilters: (externalFilters === null || externalFilters === void 0 ? void 0 : externalFilters.map(e => e.field).filter(field => !!field)) || [],
|
|
20
|
+
});
|
|
21
|
+
const key = (filter === null || filter === void 0 ? void 0 : filter.key) || tempKey;
|
|
22
|
+
if (!(filter === null || filter === void 0 ? void 0 : filter.key)) {
|
|
23
|
+
cacheSession = true; // Nếu không có key thì chỉ lưu theo session
|
|
24
|
+
}
|
|
25
|
+
if (!__classPrivateFieldGet(this, _cache)[key]) {
|
|
26
|
+
// Setting của filter configuration
|
|
27
|
+
const filterConfiguration = this.settingService.create({
|
|
28
|
+
prefix: __classPrivateFieldGet(this, _filterConfiguration),
|
|
29
|
+
key,
|
|
30
|
+
}, {
|
|
31
|
+
default: __classPrivateFieldGet(this, _defaultConfiguration).call(this, args),
|
|
32
|
+
type: cacheSession ? 'session' : undefined,
|
|
33
|
+
});
|
|
34
|
+
// Lấy giá trị configuration merge với giá trị defaultShowing của args nếu như args có thay đổi
|
|
35
|
+
filterConfiguration.set(__classPrivateFieldGet(this, _initConfiguration).call(this, args, filterConfiguration.get()));
|
|
36
|
+
// Setting của filter value
|
|
37
|
+
const filterValue = this.settingService.create({
|
|
38
|
+
prefix: __classPrivateFieldGet(this, _filterValue),
|
|
39
|
+
key: !(filter === null || filter === void 0 ? void 0 : filter.cacheFilter) ? tempKey : key,
|
|
40
|
+
}, {
|
|
41
|
+
default: __classPrivateFieldGet(this, _defaultValue).call(this, args),
|
|
42
|
+
type: cacheSession || !(filter === null || filter === void 0 ? void 0 : filter.cacheFilter) ? 'session' : undefined,
|
|
43
|
+
});
|
|
44
|
+
// Lấy giá trị value merge với giá trị default của args nếu như args có thay đổi
|
|
45
|
+
filterValue.set(__classPrivateFieldGet(this, _initValue).call(this, args, filterValue.get()));
|
|
46
|
+
__classPrivateFieldGet(this, _cache)[key] = {
|
|
47
|
+
configuration: {
|
|
48
|
+
get: () => {
|
|
49
|
+
return filterConfiguration.get();
|
|
50
|
+
},
|
|
51
|
+
set: (configuration) => {
|
|
52
|
+
const { inlineColumn, inlineExternal, inlineFilterDef } = configuration;
|
|
53
|
+
filterConfiguration.set({
|
|
54
|
+
inlineColumn,
|
|
55
|
+
inlineExternal,
|
|
56
|
+
inlineFilterDef,
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
inlineColumn,
|
|
60
|
+
inlineExternal,
|
|
61
|
+
inlineFilterDef,
|
|
62
|
+
};
|
|
63
|
+
},
|
|
64
|
+
remove: () => {
|
|
65
|
+
filterConfiguration.set(__classPrivateFieldGet(this, _defaultConfiguration).call(this, args));
|
|
66
|
+
},
|
|
67
|
+
observer: filterConfiguration.observer.pipe(startWith(filterConfiguration.get()),
|
|
68
|
+
// Sử dụng mặc định nếu bị reset
|
|
69
|
+
map(configuration => configuration || __classPrivateFieldGet(this, _defaultConfiguration).call(this, args))),
|
|
70
|
+
},
|
|
71
|
+
value: {
|
|
72
|
+
get: () => {
|
|
73
|
+
return filterValue.get();
|
|
74
|
+
},
|
|
75
|
+
set: (value) => {
|
|
76
|
+
const keys = Object.keys(value || {});
|
|
77
|
+
const current = filterValue.get();
|
|
78
|
+
const { columnOperator, columnFilter, externalFilter, filterDef, notReload } = current;
|
|
79
|
+
const updatedFilter = {
|
|
80
|
+
// Filter column
|
|
81
|
+
columnOperator: keys.includes('columnOperator') ? (value === null || value === void 0 ? void 0 : value.columnOperator) || {} : columnOperator,
|
|
82
|
+
columnFilter: keys.includes('columnFilter') ? (value === null || value === void 0 ? void 0 : value.columnFilter) || {} : columnFilter,
|
|
83
|
+
// Filter external
|
|
84
|
+
externalFilter: keys.includes('externalFilter') ? (value === null || value === void 0 ? void 0 : value.externalFilter) || {} : externalFilter,
|
|
85
|
+
// Filter def
|
|
86
|
+
filterDef: keys.includes('filterDef') ? (value === null || value === void 0 ? void 0 : value.filterDef) || {} : filterDef,
|
|
87
|
+
// Force
|
|
88
|
+
notReload: !!notReload,
|
|
89
|
+
};
|
|
90
|
+
filterValue.set(updatedFilter);
|
|
91
|
+
return updatedFilter;
|
|
92
|
+
},
|
|
93
|
+
remove: () => {
|
|
94
|
+
filterValue.set(__classPrivateFieldGet(this, _defaultValue).call(this, args));
|
|
95
|
+
},
|
|
96
|
+
observer: filterValue.observer.pipe(startWith(filterValue.get()),
|
|
97
|
+
// Sử dụng mặc định nếu bị reset
|
|
98
|
+
map(value => value || __classPrivateFieldGet(this, _defaultValue).call(this, args))),
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return __classPrivateFieldGet(this, _cache)[key];
|
|
103
|
+
};
|
|
104
|
+
_defaultConfiguration.set(this, (args) => {
|
|
105
|
+
var _a;
|
|
106
|
+
const { columns, externalFilters, filterDefs } = args;
|
|
107
|
+
const inlineColumn = {};
|
|
108
|
+
const inlineExternal = {};
|
|
109
|
+
const inlineFilterDef = {};
|
|
110
|
+
// Filter column
|
|
111
|
+
for (const item of columns || []) {
|
|
112
|
+
inlineColumn[item.field] = (_a = item === null || item === void 0 ? void 0 : item.filter) === null || _a === void 0 ? void 0 : _a.defaultShowing;
|
|
113
|
+
}
|
|
114
|
+
// Filter external
|
|
115
|
+
for (const item of externalFilters || []) {
|
|
116
|
+
inlineExternal[item.field] = item === null || item === void 0 ? void 0 : item.defaultShowing;
|
|
117
|
+
}
|
|
118
|
+
// Filter def
|
|
119
|
+
for (const item of filterDefs || []) {
|
|
120
|
+
inlineFilterDef[item.sdMaterialFilterDef] = item === null || item === void 0 ? void 0 : item.defaultShowing;
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
// Filter column
|
|
124
|
+
inlineColumn,
|
|
125
|
+
// Filter external
|
|
126
|
+
inlineExternal,
|
|
127
|
+
// Filter def
|
|
128
|
+
inlineFilterDef,
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
_defaultValue.set(this, (args) => {
|
|
132
|
+
var _a;
|
|
133
|
+
const columnFilter = {};
|
|
134
|
+
const externalFilter = {};
|
|
135
|
+
const filterDef = {};
|
|
136
|
+
const { columns, externalFilters, filterDefs } = args;
|
|
137
|
+
// Filter column
|
|
138
|
+
for (const item of columns || []) {
|
|
139
|
+
columnFilter[item.field] = (_a = item === null || item === void 0 ? void 0 : item.filter) === null || _a === void 0 ? void 0 : _a.default;
|
|
140
|
+
}
|
|
141
|
+
// Filter external
|
|
142
|
+
for (const item of externalFilters || []) {
|
|
143
|
+
externalFilter[item.field] = item === null || item === void 0 ? void 0 : item.default;
|
|
144
|
+
}
|
|
145
|
+
// Filter def
|
|
146
|
+
for (const item of filterDefs || []) {
|
|
147
|
+
filterDef[item.sdMaterialFilterDef] = undefined;
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
// Filter column
|
|
151
|
+
columnFilter,
|
|
152
|
+
// Filter external
|
|
153
|
+
externalFilter,
|
|
154
|
+
// Filter def
|
|
155
|
+
filterDef,
|
|
156
|
+
};
|
|
157
|
+
});
|
|
158
|
+
_initConfiguration.set(this, (args, configuration) => {
|
|
159
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
160
|
+
const { columns, externalFilters, filterDefs } = args;
|
|
161
|
+
const inlineColumn = {};
|
|
162
|
+
const inlineExternal = {};
|
|
163
|
+
const inlineFilterDef = {};
|
|
164
|
+
// Filter column
|
|
165
|
+
for (const item of columns || []) {
|
|
166
|
+
inlineColumn[item.field] = (_b = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.inlineColumn) === null || _a === void 0 ? void 0 : _a[item.field]) !== null && _b !== void 0 ? _b : (_c = item === null || item === void 0 ? void 0 : item.filter) === null || _c === void 0 ? void 0 : _c.defaultShowing;
|
|
167
|
+
}
|
|
168
|
+
// Filter external
|
|
169
|
+
for (const item of externalFilters || []) {
|
|
170
|
+
inlineExternal[item.field] = (_e = (_d = configuration === null || configuration === void 0 ? void 0 : configuration.inlineExternal) === null || _d === void 0 ? void 0 : _d[item.field]) !== null && _e !== void 0 ? _e : item === null || item === void 0 ? void 0 : item.defaultShowing;
|
|
171
|
+
}
|
|
172
|
+
// Filter def
|
|
173
|
+
for (const item of filterDefs || []) {
|
|
174
|
+
inlineFilterDef[item.sdMaterialFilterDef] = (_g = (_f = configuration === null || configuration === void 0 ? void 0 : configuration.inlineFilterDef) === null || _f === void 0 ? void 0 : _f[item.sdMaterialFilterDef]) !== null && _g !== void 0 ? _g : item === null || item === void 0 ? void 0 : item.defaultShowing;
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
// Filter column
|
|
178
|
+
inlineColumn,
|
|
179
|
+
// Filter external
|
|
180
|
+
inlineExternal,
|
|
181
|
+
// Filter def
|
|
182
|
+
inlineFilterDef,
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
_initValue.set(this, (args, value) => {
|
|
186
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
187
|
+
const columnFilter = {};
|
|
188
|
+
const externalFilter = {};
|
|
189
|
+
const filterDef = {};
|
|
190
|
+
const { columns, externalFilters, filterDefs } = args;
|
|
191
|
+
// Filter column
|
|
192
|
+
for (const item of columns || []) {
|
|
193
|
+
columnFilter[item.field] = (_b = (_a = value === null || value === void 0 ? void 0 : value.columnFilter) === null || _a === void 0 ? void 0 : _a[item.field]) !== null && _b !== void 0 ? _b : (_c = item === null || item === void 0 ? void 0 : item.filter) === null || _c === void 0 ? void 0 : _c.default;
|
|
194
|
+
}
|
|
195
|
+
// Filter external
|
|
196
|
+
for (const item of externalFilters || []) {
|
|
197
|
+
if (item.type === 'daterange') {
|
|
198
|
+
externalFilter[item.field] = {
|
|
199
|
+
from: (_f = (_e = (_d = value === null || value === void 0 ? void 0 : value.externalFilter) === null || _d === void 0 ? void 0 : _d[item.field]) === null || _e === void 0 ? void 0 : _e.from) !== null && _f !== void 0 ? _f : (_g = item.default) === null || _g === void 0 ? void 0 : _g.from,
|
|
200
|
+
to: (_k = (_j = (_h = value === null || value === void 0 ? void 0 : value.externalFilter) === null || _h === void 0 ? void 0 : _h[item.field]) === null || _j === void 0 ? void 0 : _j.to) !== null && _k !== void 0 ? _k : (_l = item.default) === null || _l === void 0 ? void 0 : _l.to,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
externalFilter[item.field] = (_o = (_m = value === null || value === void 0 ? void 0 : value.externalFilter) === null || _m === void 0 ? void 0 : _m[item.field]) !== null && _o !== void 0 ? _o : item === null || item === void 0 ? void 0 : item.default;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Filter def
|
|
208
|
+
for (const item of filterDefs || []) {
|
|
209
|
+
filterDef[item.sdMaterialFilterDef] = (_q = (_p = value === null || value === void 0 ? void 0 : value.filterDef) === null || _p === void 0 ? void 0 : _p[item.sdMaterialFilterDef]) !== null && _q !== void 0 ? _q : undefined;
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
// Filter column
|
|
213
|
+
columnFilter,
|
|
214
|
+
// Filter external
|
|
215
|
+
externalFilter,
|
|
216
|
+
// Filter def
|
|
217
|
+
filterDef,
|
|
218
|
+
};
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
_filterConfiguration = new WeakMap(), _filterValue = new WeakMap(), _cache = new WeakMap(), _defaultConfiguration = new WeakMap(), _defaultValue = new WeakMap(), _initConfiguration = new WeakMap(), _initValue = new WeakMap();
|
|
223
|
+
SdTableFilterService.decorators = [
|
|
224
|
+
{ type: Injectable }
|
|
225
|
+
];
|
|
226
|
+
SdTableFilterService.ctorParameters = () => [
|
|
227
|
+
{ type: SdSettingService }
|
|
228
|
+
];
|
|
229
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3RhYmxlLyIsInNvdXJjZXMiOlsic3JjL2xpYi9zZXJ2aWNlcy90YWJsZS1maWx0ZXIvdGFibGUtZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUMvQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVU1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2hELE1BQU0sT0FBTyxvQkFBb0I7SUFJL0IsWUFBb0IsY0FBZ0M7UUFBaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBSHBELCtCQUF1QiwyQkFBMkIsRUFBQztRQUNuRCx1QkFBZSxtQkFBbUIsRUFBQztRQUNuQyxpQkFBdUQsRUFBRSxFQUFDO1FBRTFELGFBQVEsR0FBRyxDQUNULE1BQTJCLEVBQzNCLElBS0MsRUFDRCxFQUFFO1lBQ0YsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBRXpCLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQztZQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLEVBQUU7Z0JBQ0YsT0FBTyxFQUFFLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBSyxFQUFFO2dCQUNsRSxlQUFlLEVBQUUsQ0FBQSxl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LENBQUMsS0FBSywyQ0FBRyxJQUFJLHlDQUFJLElBQUksQ0FBQyxPQUFPLDBDQUFFLElBQUk7d0JBQ3JFLEVBQUUsb0JBQUUsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGNBQWMsMENBQUcsSUFBSSxDQUFDLEtBQUssMkNBQUcsRUFBRSx5Q0FBSSxJQUFJLENBQUMsT0FBTywwQ0FBRSxFQUFFO3FCQUNoRSxDQUFDO2lCQUNIO3FCQUFNO29CQUNMLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGNBQWMsMENBQUcsSUFBSSxDQUFDLEtBQUssb0NBQUssSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLE9BQU8sQ0FBQztpQkFDbkY7YUFDRjtZQUNELGFBQWE7WUFDYixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsSUFBSSxFQUFFLEVBQUU7Z0JBQ25DLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsU0FBUywwQ0FBRyxJQUFJLENBQUMsbUJBQW1CLG9DQUFLLFNBQVMsQ0FBQzthQUNqRztZQUNELE9BQU87Z0JBQ0wsZ0JBQWdCO2dCQUNoQixZQUFZO2dCQUNaLGtCQUFrQjtnQkFDbEIsY0FBYztnQkFDZCxhQUFhO2dCQUNiLFNBQVM7YUFDVixDQUFDO1FBQ0osQ0FBQyxFQUFDO0lBdlBxRCxDQUFDOzs7O1lBTHpELFVBQVU7OztZQVpGLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5pbXBvcnQgeyBTZFNldHRpbmdTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9zZXR0aW5nJztcclxuaW1wb3J0IHtcclxuICBTZFRhYmxlRXh0ZXJuYWxGaWx0ZXIsXHJcbiAgU2RUYWJsZUZpbHRlckNvbmZpZ3VyYXRpb24sXHJcbiAgU2RUYWJsZU9wdGlvbkZpbHRlcixcclxuICBTZEdyaWRNYXRlcmlhbEZpbHRlclJlZ2lzdGVyLFxyXG4gIFNkVGFibGVGaWx0ZXJWYWx1ZSxcclxufSBmcm9tICcuL3RhYmxlLWZpbHRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGUtY29sdW1uLm1vZGVsJztcclxuaW1wb3J0IHsgU2RNYXRlcmlhbEZpbHRlckRlZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2QtbWF0ZXJpYWwtZmlsdGVyLWRlZi5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNkVGFibGVGaWx0ZXJTZXJ2aWNlIHtcclxuICAjZmlsdGVyQ29uZmlndXJhdGlvbiA9ICdHUklELUZJTFRFUi1DT05GSUdVUkFUSU9OJztcclxuICAjZmlsdGVyVmFsdWUgPSAnR1JJRC1GSUxURVItVkFMVUUnO1xyXG4gICNjYWNoZTogUmVjb3JkPHN0cmluZywgU2RHcmlkTWF0ZXJpYWxGaWx0ZXJSZWdpc3Rlcj4gPSB7fTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNldHRpbmdTZXJ2aWNlOiBTZFNldHRpbmdTZXJ2aWNlKSB7fVxyXG4gIHJlZ2lzdGVyID0gKFxyXG4gICAgZmlsdGVyOiBTZFRhYmxlT3B0aW9uRmlsdGVyLFxyXG4gICAgYXJnczoge1xyXG4gICAgICBpZDogc3RyaW5nO1xyXG4gICAgICBjb2x1bW5zOiBTZFRhYmxlQ29sdW1uW107XHJcbiAgICAgIGV4dGVybmFsRmlsdGVyczogU2RUYWJsZUV4dGVybmFsRmlsdGVyW107XHJcbiAgICAgIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXTtcclxuICAgIH1cclxuICApID0+IHtcclxuICAgIGxldCBjYWNoZVNlc3Npb24gPSBmYWxzZTtcclxuICAgIFxyXG4gICAgY29uc3QgeyBpZCwgY29sdW1ucywgZXh0ZXJuYWxGaWx0ZXJzIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgdGVtcEtleSA9IGhhc2goe1xyXG4gICAgICBpZCxcclxuICAgICAgY29sdW1uczogY29sdW1ucz8ubWFwKGUgPT4gZS5maWVsZCkuZmlsdGVyKGZpZWxkID0+ICEhZmllbGQpIHx8IFtdLFxyXG4gICAgICBleHRlcm5hbEZpbHRlcnM6IGV4dGVybmFsRmlsdGVycz8ubWFwKGUgPT4gZS5maWVsZCkuZmlsdGVyKGZpZWxkID0+ICEhZmllbGQpIHx8IFtdLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBrZXkgPSBmaWx0ZXI/LmtleSB8fCB0ZW1wS2V5O1xyXG4gICAgaWYgKCFmaWx0ZXI/LmtleSkge1xyXG4gICAgICBjYWNoZVNlc3Npb24gPSB0cnVlOyAvLyBO4bq/dSBraMO0bmcgY8OzIGtleSB0aMOsIGNo4buJIGzGsHUgdGhlbyBzZXNzaW9uXHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuI2NhY2hlW2tleV0pIHtcclxuICAgICAgLy8gU2V0dGluZyBj4bunYSBmaWx0ZXIgY29uZmlndXJhdGlvblxyXG4gICAgICBjb25zdCBmaWx0ZXJDb25maWd1cmF0aW9uID0gdGhpcy5zZXR0aW5nU2VydmljZS5jcmVhdGU8U2RUYWJsZUZpbHRlckNvbmZpZ3VyYXRpb24+KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByZWZpeDogdGhpcy4jZmlsdGVyQ29uZmlndXJhdGlvbixcclxuICAgICAgICAgIGtleSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRlZmF1bHQ6IHRoaXMuI2RlZmF1bHRDb25maWd1cmF0aW9uKGFyZ3MpLFxyXG4gICAgICAgICAgdHlwZTogY2FjaGVTZXNzaW9uID8gJ3Nlc3Npb24nIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgICAgLy8gTOG6pXkgZ2nDoSB0cuG7iyBjb25maWd1cmF0aW9uIG1lcmdlIHbhu5tpIGdpw6EgdHLhu4sgZGVmYXVsdFNob3dpbmcgY+G7p2EgYXJncyBu4bq/dSBuaMawIGFyZ3MgY8OzIHRoYXkgxJHhu5VpXHJcbiAgICAgIGZpbHRlckNvbmZpZ3VyYXRpb24uc2V0KHRoaXMuI2luaXRDb25maWd1cmF0aW9uKGFyZ3MsIGZpbHRlckNvbmZpZ3VyYXRpb24uZ2V0KCkpKTtcclxuICAgICAgLy8gU2V0dGluZyBj4bunYSBmaWx0ZXIgdmFsdWVcclxuICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLnNldHRpbmdTZXJ2aWNlLmNyZWF0ZTxTZFRhYmxlRmlsdGVyVmFsdWU+KFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHByZWZpeDogdGhpcy4jZmlsdGVyVmFsdWUsXHJcbiAgICAgICAgICBrZXk6ICFmaWx0ZXI/LmNhY2hlRmlsdGVyID8gdGVtcEtleSA6IGtleSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGRlZmF1bHQ6IHRoaXMuI2RlZmF1bHRWYWx1ZShhcmdzKSxcclxuICAgICAgICAgIHR5cGU6IGNhY2hlU2Vzc2lvbiB8fCAhZmlsdGVyPy5jYWNoZUZpbHRlciA/ICdzZXNzaW9uJyA6IHVuZGVmaW5lZCxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICAgIC8vIEzhuqV5IGdpw6EgdHLhu4sgdmFsdWUgbWVyZ2UgduG7m2kgZ2nDoSB0cuG7iyBkZWZhdWx0IGPhu6dhIGFyZ3MgbuG6v3UgbmjGsCBhcmdzIGPDsyB0aGF5IMSR4buVaVxyXG4gICAgICBmaWx0ZXJWYWx1ZS5zZXQodGhpcy4jaW5pdFZhbHVlKGFyZ3MsIGZpbHRlclZhbHVlLmdldCgpKSk7XHJcbiAgICAgIHRoaXMuI2NhY2hlW2tleV0gPSB7XHJcbiAgICAgICAgY29uZmlndXJhdGlvbjoge1xyXG4gICAgICAgICAgZ2V0OiAoKTogU2RUYWJsZUZpbHRlckNvbmZpZ3VyYXRpb24gPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyQ29uZmlndXJhdGlvbi5nZXQoKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzZXQ6IChjb25maWd1cmF0aW9uOiBQYXJ0aWFsPFNkVGFibGVGaWx0ZXJDb25maWd1cmF0aW9uPik6IFNkVGFibGVGaWx0ZXJDb25maWd1cmF0aW9uID0+IHtcclxuICAgICAgICAgICAgY29uc3QgeyBpbmxpbmVDb2x1bW4sIGlubGluZUV4dGVybmFsLCBpbmxpbmVGaWx0ZXJEZWYgfSA9IGNvbmZpZ3VyYXRpb247XHJcbiAgICAgICAgICAgIGZpbHRlckNvbmZpZ3VyYXRpb24uc2V0KHtcclxuICAgICAgICAgICAgICBpbmxpbmVDb2x1bW4sXHJcbiAgICAgICAgICAgICAgaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgICAgICAgICAgaW5saW5lRmlsdGVyRGVmLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBpbmxpbmVDb2x1bW4sXHJcbiAgICAgICAgICAgICAgaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgICAgICAgICAgaW5saW5lRmlsdGVyRGVmLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHJlbW92ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICBmaWx0ZXJDb25maWd1cmF0aW9uLnNldCh0aGlzLiNkZWZhdWx0Q29uZmlndXJhdGlvbihhcmdzKSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb2JzZXJ2ZXI6IGZpbHRlckNvbmZpZ3VyYXRpb24ub2JzZXJ2ZXIucGlwZShcclxuICAgICAgICAgICAgc3RhcnRXaXRoKGZpbHRlckNvbmZpZ3VyYXRpb24uZ2V0KCkpLFxyXG4gICAgICAgICAgICAvLyBT4butIGThu6VuZyBt4bq3YyDEkeG7i25oIG7hur91IGLhu4sgcmVzZXRcclxuICAgICAgICAgICAgbWFwKGNvbmZpZ3VyYXRpb24gPT4gY29uZmlndXJhdGlvbiB8fCB0aGlzLiNkZWZhdWx0Q29uZmlndXJhdGlvbihhcmdzKSlcclxuICAgICAgICAgICksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgZ2V0OiAoKTogU2RUYWJsZUZpbHRlclZhbHVlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlclZhbHVlLmdldCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHNldDogKHZhbHVlOiBQYXJ0aWFsPFNkVGFibGVGaWx0ZXJWYWx1ZT4pOiBTZFRhYmxlRmlsdGVyVmFsdWUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUgfHwge30pO1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gZmlsdGVyVmFsdWUuZ2V0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29sdW1uT3BlcmF0b3IsIGNvbHVtbkZpbHRlciwgZXh0ZXJuYWxGaWx0ZXIsIGZpbHRlckRlZiwgbm90UmVsb2FkIH0gPSBjdXJyZW50O1xyXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRmlsdGVyID0ge1xyXG4gICAgICAgICAgICAgIC8vIEZpbHRlciBjb2x1bW5cclxuICAgICAgICAgICAgICBjb2x1bW5PcGVyYXRvcjoga2V5cy5pbmNsdWRlcygnY29sdW1uT3BlcmF0b3InKSA/IHZhbHVlPy5jb2x1bW5PcGVyYXRvciB8fCB7fSA6IGNvbHVtbk9wZXJhdG9yLFxyXG4gICAgICAgICAgICAgIGNvbHVtbkZpbHRlcjoga2V5cy5pbmNsdWRlcygnY29sdW1uRmlsdGVyJykgPyB2YWx1ZT8uY29sdW1uRmlsdGVyIHx8IHt9IDogY29sdW1uRmlsdGVyLFxyXG4gICAgICAgICAgICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgICAgICAgICAgIGV4dGVybmFsRmlsdGVyOiBrZXlzLmluY2x1ZGVzKCdleHRlcm5hbEZpbHRlcicpID8gdmFsdWU/LmV4dGVybmFsRmlsdGVyIHx8IHt9IDogZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgICAgICAgICAgIGZpbHRlckRlZjoga2V5cy5pbmNsdWRlcygnZmlsdGVyRGVmJykgPyB2YWx1ZT8uZmlsdGVyRGVmIHx8IHt9IDogZmlsdGVyRGVmLFxyXG4gICAgICAgICAgICAgIC8vIEZvcmNlXHJcbiAgICAgICAgICAgICAgbm90UmVsb2FkOiAhIW5vdFJlbG9hZCxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgZmlsdGVyVmFsdWUuc2V0KHVwZGF0ZWRGaWx0ZXIpO1xyXG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZEZpbHRlcjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICByZW1vdmU6ICgpID0+IHtcclxuICAgICAgICAgICAgZmlsdGVyVmFsdWUuc2V0KHRoaXMuI2RlZmF1bHRWYWx1ZShhcmdzKSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb2JzZXJ2ZXI6IGZpbHRlclZhbHVlLm9ic2VydmVyLnBpcGUoXHJcbiAgICAgICAgICAgIHN0YXJ0V2l0aChmaWx0ZXJWYWx1ZS5nZXQoKSksXHJcbiAgICAgICAgICAgIC8vIFPhu60gZOG7pW5nIG3hurdjIMSR4buLbmggbuG6v3UgYuG7iyByZXNldFxyXG4gICAgICAgICAgICBtYXAodmFsdWUgPT4gdmFsdWUgfHwgdGhpcy4jZGVmYXVsdFZhbHVlKGFyZ3MpKVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuI2NhY2hlW2tleV07XHJcbiAgfTtcclxuXHJcbiAgI2RlZmF1bHRDb25maWd1cmF0aW9uID0gKGFyZ3M6IHtcclxuICAgIGNvbHVtbnM6IFNkVGFibGVDb2x1bW5bXTtcclxuICAgIGV4dGVybmFsRmlsdGVyczogU2RUYWJsZUV4dGVybmFsRmlsdGVyW107XHJcbiAgICBmaWx0ZXJEZWZzOiBTZE1hdGVyaWFsRmlsdGVyRGVmRGlyZWN0aXZlW107XHJcbiAgfSk6IFNkVGFibGVGaWx0ZXJDb25maWd1cmF0aW9uID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1ucywgZXh0ZXJuYWxGaWx0ZXJzLCBmaWx0ZXJEZWZzIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgaW5saW5lQ29sdW1uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG4gICAgY29uc3QgaW5saW5lRXh0ZXJuYWw6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgICBjb25zdCBpbmxpbmVGaWx0ZXJEZWY6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgICAvLyBGaWx0ZXIgY29sdW1uXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sdW1ucyB8fCBbXSkge1xyXG4gICAgICBpbmxpbmVDb2x1bW5baXRlbS5maWVsZF0gPSBpdGVtPy5maWx0ZXI/LmRlZmF1bHRTaG93aW5nO1xyXG4gICAgfVxyXG4gICAgLy8gRmlsdGVyIGV4dGVybmFsXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdKSB7XHJcbiAgICAgIGlubGluZUV4dGVybmFsW2l0ZW0uZmllbGRdID0gaXRlbT8uZGVmYXVsdFNob3dpbmc7XHJcbiAgICB9XHJcbiAgICAvLyBGaWx0ZXIgZGVmXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZmlsdGVyRGVmcyB8fCBbXSkge1xyXG4gICAgICBpbmxpbmVGaWx0ZXJEZWZbaXRlbS5zZE1hdGVyaWFsRmlsdGVyRGVmXSA9IGl0ZW0/LmRlZmF1bHRTaG93aW5nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLy8gRmlsdGVyIGNvbHVtblxyXG4gICAgICBpbmxpbmVDb2x1bW4sXHJcbiAgICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgICBpbmxpbmVFeHRlcm5hbCxcclxuICAgICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgICBpbmxpbmVGaWx0ZXJEZWYsXHJcbiAgICB9O1xyXG4gIH07XHJcblxyXG4gICNkZWZhdWx0VmFsdWUgPSAoYXJnczoge1xyXG4gICAgY29sdW1uczogU2RUYWJsZUNvbHVtbltdO1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzOiBTZFRhYmxlRXh0ZXJuYWxGaWx0ZXJbXTtcclxuICAgIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXTtcclxuICB9KTogU2RUYWJsZUZpbHRlclZhbHVlID0+IHtcclxuICAgIGNvbnN0IGNvbHVtbkZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgY29uc3QgZXh0ZXJuYWxGaWx0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgIGNvbnN0IGZpbHRlckRlZjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBleHRlcm5hbEZpbHRlcnMsIGZpbHRlckRlZnMgfSA9IGFyZ3M7XHJcbiAgICAvLyBGaWx0ZXIgY29sdW1uXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sdW1ucyB8fCBbXSkge1xyXG4gICAgICBjb2x1bW5GaWx0ZXJbaXRlbS5maWVsZF0gPSBpdGVtPy5maWx0ZXI/LmRlZmF1bHQ7XHJcbiAgICB9XHJcbiAgICAvLyBGaWx0ZXIgZXh0ZXJuYWxcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRlcm5hbEZpbHRlcnMgfHwgW10pIHtcclxuICAgICAgZXh0ZXJuYWxGaWx0ZXJbaXRlbS5maWVsZF0gPSBpdGVtPy5kZWZhdWx0O1xyXG4gICAgfVxyXG4gICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGZpbHRlckRlZnMgfHwgW10pIHtcclxuICAgICAgZmlsdGVyRGVmW2l0ZW0uc2RNYXRlcmlhbEZpbHRlckRlZl0gPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAvLyBGaWx0ZXIgY29sdW1uXHJcbiAgICAgIGNvbHVtbkZpbHRlcixcclxuICAgICAgLy8gRmlsdGVyIGV4dGVybmFsXHJcbiAgICAgIGV4dGVybmFsRmlsdGVyLFxyXG4gICAgICAvLyBGaWx0ZXIgZGVmXHJcbiAgICAgIGZpbHRlckRlZixcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgI2luaXRDb25maWd1cmF0aW9uID0gKFxyXG4gICAgYXJnczoge1xyXG4gICAgICBjb2x1bW5zOiBTZFRhYmxlQ29sdW1uW107XHJcbiAgICAgIGV4dGVybmFsRmlsdGVyczogU2RUYWJsZUV4dGVybmFsRmlsdGVyW107XHJcbiAgICAgIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXTtcclxuICAgIH0sXHJcbiAgICBjb25maWd1cmF0aW9uOiBTZFRhYmxlRmlsdGVyQ29uZmlndXJhdGlvblxyXG4gICk6IFNkVGFibGVGaWx0ZXJDb25maWd1cmF0aW9uID0+IHtcclxuICAgIGNvbnN0IHsgY29sdW1ucywgZXh0ZXJuYWxGaWx0ZXJzLCBmaWx0ZXJEZWZzIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgaW5saW5lQ29sdW1uOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xyXG4gICAgY29uc3QgaW5saW5lRXh0ZXJuYWw6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgICBjb25zdCBpbmxpbmVGaWx0ZXJEZWY6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XHJcbiAgICAvLyBGaWx0ZXIgY29sdW1uXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sdW1ucyB8fCBbXSkge1xyXG4gICAgICBpbmxpbmVDb2x1bW5baXRlbS5maWVsZF0gPSBjb25maWd1cmF0aW9uPy5pbmxpbmVDb2x1bW4/LltpdGVtLmZpZWxkXSA/PyBpdGVtPy5maWx0ZXI/LmRlZmF1bHRTaG93aW5nO1xyXG4gICAgfVxyXG4gICAgLy8gRmlsdGVyIGV4dGVybmFsXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdKSB7XHJcbiAgICAgIGlubGluZUV4dGVybmFsW2l0ZW0uZmllbGRdID0gY29uZmlndXJhdGlvbj8uaW5saW5lRXh0ZXJuYWw/LltpdGVtLmZpZWxkXSA/PyBpdGVtPy5kZWZhdWx0U2hvd2luZztcclxuICAgIH1cclxuICAgIC8vIEZpbHRlciBkZWZcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBmaWx0ZXJEZWZzIHx8IFtdKSB7XHJcbiAgICAgIGlubGluZUZpbHRlckRlZltpdGVtLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID0gY29uZmlndXJhdGlvbj8uaW5saW5lRmlsdGVyRGVmPy5baXRlbS5zZE1hdGVyaWFsRmlsdGVyRGVmXSA/PyBpdGVtPy5kZWZhdWx0U2hvd2luZztcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vIEZpbHRlciBjb2x1bW5cclxuICAgICAgaW5saW5lQ29sdW1uLFxyXG4gICAgICAvLyBGaWx0ZXIgZXh0ZXJuYWxcclxuICAgICAgaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIC8vIEZpbHRlciBkZWZcclxuICAgICAgaW5saW5lRmlsdGVyRGVmLFxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICAjaW5pdFZhbHVlID0gKFxyXG4gICAgYXJnczoge1xyXG4gICAgICBjb2x1bW5zOiBTZFRhYmxlQ29sdW1uW107XHJcbiAgICAgIGV4dGVybmFsRmlsdGVyczogU2RUYWJsZUV4dGVybmFsRmlsdGVyW107XHJcbiAgICAgIGZpbHRlckRlZnM6IFNkTWF0ZXJpYWxGaWx0ZXJEZWZEaXJlY3RpdmVbXTtcclxuICAgIH0sXHJcbiAgICB2YWx1ZTogU2RUYWJsZUZpbHRlclZhbHVlXHJcbiAgKTogU2RUYWJsZUZpbHRlclZhbHVlID0+IHtcclxuICAgIGNvbnN0IGNvbHVtbkZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgY29uc3QgZXh0ZXJuYWxGaWx0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICAgIGNvbnN0IGZpbHRlckRlZjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBleHRlcm5hbEZpbHRlcnMsIGZpbHRlckRlZnMgfSA9IGFyZ3M7XHJcbiAgICAvLyBGaWx0ZXIgY29sdW1uXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29sdW1ucyB8fCBbXSkge1xyXG4gICAgICBjb2x1bW5GaWx0ZXJbaXRlbS5maWVsZF0gPSB2YWx1ZT8uY29sdW1uRmlsdGVyPy5baXRlbS5maWVsZF0gPz8gaXRlbT8uZmlsdGVyPy5kZWZhdWx0O1xyXG4gICAgfVxyXG4gICAgLy8gRmlsdGVyIGV4dGVybmFsXHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdKSB7XHJcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdkYXRlcmFuZ2UnKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbaXRlbS5maWVsZF0gPSB7XHJcbiAgICAgICAgICBmcm9tOiB2YWx1ZT8uZXh0ZXJuYWxGaWx0ZXI/LltpdGVtLmZpZWxkXT8uZnJvbSA/PyBpdGVtLmRlZmF1bHQ/LmZyb20sXHJcbiAgICAgICAgICB0bzogdmFsdWU/LmV4dGVybmFsRmlsdGVyPy5baXRlbS5maWVsZF0/LnRvID8/IGl0ZW0uZGVmYXVsdD8udG8sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltpdGVtLmZpZWxkXSA9IHZhbHVlPy5leHRlcm5hbEZpbHRlcj8uW2l0ZW0uZmllbGRdID8/IGl0ZW0/LmRlZmF1bHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIEZpbHRlciBkZWZcclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBmaWx0ZXJEZWZzIHx8IFtdKSB7XHJcbiAgICAgIGZpbHRlckRlZltpdGVtLnNkTWF0ZXJpYWxGaWx0ZXJEZWZdID0gdmFsdWU/LmZpbHRlckRlZj8uW2l0ZW0uc2RNYXRlcmlhbEZpbHRlckRlZl0gPz8gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLy8gRmlsdGVyIGNvbHVtblxyXG4gICAgICBjb2x1bW5GaWx0ZXIsXHJcbiAgICAgIC8vIEZpbHRlciBleHRlcm5hbFxyXG4gICAgICBleHRlcm5hbEZpbHRlcixcclxuICAgICAgLy8gRmlsdGVyIGRlZlxyXG4gICAgICBmaWx0ZXJEZWYsXHJcbiAgICB9O1xyXG4gIH07XHJcbn1cclxuIl19
|