@wire-dsl/language-support 0.2.4 → 0.4.0
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/INTEGRATION-GUIDE.md +50 -194
- package/README.md +39 -33
- package/dist/completions.d.ts.map +1 -1
- package/dist/completions.js +8 -1
- package/dist/completions.js.map +1 -1
- package/dist/components.d.ts +0 -6
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +94 -40
- package/dist/components.js.map +1 -1
- package/dist/context-detection.js +2 -2
- package/dist/context-detection.js.map +1 -1
- package/dist/document-parser.d.ts +12 -0
- package/dist/document-parser.d.ts.map +1 -1
- package/dist/document-parser.js +49 -0
- package/dist/document-parser.js.map +1 -1
- package/dist/documentation.js +1 -1
- package/dist/documentation.js.map +1 -1
- package/dist/icon-names.d.ts +8 -0
- package/dist/icon-names.d.ts.map +1 -0
- package/dist/icon-names.js +295 -0
- package/dist/icon-names.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist-cjs/completions.js +394 -0
- package/dist-cjs/completions.js.map +1 -0
- package/dist-cjs/components.js +504 -0
- package/dist-cjs/components.js.map +1 -0
- package/dist-cjs/context-detection.js +153 -0
- package/dist-cjs/context-detection.js.map +1 -0
- package/dist-cjs/document-parser.js +323 -0
- package/dist-cjs/document-parser.js.map +1 -0
- package/dist-cjs/documentation.js +133 -0
- package/dist-cjs/documentation.js.map +1 -0
- package/dist-cjs/icon-names.js +298 -0
- package/dist-cjs/icon-names.js.map +1 -0
- package/dist-cjs/index.js +114 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/package.json +1 -0
- package/package.json +14 -3
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Autocomplete and IntelliSense Provider
|
|
4
|
+
* Shared completion logic for Monaco, VS Code, and other editors
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.PROPERTY_COMPLETIONS = exports.COMPONENT_COMPLETIONS = exports.CONTAINER_COMPLETIONS = exports.KEYWORD_COMPLETIONS = void 0;
|
|
8
|
+
exports.detectComponentKeyword = detectComponentKeyword;
|
|
9
|
+
exports.detectPropertyValueContext = detectPropertyValueContext;
|
|
10
|
+
exports.isPropertyContext = isPropertyContext;
|
|
11
|
+
exports.getAvailableComponents = getAvailableComponents;
|
|
12
|
+
exports.getComponentProperties = getComponentProperties;
|
|
13
|
+
exports.getComponentPropertiesForCompletion = getComponentPropertiesForCompletion;
|
|
14
|
+
exports.getPropertyValueSuggestions = getPropertyValueSuggestions;
|
|
15
|
+
exports.getScopeBasedCompletions = getScopeBasedCompletions;
|
|
16
|
+
const components_js_1 = require("./components.js");
|
|
17
|
+
// Completion suggestions by context
|
|
18
|
+
exports.KEYWORD_COMPLETIONS = [
|
|
19
|
+
{
|
|
20
|
+
label: 'project',
|
|
21
|
+
kind: 'Keyword',
|
|
22
|
+
detail: 'Define a Wire project',
|
|
23
|
+
documentation: 'project "My App" { ... }',
|
|
24
|
+
insertText: 'project "',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
label: 'screen',
|
|
28
|
+
kind: 'Keyword',
|
|
29
|
+
detail: 'Define a screen/page',
|
|
30
|
+
documentation: 'screen MyScreen { ... }',
|
|
31
|
+
insertText: 'screen ',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: 'component',
|
|
35
|
+
kind: 'Keyword',
|
|
36
|
+
detail: 'Use a component',
|
|
37
|
+
documentation: 'component Button text: "Click"',
|
|
38
|
+
insertText: 'component ',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
label: 'layout',
|
|
42
|
+
kind: 'Keyword',
|
|
43
|
+
detail: 'Define a layout container',
|
|
44
|
+
documentation: 'layout stack(direction: vertical) { ... }',
|
|
45
|
+
insertText: 'layout ',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
exports.CONTAINER_COMPLETIONS = [
|
|
49
|
+
{
|
|
50
|
+
label: 'stack',
|
|
51
|
+
kind: 'Component',
|
|
52
|
+
detail: 'Vertical/horizontal layout',
|
|
53
|
+
documentation: 'layout stack(direction: vertical, gap: md) { ... }',
|
|
54
|
+
insertText: 'stack(',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
label: 'grid',
|
|
58
|
+
kind: 'Component',
|
|
59
|
+
detail: 'Grid layout container',
|
|
60
|
+
documentation: 'layout grid(columns: 2, gap: md) { ... }',
|
|
61
|
+
insertText: 'grid(',
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
label: 'panel',
|
|
65
|
+
kind: 'Component',
|
|
66
|
+
detail: 'Panel with border',
|
|
67
|
+
documentation: 'layout panel(padding: md) { ... }',
|
|
68
|
+
insertText: 'panel(',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
label: 'card',
|
|
72
|
+
kind: 'Component',
|
|
73
|
+
detail: 'Card with shadow',
|
|
74
|
+
documentation: 'layout card(padding: md) { ... }',
|
|
75
|
+
insertText: 'card(',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
label: 'split',
|
|
79
|
+
kind: 'Component',
|
|
80
|
+
detail: 'Split pane layout',
|
|
81
|
+
documentation: 'layout split() { ... }',
|
|
82
|
+
insertText: 'split(',
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
exports.COMPONENT_COMPLETIONS = [
|
|
86
|
+
...Object.entries(components_js_1.COMPONENTS)
|
|
87
|
+
.filter(([name]) => /^[A-Z]/.test(name))
|
|
88
|
+
.map(([name, meta]) => ({
|
|
89
|
+
label: name,
|
|
90
|
+
kind: 'Component',
|
|
91
|
+
detail: meta.description,
|
|
92
|
+
documentation: meta.description,
|
|
93
|
+
insertText: `${name} `,
|
|
94
|
+
})),
|
|
95
|
+
];
|
|
96
|
+
exports.PROPERTY_COMPLETIONS = [
|
|
97
|
+
{
|
|
98
|
+
label: 'id',
|
|
99
|
+
kind: 'Property',
|
|
100
|
+
detail: 'Element identifier',
|
|
101
|
+
documentation: 'id: "my-element"',
|
|
102
|
+
insertText: 'id: "${1:element}"',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
label: 'label',
|
|
106
|
+
kind: 'Property',
|
|
107
|
+
detail: 'Display label/text',
|
|
108
|
+
documentation: 'label: "Click me"',
|
|
109
|
+
insertText: 'label: "${1:text}"',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
label: 'width',
|
|
113
|
+
kind: 'Property',
|
|
114
|
+
detail: 'Element width',
|
|
115
|
+
documentation: 'width: 200',
|
|
116
|
+
insertText: 'width: ${1:200}',
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
label: 'height',
|
|
120
|
+
kind: 'Property',
|
|
121
|
+
detail: 'Element height',
|
|
122
|
+
documentation: 'height: 120',
|
|
123
|
+
insertText: 'height: ${1:120}',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
label: 'gap',
|
|
127
|
+
kind: 'Property',
|
|
128
|
+
detail: 'Space between children',
|
|
129
|
+
documentation: 'gap: md',
|
|
130
|
+
insertText: 'gap: ${1:md|sm|lg}',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
label: 'padding',
|
|
134
|
+
kind: 'Property',
|
|
135
|
+
detail: 'Internal spacing',
|
|
136
|
+
documentation: 'padding: md',
|
|
137
|
+
insertText: 'padding: ${1:none|xs|sm|md|lg|xl}',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
label: 'spacing',
|
|
141
|
+
kind: 'Property',
|
|
142
|
+
detail: 'Spacing token',
|
|
143
|
+
documentation: 'spacing: sm',
|
|
144
|
+
insertText: 'spacing: ${1:none|xs|sm|md|lg|xl}',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
label: 'color',
|
|
148
|
+
kind: 'Property',
|
|
149
|
+
detail: 'Text color',
|
|
150
|
+
documentation: 'color: #000000',
|
|
151
|
+
insertText: 'color: ${1:#000000}',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
label: 'background',
|
|
155
|
+
kind: 'Property',
|
|
156
|
+
detail: 'Background color',
|
|
157
|
+
documentation: 'background: #ffffff',
|
|
158
|
+
insertText: 'background: ${1:#ffffff}',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
label: 'border',
|
|
162
|
+
kind: 'Property',
|
|
163
|
+
detail: 'Border style',
|
|
164
|
+
documentation: 'border: true',
|
|
165
|
+
insertText: 'border: ${1:true|false}',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
label: 'variant',
|
|
169
|
+
kind: 'Property',
|
|
170
|
+
detail: 'Style variant',
|
|
171
|
+
documentation: 'variant: default|primary|secondary|success|warning|danger|info',
|
|
172
|
+
insertText: 'variant: ${1:default|primary|secondary|success|warning|danger|info}',
|
|
173
|
+
},
|
|
174
|
+
];
|
|
175
|
+
/**
|
|
176
|
+
* Detect if cursor is after 'component' keyword
|
|
177
|
+
* Returns component name if found, null otherwise
|
|
178
|
+
*/
|
|
179
|
+
function detectComponentKeyword(lineText) {
|
|
180
|
+
// Match "component ComponentName" where ComponentName starts with uppercase
|
|
181
|
+
const match = lineText.match(/\bcomponent\s+([A-Z]\w*)/);
|
|
182
|
+
return match ? match[1] : null;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Detect if cursor is after ':' in a property context
|
|
186
|
+
* Returns { propertyName, componentName } if in property value context
|
|
187
|
+
*/
|
|
188
|
+
function detectPropertyValueContext(lineText) {
|
|
189
|
+
// Match "component ComponentName ... property: "
|
|
190
|
+
const componentMatch = lineText.match(/\bcomponent\s+([A-Z]\w*)/);
|
|
191
|
+
if (!componentMatch)
|
|
192
|
+
return null;
|
|
193
|
+
const componentName = componentMatch[1];
|
|
194
|
+
const afterComponent = lineText.substring(componentMatch.index + componentMatch[0].length);
|
|
195
|
+
// Match "property: " at the end
|
|
196
|
+
const propMatch = afterComponent.match(/(\w+)\s*:\s*$/);
|
|
197
|
+
if (!propMatch)
|
|
198
|
+
return null;
|
|
199
|
+
return {
|
|
200
|
+
propertyName: propMatch[1],
|
|
201
|
+
componentName,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Determine if we're in a property context (after ':')
|
|
206
|
+
*/
|
|
207
|
+
function isPropertyContext(lineText, position) {
|
|
208
|
+
const beforeCursor = lineText.substring(0, position);
|
|
209
|
+
return /:\s*$/.test(beforeCursor);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get all available component names (built-in ones that start with uppercase)
|
|
213
|
+
*/
|
|
214
|
+
function getAvailableComponents() {
|
|
215
|
+
return Object.entries(components_js_1.COMPONENTS)
|
|
216
|
+
.filter(([name]) => /^[A-Z]/.test(name)) // Only uppercase names
|
|
217
|
+
.map(([name, meta]) => ({
|
|
218
|
+
label: name,
|
|
219
|
+
kind: 'Component',
|
|
220
|
+
detail: meta.description,
|
|
221
|
+
documentation: meta.description,
|
|
222
|
+
insertText: `${name} `,
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Get properties for a specific component
|
|
227
|
+
*/
|
|
228
|
+
function getComponentProperties(componentName) {
|
|
229
|
+
const component = components_js_1.COMPONENTS[componentName];
|
|
230
|
+
if (!component || !component.properties) {
|
|
231
|
+
return [];
|
|
232
|
+
}
|
|
233
|
+
return Object.values(component.properties)
|
|
234
|
+
.map((prop) => ({
|
|
235
|
+
label: prop.name,
|
|
236
|
+
kind: 'Property',
|
|
237
|
+
detail: prop.type,
|
|
238
|
+
documentation: `Property: ${prop.name} (${prop.type})`,
|
|
239
|
+
insertText: `${prop.name}: `,
|
|
240
|
+
}));
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Get available properties for a component
|
|
244
|
+
* Filters out properties already declared in current line
|
|
245
|
+
*/
|
|
246
|
+
function getComponentPropertiesForCompletion(componentName, alreadyDeclaredProps = []) {
|
|
247
|
+
const componentMeta = components_js_1.COMPONENTS[componentName];
|
|
248
|
+
if (!componentMeta) {
|
|
249
|
+
return exports.PROPERTY_COMPLETIONS;
|
|
250
|
+
}
|
|
251
|
+
const availableProps = Object.values(componentMeta.properties || {})
|
|
252
|
+
.filter((prop) => !alreadyDeclaredProps.includes(prop.name))
|
|
253
|
+
.map((prop) => ({
|
|
254
|
+
label: prop.name,
|
|
255
|
+
kind: 'Property',
|
|
256
|
+
documentation: `Type: ${prop.type}`,
|
|
257
|
+
insertText: `${prop.name}: `,
|
|
258
|
+
detail: `${componentName} property`,
|
|
259
|
+
}));
|
|
260
|
+
return [...availableProps, ...exports.PROPERTY_COMPLETIONS];
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get property value suggestions for a given component property
|
|
264
|
+
*/
|
|
265
|
+
function getPropertyValueSuggestions(componentName, propertyName) {
|
|
266
|
+
const componentMeta = components_js_1.COMPONENTS[componentName];
|
|
267
|
+
if (!componentMeta) {
|
|
268
|
+
return [];
|
|
269
|
+
}
|
|
270
|
+
const propDef = componentMeta.properties[propertyName];
|
|
271
|
+
if (!propDef || propDef.type !== 'enum' || !propDef.options) {
|
|
272
|
+
return [];
|
|
273
|
+
}
|
|
274
|
+
return (propDef.options).map((value) => ({
|
|
275
|
+
label: value.toString(),
|
|
276
|
+
kind: 'Value',
|
|
277
|
+
documentation: `Value for ${propertyName}`,
|
|
278
|
+
}));
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Get completions based on hierarchical scope
|
|
282
|
+
*
|
|
283
|
+
* Hierarchy:
|
|
284
|
+
* - empty-file: suggest 'project' to start
|
|
285
|
+
* - inside-project: suggest project-level keywords (screen, style, colors, mocks, define)
|
|
286
|
+
* - inside-screen: suggest 'layout' keyword and containers (stack, grid, split, panel, card)
|
|
287
|
+
* - inside-layout: suggest components and nested layouts
|
|
288
|
+
*/
|
|
289
|
+
function getScopeBasedCompletions(scope) {
|
|
290
|
+
switch (scope) {
|
|
291
|
+
case 'empty-file':
|
|
292
|
+
// Only suggest project keyword to start
|
|
293
|
+
return exports.KEYWORD_COMPLETIONS.filter(item => item.label === 'project');
|
|
294
|
+
case 'inside-project': {
|
|
295
|
+
// Suggest project-level keywords from KEYWORDS.topLevel
|
|
296
|
+
// topLevel: ['project', 'style', 'colors', 'mocks', 'define']
|
|
297
|
+
const topLevelCompletions = [
|
|
298
|
+
{
|
|
299
|
+
label: 'screen',
|
|
300
|
+
kind: 'Keyword',
|
|
301
|
+
detail: 'Define a screen/page',
|
|
302
|
+
documentation: 'screen MyScreen { ... }',
|
|
303
|
+
insertText: 'screen ${1:MyScreen} {\n\t$0\n}',
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
label: 'style',
|
|
307
|
+
kind: 'Keyword',
|
|
308
|
+
detail: 'Define style properties',
|
|
309
|
+
documentation: 'style { density: "comfortable" ... }',
|
|
310
|
+
insertText: 'style {\n\t$0\n}',
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
label: 'colors',
|
|
314
|
+
kind: 'Keyword',
|
|
315
|
+
detail: 'Define color palette',
|
|
316
|
+
documentation: 'colors { primary: "#007AFF" ... }',
|
|
317
|
+
insertText: 'colors {\n\t$0\n}',
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
label: 'mocks',
|
|
321
|
+
kind: 'Keyword',
|
|
322
|
+
detail: 'Define mock data',
|
|
323
|
+
documentation: 'mocks { users: [...] ... }',
|
|
324
|
+
insertText: 'mocks {\n\t$0\n}',
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
label: 'define',
|
|
328
|
+
kind: 'Keyword',
|
|
329
|
+
detail: 'Define custom component',
|
|
330
|
+
documentation: 'define Component "Name" { ... }',
|
|
331
|
+
insertText: 'define Component "${1:CustomName}" {\n\t$0\n}',
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
label: 'define layout',
|
|
335
|
+
kind: 'Keyword',
|
|
336
|
+
detail: 'Define custom layout',
|
|
337
|
+
documentation: 'define Layout "name" { layout stack { ... } }',
|
|
338
|
+
insertText: 'define Layout "${1:screen_default}" {\n\tlayout ${2:stack}(${3:direction: vertical}) {\n\t\tcomponent Children\n\t}\n}',
|
|
339
|
+
},
|
|
340
|
+
];
|
|
341
|
+
return topLevelCompletions;
|
|
342
|
+
}
|
|
343
|
+
case 'inside-screen':
|
|
344
|
+
// Suggest 'layout' keyword followed by container types
|
|
345
|
+
const layoutCompletions = [
|
|
346
|
+
{
|
|
347
|
+
label: 'layout',
|
|
348
|
+
kind: 'Keyword',
|
|
349
|
+
detail: 'Define a layout container',
|
|
350
|
+
documentation: 'layout stack(direction: vertical) { ... }',
|
|
351
|
+
insertText: 'layout ${1:stack}(${2:direction: vertical}) {\n\t$0\n}',
|
|
352
|
+
},
|
|
353
|
+
...exports.CONTAINER_COMPLETIONS,
|
|
354
|
+
];
|
|
355
|
+
return layoutCompletions;
|
|
356
|
+
case 'inside-layout':
|
|
357
|
+
// Suggest components, nested layouts, and cells
|
|
358
|
+
return [
|
|
359
|
+
...exports.CONTAINER_COMPLETIONS, // Allow nested layouts
|
|
360
|
+
{
|
|
361
|
+
label: 'cell',
|
|
362
|
+
kind: 'Keyword',
|
|
363
|
+
detail: 'Grid cell within layout',
|
|
364
|
+
documentation: 'cell span: 2 { ... }',
|
|
365
|
+
insertText: 'cell span: ${1:1} {\n\t$0\n}',
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
label: 'component',
|
|
369
|
+
kind: 'Keyword',
|
|
370
|
+
detail: 'Insert component instance',
|
|
371
|
+
documentation: 'component Heading text: "Title"',
|
|
372
|
+
insertText: 'component ',
|
|
373
|
+
},
|
|
374
|
+
...exports.COMPONENT_COMPLETIONS,
|
|
375
|
+
];
|
|
376
|
+
default:
|
|
377
|
+
return [];
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
exports.default = {
|
|
381
|
+
KEYWORD_COMPLETIONS: exports.KEYWORD_COMPLETIONS,
|
|
382
|
+
CONTAINER_COMPLETIONS: exports.CONTAINER_COMPLETIONS,
|
|
383
|
+
COMPONENT_COMPLETIONS: exports.COMPONENT_COMPLETIONS,
|
|
384
|
+
PROPERTY_COMPLETIONS: exports.PROPERTY_COMPLETIONS,
|
|
385
|
+
isPropertyContext,
|
|
386
|
+
getComponentPropertiesForCompletion,
|
|
387
|
+
getPropertyValueSuggestions,
|
|
388
|
+
getScopeBasedCompletions,
|
|
389
|
+
detectComponentKeyword,
|
|
390
|
+
detectPropertyValueContext,
|
|
391
|
+
getAvailableComponents,
|
|
392
|
+
getComponentProperties,
|
|
393
|
+
};
|
|
394
|
+
//# sourceMappingURL=completions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.js","sourceRoot":"","sources":["../src/completions.ts"],"names":[],"mappings":"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"}
|