xmlui 0.10.13 → 0.10.14
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-Db5iQkFp.mjs → index-779mp2Bm.mjs} +943 -736
- package/dist/lib/index.css +1 -1
- package/dist/lib/{initMock-B9LtmFJG.mjs → initMock-CAXdczCj.mjs} +1 -1
- package/dist/lib/xmlui.d.ts +16 -1
- package/dist/lib/xmlui.mjs +33 -32
- package/dist/metadata/{collectedComponentMetadata-BN8eg9Gr.mjs → collectedComponentMetadata-7DFXlw-J.mjs} +15057 -14865
- package/dist/metadata/{initMock-J7pN8owj.mjs → initMock-AFWEftc6.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 +3 -3
- package/dist/scripts/bin/build-lib.js +21 -13
- package/dist/scripts/bin/viteConfig.js +3 -1
- package/dist/scripts/package.json +1 -1
- package/dist/scripts/src/abstractions/scripting/Token.js +2 -0
- package/dist/scripts/src/abstractions/scripting/TryScope.js +2 -0
- package/dist/scripts/src/abstractions/scripting/modules.js +2 -0
- package/dist/scripts/src/components/APICall/APICall.spec.js +910 -0
- package/dist/scripts/src/components/Accordion/Accordion.spec.js +969 -0
- package/dist/scripts/src/components/Animation/Animation.js +50 -0
- package/dist/scripts/src/components/App/App.spec.js +219 -0
- package/dist/scripts/src/components/AppHeader/AppHeader.spec.js +169 -0
- package/dist/scripts/src/components/AppState/AppState.spec.js +268 -0
- package/dist/scripts/src/components/AutoComplete/AutoComplete.spec.js +383 -0
- package/dist/scripts/src/components/Avatar/Avatar.spec.js +1543 -0
- package/dist/scripts/src/components/Backdrop/Backdrop.spec.js +131 -0
- package/dist/scripts/src/components/Badge/Badge.spec.js +2214 -0
- package/dist/scripts/src/components/Bookmark/Bookmark.spec.js +230 -0
- package/dist/scripts/src/components/Breakout/Breakout.spec.js +56 -0
- package/dist/scripts/src/components/Button/Button-style.spec.js +274 -0
- package/dist/scripts/src/components/Button/Button.spec.js +454 -0
- package/dist/scripts/src/components/Card/Card.spec.js +150 -0
- package/dist/scripts/src/components/Carousel/Carousel.spec.js +343 -0
- package/dist/scripts/src/components/Carousel/CarouselNative.js +2 -2
- package/dist/scripts/src/components/ChangeListener/ChangeListener.spec.js +169 -0
- package/dist/scripts/src/components/Charts/AreaChart/AreaChart.spec.js +999 -0
- package/dist/scripts/src/components/Charts/BarChart/BarChart.spec.js +597 -0
- package/dist/scripts/src/components/Charts/DonutChart/DonutChart.spec.js +608 -0
- package/dist/scripts/src/components/Charts/LabelList/LabelList.spec.js +539 -0
- package/dist/scripts/src/components/Charts/Legend/Legend.spec.js +558 -0
- package/dist/scripts/src/components/Charts/LineChart/LineChart.spec.js +450 -0
- package/dist/scripts/src/components/Charts/PieChart/PieChart.spec.js +584 -0
- package/dist/scripts/src/components/Charts/RadarChart/RadarChart.spec.js +571 -0
- package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.spec.js +449 -0
- package/dist/scripts/src/components/Checkbox/Checkbox.spec.js +964 -0
- package/dist/scripts/src/components/CodeBlock/CodeBlock.spec.js +196 -0
- package/dist/scripts/src/components/ColorPicker/ColorPicker.spec.js +283 -0
- package/dist/scripts/src/components/ColorPicker/ColorPickerNative.js +9 -26
- package/dist/scripts/src/components/Column/doc-resources/list-component-data.js +53 -0
- package/dist/scripts/src/components/ComponentProvider.js +6 -2
- package/dist/scripts/src/components/ContentSeparator/ContentSeparator.spec.js +338 -0
- package/dist/scripts/src/components/DateInput/DateInput.spec.js +918 -0
- package/dist/scripts/src/components/DatePicker/DatePicker.spec.js +362 -0
- package/dist/scripts/src/components/DatePicker/DatePickerNative.js +3 -3
- package/dist/scripts/src/components/DropdownMenu/DropdownMenu.spec.js +331 -0
- package/dist/scripts/src/components/EmojiSelector/EmojiSelector.spec.js +29 -0
- package/dist/scripts/src/components/ExpandableItem/ExpandableItem.spec.js +435 -0
- package/dist/scripts/src/components/FileInput/FileInput.spec.js +249 -0
- package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.spec.js +296 -0
- package/dist/scripts/src/components/FlowLayout/FlowLayout.spec.js +518 -0
- package/dist/scripts/src/components/Footer/Footer.spec.js +991 -0
- package/dist/scripts/src/components/Form/Form.spec.js +1257 -0
- package/dist/scripts/src/components/FormItem/FormItem.spec.js +723 -0
- package/dist/scripts/src/components/FormSection/FormSection.js +6 -31
- package/dist/scripts/src/components/Fragment/Fragment.spec.js +50 -0
- package/dist/scripts/src/components/Heading/H1.spec.js +66 -0
- package/dist/scripts/src/components/Heading/H2.spec.js +66 -0
- package/dist/scripts/src/components/Heading/H3.spec.js +66 -0
- package/dist/scripts/src/components/Heading/H4.spec.js +66 -0
- package/dist/scripts/src/components/Heading/H5.spec.js +66 -0
- package/dist/scripts/src/components/Heading/H6.spec.js +66 -0
- package/dist/scripts/src/components/Heading/Heading.spec.js +897 -0
- package/dist/scripts/src/components/HtmlTags/HtmlTags.spec.js +69 -0
- package/dist/scripts/src/components/IFrame/IFrame.spec.js +527 -0
- package/dist/scripts/src/components/Icon/ArrowDropDown.js +11 -0
- package/dist/scripts/src/components/Icon/ArrowDropUp.js +11 -0
- package/dist/scripts/src/components/Icon/ArrowLeft.js +11 -0
- package/dist/scripts/src/components/Icon/ArrowRight.js +11 -0
- package/dist/scripts/src/components/Icon/ChevronDownIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ChevronUpIcon.js +7 -0
- package/dist/scripts/src/components/Icon/Icon.spec.js +527 -0
- package/dist/scripts/src/components/Icon/SunIcon.js +10 -0
- package/dist/scripts/src/components/Image/Image.js +2 -1
- package/dist/scripts/src/components/Image/Image.spec.js +198 -0
- package/dist/scripts/src/components/Image/ImageNative.js +30 -2
- package/dist/scripts/src/components/Input/InputLabel.js +25 -0
- package/dist/scripts/src/components/Input/index.js +5 -0
- package/dist/scripts/src/components/Items/Items.spec.js +397 -0
- package/dist/scripts/src/components/Link/Link.spec.js +894 -0
- package/dist/scripts/src/components/List/List.spec.js +927 -0
- package/dist/scripts/src/components/List/doc-resources/list-component-data.js +53 -0
- package/dist/scripts/src/components/Markdown/Markdown.spec.js +188 -0
- package/dist/scripts/src/components/ModalDialog/ModalDialog.spec.js +162 -0
- package/dist/scripts/src/components/NavGroup/NavGroup.spec.js +153 -0
- package/dist/scripts/src/components/NavGroup/NavGroupNative.js +2 -2
- package/dist/scripts/src/components/NavLink/NavLink.spec.js +864 -0
- package/dist/scripts/src/components/NavPanel/NavPanel.spec.js +864 -0
- package/dist/scripts/src/components/NoResult/NoResult.spec.js +863 -0
- package/dist/scripts/src/components/NumberBox/NumberBox.spec.js +1231 -0
- package/dist/scripts/src/components/Option/Option.spec.js +472 -0
- package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.spec.js +80 -0
- package/dist/scripts/src/components/Pagination/Pagination.spec.js +1003 -0
- package/dist/scripts/src/components/ProfileMenu/ProfileMenu.js +20 -0
- package/dist/scripts/src/components/ProgressBar/ProgressBar.spec.js +166 -0
- package/dist/scripts/src/components/Queue/Queue.spec.js +626 -0
- package/dist/scripts/src/components/RadioGroup/RadioGroup.spec.js +479 -0
- package/dist/scripts/src/components/Redirect/Redirect.spec.js +527 -0
- package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.spec.js +76 -0
- package/dist/scripts/src/components/Select/Select.spec.js +527 -0
- package/dist/scripts/src/components/Slider/Slider.js +2 -0
- package/dist/scripts/src/components/Slider/Slider.spec.js +574 -0
- package/dist/scripts/src/components/Slider/SliderNative.js +62 -25
- package/dist/scripts/src/components/Slot/Slot.spec.js +368 -0
- package/dist/scripts/src/components/SpaceFiller/SpaceFiller.spec.js +184 -0
- package/dist/scripts/src/components/Spinner/Spinner.spec.js +161 -0
- package/dist/scripts/src/components/Splitter/HSplitter.spec.js +104 -0
- package/dist/scripts/src/components/Splitter/Splitter.spec.js +543 -0
- package/dist/scripts/src/components/Splitter/VSplitter.spec.js +104 -0
- package/dist/scripts/src/components/Stack/CHStack.spec.js +86 -0
- package/dist/scripts/src/components/Stack/CVStack.spec.js +86 -0
- package/dist/scripts/src/components/Stack/HStack.spec.js +67 -0
- package/dist/scripts/src/components/Stack/Stack.spec.js +654 -0
- package/dist/scripts/src/components/Stack/VStack.spec.js +67 -0
- package/dist/scripts/src/components/Switch/Switch.spec.js +829 -0
- package/dist/scripts/src/components/Table/Table.spec.js +555 -0
- package/dist/scripts/src/components/Table/doc-resources/list-component-data.js +53 -0
- package/dist/scripts/src/components/TableOfContents/TableOfContents.spec.js +838 -0
- package/dist/scripts/src/components/Tabs/Tabs.spec.js +875 -0
- package/dist/scripts/src/components/Text/Text.spec.js +1075 -0
- package/dist/scripts/src/components/TextArea/TextArea.spec.js +714 -0
- package/dist/scripts/src/components/TextBox/TextBox.spec.js +643 -0
- package/dist/scripts/src/components/Theme/Theme.spec.js +124 -0
- package/dist/scripts/src/components/TimeInput/TimeInput.spec.js +1122 -0
- package/dist/scripts/src/components/Timer/Timer.spec.js +358 -0
- package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.spec.js +414 -0
- package/dist/scripts/src/components/ToneSwitch/ToneSwitch.spec.js +89 -0
- package/dist/scripts/src/components/Tooltip/Tooltip.spec.js +418 -0
- package/dist/scripts/src/components/chart-color-schemes.js +43 -0
- package/dist/scripts/src/components-core/CompoundComponent.js +1 -1
- package/dist/scripts/src/components-core/RestApiProxy.js +85 -8
- package/dist/scripts/src/components-core/devtools/InspectorDialogVisibilityContext.js +8 -0
- package/dist/scripts/src/components-core/renderers.js +31 -0
- package/dist/scripts/src/components-core/script-runner/simplify-expression.js +386 -0
- package/dist/scripts/src/components-core/theming/component-layout-resolver.js +153 -0
- package/dist/scripts/src/components-core/theming/parse-layout-props.js +98 -0
- package/dist/scripts/src/components-core/theming/themes/solid.js +16 -0
- package/dist/scripts/src/components-core/utils/audio-utils.js +83 -0
- package/dist/scripts/src/index-standalone.js +61 -0
- package/dist/scripts/src/index.js +2 -1
- package/dist/scripts/src/language-server/server-common.js +151 -0
- package/dist/scripts/src/language-server/server-web-worker.js +47 -0
- package/dist/scripts/src/language-server/server.js +42 -0
- package/dist/scripts/src/language-server/services/common/docs-generation.js +73 -0
- package/dist/scripts/src/language-server/services/common/lsp-utils.js +9 -0
- package/dist/scripts/src/language-server/services/common/syntax-node-utilities.js +135 -0
- package/dist/scripts/src/language-server/services/completion.js +270 -0
- package/dist/scripts/src/language-server/services/diagnostic.js +19 -0
- package/dist/scripts/src/language-server/services/format.js +430 -0
- package/dist/scripts/src/language-server/services/hover.js +164 -0
- package/dist/scripts/src/language-server/xmlui-metadata-generated.mjs +16266 -0
- package/dist/scripts/src/logging/xmlui.js +21 -0
- package/dist/scripts/src/parsers/common/utils.js +19 -0
- package/dist/scripts/src/syntax/monaco/grammar.monacoLanguage.js +286 -0
- package/dist/scripts/src/syntax/monaco/index.js +14 -0
- package/dist/scripts/src/syntax/monaco/xmlui-dark.js +25 -0
- package/dist/scripts/src/syntax/monaco/xmlui-light.js +25 -0
- package/dist/scripts/src/syntax/monaco/xmluiscript.monacoLanguage.js +310 -0
- package/dist/scripts/src/syntax/textMate/index.js +14 -0
- package/dist/scripts/src/syntax/textMate/xmlui-dark.json +631 -0
- package/dist/scripts/src/syntax/textMate/xmlui-light.json +565 -0
- package/dist/scripts/src/syntax/textMate/xmlui.json +564 -0
- package/dist/scripts/src/syntax/textMate/xmlui.tmLanguage.json +341 -0
- package/dist/scripts/src/testing/ComponentDrivers.js +1355 -0
- package/dist/scripts/src/testing/assertions.js +444 -0
- package/dist/scripts/src/testing/component-test-helpers.js +389 -0
- package/dist/scripts/src/testing/drivers/DateInputDriver.js +19 -0
- package/dist/scripts/src/testing/drivers/ModalDialogDriver.js +10 -0
- package/dist/scripts/src/testing/drivers/TimeInputDriver.js +22 -0
- package/dist/scripts/src/testing/drivers/TimerDriver.js +64 -0
- package/dist/scripts/src/testing/fixtures.js +487 -0
- package/dist/scripts/src/testing/infrastructure/TestBed.js +17 -0
- package/dist/scripts/src/testing/infrastructure/main.js +9 -0
- package/dist/scripts/src/testing/infrastructure/public/mockServiceWorker.js +266 -0
- package/dist/scripts/src/testing/themed-app-test-helpers.js +139 -0
- package/dist/standalone/xmlui-standalone.es.d.ts +18 -1
- package/dist/standalone/xmlui-standalone.umd.js +36 -36
- package/package.json +1 -1
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.handleCompletionResolve = handleCompletionResolve;
|
|
37
|
+
exports.handleCompletion = handleCompletion;
|
|
38
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
39
|
+
const utils_1 = require("../../parsers/xmlui-parser/utils");
|
|
40
|
+
const syntax_kind_1 = require("../../parsers/xmlui-parser/syntax-kind");
|
|
41
|
+
const docGen = __importStar(require("./common/docs-generation"));
|
|
42
|
+
const syntax_node_utilities_1 = require("./common/syntax-node-utilities");
|
|
43
|
+
const metadata_utils_1 = require("./common/metadata-utils");
|
|
44
|
+
function handleCompletionResolve({ item, metaByComp: metaByComp, }) {
|
|
45
|
+
var _a;
|
|
46
|
+
const metadataAccessInfo = (_a = item === null || item === void 0 ? void 0 : item.data) === null || _a === void 0 ? void 0 : _a.metadataAccessInfo;
|
|
47
|
+
if (metadataAccessInfo) {
|
|
48
|
+
const { componentName, attribute } = metadataAccessInfo;
|
|
49
|
+
const componentMeta = metaByComp.getComponent(componentName);
|
|
50
|
+
if (!componentMeta) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
if (attribute) {
|
|
54
|
+
const attributeMetadata = componentMeta.getAttrForKind(attribute);
|
|
55
|
+
item.documentation = markupContent(docGen.generateAttrDescription(attribute.name, attributeMetadata));
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
item.documentation = markupContent(docGen.generateCompNameDescription(componentName, componentMeta.getMetadata()));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return item;
|
|
62
|
+
}
|
|
63
|
+
function handleCompletion({ parseResult: { node }, getText, metaByComp }, position) {
|
|
64
|
+
const findRes = (0, utils_1.findTokenAtPos)(node, position);
|
|
65
|
+
if (!findRes) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const { chainAtPos, chainBeforePos } = findRes;
|
|
69
|
+
if (findRes.chainBeforePos === undefined) {
|
|
70
|
+
return handleCompletionInsideToken(chainAtPos, position, metaByComp, getText);
|
|
71
|
+
}
|
|
72
|
+
const nodeBefore = chainBeforePos.at(-1);
|
|
73
|
+
switch (nodeBefore.kind) {
|
|
74
|
+
case syntax_kind_1.SyntaxKind.OpenNodeStart:
|
|
75
|
+
const defaultCompNames = allComponentNames(metaByComp);
|
|
76
|
+
const closestElementNodeSuspect = chainBeforePos.at(-2);
|
|
77
|
+
if (closestElementNodeSuspect && closestElementNodeSuspect.kind === syntax_kind_1.SyntaxKind.ElementNode) {
|
|
78
|
+
const matchingNode = (0, syntax_node_utilities_1.getFirstNodeFromAncestorChain)(chainBeforePos.slice(0, -3), syntax_kind_1.SyntaxKind.ElementNode);
|
|
79
|
+
if (!matchingNode)
|
|
80
|
+
return defaultCompNames;
|
|
81
|
+
const compName = getNameFromElement(matchingNode, getText);
|
|
82
|
+
if (!compName)
|
|
83
|
+
return defaultCompNames;
|
|
84
|
+
const compNameSuggestion = componentCompletionItem("/" + compName, 0);
|
|
85
|
+
return [compNameSuggestion, ...defaultCompNames.map((c) => (Object.assign(Object.assign({}, c), { sortText: "1" })))];
|
|
86
|
+
}
|
|
87
|
+
return defaultCompNames;
|
|
88
|
+
case syntax_kind_1.SyntaxKind.CloseNodeStart: {
|
|
89
|
+
//TODO: this can be substituted for an function that finds the first ElementNode up the tree
|
|
90
|
+
const closestElementNodeSuspect = chainBeforePos.at(-2);
|
|
91
|
+
if (closestElementNodeSuspect && closestElementNodeSuspect.kind === syntax_kind_1.SyntaxKind.ElementNode) {
|
|
92
|
+
const compName = getNameFromElement(closestElementNodeSuspect, getText);
|
|
93
|
+
if (!compName)
|
|
94
|
+
return allComponentNames(metaByComp);
|
|
95
|
+
return [componentCompletionItem(compName)];
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
return allComponentNames(metaByComp);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
case syntax_kind_1.SyntaxKind.Identifier:
|
|
102
|
+
const pathToElementNode = (0, syntax_node_utilities_1.visitAncestorsInChain)(chainBeforePos, (n) => n.kind === syntax_kind_1.SyntaxKind.ElementNode);
|
|
103
|
+
const parentOfnodeBefore = chainBeforePos.at(-2);
|
|
104
|
+
const completeCompName = (parentOfnodeBefore === null || parentOfnodeBefore === void 0 ? void 0 : parentOfnodeBefore.kind) === syntax_kind_1.SyntaxKind.TagNameNode && position === nodeBefore.end;
|
|
105
|
+
if (completeCompName) {
|
|
106
|
+
if (pathToElementNode && (0, syntax_node_utilities_1.insideClosingTag)(pathToElementNode)) {
|
|
107
|
+
const compName = getNameFromElement(pathToElementNode.at(-1), getText);
|
|
108
|
+
if (!compName)
|
|
109
|
+
return allComponentNames(metaByComp);
|
|
110
|
+
return [componentCompletionItem(compName)];
|
|
111
|
+
}
|
|
112
|
+
return allComponentNames(metaByComp);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const completeForProp = chainBeforePos.some((n) => n.kind === syntax_kind_1.SyntaxKind.AttributeKeyNode ||
|
|
116
|
+
n.kind === syntax_kind_1.SyntaxKind.TagNameNode ||
|
|
117
|
+
n.kind === syntax_kind_1.SyntaxKind.AttributeNode);
|
|
118
|
+
if (completeForProp) {
|
|
119
|
+
const tagNameNode = (0, syntax_node_utilities_1.findTagNameNodeInStack)(chainBeforePos);
|
|
120
|
+
if (!tagNameNode) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
const compName = (0, syntax_node_utilities_1.compNameForTagNameNode)(tagNameNode, getText);
|
|
124
|
+
if (!compName) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
return completionForNewAttr(compName, metaByComp);
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
function allComponentNames(md) {
|
|
132
|
+
return md.componentNames().map(componentCompletionItem);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Retrieves the name from an ElementNode
|
|
136
|
+
* @param elementNode has to point to a ElementNode
|
|
137
|
+
* @returns
|
|
138
|
+
*/
|
|
139
|
+
function getNameFromElement(elementNode, getText) {
|
|
140
|
+
const nameNode = elementNode.children.find((c) => c.kind === syntax_kind_1.SyntaxKind.TagNameNode);
|
|
141
|
+
if (nameNode === undefined) {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
// --- Handle namespaces
|
|
145
|
+
const colonIdx = nameNode.children.findIndex((c) => c.kind === syntax_kind_1.SyntaxKind.Colon);
|
|
146
|
+
let nameSpace = undefined;
|
|
147
|
+
let nameIdentSearchSpace = nameNode.children;
|
|
148
|
+
let name = undefined;
|
|
149
|
+
if (colonIdx !== -1) {
|
|
150
|
+
nameIdentSearchSpace = nameNode.children.slice(colonIdx + 1);
|
|
151
|
+
const nameSpaceIdx = nameNode.children.findIndex((c) => c.kind === syntax_kind_1.SyntaxKind.Identifier);
|
|
152
|
+
if (nameSpaceIdx < colonIdx) {
|
|
153
|
+
nameSpace = getText(nameNode.children[nameSpaceIdx]);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const nameIdent = nameIdentSearchSpace.find((c) => c.kind === syntax_kind_1.SyntaxKind.Identifier);
|
|
157
|
+
if (nameIdent === undefined) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
name = getText(nameIdent);
|
|
161
|
+
const value = nameSpace !== undefined ? nameSpace + ":" + name : name;
|
|
162
|
+
return value;
|
|
163
|
+
}
|
|
164
|
+
function handleCompletionInsideToken(chainAtPos, position, metaByComp, getText) {
|
|
165
|
+
const parent = chainAtPos.at(-2);
|
|
166
|
+
if (!parent) {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
switch (parent.kind) {
|
|
170
|
+
case syntax_kind_1.SyntaxKind.TagNameNode: {
|
|
171
|
+
const tagNameNodeParent = chainAtPos.at(-3);
|
|
172
|
+
const tagNameNodeIdx = tagNameNodeParent.children.findIndex((c) => c === parent);
|
|
173
|
+
if (tagNameNodeIdx <= 0) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
const previousNode = tagNameNodeParent.children[tagNameNodeIdx - 1];
|
|
177
|
+
if (previousNode.kind === syntax_kind_1.SyntaxKind.CloseNodeStart &&
|
|
178
|
+
tagNameNodeParent.kind === syntax_kind_1.SyntaxKind.ElementNode) {
|
|
179
|
+
const compName = getNameFromElement(tagNameNodeParent, getText);
|
|
180
|
+
if (!compName)
|
|
181
|
+
return allComponentNames(metaByComp);
|
|
182
|
+
return [componentCompletionItem(compName)];
|
|
183
|
+
}
|
|
184
|
+
return allComponentNames(metaByComp);
|
|
185
|
+
}
|
|
186
|
+
case syntax_kind_1.SyntaxKind.AttributeKeyNode: {
|
|
187
|
+
const tagNameNode = (0, syntax_node_utilities_1.findTagNameNodeInStack)(chainAtPos);
|
|
188
|
+
const compName = (0, syntax_node_utilities_1.compNameForTagNameNode)(tagNameNode, getText);
|
|
189
|
+
return completionForNewAttr(compName, metaByComp);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
function completionForNewAttr(compName, metaByComp) {
|
|
195
|
+
const metadata = metaByComp.getComponent(compName);
|
|
196
|
+
if (!metadata) {
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
const completionItemFromAttr = attributeCompletionItem.bind({}, compName);
|
|
200
|
+
return metadata.getAllAttributes().map(completionItemFromAttr);
|
|
201
|
+
}
|
|
202
|
+
function attrKindToCompletionItemKind(attrKind) {
|
|
203
|
+
switch (attrKind) {
|
|
204
|
+
case "api":
|
|
205
|
+
return vscode_languageserver_1.CompletionItemKind.Function;
|
|
206
|
+
case "event":
|
|
207
|
+
return vscode_languageserver_1.CompletionItemKind.Event;
|
|
208
|
+
case "layout":
|
|
209
|
+
return vscode_languageserver_1.CompletionItemKind.Unit;
|
|
210
|
+
case "prop":
|
|
211
|
+
case "implicit":
|
|
212
|
+
return vscode_languageserver_1.CompletionItemKind.Property;
|
|
213
|
+
default:
|
|
214
|
+
const _exhaustiveCheck = attrKind;
|
|
215
|
+
return _exhaustiveCheck;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
function attributeCompletionItem(componentName, attribute) {
|
|
219
|
+
const label = attribute.kind === "event" ? (0, metadata_utils_1.addOnPrefix)(attribute.name) : attribute.name;
|
|
220
|
+
return {
|
|
221
|
+
label,
|
|
222
|
+
kind: attrKindToCompletionItemKind(attribute.kind),
|
|
223
|
+
sortText: attributeDisplayOrder(attribute.kind) + label,
|
|
224
|
+
data: {
|
|
225
|
+
metadataAccessInfo: {
|
|
226
|
+
componentName,
|
|
227
|
+
attribute,
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function componentCompletionItem(componentName, sortingOrder) {
|
|
233
|
+
const sortText = sortingOrder !== undefined &&
|
|
234
|
+
sortingOrder !== 0 &&
|
|
235
|
+
sortingOrder !== null &&
|
|
236
|
+
!isNaN(sortingOrder)
|
|
237
|
+
? sortingOrder.toString()
|
|
238
|
+
: "";
|
|
239
|
+
return {
|
|
240
|
+
label: componentName,
|
|
241
|
+
kind: vscode_languageserver_1.CompletionItemKind.Constructor,
|
|
242
|
+
sortText,
|
|
243
|
+
data: {
|
|
244
|
+
metadataAccessInfo: {
|
|
245
|
+
componentName,
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function markupContent(content) {
|
|
251
|
+
return {
|
|
252
|
+
kind: vscode_languageserver_1.MarkupKind.Markdown,
|
|
253
|
+
value: content,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
function attributeDisplayOrder(kind) {
|
|
257
|
+
switch (kind) {
|
|
258
|
+
case "api":
|
|
259
|
+
case "prop":
|
|
260
|
+
case "implicit":
|
|
261
|
+
case "event":
|
|
262
|
+
return "0";
|
|
263
|
+
case "layout":
|
|
264
|
+
return "1";
|
|
265
|
+
default: {
|
|
266
|
+
const _exhaustiveCheck = kind;
|
|
267
|
+
return _exhaustiveCheck;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDiagnostics = getDiagnostics;
|
|
4
|
+
exports.errorToLspDiag = errorToLspDiag;
|
|
5
|
+
const lsp_utils_1 = require("./common/lsp-utils");
|
|
6
|
+
function getDiagnostics(ctx) {
|
|
7
|
+
const { errors } = ctx.parseResult;
|
|
8
|
+
return errors.map((e) => {
|
|
9
|
+
return errorToLspDiag(e, ctx.offsetToPos);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
function errorToLspDiag(e, offsetToPos) {
|
|
13
|
+
return {
|
|
14
|
+
severity: e.category,
|
|
15
|
+
range: (0, lsp_utils_1.offsetToPosRange)(offsetToPos, e),
|
|
16
|
+
message: e.message,
|
|
17
|
+
code: e.code,
|
|
18
|
+
};
|
|
19
|
+
}
|