@decaf-ts/ui-decorators 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +157 -21
- package/README.md +0 -0
- package/dist/esm/ui-decorators.bundle.min.esm.js +1 -1
- package/dist/esm/ui-decorators.bundle.min.esm.js.LICENSE.txt +0 -0
- package/dist/ui-decorators.bundle.min.js +1 -1
- package/dist/ui-decorators.bundle.min.js.LICENSE.txt +0 -0
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +2 -2
- package/lib/esm/model/Renderable.d.ts +0 -0
- package/lib/esm/model/Renderable.js +0 -0
- package/lib/esm/model/decorators.d.ts +0 -0
- package/lib/esm/model/decorators.js +0 -0
- package/lib/esm/model/index.d.ts +0 -0
- package/lib/esm/model/index.js +0 -0
- package/lib/esm/model/model.d.ts +0 -0
- package/lib/esm/model/model.js +0 -0
- package/lib/esm/model/overrides.d.ts +0 -0
- package/lib/esm/model/overrides.js +0 -0
- package/lib/esm/ui/Rendering.d.ts +169 -4
- package/lib/esm/ui/Rendering.js +189 -17
- package/lib/esm/ui/constants.d.ts +1 -0
- package/lib/esm/ui/constants.js +2 -1
- package/lib/esm/ui/decorators.d.ts +0 -0
- package/lib/esm/ui/decorators.js +0 -0
- package/lib/esm/ui/errors.d.ts +0 -0
- package/lib/esm/ui/errors.js +0 -0
- package/lib/esm/ui/index.d.ts +0 -0
- package/lib/esm/ui/index.js +0 -0
- package/lib/esm/ui/interfaces.d.ts +1 -3
- package/lib/esm/ui/interfaces.js +1 -1
- package/lib/esm/ui/types.d.ts +5 -3
- package/lib/esm/ui/types.js +1 -1
- package/lib/esm/ui/utils.d.ts +3 -1
- package/lib/esm/ui/utils.js +19 -45
- package/lib/index.cjs +1 -3
- package/lib/index.d.ts +1 -1
- package/lib/model/Renderable.cjs +0 -2
- package/lib/model/Renderable.d.ts +0 -0
- package/lib/model/decorators.cjs +0 -2
- package/lib/model/decorators.d.ts +0 -0
- package/lib/model/index.cjs +0 -2
- package/lib/model/index.d.ts +0 -0
- package/lib/model/model.cjs +0 -2
- package/lib/model/model.d.ts +0 -0
- package/lib/model/overrides.cjs +0 -2
- package/lib/model/overrides.d.ts +0 -0
- package/lib/ui/Rendering.cjs +187 -17
- package/lib/ui/Rendering.d.ts +169 -4
- package/lib/ui/constants.cjs +1 -2
- package/lib/ui/constants.d.ts +1 -0
- package/lib/ui/decorators.cjs +0 -2
- package/lib/ui/decorators.d.ts +0 -0
- package/lib/ui/errors.cjs +0 -2
- package/lib/ui/errors.d.ts +0 -0
- package/lib/ui/index.cjs +0 -2
- package/lib/ui/index.d.ts +0 -0
- package/lib/ui/interfaces.cjs +0 -2
- package/lib/ui/interfaces.d.ts +1 -3
- package/lib/ui/types.cjs +0 -2
- package/lib/ui/types.d.ts +5 -3
- package/lib/ui/utils.cjs +19 -46
- package/lib/ui/utils.d.ts +3 -1
- package/package.json +15 -15
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { FieldProperties } from "./types";
|
|
2
2
|
import { CrudOperations } from "@decaf-ts/db-decorators";
|
|
3
|
-
export interface CrudFormField
|
|
3
|
+
export interface CrudFormField extends FieldProperties {
|
|
4
4
|
operation: CrudOperations;
|
|
5
|
-
props: FieldProperties & T;
|
|
6
|
-
value: string;
|
|
7
5
|
}
|
package/lib/esm/ui/interfaces.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export {};
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91aS9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoidWkvaW50ZXJmYWNlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkUHJvcGVydGllcyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBDcnVkT3BlcmF0aW9ucyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENydWRGb3JtRmllbGQgZXh0ZW5kcyBGaWVsZFByb3BlcnRpZXMge1xuICBvcGVyYXRpb246IENydWRPcGVyYXRpb25zO1xufVxuIl19
|
package/lib/esm/ui/types.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { OperationKeys } from "@decaf-ts/db-decorators";
|
|
2
2
|
export interface FieldDefinition<T = void> {
|
|
3
3
|
tag: string;
|
|
4
|
+
rendererId?: string;
|
|
4
5
|
props: T & FieldProperties;
|
|
5
6
|
children?: FieldDefinition<T>[];
|
|
6
7
|
}
|
|
7
|
-
export interface FieldProperties
|
|
8
|
+
export interface FieldProperties {
|
|
8
9
|
name: string;
|
|
9
|
-
label: string;
|
|
10
|
-
placeholder?: string;
|
|
11
10
|
type: string;
|
|
11
|
+
value: string | number | Date;
|
|
12
12
|
hidden?: boolean;
|
|
13
|
+
disabled?: boolean;
|
|
13
14
|
required?: boolean;
|
|
14
15
|
readonly?: boolean;
|
|
15
16
|
maxLength?: number;
|
|
@@ -18,6 +19,7 @@ export interface FieldProperties extends Record<string, any> {
|
|
|
18
19
|
min?: number | Date;
|
|
19
20
|
pattern?: string;
|
|
20
21
|
step?: number;
|
|
22
|
+
format?: string;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* @typedef UIElementMetadata
|
package/lib/esm/ui/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export {};
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91aS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InVpL3R5cGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkRGVmaW5pdGlvbjxUID0gdm9pZD4ge1xuICB0YWc6IHN0cmluZztcbiAgcmVuZGVyZXJJZD86IHN0cmluZztcbiAgcHJvcHM6IFQgJiBGaWVsZFByb3BlcnRpZXM7XG4gIGNoaWxkcmVuPzogRmllbGREZWZpbml0aW9uPFQ+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRQcm9wZXJ0aWVzIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8vIFZhbGlkYXRpb25cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXIgfCBEYXRlO1xuICBtaW4/OiBudW1iZXIgfCBEYXRlO1xuICBwYXR0ZXJuPzogc3RyaW5nO1xuICBzdGVwPzogbnVtYmVyO1xuICBmb3JtYXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgVUlFbGVtZW50TWV0YWRhdGFcbiAqIEBtZW1iZXJPZiB1aS1kZWNvcmF0b3JzLnVpLmRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgVUlFbGVtZW50TWV0YWRhdGEgPSB7XG4gIHRhZzogc3RyaW5nO1xuICBwcm9wcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHNlcmlhbGl6ZT86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIFVJRWxlbWVudE1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgdWktZGVjb3JhdG9ycy51aS5kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIFVJTW9kZWxNZXRhZGF0YSA9IE9taXQ8VUlFbGVtZW50TWV0YWRhdGEsIFwic2VyaWFsaXplXCI+O1xuXG4vKipcbiAqIEB0eXBlZGVmIFVJUHJvcE1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgdWktZGVjb3JhdG9ycy51aS5kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIFVJUHJvcE1ldGFkYXRhID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0cmluZ2lmeTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIENydWRPcGVyYXRpb25LZXlzID1cbiAgfCBPcGVyYXRpb25LZXlzLkNSRUFURVxuICB8IE9wZXJhdGlvbktleXMuUkVBRFxuICB8IE9wZXJhdGlvbktleXMuVVBEQVRFXG4gIHwgT3BlcmF0aW9uS2V5cy5ERUxFVEU7XG4iXX0=
|
package/lib/esm/ui/utils.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
1
2
|
/**
|
|
2
3
|
* @function formatByType
|
|
3
4
|
*
|
|
4
5
|
* @memberOf ui-decorators-web.ui
|
|
5
6
|
*/
|
|
6
|
-
export declare function formatByType(type: any, value: any):
|
|
7
|
+
export declare function formatByType(type: any, value: any, ...args: unknown[]): string | number;
|
|
7
8
|
export declare function parseToNumber(value: string | number): number | undefined;
|
|
8
9
|
export declare function escapeHtml(value: string): string | undefined;
|
|
9
10
|
export declare function revertHtml(value: string): string;
|
|
11
|
+
export declare function generateUIModelID<M extends Model>(model: M): string;
|
package/lib/esm/ui/utils.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { formatDate } from "@decaf-ts/decorator-validation";
|
|
2
2
|
import { HTML5DateFormat, UIKeys } from "./constants";
|
|
3
|
+
import { findModelId } from "@decaf-ts/db-decorators";
|
|
3
4
|
/**
|
|
4
5
|
* @function formatByType
|
|
5
6
|
*
|
|
6
7
|
* @memberOf ui-decorators-web.ui
|
|
7
8
|
*/
|
|
8
|
-
export function formatByType(type, value) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
default:
|
|
13
|
-
return value;
|
|
9
|
+
export function formatByType(type, value, ...args) {
|
|
10
|
+
if (type === UIKeys.DATE) {
|
|
11
|
+
const format = args.shift() || HTML5DateFormat;
|
|
12
|
+
return formatDate(new Date(value), format);
|
|
14
13
|
}
|
|
14
|
+
return value;
|
|
15
15
|
}
|
|
16
16
|
export function parseToNumber(value) {
|
|
17
17
|
if (typeof value === "number" && !isNaN(value))
|
|
@@ -43,43 +43,17 @@ export function revertHtml(value) {
|
|
|
43
43
|
return tagsToReplace[tag] || tag;
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
//
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
// const match = regexp.exec(value);
|
|
59
|
-
// return match ? match[1] : match;
|
|
60
|
-
// case ValidationKeys.MIN:
|
|
61
|
-
// case ValidationKeys.MAX:
|
|
62
|
-
// if (prop in validationsByType)
|
|
63
|
-
// return formatByType(Object.keys(validationsByType[prop])[0], value);
|
|
64
|
-
// default:
|
|
65
|
-
// return value;
|
|
66
|
-
// }
|
|
67
|
-
// };
|
|
68
|
-
// return validationProperties.reduce((accum, vp) => {
|
|
69
|
-
// accum[vp.prop] = vp.decorators.reduce((ac, decorator) => {
|
|
70
|
-
// if (decorator.key in ValidatableByAttribute) {
|
|
71
|
-
// let parsedValue = parseValueByKey(
|
|
72
|
-
// decorator.key,
|
|
73
|
-
// decorator.props["value"],
|
|
74
|
-
// vp.prop
|
|
75
|
-
// );
|
|
76
|
-
// if (typeof parsedValue === "undefined") parsedValue = "true";
|
|
77
|
-
// ac[decorator.key] = parsedValue;
|
|
78
|
-
// }
|
|
79
|
-
// return ac;
|
|
80
|
-
// }, {});
|
|
81
|
-
// return accum;
|
|
82
|
-
// }, {});
|
|
83
|
-
// }
|
|
46
|
+
export function generateUIModelID(model) {
|
|
47
|
+
let id;
|
|
48
|
+
try {
|
|
49
|
+
id = findModelId(model);
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
id = Date.now();
|
|
54
|
+
}
|
|
55
|
+
const name = model.constructor.name;
|
|
56
|
+
return `${name}-${id}`;
|
|
57
|
+
}
|
|
84
58
|
|
|
85
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91aS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFTLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXREOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUMxQixJQUFTLEVBQ1QsS0FBVSxFQUNWLEdBQUcsSUFBZTtJQUVsQixJQUFJLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQVksSUFBSSxDQUFDLEtBQUssRUFBYSxJQUFJLGVBQWUsQ0FBQztRQUNuRSxPQUFPLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFzQjtJQUNsRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU3RCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUVsQyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFhO0lBQ3RDLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFN0IsTUFBTSxhQUFhLEdBQTJCO1FBQzVDLEdBQUcsRUFBRSxPQUFPO1FBQ1osR0FBRyxFQUFFLE1BQU07UUFDWCxHQUFHLEVBQUUsTUFBTTtLQUNaLENBQUM7SUFDRixPQUFPLEdBQUcsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQzFDLE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWE7SUFDdEMsTUFBTSxhQUFhLEdBQTJCO1FBQzVDLE9BQU8sRUFBRSxHQUFHO1FBQ1osTUFBTSxFQUFFLEdBQUc7UUFDWCxNQUFNLEVBQUUsR0FBRztLQUNaLENBQUM7SUFFRixPQUFPLEdBQUcsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDcEQsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBa0IsS0FBUTtJQUN6RCxJQUFJLEVBQW1CLENBQUM7SUFDeEIsSUFBSSxDQUFDO1FBQ0gsRUFBRSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4Qiw2REFBNkQ7SUFDL0QsQ0FBQztJQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7UUFDcEIsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDcEMsT0FBTyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztBQUN6QixDQUFDIiwiZmlsZSI6InVpL3V0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0RGF0ZSwgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBIVE1MNURhdGVGb3JtYXQsIFVJS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZmluZE1vZGVsSWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAZnVuY3Rpb24gZm9ybWF0QnlUeXBlXG4gKlxuICogQG1lbWJlck9mIHVpLWRlY29yYXRvcnMtd2ViLnVpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCeVR5cGUoXG4gIHR5cGU6IGFueSxcbiAgdmFsdWU6IGFueSxcbiAgLi4uYXJnczogdW5rbm93bltdXG4pOiBzdHJpbmcgfCBudW1iZXIge1xuICBpZiAodHlwZSA9PT0gVUlLZXlzLkRBVEUpIHtcbiAgICBjb25zdCBmb3JtYXQ6IHN0cmluZyA9IChhcmdzLnNoaWZ0KCkgYXMgc3RyaW5nKSB8fCBIVE1MNURhdGVGb3JtYXQ7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUobmV3IERhdGUodmFsdWUpLCBmb3JtYXQpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVG9OdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bWJlcikge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmICFpc05hTih2YWx1ZSkpIHJldHVybiB2YWx1ZTtcblxuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpO1xuICBpZiAoIWlzTmFOKHBhcnNlZCkpIHJldHVybiBwYXJzZWQ7XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUh0bWwodmFsdWU6IHN0cmluZykge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHRhZ3NUb1JlcGxhY2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgXCImXCI6IFwiJmFtcDtcIixcbiAgICBcIjxcIjogXCImbHQ7XCIsXG4gICAgXCI+XCI6IFwiJmd0O1wiLFxuICB9O1xuICByZXR1cm4gYCR7dmFsdWV9YC5yZXBsYWNlKC9bJjw+XS9nLCAodGFnKSA9PiB7XG4gICAgcmV0dXJuIHRhZ3NUb1JlcGxhY2VbdGFnXSB8fCB0YWc7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV2ZXJ0SHRtbCh2YWx1ZTogc3RyaW5nKSB7XG4gIGNvbnN0IHRhZ3NUb1JlcGxhY2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgXCImYW1wO1wiOiBcIiZcIixcbiAgICBcIiZsdDtcIjogXCI8XCIsXG4gICAgXCImZ3Q7XCI6IFwiPlwiLFxuICB9O1xuXG4gIHJldHVybiBgJHt2YWx1ZX1gLnJlcGxhY2UoLyZsdDt8Jmd0O3wmYW1wOy9nLCAodGFnKSA9PiB7XG4gICAgcmV0dXJuIHRhZ3NUb1JlcGxhY2VbdGFnXSB8fCB0YWc7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVVSU1vZGVsSUQ8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSkge1xuICBsZXQgaWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgdHJ5IHtcbiAgICBpZCA9IGZpbmRNb2RlbElkKG1vZGVsKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBpZCA9IERhdGUubm93KCk7XG4gIH1cbiAgY29uc3QgbmFtZSA9IG1vZGVsLmNvbnN0cnVjdG9yLm5hbWU7XG4gIHJldHVybiBgJHtuYW1lfS0ke2lkfWA7XG59XG4iXX0=
|
package/lib/index.cjs
CHANGED
|
@@ -26,6 +26,4 @@ __exportStar(require("./ui/index.cjs"), exports);
|
|
|
26
26
|
* @const VERSION
|
|
27
27
|
* @memberOf module:ui-decorators
|
|
28
28
|
*/
|
|
29
|
-
exports.VERSION = "0.4.
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsMENBQXdCO0FBQ3hCLHVDQUFxQjtBQUVyQjs7Ozs7R0FLRztBQUNVLFFBQUEsT0FBTyxHQUFHLE9BQU8sQ0FBQyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSB1aS1kZWNvcmF0b3JzXG4gKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VpXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgc3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvblxuICogQGRlc2NyaXB0aW9uIHRoaXMgaXMgaG93IHlvdSBzaG91bGQgZG9jdW1lbnQgYSBjb25zdGFudFxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6dWktZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiMC40LjFcIjtcbiJdfQ==
|
|
29
|
+
exports.VERSION = "0.4.3";
|
package/lib/index.d.ts
CHANGED
package/lib/model/Renderable.cjs
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9SZW5kZXJhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoibW9kZWwvUmVuZGVyYWJsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyYWJsZSB7XG4gIHJlbmRlcjxSPiguLi5hcmdzOiBhbnlbXSk6IFI7XG59XG4iXX0=
|
|
File without changes
|
package/lib/model/decorators.cjs
CHANGED
|
@@ -41,5 +41,3 @@ function uimodel(tag, props) {
|
|
|
41
41
|
function renderedBy(engine) {
|
|
42
42
|
return (0, reflection_1.apply)((0, reflection_1.metadata)(Rendering_1.RenderingEngine.key(constants_1.UIKeys.RENDERED_BY), engine));
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNEJBLDBCQVNDO0FBRUQsZ0NBRUM7QUF6Q0QsK0NBQXlDO0FBQ3pDLHFEQUF1RDtBQUN2RCwrQ0FBa0Q7QUFHbEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFDSCxTQUFnQixPQUFPLENBQUMsR0FBWSxFQUFFLEtBQTJCO0lBQy9ELDZEQUE2RDtJQUM3RCxPQUFPLENBQUMsUUFBYSxFQUFFLFdBQWlCLEVBQUUsRUFBRTtRQUMxQyxNQUFNLElBQUksR0FBb0I7WUFDNUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSTtZQUN6QixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7UUFDRixPQUFPLElBQUEscUJBQVEsRUFBQywyQkFBZSxDQUFDLEdBQUcsQ0FBQyxrQkFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixVQUFVLENBQUMsTUFBYztJQUN2QyxPQUFPLElBQUEsa0JBQUssRUFBQyxJQUFBLHFCQUFRLEVBQUMsMkJBQWUsQ0FBQyxHQUFHLENBQUMsa0JBQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUMiLCJmaWxlIjoibW9kZWwvZGVjb3JhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVJS2V5cyB9IGZyb20gXCIuLi91aS9jb25zdGFudHNcIjtcbmltcG9ydCB7IGFwcGx5LCBtZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgUmVuZGVyaW5nRW5naW5lIH0gZnJvbSBcIi4uL3VpL1JlbmRlcmluZ1wiO1xuaW1wb3J0IHsgVUlNb2RlbE1ldGFkYXRhIH0gZnJvbSBcIi4uL3VpL3R5cGVzXCI7XG5cbi8qKlxuICogVGFncyB0aGUgbW9kZWwgYXMgYSB1aW1vZGVsLCBnaXZpbmcgaXQgdGhlICdyZW5kZXInIG1ldGhvZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbdGFnXSBvcHRpb25hbCBwYXJhbS4gd2lsbCByZW5kZXIgdGhlIHByb3ZpZGVkIGVsbWVudCB3cmFwcGluZyB0aGUgYXR0cmlidXRlIHVpZWxlbWVudHNcbiAqIEBwYXJhbSB7e319IFtwcm9wc10gb3B0aW9uYWwgcGFyYW0uIEF0dHJpYnV0ZXMgdG8gYmUgcGFzc2VkIHRvIHRoZSB0YWcgZWxlbWVudFxuICogQHBhcmFtIHtmdW5jdGlvbihhbnkpOiB2b2lkfSBbaW5zdGFuY2VDYWxsYmFja10gb3B0aW9uYWwgY2FsbGJhY2sgcmV0dXJuaW5nIHRoZSBpbnN0YW5jZSBhZnRlciBjcmVhdGlvbiBmb3IgYWRkaXRpb25hbCBsb2dpY1xuICpcbiAqIEBkZWNvcmF0b3IgdWltb2RlbFxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgU3lzdGVtXG4gKiAgIHBhcnRpY2lwYW50IHVpbW9kZWxcbiAqICAgcGFydGljaXBhbnQgY29uc3RydWN0b3JcbiAqICAgcGFydGljaXBhbnQgaW5zdGFuY2VcbiAqICAgU3lzdGVtLT4+dWltb2RlbDpkbyhjb25zdHJ1Y3RvcilcbiAqICAgdWltb2RlbC0+PmNvbnN0cnVjdG9yOiBFeGVjdXRlcyB0aGUgY29uc3RydWN0b3JcbiAqICAgY29uc3RydWN0b3ItPj51aW1vZGVsOiByZXR1cm5zIGluc3RhbmNlXG4gKiAgIHVpbW9kZWwtPj5pbnN0YW5jZTogYWRkcyB0aGUgcmVuZGVyIG1ldGhvZFxuICogICB1aW1vZGVsLT4+U3lzdGVtOiByZXR1cm5zIFVJTW9kZWwgaW5zdGFuY2VcbiAqXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdWltb2RlbCh0YWc/OiBzdHJpbmcsIHByb3BzPzogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHJldHVybiAob3JpZ2luYWw6IGFueSwgcHJvcGVydHlLZXk/OiBhbnkpID0+IHtcbiAgICBjb25zdCBtZXRhOiBVSU1vZGVsTWV0YWRhdGEgPSB7XG4gICAgICB0YWc6IHRhZyB8fCBvcmlnaW5hbC5uYW1lLFxuICAgICAgcHJvcHM6IHByb3BzLFxuICAgIH07XG4gICAgcmV0dXJuIG1ldGFkYXRhKFJlbmRlcmluZ0VuZ2luZS5rZXkoVUlLZXlzLlVJTU9ERUwpLCBtZXRhKShvcmlnaW5hbCk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJlZEJ5KGVuZ2luZTogc3RyaW5nKSB7XG4gIHJldHVybiBhcHBseShtZXRhZGF0YShSZW5kZXJpbmdFbmdpbmUua2V5KFVJS2V5cy5SRU5ERVJFRF9CWSksIGVuZ2luZSkpO1xufVxuIl19
|
|
File without changes
|
package/lib/model/index.cjs
CHANGED
|
@@ -22,5 +22,3 @@ require("./model.cjs");
|
|
|
22
22
|
__exportStar(require("./decorators.cjs"), exports);
|
|
23
23
|
__exportStar(require("./overrides.cjs"), exports);
|
|
24
24
|
__exportStar(require("./Renderable.cjs"), exports);
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsbUJBQWlCO0FBRWpCLCtDQUE2QjtBQUM3Qiw4Q0FBNEI7QUFDNUIsK0NBQTZCIiwiZmlsZSI6Im1vZGVsL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbmFtZXNwYWNlIG1vZGVsXG4gKiBAbWVtYmVyT2YgdWktZGVjb3JhdG9yc1xuICovXG5cbmltcG9ydCBcIi4vbW9kZWxcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3ZlcnJpZGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9SZW5kZXJhYmxlXCI7XG4iXX0=
|
package/lib/model/index.d.ts
CHANGED
|
File without changes
|
package/lib/model/model.cjs
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6Im1vZGVsL21vZGVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxFcnJvckRlZmluaXRpb24gfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQge1xuICBCdWlsZGVyUmVnaXN0cnksXG4gIENvbXBhcmFibGUsXG4gIENvbnN0cnVjdG9yLFxuICBIYXNoYWJsZSxcbiAgTW9kZWxBcmcsXG4gIE1vZGVsQnVpbGRlckZ1bmN0aW9uLFxuICBNb2RlbENvbnN0cnVjdG9yLFxuICBTZXJpYWxpemFibGUsXG4gIFZhbGlkYXRhYmxlLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBSZW5kZXJhYmxlIH0gZnJvbSBcIi4vUmVuZGVyYWJsZVwiO1xuXG5kZWNsYXJlIG1vZHVsZSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiIHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBoYWNreSBvdmVycmlkZVxuICBkZWNsYXJlIGFic3RyYWN0IGNsYXNzIE1vZGVsXG4gICAgaW1wbGVtZW50c1xuICAgICAgVmFsaWRhdGFibGUsXG4gICAgICBTZXJpYWxpemFibGUsXG4gICAgICBIYXNoYWJsZSxcbiAgICAgIENvbXBhcmFibGU8TW9kZWw+LFxuICAgICAgUmVuZGVyYWJsZVxuICB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPE1vZGVsPik7XG5cbiAgICBoYXNFcnJvcnMoLi4uZXhjbHVzaW9uczogYW55W10pOiBNb2RlbEVycm9yRGVmaW5pdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBoYXNFcnJvcnMoXG4gICAgICBwcmV2aW91c1ZlcnNpb24/OiBNb2RlbCB8IGFueSxcbiAgICAgIC4uLmV4Y2x1c2lvbnM6IGFueVtdXG4gICAgKTogTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBDb21wYXJlIG9iamVjdCBlcXVhbGl0eSByZWN1cnNpdmVseVxuICAgICAqIEBwYXJhbSB7YW55fSBvYmogb2JqZWN0IHRvIGNvbXBhcmUgdG9cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4Y2VwdGlvbnNdIHByb3BlcnR5IG5hbWVzIHRvIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGNvbXBhcmlzb25cbiAgICAgKi9cbiAgICBlcXVhbHMob2JqOiBhbnksIC4uLmV4Y2VwdGlvbnM6IHN0cmluZ1tdKTogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIHRoZSBzZXJpYWxpemVkIG1vZGVsIGFjY29yZGluZyB0byB0aGUgY3VycmVudGx5IGRlZmluZWQge0BsaW5rIFNlcmlhbGl6ZXJ9XG4gICAgICovXG4gICAgc2VyaWFsaXplKCk6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBPdmVycmlkZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIGpzJ3MgJ3RvU3RyaW5nKCknIHdoaWNoIHN1Y2tzLi4uXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgdG9TdHJpbmcoKTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IERlZmluZXMgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBvYmplY3QgaGFzaC4gUmVsaWVzIG9uIGEgdmVyeSBiYXNpYyBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBKYXZhJ3Mgc3RyaW5nIGhhc2g7XG4gICAgICovXG4gICAgaGFzaCgpOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgRGVzZXJpYWxpemVzIGEgTW9kZWxcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXJnc1xuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpdCBmYWlscyB0byBwYXJzZSB0aGUgc3RyaW5nLCBvciBpZiBpdCBmYWlscyB0byBidWlsZCB0aGUgbW9kZWxcbiAgICAgKi9cbiAgICBzdGF0aWMgZGVzZXJpYWxpemUoc3RyOiBzdHJpbmcpOiBhbnk7XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgUmVwb3B1bGF0ZXMgdGhlIE9iamVjdCBwcm9wZXJ0aWVzIHdpdGggdGhlIG9uZXMgZnJvbSB0aGUgbmV3IG9iamVjdFxuICAgICAqIEBkZXNjcmlwdGlvbiBJdGVyYXRlcyBhbGwgY29tbW9uIHByb3BlcnRpZXMgb2Ygb2JqIChpZiBleGlzdGluZykgYW5kIHNlbGYsIGFuZCBjb3BpZXMgdGhlbSBvbnRvIHNlbGZcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VH0gc2VsZlxuICAgICAqIEBwYXJhbSB7VCB8IFJlY29yZDxzdHJpbmcsIGFueT59IFtvYmpdXG4gICAgICpcbiAgICAgKi9cbiAgICBzdGF0aWMgZnJvbU9iamVjdDxUIGV4dGVuZHMgTW9kZWw+KFxuICAgICAgc2VsZjogVCxcbiAgICAgIG9iaj86IFQgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgKTogVDtcbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBSZXBvcHVsYXRlcyB0aGUgaW5zdGFuY2Ugd2l0aCB0aGUgb25lcyBmcm9tIHRoZSBuZXcgTW9kZWwgT2JqZWN0XG4gICAgICogQGRlc2NyaXB0aW9uIEl0ZXJhdGVzIGFsbCBjb21tb24gcHJvcGVydGllcyBvZiBvYmogKGlmIGV4aXN0aW5nKSBhbmQgc2VsZiwgYW5kIGNvcGllcyB0aGVtIG9udG8gc2VsZi5cbiAgICAgKiBJcyBhd2FyZSBvZiBuZXN0ZWQgTW9kZWwgT2JqZWN0cyBhbmQgcmVidWlsZHMgdGhlbSBhbHNvLlxuICAgICAqIFdoZW4gTGlzdCBwcm9wZXJ0aWVzIGFyZSBkZWNvcmF0ZWQgd2l0aCB7QGxpbmsgbGlzdH0sIHRoZXkgbGlzdCBpdGVtcyB3aWxsIGFsc28gYmUgcmVidWlsdFxuICAgICAqXG4gICAgICogQHBhcmFtIHtUfSBzZWxmXG4gICAgICogQHBhcmFtIHtUIHwgUmVjb3JkPHN0cmluZywgYW55Pn0gW29ial1cbiAgICAgKlxuICAgICAqL1xuICAgIHN0YXRpYyBmcm9tTW9kZWw8VCBleHRlbmRzIE1vZGVsPihcbiAgICAgIHNlbGY6IFQsXG4gICAgICBvYmo/OiBUIHwgUmVjb3JkPHN0cmluZywgYW55PlxuICAgICk6IFQ7XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgU2V0cyB0aGUgR2xvYmFsIHtAbGluayBNb2RlbEJ1aWxkZXJGdW5jdGlvbn1cbiAgICAgKiBAcGFyYW0ge01vZGVsQnVpbGRlckZ1bmN0aW9ufSBbYnVpbGRlcl1cbiAgICAgKi9cbiAgICBzdGF0aWMgc2V0QnVpbGRlcihidWlsZGVyPzogTW9kZWxCdWlsZGVyRnVuY3Rpb24pOiB2b2lkO1xuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgY3VycmVudCBnbG9iYWwge0BsaW5rIE1vZGVsQnVpbGRlckZ1bmN0aW9ufVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXRCdWlsZGVyKCk6IE1vZGVsQnVpbGRlckZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQge0BsaW5rIE1vZGVsUmVnaXN0cnlNYW5hZ2VyfVxuICAgICAqXG4gICAgICogQHJldHVybiBNb2RlbFJlZ2lzdHJ5LCBkZWZhdWx0cyB0byB7QGxpbmsgTW9kZWxSZWdpc3RyeU1hbmFnZXJ9XG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0UmVnaXN0cnk7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCBhY3RpbmdNb2RlbFJlZ2lzdHJ5XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0J1aWxkZXJSZWdpc3RyeX0gbW9kZWxSZWdpc3RyeSB0aGUgbmV3IGltcGxlbWVudGF0aW9uIG9mIFJlZ2lzdHJ5XG4gICAgICovXG4gICAgc3RhdGljIHNldFJlZ2lzdHJ5KG1vZGVsUmVnaXN0cnk6IEJ1aWxkZXJSZWdpc3RyeTxhbnk+KTogdm9pZDtcbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSByZWdpc3RlciBuZXcgTW9kZWxzXG4gICAgICogQHBhcmFtIHthbnl9IGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtuYW1lXSB3aGVuIG5vdCBkZWZpbmVkLCB0aGUgbmFtZSBvZiB0aGUgY29uc3RydWN0b3Igd2lsbCBiZSB1c2VkXG4gICAgICpcbiAgICAgKiBAc2VlIE1vZGVsUmVnaXN0cnlcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVnaXN0ZXI8VCBleHRlbmRzIE1vZGVsPihcbiAgICAgIGNvbnN0cnVjdG9yOiBNb2RlbENvbnN0cnVjdG9yPFQ+LFxuICAgICAgbmFtZT86IHN0cmluZ1xuICAgICk6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgR2V0cyBhIHJlZ2lzdGVyZWQgTW9kZWwge0BsaW5rIE1vZGVsQ29uc3RydWN0b3J9XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKlxuICAgICAqIEBzZWUgTW9kZWxSZWdpc3RyeVxuICAgICAqL1xuICAgIHN0YXRpYyBnZXQ8VCBleHRlbmRzIE1vZGVsPihuYW1lOiBzdHJpbmcpOiBNb2RlbENvbnN0cnVjdG9yPFQ+IHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gb2JqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjbGF6el0gd2hlbiBwcm92aWRlZCwgaXQgd2lsbCBhdHRlbXB0IHRvIGZpbmQgdGhlIG1hdGNoaW5nIGNvbnN0cnVjdG9yXG4gICAgICpcbiAgICAgKiBAdGhyb3dzIEVycm9yIElmIGNsYXp6IGlzIG5vdCBmb3VuZCwgb3Igb2JqIGlzIG5vdCBhIHtAbGluayBNb2RlbH0gbWVhbmluZyBpdCBoYXMgbm8ge0BsaW5rIE1vZGVsS2V5cy5BTkNIT1J9IHByb3BlcnR5XG4gICAgICpcbiAgICAgKiBAc2VlIE1vZGVsUmVnaXN0cnlcbiAgICAgKi9cbiAgICBzdGF0aWMgYnVpbGQ8VCBleHRlbmRzIE1vZGVsPihvYmo/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjbGF6ej86IHN0cmluZyk6IFQ7XG4gICAgc3RhdGljIGdldE1ldGFkYXRhPFYgZXh0ZW5kcyBNb2RlbD4obW9kZWw6IFYpOiBhbnk7XG4gICAgc3RhdGljIGdldEF0dHJpYnV0ZXM8ViBleHRlbmRzIE1vZGVsPihtb2RlbDogQ29uc3RydWN0b3I8Vj4gfCBWKTogc3RyaW5nW107XG4gICAgc3RhdGljIGVxdWFsczxWIGV4dGVuZHMgTW9kZWw+KFxuICAgICAgb2JqMTogVixcbiAgICAgIG9iajI6IFYsXG4gICAgICAuLi5leGNlcHRpb25zOiBhbnlbXVxuICAgICk6IGJvb2xlYW47XG4gICAgc3RhdGljIGhhc0Vycm9yczxWIGV4dGVuZHMgTW9kZWw+KFxuICAgICAgbW9kZWw6IFYsXG4gICAgICAuLi5leGNlcHRpb25zOiBhbnlbXVxuICAgICk6IE1vZGVsRXJyb3JEZWZpbml0aW9uIHwgdW5kZWZpbmVkO1xuICAgIHN0YXRpYyBzZXJpYWxpemU8ViBleHRlbmRzIE1vZGVsPihtb2RlbDogVik6IGFueTtcbiAgICBzdGF0aWMgaGFzaDxWIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBWKTogYW55O1xuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IEJ1aWxkcyB0aGUga2V5IHRvIHN0b3JlIGFzIE1ldGFkYXRhIHVuZGVyIFJlZmxlY3Rpb25zXG4gICAgICogQGRlc2NyaXB0aW9uIGNvbmNhdGVuYXRlcyB7QGxpbmsgTW9kZWxLZXlzI1JFRkxFQ1R9IHdpdGggdGhlIHByb3ZpZGVkIGtleVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAgICAgKi9cbiAgICBzdGF0aWMga2V5KHN0cjogc3RyaW5nKTogc3RyaW5nO1xuICAgIHJlbmRlcjxSPiguLi5hcmdzOiBhbnlbXSk6IFI7XG4gIH1cbn1cbiJdfQ==
|
package/lib/model/model.d.ts
CHANGED
|
File without changes
|
package/lib/model/overrides.cjs
CHANGED
|
@@ -5,5 +5,3 @@ const Rendering_1 = require("../ui/Rendering.cjs");
|
|
|
5
5
|
decorator_validation_1.Model.prototype.render = function (...args) {
|
|
6
6
|
return Rendering_1.RenderingEngine.render(this, ...args);
|
|
7
7
|
};
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9tb2RlbC9vdmVycmlkZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5RUFBdUQ7QUFDdkQsK0NBQWtEO0FBRWxELDRCQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFvQyxHQUFHLElBQVc7SUFDekUsT0FBTywyQkFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMvQyxDQUFDLENBQUMiLCJmaWxlIjoibW9kZWwvb3ZlcnJpZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBSZW5kZXJpbmdFbmdpbmUgfSBmcm9tIFwiLi4vdWkvUmVuZGVyaW5nXCI7XG5cbk1vZGVsLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiA8TSBleHRlbmRzIE1vZGVsPih0aGlzOiBNLCAuLi5hcmdzOiBhbnlbXSkge1xuICByZXR1cm4gUmVuZGVyaW5nRW5naW5lLnJlbmRlcih0aGlzLCAuLi5hcmdzKTtcbn07XG4iXX0=
|
package/lib/model/overrides.d.ts
CHANGED
|
File without changes
|
package/lib/ui/Rendering.cjs
CHANGED
|
@@ -6,14 +6,44 @@ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
|
6
6
|
const constants_1 = require("./constants.cjs");
|
|
7
7
|
const errors_1 = require("./errors.cjs");
|
|
8
8
|
const reflection_1 = require("@decaf-ts/reflection");
|
|
9
|
+
const utils_1 = require("./utils.cjs");
|
|
10
|
+
/**
|
|
11
|
+
* @description Abstract class for rendering UI components based on model metadata.
|
|
12
|
+
* @summary The RenderingEngine class provides a framework for converting model metadata into UI field definitions.
|
|
13
|
+
* It handles the translation of model properties to UI elements, applies validation rules, and manages different rendering flavors.
|
|
14
|
+
* This class is designed to be extended by specific rendering implementations.
|
|
15
|
+
*
|
|
16
|
+
* @template T The type of the rendering result, defaults to void
|
|
17
|
+
* @template R The type of the field definition, defaults to FieldDefinition<T>
|
|
18
|
+
*
|
|
19
|
+
* @param {string} flavour - The flavor of the rendering engine.
|
|
20
|
+
*
|
|
21
|
+
* @class RenderingEngine
|
|
22
|
+
*/
|
|
9
23
|
class RenderingEngine {
|
|
24
|
+
/**
|
|
25
|
+
* @description Cache for storing rendering engine instances or constructors.
|
|
26
|
+
* @private
|
|
27
|
+
* @static
|
|
28
|
+
*/
|
|
10
29
|
static { this.cache = {}; }
|
|
11
30
|
constructor(flavour) {
|
|
12
31
|
this.flavour = flavour;
|
|
32
|
+
/**
|
|
33
|
+
* Flag indicating whether the rendering engine has been initialized.
|
|
34
|
+
*/
|
|
13
35
|
this.initialized = false;
|
|
14
36
|
RenderingEngine.register(this);
|
|
15
37
|
console.log(`decaf's ${flavour} rendering engine loaded`);
|
|
16
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* @description Translates between model types and HTML input types.
|
|
41
|
+
* @summary Converts model data types to appropriate HTML input types and vice versa.
|
|
42
|
+
*
|
|
43
|
+
* @param {string} key - The key to translate.
|
|
44
|
+
* @param {boolean} [toView=true] - Direction of translation (true for model to view, false for view to model).
|
|
45
|
+
* @returns {string} The translated type.
|
|
46
|
+
*/
|
|
17
47
|
translate(key, toView = true) {
|
|
18
48
|
if (toView) {
|
|
19
49
|
switch (key) {
|
|
@@ -49,9 +79,91 @@ class RenderingEngine {
|
|
|
49
79
|
}
|
|
50
80
|
return key;
|
|
51
81
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
82
|
+
/**
|
|
83
|
+
* @description Checks if a type is validatable by its nature.
|
|
84
|
+
* @summary Determines if a given UI key represents a type that is inherently validatable.
|
|
85
|
+
*
|
|
86
|
+
* @param {string} key - The UI key to check.
|
|
87
|
+
* @returns {boolean} True if the type is validatable, false otherwise.
|
|
88
|
+
*/
|
|
89
|
+
isValidatableByType(key) {
|
|
90
|
+
return [constants_1.UIKeys.EMAIL, constants_1.UIKeys.URL, constants_1.UIKeys.DATE, constants_1.UIKeys.PASSWORD].includes(key);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* @description Checks if a type is validatable by attribute.
|
|
94
|
+
* @summary Determines if a given UI key represents a validation that can be applied as an attribute.
|
|
95
|
+
*
|
|
96
|
+
* @param {string} key - The UI key to check.
|
|
97
|
+
* @returns {boolean} True if the type is validatable by attribute, false otherwise.
|
|
98
|
+
*/
|
|
99
|
+
isValidatableByAttribute(key) {
|
|
100
|
+
return [
|
|
101
|
+
constants_1.UIKeys.REQUIRED,
|
|
102
|
+
constants_1.UIKeys.MIN,
|
|
103
|
+
constants_1.UIKeys.MAX,
|
|
104
|
+
constants_1.UIKeys.STEP,
|
|
105
|
+
constants_1.UIKeys.MIN_LENGTH,
|
|
106
|
+
constants_1.UIKeys.MAX_LENGTH,
|
|
107
|
+
constants_1.UIKeys.PATTERN,
|
|
108
|
+
].includes(key);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* @description Converts validation metadata to an attribute value.
|
|
112
|
+
* @summary Transforms validation metadata into a value suitable for use as an HTML attribute.
|
|
113
|
+
*
|
|
114
|
+
* @param {string} key - The validation key.
|
|
115
|
+
* @param {ValidationMetadata} value - The validation metadata.
|
|
116
|
+
* @returns {string | number | boolean} The converted attribute value.
|
|
117
|
+
*/
|
|
118
|
+
toAttributeValue(key, value) {
|
|
119
|
+
switch (key) {
|
|
120
|
+
case constants_1.UIKeys.MIN:
|
|
121
|
+
case constants_1.UIKeys.MAX:
|
|
122
|
+
case constants_1.UIKeys.MIN_LENGTH:
|
|
123
|
+
case constants_1.UIKeys.MAX_LENGTH:
|
|
124
|
+
case constants_1.UIKeys.STEP:
|
|
125
|
+
return value.value;
|
|
126
|
+
case constants_1.UIKeys.EMAIL:
|
|
127
|
+
case constants_1.UIKeys.URL:
|
|
128
|
+
case constants_1.UIKeys.PATTERN:
|
|
129
|
+
case constants_1.UIKeys.PASSWORD:
|
|
130
|
+
return value.pattern;
|
|
131
|
+
default:
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* @description Converts a model to a field definition.
|
|
137
|
+
* @summary Processes a model instance, extracting UI-related metadata and validation rules to create a field definition.
|
|
138
|
+
*
|
|
139
|
+
* @template M Type extending Model
|
|
140
|
+
* @template T Type referencing the specific Rendering engine field properties/inputs
|
|
141
|
+
* @param {M} model - The model instance to convert.
|
|
142
|
+
* @param {Record<string, unknown>} [globalProps={}] - Global properties to apply to all child elements.
|
|
143
|
+
* @param {boolean} [generateId=true] - Flag indicating whether to populate the rendererId property.
|
|
144
|
+
* @returns {FieldDefinition<T>} A field definition object representing the UI structure of the model.
|
|
145
|
+
* @throws {RenderingError} If no UI definitions are set for the model or if there are invalid decorators.
|
|
146
|
+
*
|
|
147
|
+
* @mermaid
|
|
148
|
+
* sequenceDiagram
|
|
149
|
+
* participant C as Client
|
|
150
|
+
* participant RE as RenderingEngine
|
|
151
|
+
* participant R as Reflection
|
|
152
|
+
* participant M as Model
|
|
153
|
+
* C->>RE: toFieldDefinition(model, globalProps)
|
|
154
|
+
* RE->>R: getMetadata(UIKeys.UIMODEL, model.constructor)
|
|
155
|
+
* R-->>RE: UIModelMetadata
|
|
156
|
+
* RE->>R: getAllPropertyDecorators(model, UIKeys.REFLECT)
|
|
157
|
+
* R-->>RE: Record<string, DecoratorMetadata[]>
|
|
158
|
+
* RE->>R: getAllPropertyDecorators(model, ValidationKeys.REFLECT)
|
|
159
|
+
* R-->>RE: Record<string, DecoratorMetadata<ValidationMetadata>[]>
|
|
160
|
+
* loop For each property
|
|
161
|
+
* RE->>RE: Process UI decorators
|
|
162
|
+
* RE->>RE: Apply validation rules
|
|
163
|
+
* end
|
|
164
|
+
* RE-->>C: FieldDefinition<T>
|
|
165
|
+
*/
|
|
166
|
+
toFieldDefinition(model, globalProps = {}, generateId = true) {
|
|
55
167
|
const classDecorator = Reflect.getMetadata(RenderingEngine.key(constants_1.UIKeys.UIMODEL), model.constructor) ||
|
|
56
168
|
Reflect.getMetadata(RenderingEngine.key(constants_1.UIKeys.UIMODEL), decorator_validation_1.Model.get(model.constructor.name));
|
|
57
169
|
if (!classDecorator)
|
|
@@ -62,12 +174,6 @@ class RenderingEngine {
|
|
|
62
174
|
const childProps = {};
|
|
63
175
|
if (uiDecorators) {
|
|
64
176
|
const validationDecorators = reflection_1.Reflection.getAllPropertyDecorators(model, decorator_validation_1.ValidationKeys.REFLECT);
|
|
65
|
-
// // eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
66
|
-
// const dbDecorators: Record<string, DecoratorMetadata[]> =
|
|
67
|
-
// Reflection.getAllPropertyDecorators(model, DBKeys.REFLECT) as Record<
|
|
68
|
-
// string,
|
|
69
|
-
// DecoratorMetadata[]
|
|
70
|
-
// >;
|
|
71
177
|
for (const key in uiDecorators) {
|
|
72
178
|
const decs = uiDecorators[key];
|
|
73
179
|
if (decs.length !== 2)
|
|
@@ -86,19 +192,28 @@ class RenderingEngine {
|
|
|
86
192
|
props: Object.assign({}, dec.props.props, globalProps),
|
|
87
193
|
};
|
|
88
194
|
const validationDecs = validationDecorators[key];
|
|
89
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
90
195
|
const typeDec = validationDecs.shift();
|
|
91
196
|
for (const dec of validationDecs) {
|
|
92
|
-
if (dec.key
|
|
93
|
-
|
|
197
|
+
if (this.isValidatableByAttribute(dec.key)) {
|
|
198
|
+
childDefinition.props[this.translate(dec.key)] =
|
|
199
|
+
this.toAttributeValue(dec.key, dec.props);
|
|
94
200
|
continue;
|
|
95
201
|
}
|
|
96
|
-
if (dec.key
|
|
97
|
-
|
|
202
|
+
if (this.isValidatableByType(dec.key)) {
|
|
203
|
+
if (dec.key === constants_1.HTML5InputTypes.DATE) {
|
|
204
|
+
childDefinition.props[constants_1.UIKeys.FORMAT] =
|
|
205
|
+
dec.props.format || constants_1.HTML5DateFormat;
|
|
206
|
+
}
|
|
207
|
+
childDefinition.props[constants_1.UIKeys.TYPE] = dec.key;
|
|
98
208
|
continue;
|
|
99
209
|
}
|
|
100
210
|
console.log(dec);
|
|
101
211
|
}
|
|
212
|
+
if (!childDefinition.props[constants_1.UIKeys.TYPE]) {
|
|
213
|
+
const basicType = typeDec.props.name;
|
|
214
|
+
childDefinition.props[constants_1.UIKeys.TYPE] = this.translate(basicType.toLowerCase(), true);
|
|
215
|
+
}
|
|
216
|
+
childDefinition.props.value = (0, utils_1.formatByType)(childDefinition.props[constants_1.UIKeys.TYPE], model[key], childDefinition.props[constants_1.UIKeys.FORMAT]);
|
|
102
217
|
children.push(childDefinition);
|
|
103
218
|
break;
|
|
104
219
|
}
|
|
@@ -107,18 +222,42 @@ class RenderingEngine {
|
|
|
107
222
|
}
|
|
108
223
|
}
|
|
109
224
|
}
|
|
110
|
-
|
|
225
|
+
const result = {
|
|
111
226
|
tag: tag,
|
|
112
227
|
props: Object.assign({}, props, globalProps),
|
|
113
228
|
children: children,
|
|
114
229
|
};
|
|
230
|
+
if (generateId) {
|
|
231
|
+
result.rendererId = (0, utils_1.generateUIModelID)(model);
|
|
232
|
+
}
|
|
233
|
+
return result;
|
|
115
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* @description Registers a rendering engine instance.
|
|
237
|
+
* @summary Adds a rendering engine to the static cache and sets it as the current engine.
|
|
238
|
+
*
|
|
239
|
+
* @param {RenderingEngine<unknown, unknown>} engine - The rendering engine to register.
|
|
240
|
+
* @throws {InternalError} If an engine with the same flavor already exists.
|
|
241
|
+
*
|
|
242
|
+
* @static
|
|
243
|
+
*/
|
|
116
244
|
static register(engine) {
|
|
117
245
|
if (engine.flavour in this.cache)
|
|
118
246
|
throw new db_decorators_1.InternalError(`Rendering engine under ${engine.flavour} already exists`);
|
|
119
247
|
this.cache[engine.flavour] = engine;
|
|
120
248
|
this.current = engine;
|
|
121
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* @description Retrieves or initializes a rendering engine.
|
|
252
|
+
* @summary Gets an existing engine instance or creates and initializes a new one if given a constructor.
|
|
253
|
+
*
|
|
254
|
+
* @template O The type of the rendering engine output
|
|
255
|
+
* @param {Constructor<RenderingEngine<O>> | RenderingEngine<O>} obj - The engine instance or constructor.
|
|
256
|
+
* @returns {RenderingEngine<O>} The initialized rendering engine.
|
|
257
|
+
*
|
|
258
|
+
* @private
|
|
259
|
+
* @static
|
|
260
|
+
*/
|
|
122
261
|
static getOrBoot(obj) {
|
|
123
262
|
if (obj instanceof RenderingEngine)
|
|
124
263
|
return obj;
|
|
@@ -126,6 +265,17 @@ class RenderingEngine {
|
|
|
126
265
|
engine.initialize(); // make the booting async. use the initialized flag to control it
|
|
127
266
|
return engine;
|
|
128
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* @description Retrieves a rendering engine by flavor.
|
|
270
|
+
* @summary Gets the current rendering engine or a specific one by flavor.
|
|
271
|
+
*
|
|
272
|
+
* @template O The type of the rendering engine output
|
|
273
|
+
* @param {string} [flavour] - The flavor of the rendering engine to retrieve.
|
|
274
|
+
* @returns {RenderingEngine<O>} The requested rendering engine.
|
|
275
|
+
* @throws {InternalError} If the requested flavor does not exist.
|
|
276
|
+
*
|
|
277
|
+
* @static
|
|
278
|
+
*/
|
|
129
279
|
static get(flavour) {
|
|
130
280
|
if (!flavour)
|
|
131
281
|
return this.getOrBoot(this.current);
|
|
@@ -133,17 +283,37 @@ class RenderingEngine {
|
|
|
133
283
|
throw new db_decorators_1.InternalError(`Rendering engine under ${flavour} does not exist`);
|
|
134
284
|
return this.getOrBoot(this.cache[flavour]);
|
|
135
285
|
}
|
|
286
|
+
/**
|
|
287
|
+
* @description Renders a model using the appropriate rendering engine.
|
|
288
|
+
* @summary Determines the correct rendering engine for a model and invokes its render method.
|
|
289
|
+
*
|
|
290
|
+
* @template M Type extending Model
|
|
291
|
+
* @param {M} model - The model to render.
|
|
292
|
+
* @param {...any[]} args - Additional arguments to pass to the render method.
|
|
293
|
+
* @returns {any} The result of the rendering process.
|
|
294
|
+
* @throws {InternalError} If no registered model is found.
|
|
295
|
+
*
|
|
296
|
+
* @static
|
|
297
|
+
*/
|
|
136
298
|
static render(model, ...args) {
|
|
137
299
|
const constructor = decorator_validation_1.Model.get(model.constructor.name);
|
|
138
300
|
if (!constructor)
|
|
139
301
|
throw new db_decorators_1.InternalError("No model registered found");
|
|
140
302
|
const flavour = Reflect.getMetadata(RenderingEngine.key(constants_1.UIKeys.RENDERED_BY), constructor);
|
|
303
|
+
// @ts-expect-error for the var args type check
|
|
141
304
|
return RenderingEngine.get(flavour).render(model, ...args);
|
|
142
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* @description Generates a metadata key for UI-related properties.
|
|
308
|
+
* @summary Prefixes a given key with the UI reflection prefix.
|
|
309
|
+
*
|
|
310
|
+
* @param {string} key - The key to prefix.
|
|
311
|
+
* @returns {string} The prefixed key.
|
|
312
|
+
*
|
|
313
|
+
* @static
|
|
314
|
+
*/
|
|
143
315
|
static key(key) {
|
|
144
316
|
return `${constants_1.UIKeys.REFLECT}${key}`;
|
|
145
317
|
}
|
|
146
318
|
}
|
|
147
319
|
exports.RenderingEngine = RenderingEngine;
|
|
148
|
-
|
|
149
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91aS9SZW5kZXJpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQXdEO0FBQ3hELHlFQU13QztBQUN4QywyQ0FLcUI7QUFPckIscUNBQTBDO0FBQzFDLHFEQUFrRDtBQUVsRCxNQUFzQixlQUFlO2FBQ3BCLFVBQUssR0FHaEIsRUFIZ0IsQUFHZCxDQUFDO0lBT1AsWUFBK0IsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFGcEMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFHckMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsT0FBTywwQkFBMEIsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFJRCxTQUFTLENBQUMsR0FBVyxFQUFFLE1BQU0sR0FBRyxJQUFJO1FBQ2xDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxRQUFRLEdBQUcsRUFBRSxDQUFDO2dCQUNaLEtBQUsscUNBQWMsQ0FBQyxNQUFNO29CQUN4QixPQUFPLDJCQUFlLENBQUMsSUFBSSxDQUFDO2dCQUM5QixLQUFLLHFDQUFjLENBQUMsTUFBTSxDQUFDO2dCQUMzQixLQUFLLHFDQUFjLENBQUMsTUFBTTtvQkFDeEIsT0FBTywyQkFBZSxDQUFDLE1BQU0sQ0FBQztnQkFDaEMsS0FBSyxxQ0FBYyxDQUFDLE9BQU87b0JBQ3pCLE9BQU8sMkJBQWUsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xDLEtBQUsscUNBQWMsQ0FBQyxJQUFJO29CQUN0QixPQUFPLDJCQUFlLENBQUMsSUFBSSxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ1osS0FBSywyQkFBZSxDQUFDLElBQUksQ0FBQztnQkFDMUIsS0FBSywyQkFBZSxDQUFDLEtBQUssQ0FBQztnQkFDM0IsS0FBSywyQkFBZSxDQUFDLEtBQUssQ0FBQztnQkFDM0IsS0FBSywyQkFBZSxDQUFDLFFBQVEsQ0FBQztnQkFDOUIsS0FBSywyQkFBZSxDQUFDLEdBQUcsQ0FBQztnQkFDekIsS0FBSywyQkFBZSxDQUFDLEdBQUc7b0JBQ3RCLE9BQU8scUNBQWMsQ0FBQyxNQUFNLENBQUM7Z0JBQy9CLEtBQUssMkJBQWUsQ0FBQyxNQUFNO29CQUN6QixPQUFPLHFDQUFjLENBQUMsTUFBTSxDQUFDO2dCQUMvQixLQUFLLDJCQUFlLENBQUMsUUFBUTtvQkFDM0IsT0FBTyxxQ0FBYyxDQUFDLE9BQU8sQ0FBQztnQkFDaEMsS0FBSywyQkFBZSxDQUFDLElBQUksQ0FBQztnQkFDMUIsS0FBSywyQkFBZSxDQUFDLGNBQWMsQ0FBQztnQkFDcEMsS0FBSywyQkFBZSxDQUFDLElBQUk7b0JBQ3ZCLE9BQU8scUNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLENBQ0osS0FBUSxFQUNSLGNBQXVDLEVBQUU7SUFDekMsNkRBQTZEO0lBQzdELEdBQUcsSUFBVztRQUVkLE1BQU0sY0FBYyxHQUNsQixPQUFPLENBQUMsV0FBVyxDQUNqQixlQUFlLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsT0FBTyxDQUFDLEVBQ25DLEtBQUssQ0FBQyxXQUFXLENBQ2xCO1lBQ0QsT0FBTyxDQUFDLFdBQVcsQ0FDakIsZUFBZSxDQUFDLEdBQUcsQ0FBQyxrQkFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNuQyw0QkFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBUSxDQUN6QyxDQUFDO1FBRUosSUFBSSxDQUFDLGNBQWM7WUFDakIsTUFBTSxJQUFJLHVCQUFjLENBQ3RCLG1DQUFtQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUkseUJBQXlCLENBQ25GLENBQUM7UUFFSixNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLGNBQWMsQ0FBQztRQUV0QyxNQUFNLFlBQVksR0FDaEIsdUJBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsa0JBQU0sQ0FBQyxPQUFPLENBR3hELENBQUM7UUFDSixJQUFJLFFBQTBDLENBQUM7UUFDL0MsTUFBTSxVQUFVLEdBQXdCLEVBQUUsQ0FBQztRQUUzQyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0sb0JBQW9CLEdBQ3hCLHVCQUFVLENBQUMsd0JBQXdCLENBQ2pDLEtBQUssRUFDTCxxQ0FBYyxDQUFDLE9BQU8sQ0FDZ0IsQ0FBQztZQUMzQyxnRUFBZ0U7WUFDaEUsNERBQTREO1lBQzVELDBFQUEwRTtZQUMxRSxjQUFjO1lBQ2QsMEJBQTBCO1lBQzFCLE9BQU87WUFFUCxLQUFLLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUMvQixNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO29CQUNuQixNQUFNLElBQUksdUJBQWMsQ0FDdEIsc0ZBQXNGLENBQ3ZGLENBQUM7Z0JBQ0osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0NBQWdDO2dCQUNyRCxJQUFJLENBQUMsR0FBRztvQkFBRSxNQUFNLElBQUksdUJBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN6RCxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDaEIsS0FBSyxrQkFBTSxDQUFDLElBQUk7d0JBQ2QsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUF1QixDQUFDO3dCQUM5QyxNQUFNO29CQUNSLEtBQUssa0JBQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO3dCQUNwQixRQUFRLEdBQUcsUUFBUSxJQUFJLEVBQUUsQ0FBQzt3QkFDMUIsTUFBTSxlQUFlLEdBQXVCOzRCQUMxQyxHQUFHLEVBQUcsR0FBRyxDQUFDLEtBQTJCLENBQUMsR0FBRzs0QkFDekMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQ2xCLEVBQUUsRUFDRCxHQUFHLENBQUMsS0FBMkIsQ0FBQyxLQUFZLEVBQzdDLFdBQVcsQ0FDWjt5QkFDRixDQUFDO3dCQUVGLE1BQU0sY0FBYyxHQUNsQixvQkFBb0IsQ0FBQyxHQUFHLENBQThCLENBQUM7d0JBRXpELDZEQUE2RDt3QkFDN0QsTUFBTSxPQUFPLEdBQ1gsY0FBYyxDQUFDLEtBQUssRUFBNkIsQ0FBQzt3QkFDcEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQzs0QkFDakMsSUFBSyxHQUFHLENBQUMsR0FBYyxJQUFJLGtDQUFzQixFQUFFLENBQUM7Z0NBQ2xELFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQ0FDNUMsU0FBUzs0QkFDWCxDQUFDOzRCQUNELElBQUssR0FBRyxDQUFDLEdBQWMsSUFBSSw2QkFBaUIsRUFBRSxDQUFDO2dDQUM3QyxVQUFVLENBQUMsa0JBQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dDQUNwQyxTQUFTOzRCQUNYLENBQUM7NEJBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDbkIsQ0FBQzt3QkFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO3dCQUMvQixNQUFNO29CQUNSLENBQUM7b0JBQ0Q7d0JBQ0UsTUFBTSxJQUFJLHVCQUFjLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPO1lBQ0wsR0FBRyxFQUFFLEdBQUc7WUFDUixLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQztZQUM1QyxRQUFRLEVBQUUsUUFBUTtTQUNHLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBZ0M7UUFDOUMsSUFBSSxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQzlCLE1BQU0sSUFBSSw2QkFBYSxDQUNyQiwwQkFBMEIsTUFBTSxDQUFDLE9BQU8saUJBQWlCLENBQzFELENBQUM7UUFDSixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUFTLENBQ3RCLEdBQXlEO1FBRXpELElBQUksR0FBRyxZQUFZLGVBQWU7WUFBRSxPQUFPLEdBQXlCLENBQUM7UUFDckUsTUFBTSxNQUFNLEdBQXVCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDN0MsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsaUVBQWlFO1FBQ3RGLE9BQU8sTUFBNEIsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBSSxPQUFnQjtRQUM1QixJQUFJLENBQUMsT0FBTztZQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FDbkIsSUFBSSxDQUFDLE9BQStELENBQ3JFLENBQUM7UUFDSixJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztZQUMxQixNQUFNLElBQUksNkJBQWEsQ0FDckIsMEJBQTBCLE9BQU8saUJBQWlCLENBQ25ELENBQUM7UUFDSixPQUFPLElBQUksQ0FBQyxTQUFTLENBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUVJLENBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBa0IsS0FBUSxFQUFFLEdBQUcsSUFBVztRQUNyRCxNQUFNLFdBQVcsR0FBRyw0QkFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxXQUFXO1lBQUUsTUFBTSxJQUFJLDZCQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN2RSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUNqQyxlQUFlLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsV0FBVyxDQUFDLEVBQ3ZDLFdBQXNDLENBQ3ZDLENBQUM7UUFDRixPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVc7UUFDcEIsT0FBTyxHQUFHLGtCQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ25DLENBQUM7O0FBeE1ILDBDQXlNQyIsImZpbGUiOiJ1aS9SZW5kZXJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgTW9kZWwsXG4gIE1vZGVsQ29uc3RydWN0b3IsXG4gIFJlc2VydmVkTW9kZWxzLFxuICBWYWxpZGF0aW9uS2V5cyxcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgSFRNTDVJbnB1dFR5cGVzLFxuICBVSUtleXMsXG4gIFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGUsXG4gIFZhbGlkYXRhYmxlQnlUeXBlLFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIEZpZWxkRGVmaW5pdGlvbixcbiAgVUlFbGVtZW50TWV0YWRhdGEsXG4gIFVJTW9kZWxNZXRhZGF0YSxcbiAgVUlQcm9wTWV0YWRhdGEsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBSZW5kZXJpbmdFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgUmVmbGVjdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmVuZGVyaW5nRW5naW5lPFQgPSB2b2lkPiB7XG4gIHByaXZhdGUgc3RhdGljIGNhY2hlOiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIENvbnN0cnVjdG9yPFJlbmRlcmluZ0VuZ2luZTx1bmtub3duPj4gfCBSZW5kZXJpbmdFbmdpbmU8dW5rbm93bj5cbiAgPiA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBjdXJyZW50OlxuICAgIHwgQ29uc3RydWN0b3I8UmVuZGVyaW5nRW5naW5lPHVua25vd24+PlxuICAgIHwgUmVuZGVyaW5nRW5naW5lPHVua25vd24+O1xuXG4gIHByb3RlY3RlZCBpbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihyZWFkb25seSBmbGF2b3VyOiBzdHJpbmcpIHtcbiAgICBSZW5kZXJpbmdFbmdpbmUucmVnaXN0ZXIodGhpcyk7XG4gICAgY29uc29sZS5sb2coYGRlY2FmJ3MgJHtmbGF2b3VyfSByZW5kZXJpbmcgZW5naW5lIGxvYWRlZGApO1xuICB9XG5cbiAgYWJzdHJhY3QgaW5pdGlhbGl6ZSguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG5cbiAgdHJhbnNsYXRlKGtleTogc3RyaW5nLCB0b1ZpZXcgPSB0cnVlKTogc3RyaW5nIHtcbiAgICBpZiAodG9WaWV3KSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlIFJlc2VydmVkTW9kZWxzLlNUUklORzpcbiAgICAgICAgICByZXR1cm4gSFRNTDVJbnB1dFR5cGVzLlRFWFQ7XG4gICAgICAgIGNhc2UgUmVzZXJ2ZWRNb2RlbHMuTlVNQkVSOlxuICAgICAgICBjYXNlIFJlc2VydmVkTW9kZWxzLkJJR0lOVDpcbiAgICAgICAgICByZXR1cm4gSFRNTDVJbnB1dFR5cGVzLk5VTUJFUjtcbiAgICAgICAgY2FzZSBSZXNlcnZlZE1vZGVscy5CT09MRUFOOlxuICAgICAgICAgIHJldHVybiBIVE1MNUlucHV0VHlwZXMuQ0hFQ0tCT1g7XG4gICAgICAgIGNhc2UgUmVzZXJ2ZWRNb2RlbHMuREFURTpcbiAgICAgICAgICByZXR1cm4gSFRNTDVJbnB1dFR5cGVzLkRBVEU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLlRFWFQ6XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLkVNQUlMOlxuICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5DT0xPUjpcbiAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuUEFTU1dPUkQ6XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLlRFTDpcbiAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuVVJMOlxuICAgICAgICAgIHJldHVybiBSZXNlcnZlZE1vZGVscy5TVFJJTkc7XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLk5VTUJFUjpcbiAgICAgICAgICByZXR1cm4gUmVzZXJ2ZWRNb2RlbHMuTlVNQkVSO1xuICAgICAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5DSEVDS0JPWDpcbiAgICAgICAgICByZXR1cm4gUmVzZXJ2ZWRNb2RlbHMuQk9PTEVBTjtcbiAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuREFURTpcbiAgICAgICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuREFURVRJTUVfTE9DQUw6XG4gICAgICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLlRJTUU6XG4gICAgICAgICAgcmV0dXJuIFJlc2VydmVkTW9kZWxzLkRBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXk7XG4gIH1cblxuICByZW5kZXI8TSBleHRlbmRzIE1vZGVsPihcbiAgICBtb2RlbDogTSxcbiAgICBnbG9iYWxQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogRmllbGREZWZpbml0aW9uPFQ+IHtcbiAgICBjb25zdCBjbGFzc0RlY29yYXRvcjogVUlNb2RlbE1ldGFkYXRhID1cbiAgICAgIFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICAgIFJlbmRlcmluZ0VuZ2luZS5rZXkoVUlLZXlzLlVJTU9ERUwpLFxuICAgICAgICBtb2RlbC5jb25zdHJ1Y3RvclxuICAgICAgKSB8fFxuICAgICAgUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgICAgUmVuZGVyaW5nRW5naW5lLmtleShVSUtleXMuVUlNT0RFTCksXG4gICAgICAgIE1vZGVsLmdldChtb2RlbC5jb25zdHJ1Y3Rvci5uYW1lKSBhcyBhbnlcbiAgICAgICk7XG5cbiAgICBpZiAoIWNsYXNzRGVjb3JhdG9yKVxuICAgICAgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKFxuICAgICAgICBgTm8gdWkgZGVmaW5pdGlvbnMgc2V0IGZvciBtb2RlbCAke21vZGVsLmNvbnN0cnVjdG9yLm5hbWV9LiBEaWQgeW91IHVzZSBAdWltb2RlbD9gXG4gICAgICApO1xuXG4gICAgY29uc3QgeyB0YWcsIHByb3BzIH0gPSBjbGFzc0RlY29yYXRvcjtcblxuICAgIGNvbnN0IHVpRGVjb3JhdG9yczogUmVjb3JkPHN0cmluZywgRGVjb3JhdG9yTWV0YWRhdGFbXT4gPVxuICAgICAgUmVmbGVjdGlvbi5nZXRBbGxQcm9wZXJ0eURlY29yYXRvcnMobW9kZWwsIFVJS2V5cy5SRUZMRUNUKSBhcyBSZWNvcmQ8XG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgRGVjb3JhdG9yTWV0YWRhdGFbXVxuICAgICAgPjtcbiAgICBsZXQgY2hpbGRyZW46IEZpZWxkRGVmaW5pdGlvbjxUPltdIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGNoaWxkUHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAgIGlmICh1aURlY29yYXRvcnMpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25EZWNvcmF0b3JzOiBSZWNvcmQ8c3RyaW5nLCBEZWNvcmF0b3JNZXRhZGF0YVtdPiA9XG4gICAgICAgIFJlZmxlY3Rpb24uZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgICAgIG1vZGVsLFxuICAgICAgICAgIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1RcbiAgICAgICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBEZWNvcmF0b3JNZXRhZGF0YVtdPjtcbiAgICAgIC8vIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIC8vIGNvbnN0IGRiRGVjb3JhdG9yczogUmVjb3JkPHN0cmluZywgRGVjb3JhdG9yTWV0YWRhdGFbXT4gPVxuICAgICAgLy8gICBSZWZsZWN0aW9uLmdldEFsbFByb3BlcnR5RGVjb3JhdG9ycyhtb2RlbCwgREJLZXlzLlJFRkxFQ1QpIGFzIFJlY29yZDxcbiAgICAgIC8vICAgICBzdHJpbmcsXG4gICAgICAvLyAgICAgRGVjb3JhdG9yTWV0YWRhdGFbXVxuICAgICAgLy8gICA+O1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiB1aURlY29yYXRvcnMpIHtcbiAgICAgICAgY29uc3QgZGVjcyA9IHVpRGVjb3JhdG9yc1trZXldO1xuICAgICAgICBpZiAoZGVjcy5sZW5ndGggIT09IDIpXG4gICAgICAgICAgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKFxuICAgICAgICAgICAgYE9ubHkgb25lIHR5cGUgb2YgZGVjb3JhdGlvbiBpcyBhbGxvd2VkLiBQbGVhc2UgY2hvb3NlIGJldHdlZW4gQHVpcHJvcCBhbmQgQHVpZWxlbWVudGBcbiAgICAgICAgICApO1xuICAgICAgICBjb25zdCBkZWMgPSBkZWNzWzFdOyAvLyBJZ25vcmUgMCwgaXRzIHRoZSBkZXNpZ246dHlwZVxuICAgICAgICBpZiAoIWRlYykgdGhyb3cgbmV3IFJlbmRlcmluZ0Vycm9yKGBObyBkZWNvcmF0b3IgZm91bmRgKTtcbiAgICAgICAgc3dpdGNoIChkZWMua2V5KSB7XG4gICAgICAgICAgY2FzZSBVSUtleXMuUFJPUDpcbiAgICAgICAgICAgIGNoaWxkUHJvcHNba2V5XSA9IGRlYy5wcm9wcyBhcyBVSVByb3BNZXRhZGF0YTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgVUlLZXlzLkVMRU1FTlQ6IHtcbiAgICAgICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW4gfHwgW107XG4gICAgICAgICAgICBjb25zdCBjaGlsZERlZmluaXRpb246IEZpZWxkRGVmaW5pdGlvbjxUPiA9IHtcbiAgICAgICAgICAgICAgdGFnOiAoZGVjLnByb3BzIGFzIFVJRWxlbWVudE1ldGFkYXRhKS50YWcsXG4gICAgICAgICAgICAgIHByb3BzOiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIChkZWMucHJvcHMgYXMgVUlFbGVtZW50TWV0YWRhdGEpLnByb3BzIGFzIGFueSxcbiAgICAgICAgICAgICAgICBnbG9iYWxQcm9wc1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgdmFsaWRhdGlvbkRlY3M6IERlY29yYXRvck1ldGFkYXRhT2JqZWN0W10gPVxuICAgICAgICAgICAgICB2YWxpZGF0aW9uRGVjb3JhdG9yc1trZXldIGFzIERlY29yYXRvck1ldGFkYXRhT2JqZWN0W107XG5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgIGNvbnN0IHR5cGVEZWM6IERlY29yYXRvck1ldGFkYXRhT2JqZWN0ID1cbiAgICAgICAgICAgICAgdmFsaWRhdGlvbkRlY3Muc2hpZnQoKSBhcyBEZWNvcmF0b3JNZXRhZGF0YU9iamVjdDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZGVjIG9mIHZhbGlkYXRpb25EZWNzKSB7XG4gICAgICAgICAgICAgIGlmICgoZGVjLmtleSBhcyBzdHJpbmcpIGluIFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICBjaGlsZFByb3BzW3RoaXMudHJhbnNsYXRlKGtleSldID0gZGVjLnByb3BzO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICgoZGVjLmtleSBhcyBzdHJpbmcpIGluIFZhbGlkYXRhYmxlQnlUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2hpbGRQcm9wc1tVSUtleXMuVFlQRV0gPSBkZWMucHJvcHM7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc29sZS5sb2coZGVjKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChjaGlsZERlZmluaXRpb24pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBuZXcgUmVuZGVyaW5nRXJyb3IoYEludmFsaWQga2V5OiAke2RlYy5rZXl9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGFnOiB0YWcsXG4gICAgICBwcm9wczogT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIGdsb2JhbFByb3BzKSxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbixcbiAgICB9IGFzIEZpZWxkRGVmaW5pdGlvbjxUPjtcbiAgfVxuXG4gIHN0YXRpYyByZWdpc3RlcihlbmdpbmU6IFJlbmRlcmluZ0VuZ2luZTx1bmtub3duPikge1xuICAgIGlmIChlbmdpbmUuZmxhdm91ciBpbiB0aGlzLmNhY2hlKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBSZW5kZXJpbmcgZW5naW5lIHVuZGVyICR7ZW5naW5lLmZsYXZvdXJ9IGFscmVhZHkgZXhpc3RzYFxuICAgICAgKTtcbiAgICB0aGlzLmNhY2hlW2VuZ2luZS5mbGF2b3VyXSA9IGVuZ2luZTtcbiAgICB0aGlzLmN1cnJlbnQgPSBlbmdpbmU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRPckJvb3Q8Tz4oXG4gICAgb2JqOiBDb25zdHJ1Y3RvcjxSZW5kZXJpbmdFbmdpbmU8Tz4+IHwgUmVuZGVyaW5nRW5naW5lPE8+XG4gICk6IFJlbmRlcmluZ0VuZ2luZTxPPiB7XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIFJlbmRlcmluZ0VuZ2luZSkgcmV0dXJuIG9iaiBhcyBSZW5kZXJpbmdFbmdpbmU8Tz47XG4gICAgY29uc3QgZW5naW5lOiBSZW5kZXJpbmdFbmdpbmU8Tz4gPSBuZXcgb2JqKCk7XG4gICAgZW5naW5lLmluaXRpYWxpemUoKTsgLy8gbWFrZSB0aGUgYm9vdGluZyBhc3luYy4gdXNlIHRoZSBpbml0aWFsaXplZCBmbGFnIHRvIGNvbnRyb2wgaXRcbiAgICByZXR1cm4gZW5naW5lIGFzIFJlbmRlcmluZ0VuZ2luZTxPPjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQ8Tz4oZmxhdm91cj86IHN0cmluZyk6IFJlbmRlcmluZ0VuZ2luZTxPPiB7XG4gICAgaWYgKCFmbGF2b3VyKVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0T3JCb290PE8+KFxuICAgICAgICB0aGlzLmN1cnJlbnQgYXMgQ29uc3RydWN0b3I8UmVuZGVyaW5nRW5naW5lPE8+PiB8IFJlbmRlcmluZ0VuZ2luZTxPPlxuICAgICAgKTtcbiAgICBpZiAoIShmbGF2b3VyIGluIHRoaXMuY2FjaGUpKVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIGBSZW5kZXJpbmcgZW5naW5lIHVuZGVyICR7Zmxhdm91cn0gZG9lcyBub3QgZXhpc3RgXG4gICAgICApO1xuICAgIHJldHVybiB0aGlzLmdldE9yQm9vdDxPPihcbiAgICAgIHRoaXMuY2FjaGVbZmxhdm91cl0gYXNcbiAgICAgICAgfCBDb25zdHJ1Y3RvcjxSZW5kZXJpbmdFbmdpbmU8Tz4+XG4gICAgICAgIHwgUmVuZGVyaW5nRW5naW5lPE8+XG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyByZW5kZXI8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSwgLi4uYXJnczogYW55W10pOiBhbnkge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gTW9kZWwuZ2V0KG1vZGVsLmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGlmICghY29uc3RydWN0b3IpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm8gbW9kZWwgcmVnaXN0ZXJlZCBmb3VuZFwiKTtcbiAgICBjb25zdCBmbGF2b3VyID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIFJlbmRlcmluZ0VuZ2luZS5rZXkoVUlLZXlzLlJFTkRFUkVEX0JZKSxcbiAgICAgIGNvbnN0cnVjdG9yIGFzIE1vZGVsQ29uc3RydWN0b3I8TW9kZWw+XG4gICAgKTtcbiAgICByZXR1cm4gUmVuZGVyaW5nRW5naW5lLmdldChmbGF2b3VyKS5yZW5kZXIobW9kZWwsIC4uLmFyZ3MpO1xuICB9XG5cbiAgc3RhdGljIGtleShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBgJHtVSUtleXMuUkVGTEVDVH0ke2tleX1gO1xuICB9XG59XG4iXX0=
|