excalidraw-gen 0.1.1 → 0.1.3

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 CHANGED
@@ -24,17 +24,29 @@ Define your diagram with nodes, edges, types, colors, sizes, and arrow styles
24
24
 
25
25
  ## Installation
26
26
 
27
+ ### npx (no install required)
28
+
29
+ Run directly without installing anything:
30
+
27
31
  ```bash
28
- git clone https://github.com/your-username/excalidraw-gen.git
29
- cd excalidraw-gen
30
- npm install
31
- npm run build
32
+ npx excalidraw-gen generate diagram.json --out out.excalidraw
32
33
  ```
33
34
 
34
- To use globally:
35
+ ### Global install
35
36
 
36
37
  ```bash
37
- npm link
38
+ npm install -g excalidraw-gen
39
+ excalidraw-gen generate diagram.json --out out.excalidraw
40
+ ```
41
+
42
+ ### From source
43
+
44
+ ```bash
45
+ git clone https://github.com/fizznix/excalidraw-gen.git
46
+ cd excalidraw-gen
47
+ npm install
48
+ npm run build
49
+ npm link # makes excalidraw-gen available globally
38
50
  ```
39
51
 
40
52
  ---
@@ -10,5 +10,8 @@ export declare const VERTICAL_THRESHOLD = 60;
10
10
  *
11
11
  * @param sourceEdgeIndex 0-based index of this arrow among all arrows sharing the same source edge
12
12
  * @param totalFromSource total count of arrows leaving from the same edge of source
13
+ * @param targetEdgeIndex 0-based index of this arrow among all arrows arriving at the same target edge
14
+ * @param totalToTarget total count of arrows arriving at the same edge of target
15
+ * @param allNodes all layout nodes — used for obstacle avoidance
13
16
  */
14
- export declare function routeArrow(source: LayoutNode, target: LayoutNode, sourceEdgeIndex?: number, totalFromSource?: number): ArrowRoute;
17
+ export declare function routeArrow(source: LayoutNode, target: LayoutNode, sourceEdgeIndex?: number, totalFromSource?: number, targetEdgeIndex?: number, totalToTarget?: number, allNodes?: LayoutNode[]): ArrowRoute;
@@ -31,17 +31,19 @@ function getEdgeAnchor(node, side) {
31
31
  }
32
32
  return { x, y, side, fixedPoint: FIXED_POINTS[side] };
33
33
  }
34
- /** Stagger start anchor for N arrows leaving the same edge.
35
- * Only applied to left/right exits — for top/bottom, the step routing
36
- * pattern naturally keeps arrows distinguishable without staggering the start.
37
- */
34
+ /** Stagger anchor for N arrows sharing the same edge of a node. */
38
35
  function staggerAnchor(node, side, index, total) {
39
- // Top/bottom exits: always use center — step routing handles fan-out visually
40
- if (side === "top" || side === "bottom" || total <= 1) {
36
+ if (total <= 1) {
41
37
  return getEdgeAnchor(node, side);
42
38
  }
43
- // Left/right exits: stagger vertically along the edge
44
39
  const pct = 0.2 + (0.6 * index) / (total - 1);
40
+ if (side === "top" || side === "bottom") {
41
+ // Stagger horizontally along the top/bottom edge
42
+ const x = node.x + node.width * pct;
43
+ const y = side === "bottom" ? node.y + node.height : node.y;
44
+ return { x, y, side, fixedPoint: [pct, FIXED_POINTS[side][1]] };
45
+ }
46
+ // Left/right exits: stagger vertically along the edge
45
47
  const x = side === "right" ? node.x + node.width : node.x;
46
48
  const y = node.y + node.height * pct;
47
49
  return {
@@ -153,18 +155,89 @@ function buildElbowPoints(sourceAnchor, targetAnchor) {
153
155
  // Fallback — straight line
154
156
  return [[0, 0], [dx, dy]];
155
157
  }
158
+ // ── Obstacle avoidance ───────────────────────────────────────────────────────
159
+ const OBSTACLE_PAD = 20;
160
+ /**
161
+ * Post-process elbow points so vertical segments don't cross through
162
+ * intermediate nodes. When a vertical segment intersects a node, a
163
+ * horizontal detour is inserted around the obstacle.
164
+ */
165
+ function avoidObstacles(relPoints, sourceAnchor, allNodes, sourceId, targetId) {
166
+ const excludeIds = new Set([sourceId, targetId]);
167
+ const obstacles = allNodes.filter((n) => !excludeIds.has(n.id));
168
+ if (obstacles.length === 0)
169
+ return relPoints;
170
+ const toAbs = (p) => [
171
+ sourceAnchor.x + p[0],
172
+ sourceAnchor.y + p[1],
173
+ ];
174
+ const toRel = (p) => [
175
+ p[0] - sourceAnchor.x,
176
+ p[1] - sourceAnchor.y,
177
+ ];
178
+ const abs = relPoints.map(toAbs);
179
+ const result = [abs[0]];
180
+ for (let i = 0; i < abs.length - 1; i++) {
181
+ const [x1, y1] = abs[i];
182
+ const [x2, y2] = abs[i + 1];
183
+ const isVertical = Math.abs(x2 - x1) < 2;
184
+ if (isVertical) {
185
+ const segX = x1;
186
+ const minY = Math.min(y1, y2);
187
+ const maxY = Math.max(y1, y2);
188
+ const goingDown = y2 > y1;
189
+ // Find nodes whose padded bounding box is crossed by this vertical segment
190
+ const blockers = obstacles.filter((n) => segX > n.x - OBSTACLE_PAD &&
191
+ segX < n.x + n.width + OBSTACLE_PAD &&
192
+ maxY > n.y &&
193
+ minY < n.y + n.height);
194
+ if (blockers.length > 0) {
195
+ // Combined bounding box of all blockers on this segment
196
+ const bLeft = Math.min(...blockers.map((n) => n.x));
197
+ const bRight = Math.max(...blockers.map((n) => n.x + n.width));
198
+ const bTop = Math.min(...blockers.map((n) => n.y));
199
+ const bBottom = Math.max(...blockers.map((n) => n.y + n.height));
200
+ // Detour left or right — pick the closer clear side
201
+ const leftX = bLeft - OBSTACLE_PAD;
202
+ const rightX = bRight + OBSTACLE_PAD;
203
+ const detourX = Math.abs(segX - leftX) <= Math.abs(segX - rightX) ? leftX : rightX;
204
+ // Enter detour before the blocker, exit after it
205
+ const enterY = goingDown
206
+ ? Math.max(y1, bTop - OBSTACLE_PAD)
207
+ : Math.min(y1, bBottom + OBSTACLE_PAD);
208
+ const exitY = goingDown
209
+ ? Math.min(y2, bBottom + OBSTACLE_PAD)
210
+ : Math.max(y2, bTop - OBSTACLE_PAD);
211
+ result.push([segX, enterY]);
212
+ result.push([detourX, enterY]);
213
+ result.push([detourX, exitY]);
214
+ result.push([segX, exitY]);
215
+ result.push(abs[i + 1]);
216
+ continue;
217
+ }
218
+ }
219
+ result.push(abs[i + 1]);
220
+ }
221
+ return result.map(toRel);
222
+ }
156
223
  // ── Public API ───────────────────────────────────────────────────────────────
157
224
  /**
158
225
  * Route an elbow arrow from source → target nodes.
159
226
  *
160
227
  * @param sourceEdgeIndex 0-based index of this arrow among all arrows sharing the same source edge
161
228
  * @param totalFromSource total count of arrows leaving from the same edge of source
229
+ * @param targetEdgeIndex 0-based index of this arrow among all arrows arriving at the same target edge
230
+ * @param totalToTarget total count of arrows arriving at the same edge of target
231
+ * @param allNodes all layout nodes — used for obstacle avoidance
162
232
  */
163
- function routeArrow(source, target, sourceEdgeIndex = 0, totalFromSource = 1) {
233
+ function routeArrow(source, target, sourceEdgeIndex = 0, totalFromSource = 1, targetEdgeIndex = 0, totalToTarget = 1, allNodes = []) {
164
234
  const { sourceSide, targetSide } = chooseSides(source, target);
165
235
  const sourceAnchor = staggerAnchor(source, sourceSide, sourceEdgeIndex, totalFromSource);
166
- const targetAnchor = getEdgeAnchor(target, targetSide);
167
- const points = buildElbowPoints(sourceAnchor, targetAnchor);
236
+ const targetAnchor = staggerAnchor(target, targetSide, targetEdgeIndex, totalToTarget);
237
+ let points = buildElbowPoints(sourceAnchor, targetAnchor);
238
+ if (allNodes.length > 0) {
239
+ points = avoidObstacles(points, sourceAnchor, allNodes, source.id, target.id);
240
+ }
168
241
  const { width, height } = boundingBox(points);
169
242
  return { sourceAnchor, targetAnchor, points, width, height };
170
243
  }
@@ -1 +1 @@
1
- {"version":3,"file":"arrow-router.js","sourceRoot":"","sources":["../../src/layout/arrow-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arrow-router.js","sourceRoot":"","sources":["../../src/layout/arrow-router.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.layoutDAG = layoutDAG;
4
4
  const DEFAULT_NODE_WIDTH = 180;
5
+ const MAX_NODE_WIDTH = 260;
5
6
  const DEFAULT_NODE_HEIGHT = 80;
6
7
  const MIN_NODE_HEIGHT = 60;
7
- const SPACING_X = 220; // horizontal gap between node left edges
8
- const SPACING_GAP_Y = 70; // vertical gap between bottom of one row and top of next
8
+ const MIN_GAP_X = 60; // minimum horizontal gap between adjacent nodes
9
+ const SPACING_GAP_Y = 90; // vertical gap between bottom of one row and top of next
9
10
  const MARGIN_X = 80;
10
11
  const MARGIN_Y = 80;
11
12
  // Font constants mirrored from renderer — used to estimate node height from label
@@ -31,6 +32,14 @@ function effectiveHeight(label, nodeWidth, styleHeight) {
31
32
  const textH = Math.ceil(lines * FONT_SIZE * LINE_HEIGHT);
32
33
  return Math.max(MIN_NODE_HEIGHT, textH + TEXT_PADDING_Y);
33
34
  }
35
+ /** Compute a node width that fits the longest line comfortably. */
36
+ function effectiveWidth(label, styleWidth) {
37
+ if (styleWidth !== undefined)
38
+ return styleWidth;
39
+ const longestLine = Math.max(...label.split("\n").map((l) => l.length));
40
+ const needed = longestLine * CHAR_WIDTH_EST + TEXT_PADDING_X + 24; // 24px extra breathing room
41
+ return Math.min(MAX_NODE_WIDTH, Math.max(DEFAULT_NODE_WIDTH, needed));
42
+ }
34
43
  /**
35
44
  * BFS-based layered DAG layout using Kahn's algorithm.
36
45
  * Each node is enqueued exactly once (when all its predecessors are processed),
@@ -103,18 +112,25 @@ function layoutDAG(diagram) {
103
112
  levelGroups.get(lvl).push(id);
104
113
  }
105
114
  const sortedLevels = [...levelGroups.keys()].sort((a, b) => a - b);
106
- // Widest level (node count) drives the total canvas width
107
- const maxLevelCount = Math.max(...sortedLevels.map((l) => levelGroups.get(l).length));
108
- const totalCanvasWidth = maxLevelCount * SPACING_X;
109
115
  // ── Compute effective dimensions per node ─────────────────────────────────
110
116
  const nodeMap = new Map(nodes.map((n) => [n.id, n]));
111
117
  const nodeDims = new Map();
112
118
  for (const id of nodeIds) {
113
119
  const n = nodeMap.get(id);
114
- const w = n.style?.width ?? DEFAULT_NODE_WIDTH;
120
+ const w = effectiveWidth(n.label, n.style?.width);
115
121
  const h = effectiveHeight(n.label, w, n.style?.height);
116
122
  nodeDims.set(id, { width: w, height: h });
117
123
  }
124
+ // ── Compute per-level row width (sum of node widths + gaps) ───────────────
125
+ // This replaces the old fixed SPACING_X approach.
126
+ function levelRowWidth(group) {
127
+ let total = 0;
128
+ for (const id of group)
129
+ total += nodeDims.get(id).width;
130
+ total += Math.max(0, group.length - 1) * MIN_GAP_X;
131
+ return total;
132
+ }
133
+ const maxRowWidth = Math.max(...sortedLevels.map((l) => levelRowWidth(levelGroups.get(l))));
118
134
  // ── Compute cumulative Y per level (dynamic row heights) ──────────────────
119
135
  let cumulativeY = MARGIN_Y;
120
136
  const levelY = new Map();
@@ -128,8 +144,9 @@ function layoutDAG(diagram) {
128
144
  for (const lvl of sortedLevels) {
129
145
  const group = levelGroups.get(lvl);
130
146
  group.sort((a, b) => nodeIds.indexOf(a) - nodeIds.indexOf(b));
131
- const levelWidth = group.length * SPACING_X;
132
- const offsetX = MARGIN_X + Math.floor((totalCanvasWidth - levelWidth) / 2);
147
+ const rowW = levelRowWidth(group);
148
+ const offsetX = MARGIN_X + Math.floor((maxRowWidth - rowW) / 2);
149
+ let cursorX = offsetX;
133
150
  group.forEach((id, colIndex) => {
134
151
  const inputNode = nodeMap.get(id);
135
152
  const { width, height } = nodeDims.get(id);
@@ -139,13 +156,14 @@ function layoutDAG(diagram) {
139
156
  type: inputNode.type ?? "process",
140
157
  metadata: inputNode.metadata,
141
158
  style: inputNode.style,
142
- x: offsetX + colIndex * SPACING_X,
159
+ x: cursorX,
143
160
  y: levelY.get(lvl),
144
161
  width,
145
162
  height,
146
163
  level: lvl,
147
164
  colIndex,
148
165
  });
166
+ cursorX += width + MIN_GAP_X;
149
167
  });
150
168
  }
151
169
  return layoutNodes;
@@ -1 +1 @@
1
- {"version":3,"file":"dag.js","sourceRoot":"","sources":["../../src/layout/dag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dag.js","sourceRoot":"","sources":["../../src/layout/dag.ts"],"names":[],"mappings":"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"}
@@ -111,6 +111,7 @@ function createArrowElement(edge, route, defaultStrokeColor) {
111
111
  const strokeStyle = edge.style?.strokeStyle ?? "solid";
112
112
  const strokeWidth = edge.style?.strokeWidth ?? 2;
113
113
  const opacity = edge.style?.opacity ?? 100;
114
+ const labelId = edge.label ? `arrow-${edge.from}-${edge.to}-label` : null;
114
115
  const arrow = {
115
116
  ...baseFields(arrowId, sourceAnchor.x, sourceAnchor.y, width, height),
116
117
  type: "arrow",
@@ -121,7 +122,7 @@ function createArrowElement(edge, route, defaultStrokeColor) {
121
122
  opacity,
122
123
  roughness: 0,
123
124
  roundness: null,
124
- boundElements: null,
125
+ boundElements: labelId ? [{ type: "text", id: labelId }] : null,
125
126
  points,
126
127
  lastCommittedPoint: null,
127
128
  startArrowhead: edge.bidirectional ? "arrow" : null,
@@ -203,7 +204,7 @@ function createArrowLabel(edge, route) {
203
204
  textAlign: "center",
204
205
  verticalAlign: "middle",
205
206
  baseline: Math.ceil(13 * 0.8),
206
- containerId: null,
207
+ containerId: `arrow-${edge.from}-${edge.to}`,
207
208
  lineHeight: LINE_HEIGHT,
208
209
  };
209
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"elements.js","sourceRoot":"","sources":["../../src/renderer/elements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elements.js","sourceRoot":"","sources":["../../src/renderer/elements.ts"],"names":[],"mappings":"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"}
@@ -29,8 +29,10 @@ function render(diagram, layoutNodes, template) {
29
29
  edgeGroups.set(key, []);
30
30
  edgeGroups.get(key).push(edge);
31
31
  }
32
- // Count per-side groupings
32
+ // Count per-side groupings (source side)
33
33
  const sideGroups = new Map();
34
+ // Also group by target side for staggering incoming arrows
35
+ const targetSideGroups = new Map();
34
36
  for (const [fromId, edges] of edgeGroups) {
35
37
  const source = nodeMap.get(fromId);
36
38
  if (!source)
@@ -42,16 +44,24 @@ function render(diagram, layoutNodes, template) {
42
44
  // Determine side using the same threshold as the arrow router
43
45
  const dx = (target.x + target.width / 2) - (source.x + source.width / 2);
44
46
  const dy = (target.y + target.height / 2) - (source.y + source.height / 2);
45
- const side = Math.abs(dy) > arrow_router_js_1.VERTICAL_THRESHOLD
47
+ const sourceSide = Math.abs(dy) > arrow_router_js_1.VERTICAL_THRESHOLD
46
48
  ? dy > 0 ? "bottom" : "top"
47
49
  : dx >= 0 ? "right" : "left";
48
- const sideKey = `${fromId}:${side}`;
50
+ const targetSide = Math.abs(dy) > arrow_router_js_1.VERTICAL_THRESHOLD
51
+ ? dy > 0 ? "top" : "bottom"
52
+ : dx >= 0 ? "left" : "right";
53
+ const sideKey = `${fromId}:${sourceSide}`;
49
54
  if (!sideGroups.has(sideKey))
50
55
  sideGroups.set(sideKey, []);
51
56
  sideGroups.get(sideKey).push(edge);
57
+ const tKey = `${edge.to}:${targetSide}`;
58
+ if (!targetSideGroups.has(tKey))
59
+ targetSideGroups.set(tKey, []);
60
+ targetSideGroups.get(tKey).push(edge);
52
61
  }
53
62
  }
54
- // Render arrows
63
+ // Render arrows + collect arrow bindings per shape
64
+ const arrowBindings = new Map();
55
65
  for (const [sideKey, sideEdges] of sideGroups) {
56
66
  const fromId = sideKey.split(":")[0];
57
67
  const source = nodeMap.get(fromId);
@@ -61,16 +71,41 @@ function render(diagram, layoutNodes, template) {
61
71
  const target = nodeMap.get(edge.to);
62
72
  if (!target)
63
73
  return;
64
- const route = (0, arrow_router_js_1.routeArrow)(source, target, i, sideEdges.length);
74
+ // Look up target-side stagger info
75
+ const dx = (target.x + target.width / 2) - (source.x + source.width / 2);
76
+ const dy = (target.y + target.height / 2) - (source.y + source.height / 2);
77
+ const targetSide = Math.abs(dy) > arrow_router_js_1.VERTICAL_THRESHOLD
78
+ ? dy > 0 ? "top" : "bottom"
79
+ : dx >= 0 ? "left" : "right";
80
+ const tKey = `${edge.to}:${targetSide}`;
81
+ const tGroup = targetSideGroups.get(tKey) ?? [edge];
82
+ const tIndex = tGroup.indexOf(edge);
83
+ const route = (0, arrow_router_js_1.routeArrow)(source, target, i, sideEdges.length, Math.max(0, tIndex), tGroup.length, layoutNodes);
65
84
  // Arrow stroke = target node's stroke color
66
85
  const targetTemplate = (0, index_js_1.getNodeDef)(template, target.type);
67
86
  const strokeColor = targetTemplate.style.strokeColor;
68
- elements.push((0, elements_js_1.createArrowElement)(edge, route, strokeColor));
87
+ const arrowEl = (0, elements_js_1.createArrowElement)(edge, route, strokeColor);
88
+ elements.push(arrowEl);
69
89
  if (edge.label) {
70
90
  elements.push((0, elements_js_1.createArrowLabel)(edge, route));
71
91
  }
92
+ // Track which arrows bind to each shape
93
+ const arrowRef = { type: "arrow", id: arrowEl.id };
94
+ if (!arrowBindings.has(edge.from))
95
+ arrowBindings.set(edge.from, []);
96
+ arrowBindings.get(edge.from).push(arrowRef);
97
+ if (!arrowBindings.has(edge.to))
98
+ arrowBindings.set(edge.to, []);
99
+ arrowBindings.get(edge.to).push(arrowRef);
72
100
  });
73
101
  }
102
+ // Patch shape boundElements to include their connected arrows
103
+ for (const el of elements) {
104
+ if ((el.type === "rectangle" || el.type === "ellipse") && arrowBindings.has(el.id)) {
105
+ const existing = el.boundElements ?? [];
106
+ el.boundElements = [...existing, ...arrowBindings.get(el.id)];
107
+ }
108
+ }
74
109
  return elements;
75
110
  }
76
111
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "excalidraw-gen",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "author": {
5
5
  "name": "Nixon Kurian",
6
6
  "email": "nixonkurian.nk@gmail.com"