@tscircuit/schematic-trace-solver 0.0.52 → 0.0.53

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.
Files changed (29) hide show
  1. package/dist/index.d.ts +0 -3
  2. package/dist/index.js +135 -156
  3. package/lib/solvers/AvailableNetOrientationSolver/AvailableNetOrientationSolver.ts +3 -39
  4. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +2 -0
  5. package/lib/solvers/SchematicTracePipelineSolver/colorAvailableNetOrientationLabels.ts +54 -0
  6. package/lib/solvers/TraceAnchoredNetLabelOverlapSolver/TraceAnchoredNetLabelOverlapSolver.ts +6 -6
  7. package/lib/solvers/TraceAnchoredNetLabelOverlapSolver/candidates.ts +63 -105
  8. package/lib/solvers/TraceAnchoredNetLabelOverlapSolver/geometry.ts +4 -0
  9. package/lib/solvers/TraceAnchoredNetLabelOverlapSolver/visualize.ts +38 -4
  10. package/package.json +1 -1
  11. package/tests/assets/example30.json +4 -1
  12. package/tests/examples/__snapshots__/example01.snap.svg +6 -3
  13. package/tests/examples/__snapshots__/example02.snap.svg +8 -4
  14. package/tests/examples/__snapshots__/example04.snap.svg +4 -2
  15. package/tests/examples/__snapshots__/example07.snap.svg +10 -5
  16. package/tests/examples/__snapshots__/example12.snap.svg +8 -4
  17. package/tests/examples/__snapshots__/example13.snap.svg +16 -8
  18. package/tests/examples/__snapshots__/example14.snap.svg +16 -8
  19. package/tests/examples/__snapshots__/example15.snap.svg +18 -9
  20. package/tests/examples/__snapshots__/example16.snap.svg +8 -4
  21. package/tests/examples/__snapshots__/example17.snap.svg +9 -5
  22. package/tests/examples/__snapshots__/example18.snap.svg +10 -5
  23. package/tests/examples/__snapshots__/example20.snap.svg +6 -3
  24. package/tests/examples/__snapshots__/example21.snap.svg +17 -12
  25. package/tests/examples/__snapshots__/example22.snap.svg +8 -4
  26. package/tests/examples/__snapshots__/example25.snap.svg +18 -9
  27. package/tests/examples/__snapshots__/example30.snap.svg +74 -62
  28. package/tests/examples/__snapshots__/example31.snap.svg +2 -1
  29. package/tests/fixtures/matcher.ts +21 -0
@@ -2,225 +2,237 @@
2
2
  <rect width="100%" height="100%" fill="white" />
3
3
  <g>
4
4
  <circle data-type="point" data-label="P.1
5
- x-" data-x="-0.6000000000000001" data-y="1.0999999999999999" cx="193.54838709677418" cy="112.25806451612902" r="3" fill="hsl(235, 100%, 50%, 0.8)" />
5
+ x-" data-x="-0.6000000000000001" data-y="1.0999999999999999" cx="222" cy="158.99999999999997" r="3" fill="hsl(235, 100%, 50%, 0.8)" />
6
6
  </g>
7
7
  <g>
8
8
  <circle data-type="point" data-label="P.2
9
- x-" data-x="-0.6000000000000001" data-y="0.8999999999999999" cx="193.54838709677418" cy="148.38709677419354" r="3" fill="hsl(236, 100%, 50%, 0.8)" />
9
+ x-" data-x="-0.6000000000000001" data-y="0.8999999999999999" cx="222" cy="186.99999999999994" r="3" fill="hsl(236, 100%, 50%, 0.8)" />
10
10
  </g>
11
11
  <g>
12
12
  <circle data-type="point" data-label="P.3
13
- x-" data-x="-0.6000000000000001" data-y="0.6999999999999998" cx="193.54838709677418" cy="184.51612903225805" r="3" fill="hsl(237, 100%, 50%, 0.8)" />
13
+ x-" data-x="-0.6000000000000001" data-y="0.6999999999999998" cx="222" cy="214.99999999999997" r="3" fill="hsl(237, 100%, 50%, 0.8)" />
14
14
  </g>
15
15
  <g>
16
16
  <circle data-type="point" data-label="P.4
17
- x-" data-x="-0.6000000000000001" data-y="0.4999999999999998" cx="193.54838709677418" cy="220.6451612903226" r="3" fill="hsl(238, 100%, 50%, 0.8)" />
17
+ x-" data-x="-0.6000000000000001" data-y="0.4999999999999998" cx="222" cy="242.99999999999997" r="3" fill="hsl(238, 100%, 50%, 0.8)" />
18
18
  </g>
19
19
  <g>
20
20
  <circle data-type="point" data-label="P.5
21
- x-" data-x="-0.6000000000000001" data-y="0.2999999999999998" cx="193.54838709677418" cy="256.7741935483871" r="3" fill="hsl(239, 100%, 50%, 0.8)" />
21
+ x-" data-x="-0.6000000000000001" data-y="0.2999999999999998" cx="222" cy="271" r="3" fill="hsl(239, 100%, 50%, 0.8)" />
22
22
  </g>
23
23
  <g>
24
24
  <circle data-type="point" data-label="P.6
25
- x-" data-x="-0.6000000000000001" data-y="0.09999999999999987" cx="193.54838709677418" cy="292.9032258064516" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
25
+ x-" data-x="-0.6000000000000001" data-y="0.09999999999999987" cx="222" cy="298.99999999999994" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
26
26
  </g>
27
27
  <g>
28
28
  <circle data-type="point" data-label="P.7
29
- x-" data-x="-0.6000000000000001" data-y="-0.10000000000000009" cx="193.54838709677418" cy="329.0322580645161" r="3" fill="hsl(241, 100%, 50%, 0.8)" />
29
+ x-" data-x="-0.6000000000000001" data-y="-0.10000000000000009" cx="222" cy="326.99999999999994" r="3" fill="hsl(241, 100%, 50%, 0.8)" />
30
30
  </g>
31
31
  <g>
32
32
  <circle data-type="point" data-label="P.8
33
- x-" data-x="-0.6000000000000001" data-y="-0.30000000000000004" cx="193.54838709677418" cy="365.1612903225806" r="3" fill="hsl(242, 100%, 50%, 0.8)" />
33
+ x-" data-x="-0.6000000000000001" data-y="-0.30000000000000004" cx="222" cy="354.99999999999994" r="3" fill="hsl(242, 100%, 50%, 0.8)" />
34
34
  </g>
35
35
  <g>
36
36
  <circle data-type="point" data-label="P.9
37
- x-" data-x="-0.6000000000000001" data-y="-0.5" cx="193.54838709677418" cy="401.2903225806451" r="3" fill="hsl(243, 100%, 50%, 0.8)" />
37
+ x-" data-x="-0.6000000000000001" data-y="-0.5" cx="222" cy="382.99999999999994" r="3" fill="hsl(243, 100%, 50%, 0.8)" />
38
38
  </g>
39
39
  <g>
40
40
  <circle data-type="point" data-label="P.10
41
- x-" data-x="-0.6000000000000001" data-y="-0.7" cx="193.54838709677418" cy="437.41935483870964" r="3" fill="hsl(133, 100%, 50%, 0.8)" />
41
+ x-" data-x="-0.6000000000000001" data-y="-0.7" cx="222" cy="410.99999999999994" r="3" fill="hsl(133, 100%, 50%, 0.8)" />
42
42
  </g>
43
43
  <g>
44
44
  <circle data-type="point" data-label="P.11
45
- x-" data-x="-0.6000000000000001" data-y="-0.8999999999999999" cx="193.54838709677418" cy="473.54838709677415" r="3" fill="hsl(134, 100%, 50%, 0.8)" />
45
+ x-" data-x="-0.6000000000000001" data-y="-0.8999999999999999" cx="222" cy="438.99999999999994" r="3" fill="hsl(134, 100%, 50%, 0.8)" />
46
46
  </g>
47
47
  <g>
48
48
  <circle data-type="point" data-label="P.12
49
- x-" data-x="-0.6000000000000001" data-y="-1.0999999999999999" cx="193.54838709677418" cy="509.67741935483866" r="3" fill="hsl(135, 100%, 50%, 0.8)" />
49
+ x-" data-x="-0.6000000000000001" data-y="-1.0999999999999999" cx="222" cy="466.9999999999999" r="3" fill="hsl(135, 100%, 50%, 0.8)" />
50
50
  </g>
51
51
  <g>
52
52
  <circle data-type="point" data-label="P.13
53
- x+" data-x="0.6000000000000001" data-y="-1.0999999999999999" cx="410.32258064516134" cy="509.67741935483866" r="3" fill="hsl(136, 100%, 50%, 0.8)" />
53
+ x+" data-x="0.6000000000000001" data-y="-1.0999999999999999" cx="390" cy="466.9999999999999" r="3" fill="hsl(136, 100%, 50%, 0.8)" />
54
54
  </g>
55
55
  <g>
56
56
  <circle data-type="point" data-label="P.14
57
- x+" data-x="0.6000000000000001" data-y="-0.8999999999999999" cx="410.32258064516134" cy="473.54838709677415" r="3" fill="hsl(137, 100%, 50%, 0.8)" />
57
+ x+" data-x="0.6000000000000001" data-y="-0.8999999999999999" cx="390" cy="438.99999999999994" r="3" fill="hsl(137, 100%, 50%, 0.8)" />
58
58
  </g>
59
59
  <g>
60
60
  <circle data-type="point" data-label="P.15
61
- x+" data-x="0.6000000000000001" data-y="-0.6999999999999998" cx="410.32258064516134" cy="437.41935483870964" r="3" fill="hsl(138, 100%, 50%, 0.8)" />
61
+ x+" data-x="0.6000000000000001" data-y="-0.6999999999999998" cx="390" cy="410.9999999999999" r="3" fill="hsl(138, 100%, 50%, 0.8)" />
62
62
  </g>
63
63
  <g>
64
64
  <circle data-type="point" data-label="P.16
65
- x+" data-x="0.6000000000000001" data-y="-0.4999999999999998" cx="410.32258064516134" cy="401.2903225806451" r="3" fill="hsl(139, 100%, 50%, 0.8)" />
65
+ x+" data-x="0.6000000000000001" data-y="-0.4999999999999998" cx="390" cy="382.9999999999999" r="3" fill="hsl(139, 100%, 50%, 0.8)" />
66
66
  </g>
67
67
  <g>
68
68
  <circle data-type="point" data-label="P.17
69
- x+" data-x="0.6000000000000001" data-y="-0.2999999999999998" cx="410.32258064516134" cy="365.1612903225806" r="3" fill="hsl(140, 100%, 50%, 0.8)" />
69
+ x+" data-x="0.6000000000000001" data-y="-0.2999999999999998" cx="390" cy="354.9999999999999" r="3" fill="hsl(140, 100%, 50%, 0.8)" />
70
70
  </g>
71
71
  <g>
72
72
  <circle data-type="point" data-label="P.18
73
- x+" data-x="0.6000000000000001" data-y="-0.09999999999999987" cx="410.32258064516134" cy="329.0322580645161" r="3" fill="hsl(141, 100%, 50%, 0.8)" />
73
+ x+" data-x="0.6000000000000001" data-y="-0.09999999999999987" cx="390" cy="326.99999999999994" r="3" fill="hsl(141, 100%, 50%, 0.8)" />
74
74
  </g>
75
75
  <g>
76
76
  <circle data-type="point" data-label="P.19
77
- x+" data-x="0.6000000000000001" data-y="0.10000000000000009" cx="410.32258064516134" cy="292.9032258064516" r="3" fill="hsl(142, 100%, 50%, 0.8)" />
77
+ x+" data-x="0.6000000000000001" data-y="0.10000000000000009" cx="390" cy="298.99999999999994" r="3" fill="hsl(142, 100%, 50%, 0.8)" />
78
78
  </g>
79
79
  <g>
80
80
  <circle data-type="point" data-label="P.20
81
- x+" data-x="0.6000000000000001" data-y="0.30000000000000004" cx="410.32258064516134" cy="256.7741935483871" r="3" fill="hsl(164, 100%, 50%, 0.8)" />
81
+ x+" data-x="0.6000000000000001" data-y="0.30000000000000004" cx="390" cy="270.99999999999994" r="3" fill="hsl(164, 100%, 50%, 0.8)" />
82
82
  </g>
83
83
  <g>
84
84
  <circle data-type="point" data-label="P.21
85
- x+" data-x="0.6000000000000001" data-y="0.5" cx="410.32258064516134" cy="220.64516129032256" r="3" fill="hsl(165, 100%, 50%, 0.8)" />
85
+ x+" data-x="0.6000000000000001" data-y="0.5" cx="390" cy="242.99999999999994" r="3" fill="hsl(165, 100%, 50%, 0.8)" />
86
86
  </g>
87
87
  <g>
88
88
  <circle data-type="point" data-label="P.22
89
- x+" data-x="0.6000000000000001" data-y="0.7" cx="410.32258064516134" cy="184.51612903225805" r="3" fill="hsl(166, 100%, 50%, 0.8)" />
89
+ x+" data-x="0.6000000000000001" data-y="0.7" cx="390" cy="214.99999999999994" r="3" fill="hsl(166, 100%, 50%, 0.8)" />
90
90
  </g>
91
91
  <g>
92
92
  <circle data-type="point" data-label="P.23
93
- x+" data-x="0.6000000000000001" data-y="0.8999999999999999" cx="410.32258064516134" cy="148.38709677419354" r="3" fill="hsl(167, 100%, 50%, 0.8)" />
93
+ x+" data-x="0.6000000000000001" data-y="0.8999999999999999" cx="390" cy="186.99999999999994" r="3" fill="hsl(167, 100%, 50%, 0.8)" />
94
94
  </g>
95
95
  <g>
96
96
  <circle data-type="point" data-label="P.24
97
- x+" data-x="0.6000000000000001" data-y="1.0999999999999999" cx="410.32258064516134" cy="112.25806451612902" r="3" fill="hsl(168, 100%, 50%, 0.8)" />
97
+ x+" data-x="0.6000000000000001" data-y="1.0999999999999999" cx="390" cy="158.99999999999997" r="3" fill="hsl(168, 100%, 50%, 0.8)" />
98
98
  </g>
99
99
  <g>
100
100
  <circle data-type="point" data-label="anchorPoint
101
- orientation: x-" data-x="-0.8" data-y="1.0999999999999999" cx="157.41935483870967" cy="112.25806451612902" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
101
+ orientation: y+" data-x="-0.8" data-y="1.4999999999999998" cx="194" cy="102.99999999999997" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
102
102
  </g>
103
103
  <g>
104
104
  <circle data-type="point" data-label="anchorPoint
105
- orientation: x-" data-x="-0.6000000000000001" data-y="0.8999999999999999" cx="193.54838709677418" cy="148.38709677419354" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
105
+ orientation: x-" data-x="-0.6000000000000001" data-y="0.8999999999999999" cx="222" cy="186.99999999999994" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
106
106
  </g>
107
107
  <g>
108
108
  <circle data-type="point" data-label="anchorPoint
109
- orientation: x+" data-x="0.6000000000000001" data-y="-0.2999999999999998" cx="410.32258064516134" cy="365.1612903225806" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
109
+ orientation: x+" data-x="0.6000000000000001" data-y="-0.2999999999999998" cx="390" cy="354.9999999999999" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
110
110
  </g>
111
111
  <g>
112
112
  <circle data-type="point" data-label="anchorPoint
113
- orientation: x-" data-x="-0.6000000000000001" data-y="0.6999999999999998" cx="193.54838709677418" cy="184.51612903225805" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
113
+ orientation: x-" data-x="-0.6000000000000001" data-y="0.6999999999999998" cx="222" cy="214.99999999999997" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
114
114
  </g>
115
115
  <g>
116
116
  <circle data-type="point" data-label="anchorPoint
117
- orientation: x+" data-x="0.6000000000000001" data-y="-0.4999999999999998" cx="410.32258064516134" cy="401.2903225806451" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
117
+ orientation: x+" data-x="0.6000000000000001" data-y="-0.4999999999999998" cx="390" cy="382.9999999999999" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
118
118
  </g>
119
119
  <g>
120
120
  <circle data-type="point" data-label="anchorPoint
121
- orientation: y+" data-x="-1.1510000000000002" data-y="0.4999999999999998" cx="94.01290322580641" cy="220.6451612903226" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
121
+ orientation: y-" data-x="-1.1510000000000002" data-y="-1.6" cx="144.85999999999996" cy="537" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
122
122
  </g>
123
123
  <g>
124
124
  <circle data-type="point" data-label="anchorPoint
125
- orientation: x-" data-x="-0.6000000000000001" data-y="0.2999999999999998" cx="193.54838709677418" cy="256.7741935483871" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
125
+ orientation: x-" data-x="-0.6000000000000001" data-y="0.2999999999999998" cx="222" cy="271" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
126
126
  </g>
127
127
  <g>
128
128
  <circle data-type="point" data-label="anchorPoint
129
- orientation: x+" data-x="0.6000000000000001" data-y="-0.8999999999999999" cx="410.32258064516134" cy="473.54838709677415" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
129
+ orientation: x+" data-x="0.6000000000000001" data-y="-0.8999999999999999" cx="390" cy="438.99999999999994" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
130
130
  </g>
131
131
  <g>
132
132
  <circle data-type="point" data-label="anchorPoint
133
- orientation: x-" data-x="-0.6000000000000001" data-y="0.09999999999999987" cx="193.54838709677418" cy="292.9032258064516" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
133
+ orientation: x-" data-x="-0.6000000000000001" data-y="0.09999999999999987" cx="222" cy="298.99999999999994" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
134
134
  </g>
135
135
  <g>
136
136
  <circle data-type="point" data-label="anchorPoint
137
- orientation: x+" data-x="0.6000000000000001" data-y="-1.0999999999999999" cx="410.32258064516134" cy="509.67741935483866" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
137
+ orientation: x+" data-x="0.6000000000000001" data-y="-1.0999999999999999" cx="390" cy="466.9999999999999" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
138
138
  </g>
139
139
  <g>
140
140
  <circle data-type="point" data-label="anchorPoint
141
- orientation: x-" data-x="-0.6000000000000001" data-y="-0.10000000000000009" cx="193.54838709677418" cy="329.0322580645161" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
141
+ orientation: x-" data-x="-0.6000000000000001" data-y="-0.10000000000000009" cx="222" cy="326.99999999999994" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
142
142
  </g>
143
143
  <g>
144
144
  <circle data-type="point" data-label="anchorPoint
145
- orientation: x+" data-x="0.6000000000000001" data-y="0.10000000000000009" cx="410.32258064516134" cy="292.9032258064516" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
145
+ orientation: x+" data-x="0.6000000000000001" data-y="0.10000000000000009" cx="390" cy="298.99999999999994" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
146
146
  </g>
147
147
  <g>
148
- <polyline data-points="-0.6000000000000001,1.0999999999999999 0.6000000000000001,-0.09999999999999987" data-type="line" data-label="" points="193.54838709677418,112.25806451612902 410.32258064516134,329.0322580645161" fill="none" stroke="hsl(16, 100%, 50%, 0.8)" stroke-width="1" />
148
+ <polyline data-points="-0.6000000000000001,1.0999999999999999 0.6000000000000001,-0.09999999999999987" data-type="line" data-label="" points="222,158.99999999999997 390,326.99999999999994" fill="none" stroke="hsl(16, 100%, 50%, 0.8)" stroke-width="1" />
149
149
  </g>
150
150
  <g>
151
- <polyline data-points="-0.6000000000000001,0.8999999999999999 0.6000000000000001,-0.2999999999999998" data-type="line" data-label="" points="193.54838709677418,148.38709677419354 410.32258064516134,365.1612903225806" fill="none" stroke="hsl(128, 100%, 50%, 0.8)" stroke-width="1" />
151
+ <polyline data-points="-0.6000000000000001,0.8999999999999999 0.6000000000000001,-0.2999999999999998" data-type="line" data-label="" points="222,186.99999999999994 390,354.9999999999999" fill="none" stroke="hsl(128, 100%, 50%, 0.8)" stroke-width="1" />
152
152
  </g>
153
153
  <g>
154
- <polyline data-points="-0.6000000000000001,0.6999999999999998 0.6000000000000001,-0.4999999999999998" data-type="line" data-label="" points="193.54838709677418,184.51612903225805 410.32258064516134,401.2903225806451" fill="none" stroke="hsl(32, 100%, 50%, 0.8)" stroke-width="1" />
154
+ <polyline data-points="-0.6000000000000001,0.6999999999999998 0.6000000000000001,-0.4999999999999998" data-type="line" data-label="" points="222,214.99999999999997 390,382.9999999999999" fill="none" stroke="hsl(32, 100%, 50%, 0.8)" stroke-width="1" />
155
155
  </g>
156
156
  <g>
157
- <polyline data-points="-0.6000000000000001,0.4999999999999998 0.6000000000000001,-0.6999999999999998" data-type="line" data-label="" points="193.54838709677418,220.6451612903226 410.32258064516134,437.41935483870964" fill="none" stroke="hsl(144, 100%, 50%, 0.8)" stroke-width="1" />
157
+ <polyline data-points="-0.6000000000000001,0.4999999999999998 0.6000000000000001,-0.6999999999999998" data-type="line" data-label="" points="222,242.99999999999997 390,410.9999999999999" fill="none" stroke="hsl(144, 100%, 50%, 0.8)" stroke-width="1" />
158
158
  </g>
159
159
  <g>
160
- <polyline data-points="-0.6000000000000001,0.2999999999999998 0.6000000000000001,-0.8999999999999999" data-type="line" data-label="" points="193.54838709677418,256.7741935483871 410.32258064516134,473.54838709677415" fill="none" stroke="hsl(104, 100%, 50%, 0.8)" stroke-width="1" />
160
+ <polyline data-points="-0.6000000000000001,0.2999999999999998 0.6000000000000001,-0.8999999999999999" data-type="line" data-label="" points="222,271 390,438.99999999999994" fill="none" stroke="hsl(104, 100%, 50%, 0.8)" stroke-width="1" />
161
161
  </g>
162
162
  <g>
163
- <polyline data-points="-0.6000000000000001,0.09999999999999987 0.6000000000000001,-1.0999999999999999" data-type="line" data-label="" points="193.54838709677418,292.9032258064516 410.32258064516134,509.67741935483866" fill="none" stroke="hsl(160, 100%, 50%, 0.8)" stroke-width="1" />
163
+ <polyline data-points="-0.6000000000000001,0.09999999999999987 0.6000000000000001,-1.0999999999999999" data-type="line" data-label="" points="222,298.99999999999994 390,466.9999999999999" fill="none" stroke="hsl(160, 100%, 50%, 0.8)" stroke-width="1" />
164
164
  </g>
165
165
  <g>
166
- <polyline data-points="-0.6000000000000001,-0.10000000000000009 0.6000000000000001,0.10000000000000009" data-type="line" data-label="" points="193.54838709677418,329.0322580645161 410.32258064516134,292.9032258064516" fill="none" stroke="hsl(120, 100%, 50%, 0.8)" stroke-width="1" />
166
+ <polyline data-points="-0.6000000000000001,-0.10000000000000009 0.6000000000000001,0.10000000000000009" data-type="line" data-label="" points="222,326.99999999999994 390,298.99999999999994" fill="none" stroke="hsl(120, 100%, 50%, 0.8)" stroke-width="1" />
167
167
  </g>
168
168
  <g>
169
- <polyline data-points="-0.6000000000000001,1.0999999999999999 -0.8,1.0999999999999999 -0.8,1.4999999999999998 1.1510000000000002,1.4999999999999998 1.1510000000000002,-0.09999999999999992 0.6000000000000001,-0.09999999999999987" data-type="line" data-label="" points="193.54838709677418,112.25806451612902 157.41935483870967,112.25806451612902 157.41935483870967,40 509.85806451612905,40 509.85806451612905,329.0322580645161 410.32258064516134,329.0322580645161" fill="none" stroke="purple" stroke-width="1" />
169
+ <polyline data-points="-0.6000000000000001,1.0999999999999999 -0.8,1.0999999999999999 -0.8,1.4999999999999998 1.1510000000000002,1.4999999999999998 1.1510000000000002,-0.09999999999999992 0.6000000000000001,-0.09999999999999987" data-type="line" data-label="" points="222,158.99999999999997 194,158.99999999999997 194,102.99999999999997 467.14000000000004,102.99999999999997 467.14000000000004,326.99999999999994 390,326.99999999999994" fill="none" stroke="purple" stroke-width="1" />
170
170
  </g>
171
171
  <g>
172
- <polyline data-points="-0.6000000000000001,0.4999999999999998 -1.1510000000000002,0.4999999999999998 -1.1510000000000002,-1.6 1.451,-1.6 1.451,-0.6999999999999998 0.6000000000000001,-0.6999999999999998" data-type="line" data-label="" points="193.54838709677418,220.6451612903226 94.01290322580641,220.6451612903226 94.01290322580641,600 564.0516129032258,600 564.0516129032258,437.41935483870964 410.32258064516134,437.41935483870964" fill="none" stroke="purple" stroke-width="1" />
172
+ <polyline data-points="-0.6000000000000001,0.4999999999999998 -1.1510000000000002,0.4999999999999998 -1.1510000000000002,-1.6 1.451,-1.6 1.451,-0.6999999999999998 0.6000000000000001,-0.6999999999999998" data-type="line" data-label="" points="222,242.99999999999997 144.85999999999996,242.99999999999997 144.85999999999996,537 509.14,537 509.14,410.9999999999999 390,410.9999999999999" fill="none" stroke="purple" stroke-width="1" />
173
173
  </g>
174
174
  <g>
175
- <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="193.54838709677418" y="76.12903225806451" width="216.77419354838716" height="469.67741935483866" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.005535714285714285" />
175
+ <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="222" y="130.99999999999997" width="168" height="363.9999999999999" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.007142857142857143" />
176
176
  </g>
177
177
  <g>
178
178
  <rect data-type="rect" data-label="netId: P.pin1 to P.pin18
179
- globalConnNetId: connectivity_net0" data-x="-1.0250000000000001" data-y="1.0999999999999999" x="76.12903225806446" y="94.19354838709674" width="81.29032258064518" height="36.12903225806454" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
179
+ globalConnNetId: connectivity_net0
180
+ available orientations: y+" data-x="-0.8" data-y="1.7249999999999999" x="180" y="39.99999999999994" width="28" height="63.00000000000003" fill="#93c5fd66" stroke="#93c5fd" stroke-width="0.007142857142857143" />
180
181
  </g>
181
182
  <g>
182
183
  <rect data-type="rect" data-label="netId: P.pin2 to P.pin17
183
- globalConnNetId: connectivity_net1" data-x="-0.8260000000000001" data-y="0.8999999999999999" x="112.07741935483867" y="130.32258064516128" width="81.29032258064518" height="36.12903225806451" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
184
+ globalConnNetId: connectivity_net1
185
+ available orientations: any" data-x="-0.8260000000000001" data-y="0.8999999999999999" x="158.85999999999999" y="172.99999999999997" width="63" height="27.99999999999997" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007142857142857143" />
184
186
  </g>
185
187
  <g>
186
188
  <rect data-type="rect" data-label="netId: P.pin2 to P.pin17
187
- globalConnNetId: connectivity_net1" data-x="0.8260000000000001" data-y="-0.2999999999999998" x="410.5032258064516" y="347.0967741935483" width="81.29032258064524" height="36.12903225806451" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
189
+ globalConnNetId: connectivity_net1
190
+ available orientations: any" data-x="0.8260000000000001" data-y="-0.2999999999999998" x="390.14" y="340.99999999999994" width="63" height="27.999999999999943" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007142857142857143" />
188
191
  </g>
189
192
  <g>
190
193
  <rect data-type="rect" data-label="netId: P.pin3 to P.pin16
191
- globalConnNetId: connectivity_net2" data-x="-0.8260000000000001" data-y="0.6999999999999998" x="112.07741935483867" y="166.4516129032258" width="81.29032258064518" height="36.12903225806451" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
194
+ globalConnNetId: connectivity_net2
195
+ available orientations: any" data-x="-0.8260000000000001" data-y="0.6999999999999998" x="158.85999999999999" y="200.99999999999997" width="63" height="27.99999999999997" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007142857142857143" />
192
196
  </g>
193
197
  <g>
194
198
  <rect data-type="rect" data-label="netId: P.pin3 to P.pin16
195
- globalConnNetId: connectivity_net2" data-x="0.8260000000000001" data-y="-0.4999999999999998" x="410.5032258064516" y="383.2258064516128" width="81.29032258064524" height="36.12903225806451" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
199
+ globalConnNetId: connectivity_net2
200
+ available orientations: any" data-x="0.8260000000000001" data-y="-0.4999999999999998" x="390.14" y="368.9999999999999" width="63" height="28" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007142857142857143" />
196
201
  </g>
197
202
  <g>
198
203
  <rect data-type="rect" data-label="netId: P.pin4 to P.pin15
199
- globalConnNetId: connectivity_net3" data-x="-1.1510000000000002" data-y="0.7249999999999998" x="75.94838709677413" y="139.35483870967744" width="36.12903225806454" height="81.29032258064515" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
204
+ globalConnNetId: connectivity_net3
205
+ available orientations: y-" data-x="-1.1510000000000002" data-y="-1.8250000000000002" x="130.85999999999996" y="537" width="28.00000000000003" height="63" fill="#fca5a566" stroke="#fca5a5" stroke-width="0.007142857142857143" />
200
206
  </g>
201
207
  <g>
202
208
  <rect data-type="rect" data-label="netId: P.pin5 to P.pin14
203
- globalConnNetId: connectivity_net4" data-x="-0.8260000000000001" data-y="0.2999999999999998" x="112.07741935483867" y="238.70967741935485" width="81.29032258064518" height="36.12903225806454" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
209
+ globalConnNetId: connectivity_net4
210
+ available orientations: any" data-x="-0.8260000000000001" data-y="0.2999999999999998" x="158.85999999999999" y="257" width="63" height="27.999999999999943" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007142857142857143" />
204
211
  </g>
205
212
  <g>
206
213
  <rect data-type="rect" data-label="netId: P.pin5 to P.pin14
207
- globalConnNetId: connectivity_net4" data-x="0.8260000000000001" data-y="-0.8999999999999999" x="410.5032258064516" y="455.4838709677419" width="81.29032258064524" height="36.12903225806451" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
214
+ globalConnNetId: connectivity_net4
215
+ available orientations: any" data-x="0.8260000000000001" data-y="-0.8999999999999999" x="390.14" y="424.99999999999994" width="63" height="27.999999999999943" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007142857142857143" />
208
216
  </g>
209
217
  <g>
210
218
  <rect data-type="rect" data-label="netId: P.pin6 to P.pin13
211
- globalConnNetId: connectivity_net5" data-x="-0.8260000000000001" data-y="0.09999999999999987" x="112.07741935483867" y="274.83870967741933" width="81.29032258064518" height="36.12903225806451" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
219
+ globalConnNetId: connectivity_net5
220
+ available orientations: any" data-x="-0.8260000000000001" data-y="0.09999999999999987" x="158.85999999999999" y="284.99999999999994" width="63" height="28" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007142857142857143" />
212
221
  </g>
213
222
  <g>
214
223
  <rect data-type="rect" data-label="netId: P.pin6 to P.pin13
215
- globalConnNetId: connectivity_net5" data-x="0.8260000000000001" data-y="-1.0999999999999999" x="410.5032258064516" y="491.6129032258064" width="81.29032258064524" height="36.12903225806457" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
224
+ globalConnNetId: connectivity_net5
225
+ available orientations: any" data-x="0.8260000000000001" data-y="-1.0999999999999999" x="390.14" y="452.9999999999999" width="63" height="28.000000000000057" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007142857142857143" />
216
226
  </g>
217
227
  <g>
218
228
  <rect data-type="rect" data-label="netId: P.pin7 to P.pin19
219
- globalConnNetId: connectivity_net6" data-x="-0.8260000000000001" data-y="-0.10000000000000009" x="112.07741935483867" y="310.96774193548384" width="81.29032258064518" height="36.12903225806451" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
229
+ globalConnNetId: connectivity_net6
230
+ available orientations: any" data-x="-0.8260000000000001" data-y="-0.10000000000000009" x="158.85999999999999" y="312.99999999999994" width="63" height="28" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007142857142857143" />
220
231
  </g>
221
232
  <g>
222
233
  <rect data-type="rect" data-label="netId: P.pin7 to P.pin19
223
- globalConnNetId: connectivity_net6" data-x="0.8260000000000001" data-y="0.10000000000000009" x="410.5032258064516" y="274.83870967741933" width="81.29032258064524" height="36.12903225806451" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.005535714285714285" />
234
+ globalConnNetId: connectivity_net6
235
+ available orientations: any" data-x="0.8260000000000001" data-y="0.10000000000000009" x="390.14" y="284.99999999999994" width="63" height="28" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.007142857142857143" />
224
236
  </g>
225
237
  <g id="crosshair" style="display: none">
226
238
  <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
@@ -250,12 +262,12 @@ globalConnNetId: connectivity_net6" data-x="0.8260000000000001" data-y="0.100000
250
262
 
251
263
  // Calculate real coordinates using inverse transformation
252
264
  const matrix = {
253
- "a": 180.6451612903226,
265
+ "a": 140,
254
266
  "c": 0,
255
- "e": 301.93548387096774,
267
+ "e": 306,
256
268
  "b": 0,
257
- "d": -180.6451612903226,
258
- "f": 310.96774193548384
269
+ "d": -140,
270
+ "f": 312.99999999999994
259
271
  };
260
272
  // Manually invert and apply the affine transform
261
273
  // Since we only use translate and scale, we can directly compute:
@@ -26,7 +26,8 @@ orientation: y+" data-x="3.2" data-y="0.30000000000000004" cx="587.5555555555557
26
26
  </g>
27
27
  <g>
28
28
  <rect data-type="rect" data-label="netId: VCC
29
- globalConnNetId: connectivity_net0" data-x="3.2" data-y="0.525" x="575.1111111111111" y="242.22222222222223" width="24.888888888888914" height="56" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008035714285714287" />
29
+ globalConnNetId: connectivity_net0
30
+ available orientations: y+" data-x="3.2" data-y="0.525" x="575.1111111111111" y="242.22222222222223" width="24.888888888888914" height="56" fill="#93c5fd66" stroke="#93c5fd" stroke-width="0.008035714285714287" />
30
31
  </g>
31
32
  <g id="crosshair" style="display: none">
32
33
  <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
@@ -1,6 +1,8 @@
1
1
  import { getSvgFromGraphicsObject, type GraphicsObject } from "graphics-debug"
2
2
  import { expect, type MatcherResult } from "bun:test"
3
3
  import type { BaseSolver } from "lib/solvers/BaseSolver/BaseSolver"
4
+ import { colorAvailableNetOrientationLabels } from "lib/solvers/SchematicTracePipelineSolver/colorAvailableNetOrientationLabels"
5
+ import type { InputProblem } from "lib/types/InputProblem"
4
6
 
5
7
  const getAllElms = (graphicsObject: GraphicsObject) => {
6
8
  return [
@@ -43,6 +45,11 @@ async function toMatchSolverSnapshot(
43
45
  )
44
46
  }
45
47
 
48
+ const inputProblem = getInputProblem(received)
49
+ if (received.solved && inputProblem) {
50
+ colorAvailableNetOrientationLabels(graphicsObject, inputProblem)
51
+ }
52
+
46
53
  const svg = getSvgFromGraphicsObject(graphicsObject, {
47
54
  backgroundColor: "white",
48
55
  })
@@ -50,6 +57,20 @@ async function toMatchSolverSnapshot(
50
57
  return expect(svg).toMatchSvgSnapshot(testPathOriginal, svgName)
51
58
  }
52
59
 
60
+ const getInputProblem = (solver: BaseSolver): InputProblem | undefined => {
61
+ const maybeSolver = solver as BaseSolver & {
62
+ inputProblem?: InputProblem
63
+ input?: { inputProblem?: InputProblem }
64
+ params?: { inputProblem?: InputProblem }
65
+ }
66
+
67
+ return (
68
+ maybeSolver.inputProblem ??
69
+ maybeSolver.input?.inputProblem ??
70
+ maybeSolver.params?.inputProblem
71
+ )
72
+ }
73
+
53
74
  expect.extend({
54
75
  toMatchSolverSnapshot: toMatchSolverSnapshot as any,
55
76
  })