@decaf-ts/ui-decorators 0.4.5 → 0.4.6
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/dist/esm/ui-decorators.bundle.min.esm.js +2 -0
- package/dist/esm/ui-decorators.bundle.min.esm.js.LICENSE.txt +14 -0
- package/dist/ui-decorators.bundle.min.js +2 -0
- package/dist/ui-decorators.bundle.min.js.LICENSE.txt +14 -0
- package/lib/esm/index.d.ts +12 -0
- package/lib/esm/index.js +14 -0
- package/lib/esm/model/Renderable.d.ts +3 -0
- package/lib/esm/model/Renderable.js +3 -0
- package/lib/esm/model/decorators.d.ts +25 -0
- package/lib/esm/model/decorators.js +41 -0
- package/lib/esm/model/index.d.ts +8 -0
- package/lib/esm/model/index.js +10 -0
- package/lib/esm/model/model.d.ts +115 -0
- package/lib/esm/model/model.js +3 -0
- package/lib/esm/model/overrides.d.ts +1 -0
- package/lib/esm/model/overrides.js +7 -0
- package/lib/esm/ui/Rendering.d.ts +183 -0
- package/lib/esm/ui/Rendering.js +298 -0
- package/lib/esm/ui/constants.d.ts +64 -0
- package/lib/esm/ui/constants.js +88 -0
- package/lib/esm/ui/decorators.d.ts +34 -0
- package/lib/esm/ui/decorators.js +62 -0
- package/lib/esm/ui/errors.d.ts +4 -0
- package/lib/esm/ui/errors.js +8 -0
- package/lib/esm/ui/index.d.ts +11 -0
- package/lib/esm/ui/index.js +13 -0
- package/lib/esm/ui/interfaces.d.ts +5 -0
- package/lib/esm/ui/interfaces.js +3 -0
- package/lib/esm/ui/types.d.ts +46 -0
- package/lib/esm/ui/types.js +3 -0
- package/lib/esm/ui/utils.d.ts +13 -0
- package/lib/esm/ui/utils.js +88 -0
- package/lib/index.cjs +29 -0
- package/lib/index.d.ts +12 -0
- package/lib/model/Renderable.cjs +2 -0
- package/lib/model/Renderable.d.ts +3 -0
- package/lib/model/decorators.cjs +43 -0
- package/lib/model/decorators.d.ts +25 -0
- package/lib/model/index.cjs +24 -0
- package/lib/model/index.d.ts +8 -0
- package/lib/model/model.cjs +2 -0
- package/lib/model/model.d.ts +115 -0
- package/lib/model/overrides.cjs +7 -0
- package/lib/model/overrides.d.ts +1 -0
- package/lib/ui/Rendering.cjs +300 -0
- package/lib/ui/Rendering.d.ts +183 -0
- package/lib/ui/constants.cjs +89 -0
- package/lib/ui/constants.d.ts +64 -0
- package/lib/ui/decorators.cjs +66 -0
- package/lib/ui/decorators.d.ts +34 -0
- package/lib/ui/errors.cjs +10 -0
- package/lib/ui/errors.d.ts +4 -0
- package/lib/ui/index.cjs +27 -0
- package/lib/ui/index.d.ts +11 -0
- package/lib/ui/interfaces.cjs +2 -0
- package/lib/ui/interfaces.d.ts +5 -0
- package/lib/ui/types.cjs +2 -0
- package/lib/ui/types.d.ts +46 -0
- package/lib/ui/utils.cjs +94 -0
- package/lib/ui/utils.d.ts +13 -0
- package/package.json +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @namespace ui-decorators.ui
|
|
3
|
+
* @memberOf ui-decorators
|
|
4
|
+
*/
|
|
5
|
+
export * from "./constants";
|
|
6
|
+
export * from "./decorators";
|
|
7
|
+
export * from "./errors";
|
|
8
|
+
export * from "./interfaces";
|
|
9
|
+
export * from "./Rendering";
|
|
10
|
+
export * from "./types";
|
|
11
|
+
export * from "./utils";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @namespace ui-decorators.ui
|
|
3
|
+
* @memberOf ui-decorators
|
|
4
|
+
*/
|
|
5
|
+
export * from "./constants";
|
|
6
|
+
export * from "./decorators";
|
|
7
|
+
export * from "./errors";
|
|
8
|
+
export * from "./interfaces";
|
|
9
|
+
export * from "./Rendering";
|
|
10
|
+
export * from "./types";
|
|
11
|
+
export * from "./utils";
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91aS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQyIsImZpbGUiOiJ1aS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG5hbWVzcGFjZSB1aS1kZWNvcmF0b3JzLnVpXG4gKiBAbWVtYmVyT2YgdWktZGVjb3JhdG9yc1xuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXJyb3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbnRlcmZhY2VzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9SZW5kZXJpbmdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsc1wiO1xuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91aS9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoidWkvaW50ZXJmYWNlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkUHJvcGVydGllcyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBDcnVkT3BlcmF0aW9ucyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENydWRGb3JtRmllbGQgZXh0ZW5kcyBGaWVsZFByb3BlcnRpZXMge1xuICBvcGVyYXRpb246IENydWRPcGVyYXRpb25zO1xufVxuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { OperationKeys } from "@decaf-ts/db-decorators";
|
|
2
|
+
export interface FieldDefinition<T = void> {
|
|
3
|
+
tag: string;
|
|
4
|
+
rendererId?: string;
|
|
5
|
+
props: T & FieldProperties;
|
|
6
|
+
children?: FieldDefinition<T>[];
|
|
7
|
+
}
|
|
8
|
+
export interface FieldProperties {
|
|
9
|
+
name: string;
|
|
10
|
+
type: string;
|
|
11
|
+
value: string | number | Date;
|
|
12
|
+
hidden?: boolean;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
required?: boolean;
|
|
15
|
+
readonly?: boolean;
|
|
16
|
+
maxLength?: number;
|
|
17
|
+
minLength?: number;
|
|
18
|
+
max?: number | Date;
|
|
19
|
+
min?: number | Date;
|
|
20
|
+
pattern?: string;
|
|
21
|
+
step?: number;
|
|
22
|
+
format?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @typedef UIElementMetadata
|
|
26
|
+
* @memberOf ui-decorators.ui.decorators
|
|
27
|
+
*/
|
|
28
|
+
export type UIElementMetadata = {
|
|
29
|
+
tag: string;
|
|
30
|
+
props?: Record<string, any>;
|
|
31
|
+
serialize?: boolean;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* @typedef UIElementMetadata
|
|
35
|
+
* @memberOf ui-decorators.ui.decorators
|
|
36
|
+
*/
|
|
37
|
+
export type UIModelMetadata = Omit<UIElementMetadata, "serialize">;
|
|
38
|
+
/**
|
|
39
|
+
* @typedef UIPropMetadata
|
|
40
|
+
* @memberOf ui-decorators.ui.decorators
|
|
41
|
+
*/
|
|
42
|
+
export type UIPropMetadata = {
|
|
43
|
+
name: string;
|
|
44
|
+
stringify: boolean;
|
|
45
|
+
};
|
|
46
|
+
export type CrudOperationKeys = OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91aS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6InVpL3R5cGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3BlcmF0aW9uS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkRGVmaW5pdGlvbjxUID0gdm9pZD4ge1xuICB0YWc6IHN0cmluZztcbiAgcmVuZGVyZXJJZD86IHN0cmluZztcbiAgcHJvcHM6IFQgJiBGaWVsZFByb3BlcnRpZXM7XG4gIGNoaWxkcmVuPzogRmllbGREZWZpbml0aW9uPFQ+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRQcm9wZXJ0aWVzIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8vIFZhbGlkYXRpb25cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXIgfCBEYXRlO1xuICBtaW4/OiBudW1iZXIgfCBEYXRlO1xuICBwYXR0ZXJuPzogc3RyaW5nO1xuICBzdGVwPzogbnVtYmVyO1xuICBmb3JtYXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgVUlFbGVtZW50TWV0YWRhdGFcbiAqIEBtZW1iZXJPZiB1aS1kZWNvcmF0b3JzLnVpLmRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgVUlFbGVtZW50TWV0YWRhdGEgPSB7XG4gIHRhZzogc3RyaW5nO1xuICBwcm9wcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHNlcmlhbGl6ZT86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIFVJRWxlbWVudE1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgdWktZGVjb3JhdG9ycy51aS5kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIFVJTW9kZWxNZXRhZGF0YSA9IE9taXQ8VUlFbGVtZW50TWV0YWRhdGEsIFwic2VyaWFsaXplXCI+O1xuXG4vKipcbiAqIEB0eXBlZGVmIFVJUHJvcE1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgdWktZGVjb3JhdG9ycy51aS5kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIFVJUHJvcE1ldGFkYXRhID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHN0cmluZ2lmeTogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIENydWRPcGVyYXRpb25LZXlzID1cbiAgfCBPcGVyYXRpb25LZXlzLkNSRUFURVxuICB8IE9wZXJhdGlvbktleXMuUkVBRFxuICB8IE9wZXJhdGlvbktleXMuVVBEQVRFXG4gIHwgT3BlcmF0aW9uS2V5cy5ERUxFVEU7XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { FieldProperties } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* @function formatByType
|
|
5
|
+
*
|
|
6
|
+
* @memberOf ui-decorators-web.ui
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatByType(type: any, value: any, ...args: unknown[]): string | number;
|
|
9
|
+
export declare function parseValueByType(type: string, value: string | number, fieldProps: FieldProperties): string | number | Date;
|
|
10
|
+
export declare function parseToNumber(value: string | number): number | undefined;
|
|
11
|
+
export declare function escapeHtml(value: string): string | undefined;
|
|
12
|
+
export declare function revertHtml(value: string): string;
|
|
13
|
+
export declare function generateUIModelID<M extends Model>(model: M): string;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { formatDate, parseDate, ReservedModels, } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { HTML5DateFormat, HTML5InputTypes, UIKeys } from "./constants";
|
|
3
|
+
import { findModelId, InternalError } from "@decaf-ts/db-decorators";
|
|
4
|
+
/**
|
|
5
|
+
* @function formatByType
|
|
6
|
+
*
|
|
7
|
+
* @memberOf ui-decorators-web.ui
|
|
8
|
+
*/
|
|
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);
|
|
13
|
+
}
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
export function parseValueByType(type, value, fieldProps) {
|
|
17
|
+
let result = undefined;
|
|
18
|
+
switch (type) {
|
|
19
|
+
case HTML5InputTypes.NUMBER:
|
|
20
|
+
result = parseToNumber(value);
|
|
21
|
+
break;
|
|
22
|
+
case HTML5InputTypes.DATE: {
|
|
23
|
+
const format = fieldProps.format;
|
|
24
|
+
result =
|
|
25
|
+
typeof value === ReservedModels.NUMBER
|
|
26
|
+
? new Date(value)
|
|
27
|
+
: value
|
|
28
|
+
? format
|
|
29
|
+
? parseDate(format, value)
|
|
30
|
+
: new Date(value)
|
|
31
|
+
: undefined;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
default:
|
|
35
|
+
result =
|
|
36
|
+
typeof value === ReservedModels.STRING
|
|
37
|
+
? escapeHtml(value)
|
|
38
|
+
: result;
|
|
39
|
+
}
|
|
40
|
+
if (typeof result === "undefined") {
|
|
41
|
+
throw new InternalError(`Failed to parse value of type ${type} from ${typeof value} - ${value}`);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
export function parseToNumber(value) {
|
|
46
|
+
if (typeof value === "number" && !isNaN(value))
|
|
47
|
+
return value;
|
|
48
|
+
const parsed = Number(value);
|
|
49
|
+
if (!isNaN(parsed))
|
|
50
|
+
return parsed;
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
export function escapeHtml(value) {
|
|
54
|
+
if (!value)
|
|
55
|
+
return undefined;
|
|
56
|
+
const tagsToReplace = {
|
|
57
|
+
"&": "&",
|
|
58
|
+
"<": "<",
|
|
59
|
+
">": ">",
|
|
60
|
+
};
|
|
61
|
+
return `${value}`.replace(/[&<>]/g, (tag) => {
|
|
62
|
+
return tagsToReplace[tag] || tag;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
export function revertHtml(value) {
|
|
66
|
+
const tagsToReplace = {
|
|
67
|
+
"&": "&",
|
|
68
|
+
"<": "<",
|
|
69
|
+
">": ">",
|
|
70
|
+
};
|
|
71
|
+
return `${value}`.replace(/<|>|&/g, (tag) => {
|
|
72
|
+
return tagsToReplace[tag] || tag;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
export function generateUIModelID(model) {
|
|
76
|
+
let id;
|
|
77
|
+
try {
|
|
78
|
+
id = findModelId(model);
|
|
79
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
id = Date.now();
|
|
83
|
+
}
|
|
84
|
+
const name = model.constructor.name;
|
|
85
|
+
return `${name}-${id}`;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUMxQyxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFhO0lBQ3RDLE1BQU0sYUFBYSxHQUEyQjtRQUM1QyxPQUFPLEVBQUUsR0FBRztRQUNaLE1BQU0sRUFBRSxHQUFHO1FBQ1gsTUFBTSxFQUFFLEdBQUc7S0FDWixDQUFDO0lBRUYsT0FBTyxHQUFHLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ3BELE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQWtCLEtBQVE7SUFDekQsSUFBSSxFQUFtQixDQUFDO0lBQ3hCLElBQUksQ0FBQztRQUNILEVBQUUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsNkRBQTZEO0lBQy9ELENBQUM7SUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO1FBQ3BCLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ3BDLE9BQU8sR0FBRyxJQUFJLElBQUksRUFBRSxFQUFFLENBQUM7QUFDekIsQ0FBQyIsImZpbGUiOiJ1aS91dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGZvcm1hdERhdGUsXG4gIE1vZGVsLFxuICBwYXJzZURhdGUsXG4gIFJlc2VydmVkTW9kZWxzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBIVE1MNURhdGVGb3JtYXQsIEhUTUw1SW5wdXRUeXBlcywgVUlLZXlzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmaW5kTW9kZWxJZCwgSW50ZXJuYWxFcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgRmllbGRQcm9wZXJ0aWVzIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBAZnVuY3Rpb24gZm9ybWF0QnlUeXBlXG4gKlxuICogQG1lbWJlck9mIHVpLWRlY29yYXRvcnMtd2ViLnVpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCeVR5cGUoXG4gIHR5cGU6IGFueSxcbiAgdmFsdWU6IGFueSxcbiAgLi4uYXJnczogdW5rbm93bltdXG4pOiBzdHJpbmcgfCBudW1iZXIge1xuICBpZiAodHlwZSA9PT0gVUlLZXlzLkRBVEUpIHtcbiAgICBjb25zdCBmb3JtYXQ6IHN0cmluZyA9IChhcmdzLnNoaWZ0KCkgYXMgc3RyaW5nKSB8fCBIVE1MNURhdGVGb3JtYXQ7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUobmV3IERhdGUodmFsdWUpLCBmb3JtYXQpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmFsdWVCeVR5cGUoXG4gIHR5cGU6IHN0cmluZyxcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcixcbiAgZmllbGRQcm9wczogRmllbGRQcm9wZXJ0aWVzXG4pOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlIHtcbiAgbGV0IHJlc3VsdDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBIVE1MNUlucHV0VHlwZXMuTlVNQkVSOlxuICAgICAgcmVzdWx0ID0gcGFyc2VUb051bWJlcih2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5EQVRFOiB7XG4gICAgICBjb25zdCBmb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGZpZWxkUHJvcHMuZm9ybWF0O1xuICAgICAgcmVzdWx0ID1cbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSBSZXNlcnZlZE1vZGVscy5OVU1CRVJcbiAgICAgICAgICA/IG5ldyBEYXRlKHZhbHVlKVxuICAgICAgICAgIDogdmFsdWVcbiAgICAgICAgICAgID8gZm9ybWF0XG4gICAgICAgICAgICAgID8gcGFyc2VEYXRlKGZvcm1hdCwgdmFsdWUpXG4gICAgICAgICAgICAgIDogbmV3IERhdGUodmFsdWUpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmVzdWx0ID1cbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSBSZXNlcnZlZE1vZGVscy5TVFJJTkdcbiAgICAgICAgICA/IGVzY2FwZUh0bWwodmFsdWUgYXMgc3RyaW5nKVxuICAgICAgICAgIDogcmVzdWx0O1xuICB9XG4gIGlmICh0eXBlb2YgcmVzdWx0ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICBgRmFpbGVkIHRvIHBhcnNlIHZhbHVlIG9mIHR5cGUgJHt0eXBlfSBmcm9tICR7dHlwZW9mIHZhbHVlfSAtICR7dmFsdWV9YFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVG9OdW1iZXIodmFsdWU6IHN0cmluZyB8IG51bWJlcikge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmICFpc05hTih2YWx1ZSkpIHJldHVybiB2YWx1ZTtcblxuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpO1xuICBpZiAoIWlzTmFOKHBhcnNlZCkpIHJldHVybiBwYXJzZWQ7XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUh0bWwodmFsdWU6IHN0cmluZykge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHRhZ3NUb1JlcGxhY2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgXCImXCI6IFwiJmFtcDtcIixcbiAgICBcIjxcIjogXCImbHQ7XCIsXG4gICAgXCI+XCI6IFwiJmd0O1wiLFxuICB9O1xuICByZXR1cm4gYCR7dmFsdWV9YC5yZXBsYWNlKC9bJjw+XS9nLCAodGFnKSA9PiB7XG4gICAgcmV0dXJuIHRhZ3NUb1JlcGxhY2VbdGFnXSB8fCB0YWc7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmV2ZXJ0SHRtbCh2YWx1ZTogc3RyaW5nKSB7XG4gIGNvbnN0IHRhZ3NUb1JlcGxhY2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgXCImYW1wO1wiOiBcIiZcIixcbiAgICBcIiZsdDtcIjogXCI8XCIsXG4gICAgXCImZ3Q7XCI6IFwiPlwiLFxuICB9O1xuXG4gIHJldHVybiBgJHt2YWx1ZX1gLnJlcGxhY2UoLyZsdDt8Jmd0O3wmYW1wOy9nLCAodGFnKSA9PiB7XG4gICAgcmV0dXJuIHRhZ3NUb1JlcGxhY2VbdGFnXSB8fCB0YWc7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVVSU1vZGVsSUQ8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSkge1xuICBsZXQgaWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgdHJ5IHtcbiAgICBpZCA9IGZpbmRNb2RlbElkKG1vZGVsKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICBpZCA9IERhdGUubm93KCk7XG4gIH1cbiAgY29uc3QgbmFtZSA9IG1vZGVsLmNvbnN0cnVjdG9yLm5hbWU7XG4gIHJldHVybiBgJHtuYW1lfS0ke2lkfWA7XG59XG4iXX0=
|
package/lib/index.cjs
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @module ui-decorators
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.VERSION = void 0;
|
|
21
|
+
__exportStar(require("./model/index.cjs"), exports);
|
|
22
|
+
__exportStar(require("./ui/index.cjs"), exports);
|
|
23
|
+
/**
|
|
24
|
+
* @summary stores the current package version
|
|
25
|
+
* @description this is how you should document a constant
|
|
26
|
+
* @const VERSION
|
|
27
|
+
* @memberOf module:ui-decorators
|
|
28
|
+
*/
|
|
29
|
+
exports.VERSION = "0.4.6";
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module ui-decorators
|
|
3
|
+
*/
|
|
4
|
+
export * from "./model";
|
|
5
|
+
export * from "./ui";
|
|
6
|
+
/**
|
|
7
|
+
* @summary stores the current package version
|
|
8
|
+
* @description this is how you should document a constant
|
|
9
|
+
* @const VERSION
|
|
10
|
+
* @memberOf module:ui-decorators
|
|
11
|
+
*/
|
|
12
|
+
export declare const VERSION = "0.4.6";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uimodel = uimodel;
|
|
4
|
+
exports.renderedBy = renderedBy;
|
|
5
|
+
const constants_1 = require("../ui/constants.cjs");
|
|
6
|
+
const reflection_1 = require("@decaf-ts/reflection");
|
|
7
|
+
const Rendering_1 = require("../ui/Rendering.cjs");
|
|
8
|
+
/**
|
|
9
|
+
* Tags the model as a uimodel, giving it the 'render' method
|
|
10
|
+
*
|
|
11
|
+
* @param {string} [tag] optional param. will render the provided elment wrapping the attribute uielements
|
|
12
|
+
* @param {{}} [props] optional param. Attributes to be passed to the tag element
|
|
13
|
+
* @param {function(any): void} [instanceCallback] optional callback returning the instance after creation for additional logic
|
|
14
|
+
*
|
|
15
|
+
* @decorator uimodel
|
|
16
|
+
*
|
|
17
|
+
* @mermaid
|
|
18
|
+
* sequenceDiagram
|
|
19
|
+
* participant System
|
|
20
|
+
* participant uimodel
|
|
21
|
+
* participant constructor
|
|
22
|
+
* participant instance
|
|
23
|
+
* System->>uimodel:do(constructor)
|
|
24
|
+
* uimodel->>constructor: Executes the constructor
|
|
25
|
+
* constructor->>uimodel: returns instance
|
|
26
|
+
* uimodel->>instance: adds the render method
|
|
27
|
+
* uimodel->>System: returns UIModel instance
|
|
28
|
+
*
|
|
29
|
+
* @category Decorators
|
|
30
|
+
*/
|
|
31
|
+
function uimodel(tag, props) {
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
33
|
+
return (original, propertyKey) => {
|
|
34
|
+
const meta = {
|
|
35
|
+
tag: tag || original.name,
|
|
36
|
+
props: props,
|
|
37
|
+
};
|
|
38
|
+
return (0, reflection_1.metadata)(Rendering_1.RenderingEngine.key(constants_1.UIKeys.UIMODEL), meta)(original);
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function renderedBy(engine) {
|
|
42
|
+
return (0, reflection_1.apply)((0, reflection_1.metadata)(Rendering_1.RenderingEngine.key(constants_1.UIKeys.RENDERED_BY), engine));
|
|
43
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tags the model as a uimodel, giving it the 'render' method
|
|
3
|
+
*
|
|
4
|
+
* @param {string} [tag] optional param. will render the provided elment wrapping the attribute uielements
|
|
5
|
+
* @param {{}} [props] optional param. Attributes to be passed to the tag element
|
|
6
|
+
* @param {function(any): void} [instanceCallback] optional callback returning the instance after creation for additional logic
|
|
7
|
+
*
|
|
8
|
+
* @decorator uimodel
|
|
9
|
+
*
|
|
10
|
+
* @mermaid
|
|
11
|
+
* sequenceDiagram
|
|
12
|
+
* participant System
|
|
13
|
+
* participant uimodel
|
|
14
|
+
* participant constructor
|
|
15
|
+
* participant instance
|
|
16
|
+
* System->>uimodel:do(constructor)
|
|
17
|
+
* uimodel->>constructor: Executes the constructor
|
|
18
|
+
* constructor->>uimodel: returns instance
|
|
19
|
+
* uimodel->>instance: adds the render method
|
|
20
|
+
* uimodel->>System: returns UIModel instance
|
|
21
|
+
*
|
|
22
|
+
* @category Decorators
|
|
23
|
+
*/
|
|
24
|
+
export declare function uimodel(tag?: string, props?: Record<string, any>): (original: any, propertyKey?: any) => void;
|
|
25
|
+
export declare function renderedBy(engine: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @namespace model
|
|
4
|
+
* @memberOf ui-decorators
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
18
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
require("./model.cjs");
|
|
22
|
+
__exportStar(require("./decorators.cjs"), exports);
|
|
23
|
+
__exportStar(require("./overrides.cjs"), exports);
|
|
24
|
+
__exportStar(require("./Renderable.cjs"), exports);
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { ModelErrorDefinition } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { BuilderRegistry, Comparable, Constructor, Hashable, ModelArg, ModelBuilderFunction, ModelConstructor, Serializable, Validatable } from "@decaf-ts/decorator-validation";
|
|
3
|
+
import { Renderable } from "./Renderable";
|
|
4
|
+
declare module "@decaf-ts/decorator-validation" {
|
|
5
|
+
abstract class Model implements Validatable, Serializable, Hashable, Comparable<Model>, Renderable {
|
|
6
|
+
protected constructor(arg?: ModelArg<Model>);
|
|
7
|
+
hasErrors(...exclusions: any[]): ModelErrorDefinition | undefined;
|
|
8
|
+
hasErrors(previousVersion?: Model | any, ...exclusions: any[]): ModelErrorDefinition | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* @summary Compare object equality recursively
|
|
11
|
+
* @param {any} obj object to compare to
|
|
12
|
+
* @param {string} [exceptions] property names to be excluded from the comparison
|
|
13
|
+
*/
|
|
14
|
+
equals(obj: any, ...exceptions: string[]): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* @summary Returns the serialized model according to the currently defined {@link Serializer}
|
|
17
|
+
*/
|
|
18
|
+
serialize(): string;
|
|
19
|
+
/**
|
|
20
|
+
* @summary Override the implementation for js's 'toString()' which sucks...
|
|
21
|
+
* @override
|
|
22
|
+
*/
|
|
23
|
+
toString(): string;
|
|
24
|
+
/**
|
|
25
|
+
* @summary Defines a default implementation for object hash. Relies on a very basic implementation based on Java's string hash;
|
|
26
|
+
*/
|
|
27
|
+
hash(): string;
|
|
28
|
+
/**
|
|
29
|
+
* @summary Deserializes a Model
|
|
30
|
+
* @param {string} str
|
|
31
|
+
*
|
|
32
|
+
* @param args
|
|
33
|
+
* @throws {Error} If it fails to parse the string, or if it fails to build the model
|
|
34
|
+
*/
|
|
35
|
+
static deserialize(str: string): any;
|
|
36
|
+
/**
|
|
37
|
+
* @summary Repopulates the Object properties with the ones from the new object
|
|
38
|
+
* @description Iterates all common properties of obj (if existing) and self, and copies them onto self
|
|
39
|
+
*
|
|
40
|
+
* @param {T} self
|
|
41
|
+
* @param {T | Record<string, any>} [obj]
|
|
42
|
+
*
|
|
43
|
+
*/
|
|
44
|
+
static fromObject<T extends Model>(self: T, obj?: T | Record<string, any>): T;
|
|
45
|
+
/**
|
|
46
|
+
* @summary Repopulates the instance with the ones from the new Model Object
|
|
47
|
+
* @description Iterates all common properties of obj (if existing) and self, and copies them onto self.
|
|
48
|
+
* Is aware of nested Model Objects and rebuilds them also.
|
|
49
|
+
* When List properties are decorated with {@link list}, they list items will also be rebuilt
|
|
50
|
+
*
|
|
51
|
+
* @param {T} self
|
|
52
|
+
* @param {T | Record<string, any>} [obj]
|
|
53
|
+
*
|
|
54
|
+
*/
|
|
55
|
+
static fromModel<T extends Model>(self: T, obj?: T | Record<string, any>): T;
|
|
56
|
+
/**
|
|
57
|
+
* @summary Sets the Global {@link ModelBuilderFunction}
|
|
58
|
+
* @param {ModelBuilderFunction} [builder]
|
|
59
|
+
*/
|
|
60
|
+
static setBuilder(builder?: ModelBuilderFunction): void;
|
|
61
|
+
/**
|
|
62
|
+
* @summary Retrieves the current global {@link ModelBuilderFunction}
|
|
63
|
+
*/
|
|
64
|
+
static getBuilder(): ModelBuilderFunction | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Returns the current {@link ModelRegistryManager}
|
|
67
|
+
*
|
|
68
|
+
* @return ModelRegistry, defaults to {@link ModelRegistryManager}
|
|
69
|
+
*/
|
|
70
|
+
private static getRegistry;
|
|
71
|
+
/**
|
|
72
|
+
* Returns the current actingModelRegistry
|
|
73
|
+
*
|
|
74
|
+
* @param {BuilderRegistry} modelRegistry the new implementation of Registry
|
|
75
|
+
*/
|
|
76
|
+
static setRegistry(modelRegistry: BuilderRegistry<any>): void;
|
|
77
|
+
/**
|
|
78
|
+
* @summary register new Models
|
|
79
|
+
* @param {any} constructor
|
|
80
|
+
* @param {string} [name] when not defined, the name of the constructor will be used
|
|
81
|
+
*
|
|
82
|
+
* @see ModelRegistry
|
|
83
|
+
*/
|
|
84
|
+
static register<T extends Model>(constructor: ModelConstructor<T>, name?: string): void;
|
|
85
|
+
/**
|
|
86
|
+
* @summary Gets a registered Model {@link ModelConstructor}
|
|
87
|
+
* @param {string} name
|
|
88
|
+
*
|
|
89
|
+
* @see ModelRegistry
|
|
90
|
+
*/
|
|
91
|
+
static get<T extends Model>(name: string): ModelConstructor<T> | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* @param {Record<string, any>} obj
|
|
94
|
+
* @param {string} [clazz] when provided, it will attempt to find the matching constructor
|
|
95
|
+
*
|
|
96
|
+
* @throws Error If clazz is not found, or obj is not a {@link Model} meaning it has no {@link ModelKeys.ANCHOR} property
|
|
97
|
+
*
|
|
98
|
+
* @see ModelRegistry
|
|
99
|
+
*/
|
|
100
|
+
static build<T extends Model>(obj?: Record<string, any>, clazz?: string): T;
|
|
101
|
+
static getMetadata<V extends Model>(model: V): any;
|
|
102
|
+
static getAttributes<V extends Model>(model: Constructor<V> | V): string[];
|
|
103
|
+
static equals<V extends Model>(obj1: V, obj2: V, ...exceptions: any[]): boolean;
|
|
104
|
+
static hasErrors<V extends Model>(model: V, ...exceptions: any[]): ModelErrorDefinition | undefined;
|
|
105
|
+
static serialize<V extends Model>(model: V): any;
|
|
106
|
+
static hash<V extends Model>(model: V): any;
|
|
107
|
+
/**
|
|
108
|
+
* @summary Builds the key to store as Metadata under Reflections
|
|
109
|
+
* @description concatenates {@link ModelKeys#REFLECT} with the provided key
|
|
110
|
+
* @param {string} str
|
|
111
|
+
*/
|
|
112
|
+
static key(str: string): string;
|
|
113
|
+
render<R>(...args: any[]): R;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
4
|
+
const Rendering_1 = require("../ui/Rendering.cjs");
|
|
5
|
+
decorator_validation_1.Model.prototype.render = function (...args) {
|
|
6
|
+
return Rendering_1.RenderingEngine.render(this, ...args);
|
|
7
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|