@tscircuit/schematic-trace-solver 0.0.25 → 0.0.27

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 (62) hide show
  1. package/.github/workflows/bun-test.yml +8 -0
  2. package/README.md +28 -0
  3. package/bunfig.toml +2 -2
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +31 -6136
  6. package/lib/solvers/NetLabelPlacementSolver/NetLabelPlacementSolver.ts +0 -1
  7. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver.ts +11 -0
  8. package/lib/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver_visualize.ts +0 -1
  9. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceLinesSolver.ts +0 -2
  10. package/lib/solvers/SchematicTraceLinesSolver/SchematicTraceSingleLineSolver/SchematicTraceSingleLineSolver.ts +0 -1
  11. package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapIssueSolver/TraceOverlapIssueSolver.ts +0 -2
  12. package/lib/solvers/TraceOverlapShiftSolver/TraceOverlapShiftSolver.ts +0 -1
  13. package/package.json +6 -7
  14. package/site/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver01.page.tsx +574 -0
  15. package/site/components/DownloadDropdown.tsx +4 -2
  16. package/site/examples/example01-basic.page.tsx +1 -1
  17. package/site/examples/example02.page.tsx +1 -1
  18. package/site/examples/example03.page.tsx +1 -1
  19. package/site/examples/example04-single-symbol.page.tsx +1 -1
  20. package/site/examples/example05.page.tsx +1 -1
  21. package/site/examples/example06.page.tsx +1 -1
  22. package/site/examples/example07.page.tsx +1 -1
  23. package/site/examples/example08.page.tsx +1 -1
  24. package/site/examples/example09.page.tsx +1 -1
  25. package/site/examples/example10.page.tsx +1 -1
  26. package/site/examples/example11.page.tsx +1 -1
  27. package/site/examples/example12.page.tsx +1 -1
  28. package/site/examples/example13.page.tsx +219 -0
  29. package/site/examples/example14.page.tsx +210 -0
  30. package/tests/__snapshots__/svg.snap.svg +3 -0
  31. package/tests/examples/__snapshots__/example01.snap.svg +157 -0
  32. package/tests/examples/__snapshots__/example02.snap.svg +262 -0
  33. package/tests/examples/__snapshots__/example03.snap.svg +282 -0
  34. package/tests/examples/__snapshots__/example04.snap.svg +87 -0
  35. package/tests/examples/__snapshots__/example05.snap.svg +190 -0
  36. package/tests/examples/__snapshots__/example06.snap.svg +94 -0
  37. package/tests/examples/__snapshots__/example07.snap.svg +204 -0
  38. package/tests/examples/__snapshots__/example08.snap.svg +136 -0
  39. package/tests/examples/__snapshots__/example09.snap.svg +484 -0
  40. package/tests/examples/__snapshots__/example10.snap.svg +135 -0
  41. package/tests/examples/__snapshots__/example11.snap.svg +162 -0
  42. package/tests/examples/__snapshots__/example12.snap.svg +145 -0
  43. package/tests/examples/__snapshots__/example13.snap.svg +316 -0
  44. package/tests/examples/__snapshots__/example14.snap.svg +213 -0
  45. package/tests/examples/example01.test.ts +12 -0
  46. package/tests/examples/example02.test.ts +12 -0
  47. package/tests/examples/example03.test.ts +12 -0
  48. package/tests/examples/example04.test.ts +12 -0
  49. package/tests/examples/example05.test.ts +12 -0
  50. package/tests/examples/example06.test.ts +12 -0
  51. package/tests/examples/example07.test.ts +12 -0
  52. package/tests/examples/example08.test.ts +12 -0
  53. package/tests/examples/example09.test.ts +12 -0
  54. package/tests/examples/example10.test.ts +12 -0
  55. package/tests/examples/example11.test.tsx +12 -0
  56. package/tests/examples/example12.test.tsx +12 -0
  57. package/tests/examples/example13.test.tsx +12 -0
  58. package/tests/examples/example14.test.tsx +12 -0
  59. package/tests/fixtures/matcher.ts +62 -0
  60. package/tests/fixtures/preload.ts +1 -0
  61. package/tests/solvers/NetLabelPlacementSolver/SingleNetLabelPlacementSolver/SingleNetLabelPlacementSolver01.test.ts +13 -0
  62. package/tests/svg.test.ts +11 -0
@@ -0,0 +1,316 @@
1
+ <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="100%" height="100%" fill="white" />
3
+ <g>
4
+ <circle data-type="point" data-label="PWR1.7
5
+ x+" data-x="1.15" data-y="0.75" cx="365.01450957632034" cy="299.68659315148" r="3" fill="hsl(159, 100%, 50%, 0.8)" />
6
+ </g>
7
+ <g>
8
+ <circle data-type="point" data-label="PWR1.6
9
+ x+" data-x="1.15" data-y="0" cx="365.01450957632034" cy="348.43876958792805" r="3" fill="hsl(158, 100%, 50%, 0.8)" />
10
+ </g>
11
+ <g>
12
+ <circle data-type="point" data-label="PWR1.5
13
+ x+" data-x="1.15" data-y="-0.75" cx="365.01450957632034" cy="397.1909460243761" r="3" fill="hsl(157, 100%, 50%, 0.8)" />
14
+ </g>
15
+ <g>
16
+ <circle data-type="point" data-label="PWR1.4
17
+ x-" data-x="-1.15" data-y="-1.125" cx="215.507835171213" cy="421.56703424260013" r="3" fill="hsl(156, 100%, 50%, 0.8)" />
18
+ </g>
19
+ <g>
20
+ <circle data-type="point" data-label="PWR1.3
21
+ x-" data-x="-1.15" data-y="-0.375" cx="215.507835171213" cy="372.8148578061521" r="3" fill="hsl(155, 100%, 50%, 0.8)" />
22
+ </g>
23
+ <g>
24
+ <circle data-type="point" data-label="PWR1.2
25
+ x-" data-x="-1.15" data-y="0.375" cx="215.507835171213" cy="324.062681369704" r="3" fill="hsl(154, 100%, 50%, 0.8)" />
26
+ </g>
27
+ <g>
28
+ <circle data-type="point" data-label="PWR1.1
29
+ x-" data-x="-1.15" data-y="1.125" cx="215.507835171213" cy="275.31050493325597" r="3" fill="hsl(153, 100%, 50%, 0.8)" />
30
+ </g>
31
+ <g>
32
+ <circle data-type="point" data-label="R6.1
33
+ x-" data-x="-3.55" data-y="0" cx="59.50087057457921" cy="348.43876958792805" r="3" fill="hsl(351, 100%, 50%, 0.8)" />
34
+ </g>
35
+ <g>
36
+ <circle data-type="point" data-label="R6.2
37
+ x+" data-x="-2.45" data-y="0" cx="131.00406268136967" cy="348.43876958792805" r="3" fill="hsl(352, 100%, 50%, 0.8)" />
38
+ </g>
39
+ <g>
40
+ <circle data-type="point" data-label="R7.1
41
+ x-" data-x="-3.55" data-y="-1.9999999999999998" cx="59.50087057457921" cy="478.4445734184562" r="3" fill="hsl(232, 100%, 50%, 0.8)" />
42
+ </g>
43
+ <g>
44
+ <circle data-type="point" data-label="R7.2
45
+ x+" data-x="-2.45" data-y="-1.9999999999999998" cx="131.00406268136967" cy="478.4445734184562" r="3" fill="hsl(233, 100%, 50%, 0.8)" />
46
+ </g>
47
+ <g>
48
+ <circle data-type="point" data-label="R8.1
49
+ x-" data-x="-3.55" data-y="2" cx="59.50087057457921" cy="218.4329657573999" r="3" fill="hsl(113, 100%, 50%, 0.8)" />
50
+ </g>
51
+ <g>
52
+ <circle data-type="point" data-label="R8.2
53
+ x+" data-x="-2.45" data-y="2" cx="131.00406268136967" cy="218.4329657573999" r="3" fill="hsl(114, 100%, 50%, 0.8)" />
54
+ </g>
55
+ <g>
56
+ <circle data-type="point" data-label="C6.1
57
+ x-" data-x="2.45" data-y="-1.5" cx="449.5182820661637" cy="445.94312246082416" r="3" fill="hsl(246, 100%, 50%, 0.8)" />
58
+ </g>
59
+ <g>
60
+ <circle data-type="point" data-label="C6.2
61
+ x+" data-x="3.55" data-y="-1.5" cx="521.0214741729542" cy="445.94312246082416" r="3" fill="hsl(247, 100%, 50%, 0.8)" />
62
+ </g>
63
+ <g>
64
+ <circle data-type="point" data-label="C7.1
65
+ x-" data-x="2.45" data-y="0" cx="449.5182820661637" cy="348.43876958792805" r="3" fill="hsl(127, 100%, 50%, 0.8)" />
66
+ </g>
67
+ <g>
68
+ <circle data-type="point" data-label="C7.2
69
+ x+" data-x="3.55" data-y="0" cx="521.0214741729542" cy="348.43876958792805" r="3" fill="hsl(128, 100%, 50%, 0.8)" />
70
+ </g>
71
+ <g>
72
+ <circle data-type="point" data-label="LED1.1
73
+ x-" data-x="3.435" data-y="3" cx="513.5461404526988" cy="153.43006384213584" r="3" fill="hsl(57, 100%, 50%, 0.8)" />
74
+ </g>
75
+ <g>
76
+ <circle data-type="point" data-label="LED1.2
77
+ x+" data-x="4.5649999999999995" data-y="3" cx="586.9994196169471" cy="153.43006384213584" r="3" fill="hsl(58, 100%, 50%, 0.8)" />
78
+ </g>
79
+ <g>
80
+ <circle data-type="point" data-label="" data-x="-3.75" data-y="2" cx="46.500290191526375" cy="218.4329657573999" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
81
+ </g>
82
+ <g>
83
+ <circle data-type="point" data-label="" data-x="2.45" data-y="0" cx="449.5182820661637" cy="348.43876958792805" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
84
+ </g>
85
+ <g>
86
+ <circle data-type="point" data-label="" data-x="3.435" data-y="3" cx="513.5461404526988" cy="153.43006384213584" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
87
+ </g>
88
+ <g>
89
+ <circle data-type="point" data-label="" data-x="-2.45" data-y="2" cx="131.00406268136967" cy="218.4329657573999" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
90
+ </g>
91
+ <g>
92
+ <circle data-type="point" data-label="" data-x="-2.25" data-y="0" cx="144.0046430644225" cy="348.43876958792805" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
93
+ </g>
94
+ <g>
95
+ <circle data-type="point" data-label="" data-x="-2.25" data-y="-1.9999999999999998" cx="144.0046430644225" cy="478.4445734184562" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
96
+ </g>
97
+ <g>
98
+ <circle data-type="point" data-label="" data-x="1.35" data-y="0" cx="378.0150899593732" cy="348.43876958792805" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
99
+ </g>
100
+ <g>
101
+ <polyline data-points="-3.55,0 -1.15,1.125" data-type="line" data-label="" points="59.50087057457921,348.43876958792805 215.507835171213,275.31050493325597" fill="none" stroke="hsl(40, 100%, 50%, 0.8)" stroke-width="1" />
102
+ </g>
103
+ <g>
104
+ <polyline data-points="3.435,3 -2.45,2" data-type="line" data-label="" points="513.5461404526988,153.43006384213584 131.00406268136967,218.4329657573999" fill="none" stroke="hsl(224, 100%, 50%, 0.8)" stroke-width="1" />
105
+ </g>
106
+ <g>
107
+ <polyline data-points="-1.15,0.375 -2.45,0" data-type="line" data-label="" points="215.507835171213,324.062681369704 131.00406268136967,348.43876958792805" fill="none" stroke="hsl(272, 100%, 50%, 0.8)" stroke-width="1" />
108
+ </g>
109
+ <g>
110
+ <polyline data-points="-1.15,0.375 -3.55,-1.9999999999999998" data-type="line" data-label="" points="215.507835171213,324.062681369704 59.50087057457921,478.4445734184562" fill="none" stroke="hsl(272, 100%, 50%, 0.8)" stroke-width="1" />
111
+ </g>
112
+ <g>
113
+ <polyline data-points="1.15,0.75 -1.15,-0.375" data-type="line" data-label="" points="365.01450957632034,299.68659315148 215.507835171213,372.8148578061521" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
114
+ </g>
115
+ <g>
116
+ <polyline data-points="1.15,0.75 -2.45,-1.9999999999999998" data-type="line" data-label="" points="365.01450957632034,299.68659315148 131.00406268136967,478.4445734184562" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
117
+ </g>
118
+ <g>
119
+ <polyline data-points="1.15,0.75 3.55,-1.5" data-type="line" data-label="" points="365.01450957632034,299.68659315148 521.0214741729542,445.94312246082416" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
120
+ </g>
121
+ <g>
122
+ <polyline data-points="1.15,0.75 3.55,0" data-type="line" data-label="" points="365.01450957632034,299.68659315148 521.0214741729542,348.43876958792805" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
123
+ </g>
124
+ <g>
125
+ <polyline data-points="1.15,0.75 4.5649999999999995,3" data-type="line" data-label="" points="365.01450957632034,299.68659315148 586.9994196169471,153.43006384213584" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
126
+ </g>
127
+ <g>
128
+ <polyline data-points="-1.15,-0.375 -2.45,-1.9999999999999998" data-type="line" data-label="" points="215.507835171213,372.8148578061521 131.00406268136967,478.4445734184562" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
129
+ </g>
130
+ <g>
131
+ <polyline data-points="-1.15,-0.375 3.55,-1.5" data-type="line" data-label="" points="215.507835171213,372.8148578061521 521.0214741729542,445.94312246082416" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
132
+ </g>
133
+ <g>
134
+ <polyline data-points="-1.15,-0.375 3.55,0" data-type="line" data-label="" points="215.507835171213,372.8148578061521 521.0214741729542,348.43876958792805" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
135
+ </g>
136
+ <g>
137
+ <polyline data-points="-1.15,-0.375 4.5649999999999995,3" data-type="line" data-label="" points="215.507835171213,372.8148578061521 586.9994196169471,153.43006384213584" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
138
+ </g>
139
+ <g>
140
+ <polyline data-points="-2.45,-1.9999999999999998 3.55,-1.5" data-type="line" data-label="" points="131.00406268136967,478.4445734184562 521.0214741729542,445.94312246082416" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
141
+ </g>
142
+ <g>
143
+ <polyline data-points="-2.45,-1.9999999999999998 3.55,0" data-type="line" data-label="" points="131.00406268136967,478.4445734184562 521.0214741729542,348.43876958792805" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
144
+ </g>
145
+ <g>
146
+ <polyline data-points="-2.45,-1.9999999999999998 4.5649999999999995,3" data-type="line" data-label="" points="131.00406268136967,478.4445734184562 586.9994196169471,153.43006384213584" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
147
+ </g>
148
+ <g>
149
+ <polyline data-points="3.55,-1.5 3.55,0" data-type="line" data-label="" points="521.0214741729542,445.94312246082416 521.0214741729542,348.43876958792805" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
150
+ </g>
151
+ <g>
152
+ <polyline data-points="3.55,-1.5 4.5649999999999995,3" data-type="line" data-label="" points="521.0214741729542,445.94312246082416 586.9994196169471,153.43006384213584" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
153
+ </g>
154
+ <g>
155
+ <polyline data-points="3.55,0 4.5649999999999995,3" data-type="line" data-label="" points="521.0214741729542,348.43876958792805 586.9994196169471,153.43006384213584" fill="none" stroke="hsl(253, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
156
+ </g>
157
+ <g>
158
+ <polyline data-points="1.15,0 -1.15,-1.125" data-type="line" data-label="" points="365.01450957632034,348.43876958792805 215.507835171213,421.56703424260013" fill="none" stroke="hsl(111, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
159
+ </g>
160
+ <g>
161
+ <polyline data-points="1.15,0 2.45,-1.5" data-type="line" data-label="" points="365.01450957632034,348.43876958792805 449.5182820661637,445.94312246082416" fill="none" stroke="hsl(111, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
162
+ </g>
163
+ <g>
164
+ <polyline data-points="-1.15,-1.125 2.45,-1.5" data-type="line" data-label="" points="215.507835171213,421.56703424260013 449.5182820661637,445.94312246082416" fill="none" stroke="hsl(111, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
165
+ </g>
166
+ <g>
167
+ <polyline data-points="-1.15,1.125 -3.55,0" data-type="line" data-label="" points="215.507835171213,275.31050493325597 59.50087057457921,348.43876958792805" fill="none" stroke="hsl(105, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
168
+ </g>
169
+ <g>
170
+ <polyline data-points="-1.15,1.125 -3.55,2" data-type="line" data-label="" points="215.507835171213,275.31050493325597 59.50087057457921,218.4329657573999" fill="none" stroke="hsl(105, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
171
+ </g>
172
+ <g>
173
+ <polyline data-points="-1.15,1.125 2.45,0" data-type="line" data-label="" points="215.507835171213,275.31050493325597 449.5182820661637,348.43876958792805" fill="none" stroke="hsl(105, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
174
+ </g>
175
+ <g>
176
+ <polyline data-points="-3.55,0 -3.55,2" data-type="line" data-label="" points="59.50087057457921,348.43876958792805 59.50087057457921,218.4329657573999" fill="none" stroke="hsl(105, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
177
+ </g>
178
+ <g>
179
+ <polyline data-points="-3.55,0 2.45,0" data-type="line" data-label="" points="59.50087057457921,348.43876958792805 449.5182820661637,348.43876958792805" fill="none" stroke="hsl(105, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
180
+ </g>
181
+ <g>
182
+ <polyline data-points="-3.55,2 2.45,0" data-type="line" data-label="" points="59.50087057457921,218.4329657573999 449.5182820661637,348.43876958792805" fill="none" stroke="hsl(105, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
183
+ </g>
184
+ <g>
185
+ <polyline data-points="-3.55,2 -3.75,2 -3.75,1.125 -1.1500000000000004,1.125" data-type="line" data-label="" points="59.50087057457921,218.4329657573999 46.500290191526375,218.4329657573999 46.500290191526375,275.31050493325597 215.50783517121295,275.31050493325597" fill="none" stroke="purple" stroke-width="1" />
186
+ </g>
187
+ <g>
188
+ <polyline data-points="-3.55,0 -3.75,0 -3.75,2 -3.55,2" data-type="line" data-label="" points="59.50087057457921,348.43876958792805 46.500290191526375,348.43876958792805 46.500290191526375,218.4329657573999 59.50087057457921,218.4329657573999" fill="none" stroke="purple" stroke-width="1" />
189
+ </g>
190
+ <g>
191
+ <polyline data-points="-2.45,0 -2.25,0 -1.8,0 -1.8,0.375 -1.3499999999999999,0.375 -1.15,0.375" data-type="line" data-label="" points="131.00406268136967,348.43876958792805 144.0046430644225,348.43876958792805 173.25594892629132,348.43876958792805 173.25594892629132,324.062681369704 202.5072547881602,324.062681369704 215.507835171213,324.062681369704" fill="none" stroke="purple" stroke-width="1" />
192
+ </g>
193
+ <g>
194
+ <polyline data-points="-3.55,-1.9999999999999998 -3.75,-1.9999999999999998 -3.75,-1.1127723250000003 -2.25,-1.1127723250000003 -2.25,0 -2.45,0" data-type="line" data-label="" points="59.50087057457921,478.4445734184562 46.500290191526375,478.4445734184562 46.500290191526375,420.77219988392346 144.0046430644225,420.77219988392346 144.0046430644225,348.43876958792805 131.00406268136967,348.43876958792805" fill="none" stroke="purple" stroke-width="1" />
195
+ </g>
196
+ <g>
197
+ <polyline data-points="3.55,0 3.75,0 3.75,-1.5 3.55,-1.5" data-type="line" data-label="" points="521.0214741729542,348.43876958792805 534.022054556007,348.43876958792805 534.022054556007,445.94312246082416 521.0214741729542,445.94312246082416" fill="none" stroke="purple" stroke-width="1" />
198
+ </g>
199
+ <g>
200
+ <polyline data-points="1.15,0.75 3.75,0.75 3.75,0 3.55,0" data-type="line" data-label="" points="365.01450957632034,299.68659315148 534.022054556007,299.68659315148 534.022054556007,348.43876958792805 521.0214741729542,348.43876958792805" fill="none" stroke="purple" stroke-width="1" />
201
+ </g>
202
+ <g>
203
+ <polyline data-points="-1.15,-0.375 -1.3499999999999999,-0.375 -1.3499999999999999,2.275 1.35,2.275 1.35,0.75 1.15,0.75" data-type="line" data-label="" points="215.507835171213,372.8148578061521 202.5072547881602,372.8148578061521 202.5072547881602,200.55716773070228 378.0150899593732,200.55716773070228 378.0150899593732,299.68659315148 365.01450957632034,299.68659315148" fill="none" stroke="purple" stroke-width="1" />
204
+ </g>
205
+ <g>
206
+ <polyline data-points="-2.45,-1.9999999999999998 -2.25,-1.9999999999999998 -1.8,-1.9999999999999998 -1.8,-0.375 -1.3499999999999999,-0.375 -1.15,-0.375" data-type="line" data-label="" points="131.00406268136967,478.4445734184562 144.0046430644225,478.4445734184562 173.25594892629132,478.4445734184562 173.25594892629132,372.8148578061521 202.5072547881602,372.8148578061521 215.507835171213,372.8148578061521" fill="none" stroke="purple" stroke-width="1" />
207
+ </g>
208
+ <g>
209
+ <polyline data-points="4.5649999999999995,3 4.765,3 4.765,0 3.55,0" data-type="line" data-label="" points="586.9994196169471,153.43006384213584 600,153.43006384213584 600,348.43876958792805 521.0214741729542,348.43876958792805" fill="none" stroke="purple" stroke-width="1" />
210
+ </g>
211
+ <g>
212
+ <polyline data-points="1.15,0 1.3499999999999999,0 1.8,0 1.8,-1.5 2.25,-1.5 2.45,-1.5" data-type="line" data-label="" points="365.01450957632034,348.43876958792805 378.01508995937314,348.43876958792805 407.266395821242,348.43876958792805 407.266395821242,445.94312246082416 436.51770168311083,445.94312246082416 449.5182820661637,445.94312246082416" fill="none" stroke="purple" stroke-width="1" />
213
+ </g>
214
+ <g>
215
+ <polyline data-points="-1.15,-1.125 -1.3499999999999999,-1.125 -1.3499999999999999,-2.29445535 1.35,-2.29445535 1.35,0 1.15,0" data-type="line" data-label="" points="215.507835171213,421.56703424260013 202.5072547881602,421.56703424260013 202.5072547881602,497.58502565293094 378.0150899593732,497.58502565293094 378.0150899593732,348.43876958792805 365.01450957632034,348.43876958792805" fill="none" stroke="purple" stroke-width="1" />
216
+ </g>
217
+ <g>
218
+ <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="215.507835171213" y="226.55832849680792" width="149.50667440510733" height="243.76088218224027" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015383928571428571" />
219
+ </g>
220
+ <g>
221
+ <rect data-type="rect" data-label="schematic_component_1" data-x="-3" data-y="0" x="59.50087057457921" y="335.79860754497975" width="71.50319210679046" height="25.28032408589661" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015383928571428571" />
222
+ </g>
223
+ <g>
224
+ <rect data-type="rect" data-label="schematic_component_2" data-x="-3" data-y="-2" x="59.50087057457921" y="465.80441137550787" width="71.50319210679046" height="25.280324085896666" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015383928571428571" />
225
+ </g>
226
+ <g>
227
+ <rect data-type="rect" data-label="schematic_component_3" data-x="-3" data-y="2" x="59.50087057457921" y="205.79280371445157" width="71.50319210679046" height="25.280324085896666" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015383928571428571" />
228
+ </g>
229
+ <g>
230
+ <rect data-type="rect" data-label="schematic_component_4" data-x="3" data-y="-1.5" x="449.5182820661637" y="418.64190365641326" width="71.5031921067905" height="54.60243760882179" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015383928571428571" />
231
+ </g>
232
+ <g>
233
+ <rect data-type="rect" data-label="schematic_component_5" data-x="3" data-y="0" x="449.5182820661637" y="321.13755078351716" width="71.5031921067905" height="54.60243760882179" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015383928571428571" />
234
+ </g>
235
+ <g>
236
+ <rect data-type="rect" data-label="schematic_component_6" data-x="4" data-y="3" x="513.5461404526988" y="132.30412071967498" width="73.45327916424833" height="42.25188624492168" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.015383928571428571" />
237
+ </g>
238
+ <g>
239
+ <rect data-type="rect" data-label="" data-x="-3.75" data-y="2.225" x="39.99999999999997" y="189.18165989553106" width="13.000580383052835" height="29.251305861868843" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015383928571428571" />
240
+ </g>
241
+ <g>
242
+ <rect data-type="rect" data-label="" data-x="2.224" data-y="0" x="420.20197330237954" y="341.93847939640165" width="29.2513058618689" height="13.000580383052807" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015383928571428571" />
243
+ </g>
244
+ <g>
245
+ <rect data-type="rect" data-label="" data-x="3.209" data-y="3" x="484.22983168891466" y="146.9297736506094" width="29.251305861868843" height="13.000580383052835" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015383928571428571" />
246
+ </g>
247
+ <g>
248
+ <rect data-type="rect" data-label="" data-x="-2.224" data-y="2" x="131.06906558328492" y="211.9326755658735" width="29.251305861868843" height="13.000580383052835" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015383928571428571" />
249
+ </g>
250
+ <g>
251
+ <rect data-type="rect" data-label="" data-x="-2.25" data-y="0.225" x="137.50435287289608" y="319.1874637260592" width="13.000580383052835" height="29.251305861868843" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015383928571428571" />
252
+ </g>
253
+ <g>
254
+ <rect data-type="rect" data-label="" data-x="-2.25" data-y="-2.2249999999999996" x="137.50435287289608" y="478.4445734184562" width="13.000580383052835" height="29.251305861868843" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015383928571428571" />
255
+ </g>
256
+ <g>
257
+ <rect data-type="rect" data-label="" data-x="1.35" data-y="0.225" x="371.51479976784674" y="319.1874637260592" width="13.000580383052863" height="29.251305861868843" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.015383928571428571" />
258
+ </g>
259
+ <g id="crosshair" style="display: none">
260
+ <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
261
+ <line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5" /><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text>
262
+ </g>
263
+ <script>
264
+ <![CDATA[
265
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
266
+ const svg = e.currentTarget;
267
+ const rect = svg.getBoundingClientRect();
268
+ const x = e.clientX - rect.left;
269
+ const y = e.clientY - rect.top;
270
+ const crosshair = svg.getElementById('crosshair');
271
+ const h = svg.getElementById('crosshair-h');
272
+ const v = svg.getElementById('crosshair-v');
273
+ const coords = svg.getElementById('coordinates');
274
+
275
+ crosshair.style.display = 'block';
276
+ h.setAttribute('x1', '0');
277
+ h.setAttribute('x2', '640');
278
+ h.setAttribute('y1', y);
279
+ h.setAttribute('y2', y);
280
+ v.setAttribute('x1', x);
281
+ v.setAttribute('x2', x);
282
+ v.setAttribute('y1', '0');
283
+ v.setAttribute('y2', '640');
284
+
285
+ // Calculate real coordinates using inverse transformation
286
+ const matrix = {
287
+ "a": 65.00290191526408,
288
+ "c": 0,
289
+ "e": 290.26117237376667,
290
+ "b": 0,
291
+ "d": -65.00290191526408,
292
+ "f": 348.43876958792805
293
+ };
294
+ // Manually invert and apply the affine transform
295
+ // Since we only use translate and scale, we can directly compute:
296
+ // x' = (x - tx) / sx
297
+ // y' = (y - ty) / sy
298
+ const sx = matrix.a;
299
+ const sy = matrix.d;
300
+ const tx = matrix.e;
301
+ const ty = matrix.f;
302
+ const realPoint = {
303
+ x: (x - tx) / sx,
304
+ y: (y - ty) / sy // Flip y back since we used negative scale
305
+ }
306
+
307
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
308
+ coords.setAttribute('x', (x + 5).toString());
309
+ coords.setAttribute('y', (y - 5).toString());
310
+ });
311
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
312
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
313
+ });
314
+ ]]>
315
+ </script>
316
+ </svg>
@@ -0,0 +1,213 @@
1
+ <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="100%" height="100%" fill="white" />
3
+ <g>
4
+ <circle data-type="point" data-label="U1.1
5
+ x+" data-x="1.2000000000000002" data-y="-0.30000000000000004" cx="432" cy="348" r="3" fill="hsl(319, 100%, 50%, 0.8)" />
6
+ </g>
7
+ <g>
8
+ <circle data-type="point" data-label="U1.2
9
+ x-" data-x="-1.2000000000000002" data-y="-0.30000000000000004" cx="208" cy="348" r="3" fill="hsl(320, 100%, 50%, 0.8)" />
10
+ </g>
11
+ <g>
12
+ <circle data-type="point" data-label="U1.3
13
+ x+" data-x="1.2000000000000002" data-y="0.09999999999999998" cx="432" cy="310.6666666666667" r="3" fill="hsl(321, 100%, 50%, 0.8)" />
14
+ </g>
15
+ <g>
16
+ <circle data-type="point" data-label="U1.4
17
+ x-" data-x="-1.2000000000000002" data-y="0.30000000000000004" cx="208" cy="292" r="3" fill="hsl(322, 100%, 50%, 0.8)" />
18
+ </g>
19
+ <g>
20
+ <circle data-type="point" data-label="U1.5
21
+ x-" data-x="-1.2000000000000002" data-y="0.10000000000000003" cx="208" cy="310.6666666666667" r="3" fill="hsl(323, 100%, 50%, 0.8)" />
22
+ </g>
23
+ <g>
24
+ <circle data-type="point" data-label="U1.6
25
+ x-" data-x="-1.2000000000000002" data-y="-0.09999999999999998" cx="208" cy="329.3333333333333" r="3" fill="hsl(324, 100%, 50%, 0.8)" />
26
+ </g>
27
+ <g>
28
+ <circle data-type="point" data-label="U1.7
29
+ x+" data-x="1.2000000000000002" data-y="-0.10000000000000003" cx="432" cy="329.3333333333333" r="3" fill="hsl(325, 100%, 50%, 0.8)" />
30
+ </g>
31
+ <g>
32
+ <circle data-type="point" data-label="U1.8
33
+ x+" data-x="1.2000000000000002" data-y="0.30000000000000004" cx="432" cy="292" r="3" fill="hsl(326, 100%, 50%, 0.8)" />
34
+ </g>
35
+ <g>
36
+ <circle data-type="point" data-label="R1.1
37
+ x+" data-x="3" data-y="-0.10000000000000016" cx="600" cy="329.33333333333337" r="3" fill="hsl(226, 100%, 50%, 0.8)" />
38
+ </g>
39
+ <g>
40
+ <circle data-type="point" data-label="R1.2
41
+ x-" data-x="1.9000000000000004" data-y="-0.10000000000000002" cx="497.33333333333337" cy="329.3333333333333" r="3" fill="hsl(227, 100%, 50%, 0.8)" />
42
+ </g>
43
+ <g>
44
+ <circle data-type="point" data-label="R2.1
45
+ x+" data-x="1.2000000000000002" data-y="-1.2944553500000002" cx="432" cy="440.81583266666667" r="3" fill="hsl(107, 100%, 50%, 0.8)" />
46
+ </g>
47
+ <g>
48
+ <circle data-type="point" data-label="R2.2
49
+ x-" data-x="0.10000000000000009" data-y="-1.2944553500000002" cx="329.3333333333333" cy="440.81583266666667" r="3" fill="hsl(108, 100%, 50%, 0.8)" />
50
+ </g>
51
+ <g>
52
+ <circle data-type="point" data-label="C1.1
53
+ y+" data-x="-1.2000000000000002" data-y="-1.1500000000000001" cx="208" cy="427.33333333333337" r="3" fill="hsl(121, 100%, 50%, 0.8)" />
54
+ </g>
55
+ <g>
56
+ <circle data-type="point" data-label="C1.2
57
+ y-" data-x="-1.2000000000000002" data-y="-2.25" cx="208" cy="530" r="3" fill="hsl(122, 100%, 50%, 0.8)" />
58
+ </g>
59
+ <g>
60
+ <circle data-type="point" data-label="C2.1
61
+ x+" data-x="-1.9000000000000004" data-y="0.10000000000000002" cx="142.66666666666663" cy="310.6666666666667" r="3" fill="hsl(2, 100%, 50%, 0.8)" />
62
+ </g>
63
+ <g>
64
+ <circle data-type="point" data-label="C2.2
65
+ x-" data-x="-3" data-y="0.10000000000000016" cx="40" cy="310.66666666666663" r="3" fill="hsl(3, 100%, 50%, 0.8)" />
66
+ </g>
67
+ <g>
68
+ <circle data-type="point" data-label="R3.1
69
+ y-" data-x="1.2000000000000002" data-y="1.1500000000000001" cx="432" cy="212.66666666666666" r="3" fill="hsl(348, 100%, 50%, 0.8)" />
70
+ </g>
71
+ <g>
72
+ <circle data-type="point" data-label="R3.2
73
+ y+" data-x="1.2000000000000002" data-y="2.25" cx="432" cy="110" r="3" fill="hsl(349, 100%, 50%, 0.8)" />
74
+ </g>
75
+ <g>
76
+ <circle data-type="point" data-label="" data-x="1.2000000000000002" data-y="-0.30000000000000004" cx="432" cy="348" r="3" fill="orange" />
77
+ </g>
78
+ <g>
79
+ <circle data-type="point" data-label="" data-x="1.2000000000000002" data-y="-0.30000000000000004" cx="432" cy="348" r="3" fill="red" />
80
+ </g>
81
+ <g>
82
+ <circle data-type="point" data-label="" data-x="1.2000000000000002" data-y="-0.30000000000000004" cx="432" cy="348" r="3" fill="red" />
83
+ </g>
84
+ <g>
85
+ <circle data-type="point" data-label="" data-x="1.2000000000000002" data-y="-0.30000000000000004" cx="432" cy="348" r="3" fill="red" />
86
+ </g>
87
+ <g>
88
+ <polyline data-points="-1.2000000000000002,0.10000000000000003 -1.9000000000000004,0.10000000000000002" data-type="line" data-label="" points="208,310.6666666666667 142.66666666666663,310.6666666666667" fill="none" stroke="hsl(296, 100%, 50%, 0.8)" stroke-width="1" />
89
+ </g>
90
+ <g>
91
+ <polyline data-points="-1.2000000000000002,-0.09999999999999998 -1.2000000000000002,-0.30000000000000004" data-type="line" data-label="" points="208,329.3333333333333 208,348" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1" />
92
+ </g>
93
+ <g>
94
+ <polyline data-points="1.9000000000000004,-0.10000000000000002 1.2000000000000002,-0.10000000000000003" data-type="line" data-label="" points="497.33333333333337,329.3333333333333 432,329.3333333333333" fill="none" stroke="hsl(248, 100%, 50%, 0.8)" stroke-width="1" />
95
+ </g>
96
+ <g>
97
+ <polyline data-points="1.2000000000000002,-0.10000000000000003 1.2000000000000002,-1.2944553500000002" data-type="line" data-label="" points="432,329.3333333333333 432,440.81583266666667" fill="none" stroke="hsl(160, 100%, 50%, 0.8)" stroke-width="1" />
98
+ </g>
99
+ <g>
100
+ <polyline data-points="0.10000000000000009,-1.2944553500000002 -1.2000000000000002,-0.09999999999999998" data-type="line" data-label="" points="329.3333333333333,440.81583266666667 208,329.3333333333333" fill="none" stroke="hsl(104, 100%, 50%, 0.8)" stroke-width="1" />
101
+ </g>
102
+ <g>
103
+ <polyline data-points="-1.2000000000000002,-0.09999999999999998 -1.2000000000000002,-1.1500000000000001" data-type="line" data-label="" points="208,329.3333333333333 208,427.33333333333337" fill="none" stroke="hsl(168, 100%, 50%, 0.8)" stroke-width="1" />
104
+ </g>
105
+ <g>
106
+ <polyline data-points="1.2000000000000002,0.09999999999999998 1.2000000000000002,1.1500000000000001" data-type="line" data-label="" points="432,310.6666666666667 432,212.66666666666666" fill="none" stroke="hsl(320, 100%, 50%, 0.8)" stroke-width="1" />
107
+ </g>
108
+ <g>
109
+ <polyline data-points="1.2000000000000002,-0.30000000000000004 -1.2000000000000002,-2.25" data-type="line" data-label="" points="432,348 208,530" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
110
+ </g>
111
+ <g>
112
+ <polyline data-points="1.2000000000000002,-0.30000000000000004 -3,0.10000000000000016" data-type="line" data-label="" points="432,348 40,310.66666666666663" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
113
+ </g>
114
+ <g>
115
+ <polyline data-points="-1.2000000000000002,-2.25 -3,0.10000000000000016" data-type="line" data-label="" points="208,530 40,310.66666666666663" fill="none" stroke="hsl(157, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
116
+ </g>
117
+ <g>
118
+ <polyline data-points="-1.2000000000000002,0.30000000000000004 1.2000000000000002,0.30000000000000004" data-type="line" data-label="" points="208,292 432,292" fill="none" stroke="hsl(190, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
119
+ </g>
120
+ <g>
121
+ <polyline data-points="-1.2000000000000002,0.30000000000000004 3,-0.10000000000000016" data-type="line" data-label="" points="208,292 600,329.33333333333337" fill="none" stroke="hsl(190, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
122
+ </g>
123
+ <g>
124
+ <polyline data-points="1.2000000000000002,0.30000000000000004 3,-0.10000000000000016" data-type="line" data-label="" points="432,292 600,329.33333333333337" fill="none" stroke="hsl(190, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
125
+ </g>
126
+ <g>
127
+ <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="208" y="273.3333333333333" width="224" height="93.33333333333337" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010714285714285714" />
128
+ </g>
129
+ <g>
130
+ <rect data-type="rect" data-label="schematic_component_1" data-x="2.45" data-y="-0.10000000000000009" x="497.33333333333337" y="311.1841673333334" width="102.66666666666663" height="36.2983319999999" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010714285714285714" />
131
+ </g>
132
+ <g>
133
+ <rect data-type="rect" data-label="schematic_component_2" data-x="0.6500000000000001" data-y="-1.2944553500000002" x="329.3333333333333" y="422.66666666666674" width="102.66666666666669" height="36.2983319999999" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010714285714285714" />
134
+ </g>
135
+ <g>
136
+ <rect data-type="rect" data-label="schematic_component_3" data-x="-1.2000000000000002" data-y="-1.7000000000000002" x="158.53333333333333" y="427.33333333333337" width="98.93333333333331" height="102.66666666666663" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010714285714285714" />
137
+ </g>
138
+ <g>
139
+ <rect data-type="rect" data-label="schematic_component_4" data-x="-2.45" data-y="0.10000000000000009" x="40" y="271.4666666666667" width="102.66666666666663" height="78.39999999999998" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010714285714285714" />
140
+ </g>
141
+ <g>
142
+ <rect data-type="rect" data-label="schematic_component_5" data-x="1.2000000000000002" data-y="1.7000000000000002" x="382.53333333333336" y="110" width="98.93333333333334" height="102.66666666666666" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.010714285714285714" />
143
+ </g>
144
+ <g>
145
+ <rect data-type="rect" data-label="" data-x="1.4260000000000002" data-y="-0.30000000000000004" x="432.09333333333336" y="338.6666666666667" width="42" height="18.66666666666663" fill="rgba(220, 140, 0, 0.25)" stroke="black" stroke-width="0.010714285714285714" />
146
+ </g>
147
+ <g>
148
+ <rect data-type="rect" data-label="" data-x="0.9740000000000002" data-y="-0.30000000000000004" x="389.9066666666667" y="338.6666666666667" width="42" height="18.66666666666663" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.010714285714285714" />
149
+ </g>
150
+ <g>
151
+ <rect data-type="rect" data-label="" data-x="1.2000000000000002" data-y="-0.07400000000000004" x="422.6666666666667" y="305.9066666666667" width="18.666666666666686" height="42" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.010714285714285714" />
152
+ </g>
153
+ <g>
154
+ <rect data-type="rect" data-label="" data-x="1.2000000000000002" data-y="-0.526" x="422.6666666666667" y="348.09333333333336" width="18.666666666666686" height="42" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.010714285714285714" />
155
+ </g>
156
+ <g id="crosshair" style="display: none">
157
+ <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
158
+ <line id="crosshair-v" x1="0" x2="640" stroke="#666" stroke-width="0.5" /><text id="coordinates" font-family="monospace" font-size="12" fill="#666"></text>
159
+ </g>
160
+ <script>
161
+ <![CDATA[
162
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
163
+ const svg = e.currentTarget;
164
+ const rect = svg.getBoundingClientRect();
165
+ const x = e.clientX - rect.left;
166
+ const y = e.clientY - rect.top;
167
+ const crosshair = svg.getElementById('crosshair');
168
+ const h = svg.getElementById('crosshair-h');
169
+ const v = svg.getElementById('crosshair-v');
170
+ const coords = svg.getElementById('coordinates');
171
+
172
+ crosshair.style.display = 'block';
173
+ h.setAttribute('x1', '0');
174
+ h.setAttribute('x2', '640');
175
+ h.setAttribute('y1', y);
176
+ h.setAttribute('y2', y);
177
+ v.setAttribute('x1', x);
178
+ v.setAttribute('x2', x);
179
+ v.setAttribute('y1', '0');
180
+ v.setAttribute('y2', '640');
181
+
182
+ // Calculate real coordinates using inverse transformation
183
+ const matrix = {
184
+ "a": 93.33333333333333,
185
+ "c": 0,
186
+ "e": 320,
187
+ "b": 0,
188
+ "d": -93.33333333333333,
189
+ "f": 320
190
+ };
191
+ // Manually invert and apply the affine transform
192
+ // Since we only use translate and scale, we can directly compute:
193
+ // x' = (x - tx) / sx
194
+ // y' = (y - ty) / sy
195
+ const sx = matrix.a;
196
+ const sy = matrix.d;
197
+ const tx = matrix.e;
198
+ const ty = matrix.f;
199
+ const realPoint = {
200
+ x: (x - tx) / sx,
201
+ y: (y - ty) / sy // Flip y back since we used negative scale
202
+ }
203
+
204
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
205
+ coords.setAttribute('x', (x + 5).toString());
206
+ coords.setAttribute('y', (y - 5).toString());
207
+ });
208
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
209
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
210
+ });
211
+ ]]>
212
+ </script>
213
+ </svg>
@@ -0,0 +1,12 @@
1
+ import { test, expect } from "bun:test"
2
+ import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
3
+ import { inputProblem } from "site/examples/example01-basic.page"
4
+ import "tests/fixtures/matcher"
5
+
6
+ test("example01", () => {
7
+ const solver = new SchematicTracePipelineSolver(inputProblem)
8
+
9
+ solver.solve()
10
+
11
+ expect(solver).toMatchSolverSnapshot(import.meta.path)
12
+ })
@@ -0,0 +1,12 @@
1
+ import { test, expect } from "bun:test"
2
+ import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
3
+ import { inputProblem } from "site/examples/example02.page"
4
+ import "tests/fixtures/matcher"
5
+
6
+ test("example02", () => {
7
+ const solver = new SchematicTracePipelineSolver(inputProblem)
8
+
9
+ solver.solve()
10
+
11
+ expect(solver).toMatchSolverSnapshot(import.meta.path)
12
+ })
@@ -0,0 +1,12 @@
1
+ import { test, expect } from "bun:test"
2
+ import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
3
+ import { inputProblem } from "site/examples/example03.page"
4
+ import "tests/fixtures/matcher"
5
+
6
+ test("example03", () => {
7
+ const solver = new SchematicTracePipelineSolver(inputProblem)
8
+
9
+ solver.solve()
10
+
11
+ expect(solver).toMatchSolverSnapshot(import.meta.path)
12
+ })
@@ -0,0 +1,12 @@
1
+ import { test, expect } from "bun:test"
2
+ import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
3
+ import { inputProblem } from "site/examples/example04-single-symbol.page"
4
+ import "tests/fixtures/matcher"
5
+
6
+ test("example04", () => {
7
+ const solver = new SchematicTracePipelineSolver(inputProblem)
8
+
9
+ solver.solve()
10
+
11
+ expect(solver).toMatchSolverSnapshot(import.meta.path)
12
+ })
@@ -0,0 +1,12 @@
1
+ import { test, expect } from "bun:test"
2
+ import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
3
+ import { inputProblem } from "site/examples/example05.page"
4
+ import "tests/fixtures/matcher"
5
+
6
+ test("example05", () => {
7
+ const solver = new SchematicTracePipelineSolver(inputProblem)
8
+
9
+ solver.solve()
10
+
11
+ expect(solver).toMatchSolverSnapshot(import.meta.path)
12
+ })
@@ -0,0 +1,12 @@
1
+ import { test, expect } from "bun:test"
2
+ import { SchematicTracePipelineSolver } from "lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver"
3
+ import { inputProblem } from "site/examples/example06.page"
4
+ import "tests/fixtures/matcher"
5
+
6
+ test("example06", () => {
7
+ const solver = new SchematicTracePipelineSolver(inputProblem)
8
+
9
+ solver.solve()
10
+
11
+ expect(solver).toMatchSolverSnapshot(import.meta.path)
12
+ })