@wireweave/core 1.0.0-beta.20260107130839 → 1.0.0-beta.20260107132939
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/index.cjs +0 -1
- package/dist/index.js +0 -1
- package/dist/parser.cjs +0 -1
- package/dist/parser.js +0 -1
- package/dist/renderer.cjs +0 -1
- package/dist/renderer.js +0 -1
- package/package.json +7 -4
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/parser.cjs.map +0 -1
- package/dist/parser.js.map +0 -1
- package/dist/renderer.cjs.map +0 -1
- package/dist/renderer.js.map +0 -1
- package/src/ast/guards.ts +0 -361
- package/src/ast/index.ts +0 -9
- package/src/ast/types.ts +0 -661
- package/src/ast/utils.ts +0 -238
- package/src/grammar/wireframe.peggy +0 -677
- package/src/icons/lucide-icons.ts +0 -46422
- package/src/index.ts +0 -20
- package/src/parser/generated-parser.js +0 -5199
- package/src/parser/index.ts +0 -214
- package/src/renderer/html/base.ts +0 -186
- package/src/renderer/html/components.ts +0 -1092
- package/src/renderer/html/index.ts +0 -1608
- package/src/renderer/html/layout.ts +0 -392
- package/src/renderer/index.ts +0 -143
- package/src/renderer/styles-components.ts +0 -1232
- package/src/renderer/styles.ts +0 -382
- package/src/renderer/svg/index.ts +0 -1050
- package/src/renderer/types.ts +0 -173
- package/src/types/index.ts +0 -138
- package/src/viewport/index.ts +0 -17
- package/src/viewport/presets.ts +0 -181
package/src/ast/guards.ts
DELETED
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type guards for wireweave AST
|
|
3
|
-
*
|
|
4
|
-
* Provides runtime type checking for AST nodes
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type {
|
|
8
|
-
AnyNode,
|
|
9
|
-
ContainerNode,
|
|
10
|
-
LeafNode,
|
|
11
|
-
LayoutNode,
|
|
12
|
-
GridNode,
|
|
13
|
-
ContainerComponentNode,
|
|
14
|
-
TextContentNode,
|
|
15
|
-
InputComponentNode,
|
|
16
|
-
DisplayNode,
|
|
17
|
-
DataNode,
|
|
18
|
-
FeedbackNode,
|
|
19
|
-
OverlayNode,
|
|
20
|
-
NavigationNode,
|
|
21
|
-
PageNode,
|
|
22
|
-
HeaderNode,
|
|
23
|
-
MainNode,
|
|
24
|
-
FooterNode,
|
|
25
|
-
SidebarNode,
|
|
26
|
-
SectionNode,
|
|
27
|
-
RowNode,
|
|
28
|
-
ColNode,
|
|
29
|
-
CardNode,
|
|
30
|
-
ModalNode,
|
|
31
|
-
DrawerNode,
|
|
32
|
-
AccordionNode,
|
|
33
|
-
TextNode,
|
|
34
|
-
TitleNode,
|
|
35
|
-
LinkNode,
|
|
36
|
-
InputNode,
|
|
37
|
-
TextareaNode,
|
|
38
|
-
SelectNode,
|
|
39
|
-
CheckboxNode,
|
|
40
|
-
RadioNode,
|
|
41
|
-
SwitchNode,
|
|
42
|
-
SliderNode,
|
|
43
|
-
ButtonNode,
|
|
44
|
-
ImageNode,
|
|
45
|
-
PlaceholderNode,
|
|
46
|
-
AvatarNode,
|
|
47
|
-
BadgeNode,
|
|
48
|
-
IconNode,
|
|
49
|
-
TableNode,
|
|
50
|
-
ListNode,
|
|
51
|
-
AlertNode,
|
|
52
|
-
ToastNode,
|
|
53
|
-
ProgressNode,
|
|
54
|
-
SpinnerNode,
|
|
55
|
-
TooltipNode,
|
|
56
|
-
PopoverNode,
|
|
57
|
-
DropdownNode,
|
|
58
|
-
NavNode,
|
|
59
|
-
TabsNode,
|
|
60
|
-
BreadcrumbNode,
|
|
61
|
-
DividerComponentNode,
|
|
62
|
-
NodeType,
|
|
63
|
-
} from './types';
|
|
64
|
-
|
|
65
|
-
// ===========================================
|
|
66
|
-
// Container Type Guards
|
|
67
|
-
// ===========================================
|
|
68
|
-
|
|
69
|
-
const CONTAINER_TYPES: NodeType[] = [
|
|
70
|
-
'Page',
|
|
71
|
-
'Header',
|
|
72
|
-
'Main',
|
|
73
|
-
'Footer',
|
|
74
|
-
'Sidebar',
|
|
75
|
-
'Section',
|
|
76
|
-
'Row',
|
|
77
|
-
'Col',
|
|
78
|
-
'Card',
|
|
79
|
-
'Modal',
|
|
80
|
-
'Drawer',
|
|
81
|
-
'Accordion',
|
|
82
|
-
'Tooltip',
|
|
83
|
-
'Popover',
|
|
84
|
-
];
|
|
85
|
-
|
|
86
|
-
export function isContainerNode(node: AnyNode): node is ContainerNode {
|
|
87
|
-
return CONTAINER_TYPES.includes(node.type as NodeType);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export function hasChildren(node: AnyNode): node is AnyNode & { children: AnyNode[] } {
|
|
91
|
-
return 'children' in node && Array.isArray((node as { children?: unknown }).children);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export function isLeafNode(node: AnyNode): node is LeafNode {
|
|
95
|
-
return !isContainerNode(node);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// ===========================================
|
|
99
|
-
// Layout Type Guards
|
|
100
|
-
// ===========================================
|
|
101
|
-
|
|
102
|
-
export function isLayoutNode(node: AnyNode): node is LayoutNode {
|
|
103
|
-
return ['Page', 'Header', 'Main', 'Footer', 'Sidebar', 'Section'].includes(node.type);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export function isPageNode(node: AnyNode): node is PageNode {
|
|
107
|
-
return node.type === 'Page';
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export function isHeaderNode(node: AnyNode): node is HeaderNode {
|
|
111
|
-
return node.type === 'Header';
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
export function isMainNode(node: AnyNode): node is MainNode {
|
|
115
|
-
return node.type === 'Main';
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
export function isFooterNode(node: AnyNode): node is FooterNode {
|
|
119
|
-
return node.type === 'Footer';
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export function isSidebarNode(node: AnyNode): node is SidebarNode {
|
|
123
|
-
return node.type === 'Sidebar';
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
export function isSectionNode(node: AnyNode): node is SectionNode {
|
|
127
|
-
return node.type === 'Section';
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// ===========================================
|
|
131
|
-
// Grid Type Guards
|
|
132
|
-
// ===========================================
|
|
133
|
-
|
|
134
|
-
export function isGridNode(node: AnyNode): node is GridNode {
|
|
135
|
-
return ['Row', 'Col'].includes(node.type);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export function isRowNode(node: AnyNode): node is RowNode {
|
|
139
|
-
return node.type === 'Row';
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
export function isColNode(node: AnyNode): node is ColNode {
|
|
143
|
-
return node.type === 'Col';
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// ===========================================
|
|
147
|
-
// Container Component Type Guards
|
|
148
|
-
// ===========================================
|
|
149
|
-
|
|
150
|
-
export function isContainerComponentNode(node: AnyNode): node is ContainerComponentNode {
|
|
151
|
-
return ['Card', 'Modal', 'Drawer', 'Accordion'].includes(node.type);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export function isCardNode(node: AnyNode): node is CardNode {
|
|
155
|
-
return node.type === 'Card';
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export function isModalNode(node: AnyNode): node is ModalNode {
|
|
159
|
-
return node.type === 'Modal';
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
export function isDrawerNode(node: AnyNode): node is DrawerNode {
|
|
163
|
-
return node.type === 'Drawer';
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
export function isAccordionNode(node: AnyNode): node is AccordionNode {
|
|
167
|
-
return node.type === 'Accordion';
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// ===========================================
|
|
171
|
-
// Text Content Type Guards
|
|
172
|
-
// ===========================================
|
|
173
|
-
|
|
174
|
-
export function isTextContentNode(node: AnyNode): node is TextContentNode {
|
|
175
|
-
return ['Text', 'Title', 'Link'].includes(node.type);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
export function isTextNode(node: AnyNode): node is TextNode {
|
|
179
|
-
return node.type === 'Text';
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
export function isTitleNode(node: AnyNode): node is TitleNode {
|
|
183
|
-
return node.type === 'Title';
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
export function isLinkNode(node: AnyNode): node is LinkNode {
|
|
187
|
-
return node.type === 'Link';
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// ===========================================
|
|
191
|
-
// Input Component Type Guards
|
|
192
|
-
// ===========================================
|
|
193
|
-
|
|
194
|
-
export function isInputComponentNode(node: AnyNode): node is InputComponentNode {
|
|
195
|
-
return ['Input', 'Textarea', 'Select', 'Checkbox', 'Radio', 'Switch', 'Slider'].includes(
|
|
196
|
-
node.type
|
|
197
|
-
);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
export function isInputNode(node: AnyNode): node is InputNode {
|
|
201
|
-
return node.type === 'Input';
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
export function isTextareaNode(node: AnyNode): node is TextareaNode {
|
|
205
|
-
return node.type === 'Textarea';
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
export function isSelectNode(node: AnyNode): node is SelectNode {
|
|
209
|
-
return node.type === 'Select';
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
export function isCheckboxNode(node: AnyNode): node is CheckboxNode {
|
|
213
|
-
return node.type === 'Checkbox';
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
export function isRadioNode(node: AnyNode): node is RadioNode {
|
|
217
|
-
return node.type === 'Radio';
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
export function isSwitchNode(node: AnyNode): node is SwitchNode {
|
|
221
|
-
return node.type === 'Switch';
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
export function isSliderNode(node: AnyNode): node is SliderNode {
|
|
225
|
-
return node.type === 'Slider';
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// ===========================================
|
|
229
|
-
// Button Type Guard
|
|
230
|
-
// ===========================================
|
|
231
|
-
|
|
232
|
-
export function isButtonNode(node: AnyNode): node is ButtonNode {
|
|
233
|
-
return node.type === 'Button';
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// ===========================================
|
|
237
|
-
// Display Component Type Guards
|
|
238
|
-
// ===========================================
|
|
239
|
-
|
|
240
|
-
export function isDisplayNode(node: AnyNode): node is DisplayNode {
|
|
241
|
-
return ['Image', 'Placeholder', 'Avatar', 'Badge', 'Icon'].includes(node.type);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
export function isImageNode(node: AnyNode): node is ImageNode {
|
|
245
|
-
return node.type === 'Image';
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
export function isPlaceholderNode(node: AnyNode): node is PlaceholderNode {
|
|
249
|
-
return node.type === 'Placeholder';
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
export function isAvatarNode(node: AnyNode): node is AvatarNode {
|
|
253
|
-
return node.type === 'Avatar';
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
export function isBadgeNode(node: AnyNode): node is BadgeNode {
|
|
257
|
-
return node.type === 'Badge';
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
export function isIconNode(node: AnyNode): node is IconNode {
|
|
261
|
-
return node.type === 'Icon';
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
// ===========================================
|
|
265
|
-
// Data Component Type Guards
|
|
266
|
-
// ===========================================
|
|
267
|
-
|
|
268
|
-
export function isDataNode(node: AnyNode): node is DataNode {
|
|
269
|
-
return ['Table', 'List'].includes(node.type);
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
export function isTableNode(node: AnyNode): node is TableNode {
|
|
273
|
-
return node.type === 'Table';
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
export function isListNode(node: AnyNode): node is ListNode {
|
|
277
|
-
return node.type === 'List';
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
// ===========================================
|
|
281
|
-
// Feedback Component Type Guards
|
|
282
|
-
// ===========================================
|
|
283
|
-
|
|
284
|
-
export function isFeedbackNode(node: AnyNode): node is FeedbackNode {
|
|
285
|
-
return ['Alert', 'Toast', 'Progress', 'Spinner'].includes(node.type);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
export function isAlertNode(node: AnyNode): node is AlertNode {
|
|
289
|
-
return node.type === 'Alert';
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
export function isToastNode(node: AnyNode): node is ToastNode {
|
|
293
|
-
return node.type === 'Toast';
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
export function isProgressNode(node: AnyNode): node is ProgressNode {
|
|
297
|
-
return node.type === 'Progress';
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
export function isSpinnerNode(node: AnyNode): node is SpinnerNode {
|
|
301
|
-
return node.type === 'Spinner';
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
// ===========================================
|
|
305
|
-
// Overlay Component Type Guards
|
|
306
|
-
// ===========================================
|
|
307
|
-
|
|
308
|
-
export function isOverlayNode(node: AnyNode): node is OverlayNode {
|
|
309
|
-
return ['Tooltip', 'Popover', 'Dropdown'].includes(node.type);
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
export function isTooltipNode(node: AnyNode): node is TooltipNode {
|
|
313
|
-
return node.type === 'Tooltip';
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
export function isPopoverNode(node: AnyNode): node is PopoverNode {
|
|
317
|
-
return node.type === 'Popover';
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
export function isDropdownNode(node: AnyNode): node is DropdownNode {
|
|
321
|
-
return node.type === 'Dropdown';
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
// ===========================================
|
|
325
|
-
// Navigation Component Type Guards
|
|
326
|
-
// ===========================================
|
|
327
|
-
|
|
328
|
-
export function isNavigationNode(node: AnyNode): node is NavigationNode {
|
|
329
|
-
return ['Nav', 'Tabs', 'Breadcrumb'].includes(node.type);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
export function isNavNode(node: AnyNode): node is NavNode {
|
|
333
|
-
return node.type === 'Nav';
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
export function isTabsNode(node: AnyNode): node is TabsNode {
|
|
337
|
-
return node.type === 'Tabs';
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
export function isBreadcrumbNode(node: AnyNode): node is BreadcrumbNode {
|
|
341
|
-
return node.type === 'Breadcrumb';
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
// ===========================================
|
|
345
|
-
// Divider Type Guard
|
|
346
|
-
// ===========================================
|
|
347
|
-
|
|
348
|
-
export function isDividerNode(node: AnyNode): node is DividerComponentNode {
|
|
349
|
-
return node.type === 'Divider';
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
// ===========================================
|
|
353
|
-
// Generic Type Guard
|
|
354
|
-
// ===========================================
|
|
355
|
-
|
|
356
|
-
export function isNodeType<T extends NodeType>(
|
|
357
|
-
node: AnyNode,
|
|
358
|
-
type: T
|
|
359
|
-
): node is Extract<AnyNode, { type: T }> {
|
|
360
|
-
return node.type === type;
|
|
361
|
-
}
|