@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/constants.js
CHANGED
|
@@ -1,7 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Constants and enums for UI rendering and validation
|
|
3
|
+
* @summary Defines keys, mappings, and HTML5 input types for UI components
|
|
4
|
+
* This module provides constants used throughout the UI decorators library for
|
|
5
|
+
* rendering, validation, and HTML element generation.
|
|
6
|
+
* @module ui/constants
|
|
7
|
+
* @memberOf module:ui-decorators
|
|
8
|
+
*/
|
|
1
9
|
import { DateValidator, DiffValidator, EmailValidator, EqualsValidator, GreaterThanOrEqualValidator, GreaterThanValidator, LessThanOrEqualValidator, LessThanValidator, MaxLengthValidator, MaxValidator, MinLengthValidator, MinValidator, ModelKeys, PasswordValidator, PatternValidator, RequiredValidator, StepValidator, URLValidator, ValidationKeys, } from "@decaf-ts/decorator-validation";
|
|
2
10
|
/**
|
|
3
|
-
* @
|
|
4
|
-
* @
|
|
11
|
+
* @description Key constants used for UI metadata and rendering
|
|
12
|
+
* @summary Collection of string constants used as keys for UI-related metadata
|
|
13
|
+
* These keys are used throughout the library to store and retrieve metadata related to
|
|
14
|
+
* UI models, elements, properties, and validation rules.
|
|
15
|
+
*
|
|
16
|
+
* @typedef {Object} UIKeysType
|
|
17
|
+
* @property {string} REFLECT - Base reflection key for UI metadata
|
|
18
|
+
* @property {string} UIMODEL - Key for UI model metadata
|
|
19
|
+
* @property {string} RENDERED_BY - Key for specifying rendering engine
|
|
20
|
+
* @property {string} ELEMENT - Key for element metadata
|
|
21
|
+
* @property {string} PROP - Key for property metadata
|
|
22
|
+
* @property {string} NAME - Key for name attribute
|
|
23
|
+
* @property {string} NAME_PREFIX - Prefix for input names
|
|
24
|
+
* @property {string} CUSTOM_PROPS - Key for custom validation properties
|
|
25
|
+
* @property {string} UILISTITEM - Key for list item metadata
|
|
26
|
+
* @property {string} UILISTPROP - Key for list property metadata
|
|
27
|
+
* @property {string} TYPE - Key for type metadata
|
|
28
|
+
* @property {string} SUB_TYPE - Key for subtype metadata
|
|
29
|
+
* @property {string} HIDDEN - Key for hidden attribute
|
|
30
|
+
* @property {string} FORMAT - Key for format metadata
|
|
31
|
+
* @property {string} READ_ONLY - Key for readonly attribute
|
|
32
|
+
* @property {string} REQUIRED - Key for required validation
|
|
33
|
+
* @property {string} MIN - Key for minimum value validation
|
|
34
|
+
* @property {string} MIN_LENGTH - Key for minimum length validation
|
|
35
|
+
* @property {string} MAX - Key for maximum value validation
|
|
36
|
+
* @property {string} MAX_LENGTH - Key for maximum length validation
|
|
37
|
+
* @property {string} PATTERN - Key for pattern validation
|
|
38
|
+
* @property {string} URL - Key for URL validation
|
|
39
|
+
* @property {string} STEP - Key for step validation
|
|
40
|
+
* @property {string} DATE - Key for date validation
|
|
41
|
+
* @property {string} EMAIL - Key for email validation
|
|
42
|
+
* @property {string} PASSWORD - Key for password validation
|
|
43
|
+
* @property {string} EQUALS - Key for equality validation
|
|
44
|
+
* @property {string} DIFF - Key for difference validation
|
|
45
|
+
* @property {string} LESS_THAN - Key for less than validation
|
|
46
|
+
* @property {string} LESS_THAN_OR_EQUAL - Key for less than or equal validation
|
|
47
|
+
* @property {string} GREATER_THAN - Key for greater than validation
|
|
48
|
+
* @property {string} GREATER_THAN_OR_EQUAL - Key for greater than or equal validation
|
|
49
|
+
*
|
|
50
|
+
* @const UIKeys
|
|
51
|
+
* @type {UIKeysType}
|
|
52
|
+
* @readonly
|
|
53
|
+
* @memberOf module:ui-decorators
|
|
5
54
|
*/
|
|
6
55
|
export const UIKeys = {
|
|
7
56
|
REFLECT: `${ModelKeys.REFLECT}.ui.`,
|
|
@@ -9,11 +58,13 @@ export const UIKeys = {
|
|
|
9
58
|
RENDERED_BY: "rendered-by",
|
|
10
59
|
ELEMENT: "element",
|
|
11
60
|
PROP: "prop",
|
|
61
|
+
CHILD: "child",
|
|
12
62
|
NAME: "name",
|
|
13
63
|
NAME_PREFIX: "input-",
|
|
14
64
|
CUSTOM_PROPS: "customValidationProps",
|
|
15
65
|
UILISTITEM: "uilistitem",
|
|
16
66
|
UILISTPROP: "listprop",
|
|
67
|
+
HANDLERS: "handlers",
|
|
17
68
|
TYPE: "type",
|
|
18
69
|
SUB_TYPE: "subtype",
|
|
19
70
|
HIDDEN: "hidden",
|
|
@@ -37,6 +88,23 @@ export const UIKeys = {
|
|
|
37
88
|
GREATER_THAN: ValidationKeys.GREATER_THAN,
|
|
38
89
|
GREATER_THAN_OR_EQUAL: ValidationKeys.GREATER_THAN_OR_EQUAL,
|
|
39
90
|
};
|
|
91
|
+
/**
|
|
92
|
+
* @description Mapping of input types to their corresponding validators
|
|
93
|
+
* @summary Maps special input types to their validator classes
|
|
94
|
+
* This constant maps input types like email, URL, date, and password to their
|
|
95
|
+
* corresponding validator classes from the decorator-validation library.
|
|
96
|
+
*
|
|
97
|
+
* @typedef {Object.<string, Constructor<Validator>>} ValidatableByTypeMap
|
|
98
|
+
* @property {Constructor<EmailValidator>} email - Validator for email inputs
|
|
99
|
+
* @property {Constructor<URLValidator>} url - Validator for URL inputs
|
|
100
|
+
* @property {Constructor<DateValidator>} date - Validator for date inputs
|
|
101
|
+
* @property {Constructor<PasswordValidator>} password - Validator for password inputs
|
|
102
|
+
*
|
|
103
|
+
* @const ValidatableByType
|
|
104
|
+
* @type {ValidatableByTypeMap}
|
|
105
|
+
* @readonly
|
|
106
|
+
* @memberOf module:ui-decorators
|
|
107
|
+
*/
|
|
40
108
|
export const ValidatableByType = {
|
|
41
109
|
[UIKeys.EMAIL]: EmailValidator,
|
|
42
110
|
[UIKeys.URL]: URLValidator,
|
|
@@ -44,9 +112,30 @@ export const ValidatableByType = {
|
|
|
44
112
|
[UIKeys.PASSWORD]: PasswordValidator,
|
|
45
113
|
};
|
|
46
114
|
/**
|
|
47
|
-
* @
|
|
115
|
+
* @description Mapping of validation attributes to their corresponding validators
|
|
116
|
+
* @summary Maps HTML validation attributes to their validator classes
|
|
117
|
+
* This constant maps HTML validation attributes like required, min, max, pattern, etc.
|
|
118
|
+
* to their corresponding validator classes from the decorator-validation library.
|
|
48
119
|
*
|
|
49
|
-
* @
|
|
120
|
+
* @typedef {Object.<string, Constructor<Validator>>} ValidatableByAttributeMap
|
|
121
|
+
* @property {Constructor<RequiredValidator>} required - Validator for required fields
|
|
122
|
+
* @property {Constructor<MinValidator>} min - Validator for minimum value
|
|
123
|
+
* @property {Constructor<MaxValidator>} max - Validator for maximum value
|
|
124
|
+
* @property {Constructor<StepValidator>} step - Validator for step value
|
|
125
|
+
* @property {Constructor<MinLengthValidator>} minlength - Validator for minimum length
|
|
126
|
+
* @property {Constructor<MaxLengthValidator>} maxlength - Validator for maximum length
|
|
127
|
+
* @property {Constructor<PatternValidator>} pattern - Validator for regex pattern
|
|
128
|
+
* @property {Constructor<EqualsValidator>} equals - Validator for equality
|
|
129
|
+
* @property {Constructor<DiffValidator>} diff - Validator for difference
|
|
130
|
+
* @property {Constructor<LessThanValidator>} lessthan - Validator for less than comparison
|
|
131
|
+
* @property {Constructor<LessThanOrEqualValidator>} lessthanorequal - Validator for less than or equal comparison
|
|
132
|
+
* @property {Constructor<GreaterThanValidator>} greaterthan - Validator for greater than comparison
|
|
133
|
+
* @property {Constructor<GreaterThanOrEqualValidator>} greaterthanorequal - Validator for greater than or equal comparison
|
|
134
|
+
*
|
|
135
|
+
* @const ValidatableByAttribute
|
|
136
|
+
* @type {ValidatableByAttributeMap}
|
|
137
|
+
* @readonly
|
|
138
|
+
* @memberOf module:ui-decorators
|
|
50
139
|
*/
|
|
51
140
|
export const ValidatableByAttribute = {
|
|
52
141
|
[UIKeys.REQUIRED]: RequiredValidator,
|
|
@@ -63,7 +152,52 @@ export const ValidatableByAttribute = {
|
|
|
63
152
|
[UIKeys.GREATER_THAN]: GreaterThanValidator,
|
|
64
153
|
[UIKeys.GREATER_THAN_OR_EQUAL]: GreaterThanOrEqualValidator,
|
|
65
154
|
};
|
|
155
|
+
/**
|
|
156
|
+
* @description Standard date format string for HTML5 date inputs
|
|
157
|
+
* @summary Format string for HTML5 date inputs (yyyy-MM-dd)
|
|
158
|
+
* This constant defines the standard date format string used for HTML5 date inputs.
|
|
159
|
+
*
|
|
160
|
+
* @const HTML5DateFormat
|
|
161
|
+
* @type {string}
|
|
162
|
+
* @readonly
|
|
163
|
+
* @memberOf module:ui-decorators
|
|
164
|
+
*/
|
|
66
165
|
export const HTML5DateFormat = "yyyy-MM-dd";
|
|
166
|
+
/**
|
|
167
|
+
* @description Collection of HTML5 input type values
|
|
168
|
+
* @summary Maps input type constants to their HTML attribute values
|
|
169
|
+
* This constant provides a mapping of input type constants to their corresponding
|
|
170
|
+
* HTML attribute values for use in form elements.
|
|
171
|
+
*
|
|
172
|
+
* @typedef {Object} HTML5InputTypesMap
|
|
173
|
+
* @property {string} BUTTON - Button input type
|
|
174
|
+
* @property {string} CHECKBOX - Checkbox input type
|
|
175
|
+
* @property {string} COLOR - Color picker input type
|
|
176
|
+
* @property {string} DATE - Date picker input type
|
|
177
|
+
* @property {string} DATETIME_LOCAL - Local datetime picker input type
|
|
178
|
+
* @property {string} EMAIL - Email input type with validation
|
|
179
|
+
* @property {string} FILE - File upload input type
|
|
180
|
+
* @property {string} HIDDEN - Hidden input type
|
|
181
|
+
* @property {string} IMAGE - Image input type
|
|
182
|
+
* @property {string} MONTH - Month picker input type
|
|
183
|
+
* @property {string} NUMBER - Numeric input type
|
|
184
|
+
* @property {string} PASSWORD - Password input type with masked text
|
|
185
|
+
* @property {string} RADIO - Radio button input type
|
|
186
|
+
* @property {string} RANGE - Range slider input type
|
|
187
|
+
* @property {string} RESET - Form reset button input type
|
|
188
|
+
* @property {string} SEARCH - Search input type
|
|
189
|
+
* @property {string} SUBMIT - Form submit button input type
|
|
190
|
+
* @property {string} TEL - Telephone number input type
|
|
191
|
+
* @property {string} TEXT - Basic text input type
|
|
192
|
+
* @property {string} TIME - Time picker input type
|
|
193
|
+
* @property {string} URL - URL input type with validation
|
|
194
|
+
* @property {string} WEEK - Week picker input type
|
|
195
|
+
*
|
|
196
|
+
* @const HTML5InputTypes
|
|
197
|
+
* @type {HTML5InputTypesMap}
|
|
198
|
+
* @readonly
|
|
199
|
+
* @memberOf module:ui-decorators
|
|
200
|
+
*/
|
|
67
201
|
export const HTML5InputTypes = {
|
|
68
202
|
BUTTON: "button",
|
|
69
203
|
CHECKBOX: "checkbox",
|
|
@@ -88,8 +222,19 @@ export const HTML5InputTypes = {
|
|
|
88
222
|
URL: UIKeys.URL,
|
|
89
223
|
WEEK: "week",
|
|
90
224
|
};
|
|
225
|
+
/**
|
|
226
|
+
* @description Array of HTML5 input types that use checkboxes
|
|
227
|
+
* @summary List of input types that represent checkable controls
|
|
228
|
+
* This constant defines an array of HTML5 input types that represent
|
|
229
|
+
* checkable controls (checkbox and radio).
|
|
230
|
+
*
|
|
231
|
+
* @const HTML5CheckTypes
|
|
232
|
+
* @type {string[]}
|
|
233
|
+
* @readonly
|
|
234
|
+
* @memberOf module:ui-decorators
|
|
235
|
+
*/
|
|
91
236
|
export const HTML5CheckTypes = [
|
|
92
237
|
HTML5InputTypes.CHECKBOX,
|
|
93
238
|
HTML5InputTypes.RADIO,
|
|
94
239
|
];
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VpL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsYUFBYSxFQUNiLGFBQWEsRUFDYixjQUFjLEVBQ2QsZUFBZSxFQUNmLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1osY0FBYyxHQUVmLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ3BCLE9BQU8sRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLE1BQU07SUFDbkMsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLFdBQVcsRUFBRSxRQUFRO0lBQ3JCLFlBQVksRUFBRSx1QkFBdUI7SUFFckMsVUFBVSxFQUFFLFlBQVk7SUFDeEIsVUFBVSxFQUFFLFVBQVU7SUFFdEIsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsU0FBUztJQUVuQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUVoQixTQUFTLEVBQUUsVUFBVTtJQUNyQixRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVE7SUFDakMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxHQUFHO0lBQ3ZCLFVBQVUsRUFBRSxjQUFjLENBQUMsVUFBVTtJQUNyQyxHQUFHLEVBQUUsY0FBYyxDQUFDLEdBQUc7SUFDdkIsVUFBVSxFQUFFLGNBQWMsQ0FBQyxVQUFVO0lB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QU0sZUFBZSxHQUFHO0lBQzdCLGVBQWUsQ0FBQyxRQUFRO0lBQ3hCLGVBQWUsQ0FBQyxLQUFLO0NBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25zdHJ1Y3RvcixcbiAgRGF0ZVZhbGlkYXRvcixcbiAgRGlmZlZhbGlkYXRvcixcbiAgRW1haWxWYWxpZGF0b3IsXG4gIEVxdWFsc1ZhbGlkYXRvcixcbiAgR3JlYXRlclRoYW5PckVxdWFsVmFsaWRhdG9yLFxuICBHcmVhdGVyVGhhblZhbGlkYXRvcixcbiAgTGVzc1RoYW5PckVxdWFsVmFsaWRhdG9yLFxuICBMZXNzVGhhblZhbGlkYXRvcixcbiAgTWF4TGVuZ3RoVmFsaWRhdG9yLFxuICBNYXhWYWxpZGF0b3IsXG4gIE1pbkxlbmd0aFZhbGlkYXRvcixcbiAgTWluVmFsaWRhdG9yLFxuICBNb2RlbEtleXMsXG4gIFBhc3N3b3JkVmFsaWRhdG9yLFxuICBQYXR0ZXJuVmFsaWRhdG9yLFxuICBSZXF1aXJlZFZhbGlkYXRvcixcbiAgU3RlcFZhbGlkYXRvcixcbiAgVVJMVmFsaWRhdG9yLFxuICBWYWxpZGF0aW9uS2V5cyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbi8qKlxuICogQGVudW0gVUlLZXlzXG4gKiBAY2F0ZWdvcnkgQ29uc3RhbnRzXG4gKi9cbmV4cG9ydCBjb25zdCBVSUtleXMgPSB7XG4gIFJFRkxFQ1Q6IGAke01vZGVsS2V5cy5SRUZMRUNUfS51aS5gLFxuICBVSU1PREVMOiBcInVpbW9kZWxcIixcbiAgUkVOREVSRURfQlk6IFwicmVuZGVyZWQtYnlcIixcbiAgRUxFTUVOVDogXCJlbGVtZW50XCIsXG4gIFBST1A6IFwicHJvcFwiLFxuICBOQU1FOiBcIm5hbWVcIixcbiAgTkFNRV9QUkVGSVg6IFwiaW5wdXQtXCIsXG4gIENVU1RPTV9QUk9QUzogXCJjdXN0b21WYWxpZGF0aW9uUHJvcHNcIixcblxuICBVSUxJU1RJVEVNOiBcInVpbGlzdGl0ZW1cIixcbiAgVUlMSVNUUFJPUDogXCJsaXN0cHJvcFwiLFxuXG4gIFRZUEU6IFwidHlwZVwiLFxuICBTVUJfVFlQRTogXCJzdWJ0eXBlXCIsXG5cbiAgSElEREVOOiBcImhpZGRlblwiLFxuICBGT1JNQVQ6IFwiZm9ybWF0XCIsXG5cbiAgUkVBRF9PTkxZOiBcInJlYWRvbmx5XCIsXG4gIFJFUVVJUkVEOiBWYWxpZGF0aW9uS2V5cy5SRVFVSVJFRCxcbiAgTUlOOiBWYWxpZGF0aW9uS2V5cy5NSU4sXG4gIE1JTl9MRU5HVEg6IFZhbGlkYXRpb25LZXlzLk1JTl9MRU5HVEgsXG4gIE1BWDogVmFsaWRhdGlvbktleXMuTUFYLFxuICBNQVhfTEVOR1RIOiBWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RILFxuICBQQVRURVJOOiBWYWxpZGF0aW9uS2V5cy5QQVRURVJOLFxuICBVUkw6IFZhbGlkYXRpb25LZXlzLlVSTCxcbiAgU1RFUDogVmFsaWRhdGlvbktleXMuU1RFUCxcbiAgREFURTogVmFsaWRhdGlvbktleXMuREFURSxcbiAgRU1BSUw6IFZhbGlkYXRpb25LZXlzLkVNQUlMLFxuICBQQVNTV09SRDogVmFsaWRhdGlvbktleXMuUEFTU1dPUkQsXG4gIEVRVUFMUzogVmFsaWRhdGlvbktleXMuRVFVQUxTLFxuICBESUZGOiBWYWxpZGF0aW9uS2V5cy5ESUZGLFxuICBMRVNTX1RIQU46IFZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTixcbiAgTEVTU19USEFOX09SX0VRVUFMOiBWYWxpZGF0aW9uS2V5cy5MRVNTX1RIQU5fT1JfRVFVQUwsXG4gIEdSRUFURVJfVEhBTjogVmFsaWRhdGlvbktleXMuR1JFQVRFUl9USEFOLFxuICBHUkVBVEVSX1RIQU5fT1JfRVFVQUw6IFZhbGlkYXRpb25LZXlzLkdSRUFURVJfVEhBTl9PUl9FUVVBTCxcbn07XG5cbmV4cG9ydCBjb25zdCBWYWxpZGF0YWJsZUJ5VHlwZTogUmVjb3JkPHN0cmluZywgQ29uc3RydWN0b3I8VmFsaWRhdG9yPj4gPSB7XG4gIFtVSUtleXMuRU1BSUxdOiBFbWFpbFZhbGlkYXRvcixcbiAgW1VJS2V5cy5VUkxdOiBVUkxWYWxpZGF0b3IsXG4gIFtVSUtleXMuREFURV06IERhdGVWYWxpZGF0b3IsXG4gIFtVSUtleXMuUEFTU1dPUkRdOiBQYXNzd29yZFZhbGlkYXRvcixcbn07XG5cbi8qKlxuICogQGNvbnN0YW50IFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGVcbiAqXG4gKiBAbWVtYmVyT2YgdWktZGVjb3JhdG9ycy13ZWIudWlcbiAqL1xuZXhwb3J0IGNvbnN0IFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGU6IFJlY29yZDxzdHJpbmcsIENvbnN0cnVjdG9yPFZhbGlkYXRvcj4+ID0ge1xuICBbVUlLZXlzLlJFUVVJUkVEXTogUmVxdWlyZWRWYWxpZGF0b3IsXG4gIFtVSUtleXMuTUlOXTogTWluVmFsaWRhdG9yLFxuICBbVUlLZXlzLk1BWF06IE1heFZhbGlkYXRvcixcbiAgW1VJS2V5cy5TVEVQXTogU3RlcFZhbGlkYXRvcixcbiAgW1VJS2V5cy5NSU5fTEVOR1RIXTogTWluTGVuZ3RoVmFsaWRhdG9yLFxuICBbVUlLZXlzLk1BWF9MRU5HVEhdOiBNYXhMZW5ndGhWYWxpZGF0b3IsXG4gIFtVSUtleXMuUEFUVEVSTl06IFBhdHRlcm5WYWxpZGF0b3IsXG4gIFtVSUtleXMuRVFVQUxTXTogRXF1YWxzVmFsaWRhdG9yLFxuICBbVUlLZXlzLkRJRkZdOiBEaWZmVmFsaWRhdG9yLFxuICBbVUlLZXlzLkxFU1NfVEhBTl06IExlc3NUaGFuVmFsaWRhdG9yLFxuICBbVUlLZXlzLkxFU1NfVEhBTl9PUl9FUVVBTF06IExlc3NUaGFuT3JFcXVhbFZhbGlkYXRvcixcbiAgW1VJS2V5cy5HUkVBVEVSX1RIQU5dOiBHcmVhdGVyVGhhblZhbGlkYXRvcixcbiAgW1VJS2V5cy5HUkVBVEVSX1RIQU5fT1JfRVFVQUxdOiBHcmVhdGVyVGhhbk9yRXF1YWxWYWxpZGF0b3IsXG59O1xuXG5leHBvcnQgY29uc3QgSFRNTDVEYXRlRm9ybWF0ID0gXCJ5eXl5LU1NLWRkXCI7XG5cbmV4cG9ydCBjb25zdCBIVE1MNUlucHV0VHlwZXMgPSB7XG4gIEJVVFRPTjogXCJidXR0b25cIixcbiAgQ0hFQ0tCT1g6IFwiY2hlY2tib3hcIixcbiAgQ09MT1I6IFwiY29sb3JcIixcbiAgREFURTogVUlLZXlzLkRBVEUsXG4gIERBVEVUSU1FX0xPQ0FMOiBcImRhdGV0aW1lLWxvY2FsXCIsXG4gIEVNQUlMOiBVSUtleXMuRU1BSUwsXG4gIEZJTEU6IFwiZmlsZVwiLFxuICBISURERU46IFwiaGlkZGVuXCIsXG4gIElNQUdFOiBcImltYWdlXCIsXG4gIE1PTlRIOiBcIm1vbnRoXCIsXG4gIE5VTUJFUjogXCJudW1iZXJcIixcbiAgUEFTU1dPUkQ6IFVJS2V5cy5QQVNTV09SRCxcbiAgUkFESU86IFwicmFkaW9cIixcbiAgUkFOR0U6IFwicmFuZ2VcIixcbiAgUkVTRVQ6IFwicmVzZXRcIixcbiAgU0VBUkNIOiBcInNlYXJjaFwiLFxuICBTVUJNSVQ6IFwic3VibWl0XCIsXG4gIFRFTDogXCJ0ZWxcIixcbiAgVEVYVDogXCJ0ZXh0XCIsXG4gIFRJTUU6IFwidGltZVwiLFxuICBVUkw6IFVJS2V5cy5VUkwsXG4gIFdFRUs6IFwid2Vla1wiLFxufTtcblxuZXhwb3J0IGNvbnN0IEhUTUw1Q2hlY2tUeXBlcyA9IFtcbiAgSFRNTDVJbnB1dFR5cGVzLkNIRUNLQk9YLFxuICBIVE1MNUlucHV0VHlwZXMuUkFESU8sXG5dO1xuIl19
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VpL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUgsT0FBTyxFQUVMLGFBQWEsRUFDYixhQUFhLEVBQ2IsY0FBYyxFQUNkLGVBQWUsRUFDZiwyQkFBMkIsRUFDM0Isb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsWUFBWSxFQUNaLGNBQWMsR0FFZixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRDRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRztJQUNwQixPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxNQUFNO0lBQ25DLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLFdBQVcsRUFBRSxRQUFRO0lBQ3JCLFlBQVksRUFBRSx1QkFBdUI7SUFFckMsVUFBVSxFQUFFLFlBQVk7SUFDeEIsVUFBVSxFQUFFLFVBQVU7SUFDdEIsUUFBUSxFQUFFLFVBQVU7SUFFcEIsSUFBSSxFQUFFLE1BQU07SUFDWixRQUFRLEVBQUUsU0FBUztJQUVuQixNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUVoQixTQUFTLEVBQUUsVUFBVTtJQUNyQixRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVE7SUFDakMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxH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RUFBRSxPQUFPO0lBQ2QsS0FBSyxFQUFFLE9BQU87SUFDZCxNQUFNLEVBQUUsUUFBUTtJQUNoQixNQUFNLEVBQUUsUUFBUTtJQUNoQixHQUFHLEVBQUUsS0FBSztJQUNWLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7SUFDZixJQUFJLEVBQUUsTUFBTTtDQUNiLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLGVBQWUsQ0FBQyxRQUFRO0lBQ3hCLGVBQWUsQ0FBQyxLQUFLO0NBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBkZXNjcmlwdGlvbiBDb25zdGFudHMgYW5kIGVudW1zIGZvciBVSSByZW5kZXJpbmcgYW5kIHZhbGlkYXRpb25cbiAqIEBzdW1tYXJ5IERlZmluZXMga2V5cywgbWFwcGluZ3MsIGFuZCBIVE1MNSBpbnB1dCB0eXBlcyBmb3IgVUkgY29tcG9uZW50c1xuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgY29uc3RhbnRzIHVzZWQgdGhyb3VnaG91dCB0aGUgVUkgZGVjb3JhdG9ycyBsaWJyYXJ5IGZvclxuICogcmVuZGVyaW5nLCB2YWxpZGF0aW9uLCBhbmQgSFRNTCBlbGVtZW50IGdlbmVyYXRpb24uXG4gKiBAbW9kdWxlIHVpL2NvbnN0YW50c1xuICogQG1lbWJlck9mIG1vZHVsZTp1aS1kZWNvcmF0b3JzXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29uc3RydWN0b3IsXG4gIERhdGVWYWxpZGF0b3IsXG4gIERpZmZWYWxpZGF0b3IsXG4gIEVtYWlsVmFsaWRhdG9yLFxuICBFcXVhbHNWYWxpZGF0b3IsXG4gIEdyZWF0ZXJUaGFuT3JFcXVhbFZhbGlkYXRvcixcbiAgR3JlYXRlclRoYW5WYWxpZGF0b3IsXG4gIExlc3NUaGFuT3JFcXVhbFZhbGlkYXRvcixcbiAgTGVzc1RoYW5WYWxpZGF0b3IsXG4gIE1heExlbmd0aFZhbGlkYXRvcixcbiAgTWF4VmFsaWRhdG9yLFxuICBNaW5MZW5ndGhWYWxpZGF0b3IsXG4gIE1pblZhbGlkYXRvcixcbiAgTW9kZWxLZXlzLFxuICBQYXNzd29yZFZhbGlkYXRvcixcbiAgUGF0dGVyblZhbGlkYXRvcixcbiAgUmVxdWlyZWRWYWxpZGF0b3IsXG4gIFN0ZXBWYWxpZGF0b3IsXG4gIFVSTFZhbGlkYXRvcixcbiAgVmFsaWRhdGlvbktleXMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBLZXkgY29uc3RhbnRzIHVzZWQgZm9yIFVJIG1ldGFkYXRhIGFuZCByZW5kZXJpbmdcbiAqIEBzdW1tYXJ5IENvbGxlY3Rpb24gb2Ygc3RyaW5nIGNvbnN0YW50cyB1c2VkIGFzIGtleXMgZm9yIFVJLXJlbGF0ZWQgbWV0YWRhdGFcbiAqIFRoZXNlIGtleXMgYXJlIHVzZWQgdGhyb3VnaG91dCB0aGUgbGlicmFyeSB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEgcmVsYXRlZCB0b1xuICogVUkgbW9kZWxzLCBlbGVtZW50cywgcHJvcGVydGllcywgYW5kIHZhbGlkYXRpb24gcnVsZXMuXG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gVUlLZXlzVHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFRkxFQ1QgLSBCYXNlIHJlZmxlY3Rpb24ga2V5IGZvciBVSSBtZXRhZGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFVJTU9ERUwgLSBLZXkgZm9yIFVJIG1vZGVsIG1ldGFkYXRhXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVOREVSRURfQlkgLSBLZXkgZm9yIHNwZWNpZnlpbmcgcmVuZGVyaW5nIGVuZ2luZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEVMRU1FTlQgLSBLZXkgZm9yIGVsZW1lbnQgbWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQUk9QIC0gS2V5IGZvciBwcm9wZXJ0eSBtZXRhZGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE5BTUUgLSBLZXkgZm9yIG5hbWUgYXR0cmlidXRlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTkFNRV9QUkVGSVggLSBQcmVmaXggZm9yIGlucHV0IG5hbWVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQ1VTVE9NX1BST1BTIC0gS2V5IGZvciBjdXN0b20gdmFsaWRhdGlvbiBwcm9wZXJ0aWVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVUlMSVNUSVRFTSAtIEtleSBmb3IgbGlzdCBpdGVtIG1ldGFkYXRhXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVUlMSVNUUFJPUCAtIEtleSBmb3IgbGlzdCBwcm9wZXJ0eSBtZXRhZGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFRZUEUgLSBLZXkgZm9yIHR5cGUgbWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBTVUJfVFlQRSAtIEtleSBmb3Igc3VidHlwZSBtZXRhZGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEhJRERFTiAtIEtleSBmb3IgaGlkZGVuIGF0dHJpYnV0ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEZPUk1BVCAtIEtleSBmb3IgZm9ybWF0IG1ldGFkYXRhXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVBRF9PTkxZIC0gS2V5IGZvciByZWFkb25seSBhdHRyaWJ1dGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRVFVSVJFRCAtIEtleSBmb3IgcmVxdWlyZWQgdmFsaWRhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1JTiAtIEtleSBmb3IgbWluaW11bSB2YWx1ZSB2YWxpZGF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUlOX0xFTkdUSCAtIEtleSBmb3IgbWluaW11bSBsZW5ndGggdmFsaWRhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BWCAtIEtleSBmb3IgbWF4aW11bSB2YWx1ZSB2YWxpZGF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUFYX0xFTkdUSCAtIEtleSBmb3IgbWF4aW11bSBsZW5ndGggdmFsaWRhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBVFRFUk4gLSBLZXkgZm9yIHBhdHRlcm4gdmFsaWRhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFVSTCAtIEtleSBmb3IgVVJMIHZhbGlkYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBTVEVQIC0gS2V5IGZvciBzdGVwIHZhbGlkYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBEQVRFIC0gS2V5IGZvciBkYXRlIHZhbGlkYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBFTUFJTCAtIEtleSBmb3IgZW1haWwgdmFsaWRhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBU1NXT1JEIC0gS2V5IGZvciBwYXNzd29yZCB2YWxpZGF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRVFVQUxTIC0gS2V5IGZvciBlcXVhbGl0eSB2YWxpZGF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRElGRiAtIEtleSBmb3IgZGlmZmVyZW5jZSB2YWxpZGF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTEVTU19USEFOIC0gS2V5IGZvciBsZXNzIHRoYW4gdmFsaWRhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IExFU1NfVEhBTl9PUl9FUVVBTCAtIEtleSBmb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHZhbGlkYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBHUkVBVEVSX1RIQU4gLSBLZXkgZm9yIGdyZWF0ZXIgdGhhbiB2YWxpZGF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gR1JFQVRFUl9USEFOX09SX0VRVUFMIC0gS2V5IGZvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdmFsaWRhdGlvblxuICpcbiAqIEBjb25zdCBVSUtleXNcbiAqIEB0eXBlIHtVSUtleXNUeXBlfVxuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFVJS2V5cyA9IHtcbiAgUkVGTEVDVDogYCR7TW9kZWxLZXlzLlJFRkxFQ1R9LnVpLmAsXG4gIFVJTU9ERUw6IFwidWltb2RlbFwiLFxuICBSRU5ERVJFRF9CWTogXCJyZW5kZXJlZC1ieVwiLFxuICBFTEVNRU5UOiBcImVsZW1lbnRcIixcbiAgUFJPUDogXCJwcm9wXCIsXG4gIENISUxEOiBcImNoaWxkXCIsXG4gIE5BTUU6IFwibmFtZVwiLFxuICBOQU1FX1BSRUZJWDogXCJpbnB1dC1cIixcbiAgQ1VTVE9NX1BST1BTOiBcImN1c3RvbVZhbGlkYXRpb25Qcm9wc1wiLFxuXG4gIFVJTElTVElURU06IFwidWlsaXN0aXRlbVwiLFxuICBVSUxJU1RQUk9QOiBcImxpc3Rwcm9wXCIsXG4gIEhBTkRMRVJTOiBcImhhbmRsZXJzXCIsXG5cbiAgVFlQRTogXCJ0eXBlXCIsXG4gIFNVQl9UWVBFOiBcInN1YnR5cGVcIixcblxuICBISURERU46IFwiaGlkZGVuXCIsXG4gIEZPUk1BVDogXCJmb3JtYXRcIixcblxuICBSRUFEX09OTFk6IFwicmVhZG9ubHlcIixcbiAgUkVRVUlSRUQ6IFZhbGlkYXRpb25LZXlzLlJFUVVJUkVELFxuICBNSU46IFZhbGlkYXRpb25LZXlzLk1JTixcbiAgTUlOX0xFTkdUSDogVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSCxcbiAgTUFYOiBWYWxpZGF0aW9uS2V5cy5NQVgsXG4gIE1BWF9MRU5HVEg6IFZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEgsXG4gIFBBVFRFUk46IFZhbGlkYXRpb25LZXlzLlBBVFRFUk4sXG4gIFVSTDogVmFsaWRhdGlvbktleXMuVVJMLFxuICBTVEVQOiBWYWxpZGF0aW9uS2V5cy5TVEVQLFxuICBEQVRFOiBWYWxpZGF0aW9uS2V5cy5EQVRFLFxuICBFTUFJTDogVmFsaWRhdGlvbktleXMuRU1BSUwsXG4gIFBBU1NXT1JEOiBWYWxpZGF0aW9uS2V5cy5QQVNTV09SRCxcbiAgRVFVQUxTOiBWYWxpZGF0aW9uS2V5cy5FUVVBTFMsXG4gIERJRkY6IFZhbGlkYXRpb25LZXlzLkRJRkYsXG4gIExFU1NfVEhBTjogVmFsaWRhdGlvbktleXMuTEVTU19USEFOLFxuICBMRVNTX1RIQU5fT1JfRVFVQUw6IFZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTl9PUl9FUVVBTCxcbiAgR1JFQVRFUl9USEFOOiBWYWxpZGF0aW9uS2V5cy5HUkVBVEVSX1RIQU4sXG4gIEdSRUFURVJfVEhBTl9PUl9FUVVBTDogVmFsaWRhdGlvbktleXMuR1JFQVRFUl9USEFOX09SX0VRVUFMLFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWFwcGluZyBvZiBpbnB1dCB0eXBlcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHZhbGlkYXRvcnNcbiAqIEBzdW1tYXJ5IE1hcHMgc3BlY2lhbCBpbnB1dCB0eXBlcyB0byB0aGVpciB2YWxpZGF0b3IgY2xhc3Nlc1xuICogVGhpcyBjb25zdGFudCBtYXBzIGlucHV0IHR5cGVzIGxpa2UgZW1haWwsIFVSTCwgZGF0ZSwgYW5kIHBhc3N3b3JkIHRvIHRoZWlyXG4gKiBjb3JyZXNwb25kaW5nIHZhbGlkYXRvciBjbGFzc2VzIGZyb20gdGhlIGRlY29yYXRvci12YWxpZGF0aW9uIGxpYnJhcnkuXG4gKlxuICogQHR5cGVkZWYge09iamVjdC48c3RyaW5nLCBDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+Pn0gVmFsaWRhdGFibGVCeVR5cGVNYXBcbiAqIEBwcm9wZXJ0eSB7Q29uc3RydWN0b3I8RW1haWxWYWxpZGF0b3I+fSBlbWFpbCAtIFZhbGlkYXRvciBmb3IgZW1haWwgaW5wdXRzXG4gKiBAcHJvcGVydHkge0NvbnN0cnVjdG9yPFVSTFZhbGlkYXRvcj59IHVybCAtIFZhbGlkYXRvciBmb3IgVVJMIGlucHV0c1xuICogQHByb3BlcnR5IHtDb25zdHJ1Y3RvcjxEYXRlVmFsaWRhdG9yPn0gZGF0ZSAtIFZhbGlkYXRvciBmb3IgZGF0ZSBpbnB1dHNcbiAqIEBwcm9wZXJ0eSB7Q29uc3RydWN0b3I8UGFzc3dvcmRWYWxpZGF0b3I+fSBwYXNzd29yZCAtIFZhbGlkYXRvciBmb3IgcGFzc3dvcmQgaW5wdXRzXG4gKlxuICogQGNvbnN0IFZhbGlkYXRhYmxlQnlUeXBlXG4gKiBAdHlwZSB7VmFsaWRhdGFibGVCeVR5cGVNYXB9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dWktZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgVmFsaWRhdGFibGVCeVR5cGU6IFJlY29yZDxzdHJpbmcsIENvbnN0cnVjdG9yPFZhbGlkYXRvcj4+ID0ge1xuICBbVUlLZXlzLkVNQUlMXTogRW1haWxWYWxpZGF0b3IsXG4gIFtVSUtleXMuVVJMXTogVVJMVmFsaWRhdG9yLFxuICBbVUlLZXlzLkRBVEVdOiBEYXRlVmFsaWRhdG9yLFxuICBbVUlLZXlzLlBBU1NXT1JEXTogUGFzc3dvcmRWYWxpZGF0b3IsXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNYXBwaW5nIG9mIHZhbGlkYXRpb24gYXR0cmlidXRlcyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHZhbGlkYXRvcnNcbiAqIEBzdW1tYXJ5IE1hcHMgSFRNTCB2YWxpZGF0aW9uIGF0dHJpYnV0ZXMgdG8gdGhlaXIgdmFsaWRhdG9yIGNsYXNzZXNcbiAqIFRoaXMgY29uc3RhbnQgbWFwcyBIVE1MIHZhbGlkYXRpb24gYXR0cmlidXRlcyBsaWtlIHJlcXVpcmVkLCBtaW4sIG1heCwgcGF0dGVybiwgZXRjLlxuICogdG8gdGhlaXIgY29ycmVzcG9uZGluZyB2YWxpZGF0b3IgY2xhc3NlcyBmcm9tIHRoZSBkZWNvcmF0b3ItdmFsaWRhdGlvbiBsaWJyYXJ5LlxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3QuPHN0cmluZywgQ29uc3RydWN0b3I8VmFsaWRhdG9yPj59IFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGVNYXBcbiAqIEBwcm9wZXJ0eSB7Q29uc3RydWN0b3I8UmVxdWlyZWRWYWxpZGF0b3I+fSByZXF1aXJlZCAtIFZhbGlkYXRvciBmb3IgcmVxdWlyZWQgZmllbGRzXG4gKiBAcHJvcGVydHkge0NvbnN0cnVjdG9yPE1pblZhbGlkYXRvcj59IG1pbiAtIFZhbGlkYXRvciBmb3IgbWluaW11bSB2YWx1ZVxuICogQHByb3BlcnR5IHtDb25zdHJ1Y3RvcjxNYXhWYWxpZGF0b3I+fSBtYXggLSBWYWxpZGF0b3IgZm9yIG1heGltdW0gdmFsdWVcbiAqIEBwcm9wZXJ0eSB7Q29uc3RydWN0b3I8U3RlcFZhbGlkYXRvcj59IHN0ZXAgLSBWYWxpZGF0b3IgZm9yIHN0ZXAgdmFsdWVcbiAqIEBwcm9wZXJ0eSB7Q29uc3RydWN0b3I8TWluTGVuZ3RoVmFsaWRhdG9yPn0gbWlubGVuZ3RoIC0gVmFsaWRhdG9yIGZvciBtaW5pbXVtIGxlbmd0aFxuICogQHByb3BlcnR5IHtDb25zdHJ1Y3RvcjxNYXhMZW5ndGhWYWxpZGF0b3I+fSBtYXhsZW5ndGggLSBWYWxpZGF0b3IgZm9yIG1heGltdW0gbGVuZ3RoXG4gKiBAcHJvcGVydHkge0NvbnN0cnVjdG9yPFBhdHRlcm5WYWxpZGF0b3I+fSBwYXR0ZXJuIC0gVmFsaWRhdG9yIGZvciByZWdleCBwYXR0ZXJuXG4gKiBAcHJvcGVydHkge0NvbnN0cnVjdG9yPEVxdWFsc1ZhbGlkYXRvcj59IGVxdWFscyAtIFZhbGlkYXRvciBmb3IgZXF1YWxpdHlcbiAqIEBwcm9wZXJ0eSB7Q29uc3RydWN0b3I8RGlmZlZhbGlkYXRvcj59IGRpZmYgLSBWYWxpZGF0b3IgZm9yIGRpZmZlcmVuY2VcbiAqIEBwcm9wZXJ0eSB7Q29uc3RydWN0b3I8TGVzc1RoYW5WYWxpZGF0b3I+fSBsZXNzdGhhbiAtIFZhbGlkYXRvciBmb3IgbGVzcyB0aGFuIGNvbXBhcmlzb25cbiAqIEBwcm9wZXJ0eSB7Q29uc3RydWN0b3I8TGVzc1RoYW5PckVxdWFsVmFsaWRhdG9yPn0gbGVzc3RoYW5vcmVxdWFsIC0gVmFsaWRhdG9yIGZvciBsZXNzIHRoYW4gb3IgZXF1YWwgY29tcGFyaXNvblxuICogQHByb3BlcnR5IHtDb25zdHJ1Y3RvcjxHcmVhdGVyVGhhblZhbGlkYXRvcj59IGdyZWF0ZXJ0aGFuIC0gVmFsaWRhdG9yIGZvciBncmVhdGVyIHRoYW4gY29tcGFyaXNvblxuICogQHByb3BlcnR5IHtDb25zdHJ1Y3RvcjxHcmVhdGVyVGhhbk9yRXF1YWxWYWxpZGF0b3I+fSBncmVhdGVydGhhbm9yZXF1YWwgLSBWYWxpZGF0b3IgZm9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCBjb21wYXJpc29uXG4gKlxuICogQGNvbnN0IFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGVcbiAqIEB0eXBlIHtWYWxpZGF0YWJsZUJ5QXR0cmlidXRlTWFwfVxuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFZhbGlkYXRhYmxlQnlBdHRyaWJ1dGU6IFJlY29yZDxzdHJpbmcsIENvbnN0cnVjdG9yPFZhbGlkYXRvcj4+ID0ge1xuICBbVUlLZXlzLlJFUVVJUkVEXTogUmVxdWlyZWRWYWxpZGF0b3IsXG4gIFtVSUtleXMuTUlOXTogTWluVmFsaWRhdG9yLFxuICBbVUlLZXlzLk1BWF06IE1heFZhbGlkYXRvcixcbiAgW1VJS2V5cy5TVEVQXTogU3RlcFZhbGlkYXRvcixcbiAgW1VJS2V5cy5NSU5fTEVOR1RIXTogTWluTGVuZ3RoVmFsaWRhdG9yLFxuICBbVUlLZXlzLk1BWF9MRU5HVEhdOiBNYXhMZW5ndGhWYWxpZGF0b3IsXG4gIFtVSUtleXMuUEFUVEVSTl06IFBhdHRlcm5WYWxpZGF0b3IsXG4gIFtVSUtleXMuRVFVQUxTXTogRXF1YWxzVmFsaWRhdG9yLFxuICBbVUlLZXlzLkRJRkZdOiBEaWZmVmFsaWRhdG9yLFxuICBbVUlLZXlzLkxFU1NfVEhBTl06IExlc3NUaGFuVmFsaWRhdG9yLFxuICBbVUlLZXlzLkxFU1NfVEhBTl9PUl9FUVVBTF06IExlc3NUaGFuT3JFcXVhbFZhbGlkYXRvcixcbiAgW1VJS2V5cy5HUkVBVEVSX1RIQU5dOiBHcmVhdGVyVGhhblZhbGlkYXRvcixcbiAgW1VJS2V5cy5HUkVBVEVSX1RIQU5fT1JfRVFVQUxdOiBHcmVhdGVyVGhhbk9yRXF1YWxWYWxpZGF0b3IsXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdGFuZGFyZCBkYXRlIGZvcm1hdCBzdHJpbmcgZm9yIEhUTUw1IGRhdGUgaW5wdXRzXG4gKiBAc3VtbWFyeSBGb3JtYXQgc3RyaW5nIGZvciBIVE1MNSBkYXRlIGlucHV0cyAoeXl5eS1NTS1kZClcbiAqIFRoaXMgY29uc3RhbnQgZGVmaW5lcyB0aGUgc3RhbmRhcmQgZGF0ZSBmb3JtYXQgc3RyaW5nIHVzZWQgZm9yIEhUTUw1IGRhdGUgaW5wdXRzLlxuICpcbiAqIEBjb25zdCBIVE1MNURhdGVGb3JtYXRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6dWktZGVjb3JhdG9yc1xuICovXG5leHBvcnQgY29uc3QgSFRNTDVEYXRlRm9ybWF0ID0gXCJ5eXl5LU1NLWRkXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENvbGxlY3Rpb24gb2YgSFRNTDUgaW5wdXQgdHlwZSB2YWx1ZXNcbiAqIEBzdW1tYXJ5IE1hcHMgaW5wdXQgdHlwZSBjb25zdGFudHMgdG8gdGhlaXIgSFRNTCBhdHRyaWJ1dGUgdmFsdWVzXG4gKiBUaGlzIGNvbnN0YW50IHByb3ZpZGVzIGEgbWFwcGluZyBvZiBpbnB1dCB0eXBlIGNvbnN0YW50cyB0byB0aGVpciBjb3JyZXNwb25kaW5nXG4gKiBIVE1MIGF0dHJpYnV0ZSB2YWx1ZXMgZm9yIHVzZSBpbiBmb3JtIGVsZW1lbnRzLlxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEhUTUw1SW5wdXRUeXBlc01hcFxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJVVFRPTiAtIEJ1dHRvbiBpbnB1dCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQ0hFQ0tCT1ggLSBDaGVja2JveCBpbnB1dCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQ09MT1IgLSBDb2xvciBwaWNrZXIgaW5wdXQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IERBVEUgLSBEYXRlIHBpY2tlciBpbnB1dCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gREFURVRJTUVfTE9DQUwgLSBMb2NhbCBkYXRldGltZSBwaWNrZXIgaW5wdXQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEVNQUlMIC0gRW1haWwgaW5wdXQgdHlwZSB3aXRoIHZhbGlkYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBGSUxFIC0gRmlsZSB1cGxvYWQgaW5wdXQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEhJRERFTiAtIEhpZGRlbiBpbnB1dCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gSU1BR0UgLSBJbWFnZSBpbnB1dCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTU9OVEggLSBNb250aCBwaWNrZXIgaW5wdXQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE5VTUJFUiAtIE51bWVyaWMgaW5wdXQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBU1NXT1JEIC0gUGFzc3dvcmQgaW5wdXQgdHlwZSB3aXRoIG1hc2tlZCB0ZXh0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkFESU8gLSBSYWRpbyBidXR0b24gaW5wdXQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFJBTkdFIC0gUmFuZ2Ugc2xpZGVyIGlucHV0IHR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRVNFVCAtIEZvcm0gcmVzZXQgYnV0dG9uIGlucHV0IHR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBTRUFSQ0ggLSBTZWFyY2ggaW5wdXQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFNVQk1JVCAtIEZvcm0gc3VibWl0IGJ1dHRvbiBpbnB1dCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVEVMIC0gVGVsZXBob25lIG51bWJlciBpbnB1dCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVEVYVCAtIEJhc2ljIHRleHQgaW5wdXQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFRJTUUgLSBUaW1lIHBpY2tlciBpbnB1dCB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVVJMIC0gVVJMIGlucHV0IHR5cGUgd2l0aCB2YWxpZGF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gV0VFSyAtIFdlZWsgcGlja2VyIGlucHV0IHR5cGVcbiAqXG4gKiBAY29uc3QgSFRNTDVJbnB1dFR5cGVzXG4gKiBAdHlwZSB7SFRNTDVJbnB1dFR5cGVzTWFwfVxuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEhUTUw1SW5wdXRUeXBlcyA9IHtcbiAgQlVUVE9OOiBcImJ1dHRvblwiLFxuICBDSEVDS0JPWDogXCJjaGVja2JveFwiLFxuICBDT0xPUjogXCJjb2xvclwiLFxuICBEQVRFOiBVSUtleXMuREFURSxcbiAgREFURVRJTUVfTE9DQUw6IFwiZGF0ZXRpbWUtbG9jYWxcIixcbiAgRU1BSUw6IFVJS2V5cy5FTUFJTCxcbiAgRklMRTogXCJmaWxlXCIsXG4gIEhJRERFTjogXCJoaWRkZW5cIixcbiAgSU1BR0U6IFwiaW1hZ2VcIixcbiAgTU9OVEg6IFwibW9udGhcIixcbiAgTlVNQkVSOiBcIm51bWJlclwiLFxuICBQQVNTV09SRDogVUlLZXlzLlBBU1NXT1JELFxuICBSQURJTzogXCJyYWRpb1wiLFxuICBSQU5HRTogXCJyYW5nZVwiLFxuICBSRVNFVDogXCJyZXNldFwiLFxuICBTRUFSQ0g6IFwic2VhcmNoXCIsXG4gIFNVQk1JVDogXCJzdWJtaXRcIixcbiAgVEVMOiBcInRlbFwiLFxuICBURVhUOiBcInRleHRcIixcbiAgVElNRTogXCJ0aW1lXCIsXG4gIFVSTDogVUlLZXlzLlVSTCxcbiAgV0VFSzogXCJ3ZWVrXCIsXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBcnJheSBvZiBIVE1MNSBpbnB1dCB0eXBlcyB0aGF0IHVzZSBjaGVja2JveGVzXG4gKiBAc3VtbWFyeSBMaXN0IG9mIGlucHV0IHR5cGVzIHRoYXQgcmVwcmVzZW50IGNoZWNrYWJsZSBjb250cm9sc1xuICogVGhpcyBjb25zdGFudCBkZWZpbmVzIGFuIGFycmF5IG9mIEhUTUw1IGlucHV0IHR5cGVzIHRoYXQgcmVwcmVzZW50XG4gKiBjaGVja2FibGUgY29udHJvbHMgKGNoZWNrYm94IGFuZCByYWRpbykuXG4gKlxuICogQGNvbnN0IEhUTUw1Q2hlY2tUeXBlc1xuICogQHR5cGUge3N0cmluZ1tdfVxuICogQHJlYWRvbmx5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOnVpLWRlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IEhUTUw1Q2hlY2tUeXBlcyA9IFtcbiAgSFRNTDVJbnB1dFR5cGVzLkNIRUNLQk9YLFxuICBIVE1MNUlucHV0VHlwZXMuUkFESU8sXG5dO1xuIl19
|
|
@@ -1,47 +1,255 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import { CrudOperationKeys } from "./types";
|
|
3
3
|
/**
|
|
4
|
-
* @
|
|
5
|
-
* @
|
|
4
|
+
* @description Decorator that hides a property during specific CRUD operations
|
|
5
|
+
* @summary Controls property visibility based on operation type
|
|
6
|
+
* This decorator allows you to specify which CRUD operations should hide a property
|
|
7
|
+
* in the UI. The property will only be visible during operations not specified.
|
|
8
|
+
*
|
|
9
|
+
* @param operations - The CRUD operations during which the property should be hidden
|
|
10
|
+
* @return {Function} A property decorator function
|
|
11
|
+
*
|
|
12
|
+
* @function hideOn
|
|
13
|
+
* @category Property Decorators
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* // Hide the password field during READ operations
|
|
17
|
+
* class User {
|
|
18
|
+
* @attribute()
|
|
19
|
+
* username: string;
|
|
20
|
+
*
|
|
21
|
+
* @attribute()
|
|
22
|
+
* @hideOn(OperationKeys.READ)
|
|
23
|
+
* password: string;
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* @mermaid
|
|
27
|
+
* sequenceDiagram
|
|
28
|
+
* participant Model
|
|
29
|
+
* participant hideOn
|
|
30
|
+
* participant RenderingEngine
|
|
31
|
+
* participant UI
|
|
32
|
+
* Model->>hideOn: Apply to property
|
|
33
|
+
* hideOn->>Model: Add hidden metadata
|
|
34
|
+
* RenderingEngine->>Model: Check if property should be hidden
|
|
35
|
+
* Model->>RenderingEngine: Return hidden operations
|
|
36
|
+
* RenderingEngine->>UI: Render or hide based on current operation
|
|
6
37
|
*/
|
|
7
38
|
export declare function hideOn(...operations: CrudOperationKeys[]): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
39
|
+
/**
|
|
40
|
+
* @description Decorator that completely hides a property in all UI operations
|
|
41
|
+
* @summary Makes a property invisible in all CRUD operations
|
|
42
|
+
* This decorator is a convenience wrapper around hideOn that hides a property
|
|
43
|
+
* during all CRUD operations (CREATE, READ, UPDATE, DELETE).
|
|
44
|
+
*
|
|
45
|
+
* @return {Function} A property decorator function
|
|
46
|
+
*
|
|
47
|
+
* @function hidden
|
|
48
|
+
* @category Property Decorators
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* // Completely hide the internalId field in the UI
|
|
52
|
+
* class Product {
|
|
53
|
+
* @attribute()
|
|
54
|
+
* name: string;
|
|
55
|
+
*
|
|
56
|
+
* @attribute()
|
|
57
|
+
* @hidden()
|
|
58
|
+
* internalId: string;
|
|
59
|
+
* }
|
|
60
|
+
*
|
|
61
|
+
* @mermaid
|
|
62
|
+
* sequenceDiagram
|
|
63
|
+
* participant Model
|
|
64
|
+
* participant hidden
|
|
65
|
+
* participant hideOn
|
|
66
|
+
* participant RenderingEngine
|
|
67
|
+
* Model->>hidden: Apply to property
|
|
68
|
+
* hidden->>hideOn: Call with all operations
|
|
69
|
+
* hideOn->>Model: Add hidden metadata
|
|
70
|
+
* RenderingEngine->>Model: Check if property should be hidden
|
|
71
|
+
* Model->>RenderingEngine: Return all operations
|
|
72
|
+
* RenderingEngine->>UI: Always hide property
|
|
73
|
+
*/
|
|
8
74
|
export declare function hidden(): (target: object, propertyKey?: string | symbol | unknown, descriptor?: PropertyDescriptor) => void;
|
|
9
75
|
/**
|
|
10
|
-
*
|
|
76
|
+
* @description Decorator that specifies how a property should be rendered as a UI element
|
|
77
|
+
* @summary Maps a model property to a specific UI element with custom properties
|
|
78
|
+
* This decorator allows you to define which HTML element or component should be used
|
|
79
|
+
* to render a specific property, along with any additional properties to pass to that element.
|
|
80
|
+
*
|
|
81
|
+
* @param {string} tag The HTML element or component tag name to use for rendering
|
|
82
|
+
* @param {Record<string, any>} [props] Additional properties to pass to the element
|
|
83
|
+
* @param {boolean} [serialize=false] Whether the property should be serialized
|
|
84
|
+
* @return {Function} A property decorator function
|
|
85
|
+
*
|
|
86
|
+
* @function uielement
|
|
87
|
+
* @category Property Decorators
|
|
11
88
|
*
|
|
12
|
-
* @
|
|
13
|
-
*
|
|
14
|
-
*
|
|
89
|
+
* @example
|
|
90
|
+
* // Render a property as a text input
|
|
91
|
+
* class LoginForm {
|
|
92
|
+
* @attribute()
|
|
93
|
+
* @uielement('input', { type: 'text', placeholder: 'Enter username' })
|
|
94
|
+
* username: string;
|
|
15
95
|
*
|
|
16
|
-
*
|
|
96
|
+
* @attribute()
|
|
97
|
+
* @uielement('input', { type: 'password', placeholder: 'Enter password' })
|
|
98
|
+
* password: string;
|
|
17
99
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
100
|
+
* @attribute()
|
|
101
|
+
* @uielement('button', { class: 'btn-primary' })
|
|
102
|
+
* submit: string = 'Login';
|
|
103
|
+
* }
|
|
104
|
+
*
|
|
105
|
+
* @mermaid
|
|
106
|
+
* sequenceDiagram
|
|
107
|
+
* participant Model
|
|
108
|
+
* participant uielement
|
|
109
|
+
* participant RenderingEngine
|
|
110
|
+
* participant UI
|
|
111
|
+
* Model->>uielement: Apply to property
|
|
112
|
+
* uielement->>Model: Add element metadata
|
|
113
|
+
* RenderingEngine->>Model: Get element metadata
|
|
114
|
+
* Model->>RenderingEngine: Return tag and props
|
|
115
|
+
* RenderingEngine->>UI: Render with specified element
|
|
20
116
|
*/
|
|
21
117
|
export declare function uielement(tag: string, props?: Record<string, any>, serialize?: boolean): (original: any, propertyKey?: any) => void;
|
|
22
118
|
/**
|
|
23
|
-
*
|
|
119
|
+
* @description Decorator that maps a model property to a UI component property
|
|
120
|
+
* @summary Specifies how a property should be passed to a UI component
|
|
121
|
+
* This decorator allows you to define how a model property should be mapped to
|
|
122
|
+
* a property of the UI component when rendering. It requires the class to be
|
|
123
|
+
* decorated with @uimodel.
|
|
124
|
+
*
|
|
125
|
+
* @param {string} [propName] The name of the property to pass to the component (defaults to the property key)
|
|
126
|
+
* @param {boolean} [stringify=false] Whether to stringify the property value
|
|
127
|
+
* @return {Function} A property decorator function
|
|
24
128
|
*
|
|
25
|
-
*
|
|
129
|
+
* @function uiprop
|
|
130
|
+
* @category Property Decorators
|
|
26
131
|
*
|
|
27
|
-
* @
|
|
132
|
+
* @example
|
|
133
|
+
* // Map model properties to component properties
|
|
134
|
+
* @uimodel('user-profile')
|
|
135
|
+
* class UserProfile {
|
|
136
|
+
* @attribute()
|
|
137
|
+
* @uiprop() // Will be passed as 'fullName' to the component
|
|
138
|
+
* fullName: string;
|
|
28
139
|
*
|
|
29
|
-
*
|
|
140
|
+
* @attribute()
|
|
141
|
+
* @uiprop('userEmail') // Will be passed as 'userEmail' to the component
|
|
142
|
+
* email: string;
|
|
30
143
|
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
144
|
+
* @attribute()
|
|
145
|
+
* @uiprop('userData', true) // Will be passed as stringified JSON
|
|
146
|
+
* userData: Record<string, any>;
|
|
147
|
+
* }
|
|
148
|
+
*
|
|
149
|
+
* @mermaid
|
|
150
|
+
* sequenceDiagram
|
|
151
|
+
* participant Model
|
|
152
|
+
* participant uiprop
|
|
153
|
+
* participant RenderingEngine
|
|
154
|
+
* participant Component
|
|
155
|
+
* Model->>uiprop: Apply to property
|
|
156
|
+
* uiprop->>Model: Add prop metadata
|
|
157
|
+
* RenderingEngine->>Model: Get prop metadata
|
|
158
|
+
* Model->>RenderingEngine: Return prop name and stringify flag
|
|
159
|
+
* RenderingEngine->>Component: Pass property with specified name
|
|
33
160
|
*/
|
|
34
161
|
export declare function uiprop(propName?: string | undefined, stringify?: boolean): (target: any, propertyKey: string) => void;
|
|
35
162
|
/**
|
|
36
|
-
*
|
|
163
|
+
* @description Decorator that maps a model property to a UI component property
|
|
164
|
+
* @summary Specifies how a property should be passed to a UI component
|
|
165
|
+
* This decorator allows you to define how a model property should be mapped to
|
|
166
|
+
* a property of the UI component when rendering. It requires the class to be
|
|
167
|
+
* decorated with @uimodel.
|
|
168
|
+
*
|
|
169
|
+
* @param {string} [propName] The name of the property to pass to the component (defaults to the property key)
|
|
170
|
+
* @param {boolean} [stringify=false] Whether to stringify the property value
|
|
171
|
+
* @return {Function} A property decorator function
|
|
172
|
+
*
|
|
173
|
+
* @function uiprop
|
|
174
|
+
* @category Property Decorators
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* // Map model properties to component properties
|
|
178
|
+
* @uimodel('user-profile')
|
|
179
|
+
* class UserProfile {
|
|
180
|
+
* @attribute()
|
|
181
|
+
* @uiprop() // Will be passed as 'fullName' to the component
|
|
182
|
+
* fullName: string;
|
|
183
|
+
*
|
|
184
|
+
* @attribute()
|
|
185
|
+
* @uiprop('userEmail') // Will be passed as 'userEmail' to the component
|
|
186
|
+
* email: string;
|
|
187
|
+
*
|
|
188
|
+
* @attribute()
|
|
189
|
+
* @uiprop('userData', true) // Will be passed as stringified JSON
|
|
190
|
+
* userData: Record<string, any>;
|
|
191
|
+
* }
|
|
192
|
+
*
|
|
193
|
+
* @mermaid
|
|
194
|
+
* sequenceDiagram
|
|
195
|
+
* participant Model
|
|
196
|
+
* participant uiprop
|
|
197
|
+
* participant RenderingEngine
|
|
198
|
+
* participant Component
|
|
199
|
+
* Model->>uiprop: Apply to property
|
|
200
|
+
* uiprop->>Model: Add prop metadata
|
|
201
|
+
* RenderingEngine->>Model: Get prop metadata
|
|
202
|
+
* Model->>RenderingEngine: Return prop name and stringify flag
|
|
203
|
+
* RenderingEngine->>Component: Pass property with specified name
|
|
204
|
+
*/
|
|
205
|
+
export declare function uichild(propName?: string | undefined, stringify?: boolean, tag?: string): (target: any, propertyKey: string) => void;
|
|
206
|
+
/**
|
|
207
|
+
* @description Decorator that maps a model property to a list item component
|
|
208
|
+
* @summary Specifies how a property should be rendered in a list context
|
|
209
|
+
* This decorator allows you to define how a model property containing a list
|
|
210
|
+
* should be rendered. It requires the class to be decorated with @uilistitem.
|
|
211
|
+
*
|
|
212
|
+
* @param {string} [propName] The name of the property to pass to the list component (defaults to the property key)
|
|
213
|
+
* @param {Record<string, any>} [props] Additional properties to pass to the list container
|
|
214
|
+
* @return {Function} A property decorator function
|
|
215
|
+
*
|
|
216
|
+
* @function uilistprop
|
|
217
|
+
* @category Property Decorators
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* // Define a list property with custom rendering
|
|
221
|
+
* @uimodel('todo-list')
|
|
222
|
+
* class TodoList {
|
|
223
|
+
* @attribute()
|
|
224
|
+
* title: string;
|
|
37
225
|
*
|
|
38
|
-
*
|
|
226
|
+
* @attribute()
|
|
227
|
+
* @uilistprop('items', { class: 'todo-items-container' })
|
|
228
|
+
* items: TodoItem[];
|
|
229
|
+
* }
|
|
39
230
|
*
|
|
40
|
-
* @
|
|
231
|
+
* @uilistitem('li', { class: 'todo-item' })
|
|
232
|
+
* class TodoItem extends Model {
|
|
233
|
+
* @attribute()
|
|
234
|
+
* text: string;
|
|
41
235
|
*
|
|
42
|
-
*
|
|
236
|
+
* @attribute()
|
|
237
|
+
* completed: boolean;
|
|
238
|
+
* }
|
|
43
239
|
*
|
|
44
|
-
* @
|
|
45
|
-
*
|
|
240
|
+
* @mermaid
|
|
241
|
+
* sequenceDiagram
|
|
242
|
+
* participant Model
|
|
243
|
+
* participant uilistprop
|
|
244
|
+
* participant RenderingEngine
|
|
245
|
+
* participant ListContainer
|
|
246
|
+
* participant ListItems
|
|
247
|
+
* Model->>uilistprop: Apply to property
|
|
248
|
+
* uilistprop->>Model: Add list prop metadata
|
|
249
|
+
* RenderingEngine->>Model: Get list prop metadata
|
|
250
|
+
* Model->>RenderingEngine: Return prop name and container props
|
|
251
|
+
* RenderingEngine->>ListContainer: Create container with props
|
|
252
|
+
* RenderingEngine->>ListItems: Render each item using @uilistitem
|
|
253
|
+
* ListContainer->>RenderingEngine: Return rendered list
|
|
46
254
|
*/
|
|
47
255
|
export declare function uilistprop(propName?: string | undefined, props?: Record<string, any>): (target: any, propertyKey: string) => void;
|