@sumaris-net/ngx-components 18.0.1 → 18.0.2-alpha2
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/esm2022/public_api.mjs +3 -2
- package/esm2022/src/app/admin/services/filter/person.filter.mjs +10 -3
- package/esm2022/src/app/admin/services/person.service.mjs +6 -3
- package/esm2022/src/app/admin/users/users.mjs +2 -2
- package/esm2022/src/app/core/account/account.page.mjs +3 -5
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +3 -3
- package/esm2022/src/app/core/form/properties/properties.form.mjs +69 -47
- package/esm2022/src/app/core/form/properties/properties.utils.mjs +186 -23
- package/esm2022/src/app/core/form/properties/property.validator.mjs +36 -4
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +25 -11
- package/esm2022/src/app/core/home/home.module.mjs +2 -2
- package/esm2022/src/app/core/menu/menu.module.mjs +2 -2
- package/esm2022/src/app/core/register/register.form.mjs +1 -1
- package/esm2022/src/app/core/services/local-settings.service.mjs +17 -8
- package/esm2022/src/app/core/services/model/settings.model.mjs +1 -1
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +4 -24
- package/esm2022/src/app/core/settings/settings.page.mjs +44 -13
- package/esm2022/src/app/core/table/column/row-field.component.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +1 -1
- package/esm2022/src/app/shared/form/field.component.mjs +15 -8
- package/esm2022/src/app/shared/form/field.model.mjs +1 -1
- package/esm2022/src/app/shared/functions.mjs +6 -3
- package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +2 -2
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +11 -4
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +2 -2
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +1 -1
- package/esm2022/src/app/shared/material/chips/chips.module.mjs +2 -2
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +4 -3
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +1 -1
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +25 -31
- package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +71 -0
- package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +19 -0
- package/esm2022/src/app/shared/services.mjs +11 -3
- package/esm2022/src/app/shared/shared.module.mjs +2 -2
- package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +2 -2
- package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +2 -2
- package/esm2022/src/app/shared/types.mjs +1 -1
- package/esm2022/src/app/social/user-event/user-event.module.mjs +2 -2
- package/esm2022/src/environments/environment.mjs +3 -6
- package/fesm2022/sumaris-net.ngx-components.mjs +519 -176
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +2 -1
- package/src/app/admin/services/filter/person.filter.d.ts +1 -0
- package/src/app/admin/services/person.service.d.ts +5 -0
- package/src/app/core/form/properties/properties.form.d.ts +17 -9
- package/src/app/core/form/properties/properties.utils.d.ts +21 -11
- package/src/app/core/form/properties/property.validator.d.ts +8 -0
- package/src/app/core/form/properties/testing/properties-form.test.d.ts +4 -2
- package/src/app/core/home/home.module.d.ts +1 -1
- package/src/app/core/menu/menu.module.d.ts +1 -1
- package/src/app/core/services/local-settings.service.d.ts +3 -1
- package/src/app/core/services/model/settings.model.d.ts +1 -1
- package/src/app/core/services/validator/local-settings.validator.d.ts +3 -7
- package/src/app/core/settings/settings.page.d.ts +2 -1
- package/src/app/shared/form/field.component.d.ts +6 -3
- package/src/app/shared/form/field.model.d.ts +2 -0
- package/src/app/shared/functions.d.ts +1 -0
- package/src/app/shared/image/gallery/image-gallery.module.d.ts +1 -1
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +4 -1
- package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +1 -1
- package/src/app/shared/material/chips/chips.module.d.ts +1 -1
- package/src/app/shared/material/chips/material.chips.d.ts +1 -0
- package/src/app/shared/pipes/property.pipes.d.ts +2 -8
- package/src/app/shared/rx-state/rx-state.decorators.d.ts +7 -0
- package/src/app/shared/services.d.ts +2 -0
- package/src/app/shared/shared.module.d.ts +1 -1
- package/src/app/shared/storage/storage-explorer.module.d.ts +1 -1
- package/src/app/shared/toolbar/toolbar.module.d.ts +1 -1
- package/src/app/shared/types.d.ts +2 -2
- package/src/app/social/user-event/user-event.module.d.ts +1 -1
- package/src/assets/i18n/fr.json +3 -1
- package/src/assets/manifest.json +1 -1
- package/esm2022/src/app/shared/rx-state.module.mjs +0 -19
- /package/src/app/shared/{rx-state.module.d.ts → rx-state/rx-state.module.d.ts} +0 -0
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
import { isNilOrBlank, isNotNil } from '../../../shared/functions';
|
|
1
|
+
import { isNil, isNilOrBlank, isNotEmptyArray, isNotNil, isNotNilOrBlank, isPromise, toBoolean, toNumber } from '../../../shared/functions';
|
|
2
2
|
export class AppPropertiesUtils {
|
|
3
3
|
/**
|
|
4
|
-
* Converts an array of Property objects
|
|
4
|
+
* Converts an array of `Property` objects into a `PropertiesMap` object.
|
|
5
5
|
*
|
|
6
|
-
* @param {Property[]} [sources] -
|
|
7
|
-
* @param {
|
|
8
|
-
* @param {
|
|
9
|
-
* @
|
|
6
|
+
* @param {Property[]} [sources] - An optional array of properties to be converted.
|
|
7
|
+
* @param {FormFieldDefinition[]} [definitions] - An optional array of form field definitions to help with the conversion.
|
|
8
|
+
* @param {Object} [opts] - Optional configurations.
|
|
9
|
+
* @param {boolean} [opts.omitNilOrBlank] - If true, properties with nil or blank values will be omitted. Defaults to true.
|
|
10
|
+
* @return {PropertiesMap} - The resulting `PropertiesMap` object.
|
|
10
11
|
*/
|
|
11
|
-
static arrayAsObject(sources, opts) {
|
|
12
|
+
static arrayAsObject(sources, definitions, opts) {
|
|
12
13
|
return ((sources || [])
|
|
13
14
|
// Serialize each item
|
|
14
|
-
.map(
|
|
15
|
+
.map((source) => {
|
|
16
|
+
if (!source)
|
|
17
|
+
return undefined;
|
|
18
|
+
const key = AppPropertyUtils.key(source);
|
|
19
|
+
const def = definitions?.find((d) => d.key === key);
|
|
20
|
+
return AppPropertyUtils.asObject(source, def);
|
|
21
|
+
})
|
|
15
22
|
// Fill a JSON object
|
|
16
23
|
.reduce((res, item) => {
|
|
17
24
|
if (isNilOrBlank(item.key))
|
|
@@ -23,38 +30,194 @@ export class AppPropertiesUtils {
|
|
|
23
30
|
}, {}));
|
|
24
31
|
}
|
|
25
32
|
/**
|
|
26
|
-
*
|
|
33
|
+
* Generates an array of properties from the given object, optionally applying definitions to the properties.
|
|
27
34
|
*
|
|
28
|
-
* @param {PropertiesMap} [
|
|
29
|
-
* @
|
|
35
|
+
* @param {PropertiesMap} [sources] - The source object from which properties are to be extracted.
|
|
36
|
+
* @param {FormFieldDefinition[]} [definitions] - An optional array of definitions to be applied to the extracted properties.
|
|
37
|
+
* @return {Property[] | Promise<Property[]>} An array of properties generated from the source object, or a promise resolving to that array.
|
|
30
38
|
*/
|
|
31
|
-
static arrayFromObject(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
static arrayFromObject(sources, definitions) {
|
|
40
|
+
const targets = Array.isArray(sources)
|
|
41
|
+
? sources.slice()
|
|
42
|
+
: Object.getOwnPropertyNames(sources || {}).map((key) => ({
|
|
43
|
+
key,
|
|
44
|
+
value: sources[key],
|
|
45
|
+
}));
|
|
46
|
+
const jobs = [];
|
|
47
|
+
if (isNotEmptyArray(definitions)) {
|
|
48
|
+
for (let target of targets) {
|
|
49
|
+
// Find definition
|
|
50
|
+
const def = definitions.find((def) => def.key === target.key);
|
|
51
|
+
// Deserialize from string
|
|
52
|
+
let propertyOrPromise = AppPropertyUtils.fromObject(target, def);
|
|
53
|
+
if (isPromise(propertyOrPromise)) {
|
|
54
|
+
jobs.push(propertyOrPromise.then((property) => (target.value = property.value)));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Update the target value
|
|
58
|
+
target.value = propertyOrPromise.value;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Return as promise, if need
|
|
63
|
+
if (jobs.length)
|
|
64
|
+
return Promise.all(jobs).then(() => targets);
|
|
65
|
+
return targets;
|
|
38
66
|
}
|
|
39
67
|
}
|
|
40
68
|
export class AppPropertyUtils {
|
|
41
|
-
static
|
|
69
|
+
static key(source) {
|
|
70
|
+
if (!source)
|
|
71
|
+
return undefined;
|
|
72
|
+
return source.key?.key ?? source.key;
|
|
73
|
+
}
|
|
74
|
+
static asObject(source, def) {
|
|
42
75
|
if (!source)
|
|
43
76
|
return undefined;
|
|
44
77
|
// Serialize key (WARNING: can be an object, when using autocomplete field to edit a key - see AppPropertiesForm)
|
|
45
|
-
const key =
|
|
78
|
+
const key = AppPropertyUtils.key(source);
|
|
79
|
+
const joinAttribute = def?.autocomplete?.filter?.joinAttribute || 'id';
|
|
46
80
|
// Serialize the value
|
|
47
81
|
let value = source.value;
|
|
48
82
|
if (Array.isArray(value)) {
|
|
49
83
|
value = value
|
|
50
|
-
.map((v) => v?.
|
|
84
|
+
.map((v) => v?.[joinAttribute] ?? v)
|
|
51
85
|
.filter(isNotNil)
|
|
52
86
|
.join(',');
|
|
53
87
|
}
|
|
54
88
|
else {
|
|
55
89
|
value = value?.id ?? value;
|
|
56
90
|
}
|
|
57
|
-
return { key, value };
|
|
91
|
+
return { key, value: value?.toString() };
|
|
92
|
+
}
|
|
93
|
+
static fromObject(source, def, opts) {
|
|
94
|
+
if (!source?.key || isNil(source.value) || !def)
|
|
95
|
+
return source; // Skip if no key
|
|
96
|
+
// CLone the source
|
|
97
|
+
const target = { key: source.key, value: source.value };
|
|
98
|
+
const jobs = [];
|
|
99
|
+
// Resolve value
|
|
100
|
+
switch (def.type) {
|
|
101
|
+
case 'boolean':
|
|
102
|
+
target.value = toBoolean(source.value, toBoolean(def.defaultValue));
|
|
103
|
+
break;
|
|
104
|
+
case 'integer':
|
|
105
|
+
case 'double':
|
|
106
|
+
target.value = toNumber(source.value, toNumber(def.defaultValue));
|
|
107
|
+
break;
|
|
108
|
+
case 'enums':
|
|
109
|
+
const keys = (target.value || '').trim().split(/[|,]+/);
|
|
110
|
+
if (isNotEmptyArray(keys)) {
|
|
111
|
+
const enumValues = keys.map((key) => def.values?.find((defValue) => defValue && key === (defValue['key'] || defValue)));
|
|
112
|
+
target.value = enumValues || null;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
target.value = null;
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
case 'entity':
|
|
119
|
+
// Deserialize unique entity
|
|
120
|
+
const valueOrPromise = AppPropertyUtils.valueFromObject(target.value, def, opts);
|
|
121
|
+
if (isPromise(valueOrPromise)) {
|
|
122
|
+
jobs.push(valueOrPromise.then((value) => {
|
|
123
|
+
target.value = value;
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
target.value = valueOrPromise;
|
|
128
|
+
}
|
|
129
|
+
break;
|
|
130
|
+
case 'entities':
|
|
131
|
+
// Convert value to array
|
|
132
|
+
target.value = Array.isArray(source.value)
|
|
133
|
+
? source.value.slice() // Copy
|
|
134
|
+
: typeof source.value === 'string'
|
|
135
|
+
? source.value
|
|
136
|
+
.split(',')
|
|
137
|
+
.map((v) => v.trim())
|
|
138
|
+
.filter(isNotNilOrBlank)
|
|
139
|
+
: [];
|
|
140
|
+
// Deserialize each sub-value
|
|
141
|
+
let index = 0;
|
|
142
|
+
for (let subValue of target.value) {
|
|
143
|
+
// Deserialize sub-value
|
|
144
|
+
const subValueOrPromise = AppPropertyUtils.valueFromObject(subValue, def, opts);
|
|
145
|
+
// Add promise to jobs
|
|
146
|
+
if (isPromise(subValueOrPromise)) {
|
|
147
|
+
const finalIndex = index;
|
|
148
|
+
jobs.push(subValueOrPromise.then((value) => {
|
|
149
|
+
// Update sub value
|
|
150
|
+
target.value[finalIndex] = value;
|
|
151
|
+
}));
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// Update sub value
|
|
155
|
+
target.value[index] = subValueOrPromise;
|
|
156
|
+
}
|
|
157
|
+
index++;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// /!\ Return as promise only if need (let function sync when possible)
|
|
161
|
+
if (jobs.length)
|
|
162
|
+
return Promise.all(jobs).then(() => target);
|
|
163
|
+
return target;
|
|
164
|
+
}
|
|
165
|
+
static valueFromObject(value, def, opts) {
|
|
166
|
+
// Use deserialize function, if any
|
|
167
|
+
if (def.deserialize) {
|
|
168
|
+
return def.deserialize(value);
|
|
169
|
+
}
|
|
170
|
+
// Or try using suggest function
|
|
171
|
+
return this.resolveValueBySuggest(value, def, opts);
|
|
172
|
+
}
|
|
173
|
+
static async resolveValueBySuggest(value, def, opts) {
|
|
174
|
+
const suggestFn = def.autocomplete?.suggestFn || opts?.defaultSuggestFn;
|
|
175
|
+
if (!suggestFn) {
|
|
176
|
+
console.warn(`Missing 'deserialize' or 'autocomplete.suggestFn' in the field definition '${def.key}'. Cannot deserialize value: ${JSON.stringify(value)}`);
|
|
177
|
+
return value; // Skip
|
|
178
|
+
}
|
|
179
|
+
let searchValue = value;
|
|
180
|
+
const filter = { ...def.autocomplete?.filter }; // Cope filter
|
|
181
|
+
const joinAttribute = filter?.joinAttribute || 'id';
|
|
182
|
+
if (joinAttribute === 'id') {
|
|
183
|
+
filter.id = +value;
|
|
184
|
+
filter.offset = 0;
|
|
185
|
+
filter.size = 1;
|
|
186
|
+
searchValue = '*';
|
|
187
|
+
// DEBUG
|
|
188
|
+
console.debug(`[properties-utils] Resolving entity where id=${value}...`);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
filter.searchAttribute = joinAttribute;
|
|
192
|
+
// DEBUG
|
|
193
|
+
console.debug(`[properties-utils] Resolving entity where ${joinAttribute}=${searchValue}...`);
|
|
194
|
+
}
|
|
195
|
+
try {
|
|
196
|
+
// Fetch entity, using the suggest function
|
|
197
|
+
const res = await suggestFn(searchValue, filter, joinAttribute, 'asc', {
|
|
198
|
+
withTotal: false,
|
|
199
|
+
...opts?.defaultSuggestOptions,
|
|
200
|
+
});
|
|
201
|
+
// Get result array
|
|
202
|
+
const data = Array.isArray(res) ? res : res.data;
|
|
203
|
+
console.debug(`[properties-utils] ${data.length} entities found: `, data);
|
|
204
|
+
// Ok, we find it => stop here
|
|
205
|
+
if (data?.length)
|
|
206
|
+
return data[0];
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
console.error(`Cannot fetch entity from ${def.key}=${value}`, err);
|
|
210
|
+
// Continue
|
|
211
|
+
}
|
|
212
|
+
// Create the missing result
|
|
213
|
+
const unresolvedEntity = {
|
|
214
|
+
[joinAttribute]: value,
|
|
215
|
+
};
|
|
216
|
+
// Fill attributes with '??'
|
|
217
|
+
def.autocomplete?.attributes?.forEach((key) => {
|
|
218
|
+
unresolvedEntity[key] = unresolvedEntity[key] ?? '';
|
|
219
|
+
});
|
|
220
|
+
return unresolvedEntity;
|
|
58
221
|
}
|
|
59
222
|
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRW5FLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBb0IsRUFBRSxJQUFrQztRQUMzRSxPQUFPLENBQ0wsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ2Isc0JBQXNCO2FBQ3JCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7WUFDL0IscUJBQXFCO2FBQ3BCLE1BQU0sQ0FDTCxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNaLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7Z0JBQUUsT0FBTyxHQUFHLENBQUM7WUFDdkMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxjQUFjLEtBQUssS0FBSztnQkFBRSxPQUFPLEdBQUcsQ0FBQztZQUMzRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDM0IsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQ2MsRUFBRSxDQUNsQixDQUNKLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFVLE1BQXNCO1FBQ3BELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLG1CQUFtQjtRQUM3RCxPQUFPLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVELEdBQUc7WUFDSCxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQztTQUNuQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFzQjtRQUNwQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzlCLGlIQUFpSDtRQUNqSCxNQUFNLEdBQUcsR0FBSSxNQUFNLENBQUMsR0FBVyxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDO1FBRW5ELHNCQUFzQjtRQUN0QixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3pCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLEtBQUssR0FBRyxLQUFLO2lCQUNWLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3RCLE1BQU0sQ0FBQyxRQUFRLENBQUM7aUJBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxHQUFJLEtBQWEsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnRpZXNNYXAsIFByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IGlzTmlsT3JCbGFuaywgaXNOb3ROaWwgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcblxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnRpZXNVdGlscyB7XG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBQcm9wZXJ0eSBvYmplY3RzIHRvIGFuIG9iamVjdCBtYXAuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHlbXX0gW3NvdXJjZXNdIC0gVGhlIGFycmF5IG9mIFByb3BlcnR5IG9iamVjdHMgdG8gY29udmVydC5cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIE9wdGlvbnMgZm9yIHRoZSBjb252ZXJzaW9uLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLm9taXROaWxPckJsYW5rXSAtIElmIHNldCB0byB0cnVlLCBwcm9wZXJ0aWVzIHdpdGggbmlsIG9yIGJsYW5rIHZhbHVlcyB3aWxsIGJlIG9taXR0ZWQgZnJvbSB0aGUgcmVzdWx0aW5nIG9iamVjdC5cbiAgICogQHJldHVybiB7UHJvcGVydGllc01hcH0gVGhlIHJlc3VsdGluZyBvYmplY3QgbWFwIHdoZXJlIGtleXMgYXJlIHByb3BlcnR5IGtleXMgYW5kIHZhbHVlcyBhcmUgcHJvcGVydHkgdmFsdWVzLlxuICAgKi9cbiAgc3RhdGljIGFycmF5QXNPYmplY3Qoc291cmNlcz86IFByb3BlcnR5W10sIG9wdHM/OiB7IG9taXROaWxPckJsYW5rOiBib29sZWFuIH0pOiBQcm9wZXJ0aWVzTWFwIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHNvdXJjZXMgfHwgW10pXG4gICAgICAgIC8vIFNlcmlhbGl6ZSBlYWNoIGl0ZW1cbiAgICAgICAgLm1hcChBcHBQcm9wZXJ0eVV0aWxzLmFzT2JqZWN0KVxuICAgICAgICAvLyBGaWxsIGEgSlNPTiBvYmplY3RcbiAgICAgICAgLnJlZHVjZShcbiAgICAgICAgICAocmVzLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNOaWxPckJsYW5rKGl0ZW0ua2V5KSkgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIGlmIChpc05pbE9yQmxhbmsoaXRlbS52YWx1ZSkgJiYgb3B0cz8ub21pdE5pbE9yQmxhbmsgIT09IGZhbHNlKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgcmVzW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgPFByb3BlcnRpZXNNYXA+e31cbiAgICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYW4gb2JqZWN0IGludG8gYW4gYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtQcm9wZXJ0aWVzTWFwfSBbc291cmNlXSAtIFRoZSBzb3VyY2Ugb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0eVtdfSBBbiBhcnJheSBvZiBwcm9wZXJ0aWVzIGRlcml2ZWQgZnJvbSB0aGUgc291cmNlIG9iamVjdC5cbiAgICovXG4gIHN0YXRpYyBhcnJheUZyb21PYmplY3Q8VCA9IGFueT4oc291cmNlPzogUHJvcGVydGllc01hcCk6IFByb3BlcnR5W10ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZSkpIHJldHVybiBzb3VyY2U7IC8vIEFscmVhZHkgYW4gYXJyYXlcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoc291cmNlIHx8IHt9KS5tYXAoKGtleSkgPT4gKHtcbiAgICAgIGtleSxcbiAgICAgIHZhbHVlOiBzb3VyY2Vba2V5XSxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFwcFByb3BlcnR5VXRpbHMge1xuICBzdGF0aWMgYXNPYmplY3Qoc291cmNlOiBQcm9wZXJ0eSB8IGFueSk6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgLy8gU2VyaWFsaXplIGtleSAoV0FSTklORzogY2FuIGJlIGFuIG9iamVjdCwgd2hlbiB1c2luZyBhdXRvY29tcGxldGUgZmllbGQgdG8gZWRpdCBhIGtleSAtIHNlZSBBcHBQcm9wZXJ0aWVzRm9ybSlcbiAgICBjb25zdCBrZXkgPSAoc291cmNlLmtleSBhcyBhbnkpPy5rZXkgPz8gc291cmNlLmtleTtcblxuICAgIC8vIFNlcmlhbGl6ZSB0aGUgdmFsdWVcbiAgICBsZXQgdmFsdWUgPSBzb3VyY2UudmFsdWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlXG4gICAgICAgIC5tYXAoKHYpID0+IHY/LmlkID8/IHYpXG4gICAgICAgIC5maWx0ZXIoaXNOb3ROaWwpXG4gICAgICAgIC5qb2luKCcsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gKHZhbHVlIGFzIGFueSk/LmlkID8/IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4geyBrZXksIHZhbHVlIH07XG4gIH1cbn1cbiJdfQ==
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9mb3JtL3Byb3BlcnRpZXMvcHJvcGVydGllcy51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVJLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQW9CLEVBQUUsV0FBbUMsRUFBRSxJQUFrQztRQUNoSCxPQUFPLENBQ0wsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1lBQ2Isc0JBQXNCO2FBQ3JCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDOUIsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sR0FBRyxHQUFHLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDcEQsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQztZQUNGLHFCQUFxQjthQUNwQixNQUFNLENBQ0wsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDWixJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sR0FBRyxDQUFDO1lBQ3ZDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJ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QUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkUsV0FBVztRQUNiLENBQUM7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxnQkFBZ0IsR0FBUTtZQUM1QixDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUs7U0FDdkIsQ0FBQztRQUVGLDRCQUE0QjtRQUM1QixHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUM1QyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnRpZXNNYXAsIFByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7IGlzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIGlzTm90TmlsT3JCbGFuaywgaXNQcm9taXNlLCB0b0Jvb2xlYW4sIHRvTnVtYmVyIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMsIFN1Z2dlc3RGbiB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBBcHBQcm9wZXJ0aWVzVXRpbHMge1xuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgYFByb3BlcnR5YCBvYmplY3RzIGludG8gYSBgUHJvcGVydGllc01hcGAgb2JqZWN0LlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3BlcnR5W119IFtzb3VyY2VzXSAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIHByb3BlcnRpZXMgdG8gYmUgY29udmVydGVkLlxuICAgKiBAcGFyYW0ge0Zvcm1GaWVsZERlZmluaXRpb25bXX0gW2RlZmluaXRpb25zXSAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIGZvcm0gZmllbGQgZGVmaW5pdGlvbnMgdG8gaGVscCB3aXRoIHRoZSBjb252ZXJzaW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbnMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdHMub21pdE5pbE9yQmxhbmtdIC0gSWYgdHJ1ZSwgcHJvcGVydGllcyB3aXRoIG5pbCBvciBibGFuayB2YWx1ZXMgd2lsbCBiZSBvbWl0dGVkLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0aWVzTWFwfSAtIFRoZSByZXN1bHRpbmcgYFByb3BlcnRpZXNNYXBgIG9iamVjdC5cbiAgICovXG4gIHN0YXRpYyBhcnJheUFzT2JqZWN0KHNvdXJjZXM/OiBQcm9wZXJ0eVtdLCBkZWZpbml0aW9ucz86IEZvcm1GaWVsZERlZmluaXRpb25bXSwgb3B0cz86IHsgb21pdE5pbE9yQmxhbms6IGJvb2xlYW4gfSk6IFByb3BlcnRpZXNNYXAge1xuICAgIHJldHVybiAoXG4gICAgICAoc291cmNlcyB8fCBbXSlcbiAgICAgICAgLy8gU2VyaWFsaXplIGVhY2ggaXRlbVxuICAgICAgICAubWFwKChzb3VyY2UpID0+IHtcbiAgICAgICAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICBjb25zdCBrZXkgPSBBcHBQcm9wZXJ0eVV0aWxzLmtleShzb3VyY2UpO1xuICAgICAgICAgIGNvbnN0IGRlZiA9IGRlZmluaXRpb25zPy5maW5kKChkKSA9PiBkLmtleSA9PT0ga2V5KTtcbiAgICAgICAgICByZXR1cm4gQXBwUHJvcGVydHlVdGlscy5hc09iamVjdChzb3VyY2UsIGRlZik7XG4gICAgICAgIH0pXG4gICAgICAgIC8vIEZpbGwgYSBKU09OIG9iamVjdFxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChyZXMsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpc05pbE9yQmxhbmsoaXRlbS5rZXkpKSByZXR1cm4gcmVzO1xuICAgICAgICAgICAgaWYgKGlzTmlsT3JCbGFuayhpdGVtLnZhbHVlKSAmJiBvcHRzPy5vbWl0TmlsT3JCbGFuayAhPT0gZmFsc2UpIHJldHVybiByZXM7XG4gICAgICAgICAgICByZXNbaXRlbS5rZXldID0gaXRlbS52YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICA8UHJvcGVydGllc01hcD57fVxuICAgICAgICApXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYW4gYXJyYXkgb2YgcHJvcGVydGllcyBmcm9tIHRoZSBnaXZlbiBvYmplY3QsIG9wdGlvbmFsbHkgYXBwbHlpbmcgZGVmaW5pdGlvbnMgdG8gdGhlIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydGllc01hcH0gW3NvdXJjZXNdIC0gVGhlIHNvdXJjZSBvYmplY3QgZnJvbSB3aGljaCBwcm9wZXJ0aWVzIGFyZSB0byBiZSBleHRyYWN0ZWQuXG4gICAqIEBwYXJhbSB7Rm9ybUZpZWxkRGVmaW5pdGlvbltdfSBbZGVmaW5pdGlvbnNdIC0gQW4gb3B0aW9uYWwgYXJyYXkgb2YgZGVmaW5pdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZXh0cmFjdGVkIHByb3BlcnRpZXMuXG4gICAqIEByZXR1cm4ge1Byb3BlcnR5W10gfCBQcm9taXNlPFByb3BlcnR5W10+fSBBbiBhcnJheSBvZiBwcm9wZXJ0aWVzIGdlbmVyYXRlZCBmcm9tIHRoZSBzb3VyY2Ugb2JqZWN0LCBvciBhIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoYXQgYXJyYXkuXG4gICAqL1xuICBzdGF0aWMgYXJyYXlGcm9tT2JqZWN0KHNvdXJjZXM/OiBQcm9wZXJ0aWVzTWFwIHwgUHJvcGVydHlbXSwgZGVmaW5pdGlvbnM/OiBGb3JtRmllbGREZWZpbml0aW9uW10pOiBQcm9wZXJ0eVtdIHwgUHJvbWlzZTxQcm9wZXJ0eVtdPiB7XG4gICAgY29uc3QgdGFyZ2V0cyA9IEFycmF5LmlzQXJyYXkoc291cmNlcylcbiAgICAgID8gc291cmNlcy5zbGljZSgpXG4gICAgICA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZXMgfHwge30pLm1hcCgoa2V5KSA9PiAoe1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICB2YWx1ZTogc291cmNlc1trZXldLFxuICAgICAgICB9KSk7XG4gICAgY29uc3Qgam9icyA9IFtdO1xuICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZGVmaW5pdGlvbnMpKSB7XG4gICAgICBmb3IgKGxldCB0YXJnZXQgb2YgdGFyZ2V0cykge1xuICAgICAgICAvLyBGaW5kIGRlZmluaXRpb25cbiAgICAgICAgY29uc3QgZGVmID0gZGVmaW5pdGlvbnMuZmluZCgoZGVmKSA9PiBkZWYua2V5ID09PSB0YXJnZXQua2V5KTtcblxuICAgICAgICAvLyBEZXNlcmlhbGl6ZSBmcm9tIHN0cmluZ1xuICAgICAgICBsZXQgcHJvcGVydHlPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLmZyb21PYmplY3QodGFyZ2V0LCBkZWYpO1xuICAgICAgICBpZiAoaXNQcm9taXNlKHByb3BlcnR5T3JQcm9taXNlKSkge1xuICAgICAgICAgIGpvYnMucHVzaChwcm9wZXJ0eU9yUHJvbWlzZS50aGVuKChwcm9wZXJ0eSkgPT4gKHRhcmdldC52YWx1ZSA9IHByb3BlcnR5LnZhbHVlKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdGFyZ2V0IHZhbHVlXG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gcHJvcGVydHlPclByb21pc2UudmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYXMgcHJvbWlzZSwgaWYgbmVlZFxuICAgIGlmIChqb2JzLmxlbmd0aCkgcmV0dXJuIFByb21pc2UuYWxsKGpvYnMpLnRoZW4oKCkgPT4gdGFyZ2V0cyk7XG5cbiAgICByZXR1cm4gdGFyZ2V0cztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXBwUHJvcGVydHlVdGlscyB7XG4gIHN0YXRpYyBrZXkoc291cmNlOiBQcm9wZXJ0eSB8IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChzb3VyY2Uua2V5IGFzIGFueSk/LmtleSA/PyBzb3VyY2Uua2V5O1xuICB9XG5cbiAgc3RhdGljIGFzT2JqZWN0KHNvdXJjZTogUHJvcGVydHkgfCBhbnksIGRlZj86IEZvcm1GaWVsZERlZmluaXRpb24pOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIC8vIFNlcmlhbGl6ZSBrZXkgKFdBUk5JTkc6IGNhbiBiZSBhbiBvYmplY3QsIHdoZW4gdXNpbmcgYXV0b2NvbXBsZXRlIGZpZWxkIHRvIGVkaXQgYSBrZXkgLSBzZWUgQXBwUHJvcGVydGllc0Zvcm0pXG4gICAgY29uc3Qga2V5ID0gQXBwUHJvcGVydHlVdGlscy5rZXkoc291cmNlKTtcblxuICAgIGNvbnN0IGpvaW5BdHRyaWJ1dGUgPSBkZWY/LmF1dG9jb21wbGV0ZT8uZmlsdGVyPy5qb2luQXR0cmlidXRlIHx8ICdpZCc7XG4gICAgLy8gU2VyaWFsaXplIHRoZSB2YWx1ZVxuICAgIGxldCB2YWx1ZSA9IHNvdXJjZS52YWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWVcbiAgICAgICAgLm1hcCgodikgPT4gdj8uW2pvaW5BdHRyaWJ1dGVdID8/IHYpXG4gICAgICAgIC5maWx0ZXIoaXNOb3ROaWwpXG4gICAgICAgIC5qb2luKCcsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gKHZhbHVlIGFzIGFueSk/LmlkID8/IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4geyBrZXksIHZhbHVlOiB2YWx1ZT8udG9TdHJpbmcoKSB9O1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3QoXG4gICAgc291cmNlOiBQcm9wZXJ0eTxzdHJpbmc+LFxuICAgIGRlZjogRm9ybUZpZWxkRGVmaW5pdGlvbixcbiAgICBvcHRzPzogeyBkZWZhdWx0U3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+IH1cbiAgKTogUHJvcGVydHk8YW55PiB8IFByb21pc2U8UHJvcGVydHk8YW55Pj4ge1xuICAgIGlmICghc291cmNlPy5rZXkgfHwgaXNOaWwoc291cmNlLnZhbHVlKSB8fCAhZGVmKSByZXR1cm4gc291cmNlOyAvLyBTa2lwIGlmIG5vIGtleVxuXG4gICAgLy8gQ0xvbmUgdGhlIHNvdXJjZVxuICAgIGNvbnN0IHRhcmdldDogUHJvcGVydHk8YW55PiA9IHsga2V5OiBzb3VyY2Uua2V5LCB2YWx1ZTogc291cmNlLnZhbHVlIH07XG5cbiAgICBjb25zdCBqb2JzOiBQcm9taXNlPGFueT5bXSA9IFtdO1xuICAgIC8vIFJlc29sdmUgdmFsdWVcbiAgICBzd2l0Y2ggKGRlZi50eXBlKSB7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgdGFyZ2V0LnZhbHVlID0gdG9Cb29sZWFuKHNvdXJjZS52YWx1ZSwgdG9Cb29sZWFuKGRlZi5kZWZhdWx0VmFsdWUpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2RvdWJsZSc6XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IHRvTnVtYmVyKHNvdXJjZS52YWx1ZSwgdG9OdW1iZXIoZGVmLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VudW1zJzpcbiAgICAgICAgY29uc3Qga2V5cyA9ICh0YXJnZXQudmFsdWUgfHwgJycpLnRyaW0oKS5zcGxpdCgvW3wsXSsvKTtcbiAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShrZXlzKSkge1xuICAgICAgICAgIGNvbnN0IGVudW1WYWx1ZXMgPSBrZXlzLm1hcCgoa2V5KSA9PlxuICAgICAgICAgICAgKGRlZi52YWx1ZXMgYXMgKHN0cmluZyB8IFByb3BlcnR5KVtdKT8uZmluZCgoZGVmVmFsdWUpID0+IGRlZlZhbHVlICYmIGtleSA9PT0gKGRlZlZhbHVlWydrZXknXSB8fCBkZWZWYWx1ZSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0YXJnZXQudmFsdWUgPSBlbnVtVmFsdWVzIHx8IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VudGl0eSc6XG4gICAgICAgIC8vIERlc2VyaWFsaXplIHVuaXF1ZSBlbnRpdHlcbiAgICAgICAgY29uc3QgdmFsdWVPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLnZhbHVlRnJvbU9iamVjdCh0YXJnZXQudmFsdWUsIGRlZiwgb3B0cyk7XG4gICAgICAgIGlmIChpc1Byb21pc2UodmFsdWVPclByb21pc2UpKSB7XG4gICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgdmFsdWVPclByb21pc2UudGhlbigodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0LnZhbHVlID0gdmFsdWVPclByb21pc2UgYXMgYW55O1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW50aXRpZXMnOlxuICAgICAgICAvLyBDb252ZXJ0IHZhbHVlIHRvIGFycmF5XG4gICAgICAgIHRhcmdldC52YWx1ZSA9IEFycmF5LmlzQXJyYXkoc291cmNlLnZhbHVlKVxuICAgICAgICAgID8gc291cmNlLnZhbHVlLnNsaWNlKCkgLy8gQ29weVxuICAgICAgICAgIDogdHlwZW9mIHNvdXJjZS52YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgID8gc291cmNlLnZhbHVlXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAubWFwKCh2KSA9PiB2LnRyaW0oKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsT3JCbGFuaylcbiAgICAgICAgICAgIDogW107XG5cbiAgICAgICAgLy8gRGVzZXJpYWxpemUgZWFjaCBzdWItdmFsdWVcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChsZXQgc3ViVmFsdWUgb2YgdGFyZ2V0LnZhbHVlKSB7XG4gICAgICAgICAgLy8gRGVzZXJpYWxpemUgc3ViLXZhbHVlXG4gICAgICAgICAgY29uc3Qgc3ViVmFsdWVPclByb21pc2UgPSBBcHBQcm9wZXJ0eVV0aWxzLnZhbHVlRnJvbU9iamVjdChzdWJWYWx1ZSwgZGVmLCBvcHRzKTtcblxuICAgICAgICAgIC8vIEFkZCBwcm9taXNlIHRvIGpvYnNcbiAgICAgICAgICBpZiAoaXNQcm9taXNlKHN1YlZhbHVlT3JQcm9taXNlKSkge1xuICAgICAgICAgICAgY29uc3QgZmluYWxJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgam9icy5wdXNoKFxuICAgICAgICAgICAgICBzdWJWYWx1ZU9yUHJvbWlzZS50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBzdWIgdmFsdWVcbiAgICAgICAgICAgICAgICB0YXJnZXQudmFsdWVbZmluYWxJbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSBzdWIgdmFsdWVcbiAgICAgICAgICAgIHRhcmdldC52YWx1ZVtpbmRleF0gPSBzdWJWYWx1ZU9yUHJvbWlzZSBhcyBhbnk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAvIVxcIFJldHVybiBhcyBwcm9taXNlIG9ubHkgaWYgbmVlZCAobGV0IGZ1bmN0aW9uIHN5bmMgd2hlbiBwb3NzaWJsZSlcbiAgICBpZiAoam9icy5sZW5ndGgpIHJldHVybiBQcm9taXNlLmFsbChqb2JzKS50aGVuKCgpID0+IHRhcmdldCk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdmFsdWVGcm9tT2JqZWN0KFxuICAgIHZhbHVlOiBhbnksXG4gICAgZGVmOiBGb3JtRmllbGREZWZpbml0aW9uLFxuICAgIG9wdHM/OiB7XG4gICAgICBkZWZhdWx0U3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+O1xuICAgICAgZGVmYXVsdFN1Z2dlc3RPcHRpb25zPzogRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnM7XG4gICAgfVxuICApOiBhbnkgfCBQcm9taXNlPGFueT4ge1xuICAgIC8vIFVzZSBkZXNlcmlhbGl6ZSBmdW5jdGlvbiwgaWYgYW55XG4gICAgaWYgKGRlZi5kZXNlcmlhbGl6ZSkge1xuICAgICAgcmV0dXJuIGRlZi5kZXNlcmlhbGl6ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gT3IgdHJ5IHVzaW5nIHN1Z2dlc3QgZnVuY3Rpb25cbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlVmFsdWVCeVN1Z2dlc3QodmFsdWUsIGRlZiwgb3B0cyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyByZXNvbHZlVmFsdWVCeVN1Z2dlc3QoXG4gICAgdmFsdWU6IGFueSxcbiAgICBkZWY6IEZvcm1GaWVsZERlZmluaXRpb24sXG4gICAgb3B0cz86IHtcbiAgICAgIGRlZmF1bHRTdWdnZXN0Rm46IFN1Z2dlc3RGbjxhbnksIGFueT47XG4gICAgICBkZWZhdWx0U3VnZ2VzdE9wdGlvbnM/OiBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucztcbiAgICB9XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3Qgc3VnZ2VzdEZuOiBTdWdnZXN0Rm48YW55LCBhbnk+ID0gZGVmLmF1dG9jb21wbGV0ZT8uc3VnZ2VzdEZuIHx8IG9wdHM/LmRlZmF1bHRTdWdnZXN0Rm47XG4gICAgaWYgKCFzdWdnZXN0Rm4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE1pc3NpbmcgJ2Rlc2VyaWFsaXplJyBvciAnYXV0b2NvbXBsZXRlLnN1Z2dlc3RGbicgaW4gdGhlIGZpZWxkIGRlZmluaXRpb24gJyR7ZGVmLmtleX0nLiBDYW5ub3QgZGVzZXJpYWxpemUgdmFsdWU6ICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gdmFsdWU7IC8vIFNraXBcbiAgICB9XG4gICAgbGV0IHNlYXJjaFZhbHVlID0gdmFsdWU7XG4gICAgY29uc3QgZmlsdGVyID0geyAuLi5kZWYuYXV0b2NvbXBsZXRlPy5maWx0ZXIgfTsgLy8gQ29wZSBmaWx0ZXJcbiAgICBjb25zdCBqb2luQXR0cmlidXRlID0gZmlsdGVyPy5qb2luQXR0cmlidXRlIHx8ICdpZCc7XG4gICAgaWYgKGpvaW5BdHRyaWJ1dGUgPT09ICdpZCcpIHtcbiAgICAgIGZpbHRlci5pZCA9ICt2YWx1ZTtcbiAgICAgIGZpbHRlci5vZmZzZXQgPSAwO1xuICAgICAgZmlsdGVyLnNpemUgPSAxO1xuICAgICAgc2VhcmNoVmFsdWUgPSAnKic7XG4gICAgICAvLyBERUJVR1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdIFJlc29sdmluZyBlbnRpdHkgd2hlcmUgaWQ9JHt2YWx1ZX0uLi5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsdGVyLnNlYXJjaEF0dHJpYnV0ZSA9IGpvaW5BdHRyaWJ1dGU7XG4gICAgICAvLyBERUJVR1xuICAgICAgY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdIFJlc29sdmluZyBlbnRpdHkgd2hlcmUgJHtqb2luQXR0cmlidXRlfT0ke3NlYXJjaFZhbHVlfS4uLmApO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAvLyBGZXRjaCBlbnRpdHksIHVzaW5nIHRoZSBzdWdnZXN0IGZ1bmN0aW9uXG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBzdWdnZXN0Rm4oc2VhcmNoVmFsdWUsIGZpbHRlciwgam9pbkF0dHJpYnV0ZSwgJ2FzYycsIHtcbiAgICAgICAgd2l0aFRvdGFsOiBmYWxzZSxcbiAgICAgICAgLi4ub3B0cz8uZGVmYXVsdFN1Z2dlc3RPcHRpb25zLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEdldCByZXN1bHQgYXJyYXlcbiAgICAgIGNvbnN0IGRhdGEgPSBBcnJheS5pc0FycmF5KHJlcykgPyByZXMgOiByZXMuZGF0YTtcblxuICAgICAgY29uc29sZS5kZWJ1ZyhgW3Byb3BlcnRpZXMtdXRpbHNdICR7ZGF0YS5sZW5ndGh9IGVudGl0aWVzIGZvdW5kOiBgLCBkYXRhKTtcblxuICAgICAgLy8gT2ssIHdlIGZpbmQgaXQgPT4gc3RvcCBoZXJlXG4gICAgICBpZiAoZGF0YT8ubGVuZ3RoKSByZXR1cm4gZGF0YVswXTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYENhbm5vdCBmZXRjaCBlbnRpdHkgZnJvbSAke2RlZi5rZXl9PSR7dmFsdWV9YCwgZXJyKTtcbiAgICAgIC8vIENvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBtaXNzaW5nIHJlc3VsdFxuICAgIGNvbnN0IHVucmVzb2x2ZWRFbnRpdHkgPSA8YW55PntcbiAgICAgIFtqb2luQXR0cmlidXRlXTogdmFsdWUsXG4gICAgfTtcblxuICAgIC8vIEZpbGwgYXR0cmlidXRlcyB3aXRoICc/PydcbiAgICBkZWYuYXV0b2NvbXBsZXRlPy5hdHRyaWJ1dGVzPy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHVucmVzb2x2ZWRFbnRpdHlba2V5XSA9IHVucmVzb2x2ZWRFbnRpdHlba2V5XSA/PyAnJztcbiAgICB9KTtcblxuICAgIHJldHVybiB1bnJlc29sdmVkRW50aXR5O1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { Validators } from '@angular/forms';
|
|
3
3
|
import { AppValidatorService } from '../../services/validator/base.validator.class';
|
|
4
|
-
import { isNil } from '../../../shared/functions';
|
|
4
|
+
import { isNil, isNotEmptyArray } from '../../../shared/functions';
|
|
5
|
+
import { AppFormArray } from '../array/form-array';
|
|
6
|
+
import { AppPropertiesUtils } from './properties.utils';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
import * as i1 from "@angular/forms";
|
|
7
9
|
export class PropertyValidator extends AppValidatorService {
|
|
@@ -10,14 +12,44 @@ export class PropertyValidator extends AppValidatorService {
|
|
|
10
12
|
super(formBuilder, null);
|
|
11
13
|
this.formBuilder = formBuilder;
|
|
12
14
|
}
|
|
15
|
+
getFormArray(data, opts) {
|
|
16
|
+
const fromArray = new AppFormArray((value) => this.getFormGroup(value, { valueMaxLength: 2000 }), (v1, v2) => this.equals(v1, v2), (value) => this.isEmpty(value), {
|
|
17
|
+
allowReuseControls: false,
|
|
18
|
+
allowEmptyArray: true,
|
|
19
|
+
});
|
|
20
|
+
// Set data, if any
|
|
21
|
+
if (data) {
|
|
22
|
+
const dataArrayOrPromise = AppPropertiesUtils.arrayFromObject(data, opts?.definitions);
|
|
23
|
+
if (Array.isArray(dataArrayOrPromise)) {
|
|
24
|
+
if (isNotEmptyArray(dataArrayOrPromise))
|
|
25
|
+
fromArray.patchValue(dataArrayOrPromise);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// If promise: wait and set after
|
|
29
|
+
dataArrayOrPromise
|
|
30
|
+
.catch((err) => {
|
|
31
|
+
console.error('[property-validator] Error during conversion from map to array conversion: ' + (err?.message || err), data, err);
|
|
32
|
+
return null;
|
|
33
|
+
})
|
|
34
|
+
.then((values) => {
|
|
35
|
+
if (isNotEmptyArray(values))
|
|
36
|
+
fromArray.patchValue(values);
|
|
37
|
+
fromArray.updateValueAndValidity();
|
|
38
|
+
});
|
|
39
|
+
// Wait value to be set
|
|
40
|
+
fromArray.markAsPending();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return fromArray;
|
|
44
|
+
}
|
|
13
45
|
getFormGroup(data, opts) {
|
|
14
46
|
return this.formBuilder.group(this.getFormGroupConfig(data, opts));
|
|
15
47
|
}
|
|
16
48
|
getFormGroupConfig(data, opts) {
|
|
17
49
|
return {
|
|
18
|
-
key: [
|
|
50
|
+
key: [data?.key ?? null, Validators.compose([Validators.required, Validators.max(50)])],
|
|
19
51
|
value: [
|
|
20
|
-
|
|
52
|
+
data?.value ?? null,
|
|
21
53
|
opts?.valueMaxLength > 0 ? Validators.compose([Validators.required, Validators.max(opts.valueMaxLength)]) : Validators.required,
|
|
22
54
|
],
|
|
23
55
|
};
|
|
@@ -35,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
35
67
|
type: Injectable,
|
|
36
68
|
args: [{ providedIn: 'root' }]
|
|
37
69
|
}], ctorParameters: () => [{ type: i1.UntypedFormBuilder }] });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHkudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL2Zvcm0vcHJvcGVydGllcy9wcm9wZXJ0eS52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXdDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFheEQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG1CQUE2QjtJQUM1QztJQUF0QixZQUFzQixXQUErQjtRQUNuRCxLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBREwsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO0lBRXJELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBVSxFQUFFLElBQWlDO1FBQ3hELE1BQU0sU0FBUyxHQUFHLElBQUksWUFBWSxDQUNoQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFDN0QsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFDL0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQzlCO1lBQ0Usa0JBQWtCLEVBQUUsS0FBSztZQUN6QixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUNGLENBQUM7UUFFRixtQkFBbUI7UUFDbkIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDdkYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztnQkFDdEMsSUFBSSxlQUFlLENBQUMsa0JBQWtCLENBQUM7b0JBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3BGLENBQUM7aUJBQU0sQ0FBQztnQkFDTixpQ0FBaUM7Z0JBQ2pDLGtCQUFrQjtxQkFDZixLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDZFQUE2RSxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ2hJLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUMsQ0FBQztxQkFDRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDZixJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUM7d0JBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDMUQsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFDO2dCQUVMLHVCQUF1QjtnQkFDdkIsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFlLEVBQUUsSUFBK0I7UUFDM0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQWUsRUFBRSxJQUErQjtRQUNqRSxPQUFPO1lBQ0wsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsS0FBSyxFQUFFO2dCQUNMLElBQUksRUFBRSxLQUFLLElBQUksSUFBSTtnQkFDbkIsSUFBSSxFQUFFLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVE7YUFDaEk7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFZLEVBQUUsRUFBWTtRQUMvQixPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDM0MsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFhO1FBQ25CLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7dUdBNURVLGlCQUFpQjsyR0FBakIsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgeyBBcHBWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmFsaWRhdG9yL2Jhc2UudmFsaWRhdG9yLmNsYXNzJztcbmltcG9ydCB7IGlzTmlsLCBpc05vdEVtcHR5QXJyYXkgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBBcHBGb3JtQXJyYXkgfSBmcm9tICcuLi9hcnJheS9mb3JtLWFycmF5JztcbmltcG9ydCB7IEFwcFByb3BlcnRpZXNVdGlscyB9IGZyb20gJy4vcHJvcGVydGllcy51dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcGVydHlWYWxpZGF0b3JPcHRpb25zIHtcbiAgZGVmaW5pdGlvbj86IEZvcm1GaWVsZERlZmluaXRpb247XG4gIHZhbHVlTWF4TGVuZ3RoPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnRpZXNWYWxpZGF0b3JPcHRpb25zIHtcbiAgZGVmaW5pdGlvbnM/OiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIHZhbHVlTWF4TGVuZ3RoPzogbnVtYmVyO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFByb3BlcnR5VmFsaWRhdG9yIGV4dGVuZHMgQXBwVmFsaWRhdG9yU2VydmljZTxQcm9wZXJ0eT4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcikge1xuICAgIHN1cGVyKGZvcm1CdWlsZGVyLCBudWxsKTtcbiAgfVxuXG4gIGdldEZvcm1BcnJheShkYXRhPzogYW55LCBvcHRzPzogUHJvcGVydGllc1ZhbGlkYXRvck9wdGlvbnMpIHtcbiAgICBjb25zdCBmcm9tQXJyYXkgPSBuZXcgQXBwRm9ybUFycmF5PFByb3BlcnR5LCBVbnR5cGVkRm9ybUdyb3VwPihcbiAgICAgICh2YWx1ZSkgPT4gdGhpcy5nZXRGb3JtR3JvdXAodmFsdWUsIHsgdmFsdWVNYXhMZW5ndGg6IDIwMDAgfSksXG4gICAgICAodjEsIHYyKSA9PiB0aGlzLmVxdWFscyh2MSwgdjIpLFxuICAgICAgKHZhbHVlKSA9PiB0aGlzLmlzRW1wdHkodmFsdWUpLFxuICAgICAge1xuICAgICAgICBhbGxvd1JldXNlQ29udHJvbHM6IGZhbHNlLFxuICAgICAgICBhbGxvd0VtcHR5QXJyYXk6IHRydWUsXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIFNldCBkYXRhLCBpZiBhbnlcbiAgICBpZiAoZGF0YSkge1xuICAgICAgY29uc3QgZGF0YUFycmF5T3JQcm9taXNlID0gQXBwUHJvcGVydGllc1V0aWxzLmFycmF5RnJvbU9iamVjdChkYXRhLCBvcHRzPy5kZWZpbml0aW9ucyk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhQXJyYXlPclByb21pc2UpKSB7XG4gICAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZGF0YUFycmF5T3JQcm9taXNlKSkgZnJvbUFycmF5LnBhdGNoVmFsdWUoZGF0YUFycmF5T3JQcm9taXNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIHByb21pc2U6IHdhaXQgYW5kIHNldCBhZnRlclxuICAgICAgICBkYXRhQXJyYXlPclByb21pc2VcbiAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3Byb3BlcnR5LXZhbGlkYXRvcl0gRXJyb3IgZHVyaW5nIGNvbnZlcnNpb24gZnJvbSBtYXAgdG8gYXJyYXkgY29udmVyc2lvbjogJyArIChlcnI/Lm1lc3NhZ2UgfHwgZXJyKSwgZGF0YSwgZXJyKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKHZhbHVlcykgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheSh2YWx1ZXMpKSBmcm9tQXJyYXkucGF0Y2hWYWx1ZSh2YWx1ZXMpO1xuICAgICAgICAgICAgZnJvbUFycmF5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBXYWl0IHZhbHVlIHRvIGJlIHNldFxuICAgICAgICBmcm9tQXJyYXkubWFya0FzUGVuZGluZygpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZnJvbUFycmF5O1xuICB9XG5cbiAgZ2V0Rm9ybUdyb3VwKGRhdGE/OiBQcm9wZXJ0eSwgb3B0cz86IFByb3BlcnR5VmFsaWRhdG9yT3B0aW9ucyk6IFVudHlwZWRGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHRoaXMuZ2V0Rm9ybUdyb3VwQ29uZmlnKGRhdGEsIG9wdHMpKTtcbiAgfVxuXG4gIGdldEZvcm1Hcm91cENvbmZpZyhkYXRhPzogUHJvcGVydHksIG9wdHM/OiBQcm9wZXJ0eVZhbGlkYXRvck9wdGlvbnMpOiB7IFtwOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogW2RhdGE/LmtleSA/PyBudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDUwKV0pXSxcbiAgICAgIHZhbHVlOiBbXG4gICAgICAgIGRhdGE/LnZhbHVlID8/IG51bGwsXG4gICAgICAgIG9wdHM/LnZhbHVlTWF4TGVuZ3RoID4gMCA/IFZhbGlkYXRvcnMuY29tcG9zZShbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgob3B0cy52YWx1ZU1heExlbmd0aCldKSA6IFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBlcXVhbHModjE6IFByb3BlcnR5LCB2MjogUHJvcGVydHkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKCF2MSAmJiAhdjIpIHx8IHYxLmtleSA9PT0gdjIua2V5O1xuICB9XG5cbiAgaXNFbXB0eShvYmo6IFByb3BlcnR5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzTmlsKG9iaj8ua2V5KSB8fCBpc05pbChvYmoudmFsdWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -3,10 +3,12 @@ import { AppPropertiesForm } from '../properties.form';
|
|
|
3
3
|
import { StatusIds } from '../../../services/model/model.enum';
|
|
4
4
|
import { suggestFromArray } from '../../../../shared/services';
|
|
5
5
|
import { Validators } from '@angular/forms';
|
|
6
|
+
import { AppPropertiesUtils } from '../properties.utils';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@angular/forms";
|
|
8
|
-
import * as i2 from "
|
|
9
|
-
import * as i3 from "
|
|
9
|
+
import * as i2 from "../property.validator";
|
|
10
|
+
import * as i3 from "@ionic/angular";
|
|
11
|
+
import * as i4 from "../properties.form";
|
|
10
12
|
const TEST_PROPERTIES = Object.freeze({
|
|
11
13
|
// Entity
|
|
12
14
|
ENTITY: {
|
|
@@ -14,6 +16,7 @@ const TEST_PROPERTIES = Object.freeze({
|
|
|
14
16
|
label: 'Select one entity',
|
|
15
17
|
type: 'entity',
|
|
16
18
|
autocomplete: {
|
|
19
|
+
showAllOnFocus: true,
|
|
17
20
|
filter: {
|
|
18
21
|
entityName: 'LocationLevel',
|
|
19
22
|
statusIds: [StatusIds.DISABLE, StatusIds.ENABLE],
|
|
@@ -28,6 +31,7 @@ const TEST_PROPERTIES = Object.freeze({
|
|
|
28
31
|
label: 'Select many entities',
|
|
29
32
|
type: 'entities',
|
|
30
33
|
autocomplete: {
|
|
34
|
+
showAllOnFocus: true,
|
|
31
35
|
filter: {
|
|
32
36
|
entityName: 'LocationLevel',
|
|
33
37
|
statusIds: [StatusIds.DISABLE, StatusIds.ENABLE],
|
|
@@ -44,12 +48,14 @@ const FAKE_ENTITIES = [
|
|
|
44
48
|
];
|
|
45
49
|
export class PropertiesFormTestPage {
|
|
46
50
|
formBuilder;
|
|
51
|
+
pv;
|
|
47
52
|
propertyDefinitions;
|
|
48
53
|
i18nFieldPrefix;
|
|
49
54
|
form;
|
|
50
55
|
propertiesForm;
|
|
51
|
-
constructor(formBuilder) {
|
|
56
|
+
constructor(formBuilder, pv) {
|
|
52
57
|
this.formBuilder = formBuilder;
|
|
58
|
+
this.pv = pv;
|
|
53
59
|
this.i18nFieldPrefix = '';
|
|
54
60
|
this.form = formBuilder.group({
|
|
55
61
|
properties: formBuilder.array([
|
|
@@ -74,22 +80,30 @@ export class PropertiesFormTestPage {
|
|
|
74
80
|
this.propertiesForm.markAsReady();
|
|
75
81
|
this.propertiesForm.enable();
|
|
76
82
|
}
|
|
77
|
-
ngAfterViewInit() {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
async ngAfterViewInit() {
|
|
84
|
+
// Create the map, as it comes from the pod
|
|
85
|
+
const json = {
|
|
86
|
+
// Simple entity
|
|
87
|
+
[TEST_PROPERTIES.ENTITY.key]: FAKE_ENTITIES[0].id.toString(),
|
|
88
|
+
// Multiples entities
|
|
89
|
+
[TEST_PROPERTIES.ENTITIES.key]: [FAKE_ENTITIES[0], FAKE_ENTITIES[1]].map((entity) => entity.id).join(','),
|
|
90
|
+
};
|
|
91
|
+
// Convert to an array of Property
|
|
92
|
+
const data = await AppPropertiesUtils.arrayFromObject(json, this.propertyDefinitions);
|
|
93
|
+
console.debug('[properties-form-test] Value to set: ', data);
|
|
94
|
+
this.propertiesForm.value = data;
|
|
81
95
|
}
|
|
82
96
|
async suggestEntity(value, filter) {
|
|
83
97
|
return suggestFromArray(FAKE_ENTITIES, value, filter);
|
|
84
98
|
}
|
|
85
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PropertiesFormTestPage, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
86
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: PropertiesFormTestPage, selector: "app-properties-form-test", viewQueries: [{ propertyName: "propertiesForm", first: true, predicate: ["propertiesForm"], descendants: true, read: AppPropertiesForm, static: true }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Properties form test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <form [formGroup]=\"form\">\n <app-properties-form\n #propertiesForm\n formArrayName=\"properties\"\n [definitions]=\"propertyDefinitions\"\n [options]=\"{ allowEmptyArray: true }\"\n showHintKey=\"true\"\n ></app-properties-form>\n </form>\n</ion-content>\n", dependencies: [{ kind: "component", type:
|
|
99
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PropertiesFormTestPage, deps: [{ token: i1.FormBuilder }, { token: i2.PropertyValidator }], target: i0.ɵɵFactoryTarget.Component });
|
|
100
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: PropertiesFormTestPage, selector: "app-properties-form-test", viewQueries: [{ propertyName: "propertiesForm", first: true, predicate: ["propertiesForm"], descendants: true, read: AppPropertiesForm, static: true }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Properties form test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <form [formGroup]=\"form\">\n <app-properties-form\n #propertiesForm\n formArrayName=\"properties\"\n [definitions]=\"propertyDefinitions\"\n [options]=\"{ allowEmptyArray: true }\"\n showHintKey=\"true\"\n ></app-properties-form>\n </form>\n</ion-content>\n", dependencies: [{ kind: "component", type: i3.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i3.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i3.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i3.IonBackButton, selector: "ion-back-button" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i4.AppPropertiesForm, selector: "app-properties-form", inputs: ["formArrayName", "formArray", "options", "chipColor", "mobile", "appearance", "subscriptSizing", "showHintKey", "hintKeyPrefix", "showMoreButton", "showMoreButtonTitle", "showAddButton", "definitions"] }] });
|
|
87
101
|
}
|
|
88
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: PropertiesFormTestPage, decorators: [{
|
|
89
103
|
type: Component,
|
|
90
104
|
args: [{ selector: 'app-properties-form-test', template: "<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Properties form test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding\">\n <form [formGroup]=\"form\">\n <app-properties-form\n #propertiesForm\n formArrayName=\"properties\"\n [definitions]=\"propertyDefinitions\"\n [options]=\"{ allowEmptyArray: true }\"\n showHintKey=\"true\"\n ></app-properties-form>\n </form>\n</ion-content>\n" }]
|
|
91
|
-
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { propertiesForm: [{
|
|
105
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.PropertyValidator }], propDecorators: { propertiesForm: [{
|
|
92
106
|
type: ViewChild,
|
|
93
107
|
args: ['propertiesForm', { read: AppPropertiesForm, static: true }]
|
|
94
108
|
}] } });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy1mb3JtLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRy9ELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBRXBFLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDcEMsU0FBUztJQUNULE1BQU0sRUFBdUI7UUFDM0IsR0FBRyxFQUFFLDJCQUEyQjtRQUNoQyxLQUFLLEVBQUUsbUJBQW1CO1FBQzFCLElBQUksRUFBRSxRQUFRO1FBQ2QsWUFBWSxFQUFFO1lBQ1osTUFBTSxFQUFFO2dCQUNOLFVBQVUsRUFBRSxlQUFlO2dCQUMzQixTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUM7YUFDakQ7WUFDRCxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO1NBQzlCO1FBQ0QsWUFBWSxFQUFFLElBQUk7S0FDbkI7SUFFRCxXQUFXO0lBQ1gsUUFBUSxFQUF1QjtRQUM3QixHQUFHLEVBQUUsNkJBQTZCO1FBQ2xDLEtBQUssRUFBRSxzQkFB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Q0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFUyxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQVUsRUFBRSxNQUFXO1FBQ25ELE9BQU8sZ0JBQWdCLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4RCxDQUFDO3VHQTNDVSxzQkFBc0I7MkZBQXRCLHNCQUFzQiw2SkFLSSxpQkFBaUIsMkNDeER4RCx3akJBcUJBOzsyRkQ4QmEsc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLDBCQUEwQjtnRkFRb0MsY0FBYztzQkFBckYsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9mb3JtL2ZpZWxkLm1vZGVsJztcbmltcG9ydCB7IEFwcFByb3BlcnRpZXNGb3JtIH0gZnJvbSAnLi4vcHJvcGVydGllcy5mb3JtJztcbmltcG9ydCB7IFN0YXR1c0lkcyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGVsL21vZGVsLmVudW0nO1xuaW1wb3J0IHsgc3VnZ2VzdEZyb21BcnJheSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBMb2FkUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IE9iamVjdE1hcCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5jb25zdCBURVNUX1BST1BFUlRJRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgLy8gRW50aXR5XG4gIEVOVElUWTogPEZvcm1GaWVsZERlZmluaXRpb24+e1xuICAgIGtleTogJ3N1bWFyaXMucHJvcGVydGllcy5lbnRpdHknLFxuICAgIGxhYmVsOiAnU2VsZWN0IG9uZSBlbnRpdHknLFxuICAgIHR5cGU6ICdlbnRpdHknLFxuICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGVudGl0eU5hbWU6ICdMb2NhdGlvbkxldmVsJyxcbiAgICAgICAgc3RhdHVzSWRzOiBbU3RhdHVzSWRzLkRJU0FCTEUsIFN0YXR1c0lkcy5FTkFCTEVdLFxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IFsnbGFiZWwnLCAnbmFtZSddLFxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICB9LFxuXG4gIC8vIEVudGl0aWVzXG4gIEVOVElUSUVTOiA8Rm9ybUZpZWxkRGVmaW5pdGlvbj57XG4gICAga2V5OiAnc3VtYXJpcy5wcm9wZXJ0aWVzLmVudGl0aWVzJyxcbiAgICBsYWJlbDogJ1NlbGVjdCBtYW55IGVudGl0aWVzJyxcbiAgICB0eXBlOiAnZW50aXRpZXMnLFxuICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGVudGl0eU5hbWU6ICdMb2NhdGlvbkxldmVsJyxcbiAgICAgICAgc3RhdHVzSWRzOiBbU3RhdHVzSWRzLkRJU0FCTEUsIFN0YXR1c0lkcy5FTkFCTEVdLFxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IFsnbGFiZWwnLCAnbmFtZSddLFxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICB9LFxufSk7XG5cbmNvbnN0IEZBS0VfRU5USVRJRVMgPSBbXG4gIHsgaWQ6IDEsIGxhYmVsOiAnQUFBJywgbmFtZTogJ0l0ZW0gQScsIGRlc2NyaXB0aW9uOiAnVmVyeSBsb25nIGRlc2NyaXB0aW9uIEEnLCBjb21tZW50czogJ1ZlcnkgdmVyeSBsb25nIGNvbW1lbnRzLi4uIGFnYWluIGZvciBBJyB9LFxuICB7IGlkOiAyLCBsYWJlbDogJ0JCQicsIG5hbWU6ICdJdGVtIEInLCBkZXNjcmlwdGlvbjogJ1ZlcnkgbG9uZyBkZXNjcmlwdGlvbiBCJywgY29tbWVudHM6ICdWZXJ5IHZlcnkgbG9uZyBjb21tZW50cy4uLiBhZ2FpbiBmb3IgQicgfSxcbiAgeyBpZDogMywgbGFiZWw6ICdDQ0MnLCBuYW1lOiAnSXRlbSBDJywgZGVzY3JpcHRpb246ICdWZXJ5IGxvbmcgZGVzY3JpcHRpb24gQycsIGNvbW1lbnRzOiAnVmVyeSB2ZXJ5IGxvbmcgY29tbWVudHMuLi4gYWdhaW4gZm9yIEMnIH0sXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcHJvcGVydGllcy1mb3JtLXRlc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJvcGVydGllcy1mb3JtLnRlc3QuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb3BlcnRpZXNGb3JtVGVzdFBhZ2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBwcm9wZXJ0eURlZmluaXRpb25zOiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIGkxOG5GaWVsZFByZWZpeDogc3RyaW5nO1xuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgQFZpZXdDaGlsZCgncHJvcGVydGllc0Zvcm0nLCB7IHJlYWQ6IEFwcFByb3BlcnRpZXNGb3JtLCBzdGF0aWM6IHRydWUgfSkgcHJvcGVydGllc0Zvcm06IEFwcFByb3BlcnRpZXNGb3JtO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIpIHtcbiAgICB0aGlzLmkxOG5GaWVsZFByZWZpeCA9ICcnO1xuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHByb3BlcnRpZXM6IGZvcm1CdWlsZGVyLmFycmF5KFtcbiAgICAgICAgdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAga2V5OiBbbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heCg1MCldKV0sXG4gICAgICAgICAgdmFsdWU6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgfSksXG4gICAgICBdKSxcbiAgICB9KTtcblxuICAgIHRoaXMucHJvcGVydHlEZWZpbml0aW9ucyA9IE9iamVjdC52YWx1ZXMoVEVTVF9QUk9QRVJUSUVTKS5tYXAoKGRlZikgPT4ge1xuICAgICAgaWYgKGRlZi50eXBlID09PSAnZW50aXR5JyB8fCBkZWYudHlwZSA9PT0gJ2VudGl0aWVzJykge1xuICAgICAgICBkZWYgPSBPYmplY3QuYXNzaWduKHt9LCBkZWYpOyAvLyBDb3B5XG4gICAgICAgIGRlZi5hdXRvY29tcGxldGUgPSB7XG4gICAgICAgICAgc3VnZ2VzdEZuOiAodmFsdWUsIGZpbHRlcikgPT4gdGhpcy5zdWdnZXN0RW50aXR5KHZhbHVlLCBmaWx0ZXIpLFxuICAgICAgICAgIC4uLmRlZi5hdXRvY29tcGxldGUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gZGVmO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzRm9ybS5tYXJrQXNSZWFkeSgpO1xuICAgIHRoaXMucHJvcGVydGllc0Zvcm0uZW5hYmxlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgcHJvcGVydGllczogT2JqZWN0TWFwID0ge307XG4gICAgcHJvcGVydGllc1tURVNUX1BST1BFUlRJRVMuRU5USVRJRVMua2V5XSA9IEZBS0VfRU5USVRJRVNbMF07XG4gICAgdGhpcy5wcm9wZXJ0aWVzRm9ybS5zZXRWYWx1ZShwcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzdWdnZXN0RW50aXR5KHZhbHVlOiBhbnksIGZpbHRlcjogYW55KTogUHJvbWlzZTxMb2FkUmVzdWx0PGFueT4+IHtcbiAgICByZXR1cm4gc3VnZ2VzdEZyb21BcnJheShGQUtFX0VOVElUSUVTLCB2YWx1ZSwgZmlsdGVyKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJhY2stYnV0dG9uPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPlByb3BlcnRpZXMgZm9ybSB0ZXN0IHBhZ2U8L2lvbi10aXRsZT5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPGFwcC1wcm9wZXJ0aWVzLWZvcm1cbiAgICAgICNwcm9wZXJ0aWVzRm9ybVxuICAgICAgZm9ybUFycmF5TmFtZT1cInByb3BlcnRpZXNcIlxuICAgICAgW2RlZmluaXRpb25zXT1cInByb3BlcnR5RGVmaW5pdGlvbnNcIlxuICAgICAgW29wdGlvbnNdPVwieyBhbGxvd0VtcHR5QXJyYXk6IHRydWUgfVwiXG4gICAgICBzaG93SGludEtleT1cInRydWVcIlxuICAgID48L2FwcC1wcm9wZXJ0aWVzLWZvcm0+XG4gIDwvZm9ybT5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydGllcy1mb3JtLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvZm9ybS9wcm9wZXJ0aWVzL3Rlc3RpbmcvcHJvcGVydGllcy1mb3JtLnRlc3QuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQUd6RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3BDLFNBQVM7SUFDVCxNQUFNLEVBQXVCO1FBQzNCLEdBQUcsRUFBRSwyQkFBMkI7UUFDaEMsS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixJQUFJLEVBQUUsUUFBUTtRQUNkLFlBQVksRUFBRTtZQUNaLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLE1BQU0sRUFBRTtnQkFDTixVQUFVLEVBQUUsZUFBZTtnQkFDM0IsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDO2FBQ2pEO1lBQ0QsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztTQUM5QjtRQUNELFlBQVksRUFBRSxJQUFJO0tBQ25CO0lB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dCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1GaWVsZERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBBcHBQcm9wZXJ0aWVzRm9ybSB9IGZyb20gJy4uL3Byb3BlcnRpZXMuZm9ybSc7XG5pbXBvcnQgeyBTdGF0dXNJZHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RlbC9tb2RlbC5lbnVtJztcbmltcG9ydCB7IHN1Z2dlc3RGcm9tQXJyYXkgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljZXMnO1xuaW1wb3J0IHsgTG9hZFJlc3VsdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUHJvcGVydHlWYWxpZGF0b3IgfSBmcm9tICcuLi9wcm9wZXJ0eS52YWxpZGF0b3InO1xuaW1wb3J0IHsgQXBwUHJvcGVydGllc1V0aWxzIH0gZnJvbSAnLi4vcHJvcGVydGllcy51dGlscyc7XG5pbXBvcnQgeyBQcm9wZXJ0aWVzTWFwIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcblxuY29uc3QgVEVTVF9QUk9QRVJUSUVTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIC8vIEVudGl0eVxuICBFTlRJVFk6IDxGb3JtRmllbGREZWZpbml0aW9uPntcbiAgICBrZXk6ICdzdW1hcmlzLnByb3BlcnRpZXMuZW50aXR5JyxcbiAgICBsYWJlbDogJ1NlbGVjdCBvbmUgZW50aXR5JyxcbiAgICB0eXBlOiAnZW50aXR5JyxcbiAgICBhdXRvY29tcGxldGU6IHtcbiAgICAgIHNob3dBbGxPbkZvY3VzOiB0cnVlLFxuICAgICAgZmlsdGVyOiB7XG4gICAgICAgIGVudGl0eU5hbWU6ICdMb2NhdGlvbkxldmVsJyxcbiAgICAgICAgc3RhdHVzSWRzOiBbU3RhdHVzSWRzLkRJU0FCTEUsIFN0YXR1c0lkcy5FTkFCTEVdLFxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IFsnbGFiZWwnLCAnbmFtZSddLFxuICAgIH0sXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICB9LFxuXG4gIC8vIEVudGl0aWVzXG4gIEVOVElUSUVTOiA8Rm9ybUZpZWxkRGVmaW5pdGlvbj57XG4gICAga2V5OiAnc3VtYXJpcy5wcm9wZXJ0aWVzLmVudGl0aWVzJyxcbiAgICBsYWJlbDogJ1NlbGVjdCBtYW55IGVudGl0aWVzJyxcbiAgICB0eXBlOiAnZW50aXRpZXMnLFxuICAgIGF1dG9jb21wbGV0ZToge1xuICAgICAgc2hvd0FsbE9uRm9jdXM6IHRydWUsXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgZW50aXR5TmFtZTogJ0xvY2F0aW9uTGV2ZWwnLFxuICAgICAgICBzdGF0dXNJZHM6IFtTdGF0dXNJZHMuRElTQUJMRSwgU3RhdHVzSWRzLkVOQUJMRV0sXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczogWydsYWJlbCcsICduYW1lJ10sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gIH0sXG59KTtcblxuY29uc3QgRkFLRV9FTlRJVElFUyA9IFtcbiAgeyBpZDogMSwgbGFiZWw6ICdBQUEnLCBuYW1lOiAnSXRlbSBBJywgZGVzY3JpcHRpb246ICdWZXJ5IGxvbmcgZGVzY3JpcHRpb24gQScsIGNvbW1lbnRzOiAnVmVyeSB2ZXJ5IGxvbmcgY29tbWVudHMuLi4gYWdhaW4gZm9yIEEnIH0sXG4gIHsgaWQ6IDIsIGxhYmVsOiAnQkJCJywgbmFtZTogJ0l0ZW0gQicsIGRlc2NyaXB0aW9uOiAnVmVyeSBsb25nIGRlc2NyaXB0aW9uIEInLCBjb21tZW50czogJ1ZlcnkgdmVyeSBsb25nIGNvbW1lbnRzLi4uIGFnYWluIGZvciBCJyB9LFxuICB7IGlkOiAzLCBsYWJlbDogJ0NDQycsIG5hbWU6ICdJdGVtIEMnLCBkZXNjcmlwdGlvbjogJ1ZlcnkgbG9uZyBkZXNjcmlwdGlvbiBDJywgY29tbWVudHM6ICdWZXJ5IHZlcnkgbG9uZyBjb21tZW50cy4uLiBhZ2FpbiBmb3IgQycgfSxcbl07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1wcm9wZXJ0aWVzLWZvcm0tdGVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9wZXJ0aWVzLWZvcm0udGVzdC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvcGVydGllc0Zvcm1UZXN0UGFnZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByb3BlcnR5RGVmaW5pdGlvbnM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcbiAgaTE4bkZpZWxkUHJlZml4OiBzdHJpbmc7XG4gIGZvcm06IEZvcm1Hcm91cDtcblxuICBAVmlld0NoaWxkKCdwcm9wZXJ0aWVzRm9ybScsIHsgcmVhZDogQXBwUHJvcGVydGllc0Zvcm0sIHN0YXRpYzogdHJ1ZSB9KSBwcm9wZXJ0aWVzRm9ybTogQXBwUHJvcGVydGllc0Zvcm07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICBwcm90ZWN0ZWQgcHY6IFByb3BlcnR5VmFsaWRhdG9yXG4gICkge1xuICAgIHRoaXMuaTE4bkZpZWxkUHJlZml4ID0gJyc7XG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgcHJvcGVydGllczogZm9ybUJ1aWxkZXIuYXJyYXkoW1xuICAgICAgICB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICBrZXk6IFtudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDUwKV0pXSxcbiAgICAgICAgICB2YWx1ZTogW251bGwsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICB9KSxcbiAgICAgIF0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5wcm9wZXJ0eURlZmluaXRpb25zID0gT2JqZWN0LnZhbHVlcyhURVNUX1BST1BFUlRJRVMpLm1hcCgoZGVmKSA9PiB7XG4gICAgICBpZiAoZGVmLnR5cGUgPT09ICdlbnRpdHknIHx8IGRlZi50eXBlID09PSAnZW50aXRpZXMnKSB7XG4gICAgICAgIGRlZiA9IE9iamVjdC5hc3NpZ24oe30sIGRlZik7IC8vIENvcHlcbiAgICAgICAgZGVmLmF1dG9jb21wbGV0ZSA9IHtcbiAgICAgICAgICBzdWdnZXN0Rm46ICh2YWx1ZSwgZmlsdGVyKSA9PiB0aGlzLnN1Z2dlc3RFbnRpdHkodmFsdWUsIGZpbHRlciksXG4gICAgICAgICAgLi4uZGVmLmF1dG9jb21wbGV0ZSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZWY7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnByb3BlcnRpZXNGb3JtLm1hcmtBc1JlYWR5KCk7XG4gICAgdGhpcy5wcm9wZXJ0aWVzRm9ybS5lbmFibGUoKTtcbiAgfVxuXG4gIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvLyBDcmVhdGUgdGhlIG1hcCwgYXMgaXQgY29tZXMgZnJvbSB0aGUgcG9kXG4gICAgY29uc3QganNvbiA9IDxQcm9wZXJ0aWVzTWFwPntcbiAgICAgIC8vIFNpbXBsZSBlbnRpdHlcbiAgICAgIFtURVNUX1BST1BFUlRJRVMuRU5USVRZLmtleV06IEZBS0VfRU5USVRJRVNbMF0uaWQudG9TdHJpbmcoKSxcblxuICAgICAgLy8gTXVsdGlwbGVzIGVudGl0aWVzXG4gICAgICBbVEVTVF9QUk9QRVJUSUVTLkVOVElUSUVTLmtleV06IFtGQUtFX0VOVElUSUVTWzBdLCBGQUtFX0VOVElUSUVTWzFdXS5tYXAoKGVudGl0eSkgPT4gZW50aXR5LmlkKS5qb2luKCcsJyksXG4gICAgfTtcblxuICAgIC8vIENvbnZlcnQgdG8gYW4gYXJyYXkgb2YgUHJvcGVydHlcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgQXBwUHJvcGVydGllc1V0aWxzLmFycmF5RnJvbU9iamVjdChqc29uLCB0aGlzLnByb3BlcnR5RGVmaW5pdGlvbnMpO1xuXG4gICAgY29uc29sZS5kZWJ1ZygnW3Byb3BlcnRpZXMtZm9ybS10ZXN0XSBWYWx1ZSB0byBzZXQ6ICcsIGRhdGEpO1xuICAgIHRoaXMucHJvcGVydGllc0Zvcm0udmFsdWUgPSBkYXRhO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHN1Z2dlc3RFbnRpdHkodmFsdWU6IGFueSwgZmlsdGVyOiBhbnkpOiBQcm9taXNlPExvYWRSZXN1bHQ8YW55Pj4ge1xuICAgIHJldHVybiBzdWdnZXN0RnJvbUFycmF5KEZBS0VfRU5USVRJRVMsIHZhbHVlLCBmaWx0ZXIpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwicHJpbWFyeVwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYmFjay1idXR0b24+PC9pb24tYmFjay1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cblxuICAgIDxpb24tdGl0bGU+UHJvcGVydGllcyBmb3JtIHRlc3QgcGFnZTwvaW9uLXRpdGxlPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8YXBwLXByb3BlcnRpZXMtZm9ybVxuICAgICAgI3Byb3BlcnRpZXNGb3JtXG4gICAgICBmb3JtQXJyYXlOYW1lPVwicHJvcGVydGllc1wiXG4gICAgICBbZGVmaW5pdGlvbnNdPVwicHJvcGVydHlEZWZpbml0aW9uc1wiXG4gICAgICBbb3B0aW9uc109XCJ7IGFsbG93RW1wdHlBcnJheTogdHJ1ZSB9XCJcbiAgICAgIHNob3dIaW50S2V5PVwidHJ1ZVwiXG4gICAgPjwvYXBwLXByb3BlcnRpZXMtZm9ybT5cbiAgPC9mb3JtPlxuPC9pb24tY29udGVudD5cbiJdfQ==
|
|
@@ -5,7 +5,7 @@ import { AppAuthModule } from '../auth/auth.module';
|
|
|
5
5
|
import { TranslateModule } from '@ngx-translate/core';
|
|
6
6
|
import { RouterModule } from '@angular/router';
|
|
7
7
|
import { AppInstallUpgradeCardModule } from '../install/install-upgrade-card.module';
|
|
8
|
-
import { RxStateModule } from '../../shared/rx-state.module';
|
|
8
|
+
import { RxStateModule } from '../../shared/rx-state/rx-state.module';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "@ngx-translate/core";
|
|
11
11
|
export class AppHomePageModule {
|
|
@@ -39,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
39
39
|
exports: [RouterModule, TranslateModule, HomePage],
|
|
40
40
|
}]
|
|
41
41
|
}] });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvaG9tZS9ob21lLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBaUJ0RSxNQUFNLE9BQU8saUJBQWlCO3VHQUFqQixpQkFBaUI7d0dBQWpCLGlCQUFpQixpQkFIYixRQUFRLGFBVnJCLFlBQVk7WUFDWixZQUFZLHNCQUVaLGFBQWE7WUFFYixjQUFjO1lBQ2QsYUFBYTtZQUNiLDJCQUEyQixhQUluQixZQUFZLEVBQUUsZUFBZSxFQUFFLFFBQVE7d0dBRXRDLGlCQUFpQixZQWIxQixZQUFZO1lBQ1osWUFBWTtZQUNaLGVBQWUsQ0FBQyxRQUFRLEVBQUU7WUFDMUIsYUFBYTtZQUViLGNBQWM7WUFDZCxhQUFhO1lBQ2IsMkJBQTJCLEVBSW5CLFlBQVksRUFBRSxlQUFlOzsyRkFFNUIsaUJBQWlCO2tCQWY3QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osZUFBZSxDQUFDLFFBQVEsRUFBRTt3QkFDMUIsYUFBYTt3QkFFYixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsMkJBQTJCO3FCQUM1QjtvQkFFRCxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDO2lCQUNuRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBIb21lUGFnZSB9IGZyb20gJy4vaG9tZSc7XG5pbXBvcnQgeyBBcHBBdXRoTW9kdWxlIH0gZnJvbSAnLi4vYXV0aC9hdXRoLm1vZHVsZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcHBJbnN0YWxsVXBncmFkZUNhcmRNb2R1bGUgfSBmcm9tICcuLi9pbnN0YWxsL2luc3RhbGwtdXBncmFkZS1jYXJkLm1vZHVsZSc7XG5pbXBvcnQgeyBSeFN0YXRlTW9kdWxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3J4LXN0YXRlL3J4LXN0YXRlLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBTaGFyZWRNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgIFJ4U3RhdGVNb2R1bGUsXG5cbiAgICAvLyBBcHAgbW9kdWxlc1xuICAgIEFwcEF1dGhNb2R1bGUsXG4gICAgQXBwSW5zdGFsbFVwZ3JhZGVDYXJkTW9kdWxlLFxuICBdLFxuXG4gIGRlY2xhcmF0aW9uczogW0hvbWVQYWdlXSxcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBIb21lUGFnZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFwcEhvbWVQYWdlTW9kdWxlIHt9XG4iXX0=
|
|
@@ -4,7 +4,7 @@ import { MenuComponent } from './menu.component';
|
|
|
4
4
|
import { TranslateModule } from '@ngx-translate/core';
|
|
5
5
|
import { RouterModule } from '@angular/router';
|
|
6
6
|
import { SubMenuTabDirective } from './sub-menu-tab.directive';
|
|
7
|
-
import { RxStateModule } from '../../shared/rx-state.module';
|
|
7
|
+
import { RxStateModule } from '../../shared/rx-state/rx-state.module';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "@ngx-translate/core";
|
|
10
10
|
export class AppMenuModule {
|
|
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
|
|
|
44
44
|
],
|
|
45
45
|
}]
|
|
46
46
|
}] });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvbWVudS9tZW51Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7OztBQW9CdEUsTUFBTSxPQUFPLGFBQWE7dUdBQWIsYUFBYTt3R0FBYixhQUFhO1lBZHRCLGFBQWE7WUFDYixhQUFhO1lBQ2IsWUFBWTtZQUNaLG1CQUFtQixhQU5YLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYTtZQVNqRCxVQUFVO1lBQ1YsZUFBZTtZQUNmLGFBQWE7WUFDYixhQUFhO1lBQ2IsWUFBWTtZQUNaLG1CQUFtQjt3R0FHVixhQUFhLFlBakJkLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUU7WUFTN0UsVUFBVTtZQUNWLGVBQWU7OzJGQU9OLGFBQWE7a0JBbEJ6QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFFaEYsWUFBWSxFQUFFO3dCQUNaLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixZQUFZO3dCQUNaLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixtQkFBbUI7cUJBQ3BCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IE1lbnVDb21wb25lbnQgfSBmcm9tICcuL21lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1Yk1lbnVUYWJEaXJlY3RpdmUgfSBmcm9tICcuL3N1Yi1tZW51LXRhYi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUnhTdGF0ZU1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9yeC1zdGF0ZS9yeC1zdGF0ZS5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbU2hhcmVkTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIFJ4U3RhdGVNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpXSxcblxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICAvLyBDb21wb25lbnRzXG4gICAgTWVudUNvbXBvbmVudCxcbiAgICAvLyBEaXJlY3RpdmVcbiAgICBTdWJNZW51VGFiRGlyZWN0aXZlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgLy8gTW9kdWxlc1xuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAvLyBDb21wb25lbnRzXG4gICAgTWVudUNvbXBvbmVudCxcbiAgICAvLyBEaXJlY3RpdmVcbiAgICBTdWJNZW51VGFiRGlyZWN0aXZlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBcHBNZW51TW9kdWxlIHt9XG4iXX0=
|