@tscircuit/schematic-trace-solver 0.0.60 → 0.0.62

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 +77 -6
  2. package/dist/index.js +445 -8
  3. package/lib/solvers/AvailableNetOrientationSolver/AvailableNetOrientationSolver.ts +131 -11
  4. package/lib/solvers/AvailableNetOrientationSolver/geometry.ts +1 -1
  5. package/lib/solvers/AvailableNetOrientationSolver/types.ts +1 -1
  6. package/lib/solvers/NetLabelNetLabelCollisionSolver/NetLabelNetLabelCollisionSolver.ts +441 -0
  7. package/lib/solvers/SchematicTracePipelineSolver/SchematicTracePipelineSolver.ts +15 -0
  8. package/package.json +1 -1
  9. package/site/examples/example37.page.tsx +4 -0
  10. package/site/examples/example38.page.tsx +4 -0
  11. package/site/examples/example39.page.tsx +4 -0
  12. package/site/examples/example40.page.tsx +4 -0
  13. package/site/examples/example41.page.tsx +4 -0
  14. package/tests/assets/example37.json +173 -0
  15. package/tests/assets/example38.json +32 -0
  16. package/tests/assets/example39.json +71 -0
  17. package/tests/assets/example40.json +157 -0
  18. package/tests/assets/example41.json +81 -0
  19. package/tests/examples/__snapshots__/example04.snap.svg +16 -17
  20. package/tests/examples/__snapshots__/example37.snap.svg +320 -0
  21. package/tests/examples/__snapshots__/example38.snap.svg +77 -0
  22. package/tests/examples/__snapshots__/example39.snap.svg +107 -0
  23. package/tests/examples/__snapshots__/example40.snap.svg +231 -0
  24. package/tests/examples/__snapshots__/example41.snap.svg +119 -0
  25. package/tests/examples/example37.test.ts +12 -0
  26. package/tests/examples/example38.test.ts +12 -0
  27. package/tests/examples/example39.test.ts +12 -0
  28. package/tests/examples/example40.test.ts +12 -0
  29. package/tests/examples/example41.test.ts +12 -0
@@ -0,0 +1,320 @@
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="R1.1
5
+ x-" data-x="-4.24" data-y="1.7" cx="240.53050397877985" cy="230.66942944297082" r="3" fill="hsl(226, 100%, 50%, 0.8)" />
6
+ </g>
7
+ <g>
8
+ <circle data-type="point" data-label="R1.2
9
+ x+" data-x="-3.1399999999999997" data-y="1.7" cx="322.2281167108754" cy="230.66942944297082" r="3" fill="hsl(227, 100%, 50%, 0.8)" />
10
+ </g>
11
+ <g>
12
+ <circle data-type="point" data-label="C1.1
13
+ x-" data-x="-6.74" data-y="0.3" cx="54.85411140583557" cy="334.6482092838196" r="3" fill="hsl(121, 100%, 50%, 0.8)" />
14
+ </g>
15
+ <g>
16
+ <circle data-type="point" data-label="C1.2
17
+ x+" data-x="-5.640000000000001" data-y="0.3" cx="136.55172413793105" cy="334.6482092838196" r="3" fill="hsl(122, 100%, 50%, 0.8)" />
18
+ </g>
19
+ <g>
20
+ <circle data-type="point" data-label="U1.1
21
+ x-" data-x="-0.6000000000000001" data-y="0.30000000000000004" cx="510.8753315649867" cy="334.6482092838196" r="3" fill="hsl(319, 100%, 50%, 0.8)" />
22
+ </g>
23
+ <g>
24
+ <circle data-type="point" data-label="U1.2
25
+ x-" data-x="-0.6000000000000001" data-y="0.10000000000000003" cx="510.8753315649867" cy="349.50232068965516" r="3" fill="hsl(320, 100%, 50%, 0.8)" />
26
+ </g>
27
+ <g>
28
+ <circle data-type="point" data-label="U1.3
29
+ x-" data-x="-0.6000000000000001" data-y="-0.09999999999999998" cx="510.8753315649867" cy="364.3564320954907" r="3" fill="hsl(321, 100%, 50%, 0.8)" />
30
+ </g>
31
+ <g>
32
+ <circle data-type="point" data-label="U1.4
33
+ x-" data-x="-0.6000000000000001" data-y="-0.30000000000000004" cx="510.8753315649867" cy="379.21054350132624" r="3" fill="hsl(322, 100%, 50%, 0.8)" />
34
+ </g>
35
+ <g>
36
+ <circle data-type="point" data-label="U1.5
37
+ x+" data-x="0.6000000000000001" data-y="-0.30000000000000004" cx="600" cy="379.21054350132624" r="3" fill="hsl(323, 100%, 50%, 0.8)" />
38
+ </g>
39
+ <g>
40
+ <circle data-type="point" data-label="U1.6
41
+ x+" data-x="0.6000000000000001" data-y="-0.10000000000000003" cx="600" cy="364.3564320954907" r="3" fill="hsl(324, 100%, 50%, 0.8)" />
42
+ </g>
43
+ <g>
44
+ <circle data-type="point" data-label="U1.7
45
+ x+" data-x="0.6000000000000001" data-y="0.09999999999999998" cx="600" cy="349.50232068965516" r="3" fill="hsl(325, 100%, 50%, 0.8)" />
46
+ </g>
47
+ <g>
48
+ <circle data-type="point" data-label="U1.8
49
+ x+" data-x="0.6000000000000001" data-y="0.30000000000000004" cx="600" cy="334.6482092838196" r="3" fill="hsl(326, 100%, 50%, 0.8)" />
50
+ </g>
51
+ <g>
52
+ <circle data-type="point" data-label="U2.1
53
+ x-" data-x="-3.52" data-y="-0.09999999999999998" cx="294.0053050397878" cy="364.3564320954907" r="3" fill="hsl(200, 100%, 50%, 0.8)" />
54
+ </g>
55
+ <g>
56
+ <circle data-type="point" data-label="U2.2
57
+ x-" data-x="-3.52" data-y="-0.3" cx="294.0053050397878" cy="379.21054350132624" r="3" fill="hsl(201, 100%, 50%, 0.8)" />
58
+ </g>
59
+ <g>
60
+ <circle data-type="point" data-label="U2.3
61
+ x-" data-x="-3.52" data-y="-0.5" cx="294.0053050397878" cy="394.06465490716175" r="3" fill="hsl(202, 100%, 50%, 0.8)" />
62
+ </g>
63
+ <g>
64
+ <circle data-type="point" data-label="U2.4
65
+ x-" data-x="-3.52" data-y="-0.7000000000000001" cx="294.0053050397878" cy="408.9187663129973" r="3" fill="hsl(203, 100%, 50%, 0.8)" />
66
+ </g>
67
+ <g>
68
+ <circle data-type="point" data-label="U2.5
69
+ x+" data-x="-2.32" data-y="-0.7000000000000001" cx="383.1299734748011" cy="408.9187663129973" r="3" fill="hsl(204, 100%, 50%, 0.8)" />
70
+ </g>
71
+ <g>
72
+ <circle data-type="point" data-label="U2.6
73
+ x+" data-x="-2.32" data-y="-0.5" cx="383.1299734748011" cy="394.06465490716175" r="3" fill="hsl(205, 100%, 50%, 0.8)" />
74
+ </g>
75
+ <g>
76
+ <circle data-type="point" data-label="U2.7
77
+ x+" data-x="-2.32" data-y="-0.30000000000000004" cx="383.1299734748011" cy="379.21054350132624" r="3" fill="hsl(206, 100%, 50%, 0.8)" />
78
+ </g>
79
+ <g>
80
+ <circle data-type="point" data-label="U2.8
81
+ x+" data-x="-2.32" data-y="-0.09999999999999998" cx="383.1299734748011" cy="364.3564320954907" r="3" fill="hsl(207, 100%, 50%, 0.8)" />
82
+ </g>
83
+ <g>
84
+ <circle data-type="point" data-label="anchor
85
+ orientation: y+" data-x="-0.6000000000000001" data-y="0.30000000000000004" cx="510.8753315649867" cy="334.6482092838196" r="3" fill="red" />
86
+ </g>
87
+ <g>
88
+ <circle data-type="point" data-label="anchor
89
+ orientation: y-" data-x="-0.6000000000000001" data-y="0.30000000000000004" cx="510.8753315649867" cy="334.6482092838196" r="3" fill="red" />
90
+ </g>
91
+ <g>
92
+ <circle data-type="point" data-label="anchor
93
+ orientation: y+" data-x="-0.6500000000000001" data-y="0.30000000000000004" cx="507.16180371352783" cy="334.6482092838196" r="3" fill="red" />
94
+ </g>
95
+ <g>
96
+ <circle data-type="point" data-label="anchor
97
+ orientation: y-" data-x="-0.6500000000000001" data-y="0.30000000000000004" cx="507.16180371352783" cy="334.6482092838196" r="3" fill="red" />
98
+ </g>
99
+ <g>
100
+ <circle data-type="point" data-label="anchor
101
+ orientation: y+" data-x="-0.7000000000000001" data-y="0.30000000000000004" cx="503.44827586206895" cy="334.6482092838196" r="3" fill="red" />
102
+ </g>
103
+ <g>
104
+ <circle data-type="point" data-label="anchor
105
+ orientation: y-" data-x="-0.7000000000000001" data-y="0.30000000000000004" cx="503.44827586206895" cy="334.6482092838196" r="3" fill="red" />
106
+ </g>
107
+ <g>
108
+ <circle data-type="point" data-label="anchor
109
+ orientation: x+" data-x="-0.7000000000000001" data-y="0.30000000000000004" cx="503.44827586206895" cy="334.6482092838196" r="3" fill="red" />
110
+ </g>
111
+ <g>
112
+ <circle data-type="point" data-label="anchor
113
+ orientation: x-" data-x="-0.7000000000000001" data-y="0.30000000000000004" cx="503.44827586206895" cy="334.6482092838196" r="3" fill="orange" />
114
+ </g>
115
+ <g>
116
+ <circle data-type="point" data-label="anchor
117
+ orientation: x+" data-x="-0.7000000000000001" data-y="0.25000000000000006" cx="503.44827586206895" cy="338.3617371352785" r="3" fill="red" />
118
+ </g>
119
+ <g>
120
+ <circle data-type="point" data-label="anchor
121
+ orientation: x-" data-x="-0.7000000000000001" data-y="0.25000000000000006" cx="503.44827586206895" cy="338.3617371352785" r="3" fill="orange" />
122
+ </g>
123
+ <g>
124
+ <circle data-type="point" data-label="anchor
125
+ orientation: x+" data-x="-0.7000000000000001" data-y="0.20000000000000004" cx="503.44827586206895" cy="342.07526498673735" r="3" fill="red" />
126
+ </g>
127
+ <g>
128
+ <circle data-type="point" data-label="anchor
129
+ orientation: x-" data-x="-0.7000000000000001" data-y="0.20000000000000004" cx="503.44827586206895" cy="342.07526498673735" r="3" fill="orange" />
130
+ </g>
131
+ <g>
132
+ <circle data-type="point" data-label="anchor
133
+ orientation: y+" data-x="-0.7000000000000001" data-y="0.20000000000000004" cx="503.44827586206895" cy="342.07526498673735" r="3" fill="red" />
134
+ </g>
135
+ <g>
136
+ <circle data-type="point" data-label="anchor
137
+ orientation: y-" data-x="-0.7000000000000001" data-y="0.20000000000000004" cx="503.44827586206895" cy="342.07526498673735" r="3" fill="red" />
138
+ </g>
139
+ <g>
140
+ <circle data-type="point" data-label="anchor
141
+ orientation: y+" data-x="-3.1700000000000004" data-y="0.2" cx="320" cy="342.07526498673735" r="3" fill="orange" />
142
+ </g>
143
+ <g>
144
+ <circle data-type="point" data-label="anchor
145
+ orientation: y-" data-x="-3.1700000000000004" data-y="0.2" cx="320" cy="342.07526498673735" r="3" fill="red" />
146
+ </g>
147
+ <g>
148
+ <circle data-type="point" data-label="anchor
149
+ orientation: y+" data-x="-5.640000000000001" data-y="0.19999999999999998" cx="136.55172413793105" cy="342.07526498673735" r="3" fill="red" />
150
+ </g>
151
+ <g>
152
+ <circle data-type="point" data-label="anchor
153
+ orientation: y-" data-x="-5.640000000000001" data-y="0.19999999999999998" cx="136.55172413793105" cy="342.07526498673735" r="3" fill="red" />
154
+ </g>
155
+ <g>
156
+ <polyline data-points="-6.74,0.3 -4.24,1.7" data-type="line" data-label="" points="54.85411140583557,334.6482092838196 240.53050397877985,230.66942944297082" fill="none" stroke="hsl(24, 100%, 50%, 0.8)" stroke-width="1" />
157
+ </g>
158
+ <g>
159
+ <polyline data-points="-0.6000000000000001,0.30000000000000004 -5.640000000000001,0.3" data-type="line" data-label="" points="510.8753315649867,334.6482092838196 136.55172413793105,334.6482092838196" fill="none" stroke="hsl(8, 100%, 50%, 0.8)" stroke-width="1" />
160
+ </g>
161
+ <g>
162
+ <polyline data-points="-0.6000000000000001,0.10000000000000003 -3.1399999999999997,1.7" data-type="line" data-label="" points="510.8753315649867,349.50232068965516 322.2281167108754,230.66942944297082" fill="none" stroke="hsl(8, 100%, 50%, 0.8)" stroke-width="1" />
163
+ </g>
164
+ <g>
165
+ <polyline data-points="-3.52,-0.09999999999999998 -0.6000000000000001,-0.09999999999999998" data-type="line" data-label="" points="294.0053050397878,364.3564320954907 510.8753315649867,364.3564320954907" fill="none" stroke="hsl(152, 100%, 50%, 0.8)" stroke-width="1" />
166
+ </g>
167
+ <g>
168
+ <polyline data-points="-3.52,-0.3 -0.6000000000000001,-0.30000000000000004" data-type="line" data-label="" points="294.0053050397878,379.21054350132624 510.8753315649867,379.21054350132624" fill="none" stroke="hsl(152, 100%, 50%, 0.8)" stroke-width="1" />
169
+ </g>
170
+ <g>
171
+ <polyline data-points="-6.74,0.3 -6.94,0.3 -6.94,1.7 -4.24,1.7" data-type="line" data-label="" points="54.85411140583557,334.6482092838196 40,334.6482092838196 40,230.66942944297082 240.53050397877985,230.66942944297082" fill="none" stroke="black" stroke-width="1" />
172
+ </g>
173
+ <g>
174
+ <polyline data-points="-0.6000000000000001,0.30000000000000004 -0.7000000000000001,0.30000000000000004 -0.7000000000000001,0.20000000000000004 -5.640000000000001,0.19999999999999998" data-type="line" data-label="" points="510.8753315649867,334.6482092838196 503.44827586206895,334.6482092838196 503.44827586206895,342.07526498673735 136.55172413793105,342.07526498673735" fill="none" stroke="black" stroke-width="1" />
175
+ </g>
176
+ <g>
177
+ <polyline data-points="-3.52,-0.09999999999999998 -3.72,-0.09999999999999998 -3.72,0.4 -0.8000000000000007,0.4 -0.8000000000000007,-0.09999999999999998 -0.6000000000000005,-0.09999999999999998" data-type="line" data-label="" points="294.0053050397878,364.3564320954907 279.1511936339523,364.3564320954907 279.1511936339523,327.22115358090184 496.02122015915114,327.22115358090184 496.02122015915114,364.3564320954907 510.8753315649867,364.3564320954907" fill="none" stroke="black" stroke-width="1" />
178
+ </g>
179
+ <g>
180
+ <rect data-type="rect" data-label="schematic_component_0" data-x="-3.69" data-y="1.7" x="240.53050397877985" y="216.22712228116714" width="81.69761273209554" height="28.884614323607337" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013464285714285717" />
181
+ </g>
182
+ <g>
183
+ <rect data-type="rect" data-label="schematic_component_1" data-x="-6.19" data-y="0.3" x="54.85411140583557" y="303.45457533156497" width="81.69761273209548" height="62.38726790450926" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013464285714285717" />
184
+ </g>
185
+ <g>
186
+ <rect data-type="rect" data-label="schematic_component_2" data-x="0" data-y="0" x="510.8753315649867" y="319.7940978779841" width="89.12466843501329" height="74.27055702917767" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013464285714285717" />
187
+ </g>
188
+ <g>
189
+ <rect data-type="rect" data-label="schematic_component_3" data-x="-2.92" data-y="-0.4" x="294.0053050397878" y="349.50232068965516" width="89.12466843501329" height="74.27055702917772" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.013464285714285717" />
190
+ </g>
191
+ <g>
192
+ <rect data-type="rect" data-label="status: chip-collision
193
+ orientation: y+" data-x="-0.6000000000000001" data-y="0.5251" x="503.44827586206895" y="301.2190315649867" width="14.85411140583551" height="33.421750663129956" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
194
+ </g>
195
+ <g>
196
+ <rect data-type="rect" data-label="status: chip-collision
197
+ orientation: y-" data-x="-0.6000000000000001" data-y="0.07490000000000005" x="503.44827586206895" y="334.6556363395225" width="14.85411140583551" height="33.421750663129956" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
198
+ </g>
199
+ <g>
200
+ <rect data-type="rect" data-label="status: chip-collision
201
+ orientation: y+" data-x="-0.6500000000000001" data-y="0.5251" x="499.7347480106101" y="301.2190315649867" width="14.854111405835567" height="33.421750663129956" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
202
+ </g>
203
+ <g>
204
+ <rect data-type="rect" data-label="status: chip-collision
205
+ orientation: y-" data-x="-0.6500000000000001" data-y="0.07490000000000005" x="499.7347480106101" y="334.6556363395225" width="14.854111405835567" height="33.421750663129956" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
206
+ </g>
207
+ <g>
208
+ <rect data-type="rect" data-label="status: chip-collision
209
+ orientation: y+" data-x="-0.7000000000000001" data-y="0.5251" x="496.0212201591512" y="301.2190315649867" width="14.85411140583551" height="33.421750663129956" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
210
+ </g>
211
+ <g>
212
+ <rect data-type="rect" data-label="status: chip-collision
213
+ orientation: y-" data-x="-0.7000000000000001" data-y="0.07490000000000005" x="496.0212201591512" y="334.6556363395225" width="14.85411140583551" height="33.421750663129956" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
214
+ </g>
215
+ <g>
216
+ <rect data-type="rect" data-label="status: chip-collision
217
+ orientation: x+" data-x="-0.4749000000000001" data-y="0.30000000000000004" x="503.4557029177719" y="327.22115358090184" width="33.421750663129956" height="14.85411140583551" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
218
+ </g>
219
+ <g>
220
+ <rect data-type="rect" data-label="status: trace-collision
221
+ orientation: x-" data-x="-0.9251" data-y="0.30000000000000004" x="470.0190981432361" y="327.22115358090184" width="33.421750663129956" height="14.85411140583551" fill="rgba(220, 140, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
222
+ </g>
223
+ <g>
224
+ <rect data-type="rect" data-label="status: chip-collision
225
+ orientation: x+" data-x="-0.4749000000000001" data-y="0.25000000000000006" x="503.4557029177719" y="330.9346814323607" width="33.421750663129956" height="14.854111405835567" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
226
+ </g>
227
+ <g>
228
+ <rect data-type="rect" data-label="status: trace-collision
229
+ orientation: x-" data-x="-0.9251" data-y="0.25000000000000006" x="470.0190981432361" y="330.9346814323607" width="33.421750663129956" height="14.854111405835567" fill="rgba(220, 140, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
230
+ </g>
231
+ <g>
232
+ <rect data-type="rect" data-label="status: chip-collision
233
+ orientation: x+" data-x="-0.4749000000000001" data-y="0.20000000000000004" x="503.4557029177719" y="334.6482092838196" width="33.421750663129956" height="14.854111405835567" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
234
+ </g>
235
+ <g>
236
+ <rect data-type="rect" data-label="status: trace-collision
237
+ orientation: x-" data-x="-0.9251" data-y="0.20000000000000004" x="470.0190981432361" y="334.6482092838196" width="33.421750663129956" height="14.854111405835567" fill="rgba(220, 140, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
238
+ </g>
239
+ <g>
240
+ <rect data-type="rect" data-label="status: chip-collision
241
+ orientation: y+" data-x="-0.7000000000000001" data-y="0.42510000000000003" x="496.0212201591512" y="308.6460872679045" width="14.85411140583551" height="33.421750663129956" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
242
+ </g>
243
+ <g>
244
+ <rect data-type="rect" data-label="status: chip-collision
245
+ orientation: y-" data-x="-0.7000000000000001" data-y="-0.02509999999999997" x="496.0212201591512" y="342.08269204244027" width="14.85411140583551" height="33.42175066313001" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
246
+ </g>
247
+ <g>
248
+ <rect data-type="rect" data-label="status: trace-collision
249
+ orientation: y+" data-x="-3.1700000000000004" data-y="0.42510000000000003" x="312.57294429708224" y="308.6460872679045" width="14.85411140583551" height="33.421750663129956" fill="rgba(220, 140, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
250
+ </g>
251
+ <g>
252
+ <rect data-type="rect" data-label="status: chip-collision
253
+ orientation: y-" data-x="-3.1700000000000004" data-y="-0.025099999999999983" x="312.57294429708224" y="342.08269204244027" width="14.85411140583551" height="33.42175066313001" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
254
+ </g>
255
+ <g>
256
+ <rect data-type="rect" data-label="status: chip-collision
257
+ orientation: y+" data-x="-5.640000000000001" data-y="0.4251" x="129.1246684350133" y="308.6460872679045" width="14.85411140583551" height="33.42175066313001" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
258
+ </g>
259
+ <g>
260
+ <rect data-type="rect" data-label="status: chip-collision
261
+ orientation: y-" data-x="-5.640000000000001" data-y="-0.025100000000000025" x="129.1246684350133" y="342.08269204244027" width="14.85411140583551" height="33.42175066313001" fill="rgba(220, 0, 0, 0.25)" stroke="black" stroke-width="0.013464285714285717" />
262
+ </g>
263
+ <g id="crosshair" style="display: none">
264
+ <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
265
+ <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>
266
+ </g>
267
+ <script>
268
+ <![CDATA[
269
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
270
+ const svg = e.currentTarget;
271
+ const rect = svg.getBoundingClientRect();
272
+ const x = e.clientX - rect.left;
273
+ const y = e.clientY - rect.top;
274
+ const crosshair = svg.getElementById('crosshair');
275
+ const h = svg.getElementById('crosshair-h');
276
+ const v = svg.getElementById('crosshair-v');
277
+ const coords = svg.getElementById('coordinates');
278
+
279
+ crosshair.style.display = 'block';
280
+ h.setAttribute('x1', '0');
281
+ h.setAttribute('x2', '640');
282
+ h.setAttribute('y1', y);
283
+ h.setAttribute('y2', y);
284
+ v.setAttribute('x1', x);
285
+ v.setAttribute('x2', x);
286
+ v.setAttribute('y1', '0');
287
+ v.setAttribute('y2', '640');
288
+
289
+ // Calculate real coordinates using inverse transformation
290
+ const matrix = {
291
+ "a": 74.27055702917771,
292
+ "c": 0,
293
+ "e": 555.4376657824934,
294
+ "b": 0,
295
+ "d": -74.27055702917771,
296
+ "f": 356.9293763925729
297
+ };
298
+ // Manually invert and apply the affine transform
299
+ // Since we only use translate and scale, we can directly compute:
300
+ // x' = (x - tx) / sx
301
+ // y' = (y - ty) / sy
302
+ const sx = matrix.a;
303
+ const sy = matrix.d;
304
+ const tx = matrix.e;
305
+ const ty = matrix.f;
306
+ const realPoint = {
307
+ x: (x - tx) / sx,
308
+ y: (y - ty) / sy // Flip y back since we used negative scale
309
+ }
310
+
311
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
312
+ coords.setAttribute('x', (x + 5).toString());
313
+ coords.setAttribute('y', (y - 5).toString());
314
+ });
315
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
316
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
317
+ });
318
+ ]]>
319
+ </script>
320
+ </svg>
@@ -0,0 +1,77 @@
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="TP1.1
5
+ y+" data-x="-1.2246467991473533e-17" data-y="0.2" cx="440.48192771084337" cy="88.19277108433738" r="3" fill="hsl(128, 100%, 50%, 0.8)" />
6
+ </g>
7
+ <g>
8
+ <circle data-type="point" data-label="" data-x="-0.25" data-y="0.14900000000000002" cx="199.5180722891566" cy="137.34939759036146" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
9
+ </g>
10
+ <g>
11
+ <polyline data-points="-1.2246467991473533e-17,0.2 -1.2246467991473533e-17,0.25 -0.25,0.25 -0.25,0.14900000000000002" data-type="line" data-label="" points="440.48192771084337,88.19277108433738 440.48192771084337,40.00000000000003 199.5180722891566,40.00000000000003 199.5180722891566,137.34939759036146" fill="none" stroke="purple" stroke-width="1" />
12
+ </g>
13
+ <g>
14
+ <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="344.09638554216866" y="88.19277108433738" width="192.77108433734935" height="385.5421686746988" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0010375" />
15
+ </g>
16
+ <g>
17
+ <rect data-type="rect" data-label="netId: GND
18
+ globalConnNetId: connectivity_net0" data-x="-0.25" data-y="-0.09099999999999997" x="103.13253012048193" y="137.34939759036146" width="192.77108433734935" height="462.6506024096385" fill="#00000066" stroke="#000000" stroke-width="0.0010375" />
19
+ </g>
20
+ <g id="crosshair" style="display: none">
21
+ <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
22
+ <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>
23
+ </g>
24
+ <script>
25
+ <![CDATA[
26
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
27
+ const svg = e.currentTarget;
28
+ const rect = svg.getBoundingClientRect();
29
+ const x = e.clientX - rect.left;
30
+ const y = e.clientY - rect.top;
31
+ const crosshair = svg.getElementById('crosshair');
32
+ const h = svg.getElementById('crosshair-h');
33
+ const v = svg.getElementById('crosshair-v');
34
+ const coords = svg.getElementById('coordinates');
35
+
36
+ crosshair.style.display = 'block';
37
+ h.setAttribute('x1', '0');
38
+ h.setAttribute('x2', '640');
39
+ h.setAttribute('y1', y);
40
+ h.setAttribute('y2', y);
41
+ v.setAttribute('x1', x);
42
+ v.setAttribute('x2', x);
43
+ v.setAttribute('y1', '0');
44
+ v.setAttribute('y2', '640');
45
+
46
+ // Calculate real coordinates using inverse transformation
47
+ const matrix = {
48
+ "a": 963.855421686747,
49
+ "c": 0,
50
+ "e": 440.48192771084337,
51
+ "b": 0,
52
+ "d": -963.855421686747,
53
+ "f": 280.9638554216868
54
+ };
55
+ // Manually invert and apply the affine transform
56
+ // Since we only use translate and scale, we can directly compute:
57
+ // x' = (x - tx) / sx
58
+ // y' = (y - ty) / sy
59
+ const sx = matrix.a;
60
+ const sy = matrix.d;
61
+ const tx = matrix.e;
62
+ const ty = matrix.f;
63
+ const realPoint = {
64
+ x: (x - tx) / sx,
65
+ y: (y - ty) / sy // Flip y back since we used negative scale
66
+ }
67
+
68
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
69
+ coords.setAttribute('x', (x + 5).toString());
70
+ coords.setAttribute('y', (y - 5).toString());
71
+ });
72
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
73
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
74
+ });
75
+ ]]>
76
+ </script>
77
+ </svg>
@@ -0,0 +1,107 @@
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="U3.24
5
+ x-" data-x="-7.65" data-y="-0.22999999999999998" cx="325.9574468085108" cy="297.3557446808511" r="3" fill="hsl(74, 100%, 50%, 0.8)" />
6
+ </g>
7
+ <g>
8
+ <circle data-type="point" data-label="U3.25
9
+ x-" data-x="-7.65" data-y="-0.43000000000000016" cx="325.9574468085108" cy="321.18553191489366" r="3" fill="hsl(75, 100%, 50%, 0.8)" />
10
+ </g>
11
+ <g>
12
+ <circle data-type="point" data-label="R5.1
13
+ x-" data-x="-10.05" data-y="-0.4299999999999997" cx="40.00000000000023" cy="321.1855319148936" r="3" fill="hsl(110, 100%, 50%, 0.8)" />
14
+ </g>
15
+ <g>
16
+ <circle data-type="point" data-label="R5.2
17
+ x+" data-x="-8.95" data-y="-0.4299999999999997" cx="171.06382978723423" cy="321.1855319148936" r="3" fill="hsl(111, 100%, 50%, 0.8)" />
18
+ </g>
19
+ <g>
20
+ <circle data-type="point" data-label="anchorPoint
21
+ orientation: x-" data-x="-7.65" data-y="-0.22999999999999998" cx="325.9574468085108" cy="297.3557446808511" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
22
+ </g>
23
+ <g>
24
+ <circle data-type="point" data-label="anchorPoint
25
+ orientation: y-" data-x="-7.8500000000000005" data-y="-0.4300000000000001" cx="302.1276595744682" cy="321.18553191489366" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
26
+ </g>
27
+ <g>
28
+ <polyline data-points="-7.65,-0.43000000000000016 -8.95,-0.4299999999999997" data-type="line" data-label="" points="325.9574468085108,321.18553191489366 171.06382978723423,321.1855319148936" fill="none" stroke="hsl(80, 100%, 50%, 0.8)" stroke-width="1" />
29
+ </g>
30
+ <g>
31
+ <polyline data-points="-7.65,-0.43000000000000016 -8.95,-0.4299999999999997" data-type="line" data-label="" points="325.9574468085108,321.18553191489366 171.06382978723423,321.1855319148936" fill="none" stroke="hsl(88, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
32
+ </g>
33
+ <g>
34
+ <polyline data-points="-7.65,-0.43000000000000016 -8.95,-0.4299999999999997" data-type="line" data-label="" points="325.9574468085108,321.18553191489366 171.06382978723423,321.1855319148936" fill="none" stroke="purple" stroke-width="1" />
35
+ </g>
36
+ <g>
37
+ <rect data-type="rect" data-label="schematic_component_0" data-x="-6.5" data-y="-0.33" x="325.9574468085108" y="261.61106382978727" width="274.04255319148933" height="95.31914893617017" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008392857142857145" />
38
+ </g>
39
+ <g>
40
+ <rect data-type="rect" data-label="schematic_component_4" data-x="-9.5" data-y="-0.4299999999999997" x="40.00000000000023" y="298.0163838297873" width="131.063829787234" height="46.33829617021263" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.008392857142857145" />
41
+ </g>
42
+ <g>
43
+ <rect data-type="rect" data-label="netId: SWCLK
44
+ globalConnNetId: connectivity_net1" data-x="-8.011" data-y="-0.22999999999999998" x="240.0510638297876" y="285.4408510638298" width="85.78723404255311" height="23.829787234042556" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008392857142857145" />
45
+ </g>
46
+ <g>
47
+ <rect data-type="rect" data-label="netId: SWD
48
+ globalConnNetId: connectivity_net0" data-x="-7.8500000000000005" data-y="-0.6701000000000001" x="290.212765957447" y="321.1974468085107" width="23.829787234042442" height="57.19148936170211" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.008392857142857145" />
49
+ </g>
50
+ <g id="crosshair" style="display: none">
51
+ <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
52
+ <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>
53
+ </g>
54
+ <script>
55
+ <![CDATA[
56
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
57
+ const svg = e.currentTarget;
58
+ const rect = svg.getBoundingClientRect();
59
+ const x = e.clientX - rect.left;
60
+ const y = e.clientY - rect.top;
61
+ const crosshair = svg.getElementById('crosshair');
62
+ const h = svg.getElementById('crosshair-h');
63
+ const v = svg.getElementById('crosshair-v');
64
+ const coords = svg.getElementById('coordinates');
65
+
66
+ crosshair.style.display = 'block';
67
+ h.setAttribute('x1', '0');
68
+ h.setAttribute('x2', '640');
69
+ h.setAttribute('y1', y);
70
+ h.setAttribute('y2', y);
71
+ v.setAttribute('x1', x);
72
+ v.setAttribute('x2', x);
73
+ v.setAttribute('y1', '0');
74
+ v.setAttribute('y2', '640');
75
+
76
+ // Calculate real coordinates using inverse transformation
77
+ const matrix = {
78
+ "a": 119.14893617021274,
79
+ "c": 0,
80
+ "e": 1237.4468085106382,
81
+ "b": 0,
82
+ "d": -119.14893617021274,
83
+ "f": 269.95148936170216
84
+ };
85
+ // Manually invert and apply the affine transform
86
+ // Since we only use translate and scale, we can directly compute:
87
+ // x' = (x - tx) / sx
88
+ // y' = (y - ty) / sy
89
+ const sx = matrix.a;
90
+ const sy = matrix.d;
91
+ const tx = matrix.e;
92
+ const ty = matrix.f;
93
+ const realPoint = {
94
+ x: (x - tx) / sx,
95
+ y: (y - ty) / sy // Flip y back since we used negative scale
96
+ }
97
+
98
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
99
+ coords.setAttribute('x', (x + 5).toString());
100
+ coords.setAttribute('y', (y - 5).toString());
101
+ });
102
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
103
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
104
+ });
105
+ ]]>
106
+ </script>
107
+ </svg>