@decaf-ts/ui-decorators 0.5.9 → 0.5.11
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 +21 -157
- package/README.md +422 -12
- package/dist/ui-decorators.cjs +609 -55
- package/dist/ui-decorators.esm.cjs +607 -56
- package/lib/esm/index.d.ts +7 -3
- package/lib/esm/index.js +8 -4
- package/lib/esm/model/Renderable.d.ts +15 -0
- package/lib/esm/model/Renderable.js +1 -1
- package/lib/esm/model/decorators.d.ts +93 -14
- package/lib/esm/model/decorators.js +102 -16
- package/lib/esm/model/index.d.ts +0 -4
- package/lib/esm/model/index.js +1 -5
- package/lib/esm/model/model.d.ts +156 -50
- package/lib/esm/model/model.js +1 -1
- package/lib/esm/model/overrides.d.ts +8 -0
- package/lib/esm/model/overrides.js +19 -1
- package/lib/esm/ui/Rendering.js +43 -8
- package/lib/esm/ui/constants.d.ts +149 -4
- package/lib/esm/ui/constants.js +150 -5
- package/lib/esm/ui/decorators.d.ts +229 -21
- package/lib/esm/ui/decorators.js +242 -25
- package/lib/esm/ui/errors.d.ts +28 -0
- package/lib/esm/ui/errors.js +29 -1
- package/lib/esm/ui/handlers.d.ts +17 -0
- package/lib/esm/ui/handlers.js +18 -0
- package/lib/esm/ui/index.d.ts +1 -4
- package/lib/esm/ui/index.js +2 -5
- package/lib/esm/ui/interfaces.d.ts +25 -0
- package/lib/esm/ui/interfaces.js +9 -1
- package/lib/esm/ui/types.d.ts +63 -5
- package/lib/esm/ui/types.js +9 -1
- package/lib/esm/ui/utils.d.ts +1 -1
- package/lib/esm/ui/utils.js +2 -2
- package/lib/index.cjs +8 -4
- package/lib/index.d.ts +7 -3
- package/lib/model/Renderable.cjs +1 -1
- package/lib/model/Renderable.d.ts +15 -0
- package/lib/model/decorators.cjs +103 -16
- package/lib/model/decorators.d.ts +93 -14
- package/lib/model/index.cjs +1 -5
- package/lib/model/index.d.ts +0 -4
- package/lib/model/model.cjs +1 -1
- package/lib/model/model.d.ts +156 -50
- package/lib/model/overrides.cjs +19 -1
- package/lib/model/overrides.d.ts +8 -0
- package/lib/ui/Rendering.cjs +43 -8
- package/lib/ui/constants.cjs +150 -5
- package/lib/ui/constants.d.ts +149 -4
- package/lib/ui/decorators.cjs +243 -25
- package/lib/ui/decorators.d.ts +229 -21
- package/lib/ui/errors.cjs +29 -1
- package/lib/ui/errors.d.ts +28 -0
- package/lib/ui/handlers.cjs +22 -0
- package/lib/ui/handlers.d.ts +17 -0
- package/lib/ui/index.cjs +2 -5
- package/lib/ui/index.d.ts +1 -4
- package/lib/ui/interfaces.cjs +9 -1
- package/lib/ui/interfaces.d.ts +25 -0
- package/lib/ui/types.cjs +9 -1
- package/lib/ui/types.d.ts +63 -5
- package/lib/ui/utils.cjs +2 -2
- package/lib/ui/utils.d.ts +1 -1
- package/package.json +2 -2
package/lib/esm/ui/types.d.ts
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Type definitions for UI components and rendering
|
|
3
|
+
* @summary Defines types and interfaces used throughout the UI decorators library
|
|
4
|
+
* This module contains type definitions for field properties, UI metadata,
|
|
5
|
+
* and other structures used in rendering UI components.
|
|
6
|
+
* @module ui/types
|
|
7
|
+
* @memberOf module:ui-decorators
|
|
8
|
+
*/
|
|
1
9
|
import { OperationKeys } from "@decaf-ts/db-decorators";
|
|
2
10
|
import { UIKeys } from "./constants";
|
|
11
|
+
/**
|
|
12
|
+
* @description Interface for defining a UI field or component
|
|
13
|
+
* @summary Represents a renderable UI element with properties and children
|
|
14
|
+
* This interface defines the structure of a UI field or component, including
|
|
15
|
+
* its tag name, properties, and optional children elements.
|
|
16
|
+
*
|
|
17
|
+
* @interface FieldDefinition
|
|
18
|
+
* @template T Additional properties type (defaults to void)
|
|
19
|
+
* @memberOf module:ui-decorators
|
|
20
|
+
*
|
|
21
|
+
* @property {string} tag - The HTML element or component tag name
|
|
22
|
+
* @property {string} [rendererId] - Optional ID of the renderer to use
|
|
23
|
+
* @property props - Combined properties for the field
|
|
24
|
+
* @property {FieldDefinition[]} [children] - Optional child elements
|
|
25
|
+
* @property {UIListItemElementMetadata} [item] - Optional list item metadata
|
|
26
|
+
*/
|
|
3
27
|
export interface FieldDefinition<T = void> {
|
|
4
28
|
tag: string;
|
|
5
29
|
rendererId?: string;
|
|
@@ -7,8 +31,42 @@ export interface FieldDefinition<T = void> {
|
|
|
7
31
|
children?: FieldDefinition<T>[];
|
|
8
32
|
item?: UIListItemElementMetadata;
|
|
9
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* @description Interface for field properties including validation
|
|
36
|
+
* @summary Defines common properties and validation rules for UI fields
|
|
37
|
+
* This interface defines the standard properties that can be applied to
|
|
38
|
+
* UI fields, including basic attributes and validation rules.
|
|
39
|
+
*
|
|
40
|
+
* @interface FieldProperties
|
|
41
|
+
* @memberOf module:ui-decorators
|
|
42
|
+
*
|
|
43
|
+
* @property {string} name - The name of the field
|
|
44
|
+
* @property {string} path - The full hierarchical path of the field
|
|
45
|
+
* @property {string} childOf - The parent path of the immediate parent field, if nested
|
|
46
|
+
* @property {string} type - The type of the field (e.g., 'text', 'number')
|
|
47
|
+
* @property {string|number|Date} value - The current value of the field
|
|
48
|
+
* @property {boolean} [hidden] - Whether the field is hidden
|
|
49
|
+
* @property {boolean} [disabled] - Whether the field is disabled
|
|
50
|
+
* @property {boolean} [required] - Whether the field is required
|
|
51
|
+
* @property {boolean} [readonly] - Whether the field is read-only
|
|
52
|
+
* @property {number} [maxLength] - Maximum length for text fields
|
|
53
|
+
* @property {number} [minLength] - Minimum length for text fields
|
|
54
|
+
* @property {number|Date} [max] - Maximum value for numeric or date fields
|
|
55
|
+
* @property {number|Date} [min] - Minimum value for numeric or date fields
|
|
56
|
+
* @property {string} [pattern] - Regex pattern for validation
|
|
57
|
+
* @property {number} [step] - Step value for numeric fields
|
|
58
|
+
* @property {string} [format] - Format string for date fields
|
|
59
|
+
* @property {string} [equals] - Field must equal the value of this field
|
|
60
|
+
* @property {string} [diff] - Field must differ from the value of this field
|
|
61
|
+
* @property {string} [lessThan] - Field must be less than this field
|
|
62
|
+
* @property {string} [lessThanOrEqual] - Field must be less than or equal to this field
|
|
63
|
+
* @property {string} [greaterThan] - Field must be greater than this field
|
|
64
|
+
* @property {string} [greaterThanOrEqual] - Field must be greater than or equal to this field
|
|
65
|
+
*/
|
|
10
66
|
export interface FieldProperties {
|
|
11
67
|
name: string;
|
|
68
|
+
path: string;
|
|
69
|
+
childOf?: string;
|
|
12
70
|
type: string;
|
|
13
71
|
value: string | number | Date;
|
|
14
72
|
hidden?: boolean;
|
|
@@ -31,7 +89,7 @@ export interface FieldProperties {
|
|
|
31
89
|
}
|
|
32
90
|
/**
|
|
33
91
|
* @typedef UIElementMetadata
|
|
34
|
-
* @memberOf ui-decorators
|
|
92
|
+
* @memberOf module:ui-decorators
|
|
35
93
|
*/
|
|
36
94
|
export type UIElementMetadata = {
|
|
37
95
|
tag: string;
|
|
@@ -45,7 +103,7 @@ export type UIElementMetadata = {
|
|
|
45
103
|
export type UIModelMetadata = Omit<UIElementMetadata, "serialize">;
|
|
46
104
|
/**
|
|
47
105
|
* @typedef UIPropMetadata
|
|
48
|
-
* @memberOf ui-decorators
|
|
106
|
+
* @memberOf module:ui-decorators
|
|
49
107
|
*/
|
|
50
108
|
export type UIPropMetadata = {
|
|
51
109
|
name: string;
|
|
@@ -54,7 +112,7 @@ export type UIPropMetadata = {
|
|
|
54
112
|
export type CrudOperationKeys = OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE;
|
|
55
113
|
/**
|
|
56
114
|
* @typedef UIListPropMetadata
|
|
57
|
-
* @memberOf ui-decorators
|
|
115
|
+
* @memberOf module:ui-decorators
|
|
58
116
|
*/
|
|
59
117
|
export type UIListPropMetadata = {
|
|
60
118
|
name: string;
|
|
@@ -62,14 +120,14 @@ export type UIListPropMetadata = {
|
|
|
62
120
|
};
|
|
63
121
|
/**
|
|
64
122
|
* @typedef UIListItemModelMetadata
|
|
65
|
-
* @memberOf ui-decorators
|
|
123
|
+
* @memberOf module:ui-decorators
|
|
66
124
|
*/
|
|
67
125
|
export type UIListItemModelMetadata = {
|
|
68
126
|
item: UIListItemElementMetadata;
|
|
69
127
|
};
|
|
70
128
|
/**
|
|
71
129
|
* @typedef UIListItemElementMetada
|
|
72
|
-
* @memberOf ui-decorators
|
|
130
|
+
* @memberOf module:ui-decorators
|
|
73
131
|
*/
|
|
74
132
|
export type UIListItemElementMetadata = {
|
|
75
133
|
tag: string;
|
package/lib/esm/ui/types.js
CHANGED
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Type definitions for UI components and rendering
|
|
3
|
+
* @summary Defines types and interfaces used throughout the UI decorators library
|
|
4
|
+
* This module contains type definitions for field properties, UI metadata,
|
|
5
|
+
* and other structures used in rendering UI components.
|
|
6
|
+
* @module ui/types
|
|
7
|
+
* @memberOf module:ui-decorators
|
|
8
|
+
*/
|
|
1
9
|
import { UIKeys } from "./constants";
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdWkvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUdILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb25zIGZvciBVSSBjb21wb25lbnRzIGFuZCByZW5kZXJpbmdcbiAqIEBzdW1tYXJ5IERlZmluZXMgdHlwZXMgYW5kIGludGVyZmFjZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBVSSBkZWNvcmF0b3JzIGxpYnJhcnlcbiAqIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHR5cGUgZGVmaW5pdGlvbnMgZm9yIGZpZWxkIHByb3BlcnRpZXMsIFVJIG1ldGFkYXRhLFxuICogYW5kIG90aGVyIHN0cnVjdHVyZXMgdXNlZCBpbiByZW5kZXJpbmcgVUkgY29tcG9uZW50cy5cbiAqIEBtb2R1bGUgdWkvdHlwZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dWktZGVjb3JhdG9yc1xuICovXG5cbmltcG9ydCB7IE9wZXJhdGlvbktleXMgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFVJS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGRlZmluaW5nIGEgVUkgZmllbGQgb3IgY29tcG9uZW50XG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgcmVuZGVyYWJsZSBVSSBlbGVtZW50IHdpdGggcHJvcGVydGllcyBhbmQgY2hpbGRyZW5cbiAqIFRoaXMgaW50ZXJmYWNlIGRlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBhIFVJIGZpZWxkIG9yIGNvbXBvbmVudCwgaW5jbHVkaW5nXG4gKiBpdHMgdGFnIG5hbWUsIHByb3BlcnRpZXMsIGFuZCBvcHRpb25hbCBjaGlsZHJlbiBlbGVtZW50cy5cbiAqXG4gKiBAaW50ZXJmYWNlIEZpZWxkRGVmaW5pdGlvblxuICogQHRlbXBsYXRlIFQgQWRkaXRpb25hbCBwcm9wZXJ0aWVzIHR5cGUgKGRlZmF1bHRzIHRvIHZvaWQpXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGFnIC0gVGhlIEhUTUwgZWxlbWVudCBvciBjb21wb25lbnQgdGFnIG5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcmVuZGVyZXJJZF0gLSBPcHRpb25hbCBJRCBvZiB0aGUgcmVuZGVyZXIgdG8gdXNlXG4gKiBAcHJvcGVydHkgcHJvcHMgLSBDb21iaW5lZCBwcm9wZXJ0aWVzIGZvciB0aGUgZmllbGRcbiAqIEBwcm9wZXJ0eSB7RmllbGREZWZpbml0aW9uW119IFtjaGlsZHJlbl0gLSBPcHRpb25hbCBjaGlsZCBlbGVtZW50c1xuICogQHByb3BlcnR5IHtVSUxpc3RJdGVtRWxlbWVudE1ldGFkYXRhfSBbaXRlbV0gLSBPcHRpb25hbCBsaXN0IGl0ZW0gbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaWVsZERlZmluaXRpb248VCA9IHZvaWQ+IHtcbiAgdGFnOiBzdHJpbmc7XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG4gIHByb3BzOiBUICYgRmllbGRQcm9wZXJ0aWVzO1xuICBjaGlsZHJlbj86IEZpZWxkRGVmaW5pdGlvbjxUPltdO1xuICBpdGVtPzogVUlMaXN0SXRlbUVsZW1lbnRNZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBmaWVsZCBwcm9wZXJ0aWVzIGluY2x1ZGluZyB2YWxpZGF0aW9uXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGNvbW1vbiBwcm9wZXJ0aWVzIGFuZCB2YWxpZGF0aW9uIHJ1bGVzIGZvciBVSSBmaWVsZHNcbiAqIFRoaXMgaW50ZXJmYWNlIGRlZmluZXMgdGhlIHN0YW5kYXJkIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0b1xuICogVUkgZmllbGRzLCBpbmNsdWRpbmcgYmFzaWMgYXR0cmlidXRlcyBhbmQgdmFsaWRhdGlvbiBydWxlcy5cbiAqXG4gKiBAaW50ZXJmYWNlIEZpZWxkUHJvcGVydGllc1xuICogQG1lbWJlck9mIG1vZHVsZTp1aS1kZWNvcmF0b3JzXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXRoIC0gVGhlIGZ1bGwgaGllcmFyY2hpY2FsIHBhdGggb2YgdGhlIGZpZWxkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2hpbGRPZiAtIFRoZSBwYXJlbnQgcGF0aCBvZiB0aGUgaW1tZWRpYXRlIHBhcmVudCBmaWVsZCwgaWYgbmVzdGVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBmaWVsZCAoZS5nLiwgJ3RleHQnLCAnbnVtYmVyJylcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcnxEYXRlfSB2YWx1ZSAtIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmaWVsZFxuICogQHByb3BlcnR5IHtib29sZWFufSBbaGlkZGVuXSAtIFdoZXRoZXIgdGhlIGZpZWxkIGlzIGhpZGRlblxuICogQHByb3BlcnR5IHtib29sZWFufSBbZGlzYWJsZWRdIC0gV2hldGhlciB0aGUgZmllbGQgaXMgZGlzYWJsZWRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3JlcXVpcmVkXSAtIFdoZXRoZXIgdGhlIGZpZWxkIGlzIHJlcXVpcmVkXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtyZWFkb25seV0gLSBXaGV0aGVyIHRoZSBmaWVsZCBpcyByZWFkLW9ubHlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbbWF4TGVuZ3RoXSAtIE1heGltdW0gbGVuZ3RoIGZvciB0ZXh0IGZpZWxkc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFttaW5MZW5ndGhdIC0gTWluaW11bSBsZW5ndGggZm9yIHRleHQgZmllbGRzXG4gKiBAcHJvcGVydHkge251bWJlcnxEYXRlfSBbbWF4XSAtIE1heGltdW0gdmFsdWUgZm9yIG51bWVyaWMgb3IgZGF0ZSBmaWVsZHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfERhdGV9IFttaW5dIC0gTWluaW11bSB2YWx1ZSBmb3IgbnVtZXJpYyBvciBkYXRlIGZpZWxkc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwYXR0ZXJuXSAtIFJlZ2V4IHBhdHRlcm4gZm9yIHZhbGlkYXRpb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbc3RlcF0gLSBTdGVwIHZhbHVlIGZvciBudW1lcmljIGZpZWxkc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtmb3JtYXRdIC0gRm9ybWF0IHN0cmluZyBmb3IgZGF0ZSBmaWVsZHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZXF1YWxzXSAtIEZpZWxkIG11c3QgZXF1YWwgdGhlIHZhbHVlIG9mIHRoaXMgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGlmZl0gLSBGaWVsZCBtdXN0IGRpZmZlciBmcm9tIHRoZSB2YWx1ZSBvZiB0aGlzIGZpZWxkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2xlc3NUaGFuXSAtIEZpZWxkIG11c3QgYmUgbGVzcyB0aGFuIHRoaXMgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbGVzc1RoYW5PckVxdWFsXSAtIEZpZWxkIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoaXMgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZ3JlYXRlclRoYW5dIC0gRmllbGQgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhpcyBmaWVsZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtncmVhdGVyVGhhbk9yRXF1YWxdIC0gRmllbGQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhpcyBmaWVsZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpZWxkUHJvcGVydGllcyB7XG4gIG5hbWU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBjaGlsZE9mPzogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8vIFZhbGlkYXRpb25cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICByZWFkb25seT86IGJvb2xlYW47XG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXIgfCBEYXRlO1xuICBtaW4/OiBudW1iZXIgfCBEYXRlO1xuICBwYXR0ZXJuPzogc3RyaW5nO1xuICBzdGVwPzogbnVtYmVyO1xuICBmb3JtYXQ/OiBzdHJpbmc7XG4gIFtVSUtleXMuRVFVQUxTXT86IHN0cmluZztcbiAgW1VJS2V5cy5ESUZGXT86IHN0cmluZztcbiAgW1VJS2V5cy5MRVNTX1RIQU5dPzogc3RyaW5nO1xuICBbVUlLZXlzLkxFU1NfVEhBTl9PUl9FUVVBTF0/OiBzdHJpbmc7XG4gIFtVSUtleXMuR1JFQVRFUl9USEFOXT86IHN0cmluZztcbiAgW1VJS2V5cy5HUkVBVEVSX1RIQU5fT1JfRVFVQUxdPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIFVJRWxlbWVudE1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgVUlFbGVtZW50TWV0YWRhdGEgPSB7XG4gIHRhZzogc3RyaW5nO1xuICBwcm9wcz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHNlcmlhbGl6ZT86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIFVJRWxlbWVudE1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgdWktZGVjb3JhdG9ycy51aS5kZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCB0eXBlIFVJTW9kZWxNZXRhZGF0YSA9IE9taXQ8VUlFbGVtZW50TWV0YWRhdGEsIFwic2VyaWFsaXplXCI+O1xuXG4vKipcbiAqIEB0eXBlZGVmIFVJUHJvcE1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgVUlQcm9wTWV0YWRhdGEgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgc3RyaW5naWZ5OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ3J1ZE9wZXJhdGlvbktleXMgPVxuICB8IE9wZXJhdGlvbktleXMuQ1JFQVRFXG4gIHwgT3BlcmF0aW9uS2V5cy5SRUFEXG4gIHwgT3BlcmF0aW9uS2V5cy5VUERBVEVcbiAgfCBPcGVyYXRpb25LZXlzLkRFTEVURTtcblxuLyoqXG4gKiBAdHlwZWRlZiBVSUxpc3RQcm9wTWV0YWRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dWktZGVjb3JhdG9yc1xuICovXG5leHBvcnQgdHlwZSBVSUxpc3RQcm9wTWV0YWRhdGEgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJvcHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIFVJTGlzdEl0ZW1Nb2RlbE1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgVUlMaXN0SXRlbU1vZGVsTWV0YWRhdGEgPSB7XG4gIGl0ZW06IFVJTGlzdEl0ZW1FbGVtZW50TWV0YWRhdGE7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIFVJTGlzdEl0ZW1FbGVtZW50TWV0YWRhXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IHR5cGUgVUlMaXN0SXRlbUVsZW1lbnRNZXRhZGF0YSA9IHtcbiAgdGFnOiBzdHJpbmc7XG4gIHByb3BzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWFwcGVyPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn07XG4iXX0=
|
package/lib/esm/ui/utils.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { FieldProperties } from "./types";
|
|
|
3
3
|
/**
|
|
4
4
|
* @function formatByType
|
|
5
5
|
*
|
|
6
|
-
* @memberOf ui-decorators
|
|
6
|
+
* @memberOf module:ui-decorators
|
|
7
7
|
*/
|
|
8
8
|
export declare function formatByType(type: any, value: any, ...args: unknown[]): string | number;
|
|
9
9
|
export declare function parseValueByType(type: string, value: string | number, fieldProps: FieldProperties): string | number | Date;
|
package/lib/esm/ui/utils.js
CHANGED
|
@@ -4,7 +4,7 @@ import { findModelId, InternalError } from "@decaf-ts/db-decorators";
|
|
|
4
4
|
/**
|
|
5
5
|
* @function formatByType
|
|
6
6
|
*
|
|
7
|
-
* @memberOf ui-decorators
|
|
7
|
+
* @memberOf module:ui-decorators
|
|
8
8
|
*/
|
|
9
9
|
export function formatByType(type, value, ...args) {
|
|
10
10
|
if (type === UIKeys.DATE) {
|
|
@@ -84,4 +84,4 @@ export function generateUIModelID(model) {
|
|
|
84
84
|
const name = model.constructor.name;
|
|
85
85
|
return `${name}-${id}`;
|
|
86
86
|
}
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdWkvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsRUFFVixTQUFTLEVBQ1QsY0FBYyxHQUNmLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHckU7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQzFCLElBQVMsRUFDVCxLQUFVLEVBQ1YsR0FBRyxJQUFlO0lBRWxCLElBQUksSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixNQUFNLE1BQU0sR0FBWSxJQUFJLENBQUMsS0FBSyxFQUFhLElBQUksZUFBZSxDQUFDO1FBQ25FLE9BQU8sVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLElBQVksRUFDWixLQUFzQixFQUN0QixVQUEyQjtJQUUzQixJQUFJLE1BQU0sR0FBdUMsU0FBUyxDQUFDO0lBQzNELFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDYixLQUFLLGVBQWUsQ0FBQyxNQUFNO1lBQ3pCLE1BQU0sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsTUFBTTtRQUNSLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxNQUFNLEdBQXVCLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDckQsTUFBTTtnQkFDSixPQUFPLEtBQUssS0FBSyxjQUFjLENBQUMsTUFBTTtvQkFDcEMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDakIsQ0FBQyxDQUFDLEtBQUs7d0JBQ0wsQ0FBQyxDQUFDLE1BQU07NEJBQ04sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDOzRCQUMxQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO3dCQUNuQixDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ2xCLE1BQU07UUFDUixDQUFDO1FBQ0Q7WUFDRSxNQUFNO2dCQUNKLE9BQU8sS0FBSyxLQUFLLGNBQWMsQ0FBQyxNQUFNO29CQUNwQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQWUsQ0FBQztvQkFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNqQixDQUFDO0lBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxNQUFNLElBQUksYUFBYSxDQUNyQixpQ0FBaUMsSUFBSSxTQUFTLE9BQU8sS0FBSyxNQUFNLEtBQUssRUFBRSxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEtBQXNCO0lBQ2xELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRTdELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBRWxDLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWE7SUFDdEMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUV6QixNQUFNLGFBQWEsR0FBMkI7UUFDNUMsR0FBRyxFQUFFLE9BQU87UUFDWixHQUFHLEVBQUUsTUFBTTtRQUNYLEdBQUcsRUFBRSxNQUFNO0tBQ1osQ0FBQztJQUNGLE9BQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDMUMsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBYTtJQUN0QyxNQUFNLGFBQWEsR0FBMkI7UUFDNUMsT0FBTyxFQUFFLEdBQUc7UUFDWixNQUFNLEVBQUUsR0FBRztRQUNYLE1BQU0sRUFBRSxHQUFHO0tBQ1osQ0FBQztJQUVGLE9BQU8sR0FBRyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNwRCxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFrQixLQUFRO0lBQ3pELElBQUksRUFBNEIsQ0FBQztJQUNqQyxJQUFJLENBQUM7UUFDSCxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBb0IsQ0FBQztRQUMzQyw2REFBNkQ7SUFDL0QsQ0FBQztJQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7UUFDcEIsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDcEMsT0FBTyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZm9ybWF0RGF0ZSxcbiAgTW9kZWwsXG4gIHBhcnNlRGF0ZSxcbiAgUmVzZXJ2ZWRNb2RlbHMsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEhUTUw1RGF0ZUZvcm1hdCwgSFRNTDVJbnB1dFR5cGVzLCBVSUtleXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGZpbmRNb2RlbElkLCBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBGaWVsZFByb3BlcnRpZXMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBmdW5jdGlvbiBmb3JtYXRCeVR5cGVcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJ5VHlwZShcbiAgdHlwZTogYW55LFxuICB2YWx1ZTogYW55LFxuICAuLi5hcmdzOiB1bmtub3duW11cbik6IHN0cmluZyB8IG51bWJlciB7XG4gIGlmICh0eXBlID09PSBVSUtleXMuREFURSkge1xuICAgIGNvbnN0IGZvcm1hdDogc3RyaW5nID0gKGFyZ3Muc2hpZnQoKSBhcyBzdHJpbmcpIHx8IEhUTUw1RGF0ZUZvcm1hdDtcbiAgICByZXR1cm4gZm9ybWF0RGF0ZShuZXcgRGF0ZSh2YWx1ZSksIGZvcm1hdCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VWYWx1ZUJ5VHlwZShcbiAgdHlwZTogc3RyaW5nLFxuICB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLFxuICBmaWVsZFByb3BzOiBGaWVsZFByb3BlcnRpZXNcbik6IHN0cmluZyB8IG51bWJlciB8IERhdGUge1xuICBsZXQgcmVzdWx0OiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIEhUTUw1SW5wdXRUeXBlcy5OVU1CRVI6XG4gICAgICByZXN1bHQgPSBwYXJzZVRvTnVtYmVyKHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgSFRNTDVJbnB1dFR5cGVzLkRBVEU6IHtcbiAgICAgIGNvbnN0IGZvcm1hdDogc3RyaW5nIHwgdW5kZWZpbmVkID0gZmllbGRQcm9wcy5mb3JtYXQ7XG4gICAgICByZXN1bHQgPVxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFJlc2VydmVkTW9kZWxzLk5VTUJFUlxuICAgICAgICAgID8gbmV3IERhdGUodmFsdWUpXG4gICAgICAgICAgOiB2YWx1ZVxuICAgICAgICAgICAgPyBmb3JtYXRcbiAgICAgICAgICAgICAgPyBwYXJzZURhdGUoZm9ybWF0LCB2YWx1ZSlcbiAgICAgICAgICAgICAgOiBuZXcgRGF0ZSh2YWx1ZSlcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXN1bHQgPVxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFJlc2VydmVkTW9kZWxzLlNUUklOR1xuICAgICAgICAgID8gZXNjYXBlSHRtbCh2YWx1ZSBhcyBzdHJpbmcpXG4gICAgICAgICAgOiByZXN1bHQ7XG4gIH1cbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgIGBGYWlsZWQgdG8gcGFyc2UgdmFsdWUgb2YgdHlwZSAke3R5cGV9IGZyb20gJHt0eXBlb2YgdmFsdWV9IC0gJHt2YWx1ZX1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUb051bWJlcih2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgIWlzTmFOKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuXG4gIGNvbnN0IHBhcnNlZCA9IE51bWJlcih2YWx1ZSk7XG4gIGlmICghaXNOYU4ocGFyc2VkKSkgcmV0dXJuIHBhcnNlZDtcblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlSHRtbCh2YWx1ZTogc3RyaW5nKSB7XG4gIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcblxuICBjb25zdCB0YWdzVG9SZXBsYWNlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIFwiJlwiOiBcIiZhbXA7XCIsXG4gICAgXCI8XCI6IFwiJmx0O1wiLFxuICAgIFwiPlwiOiBcIiZndDtcIixcbiAgfTtcbiAgcmV0dXJuIGAke3ZhbHVlfWAucmVwbGFjZSgvWyY8Pl0vZywgKHRhZykgPT4ge1xuICAgIHJldHVybiB0YWdzVG9SZXBsYWNlW3RhZ10gfHwgdGFnO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJldmVydEh0bWwodmFsdWU6IHN0cmluZykge1xuICBjb25zdCB0YWdzVG9SZXBsYWNlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIFwiJmFtcDtcIjogXCImXCIsXG4gICAgXCImbHQ7XCI6IFwiPFwiLFxuICAgIFwiJmd0O1wiOiBcIj5cIixcbiAgfTtcblxuICByZXR1cm4gYCR7dmFsdWV9YC5yZXBsYWNlKC8mbHQ7fCZndDt8JmFtcDsvZywgKHRhZykgPT4ge1xuICAgIHJldHVybiB0YWdzVG9SZXBsYWNlW3RhZ10gfHwgdGFnO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVUlNb2RlbElEPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IE0pIHtcbiAgbGV0IGlkOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQ7XG4gIHRyeSB7XG4gICAgaWQgPSBmaW5kTW9kZWxJZChtb2RlbCkgYXMgc3RyaW5nIHwgbnVtYmVyO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIGlkID0gRGF0ZS5ub3coKTtcbiAgfVxuICBjb25zdCBuYW1lID0gbW9kZWwuY29uc3RydWN0b3IubmFtZTtcbiAgcmV0dXJuIGAke25hbWV9LSR7aWR9YDtcbn1cbiJdfQ==
|
package/lib/index.cjs
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
+
* @description UI decorators module for TypeScript applications
|
|
4
|
+
* @summary A collection of decorators and utilities for building UI components in TypeScript applications.
|
|
5
|
+
* This module exports functionality from both the model and UI submodules, providing decorators for
|
|
6
|
+
* rendering, component definition, and UI state management.
|
|
3
7
|
* @module ui-decorators
|
|
4
8
|
*/
|
|
5
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
@@ -21,10 +25,10 @@ exports.VERSION = void 0;
|
|
|
21
25
|
__exportStar(require("./model/index.cjs"), exports);
|
|
22
26
|
__exportStar(require("./ui/index.cjs"), exports);
|
|
23
27
|
/**
|
|
24
|
-
* @
|
|
25
|
-
* @
|
|
28
|
+
* @description Current package version string
|
|
29
|
+
* @summary Stores the current package version for reference
|
|
26
30
|
* @const VERSION
|
|
27
31
|
* @memberOf module:ui-decorators
|
|
28
32
|
*/
|
|
29
|
-
exports.VERSION = "0.5.
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
exports.VERSION = "0.5.11";
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxvREFBd0I7QUFDeEIsaURBQXFCO0FBRXJCOzs7OztHQUtHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gVUkgZGVjb3JhdG9ycyBtb2R1bGUgZm9yIFR5cGVTY3JpcHQgYXBwbGljYXRpb25zXG4gKiBAc3VtbWFyeSBBIGNvbGxlY3Rpb24gb2YgZGVjb3JhdG9ycyBhbmQgdXRpbGl0aWVzIGZvciBidWlsZGluZyBVSSBjb21wb25lbnRzIGluIFR5cGVTY3JpcHQgYXBwbGljYXRpb25zLlxuICogVGhpcyBtb2R1bGUgZXhwb3J0cyBmdW5jdGlvbmFsaXR5IGZyb20gYm90aCB0aGUgbW9kZWwgYW5kIFVJIHN1Ym1vZHVsZXMsIHByb3ZpZGluZyBkZWNvcmF0b3JzIGZvclxuICogcmVuZGVyaW5nLCBjb21wb25lbnQgZGVmaW5pdGlvbiwgYW5kIFVJIHN0YXRlIG1hbmFnZW1lbnQuXG4gKiBAbW9kdWxlIHVpLWRlY29yYXRvcnNcbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdWlcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3VycmVudCBwYWNrYWdlIHZlcnNpb24gc3RyaW5nXG4gKiBAc3VtbWFyeSBTdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uIGZvciByZWZlcmVuY2VcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
|
package/lib/index.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @description UI decorators module for TypeScript applications
|
|
3
|
+
* @summary A collection of decorators and utilities for building UI components in TypeScript applications.
|
|
4
|
+
* This module exports functionality from both the model and UI submodules, providing decorators for
|
|
5
|
+
* rendering, component definition, and UI state management.
|
|
2
6
|
* @module ui-decorators
|
|
3
7
|
*/
|
|
4
8
|
export * from "./model";
|
|
5
9
|
export * from "./ui";
|
|
6
10
|
/**
|
|
7
|
-
* @
|
|
8
|
-
* @
|
|
11
|
+
* @description Current package version string
|
|
12
|
+
* @summary Stores the current package version for reference
|
|
9
13
|
* @const VERSION
|
|
10
14
|
* @memberOf module:ui-decorators
|
|
11
15
|
*/
|
|
12
|
-
export declare const VERSION = "0.5.
|
|
16
|
+
export declare const VERSION = "0.5.11";
|
package/lib/model/Renderable.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVuZGVyYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9SZW5kZXJhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIG9iamVjdHMgdGhhdCBjYW4gYmUgcmVuZGVyZWRcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbnRyYWN0IGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIHJlbmRlcmVkIHRvIGEgc3BlY2lmaWMgb3V0cHV0IGZvcm1hdFxuICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgYSBnZW5lcmljIHJlbmRlciBtZXRob2QgdGhhdCBjYW4gdHJhbnNmb3JtIHRoZSBpbXBsZW1lbnRpbmcgb2JqZWN0XG4gKiBpbnRvIGFueSBkZXNpcmVkIG91dHB1dCBmb3JtYXQuXG4gKiBAaW50ZXJmYWNlIFJlbmRlcmFibGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dWktZGVjb3JhdG9ycy9tb2RlbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlcmFibGUge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlbmRlcnMgdGhlIG9iamVjdCB0byBhIHNwZWNpZmljIG91dHB1dCBmb3JtYXRcbiAgICogQHN1bW1hcnkgVHJhbnNmb3JtcyB0aGUgb2JqZWN0IGludG8gdGhlIGRlc2lyZWQgb3V0cHV0IHJlcHJlc2VudGF0aW9uXG4gICAqIEB0ZW1wbGF0ZSBSIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgcmVuZGVyIG9wZXJhdGlvblxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzIEFkZGl0aW9uYWwgYXJndW1lbnRzIG5lZWRlZCBmb3IgcmVuZGVyaW5nXG4gICAqIEByZXR1cm4ge1J9IFRoZSByZW5kZXJlZCBvdXRwdXQgaW4gdGhlIHNwZWNpZmllZCBmb3JtYXRcbiAgICovXG4gIHJlbmRlcjxSPiguLi5hcmdzOiBhbnlbXSk6IFI7XG59XG4iXX0=
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Interface for objects that can be rendered
|
|
3
|
+
* @summary Defines the contract for objects that can be rendered to a specific output format
|
|
4
|
+
* This interface provides a generic render method that can transform the implementing object
|
|
5
|
+
* into any desired output format.
|
|
6
|
+
* @interface Renderable
|
|
7
|
+
* @memberOf module:ui-decorators/model
|
|
8
|
+
*/
|
|
1
9
|
export interface Renderable {
|
|
10
|
+
/**
|
|
11
|
+
* @description Renders the object to a specific output format
|
|
12
|
+
* @summary Transforms the object into the desired output representation
|
|
13
|
+
* @template R The return type of the render operation
|
|
14
|
+
* @param {any[]} args Additional arguments needed for rendering
|
|
15
|
+
* @return {R} The rendered output in the specified format
|
|
16
|
+
*/
|
|
2
17
|
render<R>(...args: any[]): R;
|
|
3
18
|
}
|
package/lib/model/decorators.cjs
CHANGED
|
@@ -3,17 +3,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.uimodel = uimodel;
|
|
4
4
|
exports.renderedBy = renderedBy;
|
|
5
5
|
exports.uilistitem = uilistitem;
|
|
6
|
+
exports.uihandlers = uihandlers;
|
|
6
7
|
const constants_1 = require("./../ui/constants.cjs");
|
|
7
8
|
const reflection_1 = require("@decaf-ts/reflection");
|
|
8
9
|
const Rendering_1 = require("./../ui/Rendering.cjs");
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
+
* @description Decorator that tags a class as a UI model
|
|
12
|
+
* @summary Adds rendering capabilities to a model class by providing a render method
|
|
13
|
+
* This decorator applies metadata to the class that enables it to be rendered by the UI rendering engine.
|
|
14
|
+
* The model will be rendered with the specified tag and properties.
|
|
11
15
|
*
|
|
12
|
-
* @param {string} [tag]
|
|
13
|
-
* @param {
|
|
14
|
-
* @
|
|
16
|
+
* @param {string} [tag] The HTML tag to use when rendering this model (defaults to class name)
|
|
17
|
+
* @param {Record<string, any>} [props] Additional properties to pass to the rendered element
|
|
18
|
+
* @return {Function} A class decorator function
|
|
15
19
|
*
|
|
16
|
-
* @
|
|
20
|
+
* @function uimodel
|
|
21
|
+
* @category Class Decorators
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // Basic usage with default tag (class name)
|
|
25
|
+
* @uimodel()
|
|
26
|
+
* class UserProfile extends Model {
|
|
27
|
+
* @attribute()
|
|
28
|
+
* name: string;
|
|
29
|
+
*
|
|
30
|
+
* @attribute()
|
|
31
|
+
* email: string;
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* // Usage with custom tag and properties
|
|
35
|
+
* @uimodel('div', { class: 'user-card' })
|
|
36
|
+
* class UserCard extends Model {
|
|
37
|
+
* @attribute()
|
|
38
|
+
* username: string;
|
|
39
|
+
* }
|
|
17
40
|
*
|
|
18
41
|
* @mermaid
|
|
19
42
|
* sequenceDiagram
|
|
@@ -26,8 +49,6 @@ const Rendering_1 = require("./../ui/Rendering.cjs");
|
|
|
26
49
|
* constructor->>uimodel: returns instance
|
|
27
50
|
* uimodel->>instance: adds the render method
|
|
28
51
|
* uimodel->>System: returns UIModel instance
|
|
29
|
-
*
|
|
30
|
-
* @category Decorators
|
|
31
52
|
*/
|
|
32
53
|
function uimodel(tag, props) {
|
|
33
54
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -39,27 +60,85 @@ function uimodel(tag, props) {
|
|
|
39
60
|
return (0, reflection_1.metadata)(Rendering_1.RenderingEngine.key(constants_1.UIKeys.UIMODEL), meta)(original);
|
|
40
61
|
};
|
|
41
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* @description Decorator that specifies which rendering engine to use for a model
|
|
65
|
+
* @summary Associates a model with a specific rendering engine implementation
|
|
66
|
+
* This decorator allows you to override the default rendering engine for a specific model class,
|
|
67
|
+
* enabling different rendering strategies for different models.
|
|
68
|
+
*
|
|
69
|
+
* @param {string} engine The name of the rendering engine to use
|
|
70
|
+
* @return {Function} A class decorator function
|
|
71
|
+
*
|
|
72
|
+
* @function renderedBy
|
|
73
|
+
* @category Class Decorators
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* // Specify a custom rendering engine for a model
|
|
77
|
+
* @uimodel()
|
|
78
|
+
* @renderedBy('react')
|
|
79
|
+
* class ReactComponent extends Model {
|
|
80
|
+
* @attribute()
|
|
81
|
+
* title: string;
|
|
82
|
+
* }
|
|
83
|
+
*
|
|
84
|
+
* @mermaid
|
|
85
|
+
* sequenceDiagram
|
|
86
|
+
* participant System
|
|
87
|
+
* participant renderedBy
|
|
88
|
+
* participant Model
|
|
89
|
+
* participant RenderingEngine
|
|
90
|
+
* System->>renderedBy: apply to Model
|
|
91
|
+
* renderedBy->>Model: adds engine metadata
|
|
92
|
+
* Model->>RenderingEngine: uses specified engine
|
|
93
|
+
* RenderingEngine->>System: renders with custom engine
|
|
94
|
+
*/
|
|
42
95
|
function renderedBy(engine) {
|
|
43
96
|
return (0, reflection_1.apply)((0, reflection_1.metadata)(Rendering_1.RenderingEngine.key(constants_1.UIKeys.RENDERED_BY), engine));
|
|
44
97
|
}
|
|
45
98
|
/**
|
|
46
|
-
*
|
|
99
|
+
* @description Decorator that tags a model as a list item for UI rendering
|
|
100
|
+
* @summary Specifies how a model should be rendered when displayed in a list context
|
|
101
|
+
* This decorator applies metadata to the class that enables it to be rendered as a list item
|
|
102
|
+
* by the UI rendering engine. The model will be rendered with the specified tag and properties
|
|
103
|
+
* when it appears in a list.
|
|
104
|
+
*
|
|
105
|
+
* @param {string} [tag] The HTML tag to use when rendering this model as a list item (defaults to class name)
|
|
106
|
+
* @param {Record<string, any>} [props] Additional properties to pass to the rendered list item element
|
|
107
|
+
* @return {Function} A class decorator function
|
|
108
|
+
*
|
|
109
|
+
* @function uilistitem
|
|
110
|
+
* @category Class Decorators
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* // Basic usage with default tag (class name)
|
|
114
|
+
* @uimodel()
|
|
115
|
+
* @uilistitem()
|
|
116
|
+
* class TodoItem extends Model {
|
|
117
|
+
* @attribute()
|
|
118
|
+
* title: string;
|
|
47
119
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
120
|
+
* @attribute()
|
|
121
|
+
* completed: boolean;
|
|
122
|
+
* }
|
|
50
123
|
*
|
|
51
|
-
*
|
|
124
|
+
* // Usage with custom tag and properties
|
|
125
|
+
* @uimodel()
|
|
126
|
+
* @uilistitem('li', { class: 'list-group-item' })
|
|
127
|
+
* class ListItem extends Model {
|
|
128
|
+
* @attribute()
|
|
129
|
+
* text: string;
|
|
130
|
+
* }
|
|
52
131
|
*
|
|
53
132
|
* @mermaid
|
|
54
133
|
* sequenceDiagram
|
|
55
134
|
* participant System
|
|
56
135
|
* participant uilistitem
|
|
57
136
|
* participant Model
|
|
137
|
+
* participant RenderingEngine
|
|
58
138
|
* System->>uilistitem: apply to Model
|
|
59
139
|
* uilistitem->>Model: adds list item metadata
|
|
60
|
-
* Model->>
|
|
61
|
-
*
|
|
62
|
-
* @category Decorators
|
|
140
|
+
* Model->>RenderingEngine: uses list item metadata when in list context
|
|
141
|
+
* RenderingEngine->>System: renders with list item styling
|
|
63
142
|
*/
|
|
64
143
|
function uilistitem(tag, props) {
|
|
65
144
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -68,9 +147,17 @@ function uilistitem(tag, props) {
|
|
|
68
147
|
item: {
|
|
69
148
|
tag: tag || original.name,
|
|
70
149
|
props: props,
|
|
71
|
-
}
|
|
150
|
+
},
|
|
72
151
|
};
|
|
73
152
|
return (0, reflection_1.metadata)(Rendering_1.RenderingEngine.key(constants_1.UIKeys.UILISTITEM), meta)(original);
|
|
74
153
|
};
|
|
75
154
|
}
|
|
76
|
-
|
|
155
|
+
function uihandlers(props) {
|
|
156
|
+
return (original) => {
|
|
157
|
+
const meta = {
|
|
158
|
+
handlers: props
|
|
159
|
+
};
|
|
160
|
+
return (0, reflection_1.metadata)(Rendering_1.RenderingEngine.key(constants_1.UIKeys.HANDLERS), meta)(original);
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBZ0RBLDBCQVNDO0FBa0NELGdDQUVDO0FBK0NELGdDQVdDO0FBR0QsZ0NBT0M7QUFqS0QscURBQXlDO0FBQ3pDLHFEQUF1RDtBQUN2RCxxREFBa0Q7QUFHbEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBDRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxHQUFZLEVBQUUsS0FBMkI7SUFDL0QsNkRBQTZEO0lBQzdELE9BQU8sQ0FBQyxRQUFhLEVBQUUsV0FBaUIsRUFBRSxFQUFFO1FBQzFDLE1BQU0sSUFBSSxHQUFvQjtZQUM1QixHQUFHLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJO1lBQ3pCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQztRQUNGLE9BQU8sSUFBQSxxQkFBUSxFQUFDLDJCQUFlLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE1BQWM7SUFDdkMsT0FBTyxJQUFBLGtCQUFLLEVBQUMsSUFBQSxxQkFBUSxFQUFDLDJCQUFlLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLEdBQVksRUFBRSxLQUEyQjtJQUNsRSw2REFBNkQ7SUFDN0QsT0FBTyxDQUFDLFFBQWEsRUFBRSxXQUFpQixFQUFFLEVBQUU7UUFDMUMsTUFBTSxJQUFJLEdBQTRCO1lBQ3BDLElBQUksRUFBRTtnQkFDSixHQUFHLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJO2dCQUN6QixLQUFLLEVBQUUsS0FBSzthQUNiO1NBQ0YsQ0FBQztRQUNGLE9BQU8sSUFBQSxxQkFBUSxFQUFDLDJCQUFlLENBQUMsR0FBRyxDQUFDLGtCQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUUsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUdELFNBQWdCLFVBQVUsQ0FBQyxLQUEyQjtJQUNwRCxPQUFPLENBQUMsUUFBYSxFQUFFLEVBQUU7UUFDdkIsTUFBTSxJQUFJLEdBQUc7WUFDWCxRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDO1FBQ0YsT0FBTyxJQUFBLHFCQUFRLEVBQUMsMkJBQWUsQ0FBQyxHQUFHLENBQUMsa0JBQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RSxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVUlLZXlzIH0gZnJvbSBcIi4uL3VpL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgYXBwbHksIG1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBSZW5kZXJpbmdFbmdpbmUgfSBmcm9tIFwiLi4vdWkvUmVuZGVyaW5nXCI7XG5pbXBvcnQgeyBVSUxpc3RJdGVtTW9kZWxNZXRhZGF0YSwgVUlNb2RlbE1ldGFkYXRhIH0gZnJvbSBcIi4uL3VpL3R5cGVzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY29yYXRvciB0aGF0IHRhZ3MgYSBjbGFzcyBhcyBhIFVJIG1vZGVsXG4gKiBAc3VtbWFyeSBBZGRzIHJlbmRlcmluZyBjYXBhYmlsaXRpZXMgdG8gYSBtb2RlbCBjbGFzcyBieSBwcm92aWRpbmcgYSByZW5kZXIgbWV0aG9kXG4gKiBUaGlzIGRlY29yYXRvciBhcHBsaWVzIG1ldGFkYXRhIHRvIHRoZSBjbGFzcyB0aGF0IGVuYWJsZXMgaXQgdG8gYmUgcmVuZGVyZWQgYnkgdGhlIFVJIHJlbmRlcmluZyBlbmdpbmUuXG4gKiBUaGUgbW9kZWwgd2lsbCBiZSByZW5kZXJlZCB3aXRoIHRoZSBzcGVjaWZpZWQgdGFnIGFuZCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbdGFnXSBUaGUgSFRNTCB0YWcgdG8gdXNlIHdoZW4gcmVuZGVyaW5nIHRoaXMgbW9kZWwgKGRlZmF1bHRzIHRvIGNsYXNzIG5hbWUpXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT59IFtwcm9wc10gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIHRvIHBhc3MgdG8gdGhlIHJlbmRlcmVkIGVsZW1lbnRcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBBIGNsYXNzIGRlY29yYXRvciBmdW5jdGlvblxuICpcbiAqIEBmdW5jdGlvbiB1aW1vZGVsXG4gKiBAY2F0ZWdvcnkgQ2xhc3MgRGVjb3JhdG9yc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyB1c2FnZSB3aXRoIGRlZmF1bHQgdGFnIChjbGFzcyBuYW1lKVxuICogQHVpbW9kZWwoKVxuICogY2xhc3MgVXNlclByb2ZpbGUgZXh0ZW5kcyBNb2RlbCB7XG4gKiAgIEBhdHRyaWJ1dGUoKVxuICogICBuYW1lOiBzdHJpbmc7XG4gKlxuICogICBAYXR0cmlidXRlKClcbiAqICAgZW1haWw6IHN0cmluZztcbiAqIH1cbiAqXG4gKiAvLyBVc2FnZSB3aXRoIGN1c3RvbSB0YWcgYW5kIHByb3BlcnRpZXNcbiAqIEB1aW1vZGVsKCdkaXYnLCB7IGNsYXNzOiAndXNlci1jYXJkJyB9KVxuICogY2xhc3MgVXNlckNhcmQgZXh0ZW5kcyBNb2RlbCB7XG4gKiAgIEBhdHRyaWJ1dGUoKVxuICogICB1c2VybmFtZTogc3RyaW5nO1xuICogfVxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgU3lzdGVtXG4gKiAgIHBhcnRpY2lwYW50IHVpbW9kZWxcbiAqICAgcGFydGljaXBhbnQgY29uc3RydWN0b3JcbiAqICAgcGFydGljaXBhbnQgaW5zdGFuY2VcbiAqICAgU3lzdGVtLT4+dWltb2RlbDpkbyhjb25zdHJ1Y3RvcilcbiAqICAgdWltb2RlbC0+PmNvbnN0cnVjdG9yOiBFeGVjdXRlcyB0aGUgY29uc3RydWN0b3JcbiAqICAgY29uc3RydWN0b3ItPj51aW1vZGVsOiByZXR1cm5zIGluc3RhbmNlXG4gKiAgIHVpbW9kZWwtPj5pbnN0YW5jZTogYWRkcyB0aGUgcmVuZGVyIG1ldGhvZFxuICogICB1aW1vZGVsLT4+U3lzdGVtOiByZXR1cm5zIFVJTW9kZWwgaW5zdGFuY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVpbW9kZWwodGFnPzogc3RyaW5nLCBwcm9wcz86IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICByZXR1cm4gKG9yaWdpbmFsOiBhbnksIHByb3BlcnR5S2V5PzogYW55KSA9PiB7XG4gICAgY29uc3QgbWV0YTogVUlNb2RlbE1ldGFkYXRhID0ge1xuICAgICAgdGFnOiB0YWcgfHwgb3JpZ2luYWwubmFtZSxcbiAgICAgIHByb3BzOiBwcm9wcyxcbiAgICB9O1xuICAgIHJldHVybiBtZXRhZGF0YShSZW5kZXJpbmdFbmdpbmUua2V5KFVJS2V5cy5VSU1PREVMKSwgbWV0YSkob3JpZ2luYWwpO1xuICB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWNvcmF0b3IgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcmVuZGVyaW5nIGVuZ2luZSB0byB1c2UgZm9yIGEgbW9kZWxcbiAqIEBzdW1tYXJ5IEFzc29jaWF0ZXMgYSBtb2RlbCB3aXRoIGEgc3BlY2lmaWMgcmVuZGVyaW5nIGVuZ2luZSBpbXBsZW1lbnRhdGlvblxuICogVGhpcyBkZWNvcmF0b3IgYWxsb3dzIHlvdSB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCByZW5kZXJpbmcgZW5naW5lIGZvciBhIHNwZWNpZmljIG1vZGVsIGNsYXNzLFxuICogZW5hYmxpbmcgZGlmZmVyZW50IHJlbmRlcmluZyBzdHJhdGVnaWVzIGZvciBkaWZmZXJlbnQgbW9kZWxzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBlbmdpbmUgVGhlIG5hbWUgb2YgdGhlIHJlbmRlcmluZyBlbmdpbmUgdG8gdXNlXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBjbGFzcyBkZWNvcmF0b3IgZnVuY3Rpb25cbiAqXG4gKiBAZnVuY3Rpb24gcmVuZGVyZWRCeVxuICogQGNhdGVnb3J5IENsYXNzIERlY29yYXRvcnNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3BlY2lmeSBhIGN1c3RvbSByZW5kZXJpbmcgZW5naW5lIGZvciBhIG1vZGVsXG4gKiBAdWltb2RlbCgpXG4gKiBAcmVuZGVyZWRCeSgncmVhY3QnKVxuICogY2xhc3MgUmVhY3RDb21wb25lbnQgZXh0ZW5kcyBNb2RlbCB7XG4gKiAgIEBhdHRyaWJ1dGUoKVxuICogICB0aXRsZTogc3RyaW5nO1xuICogfVxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgU3lzdGVtXG4gKiAgIHBhcnRpY2lwYW50IHJlbmRlcmVkQnlcbiAqICAgcGFydGljaXBhbnQgTW9kZWxcbiAqICAgcGFydGljaXBhbnQgUmVuZGVyaW5nRW5naW5lXG4gKiAgIFN5c3RlbS0+PnJlbmRlcmVkQnk6IGFwcGx5IHRvIE1vZGVsXG4gKiAgIHJlbmRlcmVkQnktPj5Nb2RlbDogYWRkcyBlbmdpbmUgbWV0YWRhdGFcbiAqICAgTW9kZWwtPj5SZW5kZXJpbmdFbmdpbmU6IHVzZXMgc3BlY2lmaWVkIGVuZ2luZVxuICogICBSZW5kZXJpbmdFbmdpbmUtPj5TeXN0ZW06IHJlbmRlcnMgd2l0aCBjdXN0b20gZW5naW5lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJlZEJ5KGVuZ2luZTogc3RyaW5nKSB7XG4gIHJldHVybiBhcHBseShtZXRhZGF0YShSZW5kZXJpbmdFbmdpbmUua2V5KFVJS2V5cy5SRU5ERVJFRF9CWSksIGVuZ2luZSkpO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWNvcmF0b3IgdGhhdCB0YWdzIGEgbW9kZWwgYXMgYSBsaXN0IGl0ZW0gZm9yIFVJIHJlbmRlcmluZ1xuICogQHN1bW1hcnkgU3BlY2lmaWVzIGhvdyBhIG1vZGVsIHNob3VsZCBiZSByZW5kZXJlZCB3aGVuIGRpc3BsYXllZCBpbiBhIGxpc3QgY29udGV4dFxuICogVGhpcyBkZWNvcmF0b3IgYXBwbGllcyBtZXRhZGF0YSB0byB0aGUgY2xhc3MgdGhhdCBlbmFibGVzIGl0IHRvIGJlIHJlbmRlcmVkIGFzIGEgbGlzdCBpdGVtXG4gKiBieSB0aGUgVUkgcmVuZGVyaW5nIGVuZ2luZS4gVGhlIG1vZGVsIHdpbGwgYmUgcmVuZGVyZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHRhZyBhbmQgcHJvcGVydGllc1xuICogd2hlbiBpdCBhcHBlYXJzIGluIGEgbGlzdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3RhZ10gVGhlIEhUTUwgdGFnIHRvIHVzZSB3aGVuIHJlbmRlcmluZyB0aGlzIG1vZGVsIGFzIGEgbGlzdCBpdGVtIChkZWZhdWx0cyB0byBjbGFzcyBuYW1lKVxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbcHJvcHNdIEFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBwYXNzIHRvIHRoZSByZW5kZXJlZCBsaXN0IGl0ZW0gZWxlbWVudFxuICogQHJldHVybiB7RnVuY3Rpb259IEEgY2xhc3MgZGVjb3JhdG9yIGZ1bmN0aW9uXG4gKlxuICogQGZ1bmN0aW9uIHVpbGlzdGl0ZW1cbiAqIEBjYXRlZ29yeSBDbGFzcyBEZWNvcmF0b3JzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggZGVmYXVsdCB0YWcgKGNsYXNzIG5hbWUpXG4gKiBAdWltb2RlbCgpXG4gKiBAdWlsaXN0aXRlbSgpXG4gKiBjbGFzcyBUb2RvSXRlbSBleHRlbmRzIE1vZGVsIHtcbiAqICAgQGF0dHJpYnV0ZSgpXG4gKiAgIHRpdGxlOiBzdHJpbmc7XG4gKlxuICogICBAYXR0cmlidXRlKClcbiAqICAgY29tcGxldGVkOiBib29sZWFuO1xuICogfVxuICpcbiAqIC8vIFVzYWdlIHdpdGggY3VzdG9tIHRhZyBhbmQgcHJvcGVydGllc1xuICogQHVpbW9kZWwoKVxuICogQHVpbGlzdGl0ZW0oJ2xpJywgeyBjbGFzczogJ2xpc3QtZ3JvdXAtaXRlbScgfSlcbiAqIGNsYXNzIExpc3RJdGVtIGV4dGVuZHMgTW9kZWwge1xuICogICBAYXR0cmlidXRlKClcbiAqICAgdGV4dDogc3RyaW5nO1xuICogfVxuICpcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgU3lzdGVtXG4gKiAgIHBhcnRpY2lwYW50IHVpbGlzdGl0ZW1cbiAqICAgcGFydGljaXBhbnQgTW9kZWxcbiAqICAgcGFydGljaXBhbnQgUmVuZGVyaW5nRW5naW5lXG4gKiAgIFN5c3RlbS0+PnVpbGlzdGl0ZW06IGFwcGx5IHRvIE1vZGVsXG4gKiAgIHVpbGlzdGl0ZW0tPj5Nb2RlbDogYWRkcyBsaXN0IGl0ZW0gbWV0YWRhdGFcbiAqICAgTW9kZWwtPj5SZW5kZXJpbmdFbmdpbmU6IHVzZXMgbGlzdCBpdGVtIG1ldGFkYXRhIHdoZW4gaW4gbGlzdCBjb250ZXh0XG4gKiAgIFJlbmRlcmluZ0VuZ2luZS0+PlN5c3RlbTogcmVuZGVycyB3aXRoIGxpc3QgaXRlbSBzdHlsaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1aWxpc3RpdGVtKHRhZz86IHN0cmluZywgcHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcmV0dXJuIChvcmlnaW5hbDogYW55LCBwcm9wZXJ0eUtleT86IGFueSkgPT4ge1xuICAgIGNvbnN0IG1ldGE6IFVJTGlzdEl0ZW1Nb2RlbE1ldGFkYXRhID0ge1xuICAgICAgaXRlbToge1xuICAgICAgICB0YWc6IHRhZyB8fCBvcmlnaW5hbC5uYW1lLFxuICAgICAgICBwcm9wczogcHJvcHMsXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIG1ldGFkYXRhKFJlbmRlcmluZ0VuZ2luZS5rZXkoVUlLZXlzLlVJTElTVElURU0pLCBtZXRhKShvcmlnaW5hbCk7XG4gIH07XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHVpaGFuZGxlcnMocHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gIHJldHVybiAob3JpZ2luYWw6IGFueSkgPT4ge1xuICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICBoYW5kbGVyczogcHJvcHNcbiAgICB9O1xuICAgIHJldHVybiBtZXRhZGF0YShSZW5kZXJpbmdFbmdpbmUua2V5KFVJS2V5cy5IQU5ETEVSUyksIG1ldGEpKG9yaWdpbmFsKTtcbiAgfTtcbn0iXX0=
|
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @description Decorator that tags a class as a UI model
|
|
3
|
+
* @summary Adds rendering capabilities to a model class by providing a render method
|
|
4
|
+
* This decorator applies metadata to the class that enables it to be rendered by the UI rendering engine.
|
|
5
|
+
* The model will be rendered with the specified tag and properties.
|
|
3
6
|
*
|
|
4
|
-
* @param {string} [tag]
|
|
5
|
-
* @param {
|
|
6
|
-
* @
|
|
7
|
+
* @param {string} [tag] The HTML tag to use when rendering this model (defaults to class name)
|
|
8
|
+
* @param {Record<string, any>} [props] Additional properties to pass to the rendered element
|
|
9
|
+
* @return {Function} A class decorator function
|
|
7
10
|
*
|
|
8
|
-
* @
|
|
11
|
+
* @function uimodel
|
|
12
|
+
* @category Class Decorators
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // Basic usage with default tag (class name)
|
|
16
|
+
* @uimodel()
|
|
17
|
+
* class UserProfile extends Model {
|
|
18
|
+
* @attribute()
|
|
19
|
+
* name: string;
|
|
20
|
+
*
|
|
21
|
+
* @attribute()
|
|
22
|
+
* email: string;
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
25
|
+
* // Usage with custom tag and properties
|
|
26
|
+
* @uimodel('div', { class: 'user-card' })
|
|
27
|
+
* class UserCard extends Model {
|
|
28
|
+
* @attribute()
|
|
29
|
+
* username: string;
|
|
30
|
+
* }
|
|
9
31
|
*
|
|
10
32
|
* @mermaid
|
|
11
33
|
* sequenceDiagram
|
|
@@ -18,28 +40,85 @@
|
|
|
18
40
|
* constructor->>uimodel: returns instance
|
|
19
41
|
* uimodel->>instance: adds the render method
|
|
20
42
|
* uimodel->>System: returns UIModel instance
|
|
21
|
-
*
|
|
22
|
-
* @category Decorators
|
|
23
43
|
*/
|
|
24
44
|
export declare function uimodel(tag?: string, props?: Record<string, any>): (original: any, propertyKey?: any) => void;
|
|
45
|
+
/**
|
|
46
|
+
* @description Decorator that specifies which rendering engine to use for a model
|
|
47
|
+
* @summary Associates a model with a specific rendering engine implementation
|
|
48
|
+
* This decorator allows you to override the default rendering engine for a specific model class,
|
|
49
|
+
* enabling different rendering strategies for different models.
|
|
50
|
+
*
|
|
51
|
+
* @param {string} engine The name of the rendering engine to use
|
|
52
|
+
* @return {Function} A class decorator function
|
|
53
|
+
*
|
|
54
|
+
* @function renderedBy
|
|
55
|
+
* @category Class Decorators
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* // Specify a custom rendering engine for a model
|
|
59
|
+
* @uimodel()
|
|
60
|
+
* @renderedBy('react')
|
|
61
|
+
* class ReactComponent extends Model {
|
|
62
|
+
* @attribute()
|
|
63
|
+
* title: string;
|
|
64
|
+
* }
|
|
65
|
+
*
|
|
66
|
+
* @mermaid
|
|
67
|
+
* sequenceDiagram
|
|
68
|
+
* participant System
|
|
69
|
+
* participant renderedBy
|
|
70
|
+
* participant Model
|
|
71
|
+
* participant RenderingEngine
|
|
72
|
+
* System->>renderedBy: apply to Model
|
|
73
|
+
* renderedBy->>Model: adds engine metadata
|
|
74
|
+
* Model->>RenderingEngine: uses specified engine
|
|
75
|
+
* RenderingEngine->>System: renders with custom engine
|
|
76
|
+
*/
|
|
25
77
|
export declare function renderedBy(engine: string): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
26
78
|
/**
|
|
27
|
-
*
|
|
79
|
+
* @description Decorator that tags a model as a list item for UI rendering
|
|
80
|
+
* @summary Specifies how a model should be rendered when displayed in a list context
|
|
81
|
+
* This decorator applies metadata to the class that enables it to be rendered as a list item
|
|
82
|
+
* by the UI rendering engine. The model will be rendered with the specified tag and properties
|
|
83
|
+
* when it appears in a list.
|
|
28
84
|
*
|
|
29
|
-
* @param {string} [tag]
|
|
30
|
-
* @param {
|
|
85
|
+
* @param {string} [tag] The HTML tag to use when rendering this model as a list item (defaults to class name)
|
|
86
|
+
* @param {Record<string, any>} [props] Additional properties to pass to the rendered list item element
|
|
87
|
+
* @return {Function} A class decorator function
|
|
31
88
|
*
|
|
32
|
-
* @
|
|
89
|
+
* @function uilistitem
|
|
90
|
+
* @category Class Decorators
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* // Basic usage with default tag (class name)
|
|
94
|
+
* @uimodel()
|
|
95
|
+
* @uilistitem()
|
|
96
|
+
* class TodoItem extends Model {
|
|
97
|
+
* @attribute()
|
|
98
|
+
* title: string;
|
|
99
|
+
*
|
|
100
|
+
* @attribute()
|
|
101
|
+
* completed: boolean;
|
|
102
|
+
* }
|
|
103
|
+
*
|
|
104
|
+
* // Usage with custom tag and properties
|
|
105
|
+
* @uimodel()
|
|
106
|
+
* @uilistitem('li', { class: 'list-group-item' })
|
|
107
|
+
* class ListItem extends Model {
|
|
108
|
+
* @attribute()
|
|
109
|
+
* text: string;
|
|
110
|
+
* }
|
|
33
111
|
*
|
|
34
112
|
* @mermaid
|
|
35
113
|
* sequenceDiagram
|
|
36
114
|
* participant System
|
|
37
115
|
* participant uilistitem
|
|
38
116
|
* participant Model
|
|
117
|
+
* participant RenderingEngine
|
|
39
118
|
* System->>uilistitem: apply to Model
|
|
40
119
|
* uilistitem->>Model: adds list item metadata
|
|
41
|
-
* Model->>
|
|
42
|
-
*
|
|
43
|
-
* @category Decorators
|
|
120
|
+
* Model->>RenderingEngine: uses list item metadata when in list context
|
|
121
|
+
* RenderingEngine->>System: renders with list item styling
|
|
44
122
|
*/
|
|
45
123
|
export declare function uilistitem(tag?: string, props?: Record<string, any>): (original: any, propertyKey?: any) => void;
|
|
124
|
+
export declare function uihandlers(props?: Record<string, any>): (original: any) => void;
|
package/lib/model/index.cjs
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @namespace model
|
|
4
|
-
* @memberOf ui-decorators
|
|
5
|
-
*/
|
|
6
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
3
|
if (k2 === undefined) k2 = k;
|
|
8
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -22,4 +18,4 @@ require("./model.cjs");
|
|
|
22
18
|
__exportStar(require("./decorators.cjs"), exports);
|
|
23
19
|
__exportStar(require("./overrides.cjs"), exports);
|
|
24
20
|
__exportStar(require("./Renderable.cjs"), exports);
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVCQUFpQjtBQUVqQixtREFBNkI7QUFDN0Isa0RBQTRCO0FBQzVCLG1EQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcIi4vbW9kZWxcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vb3ZlcnJpZGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9SZW5kZXJhYmxlXCI7XG4iXX0=
|