xmlui 0.9.86 → 0.9.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/{index-Bm0sNu3Q.mjs → index-Bp_BDtXG.mjs} +3631 -3624
- package/dist/lib/index.css +1 -1
- package/dist/lib/{initMock-BJWFwa64.mjs → initMock-sQ134eLj.mjs} +1 -1
- package/dist/lib/language-server-web-worker.mjs +1 -1
- package/dist/lib/language-server.mjs +1 -1
- package/dist/lib/{metadata-utils-Bes0jMw3.mjs → metadata-utils-DJhOKFL6.mjs} +1 -1
- package/dist/lib/{server-common-CfdMYx46.mjs → server-common-BORb4y7v.mjs} +5142 -4745
- package/dist/lib/{transform-C_5kSXBN.mjs → transform-bUuxPyao.mjs} +419 -388
- package/dist/lib/xmlui-parser.d.ts +24 -6
- package/dist/lib/xmlui-parser.mjs +2 -2
- package/dist/lib/{xmlui-serializer-jEIItW8v.mjs → xmlui-serializer-BLFl30t9.mjs} +1 -1
- package/dist/lib/xmlui.d.ts +3 -0
- package/dist/lib/xmlui.mjs +2 -2
- package/dist/metadata/{collectedComponentMetadata-BLxDndi5.mjs → collectedComponentMetadata-BhZTLaIe.mjs} +5052 -5016
- package/dist/metadata/{initMock-DRxSMFJz.mjs → initMock-C1rf5mFV.mjs} +1 -1
- package/dist/metadata/style.css +1 -1
- package/dist/metadata/xmlui-metadata.mjs +1 -1
- package/dist/metadata/xmlui-metadata.umd.js +74 -74
- package/dist/scripts/package.json +1 -1
- package/dist/scripts/src/components/Backdrop/Backdrop.js +5 -3
- package/dist/scripts/src/components/Backdrop/BackdropNative.js +2 -6
- package/dist/scripts/src/components/Markdown/parse-binding-expr.js +27 -15
- package/dist/scripts/src/components/Switch/Switch.js +1 -2
- package/dist/scripts/src/parsers/xmlui-parser/diagnostics.js +29 -7
- package/dist/scripts/src/parsers/xmlui-parser/parser.js +17 -10
- package/dist/standalone/xmlui-standalone.es.d.ts +3 -0
- package/dist/standalone/xmlui-standalone.umd.js +204 -204
- package/package.json +1 -1
|
@@ -22,17 +22,19 @@ exports.BackdropMd = (0, metadata_helpers_1.createMetadata)({
|
|
|
22
22
|
backgroundColor: {
|
|
23
23
|
description: "The background color of the backdrop.",
|
|
24
24
|
valueType: "string",
|
|
25
|
-
defaultValue: BackdropNative_1.defaultProps.backgroundColor,
|
|
26
25
|
},
|
|
27
26
|
opacity: {
|
|
28
27
|
description: "The opacity of the backdrop.",
|
|
29
28
|
valueType: "string",
|
|
30
|
-
defaultValue: BackdropNative_1.defaultProps.opacity,
|
|
31
29
|
},
|
|
32
30
|
},
|
|
33
31
|
themeVars: (0, themeVars_1.parseScssVar)(Backdrop_module_scss_1.default.themeVars),
|
|
32
|
+
defaultThemeVars: {
|
|
33
|
+
[`backgroundColor-${COMP}`]: "black",
|
|
34
|
+
[`opacity-${COMP}`]: "0.1",
|
|
35
|
+
}
|
|
34
36
|
});
|
|
35
37
|
exports.backdropComponentRenderer = (0, renderers_1.createComponentRenderer)(COMP, exports.BackdropMd, ({ node, extractValue, renderChild, layoutCss }) => {
|
|
36
38
|
var _a;
|
|
37
|
-
return ((0, jsx_runtime_1.jsx)(BackdropNative_1.Backdrop, { style: layoutCss, overlayTemplate: renderChild((_a = node.props) === null || _a === void 0 ? void 0 : _a.overlayTemplate), backgroundColor: extractValue.asOptionalString(node.props.backgroundColor), opacity: extractValue.
|
|
39
|
+
return ((0, jsx_runtime_1.jsx)(BackdropNative_1.Backdrop, { style: layoutCss, overlayTemplate: renderChild((_a = node.props) === null || _a === void 0 ? void 0 : _a.overlayTemplate), backgroundColor: extractValue.asOptionalString(node.props.backgroundColor, undefined), opacity: extractValue.asOptionalString(node.props.opacity, undefined), children: renderChild(node.children) }));
|
|
38
40
|
});
|
|
@@ -3,15 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Backdrop =
|
|
6
|
+
exports.Backdrop = void 0;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const react_1 = require("react");
|
|
9
9
|
const Backdrop_module_scss_1 = __importDefault(require("./Backdrop.module.scss"));
|
|
10
|
-
exports.
|
|
11
|
-
backgroundColor: "black",
|
|
12
|
-
opacity: "0.1",
|
|
13
|
-
};
|
|
14
|
-
exports.Backdrop = (0, react_1.forwardRef)(function Backdrop({ style, children, overlayTemplate, backgroundColor = exports.defaultProps.backgroundColor, opacity = exports.defaultProps.opacity, }, forwardedRef) {
|
|
10
|
+
exports.Backdrop = (0, react_1.forwardRef)(function Backdrop({ style, children, overlayTemplate, backgroundColor, opacity, }, forwardedRef) {
|
|
15
11
|
var _a;
|
|
16
12
|
const styleWithoutDims = Object.assign(Object.assign({}, style), { width: undefined });
|
|
17
13
|
return ((0, jsx_runtime_1.jsxs)("div", { className: Backdrop_module_scss_1.default.backdropContainer, style: { width: (_a = style.width) !== null && _a !== void 0 ? _a : "fit-content" }, ref: forwardedRef, children: [children, (0, jsx_runtime_1.jsx)("div", { className: Backdrop_module_scss_1.default.backdrop, style: Object.assign(Object.assign({}, styleWithoutDims), { backgroundColor, opacity }) }), overlayTemplate && (0, jsx_runtime_1.jsx)("div", { className: Backdrop_module_scss_1.default.overlay, children: overlayTemplate })] }));
|
|
@@ -10,21 +10,33 @@ const ScriptingSourceTree_1 = require("../../components-core/script-runner/Scrip
|
|
|
10
10
|
* @returns the parsed text with resolved binding expressions
|
|
11
11
|
*/
|
|
12
12
|
function parseBindingExpression(text, extractValue) {
|
|
13
|
-
// Remove empty @{} expressions first
|
|
14
|
-
text = text.replaceAll(/(
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
//
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
13
|
+
// Remove empty @{} expressions first - Safari/Edge compatible version
|
|
14
|
+
text = text.replaceAll(/(^|[^\\])\@\{\s*\}/g, "$1");
|
|
15
|
+
// Safari/Edge compatible iterative processing to handle adjacent bindings
|
|
16
|
+
// Process content bindings one at a time to avoid position conflicts
|
|
17
|
+
let previousText = "";
|
|
18
|
+
let iterations = 0;
|
|
19
|
+
while (text !== previousText && iterations < 100) { // Safety limit
|
|
20
|
+
previousText = text;
|
|
21
|
+
iterations++;
|
|
22
|
+
// Match first non-escaped @{...} with nested braces support
|
|
23
|
+
const match = text.match(/(^|[^\\])(\@\{((?:[^{}]|\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})*\})*)\})/);
|
|
24
|
+
if (match) {
|
|
25
|
+
const fullMatch = match[0];
|
|
26
|
+
const prefix = match[1];
|
|
27
|
+
const expr = match[3];
|
|
28
|
+
const extracted = extractValue(`{${expr}}`);
|
|
29
|
+
const resultExpr = mapByType(extracted);
|
|
30
|
+
const replacement = typeof resultExpr === "object" && resultExpr !== null
|
|
31
|
+
? JSON.stringify(resultExpr)
|
|
32
|
+
: resultExpr;
|
|
33
|
+
text = text.replace(fullMatch, prefix + replacement);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
break; // No more matches
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return text;
|
|
28
40
|
// ---
|
|
29
41
|
function mapByType(extracted) {
|
|
30
42
|
if (extracted === null) {
|
|
@@ -15,7 +15,6 @@ exports.SwitchMd = (0, metadata_helpers_1.createMetadata)({
|
|
|
15
15
|
status: "stable",
|
|
16
16
|
description: "`Switch` enables users to toggle between two states: on and off.",
|
|
17
17
|
props: {
|
|
18
|
-
indeterminate: (0, metadata_helpers_1.dIndeterminate)(Toggle_1.defaultProps.indeterminate),
|
|
19
18
|
label: (0, metadata_helpers_1.dLabel)(),
|
|
20
19
|
labelPosition: (0, metadata_helpers_1.dLabelPosition)("end"),
|
|
21
20
|
labelWidth: (0, metadata_helpers_1.dLabelWidth)(COMP),
|
|
@@ -72,5 +71,5 @@ exports.SwitchMd = (0, metadata_helpers_1.createMetadata)({
|
|
|
72
71
|
},
|
|
73
72
|
});
|
|
74
73
|
exports.switchComponentRenderer = (0, renderers_1.createComponentRenderer)(COMP, exports.SwitchMd, ({ node, extractValue, layoutCss, updateState, state, lookupEventHandler, registerComponentApi, }) => {
|
|
75
|
-
return ((0, jsx_runtime_1.jsx)(Toggle_1.Toggle, { enabled: extractValue.asOptionalBoolean(node.props.enabled), style: layoutCss, initialValue: extractValue.asOptionalBoolean(node.props.initialValue, Toggle_1.defaultProps.initialValue), value: state === null || state === void 0 ? void 0 : state.value, readOnly: extractValue.asOptionalBoolean(node.props.readOnly), validationStatus: extractValue(node.props.validationStatus), updateState: updateState, onDidChange: lookupEventHandler("didChange"), onFocus: lookupEventHandler("gotFocus"), onBlur: lookupEventHandler("lostFocus"), label: extractValue(node.props.label), labelPosition: extractValue(node.props.labelPosition), labelWidth: extractValue(node.props.labelWidth), labelBreak: extractValue.asOptionalBoolean(node.props.labelBreak), required: extractValue.asOptionalBoolean(node.props.required), variant: "switch", registerComponentApi: registerComponentApi }));
|
|
74
|
+
return ((0, jsx_runtime_1.jsx)(Toggle_1.Toggle, { enabled: extractValue.asOptionalBoolean(node.props.enabled), style: layoutCss, initialValue: extractValue.asOptionalBoolean(node.props.initialValue, Toggle_1.defaultProps.initialValue), value: state === null || state === void 0 ? void 0 : state.value, readOnly: extractValue.asOptionalBoolean(node.props.readOnly), validationStatus: extractValue(node.props.validationStatus), updateState: updateState, autoFocus: extractValue.asOptionalBoolean(node.props.autoFocus), onDidChange: lookupEventHandler("didChange"), onFocus: lookupEventHandler("gotFocus"), onBlur: lookupEventHandler("lostFocus"), label: extractValue(node.props.label), labelPosition: extractValue(node.props.labelPosition), labelWidth: extractValue(node.props.labelWidth), labelBreak: extractValue.asOptionalBoolean(node.props.labelBreak), required: extractValue.asOptionalBoolean(node.props.required), variant: "switch", registerComponentApi: registerComponentApi }));
|
|
76
75
|
});
|
|
@@ -26,6 +26,9 @@ var ErrCodes;
|
|
|
26
26
|
ErrCodes["expTagNameAfterNamespace"] = "U014";
|
|
27
27
|
ErrCodes["expCloseStartWithName"] = "U015";
|
|
28
28
|
ErrCodes["expAttrNameAfterNamespace"] = "U016";
|
|
29
|
+
ErrCodes["unexpectedCloseTag"] = "U017";
|
|
30
|
+
ErrCodes["expTagNameAfterCloseStart"] = "U019";
|
|
31
|
+
ErrCodes["expAttrNameBeforeEq"] = "U020";
|
|
29
32
|
ErrCodes["invalidChar"] = "W001";
|
|
30
33
|
ErrCodes["untermStr"] = "W002";
|
|
31
34
|
ErrCodes["untermComment"] = "W007";
|
|
@@ -33,6 +36,11 @@ var ErrCodes;
|
|
|
33
36
|
ErrCodes["untermScript"] = "W009";
|
|
34
37
|
})(ErrCodes || (exports.ErrCodes = ErrCodes = {}));
|
|
35
38
|
exports.DIAGS = {
|
|
39
|
+
unexpectedCloseTag: {
|
|
40
|
+
category: DiagnosticCategory.Error,
|
|
41
|
+
code: ErrCodes.unexpectedCloseTag,
|
|
42
|
+
message: "Read '</', but there's no opening tag to close. You have too many closing tags.",
|
|
43
|
+
},
|
|
36
44
|
expCloseStartWithName: function (openTagName) {
|
|
37
45
|
return {
|
|
38
46
|
category: DiagnosticCategory.Error,
|
|
@@ -108,16 +116,30 @@ exports.DIAGS = {
|
|
|
108
116
|
code: ErrCodes.expAttrName,
|
|
109
117
|
message: `An attribute name expected.`,
|
|
110
118
|
},
|
|
111
|
-
expAttrNameAfterNamespace: {
|
|
119
|
+
expAttrNameAfterNamespace: function (namespaceName) {
|
|
120
|
+
return {
|
|
121
|
+
category: DiagnosticCategory.Error,
|
|
122
|
+
code: ErrCodes.expAttrNameAfterNamespace,
|
|
123
|
+
message: `An attribute name expected after namespace '${namespaceName}'.`,
|
|
124
|
+
};
|
|
125
|
+
},
|
|
126
|
+
expTagNameAfterNamespace: function (namespaceName) {
|
|
127
|
+
return {
|
|
128
|
+
category: DiagnosticCategory.Error,
|
|
129
|
+
code: ErrCodes.expTagNameAfterNamespace,
|
|
130
|
+
message: `A tag name expected after namespace '${namespaceName}'.`,
|
|
131
|
+
};
|
|
132
|
+
},
|
|
133
|
+
expTagNameAfterCloseStart: {
|
|
112
134
|
category: DiagnosticCategory.Error,
|
|
113
|
-
code: ErrCodes.
|
|
114
|
-
message:
|
|
135
|
+
code: ErrCodes.expTagNameAfterCloseStart,
|
|
136
|
+
message: "Expected tag name after '</'.",
|
|
115
137
|
},
|
|
116
|
-
|
|
138
|
+
expAttrNameBeforeEq: {
|
|
117
139
|
category: DiagnosticCategory.Error,
|
|
118
|
-
code: ErrCodes.
|
|
119
|
-
message:
|
|
120
|
-
}
|
|
140
|
+
code: ErrCodes.expAttrNameBeforeEq,
|
|
141
|
+
message: "Expected attribute name before '='.",
|
|
142
|
+
},
|
|
121
143
|
};
|
|
122
144
|
function diagnosticCategoryName(d, lowerCase = true) {
|
|
123
145
|
const name = DiagnosticCategory[d.category];
|
|
@@ -73,7 +73,7 @@ function parseXmlUiMarkup(text) {
|
|
|
73
73
|
break;
|
|
74
74
|
default:
|
|
75
75
|
const errNode = errNodeUntil(RECOVER_FILE);
|
|
76
|
-
errorAt(diagnostics_1.DIAGS.
|
|
76
|
+
errorAt(diagnostics_1.DIAGS.unexpectedCloseTag, errNode.pos, errNode.end);
|
|
77
77
|
break;
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -152,10 +152,11 @@ function parseXmlUiMarkup(text) {
|
|
|
152
152
|
}
|
|
153
153
|
function parseOpeningTagName() {
|
|
154
154
|
startNode();
|
|
155
|
-
bump(syntax_kind_1.SyntaxKind.Identifier);
|
|
155
|
+
const identNode = bump(syntax_kind_1.SyntaxKind.Identifier);
|
|
156
156
|
if (eat(syntax_kind_1.SyntaxKind.Colon) && !eat(syntax_kind_1.SyntaxKind.Identifier)) {
|
|
157
157
|
const nameNodeWithColon = completeNode(syntax_kind_1.SyntaxKind.TagNameNode);
|
|
158
|
-
|
|
158
|
+
const namespaceName = getText(identNode);
|
|
159
|
+
errorAt(diagnostics_1.DIAGS.expTagNameAfterNamespace(namespaceName), nameNodeWithColon.pos, nameNodeWithColon.end);
|
|
159
160
|
errNodeUntil([syntax_kind_1.SyntaxKind.Identifier, ...RECOVER_OPEN_TAG]);
|
|
160
161
|
return { node: nameNodeWithColon, errInName: true };
|
|
161
162
|
}
|
|
@@ -196,7 +197,12 @@ function parseXmlUiMarkup(text) {
|
|
|
196
197
|
else {
|
|
197
198
|
const errNode = errNodeUntil(RECOVER_ATTR);
|
|
198
199
|
if (errNode) {
|
|
199
|
-
|
|
200
|
+
if (at(syntax_kind_1.SyntaxKind.Equal)) {
|
|
201
|
+
errorAt(diagnostics_1.DIAGS.expAttrNameBeforeEq, errNode.pos, errNode.end);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
errorAt(diagnostics_1.DIAGS.expAttrName, errNode.pos, errNode.end);
|
|
205
|
+
}
|
|
200
206
|
completeNode(syntax_kind_1.SyntaxKind.AttributeNode);
|
|
201
207
|
}
|
|
202
208
|
else {
|
|
@@ -229,16 +235,17 @@ function parseXmlUiMarkup(text) {
|
|
|
229
235
|
nameIdent = bump(syntax_kind_1.SyntaxKind.Identifier);
|
|
230
236
|
}
|
|
231
237
|
else {
|
|
238
|
+
const namespaceName = getText(nameIdent);
|
|
232
239
|
const errNode = errNodeUntil([
|
|
233
240
|
syntax_kind_1.SyntaxKind.Equal,
|
|
234
241
|
syntax_kind_1.SyntaxKind.Identifier,
|
|
235
242
|
...RECOVER_OPEN_TAG,
|
|
236
243
|
]);
|
|
237
244
|
if (errNode) {
|
|
238
|
-
errorAt(diagnostics_1.DIAGS.expAttrNameAfterNamespace, errNode.pos, errNode.end);
|
|
245
|
+
errorAt(diagnostics_1.DIAGS.expAttrNameAfterNamespace(namespaceName), errNode.pos, errNode.end);
|
|
239
246
|
}
|
|
240
247
|
else {
|
|
241
|
-
error(diagnostics_1.DIAGS.expAttrNameAfterNamespace);
|
|
248
|
+
error(diagnostics_1.DIAGS.expAttrNameAfterNamespace(namespaceName));
|
|
242
249
|
}
|
|
243
250
|
}
|
|
244
251
|
}
|
|
@@ -261,10 +268,10 @@ function parseXmlUiMarkup(text) {
|
|
|
261
268
|
else {
|
|
262
269
|
const errNode = errNodeUntil(RECOVER_CLOSE_TAG);
|
|
263
270
|
if (errNode) {
|
|
264
|
-
errorAt(diagnostics_1.DIAGS.
|
|
271
|
+
errorAt(diagnostics_1.DIAGS.expTagNameAfterCloseStart, errNode.pos, errNode.end);
|
|
265
272
|
}
|
|
266
273
|
else {
|
|
267
|
-
error(diagnostics_1.DIAGS.
|
|
274
|
+
error(diagnostics_1.DIAGS.expTagNameAfterCloseStart);
|
|
268
275
|
}
|
|
269
276
|
}
|
|
270
277
|
if (!eat(syntax_kind_1.SyntaxKind.NodeEnd)) {
|
|
@@ -282,10 +289,10 @@ function parseXmlUiMarkup(text) {
|
|
|
282
289
|
}
|
|
283
290
|
function parseClosingTagName() {
|
|
284
291
|
startNode();
|
|
285
|
-
bump(syntax_kind_1.SyntaxKind.Identifier);
|
|
292
|
+
const identNode = bump(syntax_kind_1.SyntaxKind.Identifier);
|
|
286
293
|
if (eat(syntax_kind_1.SyntaxKind.Colon) && !eat(syntax_kind_1.SyntaxKind.Identifier)) {
|
|
287
294
|
const nameNodeWithColon = completeNode(syntax_kind_1.SyntaxKind.TagNameNode);
|
|
288
|
-
errorAt(diagnostics_1.DIAGS.expTagNameAfterNamespace, nameNodeWithColon.pos, nameNodeWithColon.end);
|
|
295
|
+
errorAt(diagnostics_1.DIAGS.expTagNameAfterNamespace(getText(identNode)), nameNodeWithColon.pos, nameNodeWithColon.end);
|
|
289
296
|
errNodeUntil(RECOVER_OPEN_TAG);
|
|
290
297
|
return nameNodeWithColon;
|
|
291
298
|
}
|
|
@@ -621,6 +621,9 @@ declare enum ErrCodes {
|
|
|
621
621
|
expTagNameAfterNamespace = "U014",
|
|
622
622
|
expCloseStartWithName = "U015",
|
|
623
623
|
expAttrNameAfterNamespace = "U016",
|
|
624
|
+
unexpectedCloseTag = "U017",
|
|
625
|
+
expTagNameAfterCloseStart = "U019",
|
|
626
|
+
expAttrNameBeforeEq = "U020",
|
|
624
627
|
invalidChar = "W001",
|
|
625
628
|
untermStr = "W002",
|
|
626
629
|
untermComment = "W007",
|