@tscircuit/schematic-trace-solver 0.0.87 → 0.0.88

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 (113) hide show
  1. package/.agents/skills/schematic-trace-visualization/SKILL.md +115 -0
  2. package/.github/scripts/import-json-bug-report.ts +15 -1
  3. package/.github/workflows/json-bug-report.yml +3 -2
  4. package/AGENTS.md +22 -0
  5. package/lib/testing/PipelineStageDebugRunner.ts +344 -0
  6. package/package.json +3 -2
  7. package/scripts/debug-pipeline-stages.ts +146 -0
  8. package/site/bug-reports/bug-report-20260706T220324Z.page.tsx +4 -0
  9. package/site/bug-reports/bug-report-20260707T020342Z.page.tsx +4 -0
  10. package/site/bug-reports/bug-report-20260707T092615Z.page.tsx +4 -0
  11. package/site/bug-reports/bug-report-20260707T134549Z.page.tsx +4 -0
  12. package/site/bug-reports/bug-report-20260707T134722Z.page.tsx +4 -0
  13. package/site/bug-reports/bug-report-20260707T140410Z.page.tsx +4 -0
  14. package/site/bug-reports/bug-report-20260707T141025Z.page.tsx +4 -0
  15. package/site/bug-reports/bug-report-20260707T141421Z.page.tsx +4 -0
  16. package/tests/bug-reports/bug-report-20260706T220324Z/__snapshots__/bug-report-20260706T220324Z.snap.svg +357 -3448
  17. package/tests/bug-reports/bug-report-20260707T020342Z/__snapshots__/bug-report-20260707T020342Z.snap.svg +64 -0
  18. package/tests/bug-reports/bug-report-20260707T020342Z/bug-report-20260707T020342Z.json +233 -0
  19. package/tests/bug-reports/bug-report-20260707T020342Z/bug-report-20260707T020342Z.test.ts +12 -0
  20. package/tests/bug-reports/bug-report-20260707T092615Z/__snapshots__/bug-report-20260707T092615Z.snap.svg +2098 -0
  21. package/tests/bug-reports/bug-report-20260707T092615Z/bug-report-20260707T092615Z.json +1392 -0
  22. package/tests/bug-reports/bug-report-20260707T092615Z/bug-report-20260707T092615Z.test.ts +12 -0
  23. package/tests/bug-reports/bug-report-20260707T134549Z/__snapshots__/bug-report-20260707T134549Z.snap.svg +857 -0
  24. package/tests/bug-reports/bug-report-20260707T134549Z/bug-report-20260707T134549Z.json +652 -0
  25. package/tests/bug-reports/bug-report-20260707T134549Z/bug-report-20260707T134549Z.test.ts +12 -0
  26. package/tests/bug-reports/bug-report-20260707T134722Z/__snapshots__/bug-report-20260707T134722Z.snap.svg +275 -0
  27. package/tests/bug-reports/bug-report-20260707T134722Z/bug-report-20260707T134722Z.json +265 -0
  28. package/tests/bug-reports/bug-report-20260707T134722Z/bug-report-20260707T134722Z.test.ts +12 -0
  29. package/tests/bug-reports/bug-report-20260707T140410Z/__snapshots__/bug-report-20260707T140410Z.snap.svg +950 -0
  30. package/tests/bug-reports/bug-report-20260707T140410Z/bug-report-20260707T140410Z.json +610 -0
  31. package/tests/bug-reports/bug-report-20260707T140410Z/bug-report-20260707T140410Z.test.ts +12 -0
  32. package/tests/bug-reports/bug-report-20260707T141025Z/__snapshots__/bug-report-20260707T141025Z.snap.svg +218 -0
  33. package/tests/bug-reports/bug-report-20260707T141025Z/bug-report-20260707T141025Z.json +185 -0
  34. package/tests/bug-reports/bug-report-20260707T141025Z/bug-report-20260707T141025Z.test.ts +12 -0
  35. package/tests/bug-reports/bug-report-20260707T141421Z/__snapshots__/bug-report-20260707T141421Z.snap.svg +613 -0
  36. package/tests/bug-reports/bug-report-20260707T141421Z/bug-report-20260707T141421Z.json +499 -0
  37. package/tests/bug-reports/bug-report-20260707T141421Z/bug-report-20260707T141421Z.test.ts +12 -0
  38. package/tests/examples/__snapshots__/example01.snap.svg +59 -162
  39. package/tests/examples/__snapshots__/example02.snap.svg +64 -273
  40. package/tests/examples/__snapshots__/example03.snap.svg +85 -290
  41. package/tests/examples/__snapshots__/example04.snap.svg +50 -94
  42. package/tests/examples/__snapshots__/example05.snap.svg +73 -191
  43. package/tests/examples/__snapshots__/example06.snap.svg +49 -95
  44. package/tests/examples/__snapshots__/example07.snap.svg +65 -218
  45. package/tests/examples/__snapshots__/example08.snap.svg +61 -143
  46. package/tests/examples/__snapshots__/example09.snap.svg +123 -493
  47. package/tests/examples/__snapshots__/example10.snap.svg +57 -136
  48. package/tests/examples/__snapshots__/example11.snap.svg +64 -173
  49. package/tests/examples/__snapshots__/example12.snap.svg +58 -159
  50. package/tests/examples/__snapshots__/example13.snap.svg +78 -348
  51. package/tests/examples/__snapshots__/example14.snap.svg +77 -293
  52. package/tests/examples/__snapshots__/example15.snap.svg +140 -984
  53. package/tests/examples/__snapshots__/example16.snap.svg +62 -162
  54. package/tests/examples/__snapshots__/example17.snap.svg +67 -198
  55. package/tests/examples/__snapshots__/example18.snap.svg +69 -249
  56. package/tests/examples/__snapshots__/example19.snap.svg +63 -202
  57. package/tests/examples/__snapshots__/example20.snap.svg +60 -148
  58. package/tests/examples/__snapshots__/example21.snap.svg +73 -298
  59. package/tests/examples/__snapshots__/example22.snap.svg +62 -156
  60. package/tests/examples/__snapshots__/example23.snap.svg +66 -172
  61. package/tests/examples/__snapshots__/example24.snap.svg +64 -164
  62. package/tests/examples/__snapshots__/example25.snap.svg +76 -299
  63. package/tests/examples/__snapshots__/example26.snap.svg +64 -164
  64. package/tests/examples/__snapshots__/example27.snap.svg +83 -300
  65. package/tests/examples/__snapshots__/example28.snap.svg +54 -115
  66. package/tests/examples/__snapshots__/example29.snap.svg +257 -1299
  67. package/tests/examples/__snapshots__/example30.snap.svg +91 -293
  68. package/tests/examples/__snapshots__/example31.snap.svg +47 -88
  69. package/tests/examples/__snapshots__/example32.snap.svg +107 -405
  70. package/tests/examples/__snapshots__/example33.snap.svg +71 -180
  71. package/tests/examples/__snapshots__/example34.snap.svg +55 -116
  72. package/tests/examples/__snapshots__/example35.snap.svg +69 -176
  73. package/tests/examples/__snapshots__/example36.snap.svg +65 -159
  74. package/tests/examples/__snapshots__/example37.snap.svg +75 -223
  75. package/tests/examples/__snapshots__/example38.snap.svg +46 -76
  76. package/tests/examples/__snapshots__/example39.snap.svg +51 -106
  77. package/tests/examples/__snapshots__/example40.snap.svg +83 -270
  78. package/tests/examples/__snapshots__/example41.snap.svg +54 -118
  79. package/tests/examples/__snapshots__/example42.snap.svg +67 -194
  80. package/tests/examples/__snapshots__/example43.snap.svg +62 -168
  81. package/tests/examples/__snapshots__/example44.snap.svg +86 -369
  82. package/tests/examples/__snapshots__/example45.snap.svg +60 -169
  83. package/tests/examples/__snapshots__/example46.snap.svg +80 -342
  84. package/tests/examples/__snapshots__/example47.snap.svg +82 -323
  85. package/tests/examples/__snapshots__/example48.snap.svg +64 -167
  86. package/tests/examples/__snapshots__/example49.snap.svg +120 -565
  87. package/tests/examples/__snapshots__/example50.snap.svg +71 -189
  88. package/tests/fixtures/getLastStepGraphicsObject.ts +38 -0
  89. package/tests/fixtures/getLastStepSvg.ts +9 -0
  90. package/tests/repros/__snapshots__/bugreport-001-gnd-overlap.snap.svg +67 -218
  91. package/tests/repros/__snapshots__/manufacturePartNumber-text-box.snap.svg +47 -87
  92. package/tests/repros/__snapshots__/netlabel-connector-through-rail-label.snap.svg +73 -272
  93. package/tests/repros/__snapshots__/repro-atmega328p-fault-pullup.snap.svg +284 -0
  94. package/tests/repros/__snapshots__/repro-atmega328p-missing-gnd-netlabel.snap.svg +470 -0
  95. package/tests/repros/__snapshots__/repro-bq24074-battery-charger.snap.svg +94 -395
  96. package/tests/repros/__snapshots__/repro-cc2340r5.snap.svg +88 -467
  97. package/tests/repros/__snapshots__/repro-ina237-current-monitor.snap.svg +109 -569
  98. package/tests/repros/__snapshots__/repro130-bq27441-fuel-gauge-trace-through-c1.snap.svg +95 -459
  99. package/tests/repros/__snapshots__/repro51-overlap-junction-crossing.snap.svg +64 -176
  100. package/tests/repros/__snapshots__/trace-overlap-box-resistor.snap.svg +51 -112
  101. package/tests/repros/assets/repro-atmega328p-fault-pullup.input.json +239 -0
  102. package/tests/repros/assets/repro-atmega328p-missing-gnd-netlabel.input.json +432 -0
  103. package/tests/repros/repro-atmega328p-fault-pullup.test.ts +11 -0
  104. package/tests/repros/repro-atmega328p-missing-gnd-netlabel.test.ts +16 -0
  105. package/tests/solvers/SchematicTraceSingleLineSolver2/__snapshots__/SchematicTraceSingleLineSolver2_01-example17-d1_1-u1_1.snap.svg +59 -159
  106. package/tests/solvers/TraceCleanupSolver/__snapshots__/TraceCleanupSolver.snap.svg +54 -118
  107. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/__snapshots__/TraceLabelOverlapAvoidanceSolver.snap.svg +58 -245
  108. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/renderComparisonView/__snapshots__/renderComparisonView01.snap.svg +73 -222
  109. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/renderComparisonView/__snapshots__/renderComparisonView02.snap.svg +65 -204
  110. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/renderComparisonView/__snapshots__/renderComparisonView03.snap.svg +65 -183
  111. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/MergedNetLabelObstacles.snap.svg +54 -139
  112. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/OverlapAvoidanceStepSolver.snap.svg +61 -215
  113. package/tests/solvers/TraceLabelOverlapAvoidanceSolver/sub-solver/__snapshots__/SingleOverlapSolver.snap.svg +54 -124
@@ -1,291 +1,86 @@
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="PIN1_PIN2.1
5
- x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="225.88837130377448" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
6
- </g>
7
- <g>
8
- <circle data-type="point" data-label="PIN1_PIN2.2
9
- x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="225.88837130377448" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
10
- </g>
11
- <g>
12
- <circle data-type="point" data-label="PIN1_PIN2.3
13
- x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="147.26763199913816" cy="225.9187101084688" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
14
- </g>
15
- <g>
16
- <circle data-type="point" data-label="PIN1_PIN2.4
17
- x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="147.26763199913816" cy="225.9187101084688" r="3" fill="hsl(328, 100%, 50%, 0.8)" />
18
- </g>
19
- <g>
20
- <circle data-type="point" data-label="PIN1_PIN3.1
21
- x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="285.40568444070533" cy="225.88837130377448" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
22
- </g>
23
- <g>
24
- <circle data-type="point" data-label="PIN1_PIN3.2
25
- x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="285.40568444070533" cy="225.88837130377448" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
26
- </g>
27
- <g>
28
- <circle data-type="point" data-label="PIN1_PIN3.3
29
- x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="225.9187101084688" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
30
- </g>
31
- <g>
32
- <circle data-type="point" data-label="PIN1_PIN3.4
33
- x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="225.9187101084688" r="3" fill="hsl(208, 100%, 50%, 0.8)" />
34
- </g>
35
- <g>
36
- <circle data-type="point" data-label="PIN1_PIN4.1
37
- x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="225.88837130377448" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
38
- </g>
39
- <g>
40
- <circle data-type="point" data-label="PIN1_PIN4.2
41
- x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="225.88837130377448" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
42
- </g>
43
- <g>
44
- <circle data-type="point" data-label="PIN1_PIN4.3
45
- x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="561.9209991194512" cy="225.9187101084688" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
46
- </g>
47
- <g>
48
- <circle data-type="point" data-label="PIN1_PIN4.4
49
- x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="561.9209991194512" cy="225.9187101084688" r="3" fill="hsl(88, 100%, 50%, 0.8)" />
50
- </g>
51
- <g>
52
- <circle data-type="point" data-label="PIN2_PIN3.1
53
- x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="78.07900088054879" cy="433.215054863931" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
54
- </g>
55
- <g>
56
- <circle data-type="point" data-label="PIN2_PIN3.2
57
- x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="78.07900088054879" cy="433.215054863931" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
58
- </g>
59
- <g>
60
- <circle data-type="point" data-label="PIN2_PIN3.3
61
- x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="433.2453936686253" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
62
- </g>
63
- <g>
64
- <circle data-type="point" data-label="PIN2_PIN3.4
65
- x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="433.2453936686253" r="3" fill="hsl(240, 100%, 50%, 0.8)" />
66
- </g>
67
- <g>
68
- <circle data-type="point" data-label="PIN2_PIN4.1
69
- x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="285.40568444070533" cy="433.215054863931" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
70
- </g>
71
- <g>
72
- <circle data-type="point" data-label="PIN2_PIN4.2
73
- x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="285.40568444070533" cy="433.215054863931" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
74
- </g>
75
- <g>
76
- <circle data-type="point" data-label="PIN2_PIN4.3
77
- x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="433.2453936686253" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
78
- </g>
79
- <g>
80
- <circle data-type="point" data-label="PIN2_PIN4.4
81
- x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="433.2453936686253" r="3" fill="hsl(120, 100%, 50%, 0.8)" />
82
- </g>
83
- <g>
84
- <circle data-type="point" data-label="PIN3_PIN4.1
85
- x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="492.7323680008618" cy="433.215054863931" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
86
- </g>
87
- <g>
88
- <circle data-type="point" data-label="PIN3_PIN4.2
89
- x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="492.7323680008618" cy="433.215054863931" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
90
- </g>
91
- <g>
92
- <circle data-type="point" data-label="PIN3_PIN4.3
93
- x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="433.2453936686253" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
94
- </g>
95
- <g>
96
- <circle data-type="point" data-label="PIN3_PIN4.4
97
- x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="433.2453936686253" r="3" fill="hsl(152, 100%, 50%, 0.8)" />
98
- </g>
99
- <g>
100
- <circle data-type="point" data-label="anchorPoint
101
- orientation: y+" data-x="-3.7005768910000008" data-y="1.6489565000000006" cx="64.25722197653835" cy="212.06659239976403" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
102
- </g>
103
- <g>
104
- <circle data-type="point" data-label="anchorPoint
105
- orientation: x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="225.88837130377448" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
106
- </g>
107
- <g>
108
- <circle data-type="point" data-label="anchorPoint
109
- orientation: x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="225.88837130377448" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
110
- </g>
111
- <g>
112
- <circle data-type="point" data-label="anchorPoint
113
- orientation: y+" data-x="-3.7005768910000008" data-y="-1.5510434999999996" cx="64.25722197653835" cy="433.215054863931" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
114
- </g>
115
- <g>
116
- <circle data-type="point" data-label="anchorPoint
117
- orientation: x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="225.9187101084688" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
118
- </g>
119
- <g>
120
- <circle data-type="point" data-label="anchorPoint
121
- orientation: x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="433.2453936686253" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
122
- </g>
123
- <g>
124
- <circle data-type="point" data-label="anchorPoint
125
- orientation: x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="433.2453936686253" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
126
- </g>
127
- <g>
128
- <circle data-type="point" data-label="anchorPoint
129
- orientation: y+" data-x="3.7005768910000008" data-y="1.4485175000000003" cx="575.7427780234616" cy="225.9187101084688" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
130
- </g>
131
- <g>
132
- <circle data-type="point" data-label="anchorPoint
133
- orientation: x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="433.2453936686253" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
134
- </g>
135
- <g>
136
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 285.40568444070533,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
137
- </g>
138
- <g>
139
- <polyline data-points="-3.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 492.7323680008618,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
140
- </g>
141
- <g>
142
- <polyline data-points="-0.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="285.40568444070533,225.88837130377448 492.7323680008618,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
143
- </g>
144
- <g>
145
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 78.07900088054879,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
146
- </g>
147
- <g>
148
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 285.40568444070533,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
149
- </g>
150
- <g>
151
- <polyline data-points="-3.5005768910000006,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,433.215054863931 285.40568444070533,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
152
- </g>
153
- <g>
154
- <polyline data-points="0.5005768910000006,1.4485175000000003 -2.4994231089999994,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,225.9187101084688 147.26763199913816,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
155
- </g>
156
- <g>
157
- <polyline data-points="0.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,225.9187101084688 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
158
- </g>
159
- <g>
160
- <polyline data-points="-2.4994231089999994,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="147.26763199913816,433.2453936686253 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
161
- </g>
162
- <g>
163
- <polyline data-points="3.5005768910000006,1.4485175000000003 0.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 354.59431555929467,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
164
- </g>
165
- <g>
166
- <polyline data-points="3.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
167
- </g>
168
- <g>
169
- <polyline data-points="0.5005768910000006,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,433.2453936686253 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
170
- </g>
171
- <g>
172
- <polyline data-points="-3.5005768910000006,-1.5510434999999996 -3.7005768910000008,-1.5510434999999996 -3.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,433.215054863931 64.25722197653835,433.215054863931 64.25722197653835,459.03241013425946 271.58390553669483,459.03241013425946 271.58390553669483,433.215054863931 285.40568444070533,433.215054863931" fill="none" stroke="purple" stroke-width="1" />
173
- </g>
174
- <g>
175
- <polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,1.6489565000000006 -4.051576891000001,1.6489565000000006 -4.051576891000001,1.0753815000000009 -0.7005768910000008,1.0753815000000009 -0.7005768910000008,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 78.07900088054879,212.06659239976403 40,212.06659239976403 40,251.70572657410293 271.58390553669483,251.70572657410293 271.58390553669483,225.88837130377448 285.40568444070533,225.88837130377448" fill="none" stroke="purple" stroke-width="1" />
176
- </g>
177
- <g>
178
- <polyline data-points="3.5005768910000006,1.4485175000000003 4.051576891000001,1.4485175000000003 4.051576891000001,-1.3514824999999995 3.5005768910000006,-1.3514824999999995 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 600,225.9187101084688 600,419.42361476461485 561.9209991194512,419.42361476461485 561.9209991194512,433.2453936686253" fill="none" stroke="purple" stroke-width="1" />
179
- </g>
180
- <g>
181
- <rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="1.5" x="78.07900088054879" y="206.83767522258796" width="69.18863111858937" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
182
- </g>
183
- <g>
184
- <rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="1.5" x="285.40568444070533" y="206.83767522258796" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
185
- </g>
186
- <g>
187
- <rect data-type="rect" data-label="schematic_component_2" data-x="3" data-y="1.5" x="492.7323680008618" y="206.83767522258796" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
188
- </g>
189
- <g>
190
- <rect data-type="rect" data-label="schematic_component_3" data-x="-3" data-y="-1.5" x="78.07900088054879" y="414.16435878274444" width="69.18863111858937" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
191
- </g>
192
- <g>
193
- <rect data-type="rect" data-label="schematic_component_4" data-x="0" data-y="-1.5" x="285.40568444070533" y="414.16435878274444" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
194
- </g>
195
- <g>
196
- <rect data-type="rect" data-label="schematic_component_5" data-x="3" data-y="-1.5" x="492.7323680008618" y="414.16435878274444" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146" />
197
- </g>
198
- <g>
199
- <rect data-type="rect" data-label="netId: PIN1
200
- globalConnNetId: connectivity_net0" data-x="-3.7005768910000008" data-y="1.8739565000000007" x="57.346332524533125" y="180.96758986574054" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
201
- </g>
202
- <g>
203
- <rect data-type="rect" data-label="netId: PIN1
204
- globalConnNetId: connectivity_net0" data-x="2.2734231089999994" data-y="1.4489565000000004" x="461.5642565723183" y="218.97748185176926" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
205
- </g>
206
- <g>
207
- <rect data-type="rect" data-label="netId: PIN2
208
- globalConnNetId: connectivity_net1" data-x="-3.7265768910000006" data-y="1.4489565000000004" x="46.91088945200522" y="218.97748185176926" width="31.099002534023526" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
209
- </g>
210
- <g>
211
- <rect data-type="rect" data-label="netId: PIN2
212
- globalConnNetId: connectivity_net1" data-x="-3.7005768910000008" data-y="-1.3260434999999995" x="57.346332524533125" y="402.1160523299075" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
213
- </g>
214
- <g>
215
- <rect data-type="rect" data-label="netId: PIN3
216
- globalConnNetId: connectivity_net2" data-x="0.7265768910000006" data-y="1.4485175000000003" x="354.66342445381474" y="219.00782065646357" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
217
- </g>
218
- <g>
219
- <rect data-type="rect" data-label="netId: PIN3
220
- globalConnNetId: connectivity_net2" data-x="-2.2734231089999994" data-y="-1.5514824999999997" x="147.3367408936582" y="426.3345042166201" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
221
- </g>
222
- <g>
223
- <rect data-type="rect" data-label="netId: PIN3
224
- globalConnNetId: connectivity_net2" data-x="3.7265768910000006" data-y="-1.5514824999999997" x="561.9901080139713" y="426.3345042166201" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
225
- </g>
226
- <g>
227
- <rect data-type="rect" data-label="netId: PIN4
228
- globalConnNetId: connectivity_net3" data-x="3.7005768910000008" data-y="1.6735175000000004" x="568.8318885714564" y="194.8197075744453" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
229
- </g>
230
- <g>
231
- <rect data-type="rect" data-label="netId: PIN4
232
- globalConnNetId: connectivity_net3" data-x="0.7265768910000006" data-y="-1.5514824999999997" x="354.66342445381474" y="426.3345042166201" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146" />
233
- </g>
234
- <g id="crosshair" style="display: none">
235
- <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
236
- <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>
237
- </g>
238
- <script>
239
- <![CDATA[
240
- document.currentScript.parentElement.addEventListener('mousemove', (e) => {
241
- const svg = e.currentTarget;
242
- const rect = svg.getBoundingClientRect();
243
- const x = e.clientX - rect.left;
244
- const y = e.clientY - rect.top;
245
- const crosshair = svg.getElementById('crosshair');
246
- const h = svg.getElementById('crosshair-h');
247
- const v = svg.getElementById('crosshair-v');
248
- const coords = svg.getElementById('coordinates');
1
+ <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 285.40568444070533,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 492.7323680008618,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-0.5005768910000006,1.4489565000000004 2.4994231089999994,1.4489565000000004" data-type="line" data-label="" points="285.40568444070533,225.88837130377448 492.7323680008618,225.88837130377448" fill="none" stroke="hsl(340, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 78.07900088054879,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 285.40568444070533,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,433.215054863931 285.40568444070533,433.215054863931" fill="none" stroke="hsl(341, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5005768910000006,1.4485175000000003 -2.4994231089999994,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,225.9187101084688 147.26763199913816,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,225.9187101084688 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-2.4994231089999994,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="147.26763199913816,433.2453936686253 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(342, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.5005768910000006,1.4485175000000003 0.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 354.59431555929467,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="3.5005768910000006,1.4485175000000003 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.5005768910000006,-1.5514824999999997 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="354.59431555929467,433.2453936686253 561.9209991194512,433.2453936686253" fill="none" stroke="hsl(343, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="-3.5005768910000006,-1.5510434999999996 -3.7005768910000008,-1.5510434999999996 -3.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.9246184999999991 -0.7005768910000008,-1.5510434999999996 -0.5005768910000006,-1.5510434999999996" data-type="line" data-label="" points="78.07900088054879,433.215054863931 64.25722197653835,433.215054863931 64.25722197653835,459.03241013425946 271.58390553669483,459.03241013425946 271.58390553669483,433.215054863931 285.40568444070533,433.215054863931" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="-3.5005768910000006,1.4489565000000004 -3.5005768910000006,1.6489565000000006 -4.051576891000001,1.6489565000000006 -4.051576891000001,1.0753815000000009 -0.7005768910000008,1.0753815000000009 -0.7005768910000008,1.4489565000000004 -0.5005768910000006,1.4489565000000004" data-type="line" data-label="" points="78.07900088054879,225.88837130377448 78.07900088054879,212.06659239976403 40,212.06659239976403 40,251.70572657410293 271.58390553669483,251.70572657410293 271.58390553669483,225.88837130377448 285.40568444070533,225.88837130377448" fill="none" stroke="purple" stroke-width="1px"/></g><g><polyline data-points="3.5005768910000006,1.4485175000000003 4.051576891000001,1.4485175000000003 4.051576891000001,-1.3514824999999995 3.5005768910000006,-1.3514824999999995 3.5005768910000006,-1.5514824999999997" data-type="line" data-label="" points="561.9209991194512,225.9187101084688 600,225.9187101084688 600,419.42361476461485 561.9209991194512,419.42361476461485 561.9209991194512,433.2453936686253" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="-3" data-y="1.5" x="78.07900088054878" y="206.83767522258796" width="69.18863111858937" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_1" data-x="0" data-y="1.5" x="285.40568444070533" y="206.83767522258796" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_2" data-x="3" data-y="1.5" x="492.73236800086187" y="206.83767522258796" width="69.18863111858934" height="31.04627244750455" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_3" data-x="-3" data-y="-1.5" x="78.07900088054878" y="414.16435878274444" width="69.18863111858937" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_4" data-x="0" data-y="-1.5" x="285.40568444070533" y="414.16435878274444" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="schematic_component_5" data-x="3" data-y="-1.5" x="492.73236800086187" y="414.16435878274444" width="69.18863111858934" height="31.046272447504577" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN1
2
+ globalConnNetId: connectivity_net0" data-x="-3.7005768910000008" data-y="1.8739565000000007" x="57.346332524533125" y="180.96758986574054" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN1
3
+ globalConnNetId: connectivity_net0" data-x="2.2734231089999994" data-y="1.4489565000000004" x="461.5642565723183" y="218.97748185176926" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN2
4
+ globalConnNetId: connectivity_net1" data-x="-3.7265768910000006" data-y="1.4489565000000004" x="46.91088945200521" y="218.97748185176926" width="31.099002534023526" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN2
5
+ globalConnNetId: connectivity_net1" data-x="-3.7005768910000008" data-y="-1.3260434999999995" x="57.346332524533125" y="402.1160523299075" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN3
6
+ globalConnNetId: connectivity_net2" data-x="0.7265768910000006" data-y="1.4485175000000003" x="354.66342445381474" y="219.00782065646357" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN3
7
+ globalConnNetId: connectivity_net2" data-x="-2.2734231089999994" data-y="-1.5514824999999997" x="147.3367408936582" y="426.3345042166201" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN3
8
+ globalConnNetId: connectivity_net2" data-x="3.7265768910000006" data-y="-1.5514824999999997" x="561.9901080139714" y="426.3345042166201" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN4
9
+ globalConnNetId: connectivity_net3" data-x="3.7005768910000008" data-y="1.6735175000000004" x="568.8318885714564" y="194.81970757444532" width="13.821778904010444" height="31.099002534023498" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><rect data-type="rect" data-label="netId: PIN4
10
+ globalConnNetId: connectivity_net3" data-x="0.7265768910000006" data-y="-1.5514824999999997" x="354.66342445381474" y="426.3345042166201" width="31.099002534023498" height="13.821778904010444" fill="hsl(40, 100%, 50%, 0.35)" stroke="black" stroke-width="0.014469917467857146"/></g><g><circle data-type="point" data-label="PIN1_PIN2.1
11
+ x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="225.88837130377448" r="3" fill="hsl(328, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN2.2
12
+ x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="225.88837130377448" r="3" fill="hsl(328, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN2.3
13
+ x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="147.26763199913816" cy="225.9187101084688" r="3" fill="hsl(328, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN2.4
14
+ x+" data-x="-2.4994231089999994" data-y="1.4485175000000003" cx="147.26763199913816" cy="225.9187101084688" r="3" fill="hsl(328, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN3.1
15
+ x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="285.40568444070533" cy="225.88837130377448" r="3" fill="hsl(208, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN3.2
16
+ x-" data-x="-0.5005768910000006" data-y="1.4489565000000004" cx="285.40568444070533" cy="225.88837130377448" r="3" fill="hsl(208, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN3.3
17
+ x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="225.9187101084688" r="3" fill="hsl(208, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN3.4
18
+ x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="225.9187101084688" r="3" fill="hsl(208, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN4.1
19
+ x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="225.88837130377448" r="3" fill="hsl(88, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN4.2
20
+ x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="225.88837130377448" r="3" fill="hsl(88, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN4.3
21
+ x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="561.9209991194512" cy="225.9187101084688" r="3" fill="hsl(88, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN1_PIN4.4
22
+ x+" data-x="3.5005768910000006" data-y="1.4485175000000003" cx="561.9209991194512" cy="225.9187101084688" r="3" fill="hsl(88, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN2_PIN3.1
23
+ x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="78.07900088054879" cy="433.215054863931" r="3" fill="hsl(240, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN2_PIN3.2
24
+ x-" data-x="-3.5005768910000006" data-y="-1.5510434999999996" cx="78.07900088054879" cy="433.215054863931" r="3" fill="hsl(240, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN2_PIN3.3
25
+ x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="433.2453936686253" r="3" fill="hsl(240, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN2_PIN3.4
26
+ x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="433.2453936686253" r="3" fill="hsl(240, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN2_PIN4.1
27
+ x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="285.40568444070533" cy="433.215054863931" r="3" fill="hsl(120, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN2_PIN4.2
28
+ x-" data-x="-0.5005768910000006" data-y="-1.5510434999999996" cx="285.40568444070533" cy="433.215054863931" r="3" fill="hsl(120, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN2_PIN4.3
29
+ x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="433.2453936686253" r="3" fill="hsl(120, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN2_PIN4.4
30
+ x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="433.2453936686253" r="3" fill="hsl(120, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN3_PIN4.1
31
+ x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="492.7323680008618" cy="433.215054863931" r="3" fill="hsl(152, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN3_PIN4.2
32
+ x-" data-x="2.4994231089999994" data-y="-1.5510434999999996" cx="492.7323680008618" cy="433.215054863931" r="3" fill="hsl(152, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN3_PIN4.3
33
+ x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="433.2453936686253" r="3" fill="hsl(152, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="PIN3_PIN4.4
34
+ x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="433.2453936686253" r="3" fill="hsl(152, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
35
+ orientation: y+" data-x="-3.7005768910000008" data-y="1.6489565000000006" cx="64.25722197653835" cy="212.06659239976403" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
36
+ orientation: x-" data-x="2.4994231089999994" data-y="1.4489565000000004" cx="492.7323680008618" cy="225.88837130377448" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
37
+ orientation: x-" data-x="-3.5005768910000006" data-y="1.4489565000000004" cx="78.07900088054879" cy="225.88837130377448" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
38
+ orientation: y+" data-x="-3.7005768910000008" data-y="-1.5510434999999996" cx="64.25722197653835" cy="433.215054863931" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
39
+ orientation: x+" data-x="0.5005768910000006" data-y="1.4485175000000003" cx="354.59431555929467" cy="225.9187101084688" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
40
+ orientation: x+" data-x="-2.4994231089999994" data-y="-1.5514824999999997" cx="147.26763199913816" cy="433.2453936686253" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
41
+ orientation: x+" data-x="3.5005768910000006" data-y="-1.5514824999999997" cx="561.9209991194512" cy="433.2453936686253" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
42
+ orientation: y+" data-x="3.7005768910000008" data-y="1.4485175000000003" cx="575.7427780234616" cy="225.9187101084688" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
43
+ orientation: x+" data-x="0.5005768910000006" data-y="-1.5514824999999997" cx="354.59431555929467" cy="433.2453936686253" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><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></g><script><![CDATA[
44
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
45
+ const svg = e.currentTarget;
46
+ const rect = svg.getBoundingClientRect();
47
+ const x = e.clientX - rect.left;
48
+ const y = e.clientY - rect.top;
49
+ const crosshair = svg.getElementById('crosshair');
50
+ const h = svg.getElementById('crosshair-h');
51
+ const v = svg.getElementById('crosshair-v');
52
+ const coords = svg.getElementById('coordinates');
53
+
54
+ crosshair.style.display = 'block';
55
+ h.setAttribute('x1', '0');
56
+ h.setAttribute('x2', '640');
57
+ h.setAttribute('y1', y);
58
+ h.setAttribute('y2', y);
59
+ v.setAttribute('x1', x);
60
+ v.setAttribute('x2', x);
61
+ v.setAttribute('y1', '0');
62
+ v.setAttribute('y2', '640');
249
63
 
250
- crosshair.style.display = 'block';
251
- h.setAttribute('x1', '0');
252
- h.setAttribute('x2', '640');
253
- h.setAttribute('y1', y);
254
- h.setAttribute('y2', y);
255
- v.setAttribute('x1', x);
256
- v.setAttribute('x2', x);
257
- v.setAttribute('y1', '0');
258
- v.setAttribute('y2', '640');
259
-
260
- // Calculate real coordinates using inverse transformation
261
- const matrix = {
262
- "a": 69.10889452005217,
263
- "c": 0,
264
- "e": 320,
265
- "b": 0,
266
- "d": -69.10889452005217,
267
- "f": 326.0241532264185
268
- };
269
- // Manually invert and apply the affine transform
270
- // Since we only use translate and scale, we can directly compute:
271
- // x' = (x - tx) / sx
272
- // y' = (y - ty) / sy
273
- const sx = matrix.a;
274
- const sy = matrix.d;
275
- const tx = matrix.e;
276
- const ty = matrix.f;
277
- const realPoint = {
278
- x: (x - tx) / sx,
279
- y: (y - ty) / sy // Flip y back since we used negative scale
280
- }
281
-
282
- coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
283
- coords.setAttribute('x', (x + 5).toString());
284
- coords.setAttribute('y', (y - 5).toString());
285
- });
286
- document.currentScript.parentElement.addEventListener('mouseleave', () => {
287
- document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
288
- });
289
- ]]>
290
- </script>
291
- </svg>
64
+ // Calculate real coordinates using inverse transformation
65
+ const matrix = {"a":69.10889452005217,"c":0,"e":320,"b":0,"d":-69.10889452005217,"f":326.0241532264185};
66
+ // Manually invert and apply the affine transform
67
+ // Since we only use translate and scale, we can directly compute:
68
+ // x' = (x - tx) / sx
69
+ // y' = (y - ty) / sy
70
+ const sx = matrix.a;
71
+ const sy = matrix.d;
72
+ const tx = matrix.e;
73
+ const ty = matrix.f;
74
+ const realPoint = {
75
+ x: (x - tx) / sx,
76
+ y: (y - ty) / sy // Flip y back since we used negative scale
77
+ }
78
+
79
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
80
+ coords.setAttribute('x', (x + 5).toString());
81
+ coords.setAttribute('y', (y - 5).toString());
82
+ });
83
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
84
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
85
+ });
86
+ ]]></script></svg>
@@ -1,95 +1,51 @@
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="Q1.1
5
- y+" data-x="0.30397715550000004" data-y="0.5800832909999993" cx="386.41696544795997" cy="192.03773223990865" r="3" fill="hsl(315, 100%, 50%, 0.8)" />
6
- </g>
7
- <g>
8
- <circle data-type="point" data-label="Q1.2
9
- y-" data-x="0.31067575550000137" data-y="-0.5800832909999993" cx="388.6751471623335" cy="583.1443755831586" r="3" fill="hsl(316, 100%, 50%, 0.8)" />
10
- </g>
11
- <g>
12
- <circle data-type="point" data-label="Q1.3
13
- x-" data-x="-0.4467558855000001" data-y="-0.10250625000000019" cx="133.33548191977735" cy="422.1471909191105" r="3" fill="hsl(317, 100%, 50%, 0.8)" />
14
- </g>
15
- <g>
16
- <circle data-type="point" data-label="" data-x="0.30397715550000004" data-y="0.5800832909999993" cx="386.41696544795997" cy="192.03773223990865" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
17
- </g>
18
- <g>
19
- <circle data-type="point" data-label="" data-x="0.5606757555000014" data-y="-0.5290832909999993" cx="472.95326924654" cy="565.9516386779806" r="3" fill="hsl(40, 100%, 50%, 0.9)" />
20
- </g>
21
- <g>
22
- <polyline data-points="0.30397715550000004,0.5800832909999993 0.31067575550000137,-0.5800832909999993" data-type="line" data-label="" points="386.41696544795997,192.03773223990865 388.6751471623335,583.1443755831586" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1" stroke-dasharray="4 2" />
23
- </g>
24
- <g>
25
- <polyline data-points="0.31067575550000137,-0.5800832909999993 0.31067575550000137,-0.6300832909999994 0.5606757555000014,-0.6300832909999994 0.5606757555000014,-0.5290832909999993" data-type="line" data-label="" points="388.6751471623335,583.1443755831586 388.6751471623335,600 472.95326924654,600 472.95326924654,565.9516386779806" fill="none" stroke="purple" stroke-width="1" />
26
- </g>
27
- <g>
28
- <rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="133.33548191977735" y="192.03773223990865" width="301.2139764800545" height="391.10664334324997" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0029663688964285694" />
29
- </g>
30
- <g>
31
- <rect data-type="rect" data-label="netId: V3_3
32
- globalConnNetId: connectivity_net0" data-x="0.30397715550000004" data-y="0.8060832909999993" x="352.7057166142773" y="40" width="67.42249766736523" height="151.70061975157182" fill="#ef444466" stroke="#ef4444" stroke-width="0.0029663688964285694" />
33
- </g>
34
- <g>
35
- <rect data-type="rect" data-label="netId: V3_3
36
- globalConnNetId: connectivity_net0" data-x="0.5606757555000014" data-y="-0.3040832909999993" x="439.2420204128574" y="414.25101892640873" width="67.42249766736518" height="151.70061975157182" fill="#ef444466" stroke="#ef4444" stroke-width="0.0029663688964285694" />
37
- </g>
38
- <g id="crosshair" style="display: none">
39
- <line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5" />
40
- <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>
41
- </g>
42
- <script>
43
- <![CDATA[
44
- document.currentScript.parentElement.addEventListener('mousemove', (e) => {
45
- const svg = e.currentTarget;
46
- const rect = svg.getBoundingClientRect();
47
- const x = e.clientX - rect.left;
48
- const y = e.clientY - rect.top;
49
- const crosshair = svg.getElementById('crosshair');
50
- const h = svg.getElementById('crosshair-h');
51
- const v = svg.getElementById('crosshair-v');
52
- const coords = svg.getElementById('coordinates');
1
+ <svg width="640" height="640" viewBox="0 0 640 640" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="white"/><g><polyline data-points="0.30397715550000004,0.5800832909999993 0.31067575550000137,-0.5800832909999993" data-type="line" data-label="" points="386.41696544795997,192.03773223990865 388.6751471623335,583.1443755831586" fill="none" stroke="hsl(73, 100%, 50%, 0.8)" stroke-width="1px" stroke-dasharray="4 2"/></g><g><polyline data-points="0.31067575550000137,-0.5800832909999993 0.31067575550000137,-0.6300832909999994 0.5606757555000014,-0.6300832909999994 0.5606757555000014,-0.5290832909999993" data-type="line" data-label="" points="388.6751471623335,583.1443755831586 388.6751471623335,600 472.95326924654,600 472.95326924654,565.9516386779806" fill="none" stroke="purple" stroke-width="1px"/></g><g><rect data-type="rect" data-label="schematic_component_0" data-x="0" data-y="0" x="133.33548191977735" y="192.03773223990868" width="301.2139764800545" height="391.10664334324997" fill="hsl(24, 100%, 50%, 0.8)" stroke="black" stroke-width="0.0029663688964285694"/></g><g><rect data-type="rect" data-label="netId: V3_3
2
+ globalConnNetId: connectivity_net0" data-x="0.30397715550000004" data-y="0.8060832909999993" x="352.7057166142773" y="40" width="67.42249766736523" height="151.70061975157182" fill="#ef444466" stroke="#ef4444" stroke-width="0.0029663688964285694"/></g><g><rect data-type="rect" data-label="netId: V3_3
3
+ globalConnNetId: connectivity_net0" data-x="0.5606757555000014" data-y="-0.3040832909999993" x="439.2420204128574" y="414.25101892640873" width="67.42249766736518" height="151.70061975157182" fill="#ef444466" stroke="#ef4444" stroke-width="0.0029663688964285694"/></g><g><circle data-type="point" data-label="Q1.1
4
+ y+" data-x="0.30397715550000004" data-y="0.5800832909999993" cx="386.41696544795997" cy="192.03773223990865" r="3" fill="hsl(315, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="Q1.2
5
+ y-" data-x="0.31067575550000137" data-y="-0.5800832909999993" cx="388.6751471623335" cy="583.1443755831586" r="3" fill="hsl(316, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="Q1.3
6
+ x-" data-x="-0.4467558855000001" data-y="-0.10250625000000019" cx="133.33548191977735" cy="422.1471909191105" r="3" fill="hsl(317, 100%, 50%, 0.8)"/></g><g><circle data-type="point" data-label="anchorPoint
7
+ orientation: y+" data-x="0.30397715550000004" data-y="0.5800832909999993" cx="386.41696544795997" cy="192.03773223990865" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g><circle data-type="point" data-label="anchorPoint
8
+ orientation: y+" data-x="0.5606757555000014" data-y="-0.5290832909999993" cx="472.95326924654" cy="565.9516386779806" r="3" fill="hsl(40, 100%, 50%, 0.9)"/></g><g id="crosshair" style="display: none"><line id="crosshair-h" y1="0" y2="640" stroke="#666" stroke-width="0.5"/><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></g><script><![CDATA[
9
+ document.currentScript.parentElement.addEventListener('mousemove', (e) => {
10
+ const svg = e.currentTarget;
11
+ const rect = svg.getBoundingClientRect();
12
+ const x = e.clientX - rect.left;
13
+ const y = e.clientY - rect.top;
14
+ const crosshair = svg.getElementById('crosshair');
15
+ const h = svg.getElementById('crosshair-h');
16
+ const v = svg.getElementById('crosshair-v');
17
+ const coords = svg.getElementById('coordinates');
18
+
19
+ crosshair.style.display = 'block';
20
+ h.setAttribute('x1', '0');
21
+ h.setAttribute('x2', '640');
22
+ h.setAttribute('y1', y);
23
+ h.setAttribute('y2', y);
24
+ v.setAttribute('x1', x);
25
+ v.setAttribute('x2', x);
26
+ v.setAttribute('y1', '0');
27
+ v.setAttribute('y2', '640');
53
28
 
54
- crosshair.style.display = 'block';
55
- h.setAttribute('x1', '0');
56
- h.setAttribute('x2', '640');
57
- h.setAttribute('y1', y);
58
- h.setAttribute('y2', y);
59
- v.setAttribute('x1', x);
60
- v.setAttribute('x2', x);
61
- v.setAttribute('y1', '0');
62
- v.setAttribute('y2', '640');
63
-
64
- // Calculate real coordinates using inverse transformation
65
- const matrix = {
66
- "a": 337.1124883368262,
67
- "c": 0,
68
- "e": 283.9424701598046,
69
- "b": 0,
70
- "d": -337.1124883368262,
71
- "f": 387.59105391153366
72
- };
73
- // Manually invert and apply the affine transform
74
- // Since we only use translate and scale, we can directly compute:
75
- // x' = (x - tx) / sx
76
- // y' = (y - ty) / sy
77
- const sx = matrix.a;
78
- const sy = matrix.d;
79
- const tx = matrix.e;
80
- const ty = matrix.f;
81
- const realPoint = {
82
- x: (x - tx) / sx,
83
- y: (y - ty) / sy // Flip y back since we used negative scale
84
- }
85
-
86
- coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
87
- coords.setAttribute('x', (x + 5).toString());
88
- coords.setAttribute('y', (y - 5).toString());
89
- });
90
- document.currentScript.parentElement.addEventListener('mouseleave', () => {
91
- document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
92
- });
93
- ]]>
94
- </script>
95
- </svg>
29
+ // Calculate real coordinates using inverse transformation
30
+ const matrix = {"a":337.1124883368262,"c":0,"e":283.9424701598046,"b":0,"d":-337.1124883368262,"f":387.59105391153366};
31
+ // Manually invert and apply the affine transform
32
+ // Since we only use translate and scale, we can directly compute:
33
+ // x' = (x - tx) / sx
34
+ // y' = (y - ty) / sy
35
+ const sx = matrix.a;
36
+ const sy = matrix.d;
37
+ const tx = matrix.e;
38
+ const ty = matrix.f;
39
+ const realPoint = {
40
+ x: (x - tx) / sx,
41
+ y: (y - ty) / sy // Flip y back since we used negative scale
42
+ }
43
+
44
+ coords.textContent = `(${realPoint.x.toFixed(2)}, ${realPoint.y.toFixed(2)})`;
45
+ coords.setAttribute('x', (x + 5).toString());
46
+ coords.setAttribute('y', (y - 5).toString());
47
+ });
48
+ document.currentScript.parentElement.addEventListener('mouseleave', () => {
49
+ document.currentScript.parentElement.getElementById('crosshair').style.display = 'none';
50
+ });
51
+ ]]></script></svg>