@wire-dsl/language-support 0.2.4 → 0.3.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.
Files changed (41) hide show
  1. package/INTEGRATION-GUIDE.md +50 -194
  2. package/README.md +39 -33
  3. package/dist/completions.d.ts.map +1 -1
  4. package/dist/completions.js +8 -1
  5. package/dist/completions.js.map +1 -1
  6. package/dist/components.d.ts +0 -6
  7. package/dist/components.d.ts.map +1 -1
  8. package/dist/components.js +80 -35
  9. package/dist/components.js.map +1 -1
  10. package/dist/context-detection.js +2 -2
  11. package/dist/context-detection.js.map +1 -1
  12. package/dist/document-parser.d.ts +12 -0
  13. package/dist/document-parser.d.ts.map +1 -1
  14. package/dist/document-parser.js +49 -0
  15. package/dist/document-parser.js.map +1 -1
  16. package/dist/documentation.js +1 -1
  17. package/dist/documentation.js.map +1 -1
  18. package/dist/icon-names.d.ts +8 -0
  19. package/dist/icon-names.d.ts.map +1 -0
  20. package/dist/icon-names.js +295 -0
  21. package/dist/icon-names.js.map +1 -0
  22. package/dist/index.d.ts +6 -5
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +7 -6
  25. package/dist/index.js.map +1 -1
  26. package/dist-cjs/completions.js +394 -0
  27. package/dist-cjs/completions.js.map +1 -0
  28. package/dist-cjs/components.js +495 -0
  29. package/dist-cjs/components.js.map +1 -0
  30. package/dist-cjs/context-detection.js +153 -0
  31. package/dist-cjs/context-detection.js.map +1 -0
  32. package/dist-cjs/document-parser.js +323 -0
  33. package/dist-cjs/document-parser.js.map +1 -0
  34. package/dist-cjs/documentation.js +133 -0
  35. package/dist-cjs/documentation.js.map +1 -0
  36. package/dist-cjs/icon-names.js +298 -0
  37. package/dist-cjs/icon-names.js.map +1 -0
  38. package/dist-cjs/index.js +114 -0
  39. package/dist-cjs/index.js.map +1 -0
  40. package/dist-cjs/package.json +1 -0
  41. 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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"}