system-canvas-react 0.2.5 → 0.2.6

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=alignment.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alignment.test.d.ts","sourceRoot":"","sources":["../../../src/hooks/__tests__/alignment.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,200 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { snapToGrid, alignNodes, distributeNodes, computeAlignmentGuides } from 'system-canvas';
3
+ // ---------------------------------------------------------------------------
4
+ // Helpers
5
+ // ---------------------------------------------------------------------------
6
+ function rect(id, x, y, width, height) {
7
+ return { id, x, y, width, height };
8
+ }
9
+ // ---------------------------------------------------------------------------
10
+ // snapToGrid
11
+ // ---------------------------------------------------------------------------
12
+ describe('snapToGrid', () => {
13
+ it('rounds to nearest multiple', () => {
14
+ expect(snapToGrid(13, 10)).toBe(10);
15
+ expect(snapToGrid(15, 10)).toBe(20);
16
+ expect(snapToGrid(16, 10)).toBe(20);
17
+ expect(snapToGrid(0, 10)).toBe(0);
18
+ expect(snapToGrid(100, 10)).toBe(100);
19
+ });
20
+ it('returns value unchanged when size <= 0', () => {
21
+ expect(snapToGrid(13, 0)).toBe(13);
22
+ expect(snapToGrid(13, -5)).toBe(13);
23
+ });
24
+ it('works with fractional sizes', () => {
25
+ expect(snapToGrid(7.4, 5)).toBe(5);
26
+ expect(snapToGrid(7.6, 5)).toBe(10);
27
+ });
28
+ });
29
+ // ---------------------------------------------------------------------------
30
+ // alignNodes
31
+ // ---------------------------------------------------------------------------
32
+ describe('alignNodes', () => {
33
+ const nodes = [
34
+ rect('a', 10, 20, 100, 50),
35
+ rect('b', 40, 60, 80, 40),
36
+ rect('c', 5, 30, 120, 60),
37
+ ];
38
+ it('aligns left: all nodes move to min-x; leftmost unchanged', () => {
39
+ const result = alignNodes(nodes, 'left');
40
+ const minX = 5; // node c
41
+ // node c is already at 5 — should have no patch
42
+ expect(result.find(r => r.id === 'c')).toBeUndefined();
43
+ // node a moves to 5
44
+ expect(result.find(r => r.id === 'a')?.patch).toEqual({ x: 5 });
45
+ // node b moves to 5
46
+ expect(result.find(r => r.id === 'b')?.patch).toEqual({ x: 5 });
47
+ result.forEach(r => expect(r.patch.x).toBe(minX));
48
+ });
49
+ it('aligns right: all right edges align to max right-edge', () => {
50
+ // max right = max(10+100, 40+80, 5+120) = max(110, 120, 125) = 125
51
+ const result = alignNodes(nodes, 'right');
52
+ expect(result.find(r => r.id === 'a')?.patch).toEqual({ x: 125 - 100 }); // 25
53
+ expect(result.find(r => r.id === 'b')?.patch).toEqual({ x: 125 - 80 }); // 45
54
+ expect(result.find(r => r.id === 'c')).toBeUndefined(); // already at 125
55
+ });
56
+ it('aligns top: all nodes move to min-y', () => {
57
+ // min y = 20 (node a)
58
+ const result = alignNodes(nodes, 'top');
59
+ expect(result.find(r => r.id === 'a')).toBeUndefined();
60
+ expect(result.find(r => r.id === 'b')?.patch).toEqual({ y: 20 });
61
+ expect(result.find(r => r.id === 'c')?.patch).toEqual({ y: 20 });
62
+ });
63
+ it('aligns bottom: all bottom edges align to max bottom-edge', () => {
64
+ // max bottom = max(20+50, 60+40, 30+60) = max(70, 100, 90) = 100
65
+ const result = alignNodes(nodes, 'bottom');
66
+ expect(result.find(r => r.id === 'a')?.patch).toEqual({ y: 100 - 50 }); // 50
67
+ expect(result.find(r => r.id === 'b')).toBeUndefined(); // already at 100
68
+ expect(result.find(r => r.id === 'c')?.patch).toEqual({ y: 100 - 60 }); // 40
69
+ });
70
+ it('aligns centerH: all nodes center-x aligns to mean center-x', () => {
71
+ // centerX: 10+50=60, 40+40=80, 5+60=65 → mean = (60+80+65)/3 = 68.333...
72
+ const mean = (60 + 80 + 65) / 3;
73
+ const result = alignNodes(nodes, 'centerH');
74
+ const aExpected = mean - 100 / 2;
75
+ const bExpected = mean - 80 / 2;
76
+ const cExpected = mean - 120 / 2;
77
+ expect(result.find(r => r.id === 'a')?.patch.x).toBeCloseTo(aExpected);
78
+ expect(result.find(r => r.id === 'b')?.patch.x).toBeCloseTo(bExpected);
79
+ expect(result.find(r => r.id === 'c')?.patch.x).toBeCloseTo(cExpected);
80
+ });
81
+ it('aligns centerV: all nodes center-y aligns to mean center-y', () => {
82
+ // centerY: 20+25=45, 60+20=80, 30+30=60 → mean = (45+80+60)/3 = 61.666...
83
+ const mean = (45 + 80 + 60) / 3;
84
+ const result = alignNodes(nodes, 'centerV');
85
+ expect(result.find(r => r.id === 'a')?.patch.y).toBeCloseTo(mean - 50 / 2);
86
+ expect(result.find(r => r.id === 'b')?.patch.y).toBeCloseTo(mean - 40 / 2);
87
+ expect(result.find(r => r.id === 'c')?.patch.y).toBeCloseTo(mean - 60 / 2);
88
+ });
89
+ it('returns empty patch for nodes already at reference position', () => {
90
+ // Single node — reference IS the node's own position, so no change
91
+ const single = [rect('x', 10, 20, 100, 50)];
92
+ expect(alignNodes(single, 'left')).toEqual([]);
93
+ expect(alignNodes(single, 'top')).toEqual([]);
94
+ });
95
+ it('returns empty array for empty input', () => {
96
+ expect(alignNodes([], 'left')).toEqual([]);
97
+ });
98
+ });
99
+ // ---------------------------------------------------------------------------
100
+ // distributeNodes
101
+ // ---------------------------------------------------------------------------
102
+ describe('distributeNodes', () => {
103
+ it('distributes horizontally: inner nodes evenly spaced; outermost unchanged', () => {
104
+ // nodes at x: 0(w=10), 100(w=10), 200(w=10) — already even, no patches
105
+ const nodes = [
106
+ rect('a', 0, 0, 10, 10),
107
+ rect('b', 100, 0, 10, 10),
108
+ rect('c', 200, 0, 10, 10),
109
+ ];
110
+ const result = distributeNodes(nodes, 'horizontal');
111
+ // b is already perfectly centered → no patch
112
+ expect(result).toEqual([]);
113
+ });
114
+ it('distributes horizontally: moves inner node to correct position', () => {
115
+ // a at x=0(w=10), b at x=50(w=10), c at x=200(w=10)
116
+ // outerEnd=210, outerStart=0, totalOuter=10+10=20, sumInner=10
117
+ // spacing = (210 - 0 - 20 - 10) / 2 = 180/2 = 90
118
+ // b should be at 0 + 10 + 90 = 100
119
+ const nodes = [
120
+ rect('a', 0, 0, 10, 10),
121
+ rect('b', 50, 0, 10, 10),
122
+ rect('c', 200, 0, 10, 10),
123
+ ];
124
+ const result = distributeNodes(nodes, 'horizontal');
125
+ expect(result).toHaveLength(1);
126
+ expect(result[0]).toEqual({ id: 'b', patch: { x: 100 } });
127
+ });
128
+ it('distributes vertically: inner nodes evenly spaced', () => {
129
+ // a at y=0(h=10), b at y=50(h=10), c at y=200(h=10)
130
+ // spacing = (210 - 0 - 20 - 10) / 2 = 90
131
+ // b should be at 0 + 10 + 90 = 100
132
+ const nodes = [
133
+ rect('a', 0, 0, 10, 10),
134
+ rect('b', 0, 50, 10, 10),
135
+ rect('c', 0, 200, 10, 10),
136
+ ];
137
+ const result = distributeNodes(nodes, 'vertical');
138
+ expect(result).toHaveLength(1);
139
+ expect(result[0]).toEqual({ id: 'b', patch: { y: 100 } });
140
+ });
141
+ it('returns [] for less than 3 nodes', () => {
142
+ expect(distributeNodes([], 'horizontal')).toEqual([]);
143
+ expect(distributeNodes([rect('a', 0, 0, 10, 10)], 'horizontal')).toEqual([]);
144
+ expect(distributeNodes([rect('a', 0, 0, 10, 10), rect('b', 100, 0, 10, 10)], 'horizontal')).toEqual([]);
145
+ });
146
+ });
147
+ // ---------------------------------------------------------------------------
148
+ // computeAlignmentGuides
149
+ // ---------------------------------------------------------------------------
150
+ describe('computeAlignmentGuides', () => {
151
+ it('returns [] when dragging is empty', () => {
152
+ const others = [rect('a', 0, 0, 100, 50)];
153
+ expect(computeAlignmentGuides([], others, 4)).toEqual([]);
154
+ });
155
+ it('returns [] when others is empty', () => {
156
+ const dragging = [rect('a', 0, 0, 100, 50)];
157
+ expect(computeAlignmentGuides(dragging, [], 4)).toEqual([]);
158
+ });
159
+ it('emits a guide when left edges are within threshold', () => {
160
+ // dragging node left edge at x=2, other node left edge at x=0 — diff=2, threshold=4
161
+ const dragging = [rect('d', 2, 10, 100, 50)];
162
+ const others = [rect('o', 0, 80, 120, 60)];
163
+ const guides = computeAlignmentGuides(dragging, others, 4);
164
+ const xGuide = guides.find(g => g.axis === 'x' && g.kind === 'edge');
165
+ expect(xGuide).toBeDefined();
166
+ expect(xGuide?.position).toBe(0); // reference (non-dragged) anchor
167
+ });
168
+ it('emits nothing when outside threshold', () => {
169
+ // dragging left edge at x=10, other at x=0 — diff=10 > threshold=4
170
+ const dragging = [rect('d', 10, 0, 100, 50)];
171
+ const others = [rect('o', 0, 0, 100, 50)];
172
+ const guides = computeAlignmentGuides(dragging, others, 4);
173
+ expect(guides.filter(g => g.axis === 'x' && g.kind === 'edge' && g.position === 0)).toHaveLength(0);
174
+ });
175
+ it('de-duplicates guides with the same axis + position, keeping widest span', () => {
176
+ // Two dragging nodes both align with others' left edge at x=0
177
+ const dragging = [
178
+ rect('d1', 1, 0, 50, 30),
179
+ rect('d2', 2, 40, 60, 20),
180
+ ];
181
+ const others = [rect('o', 0, 100, 80, 40)];
182
+ const guides = computeAlignmentGuides(dragging, others, 4);
183
+ const xEdgeGuides = guides.filter(g => g.axis === 'x' && g.kind === 'edge' && g.position === 0);
184
+ // Should be de-duped to a single guide
185
+ expect(xEdgeGuides).toHaveLength(1);
186
+ // Span should cover all nodes' perpendicular extents
187
+ expect(xEdgeGuides[0].span.start).toBeLessThanOrEqual(0);
188
+ expect(xEdgeGuides[0].span.end).toBeGreaterThanOrEqual(140);
189
+ });
190
+ it('emits a center guide when center-x values align within threshold', () => {
191
+ // dragging centerX = 2 + 50/2 = 27, other centerX = 0 + 60/2 = 30, diff=3 <= 4
192
+ const dragging = [rect('d', 2, 0, 50, 40)];
193
+ const others = [rect('o', 0, 60, 60, 40)];
194
+ const guides = computeAlignmentGuides(dragging, others, 4);
195
+ const centerGuide = guides.find(g => g.axis === 'x' && g.kind === 'center');
196
+ expect(centerGuide).toBeDefined();
197
+ expect(centerGuide?.position).toBe(30); // other's centerX
198
+ });
199
+ });
200
+ //# sourceMappingURL=alignment.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alignment.test.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/alignment.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "system-canvas-react",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -35,7 +35,7 @@
35
35
  "d3-selection": "^3.0.0",
36
36
  "d3-transition": "^3.0.0",
37
37
  "d3-zoom": "^3.0.0",
38
- "system-canvas": "^0.2.5"
38
+ "system-canvas": "^0.2.6"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "react": "^18.0.0 || ^19.0.0",