@wireweave/core 1.0.0-beta.20260107130355
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/README.md +351 -0
- package/dist/index.cjs +56106 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +252 -0
- package/dist/index.d.ts +252 -0
- package/dist/index.js +55985 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.cjs +5417 -0
- package/dist/parser.cjs.map +1 -0
- package/dist/parser.d.cts +89 -0
- package/dist/parser.d.ts +89 -0
- package/dist/parser.js +5387 -0
- package/dist/parser.js.map +1 -0
- package/dist/renderer.cjs +50244 -0
- package/dist/renderer.cjs.map +1 -0
- package/dist/renderer.d.cts +497 -0
- package/dist/renderer.d.ts +497 -0
- package/dist/renderer.js +50202 -0
- package/dist/renderer.js.map +1 -0
- package/dist/types-DtovIYS6.d.cts +419 -0
- package/dist/types-DtovIYS6.d.ts +419 -0
- package/package.json +59 -0
- package/src/ast/guards.ts +361 -0
- package/src/ast/index.ts +9 -0
- package/src/ast/types.ts +661 -0
- package/src/ast/utils.ts +238 -0
- package/src/grammar/wireframe.peggy +677 -0
- package/src/icons/lucide-icons.ts +46422 -0
- package/src/index.ts +20 -0
- package/src/parser/generated-parser.js +5199 -0
- package/src/parser/index.ts +214 -0
- package/src/renderer/html/base.ts +186 -0
- package/src/renderer/html/components.ts +1092 -0
- package/src/renderer/html/index.ts +1608 -0
- package/src/renderer/html/layout.ts +392 -0
- package/src/renderer/index.ts +143 -0
- package/src/renderer/styles-components.ts +1232 -0
- package/src/renderer/styles.ts +382 -0
- package/src/renderer/svg/index.ts +1050 -0
- package/src/renderer/types.ts +173 -0
- package/src/types/index.ts +138 -0
- package/src/viewport/index.ts +17 -0
- package/src/viewport/presets.ts +181 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { A as AnyNode, C as ContainerNode, L as LeafNode, a as LayoutNode, P as PageNode, H as HeaderNode, M as MainNode, F as FooterNode, S as SidebarNode, b as SectionNode, G as GridNode, R as RowNode, c as ColNode, d as ContainerComponentNode, e as CardNode, f as ModalNode, D as DrawerNode, g as AccordionNode, T as TextContentNode, h as TextNode, i as TitleNode, j as LinkNode, I as InputComponentNode, k as InputNode, l as TextareaNode, m as SelectNode, n as CheckboxNode, o as RadioNode, p as SwitchNode, q as SliderNode, B as ButtonNode, r as DisplayNode, s as ImageNode, t as PlaceholderNode, u as AvatarNode, v as BadgeNode, w as IconNode, x as DataNode, y as TableNode, z as ListNode, E as FeedbackNode, J as AlertNode, K as ToastNode, N as ProgressNode, O as SpinnerNode, Q as OverlayNode, U as TooltipNode, V as PopoverNode, W as DropdownNode, X as NavigationNode, Y as NavNode, Z as TabsNode, _ as BreadcrumbNode, $ as DividerComponentNode, a0 as NodeType, a1 as WireframeDocument } from './types-DtovIYS6.cjs';
|
|
2
|
+
export { ax as AlertVariant, ac as AlignValue, as as AvatarSize, au as BadgeSize, at as BadgeVariant, a4 as BaseNode, aF as BreadcrumbItem, ar as ButtonSize, aq as ButtonVariant, ag as CommonProps, ad as DirectionValue, aC as DividerNode, ai as DrawerPosition, aB as DropdownItemNode, ae as FlexProps, af as GridProps, a9 as HeightValue, av as IconSize, ao as InputType, ab as JustifyValue, aw as ListItemNode, aD as NavItem, a2 as Position, ap as SelectOption, ah as ShadowValue, aa as SizeProps, a3 as SourceLocation, a7 as SpacingProps, a6 as SpacingValue, az as SpinnerSize, aE as TabNode, am as TextAlign, ak as TextSize, aj as TextSizeToken, al as TextWeight, an as TitleLevel, ay as ToastPosition, aA as TooltipPosition, a5 as ValueWithUnit, a8 as WidthValue } from './types-DtovIYS6.cjs';
|
|
3
|
+
export { ExpectedToken, ParseError, ParseErrorInfo, ParseOptions, ParseResult, getErrors, isValid, parse, tryParse } from './parser.cjs';
|
|
4
|
+
export { HtmlRenderer, IconData, IconElement, RenderContext, RenderOptions, RenderResult, SvgRenderOptions, SvgRenderResult, SvgRenderer, ThemeColors, ThemeConfig, createHtmlRenderer, createSvgRenderer, darkTheme, defaultTheme, generateComponentStyles, generateStyles, getIconData, getTheme, lucideIcons, render, renderIconSvg, renderToHtml, renderToPureSvg, renderToSvg } from './renderer.cjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Type guards for wireweave AST
|
|
8
|
+
*
|
|
9
|
+
* Provides runtime type checking for AST nodes
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
declare function isContainerNode(node: AnyNode): node is ContainerNode;
|
|
13
|
+
declare function hasChildren(node: AnyNode): node is AnyNode & {
|
|
14
|
+
children: AnyNode[];
|
|
15
|
+
};
|
|
16
|
+
declare function isLeafNode(node: AnyNode): node is LeafNode;
|
|
17
|
+
declare function isLayoutNode(node: AnyNode): node is LayoutNode;
|
|
18
|
+
declare function isPageNode(node: AnyNode): node is PageNode;
|
|
19
|
+
declare function isHeaderNode(node: AnyNode): node is HeaderNode;
|
|
20
|
+
declare function isMainNode(node: AnyNode): node is MainNode;
|
|
21
|
+
declare function isFooterNode(node: AnyNode): node is FooterNode;
|
|
22
|
+
declare function isSidebarNode(node: AnyNode): node is SidebarNode;
|
|
23
|
+
declare function isSectionNode(node: AnyNode): node is SectionNode;
|
|
24
|
+
declare function isGridNode(node: AnyNode): node is GridNode;
|
|
25
|
+
declare function isRowNode(node: AnyNode): node is RowNode;
|
|
26
|
+
declare function isColNode(node: AnyNode): node is ColNode;
|
|
27
|
+
declare function isContainerComponentNode(node: AnyNode): node is ContainerComponentNode;
|
|
28
|
+
declare function isCardNode(node: AnyNode): node is CardNode;
|
|
29
|
+
declare function isModalNode(node: AnyNode): node is ModalNode;
|
|
30
|
+
declare function isDrawerNode(node: AnyNode): node is DrawerNode;
|
|
31
|
+
declare function isAccordionNode(node: AnyNode): node is AccordionNode;
|
|
32
|
+
declare function isTextContentNode(node: AnyNode): node is TextContentNode;
|
|
33
|
+
declare function isTextNode(node: AnyNode): node is TextNode;
|
|
34
|
+
declare function isTitleNode(node: AnyNode): node is TitleNode;
|
|
35
|
+
declare function isLinkNode(node: AnyNode): node is LinkNode;
|
|
36
|
+
declare function isInputComponentNode(node: AnyNode): node is InputComponentNode;
|
|
37
|
+
declare function isInputNode(node: AnyNode): node is InputNode;
|
|
38
|
+
declare function isTextareaNode(node: AnyNode): node is TextareaNode;
|
|
39
|
+
declare function isSelectNode(node: AnyNode): node is SelectNode;
|
|
40
|
+
declare function isCheckboxNode(node: AnyNode): node is CheckboxNode;
|
|
41
|
+
declare function isRadioNode(node: AnyNode): node is RadioNode;
|
|
42
|
+
declare function isSwitchNode(node: AnyNode): node is SwitchNode;
|
|
43
|
+
declare function isSliderNode(node: AnyNode): node is SliderNode;
|
|
44
|
+
declare function isButtonNode(node: AnyNode): node is ButtonNode;
|
|
45
|
+
declare function isDisplayNode(node: AnyNode): node is DisplayNode;
|
|
46
|
+
declare function isImageNode(node: AnyNode): node is ImageNode;
|
|
47
|
+
declare function isPlaceholderNode(node: AnyNode): node is PlaceholderNode;
|
|
48
|
+
declare function isAvatarNode(node: AnyNode): node is AvatarNode;
|
|
49
|
+
declare function isBadgeNode(node: AnyNode): node is BadgeNode;
|
|
50
|
+
declare function isIconNode(node: AnyNode): node is IconNode;
|
|
51
|
+
declare function isDataNode(node: AnyNode): node is DataNode;
|
|
52
|
+
declare function isTableNode(node: AnyNode): node is TableNode;
|
|
53
|
+
declare function isListNode(node: AnyNode): node is ListNode;
|
|
54
|
+
declare function isFeedbackNode(node: AnyNode): node is FeedbackNode;
|
|
55
|
+
declare function isAlertNode(node: AnyNode): node is AlertNode;
|
|
56
|
+
declare function isToastNode(node: AnyNode): node is ToastNode;
|
|
57
|
+
declare function isProgressNode(node: AnyNode): node is ProgressNode;
|
|
58
|
+
declare function isSpinnerNode(node: AnyNode): node is SpinnerNode;
|
|
59
|
+
declare function isOverlayNode(node: AnyNode): node is OverlayNode;
|
|
60
|
+
declare function isTooltipNode(node: AnyNode): node is TooltipNode;
|
|
61
|
+
declare function isPopoverNode(node: AnyNode): node is PopoverNode;
|
|
62
|
+
declare function isDropdownNode(node: AnyNode): node is DropdownNode;
|
|
63
|
+
declare function isNavigationNode(node: AnyNode): node is NavigationNode;
|
|
64
|
+
declare function isNavNode(node: AnyNode): node is NavNode;
|
|
65
|
+
declare function isTabsNode(node: AnyNode): node is TabsNode;
|
|
66
|
+
declare function isBreadcrumbNode(node: AnyNode): node is BreadcrumbNode;
|
|
67
|
+
declare function isDividerNode(node: AnyNode): node is DividerComponentNode;
|
|
68
|
+
declare function isNodeType<T extends NodeType>(node: AnyNode, type: T): node is Extract<AnyNode, {
|
|
69
|
+
type: T;
|
|
70
|
+
}>;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* AST utility functions for wireweave
|
|
74
|
+
*
|
|
75
|
+
* Provides traversal and search utilities for AST nodes
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Callback function for AST traversal
|
|
80
|
+
*/
|
|
81
|
+
type WalkCallback = (node: AnyNode, parent?: AnyNode, depth?: number) => void | boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Predicate function for finding nodes
|
|
84
|
+
*/
|
|
85
|
+
type NodePredicate = (node: AnyNode) => boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Walk through all nodes in the AST
|
|
88
|
+
*
|
|
89
|
+
* @param node - The starting node
|
|
90
|
+
* @param callback - Function called for each node. Return false to stop traversal.
|
|
91
|
+
* @param parent - Parent node (used internally)
|
|
92
|
+
* @param depth - Current depth (used internally)
|
|
93
|
+
*/
|
|
94
|
+
declare function walk(node: AnyNode, callback: WalkCallback, parent?: AnyNode, depth?: number): void;
|
|
95
|
+
/**
|
|
96
|
+
* Walk through a document's AST
|
|
97
|
+
*
|
|
98
|
+
* @param document - The wireframe document
|
|
99
|
+
* @param callback - Function called for each node
|
|
100
|
+
*/
|
|
101
|
+
declare function walkDocument(document: WireframeDocument, callback: WalkCallback): void;
|
|
102
|
+
/**
|
|
103
|
+
* Find the first node matching a predicate
|
|
104
|
+
*
|
|
105
|
+
* @param node - The starting node
|
|
106
|
+
* @param predicate - Function to test each node
|
|
107
|
+
* @returns The first matching node, or undefined
|
|
108
|
+
*/
|
|
109
|
+
declare function find(node: AnyNode, predicate: NodePredicate): AnyNode | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* Find all nodes matching a predicate
|
|
112
|
+
*
|
|
113
|
+
* @param node - The starting node
|
|
114
|
+
* @param predicate - Function to test each node
|
|
115
|
+
* @returns Array of matching nodes
|
|
116
|
+
*/
|
|
117
|
+
declare function findAll(node: AnyNode, predicate: NodePredicate): AnyNode[];
|
|
118
|
+
/**
|
|
119
|
+
* Find all nodes of a specific type
|
|
120
|
+
*
|
|
121
|
+
* @param node - The starting node
|
|
122
|
+
* @param type - The node type to find
|
|
123
|
+
* @returns Array of matching nodes
|
|
124
|
+
*/
|
|
125
|
+
declare function findByType<T extends AnyNode>(node: AnyNode, type: NodeType): T[];
|
|
126
|
+
/**
|
|
127
|
+
* Count all nodes in the AST
|
|
128
|
+
*
|
|
129
|
+
* @param node - The starting node
|
|
130
|
+
* @returns Total number of nodes
|
|
131
|
+
*/
|
|
132
|
+
declare function countNodes(node: AnyNode): number;
|
|
133
|
+
/**
|
|
134
|
+
* Get the maximum depth of the AST
|
|
135
|
+
*
|
|
136
|
+
* @param node - The starting node
|
|
137
|
+
* @returns Maximum depth
|
|
138
|
+
*/
|
|
139
|
+
declare function getMaxDepth(node: AnyNode): number;
|
|
140
|
+
/**
|
|
141
|
+
* Get ancestors of a node (path from root to node)
|
|
142
|
+
*
|
|
143
|
+
* @param root - The root node
|
|
144
|
+
* @param target - The target node to find
|
|
145
|
+
* @returns Array of ancestor nodes, or empty array if not found
|
|
146
|
+
*/
|
|
147
|
+
declare function getAncestors(root: AnyNode, target: AnyNode): AnyNode[];
|
|
148
|
+
/**
|
|
149
|
+
* Map over all nodes in the AST
|
|
150
|
+
*
|
|
151
|
+
* @param node - The starting node
|
|
152
|
+
* @param mapper - Function to transform each node
|
|
153
|
+
* @returns New AST with transformed nodes
|
|
154
|
+
*/
|
|
155
|
+
declare function mapNodes<T>(node: AnyNode, mapper: (node: AnyNode) => T): T[];
|
|
156
|
+
/**
|
|
157
|
+
* Clone an AST node (deep clone)
|
|
158
|
+
*
|
|
159
|
+
* @param node - The node to clone
|
|
160
|
+
* @returns A deep clone of the node
|
|
161
|
+
*/
|
|
162
|
+
declare function cloneNode<T extends AnyNode>(node: T): T;
|
|
163
|
+
/**
|
|
164
|
+
* Check if a node contains a specific child (at any depth)
|
|
165
|
+
*
|
|
166
|
+
* @param node - The parent node
|
|
167
|
+
* @param target - The target node to find
|
|
168
|
+
* @returns True if the target is found
|
|
169
|
+
*/
|
|
170
|
+
declare function contains(node: AnyNode, target: AnyNode): boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Get all node types present in the AST
|
|
173
|
+
*
|
|
174
|
+
* @param node - The starting node
|
|
175
|
+
* @returns Set of node types
|
|
176
|
+
*/
|
|
177
|
+
declare function getNodeTypes(node: AnyNode): Set<NodeType>;
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Device viewport presets for wireweave
|
|
181
|
+
*
|
|
182
|
+
* Standard device dimensions for wireframe design
|
|
183
|
+
*/
|
|
184
|
+
interface ViewportSize {
|
|
185
|
+
width: number;
|
|
186
|
+
height: number;
|
|
187
|
+
label: string;
|
|
188
|
+
category: 'desktop' | 'tablet' | 'mobile';
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Device preset definitions
|
|
192
|
+
*/
|
|
193
|
+
declare const DEVICE_PRESETS: Record<string, ViewportSize>;
|
|
194
|
+
/**
|
|
195
|
+
* Default viewport size (desktop)
|
|
196
|
+
*/
|
|
197
|
+
declare const DEFAULT_VIEWPORT: ViewportSize;
|
|
198
|
+
/**
|
|
199
|
+
* Parse viewport value (e.g., "1440x900", "1440", or number)
|
|
200
|
+
*/
|
|
201
|
+
declare function parseViewportString(value: string | number): {
|
|
202
|
+
width: number;
|
|
203
|
+
height?: number;
|
|
204
|
+
} | null;
|
|
205
|
+
/**
|
|
206
|
+
* Get viewport size from device preset or explicit size
|
|
207
|
+
*/
|
|
208
|
+
declare function resolveViewport(viewport?: string | number, device?: string): ViewportSize;
|
|
209
|
+
/**
|
|
210
|
+
* Get all available device presets
|
|
211
|
+
*/
|
|
212
|
+
declare function getDevicePresets(): Record<string, ViewportSize>;
|
|
213
|
+
/**
|
|
214
|
+
* Check if a device preset exists
|
|
215
|
+
*/
|
|
216
|
+
declare function isValidDevicePreset(device: string): boolean;
|
|
217
|
+
/**
|
|
218
|
+
* Calculate scale factor to fit viewport in container
|
|
219
|
+
*
|
|
220
|
+
* @param viewport - The viewport dimensions
|
|
221
|
+
* @param containerWidth - Available container width
|
|
222
|
+
* @param containerHeight - Available container height (optional)
|
|
223
|
+
* @param maxScale - Maximum scale factor (default: 1)
|
|
224
|
+
* @returns Scale factor (0-1 range, or up to maxScale)
|
|
225
|
+
*/
|
|
226
|
+
declare function calculateViewportScale(viewport: ViewportSize, containerWidth: number, containerHeight?: number, maxScale?: number): number;
|
|
227
|
+
/**
|
|
228
|
+
* Options for creating preview wrapper HTML
|
|
229
|
+
*/
|
|
230
|
+
interface PreviewWrapperOptions {
|
|
231
|
+
/** CSS class prefix (default: 'wf') */
|
|
232
|
+
prefix?: string;
|
|
233
|
+
/** Dark mode background */
|
|
234
|
+
darkMode?: boolean;
|
|
235
|
+
/** Container width for auto-scaling */
|
|
236
|
+
containerWidth?: number;
|
|
237
|
+
/** Container height for auto-scaling */
|
|
238
|
+
containerHeight?: number;
|
|
239
|
+
/** Custom scale (overrides auto-calculated scale) */
|
|
240
|
+
scale?: number;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Wrap rendered HTML in a preview container with scaling
|
|
244
|
+
*
|
|
245
|
+
* @param html - The rendered wireframe HTML
|
|
246
|
+
* @param viewport - The viewport size used for rendering
|
|
247
|
+
* @param options - Preview wrapper options
|
|
248
|
+
* @returns HTML string with preview wrapper
|
|
249
|
+
*/
|
|
250
|
+
declare function wrapInPreviewContainer(html: string, viewport: ViewportSize, options?: PreviewWrapperOptions): string;
|
|
251
|
+
|
|
252
|
+
export { AccordionNode, AlertNode, AnyNode, AvatarNode, BadgeNode, BreadcrumbNode, ButtonNode, CardNode, CheckboxNode, ColNode, ContainerComponentNode, ContainerNode, DEFAULT_VIEWPORT, DEVICE_PRESETS, DataNode, DisplayNode, DividerComponentNode, DrawerNode, DropdownNode, FeedbackNode, FooterNode, GridNode, HeaderNode, IconNode, ImageNode, InputComponentNode, InputNode, LayoutNode, LeafNode, LinkNode, ListNode, MainNode, ModalNode, NavNode, NavigationNode, type NodePredicate, NodeType, OverlayNode, PageNode, PlaceholderNode, PopoverNode, type PreviewWrapperOptions, ProgressNode, RadioNode, RowNode, SectionNode, SelectNode, SidebarNode, SliderNode, SpinnerNode, SwitchNode, TableNode, TabsNode, TextContentNode, TextNode, TextareaNode, TitleNode, ToastNode, TooltipNode, type ViewportSize, type WalkCallback, WireframeDocument, calculateViewportScale, cloneNode, contains, countNodes, find, findAll, findByType, getAncestors, getDevicePresets, getMaxDepth, getNodeTypes, hasChildren, isAccordionNode, isAlertNode, isAvatarNode, isBadgeNode, isBreadcrumbNode, isButtonNode, isCardNode, isCheckboxNode, isColNode, isContainerComponentNode, isContainerNode, isDataNode, isDisplayNode, isDividerNode, isDrawerNode, isDropdownNode, isFeedbackNode, isFooterNode, isGridNode, isHeaderNode, isIconNode, isImageNode, isInputComponentNode, isInputNode, isLayoutNode, isLeafNode, isLinkNode, isListNode, isMainNode, isModalNode, isNavNode, isNavigationNode, isNodeType, isOverlayNode, isPageNode, isPlaceholderNode, isPopoverNode, isProgressNode, isRadioNode, isRowNode, isSectionNode, isSelectNode, isSidebarNode, isSliderNode, isSpinnerNode, isSwitchNode, isTableNode, isTabsNode, isTextContentNode, isTextNode, isTextareaNode, isTitleNode, isToastNode, isTooltipNode, isValidDevicePreset, mapNodes, parseViewportString, resolveViewport, walk, walkDocument, wrapInPreviewContainer };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { A as AnyNode, C as ContainerNode, L as LeafNode, a as LayoutNode, P as PageNode, H as HeaderNode, M as MainNode, F as FooterNode, S as SidebarNode, b as SectionNode, G as GridNode, R as RowNode, c as ColNode, d as ContainerComponentNode, e as CardNode, f as ModalNode, D as DrawerNode, g as AccordionNode, T as TextContentNode, h as TextNode, i as TitleNode, j as LinkNode, I as InputComponentNode, k as InputNode, l as TextareaNode, m as SelectNode, n as CheckboxNode, o as RadioNode, p as SwitchNode, q as SliderNode, B as ButtonNode, r as DisplayNode, s as ImageNode, t as PlaceholderNode, u as AvatarNode, v as BadgeNode, w as IconNode, x as DataNode, y as TableNode, z as ListNode, E as FeedbackNode, J as AlertNode, K as ToastNode, N as ProgressNode, O as SpinnerNode, Q as OverlayNode, U as TooltipNode, V as PopoverNode, W as DropdownNode, X as NavigationNode, Y as NavNode, Z as TabsNode, _ as BreadcrumbNode, $ as DividerComponentNode, a0 as NodeType, a1 as WireframeDocument } from './types-DtovIYS6.js';
|
|
2
|
+
export { ax as AlertVariant, ac as AlignValue, as as AvatarSize, au as BadgeSize, at as BadgeVariant, a4 as BaseNode, aF as BreadcrumbItem, ar as ButtonSize, aq as ButtonVariant, ag as CommonProps, ad as DirectionValue, aC as DividerNode, ai as DrawerPosition, aB as DropdownItemNode, ae as FlexProps, af as GridProps, a9 as HeightValue, av as IconSize, ao as InputType, ab as JustifyValue, aw as ListItemNode, aD as NavItem, a2 as Position, ap as SelectOption, ah as ShadowValue, aa as SizeProps, a3 as SourceLocation, a7 as SpacingProps, a6 as SpacingValue, az as SpinnerSize, aE as TabNode, am as TextAlign, ak as TextSize, aj as TextSizeToken, al as TextWeight, an as TitleLevel, ay as ToastPosition, aA as TooltipPosition, a5 as ValueWithUnit, a8 as WidthValue } from './types-DtovIYS6.js';
|
|
3
|
+
export { ExpectedToken, ParseError, ParseErrorInfo, ParseOptions, ParseResult, getErrors, isValid, parse, tryParse } from './parser.js';
|
|
4
|
+
export { HtmlRenderer, IconData, IconElement, RenderContext, RenderOptions, RenderResult, SvgRenderOptions, SvgRenderResult, SvgRenderer, ThemeColors, ThemeConfig, createHtmlRenderer, createSvgRenderer, darkTheme, defaultTheme, generateComponentStyles, generateStyles, getIconData, getTheme, lucideIcons, render, renderIconSvg, renderToHtml, renderToPureSvg, renderToSvg } from './renderer.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Type guards for wireweave AST
|
|
8
|
+
*
|
|
9
|
+
* Provides runtime type checking for AST nodes
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
declare function isContainerNode(node: AnyNode): node is ContainerNode;
|
|
13
|
+
declare function hasChildren(node: AnyNode): node is AnyNode & {
|
|
14
|
+
children: AnyNode[];
|
|
15
|
+
};
|
|
16
|
+
declare function isLeafNode(node: AnyNode): node is LeafNode;
|
|
17
|
+
declare function isLayoutNode(node: AnyNode): node is LayoutNode;
|
|
18
|
+
declare function isPageNode(node: AnyNode): node is PageNode;
|
|
19
|
+
declare function isHeaderNode(node: AnyNode): node is HeaderNode;
|
|
20
|
+
declare function isMainNode(node: AnyNode): node is MainNode;
|
|
21
|
+
declare function isFooterNode(node: AnyNode): node is FooterNode;
|
|
22
|
+
declare function isSidebarNode(node: AnyNode): node is SidebarNode;
|
|
23
|
+
declare function isSectionNode(node: AnyNode): node is SectionNode;
|
|
24
|
+
declare function isGridNode(node: AnyNode): node is GridNode;
|
|
25
|
+
declare function isRowNode(node: AnyNode): node is RowNode;
|
|
26
|
+
declare function isColNode(node: AnyNode): node is ColNode;
|
|
27
|
+
declare function isContainerComponentNode(node: AnyNode): node is ContainerComponentNode;
|
|
28
|
+
declare function isCardNode(node: AnyNode): node is CardNode;
|
|
29
|
+
declare function isModalNode(node: AnyNode): node is ModalNode;
|
|
30
|
+
declare function isDrawerNode(node: AnyNode): node is DrawerNode;
|
|
31
|
+
declare function isAccordionNode(node: AnyNode): node is AccordionNode;
|
|
32
|
+
declare function isTextContentNode(node: AnyNode): node is TextContentNode;
|
|
33
|
+
declare function isTextNode(node: AnyNode): node is TextNode;
|
|
34
|
+
declare function isTitleNode(node: AnyNode): node is TitleNode;
|
|
35
|
+
declare function isLinkNode(node: AnyNode): node is LinkNode;
|
|
36
|
+
declare function isInputComponentNode(node: AnyNode): node is InputComponentNode;
|
|
37
|
+
declare function isInputNode(node: AnyNode): node is InputNode;
|
|
38
|
+
declare function isTextareaNode(node: AnyNode): node is TextareaNode;
|
|
39
|
+
declare function isSelectNode(node: AnyNode): node is SelectNode;
|
|
40
|
+
declare function isCheckboxNode(node: AnyNode): node is CheckboxNode;
|
|
41
|
+
declare function isRadioNode(node: AnyNode): node is RadioNode;
|
|
42
|
+
declare function isSwitchNode(node: AnyNode): node is SwitchNode;
|
|
43
|
+
declare function isSliderNode(node: AnyNode): node is SliderNode;
|
|
44
|
+
declare function isButtonNode(node: AnyNode): node is ButtonNode;
|
|
45
|
+
declare function isDisplayNode(node: AnyNode): node is DisplayNode;
|
|
46
|
+
declare function isImageNode(node: AnyNode): node is ImageNode;
|
|
47
|
+
declare function isPlaceholderNode(node: AnyNode): node is PlaceholderNode;
|
|
48
|
+
declare function isAvatarNode(node: AnyNode): node is AvatarNode;
|
|
49
|
+
declare function isBadgeNode(node: AnyNode): node is BadgeNode;
|
|
50
|
+
declare function isIconNode(node: AnyNode): node is IconNode;
|
|
51
|
+
declare function isDataNode(node: AnyNode): node is DataNode;
|
|
52
|
+
declare function isTableNode(node: AnyNode): node is TableNode;
|
|
53
|
+
declare function isListNode(node: AnyNode): node is ListNode;
|
|
54
|
+
declare function isFeedbackNode(node: AnyNode): node is FeedbackNode;
|
|
55
|
+
declare function isAlertNode(node: AnyNode): node is AlertNode;
|
|
56
|
+
declare function isToastNode(node: AnyNode): node is ToastNode;
|
|
57
|
+
declare function isProgressNode(node: AnyNode): node is ProgressNode;
|
|
58
|
+
declare function isSpinnerNode(node: AnyNode): node is SpinnerNode;
|
|
59
|
+
declare function isOverlayNode(node: AnyNode): node is OverlayNode;
|
|
60
|
+
declare function isTooltipNode(node: AnyNode): node is TooltipNode;
|
|
61
|
+
declare function isPopoverNode(node: AnyNode): node is PopoverNode;
|
|
62
|
+
declare function isDropdownNode(node: AnyNode): node is DropdownNode;
|
|
63
|
+
declare function isNavigationNode(node: AnyNode): node is NavigationNode;
|
|
64
|
+
declare function isNavNode(node: AnyNode): node is NavNode;
|
|
65
|
+
declare function isTabsNode(node: AnyNode): node is TabsNode;
|
|
66
|
+
declare function isBreadcrumbNode(node: AnyNode): node is BreadcrumbNode;
|
|
67
|
+
declare function isDividerNode(node: AnyNode): node is DividerComponentNode;
|
|
68
|
+
declare function isNodeType<T extends NodeType>(node: AnyNode, type: T): node is Extract<AnyNode, {
|
|
69
|
+
type: T;
|
|
70
|
+
}>;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* AST utility functions for wireweave
|
|
74
|
+
*
|
|
75
|
+
* Provides traversal and search utilities for AST nodes
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Callback function for AST traversal
|
|
80
|
+
*/
|
|
81
|
+
type WalkCallback = (node: AnyNode, parent?: AnyNode, depth?: number) => void | boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Predicate function for finding nodes
|
|
84
|
+
*/
|
|
85
|
+
type NodePredicate = (node: AnyNode) => boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Walk through all nodes in the AST
|
|
88
|
+
*
|
|
89
|
+
* @param node - The starting node
|
|
90
|
+
* @param callback - Function called for each node. Return false to stop traversal.
|
|
91
|
+
* @param parent - Parent node (used internally)
|
|
92
|
+
* @param depth - Current depth (used internally)
|
|
93
|
+
*/
|
|
94
|
+
declare function walk(node: AnyNode, callback: WalkCallback, parent?: AnyNode, depth?: number): void;
|
|
95
|
+
/**
|
|
96
|
+
* Walk through a document's AST
|
|
97
|
+
*
|
|
98
|
+
* @param document - The wireframe document
|
|
99
|
+
* @param callback - Function called for each node
|
|
100
|
+
*/
|
|
101
|
+
declare function walkDocument(document: WireframeDocument, callback: WalkCallback): void;
|
|
102
|
+
/**
|
|
103
|
+
* Find the first node matching a predicate
|
|
104
|
+
*
|
|
105
|
+
* @param node - The starting node
|
|
106
|
+
* @param predicate - Function to test each node
|
|
107
|
+
* @returns The first matching node, or undefined
|
|
108
|
+
*/
|
|
109
|
+
declare function find(node: AnyNode, predicate: NodePredicate): AnyNode | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* Find all nodes matching a predicate
|
|
112
|
+
*
|
|
113
|
+
* @param node - The starting node
|
|
114
|
+
* @param predicate - Function to test each node
|
|
115
|
+
* @returns Array of matching nodes
|
|
116
|
+
*/
|
|
117
|
+
declare function findAll(node: AnyNode, predicate: NodePredicate): AnyNode[];
|
|
118
|
+
/**
|
|
119
|
+
* Find all nodes of a specific type
|
|
120
|
+
*
|
|
121
|
+
* @param node - The starting node
|
|
122
|
+
* @param type - The node type to find
|
|
123
|
+
* @returns Array of matching nodes
|
|
124
|
+
*/
|
|
125
|
+
declare function findByType<T extends AnyNode>(node: AnyNode, type: NodeType): T[];
|
|
126
|
+
/**
|
|
127
|
+
* Count all nodes in the AST
|
|
128
|
+
*
|
|
129
|
+
* @param node - The starting node
|
|
130
|
+
* @returns Total number of nodes
|
|
131
|
+
*/
|
|
132
|
+
declare function countNodes(node: AnyNode): number;
|
|
133
|
+
/**
|
|
134
|
+
* Get the maximum depth of the AST
|
|
135
|
+
*
|
|
136
|
+
* @param node - The starting node
|
|
137
|
+
* @returns Maximum depth
|
|
138
|
+
*/
|
|
139
|
+
declare function getMaxDepth(node: AnyNode): number;
|
|
140
|
+
/**
|
|
141
|
+
* Get ancestors of a node (path from root to node)
|
|
142
|
+
*
|
|
143
|
+
* @param root - The root node
|
|
144
|
+
* @param target - The target node to find
|
|
145
|
+
* @returns Array of ancestor nodes, or empty array if not found
|
|
146
|
+
*/
|
|
147
|
+
declare function getAncestors(root: AnyNode, target: AnyNode): AnyNode[];
|
|
148
|
+
/**
|
|
149
|
+
* Map over all nodes in the AST
|
|
150
|
+
*
|
|
151
|
+
* @param node - The starting node
|
|
152
|
+
* @param mapper - Function to transform each node
|
|
153
|
+
* @returns New AST with transformed nodes
|
|
154
|
+
*/
|
|
155
|
+
declare function mapNodes<T>(node: AnyNode, mapper: (node: AnyNode) => T): T[];
|
|
156
|
+
/**
|
|
157
|
+
* Clone an AST node (deep clone)
|
|
158
|
+
*
|
|
159
|
+
* @param node - The node to clone
|
|
160
|
+
* @returns A deep clone of the node
|
|
161
|
+
*/
|
|
162
|
+
declare function cloneNode<T extends AnyNode>(node: T): T;
|
|
163
|
+
/**
|
|
164
|
+
* Check if a node contains a specific child (at any depth)
|
|
165
|
+
*
|
|
166
|
+
* @param node - The parent node
|
|
167
|
+
* @param target - The target node to find
|
|
168
|
+
* @returns True if the target is found
|
|
169
|
+
*/
|
|
170
|
+
declare function contains(node: AnyNode, target: AnyNode): boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Get all node types present in the AST
|
|
173
|
+
*
|
|
174
|
+
* @param node - The starting node
|
|
175
|
+
* @returns Set of node types
|
|
176
|
+
*/
|
|
177
|
+
declare function getNodeTypes(node: AnyNode): Set<NodeType>;
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Device viewport presets for wireweave
|
|
181
|
+
*
|
|
182
|
+
* Standard device dimensions for wireframe design
|
|
183
|
+
*/
|
|
184
|
+
interface ViewportSize {
|
|
185
|
+
width: number;
|
|
186
|
+
height: number;
|
|
187
|
+
label: string;
|
|
188
|
+
category: 'desktop' | 'tablet' | 'mobile';
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Device preset definitions
|
|
192
|
+
*/
|
|
193
|
+
declare const DEVICE_PRESETS: Record<string, ViewportSize>;
|
|
194
|
+
/**
|
|
195
|
+
* Default viewport size (desktop)
|
|
196
|
+
*/
|
|
197
|
+
declare const DEFAULT_VIEWPORT: ViewportSize;
|
|
198
|
+
/**
|
|
199
|
+
* Parse viewport value (e.g., "1440x900", "1440", or number)
|
|
200
|
+
*/
|
|
201
|
+
declare function parseViewportString(value: string | number): {
|
|
202
|
+
width: number;
|
|
203
|
+
height?: number;
|
|
204
|
+
} | null;
|
|
205
|
+
/**
|
|
206
|
+
* Get viewport size from device preset or explicit size
|
|
207
|
+
*/
|
|
208
|
+
declare function resolveViewport(viewport?: string | number, device?: string): ViewportSize;
|
|
209
|
+
/**
|
|
210
|
+
* Get all available device presets
|
|
211
|
+
*/
|
|
212
|
+
declare function getDevicePresets(): Record<string, ViewportSize>;
|
|
213
|
+
/**
|
|
214
|
+
* Check if a device preset exists
|
|
215
|
+
*/
|
|
216
|
+
declare function isValidDevicePreset(device: string): boolean;
|
|
217
|
+
/**
|
|
218
|
+
* Calculate scale factor to fit viewport in container
|
|
219
|
+
*
|
|
220
|
+
* @param viewport - The viewport dimensions
|
|
221
|
+
* @param containerWidth - Available container width
|
|
222
|
+
* @param containerHeight - Available container height (optional)
|
|
223
|
+
* @param maxScale - Maximum scale factor (default: 1)
|
|
224
|
+
* @returns Scale factor (0-1 range, or up to maxScale)
|
|
225
|
+
*/
|
|
226
|
+
declare function calculateViewportScale(viewport: ViewportSize, containerWidth: number, containerHeight?: number, maxScale?: number): number;
|
|
227
|
+
/**
|
|
228
|
+
* Options for creating preview wrapper HTML
|
|
229
|
+
*/
|
|
230
|
+
interface PreviewWrapperOptions {
|
|
231
|
+
/** CSS class prefix (default: 'wf') */
|
|
232
|
+
prefix?: string;
|
|
233
|
+
/** Dark mode background */
|
|
234
|
+
darkMode?: boolean;
|
|
235
|
+
/** Container width for auto-scaling */
|
|
236
|
+
containerWidth?: number;
|
|
237
|
+
/** Container height for auto-scaling */
|
|
238
|
+
containerHeight?: number;
|
|
239
|
+
/** Custom scale (overrides auto-calculated scale) */
|
|
240
|
+
scale?: number;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Wrap rendered HTML in a preview container with scaling
|
|
244
|
+
*
|
|
245
|
+
* @param html - The rendered wireframe HTML
|
|
246
|
+
* @param viewport - The viewport size used for rendering
|
|
247
|
+
* @param options - Preview wrapper options
|
|
248
|
+
* @returns HTML string with preview wrapper
|
|
249
|
+
*/
|
|
250
|
+
declare function wrapInPreviewContainer(html: string, viewport: ViewportSize, options?: PreviewWrapperOptions): string;
|
|
251
|
+
|
|
252
|
+
export { AccordionNode, AlertNode, AnyNode, AvatarNode, BadgeNode, BreadcrumbNode, ButtonNode, CardNode, CheckboxNode, ColNode, ContainerComponentNode, ContainerNode, DEFAULT_VIEWPORT, DEVICE_PRESETS, DataNode, DisplayNode, DividerComponentNode, DrawerNode, DropdownNode, FeedbackNode, FooterNode, GridNode, HeaderNode, IconNode, ImageNode, InputComponentNode, InputNode, LayoutNode, LeafNode, LinkNode, ListNode, MainNode, ModalNode, NavNode, NavigationNode, type NodePredicate, NodeType, OverlayNode, PageNode, PlaceholderNode, PopoverNode, type PreviewWrapperOptions, ProgressNode, RadioNode, RowNode, SectionNode, SelectNode, SidebarNode, SliderNode, SpinnerNode, SwitchNode, TableNode, TabsNode, TextContentNode, TextNode, TextareaNode, TitleNode, ToastNode, TooltipNode, type ViewportSize, type WalkCallback, WireframeDocument, calculateViewportScale, cloneNode, contains, countNodes, find, findAll, findByType, getAncestors, getDevicePresets, getMaxDepth, getNodeTypes, hasChildren, isAccordionNode, isAlertNode, isAvatarNode, isBadgeNode, isBreadcrumbNode, isButtonNode, isCardNode, isCheckboxNode, isColNode, isContainerComponentNode, isContainerNode, isDataNode, isDisplayNode, isDividerNode, isDrawerNode, isDropdownNode, isFeedbackNode, isFooterNode, isGridNode, isHeaderNode, isIconNode, isImageNode, isInputComponentNode, isInputNode, isLayoutNode, isLeafNode, isLinkNode, isListNode, isMainNode, isModalNode, isNavNode, isNavigationNode, isNodeType, isOverlayNode, isPageNode, isPlaceholderNode, isPopoverNode, isProgressNode, isRadioNode, isRowNode, isSectionNode, isSelectNode, isSidebarNode, isSliderNode, isSpinnerNode, isSwitchNode, isTableNode, isTabsNode, isTextContentNode, isTextNode, isTextareaNode, isTitleNode, isToastNode, isTooltipNode, isValidDevicePreset, mapNodes, parseViewportString, resolveViewport, walk, walkDocument, wrapInPreviewContainer };
|