@swiftlysingh/excalidraw-cli 1.0.0 → 1.1.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/README.md +32 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +34 -15
- package/dist/cli.js.map +1 -1
- package/dist/factory/image-factory.d.ts +38 -0
- package/dist/factory/image-factory.d.ts.map +1 -0
- package/dist/factory/image-factory.js +169 -0
- package/dist/factory/image-factory.js.map +1 -0
- package/dist/factory/index.d.ts +1 -0
- package/dist/factory/index.d.ts.map +1 -1
- package/dist/factory/index.js +1 -0
- package/dist/factory/index.js.map +1 -1
- package/dist/factory/text-factory.d.ts.map +1 -1
- package/dist/factory/text-factory.js.map +1 -1
- package/dist/generator/excalidraw-generator.d.ts.map +1 -1
- package/dist/generator/excalidraw-generator.js +124 -26
- package/dist/generator/excalidraw-generator.js.map +1 -1
- package/dist/layout/elk-layout.d.ts.map +1 -1
- package/dist/layout/elk-layout.js +99 -3
- package/dist/layout/elk-layout.js.map +1 -1
- package/dist/parser/dot-parser.d.ts +23 -0
- package/dist/parser/dot-parser.d.ts.map +1 -0
- package/dist/parser/dot-parser.js +277 -0
- package/dist/parser/dot-parser.js.map +1 -0
- package/dist/parser/dsl-parser.d.ts +10 -0
- package/dist/parser/dsl-parser.d.ts.map +1 -1
- package/dist/parser/dsl-parser.js +214 -8
- package/dist/parser/dsl-parser.js.map +1 -1
- package/dist/parser/index.d.ts +1 -0
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +1 -0
- package/dist/parser/index.js.map +1 -1
- package/dist/types/dsl.d.ts +68 -1
- package/dist/types/dsl.d.ts.map +1 -1
- package/dist/types/dsl.js.map +1 -1
- package/dist/types/excalidraw.d.ts +22 -3
- package/dist/types/excalidraw.d.ts.map +1 -1
- package/dist/types/excalidraw.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DOT/Graphviz Parser
|
|
3
|
+
*
|
|
4
|
+
* Parses DOT language syntax and converts to FlowchartGraph.
|
|
5
|
+
* Uses ts-graphviz library for parsing.
|
|
6
|
+
*
|
|
7
|
+
* Supported DOT features:
|
|
8
|
+
* - digraph and graph declarations
|
|
9
|
+
* - Node declarations with labels and shapes
|
|
10
|
+
* - Edges: A -> B (directed) and A -- B (undirected)
|
|
11
|
+
* - Edge labels: [label="text"]
|
|
12
|
+
* - Node shapes: [shape=diamond|ellipse|box|cylinder]
|
|
13
|
+
* - Graph direction: rankdir=TB|BT|LR|RL
|
|
14
|
+
* - Dashed edges: [style=dashed]
|
|
15
|
+
* - Subgraphs (flattened to regular nodes)
|
|
16
|
+
* - Color attributes (fillcolor, color)
|
|
17
|
+
*/
|
|
18
|
+
import { fromDot } from 'ts-graphviz';
|
|
19
|
+
import { nanoid } from 'nanoid';
|
|
20
|
+
import { DEFAULT_LAYOUT_OPTIONS } from '../types/dsl.js';
|
|
21
|
+
/**
|
|
22
|
+
* Map DOT shape names to our NodeType
|
|
23
|
+
*/
|
|
24
|
+
function mapDotShape(dotShape) {
|
|
25
|
+
if (!dotShape)
|
|
26
|
+
return 'rectangle';
|
|
27
|
+
const shape = dotShape.toLowerCase();
|
|
28
|
+
switch (shape) {
|
|
29
|
+
case 'ellipse':
|
|
30
|
+
case 'oval':
|
|
31
|
+
case 'circle':
|
|
32
|
+
return 'ellipse';
|
|
33
|
+
case 'diamond':
|
|
34
|
+
return 'diamond';
|
|
35
|
+
case 'cylinder':
|
|
36
|
+
case 'record':
|
|
37
|
+
case 'mrecord':
|
|
38
|
+
return 'database';
|
|
39
|
+
case 'box':
|
|
40
|
+
case 'rect':
|
|
41
|
+
case 'rectangle':
|
|
42
|
+
case 'square':
|
|
43
|
+
default:
|
|
44
|
+
return 'rectangle';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Map DOT rankdir to our FlowDirection
|
|
49
|
+
*/
|
|
50
|
+
function mapRankDir(rankdir) {
|
|
51
|
+
if (!rankdir)
|
|
52
|
+
return undefined;
|
|
53
|
+
const dir = rankdir.toUpperCase();
|
|
54
|
+
if (dir === 'TB' || dir === 'BT' || dir === 'LR' || dir === 'RL') {
|
|
55
|
+
return dir;
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if a DOT style attribute contains a specific style value.
|
|
61
|
+
* DOT style attributes can be comma-separated (e.g., "filled,dashed").
|
|
62
|
+
* This function splits by comma and checks for exact matches to avoid
|
|
63
|
+
* false positives like "dashedline" matching "dashed".
|
|
64
|
+
*/
|
|
65
|
+
function hasStyleValue(styleAttr, value) {
|
|
66
|
+
const styles = styleAttr.split(',').map((s) => s.trim().toLowerCase());
|
|
67
|
+
return styles.includes(value.toLowerCase());
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Extract node style from DOT attributes
|
|
71
|
+
*/
|
|
72
|
+
function extractNodeStyle(node) {
|
|
73
|
+
const style = {};
|
|
74
|
+
let hasStyle = false;
|
|
75
|
+
const fillcolor = node.attributes.get('fillcolor');
|
|
76
|
+
if (fillcolor && typeof fillcolor === 'string') {
|
|
77
|
+
style.backgroundColor = fillcolor;
|
|
78
|
+
hasStyle = true;
|
|
79
|
+
}
|
|
80
|
+
const color = node.attributes.get('color');
|
|
81
|
+
if (color && typeof color === 'string') {
|
|
82
|
+
style.strokeColor = color;
|
|
83
|
+
hasStyle = true;
|
|
84
|
+
}
|
|
85
|
+
const styleAttr = node.attributes.get('style');
|
|
86
|
+
if (styleAttr && typeof styleAttr === 'string') {
|
|
87
|
+
if (hasStyleValue(styleAttr, 'dashed')) {
|
|
88
|
+
style.strokeStyle = 'dashed';
|
|
89
|
+
hasStyle = true;
|
|
90
|
+
}
|
|
91
|
+
else if (hasStyleValue(styleAttr, 'dotted')) {
|
|
92
|
+
style.strokeStyle = 'dotted';
|
|
93
|
+
hasStyle = true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return hasStyle ? style : undefined;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Extract edge style from DOT attributes
|
|
100
|
+
*/
|
|
101
|
+
function extractEdgeStyle(edge) {
|
|
102
|
+
const style = {};
|
|
103
|
+
let hasStyle = false;
|
|
104
|
+
const color = edge.attributes.get('color');
|
|
105
|
+
if (color && typeof color === 'string') {
|
|
106
|
+
style.strokeColor = color;
|
|
107
|
+
hasStyle = true;
|
|
108
|
+
}
|
|
109
|
+
const styleAttr = edge.attributes.get('style');
|
|
110
|
+
if (styleAttr && typeof styleAttr === 'string') {
|
|
111
|
+
if (hasStyleValue(styleAttr, 'dashed')) {
|
|
112
|
+
style.strokeStyle = 'dashed';
|
|
113
|
+
hasStyle = true;
|
|
114
|
+
}
|
|
115
|
+
else if (hasStyleValue(styleAttr, 'dotted')) {
|
|
116
|
+
style.strokeStyle = 'dotted';
|
|
117
|
+
hasStyle = true;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return hasStyle ? style : undefined;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get the node ID from an edge target (handles NodeModel and ForwardRefNode/plain objects)
|
|
124
|
+
*/
|
|
125
|
+
function getNodeIdFromTarget(target) {
|
|
126
|
+
if (!target)
|
|
127
|
+
return null;
|
|
128
|
+
// Handle NodeModel or ForwardRefNode (both have id property)
|
|
129
|
+
if (typeof target === 'object' && 'id' in target && typeof target.id === 'string') {
|
|
130
|
+
return target.id;
|
|
131
|
+
}
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Recursively collect all explicit nodes from a graph and its subgraphs
|
|
136
|
+
*/
|
|
137
|
+
function collectExplicitNodes(graph, explicitNodes) {
|
|
138
|
+
// Process explicit nodes in this graph
|
|
139
|
+
for (const node of graph.nodes) {
|
|
140
|
+
if (!explicitNodes.has(node.id)) {
|
|
141
|
+
explicitNodes.set(node.id, node);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Recursively process subgraphs
|
|
145
|
+
for (const subgraph of graph.subgraphs) {
|
|
146
|
+
collectExplicitNodes(subgraph, explicitNodes);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Recursively collect all node IDs referenced in edges
|
|
151
|
+
*/
|
|
152
|
+
function collectNodeIdsFromEdges(graph, nodeIds) {
|
|
153
|
+
for (const edge of graph.edges) {
|
|
154
|
+
const targets = edge.targets;
|
|
155
|
+
if (!targets)
|
|
156
|
+
continue;
|
|
157
|
+
for (const target of targets) {
|
|
158
|
+
const id = getNodeIdFromTarget(target);
|
|
159
|
+
if (id) {
|
|
160
|
+
nodeIds.add(id);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Recursively process subgraphs
|
|
165
|
+
for (const subgraph of graph.subgraphs) {
|
|
166
|
+
collectNodeIdsFromEdges(subgraph, nodeIds);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Recursively collect all edges from a graph and its subgraphs
|
|
171
|
+
*/
|
|
172
|
+
function collectEdges(graph, nodeMap, edges) {
|
|
173
|
+
// Process edges in this graph
|
|
174
|
+
for (const edge of graph.edges) {
|
|
175
|
+
const targets = edge.targets;
|
|
176
|
+
if (!targets || targets.length < 2)
|
|
177
|
+
continue;
|
|
178
|
+
// Process edge chain (A -> B -> C becomes A->B and B->C)
|
|
179
|
+
for (let i = 0; i < targets.length - 1; i++) {
|
|
180
|
+
const sourceId = getNodeIdFromTarget(targets[i]);
|
|
181
|
+
const targetId = getNodeIdFromTarget(targets[i + 1]);
|
|
182
|
+
if (!sourceId || !targetId)
|
|
183
|
+
continue;
|
|
184
|
+
const sourceNode = nodeMap.get(sourceId);
|
|
185
|
+
const targetNode = nodeMap.get(targetId);
|
|
186
|
+
if (!sourceNode || !targetNode)
|
|
187
|
+
continue;
|
|
188
|
+
const label = edge.attributes.get('label');
|
|
189
|
+
const edgeStyle = extractEdgeStyle(edge);
|
|
190
|
+
edges.push({
|
|
191
|
+
id: nanoid(10),
|
|
192
|
+
source: sourceNode.id,
|
|
193
|
+
target: targetNode.id,
|
|
194
|
+
label: typeof label === 'string' ? label : undefined,
|
|
195
|
+
style: edgeStyle,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Recursively process subgraphs
|
|
200
|
+
for (const subgraph of graph.subgraphs) {
|
|
201
|
+
collectEdges(subgraph, nodeMap, edges);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Parse DOT string into a FlowchartGraph
|
|
206
|
+
*/
|
|
207
|
+
export function parseDOT(input) {
|
|
208
|
+
let rootGraph;
|
|
209
|
+
try {
|
|
210
|
+
rootGraph = fromDot(input);
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
214
|
+
throw new Error(`Invalid DOT syntax: ${message}`);
|
|
215
|
+
}
|
|
216
|
+
const options = { ...DEFAULT_LAYOUT_OPTIONS };
|
|
217
|
+
// Extract graph-level attributes using get() on the root graph
|
|
218
|
+
const rankdir = rootGraph.get('rankdir');
|
|
219
|
+
const direction = mapRankDir(typeof rankdir === 'string' ? rankdir : undefined);
|
|
220
|
+
if (direction) {
|
|
221
|
+
options.direction = direction;
|
|
222
|
+
}
|
|
223
|
+
const nodesep = rootGraph.get('nodesep');
|
|
224
|
+
if (typeof nodesep === 'number') {
|
|
225
|
+
// nodesep is in inches, convert to approximate pixels (72 dpi)
|
|
226
|
+
options.nodeSpacing = Math.round(nodesep * 72);
|
|
227
|
+
}
|
|
228
|
+
const ranksep = rootGraph.get('ranksep');
|
|
229
|
+
if (typeof ranksep === 'number') {
|
|
230
|
+
// ranksep is in inches, convert to approximate pixels (72 dpi)
|
|
231
|
+
options.rankSpacing = Math.round(ranksep * 72);
|
|
232
|
+
}
|
|
233
|
+
// Step 1: Collect all explicit nodes (declared with attributes)
|
|
234
|
+
const explicitNodes = new Map();
|
|
235
|
+
collectExplicitNodes(rootGraph, explicitNodes);
|
|
236
|
+
// Step 2: Collect all node IDs referenced in edges (including implicit nodes)
|
|
237
|
+
const allNodeIds = new Set();
|
|
238
|
+
collectNodeIdsFromEdges(rootGraph, allNodeIds);
|
|
239
|
+
// Also add explicit node IDs
|
|
240
|
+
for (const nodeId of explicitNodes.keys()) {
|
|
241
|
+
allNodeIds.add(nodeId);
|
|
242
|
+
}
|
|
243
|
+
// Step 3: Build the node map (merging explicit attributes with implicit nodes)
|
|
244
|
+
const nodeMap = new Map();
|
|
245
|
+
for (const nodeId of allNodeIds) {
|
|
246
|
+
const explicitNode = explicitNodes.get(nodeId);
|
|
247
|
+
if (explicitNode) {
|
|
248
|
+
// Node was explicitly declared - use its attributes
|
|
249
|
+
const label = explicitNode.attributes.get('label');
|
|
250
|
+
const shape = explicitNode.attributes.get('shape');
|
|
251
|
+
const nodeStyle = extractNodeStyle(explicitNode);
|
|
252
|
+
nodeMap.set(nodeId, {
|
|
253
|
+
id: nanoid(10),
|
|
254
|
+
type: mapDotShape(typeof shape === 'string' ? shape : undefined),
|
|
255
|
+
label: typeof label === 'string' ? label : nodeId,
|
|
256
|
+
style: nodeStyle,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
// Implicit node (only referenced in edges) - use defaults
|
|
261
|
+
nodeMap.set(nodeId, {
|
|
262
|
+
id: nanoid(10),
|
|
263
|
+
type: 'rectangle',
|
|
264
|
+
label: nodeId,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
// Step 4: Collect all edges
|
|
269
|
+
const edges = [];
|
|
270
|
+
collectEdges(rootGraph, nodeMap, edges);
|
|
271
|
+
return {
|
|
272
|
+
nodes: Array.from(nodeMap.values()),
|
|
273
|
+
edges,
|
|
274
|
+
options,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=dot-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dot-parser.js","sourceRoot":"","sources":["../../src/parser/dot-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,21 @@
|
|
|
6
6
|
* {Label} - Diamond (decision)
|
|
7
7
|
* (Label) - Ellipse (start/end)
|
|
8
8
|
* [[Label]] - Database
|
|
9
|
+
* ![path] - Image element
|
|
10
|
+
*  - Image with dimensions
|
|
9
11
|
* A -> B - Connection
|
|
10
12
|
* A -> "label" -> B - Labeled connection
|
|
11
13
|
* A --> B - Dashed connection
|
|
14
|
+
*
|
|
15
|
+
* Directives:
|
|
12
16
|
* @direction TB - Set flow direction (TB, BT, LR, RL)
|
|
13
17
|
* @spacing N - Set node spacing
|
|
18
|
+
* @image path at X,Y - Position image at absolute coordinates
|
|
19
|
+
* @image path near (NodeLabel) - Position image near a node
|
|
20
|
+
* @decorate path anchor - Attach decoration to preceding node
|
|
21
|
+
* @sticker name [at X,Y] - Add sticker from library
|
|
22
|
+
* @library path - Set custom sticker library path
|
|
23
|
+
* @scatter path count:N - Scatter images across canvas
|
|
14
24
|
*/
|
|
15
25
|
import type { FlowchartGraph } from '../types/dsl.js';
|
|
16
26
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsl-parser.d.ts","sourceRoot":"","sources":["../../src/parser/dsl-parser.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dsl-parser.d.ts","sourceRoot":"","sources":["../../src/parser/dsl-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EACV,cAAc,EASf,MAAM,iBAAiB,CAAC;AAoRzB;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAuLtD;AAGD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -6,11 +6,21 @@
|
|
|
6
6
|
* {Label} - Diamond (decision)
|
|
7
7
|
* (Label) - Ellipse (start/end)
|
|
8
8
|
* [[Label]] - Database
|
|
9
|
+
* ![path] - Image element
|
|
10
|
+
*  - Image with dimensions
|
|
9
11
|
* A -> B - Connection
|
|
10
12
|
* A -> "label" -> B - Labeled connection
|
|
11
13
|
* A --> B - Dashed connection
|
|
14
|
+
*
|
|
15
|
+
* Directives:
|
|
12
16
|
* @direction TB - Set flow direction (TB, BT, LR, RL)
|
|
13
17
|
* @spacing N - Set node spacing
|
|
18
|
+
* @image path at X,Y - Position image at absolute coordinates
|
|
19
|
+
* @image path near (NodeLabel) - Position image near a node
|
|
20
|
+
* @decorate path anchor - Attach decoration to preceding node
|
|
21
|
+
* @sticker name [at X,Y] - Add sticker from library
|
|
22
|
+
* @library path - Set custom sticker library path
|
|
23
|
+
* @scatter path count:N - Scatter images across canvas
|
|
14
24
|
*/
|
|
15
25
|
import { nanoid } from 'nanoid';
|
|
16
26
|
import { DEFAULT_LAYOUT_OPTIONS } from '../types/dsl.js';
|
|
@@ -39,7 +49,42 @@ function tokenize(input) {
|
|
|
39
49
|
i++;
|
|
40
50
|
continue;
|
|
41
51
|
}
|
|
42
|
-
//
|
|
52
|
+
// Image ![path] or 
|
|
53
|
+
if (input[i] === '!' && input[i + 1] === '[') {
|
|
54
|
+
i += 2; // skip ![
|
|
55
|
+
let src = '';
|
|
56
|
+
while (i < len && input[i] !== ']') {
|
|
57
|
+
src += input[i];
|
|
58
|
+
i++;
|
|
59
|
+
}
|
|
60
|
+
i++; // skip ]
|
|
61
|
+
let width;
|
|
62
|
+
let height;
|
|
63
|
+
// Check for optional dimensions (WxH)
|
|
64
|
+
if (i < len && input[i] === '(') {
|
|
65
|
+
i++; // skip (
|
|
66
|
+
let dims = '';
|
|
67
|
+
while (i < len && input[i] !== ')') {
|
|
68
|
+
dims += input[i];
|
|
69
|
+
i++;
|
|
70
|
+
}
|
|
71
|
+
i++; // skip )
|
|
72
|
+
const match = dims.match(/^(\d+)\s*[xX]\s*(\d+)$/);
|
|
73
|
+
if (match) {
|
|
74
|
+
width = parseInt(match[1], 10);
|
|
75
|
+
height = parseInt(match[2], 10);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
tokens.push({
|
|
79
|
+
type: 'image',
|
|
80
|
+
value: src.trim(),
|
|
81
|
+
imageSrc: src.trim(),
|
|
82
|
+
imageWidth: width,
|
|
83
|
+
imageHeight: height,
|
|
84
|
+
});
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// Directive (@direction, @spacing, @image, @decorate, @sticker, @library, @scatter)
|
|
43
88
|
if (input[i] === '@') {
|
|
44
89
|
let directive = '';
|
|
45
90
|
i++; // skip @
|
|
@@ -47,15 +92,30 @@ function tokenize(input) {
|
|
|
47
92
|
directive += input[i];
|
|
48
93
|
i++;
|
|
49
94
|
}
|
|
50
|
-
// Get directive value
|
|
95
|
+
// Get directive value (stop at newline, comment, or another @)
|
|
51
96
|
while (i < len && (input[i] === ' ' || input[i] === '\t'))
|
|
52
97
|
i++;
|
|
53
98
|
let value = '';
|
|
54
|
-
while (i < len && input[i] !== '\n' && input[i] !== '#') {
|
|
99
|
+
while (i < len && input[i] !== '\n' && input[i] !== '#' && input[i] !== '@') {
|
|
55
100
|
value += input[i];
|
|
56
101
|
i++;
|
|
57
102
|
}
|
|
58
|
-
|
|
103
|
+
// Handle @decorate as a special token type (attaches to preceding node)
|
|
104
|
+
if (directive === 'decorate') {
|
|
105
|
+
// Parse: @decorate path anchor
|
|
106
|
+
const parts = value.trim().split(/\s+/);
|
|
107
|
+
const src = parts[0] || '';
|
|
108
|
+
const anchor = (parts[1] || 'top-right');
|
|
109
|
+
tokens.push({
|
|
110
|
+
type: 'decorate',
|
|
111
|
+
value: src,
|
|
112
|
+
imageSrc: src,
|
|
113
|
+
decorationAnchor: anchor,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
tokens.push({ type: 'directive', value: `${directive} ${value.trim()}` });
|
|
118
|
+
}
|
|
59
119
|
continue;
|
|
60
120
|
}
|
|
61
121
|
// Database [[Label]]
|
|
@@ -156,6 +216,65 @@ function tokenize(input) {
|
|
|
156
216
|
}
|
|
157
217
|
return tokens;
|
|
158
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Parse @image directive value
|
|
221
|
+
* Formats:
|
|
222
|
+
* @image path at X,Y
|
|
223
|
+
* @image path near (NodeLabel)
|
|
224
|
+
* @image path near (NodeLabel) anchor
|
|
225
|
+
*/
|
|
226
|
+
function parseImageDirective(value) {
|
|
227
|
+
// Match: path at X,Y
|
|
228
|
+
const atMatch = value.match(/^(.+?)\s+at\s+(\d+)\s*,\s*(\d+)$/i);
|
|
229
|
+
if (atMatch) {
|
|
230
|
+
return {
|
|
231
|
+
id: nanoid(10),
|
|
232
|
+
src: atMatch[1].trim(),
|
|
233
|
+
position: {
|
|
234
|
+
type: 'absolute',
|
|
235
|
+
x: parseInt(atMatch[2], 10),
|
|
236
|
+
y: parseInt(atMatch[3], 10),
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
// Match: path near (NodeLabel) [anchor]
|
|
241
|
+
const nearMatch = value.match(/^(.+?)\s+near\s+\(([^)]+)\)(?:\s+(\S+))?$/i);
|
|
242
|
+
if (nearMatch) {
|
|
243
|
+
return {
|
|
244
|
+
id: nanoid(10),
|
|
245
|
+
src: nearMatch[1].trim(),
|
|
246
|
+
position: {
|
|
247
|
+
type: 'near',
|
|
248
|
+
nodeLabel: nearMatch[2].trim(),
|
|
249
|
+
anchor: nearMatch[3] || undefined,
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Parse @scatter directive value
|
|
257
|
+
* Format: @scatter path count:N [width:W] [height:H]
|
|
258
|
+
*/
|
|
259
|
+
function parseScatterDirective(value) {
|
|
260
|
+
const parts = value.trim().split(/\s+/);
|
|
261
|
+
if (parts.length < 2)
|
|
262
|
+
return null;
|
|
263
|
+
const src = parts[0];
|
|
264
|
+
let count = 10; // default
|
|
265
|
+
let width;
|
|
266
|
+
let height;
|
|
267
|
+
for (let i = 1; i < parts.length; i++) {
|
|
268
|
+
const [key, val] = parts[i].split(':');
|
|
269
|
+
if (key === 'count' && val)
|
|
270
|
+
count = parseInt(val, 10);
|
|
271
|
+
if (key === 'width' && val)
|
|
272
|
+
width = parseInt(val, 10);
|
|
273
|
+
if (key === 'height' && val)
|
|
274
|
+
height = parseInt(val, 10);
|
|
275
|
+
}
|
|
276
|
+
return { src, count, width, height };
|
|
277
|
+
}
|
|
159
278
|
/**
|
|
160
279
|
* Parse tokens into a FlowchartGraph
|
|
161
280
|
*/
|
|
@@ -164,16 +283,23 @@ export function parseDSL(input) {
|
|
|
164
283
|
const nodes = new Map();
|
|
165
284
|
const edges = [];
|
|
166
285
|
const options = { ...DEFAULT_LAYOUT_OPTIONS };
|
|
286
|
+
const images = [];
|
|
287
|
+
const scatter = [];
|
|
288
|
+
let library;
|
|
167
289
|
// Helper to get or create node by label
|
|
168
|
-
function getOrCreateNode(label, type) {
|
|
290
|
+
function getOrCreateNode(label, type, imageData) {
|
|
169
291
|
// Use label as key for deduplication
|
|
170
292
|
const key = `${type}:${label}`;
|
|
171
293
|
if (!nodes.has(key)) {
|
|
172
|
-
|
|
294
|
+
const node = {
|
|
173
295
|
id: nanoid(10),
|
|
174
296
|
type,
|
|
175
297
|
label,
|
|
176
|
-
}
|
|
298
|
+
};
|
|
299
|
+
if (imageData) {
|
|
300
|
+
node.image = imageData;
|
|
301
|
+
}
|
|
302
|
+
nodes.set(key, node);
|
|
177
303
|
}
|
|
178
304
|
return nodes.get(key);
|
|
179
305
|
}
|
|
@@ -205,6 +331,79 @@ export function parseDSL(input) {
|
|
|
205
331
|
options.nodeSpacing = spacing;
|
|
206
332
|
}
|
|
207
333
|
}
|
|
334
|
+
else if (directive === 'image') {
|
|
335
|
+
const img = parseImageDirective(value);
|
|
336
|
+
if (img)
|
|
337
|
+
images.push(img);
|
|
338
|
+
}
|
|
339
|
+
else if (directive === 'scatter') {
|
|
340
|
+
const cfg = parseScatterDirective(value);
|
|
341
|
+
if (cfg)
|
|
342
|
+
scatter.push(cfg);
|
|
343
|
+
}
|
|
344
|
+
else if (directive === 'library') {
|
|
345
|
+
library = value.trim();
|
|
346
|
+
}
|
|
347
|
+
else if (directive === 'sticker') {
|
|
348
|
+
// Stickers are resolved later using the library path
|
|
349
|
+
// For now, treat as positioned image with sticker: prefix
|
|
350
|
+
const parts = value.trim().split(/\s+/);
|
|
351
|
+
const stickerName = parts[0];
|
|
352
|
+
if (stickerName) {
|
|
353
|
+
// Check for positioning (at or near)
|
|
354
|
+
const restValue = parts.slice(1).join(' ');
|
|
355
|
+
if (restValue.includes('at') || restValue.includes('near')) {
|
|
356
|
+
const img = parseImageDirective(`sticker:${stickerName} ${restValue}`);
|
|
357
|
+
if (img)
|
|
358
|
+
images.push(img);
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
// Standalone sticker - will be placed at default position
|
|
362
|
+
images.push({
|
|
363
|
+
id: nanoid(10),
|
|
364
|
+
src: `sticker:${stickerName}`,
|
|
365
|
+
position: { type: 'absolute', x: 0, y: 0 }, // Will be resolved later
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
i++;
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
if (token.type === 'image') {
|
|
374
|
+
// Create an image node
|
|
375
|
+
const imageData = {
|
|
376
|
+
src: token.imageSrc,
|
|
377
|
+
width: token.imageWidth,
|
|
378
|
+
height: token.imageHeight,
|
|
379
|
+
};
|
|
380
|
+
const node = getOrCreateNode(token.value, 'image', imageData);
|
|
381
|
+
if (lastNode) {
|
|
382
|
+
edges.push({
|
|
383
|
+
id: nanoid(10),
|
|
384
|
+
source: lastNode.id,
|
|
385
|
+
target: node.id,
|
|
386
|
+
label: pendingLabel || undefined,
|
|
387
|
+
style: pendingDashed ? { strokeStyle: 'dashed' } : undefined,
|
|
388
|
+
});
|
|
389
|
+
pendingLabel = null;
|
|
390
|
+
pendingDashed = false;
|
|
391
|
+
}
|
|
392
|
+
lastNode = node;
|
|
393
|
+
i++;
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
if (token.type === 'decorate') {
|
|
397
|
+
// Attach decoration to the last node
|
|
398
|
+
if (lastNode) {
|
|
399
|
+
if (!lastNode.decorations) {
|
|
400
|
+
lastNode.decorations = [];
|
|
401
|
+
}
|
|
402
|
+
lastNode.decorations.push({
|
|
403
|
+
src: token.imageSrc,
|
|
404
|
+
anchor: token.decorationAnchor || 'top-right',
|
|
405
|
+
});
|
|
406
|
+
}
|
|
208
407
|
i++;
|
|
209
408
|
continue;
|
|
210
409
|
}
|
|
@@ -238,11 +437,18 @@ export function parseDSL(input) {
|
|
|
238
437
|
}
|
|
239
438
|
i++;
|
|
240
439
|
}
|
|
241
|
-
|
|
440
|
+
const result = {
|
|
242
441
|
nodes: Array.from(nodes.values()),
|
|
243
442
|
edges,
|
|
244
443
|
options,
|
|
245
444
|
};
|
|
445
|
+
if (images.length > 0)
|
|
446
|
+
result.images = images;
|
|
447
|
+
if (scatter.length > 0)
|
|
448
|
+
result.scatter = scatter;
|
|
449
|
+
if (library)
|
|
450
|
+
result.library = library;
|
|
451
|
+
return result;
|
|
246
452
|
}
|
|
247
453
|
// Re-export DEFAULT_LAYOUT_OPTIONS
|
|
248
454
|
export { DEFAULT_LAYOUT_OPTIONS } from '../types/dsl.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsl-parser.js","sourceRoot":"","sources":["../../src/parser/dsl-parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dsl-parser.js","sourceRoot":"","sources":["../../src/parser/dsl-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC"}
|