@apipass/schemas 1.0.7 → 1.0.8
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/base-schema.component.d.ts +12 -12
- package/{esm2020 → esm2022}/apipass-schemas.mjs +4 -4
- package/esm2022/base-schema.component.mjs +38 -0
- package/{esm2020 → esm2022}/public-api.mjs +16 -16
- package/{esm2020 → esm2022}/schema-custom-attributes/schema-custom-attributes.mjs +169 -169
- package/esm2022/schema-fields.service.mjs +81 -0
- package/esm2022/schema-form/schema-array/array-session/array-session.mjs +141 -0
- package/{esm2020 → esm2022}/schema-form/schema-array/schema-array.mjs +219 -220
- package/esm2022/schema-form/schema-form.mjs +107 -0
- package/esm2022/schema-form/schema-input/field-render/field-render.mjs +76 -0
- package/esm2022/schema-form/schema-input/input-render/boolean-input/boolean-input.component.mjs +51 -0
- package/esm2022/schema-form/schema-input/input-render/input-render.mjs +193 -0
- package/esm2022/schema-form/schema-input/input-render/number-input/number-input.component.mjs +49 -0
- package/esm2022/schema-form/schema-input/schema-input.mjs +95 -0
- package/esm2022/schema-form/schema-object/schema-object.mjs +125 -0
- package/esm2022/schema-form-render.mjs +126 -0
- package/{esm2020 → esm2022}/schema-form-render.module.mjs +109 -108
- package/esm2022/schema-validation-field.mjs +18 -0
- package/{esm2020 → esm2022}/struct.utils.mjs +8 -8
- package/esm2022/type-script-compile/type-script-compile.base.mjs +115 -0
- package/{fesm2020 → fesm2022}/apipass-schemas.mjs +1571 -1563
- package/fesm2022/apipass-schemas.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/package.json +15 -21
- package/public-api.d.ts +16 -16
- package/schema-custom-attributes/schema-custom-attributes.d.ts +21 -21
- package/schema-fields.service.d.ts +14 -14
- package/schema-form/schema-array/array-session/array-session.d.ts +19 -19
- package/schema-form/schema-array/schema-array.d.ts +31 -32
- package/schema-form/schema-form.d.ts +31 -31
- package/schema-form/schema-input/field-render/field-render.d.ts +16 -16
- package/schema-form/schema-input/input-render/boolean-input/boolean-input.component.d.ts +15 -15
- package/schema-form/schema-input/input-render/input-render.d.ts +29 -29
- package/schema-form/schema-input/input-render/number-input/number-input.component.d.ts +15 -15
- package/schema-form/schema-input/schema-input.d.ts +18 -19
- package/schema-form/schema-object/schema-object.d.ts +34 -34
- package/schema-form-render.d.ts +31 -31
- package/schema-form-render.module.d.ts +23 -23
- package/schema-validation-field.d.ts +23 -23
- package/struct.utils.d.ts +1 -1
- package/type-script-compile/type-script-compile.base.d.ts +17 -17
- package/esm2020/base-schema.component.mjs +0 -37
- package/esm2020/schema-fields.service.mjs +0 -80
- package/esm2020/schema-form/schema-array/array-session/array-session.mjs +0 -143
- package/esm2020/schema-form/schema-form.mjs +0 -107
- package/esm2020/schema-form/schema-input/field-render/field-render.mjs +0 -69
- package/esm2020/schema-form/schema-input/input-render/boolean-input/boolean-input.component.mjs +0 -46
- package/esm2020/schema-form/schema-input/input-render/input-render.mjs +0 -192
- package/esm2020/schema-form/schema-input/input-render/number-input/number-input.component.mjs +0 -44
- package/esm2020/schema-form/schema-input/schema-input.mjs +0 -96
- package/esm2020/schema-form/schema-object/schema-object.mjs +0 -123
- package/esm2020/schema-form-render.mjs +0 -126
- package/esm2020/schema-validation-field.mjs +0 -14
- package/esm2020/type-script-compile/type-script-compile.base.mjs +0 -114
- package/fesm2015/apipass-schemas.mjs +0 -1801
- package/fesm2015/apipass-schemas.mjs.map +0 -1
- package/fesm2020/apipass-schemas.mjs.map +0 -1
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { SchemaValidationField } from './schema-validation-field';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
class SchemaFieldsService {
|
|
5
|
+
async validateSchemaFields(propertiesRendered, model, editing) {
|
|
6
|
+
if (!propertiesRendered) {
|
|
7
|
+
return new SchemaValidationField([], [], []);
|
|
8
|
+
}
|
|
9
|
+
const emptyFields = [];
|
|
10
|
+
const invalidMinLengthFields = [];
|
|
11
|
+
const invalidMaxLengthFields = [];
|
|
12
|
+
this.processProperties(propertiesRendered, model, editing, emptyFields, invalidMinLengthFields, invalidMaxLengthFields);
|
|
13
|
+
const structValidationField = new SchemaValidationField(emptyFields, invalidMinLengthFields, invalidMaxLengthFields);
|
|
14
|
+
structValidationField.validationErrorsLabel = await this.getErrorsStringArray(structValidationField);
|
|
15
|
+
return structValidationField;
|
|
16
|
+
}
|
|
17
|
+
processProperties(propertiesRendered, model, editing, emptyFields, invalidMinLengthFields, invalidMaxLengthFields, recursive) {
|
|
18
|
+
for (const property of propertiesRendered) {
|
|
19
|
+
if ((property.type === 'object' || property.type === 'array') && property.properties) {
|
|
20
|
+
this.processProperties(property.properties, model[property.id], editing, emptyFields, invalidMinLengthFields, invalidMaxLengthFields, true);
|
|
21
|
+
}
|
|
22
|
+
else if (property.type === 'array' && !property.properties) {
|
|
23
|
+
const newProperty = { ...property };
|
|
24
|
+
newProperty.type = 'string';
|
|
25
|
+
this.processProperties([newProperty], model[property.id], editing, emptyFields, invalidMinLengthFields, invalidMaxLengthFields, true);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const validateModel = recursive ? model : model[property.id];
|
|
29
|
+
if (property.type !== 'password' || !editing || validateModel !== undefined) {
|
|
30
|
+
if (property?.canRender && property?.minLength > 0 &&
|
|
31
|
+
(validateModel === undefined || validateModel === '' || validateModel === null)) {
|
|
32
|
+
emptyFields.push(property);
|
|
33
|
+
}
|
|
34
|
+
else if (property?.canRender && property?.minLength > 0 && (validateModel?.length < property.minLength)) {
|
|
35
|
+
invalidMinLengthFields.push(property);
|
|
36
|
+
}
|
|
37
|
+
else if (property?.canRender && property?.maxLength > 0 && (validateModel?.length > property.maxLength)) {
|
|
38
|
+
invalidMaxLengthFields.push(property);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async getErrorsStringArray(structValidation) {
|
|
45
|
+
if (!structValidation.isInvalidSchemaFields()) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
const errors = [];
|
|
49
|
+
for (const field of structValidation.emptyFields) {
|
|
50
|
+
const fieldName = field.title || field.id;
|
|
51
|
+
errors.push({
|
|
52
|
+
type: 'emptyFields',
|
|
53
|
+
fieldName
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
for (const field of structValidation.invalidMinLengthFields) {
|
|
57
|
+
const fieldName = field.title || field.id;
|
|
58
|
+
errors.push({
|
|
59
|
+
type: 'invalidMinLengthFields',
|
|
60
|
+
fieldName,
|
|
61
|
+
minLength: field.minLength
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
for (const field of structValidation.invalidMaxLengthFields) {
|
|
65
|
+
const fieldName = field.title || field.id;
|
|
66
|
+
errors.push({
|
|
67
|
+
type: 'invalidMaxLengthFields',
|
|
68
|
+
fieldName,
|
|
69
|
+
maxLength: field.maxLength
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return errors;
|
|
73
|
+
}
|
|
74
|
+
static ɵfac = function SchemaFieldsService_Factory(t) { return new (t || SchemaFieldsService)(); };
|
|
75
|
+
static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SchemaFieldsService, factory: SchemaFieldsService.ɵfac });
|
|
76
|
+
}
|
|
77
|
+
export { SchemaFieldsService };
|
|
78
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchemaFieldsService, [{
|
|
79
|
+
type: Injectable
|
|
80
|
+
}], null, null); })();
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWZpZWxkcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvc2NoZW1hcy9zcmMvc2NoZW1hLWZpZWxkcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7O0FBRWpFLE1BQ2EsbUJBQW1CO0lBQ3ZCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBRSxrQkFBeUIsRUFBRSxLQUFVLEVBQUUsT0FBZ0I7UUFDeEYsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1NBQzdDO1FBRUQsTUFBTSxXQUFXLEdBQVUsRUFBRSxDQUFBO1FBQzdCLE1BQU0sc0JBQXNCLEdBQVUsRUFBRSxDQUFBO1FBQ3hDLE1BQU0sc0JBQXNCLEdBQVUsRUFBRSxDQUFBO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQyxDQUFBO1FBRXZILE1BQU0scUJBQXFCLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUMsQ0FBQTtRQUNwSCxxQkFBcUIsQ0FBQyxxQkFBcUIsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBRXBHLE9BQU8scUJBQXFCLENBQUE7SUFDOUIsQ0FBQztJQUVPLGlCQUFpQixDQUFFLGtCQUF5QixFQUNsRCxLQUFVLEVBQ1YsT0FBZ0IsRUFDaEIsV0FBa0IsRUFDbEIsc0JBQTZCLEVBQzdCLHNCQUE2QixFQUM3QixTQUFtQjtRQUNuQixLQUFL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LEtBQUssQ0FBQyxTQUFTO2FBQzNCLENBQUMsQ0FBQTtTQUNIO1FBQ0QsS0FBSyxNQUFNLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQyxzQkFBc0IsRUFBRTtZQUMzRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUE7WUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixJQUFJLEVBQUUsd0JBQXdCO2dCQUM5QixTQUFTO2dCQUNULFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUzthQUMzQixDQUFDLENBQUE7U0FDSDtRQUNELE9BQU8sTUFBTSxDQUFBO0lBQ2YsQ0FBQzs2RUEvRVUsbUJBQW1CO2dFQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1COztTQUFuQixtQkFBbUI7dUZBQW5CLG1CQUFtQjtjQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IFNjaGVtYVZhbGlkYXRpb25GaWVsZCB9IGZyb20gJy4vc2NoZW1hLXZhbGlkYXRpb24tZmllbGQnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTY2hlbWFGaWVsZHNTZXJ2aWNlIHtcbiAgcHVibGljIGFzeW5jIHZhbGlkYXRlU2NoZW1hRmllbGRzIChwcm9wZXJ0aWVzUmVuZGVyZWQ6IGFueVtdLCBtb2RlbDogYW55LCBlZGl0aW5nOiBib29sZWFuKTogUHJvbWlzZTxTY2hlbWFWYWxpZGF0aW9uRmllbGQ+IHtcclxuICAgIGlmICghcHJvcGVydGllc1JlbmRlcmVkKSB7XHJcbiAgICAgIHJldHVybiBuZXcgU2NoZW1hVmFsaWRhdGlvbkZpZWxkKFtdLCBbXSwgW10pXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZW1wdHlGaWVsZHM6IGFueVtdID0gW11cclxuICAgIGNvbnN0IGludmFsaWRNaW5MZW5ndGhGaWVsZHM6IGFueVtdID0gW11cclxuICAgIGNvbnN0IGludmFsaWRNYXhMZW5ndGhGaWVsZHM6IGFueVtdID0gW11cclxuICAgIHRoaXMucHJvY2Vzc1Byb3BlcnRpZXMocHJvcGVydGllc1JlbmRlcmVkLCBtb2RlbCwgZWRpdGluZywgZW1wdHlGaWVsZHMsIGludmFsaWRNaW5MZW5ndGhGaWVsZHMsIGludmFsaWRNYXhMZW5ndGhGaWVsZHMpXHJcblxyXG4gICAgY29uc3Qgc3RydWN0VmFsaWRhdGlvbkZpZWxkID0gbmV3IFNjaGVtYVZhbGlkYXRpb25GaWVsZChlbXB0eUZpZWxkcywgaW52YWxpZE1pbkxlbmd0aEZpZWxkcywgaW52YWxpZE1heExlbmd0aEZpZWxkcylcclxuICAgIHN0cnVjdFZhbGlkYXRpb25GaWVsZC52YWxpZGF0aW9uRXJyb3JzTGFiZWwgPSBhd2FpdCB0aGlzLmdldEVycm9yc1N0cmluZ0FycmF5KHN0cnVjdFZhbGlkYXRpb25GaWVsZClcclxuXHJcbiAgICByZXR1cm4gc3RydWN0VmFsaWRhdGlvbkZpZWxkXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByb2Nlc3NQcm9wZXJ0aWVzIChwcm9wZXJ0aWVzUmVuZGVyZWQ6IGFueVtdLFxyXG4gICAgbW9kZWw6IGFueSxcclxuICAgIGVkaXRpbmc6IGJvb2xlYW4sXHJcbiAgICBlbXB0eUZpZWxkczogYW55W10sXHJcbiAgICBpbnZhbGlkTWluTGVuZ3RoRmllbGRzOiBhbnlbXSxcclxuICAgIGludmFsaWRNYXhMZW5ndGhGaWVsZHM6IGFueVtdLFxyXG4gICAgcmVjdXJzaXZlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzUmVuZGVyZWQpIHtcclxuICAgICAgaWYgKChwcm9wZXJ0eS50eXBlID09PSAnb2JqZWN0JyB8fCBwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknKSAmJiBwcm9wZXJ0eS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzUHJvcGVydGllcyhwcm9wZXJ0eS5wcm9wZXJ0aWVzLCBtb2RlbFtwcm9wZXJ0eS5pZF0sIGVkaXRpbmcsXHJcbiAgICAgICAgICBlbXB0eUZpZWxkcywgaW52YWxpZE1pbkxlbmd0aEZpZWxkcywgaW52YWxpZE1heExlbmd0aEZpZWxkcywgdHJ1ZSlcclxuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknICYmICFwcm9wZXJ0eS5wcm9wZXJ0aWVzKSB7XHJcbiAgICAgICAgY29uc3QgbmV3UHJvcGVydHkgPSB7IC4uLnByb3BlcnR5IH1cclxuICAgICAgICBuZXdQcm9wZXJ0eS50eXBlID0gJ3N0cmluZydcclxuICAgICAgICB0aGlzLnByb2Nlc3NQcm9wZXJ0aWVzKFtuZXdQcm9wZXJ0eV0sIG1vZGVsW3Byb3BlcnR5LmlkXSwgZWRpdGluZyxcclxuICAgICAgICAgIGVtcHR5RmllbGRzLCBpbnZhbGlkTWluTGVuZ3RoRmllbGRzLCBpbnZhbGlkTWF4TGVuZ3RoRmllbGRzLCB0cnVlKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlTW9kZWwgPSByZWN1cnNpdmUgPyBtb2RlbCA6IG1vZGVsW3Byb3BlcnR5LmlkXVxyXG4gICAgICAgIGlmIChwcm9wZXJ0eS50eXBlICE9PSAncGFzc3dvcmQnIHx8ICFlZGl0aW5nIHx8IHZhbGlkYXRlTW9kZWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgaWYgKHByb3BlcnR5Py5jYW5SZW5kZXIgJiYgcHJvcGVydHk/Lm1pbkxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgKHZhbGlkYXRlTW9kZWwgPT09IHVuZGVmaW5lZCB8fCB2YWxpZGF0ZU1vZGVsID09PSAnJyB8fCB2YWxpZGF0ZU1vZGVsID09PSBudWxsKSkge1xyXG4gICAgICAgICAgICBlbXB0eUZpZWxkcy5wdXNoKHByb3BlcnR5KVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eT8uY2FuUmVuZGVyICYmIHByb3BlcnR5Py5taW5MZW5ndGggPiAwICYmICh2YWxpZGF0ZU1vZGVsPy5sZW5ndGggPCBwcm9wZXJ0eS5taW5MZW5ndGgpKSB7XHJcbiAgICAgICAgICAgIGludmFsaWRNaW5MZW5ndGhGaWVsZHMucHVzaChwcm9wZXJ0eSlcclxuICAgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHk/LmNhblJlbmRlciAmJiBwcm9wZXJ0eT8ubWF4TGVuZ3RoID4gMCAmJiAodmFsaWRhdGVNb2RlbD8ubGVuZ3RoID4gcHJvcGVydHkubWF4TGVuZ3RoKSkge1xyXG4gICAgICAgICAgICBpbnZhbGlkTWF4TGVuZ3RoRmllbGRzLnB1c2gocHJvcGVydHkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0RXJyb3JzU3RyaW5nQXJyYXkgKHN0cnVjdFZhbGlkYXRpb246IFNjaGVtYVZhbGlkYXRpb25GaWVsZCk6XHJcbiAgUHJvbWlzZTxBcnJheTx7IHR5cGU6IHN0cmluZywgZmllbGROYW1lPzogc3RyaW5nLCBtaW5MZW5ndGg/OiBudW1iZXIsIG1heExlbmd0aD86IG51bWJlciB9Pj4ge1xyXG4gICAgaWYgKCFzdHJ1Y3RWYWxpZGF0aW9uLmlzSW52YWxpZFNjaGVtYUZpZWxkcygpKSB7XHJcbiAgICAgIHJldHVybiBbXVxyXG4gICAgfVxyXG4gICAgY29uc3QgZXJyb3JzID0gW11cclxuICAgIGZvciAoY29uc3QgZmllbGQgb2Ygc3RydWN0VmFsaWRhdGlvbi5lbXB0eUZpZWxkcykge1xyXG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZC50aXRsZSB8fCBmaWVsZC5pZFxyXG4gICAgICBlcnJvcnMucHVzaCh7XHJcbiAgICAgICAgdHlwZTogJ2VtcHR5RmllbGRzJyxcclxuICAgICAgICBmaWVsZE5hbWVcclxuICAgICAgfSlcclxuICAgIH1cclxuICAgIGZvciAoY29uc3QgZmllbGQgb2Ygc3RydWN0VmFsaWRhdGlvbi5pbnZhbGlkTWluTGVuZ3RoRmllbGRzKSB7XHJcbiAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZpZWxkLnRpdGxlIHx8IGZpZWxkLmlkXHJcbiAgICAgIGVycm9ycy5wdXNoKHtcclxuICAgICAgICB0eXBlOiAnaW52YWxpZE1pbkxlbmd0aEZpZWxkcycsXHJcbiAgICAgICAgZmllbGROYW1lLFxyXG4gICAgICAgIG1pbkxlbmd0aDogZmllbGQubWluTGVuZ3RoXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHN0cnVjdFZhbGlkYXRpb24uaW52YWxpZE1heExlbmd0aEZpZWxkcykge1xyXG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZC50aXRsZSB8fCBmaWVsZC5pZFxyXG4gICAgICBlcnJvcnMucHVzaCh7XHJcbiAgICAgICAgdHlwZTogJ2ludmFsaWRNYXhMZW5ndGhGaWVsZHMnLFxyXG4gICAgICAgIGZpZWxkTmFtZSxcclxuICAgICAgICBtYXhMZW5ndGg6IGZpZWxkLm1heExlbmd0aFxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVycm9yc1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
|
|
2
|
+
import { BaseSchemaComponent } from '../../../base-schema.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "ngx-drag-drop";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
const _c0 = function () { return { standalone: true }; };
|
|
8
|
+
function ArraySessionComponent_div_4_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
9
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
10
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 12)(2, "label", 13);
|
|
11
|
+
i0.ɵɵtext(3, "Loop");
|
|
12
|
+
i0.ɵɵelementEnd();
|
|
13
|
+
i0.ɵɵelementStart(4, "input", 14);
|
|
14
|
+
i0.ɵɵlistener("ngModelChange", function ArraySessionComponent_div_4_div_4_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r8); const item_r2 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(item_r2.loop = $event); })("dndDrop", function ArraySessionComponent_div_4_div_4_Template_input_dndDrop_4_listener($event) { i0.ɵɵrestoreView(_r8); const item_r2 = i0.ɵɵnextContext().$implicit; const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(item_r2.loop = ctx_r9.onDrop($event, item_r2.loop)); });
|
|
15
|
+
i0.ɵɵelementEnd()();
|
|
16
|
+
i0.ɵɵelementStart(5, "div", 15)(6, "label", 13);
|
|
17
|
+
i0.ɵɵtext(7, "Alias");
|
|
18
|
+
i0.ɵɵelementEnd();
|
|
19
|
+
i0.ɵɵelementStart(8, "input", 14);
|
|
20
|
+
i0.ɵɵlistener("ngModelChange", function ArraySessionComponent_div_4_div_4_Template_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r8); const item_r2 = i0.ɵɵnextContext().$implicit; return i0.ɵɵresetView(item_r2.alias = $event); })("dndDrop", function ArraySessionComponent_div_4_div_4_Template_input_dndDrop_8_listener($event) { i0.ɵɵrestoreView(_r8); const item_r2 = i0.ɵɵnextContext().$implicit; const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(item_r2.alias = ctx_r13.onDrop($event, item_r2.alias)); });
|
|
21
|
+
i0.ɵɵelementEnd()()();
|
|
22
|
+
} if (rf & 2) {
|
|
23
|
+
const item_r2 = i0.ɵɵnextContext().$implicit;
|
|
24
|
+
i0.ɵɵadvance(4);
|
|
25
|
+
i0.ɵɵproperty("ngModel", item_r2.loop)("ngModelOptions", i0.ɵɵpureFunction0(4, _c0));
|
|
26
|
+
i0.ɵɵadvance(4);
|
|
27
|
+
i0.ɵɵproperty("ngModel", item_r2.alias)("ngModelOptions", i0.ɵɵpureFunction0(5, _c0));
|
|
28
|
+
} }
|
|
29
|
+
function ArraySessionComponent_div_4_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
30
|
+
i0.ɵɵelementContainer(0);
|
|
31
|
+
} }
|
|
32
|
+
const _c1 = function (a0, a1, a2) { return { items: a0, index: a1, mappingAttributes: a2 }; };
|
|
33
|
+
const _c2 = function (a0) { return { $implicit: a0 }; };
|
|
34
|
+
function ArraySessionComponent_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
36
|
+
i0.ɵɵelementStart(0, "div", 7)(1, "div", 8);
|
|
37
|
+
i0.ɵɵtext(2);
|
|
38
|
+
i0.ɵɵelementStart(3, "i", 9);
|
|
39
|
+
i0.ɵɵlistener("click", function ArraySessionComponent_div_4_Template_i_click_3_listener() { const restoredCtx = i0.ɵɵrestoreView(_r17); const item_r2 = restoredCtx.$implicit; const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.remove(item_r2)); });
|
|
40
|
+
i0.ɵɵelementEnd()();
|
|
41
|
+
i0.ɵɵtemplate(4, ArraySessionComponent_div_4_div_4_Template, 9, 6, "div", 10);
|
|
42
|
+
i0.ɵɵtemplate(5, ArraySessionComponent_div_4_ng_container_5_Template, 1, 0, "ng-container", 11);
|
|
43
|
+
i0.ɵɵelementEnd();
|
|
44
|
+
} if (rf & 2) {
|
|
45
|
+
const item_r2 = ctx.$implicit;
|
|
46
|
+
const index_r3 = ctx.index;
|
|
47
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
48
|
+
i0.ɵɵadvance(2);
|
|
49
|
+
i0.ɵɵtextInterpolate2("", ctx_r0.removeLabel, " ", index_r3 + 1, " ");
|
|
50
|
+
i0.ɵɵadvance(2);
|
|
51
|
+
i0.ɵɵproperty("ngIf", item_r2.mappingAttributes || item_r2.mappingAttributes === "");
|
|
52
|
+
i0.ɵɵadvance(1);
|
|
53
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.subsectionItem)("ngTemplateOutletContext", i0.ɵɵpureFunction1(9, _c2, i0.ɵɵpureFunction3(5, _c1, ctx_r0.model, index_r3, item_r2.mappingAttributes || item_r2.mappingAttributes === "" ? item_r2.mappingAttributes : item_r2)));
|
|
54
|
+
} }
|
|
55
|
+
function ArraySessionComponent_button_9_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
57
|
+
i0.ɵɵelementStart(0, "button", 16);
|
|
58
|
+
i0.ɵɵlistener("click", function ArraySessionComponent_button_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.addLoop()); });
|
|
59
|
+
i0.ɵɵtext(1);
|
|
60
|
+
i0.ɵɵelementEnd();
|
|
61
|
+
} if (rf & 2) {
|
|
62
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
63
|
+
i0.ɵɵadvance(1);
|
|
64
|
+
i0.ɵɵtextInterpolate(ctx_r1.addLoopLabel);
|
|
65
|
+
} }
|
|
66
|
+
class ArraySessionComponent extends BaseSchemaComponent {
|
|
67
|
+
label = '';
|
|
68
|
+
removeLabel = 'Remove';
|
|
69
|
+
addItemLabel = 'Add Item';
|
|
70
|
+
addLoopLabel = 'Add Loop';
|
|
71
|
+
showAddLoop = true;
|
|
72
|
+
onAdd = new EventEmitter();
|
|
73
|
+
onAddLoop = new EventEmitter();
|
|
74
|
+
subsectionItem = null;
|
|
75
|
+
add() {
|
|
76
|
+
this.onAdd.next(undefined);
|
|
77
|
+
}
|
|
78
|
+
addLoop() {
|
|
79
|
+
this.onAddLoop.next(undefined);
|
|
80
|
+
}
|
|
81
|
+
remove(item) {
|
|
82
|
+
const values = this.model;
|
|
83
|
+
const index = values.indexOf(item);
|
|
84
|
+
values.splice(index, 1);
|
|
85
|
+
this.model = values;
|
|
86
|
+
}
|
|
87
|
+
trackByIndex(index, obj) {
|
|
88
|
+
return index;
|
|
89
|
+
}
|
|
90
|
+
static ɵfac = /*@__PURE__*/ function () { let ɵArraySessionComponent_BaseFactory; return function ArraySessionComponent_Factory(t) { return (ɵArraySessionComponent_BaseFactory || (ɵArraySessionComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ArraySessionComponent)))(t || ArraySessionComponent); }; }();
|
|
91
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ArraySessionComponent, selectors: [["array-session"]], contentQueries: function ArraySessionComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
92
|
+
i0.ɵɵcontentQuery(dirIndex, TemplateRef, 5, TemplateRef);
|
|
93
|
+
} if (rf & 2) {
|
|
94
|
+
let _t;
|
|
95
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.subsectionItem = _t.first);
|
|
96
|
+
} }, inputs: { label: "label", removeLabel: "removeLabel", addItemLabel: "addItemLabel", addLoopLabel: "addLoopLabel", showAddLoop: "showAddLoop" }, outputs: { onAdd: "onAdd", onAddLoop: "onAddLoop" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 10, vars: 5, consts: [[1, "row"], [1, "col-md-12"], [1, "info-label", "bold"], ["class", "subsection-element", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "row", "add-buttons"], [1, "btn", "btn-outline-primary", "float-left", "btn-personal-edit", 3, "click"], ["class", "btn btn-outline-primary float-left btn-personal-edit ml-2", 3, "click", 4, "ngIf"], [1, "subsection-element"], [1, "subsection-item-title"], [1, "far", "fa-trash-alt", 3, "click"], ["class", "row", 4, "ngIf"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "col-md-8"], [1, "info-label"], ["type", "text", "dndDropzone", "", 1, "form-control", 3, "ngModel", "ngModelOptions", "ngModelChange", "dndDrop"], [1, "col-md-4"], [1, "btn", "btn-outline-primary", "float-left", "btn-personal-edit", "ml-2", 3, "click"]], template: function ArraySessionComponent_Template(rf, ctx) { if (rf & 1) {
|
|
97
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "label", 2);
|
|
98
|
+
i0.ɵɵtext(3);
|
|
99
|
+
i0.ɵɵelementEnd();
|
|
100
|
+
i0.ɵɵtemplate(4, ArraySessionComponent_div_4_Template, 6, 11, "div", 3);
|
|
101
|
+
i0.ɵɵelementEnd()();
|
|
102
|
+
i0.ɵɵelementStart(5, "div", 4)(6, "div", 1)(7, "button", 5);
|
|
103
|
+
i0.ɵɵlistener("click", function ArraySessionComponent_Template_button_click_7_listener() { return ctx.add(); });
|
|
104
|
+
i0.ɵɵtext(8);
|
|
105
|
+
i0.ɵɵelementEnd();
|
|
106
|
+
i0.ɵɵtemplate(9, ArraySessionComponent_button_9_Template, 2, 1, "button", 6);
|
|
107
|
+
i0.ɵɵelementEnd()();
|
|
108
|
+
} if (rf & 2) {
|
|
109
|
+
i0.ɵɵadvance(3);
|
|
110
|
+
i0.ɵɵtextInterpolate(ctx.label);
|
|
111
|
+
i0.ɵɵadvance(1);
|
|
112
|
+
i0.ɵɵproperty("ngForOf", ctx.model)("ngForTrackBy", ctx.trackByIndex);
|
|
113
|
+
i0.ɵɵadvance(4);
|
|
114
|
+
i0.ɵɵtextInterpolate(ctx.addItemLabel);
|
|
115
|
+
i0.ɵɵadvance(1);
|
|
116
|
+
i0.ɵɵproperty("ngIf", ctx.showAddLoop);
|
|
117
|
+
} }, dependencies: [i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i2.DndDropzoneDirective, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel], styles: [".subsection-element[_ngcontent-%COMP%]{padding:5px 15px 15px;margin-top:10px;border:1px solid #CCC;border-radius:5px;background:#FFF}.subsection-element[_ngcontent-%COMP%]:first-child{margin-top:0!important}.btn-personal-edit[_ngcontent-%COMP%]{margin:5px 0}.subsection-item-title[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;width:calc(100% + 30px);padding:7px 10px 7px 14px;margin-top:-5px;margin-bottom:5px;margin-left:-15px;background:#EEE;border-radius:5px 5px 0 0;font-weight:700;border-bottom:1px solid #CCC}.subsection-item-title[_ngcontent-%COMP%] .fa-trash-alt[_ngcontent-%COMP%]{color:red;cursor:pointer}.subsection-item-title[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-weight:700}.add-buttons[_ngcontent-%COMP%]{margin-top:5px}"] });
|
|
118
|
+
}
|
|
119
|
+
export { ArraySessionComponent };
|
|
120
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ArraySessionComponent, [{
|
|
121
|
+
type: Component,
|
|
122
|
+
args: [{ selector: 'array-session', template: "<div class=\"row\">\r\n <div class=\"col-md-12\">\r\n <label class=\"info-label bold\">{{ label }}</label>\r\n <div class=\"subsection-element\" *ngFor=\"let item of model; let index = index; trackBy:trackByIndex;\">\r\n <div class=\"subsection-item-title\">{{ removeLabel }} {{ index + 1 }}\r\n <i class=\"far fa-trash-alt\" (click)=\"remove(item)\"></i>\r\n </div>\r\n <div class=\"row\" *ngIf=\"item.mappingAttributes || item.mappingAttributes === ''\">\r\n <div class=\"col-md-8\">\r\n <label class=\"info-label\">Loop</label>\r\n <input class=\"form-control\" type=\"text\" [(ngModel)]=\"item.loop\" [ngModelOptions]=\"{standalone: true}\"\r\n dndDropzone (dndDrop)=\"item.loop = this.onDrop($event, item.loop)\" />\r\n </div>\r\n <div class=\"col-md-4\">\r\n <label class=\"info-label\">Alias</label>\r\n <input class=\"form-control\" type=\"text\" [(ngModel)]=\"item.alias\" [ngModelOptions]=\"{standalone: true}\"\r\n dndDropzone (dndDrop)=\"item.alias = this.onDrop($event, item.alias)\" />\r\n </div>\r\n </div>\r\n <ng-container *ngTemplateOutlet=\"subsectionItem, context: {\r\n $implicit: {\r\n items: model, index: index,\r\n mappingAttributes: (item.mappingAttributes || item.mappingAttributes === '') ? item.mappingAttributes : item\r\n }\r\n }\"></ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n<div class=\"row add-buttons\">\r\n <div class=\"col-md-12\">\r\n <button class=\"btn btn-outline-primary float-left btn-personal-edit\" (click)=\"add()\">{{ this.addItemLabel }}</button>\r\n <button class=\"btn btn-outline-primary float-left btn-personal-edit ml-2\" *ngIf=\"showAddLoop\" (click)=\"addLoop()\">{{ this.addLoopLabel }}</button>\r\n </div>\r\n</div>\r\n", styles: [".subsection-element{padding:5px 15px 15px;margin-top:10px;border:1px solid #CCC;border-radius:5px;background:#FFF}.subsection-element:first-child{margin-top:0!important}.btn-personal-edit{margin:5px 0}.subsection-item-title{display:flex;justify-content:space-between;align-items:center;width:calc(100% + 30px);padding:7px 10px 7px 14px;margin-top:-5px;margin-bottom:5px;margin-left:-15px;background:#EEE;border-radius:5px 5px 0 0;font-weight:700;border-bottom:1px solid #CCC}.subsection-item-title .fa-trash-alt{color:red;cursor:pointer}.subsection-item-title label{font-weight:700}.add-buttons{margin-top:5px}\n"] }]
|
|
123
|
+
}], null, { label: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}], removeLabel: [{
|
|
126
|
+
type: Input
|
|
127
|
+
}], addItemLabel: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], addLoopLabel: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], showAddLoop: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], onAdd: [{
|
|
134
|
+
type: Output
|
|
135
|
+
}], onAddLoop: [{
|
|
136
|
+
type: Output
|
|
137
|
+
}], subsectionItem: [{
|
|
138
|
+
type: ContentChild,
|
|
139
|
+
args: [TemplateRef, { read: TemplateRef }]
|
|
140
|
+
}] }); })();
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktc2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaGVtYXMvc3JjL3NjaGVtYS1mb3JtL3NjaGVtYS1hcnJheS9hcnJheS1zZXNzaW9uL2FycmF5LXNlc3Npb24udHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2hlbWFzL3NyYy9zY2hlbWEtZm9ybS9zY2hlbWEtYXJyYXkvYXJyYXktc2Vzc2lvbi9hcnJheS1zZXNzaW9uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2pHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBOzs7Ozs7OztJQ005RCw4QkFBaUYsY0FBQSxnQkFBQTtJQUVuRCxvQkFBSTtJQUFBLGlCQUFRO0lBQ3RDLGlDQUM0RTtJQURwQyx3TUFBYSxxQ0FBaUIsSUFBUCxrTkFDakMsOEJBQVksbUNBQThCLENBQUEsSUFEVDtJQUEvRCxpQkFDNEUsRUFBQTtJQUU5RSwrQkFBc0IsZ0JBQUE7SUFDTSxxQkFBSztJQUFBLGlCQUFRO0lBQ3ZDLGlDQUM4RTtJQUR0Qyx3TUFBYSxzQ0FBa0IsSUFBUCxtTkFDbEMsK0JBQWEscUNBQStCLENBQUEsSUFEVjtJQUFoRSxpQkFDOEUsRUFBQSxFQUFBOzs7SUFOdEMsZUFBdUI7SUFBdkIsc0NBQXVCLDhDQUFBO0lBS3ZCLGVBQXdCO0lBQXhCLHVDQUF3Qiw4Q0FBQTs7O0lBSXBFLHdCQUtrQjs7Ozs7O0lBckJwQiw4QkFBcUcsYUFBQTtJQUNoRSxZQUNqQztJQUFBLDRCQUFtRDtJQUF2QiwwTkFBUyxlQUFBLHVCQUFZLENBQUEsSUFBQztJQUFDLGlCQUFJLEVBQUE7SUFFekQsNkVBV007SUFDTiwrRkFLa0I7SUFDcEIsaUJBQU07Ozs7O0lBckIrQixlQUNqQztJQURpQyxxRUFDakM7SUFFZ0IsZUFBNkQ7SUFBN0Qsb0ZBQTZEO0lBWWhFLGVBQWtDO0lBQWxDLHdEQUFrQyxnTkFBQTs7OztJQVluRCxrQ0FBa0g7SUFBcEIsdUtBQVMsZUFBQSxpQkFBUyxDQUFBLElBQUM7SUFBQyxZQUF1QjtJQUFBLGlCQUFTOzs7SUFBaEMsZUFBdUI7SUFBdkIseUNBQXVCOztBRDVCN0ksTUFLYSxxQkFBc0IsU0FBUSxtQkFBbUI7SUFDNUMsS0FBSyxHQUFHLEVBQUUsQ0FBQTtJQUNWLFdBQVcsR0FBRyxRQUFRLENBQUE7SUFDdEIsWUFBWSxHQUFHLFVBQVUsQ0FBQTtJQUN6QixZQUFZLEdBQUcsVUFBVSxDQUFBO0lBRXpCLFdBQVcsR0FBRyxJQUFJLENBQUE7SUFFakIsS0FBSyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFBO0lBQ2xELFNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQTtJQUdoRSxjQUFjLEdBQTRCLElBQUksQ0FBQTtJQUU5QyxHQUFHO1FBQ1IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRU0sTUFBTSxDQUFFLElBQVM7UUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUN6QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFBO0lBQ3JCLENBQUM7SUFFTSxZQUFZLENBQUUsS0FBYSxFQUFFLEdBQVE7UUFDMUMsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO3NQQS9CVSxxQkFBcUIsU0FBckIscUJBQXFCOzZEQUFyQixxQkFBcUI7d0NBV2xCLFdBQVcsS0FBVSxXQUFXOzs7OztZQ25CaEQsOEJBQWlCLGFBQUEsZUFBQTtZQUVrQixZQUFXO1lBQUEsaUJBQVE7WUFDbEQsdUVBc0JNO1lBQ1IsaUJBQU0sRUFBQTtZQUVSLDhCQUE2QixhQUFBLGdCQUFBO1lBRTRDLGtHQUFTLFNBQUssSUFBQztZQUFDLFlBQXVCO1lBQUEsaUJBQVM7WUFDckgsNEVBQWtKO1lBQ3BKLGlCQUFNLEVBQUE7O1lBOUIyQixlQUFXO1lBQVgsK0JBQVc7WUFDTyxlQUFVO1lBQVYsbUNBQVUsa0NBQUE7WUEyQjBCLGVBQXVCO1lBQXZCLHNDQUF1QjtZQUNqQyxlQUFpQjtZQUFqQixzQ0FBaUI7OztTRHZCbkYscUJBQXFCO3VGQUFyQixxQkFBcUI7Y0FMakMsU0FBUzsyQkFDRSxlQUFlO2dCQUtULEtBQUs7a0JBQXBCLEtBQUs7WUFDVSxXQUFXO2tCQUExQixLQUFLO1lBQ1UsWUFBWTtrQkFBM0IsS0FBSztZQUNVLFlBQVk7a0JBQTNCLEtBQUs7WUFFVSxXQUFXO2tCQUExQixLQUFLO1lBRVcsS0FBSztrQkFBckIsTUFBTTtZQUNVLFNBQVM7a0JBQXpCLE1BQU07WUFHQSxjQUFjO2tCQURwQixZQUFZO21CQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IEJhc2VTY2hlbWFDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9iYXNlLXNjaGVtYS5jb21wb25lbnQnXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FycmF5LXNlc3Npb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnYXJyYXktc2Vzc2lvbi5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnYXJyYXktc2Vzc2lvbi5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFycmF5U2Vzc2lvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VTY2hlbWFDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbCA9ICcnXHJcbiAgQElucHV0KCkgcHVibGljIHJlbW92ZUxhYmVsID0gJ1JlbW92ZSdcclxuICBASW5wdXQoKSBwdWJsaWMgYWRkSXRlbUxhYmVsID0gJ0FkZCBJdGVtJ1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhZGRMb29wTGFiZWwgPSAnQWRkIExvb3AnXHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93QWRkTG9vcCA9IHRydWVcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBvbkFkZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKVxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgb25BZGRMb29wOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpXHJcblxyXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcclxuICBwdWJsaWMgc3Vic2VjdGlvbkl0ZW06IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbFxyXG5cclxuICBwdWJsaWMgYWRkICgpOiB2b2lkIHtcclxuICAgIHRoaXMub25BZGQubmV4dCh1bmRlZmluZWQpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWRkTG9vcCAoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQWRkTG9vcC5uZXh0KHVuZGVmaW5lZClcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZW1vdmUgKGl0ZW06IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLm1vZGVsXHJcbiAgICBjb25zdCBpbmRleCA9IHZhbHVlcy5pbmRleE9mKGl0ZW0pXHJcbiAgICB2YWx1ZXMuc3BsaWNlKGluZGV4LCAxKVxyXG4gICAgdGhpcy5tb2RlbCA9IHZhbHVlc1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYWNrQnlJbmRleCAoaW5kZXg6IG51bWJlciwgb2JqOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIGluZGV4XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJpbmZvLWxhYmVsIGJvbGRcIj57eyBsYWJlbCB9fTwvbGFiZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3Vic2VjdGlvbi1lbGVtZW50XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbW9kZWw7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OnRyYWNrQnlJbmRleDtcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN1YnNlY3Rpb24taXRlbS10aXRsZVwiPnt7IHJlbW92ZUxhYmVsIH19IHt7IGluZGV4ICsgMSB9fVxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXRyYXNoLWFsdFwiIChjbGljayk9XCJyZW1vdmUoaXRlbSlcIj48L2k+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJpdGVtLm1hcHBpbmdBdHRyaWJ1dGVzIHx8IGl0ZW0ubWFwcGluZ0F0dHJpYnV0ZXMgPT09ICcnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJpbmZvLWxhYmVsXCI+TG9vcDwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiaXRlbS5sb29wXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgZG5kRHJvcHpvbmUgKGRuZERyb3ApPVwiaXRlbS5sb29wID0gdGhpcy5vbkRyb3AoJGV2ZW50LCBpdGVtLmxvb3ApXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImluZm8tbGFiZWxcIj5BbGlhczwvbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiaXRlbS5hbGlhc1wiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgIGRuZERyb3B6b25lIChkbmREcm9wKT1cIml0ZW0uYWxpYXMgPSB0aGlzLm9uRHJvcCgkZXZlbnQsIGl0ZW0uYWxpYXMpXCIgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWJzZWN0aW9uSXRlbSwgY29udGV4dDoge1xyXG4gICAgICAgICRpbXBsaWNpdDoge1xyXG4gICAgICAgICAgaXRlbXM6IG1vZGVsLCBpbmRleDogaW5kZXgsXHJcbiAgICAgICAgICBtYXBwaW5nQXR0cmlidXRlczogKGl0ZW0ubWFwcGluZ0F0dHJpYnV0ZXMgfHwgaXRlbS5tYXBwaW5nQXR0cmlidXRlcyA9PT0gJycpID8gaXRlbS5tYXBwaW5nQXR0cmlidXRlcyA6IGl0ZW1cclxuICAgICAgICAgfVxyXG4gICAgICB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgY2xhc3M9XCJyb3cgYWRkLWJ1dHRvbnNcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgZmxvYXQtbGVmdCBidG4tcGVyc29uYWwtZWRpdFwiIChjbGljayk9XCJhZGQoKVwiPnt7IHRoaXMuYWRkSXRlbUxhYmVsIH19PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgZmxvYXQtbGVmdCBidG4tcGVyc29uYWwtZWRpdCBtbC0yXCIgKm5nSWY9XCJzaG93QWRkTG9vcFwiIChjbGljayk9XCJhZGRMb29wKClcIj57eyB0aGlzLmFkZExvb3BMYWJlbCB9fTwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|